changeset 881:16c930df1e9b

Merge
author dcubed
date Tue, 28 Jul 2009 13:50:07 -0600
parents 494244ae0171 (diff) 2b4230d1e589 (current diff)
children 66b0f834a440 1760a1cbed36
files src/share/vm/memory/genCollectedHeap.cpp src/share/vm/prims/jvmtiExport.cpp src/share/vm/runtime/globals.hpp
diffstat 650 files changed, 32414 insertions(+), 28739 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Tue Jul 28 13:35:00 2009 -0600
+++ b/.hgignore	Tue Jul 28 13:50:07 2009 -0600
@@ -1,7 +1,7 @@
 ^build/
 ^dist/
 ^nbproject/private/
-^src/share/tools/hsdis/bin/
+^src/share/tools/hsdis/build/
 ^src/share/tools/IdealGraphVisualizer/[a-zA-Z0-9]*/build/
 ^src/share/tools/IdealGraphVisualizer/build/
 ^src/share/tools/IdealGraphVisualizer/dist/
--- a/.hgtags	Tue Jul 28 13:35:00 2009 -0600
+++ b/.hgtags	Tue Jul 28 13:50:07 2009 -0600
@@ -17,3 +17,25 @@
 81a0cbe3b28460ce836109934ece03db7afaf9cc jdk7-b40
 f9d938ede1960d18cb7cf23c645b026519c1a678 jdk7-b41
 ad8c8ca4ab0f4c86e74c061958f44a8f4a930f2c jdk7-b42
+fc6a5ae3fef5ebacfa896dbb3ae37715e388e282 jdk7-b43
+809e899c638bd9b21836abf9d09ab2a30ff3900b jdk7-b44
+945bf754069766e76873c53102fae48abf04cf5b jdk7-b45
+16bb38eeda35b46268eefa4c1f829eb086e0ca46 jdk7-b46
+fcb923bad68e2b10380a030ea83a723f4dc3d4d6 jdk7-b47
+bcb33806d186561c781992e5f4d8a90bb033f9f0 jdk7-b48
+8b22ccb5aba2c6c11bddf6488a7bb7ef5b4bf2be jdk7-b49
+dae503d9f04c1a11e182dbf7f770509c28dc0609 jdk7-b50
+2581d90c6c9b2012da930eb4742add94a03069a0 jdk7-b51
+1b1e8f1a4fe8cebc01c022484f78148e17b62a0d jdk7-b52
+032c6af894dae8d939b3dd31d82042549e7793e0 jdk7-b53
+fafab5d5349c7c066d677538db67a1ee0fb33bd2 jdk7-b54
+f8e839c086152da70d6ec5913ba6f9f509282e8d jdk7-b55
+a3fd9e40ff2e854f6169eb6d09d491a28634d04f jdk7-b56
+f4cbf78110c726919f46b59a3b054c54c7e889b4 jdk7-b57
+53d9bf689e80fcc76b221bbe6c5d58e08b80cbc6 jdk7-b58
+c55be0c7bd32c016c52218eb4c8b5da8a75450b5 jdk7-b59
+a77eddcd510c3972717c025cfcef9a60bfa4ecac jdk7-b60
+27b728fd1281ab62e9d7e4424f8bbb6ca438d803 jdk7-b61
+a88386380bdaaa5ab4ffbedf22c57bac5dbec034 jdk7-b62
+32c83fb84370a35344676991a48440378e6b6c8a jdk7-b63
+ba36394eb84b949b31212bdb32a518a8f92bab5b jdk7-b64
--- a/agent/src/os/linux/Makefile	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/os/linux/Makefile	Tue Jul 28 13:50:07 2009 -0600
@@ -60,6 +60,14 @@
   LFLAGS_LIBSA = -Xlinker --version-script=mapfile
 endif
 
+# If this is a --hash-style=gnu system, use --hash-style=both
+#   The gnu .hash section won't work on some Linux systems like SuSE 10.
+_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | grep -- '--hash-style=gnu')
+ifneq ($(_HAS_HASH_STYLE_GNU),)
+  LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
+endif
+LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE)
+
 $(LIBSA): $(OBJS) mapfile
 	if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi
 	$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
--- a/agent/src/os/linux/ps_core.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/os/linux/ps_core.c	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -238,8 +238,8 @@
   // Ignore the rest of the FileMapHeader. We don't need those fields here.
 };
 
-static bool read_int(struct ps_prochandle* ph, uintptr_t addr, int* pvalue) {
-   int i;
+static bool read_jboolean(struct ps_prochandle* ph, uintptr_t addr, jboolean* pvalue) {
+   jboolean i;
    if (ps_pdread(ph, (psaddr_t) addr, &i, sizeof(i)) == PS_OK) {
       *pvalue = i;
       return true;
@@ -295,7 +295,7 @@
          int fd = -1, m = 0;
          uintptr_t base = 0, useSharedSpacesAddr = 0;
          uintptr_t sharedArchivePathAddrAddr = 0, sharedArchivePathAddr = 0;
-         int useSharedSpaces = 0;
+         jboolean useSharedSpaces = 0;
          map_info* mi = 0;
 
          memset(classes_jsa, 0, sizeof(classes_jsa));
@@ -306,12 +306,15 @@
             return false;
          }
 
-         if (read_int(ph, useSharedSpacesAddr, &useSharedSpaces) != true) {
+         // Hotspot vm types are not exported to build this library. So
+         // using equivalent type jboolean to read the value of
+         // UseSharedSpaces which is same as hotspot type "bool".
+         if (read_jboolean(ph, useSharedSpacesAddr, &useSharedSpaces) != true) {
             print_debug("can't read the value of 'UseSharedSpaces' flag\n");
             return false;
          }
 
-         if (useSharedSpaces == 0) {
+         if ((int)useSharedSpaces == 0) {
             print_debug("UseSharedSpaces is false, assuming -Xshare:off!\n");
             return true;
          }
--- a/agent/src/os/solaris/proc/saproc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/os/solaris/proc/saproc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -502,8 +502,8 @@
 };
 
 static bool
-read_int(struct ps_prochandle* ph, psaddr_t addr, int* pvalue) {
-  int i;
+read_jboolean(struct ps_prochandle* ph, psaddr_t addr, jboolean* pvalue) {
+  jboolean i;
   if (ps_pread(ph, addr, &i, sizeof(i)) == PS_OK) {
     *pvalue = i;
     return true;
@@ -575,10 +575,13 @@
   }
 
   // read the value of the flag "UseSharedSpaces"
-  int value = 0;
-  if (read_int(ph, useSharedSpacesAddr, &value) != true) {
+  // Since hotspot types are not available to build this library. So
+  // equivalent type "jboolean" is used to read the value of "UseSharedSpaces"
+  // which is same as hotspot type "bool".
+  jboolean value = 0;
+  if (read_jboolean(ph, useSharedSpacesAddr, &value) != true) {
     THROW_NEW_DEBUGGER_EXCEPTION_("can't read 'UseSharedSpaces' flag", 1);
-  } else if (value == 0) {
+  } else if ((int)value == 0) {
     print_debug("UseSharedSpaces is false, assuming -Xshare:off!\n");
     return 1;
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Tue Jul 28 13:50:07 2009 -0600
@@ -306,8 +306,6 @@
 
       entryAddr = entryAddr.addOffsetTo(intConstantEntryArrayStride);
     } while (nameAddr != null);
-      String symbol = "heapOopSize"; // global int constant and value is initialized at runtime.
-      addIntConstant(symbol, (int)lookupInProcess(symbol).getCIntegerAt(0, 4, false));
   }
 
   private void readVMLongConstants() {
--- a/agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java	Tue Jul 28 13:50:07 2009 -0600
@@ -24,23 +24,64 @@
 
 package sun.jvm.hotspot.code;
 
+import java.util.*;
+
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.utilities.*;
 
 public class DebugInfoReadStream extends CompressedReadStream {
   private NMethod code;
   private int InvocationEntryBCI;
+  private List objectPool; // ArrayList<ObjectValue>
 
   public DebugInfoReadStream(NMethod code, int offset) {
     super(code.scopesDataBegin(), offset);
     InvocationEntryBCI = VM.getVM().getInvocationEntryBCI();
     this.code = code;
+    this.objectPool = null;
+  }
+
+  public DebugInfoReadStream(NMethod code, int offset, List objectPool) {
+    super(code.scopesDataBegin(), offset);
+    InvocationEntryBCI = VM.getVM().getInvocationEntryBCI();
+    this.code = code;
+    this.objectPool = objectPool;
   }
 
   public OopHandle readOopHandle() {
     return code.getOopAt(readInt());
   }
 
+  ScopeValue readObjectValue() {
+    int id = readInt();
+    if (Assert.ASSERTS_ENABLED) {
+      Assert.that(objectPool != null, "object pool does not exist");
+      for (Iterator itr = objectPool.iterator(); itr.hasNext();) {
+        ObjectValue ov = (ObjectValue) itr.next();
+        Assert.that(ov.id() != id, "should not be read twice");
+      }
+    }
+    ObjectValue result = new ObjectValue(id);
+    // Cache the object since an object field could reference it.
+    objectPool.add(result);
+    result.readObject(this);
+    return result;
+  }
+
+  ScopeValue getCachedObject() {
+    int id = readInt();
+    Assert.that(objectPool != null, "object pool does not exist");
+    for (Iterator itr = objectPool.iterator(); itr.hasNext();) {
+      ObjectValue ov = (ObjectValue) itr.next();
+      if (ov.id() == id) {
+        return ov;
+      }
+    }
+    Assert.that(false, "should not reach here");
+    return null;
+  }
+
   public int readBCI() {
     return readInt() + InvocationEntryBCI;
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/code/MonitorValue.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/MonitorValue.java	Tue Jul 28 13:50:07 2009 -0600
@@ -29,6 +29,7 @@
 public class MonitorValue {
   private ScopeValue owner;
   private Location   basicLock;
+  private boolean    eliminated;
 
   // FIXME: not useful yet
   //  MonitorValue(ScopeValue* owner, Location basic_lock);
@@ -36,10 +37,12 @@
   public MonitorValue(DebugInfoReadStream stream) {
     basicLock = new Location(stream);
     owner     = ScopeValue.readFrom(stream);
+    eliminated= stream.readBoolean();
   }
 
   public ScopeValue owner()     { return owner; }
   public Location   basicLock() { return basicLock; }
+  public boolean   eliminated() { return eliminated; }
 
   // FIXME: not yet implementable
   //  void write_on(DebugInfoWriteStream* stream);
@@ -50,5 +53,8 @@
     tty.print(",");
     basicLock().printOn(tty);
     tty.print("}");
+    if (eliminated) {
+      tty.print(" (eliminated)");
+    }
   }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/ObjectValue.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.code;
+
+import java.io.*;
+import java.util.*;
+
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.utilities.*;
+
+/** An ObjectValue describes an object eliminated by escape analysis. */
+
+public class ObjectValue extends ScopeValue {
+  private int        id;
+  private ScopeValue klass;
+  private List       fieldsValue; // ArrayList<ScopeValue>
+
+  // Field "boolean visited" is not implemented here since
+  // it is used only a during debug info creation.
+
+  public ObjectValue(int id) {
+    this.id = id;
+    klass   = null;
+    fieldsValue = new ArrayList();
+  }
+
+  public boolean isObject() { return true; }
+  public int id() { return id; }
+  public ScopeValue getKlass() { return klass; }
+  public List getFieldsValue() { return fieldsValue; }
+  public ScopeValue getFieldAt(int i) { return (ScopeValue)fieldsValue.get(i); }
+  public int fieldsSize() { return fieldsValue.size(); }
+
+  // Field "value" is always NULL here since it is used
+  // only during deoptimization of a compiled frame
+  // pointing to reallocated object.
+  public OopHandle getValue() { return null; }
+
+  /** Serialization of debugging information */
+
+  void readObject(DebugInfoReadStream stream) {
+    klass = readFrom(stream);
+    Assert.that(klass.isConstantOop(), "should be constant klass oop");
+    int length = stream.readInt();
+    for (int i = 0; i < length; i++) {
+      ScopeValue val = readFrom(stream);
+      fieldsValue.add(val);
+    }
+  }
+
+  // Printing
+
+  public void print() {
+    printOn(System.out);
+  }
+
+  public void printOn(PrintStream tty) {
+    tty.print("scalarObj[" + id + "]");
+  }
+
+  void printFieldsOn(PrintStream tty) {
+    if (fieldsValue.size() > 0) {
+      ((ScopeValue)fieldsValue.get(0)).printOn(tty);
+    }
+    for (int i = 1; i < fieldsValue.size(); i++) {
+      tty.print(", ");
+      ((ScopeValue)fieldsValue.get(i)).printOn(tty);
+    }
+  }
+
+};
--- a/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java	Tue Jul 28 13:50:07 2009 -0600
@@ -27,8 +27,10 @@
 import java.io.*;
 import java.util.*;
 
+import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.utilities.*;
 
 /** ScopeDescs contain the information that makes source-level
     debugging of nmethods possible; each scopeDesc describes a method
@@ -45,10 +47,31 @@
   private int     localsDecodeOffset;
   private int     expressionsDecodeOffset;
   private int     monitorsDecodeOffset;
+  /** Scalar replaced bjects pool */
+  private List    objects; // ArrayList<ScopeValue>
+
 
   public ScopeDesc(NMethod code, int decodeOffset) {
     this.code = code;
     this.decodeOffset = decodeOffset;
+    this.objects      = decodeObjectValues(DebugInformationRecorder.SERIALIZED_NULL);
+
+    // Decode header
+    DebugInfoReadStream stream  = streamAt(decodeOffset);
+
+    senderDecodeOffset = stream.readInt();
+    method = (Method) VM.getVM().getObjectHeap().newOop(stream.readOopHandle());
+    bci    = stream.readBCI();
+    // Decode offsets for body and sender
+    localsDecodeOffset      = stream.readInt();
+    expressionsDecodeOffset = stream.readInt();
+    monitorsDecodeOffset    = stream.readInt();
+  }
+
+  public ScopeDesc(NMethod code, int decodeOffset, int objectDecodeOffset) {
+    this.code = code;
+    this.decodeOffset = decodeOffset;
+    this.objects      = decodeObjectValues(objectDecodeOffset);
 
     // Decode header
     DebugInfoReadStream stream  = streamAt(decodeOffset);
@@ -81,6 +104,11 @@
     return decodeMonitorValues(monitorsDecodeOffset);
   }
 
+  /** Returns a List&lt;MonitorValue&gt; */
+  public List getObjects() {
+    return objects;
+  }
+
   /** Stack walking. Returns null if this is the outermost scope. */
   public ScopeDesc sender() {
     if (isTop()) {
@@ -131,7 +159,7 @@
   //
 
   private DebugInfoReadStream streamAt(int decodeOffset) {
-    return new DebugInfoReadStream(code, decodeOffset);
+    return new DebugInfoReadStream(code, decodeOffset, objects);
   }
 
   /** Returns a List&lt;ScopeValue&gt; or null if no values were present */
@@ -161,4 +189,22 @@
     }
     return res;
   }
+
+  /** Returns a List&lt;ObjectValue&gt; or null if no values were present */
+  private List decodeObjectValues(int decodeOffset) {
+    if (decodeOffset == DebugInformationRecorder.SERIALIZED_NULL) {
+      return null;
+    }
+    List res = new ArrayList();
+    DebugInfoReadStream stream = new DebugInfoReadStream(code, decodeOffset, res);
+    int length = stream.readInt();
+    for (int i = 0; i < length; i++) {
+      // Objects values are pushed to 'res' array during read so that
+      // object's fields could reference it (OBJECT_ID_CODE).
+      ScopeValue.readFrom(stream);
+      // res.add(ScopeValue.readFrom(stream));
+    }
+    Assert.that(res.size() == length, "inconsistent debug information");
+    return res;
+  }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/code/ScopeValue.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/ScopeValue.java	Tue Jul 28 13:50:07 2009 -0600
@@ -49,12 +49,15 @@
   static final int CONSTANT_OOP_CODE    = 2;
   static final int CONSTANT_LONG_CODE   = 3;
   static final int CONSTANT_DOUBLE_CODE = 4;
+  static final int CONSTANT_OBJECT_CODE = 5;
+  static final int CONSTANT_OBJECT_ID_CODE = 6;
 
   public boolean isLocation()       { return false; }
   public boolean isConstantInt()    { return false; }
   public boolean isConstantDouble() { return false; }
   public boolean isConstantLong()   { return false; }
   public boolean isConstantOop()    { return false; }
+  public boolean isObject()         { return false; }
 
   public static ScopeValue readFrom(DebugInfoReadStream stream) {
     switch (stream.readInt()) {
@@ -68,6 +71,10 @@
       return new ConstantLongValue(stream);
     case CONSTANT_DOUBLE_CODE:
       return new ConstantDoubleValue(stream);
+    case CONSTANT_OBJECT_CODE:
+      return stream.readObjectValue();
+    case CONSTANT_OBJECT_ID_CODE:
+      return stream.getCachedObject();
     default:
       Assert.that(false, "should not reach here");
       return null;
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java	Tue Jul 28 13:50:07 2009 -0600
@@ -118,9 +118,9 @@
   public long getJIntSize();
   public long getJLongSize();
   public long getJShortSize();
-  public long getHeapBase();
   public long getHeapOopSize();
-  public long getLogMinObjAlignmentInBytes();
+  public long getNarrowOopBase();
+  public int  getNarrowOopShift();
 
   public ReadResult readBytesFromProcess(long address, long numBytes)
     throws DebuggerException;
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java	Tue Jul 28 13:50:07 2009 -0600
@@ -56,8 +56,8 @@
   // heap data.
   protected long oopSize;
   protected long heapOopSize;
-  protected long heapBase;                 // heap base for compressed oops.
-  protected long logMinObjAlignmentInBytes; // Used to decode compressed oops.
+  protected long narrowOopBase;  // heap base for compressed oops.
+  protected int  narrowOopShift; // shift to decode compressed oops.
   // Should be initialized if desired by calling initCache()
   private PageCache cache;
 
@@ -159,10 +159,10 @@
     javaPrimitiveTypesConfigured = true;
   }
 
-  public void putHeapConst(long heapBase, long heapOopSize, long logMinObjAlignmentInBytes) {
-    this.heapBase = heapBase;
+  public void putHeapConst(long heapOopSize, long narrowOopBase, int narrowOopShift) {
     this.heapOopSize = heapOopSize;
-    this.logMinObjAlignmentInBytes = logMinObjAlignmentInBytes;
+    this.narrowOopBase = narrowOopBase;
+    this.narrowOopShift = narrowOopShift;
   }
 
   /** May be called by subclasses if desired to initialize the page
@@ -459,7 +459,7 @@
     long value = readCInteger(address, getHeapOopSize(), true);
     if (value != 0) {
       // See oop.inline.hpp decode_heap_oop
-      value = (long)(heapBase + (long)(value << logMinObjAlignmentInBytes));
+      value = (long)(narrowOopBase + (long)(value << narrowOopShift));
     }
     return value;
   }
@@ -545,10 +545,10 @@
     return heapOopSize;
   }
 
-  public long getHeapBase() {
-    return heapBase;
+  public long getNarrowOopBase() {
+    return narrowOopBase;
   }
-  public long getLogMinObjAlignmentInBytes() {
-    return logMinObjAlignmentInBytes;
+  public int getNarrowOopShift() {
+    return narrowOopShift;
   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java	Tue Jul 28 13:50:07 2009 -0600
@@ -42,5 +42,5 @@
                                               long jintSize,
                                               long jlongSize,
                                               long jshortSize);
-  public void putHeapConst(long heapBase, long heapOopSize, long logMinObjAlignment);
+  public void putHeapConst(long heapOopSize, long narrowOopBase, int narrowOopShift);
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java	Tue Jul 28 13:50:07 2009 -0600
@@ -65,9 +65,10 @@
   public long      getJIntSize() throws RemoteException;
   public long      getJLongSize() throws RemoteException;
   public long      getJShortSize() throws RemoteException;
-  public long      getHeapBase() throws RemoteException;
   public long      getHeapOopSize() throws RemoteException;
-  public long      getLogMinObjAlignmentInBytes() throws RemoteException;
+  public long      getNarrowOopBase() throws RemoteException;
+  public int       getNarrowOopShift() throws RemoteException;
+
   public boolean   areThreadsEqual(long addrOrId1, boolean isAddress1,
                                    long addrOrId2, boolean isAddress2) throws RemoteException;
   public int       getThreadHashCode(long addrOrId, boolean isAddress) throws RemoteException;
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java	Tue Jul 28 13:50:07 2009 -0600
@@ -85,9 +85,9 @@
       jlongSize    = remoteDebugger.getJLongSize();
       jshortSize   = remoteDebugger.getJShortSize();
       javaPrimitiveTypesConfigured = true;
-      heapBase     = remoteDebugger.getHeapBase();
+      narrowOopBase  = remoteDebugger.getNarrowOopBase();
+      narrowOopShift = remoteDebugger.getNarrowOopShift();
       heapOopSize  = remoteDebugger.getHeapOopSize();
-      logMinObjAlignmentInBytes  = remoteDebugger.getLogMinObjAlignmentInBytes();
     }
     catch (RemoteException e) {
       throw new DebuggerException(e);
--- a/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java	Tue Jul 28 13:50:07 2009 -0600
@@ -114,17 +114,18 @@
     return debugger.getJShortSize();
   }
 
-  public long getHeapBase() throws RemoteException {
-    return debugger.getHeapBase();
-  }
-
   public long getHeapOopSize() throws RemoteException {
     return debugger.getHeapOopSize();
   }
 
-  public long getLogMinObjAlignmentInBytes() throws RemoteException {
-    return debugger.getLogMinObjAlignmentInBytes();
+  public long getNarrowOopBase() throws RemoteException {
+    return debugger.getNarrowOopBase();
   }
+
+  public int  getNarrowOopShift() throws RemoteException {
+    return debugger.getNarrowOopShift();
+  }
+
   public boolean   areThreadsEqual(long addrOrId1, boolean isAddress1,
                                    long addrOrId2, boolean isAddress2) throws RemoteException {
     ThreadProxy t1 = getThreadProxy(addrOrId1, isAddress1);
--- a/agent/src/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java	Tue Jul 28 13:50:07 2009 -0600
@@ -249,6 +249,7 @@
             OopHandle givenHandle = obj.getHandle();
             for (Iterator itr = monitors.iterator(); itr.hasNext();) {
                 MonitorInfo mi = (MonitorInfo) itr.next();
+                if (mi.eliminated() && frame.isCompiledFrame()) continue; // skip eliminated monitor
                 if (givenHandle.equals(mi.owner())) {
                     res++;
                 }
--- a/agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java	Tue Jul 28 13:50:07 2009 -0600
@@ -301,6 +301,9 @@
             List frameMonitors = frame.getMonitors();  // List<MonitorInfo>
             for (Iterator miItr = frameMonitors.iterator(); miItr.hasNext(); ) {
                 sun.jvm.hotspot.runtime.MonitorInfo mi = (sun.jvm.hotspot.runtime.MonitorInfo) miItr.next();
+                if (mi.eliminated() && frame.isCompiledFrame()) {
+                  continue; // skip eliminated monitor
+                }
                 OopHandle obj = mi.owner();
                 if (obj == null) {
                     // this monitor doesn't have an owning object so skip it
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Tue Jul 28 13:50:07 2009 -0600
@@ -53,7 +53,8 @@
   // system obj array klass object
   private static sun.jvm.hotspot.types.OopField systemObjArrayKlassObjField;
 
-  private static AddressField heapBaseField;
+  private static AddressField narrowOopBaseField;
+  private static CIntegerField narrowOopShiftField;
 
   static {
     VM.registerVMInitializedObserver(new Observer() {
@@ -86,7 +87,8 @@
 
     systemObjArrayKlassObjField = type.getOopField("_systemObjArrayKlassObj");
 
-    heapBaseField = type.getAddressField("_heap_base");
+    narrowOopBaseField = type.getAddressField("_narrow_oop._base");
+    narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift");
   }
 
   public Universe() {
@@ -100,14 +102,18 @@
     }
   }
 
-  public static long getHeapBase() {
-    if (heapBaseField.getValue() == null) {
+  public static long getNarrowOopBase() {
+    if (narrowOopBaseField.getValue() == null) {
       return 0;
     } else {
-      return heapBaseField.getValue().minus(null);
+      return narrowOopBaseField.getValue().minus(null);
     }
   }
 
+  public static int getNarrowOopShift() {
+    return (int)narrowOopShiftField.getValue();
+  }
+
   /** Returns "TRUE" iff "p" points into the allocated area of the heap. */
   public boolean isIn(Address p) {
     return heap().isIn(p);
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Tue Jul 28 13:50:07 2009 -0600
@@ -142,34 +142,35 @@
     // from jvm.h
 
     public static final long JVM_RECOGNIZED_CLASS_MODIFIERS   = (JVM_ACC_PUBLIC |
-                                        JVM_ACC_FINAL |
-                                        JVM_ACC_SUPER |
-                                        JVM_ACC_INTERFACE |
-                                        JVM_ACC_ABSTRACT |
-                                        JVM_ACC_ANNOTATION |
-                                        JVM_ACC_SYNTHETIC);
+                                                                 JVM_ACC_FINAL |
+                                                                 JVM_ACC_SUPER |
+                                                                 JVM_ACC_INTERFACE |
+                                                                 JVM_ACC_ABSTRACT |
+                                                                 JVM_ACC_ANNOTATION |
+                                                                 JVM_ACC_ENUM |
+                                                                 JVM_ACC_SYNTHETIC);
 
 
     public static final long JVM_RECOGNIZED_FIELD_MODIFIERS  = (JVM_ACC_PUBLIC |
-                                        JVM_ACC_PRIVATE |
-                                        JVM_ACC_PROTECTED |
-                                        JVM_ACC_STATIC |
-                                        JVM_ACC_FINAL |
-                                        JVM_ACC_VOLATILE |
-                                        JVM_ACC_TRANSIENT |
-                                        JVM_ACC_ENUM |
-                                        JVM_ACC_SYNTHETIC);
+                                                                JVM_ACC_PRIVATE |
+                                                                JVM_ACC_PROTECTED |
+                                                                JVM_ACC_STATIC |
+                                                                JVM_ACC_FINAL |
+                                                                JVM_ACC_VOLATILE |
+                                                                JVM_ACC_TRANSIENT |
+                                                                JVM_ACC_ENUM |
+                                                                JVM_ACC_SYNTHETIC);
 
     public static final long JVM_RECOGNIZED_METHOD_MODIFIERS  = (JVM_ACC_PUBLIC |
-                                         JVM_ACC_PRIVATE |
-                                         JVM_ACC_PROTECTED |
-                                         JVM_ACC_STATIC |
-                                         JVM_ACC_FINAL |
-                                         JVM_ACC_SYNCHRONIZED |
-                                         JVM_ACC_BRIDGE |
-                                         JVM_ACC_VARARGS |
-                                         JVM_ACC_NATIVE |
-                                         JVM_ACC_ABSTRACT |
-                                         JVM_ACC_STRICT |
-                                         JVM_ACC_SYNTHETIC);
+                                                                 JVM_ACC_PRIVATE |
+                                                                 JVM_ACC_PROTECTED |
+                                                                 JVM_ACC_STATIC |
+                                                                 JVM_ACC_FINAL |
+                                                                 JVM_ACC_SYNCHRONIZED |
+                                                                 JVM_ACC_BRIDGE |
+                                                                 JVM_ACC_VARARGS |
+                                                                 JVM_ACC_NATIVE |
+                                                                 JVM_ACC_ABSTRACT |
+                                                                 JVM_ACC_STRICT |
+                                                                 JVM_ACC_SYNTHETIC);
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java	Tue Jul 28 13:50:07 2009 -0600
@@ -131,8 +131,18 @@
     List result = new ArrayList(monitors.size());
     for (int i = 0; i < monitors.size(); i++) {
       MonitorValue mv = (MonitorValue) monitors.get(i);
-      StackValue ownerSV = createStackValue(mv.owner()); // it is an oop
-      result.add(new MonitorInfo(ownerSV.getObject(), resolveMonitorLock(mv.basicLock())));
+      ScopeValue ov = mv.owner();
+      StackValue ownerSV = createStackValue(ov); // it is an oop
+      if (ov.isObject()) { // The owner object was scalar replaced
+        Assert.that(mv.eliminated() && ownerSV.objIsScalarReplaced(), "monitor should be eliminated for scalar replaced object");
+        // Put klass for scalar replaced object.
+        ScopeValue kv = ((ObjectValue)ov).getKlass();
+        Assert.that(kv.isConstantOop(), "klass should be oop constant for scalar replaced object");
+        OopHandle k = ((ConstantOopReadValue)kv).getValue();
+        result.add(new MonitorInfo(k, resolveMonitorLock(mv.basicLock()), mv.eliminated(), true));
+      } else {
+        result.add(new MonitorInfo(ownerSV.getObject(), resolveMonitorLock(mv.basicLock()), mv.eliminated(), false));
+      }
     }
     return result;
   }
@@ -212,12 +222,12 @@
           // long or is unused.  He always saves a long.  Here we know
           // a long was saved, but we only want an narrow oop back.  Narrow the
           // saved long to the narrow oop that the JVM wants.
-          return new StackValue(valueAddr.getCompOopHandleAt(VM.getVM().getIntSize()));
+          return new StackValue(valueAddr.getCompOopHandleAt(VM.getVM().getIntSize()), 0);
         } else {
-          return new StackValue(valueAddr.getCompOopHandleAt(0));
+          return new StackValue(valueAddr.getCompOopHandleAt(0), 0);
         }
       } else if( loc.holdsOop() ) {  // Holds an oop?
-        return new StackValue(valueAddr.getOopHandleAt(0));
+        return new StackValue(valueAddr.getOopHandleAt(0), 0);
       } else if( loc.holdsDouble() ) {
         // Double value in a single stack slot
         return new StackValue(valueAddr.getJIntAt(0) & 0xFFFFFFFF);
@@ -277,7 +287,7 @@
       return new StackValue(((ConstantIntValue) sv).getValue() & 0xFFFFFFFF);
     } else if (sv.isConstantOop()) {
       // constant oop
-      return new StackValue(((ConstantOopReadValue) sv).getValue());
+      return new StackValue(((ConstantOopReadValue) sv).getValue(), 0);
     } else if (sv.isConstantDouble()) {
       // Constant double in a single stack slot
       double d = ((ConstantDoubleValue) sv).getValue();
@@ -285,6 +295,9 @@
     } else if (VM.getVM().isLP64() && sv.isConstantLong()) {
       // Constant long in a single stack slot
       return new StackValue(((ConstantLongValue) sv).getValue() & 0xFFFFFFFF);
+    } else if (sv.isObject()) {
+      // Scalar replaced object in compiled frame
+      return new StackValue(((ObjectValue)sv).getValue(), 1);
     }
 
     // Unknown ScopeValue type
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/InterpretedVFrame.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/InterpretedVFrame.java	Tue Jul 28 13:50:07 2009 -0600
@@ -61,7 +61,7 @@
       StackValue sv;
       if (oopMask.isOop(i)) {
         // oop value
-        sv = new StackValue(addr.getOopHandleAt(0));
+        sv = new StackValue(addr.getOopHandleAt(0), 0);
       } else {
         // integer
         // Fetch a signed integer the size of a stack slot
@@ -95,7 +95,7 @@
       StackValue sv;
       if (oopMask.isOop(i + nofLocals)) {
         // oop value
-        sv = new StackValue(addr.getOopHandleAt(0));
+        sv = new StackValue(addr.getOopHandleAt(0), 0);
       } else {
         // integer
         // Fetch a signed integer the size of a stack slot
@@ -113,7 +113,7 @@
     for (BasicObjectLock current = getFrame().interpreterFrameMonitorEnd();
          current.address().lessThan(getFrame().interpreterFrameMonitorBegin().address());
          current = getFrame().nextMonitorInInterpreterFrame(current)) {
-      result.add(new MonitorInfo(current.obj(), current.lock()));
+      result.add(new MonitorInfo(current.obj(), current.lock(), false, false));
     }
     return result;
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThread.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThread.java	Tue Jul 28 13:50:07 2009 -0600
@@ -48,6 +48,8 @@
   private static AddressField  lastJavaPCField;
   private static CIntegerField threadStateField;
   private static AddressField  osThreadField;
+  private static AddressField  stackBaseField;
+  private static CIntegerField stackSizeField;
 
   private static JavaThreadPDAccess access;
 
@@ -83,6 +85,8 @@
     lastJavaPCField   = anchorType.getAddressField("_last_Java_pc");
     threadStateField  = type.getCIntegerField("_thread_state");
     osThreadField     = type.getAddressField("_osthread");
+    stackBaseField    = type.getAddressField("_stack_base");
+    stackSizeField    = type.getCIntegerField("_stack_size");
 
     UNINITIALIZED     = db.lookupIntConstant("_thread_uninitialized").intValue();
     NEW               = db.lookupIntConstant("_thread_new").intValue();
@@ -312,6 +316,14 @@
     return (OSThread) VMObjectFactory.newObject(OSThread.class, osThreadField.getValue(addr));
   }
 
+  public Address getStackBase() {
+    return stackBaseField.getValue(addr);
+  }
+
+  public long getStackSize() {
+    return stackSizeField.getValue(addr);
+  }
+
   /** Gets the Java-side thread object for this JavaThread */
   public Oop getThreadObj() {
     return VM.getVM().getObjectHeap().newOop(threadObjField.getValue(addr));
@@ -345,11 +357,18 @@
     if (Assert.ASSERTS_ENABLED) {
       Assert.that(VM.getVM().isDebugging(), "Not yet implemented for non-debugging system");
     }
-    Address highest = highestLock();
     Address sp      = lastSPDbg();
+    Address stackBase = getStackBase();
     // Be robust
-    if ((highest == null) || (sp == null)) return false;
-    return (highest.greaterThanOrEqual(a) && sp.lessThanOrEqual(a));
+    if (sp == null) return false;
+    return stackBase.greaterThanOrEqual(a) && sp.lessThanOrEqual(a);
+  }
+
+  public boolean isLockOwned(Address a) {
+    Address stackBase = getStackBase();
+    Address stackLimit = stackBase.addOffsetTo(-getStackSize());
+
+    return stackBase.greaterThanOrEqual(a) && stackLimit.lessThanOrEqual(a);
 
     // FIXME: should traverse MonitorArray/MonitorChunks as in VM
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/MonitorInfo.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/MonitorInfo.java	Tue Jul 28 13:50:07 2009 -0600
@@ -25,16 +25,39 @@
 package sun.jvm.hotspot.runtime;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.utilities.*;
 
 public class MonitorInfo {
   private OopHandle owner;
   private BasicLock lock;
+  private OopHandle ownerKlass;
+  private boolean eliminated;
+  private boolean ownerIsScalarReplaced;
 
-  public MonitorInfo(OopHandle owner, BasicLock lock) {
-    this.owner = owner;
-    this.lock  = lock;
+  public MonitorInfo(OopHandle owner, BasicLock lock, boolean eliminated, boolean ownerIsScalarReplaced) {
+    if (!ownerIsScalarReplaced) {
+      this.owner = owner;
+      this.ownerKlass = null;
+    } else {
+      Assert.that(eliminated, "monitor should be eliminated for scalar replaced object");
+      this.owner = null;
+      this.ownerKlass = owner;
+    }
+    this.eliminated = eliminated;
+    this.ownerIsScalarReplaced = ownerIsScalarReplaced;
   }
 
-  public OopHandle owner() { return owner; }
+  public OopHandle owner() {
+   Assert.that(!ownerIsScalarReplaced, "should not be called for scalar replaced object");
+   return owner;
+  }
+
+  public OopHandle ownerKlass() {
+   Assert.that(ownerIsScalarReplaced, "should not be called for not scalar replaced object");
+   return ownerKlass;
+  }
+
   public BasicLock lock()  { return lock; }
+  public boolean eliminated() { return eliminated; }
+  public boolean ownerIsScalarReplaced() { return ownerIsScalarReplaced; }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/StackValue.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/StackValue.java	Tue Jul 28 13:50:07 2009 -0600
@@ -37,9 +37,11 @@
     type = BasicType.getTConflict();
   }
 
-  public StackValue(OopHandle h) {
+  public StackValue(OopHandle h, long scalar_replaced) {
     handleValue = h;
     type = BasicType.getTObject();
+    integerValue = scalar_replaced;
+    Assert.that(integerValue == 0 || handleValue == null, "not null object should not be marked as scalar replaced");
   }
 
   public StackValue(long i) {
@@ -59,6 +61,13 @@
     return handleValue;
   }
 
+  boolean objIsScalarReplaced() {
+    if (Assert.ASSERTS_ENABLED) {
+      Assert.that(type == BasicType.getTObject(), "type check");
+    }
+    return integerValue != 0;
+  }
+
   public long getInteger() {
     if (Assert.ASSERTS_ENABLED) {
       Assert.that(type == BasicType.getTInt(), "type check");
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java	Tue Jul 28 13:50:07 2009 -0600
@@ -46,12 +46,18 @@
     Type type = db.lookupType("StubRoutines");
 
     callStubReturnAddressField = type.getAddressField("_call_stub_return_address");
-    // Only some platforms have specif return from compiled to call_stub
+    // Only some platforms have specific return from compiled to call_stub
     try {
-      callStubCompiledReturnAddressField = type.getAddressField("_call_stub_compiled_return");
+      type = db.lookupType("StubRoutines::x86");
+      if (type != null) {
+        callStubCompiledReturnAddressField = type.getAddressField("_call_stub_compiled_return");
+      }
     } catch (RuntimeException re) {
       callStubCompiledReturnAddressField = null;
     }
+    if (callStubCompiledReturnAddressField == null && VM.getVM().getCPU().equals("x86")) {
+      throw new InternalError("Missing definition for _call_stub_compiled_return");
+    }
   }
 
   public StubRoutines() {
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java	Tue Jul 28 13:50:07 2009 -0600
@@ -38,7 +38,6 @@
   private static int HAS_ASYNC_EXCEPTION;
 
   private static AddressField activeHandlesField;
-  private static AddressField highestLockField;
   private static AddressField currentPendingMonitorField;
   private static AddressField currentWaitingMonitorField;
 
@@ -60,7 +59,6 @@
 
     tlabFieldOffset    = type.getField("_tlab").getOffset();
     activeHandlesField = type.getAddressField("_active_handles");
-    highestLockField   = type.getAddressField("_highest_lock");
     currentPendingMonitorField = type.getAddressField("_current_pending_monitor");
     currentWaitingMonitorField = type.getAddressField("_current_waiting_monitor");
   }
@@ -121,10 +119,6 @@
     // pending exception
   }
 
-  public Address highestLock() {
-    return highestLockField.getValue(addr);
-  }
-
   public ObjectMonitor getCurrentPendingMonitor() {
     Address monitorAddr = currentPendingMonitorField.getValue(addr);
     if (monitorAddr == null) {
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java	Tue Jul 28 13:50:07 2009 -0600
@@ -164,20 +164,11 @@
             }
         }
 
-        long leastDiff = 0;
-        boolean leastDiffInitialized = false;
-        JavaThread theOwner = null;
         for (JavaThread thread = first(); thread != null; thread = thread.next()) {
-            Address addr = thread.highestLock();
-            if (addr == null || addr.lessThan(o)) continue;
-            long diff = addr.minus(o);
-            if (!leastDiffInitialized || diff < leastDiff) {
-                leastDiffInitialized = true;
-                leastDiff = diff;
-                theOwner = thread;
-            }
+          if (thread.isLockOwned(o))
+            return thread;
         }
-        return theOwner;
+        return null;
     }
 
     public JavaThread owningThreadFromMonitor(ObjectMonitor monitor) {
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Tue Jul 28 13:50:07 2009 -0600
@@ -318,11 +318,17 @@
     logMinObjAlignmentInBytes = db.lookupIntConstant("LogMinObjAlignmentInBytes").intValue();
     heapWordSize = db.lookupIntConstant("HeapWordSize").intValue();
     oopSize  = db.lookupIntConstant("oopSize").intValue();
-    heapOopSize  = db.lookupIntConstant("heapOopSize").intValue();
 
     intxType = db.lookupType("intx");
     uintxType = db.lookupType("uintx");
     boolType = (CIntegerType) db.lookupType("bool");
+
+    if (isCompressedOopsEnabled()) {
+      // Size info for oops within java objects is fixed
+      heapOopSize = (int)getIntSize();
+    } else {
+      heapOopSize = (int)getOopSize();
+    }
   }
 
   /** This could be used by a reflective runtime system */
@@ -342,11 +348,13 @@
       throw new RuntimeException("Attempt to initialize VM twice");
     }
     soleInstance = new VM(db, debugger, debugger.getMachineDescription().isBigEndian());
-    debugger.putHeapConst(Universe.getHeapBase(), soleInstance.getHeapOopSize(),
-                          soleInstance.logMinObjAlignmentInBytes);
+
     for (Iterator iter = vmInitializedObservers.iterator(); iter.hasNext(); ) {
       ((Observer) iter.next()).update(null, null);
     }
+
+    debugger.putHeapConst(soleInstance.getHeapOopSize(), Universe.getNarrowOopBase(),
+                          Universe.getNarrowOopShift());
   }
 
   /** This is used by the debugging system */
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Tue Jul 28 13:50:07 2009 -0600
@@ -89,29 +89,6 @@
             // update the code buffer hotspot specific bytecode with the jvm bytecode
             code[bci] = (byte) (0xFF & bytecode);
 
-            // RewriteFrequentPairs
-            if(hotspotcode == Bytecodes._fast_iaccess_0 ||
-               hotspotcode == Bytecodes._fast_aaccess_0 ||
-               hotspotcode == Bytecodes._fast_faccess_0) {
-               // rewrite next bytecode as _getfield
-                bci++;
-               code[bci] = (byte) (0xFF & Bytecodes._getfield);
-               bytecode  = Bytecodes._getfield;
-               hotspotcode  = Bytecodes._getfield;
-            } else if (hotspotcode == Bytecodes._fast_iload2) {
-               // rewrite next bytecode as _iload
-               bci++;
-               code[bci] = (byte) (0xFF & Bytecodes._iload);
-               bytecode = Bytecodes._iload;
-               hotspotcode = Bytecodes._iload;
-            } else if (hotspotcode == Bytecodes._fast_icaload) {
-               // rewrite next bytecode as _caload
-               bci++;
-               code[bci] = (byte) (0xFF & Bytecodes._caload);
-               bytecode = Bytecodes._caload;
-               bytecode = Bytecodes._caload;
-            }
-
             short cpoolIndex = 0;
             switch (bytecode) {
                 // bytecodes with ConstantPoolCache index
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java	Tue Jul 28 13:50:07 2009 -0600
@@ -59,8 +59,14 @@
             SystemDictionary dict = VM.getVM().getSystemDictionary();
             dict.classesDo(new SystemDictionary.ClassVisitor() {
                     public void visit(Klass k) {
-                        if (k instanceof InstanceKlass)
-                            dumpKlass((InstanceKlass) k);
+                        if (k instanceof InstanceKlass) {
+                            try {
+                                dumpKlass((InstanceKlass) k);
+                            } catch (Exception e) {
+                                System.out.println(k.getName().asString());
+                                e.printStackTrace();
+                            }
+                        }
                     }
                 });
         }
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Tue Jul 28 13:50:07 2009 -0600
@@ -40,7 +40,6 @@
     protected InstanceKlass     klass;
     protected DataOutputStream  dos;
     protected ConstantPool      cpool;
-    protected boolean           is15Format;
 
     // Map between class name to index of type CONSTANT_Class
     protected Map               classToIndex = new HashMap();
@@ -73,7 +72,6 @@
         klass = kls;
         dos = new DataOutputStream(os);
         cpool = klass.getConstants();
-        is15Format = is15ClassFile();
     }
 
     public void write() throws IOException {
@@ -82,7 +80,7 @@
         // write magic
         dos.writeInt(0xCAFEBABE);
 
-        writeVersion(is15Format);
+        writeVersion();
         writeConstantPool();
         writeClassAccessFlags();
         writeThisClass();
@@ -96,43 +94,14 @@
         dos.flush();
     }
 
-    protected boolean is15ClassFile() {
-        // if klass has generic signature, then it is 1.5  class file.
-        if (klass.getGenericSignature() != null) {
-           return true;
-        }
-
-        // if atleast one method has generic signature
-        // , then we have 1.5 class file.
-        ObjArray methods = klass.getMethods();
-        final int numMethods = (int) methods.getLength();
-        for (int m = 0; m < numMethods; m++) {
-           Method curMethod = (Method) methods.getObjAt(m);
-           if (curMethod.getGenericSignature() != null) {
-              return true;
-           }
-        }
-
-        // if atleast one field has non-zero generic signature index, then we have
-        // 1.5 class file
-        TypeArray fields = klass.getFields();
-        final int numFields = (int) fields.getLength();
-        for (int f = 0; f < numFields; f += InstanceKlass.NEXT_OFFSET) {
-           short genSigIndex = fields.getShortAt(f + InstanceKlass.GENERIC_SIGNATURE_INDEX_OFFSET);
-           if (genSigIndex != (short)0) return true;
-        }
-
-        return false;
+    protected void writeVersion() throws IOException {
+        dos.writeShort((short)klass.minorVersion());
+        dos.writeShort((short)klass.majorVersion());
     }
 
-    protected void writeVersion(boolean is15Format) throws IOException {
-        if (is15Format) {
-           dos.writeShort(MINOR_VERSION);
-           dos.writeShort(MAJOR_VERSION);
-        } else {
-           dos.writeShort(MINOR_VERSION_OLD);
-           dos.writeShort(MAJOR_VERSION_OLD);
-        }
+    protected void writeIndex(int index) throws IOException {
+        if (index == 0) throw new InternalError();
+        dos.writeShort(index);
     }
 
     protected void writeConstantPool() throws IOException {
@@ -392,8 +361,8 @@
             if (DEBUG) debugMessage("\tfield name = " + nameIndex + ", signature = " + signatureIndex);
 
             short fieldAttributeCount = 0;
-            boolean isSyn = isSynthetic(accessFlags);
-            if (isSyn)
+            boolean hasSyn = hasSyntheticAttribute(accessFlags);
+            if (hasSyn)
                 fieldAttributeCount++;
 
             short initvalIndex = fields.getShortAt(index + InstanceKlass.INITVAL_INDEX_OFFSET);
@@ -407,18 +376,18 @@
             dos.writeShort(fieldAttributeCount);
 
             // write synthetic, if applicable
-            if (isSyn)
+            if (hasSyn)
                 writeSynthetic();
 
             if (initvalIndex != 0) {
-                dos.writeShort(_constantValueIndex);
+                writeIndex(_constantValueIndex);
                 dos.writeInt(2);
                 dos.writeShort(initvalIndex);
                 if (DEBUG) debugMessage("\tfield init value = " + initvalIndex);
             }
 
             if (genSigIndex != 0) {
-                dos.writeShort(_signatureIndex);
+                writeIndex(_signatureIndex);
                 dos.writeInt(2);
                 dos.writeShort(genSigIndex);
                 if (DEBUG) debugMessage("\tfield generic signature index " + genSigIndex);
@@ -430,8 +399,13 @@
         return (accessFlags & (short) JVM_ACC_SYNTHETIC) != 0;
     }
 
+    protected boolean hasSyntheticAttribute(short accessFlags) {
+        // Check if flags have the attribute and if the constant pool contains an entry for it.
+        return isSynthetic(accessFlags) && _syntheticIndex != 0;
+    }
+
     protected void writeSynthetic() throws IOException {
-        dos.writeShort(_syntheticIndex);
+        writeIndex(_syntheticIndex);
         dos.writeInt(0);
     }
 
@@ -459,8 +433,8 @@
 
         short methodAttributeCount = 0;
 
-        final boolean isSyn = isSynthetic((short)accessFlags);
-        if (isSyn)
+        final boolean hasSyn = hasSyntheticAttribute((short)accessFlags);
+        if (hasSyn)
             methodAttributeCount++;
 
         final boolean hasCheckedExceptions = m.hasCheckedExceptions();
@@ -478,27 +452,11 @@
         dos.writeShort(methodAttributeCount);
         if (DEBUG) debugMessage("\tmethod attribute count = " + methodAttributeCount);
 
-        if (isSyn) {
+        if (hasSyn) {
             if (DEBUG) debugMessage("\tmethod is synthetic");
             writeSynthetic();
         }
 
-        if (hasCheckedExceptions) {
-            CheckedExceptionElement[] exceptions = m.getCheckedExceptions();
-            dos.writeShort(_exceptionsIndex);
-
-            int attrSize = 2 /* number_of_exceptions */ +
-                           exceptions.length * 2 /* exception_index */;
-            dos.writeInt(attrSize);
-            dos.writeShort(exceptions.length);
-            if (DEBUG) debugMessage("\tmethod has " + exceptions.length
-                                        +  " checked exception(s)");
-            for (int e = 0; e < exceptions.length; e++) {
-                 short cpIndex = (short) exceptions[e].getClassCPIndex();
-                 dos.writeShort(cpIndex);
-            }
-        }
-
         if (isCodeAvailable) {
             byte[] code = m.getByteCode();
             short codeAttrCount = 0;
@@ -574,7 +532,7 @@
 
             // start writing Code
 
-            dos.writeShort(_codeIndex);
+            writeIndex(_codeIndex);
 
             dos.writeInt(codeSize);
             if (DEBUG) debugMessage("\tcode attribute length = " + codeSize);
@@ -608,7 +566,7 @@
 
             // write LineNumberTable, if available.
             if (hasLineNumberTable) {
-                dos.writeShort(_lineNumberTableIndex);
+                writeIndex(_lineNumberTableIndex);
                 dos.writeInt(lineNumberAttrLen);
                 dos.writeShort((short) lineNumberTable.length);
                 for (int l = 0; l < lineNumberTable.length; l++) {
@@ -619,7 +577,7 @@
 
             // write LocalVariableTable, if available.
             if (hasLocalVariableTable) {
-                dos.writeShort((short) _localVariableTableIndex);
+                writeIndex((short) _localVariableTableIndex);
                 dos.writeInt(localVarAttrLen);
                 dos.writeShort((short) localVariableTable.length);
                 for (int l = 0; l < localVariableTable.length; l++) {
@@ -632,6 +590,22 @@
             }
         }
 
+        if (hasCheckedExceptions) {
+            CheckedExceptionElement[] exceptions = m.getCheckedExceptions();
+            writeIndex(_exceptionsIndex);
+
+            int attrSize = 2 /* number_of_exceptions */ +
+                           exceptions.length * 2 /* exception_index */;
+            dos.writeInt(attrSize);
+            dos.writeShort(exceptions.length);
+            if (DEBUG) debugMessage("\tmethod has " + exceptions.length
+                                        +  " checked exception(s)");
+            for (int e = 0; e < exceptions.length; e++) {
+                 short cpIndex = (short) exceptions[e].getClassCPIndex();
+                 dos.writeShort(cpIndex);
+            }
+        }
+
         if (isGeneric) {
            writeGenericSignature(m.getGenericSignature().asString());
         }
@@ -643,7 +617,7 @@
     }
 
     protected void writeGenericSignature(String signature) throws IOException {
-        dos.writeShort(_signatureIndex);
+        writeIndex(_signatureIndex);
         if (DEBUG) debugMessage("signature attribute = " + _signatureIndex);
         dos.writeInt(2);
         Short index = (Short) utf8ToIndex.get(signature);
@@ -653,12 +627,12 @@
 
     protected void writeClassAttributes() throws IOException {
         final long flags = klass.getAccessFlags();
-        final boolean isSyn = isSynthetic((short) flags);
+        final boolean hasSyn = hasSyntheticAttribute((short) flags);
 
         // check for source file
         short classAttributeCount = 0;
 
-        if (isSyn)
+        if (hasSyn)
             classAttributeCount++;
 
         Symbol sourceFileName = klass.getSourceFileName();
@@ -677,12 +651,12 @@
         dos.writeShort(classAttributeCount);
         if (DEBUG) debugMessage("class attribute count = " + classAttributeCount);
 
-        if (isSyn)
+        if (hasSyn)
             writeSynthetic();
 
         // write SourceFile, if any
         if (sourceFileName != null) {
-            dos.writeShort(_sourceFileIndex);
+            writeIndex(_sourceFileIndex);
             if (DEBUG) debugMessage("source file attribute = " + _sourceFileIndex);
             dos.writeInt(2);
             Short index = (Short) utf8ToIndex.get(sourceFileName.asString());
@@ -697,7 +671,7 @@
 
         // write inner classes, if any
         if (numInnerClasses != 0) {
-            dos.writeShort(_innerClassesIndex);
+            writeIndex(_innerClassesIndex);
             final int innerAttrLen = 2 /* number_of_inner_classes */ +
                                      numInnerClasses * (
                                                  2 /* inner_class_info_index */ +
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java	Tue Jul 28 13:50:07 2009 -0600
@@ -161,6 +161,8 @@
           child = new OopTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
         } catch (AddressException e) {
           child = new BadOopTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field.getID(), getTreeTableMode());
+        } catch (UnknownOopException e) {
+          child = new BadOopTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field.getID(), getTreeTableMode());
         }
       }
       ++curField;
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaThread.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaThread.java	Tue Jul 28 13:50:07 2009 -0600
@@ -135,6 +135,10 @@
                     List frameMonitors = frame.getMonitors();  // List<MonitorInfo>
                     for (Iterator miItr = frameMonitors.iterator(); miItr.hasNext(); ) {
                         MonitorInfo mi = (MonitorInfo) miItr.next();
+
+                        if (mi.eliminated() && frame.isCompiledFrame()) {
+                          continue; // skip eliminated monitor
+                        }
                         OopHandle obj = mi.owner();
                         if (obj == null) {
                             // this monitor doesn't have an owning object so skip it
--- a/make/README	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-README:
-  This file should be located at the top of the hotspot Mercurial repository.
-
-  See http://openjdk.java.net/ for more information about the OpenJDK.
-
-  See ../README-builds.html for complete details on build machine requirements.
-
-Simple Build Instructions:
-
-    cd make && gnumake
-     
-  The files that will be imported into the jdk build will be in the "build"
-  directory.
-
--- a/make/hotspot_version	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/hotspot_version	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 # 
-# Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
 # 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 @@
 #
 
 # Don't put quotes (fail windows build).
-HOTSPOT_VM_COPYRIGHT=Copyright 2008
+HOTSPOT_VM_COPYRIGHT=Copyright 2009
 
-HS_MAJOR_VER=14
+HS_MAJOR_VER=16
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=09
+HS_BUILD_NUMBER=06
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/make/jprt.config	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-#!echo "This is not a shell script"
-#
-# Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
-# 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.
-#  
-#
-
-#############################################################################
-# Error
-error() # message
-{
-  echo "ERROR: $1"
-  exit 6
-}
-# Directory must exist
-dirMustExist() # dir name
-{
-  if [ ! -d "$1" ] ; then
-    error "Directory for $2 does not exist: $1"
-  fi
-}
-# File must exist
-fileMustExist() # dir name
-{
-  if [ ! -f "$1" ] ; then
-    error "File for $2 does not exist: $1"
-  fi
-}
-#############################################################################
-
-# Should be set by JPRT as the 3 basic inputs
-bootdir="${ALT_BOOTDIR}"
-slashjava="${ALT_SLASH_JAVA}"
-jdk_import="${ALT_JDK_IMPORT_PATH}"
-
-# Check input
-dirMustExist "${bootdir}"    ALT_BOOTDIR
-dirMustExist "${slashjava}"  ALT_SLASH_JAVA
-dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
-
-# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
-osname=`uname -s`
-if [ "${osname}" = SunOS ] ; then
-   
-    # SOLARIS: Sparc or X86
-    osarch=`uname -p`
-    if [ "${osarch}" = sparc ] ; then
-	solaris_arch=sparc
-    else
-	solaris_arch=i386
-    fi
-
-    if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
-        compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
-    else
-        if [ "${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6"      -o \
-             "${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6u10"   -o \
-             "${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6perf" ] ; then
-            # All jdk6 builds use SS11
-            compiler_name=SS11
-        else
-	    compiler_name=SS12
-        fi
-    fi
-    
-    # Get into path (make sure it matches ALT setting)
-    compiler_path=${slashjava}/devtools/${solaris_arch}/SUNWspro/${compiler_name}/bin
-    dirMustExist "${compiler_path}" COMPILER_PATH
-    path4sdk=${compiler_path}
-
-    # Add basic solaris system paths
-    path4sdk=${path4sdk}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-
-    # Find GNU make
-    make=/usr/sfw/bin/gmake
-    if [ ! -f ${make} ] ; then
-	make=/opt/sfw/bin/gmake
-	if [ ! -f ${make} ] ; then
-	    make=${slashjava}/devtools/${solaris_arch}/bin/gnumake
-        fi 
-    fi
-    fileMustExist "${make}" make
-
-    # File creation mask
-    umask 002
-
-elif [ "${osname}" = Linux ] ; then
-   
-    # LINUX: X86, AMD64
-    osarch=`uname -m`
-    if [ "${osarch}" = i686 ] ; then
-	linux_arch=i586
-    elif [ "${osarch}" = x86_64 ] ; then
-	linux_arch=amd64
-    fi
-
-    # Get the compilers into path (make sure it matches ALT setting)
-    compiler_path=/usr/bin
-    dirMustExist "${compiler_path}" COMPILER_PATH
-    path4sdk=${compiler_path}
-    
-    # Add basic paths
-    path4sdk=${path4sdk}:/usr/bin:/bin:/usr/sbin:/sbin
-
-    # Get the previous JDK to be used to bootstrap the build
-    path4sdk=${bootdir}/bin:${path4sdk}
-    
-    # Find GNU make
-    make=/usr/bin/make
-    fileMustExist "${make}" make
-
-    umask 002
-
-else
-
-    # Windows: Differs on CYGWIN vs. MKS, and the compiler available.
-    #   Also, blanks in pathnames gives GNU make headaches, so anything placed
-    #   in any ALT_* variable should be the short windows dosname.
-   
-    # WINDOWS: Install and use MKS or CYGWIN (should have already been done)
-    #   Assumption here is that you are in a shell window via MKS or cygwin.
-    #   MKS install should have defined the environment variable ROOTDIR.
-    #   We also need to figure out which one we have: X86, AMD64
-    if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
-	windows_arch=amd64
-    else
-	windows_arch=i586
-    fi
-    
-    # We need to determine if we are running a CYGWIN shell or an MKS shell
-    #    (if uname isn't available, then it will be unix_toolset=unknown)
-    unix_toolset=unknown
-    if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
-        # We kind of assume ROOTDIR is where MKS is and it's ok
-        unix_toolset=MKS
-        mkshome=`dosname -s "${ROOTDIR}"`
-	# Utility to convert to short pathnames without spaces
-	dosname="${mkshome}/mksnt/dosname -s"
-        # Most unix utilities are in the mksnt directory of ROOTDIR
-        unixcommand_path="${mkshome}/mksnt"
-        path4sdk="${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" UNIXCOMMAND_PATH
-	devtools_path="${slashjava}/devtools/win32/bin"
-	path4sdk="${devtools_path};${path4sdk}"
-        dirMustExist "${devtools_path}" DEVTOOLS_PATH
-        # Find GNU make
-        make="${devtools_path}/gnumake.exe"
-        fileMustExist "${make}" make
-    elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
-        # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
-        unix_toolset=CYGWIN
-	# Utility to convert to short pathnames without spaces
-	dosname="/usr/bin/cygpath -a -m -s"
-        # Most unix utilities are in the /usr/bin
-        unixcommand_path="/usr/bin"
-        path4sdk="${unixcommand_path}"
-        dirMustExist "${unixcommand_path}" UNIXCOMMAND_PATH
-        # Find GNU make
-        make="${unixcommand_path}/make.exe"
-        fileMustExist "${make}" make
-    else
-      echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
-    fi
-
-    # WINDOWS: Compiler setup (nasty part)
-    #   NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
-    #   NOTE: CYGWIN has a link.exe too, make sure the compilers are first
-    if [ "${windows_arch}" = i586 ] ; then
-        # 32bit Windows compiler settings
-        # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
-        vs_root=`${dosname} "${VS71COMNTOOLS}/../.."`
-        # Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
-        vc7_root="${vs_root}/Vc7"
-        compiler_path="${vc7_root}/bin"
-        platform_sdk="${vc7_root}/PlatformSDK"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${vc7_root}/atlmfc/include"
-        include4sdk="${include4sdk};${vc7_root}/include"
-        include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
-        include4sdk="${include4sdk};${platform_sdk}/include"
-        include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
-        lib4sdk="${vc7_root}/atlmfc/lib"
-        lib4sdk="${lib4sdk};${vc7_root}/lib"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
-        lib4sdk="${lib4sdk};${platform_sdk}/lib"
-        lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
-	path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
-        path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
-	path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
-        path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
-	path4sdk="${compiler_path};${path4sdk}"
-    elif [ "${windows_arch}" = amd64 ] ; then
-        # AMD64 64bit Windows compiler settings
-	if [ "${MSSDK}" != "" ] ; then
-	    platform_sdk="${MSSDK}"
-	else
-	    platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
-	fi
-	compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
-        # LIB and INCLUDE must use ; as a separator
-        include4sdk="${platform_sdk}/Include"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
-	include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
-	include4sdk="${include4sdk};${platform_sdk}/Include/atl"
-	include4sdk="${include4sdk};${platform_sdk}/Include/crt"
-        lib4sdk="${platform_sdk}/Lib/AMD64"
-        lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
-        # Search path and DLL locating path
-        #   WARNING: CYGWIN has a link.exe too, make sure compilers are first
-        path4sdk="${platform_sdk}/bin;${path4sdk}"
-        path4sdk="${compiler_path};${path4sdk}"
-    fi
-    # Export LIB and INCLUDE
-    unset lib
-    unset Lib
-    LIB="${lib4sdk}"
-    export LIB
-    unset include
-    unset Include
-    INCLUDE="${include4sdk}"
-    export INCLUDE
-    # Set the ALT variable
-    dirMustExist "${compiler_path}" COMPILER_PATH
-    
-    # WINDOWS: Get the previous JDK to be used to bootstrap the build
-    path4sdk="${bootdir}/bin;${path4sdk}"
-
-    # Turn all \\ into /, remove duplicates and trailing /
-    slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
-    
-    # For windows, it's hard to know where the system is, so we just add this
-    #    to PATH.
-    path4sdk="${slash_path};${PATH}"
-    
-    # Convert path4sdk to cygwin style
-    if [ "${unix_toolset}" = CYGWIN ] ; then
-	path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
-    fi
-
-fi
-
-# Export PATH setting
-PATH="${path4sdk}"
-export PATH
-
-# Unset certain vars
-unset LD_LIBRARY_PATH
-unset LD_LIBRARY_PATH_32
-unset LD_LIBRARY_PATH_64
-
--- a/make/jprt.properties	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/jprt.properties	Tue Jul 28 13:50:07 2009 -0600
@@ -19,12 +19,12 @@
 # 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.
-#  
+#
 #
 
 # Properties for jprt
 
-# All build result bundles are full jdks, so the 64bit testing does not 
+# All build result bundles are full jdks, so the 64bit testing does not
 #    need the 32bit sibling bundle installed.
 #    Note: If the hotspot/make/Makefile changed to only bundle the 64bit files
 #          when bundling 64bit, and stripped out the 64bit files from any 32bit
@@ -46,30 +46,57 @@
 jprt.my.solaris.sparc.jdk6=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6perf=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6u10=solaris_sparc_5.8
+jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8
 jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}}
 
 jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10
 jprt.my.solaris.sparcv9.jdk6=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6perf=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6u10=solaris_sparcv9_5.8
+jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
 
 jprt.my.solaris.i586.jdk7=solaris_i586_5.10
 jprt.my.solaris.i586.jdk6=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6perf=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6u10=solaris_i586_5.8
+jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8
 jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}}
 
 jprt.my.solaris.x64.jdk7=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6perf=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10
+jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10
 jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}}
 
-jprt.my.linux.i586=linux_i586
-jprt.my.linux.x64=linux_x64
-jprt.my.windows.i586=windows_i586
-jprt.my.windows.x64=windows_x64
+jprt.my.linux.i586.jdk7=linux_i586_2.6
+jprt.my.linux.i586.jdk6=linux_i586_2.4
+jprt.my.linux.i586.jdk6perf=linux_i586_2.4
+jprt.my.linux.i586.jdk6u10=linux_i586_2.4
+jprt.my.linux.i586.jdk6u14=linux_i586_2.4
+jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}}
+
+jprt.my.linux.x64.jdk7=linux_x64_2.6
+jprt.my.linux.x64.jdk6=linux_x64_2.4
+jprt.my.linux.x64.jdk6perf=linux_x64_2.4
+jprt.my.linux.x64.jdk6u10=linux_x64_2.4
+jprt.my.linux.x64.jdk6u14=linux_x64_2.4
+jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}}
+
+jprt.my.windows.i586.jdk7=windows_i586_5.0
+jprt.my.windows.i586.jdk6=windows_i586_5.0
+jprt.my.windows.i586.jdk6perf=windows_i586_5.0
+jprt.my.windows.i586.jdk6u10=windows_i586_5.0
+jprt.my.windows.i586.jdk6u14=windows_i586_5.0
+jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}}
+
+jprt.my.windows.x64.jdk7=windows_x64_5.2
+jprt.my.windows.x64.jdk6=windows_x64_5.2
+jprt.my.windows.x64.jdk6perf=windows_x64_5.2
+jprt.my.windows.x64.jdk6u10=windows_x64_5.2
+jprt.my.windows.x64.jdk6u14=windows_x64_5.2
+jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}}
 
 # Standard list of jprt build targets for this source tree
 
@@ -89,60 +116,52 @@
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jvm98, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-scimark, \
     ${jprt.my.solaris.sparc}-product-{c1|c2}-runThese, \
-    ${jprt.my.solaris.sparc}-product-{c1|c2}-runThese_Xcomp, \
-    ${jprt.my.solaris.sparc}-product-{c1|c2}-runThese_Xcomp_2, \
-    ${jprt.my.solaris.sparc}-product-{c1|c2}-runThese_Xcomp_3, \
     ${jprt.my.solaris.sparc}-fastdebug-c1-runThese_Xshare, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_default, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_CMS, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_default_2, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC_2, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC_2, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC_2, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_CMS_2, \
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_G1, \
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCBasher_ParOldGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_default, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_SerialGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_ParallelGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_ParNewGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_CMS, \
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_G1, \
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_ParOldGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_default, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_SerialGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_ParallelGC, \
     ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_CMS, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-scimark_2, \
-    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-scimark_3
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_G1, \
+    ${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_ParOldGC
 
 jprt.my.solaris.sparcv9.test.targets= \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark, \
     ${jprt.my.solaris.sparcv9}-product-c2-runThese, \
-    ${jprt.my.solaris.sparcv9}-product-c2-runThese_Xcomp, \
-    ${jprt.my.solaris.sparcv9}-product-c2-runThese_Xcomp_2, \
-    ${jprt.my.solaris.sparcv9}-product-c2-runThese_Xcomp_3, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_default, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_SerialGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_CMS, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_default_2, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_SerialGC_2, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParallelGC_2, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParNewGC_2, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_CMS_2, \
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_G1, \
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParOldGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_default, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_SerialGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_ParallelGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_ParNewGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_CMS, \
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_G1, \
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_ParOldGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_default, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_SerialGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_ParallelGC, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_CMS, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark_2, \
-    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark_3
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_G1, \
+    ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_ParOldGC
 
 jprt.my.solaris.x64.test.targets= \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98, \
@@ -154,73 +173,80 @@
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_CMS, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_default_2, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_SerialGC_2, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC_2, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC_2, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_CMS_2, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_G1, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParOldGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_default, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_SerialGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_ParallelGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_ParNewGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_CMS, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_G1, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_default, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_SerialGC, \
     ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_ParallelGC, \
-    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_CMS
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_CMS, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_G1, \
+    ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_ParOldGC
 
 jprt.my.solaris.i586.test.targets= \
     ${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
     ${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-scimark, \
     ${jprt.my.solaris.i586}-product-{c1|c2}-runThese_Xcomp, \
-    ${jprt.my.solaris.i586}-product-c2-runThese_Xcomp_2, \
-    ${jprt.my.solaris.i586}-fastdebug-c1-runThese_Xcomp_2, \
+    ${jprt.my.solaris.i586}-fastdebug-c1-runThese_Xcomp, \
     ${jprt.my.solaris.i586}-fastdebug-c1-runThese_Xshare, \
     ${jprt.my.solaris.i586}-product-c1-GCBasher_default, \
     ${jprt.my.solaris.i586}-product-c1-GCBasher_SerialGC, \
     ${jprt.my.solaris.i586}-product-c1-GCBasher_ParallelGC, \
     ${jprt.my.solaris.i586}-product-c1-GCBasher_ParNewGC, \
     ${jprt.my.solaris.i586}-product-c1-GCBasher_CMS, \
+    ${jprt.my.solaris.i586}-product-c1-GCBasher_G1, \
+    ${jprt.my.solaris.i586}-product-c1-GCBasher_ParOldGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_default, \
     ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_SerialGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_ParallelGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_ParNewGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_CMS, \
+    ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_G1, \
+    ${jprt.my.solaris.i586}-fastdebug-c2-GCBasher_ParOldGC, \
     ${jprt.my.solaris.i586}-product-c1-GCOld_default, \
     ${jprt.my.solaris.i586}-product-c1-GCOld_SerialGC, \
     ${jprt.my.solaris.i586}-product-c1-GCOld_ParallelGC, \
     ${jprt.my.solaris.i586}-product-c1-GCOld_ParNewGC, \
     ${jprt.my.solaris.i586}-product-c1-GCOld_CMS, \
+    ${jprt.my.solaris.i586}-product-c1-GCOld_G1, \
+    ${jprt.my.solaris.i586}-product-c1-GCOld_ParOldGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-jbb_default, \
     ${jprt.my.solaris.i586}-fastdebug-c2-jbb_ParallelGC, \
     ${jprt.my.solaris.i586}-fastdebug-c2-jbb_CMS, \
-    ${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-scimark_2, \
-    ${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-scimark_3
+    ${jprt.my.solaris.i586}-fastdebug-c2-jbb_G1, \
+    ${jprt.my.solaris.i586}-fastdebug-c2-jbb_ParOldGC
 
 jprt.my.linux.i586.test.targets = \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-scimark, \
     ${jprt.my.linux.i586}-product-c1-runThese_Xcomp, \
-    ${jprt.my.linux.i586}-product-c1-runThese_Xcomp_2, \
-    ${jprt.my.linux.i586}-product-c1-runThese_Xcomp_3, \
     ${jprt.my.linux.i586}-fastdebug-c1-runThese_Xshare, \
     ${jprt.my.linux.i586}-fastdebug-c2-runThese_Xcomp, \
-    ${jprt.my.linux.i586}-fastdebug-c2-runThese_Xcomp_2, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_default, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
     ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_CMS, \
+    ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_G1, \
+    ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParOldGC, \
     ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_default, \
     ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_SerialGC, \
     ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_ParallelGC, \
     ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_ParNewGC, \
     ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_CMS, \
+    ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_G1, \
+    ${jprt.my.linux.i586}-product-{c1|c2}-GCOld_ParOldGC, \
     ${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_default, \
     ${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_ParallelGC, \
     ${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_CMS, \
-    ${jprt.my.linux.i586}-{product|fastdebug}-c2-scimark_2, \
-    ${jprt.my.linux.i586}-{product|fastdebug}-c2-scimark_3
+    ${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_G1, \
+    ${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_ParOldGC
 
 jprt.my.linux.x64.test.targets = \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-jvm98, \
@@ -230,15 +256,19 @@
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_CMS, \
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_G1, \
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_ParOldGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_default, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_SerialGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_ParallelGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_ParNewGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_CMS, \
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_G1, \
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_default, \
     ${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_ParallelGC, \
-    ${jprt.my.linux.x64}-{product|fastdebug}-c2-scimark_2, \
-    ${jprt.my.linux.x64}-{product|fastdebug}-c2-scimark_3
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_G1, \
+    ${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_ParOldGC
 
 jprt.my.windows.i586.test.targets = \
     ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
@@ -251,16 +281,20 @@
     ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \
     ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \
     ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_CMS, \
+    ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_G1, \
+    ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParOldGC, \
     ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_default, \
     ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_SerialGC, \
     ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_ParallelGC, \
     ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_ParNewGC, \
     ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_CMS, \
+    ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_G1, \
+    ${jprt.my.windows.i586}-product-{c1|c2}-GCOld_ParOldGC, \
     ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jbb_default, \
     ${jprt.my.windows.i586}-product-{c1|c2}-jbb_ParallelGC, \
     ${jprt.my.windows.i586}-product-{c1|c2}-jbb_CMS, \
-    ${jprt.my.windows.i586}-product-{c1|c2}-scimark_2, \
-    ${jprt.my.windows.i586}-product-{c1|c2}-scimark_3
+    ${jprt.my.windows.i586}-product-{c1|c2}-jbb_G1, \
+    ${jprt.my.windows.i586}-product-{c1|c2}-jbb_ParOldGC
 
 jprt.my.windows.x64.test.targets = \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98, \
@@ -272,16 +306,20 @@
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_CMS, \
+    ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_G1, \
+    ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParOldGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_default, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_SerialGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_ParallelGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_ParNewGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_CMS, \
+    ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_G1, \
+    ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
     ${jprt.my.windows.x64}-{product|fastdebug}-c2-jbb_default, \
     ${jprt.my.windows.x64}-product-c2-jbb_CMS, \
     ${jprt.my.windows.x64}-product-c2-jbb_ParallelGC, \
-    ${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark_2, \
-    ${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark_3
+    ${jprt.my.windows.x64}-product-c2-jbb_G1, \
+    ${jprt.my.windows.x64}-product-c2-jbb_ParOldGC
 
 # The complete list of test targets for jprt
 
@@ -297,7 +335,19 @@
 
 # The default test/Makefile targets that should be run
 
-# Example:
-#   jprt.make.rule.test.targets=*-*-*-packtest
 #jprt.make.rule.test.targets=*-product-*-packtest
 
+jprt.make.rule.test.targets = \
+  ${jprt.my.solaris.sparc}-*-c1-clienttest, \
+  ${jprt.my.solaris.i586}-*-c1-clienttest, \
+  ${jprt.my.linux.i586}-*-c1-clienttest, \
+  ${jprt.my.windows.i586}-*-c1-clienttest, \
+  ${jprt.my.solaris.sparc}-*-c2-servertest, \
+  ${jprt.my.solaris.sparcv9}-*-c2-servertest, \
+  ${jprt.my.solaris.i586}-*-c2-servertest, \
+  ${jprt.my.solaris.x64}-*-c2-servertest, \
+  ${jprt.my.linux.i586}-*-c2-servertest, \
+  ${jprt.my.linux.x64}-*-c2-servertest, \
+  ${jprt.my.windows.i586}-*-c2-servertest, \
+  ${jprt.my.windows.x64}-*-c2-servertest
+
--- a/make/linux/makefiles/adlc.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/linux/makefiles/adlc.make	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 #
-# Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
 # 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,8 +61,8 @@
 CPPFLAGS += -DASSERT
 
 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
-# Suppress warnings (for now)
-CFLAGS_WARN = -w
+# Compiler warnings are treated as errors
+CFLAGS_WARN = -Werror
 CFLAGS += $(CFLAGS_WARN)
 
 OBJECTNAMES = \
--- a/make/linux/makefiles/gcc.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/linux/makefiles/gcc.make	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 #
-# Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -113,6 +113,11 @@
 
 OPT_CFLAGS/NOOPT=-O0
 
+# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. 
+ifneq "$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) = 3 \) \))" "0"
+OPT_CFLAGS/mulnode.o += -O0
+endif
+
 #------------------------------------------------------------------------
 # Linker flags
 
@@ -131,6 +136,14 @@
 # Enable linker optimization
 LFLAGS += -Xlinker -O1
 
+# If this is a --hash-style=gnu system, use --hash-style=both
+#   The gnu .hash section won't work on some Linux systems like SuSE 10.
+_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | grep -- '--hash-style=gnu')
+ifneq ($(_HAS_HASH_STYLE_GNU),)
+  LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
+endif
+LFLAGS += $(LDFLAGS_HASH_STYLE)
+
 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
 MAPFLAG = -Xlinker --version-script=FILENAME
 
@@ -158,3 +171,9 @@
 ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
 DEBUG_CFLAGS += -gstabs
 endif
+
+# DEBUG_BINARIES overrides everything, use full -g debug information
+ifeq ($(DEBUG_BINARIES), true)
+  DEBUG_CFLAGS = -g
+  CFLAGS += $(DEBUG_CFLAGS)
+endif
--- a/make/linux/makefiles/jsig.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/linux/makefiles/jsig.make	Tue Jul 28 13:50:07 2009 -0600
@@ -39,12 +39,17 @@
 # cause problems with interposing. See CR: 6466665
 # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
 
-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT
+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
+
+# DEBUG_BINARIES overrides everything, use full -g debug information
+ifeq ($(DEBUG_BINARIES), true)
+  JSIG_DEBUG_CFLAGS = -g
+endif
 
 $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
 	@echo Making signal interposition lib...
 	$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
-                         $(LFLAGS_JSIG) -o $@ $< -ldl
+                         $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $@ $< -ldl
 
 install_jsig: $(LIBJSIG)
 	@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
--- a/make/linux/makefiles/saproc.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/linux/makefiles/saproc.make	Tue Jul 28 13:50:07 2009 -0600
@@ -43,6 +43,11 @@
 
 DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
 
+# DEBUG_BINARIES overrides everything, use full -g debug information
+ifeq ($(DEBUG_BINARIES), true)
+  SA_DEBUG_CFLAGS = -g
+endif
+
 # if $(AGENT_DIR) does not exist, we don't build SA
 # also, we don't build SA on Itanium.
 
@@ -51,7 +56,7 @@
 	   $(MAKE) -f vm.make $(LIBSAPROC); \
 	fi
 
-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE))
+SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
 
 $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
 	$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
@@ -67,6 +72,7 @@
 	           -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family)    \
 	           $(SASRCFILES)                                        \
 	           $(SA_LFLAGS)                                         \
+	           $(SA_DEBUG_CFLAGS)                                   \
 	           -o $@                                                \
 	           -lthread_db
 
--- a/make/solaris/makefiles/adlc.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/adlc.make	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 #
-# Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
 # 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,6 +67,10 @@
 endif
 
 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
+# Compiler warnings are treated as errors
+ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
+  CFLAGS_WARN = +w -errwarn
+endif
 CFLAGS += $(CFLAGS_WARN)
 
 ifeq ("${Platform_compiler}", "sparcWorks")
--- a/make/solaris/makefiles/optimized.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/optimized.make	Tue Jul 28 13:50:07 2009 -0600
@@ -41,7 +41,7 @@
 endif
 
 # Workaround SS11 bug 6345274 (all platforms) (Fixed in SS11 patch and SS12)
-ifeq ($(COMPILER_REV_NUMERIC),508))
+ifeq ($(COMPILER_REV_NUMERIC),508)
 OPT_CFLAGS/ciTypeFlow.o = $(OPT_CFLAGS/O2)
 endif # COMPILER_REV_NUMERIC == 508
 
--- a/make/solaris/makefiles/reorder_COMPILER1_i486	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_COMPILER1_i486	Tue Jul 28 13:50:07 2009 -0600
@@ -3,207 +3,60 @@
 
 
 # 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_;
@@ -219,61 +72,36 @@
 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_;
@@ -282,13 +110,10 @@
 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_;
@@ -302,12 +127,9 @@
 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_;
@@ -316,14 +138,10 @@
 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_;
@@ -343,20 +161,13 @@
 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_;
@@ -366,15 +177,10 @@
 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__;
@@ -383,8 +189,6 @@
 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_;
@@ -395,46 +199,29 @@
 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_;
@@ -443,7 +230,6 @@
 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_;
@@ -452,7 +238,6 @@
 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_;
@@ -466,27 +251,18 @@
 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_;
@@ -496,52 +272,31 @@
 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_;
@@ -552,24 +307,18 @@
 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_;
@@ -578,34 +327,24 @@
 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_;
@@ -624,52 +363,33 @@
 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_;
@@ -682,117 +402,67 @@
 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_;
@@ -802,17 +472,9 @@
 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_;
@@ -830,9 +492,7 @@
 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_;
@@ -841,7 +501,6 @@
 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_;
@@ -861,7 +520,6 @@
 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_;
@@ -889,7 +547,6 @@
 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_;
@@ -944,11 +601,9 @@
 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_;
@@ -963,7 +618,6 @@
 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_;
@@ -978,12 +632,8 @@
 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_;
@@ -1001,36 +651,25 @@
 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_;
@@ -1061,7 +700,6 @@
 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_;
@@ -1075,19 +713,12 @@
 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;
@@ -1096,14 +727,11 @@
 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;
@@ -1113,23 +741,16 @@
 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__;
@@ -1143,67 +764,43 @@
 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__;
@@ -1221,63 +818,23 @@
 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_;
@@ -1289,25 +846,18 @@
 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_;
@@ -1320,30 +870,24 @@
 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;
@@ -1351,8 +895,6 @@
 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_;
@@ -1368,227 +910,118 @@
 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_;
@@ -1599,71 +1032,34 @@
 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__;
@@ -1672,54 +1068,23 @@
 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;
@@ -1734,29 +1099,14 @@
 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_;
@@ -1766,7 +1116,6 @@
 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_;
@@ -1778,41 +1127,26 @@
 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_;
@@ -1820,18 +1154,11 @@
 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_;
@@ -1843,20 +1170,8 @@
 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_;
@@ -1864,8 +1179,6 @@
 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_;
@@ -1873,8 +1186,6 @@
 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_;
@@ -1882,7 +1193,6 @@
 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_;
@@ -1890,21 +1200,12 @@
 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;
@@ -1912,9 +1213,7 @@
 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_;
@@ -1924,7 +1223,6 @@
 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__;
@@ -1932,38 +1230,19 @@
 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__;
@@ -1975,7 +1254,6 @@
 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_;
@@ -1992,22 +1270,13 @@
 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;
@@ -2018,16 +1287,12 @@
 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_;
@@ -2037,41 +1302,23 @@
 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;
@@ -2084,22 +1331,15 @@
 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;
@@ -2108,23 +1348,18 @@
 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__;
@@ -2134,16 +1369,9 @@
 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;
@@ -2159,13 +1387,8 @@
 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;
@@ -2178,11 +1401,8 @@
 text: .text%JVM_FindClassFromBootLoader;
 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__;
@@ -2193,19 +1413,10 @@
 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;
@@ -2222,7 +1433,6 @@
 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_;
@@ -2283,54 +1493,38 @@
 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_;
@@ -2344,7 +1538,6 @@
 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_;
@@ -2352,8 +1545,6 @@
 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;
@@ -2367,18 +1558,12 @@
 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_;
@@ -2386,45 +1571,26 @@
 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_;
@@ -2432,111 +1598,43 @@
 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_;
@@ -2546,7 +1644,6 @@
 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_;
@@ -2571,816 +1668,210 @@
 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_;
@@ -3389,145 +1880,80 @@
 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;
@@ -3535,110 +1961,34 @@
 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;
@@ -3646,10 +1996,7 @@
 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_;
@@ -3658,11 +2005,8 @@
 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;
@@ -3672,114 +2016,49 @@
 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_;
@@ -3809,12 +2088,8 @@
 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_;
@@ -3823,36 +2098,26 @@
 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_;
@@ -3860,16 +2125,12 @@
 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_;
@@ -3883,15 +2144,10 @@
 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_;
@@ -3902,18 +2158,14 @@
 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_;
@@ -3923,135 +2175,70 @@
 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_;
@@ -4061,24 +2248,16 @@
 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_;
@@ -4086,70 +2265,19 @@
 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;
@@ -4158,10 +2286,6 @@
 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;
@@ -4169,62 +2293,24 @@
 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_;
@@ -4232,19 +2318,12 @@
 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_;
@@ -4253,15 +2332,11 @@
 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_;
@@ -4273,42 +2348,21 @@
 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_;
@@ -4323,24 +2377,14 @@
 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_;
@@ -4355,100 +2399,46 @@
 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_;
@@ -4456,9 +2446,6 @@
 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__;
@@ -4469,14 +2456,11 @@
 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_;
@@ -4484,14 +2468,11 @@
 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_;
@@ -4502,10 +2483,6 @@
 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_;
@@ -4530,70 +2507,41 @@
 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_;
@@ -4601,16 +2549,10 @@
 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_;
@@ -4619,72 +2561,34 @@
 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;
@@ -4693,51 +2597,29 @@
 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_;
@@ -4753,45 +2635,9 @@
 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_;
@@ -4799,70 +2645,40 @@
 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;
@@ -4874,99 +2690,47 @@
 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_;
@@ -4977,11 +2741,8 @@
 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_;
@@ -4995,33 +2756,17 @@
 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_;
@@ -5030,22 +2775,15 @@
 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;
@@ -5053,19 +2791,15 @@
 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_;
@@ -5084,13 +2818,11 @@
 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_;
@@ -5100,205 +2832,86 @@
 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_;
@@ -5308,144 +2921,46 @@
 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_sparc	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_COMPILER1_sparc	Tue Jul 28 13:50:07 2009 -0600
@@ -4,45 +4,8 @@
 
 # Test Null
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_AllocTable.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_AllocTable_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CacheLocals.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CacheLocals_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Canonicalizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeGenerator.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeGenerator_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeStubs_sparc.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compilation.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_FrameMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_FrameMap_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_GraphBuilder.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_IR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Instruction.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_InstructionPrinter.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Items.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Items_sparc.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIRAssembler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIRAssembler_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIREmitter.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIREmitter_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIROptimizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Loops.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_MacroAssembler_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Optimizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RInfo_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RegAlloc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RegAlloc_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Runtime1.o;
-text: .text%__1cIiEntries2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Runtime1_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ScanBlocks.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueSet.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueStack.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeBlob.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
 text: .text%__1cICHeapObj2n6FI_pv_;
 text: .text%__1cCosGmalloc6FI_pv_;
@@ -50,55 +13,31 @@
 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_: compiledIC.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: deoptimization.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: frame.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: frame_sparc.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%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
 text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter_sparc.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: java.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
 text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cUGenericGrowableArray2t6Mii_v_;
 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_: klassVtable.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_: methodOop.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: nativeInst_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: nmethod.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: os_solaris.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: os_solaris_sparc.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.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_: safepoint.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: safepoint_solaris_sparc.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedRuntime.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vframeArray.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vtableStubs_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIROptimizer_sparc.o;
 text: .text%JNI_CreateJavaVM;
 text: .text%__1cCosUatomic_add_bootstrap6Fipoi_i_;
 text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
 text: .text%__1cMostream_init6F_v_;
 text: .text%__1cMoutputStream2t6Mi_v_;
 text: .text%__1cCosEinit6F_v_;
@@ -111,65 +50,41 @@
 text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
 text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
 text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
 text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
 text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
 text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-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%__1cJArgumentsMbuild_string6Fppcpkc_v_;
-text: .text%__1cSCommandLineFlagsExJboolAtPut6FnXCommandLineFlagWithType_i_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%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
 text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
 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%__1cCosHSolarisRmpss_sanity_check6F_v_;
 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%__1cCosHSolarisQsignal_sets_init6F_v_;
 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%__1cRis_error_reported6F_i_;
 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%__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%__1cCosZvm_allocation_granularity6F_i_;
@@ -183,11 +98,8 @@
 text: .text%__1cOThreadCritical2T6M_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%__1cMFlatProfilerJis_active6F_i_;
 text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
 text: .text%__1cCosScurrent_stack_base6F_pC_;
 text: .text%__1cCosScurrent_stack_size6F_I_;
@@ -203,16 +115,10 @@
 text: .text%__1cCosMvm_page_size6F_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%__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%__1cGThreadMis_VM_thread6kM_i_: thread.o;
-text: .text%__1cCosNcommit_memory6FpcI_i_;
-text: .text%__1cCosMguard_memory6FpcI_i_;
 text: .text%__1cMinit_globals6F_i_;
 text: .text%__1cPmanagement_init6F_v_;
 text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
@@ -220,23 +126,18 @@
 text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
 text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
 text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cFMutexElock6M_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%__1cCosYatomic_cmpxchg_bootstrap6Fipoii_i_;
-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%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_v_;
 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_ii1i_v_;
 text: .text%__1cJBytecodesNpd_initialize6F_v_;
 text: .text%__1cQclassLoader_init6F_v_;
 text: .text%__1cLClassLoaderKinitialize6F_v_;
@@ -244,49 +145,37 @@
 text: .text%__1cCosTnative_java_library6F_pv_;
 text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
 text: .text%bootstrap_flush_windows;
-text: .text%__1cCosPfence_bootstrap6F_v_;
 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%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
 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%__1cOClassPathEntry2t6M_v_;
 text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cICodeHeapHreserve6MIII_i_;
 text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cCosOreserve_memory6FIpc_1_;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cCosNcommit_memory6FpcII_i_;
 text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
 text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
 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%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: thread.o;
 text: .text%__1cICodeHeapLheader_size6F_I_;
 text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
 text: .text%__1cICodeHeapIallocate6MI_pv_;
 text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
 text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
 text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
 text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
@@ -300,7 +189,6 @@
 text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
 text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
 text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
 text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
 text: .text%__1cMStubCodeMark2T6M_v_;
 text: .text%__1cRAbstractAssemblerFflush6M_v_;
@@ -312,73 +200,41 @@
 text: .text%jio_snprintf;
 text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
 text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
-text: .text%__1cNStubGenerator2t6MpnKCodeBuffer_i_v_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorFalign6Mi_v_: stubGenerator_sparc.o;
 text: .text%__1cOMacroAssemblerKget_thread6M_v_;
 text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
 text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: relocInfo.o;
-text: .text%__1cKRelocationLunpack_data6M_v_: c1_Runtime1.o;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__: c1_Runtime1.o;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
 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%__1cHAddress2t6Mn0AJaddr_type_i_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: stubGenerator_sparc.o;
 text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
 text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: stubGenerator_sparc.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: assembler_sparc.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: assembler_sparc.o;
-text: .text%__1cOMacroAssemblerRload_ptr_contents6MrnHAddress_pnMRegisterImpl_i_v_: assembler_sparc.o;
 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%__1cNStubGeneratorXgenerate_atomic_cmpxchg6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerOcas_under_lock6MpnMRegisterImpl_22pCi_v_;
 text: .text%__1cNStubGeneratorTgenerate_atomic_add6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorbCgenerate_atomic_cmpxchg_long6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorOgenerate_fence6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerGmembar6MnJAssemblerQMembar_mask_bits__v_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbIgenerate_copy_words_aligned8_lower6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: 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%__1cJTraceTime2T6M_v_;
-text: .text%__1cNcarSpace_init6F_v_;
 text: .text%__1cNuniverse_init6F_i_;
 text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cLFileMapInfoKinitialize6M_i_;
-text: .text%__1cLFileMapInfoIvalidate6M_i_;
 text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cRClassPathZipEntryLis_jar_file6M_i_: classLoader.o;
 text: .text%__1cRClassPathZipEntryEname6M_pkc_: classLoader.o;
 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_;
@@ -386,32 +242,23 @@
 text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
 text: .text%__1cCosbDatomic_cmpxchg_long_bootstrap6Fxpoxx_x_;
 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%__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%__1cOGenerationSpecRn_covered_regions6kM_i_: collectorPolicy.o;
-text: .text%__1cNReservedSpace2t6MIIipc_v_;
 text: .text%__1cCosZattempt_reserve_memory_at6FIpc_1_;
 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%__1cOGenerationSpecEinit6MnNReservedSpace_ipnJGenRemSet__pnKGeneration__;
 text: .text%__1cQDefNewGeneration2t6MnNReservedSpace_Iipkc_v_;
 text: .text%__1cKGeneration2t6MnNReservedSpace_Ii_v_;
-text: .text%__1cIageTable2t6Mi_v_;
 text: .text%__1cFArenaEgrow6MI_pv_;
 text: .text%__1cFChunkJnext_chop6M_v_;
 text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
@@ -425,50 +272,31 @@
 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%__1cFSpaceKset_bottom6MpnIHeapWord__v_: space.o;
 text: .text%__1cJEdenSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cJEdenSpaceFclear6M_v_;
 text: .text%__1cFSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cPContiguousSpaceFclear6M_v_;
 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%__1cNReservedSpaceSpage_align_size_up6FI_I_;
-text: .text%__1cMVirtualSpaceJexpand_by6MI_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%__1cLFileMapInfoJmap_space6MinNReservedSpace_pnPContiguousSpace__i_;
 text: .text%__1cNReservedSpaceHrelease6M_v_;
-text: .text%__1cCosOrelease_memory6FpcI_i_;
-text: .text%__1cCosKmap_memory6FipkcIpcIii_3_;
 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%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-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%__1cUCompactingPermGenGenPinitialize_oops6F_v_;
 text: .text%__1cQSystemDictionaryVset_shared_dictionary6FpnPHashtableBucket_ii_v_;
 text: .text%__1cKDictionary2t6MipnPHashtableBucket_i_v_;
@@ -476,24 +304,19 @@
 text: .text%__1cUCompactingPermGenGenOserialize_oops6FpnTSerializeOopClosure__v_;
 text: .text%__1cLReadClosureGdo_tag6Mi_v_: restore.o;
 text: .text%__1cLReadClosureGdo_int6Mpi_v_: restore.o;
-text: .text%__1cLFileMapInfoLassert_mark6Fi_v_;
 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%__1cLReadClosureHreading6kM_i_: restore.o;
 text: .text%__1cLReadClosureGdo_ptr6MppnIHeapWord__v_: restore.o;
 text: .text%__1cLReadClosureGdo_ptr6Mppv_v_: restore.o;
 text: .text%__1cLReadClosureJdo_size_t6MpI_v_: restore.o;
-text: .text%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cLReadClosureGdo_oop6MppnHoopDesc__v_: restore.o;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
 text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
 text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cKBufferBlobIis_alive6kM_i_: codeBlob.o;
 text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
 text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
 text: .text%__1cICodeHeapKfind_start6kMpv_1_;
@@ -505,107 +328,53 @@
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
 text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
 text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cRInvocationCounterMreinitialize6Fi_v_;
 text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cICodeHeapJexpand_by6MI_i_;
 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%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
 text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
 text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
 text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerTdispatch_Lbyte_code6MnITosState_ppCii_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interp_masm_sparc.o;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: interp_masm_sparc.o;
 text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
 text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interpreter_sparc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCii_v_;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_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%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: assembler_sparc.o;
 text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
 text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_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%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
 text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerUstore_unaligned_long6MpnMRegisterImpl_2i_v_;
 text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerWstore_unaligned_double6MpnRFloatRegisterImpl_pnMRegisterImpl_i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
 text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interp_masm_sparc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
 text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
 text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cZInterpreterMacroAssemblerbDunlock_if_synchronized_method6MnITosState_ii_v_;
-text: .text%__1cOMacroAssemblerKbr_notnull6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
 text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerHbr_null6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
-text: .text%__1cOMacroAssemblerPcasx_under_lock6MpnMRegisterImpl_22pCi_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
 text: .text%__1cQRelocationHolderEplus6kMi_0_;
 text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: interpreter_sparc.o;
-text: .text%__1cZInterpreterMacroAssemblerHpop_ptr6MpnMRegisterImpl__v_;
 text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerNload_contents6MrnHAddress_pnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
 text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpnMRegisterImpl_pC2_v_;
 text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreter_sparc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
 text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
-text: .text%__1cUInterpreterGeneratorbCgenerate_check_compiled_code6MrnFLabel__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6MpnMRegisterImpl_22_v_;
 text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
 text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: interp_masm_sparc.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: interp_masm_sparc.o;
 text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MirnFLabel__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%__1cZInterpreterMacroAssemblerUadd_monitor_to_stack6MipnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
 text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
 text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
 text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
 text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
 text: .text%__1cUInterpreterGeneratorVrestore_native_result6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MinITosState__v_;
 text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-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%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
 text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
 text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
 text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
 text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
@@ -615,21 +384,14 @@
 text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
 text: .text%__1cNTemplateTableLaconst_null6F_v_;
 text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableGlconst6Fi_v_;
 text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: templateTable_sparc.o;
 text: .text%__1cNTemplateTableGdconst6Fi_v_;
 text: .text%__1cNTemplateTableGbipush6F_v_;
 text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
 text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
 text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cOMacroAssemblerVload_unaligned_double6MpnMRegisterImpl_ipnRFloatRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerTload_unaligned_long6MpnMRegisterImpl_i2_v_;
 text: .text%__1cNTemplateTableFiload6F_v_;
 text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
 text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
@@ -657,7 +419,6 @@
 text: .text%__1cNTemplateTableGiaload6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
 text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: interp_masm_sparc.o;
 text: .text%__1cNTemplateTableGlaload6F_v_;
 text: .text%__1cNTemplateTableGfaload6F_v_;
 text: .text%__1cNTemplateTableGdaload6F_v_;
@@ -672,17 +433,14 @@
 text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
 text: .text%__1cNTemplateTableLwide_lstore6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_f6MpnRFloatRegisterImpl__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%__1cZInterpreterMacroAssemblerFpop_d6MpnRFloatRegisterImpl__v_;
 text: .text%__1cNTemplateTableGastore6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_ptr6MpnMRegisterImpl_2_v_;
 text: .text%__1cNTemplateTableLwide_astore6F_v_;
 text: .text%__1cNTemplateTableGistore6Fi_v_;
 text: .text%__1cNTemplateTableGlstore6Fi_v_;
@@ -694,11 +452,8 @@
 text: .text%__1cNTemplateTableHfastore6F_v_;
 text: .text%__1cNTemplateTableHdastore6F_v_;
 text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
 text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: assembler_sparc.o;
 text: .text%__1cNTemplateTableHbastore6F_v_;
 text: .text%__1cNTemplateTableHcastore6F_v_;
 text: .text%__1cNTemplateTableHsastore6F_v_;
@@ -736,16 +491,11 @@
 text: .text%__1cNTemplateTableEiinc6F_v_;
 text: .text%__1cNTemplateTableJwide_iinc6F_v_;
 text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOMacroAssemblerCfb6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableElcmp6F_v_;
 text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_2222_v_;
 text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
-text: .text%__1cOMacroAssemblerJfloat_cmp6MiipnRFloatRegisterImpl_2pnMRegisterImpl__v_;
 text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
 text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cZInterpreterMacroAssemblerGif_cmp6MnJAssemblerJCondition_i_v_;
-text: .text%__1cNTemplateTableGbranch6Fii_v_;
 text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
@@ -762,27 +512,15 @@
 text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
 text: .text%__1cNTemplateTableMlookupswitch6F_v_;
 text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableXjvmti_post_field_access6Fiii_v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_v_;
 text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
 text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_22_v_;
-text: .text%__1cOMacroAssemblerGmembar6MnJAssemblerQMembar_mask_bits__v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableIgetfield6Fi_v_;
 text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
 text: .text%__1cNTemplateTableIputfield6Fi_v_;
 text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: templateTable_sparc.o;
 text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_2_v_;
 text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
 text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
@@ -790,7 +528,6 @@
 text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
 text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
 text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
 text: .text%__1cNTemplateTableE_new6F_v_;
 text: .text%__1cQGenCollectedHeapItop_addr6kM_ppnIHeapWord__;
@@ -802,7 +539,6 @@
 text: .text%__1cNTemplateTableInewarray6F_v_;
 text: .text%__1cNTemplateTableJanewarray6F_v_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
 text: .text%__1cNTemplateTableLarraylength6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
 text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
@@ -842,44 +578,29 @@
 text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
 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%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-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%__1cbBBlockOffsetArrayContigSpaceLalloc_block6MpnIHeapWord_2_v_: blockOffsetTable.o;
 text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
 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%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
-text: .text%__1cFMutexElock6MpnGThread__v_;
 text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
 text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
 text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
 text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: systemDictionary.o;
 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%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
 text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceKlass.o;
 text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
 text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
 text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
 text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
@@ -889,124 +610,60 @@
 text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
 text: .text%__1cMObjectLocker2T6M_v_;
 text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
 text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
 text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
 text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cKSharedHeapYpermanent_object_iterate6MpnNObjectClosure__v_: genCollectedHeap.o;
-text: .text%__1cHPermGenOobject_iterate6MpnNObjectClosure__v_: 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%__1cFKlassMoop_is_klass6kM_i_: objArrayKlass.o;
 text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceRefKlass.o;
 text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
 text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
 text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
 text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
 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%__1cVverificationType_init6F_v_;
-text: .text%__1cOcompiler1_init6F_v_;
-text: .text%__1cKSharedInfoKset_stack06Fi_v_;
-text: .text%__1cKSharedInfoLset_regName6F_v_;
 text: .text%__1cMRegisterImplEname6kM_pkc_;
 text: .text%__1cRFloatRegisterImplEname6kM_pkc_;
-text: .text%__1cIRegAllocYinit_register_allocation6F_v_;
 text: .text%__1cIFrameMapEinit6F_v_;
-text: .text%__1cKc1_RegMaskKinit_masks6Fi_v_;
-text: .text%__1cFRInfoMset_long_reg6MkpnMRegisterImpl_k2_v_;
-text: .text%__1cIFrameMapLcpu_reg2rnr6FpnMRegisterImpl__i_;
-text: .text%__1cFRInfoMset_word_reg6MkpnMRegisterImpl__v_;
-text: .text%__1cFRInfoNset_float_reg6MrkpnRFloatRegisterImpl__v_;
-text: .text%__1cFRInfoOset_double_reg6MrkpnRFloatRegisterImpl__v_;
-text: .text%__1cIFrameMapLcpu_rnr2reg6Fi_pnMRegisterImpl__;
-text: .text%__1cIFrameMapXis_caller_save_register6FpnMRegisterImpl__i_;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_FrameMap_sparc.o;
-text: .text%__1cNc1_AllocTableLinit_tables6F_v_;
 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%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
 text: .text%__1cJOopMapSet2t6M_v_;
 text: .text%__1cOMacroAssemblerNsave_frame_c16Mi_v_;
-text: .text%__1cTsave_live_registers6FpnOMacroAssembler_i_pnGOopMap__: c1_Runtime1_sparc.o;
 text: .text%__1cGOopMap2t6Mii_v_;
 text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cQCompressedStream2t6MpCi_v_;
-text: .text%__1cGOopMapQset_callee_saved6MnHOptoRegEName_ii2_v_;
-text: .text%__1cGOopMapHset_xxx6MnHOptoRegEName_nLOopMapValueJoop_types_ii2_v_;
-text: .text%__1cIFrameMapLfpu_regname6Fi_nHOptoRegEName__;
-text: .text%__1cKRelocationJpack_data6M_i_: c1_Runtime1.o;
 text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MiipnGOopMap__v_;
 text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
 text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
 text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-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_: c1_Runtime1.o;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCi_v_;
 text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
 text: .text%__1cOAbstractICachePinvalidate_word6FpC_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%__1cJOopMapSetHcopy_to6MpC_v_;
 text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cIRuntime1Rgenerate_code_for6Fn0AGStubID_pnNStubAssembler_pi_pnJOopMapSet__;
-text: .text%__1cNStubAssemblerIset_info6Mpkci_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: c1_Runtime1_sparc.o;
 text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC2_i_;
 text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pCi_i_;
-text: .text%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
 text: .text%__1cOMacroAssemblerPget_vm_result_26MpnMRegisterImpl__v_;
-text: .text%__1cIRuntime1Ygenerate_exception_throw6FpnNStubAssembler_pCpnMRegisterImpl__pnJOopMapSet__;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: c1_Runtime1_sparc.o;
 text: .text%__1cOMacroAssemblerLtlab_refill6MrnFLabel_22_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: assembler_sparc.o;
 text: .text%__1cOMacroAssemblerNeden_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
 text: .text%__1cOMacroAssemblerNtlab_allocate6MpnMRegisterImpl_2i2rnFLabel__v_;
 text: .text%__1cRC1_MacroAssemblerRinitialize_object6MpnMRegisterImpl_22i22_v_;
-text: .text%__1cRC1_MacroAssemblerRinitialize_header6MpnMRegisterImpl_222_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: c1_MacroAssembler_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: c1_MacroAssembler_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: c1_Runtime1_sparc.o;
 text: .text%__1cRC1_MacroAssemblerPinitialize_body6MpnMRegisterImpl_2_v_;
 text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC22_i_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: c1_Runtime1_sparc.o;
 text: .text%__1cIRuntime1Iblob_for6Fn0AGStubID__pnICodeBlob__;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: c1_Runtime1_sparc.o;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: c1_Runtime1_sparc.o;
-text: .text%__1cIiEntries2t6Miiii_v_;
 text: .text%__1cIRuntime1Rgenerate_patching6FpnNStubAssembler_pC_pnJOopMapSet__;
-text: .text%__1cIRuntime1Qgenerate_handler6FpnNStubAssembler_pCi_pnJOopMapSet__;
 text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
 text: .text%__1cQvtableStubs_init6F_v_;
 text: .text%__1cWInlineCacheBuffer_init6F_v_;
@@ -1015,47 +672,26 @@
 text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
 text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
 text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_v_;
-text: .text%__1cXonStackReplacement_init6F_v_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
-text: .text%__1cUGenericGrowableArrayPraw_at_put_grow6MipknEGrET_3_v_;
 text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cSuniverse_post_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%__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%__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%__1cQGenCollectedHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapMmem_allocate6MIii_pnIHeapWord__;
-text: .text%__1cbCTwoGenerationCollectorPolicyRmem_allocate_work6MIii_pnIHeapWord__;
-text: .text%__1cQDefNewGenerationPshould_allocate6MIii_i_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationMpar_allocate6MIii_pnIHeapWord__: defNewGeneration.o;
 text: .text%__1cJEdenSpaceMpar_allocate6MI_pnIHeapWord__;
 text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
 text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_ipnGThread__pnHoopDesc__;
 text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__: cardTableModRefBS.o;
 text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
 text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
 text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
 text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
 text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
 text: .text%__1cMstringStream2t6MI_v_;
 text: .text%__1cMoutputStreamFprint6MpkcE_v_;
 text: .text%__1cMstringStreamFwrite6MpkcI_v_;
@@ -1066,7 +702,6 @@
 text: .text%__1cMstringStream2T6M_v_;
 text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
 text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
 text: .text%__1cbEinitialize_converter_functions6F_v_;
 text: .text%__1cQGenCollectedHeapIcapacity6kM_I_;
 text: .text%__1cQDefNewGenerationIcapacity6kM_I_;
@@ -1077,134 +712,78 @@
 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%__1cQDefNewGenerationEkind6M_nKGenerationEName__: defNewGeneration.o;
-text: .text%__1cTContiguousSpacePool2t6MpnPContiguousSpace_pkcnKMemoryPoolIPoolType_Ii_v_;
-text: .text%__1cbBSurvivorContiguousSpacePool2t6MpnQDefNewGeneration_pkcnKMemoryPoolIPoolType_Ii_v_;
 text: .text%__1cRTenuredGenerationEkind6M_nKGenerationEName__: tenuredGeneration.o;
-text: .text%__1cOGenerationPool2t6MpnKGeneration_pkcnKMemoryPoolIPoolType_i_v_;
 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%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
 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%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_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%__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%__1cIVMThreadMis_VM_thread6kM_i_: vmThread.o;
 text: .text%__1cIVMThreadDrun6M_v_;
 text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
 text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cHMonitorGnotify6M_i_;
 text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
 text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
 text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
 text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
 text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cMelapsedTimerFstart6M_v_;
 text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
 text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
-text: .text%__1cIRuntime1Mientries_for6FnMmethodHandle__pnIiEntries__;
 text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
-text: .text%__1cNmethodOopDescLis_accessor6kM_i_;
-text: .text%__1cNmethodOopDescMintrinsic_id6kM_n0ALIntrinsicId__;
 text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
 text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlass.o;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
 text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
 text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
 text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__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%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__i_;
 text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
 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%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
 text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: symbolKlass.o;
 text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
 text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
 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%__1cNmethodOopDescPis_final_method6kM_i_;
 text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
 text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
 text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
 text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreterRT_sparc.o;
 text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
 text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
 text: .text%jni_RegisterNatives: jni.o;
@@ -1216,16 +795,10 @@
 text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_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%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
 text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
 text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
 text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlass.o;
 text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
 text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
 text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
@@ -1234,44 +807,26 @@
 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%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: klass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: klass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: objArrayKlass.o;
 text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlass.o;
 text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
 text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
 text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
 text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
 text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: objArrayKlass.o;
 text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
 text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
 text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
 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%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
 text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
 text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__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%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
 text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
 text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
@@ -1279,31 +834,16 @@
 text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
 text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
 text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
 text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
 text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: c1_Runtime1_sparc.o;
 text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
 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%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interpreterRT_sparc.o;
 text: .text%JVM_DoPrivileged;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_: methodKlass.o;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
-text: .text%__1cFframeUis_interpreted_frame6kM_i_;
 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%__1cFframeZsender_with_pc_adjustment6kMpnLRegisterMap_pnICodeBlob_i_0_;
 text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
 text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
 text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
@@ -1314,7 +854,6 @@
 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_;
@@ -1328,21 +867,13 @@
 text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
 text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
 text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: c1_Runtime1_sparc.o;
 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%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_: typeArrayKlass.o;
 text: .text%JVM_GetStackAccessControlContext;
 text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
 text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: codeBlob.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: codeBlob.o;
-text: .text%__1cFframeOis_first_frame6kM_i_;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
 text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
 text: .text%JVM_GetInheritedAccessControlContext;
 text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
@@ -1351,29 +882,18 @@
 text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
 text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
 text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceRefKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceRefKlass.o;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: c1_Runtime1_sparc.o;
 text: .text%JVM_IsThreadAlive;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: c1_Runtime1_sparc.o;
 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%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
 text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: c1_Runtime1_sparc.o;
 text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
 text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
@@ -1382,26 +902,18 @@
 text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
 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%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%jni_NewStringUTF: jni.o;
 text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
 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%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
 text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
 text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
 text: .text%jni_DeleteLocalRef: jni.o;
 text: .text%jio_vsnprintf;
 text: .text%jni_EnsureLocalCapacity;
@@ -1412,32 +924,20 @@
 text: .text%jni_NewString: jni.o;
 text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
 text: .text%JVM_InitProperties;
-text: .text%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
 text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
 text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
-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%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlass.o;
 text: .text%JVM_RegisterUnsafeMethods;
 text: .text%JVM_IsArrayClass;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: typeArrayKlass.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: c1_Runtime1_sparc.o;
 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%__1cOJavaAssertionsHenabled6Fpkci_i_;
 text: .text%JVM_InternString;
 text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
 text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
 text: .text%JVM_NanoTime;
 text: .text%__1cCosNjavaTimeNanos6F_x_;
 text: .text%JVM_GetCallerClass;
@@ -1445,7 +945,6 @@
 text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
 text: .text%JVM_GetClassDeclaredFields;
 text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
 text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
 text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
 text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
@@ -1458,18 +957,12 @@
 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%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
 text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
 text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
 text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
 text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
 text: .text%Unsafe_ObjectFieldOffset;
@@ -1485,13 +978,7 @@
 text: .text%jni_GetStaticFieldID: jni.o;
 text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
 text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceRefKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlass.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%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: arrayKlass.o;
 text: .text%jni_GetStringUTFLength: jni.o;
 text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
 text: .text%__1cHUNICODELutf8_length6FpHi_i_;
@@ -1503,11 +990,8 @@
 text: .text%JVM_FindClassFromBootLoader;
 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%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
 text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
@@ -1517,12 +1001,7 @@
 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;
@@ -1542,57 +1021,33 @@
 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%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
 text: .text%__1cFVTuneQstart_class_load6F_v_;
 text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
 text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
 text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
 text: .text%__1cPClassFileStream2t6MpCipc_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%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
 text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
 text: .text%__1cPClassFileStreamHskip_u16MipnGThread__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%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-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%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
 text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-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%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
 text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
 text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
 text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
 text: .text%__1cRInvocationCounterEinit6M_v_;
 text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
@@ -1600,13 +1055,9 @@
 text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
 text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
 text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
 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%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
 text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
 text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
@@ -1619,23 +1070,16 @@
 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%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
 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%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
 text: .text%__1cSThreadProfilerMark2T6M_v_;
 text: .text%__1cFVTuneOend_class_load6F_v_;
 text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
 text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
 text: .text%JVM_MaxMemory;
 text: .text%__1cQGenCollectedHeapMmax_capacity6kM_I_;
 text: .text%__1cQDefNewGenerationMmax_capacity6kM_I_;
@@ -1652,12 +1096,10 @@
 text: .text%jni_GetObjectField: jni.o;
 text: .text%jni_GetStringCritical: jni.o;
 text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_x_;
 text: .text%__1cQSimpleCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__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%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
 text: .text%JVM_LoadLibrary;
 text: .text%JVM_FindLibraryEntry;
@@ -1668,13 +1110,11 @@
 text: .text%JVM_FindSignal;
 text: .text%JVM_RegisterSignal;
 text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
 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%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: jniFastGetField_sparc.o;
 text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
 text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
 text: .text%__1cVjni_GetByteField_addr6F_pC_;
@@ -1688,7 +1128,6 @@
 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%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: jniFastGetField_sparc.o;
 text: .text%__1cWjni_GetFloatField_addr6F_pC_;
 text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
 text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
@@ -1700,44 +1139,32 @@
 text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
 text: .text%jni_SetObjectArrayElement: jni.o;
 text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
 text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cLRegisterMapFclear6Mpi_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%__1cHThreadsDadd6FpnKJavaThread_i_v_;
 text: .text%__1cICompiler2t6M_v_;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
 text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_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%__1cVcheck_pending_signals6Fi_i_: os_solaris.o;
 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%__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%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_: lowMemoryDetector.o;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: lowMemoryDetector.o;
 text: .text%__1cLStatSamplerGengage6F_v_;
 text: .text%__1cCosRelapsed_frequency6F_x_;
 text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
@@ -1745,162 +1172,77 @@
 text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
 text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
 text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cUGenericGrowableArrayNraw_appendAll6Mpk0_v_;
 text: .text%__1cJTimeStampMmilliseconds6kM_x_;
 text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
 text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
 text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
 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%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
-text: .text%__1cNCompileBrokerTwait_for_completion6FpnLCompileTask__pnHnmethod__;
 text: .text%__1cCosPhint_no_preempt6F_v_;
 text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: lowMemoryDetector.o;
 text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
 text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-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%__1cIciObjectJset_ident6MI_v_;
 text: .text%__1cGciType2t6MnJBasicType__v_;
 text: .text%__1cIciObject2t6M_v_;
 text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cPciObjectFactoryLis_found_at6MipnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
 text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cKSharedHeapPis_in_permanent6kMpkv_i_: genCollectedHeap.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: klassKlass.o;
 text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: klassKlass.o;
-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%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_: symbolKlass.o;
 text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
 text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodKlass.o;
 text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-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%__1cKklassKlassMoop_is_klass6kM_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%__1cKklassKlassMoop_is_klass6kM_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%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
-text: .text%__1cIciObjectGequals6Mp0_i_;
 text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
 text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: instanceKlass.o;
-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%__1cFKlassMoop_is_klass6kM_i_: methodKlass.o;
 text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
 text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
 text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
 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%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
 text: .text%__1cICompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cIRuntime1Pnew_code_buffer6F_pnKCodeBuffer__;
-text: .text%__1cLCompilation2t6MpnQAbstractCompiler_pnFciEnv_pnIciMethod_ipnRC1_MacroAssembler__v_;
-text: .text%__1cTExceptionRangeTable2t6Mi_v_;
 text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
 text: .text%__1cLCompilationOcompile_method6M_v_;
 text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
 text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cLCompilationbBis_optimized_library_method6kM_i_;
-text: .text%__1cLCompilationTcompile_java_method6MpnLCodeOffsets__i_;
-text: .text%__1cIciMethodMall_oop_maps6M_pnKciLocalMap__;
-text: .text%__1cSciGenerateLocalMap2t6MpnFArena_nMmethodHandle__v_;
 text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__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%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
-text: .text%__1cSciGenerateLocalMapRpossible_gc_point6MpnOBytecodeStream__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%__1cRRawBytecodeStreamMset_interval6Mii_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%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
 text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
 text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
 text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
@@ -1919,234 +1261,119 @@
 text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
 text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
 text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
 text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
 text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_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%__1cSciGenerateLocalMapUfill_stackmap_epilog6M_v_: ciOopMap.o;
-text: .text%__1cSciGenerateLocalMapOfill_init_vars6MpnNGrowableArray4Ci___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%__1cNWordSizeArray2t6Mki1_v_: c1_IR.o;
 text: .text%__1cJXHandlers2t6MpnIciMethod__v_;
 text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cIciMethodVhas_balanced_monitors6M_i_;
 text: .text%__1cLCompilationTdebug_info_recorder6kM_pnYDebugInformationRecorder__;
 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%__1cQBlockListBuilderMnew_block_at6MinKBlockBeginEFlag__p1_;
 text: .text%__1cKValueStack2t6MpnHIRScope_ii_v_;
-text: .text%__1cKValueArray2t6MkikpnLInstruction__v_: c1_ValueStack.o;
-text: .text%__1cJLocalSlotIfor_type6MpnJValueType_ii_pnFLocal__: c1_IR.o;
-text: .text%__1cKObjectTypeDtag6kM_nIValueTag__: c1_ValueType.o;
 text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
 text: .text%__1cMas_ValueType6FnJBasicType__pnJValueType__;
-text: .text%__1cMGraphBuilder2t6MpnLCompilation_pnHIRScope_pnJBlockList_pnKBlockBegin__v_;
-text: .text%__1cOExceptionScope2t6M_v_;
 text: .text%__1cIValueMap2t6M_v_;
 text: .text%__1cNResourceArrayGexpand6MIiri_v_;
 text: .text%__1cIValueMapIkill_all6M_v_;
 text: .text%__1cKValueStackEcopy6M_p0_;
 text: .text%__1cMGraphBuilderbBiterate_bytecodes_for_block6Mi_pnIBlockEnd__;
-text: .text%__1cQciBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_GraphBuilder.o;
 text: .text%__1cMGraphBuilderJScopeDataIblock_at6Mi_pnKBlockBegin__;
 text: .text%__1cMGraphBuilderKload_local6MpnJValueType_i_v_;
-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%__1cKValueStackDpop6MpnJValueType__pnLInstruction__: c1_GraphBuilder.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%__1cJValueTypeOas_IntConstant6M_pnLIntConstant__: c1_ValueType.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%__1cKValueStackNpin_stack_all6MnLInstructionJPinReason__v_;
-text: .text%__1cKBlockBeginItry_join6MpnKValueStack__i_;
-text: .text%__1cKValueStack2t6Mp0_v_;
-text: .text%__1cKValueStackEinit6Mp0_v_;
 text: .text%__1cMGraphBuilderJScopeDataQadd_to_work_list6MpnKBlockBegin__v_;
 text: .text%__1cMGraphBuilderLinstance_of6Mi_v_;
-text: .text%__1cQciBytecodeStreamJget_klass6kM_pnHciKlass__;
-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%__1cKInstanceOfFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cNCanonicalizerNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_GraphBuilder.o;
 text: .text%__1cKValueStackMclear_locals6M_v_;
-text: .text%__1cKValueStackZpin_stack_for_state_split6M_v_;
-text: .text%__1cJTypeCheckIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cOExceptionScopeEcopy6M_p0_;
-text: .text%__1cMGraphBuilderOdirect_compare6MpnHciKlass__i_;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_: ciInstanceKlass.o;
 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%__1cLInstructionNas_StateSplit6M_pnKStateSplit__: c1_Instruction.o;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_Instruction.o;
-text: .text%__1cIConstantIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cLInstructionMas_CompareOp6M_pnJCompareOp__: c1_GraphBuilder.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%__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%__1cMGraphBuilderKcheck_cast6Mi_v_;
-text: .text%__1cJCheckCastFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cNCanonicalizerMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cMGraphBuilderLstore_local6MpnKValueStack_pnLInstruction_pnJValueType_ii_v_;
-text: .text%__1cKObjectTypeNas_ObjectType6M_p0_: c1_ValueType.o;
-text: .text%__1cJValueTypeOas_AddressType6M_pnLAddressType__: c1_ValueType.o;
-text: .text%__1cJLocalSlot2t6M_v_;
-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%__1cKObjectTypeEsize6kM_i_: c1_ValueType.o;
 text: .text%__1cMGraphBuilderMaccess_field6MnJBytecodesECode__v_;
-text: .text%__1cQciBytecodeStreamJget_field6kM_pnHciField__;
 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%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
 text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
 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%__1cLAccessFieldIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cHIntTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cJValueTypeNas_ObjectType6M_pnKObjectType__: c1_ValueType.o;
-text: .text%__1cHIntTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cKValueStackVis_same_across_scopes6Mp0_i_;
 text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__: ciTypeArrayKlass.o;
-text: .text%__1cIciObjectMis_obj_array6M_i_: ciInstanceKlass.o;
 text: .text%__1cMGraphBuilderIstack_op6MnJBytecodesECode__v_;
 text: .text%__1cMGraphBuilderNarithmetic_op6MpnJValueType_nJBytecodesECode_pnKValueStack__v_;
 text: .text%__1cJValueTypeEmeet6kMp0_1_;
-text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_ValueType.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%__1cMArithmeticOpEhash6kM_i_: c1_Instruction.o;
 text: .text%__1cMArithmeticOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cLInstructionNas_InstanceOf6M_pnKInstanceOf__: c1_GraphBuilder.o;
 text: .text%__1cMGraphBuilderJincrement6M_v_;
 text: .text%__1cMGraphBuilderMload_indexed6MnJBasicType__v_;
 text: .text%__1cLArrayLengthFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cNCanonicalizerOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_GraphBuilder.o;
 text: .text%__1cLArrayLengthEhash6kM_i_: c1_GraphBuilder.o;
 text: .text%__1cLArrayLengthEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cLAccessArrayIcan_trap6kM_i_: 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%__1cLAccessArrayIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cIConstantIis_equal6kMpnLInstruction__i_;
 text: .text%__1cIConstantLas_Constant6M_p0_: c1_Instruction.o;
-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%__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%__1cKBlockBeginQiterate_preorder6MrnJboolArray_pnMBlockClosure__v_;
 text: .text%__1cCIfFas_If6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeKas_IntType6M_pnHIntType__: 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%__1cHIntTypeKas_IntType6M_p0_: c1_ValueType.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_Instruction.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%__1cNValueSetArray2t6MkikpnIValueSet__v_: c1_Optimizer.o;
 text: .text%__1cTNullCheckEliminatorLiterate_one6MpnKBlockBegin__v_;
 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%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_Canonicalizer.o;
 text: .text%__1cEGotoFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
 text: .text%__1cQNullCheckVisitorHdo_Goto6MpnEGoto__v_;
-text: .text%__1cLInstructionMas_NullCheck6M_pnJNullCheck__: c1_GraphBuilder.o;
 text: .text%__1cCIfPinput_values_do6MpFppnLInstruction__v_v_: c1_Canonicalizer.o;
 text: .text%__1cTNullCheckEliminatorIdo_value6FppnLInstruction__v_;
-text: .text%__1cLAccessLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cFLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cFLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorIdo_Local6MpnFLocal__v_;
-text: .text%__1cQNullCheckVisitorMdo_LoadLocal6MpnJLoadLocal__v_;
 text: .text%__1cQNullCheckVisitorFdo_If6MpnCIf__v_;
-text: .text%__1cLInstructionMas_NullCheck6M_pnJNullCheck__: c1_Instruction.o;
 text: .text%__1cGReturnPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cIConstantPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorLdo_Constant6MpnIConstant__v_;
@@ -2154,461 +1381,83 @@
 text: .text%__1cJTypeCheckPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorNdo_InstanceOf6MpnKInstanceOf__v_;
 text: .text%__1cQNullCheckVisitorMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cKStoreLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorNdo_StoreLocal6MpnKStoreLocal__v_;
 text: .text%__1cLAccessFieldPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorMdo_LoadField6MpnJLoadField__v_;
 text: .text%__1cTNullCheckEliminatorShandle_AccessField6MpnLAccessField__v_;
-text: .text%__1cGBitMapbCset_intersection_with_result6M0_i_;
-text: .text%__1cDOp2Pinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorPdo_ArithmeticOp6MpnMArithmeticOp__v_;
 text: .text%__1cLAccessArrayPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorOdo_ArrayLength6MpnLArrayLength__v_;
 text: .text%__1cTNullCheckEliminatorShandle_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cNAccessIndexedPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorOdo_LoadIndexed6MpnLLoadIndexed__v_;
 text: .text%__1cTNullCheckEliminatorShandle_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cCIRTcompute_locals_size6M_v_;
-text: .text%__1cHIRScopePallocate_locals6MipnMWordSizeList__i_;
-text: .text%__1cHIRScopePargument_locals6M_pnJLocalList__;
-text: .text%__1cCIRNcompute_loops6M_v_;
-text: .text%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
-text: .text%__1cKLoopFinder2t6MpnCIR_i_v_;
-text: .text%__1cSBlockLoopInfoArray2t6MkikpnNBlockLoopInfo__v_: c1_Loops.o;
-text: .text%__1cKLoopFinderNcompute_loops6Mi_pnILoopList__;
-text: .text%__1cKLoopFinderScompute_dominators6MpnJboolArray__v_;
-text: .text%__1cGBitMapGat_put6MIi_v_;
-text: .text%__1cRCreateInfoClosureIblock_do6MpnKBlockBegin__v_: c1_Loops.o;
-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%__1cKLoopFinderSgather_loop_blocks6MpnILoopList__v_;
-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%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_GraphBuilder.o;
-text: .text%__1cLAccessLocalOas_AccessLocal6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionNas_StoreLocal6M_pnKStoreLocal__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionOas_AccessLocal6M_pnLAccessLocal__: c1_Instruction.o;
-text: .text%__1cLInstructionKas_Convert6M_pnHConvert__: c1_Instruction.o;
-text: .text%__1cLInstructionPas_ArithmeticOp6M_pnMArithmeticOp__: c1_Instruction.o;
 text: .text%__1cMArithmeticOpPas_ArithmeticOp6M_p0_: c1_Instruction.o;
-text: .text%__1cKStoreLocalNas_StoreLocal6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionOas_AccessLocal6M_pnLAccessLocal__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionKas_Convert6M_pnHConvert__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionPas_ArithmeticOp6M_pnMArithmeticOp__: c1_GraphBuilder.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%__1cKLoopFinderPfind_loop_exits6MpnKBlockBegin_pnELoop__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%__1cCIRMcompute_code6M_v_;
-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%__1cLInstructionGnegate6Fn0AJCondition__1_;
 text: .text%__1cJBlockListJblocks_do6MpFpnKBlockBegin__v_v_;
-text: .text%__1cQUseCountComputerRcompute_use_count6FpnKBlockBegin__v_: c1_IR.o;
 text: .text%__1cQUseCountComputerQupdate_use_count6FppnLInstruction__v_: c1_IR.o;
 text: .text%__1cKStateSplitPstate_values_do6MpFppnLInstruction__v_v_;
 text: .text%__1cKValueStackJvalues_do6MpFppnLInstruction__v_v_;
-text: .text%__1cNCachingChangePinput_values_do6MpFppnLInstruction__v_v_: c1_Loops.o;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_Loops.o;
 text: .text%__1cFLocalIas_Local6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_IR.o;
 text: .text%__1cLCompilationIemit_lir6M_v_;
-text: .text%__1cIFrameMap2t6Mi_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%__1cNCodeGenerator2t6MpnIValueGen_pnRValueGenInvariant__v_;
-text: .text%__1cNCodeGeneratorIblock_do6MpnKBlockBegin__v_;
-text: .text%__1cLLIR_EmitterMmust_bailout6kM_i_;
-text: .text%__1cLLIR_EmitterLstart_block6MpnKBlockBegin__v_;
-text: .text%__1cILIR_List2t6MpnLCompilation__v_;
-text: .text%__1cLLIR_EmitterQbind_block_entry6MpnKBlockBegin__v_;
-text: .text%__1cILIR_ListSbranch_destination6MpnFLabel__v_: c1_LIREmitter.o;
-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%__1cLCompilationNget_init_vars6M_pnIintStack__;
-text: .text%__1cLLIR_EmitterJstd_entry6MpnHIRScope_pnIintStack_nFRInfo_5_v_;
-text: .text%__1cILIR_ListLalign_entry6M_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListWunverified_entry_point6MnFRInfo_1_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListUverified_entry_point6M_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListLbuild_frame6M_v_: c1_LIREmitter.o;
-text: .text%__1cLCompilationVvalue_stack2lir_stack6MpnKValueStack__pnNGrowableArray4CpnLLIR_OprDesc____;
-text: .text%__1cNCodeGeneratorPblock_do_epilog6MpnKBlockBegin__v_;
 text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Canonicalizer.o;
-text: .text%__1cIValueGenHdo_Goto6MpnEGoto__v_;
-text: .text%__1cIValueGenLmove_to_phi6MpnKValueStack_i_i_;
-text: .text%__1cIValueGenWgoto_default_successor6MpnIBlockEnd_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenFdo_If6MpnCIf__v_;
-text: .text%__1cIValueGenEwalk6MpnLInstruction__v_;
-text: .text%__1cIValueGenMdo_LoadLocal6MpnJLoadLocal__v_;
-text: .text%__1cIValueGenJload_item6MpnEItem__v_;
-text: .text%__1cEItemGupdate6M_v_;
-text: .text%__1cIValueGenSfpu_fanout_handled6MpnEItem__i_;
-text: .text%__1cEItemEtype6kM_pnJValueType__: c1_Items.o;
-text: .text%__1cIRegAllocMhas_free_reg6kMpnJValueType__i_;
-text: .text%__1cNc1_AllocTableMhas_one_free6kM_i_;
-text: .text%__1cIRegAllocNget_lock_temp6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cIRegAllocMget_free_reg6MpnJValueType__nFRInfo__;
-text: .text%__1cNc1_AllocTableIget_free6M_i_;
-text: .text%__1cJRInfo2RegFdo_it6M_v_: c1_RegAlloc.o;
-text: .text%__1cHLockRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-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%__1cNc1_AllocTableIset_free6Mi_v_;
-text: .text%__1cIValueGenNset_no_result6MpnLInstruction__v_;
-text: .text%__1cLLIR_EmitterFif_op6MinLInstructionJCondition_pnLLIR_OprDesc_4pnKBlockBegin_66pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListDcmp6MnMLIR_OpBranchNLIR_Condition_pnLLIR_OprDesc_4pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListGbranch6MnMLIR_OpBranchNLIR_Condition_pnKBlockBegin__v_;
-text: .text%__1cIValueGenNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cIValueGenVspill_values_on_stack6MpnKValueStack_nFRInfo_i_v_;
-text: .text%__1cIValueGenWrlock_result_with_hint6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cIValueGenFrlock6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cIRegAllocMget_lock_reg6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cLLIR_EmitterNinstanceof_op6MpnLLIR_OprDesc_2pnHciKlass_nFRInfo_5ipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListKinstanceof6MpnLLIR_OprDesc_2pnHciKlass_22ipnMCodeEmitInfo__v_;
-text: .text%__1cIRegAllocHset_reg6MnFRInfo_ipnLInstruction__v_;
-text: .text%__1cGSetRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cEItemNset_from_item6Mpk0_v_: c1_Items.o;
-text: .text%__1cIValueGenLdo_Constant6MpnIConstant__v_;
 text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_Canonicalizer.o;
-text: .text%__1cIValueGenUcheck_float_register6MpnEItem__v_;
-text: .text%__1cEItemRget_jint_constant6kM_i_;
-text: .text%__1cIValueGenOdont_load_item6MpnEItem__v_;
-text: .text%__1cIRegAllocLis_free_reg6kMnFRInfo__i_;
-text: .text%__1cJIsFreeRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cNc1_AllocTableHis_free6kMi_i_;
 text: .text%__1cLLIR_OprFactKvalue_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cJLIR_ConstEtype6kM_nJBasicType__: c1_CacheLocals.o;
-text: .text%__1cJLIR_ConstLas_constant6M_p0_: c1_CacheLocals.o;
-text: .text%__1cIValueGenMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cMCodeEmitInfo2t6MpnLLIR_Emitter_ipnIintStack_pnKValueStack_pnOExceptionScope_pnPRInfoCollection__v_;
 text: .text%__1cKValueStackMcaller_state6kM_p0_;
-text: .text%__1cILIR_ListJcheckcast6MpnLLIR_OprDesc_2pnHciKlass_22ipnMCodeEmitInfo_6pnICodeStub__v_;
-text: .text%__1cIValueGenNdo_StoreLocal6MpnKStoreLocal__v_;
-text: .text%__1cEItemRhandle_float_kind6M_v_;
-text: .text%__1cIValueGenXcan_inline_any_constant6kM_i_;
-text: .text%__1cLLIR_EmitterJopr2local6MipnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListQreg2single_stack6MnFRInfo_inJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Instruction.o;
-text: .text%__1cIValueGenMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cLAccessFieldKlock_stack6kM_pnKValueStack__: c1_Instruction.o;
-text: .text%__1cLLIR_EmitterKfield_load6MnFRInfo_pnHciField_pnLLIR_OprDesc_iiipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListMload_mem_reg6MnFRInfo_i1nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cIRegAllocNoops_in_spill6kM_pnIintStack__;
-text: .text%__1cEItemEtype6kM_pnJValueType__: c1_CodeGenerator.o;
 text: .text%__1cJArrayTypeMas_ArrayType6M_p0_: c1_ValueType.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%__1cIRegAllocRoops_in_registers6kM_pnPRInfoCollection__;
-text: .text%__1cLLIR_EmitterRarithmetic_op_int6MnJBytecodesECode_pnLLIR_OprDesc_44nFRInfo__v_;
-text: .text%__1cLLIR_EmitterNarithmetic_op6MnJBytecodesECode_pnLLIR_OprDesc_44inFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListDsub6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenWcan_inline_as_constant6MpnEItem__i_;
-text: .text%__1cILIR_ListDadd6MpnLLIR_OprDesc_22_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLAccessArrayKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterMarray_length6MnFRInfo_pnLLIR_OprDesc_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cJValueTypeLas_LongType6M_pnILongType__: c1_ValueType.o;
-text: .text%__1cLAccessArrayKlock_stack6kM_pnKValueStack__: c1_Instruction.o;
-text: .text%__1cLLIR_EmitterSlength_range_check6MpnLLIR_OprDesc_2pnMCodeEmitInfo__v_;
-text: .text%__1cORangeCheckStub2t6MpnMCodeEmitInfo_nFRInfo_ii_v_;
-text: .text%__1cMCodeEmitInfo2t6Mp0i_v_;
-text: .text%__1cILIR_ListGbranch6MnMLIR_OpBranchNLIR_Condition_pnICodeStub__v_;
-text: .text%__1cLLIR_EmitterMindexed_load6MnFRInfo_nJBasicType_pnLLIR_OprDesc_4pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListKshift_left6MnFRInfo_i1_v_: c1_LIREmitter_sparc.o;
 text: .text%__1cILIR_ListKshift_left6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cLCompilationXlir_opr_for_instruction6MpnLInstruction__pnLLIR_OprDesc__;
-text: .text%__1cIValueGenPlock_free_rinfo6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cILIR_ListJsafepoint6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator_sparc.o;
-text: .text%__1cLLIR_EmitterHgoto_op6MpnKBlockBegin_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListEjump6MpnKBlockBegin_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenJdo_Return6MpnGReturn__v_;
 text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_Canonicalizer.o;
-text: .text%__1cIValueGenTresult_register_for6FpnJValueType_i_nFRInfo__;
-text: .text%__1cIValueGenTcallee_return1RInfo6F_nFRInfo__;
-text: .text%__1cIValueGenPload_item_force6MpnEItem_nFRInfo__v_;
-text: .text%__1cIRegAllocJlock_temp6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cILIR_ListHint2reg6MinFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cLLIR_EmitterJreturn_op6MpnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListJreturn_op6MpnLLIR_OprDesc__v_: c1_LIREmitter.o;
-text: .text%__1cNCodeGeneratorXclear_instruction_items6FpnKBlockBegin__v_;
-text: .text%__1cQLIR_LocalCaching2t6MpnCIR__v_;
-text: .text%__1cQLIR_LocalCachingQpreferred_locals6MpknIciMethod__pnMLocalMapping__;
-text: .text%__1cIFrameMapScalling_convention6FpknIciMethod_pnIintArray__pnRCallingConvention__;
-text: .text%__1cIFrameMapScalling_convention6FirknOBasicTypeArray_pnIintArray__pnRCallingConvention__;
-text: .text%__1cIintArray2t6Mki1_v_: c1_FrameMap_sparc.o;
-text: .text%__1cQArgumentLocation2t6Mci_v_: c1_FrameMap_sparc.o;
-text: .text%__1cQArgumentLocationVincoming_reg_location6kM_nFRInfo__;
-text: .text%__1cQArgumentLocationPis_register_arg6kM_i_;
-text: .text%__1cMLocalMappingQinit_cached_regs6M_v_;
-text: .text%__1cPRegisterManager2t6M_v_;
-text: .text%__1cPRegisterManagerElock6MnFRInfo__v_;
-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%__1cLInstructionQas_CachingChange6M_pnNCachingChange__: c1_Instruction.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%__1cHLIR_Op2Fvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cMLIR_OpBranchFvisit6MpnQLIR_OpVisitState__v_;
 text: .text%__1cORangeCheckStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cQLIR_OpVisitStateGappend6MnFRInfo__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNc1_AllocTableFmerge6Mp0_v_;
-text: .text%__1cGLIR_OpFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cPLIR_OpTypeCheckFvisit6MpnQLIR_OpVisitState__v_;
 text: .text%__1cTSimpleExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-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%__1cLInstructionKas_Convert6M_pnHConvert__: c1_Loops.o;
-text: .text%__1cLInstructionPas_ArithmeticOp6M_pnMArithmeticOp__: 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%__1cGALocalUsort_by_access_count6Fpp02_i_: c1_ScanBlocks.o;
-text: .text%__1cKScanBlocksWmost_used_float_locals6M_pnKALocalList__;
-text: .text%__1cGALocalUsort_by_access_count6Fpp02_i_: c1_CacheLocals.o;
-text: .text%__1cQLIR_LocalCachingPcompute_caching6MpnKALocalList_pnPRegisterManager__pnMLocalMapping__;
-text: .text%__1cPRegisterManagerMnum_free_cpu6M_i_;
-text: .text%__1cGALocalNsort_by_index6Fpp02_i_: c1_CacheLocals.o;
-text: .text%__1cMLocalMappingNget_cache_reg6kMinIValueTag__nFRInfo__;
-text: .text%__1cPRegisterManagerLis_free_reg6MnFRInfo__i_;
-text: .text%__1cQLIR_LocalCachingQadd_at_all_names6FpnPRInfoCollection_inFRInfo_pnMWordSizeList__v_;
-text: .text%__1cPRegisterManagerMhas_free_reg6MnIValueTag__i_;
-text: .text%__1cPRegisterManagerNlock_free_reg6MnIValueTag__nFRInfo__;
-text: .text%__1cMLocalMappingFmerge6Mp0_v_;
-text: .text%__1cSLocalMappingSetterIblock_do6MpnKBlockBegin__v_;
-text: .text%__1cMLocalMappingNget_cache_reg6kMi_nFRInfo__;
-text: .text%__1cMLocalMappingEjoin6Mp0_v_;
-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%__1cMLIR_OpBranchLas_OpBranch6M_p0_: c1_LIR.o;
 text: .text%__1cNResourceArrayJremove_at6MIi_v_;
 text: .text%__1cHIRScopeJmax_stack6kM_i_;
-text: .text%__1cNLIR_Optimizer2t6MpnCIR__v_;
-text: .text%__1cRLIR_PeepholeState2t6M_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_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_PeepholeStateYset_disable_optimization6Mi_v_;
-text: .text%__1cLLIR_OpLabelJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerMemit_opLabel6MpnLLIR_OpLabel__v_;
-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%__1cRLIR_PeepholeStateUrecord_opr_reference6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateLdefining_op6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateJreg2index6MpnLLIR_OprDesc__i_;
-text: .text%__1cNLIR_OptimizerMblock_epilog6M_v_;
 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%__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_OptimizerRresult_substitute6M_v_;
-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%__1cRLIR_PeepholeStateTequivalent_register6MpnLLIR_OprDesc__2_;
-text: .text%__1cNLIR_OptimizerKmaybe_opto6MpnLLIR_OprDesc_2_2_: c1_LIROptimizer_sparc.o;
-text: .text%__1cNLIR_OptimizerMis_cache_reg6MpnLLIR_OprDesc__i_;
-text: .text%__1cMLocalMappingMis_cache_reg6kMpnLLIR_OprDesc__i_;
-text: .text%__1cMLocalMappingMis_cache_reg6kMnFRInfo__i_;
-text: .text%__1cFRInfoLas_register6kM_pnMRegisterImpl__;
-text: .text%__1cNLIR_OptimizerKallow_opto6M_i_;
-text: .text%__1cNLIR_OptimizerLrecord_opto6MpnLLIR_OprDesc_2_2_;
-text: .text%__1cMLIR_OpBranchJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cNLIR_OptimizerMselect_delay6MpnMCodeEmitInfo__pnGLIR_Op__;
-text: .text%__1cNLIR_OptimizerFop_at6Mi_pnGLIR_Op__;
-text: .text%__1cNLIR_AssemblerVis_single_instruction6FpnGLIR_Op_pnIFrameMap__i_;
-text: .text%__1cNLIR_OptimizerMdelayed_emit6MpnGLIR_Op__v_;
-text: .text%__1cLLIR_OpDelayJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerKemit_delay6MpnLLIR_OpDelay__v_;
-text: .text%__1cNLIR_OptimizerQopr_live_on_exit6MpnLLIR_OprDesc__i_;
-text: .text%__1cPLIR_OpTypeCheckJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
-text: .text%__1cNLIR_OptimizerFvisit6M_v_: c1_LIROptimizer_sparc.o;
-text: .text%__1cKLIR_OprPtrKas_address6M_pnLLIR_Address__: c1_CacheLocals.o;
-text: .text%__1cNLIR_AssemblerRis_small_constant6FpnLLIR_OprDesc__i_;
-text: .text%__1cNLIR_OptimizerOemit_code_stub6MpnICodeStub__v_;
-text: .text%__1cNLIR_OptimizerLhandle_info6MpnMCodeEmitInfo__v_;
-text: .text%__1cRLIR_PeepholeStateNincrement_ref6Mi_v_;
-text: .text%__1cMCodeEmitInfoRset_local_mapping6MpnMLocalMapping__v_;
-text: .text%__1cNLIR_OptimizerUrecord_register_oops6MpnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_AddressKas_address6M_p0_: c1_LIR.o;
-text: .text%__1cRLIR_PeepholeStateSequivalent_address6MpnLLIR_OprDesc__2_;
-text: .text%__1cLLIR_AddressEtype6kM_nJBasicType__: c1_LIR.o;
-text: .text%__1cKLIR_OprPtrLas_constant6M_pnJLIR_Const__: c1_LIR.o;
-text: .text%__1cORangeCheckStubXis_exception_throw_stub6kM_i_: c1_CodeStubs_sparc.o;
 text: .text%__1cLLIR_OpDelayKas_OpDelay6M_p0_: c1_LIR.o;
-text: .text%__1cNLIR_OptimizerKreplace_op6MipnGLIR_Op__v_;
-text: .text%__1cNLIR_Assembler2t6MpnLCompilation_pnLCodeOffsets__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%__1cJValueTypeNas_DoubleType6M_pnKDoubleType__: c1_Canonicalizer.o;
 text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Instruction.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_AssemblerMemit_opLabel6MpnLLIR_OpLabel__v_;
 text: .text%__1cNLIR_AssemblerIemit_op06MpnHLIR_Op0__v_;
 text: .text%__1cNLIR_AssemblerIemit_op26MpnHLIR_Op2__v_;
-text: .text%__1cNLIR_AssemblerMcheck_icache6MpnMRegisterImpl_2_i_;
 text: .text%__1cRC1_MacroAssemblerSinline_cache_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: c1_MacroAssembler_sparc.o;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: c1_MacroAssembler_sparc.o;
 text: .text%__1cRC1_MacroAssemblerOverified_entry6M_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%__1cNLIR_AssemblerMsetup_locals6MpnRCallingConvention_pnOBasicTypeArray__v_;
-text: .text%__1cRDependenceBreakerPget_store_order6MnFRInfo__pnSDependenceEdgeList__: c1_LIRAssembler_sparc.o;
-text: .text%__1cNLIR_AssemblerHreg2reg6MnFRInfo_1_v_;
-text: .text%__1cQArgumentLocationMis_stack_arg6kM_i_;
-text: .text%__1cNLIR_AssemblerHcomp_op6MnMLIR_OpBranchNLIR_Condition_pnLLIR_OprDesc_4nJBasicType__v_;
 text: .text%__1cNLIR_AssemblerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: c1_LIRAssembler_sparc.o;
 text: .text%__1cNLIR_AssemblerKemit_delay6MpnLLIR_OpDelay__v_;
 text: .text%__1cNLIR_AssemblerLcode_offset6kM_i_;
 text: .text%__1cNLIR_AssemblerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
 text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cLOopRecorderKfind_index6MpnI_jobject__i_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: c1_LIRAssembler_sparc.o;
 text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cOoop_RelocationJpack_data6M_i_;
 text: .text%__1cNLIR_AssemblerEload6MpnMRegisterImpl_i2nJBasicType_pnMCodeEmitInfo__i_;
 text: .text%__1cNLIR_AssemblerIemit_op16MpnHLIR_Op1__v_;
-text: .text%__1cNLIR_AssemblerHmove_op6MpnLLIR_OprDesc_2nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
 text: .text%__1cNLIR_AssemblerOemit_code_stub6MpnICodeStub__v_;
 text: .text%__1cTSimpleExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cICodeStubLset_code_pc6MpC_v_: c1_CodeStubs_sparc.o;
-text: .text%__1cICodeStubMis_call_stub6kM_i_: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerHmem2reg6MpnLLIR_Address_nFRInfo_nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
 text: .text%__1cNLIR_AssemblerbDadd_debug_info_for_null_check6MipnMCodeEmitInfo__v_;
 text: .text%__1cVImplicitNullCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerIarith_op6MnILIR_Code_pnLLIR_OprDesc_33pnMCodeEmitInfo__v_;
 text: .text%__1cORangeCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerIshift_op6MnILIR_Code_nFRInfo_i2_v_;
-text: .text%__1cNLIR_AssemblerOsafepoint_poll6MnFRInfo_pnMCodeEmitInfo__v_;
 text: .text%__1cNLIR_AssemblerZadd_debug_info_for_branch6MpnMCodeEmitInfo__v_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__: c1_Runtime1.o;
-text: .text%__1cMCodeEmitInfoRrecord_debug_info6MpnYDebugInformationRecorder_ii_v_;
-text: .text%__1cMCodeEmitInfoScompute_debug_info6M_v_;
-text: .text%__1cMCodeEmitInfoOcreate_oop_map6M_pnGOopMap__;
-text: .text%__1cIFrameMapRoop_map_arg_count6M_i_;
-text: .text%__1cKciLocalMapNindex_for_bci6kMi_i_;
-text: .text%__1cGOopMapHset_oop6MnHOptoRegEName_ii_v_;
-text: .text%__1cMCodeEmitInfoSappend_scope_value6MpnLLIR_OprDesc_pnNGrowableArray4CpnKScopeValue____v_;
-text: .text%__1cLLIR_OprDescGis_oop6kM_i_;
-text: .text%__1cMCodeEmitInfoYscope_value_for_register6MnFRInfo_ppnKScopeValue_4nILocationEType__v_;
-text: .text%__1cMCodeEmitInfobCcompute_debug_info_for_scope6MpnHIRScope_ipnNGrowableArray4CpnKScopeValue___inGValues_i_pnQIRScopeDebugInfo__;
-text: .text%__1cSciGenerateLocalMapUbytecode_is_gc_point6FnJBytecodesECode_ii_i_;
-text: .text%__1cMLocalMappingbEget_cache_reg_for_local_offset6kMi_nFRInfo__;
 text: .text%__1cGOopMapJdeep_copy6M_p0_;
 text: .text%__1cGOopMap2t6Mn0ANDeepCopyToken_p0_v_;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MiipnGOopMap__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%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
-text: .text%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfoRec.o;
-text: .text%__1cLCompilationbEadd_exception_handlers_for_pco6MiipnOExceptionScope__v_;
-text: .text%__1cNLIR_AssemblerJconst2reg6MpnJLIR_Const_nFRInfo_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerJreturn_op6MnFRInfo_i_v_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__: c1_Runtime1.o;
-text: .text%__1cRC1_MacroAssemblerLmethod_exit6Mi_v_;
-text: .text%__1cRreturn_RelocationEtype6M_nJrelocInfoJrelocType__: c1_Runtime1.o;
 text: .text%__1cLCompilationQemit_code_epilog6MpnNLIR_Assembler__v_;
 text: .text%__1cNLIR_AssemblerUemit_slow_case_stubs6M_v_;
 text: .text%__1cTSimpleExceptionStubJemit_code6MpnNLIR_Assembler__v_;
@@ -2619,94 +1468,53 @@
 text: .text%__1cFArenaIArealloc6MpvII_1_;
 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%__1cHnmethodZsize_of_exception_handler6F_i_;
-text: .text%__1cNLIR_AssemblerPemit_call_stubs6M_v_;
-text: .text%__1cNLIR_AssemblerbQinterpreter_to_compiler_calling_convention6MpnIciMethod__v_;
-text: .text%__1cQArgumentLocationVoutgoing_reg_location6kM_nFRInfo__;
 text: .text%__1cNLIR_AssemblerKemit_stubs6MpnMCodeStubList__v_;
-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%__1cOExceptionScopeGlength6kM_i_;
-text: .text%__1cOExceptionScopeMcaller_scope6kM_p0_;
-text: .text%__1cLLIR_EmitterKframe_size6M_i_;
 text: .text%__1cNLIR_Assembler2T6M_v_;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler_ii_v_;
 text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-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%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__v_;
 text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
 text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_: relocInfo.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: c1_Runtime1.o;
 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%__1cCosXnon_memory_address_word6F_pc_;
 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%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nmethod.o;
 text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
 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%__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%__1cGEventsDlog6FpkcE_v_: nmethod.o;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
 text: .text%__1cLCompilation2T6M_v_;
 text: .text%__1cFArena2T6M_v_;
 text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cTExceptionRangeTable2T6M_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%__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%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_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%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
 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%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: exceptions.o;
 text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
 text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
 text: .text%__1cNSharedRuntimebKexception_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%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
 text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
 text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
@@ -2719,42 +1527,24 @@
 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%__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%__1cLNewInstanceIcan_trap6kM_i_: c1_Instruction.o;
 text: .text%__1cMGraphBuilderGinvoke6MnJBytecodesECode__v_;
-text: .text%__1cQciBytecodeStreamKget_method6kM_pnIciMethod__;
 text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 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%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
 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%__1cKValueStackMclear_stores6M_v_;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_Instruction.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_Instruction.o;
-text: .text%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorOdo_NewInstance6MpnLNewInstance__v_;
 text: .text%__1cGInvokePinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorJdo_Invoke6MpnGInvoke__v_;
@@ -2762,167 +1552,57 @@
 text: .text%__1cFThrowPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorIdo_Throw6MpnFThrow__v_;
 text: .text%__1cFThrowPstate_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_ValueType.o;
-text: .text%__1cFRInfoIoverlaps6kMk0_i_;
-text: .text%__1cILIR_ListHreg2reg6MnFRInfo_1nJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cIValueGenYset_with_result_register6MpnLInstruction__nFRInfo__;
-text: .text%__1cIValueGenMreturn1RInfo6F_nFRInfo__;
-text: .text%__1cIRegAllocNlock_register6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cLLIR_EmitterMnew_instance6MnFRInfo_pnPciInstanceKlass_1111pnMCodeEmitInfo__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%__1cIValueGenXis_caller_save_register6FnFRInfo__i_;
-text: .text%__1cIFrameMapXis_caller_save_register6FnFRInfo__i_;
-text: .text%__1cIValueGenUtry_caller_to_callee6MpnLInstruction_nFRInfo__i_;
-text: .text%__1cIRootItemHas_root6M_p0_: c1_CodeGenerator.o;
-text: .text%__1cNc1_AllocTableThas_one_free_masked6kMnKc1_RegMask__i_;
-text: .text%__1cIRegAllocKreallocate6MnFRInfo_nKc1_RegMask__1_;
-text: .text%__1cLGetValueForGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cLGetRefCountGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cNc1_AllocTablePget_free_masked6MnKc1_RegMask__i_;
 text: .text%__1cIVoidTypeLas_VoidType6M_p0_: c1_ValueType.o;
-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%__1cLNewInstanceOas_NewInstance6M_p0_: c1_Instruction.o;
-text: .text%__1cIValueGenQexceptionPcRInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListPthrow_exception6MnFRInfo_1pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
 text: .text%__1cPNewInstanceStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cOLIR_OpJavaCallFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQLIR_OpVisitStateGappend6MnFRInfo__v_: c1_LIR.o;
-text: .text%__1cOStaticCallStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cIFrameMapWcaller_save_cpu_reg_at6Fi_pnLLIR_OprDesc__;
-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%__1cPRegisterManagerMlock_all_fpu6M_v_;
-text: .text%__1cICodeStubXis_exception_throw_stub6kM_i_: c1_CodeStubs_sparc.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_LIROptimizer.o;
-text: .text%__1cOLIR_OpJavaCallJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerJemit_call6MpnOLIR_OpJavaCall__v_;
 text: .text%__1cNLIR_AssemblerZjobject2reg_with_patching6MpnMRegisterImpl_pnMCodeEmitInfo__v_;
 text: .text%__1cMPatchingStubQalign_patch_site6MpnOMacroAssembler__v_;
-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%__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%__1cOStaticCallStubLset_code_pc6MpC_v_: c1_CodeStubs_sparc.o;
-text: .text%__1cOStaticCallStubMis_call_stub6kM_i_: c1_CodeStubs_sparc.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%__1cNLIR_AssemblerIthrow_op6MnFRInfo_1pnMCodeEmitInfo_i_v_;
-text: .text%__1cMCodeEmitInfoQadd_register_oop6MnFRInfo__v_;
 text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
 text: .text%__1cMPatchingStubJemit_code6MpnNLIR_Assembler__v_;
 text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
 text: .text%__1cRNativeGeneralJumpUinsert_unconditional6FpC1_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
 text: .text%__1cJrelocInfobDchange_reloc_info_for_address6FpnNRelocIterator_pCn0AJrelocType_4_v_;
 text: .text%__1cPNewInstanceStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cOStaticCallStubJemit_code6MpnNLIR_Assembler__v_;
 text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cWstatic_stub_RelocationJpack_data6M_i_;
-text: .text%__1cOMacroAssemblerUallocate_oop_address6MpnI_jobject_pnMRegisterImpl__nHAddress__;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: c1_CodeStubs_sparc.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: c1_CodeStubs_sparc.o;
 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%__1cODataRelocationGoffset6M_i_: relocInfo.o;
 text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: reflection.o;
-text: .text%__1cNArgumentCountDset6MinJBasicType__v_: reflection.o;
 text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: reflection.o;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: reflection.o;
 text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
 text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cUGenericGrowableArrayGgrow646Mi_v_;
 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%__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%__1cJCHAResultOis_monomorphic6kM_i_;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
-text: .text%__1cIciMethodJwill_link6MpnHciKlass_2nJBytecodesECode__i_;
-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%__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%__1cHIRScopeXcompute_lock_stack_size6M_v_;
-text: .text%__1cOExceptionScopeEinit6M_v_;
 text: .text%__1cMGraphBuilderJScopeDataLnum_returns6M_i_;
 text: .text%__1cNCanonicalizerHdo_Goto6MpnEGoto__v_;
 text: .text%__1cMGraphBuilderJScopeDataQincr_num_returns6M_v_;
-text: .text%__1cKValueStackJpop_scope6Mii_p0_;
 text: .text%__1cGValuesIpush_all6Mpk0_v_: c1_ValueStack.o;
-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%__1cLInstructionEprev6MpnKBlockBegin__p0_;
-text: .text%__1cKBlockBeginUresolve_substitution6M_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%__1cHIRScopeNtop_scope_bci6kM_i_;
-text: .text%__1cIValueGenMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cJNullCheckKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterKnull_check6MpnLLIR_OprDesc_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenbDsafepoint_poll_needs_register6F_i_;
-text: .text%__1cILIR_ListJsafepoint6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
-text: .text%__1cIValueGenQlock_spill_rinfo6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cILIR_ListQreg2single_stack6MnFRInfo_inJBasicType__v_: c1_CacheLocals.o;
-text: .text%__1cILIR_ListQsingle_stack2reg6MinFRInfo_nJBasicType__v_;
-text: .text%__1cRLIR_PeepholeStatePkill_stack_slot6Mi_v_;
-text: .text%__1cIFrameMapQaddress_for_name6kMiii_nHAddress__;
-text: .text%__1cIFrameMapSfp_offset_for_name6kMiii_i_;
-text: .text%__1cIFrameMapPnum_local_names6kM_i_;
-text: .text%__1cIFrameMapNlocal_to_slot6kMii_i_;
 text: .text%__1cIFrameMapQmake_new_address6kMi_nHAddress__;
-text: .text%__1cRLIR_PeepholeStateTmark_safe_to_delete6Mi_v_;
-text: .text%__1cNLIR_AssemblerJreg2stack6MnFRInfo_inJBasicType__v_;
 text: .text%__1cNLIR_AssemblerFstore6MpnMRegisterImpl_2inJBasicType_pnMCodeEmitInfo__v_;
 text: .text%__1cNLIR_AssemblerJstack2reg6MpnLLIR_OprDesc_2nJBasicType__v_;
-text: .text%__1cIFrameMapTsingle_word_regname6kMi_nHOptoRegEName__;
-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%jni_GetPrimitiveArrayCritical: jni.o;
 text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
 text: .text%jni_SetBooleanField: jni.o;
@@ -2930,18 +1610,9 @@
 text: .text%JVM_IsNaN;
 text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-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%__1cIHintItemNset_from_item6MpknEItem__v_;
-text: .text%__1cIHintItemEtype6kM_pnJValueType__: c1_Items.o;
-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%__1cIintStackEgrow6Mki1_v_: c1_LIROptimizer.o;
 text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
 text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
 text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
@@ -2950,23 +1621,11 @@
 text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
 text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
 text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cLInstructionMas_CompareOp6M_pnJCompareOp__: c1_Instruction.o;
-text: .text%__1cLInstructionNas_InstanceOf6M_pnKInstanceOf__: c1_Instruction.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%__1cLInstructionMas_LoadField6M_pnJLoadField__: c1_Instruction.o;
-text: .text%__1cKValueStackQpin_stack_fields6MpnHciField__v_;
 text: .text%__1cMGraphBuilderHif_null6MpnJValueType_nLInstructionJCondition__v_;
 text: .text%__1cOObjectConstantRas_ObjectConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
 text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cILongTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cILongTypeEsize6kM_i_: c1_ValueType.o;
 text: .text%__1cHConvertFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cNCanonicalizerKdo_Convert6MpnHConvert__v_;
 text: .text%__1cHConvertEhash6kM_i_: c1_GraphBuilder.o;
@@ -2974,22 +1633,14 @@
 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%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cUGenericGrowableArrayMraw_contains6kMpknEGrET__i_;
-text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_ValueType.o;
 text: .text%__1cNClassConstantQas_ClassConstant6M_p0_: c1_ValueType.o;
 text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMArithmeticOpOis_commutative6kM_i_;
 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%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cLInstructionPother_values_do6MpFpp0_v_v_: c1_Instruction.o;
-text: .text%__1cKStoreFieldPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorNdo_StoreField6MpnKStoreField__v_;
 text: .text%__1cINewArrayPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
 text: .text%__1cHConvertPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
@@ -2997,166 +1648,52 @@
 text: .text%__1cQNullCheckVisitorPdo_NewTypeArray6MpnMNewTypeArray__v_;
 text: .text%__1cJLoadFieldMas_LoadField6M_p0_: c1_Instruction.o;
 text: .text%__1cQNullCheckVisitorKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cDPhiPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cDPhiFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorGdo_Phi6MpnDPhi__v_;
-text: .text%__1cTsort_by_start_block6FppnELoop_2_i_: c1_Loops.o;
 text: .text%__1cHConvertKas_Convert6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionIas_Local6M_pnFLocal__: c1_GraphBuilder.o;
-text: .text%__1cDPhiGas_Phi6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cIValueGenbBrlock_byte_result_with_hint6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cIValueGenNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cIValueGenOscratch1_RInfo6kM_nFRInfo__;
-text: .text%__1cIValueGenUprefer_alu_registers6kM_i_;
-text: .text%__1cIValueGenOload_byte_item6MpnEItem__v_;
-text: .text%__1cLLIR_EmitterLfield_store6MpnHciField_pnLLIR_OprDesc_i4iipnMCodeEmitInfo_nFRInfo__v_;
-text: .text%__1cLLIR_EmitterQfield_store_byte6MpnLLIR_OprDesc_i2nFRInfo_ipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListNstore_mem_reg6MnFRInfo_1inJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cMciNullObjectMis_classless6kM_i_: ciNullObject.o;
-text: .text%__1cEItemUget_jobject_constant6kM_pnIciObject__;
-text: .text%__1cMciNullObjectOis_null_object6kM_i_: ciNullObject.o;
-text: .text%__1cJValueTypeQas_ClassConstant6M_pnNClassConstant__: c1_ValueType.o;
-text: .text%__1cOObjectConstantIencoding6kM_pnI_jobject__;
-text: .text%__1cNc1_AllocTableMhas_two_free6kM_i_;
-text: .text%__1cIRegAllocOset_locked_cpu6MipnLInstruction_i_v_;
-text: .text%__1cIRegAllocMset_free_cpu6Mi_v_;
-text: .text%__1cFRInfoLas_rinfo_lo6kM_0_;
-text: .text%__1cFRInfoLas_rinfo_hi6kM_0_;
-text: .text%__1cLLIR_EmitterXlo_word_offset_in_bytes6kM_i_;
-text: .text%__1cLLIR_EmitterXhi_word_offset_in_bytes6kM_i_;
-text: .text%__1cIValueGenPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cIValueGenKdo_Convert6MpnHConvert__v_;
-text: .text%__1cLLIR_EmitterKconvert_op6MnJBytecodesECode_pnLLIR_OprDesc_nFRInfo_i_v_;
-text: .text%__1cILIR_ListHconvert6MnJBytecodesECode_pnLLIR_OprDesc_4i_v_: c1_LIREmitter.o;
-text: .text%__1cLLIR_EmitterOnew_type_array6MnFRInfo_nJBasicType_pnLLIR_OprDesc_11111pnMCodeEmitInfo__v_;
-text: .text%__1cQNewTypeArrayStub2t6MnFRInfo_11pnMCodeEmitInfo__v_;
 text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cILIR_ListHoop2reg6MpnI_jobject_nFRInfo__v_: c1_LIREmitter_sparc.o;
-text: .text%__1cILIR_ListOallocate_array6MnFRInfo_11111nJBasicType_1pnICodeStub__v_;
-text: .text%__1cILIR_ListHoop2reg6MpnI_jobject_nFRInfo__v_: c1_LIREmitter.o;
 text: .text%__1cHciKlassMaccess_flags6M_i_;
-text: .text%__1cILIR_ListPallocate_object6MnFRInfo_111ii1pnICodeStub__v_;
 text: .text%__1cLLIR_OprFactQdummy_value_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cIRegAllocTget_value_for_rinfo6kMnFRInfo__pnLInstruction__;
-text: .text%__1cIValueGenQround_spill_item6MpnEItem_i_v_;
-text: .text%__1cIRegAllocPget_register_rc6kMnFRInfo__i_;
-text: .text%__1cIRegAllocOget_lock_spill6MpnLInstruction_i_i_;
-text: .text%__1cLLIR_EmitterFspill6MipnLLIR_OprDesc__v_;
-text: .text%__1cIFrameMapKspill_name6kMi_i_;
-text: .text%__1cIRegAllocKfree_spill6MipnJValueType__v_;
-text: .text%__1cIRegAllocNis_free_spill6kMipnJValueType__i_;
-text: .text%__1cLLIR_EmitterOmembar_release6M_v_;
-text: .text%__1cLLIR_EmitterNwrite_barrier6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cILIR_ListUunsigned_shift_right6MnFRInfo_i1_v_: c1_LIREmitter_sparc.o;
 text: .text%__1cILIR_ListUunsigned_shift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cILIR_ListHint2reg6MinFRInfo__v_: c1_LIREmitter_sparc.o;
-text: .text%__1cILIR_ListFstore6MpnLLIR_OprDesc_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cLLIR_EmitterGmembar6M_v_;
-text: .text%__1cILIR_ListGmembar6M_v_: c1_LIREmitter.o;
 text: .text%__1cJValueTypeNas_ObjectType6M_pnKObjectType__: c1_Canonicalizer.o;
-text: .text%__1cLLIR_EmitterOmembar_acquire6M_v_;
-text: .text%__1cILIR_ListOcall_icvirtual6MnFRInfo_pnLLIR_OprDesc_pCpnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cNClassConstantIencoding6kM_pnI_jobject__;
-text: .text%__1cILIR_ListDadd6MpnLLIR_OprDesc_22_v_: c1_LIREmitter_sparc.o;
-text: .text%__1cIValueGenKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cLLIR_EmitterIlogic_op6MnJBytecodesECode_nFRInfo_pnLLIR_OprDesc_5_v_;
-text: .text%__1cILIR_ListKlogical_or6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenScompute_phi_arrays6MpnKValueStack_pnGValues_pnIintStack_i_pnLInstruction__;
-text: .text%__1cIValueGenOload_item_hint6MpnEItem_pk1_v_;
-text: .text%__1cLLIR_EmitterTset_fpu_stack_empty6M_v_;
-text: .text%__1cILIR_ListTset_fpu_stack_empty6M_v_: c1_LIREmitter.o;
-text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_ValueType.o;
-text: .text%__1cILIR_ListLlogical_and6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
-text: .text%__1cRclear_state_items6FppnLInstruction__v_: c1_CodeGenerator.o;
-text: .text%__1cQLIR_OpAllocArrayFvisit6MpnQLIR_OpVisitState__v_;
 text: .text%__1cQNewTypeArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cOLIR_OpAllocObjFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cINewArrayLas_NewArray6M_p0_: c1_Instruction.o;
-text: .text%__1cNLIR_OpConvertJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cQLIR_OpAllocArrayJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerQemit_alloc_array6MpnQLIR_OpAllocArray__v_;
-text: .text%__1cOLIR_OpAllocObjJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_alloc_obj6MpnOLIR_OpAllocObj__v_;
-text: .text%__1cNLIR_AssemblerHreg2mem6MnFRInfo_pnLLIR_Address_nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerFstore6MnFRInfo_pnMRegisterImpl_inJBasicType__i_;
 text: .text%__1cNLIR_AssemblerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cFRInfoOas_register_lo6kM_pnMRegisterImpl__;
-text: .text%__1cFRInfoOas_register_hi6kM_pnMRegisterImpl__;
 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%__1cIFrameMapRlocation_for_name6kMinILocationEType_p1ii_i_;
 text: .text%__1cNLIR_AssemblerOmembar_release6M_v_;
-text: .text%__1cNLIR_AssemblerFstore6MnFRInfo_pnMRegisterImpl_3nJBasicType__i_;
 text: .text%__1cNLIR_AssemblerGmembar6M_v_;
 text: .text%__1cNLIR_AssemblerOmembar_acquire6M_v_;
 text: .text%__1cNLIR_AssemblerHic_call6MpCpnMCodeEmitInfo__v_;
 text: .text%__1cNLIR_AssemblerCpc6kM_pC_;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: c1_LIRAssembler_sparc.o;
 text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_i_;
 text: .text%__1cNLIR_AssemblerIlogic_op6MnILIR_Code_pnLLIR_OprDesc_33_v_;
-text: .text%__1cNLIR_AssemblerTset_fpu_stack_empty6M_v_;
 text: .text%__1cQNewTypeArrayStubJemit_code6MpnNLIR_Assembler__v_;
 text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__i_;
 text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
 text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cIRuntime1Yresolve_opt_virtual_call6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cHnmethodJis_zombie6kM_i_: nmethod.o;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
-text: .text%__1cHnmethodQis_native_method6kM_i_: nmethod.o;
-text: .text%__1cHnmethodKpc_desc_at6MpCi_pnGPcDesc__;
 text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
 text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
 text: .text%__1cPBytecode_invokeFindex6kM_i_;
 text: .text%__1cLRegisterMapIpd_clear6M_v_;
 text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
 text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cLRegisterMapLpd_location6kMnFVMRegEName__pC_;
-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%__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%__1cRNativeMovConstRegIset_data6Mi_v_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nativeInst_sparc.o;
 text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
 text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cNnmethodLocker2T6M_v_;
 text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cIRuntime1Yprepare_interpreter_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cLLIR_EmitterYstrength_reduce_multiply6MpnLLIR_OprDesc_i22_i_;
 text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cJLoadFieldIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
 text: .text%__1cMGraphBuilderNload_constant6M_v_;
-text: .text%__1cQciBytecodeStreamMget_constant6kM_nKciConstant__;
 text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
 text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cLInstructionMas_LoadLocal6M_pnJLoadLocal__: c1_Canonicalizer.o;
-text: .text%__1cIRegAllocKlock_spill6MpnLInstruction_ii_v_;
-text: .text%__1cIValueGenVinvoke_load_arguments6MpnGInvoke_pnJItemArray_pnRCallingConvention__v_;
-text: .text%__1cILIR_ListLcall_static6MpnLLIR_OprDesc_pCpnMCodeEmitInfo_pnOStaticCallStub__v_: c1_LIREmitter.o;
-text: .text%__1cIintStackEgrow6Mki1_v_: c1_CacheLocals.o;
 text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: c1_CodeStubs_sparc.o;
 text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%__1cPParameterMapperJdo_object6Mii_v_: c1_Runtime1_sparc.o;
-text: .text%__1cPParameterMapperGdo_int6M_v_: c1_Runtime1_sparc.o;
 text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
 text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
 text: .text%jni_GetArrayLength: jni.o;
@@ -3165,13 +1702,9 @@
 text: .text%JVM_DefineClassWithSource;
 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%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
 text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
 text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
 text: .text%JVM_GetClassCPEntriesCount;
 text: .text%JVM_GetClassCPTypes;
 text: .text%JVM_GetClassNameUTF;
@@ -3197,11 +1730,7 @@
 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%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_;
@@ -3210,32 +1739,21 @@
 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%__1cNFingerprinterIdo_array6Mii_v_: c1_Runtime1_sparc.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%__1cCosPuncommit_memory6FpcI_i_;
-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;
@@ -3247,12 +1765,8 @@
 text: .text%__1cIOSThreadKpd_destroy6M_v_;
 text: .text%jni_DestroyJavaVM;
 text: .text%jni_AttachCurrentThread;
-text: .text%__1cKJavaThread2t6M_v_;
-text: .text%__1cCosWcreate_attached_thread6FpnGThread__i_;
 text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cKJavaThreadSallocate_threadObj6MnGHandle_pcipnGThread__v_;
 text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cHThreadsKdestroy_vm6F_i_;
 text: .text%__1cKJavaThreadVinvoke_shutdown_hooks6M_v_;
 text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
 text: .text%__1cNWatcherThreadEstop6F_v_;
@@ -3271,10 +1785,7 @@
 text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
 text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
 text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cTAbstractInterpreterRnotice_safepoints6F_v_;
 text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
 text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
 text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
 text: .text%__1cNObjectMonitorHis_busy6kM_i_;
@@ -3284,11 +1795,9 @@
 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_;
@@ -3297,95 +1806,48 @@
 text: .text%__1cCosRcurrent_thread_id6F_i_;
 text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
 text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cVverificationType_exit6F_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%__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%__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%__1cMVM_OperationIevaluate6M_v_;
 text: .text%__1cHVM_ExitEdoit6M_v_;
-# Test Hello
 text: .text%JVM_GetCPFieldSignatureUTF;
 text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
 text: .text%JVM_Write;
-# Test Sleep
 text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
 text: .text%JVM_GetMethodIxExceptionTableEntry;
 text: .text%JVM_GetCPClassNameUTF;
 text: .text%JVM_Sleep;
 text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
-# Test IntToString
 text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-# Test LoadToolkit
 text: .text%JVM_GetClassContext;
 text: .text%jni_IsAssignableFrom: jni.o;
 text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cIFrameMapRname_for_argument6Fi_i_;
-text: .text%__1cNLIR_AssemblerEload6MpnMRegisterImpl_inFRInfo_nJBasicType__i_;
 text: .text%__1cRComputeEntryStackHdo_char6M_v_: generateOopMap.o;
 text: .text%__1cMGraphBuilderNstore_indexed6MnJBasicType__v_;
 text: .text%__1cIValueMapKkill_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%__1cMStoreIndexedPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cIValueGenPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cLLIR_EmitterNindexed_store6MnJBasicType_pnLLIR_OprDesc_33nFRInfo_pnMCodeEmitInfo__v_;
 text: .text%__1cKValueStackElock6MpnHIRScope_pnLInstruction__i_;
 text: .text%__1cKValueStackGunlock6M_i_;
-text: .text%__1cLLIR_EmitterVmonitorenter_at_entry6MnFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterGmethod6kM_pnIciMethod__;
-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%__1cIValueGenMrelease_item6MpnEItem__v_;
-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_sparc.o;
-text: .text%__1cRMonitorAccessStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.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%__1cNLIR_AssemblerJemit_lock6MpnKLIR_OpLock__v_;
 text: .text%__1cRC1_MacroAssemblerLlock_object6MpnMRegisterImpl_222rnFLabel__v_;
 text: .text%__1cQMonitorEnterStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cIFrameMapWmonitor_object_regname6kMi_nHOptoRegEName__;
-text: .text%__1cIFrameMapbHlocation_for_monitor_object_index6kMipnILocation__i_;
-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_sparc.o;
 text: .text%__1cQMonitorEnterStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerLmonitorexit6MpnMRegisterImpl_22i_v_;
 text: .text%__1cPMonitorExitStubJemit_code6MpnNLIR_Assembler__v_;
 text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
 text: .text%__1cMGraphBuilderIshift_op6MpnJValueType_nJBytecodesECode__v_;
@@ -3393,73 +1855,29 @@
 text: .text%__1cNCanonicalizerKdo_ShiftOp6MpnHShiftOp__v_;
 text: .text%__1cHShiftOpEhash6kM_i_: c1_GraphBuilder.o;
 text: .text%__1cHShiftOpEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cHLogicOpOis_commutative6kM_i_;
 text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-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%__1cMas_ValueType6FnKciConstant__pnJValueType__;
-text: .text%__1cJIntrinsicPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorMdo_Intrinsic6MpnJIntrinsic__v_;
 text: .text%__1cDOp2Pinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%__1cQNullCheckVisitorKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cIValueGenKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cLLIR_EmitterIshift_op6MnJBytecodesECode_nFRInfo_pnLLIR_OprDesc_53_v_;
-text: .text%__1cILIR_ListLshift_right6MnFRInfo_i1_v_: c1_LIREmitter.o;
 text: .text%__1cILIR_ListLshift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cIValueGenMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cIValueGenRspill_caller_save6M_v_;
-text: .text%__1cIFrameMapVcaller_save_registers6F_pnPRInfoCollection__;
-text: .text%__1cJIsFreeRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIValueGenXload_item_with_reg_mask6MpnEItem_nKc1_RegMask__v_;
-text: .text%__1cIRegAllocNget_lock_temp6MpnLInstruction_nKc1_RegMask__nFRInfo__;
-text: .text%__1cIValueGenQarraycopy_helper6MpnJIntrinsic_pippnMciArrayKlass__v_;
-text: .text%__1cLInstructionKexact_type6kM_pnGciType__: c1_GraphBuilder.o;
-text: .text%__1cOas_array_klass6FpnGciType__pnMciArrayKlass__: c1_CodeGenerator.o;
-text: .text%__1cLInstructionNdeclared_type6kM_pnGciType__: c1_GraphBuilder.o;
 text: .text%__1cMNewTypeArrayKexact_type6kM_pnGciType__;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cLInstructionNdeclared_type6kM_pnGciType__: c1_Instruction.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cLInstructionOas_ArrayLength6M_pnLArrayLength__: c1_GraphBuilder.o;
-text: .text%__1cHHideReg2t6MpnIValueGen_nKc1_RegMask__v_;
-text: .text%__1cHHideReg2T6M_v_;
-text: .text%__1cPLIR_OpArrayCopyFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cPLIR_OpArrayCopyJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
 text: .text%__1cNLIR_AssemblerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
 text: .text%__1cMciArrayKlassMelement_type6M_pnGciType__;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cNArrayCopyStub2t6MpnMCodeEmitInfo_pnOStaticCallStub__v_;
 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%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlass.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%__1cMGraphBuilderQhandle_exception6Mi_v_;
-text: .text%__1cOExceptionScopeFclear6M_v_;
 text: .text%__1cLInstructionGmirror6Fn0AJCondition__1_;
 text: .text%__1cKBlockBeginVadd_exception_handler6Mp0_v_;
-text: .text%__1cOExceptionScopeLadd_handler6MpnIXHandler__v_;
 text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
-text: .text%__1cLInstructionMas_LoadLocal6M_pnJLoadLocal__: c1_GraphBuilder.o;
 text: .text%__1cLAccessFieldPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstance.o;
-text: .text%__1cLLIR_EmitterNhandler_entry6M_v_;
-text: .text%__1cILIR_ListDnop6MpnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListKnull_check6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
 text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cOExceptionScopeKhandler_at6kMi_pnIXHandler__;
-text: .text%__1cTExceptionRangeTableJadd_entry6Miiiiii_v_;
-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;
@@ -3467,109 +1885,51 @@
 text: .text%JVM_DisableCompiler;
 text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
 text: .text%JVM_Available;
-text: .text%__1cLArrayLengthIis_equal6kMpnLInstruction__i_: c1_GraphBuilder.o;
 text: .text%__1cLArrayLengthOas_ArrayLength6M_p0_: c1_GraphBuilder.o;
 text: .text%__1cJLoadFieldKexact_type6kM_pnGciType__;
 text: .text%__1cJLoadFieldNdeclared_type6kM_pnGciType__;
-text: .text%__1cIRuntime1Uresolve_virtual_call6FpnKJavaThread_pnHoopDesc__pC_;
 text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
 text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
 text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
 text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cOMacroAssemblerEjump6MrnHAddress_ipkci_v_;
-text: .text%__1cOMacroAssemblerFjumpl6MrnHAddress_pnMRegisterImpl_ipkci_v_;
 text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlass.o;
 text: .text%JVM_NewArray;
 text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: c1_Runtime1_sparc.o;
 text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
 text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
 text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
-text: .text%__1cFBytesNget_native_u46FpC_I_: bytecodes.o;
 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%__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%__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%__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%__1cLLIR_EmitterZjobject2reg_with_patching6MnFRInfo_pnIciObject_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListKshift_left6MnFRInfo_i1_v_: c1_LIREmitter.o;
 text: .text%__1cSNewObjectArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
 text: .text%__1cSNewObjectArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cEBaseHas_Base6M_p0_: c1_IR.o;
-text: .text%__1cNLIR_AssemblerOemit_osr_entry6MpnHIRScope_ipnFLabel_i_v_;
-text: .text%__1cHIRScopeGlocals6M_pnJLocalList__;
 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%__1cICompilerPsupports_native6M_i_: c1_Compiler.o;
 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%__1cNLIR_AssemblerMneeds_icache6kMpnIciMethod__i_;
-text: .text%__1cNLIR_AssemblerQemit_native_call6MpCpnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerSpass_oop_to_native6MinHAddress_nIArgument__v_;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: c1_LIRAssembler_sparc.o;
-text: .text%__1cMCodeEmitInfobDcreate_oop_map_inside_natives6M_pnGOopMap__;
-text: .text%__1cNLIR_AssemblerXemit_native_method_exit6MpnMCodeEmitInfo__v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: c1_LIRAssembler_sparc.o;
-text: .text%__1cNLIR_AssemblerVsave_native_fp_result6MnJBasicType_nHAddress__v_;
-text: .text%__1cNLIR_AssemblerYrestore_native_fp_result6MnJBasicType_nHAddress__v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: typeArrayKlass.o;
-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%__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%__1cILIR_ListUunsigned_shift_right6MnFRInfo_i1_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cLLIR_EmitterOtableswitch_op6MpnLLIR_OprDesc_ipnKBlockBegin__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%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
 text: .text%__1cJValueTypeQas_ClassConstant6M_pnNClassConstant__: c1_Canonicalizer.o;
-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%__1cSCompiledStaticCallMset_to_clean6M_v_;
 text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cIciObjectIis_klass6M_i_: ciInstance.o;
 text: .text%__1cQInstanceConstantTas_InstanceConstant6M_p0_: c1_ValueType.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%__1cKCompiledICMset_to_clean6M_v_;
 text: .text%jni_MonitorEnter: jni.o;
@@ -3586,11 +1946,8 @@
 text: .text%__1cbBjava_lang_StackTraceElementGcreate6FnMmethodHandle_ipnGThread__pnHoopDesc__;
 text: .text%__1cNmethodOopDescUline_number_from_bci6kMi_i_;
 text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_: objectMonitor_solaris.o;
 text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
 text: .text%JVM_EnableCompiler;
-text: .text%__1cNFingerprinterHdo_bool6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cCosHSolarisFEventEpark6Mx_i_: objectMonitor_solaris.o;
 text: .text%__1cJStubQdDueueKremove_all6M_v_;
 text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
 text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
@@ -3601,20 +1958,11 @@
 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%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cCosOunguard_memory6FpcI_i_;
 text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-# Test LoadFrame
-text: .text%__1cNSignatureInfoHdo_char6M_v_: reflection.o;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: reflection.o;
-text: .text%__1cLInstructionKas_ShiftOp6M_pnHShiftOp__: c1_Instruction.o;
-text: .text%__1cILIR_ListLlogical_xor6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
 text: .text%__1cKCompiledICOic_destination6kM_pC_;
 text: .text%jni_CallObjectMethodV: jni.o;
 text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cNObjectMonitorGenter26MpnGThread__v_;
 text: .text%jni_IsInstanceOf: jni.o;
 text: .text%jni_GetIntArrayRegion: jni.o;
 text: .text%jni_SetIntArrayRegion: jni.o;
@@ -3624,23 +1972,14 @@
 text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
 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%__1cLLIR_EmitterRarray_store_check6MpnLLIR_OprDesc_2nFRInfo_33pnMCodeEmitInfo__v_;
 text: .text%__1cILIR_ListLstore_check6MpnLLIR_OprDesc_2222pnMCodeEmitInfo__v_;
 text: .text%__1cXArrayStoreExceptionStub2t6MpnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListDadd6MnFRInfo_i1_v_: c1_LIREmitter_sparc.o;
-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_sparc.o;
 text: .text%__1cNLIR_AssemblerbIadd_debug_info_for_null_check_here6MpnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerEload6MpnMRegisterImpl_2nFRInfo_nJBasicType__i_;
 text: .text%__1cXArrayStoreExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
 text: .text%__1cNLIR_AssemblerGnegate6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cOMacroAssemblerHbr_zero6MnJAssemblerJCondition_in0BHPredict_pnMRegisterImpl_rnFLabel__v_;
 text: .text%__1cXArrayStoreExceptionStubJemit_code6MpnNLIR_Assembler__v_;
 text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cIRuntime1Jarraycopy6FpnHoopDesc_i2ii_i_;
@@ -3651,17 +1990,11 @@
 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%__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%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
 text: .text%__1cKVtableStub2n6FIi_pv_;
 text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
 text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
 text: .text%Unsafe_GetObject;
 text: .text%jni_CallBooleanMethod: jni.o;
@@ -3675,44 +2008,20 @@
 text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
 text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
 text: .text%JVM_IsInterrupted;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-# Test LoadJFrame
 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_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%__1cJFloatTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cJFloatTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cIValueGenTdo_ArithmeticOp_FPU6MpnMArithmeticOp__v_;
-text: .text%__1cHLockRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cQChangeSpillCountIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cHFreeRegIdo_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%__1cLGetRefCountIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIFrameMapPadd_spill_slots6Mi_v_;
-text: .text%__1cFRInfoMas_float_reg6kM_pnRFloatRegisterImpl__;
 text: .text%__1cIFrameMapLnr2floatreg6Fi_pnRFloatRegisterImpl__;
-text: .text%__1cOMacroAssemblerCfb6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: c1_LIRAssembler_sparc.o;
 text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cMStoreIndexedPother_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
 text: .text%Unsafe_EnsureClassInitialized;
 text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
 text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: c1_Runtime1_sparc.o;
 text: .text%Unsafe_StaticFieldOffset;
 text: .text%Unsafe_StaticFieldBaseFromField;
 text: .text%Unsafe_GetIntVolatile;
 text: .text%JVM_Yield;
-text: .text%__1cCosKdont_yield6F_i_;
-# Test JHello
 text: .text%__1cNSharedRuntimeElmul6Fxx_x_;
 text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
 text: .text%JVM_InitializeSocketLibrary;
@@ -3725,9 +2034,6 @@
 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%__1cIciObjectTis_type_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cGciTypeNis_subtype_of6Mp0_i_;
-text: .text%__1cPParameterMapperHdo_byte6M_v_: c1_Runtime1_sparc.o;
 text: .text%Unsafe_DefineClass1;
 text: .text%JVM_DefineClass;
 text: .text%jni_NewDirectByteBuffer;
@@ -3751,38 +2057,19 @@
 text: .text%jni_SetFloatField: jni.o;
 text: .text%jni_NewFloatArray: jni.o;
 text: .text%jni_SetFloatArrayRegion: jni.o;
-text: .text%__1cNFingerprinterGdo_int6M_v_: c1_Runtime1_sparc.o;
 text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-# SwingSet
 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%__1cHnmethodIis_alive6kM_i_: nmethod.o;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
 text: .text%JVM_MonitorNotify;
 text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cNFingerprinterJdo_object6Mii_v_: c1_Runtime1_sparc.o;
 text: .text%jni_NewIntArray: 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%__1cPVM_GC_OperationNdoit_prologue6M_i_;
 text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-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%__1cPGCMemoryManagerIgc_begin6M_v_;
 text: .text%__1cKManagementJtimestamp6F_x_;
 text: .text%__1cTContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
@@ -3791,49 +2078,26 @@
 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%__1cQGenCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_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%__1cQDefNewGenerationKsave_marks6M_v_;
 text: .text%__1cbCOneContigSpaceCardGenerationKsave_marks6M_v_;
-text: .text%__1cQDefNewGenerationHcollect6MiiIii_v_;
-text: .text%__1cRTenuredGenerationZpromotion_attempt_is_safe6kMIi_i_;
 text: .text%__1cKGenerationYmax_contiguous_available6kM_I_;
 text: .text%__1cbCOneContigSpaceCardGenerationUcontiguous_available6kM_I_;
 text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
 text: .text%__1cIageTableFclear6M_v_;
-text: .text%__1cLCardTableRSbGprepare_for_younger_refs_iterate6Mi_v_;
 text: .text%__1cULRUCurrentHeapPolicy2t6M_v_;
-text: .text%__1cPCollectorPolicyPis_train_policy6M_i_: collectorPolicy.o;
-text: .text%__1cQGenCollectedHeapUprocess_strong_roots6Miiin0ATClassScanningOption_pnQOopsInGenClosure_3_v_;
 text: .text%__1cKSharedHeapbAchange_strong_roots_parity6M_v_;
-text: .text%__1cMSubTasksDonePis_task_claimed6Mi_i_;
 text: .text%__1cPFastScanClosureGdo_oop6MppnHoopDesc__v_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationWcopy_to_survivor_space6MpnHoopDesc_p2_2_;
 text: .text%__1cPContiguousSpaceIallocate6MI_pnIHeapWord__;
 text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
 text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
 text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
 text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
 text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-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%__1cRInterpreterOopMap2t6M_v_;
 text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
@@ -3842,29 +2106,22 @@
 text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
 text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
 text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
 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%__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%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
 text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
 text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: frame.o;
 text: .text%__1cRInterpreterOopMap2T6M_v_;
 text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
 text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
 text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: oopMapCache.o;
 text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: oopMapCache.o;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: oopMapCache.o;
 text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
 text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
 text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
@@ -3887,143 +2144,80 @@
 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%__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%__1cVDirtyCardToOopClosureMdo_MemRegion6MnJMemRegion__v_;
-text: .text%__1cWOffsetTableContigSpaceLblock_start6kMpkv_pnIHeapWord__: space.o;
 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%__1cPContiguousSpaceRtoContiguousSpace6M_p0_: space.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: cpCacheKlass.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_: constMethodKlass.o;
 text: .text%__1cQconstMethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: methodKlass.o;
 text: .text%__1cLmethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
 text: .text%__1cQFilteringClosureGdo_oop6MppnHoopDesc__v_;
-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%__1cNinstanceKlassGitable6kM_pnLklassItable__;
 text: .text%__1cLklassItablePoop_oop_iterate6MpnKOopClosure__v_;
 text: .text%__1cKklassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cKOopClosureXshould_remember_klasses6kM_ki_: space.o;
 text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
 text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__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%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-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_: typeArrayKlass.o;
 text: .text%__1cOtypeArrayKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
 text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: constMethodKlass.o;
 text: .text%__1cQconstMethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: methodKlass.o;
 text: .text%__1cLmethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: constantPoolKlass.o;
 text: .text%__1cRconstantPoolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__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_: cpCacheKlass.o;
 text: .text%__1cWconstantPoolCacheKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
 text: .text%__1cWConstantPoolCacheEntryLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: constantPoolKlass.o;
 text: .text%__1cRconstantPoolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
 text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
 text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-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%__1cFKlassPoop_is_objArray6kM_i_: constMethodKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constMethodKlass.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_: objArrayKlassKlass.o;
 text: .text%__1cSobjArrayKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
 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_: 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%__1cKOopClosureIdo_oop_v6MppnHoopDesc__v_: space.o;
 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%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlass.o;
 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%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_: typeArrayKlass.o;
-text: .text%__1cKGenerationHpromote6MpnHoopDesc_Ip2_2_;
-text: .text%__1cbCOneContigSpaceCardGenerationIallocate6MIii_pnIHeapWord__: tenuredGeneration.o;
 text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
 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%__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%__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%__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%__1cQDefNewGenerationbCFastEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
 text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__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%__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%__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_;
@@ -4031,41 +2225,19 @@
 text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
 text: .text%__1cNJvmtiGCMarker2T6M_v_;
 text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
 text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
 text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cLVtableStubsScreate_itable_stub6Fii_pnKVtableStub__;
-text: .text%__1cLLIR_EmitterDnop6M_v_;
 text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
 text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cIValueGenSload_item_patching6MpnHIRScope_ipnEItem_pnKValueStack_pnOExceptionScope__v_;
-text: .text%__1cJValueTypeTas_InstanceConstant6M_pnQInstanceConstant__: c1_ValueType.o;
-text: .text%__1cPParameterMapperHdo_bool6M_v_: c1_Runtime1_sparc.o;
-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%__1cQNullCheckVisitorOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cIValueGenPdo_MonitorEnter6MpnMMonitorEnter__v_;
 text: .text%__1cMLongConstantPas_LongConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLLIR_EmitterJopr2intLo6MpnLLIR_OprDesc__i_;
-text: .text%__1cLLIR_EmitterJopr2intHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cQArgumentLocationVstack_offset_in_words6kM_i_;
-text: .text%__1cLLIR_EmitterVstore_stack_parameter6MpnLLIR_OprDesc_i_v_;
-text: .text%__1cIValueGenOdo_MonitorExit6MpnLMonitorExit__v_;
 text: .text%__1cNAccessMonitorQas_AccessMonitor6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: c1_MacroAssembler_sparc.o;
 text: .text%JVM_IsSameClassPackage;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
 text: .text%__1cIRuntime1Mmonitorenter6FpnKJavaThread_pnHoopDesc_pnPBasicObjectLock__v_;
 text: .text%__1cIRuntime1Lmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
 text: .text%Unsafe_GetNativeFloat;
@@ -4076,56 +2248,24 @@
 text: .text%__1cNCanonicalizerMset_constant6Mi_v_: c1_Canonicalizer.o;
 text: .text%__1cJTypeCheckPother_values_do6MpFppnLInstruction__v_v_;
 text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
-text: .text%__1cRC1_MacroAssemblerTfast_ObjectHashCode6MpnMRegisterImpl_2_v_;
-text: .text%__1cNFingerprinterHdo_char6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cPParameterMapperHdo_char6M_v_: c1_Runtime1_sparc.o;
 text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-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%__1cFframeVoopmapreg_to_location6kMnFVMRegEName_pknLRegisterMap__ppnHoopDesc__;
 text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: defNewGeneration.o;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: nmethod.o;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceRefKlass.o;
 text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
 text: .text%__1cQinstanceRefKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cQGenCollectedHeapXhandle_failed_promotion6MpnKGeneration_pnHoopDesc_Ip4_4_;
-text: .text%__1cbCOneContigSpaceCardGenerationTexpand_and_allocate6MIiii_pnIHeapWord__;
-text: .text%__1cNGCMutexLocker2t6MpnFMutex__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationHgrow_by6MI_i_;
 text: .text%__1cWBlockOffsetSharedArrayGresize6MI_v_;
 text: .text%__1cPContiguousSpaceNmangle_region6MnJMemRegion__v_;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
 text: .text%__1cRTenuredGenerationKshort_name6kM_pkc_: tenuredGeneration.o;
-text: .text%__1cKGenerationIcounters6M_pnRCollectorCounters__: tenuredGeneration.o;
-text: .text%__1cRTenuredGenerationHcollect6MiiIii_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationHcollect6MiiIii_v_;
-text: .text%__1cMGenMarkSweepTinvoke_at_safepoint6FipnSReferenceProcessor_i_v_;
 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%__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%__1cQGenCollectedHeapOgather_scratch6MpnKGeneration_I_pnMScratchBlock__;
 text: .text%__1cQDefNewGenerationScontribute_scratch6MrpnMScratchBlock_pnKGeneration_I_v_;
-text: .text%__1cKGenerationScontribute_scratch6MrpnMScratchBlock_p0I_v_: tenuredGeneration.o;
-text: .text%__1cJEventMark2t6MpkcE_v_: genMarkSweep.o;
 text: .text%__1cJMarkSweepRFollowRootClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
 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%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
@@ -4133,40 +2273,25 @@
 text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
 text: .text%__1cLklassItableToop_follow_contents6M_v_;
 text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__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%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__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%__1cJMarkSweepRFollowRootClosureLdo_nmethods6kM_ki_: markSweep.o;
 text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_: nmethod.o;
 text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
 text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
 text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__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%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cKBufferBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-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%__1cHnmethodbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-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_;
@@ -4174,43 +2299,26 @@
 text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__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%__1cbBBlockOffsetArrayContigSpaceQalloc_block_work6MpnIHeapWord_2_v_;
-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%__1cQCompactibleSpaceUinitialize_threshold6M_pnIHeapWord__: space.o;
 text: .text%__1cbCOneContigSpaceCardGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: compactingPermGenGen.o;
-text: .text%__1cPContigPermSpaceSallowed_dead_ratio6kM_i_;
 text: .text%__1cUCompactingPermGenGenTpre_adjust_pointers6M_v_;
 text: .text%__1cbIRecursiveAdjustSharedObjectClosureGdo_oop6MppnHoopDesc__v_: compactingPermGenGen.o;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: methodKlass.o;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: constantPoolKlass.o;
 text: .text%__1cNinstanceKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: instanceKlassKlass.o;
-text: .text%__1cKOopClosureIdo_oop_v6MppnHoopDesc__v_: compactingPermGenGen.o;
 text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: objArrayKlassKlass.o;
 text: .text%__1cNobjArrayKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cKOopClosureXshould_remember_klasses6kM_ki_: compactingPermGenGen.o;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: klassKlass.o;
 text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: klassKlass.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%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: typeArrayKlass.o;
 text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_: cpCacheKlass.o;
 text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
 text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
@@ -4227,249 +2335,111 @@
 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%__1cFKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__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%__1cKOopClosureLdo_nmethods6kM_ki_: markSweep.o;
-text: .text%__1cQGenCollectedHeapSprocess_weak_roots6MpnKOopClosure_2_v_;
-text: .text%__1cRAlwaysTrueClosureLdo_object_b6MpnHoopDesc__i_: genCollectedHeap.o;
 text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
 text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
 text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cbASkipAdjustingSharedStringsGdo_oop6MppnHoopDesc__v_: genCollectedHeap.o;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__v_;
 text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cQGenCollectedHeapSgeneration_iterate6Mpn0AKGenClosure_i_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%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQDefNewGenerationNspace_iterate6MpnMSpaceClosure_i_v_;
 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%__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%__1cQGenCollectedHeapKsave_marks6M_v_;
-text: .text%__1cLCardTableRSTinvalidate_or_clear6MpnKGeneration_ii_v_;
 text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cLCardTableRSKinvalidate6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cRCardTableModRefBSKinvalidate6MnJMemRegion__v_;
 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%__1cICodeBlobTfix_oop_relocations6M_v_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: c1_Runtime1.o;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: relocInfo.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: onStackReplacement.o;
 text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cKGenerationWupdate_time_of_last_gc6Mx_v_: tenuredGeneration.o;
-text: .text%__1cKGenerationWupdate_time_of_last_gc6Mx_v_: compactingPermGenGen.o;
 text: .text%__1cRTenuredGenerationQcompute_new_size6M_v_;
 text: .text%__1cKGenerationEspec6M_pnOGenerationSpec__;
-text: .text%__1cbCOneContigSpaceCardGenerationGexpand6MII_v_;
 text: .text%jni_DeleteWeakGlobalRef: jni.o;
 text: .text%__1cKJNIHandlesTdestroy_weak_global6FpnI_jobject__v_;
-text: .text%__1cHLogicOpIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
-text: .text%__1cLAccessFieldKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterLcmp_mem_int6MnMLIR_OpBranchNLIR_Condition_nFRInfo_iipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListDcmp6MnMLIR_OpBranchNLIR_Condition_pnLLIR_OprDesc_4pnMCodeEmitInfo__v_: c1_LIREmitter_sparc.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cJFloatTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
 text: .text%__1cNFloatConstantQas_FloatConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cILIR_ListJfloat2reg6MfnFRInfo__v_: c1_LIREmitter.o;
 text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_Canonicalizer.o;
 text: .text%__1cRAbstractAssemblerGa_long6Mi_v_;
-text: .text%__1cNConstantTableZaddress_of_float_constant6Mf_pC_;
 text: .text%__1cIRuntime1Onew_type_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: oopMap.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: compiledICHolderKlass.o;
 text: .text%__1cVcompiledICHolderKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
 text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
 text: .text%__1cOMacroAssemblerEmult6MpnMRegisterImpl_22_v_;
 text: .text%__1cINewArrayPother_values_do6MpFppnLInstruction__v_v_;
 text: .text%__1cJValueTypeLas_LongType6M_pnILongType__: c1_Canonicalizer.o;
-text: .text%__1cNLIR_AssemblerIshift_op6MnILIR_Code_nFRInfo_222_v_;
-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%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cHnmethodNis_osr_method6kM_i_: nmethod.o;
 text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_: vm_operations.o;
 text: .text%signalHandler;
 text: .text%JVM_handle_solaris_signal;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
-text: .text%__1cILIR_ListEidiv6MnFRInfo_i11pnMCodeEmitInfo__v_;
-text: .text%__1cPParameterMapperHdo_long6M_v_: c1_Runtime1_sparc.o;
-text: .text%__1cLLoadIndexedIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
 text: .text%JVM_HoldsLock;
-text: .text%__1cSObjectSynchronizerZcurrent_thread_holds_lock6FpnKJavaThread_nGHandle__i_;
-text: .text%__1cIValueGenLdo_getClass6MpnJIntrinsic__v_;
-text: .text%__1cLLIR_EmitterIgetClass6MnFRInfo_1pnMCodeEmitInfo__v_;
 text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceRefKlass.o;
 text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
 text: .text%__1cHThreadsLnmethods_do6F_v_;
 text: .text%__1cFframeLnmethods_do6M_v_;
 text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
 text: .text%__1cONewObjectArrayKexact_type6kM_pnGciType__;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciObjArrayKlass.o;
 text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
 text: .text%__1cIRuntime1Noop_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlass.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: objArrayKlass.o;
 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%__1cILIR_ListVvolatile_load_mem_reg6MnFRInfo_i1nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
 text: .text%__1cJValueTypeOas_IntConstant6M_pnLIntConstant__: c1_Canonicalizer.o;
-text: .text%__1cEItemSget_jlong_constant6kM_x_;
-text: .text%__1cRLIR_PeepholeStateLreg2indexLo6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateLreg2indexHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cNLIR_AssemblerQvolatile_move_op6MpnLLIR_OprDesc_2nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
 text: .text%__1cHIntTypeKas_IntType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLLIR_EmitterQfield_store_long6MpnLLIR_OprDesc_i2ipnMCodeEmitInfo__v_;
 text: .text%__1cNSharedRuntimeDf2l6Ff_x_;
-text: .text%__1cJFloatTypeEsize6kM_i_: c1_ValueType.o;
 text: .text%__1cJValueTypeQas_FloatConstant6M_pnNFloatConstant__: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
 text: .text%__1cODoubleConstantRas_DoubleConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeDtag6kM_nIValueTag__: c1_ValueType.o;
 text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cODoubleConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cGSetRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIValueGenNreturnF0RInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListMbranch_float6MnMLIR_OpBranchNLIR_Condition_pnFLabel_4_v_;
-text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_ValueType.o;
-text: .text%__1cLLIR_EmitterOset_fpu_result6MnFRInfo__v_;
-text: .text%__1cILIR_ListIpush_fpu6MnFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cNc1_AllocTableNhas_pair_free6kM_i_;
-text: .text%__1cNc1_AllocTableNget_pair_free6M_i_;
-text: .text%__1cHLockRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocRset_locked_double6MipnLInstruction_i_v_;
-text: .text%__1cNc1_AllocTablePset_pair_locked6Mi_v_;
-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%__1cNc1_AllocTableNset_pair_free6Mi_v_;
-text: .text%__1cIValueGenPlock_spill_temp6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cLLIR_EmitterPcall_convert_op6MnJBytecodesECode_nFRInfo__v_;
-text: .text%__1cILIR_ListRcall_runtime_leaf6MpCnFRInfo_ii_v_: c1_LIREmitter_sparc.o;
-text: .text%__1cMLIR_OpRTCallFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cMLIR_OpRTCallJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerLemit_rtcall6MpnMLIR_OpRTCall__v_;
 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_AssemblerIfpu_push6MnFRInfo__v_;
-text: .text%__1cFRInfoNas_double_reg6kM_pnRFloatRegisterImpl__;
-text: .text%__1cNConstantTablebAaddress_of_double_constant6Md_pC_;
 text: .text%__1cNLIR_AssemblerLemit_rtcall6MpnMLIR_OpRTCall__v_;
-text: .text%__1cNLIR_AssemblerHrt_call6MpCnFRInfo_ii_v_;
 text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-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%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cIValueGenMreturn2RInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListRcall_runtime_leaf6MpCnFRInfo_ii_v_: c1_CodeGenerator_sparc.o;
-text: .text%__1cIFrameMapUare_adjacent_indeces6kMii_i_;
-text: .text%__1cILIR_ListQreg2double_stack6MnFRInfo_inJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenUdo_ArithmeticOp_Long6MpnMArithmeticOp__v_;
-text: .text%__1cLLIR_EmitterSarithmetic_op_long6MnJBytecodesECode_pnLLIR_OprDesc_44pnMCodeEmitInfo__v_;
-text: .text%__1cRLIR_PeepholeStateNstack2indexHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: oopMapCache.o;
 text: .text%__1cTMaskFillerForNativeIpass_int6M_v_: oopMapCache.o;
 text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
 text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
 text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cFframebDoops_interpreted_arguments_do6MnMsymbolHandle_ipnKOopClosure__v_;
-text: .text%__1cLCardTableRSSclear_into_younger6MpnKGeneration_i_v_;
 text: .text%__1cLCardTableRSFclear6MnJMemRegion__v_: cardTableRS.o;
 text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__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%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
 text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
 text: .text%__1cRComputeEntryStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cKDoubleTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cKDoubleTypeNas_DoubleType6M_p0_: c1_ValueType.o;
-text: .text%__1cLLIR_EmitterSarithmetic_call_op6MnJBytecodesECode_nFRInfo__v_;
-text: .text%__1cILIR_ListRcall_runtime_leaf6MpCnFRInfo_ii_v_: c1_LIREmitter.o;
-text: .text%__1cGSetRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOset_double_reg6MiipnLInstruction__v_;
-text: .text%__1cJIsFreeRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOis_free_double6kMi_i_;
-text: .text%__1cNc1_AllocTableMis_pair_free6kMi_i_;
-text: .text%__1cNc1_AllocTableIare_free6kMii_i_;
-text: .text%__1cLGetValueForIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cLGetRefCountJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocNget_double_rc6kMi_i_;
 text: .text%__1cJValueTypeMas_ArrayType6M_pnJArrayType__: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeEsize6kM_i_: c1_Canonicalizer.o;
 text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: frame.o;
-text: .text%__1cRArgumentOopFinderDset6MinJBasicType__v_: frame.o;
-text: .text%__1cQArgumentLocationXincoming_stack_location6kM_nHAddress__;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: oopMapCache.o;
-text: .text%__1cNFloatConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cJNullCheckMas_NullCheck6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterIpop_item6MpnLLIR_OprDesc__v_;
-text: .text%__1cIValueGenNreturnD0RInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListDdiv6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter.o;
 text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cFframebAoops_compiled_arguments_do6MnMsymbolHandle_ipknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cKGC_SupportbDpreserve_callee_argument_oops6FknFframe_nMsymbolHandle_ipnKOopClosure__v_;
-text: .text%__1cSFindSignatureTypesDset6MinJBasicType__v_: c1_Runtime1_sparc.o;
-text: .text%__1cUC1_ArgumentOopFinderDset6MinJBasicType__v_: c1_Runtime1_sparc.o;
 text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMLongConstantLis_constant6kM_i_: c1_Canonicalizer.o;
 text: .text%__1cRPrivilegedElementHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIValueGenLspill_value6MpnLInstruction__v_;
-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%__1cFmatch6FpnLUnsafeRawOp_ppnLInstruction_4pi_i_: c1_Canonicalizer.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_;
@@ -4480,33 +2450,12 @@
 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%__1cLLIR_EmitterPlookupswitch_op6MpnLLIR_OprDesc_ipnKBlockBegin__v_;
-text: .text%__1cQInstanceConstantLis_constant6kM_i_: c1_ValueType.o;
-text: .text%__1cOObjectConstantLis_constant6kM_i_: c1_ValueType.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciTypeArrayKlass.o;
 text: .text%__1cIRuntime1Mnew_instance6FpnKJavaThread_pnMklassOopDesc__v_;
 text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
 text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: vmThread.o;
-text: .text%__1cIValueGenTcallee_return2RInfo6F_nFRInfo__;
 text: .text%__1cILongTypeLas_LongType6M_p0_: c1_Canonicalizer.o;
-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%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
 text: .text%__1cbCOneContigSpaceCardGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cILongTypeLas_LongType6M_p0_: c1_ValueType.o;
-text: .text%__1cHciKlassIis_klass6M_i_: ciInstanceKlass.o;
 text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
 text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
 text: .text%__1cIRuntime1Qnew_object_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_amd64	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_COMPILER2_amd64	Tue Jul 28 13:50:07 2009 -0600
@@ -3,17 +3,12 @@
 
 
 text: .text%__1cECopyRpd_disjoint_words6FpnIHeapWord_2L_v_;
-text: .text%__1cSPSPromotionManagerWcopy_to_survivor_space6MpnHoopDesc__2_;
 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%__1cQIndexSetIteratorEnext6M_I_;
-text: .text%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__v_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cNRelocIteratorEnext6M_i_;
 text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
 text: .text%__1cIUniverseMnon_oop_word6F_pv_;
 text: .text%__1cNobjArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
@@ -21,21 +16,11 @@
 text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cQObjectStartArrayMobject_start6kMpnIHeapWord__2_;
 text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__;
 text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_;
-text: .text%__1cIMachNodeHis_Mach6M_p0_;
-text: .text%__1cENodeHis_Copy6kM_I_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_;
 text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
 text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_;
-text: .text%__1cHnmethodKcan_unload6MpnRBoolObjectClosure_pnKOopClosure_ppnHoopDesc_i_i_;
-text: .text%__1cIMachNodeNrematerialize6kM_i_;
-text: .text%__1cHRegMaskFis_UP6kM_i_;
 text: .text%__1cXresource_allocate_bytes6FL_pc_;
 text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__;
 text: .text%__1cHRegMaskESize6kM_I_;
 text: .text%__1cIIndexSetLalloc_block6M_pn0AIBitBlock__;
 text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
@@ -48,7 +33,6 @@
 text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cYPSPromotionFailedClosureJdo_object6MpnHoopDesc__v_;
 text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_;
 text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
 text: .text%__1cENodeHdel_out6Mp0_v_;
 text: .text%__1cKRelocationLunpack_data6M_v_;
@@ -56,17 +40,11 @@
 text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
 text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
 text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cRMachSpillCopyNodeMis_SpillCopy6M_p0_;
 text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_;
 text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cENodeGis_CFG6kM_i_;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_;
 text: .text%__1cETypeDcmp6Fpk02_i_;
-text: .text%__1cQObjectStartArrayWobject_starts_in_range6kMpnIHeapWord_2_i_;
 text: .text%__1cOoop_RelocationLunpack_data6M_v_;
 text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__;
 text: .text%__1cOtypeArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cHRegMaskJis_bound26kM_i_;
 text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
@@ -78,126 +56,76 @@
 text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cMOopTaskQdDueueOpop_local_slow6MInOTaskQdDueueSuperDAge__i_;
-text: .text%__1cRMachSpillCopyNodeHis_Copy6kM_I_;
-text: .text%__1cENodeGpinned6kM_i_;
 text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
 text: .text%__1cJrRegPOperEtype6kM_pknEType__;
 text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_LI_v_;
-text: .text%__1cMOopTaskQdDueueKpop_global6MrpnHoopDesc__i_;
-text: .text%__1cPOopTaskQdDueueSetPsteal_best_of_26MipirpnHoopDesc__i_;
 text: .text%__1cJVectorSet2R6MI_rnDSet__;
 text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
 text: .text%__1cSPSPromotionManagerUflush_prefetch_queue6M_v_;
-text: .text%__1cIProjNodeHis_Proj6M_p0_;
 text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_;
 text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cMloadConPNodePoper_input_base6kM_I_;
-text: .text%__1cMloadConPNodeHtwo_adr6kM_I_;
 text: .text%__1cMloadConPNodeErule6kM_I_;
-text: .text%__1cHPhiNodeGis_Phi6M_p0_;
 text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__;
 text: .text%__1cDff16FI_i_;
-text: .text%__1cENodeNrematerialize6kM_i_;
 text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_;
-text: .text%__1cFframeVoopmapreg_to_location6kMipknLRegisterMap__ppnHoopDesc__;
 text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__;
 text: .text%__1cMMutableSpaceMcas_allocate6ML_pnIHeapWord__;
 text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cMget_live_bit6Fpii_i_: buildOopMap.o;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__;
 text: .text%__1cENodeHadd_req6Mp0_v_;
 text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cMset_live_bit6Fpii_v_: buildOopMap.o;
 text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__;
 text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_;
 text: .text%__1cETypeFuhash6Fpk0_i_;
 text: .text%__1cJrRegIOperEtype6kM_pknEType__;
 text: .text%__1cMPhaseChaitinLskip_copies6MpnENode__2_;
-text: .text%__1cIMachNodeMcisc_operand6kM_i_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_;
 text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__;
 text: .text%__1cNCollectedHeapbDcheck_for_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%__1cEDictGInsert6Mpv1i_1_;
 text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cINodeHashLhash_delete6MpknENode__i_;
-text: .text%__1cETypeJtype_dict6F_pnEDict__;
 text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
 text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cIrc_class6Fi_nCRC__: ad_amd64.o;
 text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
 text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cNCollectedHeapbAcommon_mem_allocate_noinit6FLipnGThread__pnIHeapWord__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__;
-text: .text%__1cFArenaIcontains6kMpkv_i_;
-text: .text%__1cJMultiNodeGis_CFG6kM_i_;
 text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinKelide_copy6MpnENode_ipnFBlock_rnJNode_List_6i_i_;
 text: .text%__1cKjmpDirNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cIProjNodeGis_CFG6kM_i_;
 text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_;
 text: .text%__1cETypeIhashcons6M_pk0_;
 text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_;
-text: .text%__1cOlower_pressure6FpnDLRG_IpnFBlock_pI4_v_: ifg.o;
-text: .text%__1cPOopTaskQdDueueSetFsteal6MipirpnHoopDesc__i_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_;
-text: .text%__1cHCompileRvalid_bundle_info6MpknENode__i_;
 text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__;
 text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
 text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__;
 text: .text%__1cPVirtualCallDataKcell_count6M_i_;
-text: .text%__1cIProjNodeGpinned6kM_i_;
 text: .text%__1cENodeMcisc_operand6kM_i_;
 text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
 text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMloadConINodePoper_input_base6kM_I_;
-text: .text%__1cMloadConINodeHtwo_adr6kM_I_;
 text: .text%__1cHNTarjanEEVAL6M_p0_;
 text: .text%__1cNMachIdealNodeErule6kM_I_;
 text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
 text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cETypeLisa_oop_ptr6kM_i_;
 text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
 text: .text%__1cENode2t6MI_v_;
 text: .text%__1cJloadPNodeErule6kM_I_;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__;
 text: .text%__1cMloadConINodeErule6kM_I_;
 text: .text%__1cICodeHeapKfind_start6kMpv_1_;
 text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cHTypeIntCeq6kMpknEType__i_;
 text: .text%__1cLProfileDataPfollow_contents6M_v_;
 text: .text%__1cLProfileDataPadjust_pointers6M_v_;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__;
 text: .text%__1cHRegMaskMClearToPairs6M_v_;
 text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_IrnJVectorSet__v_;
 text: .text%__1cLemit_opcode6FrnKCodeBuffer_i_v_;
 text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__;
 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%__1cMclr_live_bit6Fpii_v_: buildOopMap.o;
 text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cMPhaseChaitinQis_high_pressure6MpnFBlock_pnDLRG_I_i_;
 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%__1cJraw_score6Fdd_d_: chaitin.o;
 text: .text%__1cDLRGFscore6kM_d_;
 text: .text%__1cKTypeOopPtrEhash6kM_i_;
 text: .text%__1cIAddPNodeGOpcode6kM_i_;
@@ -205,11 +133,8 @@
 text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_i_;
 text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
 text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cETypeJsingleton6kM_i_;
 text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cSPSPromotionManagerMdrain_stacks6M_v_;
 text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cITypeLongCeq6kMpknEType__i_;
 text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_L_;
 text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
@@ -220,133 +145,90 @@
 text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
 text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__;
 text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLOptoRuntimeXdeoptimize_caller_frame6FpnKJavaThread_i_v_;
 text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
 text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_;
 text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cHRegMaskQis_aligned_Pairs6kM_i_;
-text: .text%__1cSis_single_register6FI_i_: postaloc.o;
 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%__1cIciObjectGequals6Mp0_i_;
 text: .text%__1cJPhaseLiveGgetset6MpnFBlock__pnIIndexSet__;
 text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cENodeRis_cisc_alternate6kM_i_;
 text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
 text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
 text: .text%__1cLCounterDataKcell_count6M_i_;
-text: .text%__1cWThreadLocalAllocBufferFreset6M_v_;
 text: .text%__1cMMachProjNodeGOpcode6kM_i_;
 text: .text%__1cENodeEgrow6MI_v_;
 text: .text%__1cIMachNodePcompute_padding6kMi_i_;
-text: .text%__1cKup_one_dom6FpnENode__1_: ifnode.o;
 text: .text%__1cIMachNodeSalignment_required6kM_i_;
 text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
 text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_L_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapVunsafe_max_tlab_alloc6kM_L_;
 text: .text%__1cHNTarjanICOMPRESS6M_v_;
 text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cFMutexGunlock6M_v_;
-text: .text%__1cJMultiNodeIis_Multi6M_p0_;
 text: .text%__1cIBoolNodeGOpcode6kM_i_;
 text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
 text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6ML_pnIHeapWord__;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
 text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
 text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2L_v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cKTypeOopPtrCeq6kMpknEType__i_;
-text: .text%__1cHTypePtrCeq6kMpknEType__i_;
 text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_;
 text: .text%__1cIIndexSetFclear6M_v_;
-text: .text%__1cHTypeIntJsingleton6kM_i_;
 text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_pnIIndexSet_rnJVectorSet__v_;
 text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2L_v_;
 text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cNRelocIteratorKinitialize6MlpnICodeBlob_pC3_v_;
 text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
 text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cFframeUis_interpreted_frame6kM_i_;
 text: .text%__1cHTypeIntEhash6kM_i_;
 text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
 text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
 text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIMachNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__;
-text: .text%__1cFState2T6M_v_;
-text: .text%__1cPVirtualCallDataPfollow_contents6M_v_;
-text: .text%__1cPVirtualCallDataPadjust_pointers6M_v_;
-text: .text%__1cENodeGis_Con6kM_I_;
-text: .text%__1cJrRegIOperJnum_edges6kM_I_;
-text: .text%__1cENodeIget_long6kM_x_;
 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%__1cHPhiNodeGpinned6kM_i_;
 text: .text%__1cITypeNodeEhash6kM_I_;
 text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
 text: .text%__1cJPhaseLiveKgetfreeset6M_pnIIndexSet__;
 text: .text%__1cMMachProjNodeJideal_reg6kM_I_;
 text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIParmNodeGis_CFG6kM_i_;
 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%__1cLOptoRuntimeFnew_C6FpnMklassOopDesc_pnKJavaThread__v_;
 text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__;
 text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_;
 text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cLuse_dom_lca6FpnFBlock_pnENode_3rnLBlock_Array__1_: gcm.o;
 text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cIBoolNodeHis_Bool6M_p0_;
 text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
 text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__;
 text: .text%__1cIJumpDataKcell_count6M_i_;
 text: .text%__1cHNTarjanELINK6Mp01_v_;
 text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cIMachNode2t6M_v_;
-text: .text%__1cFStateRMachOperGenerator6MipnIMachNode_pnHCompile__pnIMachOper__;
 text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cICallNodeHis_Call6M_p0_;
-text: .text%__1cENodeFIdeal6MpnIPhaseGVN_i_p0_;
 text: .text%__1cENodeRraise_bottom_type6MpknEType__v_;
 text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
 text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cUParallelScavengeHeapPis_in_permanent6kMpkv_i_;
-text: .text%__1cHdom_lca6FpnFBlock_1_1_: gcm.o;
 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%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_;
 text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
 text: .text%__1cIMachNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPClassFileParserOcheck_property6MipkcipnGThread__v_;
 text: .text%__1cFState2t6M_v_;
-text: .text%__1cFStateDDFA6MipknENode__i_;
 text: .text%__1cJPhaseLiveHfreeset6MpknFBlock__v_;
 text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cKRegionNodeGpinned6kM_i_;
 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%__1cHCompileMFillLocArray6MpnENode_pnNGrowableArray4CpnKScopeValue____i_;
 text: .text%__1cHRegMaskPfind_first_pair6kM_i_;
 text: .text%__1cENodeKmatch_edge6kMI_I_;
 text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
@@ -355,41 +237,27 @@
 text: .text%__1cNPhaseRegAllocUreg2offset_unchecked6kMi_i_;
 text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
 text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__;
 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%__1cFMutexElock6MpnGThread__v_;
-text: .text%__1cILoadNodeHis_Load6M_p0_;
 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%__1cRMachSpillCopyNodeOimplementation6kMpnKCodeBuffer_pnNPhaseRegAlloc_i_I_;
 text: .text%__1cKTypeAryPtrEhash6kM_i_;
 text: .text%__1cIIndexSet2t6Mp0_v_;
 text: .text%__1cNrFlagsRegOperEtype6kM_pknEType__;
 text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cTconstantPoolOopDescbAname_and_type_ref_index_at6Mi_i_;
 text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cIGraphKitHstopped6M_i_;
-text: .text%__1cKTypeOopPtrJsingleton6kM_i_;
 text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cNSafePointNodeGpinned6kM_i_;
-text: .text%__1cQCompressedStream2t6MpCi_v_;
 text: .text%__1cIConLNodeGOpcode6kM_i_;
 text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cGIfNodeGpinned6kM_i_;
-text: .text%__1cOis_diamond_phi6FpnENode__i_: cfgnode.o;
-text: .text%__1cLTypeInstPtrCeq6kMpknEType__i_;
 text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cENodeSremove_dead_region6MpnIPhaseGVN_i_i_;
 text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cSCallStaticJavaNodeEhash6kM_I_;
 text: .text%jni_GetObjectField: jni.o;
 text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
 text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
@@ -398,53 +266,33 @@
 text: .text%__1cKNode_ArrayEgrow6MI_v_;
 text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
 text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cCosOis_interrupted6FpnGThread_i_i_;
 text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cHMatcherKLabel_Root6MpknENode_pnFState_p16_6_;
 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%__1cGIfNodeFis_If6M_p0_;
 text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cOPhaseIdealLoopMis_dominator6MpnENode_2_i_;
-text: .text%__1cKTypeOopPtrLxadd_offset6kMi_i_;
 text: .text%JVM_Read;
 text: .text%__1cDhpiEread6FipvI_L_;
-text: .text%__1cIMachNodeIpeephole6MpnFBlock_ipnNPhaseRegAlloc_ri_p0_;
 text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cIHaltNodeGis_CFG6kM_i_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__;
 text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
 text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
 text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
 text: .text%__1cHemit_d86FrnKCodeBuffer_i_v_;
-text: .text%__1cKCodeBuffer2t6MiiiiiipnKBufferBlob_pnJrelocInfo_pnORelocateBuffer_ipnLOopRecorder_pkcii_v_;
 text: .text%__1cLOopRecorder2t6MpnFArena__v_;
 text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cKCodeBufferQalloc_relocation6MI_v_;
 text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cIMachNodeJemit_size6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLTypeInstPtr2t6MnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_v_;
-text: .text%__1cLOptoRuntimeKjbyte_copy6FpW1L_v_;
 text: .text%__1cJloadINodeErule6kM_I_;
 text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cPciObjectFactoryLis_found_at6MipnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
 text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
 text: .text%__1cIAddINodeGOpcode6kM_i_;
 text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_;
-text: .text%__1cOmatch_into_reg6FpnENode_iii1_i_: matcher.o;
-text: .text%__1cENodeJis_Branch6kM_I_;
-text: .text%__1cITypeLong2t6Mxxi_v_;
 text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cFMutexElock6M_v_;
 text: .text%__1cJrRegLOperEtype6kM_pknEType__;
 text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cLTypeInstPtrEmake6FnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_pk0_;
-text: .text%__1cJStartNodeGpinned6kM_i_;
 text: .text%__1cHhashptr6Fpkv_i_;
 text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
 text: .text%__1cLklassItableToop_follow_contents6M_v_;
@@ -455,62 +303,39 @@
 text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
 text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
 text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cFBlockLis_uncommon6kMrnLBlock_Array__i_;
 text: .text%__1cEDict2F6kMpkv_pv_;
 text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
 text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
 text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
 text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJdo_method6FpnNmethodOopDesc__v_: recompilationMonitor.o;
 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%__1cOindOffset8OperJnum_edges6kM_I_;
-text: .text%__1cKBufferBlobIis_alive6kM_i_;
-text: .text%__1cFframeGsender6kMpnLRegisterMap_pnICodeBlob__0_;
-text: .text%__1cJTypeTupleJsingleton6kM_i_;
-text: .text%__1cKTypeAryPtrCeq6kMpknEType__i_;
 text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cETypeKhas_memory6kM_i_;
-text: .text%__1cHMatcherKReduceOper6MpnFState_ipnIMachNode_rpnENode__v_;
 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%__1cFframeOis_first_frame6kM_i_;
-text: .text%__1cICodeBlobOis_osr_adapter6kM_i_;
-text: .text%__1cHConNodeGis_Con6kM_I_;
 text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
 text: .text%__1cILoadNodeEhash6kM_I_;
 text: .text%__1cRMachSpillCopyNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cICodeBlobTfix_oop_relocations6MpC1_v_;
-text: .text%__1cICodeBlobTfix_oop_relocations6M_v_;
 text: .text%__1cIimmIOperIconstant6kM_l_;
-text: .text%__1cHCmpNodeGis_Cmp6kM_pk0_;
-text: .text%__1cFMutexbClock_without_safepoint_check6M_v_;
 text: .text%__1cENodeHdel_req6MI_v_;
 text: .text%__1cJCProjNodeEhash6kM_I_;
-text: .text%__1cHCompileJcan_alias6MpknHTypePtr_i_i_;
 text: .text%__1cJMultiNodeEhash6kM_I_;
 text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cHnmethodIis_alive6kM_i_;
 text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cMMergeMemNodeLis_MergeMem6M_p0_;
-text: .text%__1cUPSMarkSweepDecoratorQinsert_deadspace6MrlpnIHeapWord_L_i_;
 text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
 text: .text%__1cETypeEhash6kM_i_;
 text: .text%__1cJHashtableLhash_symbol6Fpkci_I_;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pnIciObject_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cYDebugInformationRecorderLcheck_phase6Mn0AFPhase__v_;
 text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
 text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_;
 text: .text%__1cICmpUNodeGOpcode6kM_i_;
 text: .text%__1cJOopMapSetSfind_map_at_offset6kMi_pnGOopMap__;
 text: .text%__1cICodeBlobbAoop_map_for_return_address6MpC_pnGOopMap__;
@@ -519,91 +344,55 @@
 text: .text%__1cIParmNodeGOpcode6kM_i_;
 text: .text%__1cTconvI2L_reg_regNodeErule6kM_I_;
 text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cLAdapterInfoFequal6kMp0_i_;
-text: .text%__1cGOopMapbEmap_compiler_reg_to_oopmap_reg6Miii_i_;
-text: .text%__1cTconstantPoolOopDescSklass_ref_index_at6Mi_i_;
 text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
 text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
 text: .text%__1cMloadConINodeMideal_Opcode6kM_i_;
 text: .text%__1cGTarjanEEVAL6M_p0_;
-text: .text%__1cKRelocationYindex_to_runtime_address6Fl_pC_;
 text: .text%__1cYexternal_word_RelocationLunpack_data6M_v_;
 text: .text%__1cJCatchNodeGOpcode6kM_i_;
 text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cITypeLongJsingleton6kM_i_;
-text: .text%__1cNencode_RegMem6FrnKCodeBuffer_iiiiii_v_;
-text: .text%__1cFBlockGselect6MrnJNode_List_rnLBlock_Array_pirnJVectorSet_IrnNGrowableArray4CI___pnENode__;
-text: .text%__1cGOopMapHset_xxx6MinLOopMapValueJoop_types_iii_v_;
-text: .text%__1cFMutexNowned_by_self6kM_i_;
 text: .text%__1cTCreateExceptionNodeErule6kM_I_;
 text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__;
 text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_;
 text: .text%__1cIMachNodeNoperand_index6kMI_i_;
-text: .text%__1cKMachIfNodeJis_MachIf6kM_pk0_;
 text: .text%__1cFBlockIis_Empty6kM_i_;
 text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__;
 text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
 text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_;
 text: .text%__1cGBitMapUclear_range_of_words6MLL_v_;
-text: .text%__1cGBitMapFclear6M_v_;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_;
 text: .text%__1cJrRegIOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cKCastPPNodeGOpcode6kM_i_;
 text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cFframeQoops_do_internal6MpnKOopClosure_pnLRegisterMap_i_v_;
 text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
 text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
 text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__;
 text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cMMachCallNodeGpinned6kM_i_;
-text: .text%__1cHnmethodJis_zombie6kM_i_;
 text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__;
 text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
 text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
 text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
 text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
 text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cFKlassMoop_is_array6kM_i_;
 text: .text%__1cIBoolNodeEhash6kM_I_;
 text: .text%__1cIimmPOperEtype6kM_pknEType__;
 text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJrRegPOperJnum_edges6kM_I_;
 text: .text%__1cOrFlagsRegUOperEtype6kM_pknEType__;
 text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
 text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cGOopMapJset_value6Miii_v_;
 text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
 text: .text%__1cNCollectedHeapbHcheck_for_non_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%__1cHMatcherTReduceInst_Interior6MpnFState_ipnIMachNode_IrpnENode__I_;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
 text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cKjmpConNodeGpinned6kM_i_;
-text: .text%__1cNSafePointNodebBneeds_polling_address_input6F_i_;
 text: .text%__1cHCompileRprobe_alias_cache6MpknHTypePtr__pn0APAliasCacheEntry__;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_;
-text: .text%__1cIAddPNodeHis_AddP6M_p0_;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
 text: .text%__1cIMachNodeGExpand6MpnFState_rnJNode_List__p0_;
 text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6FnTinstanceKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
 text: .text%__1cENodeIdestruct6M_v_;
 text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
 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%__1cPciInstanceKlassMis_interface6M_i_;
 text: .text%__1cHTypeIntEmake6Fiii_pk0_;
 text: .text%__1cJTypeTupleEhash6kM_i_;
 text: .text%__1cFParsePdo_one_bytecode6M_v_;
@@ -614,27 +403,14 @@
 text: .text%__1cJPSPermGenSallocate_permanent6ML_pnIHeapWord__;
 text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cIHaltNodeKmatch_edge6kMI_I_;
-text: .text%__1cENodeOis_block_start6kM_i_;
-text: .text%__1cHMatcherQis_save_on_entry6Mi_i_;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
 text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_;
 text: .text%__1cGBitMap2t6MpLL_v_;
-text: .text%__1cLOptoRuntimePnew_typeArray_C6FnJBasicType_ipnKJavaThread__v_;
-text: .text%__1cHCompilePfind_alias_type6MpknHTypePtr_i_pn0AJAliasType__;
 text: .text%__1cNnew_loc_value6FpnNPhaseRegAlloc_inILocationEType__pnNLocationValue__: output.o;
-text: .text%__1cKjmpDirNodePoper_input_base6kM_I_;
-text: .text%__1cMMachCallNodeLis_MachCall6M_p0_;
-text: .text%__1cHPhiNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cXjava_lang_ref_ReferenceNreferent_addr6FpnHoopDesc__p2_;
 text: .text%__1cOindOffset8OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cOindOffset8OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cZPhaseConservativeCoalesceJcopy_copy6MpnENode_2pnFBlock_I_i_;
-text: .text%__1cKutf8_write6FpCH_0_: utf8.o;
 text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
 text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
 text: .text%__1cJloadPNodeMideal_Opcode6kM_i_;
@@ -642,17 +418,11 @@
 text: .text%__1cOindOffset8OperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cLjmpConUNodeMideal_Opcode6kM_i_;
 text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cOis_range_check6FpnENode_r12ri_i_: ifnode.o;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__;
 text: .text%__1cHhashkey6Fpkv_i_;
 text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
 text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cKis_x2logic6FpnIPhaseGVN_pnENode__3_: cfgnode.o;
-text: .text%__1cHAbsNodeLis_absolute6FpnIPhaseGVN_pnENode__4_;
 text: .text%__1cGTarjanICOMPRESS6M_v_;
 text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cENodeHis_Goto6kM_I_;
-text: .text%__1cLPCTableNodeGpinned6kM_i_;
 text: .text%JVM_ReleaseUTF;
 text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cFChunk2t6ML_v_;
@@ -662,7 +432,6 @@
 text: .text%__1cFframebCsender_for_interpreter_frame6kMpnLRegisterMap__0_;
 text: .text%__1cFChunk2k6Fpv_v_;
 text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
 text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
 text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
 text: .text%__1cKjmpConNodePoper_input_base6kM_I_;
@@ -670,84 +439,44 @@
 text: .text%__1cMciMethodDataHdata_at6Mi_pnLProfileData__;
 text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
 text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
 text: .text%__1cHBitDataKcell_count6M_i_;
-text: .text%__1cFframeZsender_for_compiled_frame6kMpnLRegisterMap_pnICodeBlob__0_;
 text: .text%__1cFArenaEgrow6ML_pv_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__;
 text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cLBoxLockNodeNrematerialize6kM_i_;
-text: .text%__1cRMachSafePointNodeQis_MachSafePoint6M_p0_;
 text: .text%__1cJloadBNodeErule6kM_I_;
-text: .text%__1cITypeNodeRraise_bottom_type6MpknEType__v_;
 text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cICodeBlobLlink_offset6M_i_;
 text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
 text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cICodeBlobOis_i2c_adapter6kM_i_;
 text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cIJVMStateNclone_shallow6kM_p0_;
 text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGOopMapQset_callee_saved6Miiii_v_;
 text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
 text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cXjava_lang_ref_ReferenceJnext_addr6FpnHoopDesc__p2_;
 text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__;
-text: .text%__1cHMatcherTcollect_null_checks6MpnENode__v_;
-text: .text%__1cNSafePointNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHMemNodeMIdeal_common6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cGBitMapGat_put6MLi_v_;
-text: .text%__1cFciEnvIis_in_vm6F_i_;
 text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cMgetTimeNanos6F_x_;
-text: .text%__1cKciTypeFlowLStateVectorSapply_one_bytecode6MpnQciBytecodeStream__i_;
 text: .text%__1cKPSScavengeUoop_promotion_failed6FpnHoopDesc_pnLmarkOopDesc__v_;
 text: .text%__1cHTypePtrLmeet_offset6kMi_i_;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_;
-text: .text%__1cNPhaseRegAllocGis_oop6kMpknENode__i_;
 text: .text%__1cSPSPromotionManagerUoop_promotion_failed6MpnHoopDesc_pnLmarkOopDesc__2_;
-text: .text%__1cIMachOperLdisp_is_oop6kM_i_;
 text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
 text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_;
 text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
 text: .text%__1cOMethodLivenessKBasicBlockIload_one6Mi_v_;
-text: .text%__1cJTypeTupleCeq6kMpknEType__i_;
 text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__;
 text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cPjava_lang_ClassMis_primitive6FpnHoopDesc__i_;
 text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cKC2IAdapterIis_alive6kM_i_;
-text: .text%__1cENodeHget_int6kM_i_;
 text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
 text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cIAddPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__;
 text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
 text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeXis_iteratively_computed6M_i_;
-text: .text%__1cNloadConI0NodePoper_input_base6kM_I_;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_;
 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%__1cKRelocationJpack_data6M_i_;
-text: .text%__1cXjava_lang_ref_ReferencePdiscovered_addr6FpnHoopDesc__p2_;
 text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
 text: .text%__1cNtestP_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cETypeFempty6kM_i_;
-text: .text%__1cHMemNodeGis_Mem6M_p0_;
-text: .text%__1cZload_can_see_stored_value6FpnILoadNode_pnENode_pnOPhaseTransform__3_: memnode.o;
 text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cICodeBlobJis_zombie6kM_i_;
 text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
 text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
 text: .text%method_compare: methodOop.o;
 text: .text%__1cMMergeMemNodeEhash6kM_I_;
@@ -755,47 +484,31 @@
 text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
 text: .text%__1cFBlockUneeded_for_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
 text: .text%__1cIIndexSetSpopulate_free_list6F_v_;
-text: .text%__1cGIfNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cCosPelapsed_counter6F_x_;
 text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cIemit_d326FrnKCodeBuffer_i_v_;
-text: .text%__1cNloadConI0NodeHtwo_adr6kM_I_;
 text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
 text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
 text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_;
 text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
 text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
 text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cHnmethodKis_nmethod6kM_i_;
 text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
 text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cSCallStaticJavaNodeRis_CallStaticJava6kM_pk0_;
 text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_;
-text: .text%__1cOno_flip_branch6FpnFBlock__i_: block.o;
 text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
 text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_;
 text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cKjmpDirNodeGpinned6kM_i_;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cKjmpDirNodeHtwo_adr6kM_I_;
 text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cJrRegLOperJnum_edges6kM_I_;
 text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cNGrowableArray4CpnKScopeValue__2t6Mii_v_;
 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%__1cJCodeCacheIcontains6Fpv_i_;
 text: .text%__1cQciBytecodeStreamMreset_to_bci6Mi_v_;
-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%__1cHPhiNodeHsize_of6kM_I_;
 text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
 text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
@@ -804,92 +517,58 @@
 text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
 text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
 text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cILoadNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMPhaseIterGVNbGregister_new_node_with_optimizer6MpnENode__2_;
-text: .text%__1cKBufferBlobMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
 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%__1cPSignatureStreamHis_done6kM_i_;
-text: .text%__1cNrFlagsRegOperJnum_edges6kM_I_;
-text: .text%__1cLPhaseValuesGintcon6Mi_pnIConINode__;
 text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
 text: .text%__1cJcmpOpOperJnum_edges6kM_I_;
 text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
 text: .text%__1cNExceptionMark2T6M_v_;
 text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cJloadPNodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cOcompU_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cNmethodOopDescLis_accessor6kM_i_;
-text: .text%__1cPloadConUL32NodePoper_input_base6kM_I_;
 text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cKI2CAdapterIis_alive6kM_i_;
 text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
 text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
 text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cIGraphKitEstop6M_v_;
 text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cPloadConUL32NodeHtwo_adr6kM_I_;
 text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__;
 text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_;
 text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
 text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cHMonitorKnotify_all6M_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%__1cKOopClosureLdo_nmethods6kM_ki_;
-text: .text%__1cGOopMapHset_oop6Miii_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%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
 text: .text%__1cLBlock_StackXmost_frequent_successor6MpnFBlock__I_;
 text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cFBlockOschedule_local6MrnHMatcher_rnLBlock_Array_pirnJVectorSet_rnNGrowableArray4CI___i_;
 text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
 text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
 text: .text%__1cKstorePNodePoper_input_base6kM_I_;
-text: .text%__1cMPhaseIterGVNFwiden6kMpknEType_3_3_;
-text: .text%__1cKRegionNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
-text: .text%__1cLis_cond_add6FpnIPhaseGVN_pnHPhiNode__pnENode__;
 text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
 text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cGTarjanELINK6Mp01_v_;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_;
-text: .text%__1cIBoolNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cYCallStaticJavaDirectNodeHtwo_adr6kM_I_;
 text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
 text: .text%__1cLLShiftINodeGOpcode6kM_i_;
 text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_;
-text: .text%__1cHnmethodMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
 text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
 text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
 text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_irknQRelocationHolder_i_v_;
 text: .text%__1cLjmpConUNodePoper_input_base6kM_I_;
 text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cNtestP_regNodePoper_input_base6kM_I_;
-text: .text%__1cHSubNodeGis_Sub6M_p0_;
 text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_;
 text: .text%__1cIRootNodeGOpcode6kM_i_;
 text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
@@ -900,20 +579,13 @@
 text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
 text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
 text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cFframeToops_interpreted_do6MpnKOopClosure_pknLRegisterMap_i_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%__1cITypeLongEmake6Fx_pk0_;
-text: .text%__1cLjmpConUNodeGpinned6kM_i_;
 text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
 text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKTypeRawPtrJsingleton6kM_i_;
-text: .text%__1cNGCTaskManagerNresource_flag6MI_i_;
-text: .text%__1cNGCTaskManagerYshould_release_resources6MI_i_;
 text: .text%__1cIAddINodeLbottom_type6kM_pknEType__;
 text: .text%__1cNloadRangeNodeErule6kM_I_;
 text: .text%__1cNrFlagsRegOperKin_RegMask6kMi_pknHRegMask__;
@@ -923,9 +595,7 @@
 text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
 text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
 text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
 text: .text%__1cKstoreINodePoper_input_base6kM_I_;
-text: .text%__1cNtestP_regNodeHtwo_adr6kM_I_;
 text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
 text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
 text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
@@ -933,13 +603,8 @@
 text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
 text: .text%__1cJloadSNodeErule6kM_I_;
 text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMBasicAdapterHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKjmpConNodeJnum_opnds6kM_I_;
-text: .text%__1cLOptoRuntimeOnew_objArray_C6FpnMklassOopDesc_ipnKJavaThread__v_;
 text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cFciEnvXget_klass_by_index_impl6MpnPciInstanceKlass_iri_pnHciKlass__;
 text: .text%__1cKjmpDirNodeHsize_of6kM_I_;
-text: .text%__1cJloadPNodeJnum_opnds6kM_I_;
 text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
 text: .text%__1cHOopFlowNcompute_reach6MpnNPhaseRegAlloc_ipnEDict__v_;
@@ -952,83 +617,57 @@
 text: .text%__1cNGCTaskManagerWincrement_busy_workers6M_I_;
 text: .text%__1cLGCTaskQdDueueHdequeue6M_pnGGCTask__;
 text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cHMatcherXadjust_outgoing_stk_arg6Miiri_i_;
 text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_;
 text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cMBasicAdapterMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
 text: .text%__1cXindIndexScaleOffsetOperJnum_edges6kM_I_;
 text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cJStoreNodeIis_Store6kM_pk0_;
 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%__1cOcompI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cKmethodOperGmethod6kM_l_;
-text: .text%__1cHTypeAryRary_must_be_exact6kM_i_;
 text: .text%__1cKstoreINodeMideal_Opcode6kM_i_;
 text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cOcompU_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
 text: .text%__1cOindOffset8OperNbase_position6kM_i_;
 text: .text%__1cOindOffset8OperNconstant_disp6kM_i_;
-text: .text%__1cKjmpDirNodeHis_Goto6kM_I_;
 text: .text%__1cENodeHset_req6MIp0_v_;
 text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
 text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
 text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_;
-text: .text%__1cMMergeMemNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
 text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
 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%__1cNmethodOopDescMintrinsic_id6kM_nMvmIntrinsicsCID__;
-text: .text%__1cKstorePNodeJnum_opnds6kM_I_;
 text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cMMergeMemNodeQclone_all_memory6FpnENode__p0_;
 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%__1cICallNodeLis_CallLeaf6kM_pknMCallLeafNode__;
-text: .text%__1cLrecord_bias6FpknIPhaseIFG_ii_v_: coalesce.o;
 text: .text%__1cJrRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
 text: .text%__1cMObjectLocker2T6M_v_;
 text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_;
-text: .text%__1cRMachSafePointNodeRis_safepoint_node6kM_i_;
-text: .text%__1cHTypeIntFempty6kM_i_;
 text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
 text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cKTypeOopPtrWmake_from_klass_common6FpnHciKlass_ii_pk0_;
 text: .text%__1cRInvocationCounterEinit6M_v_;
 text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__;
 text: .text%__1cNSignatureInfoJdo_object6Mii_v_;
-text: .text%__1cLPhaseValuesFwiden6kMpknEType_3_3_;
 text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
 text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRRawBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cNtestI_regNodeHtwo_adr6kM_I_;
 text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_;
-text: .text%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__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%__1cOPhaseIdealLoopIsplit_up6MpnENode_22_i_;
 text: .text%__1cWConstantPoolCacheEntryRset_initial_state6Mi_v_;
 text: .text%__1cKNativeCallGverify6M_v_;
 text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
@@ -1036,43 +675,31 @@
 text: .text%__1cJloadINodeMideal_Opcode6kM_i_;
 text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
 text: .text%__1cIBoolNodeKmatch_edge6kMI_I_;
-text: .text%__1cITypeLongEmake6Fxx_pk0_;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_;
 text: .text%__1cCosGmalloc6FL_pv_;
 text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
 text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
 text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_;
-text: .text%__1cRMachNullCheckNodeQis_MachNullCheck6M_p0_;
 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%__1cOcompI_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
 text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
 text: .text%__1cNGrowableArray4CpnKciTypeFlowFBlock__2t6MpnFArena_iirk2_v_;
-text: .text%__1cLPhaseValuesHlongcon6Mx_pnIConLNode__;
 text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
 text: .text%__1cOcompI_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cMPhaseChaitinJsplit_USE6MpnENode_pnFBlock_2IIiinNGrowableArray4CI__i_I_;
-text: .text%__1cNCatchProjNodeMis_CatchProj6kM_pk0_;
 text: .text%__1cOcompU_rRegNodeMcisc_operand6kM_i_;
 text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodePoper_input_base6kM_I_;
 text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 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%__1cIciMethodbCinterpreter_invocation_count6M_i_;
 text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
 text: .text%JVM_CurrentThread;
-text: .text%__1cPClassFileParserbLparse_constant_pool_nameandtype_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKstoreINodeJnum_opnds6kM_I_;
 text: .text%__1cHTypeAryEhash6kM_i_;
 text: .text%JVM_GetClassModifiers;
 text: .text%JVM_GetClassAccessFlags;
@@ -1088,38 +715,24 @@
 text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cMrax_RegPOperEtype6kM_pknEType__;
 text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_;
 text: .text%__1cXindIndexScaleOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
 text: .text%__1cVCompressedWriteStream2t6Mi_v_;
 text: .text%__1cENode2t6Mp01_v_;
 text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStartNodeIis_Start6M_p0_;
 text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnMMonitorValue__2t6Mii_v_;
-text: .text%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
 text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
 text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
 text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
 text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciBytecodeStream__v_;
 text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
 text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
-text: .text%__1cRInlineCacheBufferIcontains6FpC_i_;
 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%__1cXvirtual_call_RelocationIparse_ic6FrpnICodeBlob_rpC5rppnHoopDesc_pi_nNRelocIterator__;
-text: .text%__1cLCounterDataOis_CounterData6M_i_;
-text: .text%__1cRCompilationPolicyNcanBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cOcompU_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cKcmpOpUOperJnum_edges6kM_I_;
-text: .text%__1cOrFlagsRegUOperJnum_edges6kM_I_;
-text: .text%__1cKCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
 text: .text%__1cMtlsLoadPNodeErule6kM_I_;
 text: .text%__1cIGraphKitGmemory6MI_pnENode__;
@@ -1131,42 +744,21 @@
 text: .text%__1cQciBytecodeStreamPget_field_index6M_i_;
 text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
 text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNchunk_oops_do6FpnKOopClosure_pnFChunk_pc_L_: handles.o;
 text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cMUniverseOperFclone6kM_pnIMachOper__;
-text: .text%__1cJlabelOperFclone6kM_pnIMachOper__;
 text: .text%__1cRaddI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cLPhaseValuesHmakecon6MpknEType__pnHConNode__;
 text: .text%__1cENodeHins_req6MIp0_v_;
 text: .text%__1cIGraphKitLclean_stack6Mi_v_;
 text: .text%__1cKRegionNodeHhas_phi6kM_pnHPhiNode__;
 text: .text%__1cNloadRangeNodePoper_input_base6kM_I_;
-text: .text%__1cOMachReturnNodeNis_MachReturn6M_p0_;
-text: .text%__1cNaddI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cQPreserveJVMState2t6MpnIGraphKit_i_v_;
-text: .text%__1cNtestP_regNodeMcisc_operand6kM_i_;
-text: .text%__1cKjmpConNodeHtwo_adr6kM_I_;
-text: .text%__1cPClassFileParserbJparse_constant_pool_methodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_;
-text: .text%__1cWConstantPoolCacheEntryLis_resolved6kMnJBytecodesECode__i_;
 text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_;
-text: .text%__1cMPhaseChaitinVmay_be_copy_of_callee6kMpnENode__i_;
 text: .text%__1cNtestP_regNodeErule6kM_I_;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
 text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
 text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_;
-text: .text%__1cOcompU_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cKCodeBufferOadd_stub_reloc6MpCrknQRelocationHolder_i_v_;
-text: .text%__1cKCodeBufferOalloc_relocate6M_pnORelocateBuffer__;
 text: .text%__1cNtestI_regNodeErule6kM_I_;
 text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cFParseKensure_phi6Mii_pnHPhiNode__;
 text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
 text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cHAddress2t6MpCnJrelocInfoJrelocType__v_;
-text: .text%__1cFciEnvSget_klass_by_index6MpnPciInstanceKlass_iri_pnHciKlass__;
 text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
 text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
 text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
@@ -1178,53 +770,25 @@
 text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
 text: .text%__1cITypeFuncEhash6kM_i_;
 text: .text%__1cOcompI_rRegNodeErule6kM_I_;
-text: .text%__1cIciMethodPliveness_at_bci6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessPget_liveness_at6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessKBasicBlockPget_liveness_at6MpnIciMethod_i_nGBitMap__;
-text: .text%__1cITypeLongFempty6kM_i_;
-text: .text%__1cMTypeKlassPtrCeq6kMpknEType__i_;
 text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
 text: .text%__1cJLoadSNodeGOpcode6kM_i_;
 text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitObasic_plus_adr6MpnENode_2l_2_;
 text: .text%__1cJVectorSet2L6MI_rnDSet__;
 text: .text%__1cJVectorSetEgrow6MI_v_;
-text: .text%__1cLCastP2LNodeGOpcode6kM_i_;
 text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cJAssemblerEcall6MpCnJrelocInfoJrelocType__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%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
 text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_;
-text: .text%__1cUParallelScavengeHeapNtlab_capacity6kM_L_;
 text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseCCPFwiden6kMpknEType_3_3_;
-text: .text%__1cHTypePtrJsingleton6kM_i_;
 text: .text%__1cNArgumentCountDset6MinJBasicType__v_;
-text: .text%__1cWShouldNotReachHereNodeGpinned6kM_i_;
-text: .text%__1cNsubI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cNtestI_regNodePoper_input_base6kM_I_;
 text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeHtwo_adr6kM_I_;
-text: .text%__1cQMachCallJavaNodePis_MachCallJava6M_p0_;
 text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_22nHAddressLScaleFactor_ipCrknQRelocationHolder__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_nHAddress__v_;
 text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cITypeFuncCeq6kMpknEType__i_;
-text: .text%__1cMloadConLNodePoper_input_base6kM_I_;
-text: .text%__1cMPhaseIterGVNHmakecon6MpknEType__pnHConNode__;
 text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cHoopDescGverify6M_v_;
-text: .text%__1cQconstMethodKlassSoop_is_constMethod6kM_i_;
-text: .text%__1cRconstantPoolKlassToop_is_constantPool6kM_i_;
-text: .text%__1cOcompP_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cHTypePtrHget_con6kM_l_;
-text: .text%__1cHMatcherWis_short_branch_offset6Mi_i_;
-text: .text%__1cMloadConLNodeHtwo_adr6kM_I_;
 text: .text%__1cMTypeKlassPtr2t6MnHTypePtrDPTR_pnHciKlass_i_v_;
 text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
@@ -1232,31 +796,20 @@
 text: .text%__1cJVectorSet2t6MpnFArena__v_;
 text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
 text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cNloadConP0NodePoper_input_base6kM_I_;
 text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
 text: .text%__1cRNativeInstructionFwrote6Mi_v_;
 text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
 text: .text%__1cOrFlagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIciMethodLscale_count6Mi_i_;
-text: .text%__1cLjmpConUNodeJnum_opnds6kM_I_;
 text: .text%__1cQciBytecodeStreamQget_method_index6M_i_;
 text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cPSignatureStream2t6MnMsymbolHandle_i_v_;
 text: .text%JVM_GetMethodIxLocalsCount;
 text: .text%__1cJlabelOperFlabel6kM_pnFLabel__;
 text: .text%__1cGOopMapJheap_size6kM_i_;
 text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
 text: .text%__1cMloadConLNodeErule6kM_I_;
-text: .text%__1cOMacroAssemblerZneeds_explicit_null_check6Fi_i_;
-text: .text%__1cNSafePointNode2t6MIpnIJVMState__v_;
 text: .text%__1cLas_TosState6FnJBasicType__nITosState__;
 text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_;
-text: .text%__1cWConstantPoolCacheEntryIas_flags6MnITosState_iiiii_i_;
-text: .text%__1cNloadConP0NodeHtwo_adr6kM_I_;
 text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cWThreadLocalAllocBufferFclear6M_v_;
-text: .text%__1cWThreadLocalAllocBufferVaccumulate_statistics6MLi_v_;
-text: .text%__1cWThreadLocalAllocBufferImax_size6F_L_;
 text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
 text: .text%__1cJloadINodePoper_input_base6kM_I_;
 text: .text%__1cIRootNodeLbottom_type6kM_pknEType__;
@@ -1264,10 +817,8 @@
 text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
 text: .text%__1cFParsePload_state_from6Mpn0AFBlock__v_;
 text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cNloadRangeNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
 text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKimmL32OperJconstantL6kM_x_;
 text: .text%__1cIciObject2t6MnGHandle__v_;
 text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
 text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
@@ -1276,30 +827,18 @@
 text: .text%__1cLBoxLockNodeJideal_reg6kM_I_;
 text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
 text: .text%__1cICHeapObj2n6FL_pv_;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
 text: .text%__1cKInlineTreeJcallee_at6kMipnIciMethod__p0_;
 text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
 text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cIHaltNodeGpinned6kM_i_;
 text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
 text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__;
 text: .text%__1cOCallRelocationFvalue6M_pC_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCl_v_;
-text: .text%__1cOCallRelocationWfix_relocation_at_move6Ml_v_;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
-text: .text%__1cOCallRelocationPset_destination6MpCl_v_;
-text: .text%__1cHcommute6FpnENode_ii_i_: addnode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__;
-text: .text%__1cENodeQlatency_from_use6kMrnLBlock_Array_rnNGrowableArray4CI__pk0p0_i_;
-text: .text%__1cHAddNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
 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%__1cJloadPNodeHtwo_adr6kM_I_;
 text: .text%__1cNSignatureInfoGdo_int6M_v_;
 text: .text%__1cKjmpDirNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
@@ -1311,43 +850,26 @@
 text: .text%__1cIAddLNodeGOpcode6kM_i_;
 text: .text%__1cJLoadPNodeJideal_reg6kM_I_;
 text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cOkill_dead_code6FpnENode_pnMPhaseIterGVN__i_: node.o;
-text: .text%__1cKjmpDirNodeFclone6kM_pnENode__;
-text: .text%__1cOcompI_rRegNodeJnum_opnds6kM_I_;
 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%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2ipnGThread__v_;
 text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cOcompI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cMPhaseChaitinJsplit_DEF6MpnENode_pnFBlock_iIp25nNGrowableArray4CI__i_I_;
-text: .text%__1cENodeHis_Type6M_pnITypeNode__;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_;
 text: .text%__1cICHeapObj2k6Fpv_v_;
 text: .text%__1cRaddP_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cENode2n6FLi_pv_;
-text: .text%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
 text: .text%__1cIAddINodeGadd_id6kM_pknEType__;
 text: .text%__1cKStoreCNodeGOpcode6kM_i_;
 text: .text%__1cTconvI2L_reg_regNodeMcisc_operand6kM_i_;
 text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
-text: .text%__1cILoadNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cJStoreNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cNFingerprinterLfingerprint6M_L_;
-text: .text%__1cLConvI2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cIGraphKitRnull_check_common6MpnENode_nJBasicType_i_2_;
 text: .text%__1cKBlock_ListGremove6MI_v_;
 text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
 text: .text%__1cKciTypeFlowGJsrSetJcopy_into6Mp1_v_;
 text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
-text: .text%__1cLcastP2LNodePoper_input_base6kM_I_;
-text: .text%__1cQStackFrameStream2t6MpnKJavaThread_i_v_;
 text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
 text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
 text: .text%__1cMVirtualSpaceOcommitted_size6kM_L_;
@@ -1362,105 +884,58 @@
 text: .text%__1cNaddI_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
 text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
 text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cNSignatureInfoHdo_void6M_v_;
-text: .text%__1cLAdapterInfoKhash_value6kM_l_;
 text: .text%JVM_GetCPMethodClassNameUTF;
 text: .text%__1cHOopFlowFclone6Mp0i_v_;
 text: .text%__1cRSignatureIteratorSiterate_parameters6ML_v_;
-text: .text%__1cILoopNodeHis_Loop6M_p0_;
 text: .text%__1cPindOffset32OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cPindOffset32OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cNmethodOopDescPis_final_method6kM_i_;
-text: .text%__1cSComputeAdapterInfoHcompute6Mplii_v_;
-text: .text%__1cLAdapterInfoHcompute6MnMmethodHandle_i_v_;
-text: .text%__1cLAdapterInfo2T6M_v_;
-text: .text%__1cSComputeAdapterInfoLreturn_type6MnJBasicType__i_;
-text: .text%__1cSComputeAdapterInfoMsize_in_bits6FnMmethodHandle__i_;
-text: .text%__1cMAdapterCacheGlookup6MpnLAdapterInfo__pnMBasicAdapter__;
-text: .text%__1cJloadINodeZcheck_for_anti_dependence6kM_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%__1cOcompP_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
 text: .text%__1cKjmpDirNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_virtual_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_;
-text: .text%__1cKCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cKciTypeFlowNmake_range_at6Mi_pn0AFRange__;
 text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
 text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cLklassVtableWneeds_new_vtable_entry6FpnNmethodOopDesc_pnMklassOopDesc_pnHoopDesc_pnNsymbolOopDesc_nLAccessFlags__i_;
 text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
 text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
-text: .text%__1cKoopFactoryPnew_constMethod6FiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cPClassFileParserMparse_method6MnSconstantPoolHandle_ipnLAccessFlags_pnPtypeArrayHandle_55pnGThread__nMmethodHandle__;
-text: .text%__1cFBlockUhoist_LCA_above_defs6Mp01IrnLBlock_Array__1_;
-text: .text%__1cScompI_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
 text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cQciBytecodeStreamJget_field6Mri_pnHciField__;
 text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cKTypeOopPtrFempty6kM_i_;
 text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cKCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cMMergeMemNodeNgrow_to_match6Mpk0_v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_;
 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%__1cPClassFileParserbDverify_legal_method_modifiers6MiinMsymbolHandle_pnGThread__v_;
 text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
 text: .text%__1cNloadKlassNodePoper_input_base6kM_I_;
 text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cPClassFileParserZskip_over_field_signature6MpciIpnGThread__1_;
 text: .text%__1cMMergeMemNode2t6MpnENode__v_;
 text: .text%__1cMMergeMemNodeRmake_empty_memory6F_pnENode__;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
-text: .text%__1cNtestP_regNodeJnum_opnds6kM_I_;
-text: .text%__1cJStartNodeGis_CFG6kM_i_;
-text: .text%__1cRaddI_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_;
 text: .text%__1cMindIndexOperJnum_edges6kM_I_;
 text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cKGCStatInfoMset_gc_usage6MinLMemoryUsage_i_v_;
 text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__;
 text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cLRuntimeStubIis_alive6kM_i_;
-text: .text%__1cMWarmCallInfoHis_cold6kM_i_;
 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%__1cIAddINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cFParseMdo_one_block6M_v_;
 text: .text%__1cFParseFBlockMrecord_state6Mp0_v_;
-text: .text%__1cNtestP_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cJloadLNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cNloadRangeNodeJnum_opnds6kM_I_;
 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%__1cJCatchNodeIis_Catch6kM_pk0_;
 text: .text%__1cJLoadBNodeGOpcode6kM_i_;
 text: .text%__1cENodeHlatency6MI_I_;
 text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
@@ -1468,49 +943,31 @@
 text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
 text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
 text: .text%__1cKTypeOopPtrHget_con6kM_l_;
-text: .text%__1cMPhaseChaitinKprompt_use6MpnFBlock_I_i_;
 text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cIGraphKitTadd_safepoint_edges6MpnNSafePointNode_i_v_;
 text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIJVMStateKclone_deep6kM_p0_;
 text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
 text: .text%__1cXindIndexScaleOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cXindIndexScaleOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cGBitMapVset_union_with_result6M0_i_;
-text: .text%__1cNSafePointNodeEhash6kM_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%__1cTC2IAdapterGeneratorXlazy_std_verified_entry6FnMmethodHandle__pC_;
-text: .text%__1cPindOffset32OperJnum_edges6kM_I_;
 text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_iipnGThread__v_;
 text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
 text: .text%__1cNsubI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cTCreateExceptionNodeHtwo_adr6kM_I_;
 text: .text%__1cPindOffset32OperFscale6kM_i_;
 text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cICmpPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cbFCompressedLineNumberWriteStream2t6Mi_v_;
-text: .text%__1cPClassFileParserWparse_linenumber_table6MIIpipnGThread__pC_;
 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%__1cKciTypeFlowFRangeNget_block_for6Mpn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cSvframeStreamCommonbBfill_from_interpreter_frame6M_v_;
-text: .text%__1cHMonitorEwait6Mil_i_;
-text: .text%__1cLcastP2LNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadKlassNodeZcheck_for_anti_dependence6kM_i_;
 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%__1cQciBytecodeStreamKget_method6Mri_pnIciMethod__;
 text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
@@ -1518,16 +975,12 @@
 text: .text%__1cNstoreImmBNodePoper_input_base6kM_I_;
 text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cMindirectOperJnum_edges6kM_I_;
 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%__1cPClassFileParserbFparse_constant_pool_class_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cOMethodLivenessKBasicBlockMmerge_normal6MnGBitMap__i_;
-text: .text%__1cTleaPIdxScaleOffNodeHtwo_adr6kM_I_;
 text: .text%__1cETypeFwiden6kMpk0_2_;
 text: .text%__1cKciTypeFlowLStateVector2t6Mp0_v_;
 text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__;
@@ -1536,40 +989,27 @@
 text: .text%__1cNCatchProjNodeEhash6kM_I_;
 text: .text%__1cSvframeStreamCommonEnext6M_v_;
 text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cKciTypeFlowFBlockPis_simpler_than6Mp1_i_;
 text: .text%__1cJimmI8OperIconstant6kM_l_;
 text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
 text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherVReduceInst_Chain_Rule6MpnFState_ipnIMachNode_rpnENode__v_;
 text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cNincI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cLjmpConUNodeHtwo_adr6kM_I_;
-text: .text%__1cHMatcherScalling_convention6FpnLOptoRegPair_Ii_v_;
 text: .text%__1cKPerfStringKset_string6Mpkc_v_;
 text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cICmpINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHTypeAryCeq6kMpknEType__i_;
 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%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__;
 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%__1cICallNodeOis_CallRuntime6kM_pknPCallRuntimeNode__;
 text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
 text: .text%__1cNstoreImmBNodeMideal_Opcode6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorEmeet6Mpk1_i_;
-text: .text%__1cIMachNodeTmay_be_short_branch6kM_i_;
-text: .text%__1cJloadINodeJnum_opnds6kM_I_;
 text: .text%__1cNaddI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cRMachSafePointNode2t6M_v_;
 text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
 text: .text%__1cOcompP_rRegNodeMcisc_operand6kM_i_;
 text: .text%__1cMPhaseChaitinKFind_const6kMpknENode__I_;
@@ -1591,62 +1031,41 @@
 text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
 text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIimmPOperIconstant6kM_l_;
-text: .text%__1cIimmPOperPconstant_is_oop6kM_i_;
-text: .text%__1cOleaPIdxOffNodeHtwo_adr6kM_I_;
 text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
 text: .text%__1cTleaPIdxScaleOffNodeErule6kM_I_;
 text: .text%JVM_IsNaN;
-text: .text%__1cXinsert_anti_dependences6FrpnFBlock_pnENode_rnLBlock_Array__i_: gcm.o;
-text: .text%__1cLOptoRuntimebCcomplete_monitor_unlocking_C6FpnHoopDesc_pnJBasicLock__v_;
 text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_;
-text: .text%__1cHCompileKTracePhase2t6MpkcpnMelapsedTimer_i_v_;
 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%__1cMMachCallNode2t6M_v_;
 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_RegPOperJnum_edges6kM_I_;
-text: .text%__1cIGraphKitbLset_predefined_input_for_runtime_call6MpnNSafePointNode__v_;
 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%__1cNmethodOopDescWwas_executed_more_than6kMi_i_;
 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%__1cOPhaseIdealLoopHdom_lca6kMpnENode_2_2_;
-text: .text%__1cMPrefetchNodeGOpcode6kM_i_;
-text: .text%__1cSReferenceProcessorSdiscover_reference6MpnHoopDesc_nNReferenceType__i_;
-text: .text%__1cSReferenceProcessorTget_discovered_list6MnNReferenceType__ppnHoopDesc__;
-text: .text%__1cXjava_lang_ref_ReferenceIset_next6FpnHoopDesc_2_v_;
 text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cNtestI_regNodeJnum_opnds6kM_I_;
 text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cIMachOperNconstant_disp6kM_i_;
 text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cFframeNis_java_frame6kM_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%__1cIciMethodRhas_compiled_code6M_i_;
-text: .text%__1cOoop_RelocationJpack_data6M_i_;
 text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
 text: .text%__1cGOopMap2t6Mii_v_;
 text: .text%__1cJOopMapSetKadd_gc_map6MipnGOopMap__v_;
 text: .text%__1cNincI_rRegNodeErule6kM_I_;
-text: .text%__1cRMachSafePointNodePis_MachCallLeaf6M_pnQMachCallLeafNode__;
-text: .text%__1cRMachSafePointNodeLset_oop_map6MpnGOopMap__v_;
 text: .text%__1cYDebugInformationRecorderNadd_safepoint6MipnGOopMap__v_;
 text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
 text: .text%__1cYDebugInformationRecorderKadd_oopmap6MipnGOopMap__v_;
@@ -1660,44 +1079,24 @@
 text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
 text: .text%__1cNsubI_rRegNodeErule6kM_I_;
 text: .text%__1cRaddP_rReg_immNodeErule6kM_I_;
-text: .text%__1cPClassFileParserbGparse_constant_pool_string_entry6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cJloadLNodePoper_input_base6kM_I_;
-text: .text%__1cRshrL_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cRMachSafePointNodeSis_MachCallRuntime6M_pnTMachCallRuntimeNode__;
-text: .text%__1cNaddI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cOcompP_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_ipnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
 text: .text%__1cIAndLNodeGOpcode6kM_i_;
 text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cMCallJavaNodeLis_CallJava6kM_pk0_;
-text: .text%__1cICallNodeScalling_convention6kMpnLOptoRegPair_I_v_;
 text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cRcmpFastUnlockNodePoper_input_base6kM_I_;
 text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompP_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cFStateW_sub_Op_CallStaticJava6MpknENode__v_;
-text: .text%__1cWMachCallStaticJavaNodeVis_MachCallStaticJava6M_p0_;
-text: .text%__1cRaddP_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_nMmethodHandle_pnGThread__v_;
-text: .text%__1cSComputeAdapterInfoJdo_object6Mii_v_;
-text: .text%__1cRMachSafePointNodeWis_MachCallInterpreter6M_pnXMachCallInterpreterNode__;
 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%__1cHConNodeEmake6FpknEType__p0_;
-text: .text%__1cScompI_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cJLoadCNodeGOpcode6kM_i_;
 text: .text%__1cYCallStaticJavaDirectNodeFreloc6kM_i_;
 text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_;
-text: .text%__1cJTraceTime2t6MpkciipnMoutputStream__v_;
 text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__;
 text: .text%__1cIGraphKitQset_saved_ex_oop6FpnNSafePointNode_pnENode__v_;
 text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
@@ -1705,33 +1104,17 @@
 text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
 text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cNstoreImmBNodeJnum_opnds6kM_I_;
 text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
 text: .text%__1cJTimeStampGupdate6M_v_;
 text: .text%__1cFframeZinterpreter_frame_set_bcx6Ml_v_;
-text: .text%__1cCosFsleep6FpnGThread_xi_i_;
-text: .text%__1cNgetTimeMillis6F_x_;
 text: .text%__1cRaddP_rReg_immNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
-text: .text%__1cLPhaseValuesHzerocon6MnJBasicType__pnHConNode__;
 text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_;
-text: .text%__1cTconvI2L_reg_regNodeJnum_opnds6kM_I_;
-text: .text%__1cIGraphKitNuncommon_trap6MipnHciKlass_pkci_v_;
-text: .text%__1cILoadNodeEmake6FpnENode_22pknHTypePtr_pknEType_nJBasicType__p0_;
-text: .text%__1cIGraphKitJmake_load6MpnENode_2pknEType_nJBasicType_i_2_;
-text: .text%__1cTconvI2L_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cTno_rax_rbx_RegPOperJnum_edges6kM_I_;
 text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
 text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
 text: .text%__1cIHaltNode2t6MpnENode_2_v_;
 text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNaddI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cGPcDesc2t6Mii_v_;
-text: .text%__1cHnmethodKcopy_pc_at6MipnGPcDesc__v_;
 text: .text%__1cKciTypeFlowLStateVectorJcopy_into6kMp1_v_;
 text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_;
-text: .text%__1cOcompL_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cMoutputStreamPupdate_position6MpkcL_v_;
 text: .text%__1cMstringStreamFwrite6MpkcL_v_;
 text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
@@ -1741,87 +1124,57 @@
 text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
 text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
 text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSCompareAndSwapNodeGis_CFG6kM_i_;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__Icontains6kMrk2_i_;
-text: .text%__1cKciTypeFlowFBlock2t6Mp0pn0AFRange_pn0AGJsrSet__v_;
 text: .text%__1cNGrowableArray4CpnKciTypeFlowJJsrRecord__2t6MpnFArena_iirk2_v_;
-text: .text%__1cKstoreCNodeJnum_opnds6kM_I_;
 text: .text%__1cNmodI_rRegNodeErule6kM_I_;
-text: .text%__1cKInlineTreeWfind_subtree_from_root6Fp0pnIJVMState_pnIciMethod_i_1_;
 text: .text%__1cNGrowableArray4CpnPciInstanceKlass__2t6MpnFArena_iirk1_v_;
 text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
 text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
 text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cFParsePdo_field_access6Mii_v_;
 text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOMethodLivenessNmake_block_at6Mipn0AKBasicBlock__2_;
-text: .text%__1cKstorePNodeHtwo_adr6kM_I_;
 text: .text%__1cKciTypeFlowPflow_successors6MpnNGrowableArray4Cpn0AFBlock___pn0ALStateVector__v_;
-text: .text%__1cGciTypeMis_classless6kM_i_;
 text: .text%__1cRsalI_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cJloadFNodeErule6kM_I_;
-text: .text%__1cKBranchDataNis_BranchData6M_i_;
-text: .text%__1cIJumpDataLis_JumpData6M_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%__1cNloadKlassNodeJnum_opnds6kM_I_;
 text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
 text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
 text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cMCreateExNodeGpinned6kM_i_;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
 text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRScavengeRootsTaskEname6M_pc_;
 text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNtestP_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKstoreINodeHtwo_adr6kM_I_;
 text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
 text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEmake6Fii_pk0_;
-text: .text%__1cRcmpFastUnlockNodeHtwo_adr6kM_I_;
 text: .text%__1cJloadSNodeMideal_Opcode6kM_i_;
-text: .text%__1cPDictionaryEntrybAcontains_protection_domain6kMpnHoopDesc__i_;
 text: .text%__1cIregFOperEtype6kM_pknEType__;
 text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cMLinkResolverbNlinktime_resolve_virtual_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cNsubI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cNsubI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cLcastP2LNodeJnum_opnds6kM_I_;
 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%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
 text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHCompileZintrinsic_insertion_index6MpnIciMethod_i_i_;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_;
 text: .text%__1cJVectorSetFClear6M_v_;
 text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
 text: .text%__1cICodeHeapSallocated_capacity6kM_L_;
-text: .text%__1cICodeBlobRis_at_poll_return6MpC_i_;
 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%__1cSHighResTimeSamplerLtake_sample6M_x_;
-text: .text%__1cRis_error_reported6F_i_;
 text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
 text: .text%__1cPStatSamplerTaskEtask6M_v_;
 text: .text%__1cMPeriodicTaskMtime_to_wait6F_L_;
 text: .text%__1cMPeriodicTaskOreal_time_tick6FL_v_;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_;
 text: .text%__1cLStatSamplerOcollect_sample6F_v_;
 text: .text%__1cJloadBNodePoper_input_base6kM_I_;
 text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__;
@@ -1829,98 +1182,64 @@
 text: .text%__1cOemit_d64_reloc6FrnKCodeBuffer_lnJrelocInfoJrelocType_i_v_;
 text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
 text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__v_;
 text: .text%__1cENodeHget_ptr6kM_l_;
 text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
 text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKI2CAdapterOis_i2c_adapter6kM_i_;
 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%__1cMorI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cFParseRensure_memory_phi6Mii_pnHPhiNode__;
 text: .text%__1cNdecI_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cJLoadINodeJideal_reg6kM_I_;
-text: .text%__1cKRelocationWfix_relocation_at_move6Ml_v_;
 text: .text%__1cPindOffset32OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
 text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cScompU_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cHCompilebAallow_range_check_smearing6kM_i_;
 text: .text%__1cLBuildCutout2T6M_v_;
 text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
 text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_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%__1cMPhaseChaitinTsplit_Rematerialize6MpnENode_pnFBlock_IrInNGrowableArray4CI__ipIp2i_2_;
 text: .text%__1cJcmpOpOperFccode6kM_i_;
-text: .text%__1cKjmpDirNodeTmay_be_short_branch6kM_i_;
-text: .text%__1cKjmpDirNodeOis_pc_relative6kM_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%__1cFParseKdo_get_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_;
 text: .text%__1cHMulNodeEhash6kM_I_;
 text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_p0_v_;
-text: .text%__1cTconvI2L_reg_regNodeHtwo_adr6kM_I_;
 text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
 text: .text%__1cScompU_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cNFingerprinterJdo_object6Mii_v_;
-text: .text%__1cMloadConFNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
-text: .text%__1cMloadConFNodeHtwo_adr6kM_I_;
-text: .text%__1cICallNodeSis_CallDynamicJava6kM_pknTCallDynamicJavaNode__;
-text: .text%__1cRcmpFastUnlockNodeJnum_opnds6kM_I_;
 text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cUParallelScavengeHeapMmem_allocate6MLii_pnIHeapWord__;
 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%__1cLcastP2LNodeHtwo_adr6kM_I_;
 text: .text%__1cIMachOperIconstant6kM_l_;
-text: .text%__1cJloadSNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
 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%__1cKjmpConNodeTmay_be_short_branch6kM_i_;
-text: .text%__1cKjmpConNodeOis_pc_relative6kM_i_;
 text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCodeBufferKend_a_stub6M_v_;
 text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cKCodeBufferMstart_a_stub6M_v_;
-text: .text%__1cFParseUprofile_taken_branch6Mi_v_;
 text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciBytecodeStream_pn0ALStateVector__v_;
-text: .text%__1cKReturnNodeGis_CFG6kM_i_;
 text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
 text: .text%__1cRaddI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
 text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cNmethodOopDescbHhas_unloaded_classes_in_signature6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cIciObjectRis_instance_klass6M_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%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
-text: .text%__1cNloadRangeNodeHtwo_adr6kM_I_;
-text: .text%__1cJloadLNodeJnum_opnds6kM_I_;
 text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_;
 text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__l_;
 text: .text%__1cHoopDescSslow_identity_hash6M_l_;
@@ -1928,38 +1247,23 @@
 text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
 text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
 text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadCNodeErule6kM_I_;
-text: .text%__1cKOSRAdapterIis_alive6kM_i_;
-text: .text%__1cQjava_lang_StringMbasic_create6FpnQtypeArrayOopDesc_ipnGThread__nGHandle__;
 text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
 text: .text%__1cXindIndexScaleOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOcompL_rRegNodeHtwo_adr6kM_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%__1cKciTypeFlowLStateVectorJdo_invoke6MpnQciBytecodeStream_i_v_;
 text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_;
-text: .text%__1cJloadINodeHtwo_adr6kM_I_;
-text: .text%__1cQmark_inner_loops6FpnIPhaseCFG_pnFBlock__v_: block.o;
 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%__1cPCountedLoopNodeOis_CountedLoop6M_p0_;
 text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cPClassFileParserWparse_field_attributes6MnSconstantPoolHandle_iHpHpi2pnPtypeArrayHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_modifiers6MiipnGThread__v_;
 text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
 text: .text%__1cLProfileDataOtranslate_from6Mp0_v_;
 text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -1967,59 +1271,37 @@
 text: .text%__1cNloadConI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cTconvI2L_reg_regNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cMWarmCallInfoGis_hot6kM_i_;
 text: .text%__1cNprefetchwNodeMideal_Opcode6kM_i_;
 text: .text%__1cIAddINodeJideal_reg6kM_I_;
-text: .text%__1cNCatchProjNode2t6MpnENode_Ii_v_;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__;
 text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmulL_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cKciTypeFlowIcan_trap6MrnQciBytecodeStream__i_;
-text: .text%__1cQVMOperationQdDueueLqueue_empty6Mi_i_;
 text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cSComputeAdapterInfoGdo_int6M_v_;
 text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cIGraphKitTtoo_many_recompiles6MnODeoptimizationLDeoptReason__i_;
 text: .text%__1cHCompileFstart6kM_pnJStartNode__;
 text: .text%__1cNmulL_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cLPCTableNodeEhash6kM_I_;
 text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cJStartNodeOis_block_start6kM_i_;
 text: .text%__1cQComputeCallStackHdo_void6M_v_;
 text: .text%__1cNaddI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOtoo_many_traps6MnODeoptimizationLDeoptReason__i_;
-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%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%jni_GetPrimitiveArrayCritical: jni.o;
 text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
-text: .text%__1cPClassFileParserbIparse_constant_pool_fieldref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNdecI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
-text: .text%__1cNGrowableArray4Cl_2t6Mii_v_;
 text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMpnNmethodOopDesc_i_pnHnmethod__;
 text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLPCTableNodeKis_PCTable6kM_pk0_;
 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%__1cLimmUL32OperJconstantL6kM_x_;
 text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
 text: .text%__1cFParseHdo_call6M_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%__1cScompP_mem_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cICodeHeapLheader_size6F_L_;
-text: .text%__1cJloadBNodeJnum_opnds6kM_I_;
 text: .text%__1cENodeLbottom_type6kM_pknEType__;
 text: .text%__1cXindIndexScaleOffsetOperNconstant_disp6kM_i_;
 text: .text%__1cSindIndexOffsetOperJnum_edges6kM_I_;
@@ -2033,11 +1315,9 @@
 text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__;
 text: .text%jni_DeleteLocalRef: jni.o;
 text: .text%__1cJloadSNodePoper_input_base6kM_I_;
-text: .text%__1cPno_rax_RegPOperJnum_edges6kM_I_;
 text: .text%__1cOcompI_rRegNodeQuse_cisc_RegMask6M_v_;
 text: .text%jni_SetIntField: jni.o;
 text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMMutableSpaceFclear6M_v_;
 text: .text%__1cNtestI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
 text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
@@ -2048,46 +1328,28 @@
 text: .text%__1cVExceptionHandlerTableJadd_entry6MnRHandlerTableEntry__v_;
 text: .text%__1cPsalI_rReg_1NodeMideal_Opcode6kM_i_;
 text: .text%__1cRaddP_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__v_;
 text: .text%__1cQComputeCallStackJdo_object6Mii_v_;
-text: .text%__1cIGraphKitNcast_not_null6MpnENode__2_;
 text: .text%__1cTconvL2I_reg_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cKPSYoungGenNused_in_bytes6kM_L_;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
 text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cPcheckCastPPNodeJnum_opnds6kM_I_;
-text: .text%__1cLLShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cNandL_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cIciMethodWwas_executed_more_than6Mi_i_;
-text: .text%__1cSReferenceProcessorbAprocess_discovered_reflist6MppnHoopDesc_pnPReferencePolicy_i_v_;
-text: .text%__1cSReferenceProcessorOprocess_phase36MppnHoopDesc_ipnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__v_;
-text: .text%__1cSReferenceProcessorOprocess_phase26MppnHoopDesc_pnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorbAenqueue_discovered_reflist6MpnHoopDesc_p2_v_;
 text: .text%__1cTleaPIdxScaleOffNodeMideal_Opcode6kM_i_;
 text: .text%__1cTleaPIdxScaleOffNodePoper_input_base6kM_I_;
-text: .text%__1cFLabelJadd_patch6Mi_v_;
 text: .text%__1cKMemBarNodeEhash6kM_I_;
 text: .text%__1cOcompP_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConL0NodePoper_input_base6kM_I_;
 text: .text%__1cNsubI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJMarkSweepSMarkAndPushClosureLdo_nmethods6kM_ki_;
 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%__1cNloadConL0NodeHtwo_adr6kM_I_;
 text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cFframeNis_glue_frame6kM_i_;
 text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
 text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
@@ -2095,37 +1357,24 @@
 text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
 text: .text%__1cRshrL_rReg_immNodeErule6kM_I_;
 text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cTpass_initial_checks6FpnIciMethod_i1_i_;
-text: .text%__1cKInlineTreeMshouldInline6kMpnIciMethod_irnNciCallProfile_pnMWarmCallInfo__pkc_;
-text: .text%__1cOCompilerOracleNshould_inline6FnMmethodHandle__i_;
-text: .text%__1cKInlineTreeNtry_to_inline6MpnIciMethod_irnNciCallProfile_pnMWarmCallInfo__pkc_;
-text: .text%__1cIciMethodbAinterpreter_throwout_count6kM_i_;
-text: .text%__1cIciMethodNshould_inline6M_i_;
-text: .text%__1cIciMethodOshould_exclude6M_i_;
 text: .text%__1cScompU_rReg_immNodeErule6kM_I_;
 text: .text%__1cKjmpDirNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpDirNodeJis_Branch6kM_I_;
 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%__1cFLabelSpatch_instructions6MpnRAbstractAssembler__v_;
-text: .text%__1cRAbstractAssemblerHbind_to6MrnFLabel_i_v_;
 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%__1cJrRegIOperFclone6kM_pnIMachOper__;
 text: .text%__1cMindIndexOperFscale6kM_i_;
 text: .text%__1cScompP_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cFKlassPoop_is_instance6kM_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%__1cScompP_mem_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cTconvF2D_reg_memNodeErule6kM_I_;
 text: .text%__1cPindOffset32OperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cFStateM_sub_Op_CmpP6MpknENode__v_;
@@ -2134,38 +1383,26 @@
 text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
 text: .text%__1cIciSymbolEmake6Fpkc_p0_;
 text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cScompU_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cKimmL32OperIconstant6kM_l_;
-text: .text%__1cHi2sNodePoper_input_base6kM_I_;
 text: .text%__1cKimmL32OperJnum_edges6kM_I_;
-text: .text%__1cMMonitorValue2t6MpnKScopeValue_nILocation__v_;
 text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
 text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__i_;
-text: .text%__1cLBoxLockNodeKis_BoxLock6kM_pk0_;
 text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
 text: .text%__1cNSignatureInfoIdo_array6Mii_v_;
-text: .text%__1cKDataLayoutPneeds_array_len6FC_i_;
 text: .text%__1cKDataLayoutKinitialize6MCHi_v_;
 text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
 text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFParseRbranch_prediction6Mrf_f_;
 text: .text%__1cPshrI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cHciKlassNis_subtype_of6Mp0_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%__1cIGraphKitZset_all_rewritable_memory6MpnENode__v_;
 text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
 text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__;
 text: .text%__1cJAssemblerEmovq6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cRsalI_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_;
 text: .text%__1cGRFrameMset_distance6Mi_v_;
-text: .text%__1cICodeBlobOis_c2i_adapter6kM_i_;
-text: .text%__1cFframeTis_first_java_frame6kM_i_;
 text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
 text: .text%__1cGRFrameGcaller6M_p0_;
 text: .text%__1cTStackWalkCompPolicyIsenderOf6MpnGRFrame_pnNGrowableArray4C2___2_;
@@ -2174,51 +1411,32 @@
 text: .text%__1cTconstantPoolOopDescMklass_at_put6MipnMklassOopDesc__v_;
 text: .text%__1cNFingerprinterGdo_int6M_v_;
 text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cRaddI_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cRshrL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cScompI_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__;
 text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cLRethrowNodeGis_CFG6kM_i_;
 text: .text%__1cIciObjectFklass6M_pnHciKlass__;
 text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_;
 text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cNGCTaskManagerRset_resource_flag6MIi_v_;
-text: .text%__1cRshrI_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cUmembar_cpu_orderNodeMideal_Opcode6kM_i_;
 text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
 text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cJloadCNodeMideal_Opcode6kM_i_;
 text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
 text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
 text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pknHTypeAry_pnHciKlass_ii_pk0_;
 text: .text%__1cFStateM_sub_Op_RegL6MpknENode__v_;
 text: .text%__1cNdecI_rRegNodeErule6kM_I_;
-text: .text%__1cKjmpConNodeJis_Branch6kM_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%__1cNCallGeneratorJis_inline6kM_i_;
 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%__1cNloadKlassNodeHtwo_adr6kM_I_;
-text: .text%__1cFParseYprofile_not_taken_branch6M_v_;
 text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cOcompL_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cLRuntimeStubMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
 text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cOcompL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_;
-text: .text%__1cNCallGeneratorKis_virtual6kM_i_;
-text: .text%__1cKInlineTreePshouldNotInline6kMpnIciMethod_pnMWarmCallInfo__pkc_;
-text: .text%__1cLcastP2LNodeErule6kM_I_;
 text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__;
 text: .text%__1cNPhaseRegAllocKoffset2reg6kMi_i_;
 text: .text%__1cQjmpCon_shortNodeMideal_Opcode6kM_i_;
@@ -2226,88 +1444,54 @@
 text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
 text: .text%__1cTconvI2L_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cENodeRlatency_from_uses6kMrnLBlock_Array_rnNGrowableArray4CI___i_;
 text: .text%__1cNGrowableArray4CI_Praw_at_put_grow6MirkI2_v_;
-text: .text%__1cFParseFdo_if6MpnENode_2nIBoolTestEmask_2_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%__1cPsalI_rReg_1NodePoper_input_base6kM_I_;
 text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_;
-text: .text%__1cISubINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
 text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
 text: .text%__1cRsubI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cJloadCNodePoper_input_base6kM_I_;
 text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
 text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_;
 text: .text%__1cIAddPNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeJnum_opnds6kM_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%__1cOoop_RelocationHoops_do6MpFppnHoopDesc__v_v_;
-text: .text%__1cIciMethodbHhas_unloaded_classes_in_signature6M_i_;
-text: .text%__1cScompP_mem_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cNincI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cJimmP0OperEtype6kM_pknEType__;
 text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__;
 text: .text%__1cPloadConUL32NodeLbottom_type6kM_pknEType__;
 text: .text%__1cNloadConI0NodeHsize_of6kM_I_;
-text: .text%__1cRaddI_rReg_memNodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cPshrI_rReg_1NodePoper_input_base6kM_I_;
 text: .text%JVM_handle_solaris_signal;
 text: .text%signalHandler;
 text: .text%__1cQJNI_FastGetFieldQfind_slowcase_pc6FpC_1_;
-text: .text%__1cMLinkResolverbElinktime_resolve_static_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cRresolve_and_patch6FppnHoopDesc__v_;
 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%__1cRInterpretedRFrameOis_interpreted6kM_i_;
-text: .text%__1cGRFrameLis_compiled6kM_i_;
 text: .text%__1cUPSGenerationCountersKupdate_all6M_v_;
 text: .text%__1cTStackWalkCompPolicyMshouldInline6FnMmethodHandle_fi_pkc_;
 text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cIGraphKitPstore_to_memory6MpnENode_22nJBasicType_i_2_;
-text: .text%__1cJStoreNodeEmake6FpnENode_22pknHTypePtr_2nJBasicType__p0_;
 text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
 text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cKciTypeFlowGJsrSetSis_compatible_with6Mp1_i_;
 text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cKOSRAdapterOis_osr_adapter6kM_i_;
 text: .text%__1cIMulINodeGOpcode6kM_i_;
 text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
 text: .text%__1cNGrowableArray4CpnGciType__2t6MpnFArena_iirk1_v_;
-text: .text%__1cKTypeAryPtrFempty6kM_i_;
-text: .text%__1cHTypeAryFempty6kM_i_;
-text: .text%__1cJloadCNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cRandI_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
 text: .text%__1cMelapsedTimerHseconds6kM_d_;
 text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cJAssemblerDnop6M_v_;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
-text: .text%__1cKstoreLNodeJnum_opnds6kM_I_;
-text: .text%__1cIjniIdMapHoops_do6MpnKOopClosure__v_;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__v_;
 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%__1cMStartC2INodeGOpcode6kM_i_;
 text: .text%__1cSindIndexOffsetOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
 text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__;
@@ -2318,33 +1502,21 @@
 text: .text%__1cRshrI_rReg_immNodeErule6kM_I_;
 text: .text%__1cJcmpOpOperGnegate6M_v_;
 text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cFParseRoptimize_inlining6MpnIciMethod_ipnPciInstanceKlass_24irnKInlineTreeLInlineStyle_r2_v_;
-text: .text%__1cQimprove_receiver6FpnPciInstanceKlass_pknLTypeInstPtr_ri_1_;
-text: .text%__1cPcmpFastLockNodeHtwo_adr6kM_I_;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
 text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_;
-text: .text%__1cKJavaThreadUin_stack_yellow_zone6MpC_i_;
-text: .text%__1cFParseSmerge_memory_edges6MpnMMergeMemNode_ii_v_;
 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%__1cLjmpConUNodeTmay_be_short_branch6kM_i_;
-text: .text%__1cLjmpConUNodeOis_pc_relative6kM_i_;
 text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
 text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_;
 text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
 text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_;
 text: .text%__1cJloadPNodeFreloc6kM_i_;
 text: .text%__1cTno_rax_rbx_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNprefetchwNodeJnum_opnds6kM_I_;
 text: .text%__1cKjmpConNodeGnegate6M_v_;
 text: .text%__1cMindirectOperFscale6kM_i_;
-text: .text%__1cQSystemDictionaryVadd_loader_constraint6FnMsymbolHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableJadd_entry6MnMsymbolHandle_pnMklassOopDesc_nGHandle_34pnGThread__i_;
 text: .text%__1cRsubI_rReg_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
 text: .text%__1cQComputeCallStackGdo_int6M_v_;
@@ -2352,7 +1524,6 @@
 text: .text%__1cNtestP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseMvisit_blocks6M_v_;
 text: .text%__1cQjmpDir_shortNodeMideal_Opcode6kM_i_;
 text: .text%__1cQjmpDir_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cKciTypeFlowLStateVectorLdo_getfield6MpnQciBytecodeStream__v_;
@@ -2361,38 +1532,26 @@
 text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
 text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKMemBarNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOjmpLoopEndNodeMideal_Opcode6kM_i_;
-text: .text%__1cFBlockTimplicit_null_check6MrnLBlock_Array_rnNGrowableArray4CI__pnENode_6_v_;
 text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
 text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_;
 text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cJloadBNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
 text: .text%__1cOcompI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cNCompileBrokerYcheck_compilation_result6FnMmethodHandle_iippnHnmethod__i_;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
 text: .text%JVM_RawMonitorEnter;
-text: .text%__1cFMutexMjvm_raw_lock6M_v_;
 text: .text%JVM_RawMonitorExit;
-text: .text%__1cFMutexOjvm_raw_unlock6M_v_;
 text: .text%__1cHUNICODELutf8_length6FpHi_i_;
 text: .text%__1cRaddP_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cIciMethodLis_accessor6kM_i_;
 text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__;
 text: .text%__1cLBoxLockNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_;
 text: .text%__1cQciBytecodeStreamSget_constant_index6kM_i_;
-text: .text%__1cOGenerateOopMapOset_bbmark_bit6Mi_v_;
 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%__1cGThreadMis_VM_thread6kM_i_;
 text: .text%__1cSPSPromotionManagerFreset6M_v_;
 text: .text%__1cNPrefetchQdDueueFclear6M_v_;
 text: .text%__1cSPSPromotionManagerKflush_labs6M_v_;
@@ -2407,84 +1566,55 @@
 text: .text%__1cOcompP_rRegNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cHi2sNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cLcastP2LNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
 text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
 text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNCompileBrokerXcompilation_is_in_queue6FnMmethodHandle_i_i_;
-text: .text%__1cRsubI_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cETypeCeq6kMpk0_i_;
-text: .text%__1cHMatcherPstack_alignment6F_I_;
 text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadSNodeJnum_opnds6kM_I_;
 text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshrL_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cTconvI2L_reg_memNodeErule6kM_I_;
 text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_n0AJIcoResult__;
 text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
 text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cPcmpFastLockNodeJnum_opnds6kM_I_;
-text: .text%__1cIciMethodPcan_be_compiled6M_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%__1cIciMethodVhas_balanced_monitors6M_i_;
 text: .text%__1cFParseNdo_all_blocks6M_v_;
 text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cOParseGeneratorJcan_parse6FpnIciMethod_i_i_;
 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%__1cPClassFileParserUskip_over_field_name6MpciI_1_;
 text: .text%__1cFParsePdo_method_entry6M_v_;
 text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cKciTypeFlowFBlockPclone_loop_head6Mp0ip1pn0AGJsrSet__3_;
 text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
 text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cRruntime_type_from6FpnJJavaValue__nJBasicType__: javaCalls.o;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__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%__1cLCastP2LNodeLbottom_type6kM_pknEType__;
 text: .text%__1cPJavaCallWrapper2T6M_v_;
 text: .text%__1cVPreserveExceptionMark2T6M_v_;
 text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cMrax_RegPOperJnum_edges6kM_I_;
 text: .text%__1cMrax_RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cIimmLOperJconstantL6kM_x_;
-text: .text%__1cIMulLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNCompileBrokerTcompile_method_base6FnMmethodHandle_ii1ipkcpnGThread__pnHnmethod__;
 text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cNmethodOopDescWload_signature_classes6FnMmethodHandle_pnGThread__i_;
 text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__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%__1cNaddL_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cISubINodeGadd_id6kM_pknEType__;
 text: .text%__1cNsubI_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cMMutableSpaceKinitialize6MnJMemRegion_i_v_;
 text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
 text: .text%__1cKInlineTree2t6MpnHCompile_pk0pnIciMethod_pnIJVMState_if_v_;
 text: .text%__1cJEventMark2t6MpkcE_v_;
-text: .text%__1cJloadCNodeJnum_opnds6kM_I_;
 text: .text%__1cNaddI_rRegNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cQComputeCallStackHdo_long6M_v_;
 text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
@@ -2492,12 +1622,9 @@
 text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
 text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
 text: .text%__1cMCreateExNodeJideal_reg6kM_I_;
-text: .text%__1cMorI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cMorI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
 text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
 text: .text%__1cNSignatureInfoHdo_long6M_v_;
-text: .text%__1cLPCTableNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cRinterpretedVFrameDbci6kM_i_;
 text: .text%__1cKInlineTreeYcompute_callee_frequency6kMi_f_;
@@ -2511,36 +1638,25 @@
 text: .text%__1cOMethodLivenessKBasicBlockIload_two6Mi_v_;
 text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
 text: .text%__1cNmulL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNobjArrayKlassPoop_is_objArray6kM_i_;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
-text: .text%__1cNrFlagsRegOperFclone6kM_pnIMachOper__;
 text: .text%__1cIGraphKitJpush_pair6MpnENode__v_;
 text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cIGraphKitRmake_slow_call_ex6MpnENode_pnPciInstanceKlass__v_;
 text: .text%__1cTcompareAndSwapLNodePoper_input_base6kM_I_;
 text: .text%__1cMloadConINodeHsize_of6kM_I_;
 text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cRMachSafePointNodeLis_MachCall6M_pnMMachCallNode__;
 text: .text%__1cNstoreImmINodeMideal_Opcode6kM_i_;
-text: .text%__1cJScopeDescGis_top6kM_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%__1cLjmpConUNodeJis_Branch6kM_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%__1cMMachCallNodeHis_Call6M_pnICallNode__;
 text: .text%__1cNdecI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLklassVtableKis_miranda6FpnNmethodOopDesc_pnPobjArrayOopDesc_pnMklassOopDesc__i_;
-text: .text%__1cTconvL2I_reg_regNodePoper_input_base6kM_I_;
 text: .text%__1cRalign_code_offset6Fi_I_;
 text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__;
 text: .text%__1cMorI_rRegNodeErule6kM_I_;
@@ -2551,18 +1667,10 @@
 text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
 text: .text%__1cIAddLNodeGadd_id6kM_pknEType__;
 text: .text%__1cRaddL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cLRShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cIGraphKitMarray_length6MpnENode__2_;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_;
 text: .text%__1cPsalI_rReg_1NodeErule6kM_I_;
 text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cNstoreImmBNodeHtwo_adr6kM_I_;
-text: .text%__1cLLShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cScompU_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cNGrowableArray4Cl_Icontains6kMrkl_i_;
 text: .text%__1cScompU_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
 text: .text%__1cOcompP_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
@@ -2579,97 +1687,55 @@
 text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
 text: .text%__1cPshrI_rReg_1NodeErule6kM_I_;
 text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cbDReferenceProcessorInitializerIis_clean6kM_v_;
 text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cNSingletonBlobIis_alive6kM_i_;
-text: .text%__1cKTypeRawPtrCeq6kMpknEType__i_;
 text: .text%__1cIregDOperEtype6kM_pknEType__;
-text: .text%__1cQleaPIdxScaleNodeHtwo_adr6kM_I_;
 text: .text%__1cTStackWalkCompPolicyPshouldNotInline6FnMmethodHandle__pkc_;
-text: .text%__1cMPrefetchNodeLbottom_type6kM_pknEType__;
 text: .text%__1cPcmpFastLockNodeErule6kM_I_;
 text: .text%__1cFArena2t6M_v_;
 text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_;
-text: .text%__1cMCallLeafNodeLis_CallLeaf6kM_pk0_;
 text: .text%__1cQleaPIdxScaleNodeMideal_Opcode6kM_i_;
 text: .text%__1cJcmpOpOperFequal6kM_i_;
 text: .text%__1cScompI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cNmulL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNmulL_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
 text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMrcx_RegIOperJnum_edges6kM_I_;
-text: .text%__1cFKlassNoop_is_method6kM_i_;
 text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHnmethodPis_locked_by_vm6kM_i_;
 text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
 text: .text%__1cRaddP_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
-text: .text%__1cJloadLNodeHtwo_adr6kM_I_;
-text: .text%__1cHMulNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cSCallLeafDirectNodeHtwo_adr6kM_I_;
 text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
 text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__;
-text: .text%__1cQsolaris_mprotect6FpcLi_i_: os_solaris.o;
 text: .text%__1cRaddI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cHnmethodLis_unloaded6kM_i_;
 text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cIGraphKitXset_edges_for_java_call6MpnMCallJavaNode_i_v_;
-text: .text%__1cTconvI2L_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cHi2sNodeJnum_opnds6kM_I_;
 text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cHMatcherXadjust_incoming_stk_arg6Mi_i_;
 text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
 text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRsubI_rReg_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
-text: .text%__1cTconvI2L_reg_memNodePoper_input_base6kM_I_;
 text: .text%__1cFStateM_sub_Op_CmpU6MpknENode__v_;
 text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cKcopy_table6FppC1i_v_: interpreter.o;
 text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
 text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
 text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cMVM_OperationVevaluate_at_safepoint6kM_i_;
-text: .text%__1cMVM_OperationVevaluate_concurrently6kM_i_;
-text: .text%__1cMVM_OperationSis_cheap_allocated6kM_i_;
-text: .text%__1cXmembar_release_lockNodePoper_input_base6kM_I_;
-text: .text%__1cRaddL_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cScompP_mem_rRegNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cJFieldTypeYis_valid_array_signature6FpnNsymbolOopDesc__i_;
 text: .text%__1cNincI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIciObject2t6M_v_;
 text: .text%__1cPstoreImmI16NodePoper_input_base6kM_I_;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
 text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cQLibraryIntrinsicKis_virtual6kM_i_;
 text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
 text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cPsarI_rReg_1NodePoper_input_base6kM_I_;
 text: .text%__1cNstoreImmBNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cMPrefetchNodeKmatch_edge6kMI_I_;
-text: .text%__1cHCompileQcan_generate_C2I6MpnIciMethod_i_i_;
 text: .text%__1cPloadConUL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_;
 text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cXmembar_release_lockNodeHtwo_adr6kM_I_;
 text: .text%JVM_GetMethodIxModifiers;
 text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNandL_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cNandL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
 text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
 text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cKklassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cUCompressedReadStreamMraw_read_int6FrpC_i_;
 text: .text%__1cIHaltNodeEhash6kM_I_;
 text: .text%__1cNstoreImmINodePoper_input_base6kM_I_;
 text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
@@ -2678,14 +1744,11 @@
 text: .text%__1cSinstanceKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cOcompL_rRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_;
 text: .text%__1cRsubI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cFStateP_sub_Op_LShiftL6MpknENode__v_;
 text: .text%__1cLjmpConUNodeGnegate6M_v_;
 text: .text%__1cKcmpOpUOperGnegate6M_v_;
-text: .text%__1cMrax_RegLOperJnum_edges6kM_I_;
 text: .text%__1cLGCTaskQdDueueKinitialize6M_v_;
-text: .text%__1cJStealTask2t6Mi_v_;
 text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
 text: .text%__1cTOldToYoungRootsTaskEname6M_pc_;
 text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
@@ -2695,43 +1758,30 @@
 text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
 text: .text%__1cQciBytecodeStreamMget_constant6M_nKciConstant__;
 text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cJcmpOpOperFclone6kM_pnIMachOper__;
 text: .text%__1cMrep_stosNodeMideal_Opcode6kM_i_;
-text: .text%__1cEhash6Fpkc1_I_;
-text: .text%__1cQput_after_lookup6FnMsymbolHandle_0ppnLNameSigHash__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%__1cKOSRAdapterHoops_do6MpnKOopClosure__v_;
 text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
 text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
 text: .text%__1cTcompareAndSwapLNodeMideal_Opcode6kM_i_;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
 text: .text%__1cNCallGeneratorCtf6kM_pknITypeFunc__;
 text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKStoreBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cNaddL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeJnum_opnds6kM_I_;
 text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
 text: .text%__1cQleaPIdxScaleNodePoper_input_base6kM_I_;
-text: .text%__1cNGrowableArray4CpnNmethodOopDesc__2t6Mii_v_;
 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%__1cWstatic_stub_RelocationJpack_data6M_i_;
-text: .text%__1cNsubL_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cbAjni_check_async_exceptions6FpnKJavaThread__v_: jni.o;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
 text: .text%__1cRsalI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMindIndexOperNbase_position6kM_i_;
 text: .text%__1cMindIndexOperOindex_position6kM_i_;
 text: .text%__1cMindIndexOperNconstant_disp6kM_i_;
-text: .text%__1cJLoadSNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__2t6Mii_v_;
 text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
 text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
@@ -2739,37 +1789,20 @@
 text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
 text: .text%JVM_IsInterface;
 text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_;
 text: .text%__1cRshrL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQjmpCon_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQjmpCon_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpConNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cQjmpCon_shortNodeJis_Branch6kM_I_;
 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%__1cNGrowableArray4CpnGRFrame__2t6Mii_v_;
-text: .text%__1cKjavaVFrameNis_java_frame6kM_i_;
-text: .text%__1cIVerifierRshould_verify_for6FpnHoopDesc__i_;
-text: .text%__1cQciBytecodeStreamPget_klass_index6M_i_;
 text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRMachNullCheckNode2t6MpnENode_2I_v_;
 text: .text%__1cRsarI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_;
-text: .text%__1cRMachSafePointNodePis_MachCallJava6M_pnQMachCallJavaNode__;
 text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
 text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cMStartI2CNodeGOpcode6kM_i_;
-text: .text%__1cKOSRAdapterMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
-text: .text%__1cSvframeStreamCommonbHskip_method_invoke_and_aux_frames6M_v_;
-text: .text%__1cNdecI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassbCfind_local_field_from_offset6kMiipnPfieldDescriptor__i_;
-text: .text%__1cNinstanceKlassWfind_field_from_offset6kMiipnPfieldDescriptor__i_;
-text: .text%__1cPciInstanceKlassTget_field_by_offset6Mii_pnHciField__;
 text: .text%__1cFArena2T6M_v_;
 text: .text%__1cKmethodOperJnum_edges6kM_I_;
 text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
@@ -2780,66 +1813,41 @@
 text: .text%__1cNstoreImmBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKstorePNodeFreloc6kM_i_;
 text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYCallStaticJavaDirectNodeJnum_opnds6kM_I_;
 text: .text%__1cQleaPIdxScaleNodeErule6kM_I_;
 text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
 text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
 text: .text%__1cIGraphKitSclear_saved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cNloadConI0NodeFclone6kM_pnENode__;
-text: .text%__1cJimmI0OperFclone6kM_pnIMachOper__;
-text: .text%__1cLCastP2LNodeFValue6kMpnOPhaseTransform__pknEType__;
 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%__1cENodeGis_Sub6M_pnHSubNode__;
 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%__1cQciBytecodeStreamJget_klass6Mri_pnHciKlass__;
-text: .text%__1cKMemBarNode2t6M_v_;
 text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cFframeRis_compiled_frame6kMpi_i_;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_;
 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%__1cIAddLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIModINodeGOpcode6kM_i_;
 text: .text%__1cNmulL_rRegNodeErule6kM_I_;
-text: .text%__1cSsafePoint_pollNodeHtwo_adr6kM_I_;
-text: .text%__1cDCHAManalyze_call6FnLKlassHandle_11nMsymbolHandle_2_pnJCHAResult__;
-text: .text%__1cJCHAResult2t6MnLKlassHandle_nMsymbolHandle_2pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___n0E_i_v_;
 text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cJCHAResultOis_monomorphic6kM_i_;
-text: .text%__1cIciMethodXfind_monomorphic_target6MpnHciKlass_22_p0_;
 text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cKMemBarNodeJis_MemBar6kM_pk0_;
-text: .text%__1cIGraphKitOinsert_mem_bar6MpnKMemBarNode__v_;
-text: .text%__1cHi2sNodeHtwo_adr6kM_I_;
 text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
 text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__;
 text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cNIdealLoopTreeObeautify_loops6MpnOPhaseIdealLoop__i_;
 text: .text%__1cScompP_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKstoreBNodePoper_input_base6kM_I_;
 text: .text%__1cRandI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSCallLeafDirectNodeRis_safepoint_node6kM_i_;
 text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKMemBarNodeJideal_reg6kM_I_;
-text: .text%__1cJloadSNodeHtwo_adr6kM_I_;
 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%__1cJlog2_long6Fx_i_;
 text: .text%__1cTconvL2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIGraphKitPpush_pair_local6Mi_v_;
 text: .text%__1cOjmpLoopEndNodePoper_input_base6kM_I_;
@@ -2852,131 +1860,75 @@
 text: .text%JVM_InternString;
 text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
 text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cNGrowableArray4CpnENode__2t6Mii_v_;
-text: .text%__1cPCheckCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
 text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cTconvI2L_reg_memNodeJnum_opnds6kM_I_;
 text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
 text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__;
 text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cFTypeFCeq6kMpknEType__i_;
-text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
 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%__1cKjmpDirNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cQjmpDir_shortNodeJis_Branch6kM_I_;
 text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cSCompareAndSwapNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
 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%__1cHMatcherMreturn_value6Fii_nLOptoRegPair__;
 text: .text%__1cFStateP_sub_Op_ConvI2L6MpknENode__v_;
-text: .text%__1cOjmpLoopEndNodeGpinned6kM_i_;
-text: .text%__1cNxorI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
 text: .text%__1cNsubI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_;
 text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cQLRUMaxHeapPolicyWshould_clear_reference6MpnHoopDesc__i_;
-text: .text%__1cLcastP2LNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPcheckCastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cZCallInterpreterDirectNodeMideal_Opcode6kM_i_;
 text: .text%__1cILoopNodeHsize_of6kM_I_;
 text: .text%__1cSindIndexOffsetOperFscale6kM_i_;
-text: .text%__1cMjniIdSupportNto_method_oop6FpnK_jmethodID__pnNmethodOopDesc__;
 text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cRaddI_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_;
-text: .text%__1cGOopMapPset_derived_oop6Miiii_v_;
 text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_;
 text: .text%__1cHi2bNodeErule6kM_I_;
 text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cMloadConDNodePoper_input_base6kM_I_;
 text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__;
 text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
 text: .text%__1cRjmpConU_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cRjmpConU_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cMloadConDNodeHtwo_adr6kM_I_;
-text: .text%__1cHnmethodKpc_desc_at6MpC_pnGPcDesc__;
-text: .text%__1cJrRegPOperFclone6kM_pnIMachOper__;
-text: .text%__1cFParseNpush_constant6MnKciConstant__i_;
-text: .text%__1cMrep_stosNodeJnum_opnds6kM_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%__1cPstoreImmI16NodeJnum_opnds6kM_I_;
 text: .text%__1cTleaPIdxScaleOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitbMset_predefined_output_for_runtime_call6MpnENode_pnMMergeMemNode__v_;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
 text: .text%__1cPsarI_rReg_1NodeErule6kM_I_;
 text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cIGraphKitOhas_ex_handler6M_i_;
 text: .text%__1cMloadConDNodeErule6kM_I_;
 text: .text%__1cHCompileQsync_stack_slots6kM_i_;
 text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cMURShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
 text: .text%__1cNdecI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cPClassFileParserbHparse_constant_pool_integer_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTDebugInfoReadStream2t6MpknHnmethod_i_v_;
-text: .text%__1cRsalI_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cJScopeDescJstream_at6kMi_pnTDebugInfoReadStream__;
 text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
 text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cMPhaseChaitinQgather_lrg_masks6Mi_v_;
 text: .text%__1cJPhaseLiveHcompute6MI_v_;
 text: .text%JVM_GetCPClassNameUTF;
 text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNstoreImmINodeJnum_opnds6kM_I_;
-text: .text%__1cITypeNodeHis_Type6M_p0_;
 text: .text%__1cHRetNodePoper_input_base6kM_I_;
-text: .text%__1cLCastP2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%jni_GetStringLength: jni.o;
 text: .text%__1cPloadConUL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cNprefetchwNodeHtwo_adr6kM_I_;
-text: .text%__1cNnmethodLocker2T6M_v_;
 text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKstoreCNodeHtwo_adr6kM_I_;
-text: .text%__1cQleaPIdxScaleNodeJnum_opnds6kM_I_;
 text: .text%__1cNaddL_rRegNodeMcisc_operand6kM_i_;
 text: .text%__1cOcompL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cTDebugInfoReadStreamLread_handle6M_nGHandle__;
 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%__1cPcmovI_reg_gNodePoper_input_base6kM_I_;
-text: .text%__1cLProfileDataSis_VirtualCallData6M_i_;
-text: .text%__1cSmembar_acquireNodePoper_input_base6kM_I_;
 text: .text%__1cNsubL_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
 text: .text%__1cNloadRangeNodeFreloc6kM_i_;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowJJsrRecord__2t6Miirk2i_v_;
 text: .text%__1cTcompareAndSwapLNodeErule6kM_I_;
 text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cMURShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOcompiledVFrameGis_top6kM_i_;
 text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
 text: .text%__1cNxorI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowXmark_known_range_starts6M_v_;
-text: .text%__1cKciTypeFlowLfind_ranges6M_v_;
 text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_;
 text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
 text: .text%__1cKciTypeFlowHdo_flow6M_v_;
@@ -2984,12 +1936,9 @@
 text: .text%__1cKciTypeFlowKflow_types6M_v_;
 text: .text%__1cIAndINodeGadd_id6kM_pknEType__;
 text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadBNodeHtwo_adr6kM_I_;
 text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_L_;
-text: .text%__1cHMonitorGnotify6M_i_;
 text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
 text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cHMatcherNfind_receiver6Fi_i_;
 text: .text%__1cMciMethodDataJload_data6M_v_;
 text: .text%__1cIciMethodJload_code6M_v_;
 text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
@@ -3000,12 +1949,8 @@
 text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
 text: .text%__1cIMaxINodeGOpcode6kM_i_;
 text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cPsalI_rReg_1NodeJnum_opnds6kM_I_;
 text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cHciKlassMis_interface6M_i_;
-text: .text%__1cPmethodDataKlassRoop_is_methodData6kM_i_;
 text: .text%__1cIMulLNodeGadd_id6kM_pknEType__;
-text: .text%__1cJloadCNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
 text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
 text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
@@ -3020,83 +1965,56 @@
 text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
 text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
 text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
 text: .text%__1cRindIndexScaleOperJnum_edges6kM_I_;
 text: .text%__1cRindIndexScaleOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKstoreBNodeJnum_opnds6kM_I_;
 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%__1cSmembar_acquireNodeHtwo_adr6kM_I_;
 text: .text%__1cRshrI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cKJNIHandlesLmake_global6FnGHandle_i_pnI_jobject__;
 text: .text%jni_ExceptionOccurred: jni.o;
 text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cSCompareAndSwapNodeKmatch_edge6kMI_I_;
 text: .text%__1cISubINodeJideal_reg6kM_I_;
-text: .text%__1cRMachSafePointNodeGpinned6kM_i_;
-text: .text%__1cIimmIOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConINodeFclone6kM_pnENode__;
 text: .text%__1cICodeHeapIallocate6ML_pv_;
 text: .text%__1cICodeHeapPsearch_freelist6ML_pnJFreeBlock__;
-text: .text%__1cbACallCompiledJavaDirectNodeMideal_Opcode6kM_i_;
 text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLCastP2LNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cNmulL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cVmerge_point_too_heavy6FpnHCompile_pnENode__i_: loopopts.o;
 text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cFParseKdo_put_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cHnmethodOis_java_method6kM_i_;
 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%__1cRsarL_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cScompU_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvZcheck_klass_accessibility6MpnHciKlass_pnMklassOopDesc__i_;
-text: .text%__1cIciObjectMis_obj_array6M_i_;
-text: .text%__1cOLibraryCallKitOgenerate_guard6MpnENode_pnKRegionNode_f_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%__1cJloadINodeIpeephole6MpnFBlock_ipnNPhaseRegAlloc_ri_pnIMachNode__;
-text: .text%__1cTconvL2I_reg_regNodeJnum_opnds6kM_I_;
 text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cRandI_rReg_immNodeJnum_opnds6kM_I_;
 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%__1cIGraphKitOmake_slow_call6MpknITypeFunc_pCpkcpnENode_88_8_;
 text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
 text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPshrI_rReg_1NodeJnum_opnds6kM_I_;
 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%__1cUmembar_cpu_orderNodePoper_input_base6kM_I_;
 text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cTCallInterpreterNodeGOpcode6kM_i_;
 text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRaddL_rReg_immNodeErule6kM_I_;
 text: .text%__1cJLoadLNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeZcheck_for_anti_dependence6kM_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%__1cHCompilePneed_stack_bang6kMi_i_;
 text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
 text: .text%__1cNFingerprinterIdo_array6Mii_v_;
 text: .text%jni_GetArrayLength: jni.o;
@@ -3104,46 +2022,27 @@
 text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
 text: .text%__1cMorI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cKTypeRawPtrFempty6kM_i_;
-text: .text%__1cHRetNodeGpinned6kM_i_;
-text: .text%__1cHRetNodeHtwo_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%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cUParallelScavengeHeapTensure_parseability6M_v_;
 text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cNMemoryServiceGgc_end6Fi_v_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
 text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cSReferenceProcessorbDenqueue_discovered_references6M_i_;
-text: .text%__1cSReferenceProcessorbDprocess_discovered_references6M_v_;
 text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
 text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_v_;
 text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorbBenqueue_discovered_reflists6MppnHoopDesc__v_;
 text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cSReferenceProcessorOprocess_phase16MppnHoopDesc_pnPReferencePolicy_pnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__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%__1cXjava_lang_ref_ReferenceRpending_list_addr6F_ppnHoopDesc__;
 text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
 text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceIgc_begin6Fi_v_;
-text: .text%__1cUParallelScavengeHeapOfill_all_tlabs6M_v_;
 text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2t6Mi_v_;
 text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cQPlaceholderTableJnew_entry6MipnNsymbolOopDesc_pnHoopDesc__pnQPlaceholderEntry__;
 text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
 text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
 text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
 text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
@@ -3152,80 +2051,54 @@
 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%__1cNaddL_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cNaddL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUPSAdaptiveSizePolicyZdecay_supplemental_growth6Mi_v_;
 text: .text%__1cUPSAdaptiveSizePolicybPeden_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cUPSAdaptiveSizePolicyQdecaying_gc_cost6kM_d_;
-text: .text%__1cUPSAdaptiveSizePolicybDcompute_generation_free_space6MLLLLLLLi_v_;
 text: .text%__1cIPSOldGenMmax_gen_size6M_L_;
 text: .text%__1cUPSAdaptiveSizePolicybHclear_generation_free_space_flags6M_v_;
 text: .text%__1cUPSAdaptiveSizePolicyOeden_increment6MLI_L_;
-text: .text%__1cUPSAdaptiveSizePolicyVadjust_for_throughput6MipL1_v_;
 text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cUmembar_cpu_orderNodeHtwo_adr6kM_I_;
 text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
 text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
 text: .text%__1cPshrI_rReg_1NodeHtwo_adr6kM_I_;
 text: .text%__1cRmulI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNandI_rRegNodePoper_input_base6kM_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%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
 text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cPVM_GC_OperationOskip_operation6kM_i_;
-text: .text%__1cPVM_GC_OperationNdoit_prologue6M_i_;
 text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
 text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
 text: .text%__1cKReturnNodeEhash6kM_I_;
-text: .text%__1cHnmethodVis_dependent_on_entry6MpnMklassOopDesc_2pnNmethodOopDesc__i_;
-text: .text%__1cbDVM_ParallelGCFailedAllocation2t6MLiiI_v_;
 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%__1cMloadConPNodeFclone6kM_pnENode__;
-text: .text%__1cIimmPOperFclone6kM_pnIMachOper__;
 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%__1cCosOunguard_memory6FpcL_i_;
 text: .text%__1cNandL_rRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLLShiftINodeJideal_reg6kM_I_;
-text: .text%__1cRsarI_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_;
 text: .text%__1cJLoadSNodeJideal_reg6kM_I_;
-text: .text%__1cTconvL2I_reg_regNodeHtwo_adr6kM_I_;
 text: .text%__1cIPhaseIFGISquareUp6M_v_;
 text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
 text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cKciTypeFlowLStateVectorOmeet_exception6MpnPciInstanceKlass_pk1_i_;
 text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
 text: .text%__1cONMethodSweeperFsweep6F_v_;
 text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
 text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cCosOprotect_memory6FpcL_i_;
 text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
 text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
 text: .text%__1cCosXserialize_thread_states6F_v_;
 text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
 text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
 text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cTAbstractInterpreterRnotice_safepoints6F_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%__1cTAbstractInterpreterRignore_safepoints6F_v_;
 text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
 text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
 text: .text%__1cMVM_OperationIevaluate6M_v_;
@@ -3235,38 +2108,20 @@
 text: .text%__1cGThreadMget_priority6Fpk0_nOThreadPriority__;
 text: .text%__1cCosTget_native_priority6FpknGThread_pi_nIOSReturn__;
 text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueDadd6MpnMVM_Operation__i_;
 text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__;
 text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cNget_next_hash6F_l_: synchronizer.o;
-text: .text%__1cNJvmtiGCMarker2t6Mi_v_;
 text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cKPSScavengeXshould_attempt_scavenge6F_i_;
-text: .text%__1cKPSScavengeQinvoke_no_policy6Fpi_i_;
 text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
 text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cPclear_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cQciBytecodeStreamUis_unresolved_string6kM_i_;
-text: .text%__1cFciEnvUis_unresolved_string6kMpnPciInstanceKlass_i_i_;
-text: .text%__1cFciEnvZis_unresolved_string_impl6kMpnNinstanceKlass_i_i_;
 text: .text%__1cNtestP_regNodeFreloc6kM_i_;
-text: .text%__1cNSCMemProjNodeGis_CFG6kM_i_;
-text: .text%__1cKPSScavengeGinvoke6Fpi_v_;
-text: .text%__1cUParallelScavengeHeapTfailed_mem_allocate6MpiLii_pnIHeapWord__;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEname6kM_pkc_;
 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%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
 text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
 text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNIdealLoopTreeTcheck_inner_safepts6MpnOPhaseIdealLoop__v_;
 text: .text%__1cPsarI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cIAndINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciObjectOis_null_object6kM_i_;
 text: .text%__1cNIdealLoopTreeNDCE_loop_body6M_v_;
 text: .text%__1cNprefetchwNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cXmembar_release_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
@@ -3277,10 +2132,8 @@
 text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
 text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
 text: .text%__1cNdecI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSComputeAdapterInfoHdo_long6M_v_;
 text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
 text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
 text: .text%__1cMrcx_RegIOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
 text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
@@ -3291,11 +2144,7 @@
 text: .text%JVM_GetMethodIxByteCode;
 text: .text%JVM_GetMethodIxExceptionIndexes;
 text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_;
-text: .text%__1cXmembar_acquire_lockNodePoper_input_base6kM_I_;
 text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cNGrowableArray4nLKlassHandle__Icontains6kMrkn0A__i_;
-text: .text%__1cLGCTaskQdDueue2t6Mi_v_;
 text: .text%__1cNaddL_rRegNodeErule6kM_I_;
 text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
 text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_;
@@ -3312,7 +2161,6 @@
 text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
 text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
 text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cUWaitForBarrierGCTask2t6Mi_v_;
 text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
 text: .text%__1cNBarrierGCTaskIdestruct6M_v_;
 text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
@@ -3324,35 +2172,22 @@
 text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
 text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
 text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPcompute_survivor_space_size_and_threshold6MiiL_i_;
 text: .text%__1cUParallelScavengeHeapQresize_young_gen6MLL_v_;
-text: .text%__1cUPSAdaptiveSizePolicyPupdate_averages6MiLL_v_;
-text: .text%__1cKPSYoungGenRresize_generation6MLL_i_;
 text: .text%__1cKPSYoungGenGresize6MLL_v_;
 text: .text%__1cKPSYoungGenNresize_spaces6MLL_v_;
-text: .text%__1cHMatcherKcan_be_arg6Fi_i_;
-text: .text%__1cHMatcherQis_spillable_arg6Fi_i_;
-text: .text%__1cUPSAdaptiveSizePolicyOshould_full_GC6ML_i_;
 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%__1cXmembar_acquire_lockNodeHtwo_adr6kM_I_;
 text: .text%__1cNandI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cNcmovI_regNodePoper_input_base6kM_I_;
 text: .text%__1cMURShiftINodeJideal_reg6kM_I_;
 text: .text%__1cMorI_rRegNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cLRShiftINodeJideal_reg6kM_I_;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
 text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
 text: .text%__1cRandI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cSmembar_releaseNodePoper_input_base6kM_I_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cJrRegLOperFclone6kM_pnIMachOper__;
 text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cRmethodDataOopDescJis_mature6kM_i_;
 text: .text%__1cJcmpOpOperEless6kM_i_;
 text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
 text: .text%__1cOcompL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -3361,39 +2196,25 @@
 text: .text%__1cRshrI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cPcmovI_reg_gNodeMideal_Opcode6kM_i_;
 text: .text%__1cIAndINodeGmul_id6kM_pknEType__;
 text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__L_;
 text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cIVerifierQrelax_verify_for6FpnHoopDesc__i_;
-text: .text%__1cLklassVtablebKcompute_vtable_size_and_num_mirandas6Fri1pnMklassOopDesc_pnPobjArrayOopDesc_nLAccessFlags_pnHoopDesc_pnNsymbolOopDesc_5_v_;
 text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cRaddI_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cVjava_lang_ClassLoaderRis_trusted_loader6FpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescMsort_methods6FpnPobjArrayOopDesc_222_v_;
 text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cPClassFileParserOparseClassFile6MnMsymbolHandle_nGHandle_2r1pnGThread__nTinstanceKlassHandle__;
 text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserNfill_oop_maps6MnTinstanceKlassHandle_ii_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%__1cPClassFileParserQparse_interfaces6MnSconstantPoolHandle_nGHandle_2pnGThread__nOobjArrayHandle__;
 text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
 text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_;
-text: .text%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
 text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserMparse_fields6MnSconstantPoolHandle_ipnUFieldAllocationCount_pnOobjArrayHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserNparse_methods6MnSconstantPoolHandle_ipnLAccessFlags_ppnPobjArrayOopDesc_66pnGThread__nOobjArrayHandle__;
 text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
 text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
 text: .text%__1cPClassFileStream2t6MpCipc_v_;
 text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
 text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
@@ -3403,8 +2224,6 @@
 text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
 text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
 text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
 text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
 text: .text%__1cScompI_rReg_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cScompI_rReg_memNodePoper_input_base6kM_I_;
@@ -3413,7 +2232,6 @@
 text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
 text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
 text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_;
 text: .text%__1cFVTuneQstart_class_load6F_v_;
 text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
 text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
@@ -3428,43 +2246,27 @@
 text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciBytecodeStream__v_;
 text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cOrFlagsRegUOperFclone6kM_pnIMachOper__;
 text: .text%__1cNmulL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMrdi_RegPOperJnum_edges6kM_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%__1cIConINodeHget_int6kMpi_i_;
 text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__;
 text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
 text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cILoopNode2t6MpnENode_2_v_;
 text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
 text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTconvI2L_reg_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cScompP_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cIRewriterScompute_index_maps6FnSconstantPoolHandle_rpnIintArray_rpnIintStack__v_;
-text: .text%__1cIRewriterXnew_constant_pool_cache6FrnIintArray_pnGThread__nXconstantPoolCacheHandle__;
-text: .text%__1cIintArray2t6Mii_v_;
 text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassLverify_code6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
 text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
 text: .text%__1cFframeWsender_for_entry_frame6kMpnLRegisterMap__0_;
 text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cSmembar_releaseNodeHtwo_adr6kM_I_;
 text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
 text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserbSparse_constant_pool_interfacemethodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_;
 text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNmodI_rRegNodeMideal_Opcode6kM_i_;
@@ -3472,33 +2274,23 @@
 text: .text%__1cRaddI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cIConFNodeGOpcode6kM_i_;
 text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTconvI2L_reg_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cNSharedRuntimebOraw_exception_handler_for_return_address6FpC_1_;
 text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cOMethodLivenessKBasicBlockPmerge_exception6MnGBitMap__i_;
-text: .text%__1cTconvI2L_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIAndINodeKmul_opcode6kM_i_;
 text: .text%__1cIAndINodeKadd_opcode6kM_i_;
-text: .text%__1cPcmovI_reg_gNodeJnum_opnds6kM_I_;
 text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cKarrayKlassMoop_is_array6kM_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%__1cIGraphKitRmerge_fast_memory6MpnENode_2i_v_;
 text: .text%JVM_Clone;
 text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cUCallCompiledJavaNodeGOpcode6kM_i_;
 text: .text%__1cPsalI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKadd_n_reqs6FpnENode_1_v_: graphKit.o;
 text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_;
 text: .text%__1cQComputeCallStackJdo_double6M_v_;
 text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciBytecodeStream__v_;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
 text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cIGraphKitOmake_merge_mem6MpnENode_22_v_;
 text: .text%__1cGEventsDlog6FpkcE_v_;
 text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
 text: .text%__1cSsafePoint_pollNodeEsize6kMpnNPhaseRegAlloc__I_;
@@ -3506,27 +2298,15 @@
 text: .text%__1cPshrI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cFParseWensure_phis_everywhere6M_v_;
 text: .text%__1cNsubL_rRegNodeErule6kM_I_;
-text: .text%__1cNIdealLoopTreeUiteration_split_impl6MpnOPhaseIdealLoop_rnJNode_List__v_;
-text: .text%__1cNIdealLoopTreebBpolicy_do_remove_empty_loop6MpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeOpolicy_peeling6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cIBoolNodeZis_counted_loop_exit_test6M_i_;
-text: .text%__1cJloadCNodeHtwo_adr6kM_I_;
 text: .text%__1cUPSMarkSweepDecoratorVdestination_decorator6F_p0_;
-text: .text%__1cTGeneratePairingInfoRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cENode2n6FL_pv_;
 text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
 text: .text%__1cKBufferBlob2n6FLI_pv_;
 text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
 text: .text%__1cKBufferBlob2t6Mpkci_v_;
 text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
 text: .text%__1cKciTypeFlowLStateVectorLdo_putfield6MpnQciBytecodeStream__v_;
 text: .text%__1cHnmethodNscope_desc_at6MpC_pnJScopeDesc__;
-text: .text%__1cHnmethodJcode_size6kM_i_;
-text: .text%__1cRtestP_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRtestP_reg_memNodePoper_input_base6kM_I_;
 text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cOjmpLoopEndNodeJnum_opnds6kM_I_;
 text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
 text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
@@ -3537,18 +2317,12 @@
 text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
 text: .text%__1cMrdi_RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cFTypeDCeq6kMpknEType__i_;
-text: .text%__1cJLoadCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNtestL_regNodeHtwo_adr6kM_I_;
 text: .text%__1cTconvL2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
 text: .text%__1cMrax_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmodI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cNSignatureInfoIdo_short6M_v_;
 text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cNsubL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cNandL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cNsubL_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
 text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
 text: .text%__1cICodeHeapTmark_segmap_as_used6MLL_v_;
@@ -3563,21 +2337,17 @@
 text: .text%__1cILRG_List2t6MI_v_;
 text: .text%__1cHMatcherLreturn_addr6kM_i_;
 text: .text%__1cSindIndexOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cGBundlePinitialize_nops6FppnIMachNode__v_;
 text: .text%__1cOMachPrologNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cHMemNodeHsize_of6kM_I_;
 text: .text%__1cNSignatureInfoIdo_float6M_v_;
 text: .text%__1cRaddI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRmulI_rReg_immNodePoper_input_base6kM_I_;
 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%__1cPsarI_rReg_1NodeJnum_opnds6kM_I_;
 text: .text%__1cRmethodDataOopDescYcompute_extra_data_count6Fii_i_;
 text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectIis_klass6M_i_;
 text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
 text: .text%__1cRxorI_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cNloadConP0NodeHsize_of6kM_I_;
@@ -3585,33 +2355,19 @@
 text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_2_v_;
 text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6ML_v_;
 text: .text%__1cTresource_free_bytes6FpcL_v_;
-text: .text%__1cNSingletonBlobMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure_i_v_;
 text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorHcompact6Mi_v_;
 text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeMideal_Opcode6kM_i_;
 text: .text%__1cRindIndexScaleOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cRindIndexScaleOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cPCountedLoopNodeHsize_of6kM_I_;
 text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cHAddNodeGis_Add6kM_pk0_;
 text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cTMachCallRuntimeNodeSis_MachCallRuntime6M_p0_;
-text: .text%__1cMrax_RegIOperJnum_edges6kM_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%__1cKReturnNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cRjmpConU_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLjmpConUNodeUshort_branch_version6M_pnIMachNode__;
 text: .text%__1cRjmpConU_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cRjmpConU_shortNodeJis_Branch6kM_I_;
-text: .text%__1cKcmpOpUOperFclone6kM_pnIMachOper__;
-text: .text%__1cRtestP_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-text: .text%__1cIregDOperJnum_edges6kM_I_;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
 text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
 text: .text%__1cSindIndexOffsetOperNconstant_disp6kM_i_;
 text: .text%__1cIAndLNodeGadd_id6kM_pknEType__;
@@ -3620,41 +2376,25 @@
 text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
 text: .text%__1cRaddP_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMatcherQpost_fast_unlock6FpknENode__i_;
 text: .text%__1cFStateV_sub_Op_MemBarRelease6MpknENode__v_;
 text: .text%__1cOleaPIdxOffNodeMideal_Opcode6kM_i_;
-text: .text%__1cILoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cScompI_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cScompI_rReg_memNodeJnum_opnds6kM_I_;
 text: .text%__1cJAssemblerDorq6MpnMRegisterImpl_nHAddress__v_;
 text: .text%__1cScompI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_v_;
 text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cTcompareAndSwapLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
 text: .text%__1cKciTypeFlowLStateVectorJhalf_type6FpnGciType__3_;
-text: .text%__1cQmerge_point_safe6FpnENode__i_: loopopts.o;
-text: .text%__1cRaddL_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cHMatcherUc_calling_convention6FpnLOptoRegPair_I_v_;
-text: .text%__1cPCallRuntimeNodeScalling_convention6kMpnLOptoRegPair_I_v_;
 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%__1cENodeHget_int6kMpi_i_;
-text: .text%__1cPCountedLoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cJLoadFNodeGOpcode6kM_i_;
 text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
 text: .text%__1cNincI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPClassFileParserbEparse_constant_pool_long_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPcmovI_reg_lNodePoper_input_base6kM_I_;
 text: .text%__1cJAssemblerEleaq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
 text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cNprefetchwNodeZcheck_for_anti_dependence6kM_i_;
 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__;
@@ -3667,29 +2407,22 @@
 text: .text%__1cScompU_rReg_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
 text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cWCallLeafNoFPDirectNodeHtwo_adr6kM_I_;
 text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSvframeStreamCommonYfill_from_compiled_frame6MpnHnmethod_i_v_;
 text: .text%__1cNandL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cHnmethodQis_native_method6kM_i_;
 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%__1cIMulINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cFStateO_sub_Op_StoreB6MpknENode__v_;
 text: .text%__1cRaddL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cIregFOperJnum_edges6kM_I_;
 text: .text%__1cRandI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIRootNodeFIdeal6MpnIPhaseGVN_i_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%__1cMrep_stosNodeHtwo_adr6kM_I_;
 text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cNsubI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cHMemNodeScalculate_adr_type6FpknEType_pknHTypePtr__6_;
@@ -3697,16 +2430,12 @@
 text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_;
 text: .text%__1cNaddP_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cKstoreLNodeHtwo_adr6kM_I_;
 text: .text%__1cNnegI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodePoper_input_base6kM_I_;
 text: .text%__1cbFloadConL_0x6666666666666667NodeErule6kM_I_;
 text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cIGraphKitNstore_barrier6MpnENode_22_v_;
 text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
 text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cSmembar_acquireNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMoutputStreamMdo_vsnprintf6FpcLpkcpnR__va_list_element_irL_3_;
 text: .text%__1cMoutputStreamFprint6MpkcE_v_;
 text: .text%__1cMURShiftLNodeJideal_reg6kM_I_;
 text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
@@ -3719,38 +2448,23 @@
 text: .text%__1cIciMethodRinstructions_size6M_i_;
 text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cJimmL0OperJconstantL6kM_x_;
-text: .text%__1cWandI_rReg_imm65535NodePoper_input_base6kM_I_;
 text: .text%__1cIAndINodeJideal_reg6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cYexternal_word_RelocationJpack_data6M_i_;
-text: .text%__1cJimmP0OperFclone6kM_pnIMachOper__;
-text: .text%__1cKRelocationYruntime_address_to_index6FpC_l_;
 text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_i_v_;
 text: .text%__1cYexternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cRsalL_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cLPhaseValues2T5B6M_v_;
 text: .text%__1cNstoreImmBNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
 text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cNxorI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNxorI_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_l_v_;
 text: .text%jni_ExceptionCheck: jni.o;
 text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTCallDynamicJavaNodeEhash6kM_I_;
 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%__1cLPcDescCacheKpc_desc_at6kMpnHnmethod_pC_pnGPcDesc__;
 text: .text%__1cKBlock_ListGinsert6MIpnFBlock__v_;
-text: .text%__1cKtype2basic6FpknEType__nJBasicType__;
 text: .text%__1cQleaPIdxScaleNodeLbottom_type6kM_pknEType__;
 text: .text%__1cKklassKlassOklass_oop_size6kM_i_;
-text: .text%__1cIGraphKitOnull_check_oop6MpnKRegionNode_pnENode_i_4_;
-text: .text%__1cJloadCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRxorI_rReg_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
 text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
@@ -3762,12 +2476,10 @@
 text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
 text: .text%__1cScompI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRaddI_rReg_memNodeErule6kM_I_;
-text: .text%__1cYexternal_word_RelocationWfix_relocation_at_move6Ml_v_;
 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%__1cOCompilerOracleMshould_print6FnMmethodHandle__i_;
 text: .text%__1cNstoreImmBNodeFreloc6kM_i_;
 text: .text%__1cJcmpOpOperNgreater_equal6kM_i_;
 text: .text%__1cKBufferBlobEfree6Fp0_v_;
@@ -3776,12 +2488,9 @@
 text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
 text: .text%__1cKNode_ArrayFclear6M_v_;
 text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cJAssemblerFpushq6MpnMRegisterImpl__v_;
-text: .text%__1cIRootNodeHis_Root6M_p0_;
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
 text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
 text: .text%__1cRsalL_rReg_immNodeErule6kM_I_;
-text: .text%__1cPstoreImmI16NodeHtwo_adr6kM_I_;
 text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
 text: .text%jni_NewObject: jni.o;
 text: .text%__1cNaddP_rRegNodeMideal_Opcode6kM_i_;
@@ -3790,38 +2499,25 @@
 text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
 text: .text%__1cNtestL_regNodeErule6kM_I_;
 text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cNstoreImmINodeHtwo_adr6kM_I_;
 text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
 text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
 text: .text%__1cRsarI_rReg_immNodeErule6kM_I_;
-text: .text%__1cNtestL_regNodePoper_input_base6kM_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%__1cHMatcherPprior_fast_lock6FpknENode__i_;
 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%__1cRtestP_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRtestP_reg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cRtestP_reg_memNodeJnum_opnds6kM_I_;
 text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cUmembar_cpu_orderNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUmembar_cpu_orderNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTcompareAndSwapLNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTcompareAndSwapLNodeHtwo_adr6kM_I_;
 text: .text%__1cJScopeDescGsender6kM_p0_;
 text: .text%__1cSindIndexOffsetOperOindex_position6kM_i_;
 text: .text%__1cSindIndexOffsetOperNbase_position6kM_i_;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
 text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
 text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cNtestU_regNodeHtwo_adr6kM_I_;
 text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
 text: .text%__1cNGrowableArray4Cpv_2t6MpnFArena_iirk0_v_;
 text: .text%__1cKstoreFNodePoper_input_base6kM_I_;
@@ -3832,13 +2528,11 @@
 text: .text%__1cNcmovI_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
 text: .text%__1cFStateN_sub_Op_LoadL6MpknENode__v_;
-text: .text%__1cNmodI_rRegNodeJnum_opnds6kM_I_;
 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%__1cJloadLNodeIpeephole6MpnFBlock_ipnNPhaseRegAlloc_ri_pnIMachNode__;
 text: .text%__1cJloadLNodeFreloc6kM_i_;
 text: .text%__1cSCallLeafDirectNodeFreloc6kM_i_;
 text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
@@ -3847,24 +2541,18 @@
 text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_2_v_;
 text: .text%__1cRmulL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeRis_cisc_alternate6kM_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%__1cKciTypeFlowFRangeSprivate_copy_count6kMpn0AGJsrSet__i_;
-text: .text%__1cOleaPIdxOffNodeJnum_opnds6kM_I_;
 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%__1cOPhaseIdealLoop2t6MrnMPhaseIterGVN_pk0i_v_;
 text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
 text: .text%__1cRsubI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIMinINodeLbottom_type6kM_pknEType__;
-text: .text%__1cOjmpLoopEndNodeHtwo_adr6kM_I_;
 text: .text%__1cJLoadBNodeJideal_reg6kM_I_;
-text: .text%__1cNnegI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cFStateS_sub_Op_FastUnlock6MpknENode__v_;
 text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRcmpFastUnlockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
@@ -3872,25 +2560,14 @@
 text: .text%__1cScompU_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRsarI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cLCastP2LNodeJideal_reg6kM_I_;
 text: .text%__1cPcmovI_reg_gNodeErule6kM_I_;
-text: .text%__1cFStateP_sub_Op_CastP2L6MpknENode__v_;
-text: .text%__1cScompU_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cScompU_rReg_memNodeJnum_opnds6kM_I_;
 text: .text%__1cScompU_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeRis_safepoint_node6kM_i_;
 text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
 text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_pCnJrelocInfoJrelocType__v_;
 text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_;
 text: .text%__1cIimmFOperJconstantF6kM_f_;
-text: .text%__1cNcmovI_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
-text: .text%__1cNcmovI_regNodeJnum_opnds6kM_I_;
-text: .text%__1cJAssemblerEmovq6MnHAddress_i_v_;
-text: .text%__1cIciObjectJis_method6M_i_;
-text: .text%__1cIciObjectOis_method_data6M_i_;
 text: .text%__1cIDivINodeLbottom_type6kM_pknEType__;
 text: .text%__1cHOrINodeJideal_reg6kM_I_;
 text: .text%__1cNcmovI_regNodeMcisc_operand6kM_i_;
@@ -3900,21 +2577,13 @@
 text: .text%__1cJloadFNodeMideal_Opcode6kM_i_;
 text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_;
 text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIAndLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cFParseJdo_ifnull6MnIBoolTestEmask__v_;
-text: .text%__1cMtlsLoadPNodeHtwo_adr6kM_I_;
-text: .text%__1cIGraphKitOset_pair_local6MipnENode__v_;
-text: .text%__1cJLoadCNodeJideal_reg6kM_I_;
-text: .text%__1cPcmovI_reg_lNodeMideal_Opcode6kM_i_;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
 text: .text%__1cMrcx_RegIOperEtype6kM_pknEType__;
-text: .text%__1cLConvL2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
 text: .text%__1cHNTarjanDDFS6Fp0rnJVectorSet_pnOPhaseIdealLoop_pI_i_;
 text: .text%__1cHNTarjanIsetdepth6MIpI_v_;
@@ -3926,37 +2595,24 @@
 text: .text%__1cOPhaseIdealLoopRinit_dom_lca_tags6M_v_;
 text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cScheck_phi_clipping6FpnHPhiNode_rpnHConNode_rI45rpnENode_5_i_: cfgnode.o;
 text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTconvI2L_reg_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cRsubI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_;
-text: .text%__1cTC2IAdapterGeneratorUgenerate_c2i_adapter6FnMmethodHandle__pnKC2IAdapter__;
-text: .text%__1cKCompiledICIis_clean6kM_i_;
 text: .text%__1cNaddP_rRegNodeErule6kM_I_;
-text: .text%__1cRmulL_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cICodeBlobOis_java_method6kM_i_;
-text: .text%__1cKVtableStubSpd_code_size_limit6Fi_i_;
-text: .text%__1cIUniverseWis_out_of_memory_error6FnGHandle__i_;
 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%__1cKJavaThreadNreguard_stack6MpC_i_;
 text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
 text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cKCompiledICZcompute_monomorphic_entry6FnMmethodHandle_nLKlassHandle_iirnOCompiledICInfo_pnGThread__v_;
-text: .text%__1cNGrowableArray4nMmethodHandle__Icontains6kMrkn0A__i_;
 text: .text%__1cLOpaque2NodeEhash6kM_I_;
 text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
 text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
 text: .text%__1cFParseGdo_new6M_v_;
 text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__v_;
 text: .text%__1cJimmI0OperJnum_edges6kM_I_;
 text: .text%__1cRmulI_rReg_immNodeMcisc_operand6kM_i_;
 text: .text%__1cICodeHeapMmax_capacity6kM_L_;
@@ -3974,103 +2630,66 @@
 text: .text%__1cRmulI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHciKlassGloader6M_pnHoopDesc__;
 text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cNandI_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cLRethrowNodeEhash6kM_I_;
-text: .text%__1cTC2IAdapterGeneratorSstd_verified_entry6FnMmethodHandle__pC_;
 text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cNandI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cGThreadOis_Java_thread6kM_i_;
 text: .text%__1cSmembar_releaseNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cHMatcherQinline_cache_reg6F_i_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeJnum_opnds6kM_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%__1cLOptoRuntimebAresolve_opt_virtual_call_C6FpnKJavaThread__pC_;
 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%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__;
 text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
 text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cIVMThreadMis_VM_thread6kM_i_;
-text: .text%__1cPcmovI_reg_lNodeJnum_opnds6kM_I_;
 text: .text%__1cMloadConLNodeHsize_of6kM_I_;
 text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cTconvI2L_reg_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNaddL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cKstoreFNodeJnum_opnds6kM_I_;
 text: .text%__1cNaddL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSComputeAdapterInfoJdo_double6M_v_;
-text: .text%__1cLimmUL32OperFclone6kM_pnIMachOper__;
-text: .text%__1cPloadConUL32NodeFclone6kM_pnENode__;
 text: .text%__1cLLShiftLNodeJideal_reg6kM_I_;
-text: .text%__1cMtlsLoadPNodePoper_input_base6kM_I_;
 text: .text%__1cPlocal_vsnprintf6FpcLpkcpnR__va_list_element__i_;
-text: .text%__1cSComputeAdapterInfoHdo_bool6M_v_;
 text: .text%jio_vsnprintf;
-text: .text%__1cURethrowExceptionNodeGpinned6kM_i_;
 text: .text%__1cNstoreImmINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIAndLNodeJideal_reg6kM_I_;
-text: .text%__1cURethrowExceptionNodeHtwo_adr6kM_I_;
 text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
 text: .text%jio_snprintf;
 text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeErule6kM_I_;
 text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarL_rReg_immNodeJnum_opnds6kM_I_;
 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%__1cOCompilerOraclePshould_break_at6FnMmethodHandle__i_;
-text: .text%__1cJloadCNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cQorI_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cPsarI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKReturnNode2t6MpnENode_2222_v_;
 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%__1cNIdealLoopTreeMis_loop_exit6kMpnENode_pnOPhaseIdealLoop__2_;
 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%__1cKloadUBNodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cNobjArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
 text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cOLibraryCallKitNtry_to_inline6M_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%__1cHnmethodOexception_size6kM_i_;
-text: .text%__1cHnmethodPscopes_pcs_size6kM_i_;
 text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
 text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodQscopes_data_size6kM_i_;
-text: .text%__1cHnmethodJstub_size6kM_i_;
 text: .text%__1cHnmethodKtotal_size6kM_i_;
 text: .text%__1cNtestU_regNodeErule6kM_I_;
 text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cICodeBlobWfix_relocation_at_move6Ml_v_;
-text: .text%__1cKCodeBufferJcopy_code6MpnICodeBlob__v_;
-text: .text%__1cNRelocIteratorMcreate_index6FpnKCodeBuffer_pnJrelocInfo_4_4_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
 text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cICodeBlob2t6MpkcpnKCodeBuffer_iiipnJOopMapSet_i_v_;
 text: .text%__1cMrdx_RegLOperEtype6kM_pknEType__;
-text: .text%__1cKCodeBufferPcopy_relocation6MpnICodeBlob__v_;
 text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
 text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
 text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
@@ -4079,16 +2698,13 @@
 text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
 text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
 text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%__1cSstring_compareNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%jni_GetObjectArrayElement: jni.o;
 text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cIDivINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cNGrowableArray4CpnNCallGenerator__2t6Mii_v_;
 text: .text%__1cETypeKInitialize6FpnHCompile__v_;
 text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
 text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
@@ -4110,12 +2726,9 @@
 text: .text%__1cJStartNodeJideal_reg6kM_I_;
 text: .text%__1cHMatcher2t6MrnJNode_List__v_;
 text: .text%__1cFArena2t6ML_v_;
-text: .text%__1cIPhaseCFGOschedule_early6MrnJVectorSet_rnJNode_List_rnLBlock_Array__i_;
 text: .text%__1cWNode_Backward_Iterator2t6MpnENode_rnJVectorSet_rnJNode_List_rnLBlock_Array__v_;
 text: .text%__1cHMatcherFmatch6M_v_;
 text: .text%__1cFStateM_sub_Op_Goto6MpknENode__v_;
-text: .text%__1cIPhaseCFGNschedule_late6MrnJVectorSet_rnJNode_List_rnNGrowableArray4CI___v_;
-text: .text%__1cIPhaseCFGQFind_Inner_Loops6M_v_;
 text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
 text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
 text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
@@ -4123,7 +2736,6 @@
 text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
 text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
 text: .text%__1cMPhaseChaitinGde_ssa6M_v_;
-text: .text%__1cMPhaseChaitinbGstretch_base_pointer_live_ranges6MpnMResourceArea__i_;
 text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
 text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
 text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
@@ -4136,30 +2748,21 @@
 text: .text%__1cHCompileTframe_size_in_words6kM_i_;
 text: .text%__1cOCompileWrapper2T6M_v_;
 text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cHCompileYinit_scratch_locs_memory6M_v_;
 text: .text%__1cNPhasePeephole2t6MpnNPhaseRegAlloc_rnIPhaseCFG__v_;
-text: .text%__1cJPhaseLive2T6M_v_;
-text: .text%__1cNPhasePeephole2T6M_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%__1cNtestU_regNodePoper_input_base6kM_I_;
-text: .text%__1cWemit_exception_handler6FrnKCodeBuffer__v_;
 text: .text%__1cWsize_exception_handler6F_I_;
 text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
 text: .text%__1cNPhasePeepholeMdo_transform6M_v_;
 text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cMPhaseChaitin2T6M_v_;
 text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cKCodeBufferOrelocate_stubs6M_v_;
-text: .text%__1cIPhaseCFGLRemoveEmpty6M_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%__1cNGrowableArray4CpnJNode_List__2t6Mii_v_;
 text: .text%__1cRsarL_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
 text: .text%__1cFStateM_sub_Op_CmpL6MpknENode__v_;
@@ -4167,70 +2770,46 @@
 text: .text%__1cFStateN_sub_Op_LoadS6MpknENode__v_;
 text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
 text: .text%__1cOCompiledRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
-text: .text%__1cKC2IAdapterOis_c2i_adapter6kM_i_;
 text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cOCompiledRFrameLis_compiled6kM_i_;
-text: .text%__1cRmethodDataOopDescKinitialize6MpnNmethodOopDesc__v_;
 text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_bytes6FpnNmethodOopDesc__i_;
 text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
 text: .text%__1cNxorI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_words6FpnNmethodOopDesc__i_;
 text: .text%__1cRmethodDataOopDescPpost_initialize6MpnOBytecodeStream__v_;
 text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFStateO_sub_Op_Return6MpknENode__v_;
 text: .text%__1cHRetNodeFreloc6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_base6MnITosState_ppCi_v_;
-text: .text%__1cZCallInterpreterDirectNodeHtwo_adr6kM_I_;
-text: .text%__1cNloadConP0NodeFclone6kM_pnENode__;
-text: .text%__1cOClearArrayNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
 text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
 text: .text%__1cQleaPIdxScaleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRindIndexScaleOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cIGraphKitNallocate_heap6MpnENode_222pknITypeFunc_pC22ipknKTypeOopPtr__2_;
-text: .text%__1cPciInstanceKlassbBcompute_shared_has_subklass6M_i_;
 text: .text%__1cNSignatureInfoHdo_byte6M_v_;
-text: .text%__1cQorI_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cNIdealLoopTreePiteration_split6MpnOPhaseIdealLoop_rnJNode_List__v_;
 text: .text%__1cNandI_rRegNodeErule6kM_I_;
-text: .text%__1cRsarI_rReg_immNodeJnum_opnds6kM_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%__1cHBitDataKis_BitData6M_i_;
 text: .text%__1cQsalI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cNaddP_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cJAssemblerEcmpq6MnHAddress_i_v_;
 text: .text%__1cNloadConP0NodeFreloc6kM_i_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 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%__1cNGrowableArray4nMmethodHandle__2t6Mii_v_;
 text: .text%__1cLConvL2INodeJideal_reg6kM_I_;
-text: .text%__1cNGrowableArray4nLKlassHandle__2t6Mii_v_;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
 text: .text%JVM_GetClassNameUTF;
-text: .text%__1cMPrefetchNodeJideal_reg6kM_I_;
 text: .text%__1cKCodeBuffer2t6MpCi_v_;
 text: .text%__1cNprefetchwNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_Prefetch6MpknENode__v_;
 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%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
 text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
 text: .text%__1cHi2bNodeMideal_Opcode6kM_i_;
-text: .text%__1cNLocationValueLis_location6kM_i_;
 text: .text%__1cNLocationValue2t6MpnTDebugInfoReadStream__v_;
 text: .text%__1cIMulLNodeJideal_reg6kM_I_;
 text: .text%__1cNsubL_rRegNodeHtwo_adr6kM_I_;
@@ -4241,24 +2820,17 @@
 text: .text%__1cKcmpOpUOperEless6kM_i_;
 text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cKReflectionGinvoke6FnTinstanceKlassHandle_nMmethodHandle_nGHandle_inOobjArrayHandle_nJBasicType_4ipnGThread__pnHoopDesc__;
 text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cQsalI_rReg_CLNodePoper_input_base6kM_I_;
 text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
 text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%__1cMLinkResolverbHlinktime_resolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 text: .text%__1cLBoxLockNodeEhash6kM_I_;
 text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cRxorI_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cKciTypeFlowFBlockQset_private_copy6Mi_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%__1cSComputeAdapterInfoIdo_short6M_v_;
-text: .text%__1cNtestL_regNodeJnum_opnds6kM_I_;
 text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
 text: .text%__1cISubLNodeLbottom_type6kM_pknEType__;
 text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
@@ -4298,70 +2870,42 @@
 text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_;
 text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_;
 text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_;
-text: .text%__1cGThreadOis_interrupted6Fp0i_i_;
 text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
 text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
 text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cSsafePoint_pollNodeJnum_opnds6kM_I_;
 text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__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%__1cNGrowableArray4CpnKciTypeFlowFBlock__Icontains6kMrk2_i_;
 text: .text%__1cScompP_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cNcmovP_regNodePoper_input_base6kM_I_;
-text: .text%__1cTno_rax_rdx_RegIOperJnum_edges6kM_I_;
 text: .text%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciBytecodeStream__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnRFloatRegisterImpl_pnMRegisterImpl_4nHAddressLScaleFactor_ipCrknQRelocationHolder__v_;
 text: .text%__1cNaddL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRethrowNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cMloadConINodeGis_Con6kM_I_;
 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%__1cHnmethodUnumber_of_dependents6kM_i_;
-text: .text%__1cTconvI2L_reg_memNodeFreloc6kM_i_;
-text: .text%__1cSComputeAdapterInfoIdo_float6M_v_;
 text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc_ii_v_: nativeLookup.o;
 text: .text%JVM_FindClassFromClassLoader;
 text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cZCallInterpreterDirectNodeSalignment_required6kM_i_;
-text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_;
-text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRmulL_rReg_immNodeMcisc_operand6kM_i_;
-text: .text%__1cNloadConI0NodeGis_Con6kM_I_;
-text: .text%__1cKstoreBNodeHtwo_adr6kM_I_;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc__v_: nativeLookup.o;
-text: .text%__1cKRegionNodeUdepends_only_on_test6kM_i_;
 text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
 text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
 text: .text%__1cPsalI_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTconvI2L_reg_memNodeHtwo_adr6kM_I_;
 text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__;
 text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
 text: .text%__1cFStateM_sub_Op_AddL6MpknENode__v_;
 text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cUmembar_cpu_orderNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmembar_cpu_orderNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSCompareAndSwapNodeJideal_reg6kM_I_;
-text: .text%__1cFStateW_sub_Op_MemBarCPUOrder6MpknENode__v_;
 text: .text%__1cKciTypeFlowLStateVectorMdo_checkcast6MpnQciBytecodeStream__v_;
 text: .text%__1cMorI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cMrax_RegIOperKin_RegMask6kMi_pknHRegMask__;
@@ -4377,77 +2921,48 @@
 text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cPshrI_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cRmulI_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cNandI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbACallCompiledJavaDirectNodeHtwo_adr6kM_I_;
 text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
-text: .text%__1cbLtransform_int_divide_to_long_multiply6FpnIPhaseGVN_pnENode_i_3_: divnode.o;
 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%__1cHTypePtrFempty6kM_i_;
-text: .text%__1cOMacroAssemblerSload_unsigned_word6MpnMRegisterImpl_nHAddress__i_;
 text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
 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%__1cRmulI_rReg_immNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cJloadFNodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cIplus_adr6FpnENode_l_1_: generateOptoStub.o;
 text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cHConNode2t6MpknEType__v_;
 text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_;
-text: .text%__1cNCompileBrokerTcreate_compile_task6FpnMCompileQdDueue_inMmethodHandle_i3ipkcii_pnLCompileTask__;
-text: .text%__1cLCompileTaskKinitialize6MinMmethodHandle_i1ipkcii_v_;
 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%__1cQleaPIdxScaleNodeZcheck_for_anti_dependence6kM_i_;
 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%__1cObox_handleNodePoper_input_base6kM_I_;
 text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
 text: .text%__1cSCompileTaskWrapper2T6M_v_;
 text: .text%__1cLCompileTaskEfree6M_v_;
 text: .text%__1cNnegI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
 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%__1cRxorI_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
 text: .text%__1cKloadUBNodePoper_input_base6kM_I_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVcompiledICHolderKlassXoop_is_compiledICHolder6kM_i_;
-text: .text%__1cJStoreNodeUdepends_only_on_test6kM_i_;
 text: .text%__1cPcmovI_reg_lNodeErule6kM_I_;
-text: .text%__1cOloadConL32NodePoper_input_base6kM_I_;
 text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cRtestI_reg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cIimmDOperJconstantD6kM_d_;
 text: .text%__1cFParsePmerge_exception6Mi_v_;
 text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cNGrowableArray4CpnIciObject__2t6MpnFArena_iirk1_v_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2pnGThread__v_;
-text: .text%__1cZCallDynamicJavaDirectNodeHtwo_adr6kM_I_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cMLinkResolverWresolve_interface_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
 text: .text%__1cNGrowableArray4CpnIciObject__JappendAll6Mpk2_v_;
-text: .text%__1cFciEnv2t6MpnHJNIEnv__iii_v_;
-text: .text%__1cRtestP_reg_memNodeFreloc6kM_i_;
-text: .text%__1cNtestP_regNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cNGrowableArray4CpnIciMethod__2t6MpnFArena_iirk1_v_;
 text: .text%__1cNGrowableArray4CpnHciKlass__2t6MpnFArena_iirk1_v_;
 text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
@@ -4466,16 +2981,13 @@
 text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cTconvD2I_reg_regNodeErule6kM_I_;
 text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cLOptoRuntimeRmultianewarray1_C6FpnMklassOopDesc_ipnKJavaThread__v_;
 text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
 text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
 text: .text%__1cLVtableStubsPstub_containing6FpC_pnKVtableStub__;
-text: .text%__1cLVtableStubsIcontains6FpC_i_;
 text: .text%__1cNFingerprinterIdo_float6M_v_;
 text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
 text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cUjmpLoopEnd_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNmodI_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cUjmpLoopEnd_shortNodeMideal_Opcode6kM_i_;
 text: .text%__1cKEntryPoint2t6MpC11111111_v_;
 text: .text%jni_GetObjectClass: jni.o;
@@ -4484,26 +2996,19 @@
 text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
 text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cOloadConL32NodeHtwo_adr6kM_I_;
-text: .text%__1cQshrI_rReg_CLNodePoper_input_base6kM_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%__1cRmulI_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cIXorINodeGadd_id6kM_pknEType__;
 text: .text%__1cNtestP_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cPcmovI_reg_gNodeHtwo_adr6kM_I_;
-text: .text%__1cOPhaseIdealLoopKclone_loop6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cHi2bNodePoper_input_base6kM_I_;
-text: .text%__1cRsalL_rReg_immNodeJnum_opnds6kM_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%__1cRxorI_rReg_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cINodeHashIround_up6FI_I_;
 text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
 text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
@@ -4511,127 +3016,69 @@
 text: .text%__1cRaddP_rReg_immNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cINodeHash2t6MpnFArena_I_v_;
 text: .text%__1cRaddI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cIJVMState2n6FL_pv_;
 text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cOleaPIdxOffNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
 text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cMdecI_memNodeJnum_opnds6kM_I_;
-text: .text%__1cIModINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cTconvI2L_reg_regNodeMcisc_version6Mi_pnIMachNode__;
 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%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
 text: .text%__1cFframeVnmethods_code_blob_do6M_v_;
 text: .text%__1cHi2bNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKcmpOpUOperKless_equal6kM_i_;
-text: .text%__1cWandI_rReg_imm65535NodeJnum_opnds6kM_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%__1cNmodL_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cMloadConLNodeFclone6kM_pnENode__;
-text: .text%__1cNtestU_regNodeJnum_opnds6kM_I_;
-text: .text%__1cIimmLOperFclone6kM_pnIMachOper__;
-text: .text%__1cRandL_rReg_immNodePoper_input_base6kM_I_;
 text: .text%__1cOleaPIdxOffNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
-text: .text%__1cNCompileBrokerTis_not_compile_only6FnMmethodHandle__i_;
 text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cNCompileBrokerTis_compile_blocking6FnMmethodHandle_i_i_;
 text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cNIdealLoopTreeQpolicy_peel_only6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeSpolicy_range_check6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cNIdealLoopTreeMpolicy_align6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeNpolicy_unroll6kMpnOPhaseIdealLoop__i_;
 text: .text%__1cNtestU_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
 text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cKC2CompilerOneeds_adapters6M_i_;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_;
 text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
 text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cIciMethodVshould_print_assembly6M_i_;
-text: .text%__1cOMacroAssemblerOcall_VM_helper6MpnMRegisterImpl_pCii_v_;
 text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cMincI_memNodeJnum_opnds6kM_I_;
-text: .text%__1cNCompileBrokerOcheck_break_at6FnMmethodHandle_iii_i_;
 text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
-text: .text%__1cNCompileBrokerbAeager_compile_c2i_adapters6FpnFciEnv_pnIciMethod__v_;
-text: .text%__1cNCompileBrokerbAeager_compile_i2c_adapters6FpnFciEnv_pnIciMethod__v_;
 text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
 text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cMstoreSSPNodeHis_Copy6kM_I_;
 text: .text%__1cQshrI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnQAbstractCompiler_ii_v_;
 text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cIciMethodQbreak_at_execute6M_i_;
 text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cFciEnvbUsystem_dictionary_modification_counter_changed6M_i_;
 text: .text%__1cMelapsedTimerDadd6M0_v_;
 text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cJStartNodeScalling_convention6kMpnLOptoRegPair_I_v_;
 text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
-text: .text%__1cFMutex2t6Mipkci_v_;
 text: .text%__1cKloadUBNodeErule6kM_I_;
 text: .text%__1cQsalL_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cbACallCompiledJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbACallCompiledJavaDirectNodePoper_input_base6kM_I_;
-text: .text%__1cTbasictype2arraycopy6FnJBasicType_i_pC_;
-text: .text%__1cOLibraryCallKitQinline_arraycopy6M_i_;
 text: .text%__1cPstoreImmI16NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLOptoRuntimeOarraycopy_Type6F_pknITypeFunc__;
-text: .text%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_;
 text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cLPcDescCache2t6M_v_;
 text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cHnmethodSresolve_JNIHandles6M_v_;
 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%__1cHnmethodLnew_nmethod6FnMmethodHandle_iiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnQAbstractCompiler__p0_;
 text: .text%__1cPcmovI_reg_lNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHnmFlagsFclear6M_v_;
 text: .text%__1cHnmethod2n6FLi_pv_;
-text: .text%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnQAbstractCompiler__v_;
-text: .text%__1cNaddI_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
 text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
 text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cICodeBlobJcopy_oops6MppnI_jobject_i_v_;
-text: .text%__1cFStateN_sub_Op_LoadC6MpknENode__v_;
-text: .text%__1cJloadCNodeFreloc6kM_i_;
 text: .text%__1cFParseQjump_if_fork_int6MpnENode_2nIBoolTestEmask__pnGIfNode__;
 text: .text%__1cWandI_rReg_imm65535NodeHtwo_adr6kM_I_;
-text: .text%__1cNdivL_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
 text: .text%__1cINodeHashUremove_useless_nodes6MrnJVectorSet__v_;
 text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
 text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod_ii_v_;
 text: .text%__1cHCompileWprint_compile_messages6M_v_;
-text: .text%__1cPClassFileParserbGparse_constant_pool_double_entry6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cQsalI_rReg_CLNodeErule6kM_I_;
 text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
 text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
@@ -4641,42 +3088,29 @@
 text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
 text: .text%__1cHCompileLFinish_Warm6M_v_;
 text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cPno_rax_RegLOperJnum_edges6kM_I_;
 text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii1_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%__1cHCompileVfinal_graph_reshaping6M_i_;
-text: .text%__1cOcompI_rRegNodeMcisc_version6Mi_pnIMachNode__;
 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%__1cbCAbstractInterpreterGeneratorQset_entry_points6MnJBytecodesECode__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorWset_short_entry_points6MpnITemplate_rpC44444444_v_;
 text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
 text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cIPhaseCCP2T6M_v_;
 text: .text%__1cIPhaseCCPHanalyze6M_v_;
 text: .text%__1cIPhaseCCPMdo_transform6M_v_;
 text: .text%__1cOcompI_rRegNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cNsubL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConPcNodeMideal_Opcode6kM_i_;
 text: .text%__1cKExceptionsG_throw6FpnGThread_pkcinGHandle__v_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinGHandle__i_;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_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%__1cQsalI_rReg_CLNodeJnum_opnds6kM_I_;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__;
 text: .text%__1cPsalL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinMsymbolHandle_4_i_;
 text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
 text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_i_;
@@ -4684,32 +3118,16 @@
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
 text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
 text: .text%__1cKcmpOpUOperHgreater6kM_i_;
-text: .text%__1cNCompileBrokerUcheck_adapter_result6FnMmethodHandle_ippnMBasicAdapter__i_;
-text: .text%__1cJloadFNodeJnum_opnds6kM_I_;
 text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cSMachC2IEntriesNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cbFunnecessary_membar_volatileNodePoper_input_base6kM_I_;
 text: .text%__1cRmulI_rReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQPSIsAliveClosureLdo_object_b6MpnHoopDesc__i_;
-text: .text%__1cTCallInterpreterNodeSis_CallInterpreter6kM_pk0_;
-text: .text%__1cZCallInterpreterDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cSMachC2IcheckICNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
 text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cZCallInterpreterDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cXMachCallInterpreterNodePret_addr_offset6M_i_;
 text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cLOptoRuntimeInew_Type6F_pknITypeFunc__;
 text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
 text: .text%__1cMTailCallNodeGOpcode6kM_i_;
 text: .text%__1cJChunkPoolMfree_all_but6ML_v_;
-text: .text%__1cIGraphKitMnew_instance6MpnPciInstanceKlass__pnENode__;
-text: .text%__1cPcmpD_cc_regNodePoper_input_base6kM_I_;
 text: .text%__1cRsalL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLOptoRuntimeSnew_typeArray_Type6F_pknITypeFunc__;
-text: .text%__1cObox_handleNodeMideal_Opcode6kM_i_;
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cIGraphKitJnew_array6MpnENode_nJBasicType_pknEType_pknMTypeKlassPtr__2_;
 text: .text%__1cNdecL_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
 text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -4717,18 +3135,11 @@
 text: .text%__1cRtestI_reg_immNodeErule6kM_I_;
 text: .text%__1cIAddFNodeGOpcode6kM_i_;
 text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
-text: .text%__1cKloadUBNodeJnum_opnds6kM_I_;
-text: .text%__1cNGrowableArray4CpnHoopDesc__2t6Mii_v_;
 text: .text%__1cZCallDynamicJavaDirectNodeSalignment_required6kM_i_;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_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%__1cNnegI_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
 text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
 text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
 text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
@@ -4742,28 +3153,15 @@
 text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
 text: .text%__1cScompL_rReg_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_;
-text: .text%__1cTCallDynamicJavaNodeSis_CallDynamicJava6kM_pk0_;
-text: .text%__1cCosHSolarisFEventEpark6M_v_;
-text: .text%__1cIMinINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cODeoptimizationYtrap_state_is_recompiled6Fi_i_;
 text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
 text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
 text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
 text: .text%__1cNGrowableArray4CL_Efind6kMrkL_i_;
-text: .text%__1cUandI_rReg_imm255NodePoper_input_base6kM_I_;
-text: .text%__1cSReferenceProcessorZadd_to_discovered_list_mt6MppnHoopDesc_23_v_;
 text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii_v_;
 text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cNObjectMonitorbAEntryQdDueue_SelectSuccessor6M_pnMObjectWaiter__;
-text: .text%__1cNObjectMonitorREntryQdDueue_insert6MpnMObjectWaiter_i_v_;
 text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cJAssemblerEpopq6MpnMRegisterImpl__v_;
 text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cISubLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMTypeKlassPtrRcast_to_exactness6kMi_pknEType__;
 text: .text%__1cNloadConI0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSComputeAdapterInfoHdo_char6M_v_;
 text: .text%__1cKPerfMemoryFalloc6FL_pc_;
 text: .text%__1cIPerfData2T6M_v_;
 text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_LL_v_;
@@ -4772,36 +3170,27 @@
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
 text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_;
 text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_v_;
 text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
 text: .text%__1cOjmpLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeOis_pc_relative6kM_i_;
-text: .text%__1cOjmpLoopEndNodeTmay_be_short_branch6kM_i_;
 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%__1cOcompU_rRegNodeMcisc_version6Mi_pnIMachNode__;
 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%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
 text: .text%__1cWCallLeafNoFPDirectNodeFreloc6kM_i_;
-text: .text%__1cSstring_compareNodeJnum_opnds6kM_I_;
 text: .text%__1cFStateU_sub_Op_CallLeafNoFP6MpknENode__v_;
 text: .text%JVM_FindLibraryEntry;
-text: .text%__1cSObjectSynchronizerHinflate6FpnHoopDesc__pnNObjectMonitor__;
 text: .text%JVM_GetMethodIxExceptionTableEntry;
 text: .text%__1cNObjectMonitorHRecycle6M_v_;
 text: .text%__1cISubLNodeGadd_id6kM_pknEType__;
 text: .text%__1cNmodI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMatcherOc_return_value6Fii_nLOptoRegPair__;
 text: .text%__1cRxorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQsarL_rReg_63NodeMideal_Opcode6kM_i_;
 text: .text%__1cRmulI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIMachOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cIMachOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
@@ -4811,46 +3200,29 @@
 text: .text%__1cNnegI_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cFStateS_sub_Op_ClearArray6MpknENode__v_;
 text: .text%__1cRaddL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
-text: .text%__1cHCompile2t6MpnFciEnv_pnIciMethod_i_v_;
 text: .text%__1cIXorINodeJideal_reg6kM_I_;
 text: .text%__1cMrep_stosNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_immNodePoper_input_base6kM_I_;
-text: .text%__1cKC2CompilerPcompile_adapter6MpnFciEnv_pnIciMethod_i_v_;
 text: .text%__1cMrep_stosNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMAdapterCacheGinsert6MpnLAdapterInfo_pnMBasicAdapter__v_;
 text: .text%__1cFStateO_sub_Op_StoreL6MpknENode__v_;
-text: .text%__1cLAdapterInfoHcopy_to6Mp0_v_;
 text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
 text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__;
 text: .text%__1cIMinINodeGadd_id6kM_pknEType__;
-text: .text%__1cNdecL_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
 text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cGThreadLnmethods_do6M_v_;
-text: .text%__1cKmul_hiNodeMideal_Opcode6kM_i_;
 text: .text%__1cKstoreLNodeFreloc6kM_i_;
 text: .text%__1cMstoreSSPNodeLbottom_type6kM_pknEType__;
 text: .text%__1cRsubI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cPsarL_rReg_2NodeMideal_Opcode6kM_i_;
 text: .text%__1cTconvF2D_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRmulL_rReg_immNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNmodL_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cRmulL_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeHtwo_adr6kM_I_;
 text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
 text: .text%__1cScompU_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRInterpreterOopMapIis_empty6M_i_;
 text: .text%__1cNFingerprinterHdo_char6M_v_;
-text: .text%__1cOrepush_if_args6FpnFParse_pnENode_3_v_: parse2.o;
 text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__;
 text: .text%__1cNGrowableArray4CpnHoopDesc__Uclear_and_deallocate6M_v_;
-text: .text%__1cMrdx_RegLOperJnum_edges6kM_I_;
 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%__1cNObjectMonitorGenter26MpnGThread__v_;
 text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
 text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
 text: .text%__1cJCodeCacheLgc_prologue6F_v_;
@@ -4860,12 +3232,8 @@
 text: .text%__1cJMarkSweepMadjust_marks6F_v_;
 text: .text%__1cJMarkSweepNrestore_marks6F_v_;
 text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cKDictionaryMdo_unloading6MpnRBoolObjectClosure__i_;
 text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cNGrowableArray4CpnFKlass__2t6Mii_v_;
-text: .text%__1cQSystemDictionaryMdo_unloading6FpnRBoolObjectClosure__i_;
 text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__v_;
 text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
 text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
 text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MLnHGCCauseFCause__v_;
@@ -4874,10 +3242,8 @@
 text: .text%__1cKPSYoungGenHcompact6M_v_;
 text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
 text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cLPSMarkSweepQinvoke_no_policy6Fpii_v_;
 text: .text%__1cLPSMarkSweepPallocate_stacks6F_v_;
 text: .text%__1cLPSMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase16Fi_v_;
 text: .text%__1cLPSMarkSweepRmark_sweep_phase26F_v_;
 text: .text%__1cLPSMarkSweepRmark_sweep_phase36F_v_;
 text: .text%__1cLPSMarkSweepRmark_sweep_phase46F_v_;
@@ -4890,53 +3256,37 @@
 text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_;
 text: .text%__1cIPSOldGenKprecompact6M_v_;
 text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cRCardTableModRefBSEis_a6MnKBarrierSetEName__i_;
 text: .text%__1cJPSPermGenQcompute_new_size6ML_v_;
 text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_i_v_;
 text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cPcmpD_cc_regNodeHtwo_adr6kM_I_;
-text: .text%__1cbFunnecessary_membar_volatileNodeHtwo_adr6kM_I_;
 text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cIciSymbolHas_utf86M_pkc_;
 text: .text%__1cQorI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
 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%__1cScompL_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cNandI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
 text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
 text: .text%__1cPstoreImmI16NodeFreloc6kM_i_;
 text: .text%__1cPstoreImmI16NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cVlookup_special_native6Fpc_pC_: nativeLookup.o;
 text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cMNativeLookupMlookup_style6FnMmethodHandle_pcpkciiripnGThread__pC_;
 text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
 text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cSInterpreterRuntimeTnmethod_entry_point6FpnKJavaThread_pnNmethodOopDesc_pnHnmethod__pC_;
 text: .text%__1cIPSOldGenOgen_size_limit6M_L_;
-text: .text%__1cTI2CAdapterGeneratorSstd_verified_entry6FnMmethodHandle__pC_;
-text: .text%__1cTI2CAdapterGeneratorUgenerate_i2c_adapter6FnMmethodHandle__pnKI2CAdapter__;
 text: .text%__1cUPSAdaptiveSizePolicybQpromo_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cHnmethodXinterpreter_entry_point6M_pC_;
 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%__1cObox_handleNodeHtwo_adr6kM_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%__1cNmethodOopDescVparameter_annotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cNmethodOopDescLannotations6kM_pnQtypeArrayOopDesc__;
 text: .text%__1cNcmovI_regNodeHtwo_adr6kM_I_;
 text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
 text: .text%__1cIGraphKitbKcombine_and_pop_all_exception_states6M_pnNSafePointNode__;
@@ -4944,26 +3294,19 @@
 text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
 text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
 text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNinstanceKlassQmethod_index_for6kMpnNmethodOopDesc_pnGThread__i_;
 text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
 text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
 text: .text%__1cFStateP_sub_Op_Rethrow6MpknENode__v_;
 text: .text%__1cQComputeCallStackIdo_array6Mii_v_;
-text: .text%__1cQsalL_rReg_CLNodePoper_input_base6kM_I_;
 text: .text%__1cNdecL_rRegNodeErule6kM_I_;
 text: .text%__1cLRethrowNodeJideal_reg6kM_I_;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
 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%__1cTCompareAndSwapLNode2t6MpnENode_2222_v_;
-text: .text%__1cQshrI_rReg_CLNodeJnum_opnds6kM_I_;
-text: .text%__1cSCompareAndSwapNode2t6MpnENode_2222_v_;
 text: .text%__1cTcompareAndSwapLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cTcompareAndSwapLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOLibraryCallKitRinline_unsafe_CAS6MnJBasicType__i_;
 text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFStateX_sub_Op_CompareAndSwapL6MpknENode__v_;
 text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_;
@@ -4974,32 +3317,23 @@
 text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
 text: .text%__1cMmulD_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cPmethodDataKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cMaddF_regNodePoper_input_base6kM_I_;
 text: .text%__1cPcmpD_cc_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_;
-text: .text%__1cbACallCompiledJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cYMachCallCompiledJavaNodePret_addr_offset6M_i_;
 text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciBytecodeStream_pnHciKlass_i_v_;
 text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__;
 text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cJloadFNodeHtwo_adr6kM_I_;
 text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
 text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
 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%__1cQorI_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
 text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
 text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cPClassFileParserbFparse_constant_pool_float_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cRmulL_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
 text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
 text: .text%__1cQciBytecodeStreamFtable6MnJBytecodesECode__2_;
@@ -5008,7 +3342,6 @@
 text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
 text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
 text: .text%__1cRxorI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cNmulI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
 text: .text%__1cISubLNodeJideal_reg6kM_I_;
 text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__;
@@ -5017,16 +3350,11 @@
 text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
 text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
 text: .text%__1cRsalL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPsalL_rReg_1NodePoper_input_base6kM_I_;
-text: .text%__1cOstackSlotPOperJnum_edges6kM_I_;
 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%__1cFParseXfetch_interpreter_state6MipknEType_pnENode__5_;
-text: .text%__1cObox_handleNodeJnum_opnds6kM_I_;
 text: .text%__1cNaddP_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cSComputeAdapterInfoHdo_byte6M_v_;
 text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
 text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
 text: .text%__1cNcmovI_regNodeQuse_cisc_RegMask6M_v_;
@@ -5035,7 +3363,6 @@
 text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
 text: .text%__1cPcmpD_cc_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cTOopMapForCacheEntryOreport_results6kM_i_;
 text: .text%__1cTconvF2D_reg_memNodePoper_input_base6kM_I_;
 text: .text%__1cNdivL_rRegNodeErule6kM_I_;
 text: .text%__1cRmulL_rReg_immNodeQuse_cisc_RegMask6M_v_;
@@ -5046,63 +3373,40 @@
 text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
 text: .text%__1cRxorI_rReg_immNodeErule6kM_I_;
 text: .text%__1cZCallDynamicJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cFParseScreate_jump_tables6MpnENode_pnLSwitchRange_4_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%__1cWPredictedCallGeneratorJis_inline6kM_i_;
-text: .text%__1cUjmpLoopEnd_shortNodeJis_Branch6kM_I_;
 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%__1cbFloadConL_0x6666666666666667NodeMideal_Opcode6kM_i_;
 text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cOjmpLoopEndNodeUshort_branch_version6M_pnIMachNode__;
 text: .text%__1cUjmpLoopEnd_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPCountedLoopNodeGstride6kM_pnENode__;
-text: .text%__1cHi2bNodeJnum_opnds6kM_I_;
 text: .text%__1cHTypeAryFxdual6kM_pknEType__;
 text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cKstoreFNodeHtwo_adr6kM_I_;
 text: .text%__1cNnegI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLencode_copy6FrnKCodeBuffer_ii_v_;
-text: .text%__1cbBconvI2L_reg_reg_reg_zexNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2F_reg_regNodePoper_input_base6kM_I_;
-text: .text%__1cUCallNativeDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cKmul_hiNodePoper_input_base6kM_I_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_pkcnGHandle_6_6_;
 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%__1cOPSPromotionLABRunallocate_object6MpnHoopDesc__i_;
-text: .text%__1cPcmpD_cc_immNodeHtwo_adr6kM_I_;
-text: .text%__1cOPhaseIdealLoopJdo_unroll6MpnNIdealLoopTree_rnJNode_List_i_v_;
 text: .text%__1cRandL_rReg_immNodeErule6kM_I_;
-text: .text%__1cNloadConP0NodeGis_Con6kM_I_;
 text: .text%__1cIMulINodeKmul_opcode6kM_i_;
-text: .text%__1cNdivL_rRegNodeJnum_opnds6kM_I_;
 text: .text%__1cIMulINodeKadd_opcode6kM_i_;
 text: .text%__1cRxorI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPregister_native6FnLKlassHandle_nMsymbolHandle_1pCpnGThread__i_: jni.o;
 text: .text%__1cTno_rax_rdx_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOtypeArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cTno_rax_rdx_RegLOperJnum_edges6kM_I_;
-text: .text%__1cOCallNativeNodeGOpcode6kM_i_;
 text: .text%__1cQsalI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSobjArrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cJAssemblerDjmp6MpCnJrelocInfoJrelocType__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%__1cHMonitor2t6Mipkci_v_;
 text: .text%__1cGHandle2t6MpnGThread_pnHoopDesc__v_;
 text: .text%__1cQorI_rReg_immNodeHtwo_adr6kM_I_;
 text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
@@ -5110,77 +3414,40 @@
 text: .text%__1cNGrowableArray4Cpv_Egrow6Mi_v_;
 text: .text%jni_GetFieldID: jni.o;
 text: .text%__1cNGrowableArray4Cl_Egrow6Mi_v_;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
 text: .text%__1cLResourceObj2n6FLn0APallocation_type__pv_;
 text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cJLoadPNodeUdepends_only_on_test6kM_i_;
 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%__1cVCallRuntimeDirectNodeHtwo_adr6kM_I_;
-text: .text%__1cKciTypeFlowOsplit_range_at6Mi_pn0AFRange__;
 text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cXjvm_define_class_common6FpnHJNIEnv__pkcpnI_jobject_pkWi53pnGThread__pnH_jclass__: jvm.o;
 text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
 text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cMmulD_immNodePoper_input_base6kM_I_;
 text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
 text: .text%__1cMmulF_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnKStackValue__2t6Mii_v_;
 text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
 text: .text%__1cRandL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCi_v_;
 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%__1cPsarL_rReg_2NodePoper_input_base6kM_I_;
-text: .text%__1cJAssemblerGpushaq6M_v_;
 text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
 text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cMrsi_RegPOperJnum_edges6kM_I_;
-text: .text%__1cMstoreSSPNodePoper_input_base6kM_I_;
-text: .text%__1cScompL_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cKCodeBufferWinsert_double_constant6Md_pC_;
 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%__1cHi2bNodeHtwo_adr6kM_I_;
 text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJAssemblerFmovsd6MnHAddress_pnRFloatRegisterImpl__v_;
-text: .text%__1cTCallInterpreterNodeScalling_convention6kMpnLOptoRegPair_I_v_;
-text: .text%__1cXMachCallInterpreterNodeWis_MachCallInterpreter6M_p0_;
-text: .text%__1cFStateX_sub_Op_CallInterpreter6MpknENode__v_;
-text: .text%__1cZCallInterpreterDirectNodeFreloc6kM_i_;
-text: .text%__1cMStartC2INodeScalling_convention6kMpnLOptoRegPair_I_v_;
 text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cMStartC2INodeKc2i_domain6FpknJTypeTuple__3_;
-text: .text%__1cHCompilebMGenerate_Compiled_To_Interpreter_Graph6MpknITypeFunc_pC_v_;
-text: .text%__1cZCallInterpreterDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvUregister_c2i_adapter6MpnIciMethod_pnJOopMapSet_pnKCodeBuffer_ii_v_;
-text: .text%__1cSMachC2IcheckICNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSMachC2IEntriesNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_i_;
-text: .text%__1cHMatcherXcompiler_method_oop_reg6F_i_;
 text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
 text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpD_cc_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cSTailCalljmpIndNodeGpinned6kM_i_;
-text: .text%__1cSTailCalljmpIndNodeHtwo_adr6kM_I_;
 text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cHBoxNodeGOpcode6kM_i_;
-text: .text%__1cPcmpD_cc_regNodeJnum_opnds6kM_I_;
-text: .text%__1cKC2IAdapter2t6MpnKCodeBuffer_iIpnJOopMapSet_i_v_;
-text: .text%__1cKC2IAdapterPnew_c2i_adapter6FpnKCodeBuffer_IpnJOopMapSet_i_p0_;
-text: .text%__1cKC2IAdapter2n6FLI_pv_;
-text: .text%__1cJAssemblerFmovss6MnHAddress_pnRFloatRegisterImpl__v_;
 text: .text%__1cIMulINodeJideal_reg6kM_I_;
 text: .text%__1cKCMovePNodeGOpcode6kM_i_;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
@@ -5189,15 +3456,11 @@
 text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
 text: .text%__1cFParseTjump_if_always_fork6Mii_v_;
 text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMmulF_immNodePoper_input_base6kM_I_;
-text: .text%__1cPcmpD_cc_immNodePoper_input_base6kM_I_;
 text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
 text: .text%__1cJAssemblerDhlt6M_v_;
 text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
 text: .text%__1cQComputeCallStackIdo_float6M_v_;
-text: .text%__1cIciObjectUis_array_klass_klass6M_i_;
 text: .text%__1cKciTypeFlowLStateVectorLdo_newarray6MpnQciBytecodeStream__v_;
-text: .text%__1cWResolveOopMapConflictsRpossible_gc_point6MpnOBytecodeStream__i_;
 text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPcmovI_reg_lNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIciSymbolHbyte_at6Mi_i_;
@@ -5205,15 +3468,9 @@
 text: .text%__1cENode2t6Mp0111111_v_;
 text: .text%__1cIMaxINodeGadd_id6kM_pknEType__;
 text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
 text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
 text: .text%__1cMmulD_immNodeErule6kM_I_;
-text: .text%__1cMnegD_regNodePoper_input_base6kM_I_;
-text: .text%__1cFframeVshould_be_deoptimized6kM_i_;
 text: .text%__1cMaddF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorThas_signature_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorVhas_annotations_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorbFhas_parameter_annotations_field6F_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_;
@@ -5226,61 +3483,36 @@
 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%__1cKmul_hiNodeJnum_opnds6kM_I_;
 text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRxorI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cNsubI_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cHMatcherXinterpreter_arg_ptr_reg6F_i_;
 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%__1cNcmovP_regNodeJnum_opnds6kM_I_;
 text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
 text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimeVresolve_static_call_C6FpnKJavaThread__pC_;
-text: .text%__1cSCompiledStaticCallIis_clean6kM_i_;
 text: .text%__1cMrsi_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cTAbstractInterpreterLdeopt_entry6FnITosState_i_pC_;
 text: .text%__1cRindIndexScaleOperNconstant_disp6kM_i_;
-text: .text%__1cQorI_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cRtestI_reg_immNodeJnum_opnds6kM_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%__1cRxorI_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cObox_handleNodeErule6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
 text: .text%__1cOleaPIdxOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsarL_rReg_63NodePoper_input_base6kM_I_;
 text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
 text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cHCompileRmake_vm_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
 text: .text%__1cNmulI_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4Ci_2t6Mii_v_;
-text: .text%__1cQsalL_rReg_CLNodeJnum_opnds6kM_I_;
 text: .text%__1cNGrowableArray4Ci_Uclear_and_deallocate6M_v_;
-text: .text%__1cPCountedLoopNode2t6MpnENode_2_v_;
-text: .text%__1cSCountedLoopEndNode2t6MpnENode_2ff_v_;
 text: .text%__1cJloadDNodeMideal_Opcode6kM_i_;
 text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMmulD_regNodePoper_input_base6kM_I_;
-text: .text%__1cTconvF2D_reg_memNodeJnum_opnds6kM_I_;
 text: .text%__1cIModINodeJideal_reg6kM_I_;
 text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cObox_handleNodeLbottom_type6kM_pknEType__;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
 text: .text%__1cPshrL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cUverify_byte_codes_fn6F_pv_: verifier.o;
-text: .text%__1cMLinkResolverbPlinktime_resolve_interface_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
 text: .text%JVM_GetClassCPTypes;
 text: .text%__1cQComputeCallStackHdo_byte6M_v_;
 text: .text%JVM_GetClassCPEntriesCount;
@@ -5291,11 +3523,8 @@
 text: .text%__1cKmul_hiNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cJAssemblerEnegq6MpnMRegisterImpl__v_;
 text: .text%__1cNmodL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKloadUBNodeHtwo_adr6kM_I_;
-text: .text%__1cRxorI_rReg_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_;
 text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
 text: .text%__1cNsubL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cOjmpLoopEndNodeGnegate6M_v_;
 text: .text%__1cQorI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -5303,7 +3532,6 @@
 text: .text%__1cPsalL_rReg_1NodeErule6kM_I_;
 text: .text%__1cPcmpD_cc_immNodeErule6kM_I_;
 text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVset_vtos_entry_points6MpnITemplate_rpC44444444_v_;
 text: .text%__1cHCompileQgrow_alias_types6M_v_;
 text: .text%__1cUandI_rReg_imm255NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%jni_CallIntMethod: jni.o;
@@ -5313,72 +3541,42 @@
 text: .text%__1cNmulI_rRegNodeMcisc_operand6kM_i_;
 text: .text%__1cNxorI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cTconvF2D_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIUniverseWreinitialize_vtable_of6FpnFKlass_pnGThread__v_;
 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%__1cLOptoRuntimeThandle_wrong_method6FpnKJavaThread__pC_;
 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%__1cRandL_rReg_immNodeJnum_opnds6kM_I_;
 text: .text%__1cOstackSlotPOperFscale6kM_i_;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
-text: .text%__1cMdecI_memNodeHtwo_adr6kM_I_;
-text: .text%__1cSalign_to_page_size6FL_L_: heap.o;
 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%__1cYinternal_word_RelocationWfix_relocation_at_move6Ml_v_;
 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%__1cNloadConPcNodeHtwo_adr6kM_I_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
-text: .text%__1cKLoadPCNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeMcisc_operand6kM_i_;
 text: .text%__1cOstackSlotPOperEtype6kM_pknEType__;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
 text: .text%__1cTconvD2I_reg_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cMstoreSSPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNGrowableArray4Ci_Icontains6kMrki_i_;
 text: .text%__1cKstoreBNodeFreloc6kM_i_;
-text: .text%__1cObox_handleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMjniIdPrivateGid_for6FnTinstanceKlassHandle_i_l_;
-text: .text%__1cNget_method_id6FpnHJNIEnv__pnH_jclass_pkc5ipnGThread__pnK_jmethodID__: jni.o;
 text: .text%__1cQshrI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cMjniIdSupportNto_jmethod_id6FpnNmethodOopDesc__pnK_jmethodID__;
 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%__1cbACallCompiledJavaDirectNodeFreloc6kM_i_;
 text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cUCallCompiledJavaNodeScalling_convention6kMpnLOptoRegPair_I_v_;
-text: .text%__1cFStateY_sub_Op_CallCompiledJava6MpknENode__v_;
-text: .text%__1cFciEnvUregister_i2c_adapter6MpnIciMethod_pnJOopMapSet_pnKCodeBuffer_i_v_;
-text: .text%__1cbACallCompiledJavaDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMStartI2CNodeScalling_convention6kMpnLOptoRegPair_I_v_;
-text: .text%__1cHCompilebMGenerate_Interpreter_To_Compiled_Graph6MpknITypeFunc__v_;
 text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cKI2CAdapter2n6FLI_pv_;
-text: .text%__1cKCodeBufferVinsert_float_constant6Mf_pC_;
-text: .text%__1cbACallCompiledJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKI2CAdapterPnew_i2c_adapter6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
 text: .text%__1cKmul_hiNodeErule6kM_I_;
-text: .text%__1cKI2CAdapter2t6MpnKCodeBuffer_pnJOopMapSet_ii_v_;
-text: .text%__1cbBinitialize_itable_for_klass6FpnMklassOopDesc__v_;
 text: .text%__1cFJNIidEfind6Mi_p0_;
 text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6ML_v_;
@@ -5388,69 +3586,40 @@
 text: .text%JVM_IsPrimitiveClass;
 text: .text%__1cIDivDNodeGOpcode6kM_i_;
 text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cJCMoveNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cQjava_lang_ThreadJis_daemon6FpnHoopDesc__i_;
 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%__1cFTypeDJsingleton6kM_i_;
 text: .text%__1cPsalI_rReg_1NodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cUPipeline_Use_Element2t6MIIIinXPipeline_Use_Cycle_Mask__v_;
-text: .text%__1cTmembar_volatileNodePoper_input_base6kM_I_;
-text: .text%__1cNloadConPcNodePoper_input_base6kM_I_;
 text: .text%__1cXPipeline_Use_Cycle_Mask2t6MI_v_;
 text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cNdecL_rRegNodeJnum_opnds6kM_I_;
 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%__1cQMachCallJavaNodeVis_MachCallStaticJava6M_pnWMachCallStaticJavaNode__;
-text: .text%__1cUandI_rReg_imm255NodeJnum_opnds6kM_I_;
 text: .text%__1cFStateX_sub_Op_CallDynamicJava6MpknENode__v_;
-text: .text%__1cNObjectMonitorEwait6MxipnGThread__v_;
 text: .text%jni_FindClass: jni.o;
 text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
 text: .text%__1cIMinINodeJideal_reg6kM_I_;
 text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cNCallGeneratorSfor_predicted_call6FpnHciKlass_p03_3_;
-text: .text%__1cLTypeInstPtrRcast_to_exactness6kMi_pknEType__;
 text: .text%__1cTconvI2F_reg_regNodeErule6kM_I_;
-text: .text%__1cWPredictedCallGeneratorKis_virtual6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cNcmovP_regNodeErule6kM_I_;
-text: .text%__1cMaddF_regNodeJnum_opnds6kM_I_;
 text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
 text: .text%JVM_MonitorWait;
-text: .text%__1cPshrL_rReg_1NodePoper_input_base6kM_I_;
-text: .text%__1cMaddF_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNCallGeneratorQfor_virtual_call6FpnIciMethod__p0_;
 text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cLPSMarkSweepbAabsorb_live_data_from_eden6FpnUPSAdaptiveSizePolicy_pnKPSYoungGen_pnIPSOldGen__i_;
 text: .text%__1cUPSMarkSweepDecoratorbDadvance_destination_decorator6F_v_;
-text: .text%__1cNmulI_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNmulI_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cSOnStackReplacementPget_osr_adapter6FnFframe_nMmethodHandle__pnKOSRAdapter__;
-text: .text%__1cNGrowableArray4CpnKOSRAdapter__Hat_grow6Mirk1_1_;
 text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
 text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cRCardTableModRefBSKinvalidate6MnJMemRegion__v_;
 text: .text%__1cJLoadFNodeJideal_reg6kM_I_;
 text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_2_v_;
-text: .text%__1cFTypeFJsingleton6kM_i_;
 text: .text%__1cTconvF2D_reg_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cMstoreSSPNodeErule6kM_I_;
 text: .text%__1cOloadConL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMstoreSSPNodeHtwo_adr6kM_I_;
-text: .text%__1cMincI_memNodeHtwo_adr6kM_I_;
 text: .text%__1cKcmpOpUOperFequal6kM_i_;
-text: .text%__1cTconvF2D_reg_regNodePoper_input_base6kM_I_;
 text: .text%__1cHRegMask2t6M_v_;
 text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
 text: .text%__1cNGrowableArray4Ci_2t6MpnFArena_iirki_v_;
@@ -5458,13 +3627,11 @@
 text: .text%__1cQset_lwp_priority6Fiii_i_;
 text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
 text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpD_cc_immNodeJnum_opnds6kM_I_;
 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%__1cNminI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cFStateM_sub_Op_MinI6MpknENode__v_;
 text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
 text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
@@ -5474,7 +3641,6 @@
 text: .text%__1cUandI_rReg_imm255NodeHtwo_adr6kM_I_;
 text: .text%__1cJStubQdDueueMremove_first6M_v_;
 text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cUVirtualCallGeneratorKis_virtual6kM_i_;
 text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_;
 text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
 text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_;
@@ -5485,24 +3651,17 @@
 text: .text%__1cNmodI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cFParseNdo_instanceof6M_v_;
 text: .text%__1cPcmpD_cc_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeXpolicy_maximally_unroll6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cTmembar_volatileNodeHtwo_adr6kM_I_;
 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%__1cNcmovL_regNodePoper_input_base6kM_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%__1cHMatcherXpost_store_load_barrier6FpknENode__i_;
-text: .text%__1cYjava_lang_reflect_MethodThas_signature_field6F_i_;
-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%__1cJloadDNodePoper_input_base6kM_I_;
 text: .text%__1cENodeEgetf6kM_f_;
 text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
@@ -5510,33 +3669,19 @@
 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%__1cPBytecode_invokeIis_valid6kM_i_;
-text: .text%__1cKReflectionKnew_method6FnMmethodHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cYjava_lang_reflect_MethodVhas_annotations_field6F_i_;
 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%__1cNmethodOopDescSannotation_default6kM_pnQtypeArrayOopDesc__;
 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%__1cTconvD2I_reg_regNodePoper_input_base6kM_I_;
-text: .text%__1cSTailCalljmpIndNodeJnum_opnds6kM_I_;
-text: .text%__1cTconvI2D_reg_regNodePoper_input_base6kM_I_;
-text: .text%__1cQorI_rReg_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRaddI_mem_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cMmulF_immNodeErule6kM_I_;
-text: .text%__1cJAssemblerGmovlpd6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cPcmpF_cc_regNodePoper_input_base6kM_I_;
-text: .text%__1cNCompileBrokerTcompile_adapter_for6FnMmethodHandle_ii_pnMBasicAdapter__;
 text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cNCompileBrokerbBwait_for_adapter_completion6FpnLCompileTask__pnMBasicAdapter__;
-text: .text%__1cOjmpLoopEndNodeJis_Branch6kM_I_;
 text: .text%__1cOjmpLoopEndNodeJlabel_set6MrnFLabel_I_v_;
 text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
 text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cKCMoveINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FLi_pnGThread__;
 text: .text%__1cMrax_RegIOperEtype6kM_pknEType__;
 text: .text%__1cOjmpLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -5545,7 +3690,6 @@
 text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
 text: .text%get_thread;
 text: .text%__1cMincI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIGraphKitXinsert_mem_bar_volatile6MpnKMemBarNode_i_v_;
 text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
 text: .text%__1cCosHSolarisKmmap_chunk6FpcLii_2_;
 text: .text%__1cbFloadConL_0x6666666666666667NodeLout_RegMask6kM_rknHRegMask__;
@@ -5555,69 +3699,48 @@
 text: .text%__1cMmulD_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNcmovP_regNodeLbottom_type6kM_pknEType__;
 text: .text%__1cJScopeDescTdecode_scope_values6Mi_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cTAbstractInterpreterWlayout_activation_impl6FpnNmethodOopDesc_iiiipnFframe_4i_i_;
 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%__1cNmodL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cScompL_rReg_immNodeJnum_opnds6kM_I_;
-text: .text%__1cQshrL_rReg_CLNodePoper_input_base6kM_I_;
-text: .text%__1cJCMoveNode2t6MpnENode_22pknEType__v_;
-text: .text%__1cJCMoveNodeEmake6FpnENode_222pknEType__p0_;
 text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
 text: .text%__1cIimmIOperJnum_edges6kM_I_;
-text: .text%__1cJAssemblerFmovss6MpnRFloatRegisterImpl_nHAddress__v_;
 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%__1cPsalL_rReg_1NodeJnum_opnds6kM_I_;
-text: .text%__1cMsubD_regNodePoper_input_base6kM_I_;
-text: .text%__1cMstoreSSPNodeJnum_opnds6kM_I_;
 text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_;
 text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cPClassFileParserXverify_unqualified_name6MpcIi_i_;
 text: .text%__1cMdivD_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cTconvI2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadMis_stillborn6FpnHoopDesc__i_;
 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%__1cMVirtualSpaceJexpand_by6ML_i_;
 text: .text%__1cNstoreImmPNodeMideal_Opcode6kM_i_;
 text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
 text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cJloadDNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cQComputeCallStackHdo_char6M_v_;
-text: .text%__1cNdivI_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cOcmovI_regUNodePoper_input_base6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
 text: .text%__1cSvframeArrayElementDbci6kM_i_;
 text: .text%__1cMaddF_regNodeErule6kM_I_;
-text: .text%__1cTconvF2D_reg_memNodeHtwo_adr6kM_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%__1cOPhaseIdealLoopVinsert_pre_post_loops6MpnNIdealLoopTree_rnJNode_List_i_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%__1cNloadConPcNodeLout_RegMask6kM_rknHRegMask__;
 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%__1cGThreadbCis_hidden_from_external_view6kM_i_;
 text: .text%__1cMelapsedTimer2t6M_v_;
-text: .text%__1cGThreadVis_jvmti_agent_thread6kM_i_;
 text: .text%__1cMdivD_immNodeErule6kM_I_;
 text: .text%__1cTconvI2D_reg_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
@@ -5636,31 +3759,22 @@
 text: .text%__1cUandI_rReg_imm255NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNdivL_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cKcastPPNodePoper_input_base6kM_I_;
-text: .text%__1cMaddD_immNodePoper_input_base6kM_I_;
 text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
 text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIDivLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cJloadDNodeErule6kM_I_;
-text: .text%__1cRaddI_mem_rRegNodeJnum_opnds6kM_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%__1cHnmethodNis_osr_method6kM_i_;
 text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cFParseScan_rerun_bytecode6M_i_;
 text: .text%__1cISubFNodeGOpcode6kM_i_;
 text: .text%__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cFTypeDGis_nan6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeJnum_opnds6kM_I_;
 text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cOJavaAssertionsHenabled6Fpkci_i_;
 text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__;
 text: .text%JVM_DesiredAssertionStatus;
 text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cTconvI2F_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
 text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__;
 text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
@@ -5672,40 +3786,25 @@
 text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
 text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNnegI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPcmpF_cc_regNodeHtwo_adr6kM_I_;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
 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%__1cXjava_lang_reflect_FieldVhas_annotations_field6F_i_;
 text: .text%__1cISubDNodeGOpcode6kM_i_;
 text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSstring_compareNodeHtwo_adr6kM_I_;
 text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
 text: .text%__1cRaddI_mem_rRegNodeMideal_Opcode6kM_i_;
 text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cKScopeValueLis_location6kM_i_;
-text: .text%__1cXjava_lang_reflect_FieldThas_signature_field6F_i_;
 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%__1cIModLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cIjniIdMapGcreate6FnTinstanceKlassHandle__p0_;
-text: .text%__1cPsarL_rReg_2NodeJnum_opnds6kM_I_;
 text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
 text: .text%__1cPcmpF_cc_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cIjniIdMap2t6MpnMklassOopDesc_i_v_;
-text: .text%__1cIjniIdMapRcompute_index_cnt6FnTinstanceKlassHandle__i_;
-text: .text%__1cLjniIdBucket2t6MpnIjniIdMap_p0_v_;
 text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
 text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_;
-text: .text%__1cLTypeInstPtrLmirror_type6kM_pnGciType__;
-text: .text%__1cMsubF_regNodePoper_input_base6kM_I_;
 text: .text%__1cPcmpD_cc_regNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cMlogD_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
@@ -5715,8 +3814,6 @@
 text: .text%__1cKstorePNodeErule6kM_I_;
 text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
 text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConPcNodeErule6kM_I_;
-text: .text%__1cIPipeline2t6MIIiIIiiiipnSmachPipelineStages_2pInMPipeline_Use__v_;
 text: .text%__1cRComputeEntryStackGdo_int6M_v_;
 text: .text%__1cMstoreSSPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSMachBreakpointNodeEsize6kMpnNPhaseRegAlloc__I_;
@@ -5725,48 +3822,33 @@
 text: .text%__1cPsalL_rReg_1NodeHtwo_adr6kM_I_;
 text: .text%__1cNmodL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cTconvF2D_reg_regNodeErule6kM_I_;
-text: .text%__1cJAssemblerDjmp6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
-text: .text%__1cObox_handleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQsalI_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQorI_rReg_memNodeErule6kM_I_;
-text: .text%__1cLloadSSDNodePoper_input_base6kM_I_;
-text: .text%__1cNCompileBrokerbAinvoke_compiler_on_adapter6FpnLCompileTask__v_;
 text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMaddF_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRxorI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cMaddF_immNodePoper_input_base6kM_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%__1cMmulD_regNodeJnum_opnds6kM_I_;
-text: .text%__1cODeoptimizationYquery_update_method_data6FnQmethodDataHandle_in0ALDeoptReason_rIri4_pnLProfileData__;
-text: .text%__1cICodeHeapJexpand_by6ML_i_;
-text: .text%__1cMmulD_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cMmulD_immNodeJnum_opnds6kM_I_;
 text: .text%__1cNmulI_rRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
 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%__1cRsubL_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cRsubL_rReg_memNodeJnum_opnds6kM_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%__1cUCallNativeDirectNodeHtwo_adr6kM_I_;
-text: .text%__1cTconvI2D_reg_regNodeMcisc_operand6kM_i_;
 text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_;
 text: .text%__1cIMaxINodeJideal_reg6kM_I_;
 text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
@@ -5774,14 +3856,9 @@
 text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_nHAddress__v_;
 text: .text%JVM_Open;
 text: .text%__1cHRegMask2t6Miiiiiii_v_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeHtwo_adr6kM_I_;
 text: .text%__1cNsubI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMmulF_regNodePoper_input_base6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cQConstantIntValuePis_constant_int6kM_i_;
 text: .text%__1cRmulL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cPsarL_rReg_2NodeHtwo_adr6kM_I_;
-text: .text%__1cKmul_hiNodeHtwo_adr6kM_I_;
 text: .text%__1cQConstantIntValue2t6MpnTDebugInfoReadStream__v_;
 text: .text%__1cRxorI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cFStateM_sub_Op_ConD6MpknENode__v_;
@@ -5790,15 +3867,10 @@
 text: .text%__1cNaddP_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cPcmpF_cc_regNodeMcisc_operand6kM_i_;
 text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cVscale_to_lwp_priority6Fiii_i_: os_solaris.o;
-text: .text%__1cLOptoRuntimeWresolve_virtual_call_C6FpnKJavaThread__pC_;
 text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cLStrCompNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMmulF_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadDNodeJnum_opnds6kM_I_;
 text: .text%__1cFStateM_sub_Op_RegF6MpknENode__v_;
-text: .text%__1cMmulF_immNodeJnum_opnds6kM_I_;
 text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
 text: .text%__1cNcmovP_regNodeHtwo_adr6kM_I_;
 text: .text%jni_GetStaticObjectField: jni.o;
@@ -5806,19 +3878,14 @@
 text: .text%__1cScompL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cTconvD2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cLCastP2LNodeUdepends_only_on_test6kM_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%__1cICmpDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
 text: .text%__1cSTailCalljmpIndNodeFreloc6kM_i_;
-text: .text%__1cObox_handleNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cOloadConL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMlogD_regNodePoper_input_base6kM_I_;
-text: .text%__1cTconvI2F_reg_regNodeHtwo_adr6kM_I_;
 text: .text%__1cMnegD_regNodeErule6kM_I_;
 text: .text%__1cLvframeArrayRregister_location6kMi_pC_;
 text: .text%__1cQorI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -5826,9 +3893,7 @@
 text: .text%__1cIOSThreadNpd_initialize6M_v_;
 text: .text%__1cCosScurrent_process_id6F_i_;
 text: .text%__1cMaddD_immNodeErule6kM_I_;
-text: .text%__1cNmaxI_rRegNodePoper_input_base6kM_I_;
 text: .text%__1cPshrL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvI2F_reg_regNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cNmaxI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
 text: .text%__1cCosRinitialize_thread6F_v_;
@@ -5844,7 +3909,6 @@
 text: .text%__1cIOSThread2t6MpFpv_i1_v_;
 text: .text%jni_CallStaticVoidMethod: jni.o;
 text: .text%__1cCosScurrent_stack_size6F_L_;
-text: .text%__1cNPhaseRegAllocHset_oop6MpknENode_i_v_;
 text: .text%__1cCosScurrent_stack_base6F_pC_;
 text: .text%__1cJloadFNodeFreloc6kM_i_;
 text: .text%__1cCosMstart_thread6FpnGThread__v_;
@@ -5856,11 +3920,8 @@
 text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
 text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
 text: .text%__1cNcmovL_regNodeMcisc_operand6kM_i_;
-text: .text%__1cCosNcreate_thread6FpnGThread_n0AKThreadType_L_i_;
-text: .text%__1cLconvI2BNodePoper_input_base6kM_I_;
 text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
 text: .text%JVM_SetThreadPriority;
-text: .text%__1cG_start6Fpv_0_: os_solaris.o;
 text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
 text: .text%JVM_GetStackAccessControlContext;
 text: .text%JVM_IsThreadAlive;
@@ -5868,27 +3929,16 @@
 text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNdivI_rRegNodeErule6kM_I_;
 text: .text%__1cNdecL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOLibraryCallKitYinline_native_time_funcs6Mi_i_;
 text: .text%__1cNGrowableArray4CpknEType__2t6MpnFArena_iirk2_v_;
 text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%__1cTconvL2F_reg_regNodePoper_input_base6kM_I_;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
 text: .text%jni_CallObjectMethod: jni.o;
 text: .text%__1cJAssemblerExorq6MpnMRegisterImpl_2_v_;
-text: .text%__1cNcmovL_regNodeJnum_opnds6kM_I_;
 text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
 text: .text%__1cOcmovI_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cNcmovL_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
 text: .text%__1cMsubD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadConL0NodeFclone6kM_pnENode__;
 text: .text%__1cPcmpF_cc_regNodeErule6kM_I_;
-text: .text%__1cJimmL0OperFclone6kM_pnIMachOper__;
 text: .text%__1cNmodI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpF_cc_regNodeJnum_opnds6kM_I_;
-text: .text%__1cPcmpF_cc_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cbFloadConL_0x6666666666666667NodePoper_input_base6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_d6MpnRFloatRegisterImpl__v_;
 text: .text%__1cTconvL2D_reg_memNodePoper_input_base6kM_I_;
 text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
 text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
@@ -5896,45 +3946,30 @@
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
 text: .text%__1cMmulF_immNodeHtwo_adr6kM_I_;
 text: .text%__1cQsarL_rReg_63NodeHtwo_adr6kM_I_;
-text: .text%__1cQsarL_rReg_63NodeJnum_opnds6kM_I_;
-text: .text%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
 text: .text%__1cMsubF_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cTconvI2L_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWThreadLocalAllocBufferMinitial_size6F_L_;
 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%__1cCosNcommit_memory6FpcL_i_;
-text: .text%__1cNdivI_rRegNodeJnum_opnds6kM_I_;
-text: .text%__1cENodeJis_MemBar6kM_pknKMemBarNode__;
-text: .text%__1cNjni_functions6F_pknTJNINativeInterface___;
-text: .text%__1cNThreadServiceKadd_thread6FpnKJavaThread_i_v_;
 text: .text%JVM_NativePath;
 text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cHThreadsDadd6FpnKJavaThread_i_v_;
-text: .text%__1cGParker2t6M_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%__1cCosMguard_memory6FpcL_i_;
 text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUCallNativeDirectNodePoper_input_base6kM_I_;
 text: .text%__1cHnmethodTinc_decompile_count6M_v_;
 text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
 text: .text%__1cMResourceMarkNreset_to_mark6M_v_;
 text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cMFlatProfilerJis_active6F_i_;
-text: .text%__1cNloadConPcNodeLbottom_type6kM_pknEType__;
 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%__1cQshrL_rReg_CLNodeJnum_opnds6kM_I_;
 text: .text%__1cNcmovL_memNodePoper_input_base6kM_I_;
 text: .text%__1cNdivL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPcmpD_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -5949,38 +3984,27 @@
 text: .text%__1cVCallRuntimeDirectNodeFreloc6kM_i_;
 text: .text%__1cIGraphKitIset_jvms6MpnIJVMState__v_;
 text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cTconvD2I_reg_regNodeJnum_opnds6kM_I_;
 text: .text%__1cOsalI_mem_1NodePoper_input_base6kM_I_;
-text: .text%__1cSMachCallNativeNodePret_addr_offset6M_i_;
 text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_f6MpnRFloatRegisterImpl__v_;
 text: .text%__1cMrdi_RegIOperEtype6kM_pknEType__;
 text: .text%__1cVThreadStateTransitionKtransition6FpnKJavaThread_nPJavaThreadState_3_v_;
-text: .text%__1cUCallNativeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
 text: .text%__1cQorI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIGraphKitbAgen_stub_or_native_wrapper6MpCpkcpnIciMethod_iiiii_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%__1cSvframeArrayElementPunpack_on_stack6MiipnFframe_ii_v_;
-text: .text%__1cTAbstractInterpreterRlayout_activation6FpnNmethodOopDesc_iiiipnFframe_4i_v_;
 text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
 text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
 text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
 text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
 text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cNGrowableArray4CpnLMonitorInfo__2t6Mii_v_;
 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%__1cTAbstractInterpreterPsize_activation6FpnNmethodOopDesc_iiiii_i_;
 text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cTAbstractInterpreterQcontinuation_for6FpnNmethodOopDesc_pCiiri_3_;
-text: .text%__1cZInterpreterMacroAssemblerLcall_VM_Ico6MpnMRegisterImpl_pC2i_v_;
 text: .text%__1cFframebCinterpreter_frame_set_method6MpnNmethodOopDesc__v_;
 text: .text%__1cMmulF_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cFframebBinterpreter_frame_sender_sp6kM_pl_;
@@ -5991,18 +4015,10 @@
 text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
 text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
 text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cTconvF2D_reg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cSvframeArrayElementNon_stack_size6kMiiii_i_;
-text: .text%__1cMaddD_regNodePoper_input_base6kM_I_;
 text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cMorL_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cOcmovD_regUNodePoper_input_base6kM_I_;
 text: .text%__1cPcmovI_reg_gNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMdivD_immNodePoper_input_base6kM_I_;
-text: .text%__1cJloadDNodeHtwo_adr6kM_I_;
 text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
 text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cMmulF_memNodeJnum_opnds6kM_I_;
 text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
 text: .text%__1cODeoptimizationVtrap_state_add_reason6Fii_i_;
 text: .text%__1cDhpiFclose6Fi_i_;
@@ -6012,32 +4028,22 @@
 text: .text%__1cNcmovL_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cZInterpreterMacroAssemblerWupdate_mdp_by_constant6MpnMRegisterImpl_i_v_;
 text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cRaddL_rReg_memNodeJnum_opnds6kM_I_;
 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%__1cTconvD2F_reg_regNodePoper_input_base6kM_I_;
-text: .text%__1cJAssemblerFpushq6Mi_v_;
 text: .text%JVM_Close;
-text: .text%__1cMnegF_regNodePoper_input_base6kM_I_;
-text: .text%__1cOcmovI_regUNodeJnum_opnds6kM_I_;
-text: .text%__1cbCAbstractInterpreterGeneratorRset_unimplemented6Mi_v_;
 text: .text%__1cRComputeEntryStackJdo_object6Mii_v_;
 text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cOcmovI_regUNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
 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%__1cVCompressedWriteStreamKwrite_long6Mx_v_;
-text: .text%__1cTconvF2I_reg_regNodePoper_input_base6kM_I_;
 text: .text%__1cLConvF2INodeGOpcode6kM_i_;
 text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
 text: .text%__1cFParsePdo_monitor_exit6M_v_;
@@ -6047,70 +4053,40 @@
 text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
 text: .text%__1cKcastPPNodeErule6kM_I_;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cOsalI_mem_1NodeJnum_opnds6kM_I_;
 text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
 text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cPshrL_rReg_1NodeJnum_opnds6kM_I_;
-text: .text%__1cRandI_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cRandI_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cQorI_rReg_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cJAssemblerGmovslq6MpnMRegisterImpl_2_v_;
 text: .text%__1cRandI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
 text: .text%__1cRConstantLongValueIwrite_on6MpnUDebugInfoWriteStream__v_;
 text: .text%JVM_StartThread;
 text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cTconvF2D_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
-text: .text%__1cLRuntimeStub2t6MpkcpnKCodeBuffer_iipnJOopMapSet_i_v_;
-text: .text%__1cTconvF2D_reg_regNodeJnum_opnds6kM_I_;
 text: .text%__1cRxorI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cMmulF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOLibraryCallKitbDis_method_invoke_or_aux_frame6MpnIJVMState__i_;
 text: .text%__1cbFloadConL_0x6666666666666667NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cTconvI2D_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cMsubD_regNodeJnum_opnds6kM_I_;
-text: .text%__1cMsubD_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cHCompileWget_MethodAccessorImpl6M_pnPciInstanceKlass__;
-text: .text%__1cHCompileRget_Method_invoke6M_pnIciMethod__;
 text: .text%__1cNdecI_rRegNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cTconvL2D_reg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cTconvI2D_reg_regNodeJnum_opnds6kM_I_;
-text: .text%__1cTunsafe_intrinsic_id6FpnNsymbolOopDesc_1_nMvmIntrinsicsCID__;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
 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%__1cPno_rax_RegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cTAbstractInterpreterMreturn_entry6FnITosState_i_pC_;
-text: .text%__1cPsarL_rReg_1NodePoper_input_base6kM_I_;
-text: .text%__1cMnegD_regNodeJnum_opnds6kM_I_;
 text: .text%__1cKmul_hiNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerEjccb6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
 text: .text%__1cNcmovP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cHMonitor2T6M_v_;
 text: .text%__1cINegDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLvframeArrayIallocate6FpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pnLRegisterMap_nFframe_9A9A9A_p0_;
-text: .text%__1cNThreadServiceNremove_thread6FpnKJavaThread_i_v_;
 text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cODeoptimizationScreate_vframeArray6FpnKJavaThread_nFframe_pnLRegisterMap__pnLvframeArray__;
 text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
 text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cODeoptimizationPget_method_data6FpnKJavaThread_nMmethodHandle_i_pnRmethodDataOopDesc__;
 text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
 text: .text%__1cIOSThread2T6M_v_;
 text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
@@ -6118,10 +4094,7 @@
 text: .text%__1cODeoptimizationRgather_statistics6Fn0ALDeoptReason_n0ALDeoptAction_nJBytecodesECode__v_;
 text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
 text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cNGrowableArray4CpnOcompiledVFrame__2t6Mii_v_;
 text: .text%__1cOcmovI_regUNodeErule6kM_I_;
-text: .text%__1cKJavaThreadEexit6Mi_v_;
-text: .text%__1cGParker2T6M_v_;
 text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
 text: .text%__1cXpartialSubtypeCheckNodeMideal_Opcode6kM_i_;
 text: .text%JVM_GetInheritedAccessControlContext;
@@ -6135,10 +4108,6 @@
 text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
 text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
 text: .text%__1cOcompL_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cODeoptimizationLUnrollBlock2t6MiiiiiplppCnJBasicType__v_;
-text: .text%__1cLvframeArrayHfill_in6MpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pknLRegisterMap_i_v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
 text: .text%__1cIOSThreadKpd_destroy6M_v_;
 text: .text%__1cMaddF_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
@@ -6146,15 +4115,12 @@
 text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
 text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
 text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cTconvD2I_reg_regNodeHtwo_adr6kM_I_;
 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%__1cQAbstractCompilerMsupports_osr6M_i_;
 text: .text%__1cRaddL_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cSCallLeafDirectNodeJnum_opnds6kM_I_;
 text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
 text: .text%__1cMmulL_memNodePoper_input_base6kM_I_;
 text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
@@ -6171,14 +4137,10 @@
 text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
 text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cKloadUBNodeFreloc6kM_i_;
-text: .text%__1cMStartOSRNodeScalling_convention6kMpnLOptoRegPair_I_v_;
 text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cMloadConPNodeGis_Con6kM_I_;
 text: .text%__1cMmulD_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cOPSVirtualSpaceJexpand_by6ML_i_;
 text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cFParseWload_interpreter_state6MpnENode_2_v_;
 text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cOstackSlotDOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%jni_GetFloatArrayRegion: jni.o;
@@ -6191,13 +4153,11 @@
 text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMlogD_regNodeErule6kM_I_;
-text: .text%__1cXpartialSubtypeCheckNodePoper_input_base6kM_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%__1cOstackSlotDOperJnum_edges6kM_I_;
 text: .text%__1cMsubF_regNodeMcisc_operand6kM_i_;
 text: .text%__1cMdecI_memNodeFreloc6kM_i_;
 text: .text%__1cMdecI_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
@@ -6205,97 +4165,65 @@
 text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
 text: .text%__1cINegFNodeGOpcode6kM_i_;
 text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cLloadSSDNodeJnum_opnds6kM_I_;
 text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cLconvI2BNodeJnum_opnds6kM_I_;
 text: .text%__1cNstoreImmPNodePoper_input_base6kM_I_;
 text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
 text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cHCompile2t6MpnFciEnv_pF_pknITypeFunc_pCpkciiii_v_;
 text: .text%__1cTconvL2F_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_;
-text: .text%__1cNloadConPcNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
 text: .text%__1cFStateM_sub_Op_CmpD6MpknENode__v_;
 text: .text%__1cNloadConL0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cUCallNativeDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cKcastPPNodeMideal_Opcode6kM_i_;
-text: .text%__1cNcmovL_memNodeJnum_opnds6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
 text: .text%__1cPshrL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cIGraphKitIgen_stub6MpCpkciii_v_;
 text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
 text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cTC2IAdapterGeneratorUmkh_unverified_entry6FnMmethodHandle__pC_;
-text: .text%__1cRaddL_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cLOptoRuntimeNgenerate_stub6FpnFciEnv_pF_pknITypeFunc_pCpkciiii_8_;
 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%__1cNTemplateTableGbranch6Fii_v_;
-text: .text%__1cNstoreImmPNodeHtwo_adr6kM_I_;
-text: .text%__1cLOptoRuntimeRnew_objArray_Type6F_pknITypeFunc__;
 text: .text%JVM_GetComponentType;
 text: .text%__1cIMulDNodeJideal_reg6kM_I_;
-text: .text%__1cTconvF2D_reg_regNodeHtwo_adr6kM_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%__1cLloadSSDNodeHtwo_adr6kM_I_;
 text: .text%__1cMaddF_memNodePoper_input_base6kM_I_;
 text: .text%__1cFParseMdo_anewarray6M_v_;
 text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
 text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cMincL_memNodeJnum_opnds6kM_I_;
 text: .text%__1cRandL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRaddL_mem_rRegNodeJnum_opnds6kM_I_;
 text: .text%JVM_NewArray;
 text: .text%JVM_FreeMemory;
 text: .text%JVM_TotalMemory;
-text: .text%__1cMaddD_immNodeJnum_opnds6kM_I_;
-text: .text%__1cMsubF_regNodeJnum_opnds6kM_I_;
-text: .text%__1cLloadSSINodePoper_input_base6kM_I_;
 text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
 text: .text%__1cMincI_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cMsubF_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cFStateL_sub_Op_Box6MpknENode__v_;
 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%__1cOcmovD_regUNodeJnum_opnds6kM_I_;
 text: .text%__1cRandI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cTAbstractInterpreterRTosState_as_index6FnITosState__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%__1cJloadCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosPuncommit_memory6FpcL_i_;
 text: .text%__1cSInterpreterRuntimeJnote_trap6FpnKJavaThread_ipnGThread__v_;
 text: .text%__1cRSignatureIteratorHiterate6M_v_;
 text: .text%__1cIModLNodeJideal_reg6kM_I_;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
 text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__;
 text: .text%__1cMaddF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHBoxNodeLbottom_type6kM_pknEType__;
 text: .text%__1cFStateM_sub_Op_DivL6MpknENode__v_;
 text: .text%__1cTconvL2D_reg_memNodeErule6kM_I_;
 text: .text%JVM_GetSystemPackage;
-text: .text%__1cCosNcommit_memory6FpcLL_i_;
 text: .text%__1cOMacroAssemblerFenter6M_v_;
 text: .text%__1cLConvF2DNodeJideal_reg6kM_I_;
 text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
@@ -6305,7 +4233,6 @@
 text: .text%__1cFStateP_sub_Op_ConvF2D6MpknENode__v_;
 text: .text%__1cMmulL_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%Unsafe_DefineClass1;
-text: .text%__1cSUnsafe_DefineClass6FpnHJNIEnv__pnI_jstring_pnL_jbyteArray_iipnI_jobject_7_pnH_jclass__: unsafe.o;
 text: .text%__1cFTypeDFxdual6kM_pknEType__;
 text: .text%__1cMincI_memNodeFreloc6kM_i_;
 text: .text%__1cPcmpF_cc_regNodeLout_RegMask6kM_rknHRegMask__;
@@ -6314,12 +4241,8 @@
 text: .text%__1cTconvF2D_reg_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%JVM_DefineClass;
 text: .text%__1cMaddF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMmulL_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cMmulL_memNodeJnum_opnds6kM_I_;
 text: .text%__1cJAssemblerEshrq6MpnMRegisterImpl_i_v_;
-text: .text%__1cTC2IAdapterGeneratorLadapter_for6FnMmethodHandle__pnKC2IAdapter__;
 text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MpnMRegisterImpl_i2rnFLabel__v_;
 text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
 text: .text%__1cTleaPIdxScaleOffNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
@@ -6327,42 +4250,29 @@
 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%__1cNloadConL0NodeGis_Con6kM_I_;
-text: .text%__1cMset_property6FnGHandle_pkc2pnGThread__v_: jvm.o;
 text: .text%JVM_GetCPFieldModifiers;
 text: .text%JVM_InvokeMethod;
 text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cZcatch_cleanup_inter_block6FpnENode_pnFBlock_13rnLBlock_Array_i_v_: lcm.o;
 text: .text%__1cOsalI_mem_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cMaddF_immNodeJnum_opnds6kM_I_;
-text: .text%__1cMsubD_immNodePoper_input_base6kM_I_;
 text: .text%__1cMmulF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulF_regNodeJnum_opnds6kM_I_;
-text: .text%__1cMmulF_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cMmulD_regNodeHtwo_adr6kM_I_;
 text: .text%__1cTconvD2F_reg_regNodeMcisc_operand6kM_i_;
 text: .text%jni_AllocObject: jni.o;
-text: .text%__1cCosHSolarisOset_mpss_range6FpcLL_i_;
 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%__1cMrdx_RegLOperFclone6kM_pnIMachOper__;
 text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cFj_not6FnNTemplateTableJCondition__nJAssemblerJCondition__: templateTable_amd64.o;
 text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
 text: .text%__1cTconvF2D_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMmulF_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%Unsafe_AllocateInstance;
 text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
 text: .text%__1cOcmovD_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cIciObjectMis_classless6kM_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%__1cHTypePtrKadd_offset6kMi_pk0_;
 text: .text%__1cNTemplateTableHconvert6F_v_;
 text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQorI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
@@ -6390,7 +4300,6 @@
 text: .text%__1cMorL_rRegNodeMcisc_operand6kM_i_;
 text: .text%__1cMmulD_memNodeMideal_Opcode6kM_i_;
 text: .text%__1cMaddD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2D_reg_regNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_;
 text: .text%__1cMloadConFNodeFreloc6kM_i_;
 text: .text%__1cILogDNodeLbottom_type6kM_pknEType__;
@@ -6403,30 +4312,21 @@
 text: .text%__1cMaddD_regNodeErule6kM_I_;
 text: .text%__1cScompL_rReg_memNodePoper_input_base6kM_I_;
 text: .text%__1cIAddFNodeJideal_reg6kM_I_;
-text: .text%__1cJimmP0OperPconstant_is_oop6kM_i_;
 text: .text%__1cJimmP0OperIconstant6kM_l_;
 text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cETypeJis_finite6kM_i_;
 text: .text%__1cHnmethodFflush6M_v_;
 text: .text%JVM_GetClassContext;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_;
-text: .text%__1cNsubL_rRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cIregFOperFclone6kM_pnIMachOper__;
 text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cHBoxNodeJideal_reg6kM_I_;
 text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__;
 text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
 text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cLloadSSDNodeMideal_Opcode6kM_i_;
 text: .text%__1cMsubF_regNodeErule6kM_I_;
 text: .text%__1cRsubL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_pnNsymbolOopDesc_pkc_nGHandle__;
 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%__1cRmethodDataOopDescRbci_to_extra_data6Mii_pnLProfileData__;
 text: .text%__1cICodeBlobFflush6M_v_;
 text: .text%__1cVMoveF2I_reg_stackNodeMideal_Opcode6kM_i_;
 text: .text%__1cNmodL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
@@ -6439,7 +4339,6 @@
 text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
 text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
 text: .text%__1cJAssemblerFcmovq6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cXpartialSubtypeCheckNodeJnum_opnds6kM_I_;
 text: .text%__1cMmulD_regNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cMaddF_immNodeHtwo_adr6kM_I_;
 text: .text%__1cIMulDNodeGmul_id6kM_pknEType__;
@@ -6451,20 +4350,16 @@
 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%__1cPloadConUL32NodeGis_Con6kM_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%__1cTconvF2I_reg_regNodeJnum_opnds6kM_I_;
-text: .text%__1cMmulD_memNodeJnum_opnds6kM_I_;
 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%__1cOresolve_symbol6Fpkc_pC_: os_solaris.o;
 text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
 text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
 text: .text%__1cFParseQdo_monitor_enter6M_v_;
@@ -6472,34 +4367,17 @@
 text: .text%__1cXpartialSubtypeCheckNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLConvD2INodeJideal_reg6kM_I_;
 text: .text%__1cKcastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallDynamicJavaDirectNodeJnum_opnds6kM_I_;
-text: .text%__1cMlogD_regNodeJnum_opnds6kM_I_;
 text: .text%Unsafe_CompareAndSwapInt;
 text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_ppkc5i_i_: arguments.o;
 text: .text%__1cMmulD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNmulI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKimmL32OperFclone6kM_pnIMachOper__;
-text: .text%__1cIimmFOperFclone6kM_pnIMachOper__;
 text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cOindOffset8OperFclone6kM_pnIMachOper__;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6MpnMRegisterImpl_i_v_;
-text: .text%__1cOloadConL32NodeFclone6kM_pnENode__;
-text: .text%__1cMloadConFNodeFclone6kM_pnENode__;
 text: .text%__1cScompL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cVMoveL2D_reg_stackNodePoper_input_base6kM_I_;
 text: .text%__1cZInterpreterMacroAssemblerPset_mdp_data_at6MpnMRegisterImpl_i2_v_;
-text: .text%__1cKOSRAdapter2n6FLI_pv_;
-text: .text%__1cKOSRAdapterPnew_osr_adapter6FpnKCodeBuffer_pnJOopMapSet_ii_p0_;
 text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cKOSRAdapter2t6MpnKCodeBuffer_pnJOopMapSet_iii_v_;
-text: .text%__1cTconvI2D_reg_regNodeHtwo_adr6kM_I_;
-text: .text%__1cNSharedRuntimeRgenerate_osr_blob6Fi_pnKOSRAdapter__;
-text: .text%__1cMaddD_regNodeJnum_opnds6kM_I_;
-text: .text%__1cbCAbstractInterpreterGeneratorUset_wide_entry_point6MpnITemplate_rpC_v_;
 text: .text%__1cMmulF_regNodeErule6kM_I_;
 text: .text%__1cIMulFNodeJideal_reg6kM_I_;
 text: .text%__1cFStateM_sub_Op_MulF6MpknENode__v_;
@@ -6507,102 +4385,61 @@
 text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
 text: .text%__1cMloadConDNodeHsize_of6kM_I_;
 text: .text%__1cOcmovI_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLconvI2BNodeHtwo_adr6kM_I_;
-text: .text%__1cMorL_rRegNodeJnum_opnds6kM_I_;
 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%__1cLloadSSINodeMideal_Opcode6kM_i_;
 text: .text%__1cOstackSlotDOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cTconvF2D_reg_memNodeFreloc6kM_i_;
 text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvL2D_reg_memNodeZcheck_for_anti_dependence6kM_i_;
 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%__1cMaddD_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cOstackSlotDOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMorL_rRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%__1cMmulF_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMlogD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cRaddI_mem_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cFStateM_sub_Op_AddF6MpknENode__v_;
 text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cTconvL2F_reg_regNodeJnum_opnds6kM_I_;
 text: .text%__1cSstring_compareNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNGrowableArray4CpnKOSRAdapter__Praw_at_put_grow6Mirk14_v_;
 text: .text%__1cFStateP_sub_Op_StrComp6MpknENode__v_;
-text: .text%__1cTconvL2F_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
 text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cMaddF_memNodeJnum_opnds6kM_I_;
-text: .text%__1cUInterpreterGeneratorbAgenerate_run_compiled_code6M_v_;
 text: .text%__1cScompL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MpC_v_;
 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%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
 text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
 text: .text%__1cNdecL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOLibraryCallKitXinline_string_compareTo6M_i_;
-text: .text%__1cScompL_rReg_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_nHAddress__v_;
 text: .text%jni_GetEnv;
 text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%__1cZInterpreterMacroAssemblerNsuper_call_VM6MpnMRegisterImpl_2pC22_v_;
-text: .text%__1cFTypeFJis_finite6kM_i_;
 text: .text%__1cRmulI_rReg_immNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cScompL_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cHMulNodeGis_Mul6kM_pk0_;
 text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
 text: .text%__1cQmulI_mem_immNodeMideal_Opcode6kM_i_;
 text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cJAssemblerLemit_data646MxnJrelocInfoJrelocType_i_v_;
 text: .text%__1cJAssemblerFpushq6MnHAddress__v_;
-text: .text%__1cIGraphKitSgen_native_wrapper6MpnIciMethod__v_;
 text: .text%__1cRComputeEntryStackIdo_array6Mii_v_;
 text: .text%__1cPcmpD_cc_immNodeKconst_size6kM_i_;
-text: .text%__1cKLoadPCNodeJideal_reg6kM_I_;
 text: .text%__1cMorL_rRegNodeErule6kM_I_;
-text: .text%__1cUCallNativeDirectNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cScompP_rReg_memNodePoper_input_base6kM_I_;
 text: .text%__1cScompP_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSvframeStreamCommonbFfill_in_compiled_inlined_sender6M_i_;
 text: .text%__1cNdivI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cKcastPPNodeJnum_opnds6kM_I_;
-text: .text%__1cTconvL2D_reg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOLibraryCallKitbNinline_native_Reflection_getCallerClass6M_i_;
-text: .text%__1cOLibraryCallKitZinline_native_Class_query6MnMvmIntrinsicsCID__i_;
 text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod__v_;
 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_immNodeJnum_opnds6kM_I_;
-text: .text%__1cNstoreImmPNodeJnum_opnds6kM_I_;
 text: .text%__1cMdivD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLloadSSINodeHtwo_adr6kM_I_;
 text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cIciMethodMnative_entry6M_pC_;
 text: .text%__1cPcmpD_cc_immNodeFreloc6kM_i_;
-text: .text%__1cUCallNativeDirectNodeFreloc6kM_i_;
-text: .text%__1cNloadConPcNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMmulD_memNodeErule6kM_I_;
 text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cFStateS_sub_Op_CallNative6MpknENode__v_;
-text: .text%__1cFStateO_sub_Op_LoadPC6MpknENode__v_;
-text: .text%__1cQAbstractCompilerPsupports_native6M_i_;
 text: .text%__1cQorI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
 text: .text%__1cMmulF_regNodeHtwo_adr6kM_I_;
 text: .text%__1cPsalL_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cQshrI_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
@@ -6610,46 +4447,31 @@
 text: .text%__1cNdivL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cVMoveL2D_reg_stackNodeErule6kM_I_;
 text: .text%__1cRsalI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
 text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cYinternal_word_RelocationMforce_target6MpC_v_;
 text: .text%__1cOstackSlotIOperEtype6kM_pknEType__;
-text: .text%__1cLloadSSINodeJnum_opnds6kM_I_;
 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%__1cFTypeFGis_nan6kM_i_;
 text: .text%__1cQshrL_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvD2F_reg_regNodeJnum_opnds6kM_I_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_safept_entry_for6MnITosState_pC_2_;
 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%__1cbCAbstractInterpreterGeneratorZgenerate_continuation_for6MnITosState__pC_;
 text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
 text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cOstackSlotIOperJnum_edges6kM_I_;
 text: .text%JVM_IsSameClassPackage;
-text: .text%__1cUInterpreterGeneratorXcheck_for_compiled_code6MrnFLabel__v_;
 text: .text%__1cRaddI_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMaddF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
 text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMaddD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMlogD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPSVirtualSpaceJshrink_by6ML_i_;
-text: .text%__1cTconvD2F_reg_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
 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%__1cZInterpreterMacroAssemblerRremove_activation6MnITosState_pnMRegisterImpl_iii_v_;
 text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
 text: .text%__1cPcmpF_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubF_memNodeJnum_opnds6kM_I_;
 text: .text%__1cKPSYoungGenUavailable_to_min_gen6M_L_;
 text: .text%__1cJAssemblerKrepne_scan6M_v_;
 text: .text%__1cJname2type6Fpkc_nJBasicType__;
@@ -6658,7 +4480,6 @@
 text: .text%__1cTconvI2D_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cFStateP_sub_Op_ConvI2F6MpknENode__v_;
 text: .text%__1cMmulD_immNodeKconst_size6kM_i_;
-text: .text%__1cMmulD_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cMmulF_immNodeFreloc6kM_i_;
 text: .text%__1cJloadBNodeHsize_of6kM_I_;
 text: .text%__1cOcompI_rRegNodeHsize_of6kM_I_;
@@ -6667,7 +4488,6 @@
 text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
 text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cFTypeFFempty6kM_i_;
 text: .text%__1cNcmovL_regNodeHtwo_adr6kM_I_;
 text: .text%__1cLloadSSDNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
@@ -6677,38 +4497,25 @@
 text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
 text: .text%Unsafe_GetObjectVolatile;
 text: .text%__1cMsubD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLdivL_10NodePoper_input_base6kM_I_;
-text: .text%__1cVVM_ParallelGCSystemGCEname6kM_pkc_;
-text: .text%__1cOtypeArrayKlassMcreate_klass6FnJBasicType_ipnGThread__pnMklassOopDesc__;
 text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cJAssemblerEjmpb6MrnFLabel_nJrelocInfoJrelocType__v_;
 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%__1cMrax_RegLOperFclone6kM_pnIMachOper__;
 text: .text%__1cMorL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeHtwo_adr6kM_I_;
 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%__1cJAssemblerFpopaq6M_v_;
 text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cKimmL10OperJnum_edges6kM_I_;
 text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cLcastP2LNodeHsize_of6kM_I_;
-text: .text%__1cQmulI_mem_immNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cMsubD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MnITosState__v_;
 text: .text%__1cRsubI_rReg_memNodeHsize_of6kM_I_;
-text: .text%__1cTconvL2F_reg_regNodeHtwo_adr6kM_I_;
-text: .text%__1cNReservedSpace2t6MpcL_v_;
 text: .text%__1cKmul_hiNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSmembar_acquireNodeJnum_opnds6kM_I_;
 text: .text%__1cQsarL_rReg_63NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
 text: .text%__1cPsarL_rReg_2NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
@@ -6718,28 +4525,18 @@
 text: .text%JVM_GC;
 text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
 text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cScompP_rReg_memNodeJnum_opnds6kM_I_;
-text: .text%__1cIPSOldGenSexpand_to_reserved6M_i_;
-text: .text%__1cQmulI_mem_immNodeJnum_opnds6kM_I_;
-text: .text%__1cIPSOldGenJexpand_by6ML_i_;
 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%__1cXpartialSubtypeCheckNodeHtwo_adr6kM_I_;
 text: .text%__1cMsubF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
 text: .text%__1cRaddL_rReg_memNodeFreloc6kM_i_;
 text: .text%__1cVMoveL2D_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cScompP_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPsarL_rReg_1NodeJnum_opnds6kM_I_;
 text: .text%__1cOGenerateOopMapGdo_jsr6Mi_v_;
 text: .text%__1cMmulF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cScompP_rReg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cLPSMarkSweepGinvoke6Fpii_v_;
 text: .text%__1cOcmovD_regUNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNcmovL_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvF2I_reg_regNodeHtwo_adr6kM_I_;
 text: .text%__1cMmulF_immNodeKconst_size6kM_i_;
 text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
 text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
@@ -6748,44 +4545,29 @@
 text: .text%__1cCosMuser_handler6F_pv_;
 text: .text%__1cJloadDNodeFreloc6kM_i_;
 text: .text%__1cMincL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNaddL_rRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cCosHSolarisSset_signal_handler6Fiii_v_;
 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%__1cLClassLoaderbCupdate_class_path_entry_list6Fpkc_v_;
 text: .text%__1cMsubF_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cOcmovI_regUNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cTconvL2D_reg_memNodeRis_cisc_alternate6kM_i_;
-text: .text%__1cLOptoRuntimeRresolve_call_Type6F_pknITypeFunc__;
-text: .text%__1cHciKlassIis_klass6M_i_;
 text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cKScopeValuePis_constant_int6kM_i_;
 text: .text%jni_RegisterNatives: jni.o;
 text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cMsubF_memNodeZcheck_for_anti_dependence6kM_i_;
 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%__1cJArgumentsRverify_percentage6FLpkc_i_;
 text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
 text: .text%__1cRComputeEntryStackHdo_long6M_v_;
 text: .text%__1cHnmethodVinvalidate_osr_method6M_v_;
-text: .text%__1cMaddF_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
 text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cLConvD2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJAssemblerEcall6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
 text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cOBasicHashtable2t6Mii_v_;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
-text: .text%__1cNandI_rRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cNcmovL_memNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
 text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
 text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
@@ -6795,7 +4577,6 @@
 text: .text%JVM_IsSupportedJNIVersion;
 text: .text%JVM_LoadLibrary;
 text: .text%JVM_Sleep;
-text: .text%__1cNReservedSpaceKinitialize6MLLipc_v_;
 text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__;
 text: .text%__1cOstackSlotIOperFscale6kM_i_;
 text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__;
@@ -6804,7 +4585,6 @@
 text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cLloadSSINodeErule6kM_I_;
 text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cVMoveF2I_reg_stackNodePoper_input_base6kM_I_;
 text: .text%__1cLConvL2FNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cIDivDNodeJideal_reg6kM_I_;
 text: .text%__1cRandI_rReg_memNodeFreloc6kM_i_;
@@ -6814,7 +4594,6 @@
 text: .text%jni_MonitorExit: jni.o;
 text: .text%jni_MonitorEnter: jni.o;
 text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cPciInstanceKlassbDcompute_shared_is_initialized6M_i_;
 text: .text%__1cNGrowableArray4CpnIPerfData__Praw_at_put_grow6Mirk14_v_;
 text: .text%__1cFciEnvOrecord_failure6Mpkc_v_;
 text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
@@ -6822,14 +4601,11 @@
 text: .text%__1cOstackSlotDOperFscale6kM_i_;
 text: .text%__1cOstackSlotDOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
 text: .text%__1cOcmovI_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReturnNodeUdepends_only_on_test6kM_i_;
 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%__1cMsubD_immNodeJnum_opnds6kM_I_;
-text: .text%__1cVMoveL2D_reg_stackNodeJnum_opnds6kM_I_;
 text: .text%__1cRaddI_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cNTemplateTableH_return6FnITosState__v_;
 text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
@@ -6838,16 +4614,10 @@
 text: .text%__1cXpartialSubtypeCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
 text: .text%__1cRaddI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConDNodeFclone6kM_pnENode__;
 text: .text%__1cScompP_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKC2IAdapterXreturn_from_interpreter6M_pC_;
-text: .text%__1cKC2IAdapterRsetup_stack_frame6MnFframe_pnLvframeArray__v_;
-text: .text%__1cIregDOperFclone6kM_pnIMachOper__;
 text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_nHAddress__v_;
 text: .text%__1cMsubF_memNodeErule6kM_I_;
-text: .text%__1cIimmDOperFclone6kM_pnIMachOper__;
 text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cKC2IAdapterSunpack_c2i_adapter6MnFframe_1pnLvframeArray__v_;
 text: .text%__1cNdivI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_;
 text: .text%__1cFframebFset_interpreter_frame_sender_sp6Mpl_v_;
@@ -6861,26 +4631,16 @@
 text: .text%__1cMmulF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMmulF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cJAssemblerFpopfq6M_v_;
-text: .text%__1cCosOreserve_memory6FLpc_1_;
 text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cUParallelScavengeHeapEkind6M_nNCollectedHeapEName__;
-text: .text%__1cKMemoryPool2t6Mpkcn0AIPoolType_LLii_v_;
 text: .text%__1cNSpaceCounters2t6MpkciLpnMMutableSpace_pnSGenerationCounters__v_;
 text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cMaddF_memNodeRis_cisc_alternate6kM_i_;
 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%__1cNReservedSpaceKfirst_part6MLii_0_;
 text: .text%__1cNCellTypeStateImake_any6Fi_0_;
 text: .text%__1cMorL_rRegNodeQuse_cisc_RegMask6M_v_;
 text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cISubFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMnegF_regNodeJnum_opnds6kM_I_;
-text: .text%__1cINegDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKCompiledICOis_megamorphic6kM_i_;
 text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_;
 text: .text%__1cISubDNodeGadd_id6kM_pknEType__;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
@@ -6893,27 +4653,19 @@
 text: .text%__1cZCompiledArgumentOopFinderDset6MinJBasicType__v_;
 text: .text%__1cNstoreImmPNodeFreloc6kM_i_;
 text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cLOptoRuntimebBhandle_wrong_method_ic_miss6FpnKJavaThread__pC_;
 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%__1cNmulL_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cNmulI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTGeneratePairingInfoOreport_results6kM_i_;
 text: .text%Unsafe_GetNativeByte;
 text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
 text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
 text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cOMacroAssemblerQload_signed_word6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
 text: .text%__1cFStateP_sub_Op_ConvD2I6MpknENode__v_;
-text: .text%__1cJAssemblerGpushfq6M_v_;
 text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
 text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cIDivFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cINegDNodeJideal_reg6kM_I_;
-text: .text%__1cODeoptimizationZtrap_state_set_recompiled6Fii_i_;
 text: .text%__1cPshrL_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cTconvF2D_reg_memNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cKklassKlassOset_alloc_size6MI_v_;
@@ -6921,19 +4673,12 @@
 text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pLi_v_;
 text: .text%__1cMsubF_memNodeHtwo_adr6kM_I_;
 text: .text%__1cINegFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRaddL_rReg_memNodeZcheck_for_anti_dependence6kM_i_;
-text: .text%__1cLVtableStubsLcreate_stub6FiipnNmethodOopDesc__pC_;
 text: .text%__1cMmulL_memNodeFreloc6kM_i_;
-text: .text%__1cLVtableStubsGlookup6Fiii_pnKVtableStub__;
 text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
 text: .text%__1cFStateM_sub_Op_NegD6MpknENode__v_;
 text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_;
-text: .text%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_;
-text: .text%__1cISubDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cLVtableStubsOis_entry_point6FpC_i_;
 text: .text%__1cNstoreImmPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetNodeJnum_opnds6kM_I_;
 text: .text%__1cIDivINodeJideal_reg6kM_I_;
 text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
 text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
@@ -6944,7 +4689,6 @@
 text: .text%__1cOClassPathEntry2t6M_v_;
 text: .text%__1cMorL_rRegNodeHtwo_adr6kM_I_;
 text: .text%__1cOMacroAssemblerNpop_CPU_state6M_v_;
-text: .text%__1cMmulF_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cOMacroAssemblerOpush_CPU_state6M_v_;
 text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
 text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
@@ -6955,7 +4699,6 @@
 text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
 text: .text%__1cRaddL_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMaddF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRClassPathZipEntry2t6Mppvpc_v_;
 text: .text%__1cNTemplateTableOprepare_invoke6FpnMRegisterImpl_2inJBytecodesECode__v_;
 text: .text%__1cVMoveF2I_reg_stackNodeErule6kM_I_;
 text: .text%__1cJAssemblerEandq6MpnMRegisterImpl_2_v_;
@@ -6967,19 +4710,11 @@
 text: .text%__1cRComputeEntryStackJdo_double6M_v_;
 text: .text%__1cMaddD_regNodeHtwo_adr6kM_I_;
 text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_v_;
 text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
 text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cLClassLoaderSget_canonical_path6Fpc1i_i_;
-text: .text%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
 text: .text%__1cMsubD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLklassVtableTis_miranda_entry_at6Mi_i_;
 text: .text%__1cKPSScavengeZclean_up_failed_promotion6F_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
 text: .text%JVM_Available;
-text: .text%__1cJAssemblerHucomiss6MpnRFloatRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl__v_;
 text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cJAssemblerFimulq6MpnMRegisterImpl_2_v_;
 text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
@@ -6992,73 +4727,44 @@
 text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
 text: .text%__1cNTemplateTableGistore6Fi_v_;
 text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cMincL_memNodeHtwo_adr6kM_I_;
 text: .text%__1cKPSYoungGenOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cNGrowableArray4CpnLmarkOopDesc__2t6Mii_v_;
-text: .text%__1cUCompressedReadStreamJread_long6M_x_;
 text: .text%__1cISubDNodeJideal_reg6kM_I_;
-text: .text%__1cWNonPrintingResourceObj2n6FLnLResourceObjPallocation_type__pv_;
 text: .text%__1cNTemplateTableFdload6Fi_v_;
 text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cPaddress_of_flag6FnXCommandLineFlagWithType__pnEFlag__: globals.o;
 text: .text%__1cNTemplateTableFlload6Fi_v_;
 text: .text%__1cNTemplateTableFiload6Fi_v_;
 text: .text%__1cMmulI_memNodePoper_input_base6kM_I_;
-text: .text%__1cOcompL_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cNGrowableArray4CpnLmarkOopDesc__Uclear_and_deallocate6M_v_;
 text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cOcompI_rRegNodeFclone6kM_pnENode__;
-text: .text%__1cRsubI_rReg_memNodeFclone6kM_pnENode__;
-text: .text%__1cLcastP2LNodeFclone6kM_pnENode__;
 text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
 text: .text%__1cRaddL_rReg_memNodeErule6kM_I_;
 text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cOsalI_mem_1NodeHtwo_adr6kM_I_;
 text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVMoveL2D_reg_stackNodeHtwo_adr6kM_I_;
-text: .text%__1cRaddL_mem_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cJloadPNodeFclone6kM_pnENode__;
-text: .text%__1cJloadBNodeFclone6kM_pnENode__;
 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%__1cIAddDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%Unsafe_AllocateMemory;
 text: .text%__1cVMoveF2I_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cJAssemblerHfxrstor6MnHAddress__v_;
 text: .text%__1cJAssemblerGfxsave6MnHAddress__v_;
-text: .text%__1cHCompilePget_invoke_name6M_pnIciSymbol__;
 text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cNxorI_rRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cMVM_OperationNdoit_prologue6M_i_;
 text: .text%__1cNGCTaskManagerGthread6MI_pnMGCTaskThread__;
 text: .text%__1cRConstantLongValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cRConstantLongValueQis_constant_long6kM_i_;
-text: .text%__1cKScopeValuePis_constant_oop6kM_i_;
-text: .text%__1cKScopeValueSis_constant_double6kM_i_;
 text: .text%__1cMmulD_memNodeHtwo_adr6kM_I_;
-text: .text%__1cVMoveF2I_reg_stackNodeHtwo_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%__1cNGrowableArray4CpnIPerfData__2t6Mii_v_;
-text: .text%__1cOCompilerThreadSis_Compiler_thread6kM_i_;
 text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
 text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cLVtableStubsFenter6FiiipnKVtableStub__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%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
-text: .text%__1cSCommandLineFlagsExKis_default6FnPCommandLineFlag__i_;
 text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cUConstantOopReadValuePis_constant_oop6kM_i_;
-text: .text%__1cHMatcherNlogDSupported6F_ki_;
 text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
 text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
@@ -7066,57 +4772,41 @@
 text: .text%__1cFStateP_sub_Op_ConvI2D6MpknENode__v_;
 text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
 text: .text%__1cJCodeCachebCmake_marked_nmethods_zombies6F_v_;
-text: .text%__1cNVM_DeoptimizeEname6kM_pkc_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
 text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cSCommandLineFlagsExJboolAtPut6FnXCommandLineFlagWithType_i_v_;
-text: .text%__1cMmulI_memNodeJnum_opnds6kM_I_;
 text: .text%__1cFStateM_sub_Op_CmpF6MpknENode__v_;
 text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cOtailjmpIndNodeGpinned6kM_i_;
 text: .text%__1cQshrL_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_2_v_;
 text: .text%__1cILogDNodeJideal_reg6kM_I_;
-text: .text%__1cMmulI_memNodeRis_cisc_alternate6kM_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%__1cMOopTaskQdDueueKinitialize6M_v_;
 text: .text%__1cMmulD_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMOopTaskQdDueue2t6M_v_;
-text: .text%__1cOLibraryCallKitbBinline_native_currentThread6M_i_;
 text: .text%__1cNMemoryManager2t6M_v_;
 text: .text%__1cMaddF_immNodeKconst_size6kM_i_;
 text: .text%__1cVMoveL2D_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOLibraryCallKitSinline_math_native6MnMvmIntrinsicsCID__i_;
 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%__1cOCompilerThreadbCis_hidden_from_external_view6kM_i_;
-text: .text%__1cNReservedSpaceJlast_part6ML_0_;
 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%__1cRmulI_rReg_immNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cOsalI_mem_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSPSPromotionManager2t6M_v_;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_;
 text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
 text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
 text: .text%__1cMsubF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerFmovss6MpnRFloatRegisterImpl_2_v_;
 text: .text%JVM_GetLastErrorString;
-text: .text%__1cJAssemblerFmovsd6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
 text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
 text: .text%__1cFStateM_sub_Op_SubF6MpknENode__v_;
-text: .text%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
 text: .text%JVM_GetInterfaceVersion;
 text: .text%__1cKstoreBNodeErule6kM_I_;
 text: .text%__1cKVtableStub2n6FLi_pv_;
@@ -7126,7 +4816,6 @@
 text: .text%__1cCosFyield6F_v_;
 text: .text%__1cRaddI_mem_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_L_v_;
-text: .text%__1cOLibraryCallKitMinline_trans6MnMvmIntrinsicsCID__i_;
 text: .text%Unsafe_SetMemory;
 text: .text%__1cCosIjvm_path6Fpci_v_;
 text: .text%__1cJTimeStamp2t6M_v_;
@@ -7137,15 +4826,10 @@
 text: .text%__1cNGrowableArray4CpnIPerfData__Egrow6Mi_v_;
 text: .text%__1cMSysClassPathNreset_item_at6Mi_v_;
 text: .text%__1cFStateM_sub_Op_LogD6MpknENode__v_;
-text: .text%__1cFTypeDFempty6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_2i_v_;
 text: .text%__1cJlookupOne6FpnHJNIEnv__pkcpnGThread__pnH_jclass__: jni.o;
 text: .text%__1cLloadSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosGgetenv6Fpkcpci_i_;
 text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
 text: .text%__1cISubFNodeGadd_id6kM_pknEType__;
-text: .text%__1cJArgumentsMbuild_string6Fppcpkc_v_;
 text: .text%__1cFStateM_sub_Op_SubD6MpknENode__v_;
 text: .text%JVM_RegisterSignal;
 text: .text%JVM_FindSignal;
@@ -7156,12 +4840,10 @@
 text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_;
 text: .text%jni_GetDoubleArrayRegion: jni.o;
 text: .text%__1cLloadSSDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveF2I_reg_stackNodeJnum_opnds6kM_I_;
 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%__1cJArgumentsMadd_property6Fpkc_i_;
 text: .text%__1cMVM_OperationNdoit_epilogue6M_v_;
 text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
 text: .text%__1cRaddI_mem_rRegNodeFreloc6kM_i_;
@@ -7169,7 +4851,6 @@
 text: .text%__1cVMoveF2I_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNTemplateTableGfconst6Fi_v_;
 text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cOtailjmpIndNodeHtwo_adr6kM_I_;
 text: .text%__1cQmulI_mem_immNodeFreloc6kM_i_;
 text: .text%__1cNincI_rRegNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
@@ -7177,104 +4858,71 @@
 text: .text%__1cUConstantOopReadValue2t6MpnTDebugInfoReadStream__v_;
 text: .text%__1cRaddI_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMdivD_immNodeKconst_size6kM_i_;
-text: .text%__1cMmulD_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
 text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cMsubF_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
 text: .text%__1cNGrowableArray4CpnTDerivedPointerEntry__Egrow6Mi_v_;
-text: .text%__1cOtailjmpIndNodeJnum_opnds6kM_I_;
 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%__1cJMarkSweepUAdjustPointerClosure2t6Mi_v_;
 text: .text%__1cCosHrealloc6FpvL_1_;
 text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cSestimate_path_freq6FpnENode__f_: loopnode.o;
 text: .text%__1cCosNsigexitnum_pd6F_i_;
 text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cOLibraryCallKitVinline_fp_conversions6MnMvmIntrinsicsCID__i_;
 text: .text%__1cZcatch_cleanup_intra_block6FpnENode_1pnFBlock_ii_v_: lcm.o;
-text: .text%__1cCosbCis_thread_cpu_time_supported6F_i_;
 text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cNdefaultStreamMhas_log_file6M_i_;
-text: .text%__1cNcmovL_memNodeRis_cisc_alternate6kM_i_;
 text: .text%__1cRalign_object_size6Fl_l_;
 text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_;
 text: .text%__1cNstoreImmBNodeErule6kM_I_;
 text: .text%__1cNstoreImmINodeErule6kM_I_;
-text: .text%__1cLloadSSDNodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
 text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cLloadSSINodeZcheck_for_anti_dependence6kM_i_;
 text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
 text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cMloadConDNodeGis_Con6kM_I_;
 text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cPfilename_to_pid6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cTis_directory_secure6Fpkc_i_: perfMemory_solaris.o;
 text: .text%jni_CallStaticVoidMethodV: jni.o;
 text: .text%jni_CallStaticBooleanMethod: jni.o;
 text: .text%__1cNGrowableArray4CpnNmethodOopDesc__Egrow6Mi_v_;
-text: .text%__1cRInvocationCounterMreinitialize6Fi_v_;
 text: .text%__1cXpartialSubtypeCheckNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cTconvF2I_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
 text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
 text: .text%__1cNGrowableArray4CpC_Egrow6Mi_v_;
 text: .text%__1cNGrowableArray4CL_Egrow6Mi_v_;
-text: .text%__1cObox_handleNodeHsize_of6kM_I_;
 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%__1cbCAbstractInterpreterGeneratorTgenerate_error_exit6Mpkc_pC_;
 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%__1cOPSVirtualSpaceKinitialize6MnNReservedSpace_L_i_;
 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%__1cMAdapterCache2t6M_v_;
-text: .text%__1cSComputeAdapterInfoIdo_array6Mii_v_;
-text: .text%__1cGatomll6Fpkcpx_i_: arguments.o;
-text: .text%__1cJArgumentsRcheck_memory_size6Fxx_n0AJArgsRange__;
 text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cYalign_to_allocation_size6FL_L_: heap.o;
-text: .text%__1cJArgumentsRparse_memory_size6Fpkcpxx_n0AJArgsRange__;
-text: .text%__1cJArgumentsXPropertyList_unique_add6FppnOSystemProperty_pkcpc_v_;
 text: .text%__1cQAgentLibraryList2t6M_v_;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_;
 text: .text%__1cMmulF_memNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cJAssemblerGmovsbl6MpnMRegisterImpl_2_v_;
 text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_2_v_;
-text: .text%__1cLOptoRuntimebDlazy_c2i_adapter_generation_C6FpnKJavaThread__pC_;
-text: .text%__1cLOptoRuntimeVgenerate_handler_blob6FpCi_pnNSafepointBlob__;
 text: .text%__1cRaddL_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cJAssemblerGmovzwl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFmovdq6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
 text: .text%__1cRComputeEntryStackIdo_float6M_v_;
 text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSReferenceProcessor2t6MnJMemRegion_iii_v_;
 text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
 text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
 text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerHucomisd6MpnRFloatRegisterImpl_2_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%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
 text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
 text: .text%__1cMGCTaskThreadDrun6M_v_;
 text: .text%__1cMGCTaskThreadFstart6M_v_;
@@ -7284,12 +4932,9 @@
 text: .text%__1cJAssemblerFxaddl6MnHAddress_pnMRegisterImpl__v_;
 text: .text%__1cNGCTaskManagerKset_thread6MIpnMGCTaskThread__v_;
 text: .text%__1cJAssemblerHldmxcsr6MnHAddress__v_;
-text: .text%__1cJAssemblerFxorps6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cKcastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cMPeriodicTask2t6ML_v_;
 text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cPOopTaskQdDueueSetOregister_queue6MipnMOopTaskQdDueue__v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
 text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
@@ -7297,14 +4942,9 @@
 text: .text%__1cNTemplateTableKinitialize6F_v_;
 text: .text%__1cNTemplateTableGlconst6Fi_v_;
 text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
 text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cPdouble_quadword6Fpxxx_0_: templateTable_amd64.o;
 text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
 text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
 text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
 text: .text%__1cEMIN24CL_6FTA0_0_;
 text: .text%__1cRCardTableModRefBSbCpar_chunk_heapword_alignment6F_L_;
@@ -7312,8 +4952,6 @@
 text: .text%__1cOMacroAssemblerPcorrected_idivq6MpnMRegisterImpl__i_;
 text: .text%__1cLNamedThread2t6M_v_;
 text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cOMacroAssemblerQserialize_memory6MpnMRegisterImpl_22_v_;
-text: .text%__1cIDivDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
 text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
@@ -7322,24 +4960,17 @@
 text: .text%__1cFStateP_sub_Op_ConvL2D6MpknENode__v_;
 text: .text%__1cFStateP_sub_Op_ConvF2I6MpknENode__v_;
 text: .text%__1cFStateP_sub_Op_ConvD2F6MpknENode__v_;
-text: .text%__1cRcheck_if_clipping6FpknKRegionNode_rpnGIfNode_5_i_: cfgnode.o;
-text: .text%__1cWcheck_compare_clipping6FipnGIfNode_pnHConNode_rpnENode__i_: cfgnode.o;
-text: .text%__1cIciObjectOis_array_klass6M_i_;
 text: .text%__1cScompP_rReg_memNodeFreloc6kM_i_;
 text: .text%__1cKCastPPNodeJideal_reg6kM_I_;
 text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFTypeDJis_finite6kM_i_;
 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%__1cLConvF2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOcompP_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cKciTypeFlowLStateVectorRdo_multianewarray6MpnQciBytecodeStream__v_;
-text: .text%__1cMorI_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cRCollectorCounters2t6Mpkci_v_;
 text: .text%Unsafe_CompareAndSwapObject;
 text: .text%__1cNSafepointBlob2n6FLI_pv_;
@@ -7347,8 +4978,6 @@
 text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
 text: .text%__1cINegFNodeJideal_reg6kM_I_;
 text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_L_i_;
-text: .text%__1cHMatcherQconvL2FSupported6F_ki_;
 text: .text%__1cLConvD2FNodeJideal_reg6kM_I_;
 text: .text%__1cLConvF2INodeJideal_reg6kM_I_;
 text: .text%__1cLConvL2DNodeJideal_reg6kM_I_;
@@ -7364,29 +4993,17 @@
 text: .text%__1cJAssemblerEsubq6MnHAddress_i_v_;
 text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
 text: .text%__1cMmulD_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cYSurvivorMutableSpacePool2t6MpnKPSYoungGen_pkcnKMemoryPoolIPoolType_i_v_;
 text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassUoop_is_instanceKlass6kM_i_;
 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%__1cJArgumentsbSparse_java_tool_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cWResolveOopMapConflictsOreport_results6kM_i_;
-text: .text%__1cMCodeHeapPool2t6MpnICodeHeap_pkci_v_;
 text: .text%__1cJAssemblerFxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJArgumentsbNparse_java_options_environment_variable6FpnMSysClassPath_pi_i_;
 text: .text%__1cJAssemblerFxchgq6MpnMRegisterImpl_nHAddress__v_;
-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%__1cJAssemblerIcmpxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cINegFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
 text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cJArgumentsbOparse_java_compiler_environment_variable6F_v_;
 text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cICodeHeapHreserve6MLLL_i_;
 text: .text%__1cQRelocationHolder2t6M_v_;
 text: .text%__1cICodeHeapFclear6M_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
@@ -7395,15 +5012,12 @@
 text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
 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%__1cLsymbolKlassOset_alloc_size6MI_v_;
 text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
 text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
 text: .text%__1cNGCTaskManagerKinitialize6M_v_;
 text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cXSynchronizedGCTaskQdDueue2t6MpnLGCTaskQdDueue_pnFMutex__v_;
 text: .text%__1cDhpiKinitialize6F_i_;
 text: .text%__1cDhpiZinitialize_socket_library6F_i_;
 text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
@@ -7421,74 +5035,39 @@
 text: .text%__1cYGCAdaptivePolicyCounters2t6MpkciipnSAdaptiveSizePolicy__v_;
 text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
 text: .text%__1cJAssemblerHstmxcsr6MnHAddress__v_;
-text: .text%__1cJAssemblerFaddss6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFsubss6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
 text: .text%__1cMSysClassPath2t6Mpkc_v_;
 text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cJAssemblerFmulss6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFdivss6MpnRFloatRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFaddsd6MpnRFloatRegisterImpl_nHAddress__v_;
 text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cJAssemblerFsubsd6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cJAssemblerFmulsd6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFdivsd6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cJAssemblerGsqrtsd6MpnRFloatRegisterImpl_nHAddress__v_;
 text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cRArgumentOopFinderDset6MinJBasicType__v_;
 text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_LLL_v_;
 text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_LLLLLLL_v_;
 text: .text%__1cHOrLNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_;
-text: .text%__1cJAssemblerFxorps6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFxorpd6MpnRFloatRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFxorpd6MpnRFloatRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerJcvtsi2ssl6MpnRFloatRegisterImpl_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerJcvtsi2ssq6MpnRFloatRegisterImpl_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerJcvtsi2sdl6MpnRFloatRegisterImpl_pnMRegisterImpl__v_;
-text: .text%__1cFframebAoops_compiled_arguments_do6MnMsymbolHandle_ipknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cJAssemblerJcvtsi2sdq6MpnRFloatRegisterImpl_pnMRegisterImpl__v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: adaptiveSizePolicy.o;
-text: .text%__1cSAdaptiveSizePolicy2t6ML_v_;
-text: .text%__1cFframebDoops_interpreted_arguments_do6MnMsymbolHandle_ipnKOopClosure__v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cJAssemblerKcvttss2sil6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cJAssemblerKcvttss2siq6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cJAssemblerKcvttsd2sil6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
 text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
 text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cJAssemblerKcvttsd2siq6MpnMRegisterImpl_pnRFloatRegisterImpl__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%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cJAssemblerIcvtss2sd6MpnRFloatRegisterImpl_2_v_;
-text: .text%__1cJAssemblerIcvtsd2ss6MpnRFloatRegisterImpl_2_v_;
 text: .text%__1cMinit_globals6F_i_;
 text: .text%__1cMexit_globals6F_v_;
 text: .text%__1cOMacroAssemblerKdecrementl6MpnMRegisterImpl_i_v_;
-text: .text%__1cHVM_ExitEname6kM_pkc_;
 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%__1cMPeriodicTaskLis_enrolled6kM_i_;
 text: .text%__1cNMemoryServicebFadd_parallel_scavenge_heap_info6FpnUParallelScavengeHeap__v_;
 text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
 text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cMadapter_init6F_v_;
-text: .text%__1cTI2CAdapterGeneratorKinitialize6F_v_;
 text: .text%__1cNMemoryServiceXadd_psYoung_memory_pool6FpnKPSYoungGen_pnNMemoryManager_4_v_;
-text: .text%__1cTC2IAdapterGeneratorKinitialize6F_v_;
-text: .text%__1cOstackSlotPOperFclone6kM_pnIMachOper__;
-text: .text%__1cObox_handleNodeFclone6kM_pnENode__;
 text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
 text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_amd64_pipeline.o;
 text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
 text: .text%__1cKmutex_init6F_v_;
@@ -7505,7 +5084,6 @@
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
 text: .text%__1cStemplateTable_init6F_v_;
 text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cSinstanceKlassKlassUoop_is_instanceKlass6kM_i_;
 text: .text%__1cNTemplateTableDnop6F_v_;
 text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
 text: .text%__1cNTemplateTableLaconst_null6F_v_;
@@ -7543,7 +5121,6 @@
 text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
 text: .text%__1cXreferenceProcessor_init6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cURecompilationMonitorbGstart_recompilation_monitor_task6F_v_;
 text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
 text: .text%__1cNTemplateTableHaload_06F_v_;
 text: .text%__1cNTemplateTableGistore6F_v_;
@@ -7612,19 +5189,13 @@
 text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
 text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
 text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbEset_entry_points_for_all_bytes6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbCset_safepoints_for_all_bytes6M_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%__1cNGrowableArray4CpnNMemoryManager__2t6Mii_v_;
-text: .text%__1cNGrowableArray4CpnKMemoryPool__2t6Mii_v_;
 text: .text%__1cNTemplateTableIputfield6Fi_v_;
 text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
 text: .text%__1cJPSPermGen2t6MnNReservedSpace_LLLLpkci_v_;
 text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_;
 text: .text%__1cIPSOldGen2t6MLLLpkci_v_;
@@ -7647,7 +5218,6 @@
 text: .text%__1cNTemplateTableEwide6F_v_;
 text: .text%__1cNTemplateTableOmultianewarray6F_v_;
 text: .text%__1cIPSOldGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
 text: .text%__1cQvtableStubs_init6F_v_;
 text: .text%__1cQaccessFlags_init6F_v_;
 text: .text%__1cSInterpreterRuntimeYthrow_ClassCastException6FpnKJavaThread_pnHoopDesc__v_;
@@ -7657,15 +5227,8 @@
 text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_;
 text: .text%__1cFVTuneEexit6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cTPSAlwaysTrueClosure2t6M_v_: psMarkSweep.o;
 text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%__1cNGrowableArray4CpC_2t6Mii_v_;
-text: .text%__1cNGrowableArray4CL_2t6Mii_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
 text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_ClassCastException_handler6M_pC_;
-text: .text%__1cGThreadWset_as_starting_thread6M_i_;
 text: .text%__1cLPSMarkSweepKinitialize6F_v_;
 text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
 text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
@@ -7678,12 +5241,10 @@
 text: .text%__1cNWatcherThreadFstart6F_v_;
 text: .text%__1cNWatcherThreadEstop6F_v_;
 text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cKJavaThread2t6M_v_;
 text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
 text: .text%__1cKvtune_init6F_v_;
 text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
 text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
 text: .text%__1cKDictionaryKmethods_do6MpFpnNmethodOopDesc__v_v_;
 text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
 text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
@@ -7695,20 +5256,16 @@
 text: .text%__1cKDictionary2t6Mi_v_;
 text: .text%__1cJBytecodesKinitialize6F_v_;
 text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cUPSAdaptiveSizePolicy2t6MLLLLLddI_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%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
 text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
 text: .text%__1cWinvocationCounter_init6F_v_;
 text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
 text: .text%__1cFStateL_sub_Op_OrL6MpknENode__v_;
 text: .text%__1cFStateM_sub_Op_NegF6MpknENode__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_amd64_expand.o;
 text: .text%__1cQprint_statistics6F_v_;
 text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
 text: .text%__1cFStateP_sub_Op_MoveL2D6MpknENode__v_;
@@ -7720,7 +5277,6 @@
 text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
 text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
 text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cRAllocateTLSOffset6F_v_: threadLS_solaris_amd64.o;
 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_;
@@ -7738,7 +5294,6 @@
 text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
 text: .text%__1cPGlobalTLABStats2t6M_v_;
 text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cMTailJumpNode2t6MpnENode_22222_v_;
 text: .text%jni_ToReflectedMethod: jni.o;
 text: .text%__1cSThreadLocalStorageEinit6F_v_;
 text: .text%__1cNThreadServiceEinit6F_v_;
@@ -7752,29 +5307,17 @@
 text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
 text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
 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%__1cUdelete_shared_memory6FpcL_v_: perfMemory_solaris.o;
-text: .text%__1cUcreate_shared_memory6FL_pc_: perfMemory_solaris.o;
 text: .text%__1cOtailjmpIndNodeFreloc6kM_i_;
-text: .text%__1cSmmap_create_shared6FL_pc_: perfMemory_solaris.o;
 text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
 text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cbAcreate_sharedmem_resources6Fpkc1L_i_: perfMemory_solaris.o;
 text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRmake_user_tmp_dir6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
 text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cLremove_file6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cWget_sharedmem_filename6Fpkci_pc_: perfMemory_solaris.o;
-text: .text%__1cNget_user_name6Fi_pc_: perfMemory_solaris.o;
-text: .text%__1cQget_user_tmp_dir6Fpkc_pc_: perfMemory_solaris.o;
 text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cFciEnvXget_or_create_exception6MrpnI_jobject_nMsymbolHandle__pnKciInstance__;
-text: .text%__1cMloadConFNodeGis_Con6kM_I_;
 text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
 text: .text%__1cKPerfMemoryHdestroy6F_v_;
 text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
@@ -7794,7 +5337,6 @@
 text: .text%__1cMsubD_immNodeFreloc6kM_i_;
 text: .text%__1cMsubF_memNodeFreloc6kM_i_;
 text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cbDinitializeDirectBufferSupport6FpnHJNIEnv___i_: jni.o;
 text: .text%__1cVquicken_jni_functions6F_v_;
 text: .text%JNI_CreateJavaVM;
 text: .text%__1cFParseWprofile_null_checkcast6M_v_;
@@ -7813,7 +5355,6 @@
 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%__1cU__STATIC_CONSTRUCTOR6F_v_: jniFastGetField_amd64.o;
 text: .text%__1cNcmovL_memNodeFreloc6kM_i_;
 text: .text%__1cKJNIHandlesKinitialize6F_v_;
 text: .text%__1cQjni_handles_init6F_v_;
@@ -7821,34 +5362,23 @@
 text: .text%JVM_Halt;
 text: .text%JVM_MaxMemory;
 text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cKCMoveDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOsalI_mem_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetDataKis_RetData6M_i_;
 text: .text%JVM_InitializeSocketLibrary;
 text: .text%JVM_Socket;
 text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cPOopTaskQdDueueSet2t6Mi_v_;
 text: .text%__1cbEinitialize_converter_functions6F_v_;
 text: .text%JVM_SupportsCX8;
 text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
 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%__1cKTypeOopPtrEmake6FnHTypePtrDPTR_i_pk0_;
 text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_v_;
 text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
 text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
 text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNGrowableArray4CpnMJvmtiEnvBase__2t6Mii_v_;
 text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cRciArrayKlassKlassUis_array_klass_klass6M_i_;
 text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cNGrowableArray4CpnOCompilerThread__2t6Mii_v_;
-text: .text%__1cFParseNfetch_monitor6MipnENode_2_2_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
 text: .text%__1cNGrowableArray4CpnIciMethod__Egrow6Mi_v_;
 text: .text%__1cNCompileBrokerQset_should_block6F_v_;
@@ -7857,9 +5387,7 @@
 text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
 text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
 text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cUParallelScavengeHeapbCsupports_inline_contig_alloc6kM_i_;
 text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
 text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
 text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
@@ -7868,13 +5396,11 @@
 text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
 text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
 text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cOcompiler2_init6F_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%__1cMaddF_regNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
 text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
 text: .text%__1cHoopDescLheader_size6F_i_;
@@ -7884,7 +5410,6 @@
 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__2t6Mii_v_;
 text: .text%__1cNGrowableArray4CpnPJvmtiRawMonitor__Uclear_and_deallocate6M_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
 text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
@@ -7893,7 +5418,6 @@
 text: .text%__1cWcompilationPolicy_init6F_v_;
 text: .text%__1cMostream_exit6F_v_;
 text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassVoop_is_typeArrayKlass6kM_i_;
 text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__;
 text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cQostream_init_log6F_v_;
@@ -7902,14 +5426,12 @@
 text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
 text: .text%__1cMostream_init6F_v_;
 text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cIUniverseUreinitialize_itables6F_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%__1cSuniverse_post_init6F_v_;
 text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
 text: .text%__1cCosXnon_memory_address_word6F_pc_;
 text: .text%__1cCosGinit_26F_i_;
@@ -7919,24 +5441,18 @@
 text: .text%Unsafe_SetNativeLong;
 text: .text%__1cCosHSolarisOlibthread_init6F_v_;
 text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_;
-text: .text%__1cOisT2_libthread6F_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%__1cCosHSolarisRmpss_sanity_check6F_v_;
-text: .text%__1cOLibraryCallKitWinline_native_hashcode6Mii_i_;
 text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cCosOrelease_memory6FpcL_i_;
 text: .text%__1cCosLsignal_wait6F_i_;
 text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cVcheck_pending_signals6Fi_i_: os_solaris.o;
 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%__1cNmulI_rRegNodeMcisc_version6Mi_pnIMachNode__;
 text: .text%__1cLClassLoaderKinitialize6F_v_;
 text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
 text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
@@ -7947,19 +5463,12 @@
 text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
 text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
 text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cVverificationType_init6F_v_;
-text: .text%__1cVverificationType_exit6F_v_;
-text: .text%__1cQVerificationTypeKinitialize6F_v_;
-text: .text%__1cQVerificationTypeIfinalize6F_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%__1cTClassLoadingServiceVnotify_class_unloaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cCosScreate_main_thread6FpnGThread__i_;
 text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
 text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
 text: .text%__1cLmethodKlassOset_alloc_size6MI_v_;
 text: .text%__1cNExceptionBlob2n6FLI_pv_;
@@ -7971,13 +5480,10 @@
 text: .text%__1cSDeoptimizationBlob2n6FLI_pv_;
 text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
 text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cRLowMemoryDetectorUhas_pending_requests6F_i_;
 text: .text%__1cCosbDinit_system_properties_values6F_v_;
 text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
 text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cMFastLockNodeLis_FastLock6kM_pk0_;
 text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_;
 text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
 text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
@@ -7985,28 +5491,16 @@
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: cmsAdaptiveSizePolicy.o;
 text: .text%__1cKManagementEinit6F_v_;
 text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
 text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cCosXis_server_class_machine6F_i_;
-text: .text%__1cJMarkSweepQKeepAliveClosure2t6M_v_: markSweep.o;
-text: .text%__1cNReservedSpace2t6MLLipc_v_;
-text: .text%__1cJMarkSweepOIsAliveClosure2t6M_v_: markSweep.o;
 text: .text%__1cCosZset_memory_serialize_page6FpC_v_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
-text: .text%__1cJMarkSweepSFollowStackClosure2t6M_v_: markSweep.o;
 text: .text%__1cNReservedSpaceUpage_align_size_down6FL_L_;
 text: .text%__1cNReservedSpaceYallocation_align_size_up6FL_L_;
-text: .text%__1cNGrowableArray4CpnKOSRAdapter__2t6Mii_v_;
-text: .text%__1cXonStackReplacement_init6F_v_;
-text: .text%__1cSOnStackReplacementKinitialize6F_v_;
-text: .text%__1cJMarkSweepRFollowRootClosure2t6M_v_: markSweep.o;
 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%__1cJMarkSweepSMarkAndPushClosure2t6M_v_: markSweep.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
 text: .text%__1cQVMOperationQdDueue2t6M_v_;
 text: .text%__1cCosGstrdup6Fpkc_pc_;
@@ -8017,13 +5511,9 @@
 text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
 text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cHMatcherVfind_callee_arguments6FpnNsymbolOopDesc_ipi_pnLOptoRegPair__;
 text: .text%__1cIVMThreadGcreate6F_v_;
 text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cNSharedRuntimeUlookup_function_DD_D6FrpFpnHJNIEnv__pnH_jclass_dd_dpkc_v_;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: sharedHeap.o;
 text: .text%__1cIVMThreadDrun6M_v_;
 text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
@@ -8031,43 +5521,25 @@
 text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
 text: .text%__1cNCellTypeStateLmake_bottom6F_0_;
 text: .text%__1cNcmovL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRcheck_basic_types6F_v_;
-text: .text%__1cLOptoRuntimeYgenerate_arraycopy_stubs6F_v_;
-text: .text%__1cSobjArrayKlassKlassUoop_is_objArrayKlass6kM_i_;
 text: .text%__1cNSharedRuntimebBgenerate_class_cast_message6FpnKJavaThread_pkc_pc_;
-text: .text%__1cNSharedRuntimebBgenerate_class_cast_message6Fpkc2_pc_;
-text: .text%__1cLOptoRuntimebPgenerate_polling_page_return_handler_blob6F_v_;
 text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cLOptoRuntimebSgenerate_polling_page_safepoint_handler_blob6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cLOptoRuntimeUsetup_exception_blob6F_v_;
-text: .text%__1cLOptoRuntimeWfill_in_exception_blob6F_v_;
 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%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cLOptoRuntimebBgenerate_uncommon_trap_blob6F_v_;
 text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cQPSGenerationPool2t6MpnJPSPermGen_pkcnKMemoryPoolIPoolType_i_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%__1cICarSpaceEinit6F_v_;
-text: .text%__1cNcarSpace_init6F_v_;
 text: .text%__1cORuntimeServiceEinit6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cRAlwaysTrueClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cLOptoRuntimeVhandle_exception_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeSfetch_monitor_Type6F_pknITypeFunc__;
 text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
 text: .text%__1cLStatSamplerKinitialize6F_v_;
 text: .text%__1cLStatSamplerGengage6F_v_;
 text: .text%__1cLStatSamplerJdisengage6F_v_;
 text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cSCommandLineFlagsExKuintxAtPut6FnXCommandLineFlagWithType_L_v_;
 text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
 text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
 text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
@@ -8079,14 +5551,7 @@
 text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
 text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
 text: .text%__1cJAssemblerEshlq6MpnMRegisterImpl__v_;
-text: .text%__1cUEdenMutableSpacePool2t6MpnKPSYoungGen_pnMMutableSpace_pkcnKMemoryPoolIPoolType_i_v_;
 text: .text%__1cNStubGeneratorQgenerate_initial6M_v_;
-text: .text%__1cNStubGeneratorXgenerate_atomic_add_ptr6M_pC_;
-text: .text%__1cNStubGeneratorTgenerate_atomic_add6M_pC_;
-text: .text%__1cNStubGeneratorbCgenerate_atomic_cmpxchg_long6M_pC_;
-text: .text%__1cNStubGeneratorXgenerate_atomic_cmpxchg6M_pC_;
-text: .text%__1cNStubGeneratorYgenerate_atomic_xchg_ptr6M_pC_;
-text: .text%__1cNStubGeneratorUgenerate_atomic_xchg6M_pC_;
 text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_;
 text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_;
 text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_;
@@ -8098,18 +5563,12 @@
 text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
 text: .text%__1cNStubGeneratorTgenerate_verify_oop6M_pC_;
 text: .text%__1cNStubGeneratorVgenerate_verify_mxcsr6M_pC_;
-text: .text%__1cNStubGeneratorYgenerate_get_previous_fp6M_pC_;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_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%__1cNGrowableArray4CpnTDerivedPointerEntry__2t6Mii_v_;
 text: .text%__1cLMoveF2INodeJideal_reg6kM_I_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cNGrowableArray4CpnHMonitor__2t6Mii_v_;
 text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray1_Type6F_pknITypeFunc__;
-text: .text%__1cQDoNothingClosure2t6M_v_: oopMap.o;
 text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_sparcv9	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_COMPILER2_sparcv9	Tue Jul 28 13:50:07 2009 -0600
@@ -2,105 +2,52 @@
 text = LOAD ?RXO;
 
 
-text: .text%__1cLOptoRuntimeLjshort_copy6Fph1L_v_;
-text: .text%__1cLOptoRuntimeTarrayof_jshort_copy6FpnIHeapWord_2L_v_;
-text: .text%__1cSPSPromotionManagerWcopy_to_survivor_space6MpnHoopDesc__2_;
 text: .text%__1cNinstanceKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cJMarkSweepO_mark_and_push6FppnHoopDesc__v_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
 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%__1cIMachNodeHis_Mach6M_p0_: ad_sparc_misc.o;
 text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__v_;
-text: .text%__1cMOopTaskQdDueueKpop_global6MrpnHoopDesc__i_;
 text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: ifg.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_sparc_misc.o;
-text: .text%__1cUGenericGrowableArrayLraw_at_grow6MipknEGrET__pv_;
 text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_sparc_misc.o;
 text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cHRegMaskFis_UP6kM_i_;
-text: .text%__1cIMachNodeNrematerialize6kM_i_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: classes.o;
-text: .text%__1cIProjNodeHis_Proj6M_p0_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: classes.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: classes.o;
 text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cENodeHis_Copy6kM_I_: ad_sparc_misc.o;
 text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cENodeHis_Copy6kM_I_: classes.o;
 text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
 text: .text%__1cHRegMaskJis_bound16kM_i_;
 text: .text%__1cDff16FI_i_;
 text: .text%__1cXresource_allocate_bytes6FL_pc_;
-text: .text%__1cIMachNodeJideal_reg6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: ad_sparc_misc.o;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: classes.o;
 text: .text%__1cHRegMaskJis_bound26kM_i_;
 text: .text%__1cJVectorSet2R6MI_rnDSet__;
 text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachSpillCopyNodeMis_SpillCopy6M_p0_: ad_sparc.o;
 text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cENodeGpinned6kM_i_: classes.o;
 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%__1cHPhiNodeGis_Phi6M_p0_: cfgnode.o;
 text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
 text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: callnode.o;
 text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
 text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cQObjectStartArrayMobject_start6MpnIHeapWord__2_: cardTableExtension.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: relocInfo.o;
-text: .text%__1cRMachSpillCopyNodeHis_Copy6kM_I_: ad_sparc.o;
-text: .text%__1cEDictGInsert6Mpv1i_1_;
-text: .text%__1cPOopTaskQdDueueSetFsteal6MipirpnHoopDesc__i_;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cOloadConI13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cJMultiNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: ad_sparc.o;
 text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cENodeGis_CFG6kM_i_: cfgnode.o;
 text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_: markSweep.o;
-text: .text%__1cOloadConI13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cOloadConI13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIProjNodeGis_CFG6kM_i_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: classes.o;
 text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: classes.o;
 text: .text%__1cOloadConI13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFArenaIcontains6kMpkv_i_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: classes.o;
-text: .text%__1cIProjNodeGpinned6kM_i_;
 text: .text%__1cICallNodeKmatch_edge6kMI_I_;
 text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
 text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: cfgnode.o;
 text: .text%__1cKbranchNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_sparc_misc.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: nmethod.o;
 text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
 text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cMPhaseChaitinKelide_copy6MpnENode_ipnFBlock_rnJNode_List_6i_i_;
 text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
 text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cHCompileRvalid_bundle_info6MpknENode__i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_sparc.o;
 text: .text%__1cGIfNodeGOpcode6kM_i_;
 text: .text%__1cHCompileNnode_bundling6MpknENode__pnGBundle__;
 text: .text%__1cIUniverseMnon_oop_word6F_pv_;
@@ -108,23 +55,13 @@
 text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
 text: .text%__1cETypeEmeet6kMpk0_2_;
 text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: coalesce.o;
 text: .text%__1cENode2t6MI_v_;
 text: .text%__1cFArenaIArealloc6MpvLL_1_;
-text: .text%__1cHTypeIntCeq6kMpknEType__i_;
-text: .text%__1cENodeNrematerialize6kM_i_: classes.o;
 text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKSchedulingLanti_do_def6MpnFBlock_pnENode_nHOptoRegEName_i_v_;
-text: .text%__1cENodeHis_Copy6kM_I_: cfgnode.o;
-text: .text%__1cOlower_pressure6FpnDLRG_IpnFBlock_pI4_v_: ifg.o;
 text: .text%__1cIAddPNodeGOpcode6kM_i_;
 text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
 text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
 text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cETypeLisa_oop_ptr6kM_i_;
-text: .text%__1cITypeLongCeq6kMpknEType__i_;
-text: .text%__1cETypeJsingleton6kM_i_;
 text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
 text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
 text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
@@ -134,102 +71,68 @@
 text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
 text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: ad_sparc.o;
 text: .text%__1cJloadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodePin_oper_RegMask6kMIII_pknHRegMask__;
 text: .text%JVM_ArrayCopy;
 text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_: typeArrayKlass.o;
 text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: classes.o;
 text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
 text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_sparc_misc.o;
 text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: cfgnode.o;
 text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
 text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
 text: .text%__1cIPhaseIFGJre_insert6MI_v_;
 text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cIciObjectGequals6Mp0_i_;
 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%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopopts.o;
 text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
 text: .text%__1cDfh16FI_i_;
 text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cHTypeIntJsingleton6kM_i_;
-text: .text%__1cIParmNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cNMachIdealNodeErule6kM_I_: ad_sparc.o;
 text: .text%__1cIBoolNodeGOpcode6kM_i_;
 text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: classes.o;
-text: .text%__1cNSharedRuntimeDl2f6Fx_f_;
 text: .text%__1cHTypeIntEhash6kM_i_;
 text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cJMultiNodeIis_Multi6M_p0_;
 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%__1cENodeZcheck_for_anti_dependence6kM_i_: classes.o;
-text: .text%__1cENodeXpartial_latency_of_defs6MrnLBlock_Array_rnNGrowableArray4CI___v_;
 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%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: relocInfo.o;
 text: .text%__1cMMachProjNodeGOpcode6kM_i_;
 text: .text%__1cITypeNodeEhash6kM_I_;
 text: .text%__1cITypeLongEhash6kM_i_;
 text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cMPhaseChaitinKbias_color6MrnDLRG_i_nHOptoRegEName__;
-text: .text%__1cHRegMaskQis_aligned_Pairs6kM_i_;
 text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_sparc.o;
-text: .text%__1cFMutexGunlock6M_v_;
-text: .text%__1cFStateRMachOperGenerator6MipnIMachNode_pnHCompile__pnIMachOper__;
 text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJiRegIOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBlob.o;
 text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
 text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
 text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKRegionNodeGpinned6kM_i_: classes.o;
 text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
 text: .text%__1cENodeNis_block_proj6kM_pk0_;
 text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%__1cUGenericGrowableArrayPraw_at_put_grow6MipknEGrET_3_v_;
-text: .text%__1cKJavaThreadPcook_last_frame6MnFframe__1_;
 text: .text%__1cGcmpkey6Fpkv1_i_;
 text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_L_: parallelScavengeHeap.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FLipnGThread__pnIHeapWord__: typeArrayKlass.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
 text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cIBoolNodeHis_Bool6M_p0_: subnode.o;
 text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cOMethodLivenessKBasicBlockXcompute_gen_kill_single6MpnQciByteCodeStream__v_;
 text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
 text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
 text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cENodeFIdeal6MpnIPhaseGVN_i_p0_;
 text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFStateDDFA6MipknENode__i_;
-text: .text%__1cENodeGpinned6kM_i_: ad_sparc_misc.o;
 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%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopnode.o;
-text: .text%__1cHPhiNodeGpinned6kM_i_: cfgnode.o;
 text: .text%__1cKbranchNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
@@ -242,117 +145,53 @@
 text: .text%__1cENodeKmatch_edge6kMI_I_;
 text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
 text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_sparc.o;
 text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_sparc.o;
 text: .text%__1cETypeFxmeet6kMpk0_2_;
 text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cMOopTaskQdDueueOpop_local_slow6MInOTaskQdDueueSuperDAge__i_;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_: relocInfo.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: ad_sparc_misc.o;
 text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
 text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cICallNodeHis_Call6M_p0_: callnode.o;
 text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cGIfNodeGpinned6kM_i_: classes.o;
 text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_sparc.o;
 text: .text%__1cILRG_ListGextend6MII_v_;
 text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cRMachSafePointNodeEjvms6kM_pnIJVMState__: ad_sparc_misc.o;
 text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 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%__1cOis_diamond_phi6FpnENode__i_: cfgnode.o;
 text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: callnode.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: callnode.o;
-text: .text%__1cKTypeOopPtrJsingleton6kM_i_;
 text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cMloadConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGIfNodeFis_If6M_p0_: classes.o;
-text: .text%__1cIMachNode2t6M_v_;
 text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: memnode.o;
 text: .text%__1cENodeHsize_of6kM_I_;
 text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: classes.o;
 text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cHMatcherKLabel_Root6MpknENode_pnFState_p16_6_;
 text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMloadConPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: classes.o;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: cfgnode.o;
-text: .text%__1cLTypeInstPtrCeq6kMpknEType__i_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: classes.o;
-text: .text%__1cENodeSremove_dead_region6MpnIPhaseGVN_i_i_;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: callnode.o;
 text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: memnode.o;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: cfgnode.o;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc_misc.o;
-text: .text%__1cFMutexElock6M_v_;
 text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
 text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
 text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: classes.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: classes.o;
-text: .text%__1cOmatch_into_reg6FpnENode_iii1_i_: matcher.o;
-text: .text%__1cKTypeAryPtrCeq6kMpknEType__i_;
 text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cIHaltNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: callnode.o;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_sparc.o;
-text: .text%__1cPindOffset13OperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENodeNrematerialize6kM_i_: cfgnode.o;
 text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cHCompileMFillLocArray6MpnENode_pnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cETypeKhas_memory6kM_i_;
-text: .text%__1cSCallStaticJavaNodeEhash6kM_I_: callnode.o;
 text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: cfgnode.o;
 text: .text%__1cENode2t6Mp0_v_;
 text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
 text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: cfgnode.o;
-text: .text%__1cIGraphKitHstopped6M_i_;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_sparc_misc.o;
 text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cJStartNodeGpinned6kM_i_: callnode.o;
-text: .text%__1cHRegMaskPfind_first_pair6kM_nHOptoRegEName__;
 text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cKMachIfNodeJis_MachIf6kM_pk0_: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrEmake6FnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_pk0_;
 text: .text%__1cMPipeline_UseJadd_usage6Mrk0_v_;
 text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_: instanceKlassKlass.o;
 text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
 text: .text%__1cJloadINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYCallStaticJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIget_long6kM_x_;
-text: .text%__1cHMatcherKReduceOper6MpnFState_ipnIMachNode_rpnENode__v_;
-text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_nHOptoRegEName__;
 text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
 text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cJTypeTupleJsingleton6kM_i_;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pnIciObject_pknHTypeAry_pnHciKlass_ii_pk0_;
 text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cENodeGis_CFG6kM_i_: connode.o;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__: cardTableExtension.o;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
 text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cHConNodeGis_Con6kM_I_: classes.o;
 text: .text%__1cHRegMaskMSmearToPairs6M_v_;
 text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: memnode.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nmethod.o;
-text: .text%__1cJiRegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cIParmNodeGOpcode6kM_i_;
 text: .text%__1cKSchedulingPAddNodeToBundle6MpnENode_pknFBlock__v_;
@@ -364,21 +203,15 @@
 text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: classes.o;
 text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
 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%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
 text: .text%__1cJiRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHCmpNodeGis_Cmp6kM_pk0_: classes.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: cfgnode.o;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
 text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
 text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6ML_pnIHeapWord__;
@@ -386,110 +219,61 @@
 text: .text%__1cMMutableSpaceIallocate6ML_pnIHeapWord__;
 text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
 text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cJMultiNodeEhash6kM_I_: classes.o;
-text: .text%__1cITypeLongJsingleton6kM_i_;
 text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cENodeGis_CFG6kM_i_: subnode.o;
 text: .text%__1cFBlockIis_Empty6kM_i_;
 text: .text%__1cILoadNodeEhash6kM_I_;
 text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cQciByteCodeStreamEjava6MnJBytecodesECode__2_;
 text: .text%__1cJCatchNodeGOpcode6kM_i_;
 text: .text%__1cIHaltNodeGOpcode6kM_i_;
 text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: classes.o;
 text: .text%__1cNflagsRegPOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
 text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cFframeVoopmapreg_to_location6kMnFVMRegEName_pknLRegisterMap__ppnHoopDesc__;
-text: .text%__1cTconstantPoolOopDescSklass_ref_index_at6Mi_i_;
 text: .text%__1cKRelocationLunpack_data6M_v_: ad_sparc.o;
 text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: multnode.o;
 text: .text%__1cIJVMStateLdebug_start6kM_I_;
 text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: cfgnode.o;
-text: .text%__1cFBlockGselect6MrnJNode_List_rnLBlock_Array_pirnJVectorSet_IrnNGrowableArray4CI___pnENode__;
 text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
 text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc_misc.o;
 text: .text%method_compare: methodOop.o;
 text: .text%__1cXPipeline_Use_Cycle_MaskCOr6Mrk0_v_;
-text: .text%__1cMMachCallNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeGExpand6MpnFState_rnJNode_List__p0_: ad_sparc_misc.o;
 text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
 text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGBitMapFclear6M_v_;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: classes.o;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
 text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
 text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: cfgnode.o;
 text: .text%__1cJiRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: multnode.o;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: classes.o;
 text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cHMatcherTReduceInst_Interior6MpnFState_ipnIMachNode_IrpnENode__I_;
 text: .text%__1cJTypeTupleEhash6kM_i_;
 text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cGOopMapJset_value6MnHOptoRegEName_ii_v_;
 text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc_misc.o;
 text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMloadConINodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConINodeHtwo_adr6kM_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%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: methodDataOop.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlass.o;
-text: .text%__1cFBlockLis_uncommon6kMrnLBlock_Array__i_;
-text: .text%__1cINodeHashLhash_delete6MpknENode__i_;
 text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: multnode.o;
 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%__1cPciInstanceKlassMis_interface6M_i_: ciInstanceKlass.o;
 text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cIAddPNodeHis_AddP6M_p0_: classes.o;
 text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6FnTinstanceKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cHCompileJcan_alias6MpknHTypePtr_i_i_;
 text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cENodeGpinned6kM_i_: connode.o;
 text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
 text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
-text: .text%__1cENodeOis_block_start6kM_i_;
 text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cJiRegLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: subnode.o;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: methodDataOop.o;
 text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: ad_sparc.o;
-text: .text%__1cUGenericGrowableArray2t6Mii_v_;
 text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
 text: .text%__1cHTypeIntEmake6Fi_pk0_;
 text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cHPhiNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMflagsRegOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cPindOffset13OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cENodeHis_Copy6kM_I_: memnode.o;
-text: .text%__1cPjava_lang_ClassMis_primitive6FpnHoopDesc__i_;
 text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cENodeGis_Con6kM_I_: classes.o;
 text: .text%__1cJLoadINodeGOpcode6kM_i_;
 text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cHTypeIntEmake6Fiii_pk0_;
@@ -499,39 +283,24 @@
 text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
 text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
 text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cKbranchNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cGBitMap2t6MpLL_v_;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUcompI_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
 text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: coalesce.o;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_sparc_misc.o;
 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%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
-text: .text%__1cKis_x2logic6FpnIPhaseGVN_pnENode__3_: cfgnode.o;
-text: .text%__1cHAbsNodeLis_absolute6FpnIPhaseGVN_pnENode__4_;
 text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cVcompP_iRegP_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cLPCTableNodeGpinned6kM_i_: classes.o;
 text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: cfgnode.o;
-text: .text%__1cUGenericGrowableArray2t6MpnFArena_iipnEGrET__v_;
-text: .text%__1cGBitMapGat_put6MLi_v_;
 text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cTconstantPoolOopDescbAname_and_type_ref_index_at6Mi_i_;
 text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
 text: .text%__1cKNode_ArrayFclear6M_v_;
 text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: classes.o;
 text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cUParallelScavengeHeapPis_in_permanent6kMpkv_i_: parallelScavengeHeap.o;
 text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: multnode.o;
 text: .text%__1cHhashptr6Fpkv_i_;
 text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
 text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
@@ -542,73 +311,38 @@
 text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
 text: .text%__1cKRelocationRpd_set_data_value6MpCl_v_;
 text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cKciTypeFlowLStateVectorSapply_one_bytecode6MpnQciByteCodeStream__i_;
 text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
 text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
 text: .text%__1cOcompU_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKBranchDataKcell_count6M_i_: methodDataOop.o;
 text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cITypeNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cHCompilePfind_alias_type6MpknHTypePtr_i_pn0AJAliasType__;
 text: .text%__1cHConNodeEhash6kM_I_;
 text: .text%__1cKimmI13OperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: classes.o;
-text: .text%__1cFMutexElock6MpnGThread__v_;
 text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_sparc.o;
-text: .text%__1cJTypeTupleCeq6kMpknEType__i_;
 text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: callnode.o;
-text: .text%__1cHMemNodeMIdeal_common6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
 text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: relocInfo.o;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
 text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cObranchConPNodeGpinned6kM_i_: ad_sparc_misc.o;
 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%__1cFframeUis_interpreted_frame6kM_i_;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
 text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: cfgnode.o;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: machnode.o;
-text: .text%__1cENodeGis_Con6kM_I_: subnode.o;
 text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cETypeFempty6kM_i_;
-text: .text%__1cENodeHget_int6kM_i_;
-text: .text%__1cIAddPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMPhaseIterGVNbGregister_new_node_with_optimizer6MpnENode__2_;
 text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
 text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: connode.o;
 text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cJloadPNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeNrematerialize6kM_i_: classes.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: symbolKlass.o;
-text: .text%__1cNSafePointNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cFArenaEgrow6ML_pv_;
 text: .text%__1cJloadBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeGpinned6kM_i_: ad_sparc_misc.o;
 text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
 text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceKlass.o;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cMMachCallNodeLis_MachCall6M_p0_: ad_sparc_misc.o;
 text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
 text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: multnode.o;
 text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
 text: .text%__1cNbranchConNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_CFG6kM_i_: memnode.o;
 text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cQaddP_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cObranchConPNodeIpipeline6kM_pknIPipeline__;
@@ -616,129 +350,79 @@
 text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cSaddI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cOno_flip_branch6FpnFBlock__i_: block.o;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_: symbolKlass.o;
-text: .text%__1cPSignatureStreamHis_done6kM_i_;
 text: .text%__1cKStorePNodeGOpcode6kM_i_;
 text: .text%__1cJiRegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cHMemNodeGis_Mem6M_p0_: classes.o;
 text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
 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%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
 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%__1cQCompressedStream2t6MpCi_v_;
 text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cGIfNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cNflagsRegUOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cOPSPromotionLABFflush6M_v_;
 text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cSPSPromotionManagerMdrain_stacks6M_v_;
-text: .text%__1cENodeHis_Goto6kM_I_: classes.o;
-text: .text%__1cJdo_method6FpnNmethodOopDesc__v_: recompilationMonitor.o;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
 text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
 text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
 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%__1cNSafePointNodebBneeds_polling_address_input6F_i_;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
-text: .text%__1cSCallStaticJavaNodeRis_CallStaticJava6kM_pk0_: callnode.o;
-text: .text%__1cMMergeMemNodeLis_MergeMem6M_p0_: memnode.o;
 text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
 text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
 text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
 text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
 text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: lcm.o;
 text: .text%__1cKcmpOpPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cNflagsRegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKTypeRawPtrJsingleton6kM_i_;
 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%__1cNmethodOopDescLis_accessor6kM_i_;
 text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cZPhaseConservativeCoalesceJcopy_copy6MpnENode_2pnFBlock_I_i_;
 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%__1cUParallelScavengeHeapVunsafe_max_tlab_alloc6kM_L_;
-text: .text%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
 text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_L_pnIHeapWord__;
-text: .text%__1cNmethodOopDescMintrinsic_id6kM_n0ALIntrinsicId__;
-text: .text%__1cQciByteCodeStreamMreset_to_bci6Mi_v_;
 text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: classes.o;
-text: .text%__1cMPhaseIterGVNFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cFframeZsender_with_pc_adjustment6kMpnLRegisterMap_pnICodeBlob_i_0_;
 text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cLis_cond_add6FpnIPhaseGVN_pnHPhiNode__pnENode__;
 text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6ML_pnIHeapWord__;
 text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2L_v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
 text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
 text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
 text: .text%__1cKCodeBuffer2t6MpCi_v_;
 text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cFframeGsender6kMpnLRegisterMap_pnICodeBlob__0_;
 text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cMflagsRegOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cILoadNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKRegionNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cRNativeInstructionQset_data64_sethi6FpCl_v_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: nativeInst_sparc.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: nativeInst_sparc.o;
 text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
 text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cFBlockOschedule_local6MrnHMatcher_rnLBlock_Array_pirnJVectorSet_rnNGrowableArray4CI___i_;
 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%__1cOcompU_iRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
 text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cRMachSafePointNodeQis_MachSafePoint6M_p0_: ad_sparc_misc.o;
 text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cLPhaseValuesGintcon6Mi_pnIConINode__;
 text: .text%__1cOloadConI13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGpinned6kM_i_: subnode.o;
-text: .text%__1cFMutexbClock_without_safepoint_check6M_v_;
 text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
 text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
 text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cENodeGpinned6kM_i_: memnode.o;
 text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
 text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cENodeHdel_out6Mp0_v_: parse2.o;
 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;
@@ -746,93 +430,57 @@
 text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
 text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
 text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: subnode.o;
-text: .text%__1cQaddP_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNExceptionMark2T6M_v_;
 text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cHTypeAryRary_must_be_exact6kM_i_;
 text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cILoadNodeHis_Load6M_p0_: classes.o;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: split_if.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%__1cYCallStaticJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNbranchConNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIMachOperNconstant_disp6kM_i_;
 text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: methodDataOop.o;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: methodDataOop.o;
 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%__1cIBoolNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cJStoreNodeIis_Store6kM_pk0_: classes.o;
-text: .text%__1cUcompI_iReg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
 text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
 text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cKbranchNodeHis_Goto6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFChunkJnext_chop6M_v_;
 text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cGOopMapHset_oop6MnHOptoRegEName_ii_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%__1cNPhaseRegAllocGis_oop6kMpknENode__i_;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: parse1.o;
 text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: cfgnode.o;
 text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: classes.o;
-text: .text%__1cHSubNodeGis_Sub6M_p0_: classes.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: codeBlob.o;
-text: .text%__1cNbranchConNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_sparc.o;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_sparc.o;
 text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc.o;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc.o;
 text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc.o;
-text: .text%__1cFciEnvXget_klass_by_index_impl6MpnPciInstanceKlass_iri_pnHciKlass__;
 text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: subnode.o;
 text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cNbranchConNodeGpinned6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: memnode.o;
 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%__1cITypeLongEmake6Fx_pk0_;
 text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cJloadPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKSchedulingPComputeUseCount6MpknFBlock__v_;
 text: .text%__1cKSchedulingbFComputeRegisterAntidependencies6MpnFBlock__v_;
 text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLOptoRuntimeFnew_C6FpnMklassOopDesc_pnKJavaThread__v_;
-text: .text%__1cOis_range_check6FpnENode_r12ri_i_: ifnode.o;
 text: .text%__1cENodeKreplace_by6Mp0_v_;
 text: .text%__1cHTypePtrHget_con6kM_l_;
 text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMgetTimeNanos6F_x_: os_solaris.o;
 text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_sparc.o;
 text: .text%Unsafe_CompareAndSwapLong;
 text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cIJumpDataKcell_count6M_i_: methodDataOop.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%__1cVcompP_iRegP_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSaddP_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cHTypePtrEhash6kM_i_;
 text: .text%__1cFBlockLfind_remove6MpknENode__v_;
@@ -840,56 +488,29 @@
 text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
 text: .text%__1cKTypeRawPtrEhash6kM_i_;
 text: .text%__1cPcompP_iRegPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcompU_iRegNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: multnode.o;
-text: .text%__1cRMachSpillCopyNodeOimplementation6kMpnKCodeBuffer_pnNPhaseRegAlloc_i_I_;
 text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: callnode.o;
 text: .text%JVM_GetCPMethodSignatureUTF;
 text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cHMatcherQis_save_on_entry6Mi_i_;
-text: .text%__1cOcompU_iRegNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIMachOperIconstant6kM_l_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: multnode.o;
-text: .text%__1cJloadINodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cPVirtualCallDataPadjust_pointers6M_v_;
-text: .text%__1cPVirtualCallDataPfollow_contents6M_v_;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cKstorePNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMURShiftINodeGOpcode6kM_i_;
 text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: machnode.o;
 text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMMergeMemNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cHTypeIntFempty6kM_i_;
 text: .text%__1cSaddI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
 text: .text%__1cLMachNopNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIJVMStateNclone_shallow6kM_p0_;
-text: .text%__1cITypeLongEmake6Fxx_pk0_;
 text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
 text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
 text: .text%__1cVCompressedWriteStream2t6Mi_v_;
 text: .text%__1cJiRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: classes.o;
 text: .text%__1cQaddI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHnmethodJis_zombie6kM_i_: nmethod.o;
 text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: subnode.o;
 text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cVcompP_iRegP_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: cfgnode.o;
-text: .text%__1cNRelocIteratorKinitialize6MlpnICodeBlob_pC3_v_;
 text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cKCodeBufferRtransform_address6kMrk0pC_3_;
-text: .text%__1cMMergeMemNodeQclone_all_memory6FpnENode__p0_;
 text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cKTypeOopPtrWmake_from_klass_common6FpnHciKlass_ii_pk0_;
 text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
 text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
 text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
@@ -897,27 +518,12 @@
 text: .text%__1cFBlockJfind_node6kMpknENode__I_;
 text: .text%__1cRPSOldPromotionLABFflush6M_v_;
 text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJStartNodeGpinned6kM_i_: classes.o;
-text: .text%__1cLPhaseValuesFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cNPhaseRegAllocKreg2offset6kMnHOptoRegEName__i_;
 text: .text%__1cKbranchNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRegisterMapLpd_location6kMnFVMRegEName__pC_;
-text: .text%__1cICallNodeLis_CallLeaf6kM_pknMCallLeafNode__: callnode.o;
 text: .text%__1cOcompU_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: connode.o;
 text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRlock_ptr_RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: subnode.o;
 text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cNCatchProjNodeMis_CatchProj6kM_pk0_: cfgnode.o;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_: spaceCounters.o;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cNflagsRegUOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLRegisterMapFclear6Mpl_v_;
 text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: multnode.o;
 text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
 text: .text%__1cIciObjectJset_ident6MI_v_;
 text: .text%__1cGBitMapOset_difference6M0_v_;
@@ -927,83 +533,50 @@
 text: .text%__1cLstoreI0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cObranchConUNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cSaddI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: multnode.o;
 text: .text%__1cENodeHget_ptr6kM_l_;
 text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
 text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cQciByteCodeStreamFEOBCs6M_nJBytecodesECode__;
 text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
 text: .text%__1cQaddP_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
 text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBuffer.o;
-text: .text%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
 text: .text%__1cRshlL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cLPhaseValuesHlongcon6Mx_pnIConLNode__;
 text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQaddI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.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%__1cENodeIis_Catch6kM_pknJCatchNode__: classes.o;
-text: .text%__1cOcompI_iRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cPBoundRelocationMupdate_addrs6MpCrknKCodeBuffer_4_1_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: codeBuffer.o;
 text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cObranchConUNodeGpinned6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSaddI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConUNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
 text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
 text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cMPhaseChaitinJsplit_USE6MpnENode_pnFBlock_2IIiinNGrowableArray4CI__i_I_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: gcm.o;
 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%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cRMachNullCheckNodeQis_MachNullCheck6M_p0_: machnode.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Ml_v_: relocInfo.o;
-text: .text%__1cHnmethodKis_nmethod6kM_i_: nmethod.o;
 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%__1cKRegionNodeGis_CFG6kM_i_: loopnode.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%__1cKNode_Array2t6MpnFArena__v_: postaloc.o;
 text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
 text: .text%__1cXmembar_release_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cITypeLongFempty6kM_i_;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: machnode.o;
-text: .text%__1cIPhaseCCPFwiden6kMpknEType_3_3_: phaseX.o;
 text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
 text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciByteCodeStream__v_;
-text: .text%__1cOCallRelocationWfix_relocation_at_move6Ml_v_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCl_v_;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
 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%__1cKCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
 text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
 text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
 text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
@@ -1013,42 +586,23 @@
 text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
 text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
 text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cPconvI2L_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
 text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cPcompP_iRegPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: ad_sparc_misc.o;
 text: .text%__1cENodeDcmp6kMrk0_I_;
 text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cJloadPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cPClassFileParserMparse_method6MnSconstantPoolHandle_ipnLAccessFlags_pnPtypeArrayHandle_55pnGThread__nMmethodHandle__;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
 text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cLklassVtableWneeds_new_vtable_entry6FpnNmethodOopDesc_pnMklassOopDesc_pnHoopDesc_pnNsymbolOopDesc_nLAccessFlags__i_;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
 text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cFciEnvSget_klass_by_index6MpnPciInstanceKlass_iri_pnHciKlass__;
 text: .text%__1cKo0RegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: connode.o;
 text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cRcmpFastUnlockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cNmethodOopDescPis_final_method6kM_i_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
 text: .text%__1cLRShiftINodeGOpcode6kM_i_;
 text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cLCastP2LNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserbDverify_legal_method_modifiers6MiinMsymbolHandle_pnGThread__v_;
 text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
 text: .text%__1cQaddI_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cRshrI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
@@ -1056,112 +610,59 @@
 text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
 text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cFMutexNowned_by_self6kM_i_;
 text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationLunpack_data6M_v_: codeBlob.o;
 text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cOMachReturnNodeNis_MachReturn6M_p0_: ad_sparc_misc.o;
-text: .text%__1cJCatchNodeIis_Catch6kM_pk0_: classes.o;
-text: .text%__1cIGraphKitEstop6M_v_;
 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%__1cPSignatureStream2t6MnMsymbolHandle_i_v_;
-text: .text%__1cITypeFuncCeq6kMpknEType__i_;
 text: .text%__1cSaddP_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: subnode.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: callnode.o;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
 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%__1cOPhaseIdealLoopIsplit_up6MpnENode_22_i_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: memnode.o;
-text: .text%__1cQaddI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeHis_Call6M_p0_: classes.o;
-text: .text%__1cOcompI_iRegNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_GetCPMethodClassNameUTF;
 text: .text%__1cENodeIadd_prec6Mp0_v_;
 text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: machnode.o;
-text: .text%__1cOcompI_iRegNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: memnode.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: memnode.o;
 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%__1cENodeIis_Store6kM_pknJStoreNode__: memnode.o;
 text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
 text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodPliveness_at_bci6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessPget_liveness_at6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessKBasicBlockPget_liveness_at6MpnIciMethod_i_nGBitMap__;
-text: .text%__1cHAddNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMTypeKlassPtrCeq6kMpknEType__i_;
-text: .text%__1cHTypePtrJsingleton6kM_i_;
-text: .text%__1cIGraphKitObasic_plus_adr6MpnENode_2l_2_;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
 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%__1cPClassFileParserWparse_linenumber_table6MIIpipnGThread__pC_;
-text: .text%__1cbFCompressedLineNumberWriteStream2t6Mi_v_;
 text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: memnode.o;
 text: .text%__1cNSafePointNodeGOpcode6kM_i_;
 text: .text%__1cIGraphKitLclean_stack6Mi_v_;
 text: .text%__1cNflagsRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKbranchNodeFclone6kM_pnENode__;
-text: .text%__1cMUniverseOperFclone6kM_pnIMachOper__;
-text: .text%__1cJlabelOperFclone6kM_pnIMachOper__;
-text: .text%__1cNSafePointNode2t6MIpnIJVMState__v_;
 text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: callnode.o;
 text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLConvI2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cFParseKensure_phi6Mii_pnHPhiNode__;
-text: .text%__1cNloadRangeNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
 text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
 text: .text%JVM_IsNaN;
 text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: subnode.o;
 text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: ciMethodData.o;
 text: .text%__1cQaddI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVcompP_iRegP_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: codeBlob.o;
 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%__1cFframeOis_first_frame6kM_i_;
 text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cPcompP_iRegPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserZskip_over_field_signature6MpciIpnGThread__1_;
 text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cIHaltNodeGpinned6kM_i_: classes.o;
-text: .text%__1cKBufferBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cJStoreNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cWShouldNotReachHereNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWShouldNotReachHereNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
 text: .text%__1cMflagsRegOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cKRelocationJpack_data6M_i_: ad_sparc.o;
 text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
 text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
 text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
@@ -1175,18 +676,12 @@
 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%__1cNloadKlassNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHOrINodeGOpcode6kM_i_;
 text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
 text: .text%__1cMMergeMemNode2t6MpnENode__v_;
 text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_iipnGThread__v_;
 text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cMPhaseIterGVNHmakecon6MpknEType__pnHConNode__;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_sparc.o;
 text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
 text: .text%__1cOCallRelocationFvalue6M_pC_: ad_sparc.o;
 text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
@@ -1195,91 +690,47 @@
 text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cJStartNodeGOpcode6kM_i_;
 text: .text%__1cOcompI_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
-text: .text%__1cUcompI_iReg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
 text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: cfgnode.o;
-text: .text%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
 text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfoRec.o;
 text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSaddI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_: ad_sparc.o;
-text: .text%__1cENodeQlatency_from_use6kMrnLBlock_Array_rnNGrowableArray4CI__pk0p0_i_;
-text: .text%__1cPcompP_iRegPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Copy6kM_I_: machnode.o;
 text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQPreserveJVMState2t6MpnIGraphKit_i_v_;
 text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: codeBlob.o;
 text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: subnode.o;
 text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
 text: .text%__1cQsubI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: node.o;
-text: .text%__1cRshlL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHis_Type6M_pnITypeNode__: classes.o;
 text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitRnull_check_common6MpnENode_nJBasicType_i_2_;
-text: .text%__1cMloadConLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRloadConP_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLstoreI0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIAddINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMloadConLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cVcompP_iRegP_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHTypeAryCeq6kMpknEType__i_;
 text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cKbranchNodeJis_Branch6kM_I_: ad_sparc_misc.o;
 text: .text%__1cETypeFwiden6kMpk0_2_: type.o;
-text: .text%__1cJloadINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMWarmCallInfoHis_cold6kM_i_;
 text: .text%__1cSaddI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
 text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cQciByteCodeStreamJget_field6Mri_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%__1cOoop_RelocationJpack_data6M_i_;
-text: .text%__1cKstoreINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowNmake_range_at6Mi_pn0AFRange__;
 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%__1cILoadNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cICodeBlobTfix_oop_relocations6M_v_;
 text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHCompileKTracePhase2t6MpkcpnMelapsedTimer_i_v_;
 text: .text%JVM_GetCPFieldClassNameUTF;
 text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: callnode.o;
 text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: classes.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: subnode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: subnode.o;
-text: .text%__1cQsubI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: graphKit.o;
 text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cKCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
 text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
 text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cTCreateExceptionNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUcompI_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cITypeLongFxdual6kM_pknEType__;
 text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cGBitMapVset_union_with_result6M0_i_;
 text: .text%__1cQaddP_reg_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: frame.o;
 text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
 text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
 text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
@@ -1288,35 +739,24 @@
 text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
 text: .text%__1cJLoadSNodeGOpcode6kM_i_;
 text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: subnode.o;
 text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cPcompP_iRegPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHis_Goto6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLPhaseValuesHmakecon6MpknEType__pnHConNode__;
 text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cObranchConPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMstringStreamFwrite6MpkcL_v_;
-text: .text%__1cOkill_dead_code6FpnENode_pnMPhaseIterGVN__i_: node.o;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__: ad_sparc_misc.o;
 text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
 text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cRshlI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
 text: .text%__1cKTypeOopPtrHget_con6kM_l_;
-text: .text%__1cPconvI2L_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: connode.o;
 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%__1cRInlineCacheBufferIcontains6FpC_i_;
 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%__1cQciByteCodeStreamKget_method6Mri_pnIciMethod__;
 text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
 text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
@@ -1326,77 +766,44 @@
 text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
 text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
 text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cHnmethodIis_alive6kM_i_: nmethod.o;
 text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciMethodbCinterpreter_invocation_count6M_i_;
 text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cKciTypeFlowFRangeNget_block_for6Mpn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
 text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_ipnGThread__v_;
 text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXvirtual_call_RelocationIparse_ic6FrpnICodeBlob_rpC5rppnHoopDesc_pi_nNRelocIterator__;
 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%__1cRcmpFastUnlockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStartNodeIis_Start6M_p0_: callnode.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: node.o;
-text: .text%__1cUGenericGrowableArrayMraw_contains6kMpknEGrET__i_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: callnode.o;
-text: .text%__1cRcmpFastUnlockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMatcherScalling_convention6FpnLRegPair_Ii_v_;
 text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIJVMStateKclone_deep6kM_p0_;
 text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIGraphKitTadd_safepoint_edges6MpnNSafePointNode_i_v_;
 text: .text%__1cIJVMStateLdebug_depth6kM_I_;
 text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: systemDictionary.o;
 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%__1cFframeQoops_do_internal6MpnKOopClosure_pnLRegisterMap_i_v_;
-text: .text%__1cRshrI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPsp_ptr_RegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLstoreB0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachCallNodeHis_Call6M_pnICallNode__: ad_sparc_misc.o;
-text: .text%__1cICmpPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
 text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cRRawBytecodeStreamMset_interval6Mii_v_;
 text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cMPrefetchNodeGOpcode6kM_i_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: thread.o;
-text: .text%__1cNloadRangeNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cRloadConP_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPcompP_iRegPNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_: nmethod.o;
-text: .text%__1cKciTypeFlowLStateVectorEmeet6Mpk1_i_;
 text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cRloadConP_pollNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cENodeHis_Load6M_pnILoadNode__: cfgnode.o;
 text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMii_pnGOopMap__;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpCi_pnGOopMap__;
-text: .text%__1cFciEnvIis_in_vm6F_i_;
 text: .text%__1cFParseMdo_one_block6M_v_;
 text: .text%__1cILoadNodeHsize_of6kM_I_;
 text: .text%__1cQsubI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
@@ -1404,130 +811,72 @@
 text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
 text: .text%__1cQaddP_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMVirtualSpaceOcommitted_size6kM_L_;
-text: .text%__1cKTypeOopPtrFempty6kM_i_;
-text: .text%__1cRMachSafePointNode2t6M_v_;
 text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cLOptoRuntimePnew_typeArray_C6FnJBasicType_ipnKJavaThread__v_;
-text: .text%__1cNbranchConNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
 text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cMindirectOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cICallNodeOis_CallRuntime6kM_pknPCallRuntimeNode__: callnode.o;
-text: .text%__1cLstoreI0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: cfgnode.o;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cXinsert_anti_dependences6FrpnFBlock_pnENode_rnLBlock_Array__i_: gcm.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: callnode.o;
 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%__1cHMatcherPc_frame_pointer6kM_nHOptoRegEName__;
 text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cMMachCallNode2t6M_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%__1cIciMethodRhas_compiled_code6M_i_;
 text: .text%__1cNflagsRegUOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cFKlassIsubklass6kM_p0_;
 text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: connode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: connode.o;
 text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
 text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
 text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cPemit_call_reloc6FrnKCodeBuffer_lnJrelocInfoJrelocType_iii_v_;
 text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodKlass.o;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: methodLiveness.o;
 text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cSaddI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
 text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MiipnGOopMap__v_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cQsubI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNprefetch2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%JVM_GetCPMethodNameUTF;
 text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
 text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cIGraphKitbLset_predefined_input_for_runtime_call6MpnNSafePointNode__v_;
-text: .text%__1cKReturnNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeHis_Goto6kM_I_: cfgnode.o;
 text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadCNodeGOpcode6kM_i_;
-text: .text%__1cHConNodeEmake6FpknEType__p0_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: ciTypeFlow.o;
 text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
 text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cRMachSafePointNodeLset_oop_map6MpnGOopMap__v_: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodePis_MachCallLeaf6M_pnQMachCallLeafNode__: ad_sparc_misc.o;
-text: .text%__1cNMachIdealNodePoper_input_base6kM_I_: machnode.o;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_ipnGThread__pnHoopDesc__;
 text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
 text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MiipnGOopMap__v_;
 text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
 text: .text%__1cPsp_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOMacroAssemblerZneeds_explicit_null_check6Fl_i_;
-text: .text%__1cRshlL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
 text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: callnode.o;
 text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cICmpINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
 text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
 text: .text%__1cHTypeIntFxdual6kM_pknEType__;
 text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cXjava_lang_ref_ReferenceNreferent_addr6FpnHoopDesc__p2_;
 text: .text%__1cRshrI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPorI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
 text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
 text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cRMachSafePointNodeSis_MachCallRuntime6M_pnTMachCallRuntimeNode__: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
 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%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: callnode.o;
-text: .text%__1cNSafePointNodeEhash6kM_I_: callnode.o;
-text: .text%__1cRMachSafePointNodeWis_MachCallInterpreter6M_pnXMachCallInterpreterNode__: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: frame.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%__1cHCompileZintrinsic_insertion_index6MpnIciMethod_i_i_;
 text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
 text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
 text: .text%__1cIPhaseIFGFUnion6MII_v_;
 text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cMCallJavaNodeLis_CallJava6kM_pk0_: callnode.o;
-text: .text%__1cQMachCallJavaNodePis_MachCallJava6M_p0_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopHdom_lca6kMpnENode_2_2_;
 text: .text%__1cRshlI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICallNodeScalling_convention6kMpnLRegPair_I_v_;
 text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cWMachCallStaticJavaNodeVis_MachCallStaticJava6M_p0_: ad_sparc_misc.o;
 text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: connode.o;
-text: .text%__1cPClassFileParserbCverify_legal_field_modifiers6MiipnGThread__v_;
-text: .text%__1cPClassFileParserWparse_field_attributes6MnSconstantPoolHandle_iHpHpi2pnPtypeArrayHandle_pnGThread__v_;
 text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
@@ -1535,18 +884,13 @@
 text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
 text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
 text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cKciTypeFlowFBlockKsuccessors6MpnQciByteCodeStream_pn0ALStateVector_pn0AGJsrSet__pnNGrowableArray4Cp1___;
 text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
 text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: classes.o;
-text: .text%__1cSCallLeafDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJVectorSetFClear6M_v_;
 text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cKstorePNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cKciTypeFlowFBlock2t6Mp0pn0AFRange_pn0AGJsrSet__v_;
 text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
 text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
 text: .text%__1cMindIndexOperJnum_edges6kM_I_: ad_sparc.o;
@@ -1554,222 +898,125 @@
 text: .text%__1cSaddP_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: memnode.o;
-text: .text%__1cLstoreB0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMelapsedTimerFstart6M_v_;
 text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciType.o;
-text: .text%__1cQmark_inner_loops6FpnIPhaseCFG_pnFBlock__v_: block.o;
 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%__1cMLinkResolverbNlinktime_resolve_virtual_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
 text: .text%JVM_GetCPFieldSignatureUTF;
 text: .text%__1cYcompareAndSwapL_boolNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cPconvI2L_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cHnmethodZsize_of_exception_handler6F_i_;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
 text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
 text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cHnmethodKcopy_pc_at6MipnGPcDesc__v_;
 text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cLPhaseValuesHzerocon6MnJBasicType__pnHConNode__;
-text: .text%__1cRshlI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cIGraphKit2t6M_v_;
 text: .text%__1cYcompareAndSwapL_boolNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: loopnode.o;
 text: .text%jni_DeleteLocalRef: jni.o;
 text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cOMethodLivenessNmake_block_at6Mipn0AKBasicBlock__2_;
 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%__1cICallNodeSis_CallDynamicJava6kM_pknTCallDynamicJavaNode__: callnode.o;
-text: .text%__1cMCreateExNodeGpinned6kM_i_: classes.o;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
 text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cPCountedLoopNodeOis_CountedLoop6M_p0_: classes.o;
-text: .text%__1cObranchConUNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlassKlass.o;
 text: .text%__1cRshlL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cFParsePdo_field_access6Mii_v_;
-text: .text%__1cILoadNodeEmake6FpnENode_22pknHTypePtr_pknEType_nJBasicType__p0_;
 text: .text%__1cOloadConI13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_ref_ReferencePdiscovered_addr6FpnHoopDesc__p2_;
 text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cSaddP_reg_imm13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cRshrI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: callnode.o;
 text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cIGraphKitNuncommon_trap6MipnHciKlass_pkci_v_;
 text: .text%__1cIregDOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cTmembar_CPUOrderNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadConP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
 text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
 text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: ad_sparc.o;
 text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: machnode.o;
 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%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: ad_sparc.o;
 text: .text%__1cQaddI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cHMonitorKnotify_all6M_i_;
-text: .text%__1cNloadKlassNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIciSymbolEmake6Fpkc_p0_;
 text: .text%__1cRshlI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCompareAndSwapNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cQmulL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: ad_sparc_misc.o;
 text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cJFieldTypeYis_valid_array_signature6FpnNsymbolOopDesc__i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: callnode.o;
-text: .text%__1cNloadConP0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: ad_sparc.o;
 text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
 text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cIGraphKitJmake_load6MpnENode_2pknEType_nJBasicType_i_2_;
-text: .text%__1cPorI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cNbranchConNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cNmethodOopDescWwas_executed_more_than6kMi_i_;
 text: .text%__1cOcompI_iRegNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: connode.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%__1cXjava_lang_ref_ReferenceJnext_addr6FpnHoopDesc__p2_;
 text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: nmethod.o;
 text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: methodDataOop.o;
-text: .text%__1cYinlineCallClearArrayNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFChunk2n6FLL_pv_;
 text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cQciByteCodeStreamZget_declared_field_holder6M_pnPciInstanceKlass__;
 text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
-text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciByteCodeStream_pn0ALStateVector__v_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__v_;
 text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
 text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
 text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
 text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: memnode.o;
 text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
 text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
 text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
 text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cLstoreI0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrP_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cTCreateExceptionNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cNloadConP0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cHTypeIntEmake6Fii_pk0_;
-text: .text%__1cHCompilebAallow_range_check_smearing6kM_i_;
 text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: ciMethodData.o;
-text: .text%__1cMWarmCallInfoGis_hot6kM_i_;
 text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
 text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
 text: .text%__1cRshlI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreCNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: memnode.o;
 text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseKdo_get_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
 text: .text%__1cKarrayKlassLobject_size6kMi_i_;
 text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
 text: .text%__1cKMemBarNodeEhash6kM_I_;
 text: .text%__1cPcompP_iRegPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: loopnode.o;
-text: .text%__1cKRegionNodeGpinned6kM_i_: loopnode.o;
 text: .text%__1cLstoreB0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
 text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
 text: .text%__1cRsarI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
 text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cPorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlowLStateVectorJdo_invoke6MpnQciByteCodeStream_i_v_;
 text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKRelocationJpack_data6M_i_: relocInfo.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: memnode.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: cfgnode.o;
-text: .text%__1cNCatchProjNode2t6MpnENode_Ii_v_;
 text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
 text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: cfgnode.o;
-text: .text%__1cLPCTableNodeKis_PCTable6kM_pk0_: classes.o;
-text: .text%__1cNloadRangeNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cHCompileOcall_generator6MpnIciMethod_ipnIJVMState_if_pnNCallGenerator__;
-text: .text%__1cNciCallProfileRapply_prof_factor6Mf_v_;
-text: .text%__1cHCompileOfind_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
 text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinTsplit_Rematerialize6MpnENode_pnFBlock_IrInNGrowableArray4CI__ipIp2i_2_;
 text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
 text: .text%__1cFParseHdo_call6M_v_;
 text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cQciByteCodeStreambAget_declared_method_holder6M_pnHciKlass__;
 text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
 text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlass.o;
-text: .text%__1cQmulL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cTmembar_CPUOrderNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
 text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLPCTableNodeHsize_of6kM_I_: classes.o;
 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%__1cPcmpFastLockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
 text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cPcmpFastLockNodeHtwo_adr6kM_I_: ad_sparc_misc.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;
@@ -1778,64 +1025,31 @@
 text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
 text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
 text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cSaddP_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: machnode.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: machnode.o;
 text: .text%__1cRsarI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
-text: .text%__1cIciMethodLscale_count6Mi_i_;
 text: .text%__1cIBoolNodeHsize_of6kM_I_;
 text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cSsafePoint_pollNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
 text: .text%__1cICodeHeapSallocated_capacity6kM_L_;
 text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cCosOis_interrupted6FpnGThread_i_i_;
-text: .text%__1cJloadCNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cLLShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cKBranchDataNis_BranchData6M_i_: ciMethodData.o;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_: methodKlass.o;
 text: .text%__1cKimmL13OperJnum_edges6kM_I_: ad_sparc_clone.o;
 text: .text%__1cOstackSlotLOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIJumpDataLis_JumpData6M_i_: ciMethodData.o;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: loopnode.o;
-text: .text%__1cSstkL_to_regD_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTcan_branch_register6FpnENode_1_i_;
 text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
 text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cSstkL_to_regD_2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cIciMethodbAinterpreter_throwout_count6kM_i_;
-text: .text%__1cOCompilerOracleNshould_inline6FnMmethodHandle__i_;
-text: .text%__1cIciMethodOshould_exclude6M_i_;
-text: .text%__1cIciMethodNshould_inline6M_i_;
-text: .text%__1cKInlineTreeWfind_subtree_from_root6Fp0pnIJVMState_pnIciMethod_i_1_;
 text: .text%__1cRshrI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_release_lockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cICHeapObj2n6FL_pv_;
 text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
-text: .text%__1cFTypeDCeq6kMpknEType__i_;
-text: .text%__1cIciMethodWwas_executed_more_than6Mi_i_;
 text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitOtoo_many_traps6MnODeoptimizationLDeoptReason__i_;
 text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitTtoo_many_recompiles6MnODeoptimizationLDeoptReason__i_;
 text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: connode.o;
-text: .text%__1cCosFsleep6FpnGThread_xi_i_;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
 text: .text%__1cRInvocationCounterJset_carry6M_v_;
 text: .text%__1cKimmL13OperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cFTypeDEhash6kM_i_;
@@ -1846,168 +1060,98 @@
 text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
 text: .text%__1cRInterpreterOopMap2t6M_v_;
 text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cFframeToops_interpreted_do6MpnKOopClosure_pknLRegisterMap_i_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%__1cFKlassMoop_is_klass6kM_i_: methodKlass.o;
 text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cJloadSNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNNativeFarCallKis_call_at6FpC_i_;
 text: .text%__1cHoopDescSslow_identity_hash6M_l_;
 text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__l_;
-text: .text%__1cYcompareAndSwapL_boolNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cObranchConUNodeJis_Branch6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUcompU_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cKBufferBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
 text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cRis_error_reported6F_i_;
 text: .text%__1cMPeriodicTaskOreal_time_tick6FL_v_;
 text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_: thread.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%__1cNmethodOopDescbHhas_unloaded_classes_in_signature6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cWCallLeafNoFPDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cIGraphKitNcast_not_null6MpnENode__2_;
-text: .text%__1cJStartNodeIis_Start6M_p0_: classes.o;
 text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_n0AJIcoResult__;
 text: .text%__1cQsubI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
 text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQandL_reg_regNodeJnum_opnds6kM_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%__1cPcheckCastPPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
 text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
 text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cFParseRensure_memory_phi6Mii_pnHPhiNode__;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
 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%__1cENodeGis_Con6kM_I_: multnode.o;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_: thread.o;
 text: .text%JVM_RawMonitorExit;
-text: .text%__1cFMutexMjvm_raw_lock6M_v_;
 text: .text%JVM_RawMonitorEnter;
 text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cFMutexOjvm_raw_unlock6M_v_;
 text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserUskip_over_field_name6MpciI_1_;
 text: .text%__1cRbranchLoopEndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cSmembar_acquireNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYinlineCallClearArrayNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescWload_signature_classes6FnMmethodHandle_pnGThread__i_;
 text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
 text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
 text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cNCompileBrokerTcompile_method_base6FnMmethodHandle_ii1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cWstatic_stub_RelocationJpack_data6M_i_;
 text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cNprefetch2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
 text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: cfgnode.o;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: classes.o;
 text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cKg1RegIOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIimmLOperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopnode.o;
 text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJCodeCacheIcontains6Fpv_i_;
-text: .text%__1cQmulL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: assembler_sparc.o;
 text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cFParseUprofile_taken_branch6Mi_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%__1cJloadBNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cMloadConFNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
 text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cNCallGeneratorKis_virtual6kM_i_: callGenerator.o;
 text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
 text: .text%__1cLPCTableNodeEhash6kM_I_;
 text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cJOopMapSetGall_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure_pFppnHoopDesc_9E_v9B9B_v_;
-text: .text%__1cJOopMapSetHoops_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure__v_;
 text: .text%__1cOloadConI13NodeHsize_of6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQsubL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cJloadLNodeZcheck_for_anti_dependence6kM_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%__1cLOptoRuntimebCcomplete_monitor_unlocking_C6FpnHoopDesc_pnJBasicLock__v_;
-text: .text%__1cQandI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_;
 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%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
 text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYinlineCallClearArrayNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cKTypeAryPtrFempty6kM_i_;
-text: .text%__1cHTypeAryFempty6kM_i_;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: psTasks.o;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
 text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
 text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKTypeRawPtrCeq6kMpknEType__i_;
-text: .text%__1cRshlI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
 text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cJloadCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
 text: .text%__1cSaddL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cKInlineTreePshouldNotInline6kMpnIciMethod_pnMWarmCallInfo__pkc_;
 text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
 text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cQxorI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__i_;
 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%__1cIciMethodbHhas_unloaded_classes_in_signature6M_i_;
-text: .text%__1cFframeNis_glue_frame6kM_i_;
 text: .text%__1cObranchConPNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cMtlsLoadPNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
@@ -2018,20 +1162,12 @@
 text: .text%__1cObranchConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIimmPOperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cISubINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLOptoRuntimeOnew_objArray_C6FpnMklassOopDesc_ipnKJavaThread__v_;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
 text: .text%__1cGciType2t6MnLKlassHandle__v_;
 text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%__1cIGraphKitPstore_to_memory6MpnENode_22nJBasicType_i_2_;
-text: .text%__1cJStoreNodeEmake6FpnENode_22pknHTypePtr_2nJBasicType__p0_;
 text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
 text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRshrP_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseRoptimize_inlining6MpnIciMethod_ipnPciInstanceKlass_24irnKInlineTreeLInlineStyle_r2_v_;
 text: .text%__1cJcmpOpOperFccode6kM_i_: ad_sparc_clone.o;
 text: .text%__1cQmulL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadKlassNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
 text: .text%__1cITypeFuncFxdual6kM_pknEType__;
 text: .text%__1cICHeapObj2k6Fpv_v_;
@@ -2043,288 +1179,163 @@
 text: .text%__1cFArena2t6M_v_;
 text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
 text: .text%__1cPorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: classes.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%__1cENodeRlatency_from_uses6kMrnLBlock_Array_rnNGrowableArray4CI___i_;
 text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
 text: .text%__1cQxorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHMatcherPstack_alignment6F_I_;
 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%__1cETypeCeq6kMpk0_i_;
 text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowGJsrSetSis_compatible_with6Mp1_i_;
 text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cWstatic_stub_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
 text: .text%__1cRloadConP_pollNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cNimmP_pollOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cMMonitorValue2t6MpnKScopeValue_nILocation__v_;
 text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__nHOptoRegEName__;
-text: .text%__1cLBoxLockNodeKis_BoxLock6kM_pk0_: classes.o;
 text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cHnmethodbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_;
 text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
 text: .text%__1cIregFOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cOMacroAssemblerEjump6MrnHAddress_ipkci_v_;
-text: .text%__1cOMacroAssemblerFjumpl6MrnHAddress_pnMRegisterImpl_ipkci_v_;
 text: .text%__1cIMulINodeGOpcode6kM_i_;
 text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cHciKlassNis_subtype_of6Mp0_i_;
 text: .text%__1cRcompL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRshrI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodLis_accessor6kM_i_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlass.o;
 text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cFParseRbranch_prediction6Mrf_f_;
 text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
 text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: callnode.o;
 text: .text%__1cMloadConINodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
 text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cKstoreINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__: ad_sparc.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: cfgnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: cfgnode.o;
 text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: loopnode.o;
 text: .text%__1cRshrP_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSCallLeafDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cLCastP2LNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
 text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
 text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
 text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cIciMethodPcan_be_compiled6M_i_;
 text: .text%__1cFParseIdo_exits6M_v_;
 text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cIciMethodVhas_balanced_monitors6M_i_;
 text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
 text: .text%__1cFArenaEused6kM_L_;
 text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: callnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: callnode.o;
 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%__1cFframeTis_first_java_frame6kM_i_;
-text: .text%__1cFframeNis_java_frame6kM_i_;
-text: .text%__1cFBlockTimplicit_null_check6MrnLBlock_Array_rnNGrowableArray4CI__pnENode_6_v_;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
-text: .text%__1cKstoreLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNbranchConNodeJlabel_set6MrnFLabel_I_v_;
 text: .text%__1cNbranchConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSmembar_releaseNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVLoaderConstraintTableJadd_entry6MnMsymbolHandle_pnMklassOopDesc_nGHandle_34pnGThread__i_;
-text: .text%__1cbACallCompiledJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHdel_out6Mp0_v_: library_call.o;
-text: .text%__1cJiRegIOperFclone6kM_pnIMachOper__;
 text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
 text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodDataKlass.o;
 text: .text%__1cQandI_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
 text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHnmethodPis_locked_by_vm6kM_i_: nmethod.o;
-text: .text%__1cQLibraryIntrinsicKis_virtual6kM_i_: library_call.o;
 text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
 text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
 text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
 text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cXmembar_release_lockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__v_;
-text: .text%__1cJStartNodeOis_block_start6kM_i_: callnode.o;
 text: .text%__1cLOpaque1NodeEhash6kM_I_;
 text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cFTypeFCeq6kMpknEType__i_;
-text: .text%__1cbACallCompiledJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
 text: .text%__1cHCompileFstart6kM_pnJStartNode__;
 text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cMCallLeafNodeLis_CallLeaf6kM_pk0_: classes.o;
 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%__1cJStartNodeOis_block_start6kM_i_: classes.o;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
-text: .text%__1cQxorI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cFParseYprofile_not_taken_branch6M_v_;
-text: .text%__1cHnmethodLis_unloaded6kM_i_: nmethod.o;
 text: .text%__1cLRegisterMapIpd_clear6M_v_;
 text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cJloadCNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUParallelScavengeHeapNtlab_capacity6kM_L_;
 text: .text%__1cRbranchLoopEndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMciMethodData2t6M_v_;
 text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMPrefetchNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIregFOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cGBitMapIset_from6M0_v_;
 text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: callGenerator.o;
 text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cFParseFdo_if6MpnENode_2nIBoolTestEmask_2_v_;
 text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlowFBlockPclone_loop_head6Mp0ip1pn0AGJsrSet__3_;
 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%__1cLPCTableNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
 text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cIGraphKitRmake_slow_call_ex6MpnENode_pnPciInstanceKlass__v_;
 text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cJloadLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
 text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHMulNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cYinlineCallClearArrayNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
 text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSandI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRshrP_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbACallCompiledJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: callnode.o;
 text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cPconvL2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cFBlockUhoist_LCA_above_defs6Mp01IrnLBlock_Array__1_;
 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%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
-text: .text%__1cMnegF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cVExceptionHandlerTableMadd_subtable6MipnNGrowableArray4Cl__2_v_;
 text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRshrL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
 text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferFclear6M_v_;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
 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%__1cIMulLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cQaddL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHMatcherQis_spillable_arg6Fi_i_;
 text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRsarI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cNprefetch2NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGThreadQunboost_priority6Fp0_v_;
-text: .text%__1cSstkL_to_regD_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cICodeHeapIallocate6ML_pv_;
 text: .text%__1cICodeHeapPsearch_freelist6ML_pnJFreeBlock__;
-text: .text%__1cFParseSmerge_memory_edges6MpnMMergeMemNode_ii_v_;
-text: .text%__1cMPrefetchNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cQput_after_lookup6FnMsymbolHandle_0ppnLNameSigHash__i_;
 text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: codeBlob.o;
 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%__1cKRelocationJpack_data6M_i_: codeBlob.o;
-text: .text%__1cSstkL_to_regD_2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cYcompareAndSwapL_boolNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNflagsRegLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cJloadCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cRInterpretedRFrameOis_interpreted6kM_i_: rframe.o;
-text: .text%__1cGRFrameLis_compiled6kM_i_: rframe.o;
-text: .text%__1cSstkL_to_regD_2NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKTypeRawPtrHget_con6kM_l_;
-text: .text%__1cKRegionNodeEhash6kM_I_: loopnode.o;
-text: .text%__1cSstkL_to_regD_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Ml_v_: codeBlob.o;
-text: .text%__1cSstkL_to_regD_2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cJloadCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSstkL_to_regD_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: loopnode.o;
 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%__1cQaddL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cLstoreB0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassTget_field_by_offset6Mii_pnHciField__;
-text: .text%__1cNinstanceKlassWfind_field_from_offset6kMiipnPfieldDescriptor__i_;
 text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: classes.o;
 text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
 text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cKo0RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cHnmethodKpc_desc_at6MpCi_pnGPcDesc__;
-text: .text%__1cHMonitorEwait6Mil_i_;
 text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cUcompU_iReg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cPorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadSNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIMinINodeGOpcode6kM_i_;
 text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
 text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cKjavaVFrameNis_java_frame6kM_i_: vframe.o;
 text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
 text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
 text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cSvframeStreamCommonbHskip_method_invoke_and_aux_frames6M_v_;
 text: .text%__1cNNativeFarCallPset_destination6MpC_v_;
-text: .text%__1cIGraphKitXset_edges_for_java_call6MpnMCallJavaNode_i_v_;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: classes.o;
 text: .text%__1cObranchConUNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
 text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cZCallInterpreterDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
 text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_sparc_clone.o;
 text: .text%__1cObranchConUNodeJlabel_set6MrnFLabel_I_v_;
@@ -2333,125 +1344,66 @@
 text: .text%__1cLmethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
 text: .text%__1cRbranchLoopEndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitMarray_length6MpnENode__2_;
 text: .text%__1cLBlock_ArrayEgrow6MI_v_;
 text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cSaddL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: methodDataOop.o;
 text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cMjniIdSupportNto_method_oop6FpnK_jmethodID__pnNmethodOopDesc__;
 text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
 text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_: ciObjArrayKlass.o;
 text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
 text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%__1cOMacroAssemblerUallocate_oop_address6MpnI_jobject_pnMRegisterImpl__nHAddress__;
 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%__1cQciByteCodeStreamMget_constant6M_nKciConstant__;
 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%__1cKMemBarNode2t6M_v_;
 text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cSmembar_acquireNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmPOperPconstant_is_oop6kM_i_: ad_sparc_clone.o;
 text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cSaddI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrP_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferMstart_a_stub6M_v_;
 text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cKCodeBufferKend_a_stub6M_v_;
 text: .text%__1cObranchConPNodeGnegate6M_v_: ad_sparc_misc.o;
 text: .text%__1cKcmpOpPOperGnegate6M_v_: ad_sparc_clone.o;
 text: .text%__1cLstoreP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJiRegPOperFclone6kM_pnIMachOper__;
-text: .text%__1cKMemBarNodeJis_MemBar6kM_pk0_: classes.o;
 text: .text%__1cQandL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitOinsert_mem_bar6MpnKMemBarNode__v_;
-text: .text%__1cRcompL_reg_regNodePoper_input_base6kM_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%__1cENodeIis_Catch6kM_pknJCatchNode__: memnode.o;
 text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
 text: .text%__1cOcompU_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
 text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRbranchLoopEndNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
-text: .text%__1cKStoreCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKMemBarNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKimmI13OperFclone6kM_pnIMachOper__;
-text: .text%__1cNnmethodLocker2T6M_v_;
-text: .text%__1cOloadConI13NodeFclone6kM_pnENode__;
-text: .text%__1cKCodeBuffer2t6MiiiiiipnKBufferBlob_pnJrelocInfo_pnORelocateBuffer_ipnLOopRecorder_pkcii_v_;
 text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
 text: .text%jni_SetObjectArrayElement: jni.o;
 text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
 text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cNCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cRbranchLoopEndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRsarI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: frame.o;
 text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: classes.o;
-text: .text%__1cHnmethodOis_java_method6kM_i_: nmethod.o;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
 text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cSbranchCon_longNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_ltNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSandI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbACallCompiledJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cLstoreP0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciTypeArrayKlass.o;
 text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitbMset_predefined_output_for_runtime_call6MpnENode_pnMMergeMemNode__v_;
 text: .text%__1cIGraphKitGmemory6MI_pnENode__;
 text: .text%__1cZresource_reallocate_bytes6FpcLL_0_;
-text: .text%__1cSbranchCon_longNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNprefetch2NodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
 text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
 text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
 text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cIciMethodXfind_monomorphic_target6MpnHciKlass_22_p0_;
-text: .text%__1cDCHAManalyze_call6FnLKlassHandle_11nMsymbolHandle_2_pnJCHAResult__;
-text: .text%__1cJCHAResultOis_monomorphic6kM_i_;
 text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
 text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cIAddLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
-text: .text%__1cTmembar_CPUOrderNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cMPhaseChaitinQgather_lrg_masks6Mi_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: live.o;
 text: .text%__1cJPhaseLiveHcompute6MI_v_;
 text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cKStoreBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cSandI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNIdealLoopTreeObeautify_loops6MpnOPhaseIdealLoop__i_;
 text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: symbolKlass.o;
-text: .text%__1cUcompU_iReg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cITypeNodeHis_Type6M_p0_: 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;
@@ -2459,34 +1411,18 @@
 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%__1cQPSGenerationPoolImax_size6kM_L_: memoryPool.o;
 text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cQPSGenerationPoolNused_in_bytes6M_L_: memoryPool.o;
 text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cQaddL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: machnode.o;
-text: .text%__1cSReferenceProcessorSdiscover_reference6MpnHoopDesc_nNReferenceType__i_;
 text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
 text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTCallInterpreterNodeGOpcode6kM_i_;
 text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: loopnode.o;
 text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cKimmL13OperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cKJNIHandlesLmake_global6FnGHandle_i_pnI_jobject__;
-text: .text%__1cSReferenceProcessorTget_discovered_list6MnNReferenceType__ppnHoopDesc__;
-text: .text%__1cXjava_lang_ref_ReferenceIset_next6FpnHoopDesc_2_v_;
 text: .text%__1cIimmDOperJconstantD6kM_d_: ad_sparc_clone.o;
-text: .text%__1cbCcatch_cleanup_fix_all_inputs6FpnENode_11_v_: lcm.o;
-text: .text%__1cQaddL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHMatcherMreturn_value6Fii_nLRegPair__;
 text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
 text: .text%__1cFTypeDEmake6Fd_pk0_;
 text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cLCastP2LNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
 text: .text%__1cMoutputStream2t6Mi_v_;
@@ -2494,27 +1430,19 @@
 text: .text%__1cMstringStream2t6ML_v_;
 text: .text%__1cMstringStreamJas_string6M_pc_;
 text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cMURShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciInstanceKlass.o;
 text: .text%__1cIModINodeGOpcode6kM_i_;
 text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cZnoG3_iRegI_64bit_safeOperJnum_edges6kM_I_: ad_sparc.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%__1cKstoreCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cSCompareAndSwapNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cHRetNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHRetNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: loopnode.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;
@@ -2528,135 +1456,77 @@
 text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_: machnode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: machnode.o;
 text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cRMachNullCheckNode2t6MpnENode_2I_v_;
-text: .text%__1cSandI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
 text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: machnode.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: machnode.o;
 text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: machnode.o;
 text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
 text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cPconvL2I_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSaddL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Sub6M_pnHSubNode__: classes.o;
 text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cNobjArrayKlassPoop_is_objArray6kM_i_: objArrayKlass.o;
 text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cQStackFrameStream2t6MpnKJavaThread_i_v_;
 text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
 text: .text%__1cQandL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUGenericGrowableArray2t6MiipnEGrET_i_v_;
-text: .text%__1cNprefetch2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUGenericGrowableArrayEgrow6Mi_v_;
 text: .text%__1cQaddP_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcompL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNbranchConNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
 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%__1cIGraphKitOmake_slow_call6MpknITypeFunc_pCpkcpnENode_88_8_;
 text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
 text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
 text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cFParseNpush_constant6MnKciConstant__i_;
 text: .text%__1cUcompU_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
 text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowXmark_known_range_starts6M_v_;
 text: .text%__1cKciTypeFlowKflow_types6M_v_;
 text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowLfind_ranges6M_v_;
 text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cJloadLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
 text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKTypeRawPtrFempty6kM_i_;
-text: .text%__1cJloadCNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cVshrL_reg_imm6_L2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cJScopeDescGis_top6kM_i_;
 text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
 text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cMURShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cUcompU_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
 text: .text%__1cMciMethodDataJload_data6M_v_;
 text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: klass.o;
-text: .text%__1cXmembar_acquire_lockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKKlass_vtbl2n6FLrnLKlassHandle_ipnGThread__pv_;
 text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
 text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cRcompL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: klass.o;
 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%__1cENodeHis_Copy6kM_I_: ad_sparc.o;
 text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%__1cLRuntimeStubIis_alive6kM_i_: codeBlob.o;
 text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
 text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKstoreBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQsubL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cKcmpOpPOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPorI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
 text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cUThreadSafepointStateYcaller_must_gc_arguments6kM_i_;
-text: .text%__1cbCCompiledCodeSafepointHandlerYcaller_must_gc_arguments6kM_i_: safepoint.o;
-text: .text%__1cNSafepointBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_;
-text: .text%__1cTDebugInfoReadStream2t6MpknHnmethod_i_v_;
 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%__1cOLibraryCallKitOgenerate_guard6MpnENode_pnKRegionNode_f_v_;
-text: .text%__1cRsarI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cNIdealLoopTreeTcheck_inner_safepts6MpnOPhaseIdealLoop__v_;
 text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
 text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
 text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
 text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cLOopRecorderKfind_index6MpnI_jobject__i_;
 text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHciKlassMis_interface6M_i_: ciObjArrayKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodDataKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: methodDataKlass.o;
 text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cPmethodDataKlassRoop_is_methodData6kM_i_: methodDataKlass.o;
 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%__1cIciObjectMis_obj_array6M_i_: ciInstanceKlass.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: memnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: memnode.o;
 text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cJimmP0OperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cIRootNodeHis_Root6M_p0_: classes.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: multnode.o;
-text: .text%__1cIregDOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cXmembar_acquire_lockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: classes.o;
-text: .text%__1cTDebugInfoReadStreamLread_handle6M_nGHandle__;
-text: .text%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
 text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
 text: .text%__1cRcompL_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cQxorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
@@ -2665,10 +1535,7 @@
 text: .text%__1cKimmP13OperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cVcompP_iRegP_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: reg_split.o;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
 text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cJloadSNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
 text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
 text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
@@ -2678,33 +1545,14 @@
 text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_sparc_clone.o;
 text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
 text: .text%__1cLstoreI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameGis_top6kM_i_;
 text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cPCheckCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHTypePtrCeq6kMpknEType__i_;
-text: .text%__1cSmembar_acquireNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQmodI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_ltNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
 text: .text%__1cLstoreI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cQciByteCodeStreamJget_klass6Mri_pnHciKlass__;
-text: .text%__1cSCompareAndSwapNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cIGraphKitOhas_ex_handler6M_i_;
-text: .text%__1cLCastP2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cENodeGis_Con6kM_I_: connode.o;
 text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: instanceKlass.o;
-text: .text%__1cSaddL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: loopnode.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse2.o;
 text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: connode.o;
 text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cRshrL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
 text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
 text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
@@ -2714,54 +1562,35 @@
 text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
 text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
 text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cIVerifierQrelax_verify_for6FpnHoopDesc__i_;
 text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
 text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserNfill_oop_maps6MnTinstanceKlassHandle_ii_v_;
-text: .text%__1cPClassFileParserQparse_interfaces6MnSconstantPoolHandle_nGHandle_2pnGThread__nOobjArrayHandle__;
 text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cPClassFileParserOparseClassFile6MnMsymbolHandle_nGHandle_2r1pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cPClassFileParserNparse_methods6MnSconstantPoolHandle_ipnLAccessFlags_ppnPobjArrayOopDesc_66pnGThread__nOobjArrayHandle__;
 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%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
 text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserMparse_fields6MnSconstantPoolHandle_ipnUFieldAllocationCount_pnOobjArrayHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNmethodOopDescMsort_methods6FpnPobjArrayOopDesc_222_v_;
 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%__1cVjava_lang_ClassLoaderRis_trusted_loader6FpnHoopDesc__i_;
 text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cLklassVtablebKcompute_vtable_size_and_num_mirandas6Fri1pnMklassOopDesc_pnPobjArrayOopDesc_nLAccessFlags_pnHoopDesc_pnNsymbolOopDesc_5_v_;
 text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
 text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
 text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
 text: .text%__1cPClassFileStream2t6MpCipc_v_;
 text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cIVerifierRshould_verify_for6FpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
 text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
 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%__1cJMultiNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cQmodI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
 text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQandL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
 text: .text%__1cFVTuneOend_class_load6F_v_;
 text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
@@ -2772,9 +1601,6 @@
 text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
 text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: loopnode.o;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: classes.o;
-text: .text%__1cUCallCompiledJavaNodeGOpcode6kM_i_;
 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;
@@ -2782,117 +1608,70 @@
 text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
 text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
 text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: ad_sparc.o;
 text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodePis_MachCallJava6M_pnQMachCallJavaNode__: ad_sparc_misc.o;
 text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
 text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cJScopeDesc2t6MpknHnmethod_i_v_;
 text: .text%JVM_GetMethodIxExceptionIndexes;
 text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
 text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
 text: .text%JVM_GetMethodIxArgsSize;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
 text: .text%JVM_GetMethodIxByteCode;
 text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
 text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHnmethodNscope_desc_at6MpCi_pnJScopeDesc__;
 text: .text%JVM_GetMethodIxSignatureUTF;
 text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
 text: .text%JVM_GetMethodIxMaxStack;
-text: .text%__1cMnegF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
 text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
 text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFframeZinterpreter_frame_set_bcx6Ml_v_;
 text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeGis_Con6kM_I_: ad_sparc.o;
 text: .text%__1cMnegF_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQmulD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSsafePoint_pollNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc_misc.o;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__: vm_operations.o;
 text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
 text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
 text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
 text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cRcompL_reg_conNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cTGeneratePairingInfoRpossible_gc_point6MpnOBytecodeStream__i_: ciMethod.o;
 text: .text%__1cOcompI_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTmembar_CPUOrderNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cLCastP2LNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
 text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQcmovI_reg_ltNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cYcompareAndSwapL_boolNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNprefetch2NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLProfileDataSis_VirtualCallData6M_i_: ciMethodData.o;
 text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cOCompiledRFrameEinit6M_v_;
 text: .text%__1cGvframeDtop6kM_p0_;
 text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: compile.o;
 text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
 text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
 text: .text%__1cQandI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cJLoadBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIGraphKitRmerge_fast_memory6MpnENode_2i_v_;
 text: .text%__1cRshlL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodJcode_size6kM_i_: nmethod.o;
-text: .text%__1cFParseKdo_put_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
 text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cFciEnvUis_unresolved_string6kMpnPciInstanceKlass_i_i_;
-text: .text%__1cQciByteCodeStreamUis_unresolved_string6kM_i_;
-text: .text%__1cRreturn_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
 text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
 text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cJloadCNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cHMatcherFxform6MpnENode_i_2_;
 text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherLreturn_addr6kM_nHOptoRegEName__;
 text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
 text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
 text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cJLoadSNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLstoreP0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOloadConL13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: instanceKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlass.o;
-text: .text%__1cUcompU_iReg_imm13NodeJnum_opnds6kM_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%__1cICallNodeJideal_reg6kM_I_: classes.o;
 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%__1cNRelocIteratorEnext6M_i_: nativeInst_sparc.o;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
 text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cUEdenMutableSpacePoolImax_size6kM_L_: memoryPool.o;
 text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolImax_size6kM_L_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolNused_in_bytes6M_L_: memoryPool.o;
-text: .text%__1cYSurvivorMutableSpacePoolNused_in_bytes6M_L_: memoryPool.o;
 text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
 text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cKReturnNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
 text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
 text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
@@ -2901,40 +1680,27 @@
 text: .text%__1cPcompP_iRegPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRloadConP_pollNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cWconstantPoolCacheKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQmodI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cNIdealLoopTreeOpolicy_peeling6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreebBpolicy_do_remove_empty_loop6MpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeUiteration_split_impl6MpnOPhaseIdealLoop_rnJNode_List__v_;
 text: .text%__1cVPreserveExceptionMark2T6M_v_;
 text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
 text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
 text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: classes.o;
 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%__1cILoopNode2t6MpnENode_2_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: assembler_sparc.o;
 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%__1cPCountedLoopNodeDphi6kM_pnENode__: loopnode.o;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopnode.o;
 text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopnode.o;
 text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLstoreB0NodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cRmethodDataOopDescJis_mature6kM_i_;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
-text: .text%__1cQsubL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%JVM_IsConstructorIx;
@@ -2943,35 +1709,19 @@
 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%__1cTMachCallRuntimeNodeSis_MachCallRuntime6M_p0_: ad_sparc_misc.o;
 text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: onStackReplacement.o;
 text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
 text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse3.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: frame.o;
 text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cRcompL_reg_conNodePoper_input_base6kM_I_: ad_sparc_misc.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%__1cMloadConPNodeFclone6kM_pnENode__;
-text: .text%__1cIimmPOperFclone6kM_pnIMachOper__;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__i_;
 text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cHMatcherUc_calling_convention6FpnLRegPair_I_v_;
-text: .text%__1cPCallRuntimeNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cVshrL_reg_imm6_L2INodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_v_;
 text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIConINodeHget_int6kMpi_i_: classes.o;
 text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cHnmethodQis_native_method6kM_i_: nmethod.o;
-text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciByteCodeStream__v_;
 text: .text%__1cJcmpOpOperFequal6kM_i_: ad_sparc_clone.o;
 text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
 text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
@@ -2980,72 +1730,45 @@
 text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cHCompileQsync_stack_slots6kM_i_;
 text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cQcmovI_reg_gtNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKo0RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_sparc.o;
 text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvL2I_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cPBytecode_invokeFindex6kM_i_;
 text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
 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%__1cPCountedLoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHMatcherQpost_fast_unlock6FpknENode__i_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstance.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: objArrayKlass.o;
-text: .text%__1cRMachSafePointNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciByteCodeStream__v_;
-text: .text%__1cENodeGis_Con6kM_I_: memnode.o;
 text: .text%__1cQsubL_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cHAddNodeGis_Add6kM_pk0_: classes.o;
-text: .text%__1cPindOffset13OperFclone6kM_pnIMachOper__;
 text: .text%__1cKg1RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSCMemProjNodeGis_CFG6kM_i_: classes.o;
 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%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cQLRUMaxHeapPolicyWshould_clear_reference6MpnHoopDesc__i_;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: ad_sparc_misc.o;
 text: .text%__1cRshrL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: output.o;
 text: .text%__1cSxorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cSReferenceProcessorbAprocess_discovered_reflist6MppnHoopDesc_pnPReferencePolicy_i_v_;
-text: .text%__1cSReferenceProcessorbAenqueue_discovered_reflist6MpnHoopDesc_p2_v_;
 text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cXmembar_release_lockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
 text: .text%__1cNflagsRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSmembar_releaseNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cQandI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cYinlineCallClearArrayNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeHtwo_adr6kM_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%__1cWCallLeafNoFPDirectNodeHtwo_adr6kM_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;
@@ -3057,16 +1780,10 @@
 text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
 text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cSmembar_releaseNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: thread.o;
 text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMachEpilogNodeNis_MachEpilog6M_p0_: ad_sparc.o;
 text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cOloadConL13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
 text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cVshrL_reg_imm6_L2INodeIpipeline6kM_pknIPipeline__;
@@ -3075,44 +1792,28 @@
 text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
 text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
 text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cOloadConL13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshrL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cPCountedLoopNodeDphi6kM_pnENode__: loopopts.o;
 text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cJLoadCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cNobjArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
 text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: methodDataOop.o;
-text: .text%__1cZCallDynamicJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHget_int6kMpi_i_;
 text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cHMatcherNfind_receiver6Fi_nFVMRegEName__;
 text: .text%__1cQaddL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cIConFNodeGOpcode6kM_i_;
 text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_: connode.o;
 text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
 text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
 text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjArrayKlass.o;
 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%__1cENodeKis_PCTable6kM_pknLPCTableNode__: connode.o;
 text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: loopnode.o;
 text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSCallLeafDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
@@ -3120,49 +1821,31 @@
 text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cQinstanceRefKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKciTypeFlowLStateVectorOmeet_exception6MpnPciInstanceKlass_pk1_i_;
 text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
 text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSCallLeafDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cSCallLeafDirectNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
 text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoop2t6MrnMPhaseIterGVN_pk0i_v_;
-text: .text%__1cKtype2basic6FpknEType__nJBasicType__;
 text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
 text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: frame.o;
 text: .text%__1cRshrL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobRis_at_poll_return6MpC_i_;
-text: .text%__1cIciObjectIis_klass6M_i_: ciInstance.o;
 text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: interp_masm_sparc.o;
-text: .text%__1cFframeRis_compiled_frame6kMpi_i_;
 text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
-text: .text%__1cKstoreLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: classes.o;
 text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
 text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cRcompL_reg_conNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadPNodeFclone6kM_pnENode__;
 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%__1cGOopMapPset_derived_oop6MnHOptoRegEName_ii2_v_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlass.o;
 text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cIRootNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cFBytesNget_native_u46FpC_I_: bytecodes.o;
 text: .text%__1cMindirectOperFscale6kM_i_: ad_sparc.o;
 text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
 text: .text%__1cYcompareAndSwapL_boolNodeLout_RegMask6kM_rknHRegMask__;
@@ -3171,19 +1854,12 @@
 text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
 text: .text%__1cMPhaseChaitinHcompact6M_v_;
 text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: connode.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interp_masm_sparc.o;
 text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKStoreFNodeGOpcode6kM_i_;
 text: .text%__1cIimmPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cHMatcherPprior_fast_lock6FpknENode__i_;
 text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerWcompiler_unlock_object6MpnMRegisterImpl_222rnFLabel__v_;
-text: .text%__1cQcmovI_reg_gtNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cNloadConL0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
 text: .text%__1cOMachEpilogNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
@@ -3193,114 +1869,60 @@
 text: .text%__1cFParseWensure_phis_everywhere6M_v_;
 text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: cfgnode.o;
 text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKCompiledICIis_clean6kM_i_;
 text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__v_;
 text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRbranchLoopEndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICZcompute_monomorphic_entry6FnMmethodHandle_nLKlassHandle_iirnOCompiledICInfo_pnGThread__v_;
-text: .text%__1cQxorI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMVirtualSpaceNreserved_size6kM_L_;
 text: .text%__1cKJavaThreadGactive6F_p0_;
 text: .text%JVM_FillInStackTrace;
-text: .text%__1cIUniverseWis_out_of_memory_error6FnGHandle__i_;
 text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cKJavaThreadNreguard_stack6MpC_i_;
 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%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
 text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
 text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
 text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: node.o;
-text: .text%__1cJloadFNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoopNodeHsize_of6kM_I_: loopnode.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: memnode.o;
 text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cNloadConL0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitNstore_barrier6MpnENode_22_v_;
-text: .text%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: assembler_sparc.o;
-text: .text%__1cMtlsLoadPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_: interpreter.o;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_: interpreter.o;
 text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
 text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interpreter_sparc.o;
-text: .text%__1cNIdealLoopTreeMis_loop_exit6kMpnENode_pnOPhaseIdealLoop__2_;
 text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cSbranchCon_longNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constantPoolKlass.o;
 text: .text%__1cPlocal_vsnprintf6FpcLpkcpv_i_;
-text: .text%__1cVshrL_reg_imm6_L2INodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cURethrowExceptionNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cURethrowExceptionNodeGpinned6kM_i_: ad_sparc_misc.o;
 text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
 text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cIAndLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
 text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cKloadUBNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstring_compareNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cbFunnecessary_membar_volatileNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
 text: .text%__1cFTypeFEmake6Ff_pk0_;
 text: .text%jio_snprintf;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cLOptoRuntimebAresolve_opt_virtual_call_C6FpnKJavaThread__pC_;
 text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
 text: .text%jni_NewLocalRef: jni.o;
 text: .text%__1cIimmFOperJconstantF6kM_f_: ad_sparc_clone.o;
-text: .text%__1cGOopMapQset_callee_saved6MnHOptoRegEName_ii2_v_;
 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%__1cRcompL_reg_conNodeJnum_opnds6kM_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%__1cTCallDynamicJavaNodeEhash6kM_I_: callnode.o;
-text: .text%__1cKReturnNode2t6MpnENode_2222_v_;
 text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
 text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cLPhaseValues2T5B6M_v_;
 text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cYcompareAndSwapL_boolNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
 text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cMMutableSpaceFclear6M_v_;
-text: .text%__1cICodeBlob2t6MpkcpnKCodeBuffer_iiipnJOopMapSet_i_v_;
-text: .text%__1cICodeBlobWfix_relocation_at_move6Ml_v_;
-text: .text%__1cKCodeBufferPcopy_relocation6MpnICodeBlob__v_;
-text: .text%__1cKCodeBufferJcopy_code6MpnICodeBlob__v_;
-text: .text%__1cLConvL2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
 text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
 text: .text%__1cJOopMapSet2t6M_v_;
 text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cNRelocIteratorMcreate_index6FpnKCodeBuffer_pnJrelocInfo_4_4_;
-text: .text%__1cIGraphKitOset_pair_local6MipnENode__v_: parse2.o;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
 text: .text%__1cLcmpD_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
-text: .text%__1cMtlsLoadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cOCompiledRFrameLis_compiled6kM_i_: rframe.o;
 text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: nmethod.o;
 text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cOCompilerOraclePshould_break_at6FnMmethodHandle__i_;
 text: .text%__1cIConDNodeGOpcode6kM_i_;
 text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
 text: .text%jni_SetLongField: jni.o;
@@ -3309,25 +1931,15 @@
 text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cQregP_to_stkPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: frame.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: callnode.o;
 text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cKCodeBufferGresize6Miiii_v_;
 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%__1cHnmethodPscopes_pcs_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodJstub_size6kM_i_: nmethod.o;
 text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cZCallInterpreterDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cHnmethodOexception_size6kM_i_: nmethod.o;
 text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cIConPNodeEmake6FpC_p0_;
-text: .text%__1cHMonitorGnotify6M_i_;
-text: .text%__1cHnmethodQscopes_data_size6kM_i_: nmethod.o;
 text: .text%__1cNObjectMonitorHis_busy6kM_l_;
 text: .text%__1cCosRcurrent_thread_id6F_l_;
 text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
@@ -3347,34 +1959,25 @@
 text: .text%__1cFArenaRdestruct_contents6M_v_;
 text: .text%__1cFArena2t6ML_v_;
 text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: phaseX.o;
 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%__1cIPhaseCFGOschedule_early6MrnJVectorSet_rnJNode_List_rnLBlock_Array__i_;
 text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
 text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cIPhaseCFGLRemoveEmpty6M_v_;
-text: .text%__1cIPhaseCFGQFind_Inner_Loops6M_v_;
 text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
 text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: buildOopMap.o;
 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%__1cIPhaseCFGNschedule_late6MrnJVectorSet_rnJNode_List_rnNGrowableArray4CI___v_;
 text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
 text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cJPhaseLive2T6M_v_;
 text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
 text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cHMatcherWis_short_branch_offset6Mi_i_;
 text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
 text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: matcher.o;
 text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
 text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
 text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
@@ -3385,65 +1988,34 @@
 text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
 text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
 text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cMPhaseChaitinbGstretch_base_pointer_live_ranges6MpnMResourceArea__i_;
 text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
 text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cGBundlePinitialize_nops6FppnIMachNode__v_;
-text: .text%__1cWemit_exception_handler6FrnKCodeBuffer__v_;
 text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cMPhaseChaitin2T6M_v_;
 text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
 text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cKCodeBufferOrelocate_stubs6M_v_;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_: callnode.o;
 text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHCompilePneed_stack_bang6kMi_i_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: multnode.o;
 text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOcmovII_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: callnode.o;
 text: .text%__1cLstoreB0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
 text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
 text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cTresource_free_bytes6FpcL_v_;
-text: .text%__1cMMutableSpaceKinitialize6MnJMemRegion_i_v_;
-text: .text%__1cJimmL0OperJconstantL6kM_x_: ad_sparc_clone.o;
 text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nativeInst_sparc.o;
 text: .text%JVM_DoPrivileged;
 text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciInstanceKlass.o;
 text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
 text: .text%__1cQcmovI_reg_gtNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitOnull_check_oop6MpnKRegionNode_pnENode_i_4_;
 text: .text%__1cVCallRuntimeDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadCNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQcmovI_reg_gtNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cFciEnvKcompile_id6M_I_;
 text: .text%__1cVshrL_reg_imm6_L2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: assembler_sparc.o;
 text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNprefetch2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cJimmU6OperJnum_edges6kM_I_: ad_sparc_clone.o;
 text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cRshrL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: loopnode.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: loopnode.o;
 text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_words6FpnNmethodOopDesc__i_;
-text: .text%__1cRmethodDataOopDescKinitialize6MpnNmethodOopDesc__v_;
 text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
 text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cZCallInterpreterDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObox_handleNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__: ciTypeArrayKlass.o;
-text: .text%__1cNIdealLoopTreePiteration_split6MpnOPhaseIdealLoop_rnJNode_List__v_;
 text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
 text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
 text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
@@ -3452,56 +2024,34 @@
 text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
 text: .text%__1cLConvD2INodeGOpcode6kM_i_;
 text: .text%__1cTmembar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLCastP2LNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cObox_handleNodeMideal_Opcode6kM_i_: ad_sparc_misc.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%__1cKstoreFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIDivINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cRshrP_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
 text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cGThreadOis_interrupted6Fp0i_i_;
 text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
 text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJArrayDataKcell_count6M_i_: methodDataOop.o;
 text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
 text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlass.o;
-text: .text%__1cLOptoRuntimeRmultianewarray1_C6FpnMklassOopDesc_ipnKJavaThread__v_;
 text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cLRuntimeStubbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
 text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cQmerge_point_safe6FpnENode__i_: loopopts.o;
 text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
 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%__1cJloadFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cOLibraryCallKitNtry_to_inline6M_i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: loopnode.o;
 text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cKstoreBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNloadConL0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: library_call.o;
-text: .text%__1cIciObjectJis_method6M_i_: ciInstance.o;
 text: .text%__1cQsubL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cRcompL_reg_conNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciInstance.o;
 text: .text%__1cQaddF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: loopnode.o;
 text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZnoG3_iRegI_64bit_safeOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cRsubI_zero_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_GetClassNameUTF;
 text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
 text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
@@ -3511,57 +2061,32 @@
 text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
 text: .text%__1cQshlI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%JVM_FindLoadedClass;
-text: .text%__1cNRelocIteratorEnext6M_i_: compiledIC.o;
-text: .text%__1cENodeHis_Copy6kM_I_: node.o;
 text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cRbranchLoopEndNodeJis_Branch6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRsubI_zero_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRethrowNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cbDReferenceProcessorInitializerIis_clean6kM_v_: concurrentMarkSweepGeneration.o;
-text: .text%__1cLOptoRuntimeKjbyte_copy6FpW1L_v_;
-text: .text%__1cKManagementJtimestamp6F_x_;
 text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
 text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKReflectionGinvoke6FnTinstanceKlassHandle_nMmethodHandle_nGHandle_inOobjArrayHandle_nJBasicType_4ipnGThread__pnHoopDesc__;
 text: .text%__1cNloadConP0NodeHsize_of6kM_I_: ad_sparc_misc.o;
 text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: objArrayKlassKlass.o;
 text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: subnode.o;
 text: .text%__1cKcmpOpFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cNflagsRegFOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cPciInstanceKlassbBcompute_shared_has_subklass6M_i_;
-text: .text%__1cIGraphKitNallocate_heap6MpnENode_222pknITypeFunc_pC22ipknKTypeOopPtr__2_;
-text: .text%__1cOClearArrayNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSbranchCon_longNodeJis_Branch6kM_I_: ad_sparc_misc.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%__1cLBoxLockNodeEhash6kM_I_: classes.o;
 text: .text%JVM_FindClassFromClass;
 text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQshrL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQcmovI_reg_ltNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbACallCompiledJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: frame.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cScheck_phi_clipping6FpnHPhiNode_rpnHConNode_rI45rpnENode_5_i_: cfgnode.o;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__v_;
 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%__1cSxorI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
 text: .text%JVM_NewInstanceFromConstructor;
 text: .text%__1cFParseFBlockMadd_new_path6M_i_;
@@ -3569,61 +2094,38 @@
 text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
 text: .text%signalHandler;
 text: .text%JVM_handle_solaris_signal;
-text: .text%__1cCosRelapsed_frequency6F_x_;
 text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cMVM_OperationSis_cheap_allocated6kM_i_: vm_operations.o;
-text: .text%__1cHnmethodUnumber_of_dependents6kM_i_: nmethod.o;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
 text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constMethodKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constMethodKlass.o;
 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%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
 text: .text%__1cKcmpOpUOperEless6kM_i_: ad_sparc_clone.o;
 text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cJStealTask2t6Mi_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%__1cNobjArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cMPrefetchNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNprefetch2NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
 text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: multnode.o;
 text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
 text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cFParseJdo_ifnull6MnIBoolTestEmask__v_;
 text: .text%__1cQmodI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cMloadConINodeJnum_opnds6kM_I_: ad_sparc_misc.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%__1cJiRegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cOloadConI13NodeGis_Con6kM_I_: ad_sparc_misc.o;
 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%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciByteCodeStream__v_;
 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%__1cNLocationValueLis_location6kM_i_: debugInfo.o;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
 text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cHMatcherQinline_cache_reg6F_nHOptoRegEName__;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopTransform.o;
 text: .text%__1cPorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cIGraphKitMnext_monitor6M_i_;
 text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
@@ -3641,65 +2143,39 @@
 text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
 text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
 text: .text%__1cOcmovII_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUGenericGrowableArrayNraw_appendAll6Mpk0_v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: frame.o;
-text: .text%__1cFciEnv2t6MpnHJNIEnv__iii_v_;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
 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%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
 text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cNSingletonBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cOcmovPP_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cFframebDsender_for_raw_compiled_frame6kMpnLRegisterMap__0_;
-text: .text%__1cbCCompiledCodeSafepointHandlerbDhandle_polling_page_exception6M_pC_;
 text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
 text: .text%__1cRsarI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__pC_;
 text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
 text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: compiledIC.o;
-text: .text%__1cOcmovII_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQnotemp_iRegIOperEtype6kM_pknEType__: ad_sparc.o;
 text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cJTraceTime2t6MpkciipnMoutputStream__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: ad_sparc.o;
 text: .text%__1cMloadConDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQregP_to_stkPNodeHis_Copy6kM_I_: ad_sparc_misc.o;
 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%__1cQsubL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerUcompiler_lock_object6MpnMRegisterImpl_222rnFLabel__v_;
 text: .text%__1cRsarL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopopts.o;
-text: .text%__1cUParallelScavengeHeapMmem_allocate6MLii_pnIHeapWord__;
 text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerDbpr6Mn0AKRCondition_in0AHPredict_pnMRegisterImpl_rnFLabel__v_: assembler_sparc.o;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceRefKlass.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: nmethod.o;
 text: .text%jni_GetObjectClass: jni.o;
 text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cOPhaseIdealLoopKclone_loop6MpnNIdealLoopTree_rnJNode_List_i_v_;
 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%__1cbLtransform_int_divide_to_long_multiply6FpnIPhaseGVN_pnENode_i_3_: divnode.o;
 text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
 text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
 text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
@@ -3710,113 +2186,67 @@
 text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
 text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
 text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: memnode.o;
 text: .text%__1cQandL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cLCodeletMark2t6MrpnZInterpreterMacroAssembler_pkcinJBytecodesECode__v_: interpreter.o;
-text: .text%__1cLcmpD_ccNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cENodeIis_CMove6M_pnJCMoveNode__: classes.o;
 text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: typeArrayKlass.o;
-text: .text%__1cSstring_compareNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: cfgnode.o;
-text: .text%__1cQmulI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
 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%__1cHTypePtrFempty6kM_i_;
 text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cbFunnecessary_membar_volatileNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_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%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
 text: .text%__1cQmodI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsubI_zero_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cOcmovII_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSCompareAndSwapNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTmembar_CPUOrderNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: reg_split.o;
-text: .text%__1cTmembar_CPUOrderNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
 text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
 text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: frame.o;
-text: .text%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
-text: .text%__1cbCAbstractInterpreterGeneratorWset_short_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorQset_entry_points6MnJBytecodesECode__v_;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopTransform.o;
 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%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
 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%__1cIciMethodQbreak_at_execute6M_i_;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cNCompileBrokerYcheck_compilation_result6FnMmethodHandle_iippnHnmethod__i_;
 text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
 text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
 text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler_ii_v_;
 text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cQstkI_to_regFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJStartNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cOstackSlotPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cObox_handleNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLstoreP0NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQmulD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
 text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cNIdealLoopTreeNpolicy_unroll6kMpnOPhaseIdealLoop__i_;
 text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
 text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cTCallInterpreterNodeSis_CallInterpreter6kM_pk0_: classes.o;
 text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cNIdealLoopTreeSpolicy_range_check6kMpnOPhaseIdealLoop__i_;
 text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
 text: .text%__1cQmulL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHnmethodLnew_nmethod6FnMmethodHandle_iiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__p0_;
 text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__v_;
 text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cICodeBlobJcopy_oops6MppnI_jobject_i_v_;
-text: .text%__1cXMachCallInterpreterNodePret_addr_offset6M_i_;
 text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cHnmethodSresolve_JNIHandles6M_v_;
 text: .text%__1cUParallelScavengeHeapEused6kM_L_;
 text: .text%__1cQcmovI_reg_ltNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interp_masm_sparc.o;
-text: .text%__1cIPhaseCCP2T6M_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;
@@ -3834,11 +2264,8 @@
 text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
 text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileVfinal_graph_reshaping6M_i_;
-text: .text%__1cTmembar_CPUOrderNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
 text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod_ii_v_;
 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_;
@@ -3847,38 +2274,21 @@
 text: .text%__1cLstoreP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
 text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cSmulI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: callnode.o;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MiipnGOopMap__v_;
-text: .text%__1cHBitDataKis_BitData6M_i_: ciMethodData.o;
-text: .text%__1cSxorI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cZInterpreterMacroAssemblerTdispatch_Lbyte_code6MnITosState_ppCii_v_;
 text: .text%__1cQregP_to_stkPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__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%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
 text: .text%__1cQregF_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constMethodKlass.o;
-text: .text%__1cZCallDynamicJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: loopnode.o;
-text: .text%__1cENodeHis_Copy6kM_I_: loopnode.o;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: loopnode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: loopnode.o;
-text: .text%__1cUGenericGrowableArrayIraw_find6kMpknEGrET__i_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii1i_v_;
 text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
 text: .text%__1cIAddFNodeGOpcode6kM_i_;
 text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
@@ -3888,23 +2298,16 @@
 text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
 text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cTmembar_volatileNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFMutex2t6Mipkci_v_;
 text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cObox_handleNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_v_;
 text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: exceptions.o;
 text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
 text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodKlass.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%__1cFKlassPoop_is_objArray6kM_i_: methodKlass.o;
 text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
 text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
 text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
@@ -3916,62 +2319,34 @@
 text: .text%__1cIMulFNodeGOpcode6kM_i_;
 text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
 text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
 text: .text%JVM_IsInterrupted;
-text: .text%__1cIModINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: cpCacheKlass.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%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlass.o;
-text: .text%__1cQmodI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodKlass.o;
-text: .text%__1cHCompile2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: assembler_sparc.o;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
 text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cQaddF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimeOarraycopy_Type6F_pknITypeFunc__;
-text: .text%__1cOLibraryCallKitQinline_arraycopy6M_i_;
-text: .text%__1cTbasictype2arraycopy6FnJBasicType_i_pC_;
-text: .text%__1cJStoreNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cOstackSlotIOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cQregI_to_stkINodeHis_Copy6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cQshlI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cObox_handleNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
 text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
 text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
 text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cHMatcherOc_return_value6Fii_nLRegPair__;
 text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
 text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQmulI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
 text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cVCallRuntimeDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
 text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationWfix_relocation_at_move6Ml_v_;
 text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cPconvF2D_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSdivL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cQshlI_reg_regNodeIpipeline6kM_pknIPipeline__;
@@ -3979,26 +2354,18 @@
 text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
 text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLOptoRuntimeSnew_typeArray_Type6F_pknITypeFunc__;
 text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
 text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cIGraphKitJnew_array6MpnENode_nJBasicType_pknEType_pknMTypeKlassPtr__2_;
 text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConI13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cKRegionNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cQmulD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cENodeHis_Loop6M_pnILoopNode__: cfgnode.o;
 text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
 text: .text%__1cFParseOmerge_new_path6Mi_v_;
 text: .text%__1cFParseTprofile_switch_case6Mi_v_;
@@ -4007,23 +2374,16 @@
 text: .text%__1cRbranchLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQregI_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cRbranchLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
 text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
 text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
-text: .text%__1cIimmIOperFclone6kM_pnIMachOper__;
 text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cSReferenceProcessorbBenqueue_discovered_reflists6MppnHoopDesc__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%__1cUParallelScavengeHeapTensure_parseability6M_v_;
-text: .text%__1cMloadConINodeFclone6kM_pnENode__;
 text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
 text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cUParallelScavengeHeapOfill_all_tlabs6M_v_;
 text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
 text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
 text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
@@ -4031,87 +2391,59 @@
 text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
 text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
 text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cSReferenceProcessorbDenqueue_discovered_references6M_i_;
 text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cXjava_lang_ref_ReferenceRpending_list_addr6F_ppnHoopDesc__;
 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%__1cTAbstractInterpreterRnotice_safepoints6F_v_;
 text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
 text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_v_;
-text: .text%__1cSReferenceProcessorbDprocess_discovered_references6M_v_;
 text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cNloadConPCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
 text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
 text: .text%__1cTDerivedPointerTableFclear6F_v_;
 text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cSsubL_reg_reg_2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2t6Mi_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%__1cTAbstractInterpreterRignore_safepoints6F_v_;
 text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
 text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cNloadConP0NodeFclone6kM_pnENode__;
-text: .text%__1cJimmP0OperFclone6kM_pnIMachOper__;
 text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
 text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cIMinINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
 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%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
 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%__1cRsubI_zero_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
 text: .text%__1cQandI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadCNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cSbranchCon_longNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSbranchCon_longNodeJlabel_set6MrnFLabel_I_v_;
 text: .text%__1cSbranchCon_longNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYinlineCallClearArrayNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cYinlineCallClearArrayNodeLout_RegMask6kM_rknHRegMask__;
 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%__1cObranchConFNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
 text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cYinlineCallClearArrayNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
 text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cQPSIsAliveClosureLdo_object_b6MpnHoopDesc__i_: psScavenge.o;
-text: .text%__1cSconvI2F_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cWCallLeafNoFPDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cYMachCallCompiledJavaNodePret_addr_offset6M_i_;
 text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse1.o;
 text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cWCallLeafNoFPDirectNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
 text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
@@ -4119,60 +2451,39 @@
 text: .text%__1cLstoreP0NodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cQmulF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRorI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cJEventMark2t6MpkcE_v_: vmThread.o;
 text: .text%__1cOloadConL13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
 text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cSReferenceProcessorZadd_to_discovered_list_mt6MppnHoopDesc_23_v_;
 text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerEsetx6MxpnMRegisterImpl_2nJrelocInfoJrelocType__v_;
 text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
 text: .text%__1cQmulI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
 text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cSconvI2F_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cUParallelScavengeHeapQresize_young_gen6MLL_v_;
-text: .text%__1cPVM_GC_OperationQgc_count_changed6kM_i_;
 text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_prologue6M_i_;
-text: .text%__1cUPSAdaptiveSizePolicyWminor_collection_begin6M_v_;
 text: .text%__1cKPSYoungGenNresize_spaces6MLL_v_;
 text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
 text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
 text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cKPSScavengeQinvoke_no_policy6Fpi_i_;
-text: .text%__1cUPSAdaptiveSizePolicyPupdate_averages6MiLL_v_;
 text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPcompute_survivor_space_size_and_threshold6MiiL_i_;
-text: .text%__1cNJvmtiGCMarker2t6Mi_v_;
-text: .text%__1cSsubL_reg_reg_2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
 text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cUPSAdaptiveSizePolicyUminor_collection_end6MnHGCCauseFCause__v_;
 text: .text%__1cKPSYoungGenGresize6MLL_v_;
 text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cKPSYoungGenRresize_generation6MLL_i_;
 text: .text%__1cSmulI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
 text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cHRetNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cObranchConFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
 text: .text%__1cSaddL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
@@ -4184,120 +2495,65 @@
 text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
 text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
 text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cQstkI_to_regFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLstoreB0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMloadConDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cUmulL_reg_imm13_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: ad_sparc_misc.o;
 text: .text%jni_GetStringCritical: jni.o;
 text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: objArrayKlass.o;
 text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
 text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cLOptoRuntimeInew_Type6F_pknITypeFunc__;
 text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: callnode.o;
-text: .text%__1cIGraphKitMnew_instance6MpnPciInstanceKlass__pnENode__;
-text: .text%__1cHnmethodXinterpreter_entry_point6M_pC_;
 text: .text%__1cOcmovIL_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeTnmethod_entry_point6FpnKJavaThread_pnNmethodOopDesc_pnHnmethod__pC_;
-text: .text%__1cQshlI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cTCallDynamicJavaNodeSis_CallDynamicJava6kM_pk0_: callnode.o;
 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%__1cKg3RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cQaddF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: frame.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: typeArrayKlassKlass.o;
 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%__1cQregF_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
 text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUPSAdaptiveSizePolicybDcompute_generation_free_space6MLLLLLLLi_v_;
 text: .text%__1cIPSOldGenMmax_gen_size6M_L_: psOldGen.o;
-text: .text%__1cUPSAdaptiveSizePolicyQdecaying_gc_cost6kM_d_;
-text: .text%__1cUPSAdaptiveSizePolicyZdecay_supplemental_growth6Mi_v_;
-text: .text%__1cUPSAdaptiveSizePolicyVadjust_for_throughput6MipL1_v_;
-text: .text%__1cKPSScavengeGinvoke6Fpi_v_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEname6kM_pkc_: vm_operations.o;
-text: .text%__1cUPSAdaptiveSizePolicyOshould_full_GC6ML_i_;
-text: .text%__1cUParallelScavengeHeapTfailed_mem_allocate6MpiLii_pnIHeapWord__;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cbDVM_ParallelGCFailedAllocation2t6MLiiI_v_;
 text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cMTypeKlassPtrRcast_to_exactness6kMi_pknEType__;
 text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
 text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSxorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: generateOptoStub.o;
 text: .text%__1cRloadConP_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKo1RegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cQcmovI_reg_gtNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescLannotations6kM_pnQtypeArrayOopDesc__;
 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%__1cNinstanceKlassQmethod_index_for6kMpnNmethodOopDesc_pnGThread__i_;
 text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_: objectMonitor_solaris.o;
-text: .text%__1cNmethodOopDescVparameter_annotations6kM_pnQtypeArrayOopDesc__;
 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%__1cENodeUdepends_only_on_test6kM_i_: classes.o;
 text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
 text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQshrI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKloadUBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKimmU13OperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cUcompU_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cQciByteCodeStreamPget_klass_index6M_i_;
-text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciByteCodeStream_pnHciKlass_i_v_;
 text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cHMonitor2t6Mipkci_v_;
 text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
-text: .text%__1cOtypeArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cQregP_to_stkPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOcmovPI_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMregD_lowOperJnum_edges6kM_I_: ad_sparc.o;
 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%__1cNCollectedHeapYcommon_mem_allocate_init6FLipnGThread__pnIHeapWord__: arrayKlass.o;
 text: .text%__1cOcmovII_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseXfetch_interpreter_state6MipknEType_pnENode__5_;
-text: .text%__1cSsubL_reg_reg_2NodeJnum_opnds6kM_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%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interpreter_sparc.o;
-text: .text%__1cOcmovII_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQaddF_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cLstoreI0NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cOcmovPP_regNodeIpipeline6kM_pknIPipeline__;
@@ -4305,8 +2561,6 @@
 text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
 text: .text%JVM_GetCallerClass;
 text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: ad_sparc.o;
-text: .text%__1cObox_handleNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJScopeDescGsender6kM_p0_;
 text: .text%__1cICmpFNodeGOpcode6kM_i_;
 text: .text%jni_GetFieldID: jni.o;
@@ -4315,114 +2569,55 @@
 text: .text%jni_IsAssignableFrom: jni.o;
 text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
 text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCii_v_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: vmThread.o;
-text: .text%__1cQdivL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciByteCodeStreamFtable6MnJBytecodesECode__2_;
-text: .text%__1cGEventsDlog6FpkcE_v_: sharedRuntime.o;
 text: .text%__1cOcmovII_immNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cUmulL_reg_imm13_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cYcompareAndSwapL_boolNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOLibraryCallKitRinline_unsafe_CAS6MnJBasicType__i_;
-text: .text%__1cTCompareAndSwapLNode2t6MpnENode_2222_v_;
 text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
 text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cVCallRuntimeDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cYcompareAndSwapL_boolNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSCompareAndSwapNode2t6MpnENode_2222_v_;
-text: .text%__1cOCallNativeNodeGOpcode6kM_i_;
 text: .text%__1cQshlL_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cPconvF2D_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRsarL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOPhaseIdealLoopJdo_unroll6MpnNIdealLoopTree_rnJNode_List_i_v_;
 text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQregP_to_stkPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerDbpr6Mn0AKRCondition_in0AHPredict_pnMRegisterImpl_rnFLabel__v_: interp_masm_sparc.o;
 text: .text%__1cMloadConLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQshrI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTCallInterpreterNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_nHOptoRegEName__;
-text: .text%__1cZCallInterpreterDirectNodeKmethod_set6Ml_v_;
 text: .text%__1cOloadConL13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSTailCalljmpIndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompilebMGenerate_Compiled_To_Interpreter_Graph6MpknITypeFunc_pC_v_;
 text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
 text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXMachCallInterpreterNodeWis_MachCallInterpreter6M_p0_: ad_sparc_misc.o;
-text: .text%__1cZCallInterpreterDirectNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQjava_lang_ThreadJis_daemon6FpnHoopDesc__i_;
 text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
 text: .text%__1cRorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConPCNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cODeoptimizationYtrap_state_is_recompiled6Fi_i_;
-text: .text%__1cSmulI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cKstoreFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cQregI_to_stkINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWResolveOopMapConflictsRpossible_gc_point6MpnOBytecodeStream__i_: rewriter.o;
-text: .text%__1cRtestI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObox_handleNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
 text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
 text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cSTailCalljmpIndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSTailCalljmpIndNodeGpinned6kM_i_: ad_sparc_misc.o;
 text: .text%__1cQmulI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cRsarL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
 text: .text%__1cRcompL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_i_;
 text: .text%__1cQcmovI_reg_gtNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cOMacroAssemblerWstore_unaligned_double6MpnRFloatRegisterImpl_pnMRegisterImpl_i_v_;
 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%__1cHMatcherXinterpreter_arg_ptr_reg6F_nHOptoRegEName__;
-text: .text%__1cQshlL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOloadConL13NodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cHciKlassMis_interface6M_i_: ciTypeArrayKlass.o;
 text: .text%__1cQmulF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLOptoRuntimeThandle_wrong_method6FpnKJavaThread__pC_;
-text: .text%__1cOMacroAssemblerUstore_unaligned_long6MpnMRegisterImpl_2i_v_;
 text: .text%__1cQaddL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHBoxNodeGOpcode6kM_i_;
-text: .text%__1cSCompiledStaticCallIis_clean6kM_i_;
-text: .text%__1cFParseScreate_jump_tables6MpnENode_pnLSwitchRange_4_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
 text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cLOptoRuntimeVresolve_static_call_C6FpnKJavaThread__pC_;
 text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cSconvD2I_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cSdivL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cPstoreI_FregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
 text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cSsubL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cSsubL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
 text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
 text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
@@ -4430,16 +2625,11 @@
 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%__1cSxorI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorEwait6MxipnGThread__v_;
-text: .text%__1cQSystemDictionaryVadd_loader_constraint6FnMsymbolHandle_nGHandle_2pnGThread__v_;
 text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
 text: .text%JVM_MonitorWait;
 text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
 text: .text%__1cENodeEgetd6kM_d_;
 text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cUdivL_reg_imm13_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLcmpD_ccNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cIciObject2t6MpnHciKlass__v_;
 text: .text%__1cKloadUBNodeErule6kM_I_: ad_sparc_misc.o;
@@ -4448,16 +2638,8 @@
 text: .text%__1cLcmpF_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cQstkI_to_regFNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowOsplit_range_at6Mi_pn0AFRange__;
 text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNloadConP0NodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x43300000NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKloadUBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYinternal_word_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
 text: .text%__1cENode2t6Mp0111111_v_;
 text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
 text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
@@ -4466,93 +2648,57 @@
 text: .text%__1cRbranchLoopEndNodeGnegate6M_v_: ad_sparc_misc.o;
 text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
 text: .text%__1cSaddP_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
 text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
 text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cIciObjectUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cOcmovPP_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSingletonBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
 text: .text%__1cIciSymbolHbyte_at6Mi_i_;
 text: .text%__1cKstoreCNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cUParallelScavengeHeapIcapacity6kM_L_;
-text: .text%__1cbCAbstractInterpreterGeneratorVset_vtos_entry_points6MpnITemplate_rpC44444444_v_;
 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%__1cOcmovII_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNflagsRegFOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cQregP_to_stkPNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSdivL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMjniIdSupportNto_jmethod_id6FpnNmethodOopDesc__pnK_jmethodID__;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
 text: .text%__1cLstoreC0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x41f00000NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cKCompiledICMset_to_clean6M_v_;
 text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cNget_method_id6FpnHJNIEnv__pnH_jclass_pkc5ipnGThread__pnK_jmethodID__: jni.o;
 text: .text%__1cKstoreINodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%jni_NewStringUTF: jni.o;
 text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cTAbstractInterpreterLdeopt_entry6FnITosState_i_pC_;
 text: .text%JVM_SetClassSigners;
 text: .text%__1cQregP_to_stkPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRorI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
 text: .text%JVM_DefineClassWithSource;
 text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceRefKlass.o;
 text: .text%__1cQRelocationHolderEplus6kMi_0_;
 text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTmembar_volatileNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMflagsRegOperFclone6kM_pnIMachOper__;
-text: .text%__1cObox_handleNodeLout_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%__1cOcmovDF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%jni_CallIntMethod: jni.o;
 text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cVinline_cache_regPOperJnum_edges6kM_I_: ad_sparc.o;
 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%__1cRtestI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConPCNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
-text: .text%__1cHCompilebMGenerate_Interpreter_To_Compiled_Graph6MpknITypeFunc__v_;
-text: .text%__1cbACallCompiledJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUCallCompiledJavaNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cFTypeDJsingleton6kM_i_;
-text: .text%__1cSCountedLoopEndNode2t6MpnENode_2ff_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%__1cbACallCompiledJavaDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cQmulI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cbACallCompiledJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cHCompileRmake_vm_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
-text: .text%__1cbACallCompiledJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%JVM_GetClassMethodsCount;
 text: .text%JVM_GetClassFieldsCount;
 text: .text%JVM_GetClassCPTypes;
-text: .text%__1cQjava_lang_ThreadMis_stillborn6FpnHoopDesc__i_;
 text: .text%__1cOcmovII_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%JVM_GetClassCPEntriesCount;
 text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
@@ -4561,292 +2707,166 @@
 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%__1cSmulL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQregF_to_stkINodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: thread.o;
 text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
 text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cRtestI_reg_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6ML_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreterRT_sparc.o;
-text: .text%__1cbBinitialize_itable_for_klass6FpnMklassOopDesc__v_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: interpreterRT_sparc.o;
 text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cMloadConLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIimmLOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: machnode.o;
 text: .text%__1cQmulD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRorI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
 text: .text%jni_FindClass: jni.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbPlinktime_resolve_interface_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
 text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
 text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
 text: .text%__1cPconvI2L_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUPSMarkSweepDecoratorHcompact6Mi_v_;
-text: .text%__1cMloadConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSsubL_reg_reg_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
 text: .text%__1cRshlL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
 text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKLoadPCNodeGOpcode6kM_i_;
 text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cPconvF2D_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cRsarL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUmulL_reg_imm13_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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_ConstructorThas_signature_field6F_i_;
 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%__1cGThreadbCis_hidden_from_external_view6kM_i_: thread.o;
 text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cGThreadVis_jvmti_agent_thread6kM_i_: thread.o;
 text: .text%__1cOcmovII_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorbFhas_parameter_annotations_field6F_i_;
 text: .text%__1cRorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvI2F_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNimmP_pollOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cTmembar_volatileNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cRloadConP_pollNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2D_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlassKlass.o;
 text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQaddD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlassKlass.o;
 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%__1cNSharedRuntimeDd2l6Fd_x_;
 text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMnegD_regNodePoper_input_base6kM_I_: ad_sparc_misc.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%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceRefKlass.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%__1cSconvI2D_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOimmI_32_63OperIconstant6kM_l_: ad_sparc_clone.o;
 text: .text%__1cFMutex2T6M_v_;
-text: .text%__1cQregI_to_stkINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRcompL_reg_conNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerHpop_ptr6MpnMRegisterImpl__v_;
 text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
 text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
 text: .text%__1cOcmovII_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: callnode.o;
 text: .text%__1cQaddD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cSdivL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQregI_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframeVshould_be_deoptimized6kM_i_;
 text: .text%__1cUmulL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICodeBlobOis_java_method6kM_i_: codeBlob.o;
-text: .text%__1cQregP_to_stkPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
-text: .text%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
 text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cQregP_to_stkPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cRtestI_reg_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
 text: .text%JVM_MonitorNotify;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: multnode.o;
 text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
 text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cSstkL_to_regD_0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: classes.o;
 text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cNimmP_pollOperFclone6kM_pnIMachOper__;
 text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cRloadConP_pollNodeFclone6kM_pnENode__;
 text: .text%__1cSstring_compareNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlassKlass.o;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: templateTable_sparc.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%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interpreterRT_sparc.o;
 text: .text%__1cQregL_to_stkLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: instanceKlassKlass.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: output.o;
 text: .text%__1cINegDNodeGOpcode6kM_i_;
 text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodDataKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodDataKlass.o;
-text: .text%__1cMloadConLNodeFclone6kM_pnENode__;
 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%__1cQregL_to_stkLNodeHis_Copy6kM_I_: ad_sparc_misc.o;
 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%__1cKReflectionKnew_method6FnMmethodHandle_iipnGThread__pnHoopDesc__;
 text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cNmethodOopDescSannotation_default6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cIimmLOperFclone6kM_pnIMachOper__;
 text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
 text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodVhas_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_MethodThas_signature_field6F_i_;
-text: .text%__1cIregDOperFclone6kM_pnIMachOper__;
 text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
 text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cNIdealLoopTreeXpolicy_maximally_unroll6kMpnOPhaseIdealLoop__i_;
 text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
 text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cJEventMark2t6MpkcE_v_: psMarkSweep.o;
 text: .text%jni_GetMethodID: jni.o;
 text: .text%__1cUdivL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTAbstractInterpreterWlayout_activation_impl6FpnNmethodOopDesc_iiiipnFframe_4i_i_;
 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%__1cJCMoveNodeEmake6FpnENode_222pknEType__p0_;
-text: .text%__1cFTypeFJsingleton6kM_i_;
 text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJCMoveNode2t6MpnENode_22pknEType__v_: connode.o;
-text: .text%__1cSandL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
 text: .text%__1cRorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRtestI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: connode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: connode.o;
 text: .text%__1cQshrL_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%JVM_GetClassDeclaredConstructors;
 text: .text%__1cQsubF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodePoper_input_base6kM_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%__1cOcmovDF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: deoptimization.o;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.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%__1cXconvI2D_regDHi_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQmulD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshlI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MipnMRegisterImpl__v_;
 text: .text%__1cQmulF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cNminI_eRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQcmovI_reg_ltNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cNminI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQaddD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreC0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: onStackReplacement.o;
-text: .text%__1cObranchConFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJloadDNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cUdivL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cSsubL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadConPCNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConPCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQstkI_to_regFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadINodeFclone6kM_pnENode__;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: node.o;
 text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
 text: .text%__1cQregI_to_stkINodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQshlI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: node.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: node.o;
-text: .text%__1cNloadConPCNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
-text: .text%__1cUGenericGrowableArrayKraw_remove6MpknEGrET__v_;
 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%__1cQregF_to_stkINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cINodeHashEgrow6M_v_;
 text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cQMachCallJavaNodeVis_MachCallStaticJava6M_pnWMachCallStaticJavaNode__: ad_sparc_misc.o;
 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%__1cSdivL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: output.o;
 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%__1cOcmovIF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIVMThreadMis_VM_thread6kM_i_: vmThread.o;
-text: .text%__1cQsubD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_IsThreadAlive;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
 text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
 text: .text%__1cKo1RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cHnmethodNis_osr_method6kM_i_: nmethod.o;
-text: .text%__1cObox_handleNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: vmThread.o;
 text: .text%__1cENodeEgetf6kM_f_;
 text: .text%__1cQmulF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: typeArrayKlass.o;
 text: .text%__1cLstoreP0NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNCallGeneratorQfor_virtual_call6FpnIciMethod__p0_;
 text: .text%__1cSsubL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cUdivL_reg_imm13_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOcmovPP_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNiRegIsafeOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKCMoveINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cXconvI2D_regDHi_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperFclone6kM_pnIMachOper__;
 text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cUVirtualCallGeneratorKis_virtual6kM_i_: callGenerator.o;
 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;
@@ -4857,12 +2877,9 @@
 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%__1cOPhaseIdealLoopVinsert_pre_post_loops6MpnNIdealLoopTree_rnJNode_List_i_v_;
 text: .text%__1cQmodI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cOcmovPI_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSdivL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKVtableStubSpd_code_size_limit6Fi_i_;
 text: .text%__1cQmodI_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cCosScurrent_stack_base6F_pC_;
 text: .text%__1cIOSThread2t6MpFpv_i1_v_;
@@ -4873,100 +2890,57 @@
 text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
 text: .text%__1cCosScurrent_stack_size6F_L_;
 text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cODeoptimizationYquery_update_method_data6FnQmethodDataHandle_in0ALDeoptReason_rIri4_pnLProfileData__;
 text: .text%JVM_SetThreadPriority;
-text: .text%__1cFTypeDGis_nan6kM_i_;
 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%__1cQaddF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
 text: .text%__1cQshlL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%_start: os_solaris.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlass.o;
 text: .text%__1cQdivD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConINodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosNcreate_thread6FpnGThread_n0AKThreadType_L_i_;
 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%__1cQshrL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
 text: .text%__1cJloadLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLL_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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_FieldVhas_annotations_field6F_i_;
-text: .text%__1cXjava_lang_reflect_FieldThas_signature_field6F_i_;
 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%__1cOMacroAssemblerTload_unaligned_long6MpnMRegisterImpl_i2_v_;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
 text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
 text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cQstkI_to_regINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
 text: .text%__1cQaddD_reg_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQregI_to_stkINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cENodeGis_Con6kM_I_: loopnode.o;
-text: .text%__1cIModLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: loopnode.o;
-text: .text%__1cSsubD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2D_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cKimmL13OperFclone6kM_pnIMachOper__;
-text: .text%__1cRsarL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
 text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cSmulD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstring_compareNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOJavaAssertionsHenabled6Fpkci_i_;
 text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cMFlatProfilerJis_active6F_i_;
-text: .text%__1cIDivLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: interp_masm_sparc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
 text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cNjni_functions6F_pknTJNINativeInterface___;
 text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
 text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
 text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNThreadServiceKadd_thread6FpnKJavaThread_i_v_;
-text: .text%__1cGParker2t6M_v_;
-text: .text%__1cCosMguard_memory6FpcL_i_;
 text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cHMatcherXpost_store_load_barrier6FpknENode__i_;
-text: .text%__1cNObjectMonitorGenter26MpnGThread__v_;
-text: .text%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_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%__1cLcmpF_ccNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
 text: .text%__1cRtestI_reg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOloadI_fregNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cJloadSNodeFclone6kM_pnENode__;
 text: .text%__1cKJavaThreadDrun6M_v_;
 text: .text%jni_GetFloatArrayRegion: jni.o;
 text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
@@ -4976,49 +2950,30 @@
 text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
 text: .text%jni_CallStaticVoidMethod: jni.o;
 text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
 text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cJLoadPNodeUdepends_only_on_test6kM_i_: classes.o;
 text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
 text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
 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%__1cENodeGis_Mem6M_pnHMemNode__: cfgnode.o;
 text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cSaddD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQsubD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlass.o;
-text: .text%__1cQshrI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
 text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
 text: .text%JVM_GetClassName;
-text: .text%__1cOMacroAssemblerVload_unaligned_double6MpnMRegisterImpl_ipnRFloatRegisterImpl__v_;
 text: .text%JVM_IsArrayClass;
-text: .text%__1cQdivI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHAddress2t6Mn0AJaddr_type_i_v_;
-text: .text%__1cSmulD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cLTypeInstPtrRcast_to_exactness6kMi_pknEType__;
 text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
 text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
 text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
@@ -5026,128 +2981,73 @@
 text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
 text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
 text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRtestI_reg_immNodeJnum_opnds6kM_I_: ad_sparc_misc.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%__1cNCallGeneratorSfor_predicted_call6FpnHciKlass_p03_3_;
 text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cWPredictedCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cWPredictedCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: markSweep.o;
 text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: interpreter_sparc.o;
-text: .text%__1cJMarkSweepSMarkAndPushClosureLdo_nmethods6kM_ki_: markSweep.o;
 text: .text%__1cJloadSNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZregDHi_regDLo_to_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cSandL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: loopnode.o;
 text: .text%__1cSconvI2F_helperNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMloadConDNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: loopnode.o;
 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%__1cKCodeBufferWinsert_double_constant6Md_pC_;
-text: .text%__1cSstkL_to_regD_0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regINodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
 text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
 text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cQdivD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: icBuffer_sparc.o;
 text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cSaddD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConPCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cObranchConFNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciObjectFactory.o;
 text: .text%__1cOcmovIL_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciObjectFactory.o;
 text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cLStrCompNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciObjectJis_method6M_i_: ciObjectFactory.o;
 text: .text%JVM_TotalMemory;
 text: .text%JVM_FreeMemory;
-text: .text%__1cUmulL_reg_imm13_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cURethrowExceptionNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
 text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cMTailCallNode2t6MpnENode_222222_v_;
 text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
 text: .text%__1cQsubI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSconvD2I_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
 text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegD_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosOunguard_memory6FpcL_i_;
 text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
 text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
 text: .text%__1cOcmovPI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodDataKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodDataKlass.o;
 text: .text%__1cQaddI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
 text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cICmpDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cGParker2T6M_v_;
-text: .text%__1cNThreadServiceNremove_thread6FpnKJavaThread_i_v_;
-text: .text%__1cQregF_to_stkINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cKJavaThread2T6M_v_;
 text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cKJavaThreadEexit6Mi_v_;
-text: .text%__1cIGraphKitXinsert_mem_bar_volatile6MpnKMemBarNode_i_v_;
 text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cOcmovLI_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIOSThreadKpd_destroy6M_v_;
 text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
 text: .text%__1cIOSThread2T6M_v_;
 text: .text%__1cGThread2T5B6M_v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cQshrL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cOcmovIF_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-text: .text%__1cHRetDataKcell_count6M_i_: methodDataOop.o;
 text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
 text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cQregL_to_stkLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%jni_CallObjectMethod: jni.o;
 text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cTOopMapForCacheEntryOreport_results6kM_i_: oopMapCache.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%__1cKklassKlassOklass_oop_size6kM_i_: klassKlass.o;
 text: .text%__1cHTypeInt2t6Miii_v_;
 text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cSsubD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvF2I_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSmulD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSandL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
 text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
@@ -5157,26 +3057,19 @@
 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%__1cJloadDNodeHtwo_adr6kM_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%__1cZInterpreterMacroAssemblerFpop_f6MpnRFloatRegisterImpl__v_;
 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%__1cLstoreC0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cJloadDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: library_call.o;
-text: .text%__1cUGenericGrowableArrayUclear_and_deallocate6M_v_;
 text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
 text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
 text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
@@ -5184,28 +3077,18 @@
 text: .text%__1cOloadI_fregNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cKstoreBNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cOcmovLL_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVMoveL2D_stack_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRtestI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXconvI2D_regDHi_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__v_;
 text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
 text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cTAbstractInterpreterQcontinuation_for6FpnNmethodOopDesc_pCiiri_3_;
 text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
 text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cTAbstractInterpreterPsize_activation6FpnNmethodOopDesc_iiiii_i_;
 text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
 text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cTAbstractInterpreterRlayout_activation6FpnNmethodOopDesc_iiiipnFframe_4i_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%__1cSvframeArrayElementPunpack_on_stack6MiipnFframe_ii_v_;
 text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSvframeArrayElementNon_stack_size6kMiiii_i_;
 text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
 text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
 text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
@@ -5215,37 +3098,26 @@
 text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
 text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
 text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: ciTypeFlow.o;
-text: .text%__1cOcmovLL_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOLibraryCallKitYinline_native_time_funcs6Mi_i_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: templateTable_sparc.o;
 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%__1cQdivI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: stubGenerator_sparc.o;
 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%__1cQshlL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
 text: .text%__1cLstoreF0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: callnode.o;
 text: .text%__1cKimmI11OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
 text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
 text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerDset6MlpnMRegisterImpl_rknQRelocationHolder__v_: interpreter_sparc.o;
 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%__1cIGraphKitbAgen_stub_or_native_wrapper6MpCpkcpnIciMethod_iiiii_v_;
 text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
 text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%JVM_GetInheritedAccessControlContext;
@@ -5254,47 +3126,33 @@
 text: .text%__1cVCallRuntimeDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%JVM_NativePath;
 text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cQdivD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSvframeArrayElementDbci6kM_i_;
 text: .text%__1cQaddD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cICodeBlobZis_at_poll_or_poll_return6MpC_i_;
 text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
 text: .text%__1cNloadConP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSconvI2D_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOcmovPI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cLvframeArrayIallocate6FpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pnLRegisterMap_nFframe_9A9A9A_p0_;
 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%__1cLOptoRuntimeWresolve_virtual_call_C6FpnKJavaThread__pC_;
 text: .text%__1cSsubD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: deoptimization.o;
-text: .text%__1cODeoptimizationScreate_vframeArray6FpnKJavaThread_nFframe_pnLRegisterMap__pnLvframeArray__;
 text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cIUniverseWreinitialize_vtable_of6FpnFKlass_pnGThread__v_;
 text: .text%__1cMtlsLoadPNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cVMoveL2D_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
 text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cVCompressedWriteStreamKwrite_long6Mx_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorRset_unimplemented6Mi_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%__1cSstkL_to_regD_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachCallNativeNodePret_addr_offset6M_i_;
 text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSconvD2I_helperNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%jni_GetStaticMethodID: jni.o;
 text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSstkL_to_regD_0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
 text: .text%__1cRNativeMovConstRegEdata6kM_l_;
 text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
@@ -5303,39 +3161,25 @@
 text: .text%__1cNmaxI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
 text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cNmaxI_eRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRConstantLongValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cOcmovIF_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cENodeJis_MemBar6kM_pknKMemBarNode__: classes.o;
-text: .text%__1cVcompiledICHolderKlassSoop_being_unloaded6MpnRBoolObjectClosure_pnHoopDesc__i_;
 text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
 text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cUregI_to_stkLHi_1NodeIpipeline6kM_pknIPipeline__;
 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%__1cOloadI_fregNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 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%__1cNloadConL0NodeFclone6kM_pnENode__;
-text: .text%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
 text: .text%__1cKcmpOpFOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cJimmL0OperFclone6kM_pnIMachOper__;
 text: .text%__1cSaddP_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cIAddFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
 text: .text%JVM_Close;
-text: .text%__1cMtlsLoadPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeLout_RegMask6kM_rknHRegMask__;
 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;
@@ -5343,37 +3187,21 @@
 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%__1cQdivL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.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%__1cSandL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRshrL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
 text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLcastP2LNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLstoreF0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvD2I_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKcastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQstkI_to_regINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cMStartOSRNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cFParseWload_interpreter_state6MpnENode_2_v_;
 text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
 text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cQAbstractCompilerMsupports_osr6M_i_: c2compiler.o;
-text: .text%__1cJloadCNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cOMacroAssemblerPbreakpoint_trap6M_v_;
 text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cSconvF2I_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cUregI_to_stkLHi_0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
 text: .text%__1cSmulD_regD_regDNodeIpipeline6kM_pknIPipeline__;
@@ -5381,79 +3209,51 @@
 text: .text%__1cSaddD_regD_regDNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cQaddD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovLI_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
 text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cLConvD2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cKCompiledICMstub_address6kM_pC_;
 text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
 text: .text%jni_EnsureLocalCapacity;
 text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cTunsafe_intrinsic_id6FpnNsymbolOopDesc_1_nNmethodOopDescLIntrinsicId__;
 text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
 text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
 text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodDataOop.o;
 text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cLcastP2LNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPorL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQdivD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
 text: .text%__1cNiRegIsafeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNTemplateTableGbranch6Fii_v_;
 text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
 text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKScopeValueLis_location6kM_i_: debugInfo.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%__1cSdivL_reg_reg_1NodeHtwo_adr6kM_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%__1cHCompile2t6MpnFciEnv_pF_pknITypeFunc_pCpkciiii_v_;
-text: .text%__1cSmulL_reg_reg_1NodeHtwo_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%__1cSsubL_reg_reg_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cLcmpF_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPstoreI_FregNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: interp_masm_sparc.o;
-text: .text%__1cIGraphKitIgen_stub6MpCpkciii_v_;
 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%__1cXconvI2D_regDHi_regDNodeHtwo_adr6kM_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%__1cJloadBNodeFclone6kM_pnENode__;
-text: .text%__1cOloadI_fregNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQdivI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQregL_to_stkLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cPconvI2L_regNodeFclone6kM_pnENode__;
 text: .text%__1cLResourceObj2n6FLn0APallocation_type__pv_;
 text: .text%__1cLcmpD_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreter_sparc.o;
 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%__1cFKlassNoop_is_method6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: typeArrayKlass.o;
 text: .text%__1cOcmovDF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
 text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSstkL_to_regD_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVMoveF2I_stack_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__: ad_sparc_misc.o;
 text: .text%__1cXconvI2D_regDHi_regDNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cCosHSolarisKmmap_chunk6FpcLii_2_;
 text: .text%__1cINegFNodeGOpcode6kM_i_;
@@ -5461,11 +3261,8 @@
 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%__1cKCodeBufferVinsert_float_constant6Mf_pC_;
-text: .text%__1cSstkL_to_regD_0NodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKEntryPoint2t6M_v_;
 text: .text%__1cMregD_lowOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cYinternal_word_RelocationMforce_target6MpC_v_: relocInfo.o;
 text: .text%__1cObranchConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
 text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
@@ -5484,111 +3281,77 @@
 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%__1cNloadConPCNodeJnum_opnds6kM_I_: ad_sparc_misc.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%__1cVMoveL2D_stack_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cMloadConFNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cOcmovII_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMnegD_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSstkL_to_regD_2NodeLout_RegMask6kM_rknHRegMask__;
 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%__1cMVirtualSpaceJexpand_by6ML_i_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlassKlass.o;
 text: .text%__1cOloadConL13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
 text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLconvI2BNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPorL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHBoxNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%JVM_GetComponentType;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: klassKlass.o;
 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%__1cJEventMark2t6MpkcE_v_: nmethod.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%__1cQConstantIntValuePis_constant_int6kM_i_: debugInfo.o;
-text: .text%__1cFStateL_sub_Op_Box6MpknENode__v_;
 text: .text%__1cICodeBlobFflush6M_v_;
 text: .text%Unsafe_DefineClass1;
-text: .text%__1cPorL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cSconvF2I_helperNodeJnum_opnds6kM_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%__1cNloadRangeNodeFclone6kM_pnENode__;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: generateOopMap.o;
 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%__1cZInterpreterMacroAssemblerGif_cmp6MnJAssemblerJCondition_i_v_;
 text: .text%__1cOcmovIF_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceRefKlass.o;
-text: .text%__1cUregI_to_stkLHi_0NodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSconvI2D_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerPcasx_under_lock6MpnMRegisterImpl_22pCi_v_;
 text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
 text: .text%__1cJloadLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddD_reg_regNodeHtwo_adr6kM_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%__1cLstoreF0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQsubF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_DefineClass;
-text: .text%__1cNloadConL0NodeGis_Con6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHOrLNodeGOpcode6kM_i_;
 text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
 text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
 text: .text%JVM_InvokeMethod;
-text: .text%__1cLVtableStubsIcontains6FpC_i_;
 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%__1cQstkI_to_regINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
 text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cOMacroAssemblerHbr_null6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
 text: .text%__1cKcastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeHeapJexpand_by6ML_i_;
 text: .text%__1cHThreadsLgc_prologue6F_v_;
 text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlass.o;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_pkcnGHandle_6_6_;
 text: .text%__1cNTemplateTableHconvert6F_v_;
 text: .text%__1cOcmovDF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_pnNsymbolOopDesc_pkc_nGHandle__;
 text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
 text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cRCardTableModRefBSEis_a6MnKBarrierSetEName__i_: cardTableExtension.o;
-text: .text%__1cQSystemDictionaryMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure__i_;
 text: .text%__1cSaddL_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
 text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cKDictionaryMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure__i_;
 text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cHdom_lca6FpnFBlock_1_1_: gcm.o;
 text: .text%__1cNloadRangeNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cKcmpOpFOperKless_equal6kM_i_: ad_sparc_clone.o;
 text: .text%__1cJPSPermGenKprecompact6M_v_;
@@ -5596,58 +3359,44 @@
 text: .text%__1cQUncommonTrapBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
 text: .text%__1cNExceptionBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
 text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cKstfSSFNodeHis_Copy6kM_I_: ad_sparc_misc.o;
 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%__1cLPSMarkSweepQinvoke_no_policy6Fpii_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%__1cFParseScan_rerun_bytecode6M_i_;
 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%__1cLTypeInstPtrLmirror_type6kM_pnGciType__;
 text: .text%__1cKPSYoungGenKprecompact6M_v_;
 text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
 text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__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%__1cMloadConPNodeGis_Con6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_GC;
 text: .text%JVM_GetSystemPackage;
-text: .text%__1cUregI_to_stkLHi_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLstoreC0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLPSMarkSweepGinvoke6Fpii_v_;
 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%__1cUregI_to_stkLHi_0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cPconvD2F_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cETypeJis_finite6kM_i_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: callnode.o;
 text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
 text: .text%__1cQaddL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVVM_ParallelGCSystemGC2t6MI_v_;
 text: .text%__1cQshlI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPBytecode_invokeLresult_type6kMpnGThread__nJBasicType__;
 text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
@@ -5655,103 +3404,63 @@
 text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
 text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
 text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cVVM_ParallelGCSystemGCEname6kM_pkc_: vm_operations.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: objArrayKlass.o;
 text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cOstackSlotIOperFclone6kM_pnIMachOper__;
 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%__1cHBoxNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: klassKlass.o;
 text: .text%__1cOcmovPI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQdivI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cJCMoveNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cLcastP2LNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQmulI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cObox_handleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQregP_to_stkPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshrL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cHThreadsLnmethods_do6F_v_;
 text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
 text: .text%JVM_RawMonitorCreate;
-text: .text%__1cLOptoRuntimeNgenerate_stub6FpnFciEnv_pF_pknITypeFunc_pCpkciiii_8_;
 text: .text%__1cIimmDOperJnum_edges6kM_I_: ad_sparc_clone.o;
 text: .text%Unsafe_CompareAndSwapInt;
 text: .text%__1cWloadConI_x43300000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotLOperFclone6kM_pnIMachOper__;
 text: .text%__1cXconvI2D_regDHi_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPSPromotionLABRunallocate_object6MpnHoopDesc__i_;
 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%__1cVMoveL2D_stack_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKcastPPNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cSaddD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotFOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cMnegF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVMoveF2I_stack_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPorL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadFNodeFclone6kM_pnENode__;
-text: .text%__1cUregI_to_stkLHi_1NodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPconvD2F_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cZregDHi_regDLo_to_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerFpop_d6MpnRFloatRegisterImpl__v_;
 text: .text%__1cSsubD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubL_reg_regNodeFclone6kM_pnENode__;
 text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
 text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cQregL_to_stkLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRmethodDataOopDescRbci_to_extra_data6Mii_pnLProfileData__;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: interpreter.o;
 text: .text%__1cPconvF2D_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferGresize6M_v_;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceRefKlass.o;
-text: .text%__1cQaddL_reg_regNodeFclone6kM_pnENode__;
 text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
 text: .text%__1cSaddD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cWloadConI_x41f00000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeFclone6kM_pnENode__;
 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%__1cSstkL_to_regD_0NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%JVM_Sleep;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_ppkc5i_i_: arguments.o;
-text: .text%__1cUregI_to_stkLHi_0NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cLconvI2BNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRorI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUregI_to_stkLHi_1NodeLout_RegMask6kM_rknHRegMask__;
 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%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: templateTable_sparc.o;
 text: .text%__1cSsubD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
-text: .text%__1cQsubF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cMloadConDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cMloadConFNodeGis_Con6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
 text: .text%__1cWloadConI_x41f00000NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%__1cOLibraryCallKitXinline_string_compareTo6M_i_;
 text: .text%Unsafe_GetNativeByte;
 text: .text%__1cQmulL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKbr_notnull6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
 text: .text%__1cQmulF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cRsarL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cQstkI_to_regFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -5760,52 +3469,32 @@
 text: .text%__1cGciType2t6MnJBasicType__v_;
 text: .text%__1cQandL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%jni_GetEnv;
-text: .text%__1cHTypePtrKadd_offset6kMi_pk0_;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciInstanceKlass.o;
 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%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: stubGenerator_sparc.o;
 text: .text%JVM_NanoTime;
 text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
 text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cPconvD2F_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
 text: .text%__1cOcmovIF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLCastP2LNodeUdepends_only_on_test6kM_i_: classes.o;
 text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: machnode.o;
 text: .text%jni_CallVoidMethod: jni.o;
 text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
 text: .text%__1cKimmU13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cNloadConL0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cJimmL0OperJnum_edges6kM_I_: ad_sparc_clone.o;
 text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableXjvmti_post_field_access6Fiii_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%__1cFTypeFJis_finite6kM_i_;
 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%__1cLconvP2BNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMregD_lowOperFclone6kM_pnIMachOper__;
-text: .text%__1cSaddI_reg_imm13NodeFclone6kM_pnENode__;
 text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cOMacroAssemblerGmembar6MnJAssemblerQMembar_mask_bits__v_: templateTable_sparc.o;
-text: .text%__1cLcastP2LNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodLiveness.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
 text: .text%__1cQshrI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cOMacroAssemblerEfmov6MnRFloatRegisterImplFWidth_p13_v_;
 text: .text%__1cOcmovLL_regNodeLout_RegMask6kM_rknHRegMask__;
@@ -5814,98 +3503,55 @@
 text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
 text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
 text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQAbstractCompilerPsupports_native6M_i_: c2compiler.o;
 text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constantPoolKlass.o;
 text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: stubGenerator_sparc.o;
 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%__1cKLoadPCNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cOcmovIL_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_continuation_for6MnITosState__pC_;
 text: .text%__1cVMoveL2D_stack_regNodeIpipeline6kM_pknIPipeline__;
 text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_safept_entry_for6MnITosState_pC_2_;
 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%__1cKCodeBufferQalloc_relocation6MI_v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
 text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cNloadConPCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNloadConL0NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cLcastP2LNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLOptoRuntimeRnew_objArray_Type6F_pknITypeFunc__;
-text: .text%__1cNloadConPCNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%__1cSmodL_reg_imm13NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod__v_;
 text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cIGraphKitSgen_native_wrapper6MpnIciMethod__v_;
-text: .text%__1cKReturnNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cSmodL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOcmovIF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKcastPPNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cSconvF2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLconvI2BNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x41f00000NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cRsarI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQmulI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosNcommit_memory6FpcLL_i_;
-text: .text%__1cUregI_to_stkLHi_0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
 text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cWloadConI_x41f00000NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x43300000NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFTypeFFempty6kM_i_;
 text: .text%__1cETypeFxdual6kM_pk0_;
 text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: jniFastGetField_sparc.o;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: jniFastGetField_sparc.o;
 text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: jniFastGetField_sparc.o;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MinITosState__v_;
 text: .text%__1cFParseMdo_anewarray6M_v_;
 text: .text%__1cPorL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSconvI2F_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
-text: .text%__1cSaddD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: objArrayKlassKlass.o;
 text: .text%__1cOcmovLI_regNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cVMoveF2I_stack_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cPconvI2F_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MirnFLabel__v_;
 text: .text%__1cQaddI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOtypeArrayKlassMcreate_klass6FnJBasicType_ipnGThread__pnMklassOopDesc__;
 text: .text%__1cLstoreC0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
 text: .text%__1cKcmpOpFOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cSconvF2I_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.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%__1cKarrayKlassOset_alloc_size6MI_v_: typeArrayKlass.o;
-text: .text%__1cWloadConI_x43300000NodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%Unsafe_EnsureClassInitialized;
 text: .text%Unsafe_StaticFieldOffset;
 text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cUregI_to_stkLHi_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 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%__1cQdivI_reg_regNodeHtwo_adr6kM_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__;
@@ -5915,31 +3561,20 @@
 text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
 text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
 text: .text%__1cOcmovIF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJimmU5OperFclone6kM_pnIMachOper__;
-text: .text%__1cZInterpreterMacroAssemblerNsuper_call_VM6MpnMRegisterImpl_22pC22i_v_;
-text: .text%__1cSmulL_reg_imm13NodePoper_input_base6kM_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%__1cJloadLNodeFclone6kM_pnENode__;
-text: .text%__1cHMulNodeGis_Mul6kM_pk0_: classes.o;
 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%__1cZInterpreterMacroAssemblerbDunlock_if_synchronized_method6MnITosState_ii_v_;
 text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cSstkL_to_regD_1NodeHsize_of6kM_I_: ad_sparc_misc.o;
 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%__1cUInterpreterGeneratorbAgenerate_run_compiled_code6M_v_;
-text: .text%__1cSsubD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cSaddL_reg_imm13NodeFclone6kM_pnENode__;
 text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
 text: .text%JVM_IsSameClassPackage;
 text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
@@ -5947,20 +3582,13 @@
 text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
 text: .text%jni_SetStaticObjectField: jni.o;
 text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cCosHSolarisSset_signal_handler6Fiii_v_;
-text: .text%__1cLVtableStubsOis_entry_point6FpC_i_;
-text: .text%__1cKCompiledICOis_megamorphic6kM_i_;
 text: .text%__1cKVtableStub2n6FLi_pv_;
-text: .text%__1cLVtableStubsLcreate_stub6FiipnNmethodOopDesc__pC_;
 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%__1cENodeMis_SafePoint6M_pnNSafePointNode__: callnode.o;
 text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
-text: .text%__1cLOptoRuntimeRresolve_call_Type6F_pknITypeFunc__;
 text: .text%__1cQshlL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cOcmovLI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cPorL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
@@ -5969,61 +3597,38 @@
 text: .text%__1cNTemplateTableGiconst6Fi_v_;
 text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
 text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimebBhandle_wrong_method_ic_miss6FpnKJavaThread__pC_;
 text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cLconvP2BNodeHtwo_adr6kM_I_: ad_sparc_misc.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%__1cUInterpreterGeneratorbCgenerate_check_compiled_code6MrnFLabel__v_;
 text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
-text: .text%__1cHCompileRget_Method_invoke6M_pnIciMethod__;
 text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cHCompileWget_MethodAccessorImpl6M_pnPciInstanceKlass__;
-text: .text%__1cSstkL_to_regD_2NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cSstkL_to_regD_1NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6MpnMRegisterImpl_22_v_;
 text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
 text: .text%__1cODeoptimizationLUnrollBlockOsize_of_frames6kM_i_;
 text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cOLibraryCallKitbBinline_native_currentThread6M_i_;
 text: .text%__1cQdivL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConL13NodeFclone6kM_pnENode__;
 text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cCosNcommit_memory6FpcL_i_;
-text: .text%__1cOPSVirtualSpaceJexpand_by6ML_i_;
 text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
 text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
 text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cPconvF2D_regNodeFclone6kM_pnENode__;
 text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cLcastP2LNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cOcmovII_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_sparc.o;
-text: .text%__1cKstfSSFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_0NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: templateTable_sparc.o;
 text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
 text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cQstkI_to_regINodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
 text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
 text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cOLibraryCallKitbDis_method_invoke_or_aux_frame6MpnIJVMState__i_;
 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%__1cLcastP2LNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciObjArrayKlass.o;
 text: .text%__1cPstoreI_FregNodeOmemory_operand6kM_pknIMachOper__;
 text: .text%__1cRtestI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
@@ -6036,73 +3641,54 @@
 text: .text%jni_GetJavaVM;
 text: .text%jni_MonitorExit: jni.o;
 text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cIAddDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cNLoadKlassNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cCosOreserve_memory6FLpc_1_;
 text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cOloadConL13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cISubFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cSdivL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSconvD2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_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%__1cSmulL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cISubDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
 text: .text%__1cPstoreI_FregNodeLout_RegMask6kM_rknHRegMask__;
 text: .text%JVM_GetLastErrorString;
 text: .text%__1cLcmpF_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNReservedSpaceKfirst_part6MLii_0_;
 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%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_: stubGenerator_sparc.o;
 text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHThreadsDadd6FpnKJavaThread_i_v_;
 text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: jniFastGetField_sparc.o;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
 text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKMemoryPool2t6Mpkcn0AIPoolType_LLii_v_;
 text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
 text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
 text: .text%__1cSsubL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cPconvD2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLconvP2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcastPPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQmodL_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLconvP2BNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
 text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
 text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTGeneratePairingInfoOreport_results6kM_i_: ciMethod.o;
-text: .text%__1cPciInstanceKlassbDcompute_shared_is_initialized6M_i_;
 text: .text%__1cSandI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQmodL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cSmulL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
 text: .text%__1cQmulD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cPstoreI_FregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -6110,138 +3696,77 @@
 text: .text%__1cOloadI_fregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cJloadFNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cSconvD2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: runtime_sparc.o;
 text: .text%__1cPconvD2I_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%Unsafe_AllocateMemory;
-text: .text%__1cOLibraryCallKitbNinline_native_Reflection_getCallerClass6M_i_;
 text: .text%__1cNTemplateTableGlstore6Fi_v_;
 text: .text%__1cUcompI_iReg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerJfloat_cmp6MiipnRFloatRegisterImpl_2pnMRegisterImpl__v_;
 text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cSstkL_to_regD_1NodeFclone6kM_pnENode__;
 text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cJcmpOpOperFclone6kM_pnIMachOper__;
-text: .text%__1cMindirectOperFclone6kM_pnIMachOper__;
-text: .text%__1cOLibraryCallKitZinline_native_Class_query6MnIciMethodLIntrinsicId__i_;
 text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_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%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl_2_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%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
 text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
 text: .text%__1cMnegF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKg1RegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
 text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cSstkL_to_regD_2NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJimmU6OperFclone6kM_pnIMachOper__;
 text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cSmulL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cIimmFOperJnum_edges6kM_I_: ad_sparc_clone.o;
 text: .text%__1cOcmovLL_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: stubGenerator_sparc.o;
 text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cKstfSSFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
-text: .text%__1cKo2RegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceRefKlass.o;
-text: .text%__1cIDivFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cNflagsRegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cNflagsRegFOperFclone6kM_pnIMachOper__;
 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%__1cRshlI_reg_imm5NodeFclone6kM_pnENode__;
-text: .text%__1cRshlL_reg_imm6NodeFclone6kM_pnENode__;
 text: .text%__1cSconvI2D_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarI_reg_imm5NodeFclone6kM_pnENode__;
 text: .text%__1cQsubI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQaddD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulD_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
 text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cOcmovPI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_2_v_;
 text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cKstfSSFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFTypeFGis_nan6kM_i_;
 text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
 text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
-text: .text%__1cPconvD2F_regNodeFclone6kM_pnENode__;
-text: .text%__1cQandI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cNgen_new_frame6FpnOMacroAssembler_i_v_: runtime_sparc.o;
 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%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cMnegD_regNodeFclone6kM_pnENode__;
-text: .text%__1cPorL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cSstkL_to_regD_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cMloadConFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConDNodeGis_Con6kM_I_: ad_sparc_misc.o;
 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%__1cINegDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cENodeHis_AddP6M_pnIAddPNode__: subnode.o;
-text: .text%__1cQmulI_reg_regNodeFclone6kM_pnENode__;
 text: .text%__1cKstfSSFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCommandLineFlagsExKis_default6FnPCommandLineFlag__i_;
-text: .text%__1cJArgumentsMadd_property6Fpkc_i_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: symbolKlass.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%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_22_v_;
-text: .text%__1cLOptoRuntimeVgenerate_handler_blob6FpCi_pnNSafepointBlob__;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
-text: .text%__1cJArgumentsMbuild_string6Fppcpkc_v_;
-text: .text%__1cOMacroAssemblerFsethi6MrnHAddress_i_v_: runtime_sparc.o;
-text: .text%__1cNFingerprinterLfingerprint6M_L_: oopMapCache.o;
 text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cSObjectSynchronizerHinflate6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cMOopTaskQdDueueKinitialize6M_v_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
 text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
 text: .text%__1cQshrL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: symbolKlass.o;
 text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pLi_v_: oopMapCache.o;
 text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cMOopTaskQdDueue2t6M_v_;
-text: .text%__1cCosGgetenv6Fpkcpci_i_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: gcTaskThread.o;
-text: .text%__1cSCommandLineFlagsExJboolAtPut6FnXCommandLineFlagWithType_i_v_;
 text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
 text: .text%JVM_FindSignal;
 text: .text%__1cOcmovIF_regNodeEsize6kMpnNPhaseRegAlloc__I_;
@@ -6249,36 +3774,21 @@
 text: .text%__1cOcmovPI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cOcmovDF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cCosFyield6F_v_;
-text: .text%__1cOtailjmpIndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOtailjmpIndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFTypeDFempty6kM_i_;
-text: .text%__1cKstfSSFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cOCompilerThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cOtailjmpIndNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKScopeValuePis_constant_int6kM_i_: debugInfo.o;
 text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
 text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
 text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cNReservedSpaceJlast_part6ML_0_;
-text: .text%__1cKCMoveDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cVMoveF2I_stack_regNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cPconvI2D_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
 text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cVMoveL2D_stack_regNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
 text: .text%__1cQregL_to_stkLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cIciObjectMis_classless6kM_i_: ciMethod.o;
 text: .text%__1cKloadUBNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cQciByteCodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cHciKlassIis_klass6M_i_: ciInstanceKlass.o;
 text: .text%jni_GetDoubleArrayRegion: jni.o;
 text: .text%__1cLconvP2BNodeErule6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
@@ -6287,7 +3797,6 @@
 text: .text%__1cKo2RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%__1cPstoreI_FregNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cPconvI2D_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOCompilerThreadSis_Compiler_thread6kM_i_: thread.o;
 text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
 text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
 text: .text%JVM_Available;
@@ -6296,45 +3805,30 @@
 text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
 text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i2_v_;
 text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_i22_v_;
 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%__1cIDivDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
 text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMVM_OperationNdoit_prologue6M_i_: vm_operations.o;
 text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
 text: .text%JVM_RegisterSignal;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
 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%__1cZInterpreterMacroAssemblerUadd_monitor_to_stack6MipnMRegisterImpl_2_v_;
 text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
 text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: universe.o;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_L_i_;
 text: .text%__1cMVirtualSpace2t6M_v_;
 text: .text%__1cOcmovLL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRNativeInstructionPis_ic_miss_trap6M_i_;
 text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cbAconvL2D_reg_slow_fxtofNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_: vm_operations.o;
 text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
 text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJArgumentsXPropertyList_unique_add6FppnOSystemProperty_pkcpc_v_;
 text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: arrayKlassKlass.o;
-text: .text%__1cRNativeInstructionKis_illegal6M_i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlassKlass.o;
 text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cUConstantOopReadValuePis_constant_oop6kM_i_: debugInfo.o;
 text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
 text: .text%__1cWloadConI_x43300000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
@@ -6348,15 +3842,11 @@
 text: .text%__1cSsubD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cPconvD2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cHMatcherQconvL2FSupported6F_ki_;
 text: .text%__1cSmulD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNVM_DeoptimizeEname6kM_pkc_: vm_operations.o;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciTypeArrayKlass.o;
 text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
 text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cPOopTaskQdDueueSetOregister_queue6MipnMOopTaskQdDueue__v_;
 text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
 text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
@@ -6366,14 +3856,9 @@
 text: .text%__1cNTemplateTableGlconst6Fi_v_;
 text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
 text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
 text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
 text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: assembler_sparc.o;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
 text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
 text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
 text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
 text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
@@ -6388,75 +3873,40 @@
 text: .text%__1cVcompiledICHolderKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
 text: .text%__1cQdivD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectOis_array_klass6M_i_: ciInstanceKlass.o;
 text: .text%__1cRCollectorCounters2t6Mpkci_v_;
 text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstanceKlass.o;
-text: .text%__1cPconvF2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
 text: .text%__1cQstkI_to_regINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUregI_to_stkLHi_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUregI_to_stkLHi_0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstkL_to_regD_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstkL_to_regD_0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLcastP2LNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cKCastPPNodeJideal_reg6kM_I_: connode.o;
 text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cMPeriodicTask2t6ML_v_;
 text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
 text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cRcheck_if_clipping6FpknKRegionNode_rpnGIfNode_5_i_: cfgnode.o;
-text: .text%__1cFTypeDJis_finite6kM_i_;
-text: .text%__1cLConvF2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
 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%__1cPBytecode_invokeIis_valid6kM_i_: frame.o;
-text: .text%__1cLcmpD_ccNodeFclone6kM_pnENode__;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
 text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cRcompL_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cUcompI_iReg_imm13NodeFclone6kM_pnENode__;
 text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cPconvL2I_regNodeFclone6kM_pnENode__;
 text: .text%__1cFParseDl2f6M_v_;
-text: .text%__1cCosPuncommit_memory6FpcL_i_;
 text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cKcmpOpFOperFclone6kM_pnIMachOper__;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MipnMRegisterImpl_2_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: oopMapCache.o;
-text: .text%__1cSconvD2I_helperNodeFclone6kM_pnENode__;
-text: .text%__1cSstkL_to_regD_2NodeFclone6kM_pnENode__;
-text: .text%__1cQregF_to_stkINodeFclone6kM_pnENode__;
 text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MnITosState_pnMRegisterImpl__v_;
 text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cOPSVirtualSpaceKinitialize6MnNReservedSpace_L_i_;
-text: .text%__1cNloadConP0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 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%__1cOcmovLL_regNodeFclone6kM_pnENode__;
-text: .text%__1cKi0RegPOperJnum_edges6kM_I_: ad_sparc.o;
 text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cJimmI0OperFclone6kM_pnIMachOper__;
-text: .text%__1cTis_directory_secure6Fpkc_i_: perfMemory_solaris.o;
 text: .text%__1cPfilename_to_pid6Fpkc_i_: perfMemory_solaris.o;
 text: .text%__1cSconvF2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPmake_new_frames6FpnOMacroAssembler_i_v_: runtime_sparc.o;
 text: .text%__1cLconvI2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
 text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cSestimate_path_freq6FpnENode__f_: loopnode.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%__1cOLibraryCallKitVinline_fp_conversions6MnIciMethodLIntrinsicId__i_;
 text: .text%__1cCosHrealloc6FpvL_1_;
 text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
 text: .text%__1cOtailjmpIndNodeIpipeline6kM_pknIPipeline__;
@@ -6472,141 +3922,92 @@
 text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
 text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
 text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cRsubI_zero_regNodeFclone6kM_pnENode__;
-text: .text%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
 text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
 text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cJAssemblerCbp6Mn0AJCondition_in0ACCC_n0AHPredict_rnFLabel__v_: interp_masm_sparc.o;
 text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cCosbCis_thread_cpu_time_supported6F_i_;
 text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cMnegF_regNodeFclone6kM_pnENode__;
 text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cSReferenceProcessor2t6MnJMemRegion_iii_v_;
-text: .text%__1cNStubGenerator2t6MpnKCodeBuffer_i_v_: stubGenerator_sparc.o;
 text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
 text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cNPhaseRegAllocHset_oop6MpknENode_i_v_;
-text: .text%__1cGatomll6Fpkcpx_i_: arguments.o;
-text: .text%__1cOcmovDF_regNodeFclone6kM_pnENode__;
 text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cOcmovLI_regNodeFclone6kM_pnENode__;
 text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
 text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
 text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%__1cOloadConL13NodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_ptr6MpnMRegisterImpl_2_v_;
 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%__1cFKlassNoop_is_method6kM_i_: objArrayKlass.o;
 text: .text%__1cLPSMarkSweepKinitialize6F_v_;
 text: .text%__1cNCompileBrokerQset_should_block6F_v_;
 text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
 text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
 text: .text%__1cLstoreC0NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cHRetDataKis_RetData6M_i_: methodDataOop.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: klassKlass.o;
-text: .text%__1cOBasicHashtable2t6Mii_v_: placeholders.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%__1cOisT2_libthread6F_i_;
 text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: klassKlass.o;
 text: .text%__1cQPlaceholderTable2t6Mi_v_;
 text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: objArrayKlass.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cUPSAdaptiveSizePolicy2t6MLLLLLddI_v_;
 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%__1cKTypeOopPtrCeq6kMpknEType__i_;
 text: .text%__1cWcompilationPolicy_init6F_v_;
 text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
 text: .text%__1cOloadConL13NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
 text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
 text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
 text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
 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%__1cRInvocationCounterMreinitialize6Fi_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cOcompiler2_init6F_v_;
 text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
 text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
 text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: interpreter_sparc.o;
 text: .text%__1cNThreadServiceEinit6F_v_;
 text: .text%__1cKPSYoungGenRavailable_to_live6M_L_;
 text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cMTailJumpNode2t6MpnENode_22222_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%__1cFKlassNoop_is_method6kM_i_: objArrayKlassKlass.o;
 text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
 text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
 text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cSobjArrayKlassKlassUoop_is_objArrayKlass6kM_i_: objArrayKlassKlass.o;
 text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_L_v_;
 text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
 text: .text%__1cKPSYoungGen2t6MLLL_v_;
-text: .text%__1cOPSVirtualSpaceJshrink_by6ML_i_;
 text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
 text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: 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%__1cKklassKlassOset_alloc_size6MI_v_: objArrayKlassKlass.o;
-text: .text%__1cURecompilationMonitorbGstart_recompilation_monitor_task6F_v_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: constantPoolKlass.o;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
 text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: constantPoolKlass.o;
 text: .text%__1cSmulL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMCodeHeapPool2t6MpnICodeHeap_pkci_v_;
 text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
 text: .text%__1cKPSYoungGenQlimit_gen_shrink6ML_L_;
 text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
 text: .text%__1cIPSOldGenOgen_size_limit6M_L_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: cfgnode.o;
 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%__1cUCompressedReadStreamJread_long6M_x_;
 text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_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%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cCosHSolarisRmpss_sanity_check6F_v_;
 text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
 text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_L_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
@@ -6616,7 +4017,6 @@
 text: .text%__1cKcastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
 text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.o;
 text: .text%__1cOcmovLI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cOcmovLI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cKcmpOpFOperNgreater_equal6kM_i_: ad_sparc_clone.o;
@@ -6626,19 +4026,16 @@
 text: .text%__1cQjavaClasses_init6F_v_;
 text: .text%JVM_InitProperties;
 text: .text%JVM_Halt;
-text: .text%__1cNReservedSpace2t6MLLipc_v_;
 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%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: parse1.o;
 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%__1cMloadConLNodeGis_Con6kM_I_: ad_sparc_misc.o;
 text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
 text: .text%__1cIVMThreadGcreate6F_v_;
 text: .text%__1cIVMThreadDrun6M_v_;
@@ -6649,7 +4046,6 @@
 text: .text%__1cVquicken_jni_functions6F_v_;
 text: .text%__1cKg1RegPOperKin_RegMask6kMi_pknHRegMask__;
 text: .text%JNI_CreateJavaVM;
-text: .text%__1cSmembar_releaseNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
 text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
 text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
 text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
@@ -6680,16 +4076,13 @@
 text: .text%__1cUParallelScavengeHeapOresize_old_gen6ML_v_;
 text: .text%__1cQvtableStubs_init6F_v_;
 text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
 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%__1cLOptoRuntimebSgenerate_polling_page_safepoint_handler_blob6F_v_;
 text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cMFastLockNodeLis_FastLock6kM_pk0_: classes.o;
 text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
 text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
 text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
@@ -6701,17 +4094,12 @@
 text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
 text: .text%JVM_InitializeSocketLibrary;
 text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cHVM_ExitEname6kM_pkc_: vm_operations.o;
 text: .text%JVM_Socket;
-text: .text%__1cFParseNfetch_monitor6MipnENode_2_2_;
 text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
 text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
 text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEkind6M_nNCollectedHeapEName__: parallelScavengeHeap.o;
 text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
 text: .text%__1cKi0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: klassKlass.o;
 text: .text%__1cMostream_init6F_v_;
 text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
 text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
@@ -6719,18 +4107,12 @@
 text: .text%__1cVjni_GetCharField_addr6F_pC_;
 text: .text%__1cWjni_GetShortField_addr6F_pC_;
 text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassVoop_is_typeArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: typeArrayKlassKlass.o;
 text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlassKlass.o;
 text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
 text: .text%__1cVjni_GetLongField_addr6F_pC_;
 text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlassKlass.o;
 text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
 text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: typeArrayKlassKlass.o;
 text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
 text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
 text: .text%__1cIciMethodMvtable_index6M_i_;
@@ -6738,21 +4120,16 @@
 text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
 text: .text%__1cCosXnon_memory_address_word6F_pc_;
 text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: klassKlass.o;
 text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: klassKlass.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%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: klassKlass.o;
 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%__1cFKlassQoop_is_typeArray6kM_i_: klassKlass.o;
 text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: klassKlass.o;
 text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
 text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
 text: .text%__1cNget_user_name6Fi_pc_: perfMemory_solaris.o;
@@ -6765,7 +4142,6 @@
 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%__1cFKlassUoop_is_instanceKlass6kM_i_: klassKlass.o;
 text: .text%__1cLClassLoaderQload_zip_library6F_v_;
 text: .text%__1cPPerfDataManagerHdestroy6F_v_;
 text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
@@ -6773,20 +4149,16 @@
 text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
 text: .text%__1cQclassLoader_init6F_v_;
 text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cVverificationType_init6F_v_;
-text: .text%__1cVverificationType_exit6F_v_;
 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%__1cRciArrayKlassKlassUis_array_klass_klass6M_i_: ciObjectFactory.o;
 text: .text%__1cQostream_init_log6F_v_;
 text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
 text: .text%__1cNuniverse_init6F_i_;
 text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cSuniverse_post_init6F_v_;
 text: .text%__1cMostream_exit6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
 text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
@@ -6798,31 +4170,19 @@
 text: .text%Unsafe_FreeMemory;
 text: .text%__1cbAcreate_sharedmem_resources6Fpkc1L_i_: perfMemory_solaris.o;
 text: .text%Unsafe_PageSize;
-text: .text%__1cRmake_user_tmp_dir6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cKScopeValuePis_constant_oop6kM_i_: debugInfo.o;
 text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cLOptoRuntimebPgenerate_polling_page_return_handler_blob6F_v_;
-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%__1cQshrL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOptoRuntimeUsetup_exception_blob6F_v_;
 text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cLOptoRuntimeYgenerate_arraycopy_stubs6F_v_;
 text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
 text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cCosXis_server_class_machine6F_i_;
 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%__1cSCommandLineFlagsExKuintxAtPut6FnXCommandLineFlagWithType_L_v_;
 text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_nHOptoRegEName__;
 text: .text%__1cQdivD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cCosGstrdup6Fpkc_pc_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_pipeline.o;
@@ -6833,10 +4193,8 @@
 text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
 text: .text%__1cICodeHeap2t6M_v_;
 text: .text%__1cQaddF_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cICodeHeapHreserve6MLLL_i_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
 text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
 text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
 text: .text%__1cORuntimeServiceEinit6F_v_;
 text: .text%__1cNTemplateTableGbipush6F_v_;
@@ -6860,10 +4218,7 @@
 text: .text%__1cNTemplateTableGdaload6F_v_;
 text: .text%__1cNTemplateTableGaaload6F_v_;
 text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cLOptoRuntimeVhandle_exception_Type6F_pknITypeFunc__;
 text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cLOptoRuntimeNfetch_monitor6FipnJBasicLock_pC_pnHoopDesc__;
-text: .text%__1cLOptoRuntimeSfetch_monitor_Type6F_pknITypeFunc__;
 text: .text%__1cNTemplateTableF_goto6F_v_;
 text: .text%__1cNTemplateTableGgoto_w6F_v_;
 text: .text%__1cNTemplateTableFjsr_w6F_v_;
@@ -6879,16 +4234,9 @@
 text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
 text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: gcTaskThread.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%__1cINegFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNStubGeneratorbJgenerate_copy_words_aligned8_higher6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cJArgumentsVfinalize_vm_init_args6FpnMSysClassPath_i_i_;
-text: .text%__1cJArgumentsbNparse_java_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsbSparse_java_tool_options_environment_variable6FpnMSysClassPath_pi_i_;
 text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
 text: .text%__1cNGCTaskManagerKinitialize6M_v_;
 text: .text%__1cNGCTaskManager2t6MI_v_;
@@ -6900,7 +4248,6 @@
 text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
 text: .text%__1cLStatSamplerJdisengage6F_v_;
 text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
 text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
 text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
 text: .text%__1cSstubRoutines_init26F_v_;
@@ -6908,22 +4255,16 @@
 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%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: 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%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
 text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_: lowMemoryDetector.o;
 text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
 text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: lowMemoryDetector.o;
 text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cJArgumentsWparse_each_vm_init_arg6FpknOJavaVMInitArgs_pnMSysClassPath_pi_i_;
 text: .text%__1cVMoveL2D_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
 text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cKRegionNodeUdepends_only_on_test6kM_i_: loopnode.o;
 text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
 text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
@@ -6933,51 +4274,38 @@
 text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
 text: .text%__1cKManagementKinitialize6FpnGThread__v_;
 text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
 text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cRcheck_basic_types6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
 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%__1cGThreadMis_VM_thread6kM_i_: lowMemoryDetector.o;
 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%__1cFKlassNoop_is_method6kM_i_: symbolKlass.o;
 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%__1cNcarSpace_init6F_v_;
 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%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: library_call.o;
-text: .text%__1cOMacroAssemblerCfb6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
 text: .text%__1cCosScurrent_process_id6F_i_;
 text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
 text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: dictionary.o;
-text: .text%__1cOLibraryCallKitWinline_native_hashcode6Mii_i_;
 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%__1cXonStackReplacement_init6F_v_;
 text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
 text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
 text: .text%__1cKDictionary2t6Mi_v_;
@@ -7004,17 +4332,11 @@
 text: .text%__1cNTemplateTableLmonitorexit6F_v_;
 text: .text%__1cNTemplateTableEwide6F_v_;
 text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cQPSGenerationPool2t6MpnIPSOldGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cQPSGenerationPool2t6MpnJPSPermGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cRConstantLongValueQis_constant_long6kM_i_: debugInfo.o;
-text: .text%__1cUEdenMutableSpacePool2t6MpnKPSYoungGen_pnMMutableSpace_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cVcheck_pending_signals6Fi_i_: os_solaris.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%__1cYSurvivorMutableSpacePool2t6MpnKPSYoungGen_pkcnKMemoryPoolIPoolType_i_v_;
 text: .text%__1cTConstantDoubleValueIwrite_on6MpnUDebugInfoWriteStream__v_;
 text: .text%__1cJBytecodesKinitialize6F_v_;
 text: .text%__1cObytecodes_init6F_v_;
@@ -7037,12 +4359,10 @@
 text: .text%__1cCosSget_temp_directory6F_pkc_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
 text: .text%__1cFStateO_sub_Op_CastPP6MpknENode__v_;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
 text: .text%__1cCosNsigexitnum_pd6F_i_;
 text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
 text: .text%__1cCosOsignal_init_pd6F_v_;
 text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cKScopeValueSis_constant_double6kM_i_: debugInfo.o;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
 text: .text%__1cQshlI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
@@ -7053,7 +4373,6 @@
 text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
 text: .text%__1cNTemplateTableHsastore6F_v_;
 text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray1_Type6F_pknITypeFunc__;
 text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
 text: .text%__1cPvm_init_globals6F_v_;
@@ -7072,7 +4391,6 @@
 text: .text%__1cNTemplateTableGsaload6F_v_;
 text: .text%__1cLicache_init6F_v_;
 text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: loaderConstraints.o;
 text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
 text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
 text: .text%__1cNTemplateTableHaload_06F_v_;
@@ -7090,23 +4408,16 @@
 text: .text%__1cMinit_globals6F_i_;
 text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
 text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassUoop_is_instanceKlass6kM_i_: instanceKlassKlass.o;
 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%__1cFKlassVoop_is_typeArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cWResolveOopMapConflictsOreport_results6kM_i_: rewriter.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%__1cNTemplateTableIgetfield6Fi_v_;
 text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
 text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cCosScreate_main_thread6FpnGThread__i_;
 text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
 text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
 text: .text%__1cCosPphysical_memory6F_X_;
--- a/make/solaris/makefiles/reorder_TIERED_i486	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_TIERED_i486	Tue Jul 28 13:50:07 2009 -0600
@@ -2,259 +2,129 @@
 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_;
@@ -263,35 +133,15 @@
 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_;
@@ -299,176 +149,85 @@
 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_;
@@ -476,355 +235,168 @@
 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__;
@@ -833,193 +405,87 @@
 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__;
@@ -1027,334 +493,153 @@
 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_;
@@ -1363,105 +648,53 @@
 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_;
@@ -1473,18 +706,11 @@
 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_;
@@ -1495,131 +721,64 @@
 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_;
@@ -1627,121 +786,56 @@
 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__;
@@ -1749,240 +843,113 @@
 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_;
@@ -1990,31 +957,15 @@
 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;
@@ -2023,357 +974,171 @@
 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;
@@ -2381,852 +1146,416 @@
 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_;
@@ -3234,247 +1563,131 @@
 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;
@@ -3482,27 +1695,17 @@
 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_;
@@ -3510,103 +1713,56 @@
 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__;
@@ -3618,362 +1774,188 @@
 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_;
@@ -3981,106 +1963,61 @@
 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_;
@@ -4097,98 +2034,57 @@
 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_;
@@ -4198,39 +2094,24 @@
 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_;
@@ -4241,26 +2122,16 @@
 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_;
@@ -4273,84 +2144,59 @@
 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_;
@@ -4364,18 +2210,12 @@
 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_;
@@ -4383,133 +2223,62 @@
 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_;
@@ -4519,393 +2288,214 @@
 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_;
@@ -4917,41 +2507,25 @@
 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_;
@@ -4959,25 +2533,14 @@
 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_;
@@ -4986,57 +2549,32 @@
 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__;
@@ -5050,625 +2588,317 @@
 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_;
@@ -5677,289 +2907,160 @@
 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;
@@ -5967,7 +3068,6 @@
 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_;
@@ -5986,37 +3086,25 @@
 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_;
@@ -6025,62 +3113,36 @@
 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_;
@@ -6090,55 +3152,36 @@
 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__;
@@ -6147,11 +3190,8 @@
 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__;
@@ -6160,28 +3200,15 @@
 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_;
@@ -6190,272 +3217,155 @@
 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__;
@@ -6464,80 +3374,46 @@
 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__;
@@ -6550,25 +3426,16 @@
 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_;
@@ -6576,18 +3443,11 @@
 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;
@@ -6595,11 +3455,7 @@
 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;
@@ -6609,48 +3465,32 @@
 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__;
@@ -6661,52 +3501,36 @@
 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__;
@@ -6714,131 +3538,79 @@
 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__;
@@ -6847,72 +3619,44 @@
 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_;
@@ -6920,138 +3664,76 @@
 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_;
@@ -7061,41 +3743,27 @@
 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;
@@ -7104,7 +3772,6 @@
 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__;
@@ -7118,68 +3785,44 @@
 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_;
@@ -7188,100 +3831,64 @@
 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_;
@@ -7289,80 +3896,45 @@
 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_;
@@ -7372,8 +3944,6 @@
 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_;
@@ -7383,9 +3953,7 @@
 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__;
@@ -7393,24 +3961,17 @@
 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_;
@@ -7418,15 +3979,9 @@
 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_;
@@ -7436,48 +3991,29 @@
 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_;
@@ -7493,35 +4029,25 @@
 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_;
@@ -7530,57 +4056,36 @@
 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;
@@ -7589,10 +4094,8 @@
 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_;
@@ -7601,80 +4104,53 @@
 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;
@@ -7710,7 +4186,6 @@
 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;
@@ -7722,15 +4197,11 @@
 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_;
@@ -7751,27 +4222,16 @@
 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;
@@ -7780,11 +4240,9 @@
 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_;
@@ -7799,16 +4257,10 @@
 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_;
@@ -7818,16 +4270,9 @@
 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_;
@@ -7837,27 +4282,21 @@
 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_;
@@ -7877,7 +4316,6 @@
 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;
@@ -7890,9 +4328,6 @@
 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;
@@ -7906,16 +4341,11 @@
 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_;
@@ -7936,27 +4366,17 @@
 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_;
@@ -7971,22 +4391,16 @@
 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_;
@@ -7998,7 +4412,6 @@
 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_;
@@ -8008,11 +4421,8 @@
 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_;
@@ -8028,20 +4438,15 @@
 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__;
@@ -8049,10 +4454,8 @@
 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_;
@@ -8070,7 +4473,6 @@
 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_;
@@ -8082,7 +4484,6 @@
 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_;
@@ -8092,14 +4493,11 @@
 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;
@@ -8109,28 +4507,12 @@
 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_;
@@ -8139,12 +4521,10 @@
 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_;
@@ -8152,13 +4532,8 @@
 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_;
@@ -8202,21 +4577,12 @@
 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_;
@@ -8232,20 +4598,13 @@
 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_;
@@ -8264,34 +4623,19 @@
 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_;
@@ -8302,34 +4646,21 @@
 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_;
@@ -8349,13 +4680,9 @@
 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_;
@@ -8363,31 +4690,19 @@
 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_;
--- a/make/solaris/makefiles/reorder_TIERED_sparc	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/reorder_TIERED_sparc	Tue Jul 28 13:50:07 2009 -0600
@@ -2,112 +2,55 @@
 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_;
@@ -118,19 +61,12 @@
 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_;
@@ -141,92 +77,64 @@
 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_;
@@ -234,149 +142,80 @@
 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_;
@@ -384,76 +223,44 @@
 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_;
@@ -462,18 +269,11 @@
 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__;
@@ -481,89 +281,52 @@
 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;
@@ -572,91 +335,50 @@
 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_;
@@ -664,34 +386,24 @@
 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__;
@@ -699,137 +411,81 @@
 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;
@@ -843,107 +499,62 @@
 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;
@@ -956,185 +567,99 @@
 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;
@@ -1142,26 +667,17 @@
 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_;
@@ -1172,94 +688,46 @@
 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__;
@@ -1269,179 +737,106 @@
 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__;
@@ -1449,99 +844,54 @@
 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_;
@@ -1549,40 +899,23 @@
 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;
@@ -1594,15 +927,11 @@
 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;
@@ -1610,194 +939,100 @@
 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;
@@ -1808,8 +1043,6 @@
 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__;
@@ -1818,156 +1051,97 @@
 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;
@@ -1986,29 +1160,19 @@
 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;
@@ -2019,9 +1183,7 @@
 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__;
@@ -2030,46 +1192,28 @@
 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__;
@@ -2078,312 +1222,162 @@
 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_;
@@ -2392,57 +1386,31 @@
 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_;
@@ -2451,31 +1419,16 @@
 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__;
@@ -2487,26 +1440,18 @@
 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__;
@@ -2515,30 +1460,19 @@
 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;
@@ -2546,12 +1480,7 @@
 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__;
@@ -2564,129 +1493,68 @@
 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;
@@ -2719,11 +1587,7 @@
 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;
@@ -2731,7 +1595,6 @@
 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_;
@@ -2740,53 +1603,26 @@
 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__;
@@ -2799,163 +1635,99 @@
 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;
@@ -2964,100 +1736,61 @@
 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_;
@@ -3065,199 +1798,120 @@
 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;
@@ -3267,11 +1921,9 @@
 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;
@@ -3281,100 +1933,59 @@
 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;
@@ -3386,63 +1997,37 @@
 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;
@@ -3452,46 +2037,25 @@
 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_;
@@ -3499,85 +2063,51 @@
 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__;
@@ -3587,30 +2117,23 @@
 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__;
@@ -3619,160 +2142,100 @@
 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;
@@ -3780,27 +2243,17 @@
 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_;
@@ -3813,75 +2266,44 @@
 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_;
@@ -3890,19 +2312,9 @@
 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;
@@ -3924,133 +2336,76 @@
 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_;
@@ -4058,10 +2413,7 @@
 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;
@@ -4084,127 +2436,77 @@
 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_;
@@ -4223,19 +2525,13 @@
 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_;
@@ -4247,41 +2543,27 @@
 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_;
@@ -4290,8 +2572,6 @@
 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_;
@@ -4299,220 +2579,127 @@
 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_;
@@ -4523,98 +2710,51 @@
 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__;
@@ -4624,8 +2764,6 @@
 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__;
@@ -4637,90 +2775,49 @@
 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__;
@@ -4728,141 +2825,84 @@
 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__;
@@ -4870,69 +2910,42 @@
 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__;
@@ -4946,48 +2959,23 @@
 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;
@@ -4995,81 +2983,51 @@
 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_;
@@ -5082,34 +3040,21 @@
 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_;
@@ -5117,114 +3062,72 @@
 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;
@@ -5237,62 +3140,45 @@
 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;
@@ -5302,11 +3188,6 @@
 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_;
@@ -5314,11 +3195,7 @@
 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;
@@ -5332,7 +3209,6 @@
 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_;
@@ -5341,25 +3217,16 @@
 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_;
@@ -5368,18 +3235,15 @@
 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__;
@@ -5391,78 +3255,45 @@
 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_;
@@ -5483,11 +3314,9 @@
 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;
@@ -5495,25 +3324,14 @@
 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;
@@ -5523,19 +3341,12 @@
 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_;
@@ -5549,36 +3360,22 @@
 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;
@@ -5590,26 +3387,14 @@
 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__;
@@ -5617,7 +3402,6 @@
 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_;
@@ -5629,26 +3413,16 @@
 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_;
@@ -5658,7 +3432,6 @@
 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_;
@@ -5667,14 +3440,9 @@
 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_;
@@ -5684,87 +3452,54 @@
 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__;
@@ -5785,7 +3520,6 @@
 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;
@@ -5797,35 +3531,21 @@
 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_;
@@ -5837,47 +3557,25 @@
 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_;
@@ -5885,14 +3583,9 @@
 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;
@@ -5900,57 +3593,31 @@
 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_;
@@ -5960,27 +3627,21 @@
 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;
@@ -5989,49 +3650,29 @@
 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_;
@@ -6039,18 +3680,11 @@
 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_;
@@ -6062,14 +3696,11 @@
 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;
@@ -6078,29 +3709,18 @@
 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_;
@@ -6112,161 +3732,104 @@
 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_;
@@ -6276,64 +3839,38 @@
 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_;
@@ -6345,53 +3882,32 @@
 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__;
@@ -6401,30 +3917,20 @@
 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;
@@ -6433,20 +3939,12 @@
 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_;
@@ -6454,34 +3952,23 @@
 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_;
@@ -6490,29 +3977,21 @@
 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_;
@@ -6522,26 +4001,17 @@
 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_;
@@ -6550,7 +4020,6 @@
 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_;
@@ -6563,7 +4032,6 @@
 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_;
@@ -6571,14 +4039,10 @@
 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;
@@ -6602,13 +4066,9 @@
 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_;
@@ -6620,7 +4080,6 @@
 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_;
@@ -6629,18 +4088,7 @@
 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_;
@@ -6650,7 +4098,6 @@
 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_;
@@ -6667,18 +4114,11 @@
 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;
@@ -6688,22 +4128,13 @@
 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_;
@@ -6730,7 +4161,6 @@
 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_;
@@ -6740,34 +4170,26 @@
 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__;
@@ -6776,9 +4198,7 @@
 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_;
@@ -6790,11 +4210,8 @@
 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_;
@@ -6804,11 +4221,8 @@
 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_;
@@ -6849,7 +4263,6 @@
 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_;
@@ -6859,54 +4272,37 @@
 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_;
@@ -6918,42 +4314,23 @@
 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;
@@ -6979,12 +4356,9 @@
 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_;
@@ -6996,15 +4370,11 @@
 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;
@@ -7012,7 +4382,6 @@
 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__;
@@ -7022,7 +4391,6 @@
 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_;
@@ -7055,7 +4423,6 @@
 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_;
@@ -7073,7 +4440,6 @@
 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_;
@@ -7107,7 +4473,5 @@
 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/sparcWorks.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/solaris/makefiles/sparcWorks.make	Tue Jul 28 13:50:07 2009 -0600
@@ -46,7 +46,7 @@
 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p')
 
 # Pick which compiler is validated
-ifeq ($(JDK_MINOR_VERSION),6)
+ifeq ($(JRE_RELEASE_VER),1.6.0)
   # Validated compiler for JDK6 is SS11 (5.8)
   VALIDATED_COMPILER_REV   := 5.8
   VALIDATED_C_COMPILER_REV := 5.8
@@ -101,18 +101,9 @@
 
 # New architecture options started in SS12 (5.9), we need both styles to build.
 #   The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as.
-#   Note: SS12 default for 32bit sparc is now the same as v8plus, so the
-#         settings below have changed all SS12 32bit sparc builds to be v8plus.
-#         The older SS11 (5.8) settings have remained as they always have been.
-ifeq ($(TYPE),COMPILER2)
-  ARCHFLAG_OLD/sparc   = -xarch=v8plus
-else
-  ifeq ($(TYPE),TIERED)
-    ARCHFLAG_OLD/sparc = -xarch=v8plus
-  else
-    ARCHFLAG_OLD/sparc = -xarch=v8
-  endif
-endif
+#   Note: default for 32bit sparc is now the same as v8plus, so the
+#         settings below have changed all 32bit sparc builds to be v8plus.
+ARCHFLAG_OLD/sparc   = -xarch=v8plus
 ARCHFLAG_NEW/sparc   = -m32 -xarch=sparc
 ARCHFLAG_OLD/sparcv9 = -xarch=v9
 ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc
--- a/make/windows/build_vm_def.sh	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/build_vm_def.sh	Tue Jul 28 13:50:07 2009 -0600
@@ -52,6 +52,19 @@
 RM="$MKS_HOME/rm.exe"
 DUMPBIN="link.exe /dump"
 
+# When called from IDE the first param should contain the link version, otherwise may be nill
+if [ "x$1" != "x" ]; then
+LINK_VER="$1"
+fi
+
+if [ "x$LINK_VER" != "x800" -a  "x$LINK_VER" != "x900" ]; then
 $DUMPBIN /symbols *.obj | "$GREP" "??_7.*@@6B@" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
+else
+# Can't use pipes when calling cl.exe or link.exe from IDE. Using transit file vm3.def
+$DUMPBIN /OUT:vm3.def /symbols *.obj 
+"$CAT" vm3.def | "$GREP" "??_7.*@@6B@" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
+"$RM" -f vm3.def
+fi
+
 "$CAT" vm1.def vm2.def > vm.def
 "$RM" -f vm1.def vm2.def
--- a/make/windows/create.bat	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/create.bat	Tue Jul 28 13:50:07 2009 -0600
@@ -72,12 +72,20 @@
 for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i
 
 echo **************************************************************
+set ProjectFile=vm.vcproj
 if "%MSC_VER%" == "1200" (
 set ProjectFile=vm.dsp
 echo Will generate VC6 project {unsupported}
 ) else (
-set ProjectFile=vm.vcproj
-echo Will generate VC7 project
+if "%MSC_VER%" == "1400" (
+echo Will generate VC8 {Visual Studio 2005}
+) else (
+if "%MSC_VER%" == "1500" (
+echo Will generate VC9 {Visual Studio 2008}
+) else (
+echo Will generate VC7 project {Visual Studio 2003 .NET}
+)
+)
 )
 echo                            %ProjectFile%
 echo **************************************************************
--- a/make/windows/get_msc_ver.sh	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/get_msc_ver.sh	Tue Jul 28 13:50:07 2009 -0600
@@ -29,6 +29,7 @@
 # cl version 13.10.3077 returns "MSC_VER=1310"
 # cl version 14.00.30701 returns "MSC_VER=1399" (OLD_MSSDK version)
 # cl version 14.00.40310.41 returns "MSC_VER=1400"
+# cl version 15.00.21022.8 returns "MSC_VER=1500"
 
 # Note that we currently do not have a way to set HotSpotMksHome in
 # the batch build, but so far this has not seemed to be a problem. The
--- a/make/windows/makefiles/adlc.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/adlc.make	Tue Jul 28 13:50:07 2009 -0600
@@ -46,6 +46,7 @@
 ADLCFLAGS=-q -T -U_LP64
 !endif
 
+CPP_FLAGS=$(CPP_FLAGS) /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE  
 
 CPP_INCLUDE_DIRS=\
   /I "..\generated"                          \
--- a/make/windows/makefiles/compile.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/compile.make	Tue Jul 28 13:50:07 2009 -0600
@@ -170,10 +170,6 @@
 # Manifest Tool - used in VS2005 and later to adjust manifests stored
 # as resources inside build artifacts.
 MT=mt.exe
-!if "$(BUILDARCH)" == "i486"
-# VS2005 on x86 restricts the use of certain libc functions without this
-CPP_FLAGS=$(CPP_FLAGS) /D _CRT_SECURE_NO_DEPRECATE
-!endif
 !endif
 
 !if "$(COMPILER_NAME)" == "VS2008"
@@ -185,10 +181,6 @@
 # Manifest Tool - used in VS2005 and later to adjust manifests stored
 # as resources inside build artifacts.
 MT=mt.exe
-!if "$(BUILDARCH)" == "i486"
-# VS2005 on x86 restricts the use of certain libc functions without this
-CPP_FLAGS=$(CPP_FLAGS) /D _CRT_SECURE_NO_DEPRECATE
-!endif
 !endif
 
 # Compile for space above time.
--- a/make/windows/makefiles/makedeps.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/makedeps.make	Tue Jul 28 13:50:07 2009 -0600
@@ -48,6 +48,8 @@
         $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatform.java \
         $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC6.java \
         $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC7.java \
+        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC8.java \
+        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC9.java \
         $(WorkSpace)\src\share\tools\MakeDeps\Util.java \
         $(WorkSpace)\src\share\tools\MakeDeps\BuildConfig.java \
         $(WorkSpace)\src\share\tools\MakeDeps\ArgsParser.java
@@ -121,7 +123,7 @@
         -additionalFile includeDB_gc_shared \
         -additionalFile includeDB_gc_serial \
         -additionalGeneratedFile $(HOTSPOTBUILDSPACE)\%f\%b vm.def \
-        -prelink  "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b	$(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh" \
+        -prelink  "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b	set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME)	$(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(LINK_VER)" \
        $(MakeDepsIncludesPRIVATE)
 
 # Add in build-specific options
--- a/make/windows/makefiles/rules.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/rules.make	Tue Jul 28 13:50:07 2009 -0600
@@ -42,10 +42,23 @@
 BOOT_JAVA_HOME=
 !endif
 
+ProjectFile=vm.vcproj
+
 !if "$(MSC_VER)" == "1200"
+
 VcVersion=VC6
 ProjectFile=vm.dsp
+
+!elseif "$(MSC_VER)" == "1400"
+
+VcVersion=VC8
+
+!elseif "$(MSC_VER)" == "1500"
+
+VcVersion=VC9
+
 !else
+
 VcVersion=VC7
-ProjectFile=vm.vcproj
+
 !endif
--- a/make/windows/makefiles/sa.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/sa.make	Tue Jul 28 13:50:07 2009 -0600
@@ -89,9 +89,11 @@
 SA_CFLAGS = /nologo $(MS_RUNTIME_OPTION) /W3 $(GX_OPTION) /Od /D "WIN32" /D "WIN64" /D "_WINDOWS" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
 !elseif "$(BUILDARCH)" == "amd64"
 SA_CFLAGS = /nologo $(MS_RUNTIME_OPTION) /W3 $(GX_OPTION) /Od /D "WIN32" /D "WIN64" /D "_WINDOWS" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+!if "$(COMPILER_NAME)" == "VS2005"
 # On amd64, VS2005 compiler requires bufferoverflowU.lib on the link command line, 
 # otherwise we get missing __security_check_cookie externals at link time. 
 SA_LINK_FLAGS = bufferoverflowU.lib
+!endif
 !else
 SA_CFLAGS = /nologo $(MS_RUNTIME_OPTION) /W3 /Gm $(GX_OPTION) /ZI /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
 !endif
--- a/make/windows/makefiles/sanity.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/sanity.make	Tue Jul 28 13:50:07 2009 -0600
@@ -27,9 +27,9 @@
 all: checkCL checkLink
 
 checkCL:
-	@ if "$(MSC_VER)" NEQ "1310" if "$(MSC_VER)" NEQ "1399" if "$(MSC_VER)" NEQ "1400" \
+	@ if "$(MSC_VER)" NEQ "1310" if "$(MSC_VER)" NEQ "1399" if "$(MSC_VER)" NEQ "1400" if "$(MSC_VER)" NEQ "1500" \
 	echo *** WARNING *** unrecognized cl.exe version $(MSC_VER) ($(RAW_MSC_VER)).  Use FORCE_MSC_VER to override automatic detection.
 
 checkLink:
-	@ if "$(LINK_VER)" NEQ "710" if "$(LINK_VER)" NEQ "800" \
+	@ if "$(LINK_VER)" NEQ "710" if "$(LINK_VER)" NEQ "800" if "$(LINK_VER)" NEQ "900" \
 	echo *** WARNING *** unrecognized link.exe version $(LINK_VER) ($(RAW_LINK_VER)).  Use FORCE_LINK_VER to override automatic detection.
--- a/make/windows/makefiles/vm.make	Tue Jul 28 13:35:00 2009 -0600
+++ b/make/windows/makefiles/vm.make	Tue Jul 28 13:50:07 2009 -0600
@@ -55,10 +55,16 @@
 CPP_FLAGS=$(CPP_FLAGS) /D "COMPILER1" /D "COMPILER2"
 !endif
 
+!if "$(BUILDARCH)" == "i486"
+HOTSPOT_LIB_ARCH=i386
+!else
+HOTSPOT_LIB_ARCH=$(BUILDARCH)
+!endif
+
 # The following variables are defined in the generated local.make file.
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_RELEASE_VERSION=\"$(HS_BUILD_VER)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "JRE_RELEASE_VERSION=\"$(JRE_RELEASE_VER)\""
-CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(BUILDARCH)\""
+CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\""
 CPP_FLAGS=$(CPP_FLAGS) /D "HOTSPOT_VM_DISTRO=\"$(HOTSPOT_VM_DISTRO)\""
--- a/src/cpu/sparc/vm/assembler_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/assembler_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,24 +25,36 @@
 #include "incls/_precompiled.incl"
 #include "incls/_assembler_sparc.cpp.incl"
 
-// Implementation of Address
-
-Address::Address( addr_type t, int which ) {
-  switch (t) {
-   case extra_in_argument:
-   case extra_out_argument:
-     _base = t == extra_in_argument ? FP : SP;
-     _hi   = 0;
-// Warning:  In LP64 mode, _disp will occupy more than 10 bits.
-//           This is inconsistent with the other constructors but op
-//           codes such as ld or ldx, only access disp() to get their
-//           simm13 argument.
-     _disp = ((which - Argument::n_register_parameters + frame::memory_parameter_word_sp_offset) * BytesPerWord) + STACK_BIAS;
-    break;
-   default:
-    ShouldNotReachHere();
-    break;
+// 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) {
+  assert(scale == 0, "not supported");
+  RelocationHolder rspec;
+  if (disp_is_oop) {
+    rspec = Relocation::spec_simple(relocInfo::oop_type);
   }
+
+  Register rindex = as_Register(index);
+  if (rindex != G0) {
+    Address madr(as_Register(base), rindex);
+    madr._rspec = rspec;
+    return madr;
+  } else {
+    Address madr(as_Register(base), disp);
+    madr._rspec = rspec;
+    return madr;
+  }
+}
+
+Address Argument::address_in_frame() const {
+  // Warning: In LP64 mode disp will occupy more than 10 bits, but
+  //          op codes such as ld or ldx, only access disp() to get
+  //          their simm13 argument.
+  int disp = ((_number - Argument::n_register_parameters + frame::memory_parameter_word_sp_offset) * BytesPerWord) + STACK_BIAS;
+  if (is_in())
+    return Address(FP, disp); // In argument.
+  else
+    return Address(SP, disp); // Out argument.
 }
 
 static const char* argumentNames[][2] = {
@@ -614,16 +626,17 @@
 }
 
 // This code sequence is relocatable to any address, even on LP64.
-void MacroAssembler::jumpl( Address& a, Register d, int offset, const char* file, int line ) {
+void MacroAssembler::jumpl(AddressLiteral& addrlit, Register temp, Register d, int offset, const char* file, int line) {
   assert_not_delayed();
   // Force fixed length sethi because NativeJump and NativeFarCall don't handle
   // variable length instruction streams.
-  sethi(a, /*ForceRelocatable=*/ true);
+  patchable_sethi(addrlit, temp);
+  Address a(temp, addrlit.low10() + offset);  // Add the offset to the displacement.
   if (TraceJumps) {
 #ifndef PRODUCT
     // Must do the add here so relocation can find the remainder of the
     // value to be relocated.
-    add(a.base(), a.disp() + offset, a.base(), a.rspec(offset));
+    add(a.base(), a.disp(), a.base(), addrlit.rspec(offset));
     save_frame(0);
     verify_thread();
     ld(G2_thread, in_bytes(JavaThread::jmp_ring_index_offset()), O0);
@@ -652,15 +665,15 @@
     restore();
     jmpl(a.base(), G0, d);
 #else
-    jmpl(a, d, offset);
+    jmpl(a.base(), a.disp(), d);
 #endif /* PRODUCT */
   } else {
-    jmpl(a, d, offset);
+    jmpl(a.base(), a.disp(), d);
   }
 }
 
-void MacroAssembler::jump( Address& a, int offset, const char* file, int line ) {
-  jumpl( a, G0, offset, file, line );
+void MacroAssembler::jump(AddressLiteral& addrlit, Register temp, int offset, const char* file, int line) {
+  jumpl(addrlit, temp, G0, offset, file, line);
 }
 
 
@@ -678,7 +691,8 @@
     st_ptr(savePtr.as_register(), savePtr.address_in_frame());
   }
   // return the address of the first memory slot
-  add(inArg.address_in_frame(), d);
+  Address a = inArg.address_in_frame();
+  add(a.base(), a.disp(), d);
 }
 
 // Conditional breakpoint (for assertion checks in assembly code)
@@ -702,7 +716,6 @@
 // offset to write to within the page. This minimizes bus traffic
 // due to cache line collision.
 void MacroAssembler::serialize_memory(Register thread, Register tmp1, Register tmp2) {
-  Address mem_serialize_page(tmp1, os::get_memory_serialize_page());
   srl(thread, os::get_serialize_page_shift_count(), tmp2);
   if (Assembler::is_simm13(os::vm_page_size())) {
     and3(tmp2, (os::vm_page_size() - sizeof(int)), tmp2);
@@ -711,7 +724,7 @@
     set((os::vm_page_size() - sizeof(int)), tmp1);
     and3(tmp2, tmp1, tmp2);
   }
-  load_address(mem_serialize_page);
+  set(os::get_memory_serialize_page(), tmp1);
   st(G0, tmp1, tmp2);
 }
 
@@ -830,10 +843,10 @@
   mov(G3, L2);                  // avoid clobbering G3 also
   mov(G4, L5);                  // avoid clobbering G4
 #ifdef ASSERT
-  Address last_get_thread_addr(L3, (address)&last_get_thread);
-  sethi(last_get_thread_addr);
+  AddressLiteral last_get_thread_addrlit(&last_get_thread);
+  set(last_get_thread_addrlit, L3);
   inc(L4, get_pc(L4) + 2 * BytesPerInstWord); // skip getpc() code + inc + st_ptr to point L4 at call
-  st_ptr(L4, last_get_thread_addr);
+  st_ptr(L4, L3, 0);
 #endif
   call(CAST_FROM_FN_PTR(address, reinitialize_thread), relocInfo::runtime_call_type);
   delayed()->nop();
@@ -919,13 +932,9 @@
 // %%% maybe get rid of [re]set_last_Java_frame
 void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_Java_pc) {
   assert_not_delayed();
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) +
-                         in_bytes(JavaFrameAnchor::flags_offset()));
-  Address pc_addr(G2_thread,
-                  0,
-                  in_bytes(JavaThread::last_Java_pc_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() +
+                           JavaFrameAnchor::flags_offset());
+  Address pc_addr(G2_thread, JavaThread::last_Java_pc_offset());
 
   // Always set last_Java_pc and flags first because once last_Java_sp is visible
   // has_last_Java_frame is true and users will look at the rest of the fields.
@@ -977,22 +986,18 @@
 #endif // ASSERT
   assert( last_java_sp != G4_scratch, "bad register usage in set_last_Java_frame");
   add( last_java_sp, STACK_BIAS, G4_scratch );
-  st_ptr(G4_scratch,    Address(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset())));
+  st_ptr(G4_scratch, G2_thread, JavaThread::last_Java_sp_offset());
 #else
-  st_ptr(last_java_sp,    Address(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset())));
+  st_ptr(last_java_sp, G2_thread, JavaThread::last_Java_sp_offset());
 #endif // _LP64
 }
 
 void MacroAssembler::reset_last_Java_frame(void) {
   assert_not_delayed();
 
-  Address sp_addr(G2_thread, 0, in_bytes(JavaThread::last_Java_sp_offset()));
-  Address pc_addr(G2_thread,
-                  0,
-                  in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::last_Java_pc_offset()));
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address sp_addr(G2_thread, JavaThread::last_Java_sp_offset());
+  Address pc_addr(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::last_Java_pc_offset());
+  Address flags  (G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
 
 #ifdef ASSERT
   // check that it WAS previously set
@@ -1063,7 +1068,7 @@
   check_and_handle_popframe(scratch_reg);
   check_and_handle_earlyret(scratch_reg);
 
-  Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+  Address exception_addr(G2_thread, Thread::pending_exception_offset());
   ld_ptr(exception_addr, scratch_reg);
   br_null(scratch_reg,false,pt,L);
   delayed()->nop();
@@ -1186,7 +1191,7 @@
 
 void MacroAssembler::get_vm_result(Register oop_result) {
   verify_thread();
-  Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+  Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
   ld_ptr(    vm_result_addr, oop_result);
   st_ptr(G0, vm_result_addr);
   verify_oop(oop_result);
@@ -1195,7 +1200,7 @@
 
 void MacroAssembler::get_vm_result_2(Register oop_result) {
   verify_thread();
-  Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+  Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
   ld_ptr(vm_result_addr_2, oop_result);
   st_ptr(G0, vm_result_addr_2);
   verify_oop(oop_result);
@@ -1206,7 +1211,7 @@
 // leave it undisturbed.
 void MacroAssembler::set_vm_result(Register oop_result) {
   verify_thread();
-  Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+  Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
   verify_oop(oop_result);
 
 # ifdef ASSERT
@@ -1234,81 +1239,78 @@
 #else
   srl(obj, CardTableModRefBS::card_shift, obj);
 #endif
-  assert( tmp != obj, "need separate temp reg");
-  Address rs(tmp, (address)byte_map_base);
-  load_address(rs);
-  stb(G0, rs.base(), obj);
+  assert(tmp != obj, "need separate temp reg");
+  set((address) byte_map_base, tmp);
+  stb(G0, tmp, obj);
 }
 
-// %%% Note:  The following six instructions have been moved,
-//            unchanged, from assembler_sparc.inline.hpp.
-//            They will be refactored at a later date.
-
-void MacroAssembler::sethi(intptr_t imm22a,
-                            Register d,
-                            bool ForceRelocatable,
-                            RelocationHolder const& rspec) {
-  Address adr( d, (address)imm22a, rspec );
-  MacroAssembler::sethi( adr, ForceRelocatable );
-}
-
-
-void MacroAssembler::sethi(Address& a, bool ForceRelocatable) {
+
+void MacroAssembler::internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
   address save_pc;
   int shiftcnt;
-  // if addr of local, do not need to load it
-  assert(a.base() != FP  &&  a.base() != SP, "just use ld or st for locals");
 #ifdef _LP64
 # ifdef CHECK_DELAY
-  assert_not_delayed( (char *)"cannot put two instructions in delay slot" );
+  assert_not_delayed((char*) "cannot put two instructions in delay slot");
 # endif
   v9_dep();
-//  ForceRelocatable = 1;
   save_pc = pc();
-  if (a.hi32() == 0 && a.low32() >= 0) {
-    Assembler::sethi(a.low32(), a.base(), a.rspec());
+
+  int msb32 = (int) (addrlit.value() >> 32);
+  int lsb32 = (int) (addrlit.value());
+
+  if (msb32 == 0 && lsb32 >= 0) {
+    Assembler::sethi(lsb32, d, addrlit.rspec());
   }
-  else if (a.hi32() == -1) {
-    Assembler::sethi(~a.low32(), a.base(), a.rspec());
-    xor3(a.base(), ~low10(~0), a.base());
+  else if (msb32 == -1) {
+    Assembler::sethi(~lsb32, d, addrlit.rspec());
+    xor3(d, ~low10(~0), d);
   }
   else {
-    Assembler::sethi(a.hi32(), a.base(), a.rspec() );   // 22
-    if ( a.hi32() & 0x3ff )                     // Any bits?
-      or3( a.base(), a.hi32() & 0x3ff ,a.base() ); // High 32 bits are now in low 32
-    if ( a.low32() & 0xFFFFFC00 ) {             // done?
-      if( (a.low32() >> 20) & 0xfff ) {         // Any bits set?
-        sllx(a.base(), 12, a.base());           // Make room for next 12 bits
-        or3( a.base(), (a.low32() >> 20) & 0xfff,a.base() ); // Or in next 12
-        shiftcnt = 0;                           // We already shifted
+    Assembler::sethi(msb32, d, addrlit.rspec());  // msb 22-bits
+    if (msb32 & 0x3ff)                            // Any bits?
+      or3(d, msb32 & 0x3ff, d);                   // msb 32-bits are now in lsb 32
+    if (lsb32 & 0xFFFFFC00) {                     // done?
+      if ((lsb32 >> 20) & 0xfff) {                // Any bits set?
+        sllx(d, 12, d);                           // Make room for next 12 bits
+        or3(d, (lsb32 >> 20) & 0xfff, d);         // Or in next 12
+        shiftcnt = 0;                             // We already shifted
       }
       else
         shiftcnt = 12;
-      if( (a.low32() >> 10) & 0x3ff ) {
-        sllx(a.base(), shiftcnt+10, a.base());// Make room for last 10 bits
-        or3( a.base(), (a.low32() >> 10) & 0x3ff,a.base() ); // Or in next 10
+      if ((lsb32 >> 10) & 0x3ff) {
+        sllx(d, shiftcnt + 10, d);                // Make room for last 10 bits
+        or3(d, (lsb32 >> 10) & 0x3ff, d);         // Or in next 10
         shiftcnt = 0;
       }
       else
         shiftcnt = 10;
-      sllx(a.base(), shiftcnt+10 , a.base());           // Shift leaving disp field 0'd
+      sllx(d, shiftcnt + 10, d);                  // Shift leaving disp field 0'd
     }
     else
-      sllx( a.base(), 32, a.base() );
+      sllx(d, 32, d);
   }
-  // Pad out the instruction sequence so it can be
-  // patched later.
-  if ( ForceRelocatable || (a.rtype() != relocInfo::none &&
-                            a.rtype() != relocInfo::runtime_call_type) ) {
-    while ( pc() < (save_pc + (7 * BytesPerInstWord )) )
+  // Pad out the instruction sequence so it can be patched later.
+  if (ForceRelocatable || (addrlit.rtype() != relocInfo::none &&
+                           addrlit.rtype() != relocInfo::runtime_call_type)) {
+    while (pc() < (save_pc + (7 * BytesPerInstWord)))
       nop();
   }
 #else
-  Assembler::sethi(a.hi(), a.base(), a.rspec());
+  Assembler::sethi(addrlit.value(), d, addrlit.rspec());
 #endif
-
+}
+
+
+void MacroAssembler::sethi(const AddressLiteral& addrlit, Register d) {
+  internal_sethi(addrlit, d, false);
 }
 
+
+void MacroAssembler::patchable_sethi(const AddressLiteral& addrlit, Register d) {
+  internal_sethi(addrlit, d, true);
+}
+
+
 int MacroAssembler::size_of_sethi(address a, bool worst_case) {
 #ifdef _LP64
   if (worst_case) return 7;
@@ -1339,61 +1341,50 @@
   return size_of_sethi(NULL, true) + 1;
 }
 
-void MacroAssembler::set(intptr_t value, Register d,
-                         RelocationHolder const& rspec) {
-  Address val( d, (address)value, rspec);
-
-  if ( rspec.type() == relocInfo::none ) {
+
+void MacroAssembler::internal_set(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
+  intptr_t value = addrlit.value();
+
+  if (!ForceRelocatable && addrlit.rspec().type() == relocInfo::none) {
     // can optimize
-    if (-4096 <= value  &&  value <= 4095) {
+    if (-4096 <= value && value <= 4095) {
       or3(G0, value, d); // setsw (this leaves upper 32 bits sign-extended)
       return;
     }
     if (inv_hi22(hi22(value)) == value) {
-      sethi(val);
+      sethi(addrlit, d);
       return;
     }
   }
-  assert_not_delayed( (char *)"cannot put two instructions in delay slot" );
-  sethi( val );
-  if (rspec.type() != relocInfo::none || (value & 0x3ff) != 0) {
-    add( d, value &  0x3ff, d, rspec);
+  assert_not_delayed((char*) "cannot put two instructions in delay slot");
+  internal_sethi(addrlit, d, ForceRelocatable);
+  if (ForceRelocatable || addrlit.rspec().type() != relocInfo::none || addrlit.low10() != 0) {
+    add(d, addrlit.low10(), d, addrlit.rspec());
   }
 }
 
-void MacroAssembler::setsw(int value, Register d,
-                           RelocationHolder const& rspec) {
-  Address val( d, (address)value, rspec);
-  if ( rspec.type() == relocInfo::none ) {
-    // can optimize
-    if (-4096 <= value  &&  value <= 4095) {
-      or3(G0, value, d);
-      return;
-    }
-    if (inv_hi22(hi22(value)) == value) {
-      sethi( val );
-#ifndef _LP64
-      if ( value < 0 ) {
-        assert_not_delayed();
-        sra (d, G0, d);
-      }
-#endif
-      return;
-    }
-  }
-  assert_not_delayed();
-  sethi( val );
-  add( d, value &  0x3ff, d, rspec);
-
-  // (A negative value could be loaded in 2 insns with sethi/xor,
-  // but it would take a more complex relocation.)
-#ifndef _LP64
-  if ( value < 0)
-    sra(d, G0, d);
-#endif
+void MacroAssembler::set(const AddressLiteral& al, Register d) {
+  internal_set(al, d, false);
+}
+
+void MacroAssembler::set(intptr_t value, Register d) {
+  AddressLiteral al(value);
+  internal_set(al, d, false);
 }
 
-// %%% End of moved six set instructions.
+void MacroAssembler::set(address addr, Register d, RelocationHolder const& rspec) {
+  AddressLiteral al(addr, rspec);
+  internal_set(al, d, false);
+}
+
+void MacroAssembler::patchable_set(const AddressLiteral& al, Register d) {
+  internal_set(al, d, true);
+}
+
+void MacroAssembler::patchable_set(intptr_t value, Register d) {
+  AddressLiteral al(value);
+  internal_set(al, d, true);
+}
 
 
 void MacroAssembler::set64(jlong value, Register d, Register tmp) {
@@ -1512,17 +1503,17 @@
 }
 
 
-Address MacroAssembler::allocate_oop_address(jobject obj, Register d) {
+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 Address(d, address(obj), oop_Relocation::spec(oop_index));
+  return AddressLiteral(obj, oop_Relocation::spec(oop_index));
 }
 
 
-Address MacroAssembler::constant_oop_address(jobject obj, Register d) {
+AddressLiteral MacroAssembler::constant_oop_address(jobject obj) {
   assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
   int oop_index = oop_recorder()->find_index(obj);
-  return Address(d, address(obj), oop_Relocation::spec(oop_index));
+  return AddressLiteral(obj, oop_Relocation::spec(oop_index));
 }
 
 void  MacroAssembler::set_narrow_oop(jobject obj, Register d) {
@@ -1682,7 +1673,7 @@
   sprintf(real_msg, "%s%s(%s:%d)", msg, buffer, file, line);
 
   // Call indirectly to solve generation ordering problem
-  Address a(O7, (address)StubRoutines::verify_oop_subroutine_entry_address());
+  AddressLiteral a(StubRoutines::verify_oop_subroutine_entry_address());
 
   // Make some space on stack above the current register window.
   // Enough to hold 8 64-bit registers.
@@ -1718,7 +1709,7 @@
   sprintf(real_msg, "%s at SP+%d (%s:%d)", msg, addr.disp(), file, line);
 
   // Call indirectly to solve generation ordering problem
-  Address a(O7, (address)StubRoutines::verify_oop_subroutine_entry_address());
+  AddressLiteral a(StubRoutines::verify_oop_subroutine_entry_address());
 
   // Make some space on stack above the current register window.
   // Enough to hold 8 64-bit registers.
@@ -1772,11 +1763,7 @@
   { // count number of verifies
     Register O2_adr   = O2;
     Register O3_accum = O3;
-    Address count_addr( O2_adr, (address) StubRoutines::verify_oop_count_addr() );
-    sethi(count_addr);
-    ld(count_addr, O3_accum);
-    inc(O3_accum);
-    st(O3_accum, count_addr);
+    inc_counter(StubRoutines::verify_oop_count_addr(), O2_adr, O3_accum);
   }
 
   Register O2_mask = O2;
@@ -1870,8 +1857,8 @@
   assert(StubRoutines::Sparc::stop_subroutine_entry_address(), "hasn't been generated yet");
 
   // call indirectly to solve generation ordering problem
-  Address a(O5, (address)StubRoutines::Sparc::stop_subroutine_entry_address());
-  load_ptr_contents(a, O5);
+  AddressLiteral al(StubRoutines::Sparc::stop_subroutine_entry_address());
+  load_ptr_contents(al, O5);
   jmpl(O5, 0, O7);
   delayed()->nop();
 }
@@ -1891,7 +1878,7 @@
     assert(StubRoutines::Sparc::stop_subroutine_entry_address(), "hasn't been generated yet");
 
     // call indirectly to solve generation ordering problem
-    Address a(O5, (address)StubRoutines::Sparc::stop_subroutine_entry_address());
+    AddressLiteral a(StubRoutines::Sparc::stop_subroutine_entry_address());
     load_ptr_contents(a, O5);
     jmpl(O5, 0, O7);
     delayed()->nop();
@@ -2003,7 +1990,7 @@
   subcc( Rparam_words, Argument::n_register_parameters, Rresult); // how many mem words?
   Label no_extras;
   br( negative, true, pt, no_extras ); // if neg, clear reg
-  delayed()->set( 0, Rresult);         // annuled, so only if taken
+  delayed()->set(0, Rresult);          // annuled, so only if taken
   bind( no_extras );
 }
 
@@ -2615,6 +2602,472 @@
   }
 }
 
+RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
+                                                      Register tmp,
+                                                      int offset) {
+  intptr_t value = *delayed_value_addr;
+  if (value != 0)
+    return RegisterOrConstant(value + offset);
+
+  // load indirectly to solve generation ordering problem
+  AddressLiteral a(delayed_value_addr);
+  load_ptr_contents(a, tmp);
+
+#ifdef ASSERT
+  tst(tmp);
+  breakpoint_trap(zero, xcc);
+#endif
+
+  if (offset != 0)
+    add(tmp, offset, tmp);
+
+  return RegisterOrConstant(tmp);
+}
+
+
+void MacroAssembler::regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) {
+  assert(dest.register_or_noreg() != G0, "lost side effect");
+  if ((src.is_constant() && src.as_constant() == 0) ||
+      (src.is_register() && src.as_register() == G0)) {
+    // do nothing
+  } else if (dest.is_register()) {
+    add(dest.as_register(), ensure_rs2(src, temp), dest.as_register());
+  } else if (src.is_constant()) {
+    intptr_t res = dest.as_constant() + src.as_constant();
+    dest = RegisterOrConstant(res); // side effect seen by caller
+  } else {
+    assert(temp != noreg, "cannot handle constant += register");
+    add(src.as_register(), ensure_rs2(dest, temp), temp);
+    dest = RegisterOrConstant(temp); // side effect seen by caller
+  }
+}
+
+void MacroAssembler::regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) {
+  assert(dest.register_or_noreg() != G0, "lost side effect");
+  if (!is_simm13(src.constant_or_zero()))
+    src = (src.as_constant() & 0xFF);
+  if ((src.is_constant() && src.as_constant() == 0) ||
+      (src.is_register() && src.as_register() == G0)) {
+    // do nothing
+  } else if (dest.is_register()) {
+    sll_ptr(dest.as_register(), src, dest.as_register());
+  } else if (src.is_constant()) {
+    intptr_t res = dest.as_constant() << src.as_constant();
+    dest = RegisterOrConstant(res); // side effect seen by caller
+  } else {
+    assert(temp != noreg, "cannot handle constant <<= register");
+    set(dest.as_constant(), temp);
+    sll_ptr(temp, src, temp);
+    dest = RegisterOrConstant(temp); // side effect seen by caller
+  }
+}
+
+
+// Look up the method for a megamorphic invokeinterface call.
+// The target method is determined by <intf_klass, itable_index>.
+// The receiver klass is in recv_klass.
+// On success, the result will be in method_result, and execution falls through.
+// On failure, execution transfers to the given label.
+void MacroAssembler::lookup_interface_method(Register recv_klass,
+                                             Register intf_klass,
+                                             RegisterOrConstant itable_index,
+                                             Register method_result,
+                                             Register scan_temp,
+                                             Register sethi_temp,
+                                             Label& L_no_such_interface) {
+  assert_different_registers(recv_klass, intf_klass, method_result, scan_temp);
+  assert(itable_index.is_constant() || itable_index.as_register() == method_result,
+         "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 scan_step   = itableOffsetEntry::size() * wordSize;
+  int vte_size    = vtableEntry::size() * wordSize;
+
+  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.
+
+  int round_to_unit = ((HeapWordsPerLong > 1) ? BytesPerLong : 0);
+  int itb_offset = vtable_base;
+  if (round_to_unit != 0) {
+    // hoist first instruction of round_to(scan_temp, BytesPerLong):
+    itb_offset += round_to_unit - wordSize;
+  }
+  int itb_scale = exact_log2(vtableEntry::size() * wordSize);
+  sll(scan_temp, itb_scale,  scan_temp);
+  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!
+    // Was: round_to(scan_temp, BytesPerLong);
+    // Hoisted: add(scan_temp, BytesPerLong-1, scan_temp);
+    and3(scan_temp, -round_to_unit, scan_temp);
+  }
+  add(recv_klass, scan_temp, scan_temp);
+
+  // Adjust recv_klass by scaled itable_index, so we can free itable_index.
+  RegisterOrConstant itable_offset = itable_index;
+  regcon_sll_ptr(itable_offset, exact_log2(itableMethodEntry::size() * wordSize));
+  regcon_inc_ptr(itable_offset, itableMethodEntry::method_offset_in_bytes());
+  add(recv_klass, ensure_rs2(itable_offset, sethi_temp), recv_klass);
+
+  // for (scan = klass->itable(); scan->interface() != NULL; scan += scan_step) {
+  //   if (scan->interface() == intf) {
+  //     result = (klass + scan->offset() + itable_index);
+  //   }
+  // }
+  Label search, found_method;
+
+  for (int peel = 1; peel >= 0; peel--) {
+    // %%%% Could load both offset and interface in one ldx, if they were
+    // in the opposite order.  This would save a load.
+    ld_ptr(scan_temp, itableOffsetEntry::interface_offset_in_bytes(), method_result);
+
+    // Check that this entry is non-null.  A null entry means that
+    // the receiver class doesn't implement the interface, and wasn't the
+    // same as when the caller was compiled.
+    bpr(Assembler::rc_z, false, Assembler::pn, method_result, L_no_such_interface);
+    delayed()->cmp(method_result, intf_klass);
+
+    if (peel) {
+      brx(Assembler::equal,    false, Assembler::pt, found_method);
+    } else {
+      brx(Assembler::notEqual, false, Assembler::pn, search);
+      // (invert the test to fall through to found_method...)
+    }
+    delayed()->add(scan_temp, scan_step, scan_temp);
+
+    if (!peel)  break;
+
+    bind(search);
+  }
+
+  bind(found_method);
+
+  // Got a hit.
+  int ito_offset = itableOffsetEntry::offset_offset_in_bytes();
+  // scan_temp[-scan_step] points to the vtable offset we need
+  ito_offset -= scan_step;
+  lduw(scan_temp, ito_offset, scan_temp);
+  ld_ptr(recv_klass, scan_temp, method_result);
+}
+
+
+void MacroAssembler::check_klass_subtype(Register sub_klass,
+                                         Register super_klass,
+                                         Register temp_reg,
+                                         Register temp2_reg,
+                                         Label& L_success) {
+  Label L_failure, L_pop_to_failure;
+  check_klass_subtype_fast_path(sub_klass, super_klass,
+                                temp_reg, temp2_reg,
+                                &L_success, &L_failure, NULL);
+  Register sub_2 = sub_klass;
+  Register sup_2 = super_klass;
+  if (!sub_2->is_global())  sub_2 = L0;
+  if (!sup_2->is_global())  sup_2 = L1;
+
+  save_frame_and_mov(0, sub_klass, sub_2, super_klass, sup_2);
+  check_klass_subtype_slow_path(sub_2, sup_2,
+                                L2, L3, L4, L5,
+                                NULL, &L_pop_to_failure);
+
+  // on success:
+  restore();
+  ba(false, L_success);
+  delayed()->nop();
+
+  // on failure:
+  bind(L_pop_to_failure);
+  restore();
+  bind(L_failure);
+}
+
+
+void MacroAssembler::check_klass_subtype_fast_path(Register sub_klass,
+                                                   Register super_klass,
+                                                   Register temp_reg,
+                                                   Register temp2_reg,
+                                                   Label* L_success,
+                                                   Label* L_failure,
+                                                   Label* L_slow_path,
+                                        RegisterOrConstant super_check_offset,
+                                        Register instanceof_hack) {
+  int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_super_cache_offset_in_bytes());
+  int sco_offset = (klassOopDesc::header_size() * HeapWordSize +
+                    Klass::super_check_offset_offset_in_bytes());
+
+  bool must_load_sco  = (super_check_offset.constant_or_zero() == -1);
+  bool need_slow_path = (must_load_sco ||
+                         super_check_offset.constant_or_zero() == sco_offset);
+
+  assert_different_registers(sub_klass, super_klass, temp_reg);
+  if (super_check_offset.is_register()) {
+    assert_different_registers(sub_klass, super_klass,
+                               super_check_offset.as_register());
+  } else if (must_load_sco) {
+    assert(temp2_reg != noreg, "supply either a temp or a register offset");
+  }
+
+  Label L_fallthrough;
+  int label_nulls = 0;
+  if (L_success == NULL)   { L_success   = &L_fallthrough; label_nulls++; }
+  if (L_failure == NULL)   { L_failure   = &L_fallthrough; label_nulls++; }
+  if (L_slow_path == NULL) { L_slow_path = &L_fallthrough; label_nulls++; }
+  assert(label_nulls <= 1 || instanceof_hack != noreg ||
+         (L_slow_path == &L_fallthrough && label_nulls <= 2 && !need_slow_path),
+         "at most one NULL in the batch, usually");
+
+  // Support for the instanceof hack, which uses delay slots to
+  // set a destination register to zero or one.
+  bool do_bool_sets = (instanceof_hack != noreg);
+#define BOOL_SET(bool_value)                            \
+  if (do_bool_sets && bool_value >= 0)                  \
+    set(bool_value, instanceof_hack)
+#define DELAYED_BOOL_SET(bool_value)                    \
+  if (do_bool_sets && bool_value >= 0)                  \
+    delayed()->set(bool_value, instanceof_hack);        \
+  else delayed()->nop()
+  // Hacked ba(), which may only be used just before L_fallthrough.
+#define FINAL_JUMP(label, bool_value)                   \
+  if (&(label) == &L_fallthrough) {                     \
+    BOOL_SET(bool_value);                               \
+  } else {                                              \
+    ba((do_bool_sets && bool_value >= 0), label);       \
+    DELAYED_BOOL_SET(bool_value);                       \
+  }
+
+  // If the pointers are equal, we are done (e.g., String[] elements).
+  // This self-check enables sharing of secondary supertype arrays among
+  // non-primary types such as array-of-interface.  Otherwise, each such
+  // type would need its own customized SSA.
+  // We move this check to the front of the fast path because many
+  // type checks are in fact trivially successful in this manner,
+  // so we get a nicely predicted branch right at the start of the check.
+  cmp(super_klass, sub_klass);
+  brx(Assembler::equal, do_bool_sets, Assembler::pn, *L_success);
+  DELAYED_BOOL_SET(1);
+
+  // Check the supertype display:
+  if (must_load_sco) {
+    // The super check offset is always positive...
+    lduw(super_klass, sco_offset, temp2_reg);
+    super_check_offset = RegisterOrConstant(temp2_reg);
+  }
+  ld_ptr(sub_klass, super_check_offset, temp_reg);
+  cmp(super_klass, temp_reg);
+
+  // This check has worked decisively for primary supers.
+  // Secondary supers are sought in the super_cache ('super_cache_addr').
+  // (Secondary supers are interfaces and very deeply nested subtypes.)
+  // This works in the same check above because of a tricky aliasing
+  // between the super_cache and the primary super display elements.
+  // (The 'super_check_addr' can address either, as the case requires.)
+  // Note that the cache is updated below if it does not help us find
+  // what we need immediately.
+  // So if it was a primary super, we can just fail immediately.
+  // Otherwise, it's the slow path for us (no success at this point).
+
+  if (super_check_offset.is_register()) {
+    brx(Assembler::equal, do_bool_sets, Assembler::pn, *L_success);
+    delayed(); if (do_bool_sets)  BOOL_SET(1);
+    // if !do_bool_sets, sneak the next cmp into the delay slot:
+    cmp(super_check_offset.as_register(), sc_offset);
+
+    if (L_failure == &L_fallthrough) {
+      brx(Assembler::equal, do_bool_sets, Assembler::pt, *L_slow_path);
+      delayed()->nop();
+      BOOL_SET(0);  // fallthrough on failure
+    } else {
+      brx(Assembler::notEqual, do_bool_sets, Assembler::pn, *L_failure);
+      DELAYED_BOOL_SET(0);
+      FINAL_JUMP(*L_slow_path, -1);  // -1 => vanilla delay slot
+    }
+  } else if (super_check_offset.as_constant() == sc_offset) {
+    // Need a slow path; fast failure is impossible.
+    if (L_slow_path == &L_fallthrough) {
+      brx(Assembler::equal, do_bool_sets, Assembler::pt, *L_success);
+      DELAYED_BOOL_SET(1);
+    } else {
+      brx(Assembler::notEqual, false, Assembler::pn, *L_slow_path);
+      delayed()->nop();
+      FINAL_JUMP(*L_success, 1);
+    }
+  } else {
+    // No slow path; it's a fast decision.
+    if (L_failure == &L_fallthrough) {
+      brx(Assembler::equal, do_bool_sets, Assembler::pt, *L_success);
+      DELAYED_BOOL_SET(1);
+      BOOL_SET(0);
+    } else {
+      brx(Assembler::notEqual, do_bool_sets, Assembler::pn, *L_failure);
+      DELAYED_BOOL_SET(0);
+      FINAL_JUMP(*L_success, 1);
+    }
+  }
+
+  bind(L_fallthrough);
+
+#undef final_jump
+#undef bool_set
+#undef DELAYED_BOOL_SET
+#undef final_jump
+}
+
+
+void MacroAssembler::check_klass_subtype_slow_path(Register sub_klass,
+                                                   Register super_klass,
+                                                   Register count_temp,
+                                                   Register scan_temp,
+                                                   Register scratch_reg,
+                                                   Register coop_reg,
+                                                   Label* L_success,
+                                                   Label* L_failure) {
+  assert_different_registers(sub_klass, super_klass,
+                             count_temp, scan_temp, scratch_reg, coop_reg);
+
+  Label L_fallthrough, L_loop;
+  int label_nulls = 0;
+  if (L_success == NULL)   { L_success   = &L_fallthrough; label_nulls++; }
+  if (L_failure == NULL)   { L_failure   = &L_fallthrough; label_nulls++; }
+  assert(label_nulls <= 1, "at most one NULL in the batch");
+
+  // a couple of useful fields in sub_klass:
+  int ss_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_supers_offset_in_bytes());
+  int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_super_cache_offset_in_bytes());
+
+  // Do a linear scan of the secondary super-klass chain.
+  // This code is rarely used, so simplicity is a virtue here.
+
+#ifndef PRODUCT
+  int* pst_counter = &SharedRuntime::_partial_subtype_ctr;
+  inc_counter((address) pst_counter, count_temp, scan_temp);
+#endif
+
+  // 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);
+
+  // Check for empty secondary super list
+  tst(count_temp);
+
+  // 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");
+
+  // 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
+
+  // 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);
+
+  // A miss means we are NOT a subtype and need to keep looping
+  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);
+
+  if (L_success != &L_fallthrough) {
+    ba(false, *L_success);
+    delayed()->nop();
+  }
+
+  bind(L_fallthrough);
+}
+
+
+
+
+void MacroAssembler::check_method_handle_type(Register mtype_reg, Register mh_reg,
+                                              Register temp_reg,
+                                              Label& wrong_method_type) {
+  assert_different_registers(mtype_reg, mh_reg, temp_reg);
+  // compare method type against that of the receiver
+  RegisterOrConstant mhtype_offset = delayed_value(java_dyn_MethodHandle::type_offset_in_bytes, temp_reg);
+  ld_ptr(mh_reg, mhtype_offset, temp_reg);
+  cmp(temp_reg, mtype_reg);
+  br(Assembler::notEqual, false, Assembler::pn, wrong_method_type);
+  delayed()->nop();
+}
+
+
+void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_reg) {
+  assert(mh_reg == G3_method_handle, "caller must put MH object in G3");
+  assert_different_registers(mh_reg, temp_reg);
+
+  // pick out the interpreted side of the handler
+  ld_ptr(mh_reg, delayed_value(java_dyn_MethodHandle::vmentry_offset_in_bytes, temp_reg), temp_reg);
+
+  // off we go...
+  ld_ptr(temp_reg, MethodHandleEntry::from_interpreted_entry_offset_in_bytes(), temp_reg);
+  jmp(temp_reg, 0);
+
+  // for the various stubs which take control at this point,
+  // see MethodHandles::generate_method_handle_stub
+
+  // (Can any caller use this delay slot?  If so, add an option for supression.)
+  delayed()->nop();
+}
+
+RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot,
+                                                   int extra_slot_offset) {
+  // cf. TemplateTable::prepare_invoke(), if (load_receiver).
+  int stackElementSize = Interpreter::stackElementWords() * wordSize;
+  int offset = Interpreter::expr_offset_in_bytes(extra_slot_offset+0);
+  int offset1 = Interpreter::expr_offset_in_bytes(extra_slot_offset+1);
+  assert(offset1 - offset == stackElementSize, "correct arithmetic");
+  if (arg_slot.is_constant()) {
+    offset += arg_slot.as_constant() * stackElementSize;
+    return offset;
+  } else {
+    Register temp = arg_slot.as_register();
+    sll_ptr(temp, exact_log2(stackElementSize), temp);
+    if (offset != 0)
+      add(temp, offset, temp);
+    return temp;
+  }
+}
+
+
+
 void MacroAssembler::biased_locking_enter(Register obj_reg, Register mark_reg,
                                           Register temp_reg,
                                           Label& done, Label* slow_case,
@@ -2641,21 +3094,21 @@
   delayed()->nop();
 
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   or3(G2_thread, temp_reg, temp_reg);
   xor3(mark_reg, temp_reg, temp_reg);
   andcc(temp_reg, ~((int) markOopDesc::age_mask_in_place), temp_reg);
   if (counters != NULL) {
     cond_inc(Assembler::equal, (address) counters->biased_lock_entry_count_addr(), mark_reg, temp_reg);
     // Reload mark_reg as we may need it later
-    ld_ptr(Address(obj_reg, 0, oopDesc::mark_offset_in_bytes()), mark_reg);
+    ld_ptr(Address(obj_reg, oopDesc::mark_offset_in_bytes()), mark_reg);
   }
   brx(Assembler::equal, true, Assembler::pt, done);
   delayed()->nop();
 
   Label try_revoke_bias;
   Label try_rebias;
-  Address mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr = Address(obj_reg, oopDesc::mark_offset_in_bytes());
   assert(mark_addr.disp() == 0, "cas must take a zero displacement");
 
   // At this point we know that the header has the bias pattern and
@@ -2719,7 +3172,7 @@
   // FIXME: due to a lack of registers we currently blow away the age
   // bits in this situation. Should attempt to preserve them.
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   or3(G2_thread, temp_reg, temp_reg);
   casn(mark_addr.base(), mark_reg, temp_reg);
   // If the biasing toward our thread failed, this means that
@@ -2750,7 +3203,7 @@
   // FIXME: due to a lack of registers we currently blow away the age
   // bits in this situation. Should attempt to preserve them.
   load_klass(obj_reg, temp_reg);
-  ld_ptr(Address(temp_reg, 0, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
+  ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg);
   casn(mark_addr.base(), mark_reg, temp_reg);
   // Fall through to the normal CAS-based lock, because no matter what
   // the result of the above CAS, some thread must have succeeded in
@@ -2817,7 +3270,7 @@
                                           Register Rbox, Register Rscratch,
                                           BiasedLockingCounters* counters,
                                           bool try_bias) {
-   Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+   Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
    verify_oop(Roop);
    Label done ;
@@ -2920,7 +3373,7 @@
          // If m->owner != null goto IsLocked
          // Pessimistic form: Test-and-CAS vs CAS
          // The optimistic form avoids RTS->RTO cache line upgrades.
-         ld_ptr (Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
+         ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
          andcc  (Rscratch, Rscratch, G0) ;
          brx    (Assembler::notZero, false, Assembler::pn, done) ;
          delayed()->nop() ;
@@ -3016,7 +3469,7 @@
          // Test-and-CAS vs CAS
          // Pessimistic form avoids futile (doomed) CAS attempts
          // The optimistic form avoids RTS->RTO cache line upgrades.
-         ld_ptr (Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
+         ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
          andcc  (Rscratch, Rscratch, G0) ;
          brx    (Assembler::notZero, false, Assembler::pn, done) ;
          delayed()->nop() ;
@@ -3042,7 +3495,7 @@
 void MacroAssembler::compiler_unlock_object(Register Roop, Register Rmark,
                                             Register Rbox, Register Rscratch,
                                             bool try_bias) {
-   Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+   Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
    Label done ;
 
@@ -3102,14 +3555,14 @@
    // Note that we use 1-0 locking by default for the inflated case.  We
    // close the resultant (and rare) race by having contented threads in
    // monitorenter periodically poll _owner.
-   ld_ptr (Address(Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2), Rscratch) ;
-   ld_ptr (Address(Rmark, 0, ObjectMonitor::recursions_offset_in_bytes()-2), Rbox) ;
+   ld_ptr (Rmark, ObjectMonitor::owner_offset_in_bytes() - 2, Rscratch);
+   ld_ptr (Rmark, ObjectMonitor::recursions_offset_in_bytes() - 2, Rbox);
    xor3   (Rscratch, G2_thread, Rscratch) ;
    orcc   (Rbox, Rscratch, Rbox) ;
    brx    (Assembler::notZero, false, Assembler::pn, done) ;
    delayed()->
-   ld_ptr (Address (Rmark, 0, ObjectMonitor::EntryList_offset_in_bytes()-2), Rscratch) ;
-   ld_ptr (Address (Rmark, 0, ObjectMonitor::cxq_offset_in_bytes()-2), Rbox) ;
+   ld_ptr (Rmark, ObjectMonitor::EntryList_offset_in_bytes() - 2, Rscratch);
+   ld_ptr (Rmark, ObjectMonitor::cxq_offset_in_bytes() - 2, Rbox);
    orcc   (Rbox, Rscratch, G0) ;
    if (EmitSync & 65536) {
       Label LSucc ;
@@ -3117,12 +3570,12 @@
       delayed()->nop() ;
       br     (Assembler::always, false, Assembler::pt, done) ;
       delayed()->
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
 
       bind   (LSucc) ;
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
       if (os::is_MP()) { membar (StoreLoad) ; }
-      ld_ptr (Address (Rmark, 0, ObjectMonitor::succ_offset_in_bytes()-2), Rscratch) ;
+      ld_ptr (Rmark, ObjectMonitor::succ_offset_in_bytes() - 2, Rscratch);
       andcc  (Rscratch, Rscratch, G0) ;
       brx    (Assembler::notZero, false, Assembler::pt, done) ;
       delayed()-> andcc (G0, G0, G0) ;
@@ -3140,7 +3593,7 @@
       delayed()->nop() ;
       br     (Assembler::always, false, Assembler::pt, done) ;
       delayed()->
-      st_ptr (G0, Address (Rmark, 0, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+      st_ptr (G0, Rmark, ObjectMonitor::owner_offset_in_bytes() - 2);
    }
 
    bind   (LStacked) ;
@@ -3539,20 +3992,26 @@
   bind(L);
 }
 
-void MacroAssembler::inc_counter(address counter_ptr, Register Rtmp1, Register Rtmp2) {
-  Address counter_addr(Rtmp1, counter_ptr);
-  load_contents(counter_addr, Rtmp2);
+void MacroAssembler::inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2) {
+  AddressLiteral addrlit(counter_addr);
+  sethi(addrlit, Rtmp1);                 // Move hi22 bits into temporary register.
+  Address addr(Rtmp1, addrlit.low10());  // Build an address with low10 bits.
+  ld(addr, Rtmp2);
   inc(Rtmp2);
-  store_contents(Rtmp2, counter_addr);
+  st(Rtmp2, addr);
+}
+
+void MacroAssembler::inc_counter(int* counter_addr, Register Rtmp1, Register Rtmp2) {
+  inc_counter((address) counter_addr, Rtmp1, Rtmp2);
 }
 
 SkipIfEqual::SkipIfEqual(
     MacroAssembler* masm, Register temp, const bool* flag_addr,
     Assembler::Condition condition) {
   _masm = masm;
-  Address flag(temp, (address)flag_addr, relocInfo::none);
-  _masm->sethi(flag);
-  _masm->ldub(flag, temp);
+  AddressLiteral flag(flag_addr);
+  _masm->sethi(flag, temp);
+  _masm->ldub(temp, flag.low10(), temp);
   _masm->tst(temp);
   _masm->br(condition, false, Assembler::pt, _label);
   _masm->delayed()->nop();
@@ -3749,6 +4208,7 @@
                   PtrQueue::byte_offset_of_active()),
          tmp);
   }
+
   // Check on whether to annul.
   br_on_reg_cond(rc_z, /*annul*/false, Assembler::pt, tmp, filtered);
   delayed() -> nop();
@@ -3756,13 +4216,13 @@
   // satb_log_barrier_work1(tmp, offset);
   if (index == noreg) {
     if (Assembler::is_simm13(offset)) {
-      ld_ptr(obj, offset, tmp);
+      load_heap_oop(obj, offset, tmp);
     } else {
       set(offset, tmp);
-      ld_ptr(obj, tmp, tmp);
+      load_heap_oop(obj, tmp, tmp);
     }
   } else {
-    ld_ptr(obj, index, tmp);
+    load_heap_oop(obj, index, tmp);
   }
 
   // satb_log_barrier_work2(obj, tmp, offset);
@@ -3820,7 +4280,6 @@
 static jint num_ct_writes = 0;
 static jint num_ct_writes_filtered_in_hr = 0;
 static jint num_ct_writes_filtered_null = 0;
-static jint num_ct_writes_filtered_pop = 0;
 static G1CollectedHeap* g1 = NULL;
 
 static Thread* count_ct_writes(void* filter_val, void* new_val) {
@@ -3833,25 +4292,19 @@
     if (g1 == NULL) {
       g1 = G1CollectedHeap::heap();
     }
-    if ((HeapWord*)new_val < g1->popular_object_boundary()) {
-      Atomic::inc(&num_ct_writes_filtered_pop);
-    }
   }
   if ((num_ct_writes % 1000000) == 0) {
     jint num_ct_writes_filtered =
       num_ct_writes_filtered_in_hr +
-      num_ct_writes_filtered_null +
-      num_ct_writes_filtered_pop;
+      num_ct_writes_filtered_null;
 
     tty->print_cr("%d potential CT writes: %5.2f%% filtered\n"
-                  "   (%5.2f%% intra-HR, %5.2f%% null, %5.2f%% popular).",
+                  "   (%5.2f%% intra-HR, %5.2f%% null).",
                   num_ct_writes,
                   100.0*(float)num_ct_writes_filtered/(float)num_ct_writes,
                   100.0*(float)num_ct_writes_filtered_in_hr/
                   (float)num_ct_writes,
                   100.0*(float)num_ct_writes_filtered_null/
-                  (float)num_ct_writes,
-                  100.0*(float)num_ct_writes_filtered_pop/
                   (float)num_ct_writes);
   }
   return Thread::current();
@@ -3874,8 +4327,8 @@
 #else
   masm.srl(O0, CardTableModRefBS::card_shift, O0);
 #endif
-  Address rs(O1, (address)byte_map_base);
-  masm.load_address(rs); // O1 := <card table base>
+  AddressLiteral addrlit(byte_map_base);
+  masm.set(addrlit, O1); // O1 := <card table base>
   masm.ldub(O0, O1, O2); // O2 := [O0 + O1]
 
   masm.br_on_reg_cond(Assembler::rc_nz, /*annul*/false, Assembler::pt,
@@ -4002,44 +4455,26 @@
     delayed()->nop();
   }
 
-  // Now we decide how to generate the card table write.  If we're
-  // enqueueing, we call out to a generated function.  Otherwise, we do it
-  // inline here.
-
-  if (G1RSBarrierUseQueue) {
-    // If the "store_addr" register is an "in" or "local" register, move it to
-    // a scratch reg so we can pass it as an argument.
-    bool use_scr = !(store_addr->is_global() || store_addr->is_out());
-    // Pick a scratch register different from "tmp".
-    Register scr = (tmp == G1_scratch ? G3_scratch : G1_scratch);
-    // Make sure we use up the delay slot!
-    if (use_scr) {
-      post_filter_masm->mov(store_addr, scr);
-    } else {
-      post_filter_masm->nop();
-    }
-    generate_dirty_card_log_enqueue_if_necessary(bs->byte_map_base);
-    save_frame(0);
-    call(dirty_card_log_enqueue);
-    if (use_scr) {
-      delayed()->mov(scr, O0);
-    } else {
-      delayed()->mov(store_addr->after_save(), O0);
-    }
-    restore();
-
+  // If the "store_addr" register is an "in" or "local" register, move it to
+  // a scratch reg so we can pass it as an argument.
+  bool use_scr = !(store_addr->is_global() || store_addr->is_out());
+  // Pick a scratch register different from "tmp".
+  Register scr = (tmp == G1_scratch ? G3_scratch : G1_scratch);
+  // Make sure we use up the delay slot!
+  if (use_scr) {
+    post_filter_masm->mov(store_addr, scr);
   } else {
-
-#ifdef _LP64
-    post_filter_masm->srlx(store_addr, CardTableModRefBS::card_shift, store_addr);
-#else
-    post_filter_masm->srl(store_addr, CardTableModRefBS::card_shift, store_addr);
-#endif
-    assert( tmp != store_addr, "need separate temp reg");
-    Address rs(tmp, (address)bs->byte_map_base);
-    load_address(rs);
-    stb(G0, rs.base(), store_addr);
+    post_filter_masm->nop();
   }
+  generate_dirty_card_log_enqueue_if_necessary(bs->byte_map_base);
+  save_frame(0);
+  call(dirty_card_log_enqueue);
+  if (use_scr) {
+    delayed()->mov(scr, O0);
+  } else {
+    delayed()->mov(store_addr->after_save(), O0);
+  }
+  restore();
 
   bind(filtered);
 
@@ -4086,12 +4521,12 @@
   }
 }
 
-void MacroAssembler::load_heap_oop(const Address& s, Register d, int offset) {
+void MacroAssembler::load_heap_oop(const Address& s, Register d) {
   if (UseCompressedOops) {
-    lduw(s, d, offset);
+    lduw(s, d);
     decode_heap_oop(d);
   } else {
-    ld_ptr(s, d, offset);
+    ld_ptr(s, d);
   }
 }
 
@@ -4146,7 +4581,13 @@
 
 void MacroAssembler::encode_heap_oop(Register src, Register dst) {
   assert (UseCompressedOops, "must be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   verify_oop(src);
+  if (Universe::narrow_oop_base() == NULL) {
+    srlx(src, LogMinObjAlignmentInBytes, dst);
+    return;
+  }
   Label done;
   if (src == dst) {
     // optimize for frequent case src == dst
@@ -4168,26 +4609,39 @@
 
 void MacroAssembler::encode_heap_oop_not_null(Register r) {
   assert (UseCompressedOops, "must be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   verify_oop(r);
-  sub(r, G6_heapbase, r);
+  if (Universe::narrow_oop_base() != NULL)
+    sub(r, G6_heapbase, r);
   srlx(r, LogMinObjAlignmentInBytes, r);
 }
 
 void MacroAssembler::encode_heap_oop_not_null(Register src, Register dst) {
   assert (UseCompressedOops, "must be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   verify_oop(src);
-  sub(src, G6_heapbase, dst);
-  srlx(dst, LogMinObjAlignmentInBytes, dst);
+  if (Universe::narrow_oop_base() == NULL) {
+    srlx(src, LogMinObjAlignmentInBytes, dst);
+  } else {
+    sub(src, G6_heapbase, dst);
+    srlx(dst, LogMinObjAlignmentInBytes, dst);
+  }
 }
 
 // Same algorithm as oops.inline.hpp decode_heap_oop.
 void  MacroAssembler::decode_heap_oop(Register src, Register dst) {
   assert (UseCompressedOops, "must be compressed");
-  Label done;
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   sllx(src, LogMinObjAlignmentInBytes, dst);
-  bpr(rc_nz, true, Assembler::pt, dst, done);
-  delayed() -> add(dst, G6_heapbase, dst); // annuled if not taken
-  bind(done);
+  if (Universe::narrow_oop_base() != NULL) {
+    Label done;
+    bpr(rc_nz, true, Assembler::pt, dst, done);
+    delayed() -> add(dst, G6_heapbase, dst); // annuled if not taken
+    bind(done);
+  }
   verify_oop(dst);
 }
 
@@ -4196,8 +4650,11 @@
   // pd_code_size_limit.
   // Also do not verify_oop as this is called by verify_oop.
   assert (UseCompressedOops, "must be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   sllx(r, LogMinObjAlignmentInBytes, r);
-  add(r, G6_heapbase, r);
+  if (Universe::narrow_oop_base() != NULL)
+    add(r, G6_heapbase, r);
 }
 
 void  MacroAssembler::decode_heap_oop_not_null(Register src, Register dst) {
@@ -4205,14 +4662,17 @@
   // pd_code_size_limit.
   // Also do not verify_oop as this is called by verify_oop.
   assert (UseCompressedOops, "must be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
   sllx(src, LogMinObjAlignmentInBytes, dst);
-  add(dst, G6_heapbase, dst);
+  if (Universe::narrow_oop_base() != NULL)
+    add(dst, G6_heapbase, dst);
 }
 
 void MacroAssembler::reinit_heapbase() {
   if (UseCompressedOops) {
     // call indirectly to solve generation ordering problem
-    Address base(G6_heapbase, (address)Universe::heap_base_addr());
+    AddressLiteral base(Universe::narrow_oop_base_addr());
     load_ptr_contents(base, G6_heapbase);
   }
 }
--- a/src/cpu/sparc/vm/assembler_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/assembler_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +84,10 @@
 
 REGISTER_DECLARATION(Register, Gtemp  , G5);
 
+// JSR 292 fixed register usages:
+REGISTER_DECLARATION(Register, G5_method_type        , G5);
+REGISTER_DECLARATION(Register, G3_method_handle      , G3);
+
 // The compiler requires that G5_megamorphic_method is G5_inline_cache_klass,
 // because a single patchable "set" instruction (NativeMovConstReg,
 // or NativeMovConstPatching for compiler1) instruction
@@ -91,9 +95,13 @@
 // call site is an inline cache or is megamorphic.  See the function
 // CompiledIC::set_to_megamorphic.
 //
-// On the other hand, G5_inline_cache_klass must differ from G5_method,
-// because both registers are needed for an inline cache that calls
-// an interpreted method.
+// If a inline cache targets an interpreted method, then the
+// G5 register will be used twice during the call.  First,
+// the call site will be patched to load a compiledICHolder
+// into G5. (This is an ordered pair of ic_klass, method.)
+// The c2i adapter will first check the ic_klass, then load
+// G5_method with the method part of the pair just before
+// jumping into the interpreter.
 //
 // Note that G5_method is only the method-self for the interpreter,
 // and is logically unrelated to G5_megamorphic_method.
@@ -266,21 +274,90 @@
 
 class Address VALUE_OBJ_CLASS_SPEC {
  private:
-  Register              _base;
-#ifdef _LP64
-  int                   _hi32;          // bits 63::32
-  int                   _low32;         // bits 31::0
+  Register           _base;           // Base register.
+  RegisterOrConstant _index_or_disp;  // Index register or constant displacement.
+  RelocationHolder   _rspec;
+
+ public:
+  Address() : _base(noreg), _index_or_disp(noreg) {}
+
+  Address(Register base, RegisterOrConstant index_or_disp)
+    : _base(base),
+      _index_or_disp(index_or_disp) {
+  }
+
+  Address(Register base, Register index)
+    : _base(base),
+      _index_or_disp(index) {
+  }
+
+  Address(Register base, int disp)
+    : _base(base),
+      _index_or_disp(disp) {
+  }
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  Address(Register base, ByteSize disp)
+    : _base(base),
+      _index_or_disp(in_bytes(disp)) {
+  }
 #endif
-  int                   _hi;
-  int                   _disp;
-  RelocationHolder      _rspec;
-
-  RelocationHolder rspec_from_rtype(relocInfo::relocType rt, address a = NULL) {
-    switch (rt) {
+
+  // accessors
+  Register base()      const { return _base; }
+  Register index()     const { return _index_or_disp.as_register(); }
+  int      disp()      const { return _index_or_disp.as_constant(); }
+
+  bool     has_index() const { return _index_or_disp.is_register(); }
+  bool     has_disp()  const { return _index_or_disp.is_constant(); }
+
+  const relocInfo::relocType rtype() { return _rspec.type(); }
+  const RelocationHolder&    rspec() { return _rspec; }
+
+  RelocationHolder rspec(int offset) const {
+    return offset == 0 ? _rspec : _rspec.plus(offset);
+  }
+
+  inline bool is_simm13(int offset = 0);  // check disp+offset for overflow
+
+  Address plus_disp(int plusdisp) const {     // bump disp by a small amount
+    assert(_index_or_disp.is_constant(), "must have a displacement");
+    Address a(base(), disp() + plusdisp);
+    return a;
+  }
+
+  Address after_save() const {
+    Address a = (*this);
+    a._base = a._base->after_save();
+    return a;
+  }
+
+  Address after_restore() const {
+    Address a = (*this);
+    a._base = a._base->after_restore();
+    return a;
+  }
+
+  // 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);
+
+  friend class Assembler;
+};
+
+
+class AddressLiteral VALUE_OBJ_CLASS_SPEC {
+ private:
+  address          _address;
+  RelocationHolder _rspec;
+
+  RelocationHolder rspec_from_rtype(relocInfo::relocType rtype, address addr) {
+    switch (rtype) {
     case relocInfo::external_word_type:
-      return external_word_Relocation::spec(a);
+      return external_word_Relocation::spec(addr);
     case relocInfo::internal_word_type:
-      return internal_word_Relocation::spec(a);
+      return internal_word_Relocation::spec(addr);
 #ifdef _LP64
     case relocInfo::opt_virtual_call_type:
       return opt_virtual_call_Relocation::spec();
@@ -297,121 +374,86 @@
     }
   }
 
+ protected:
+  // creation
+  AddressLiteral() : _address(NULL), _rspec(NULL) {}
+
  public:
-  Address(Register b, address a, relocInfo::relocType rt = relocInfo::none)
-    : _rspec(rspec_from_rtype(rt, a))
-  {
-    _base  = b;
-#ifdef _LP64
-    _hi32  = (intptr_t)a >> 32;    // top 32 bits in 64 bit word
-    _low32 = (intptr_t)a & ~0;     // low 32 bits in 64 bit word
-#endif
-    _hi    = (intptr_t)a & ~0x3ff; // top    22 bits in low word
-    _disp  = (intptr_t)a &  0x3ff; // bottom 10 bits
-  }
-
-  Address(Register b, address a, RelocationHolder const& rspec)
-    : _rspec(rspec)
-  {
-    _base  = b;
+  AddressLiteral(address addr, RelocationHolder const& rspec)
+    : _address(addr),
+      _rspec(rspec) {}
+
+  // Some constructors to avoid casting at the call site.
+  AddressLiteral(jobject obj, RelocationHolder const& rspec)
+    : _address((address) obj),
+      _rspec(rspec) {}
+
+  AddressLiteral(intptr_t value, RelocationHolder const& rspec)
+    : _address((address) value),
+      _rspec(rspec) {}
+
+  AddressLiteral(address addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+    _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  // Some constructors to avoid casting at the call site.
+  AddressLiteral(address* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+    _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(bool* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(const bool* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(signed char* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(int* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(intptr_t addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
 #ifdef _LP64
-    _hi32  = (intptr_t)a >> 32;    // top 32 bits in 64 bit word
-    _low32 = (intptr_t)a & ~0;     // low 32 bits in 64 bit word
-#endif
-    _hi    = (intptr_t)a & ~0x3ff; // top    22 bits
-    _disp  = (intptr_t)a &  0x3ff; // bottom 10 bits
-  }
-
-  Address(Register b, intptr_t h, intptr_t d, RelocationHolder const& rspec = RelocationHolder())
-    : _rspec(rspec)
-  {
-    _base  = b;
-#ifdef _LP64
-// [RGV] Put in Assert to force me to check usage of this constructor
-     assert( h == 0, "Check usage of this constructor" );
-    _hi32  = h;
-    _low32 = d;
-    _hi    = h;
-    _disp  = d;
-#else
-    _hi    = h;
-    _disp  = d;
+  // 32-bit complains about a multiple declaration for int*.
+  AddressLiteral(intptr_t* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
 #endif
-  }
-
-  Address()
-    : _rspec(RelocationHolder())
-  {
-    _base  = G0;
-#ifdef _LP64
-    _hi32  = 0;
-    _low32 = 0;
-#endif
-    _hi    = 0;
-    _disp  = 0;
-  }
-
-  // fancier constructors
-
-  enum addr_type {
-    extra_in_argument,  // in the In registers
-    extra_out_argument  // in the Outs
-  };
-
-  Address( addr_type, int );
-
-  // accessors
-
-  Register               base() const { return _base; }
-#ifdef _LP64
-  int                   hi32()  const { return _hi32; }
-  int                   low32() const { return _low32; }
-#endif
-  int                      hi() const { return _hi;  }
-  int                    disp() const { return _disp; }
-#ifdef _LP64
-  intptr_t              value() const { return ((intptr_t)_hi32 << 32) |
-                                                (intptr_t)(uint32_t)_low32; }
-#else
-  int                   value() const { return _hi | _disp; }
-#endif
-  const relocInfo::relocType  rtype() { return _rspec.type(); }
-  const RelocationHolder&     rspec() { return _rspec; }
-
-  RelocationHolder      rspec(int offset) const {
+
+  AddressLiteral(oop addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(float* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  AddressLiteral(double* addr, relocInfo::relocType rtype = relocInfo::none)
+    : _address((address) addr),
+      _rspec(rspec_from_rtype(rtype, (address) addr)) {}
+
+  intptr_t value() const { return (intptr_t) _address; }
+  int      low10() const;
+
+  const relocInfo::relocType rtype() const { return _rspec.type(); }
+  const RelocationHolder&    rspec() const { return _rspec; }
+
+  RelocationHolder rspec(int offset) const {
     return offset == 0 ? _rspec : _rspec.plus(offset);
   }
-
-  inline bool is_simm13(int offset = 0);  // check disp+offset for overflow
-
-  Address split_disp() const {            // deal with disp overflow
-    Address a = (*this);
-    int hi_disp = _disp & ~0x3ff;
-    if (hi_disp != 0) {
-      a._disp -= hi_disp;
-      a._hi   += hi_disp;
-    }
-    return a;
-  }
-
-  Address after_save() const {
-    Address a = (*this);
-    a._base = a._base->after_save();
-    return a;
-  }
-
-  Address after_restore() const {
-    Address a = (*this);
-    a._base = a._base->after_restore();
-    return a;
-  }
-
-  friend class Assembler;
 };
 
 
 inline Address RegisterImpl::address_in_saved_window() const {
-   return (Address(SP, 0, (sp_offset_in_saved_window() * wordSize) + STACK_BIAS));
+   return (Address(SP, (sp_offset_in_saved_window() * wordSize) + STACK_BIAS));
 }
 
 
@@ -481,11 +523,7 @@
   // When applied to a register-based argument, give the corresponding address
   // into the 6-word area "into which callee may store register arguments"
   // (This is a different place than the corresponding register-save area location.)
-  Address address_in_frame() const {
-    return Address( is_in()   ? Address::extra_in_argument
-                              : Address::extra_out_argument,
-                    _number );
-  }
+  Address address_in_frame() const;
 
   // debugging
   const char* name() const;
@@ -507,6 +545,7 @@
 
 
   friend class AbstractAssembler;
+  friend class AddressLiteral;
 
   // code patchers need various routines like inv_wdisp()
   friend class NativeInstruction;
@@ -1079,10 +1118,11 @@
 
   // pp 135 (addc was addx in v8)
 
-  inline void add(    Register s1, Register s2, Register d );
-  inline void add(    Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none);
-  inline void add(    Register s1, int simm13a, Register d, RelocationHolder const& rspec);
-  inline void add(    const Address&  a,              Register d, int offset = 0);
+  inline void add(Register s1, Register s2, Register d );
+  inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none);
+  inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec);
+  inline void add(Register s1, RegisterOrConstant s2, Register d, int offset = 0);
+  inline void add(const Address& a, Register d, int offset = 0) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); }
 
   void addcc(  Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | rs2(s2) ); }
   void addcc(  Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); }
@@ -1237,14 +1277,12 @@
   void jmpl( Register s1, Register s2, Register d );
   void jmpl( Register s1, int simm13a, Register d, RelocationHolder const& rspec = RelocationHolder() );
 
-  inline void jmpl( Address& a, Register d, int offset = 0);
-
   // 171
 
-  inline void ldf(    FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d );
-  inline void ldf(    FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d );
-
-  inline void ldf(    FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset = 0);
+  inline void ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d);
+  inline void ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec = RelocationHolder());
+
+  inline void ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset = 0);
 
 
   inline void ldfsr(  Register s1, Register s2 );
@@ -1288,15 +1326,30 @@
   inline void ldd(   Register s1, Register s2, Register d );
   inline void ldd(   Register s1, int simm13a, Register d);
 
-  inline void ldsb( const Address& a, Register d, int offset = 0 );
-  inline void ldsh( const Address& a, Register d, int offset = 0 );
-  inline void ldsw( const Address& a, Register d, int offset = 0 );
-  inline void ldub( const Address& a, Register d, int offset = 0 );
-  inline void lduh( const Address& a, Register d, int offset = 0 );
-  inline void lduw( const Address& a, Register d, int offset = 0 );
-  inline void ldx(  const Address& a, Register d, int offset = 0 );
-  inline void ld(   const Address& a, Register d, int offset = 0 );
-  inline void ldd(  const Address& a, Register d, int offset = 0 );
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void ld(    Register s1, ByteSize simm13a, Register d);
+#endif
+
+  inline void ldsb(const Address& a, Register d, int offset = 0);
+  inline void ldsh(const Address& a, Register d, int offset = 0);
+  inline void ldsw(const Address& a, Register d, int offset = 0);
+  inline void ldub(const Address& a, Register d, int offset = 0);
+  inline void lduh(const Address& a, Register d, int offset = 0);
+  inline void lduw(const Address& a, Register d, int offset = 0);
+  inline void ldx( const Address& a, Register d, int offset = 0);
+  inline void ld(  const Address& a, Register d, int offset = 0);
+  inline void ldd( const Address& a, Register d, int offset = 0);
+
+  inline void ldub(  Register s1, RegisterOrConstant s2, Register d );
+  inline void ldsb(  Register s1, RegisterOrConstant s2, Register d );
+  inline void lduh(  Register s1, RegisterOrConstant s2, Register d );
+  inline void ldsh(  Register s1, RegisterOrConstant s2, Register d );
+  inline void lduw(  Register s1, RegisterOrConstant s2, Register d );
+  inline void ldsw(  Register s1, RegisterOrConstant s2, Register d );
+  inline void ldx(   Register s1, RegisterOrConstant s2, Register d );
+  inline void ld(    Register s1, RegisterOrConstant s2, Register d );
+  inline void ldd(   Register s1, RegisterOrConstant s2, Register d );
 
   // pp 177
 
@@ -1511,6 +1564,11 @@
   inline void std(  Register d, Register s1, Register s2 );
   inline void std(  Register d, Register s1, int simm13a);
 
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void st(   Register d, Register s1, ByteSize simm13a);
+#endif
+
   inline void stb(  Register d, const Address& a, int offset = 0 );
   inline void sth(  Register d, const Address& a, int offset = 0 );
   inline void stw(  Register d, const Address& a, int offset = 0 );
@@ -1518,6 +1576,13 @@
   inline void st(   Register d, const Address& a, int offset = 0 );
   inline void std(  Register d, const Address& a, int offset = 0 );
 
+  inline void stb(  Register d, Register s1, RegisterOrConstant s2 );
+  inline void sth(  Register d, Register s1, RegisterOrConstant s2 );
+  inline void stw(  Register d, Register s1, RegisterOrConstant s2 );
+  inline void stx(  Register d, Register s1, RegisterOrConstant s2 );
+  inline void std(  Register d, Register s1, RegisterOrConstant s2 );
+  inline void st(   Register d, Register s1, RegisterOrConstant s2 );
+
   // pp 177
 
   void stba(  Register d, Register s1, Register s2, int ia ) {             emit_long( op(ldst_op) | rd(d) | op3(stb_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2) ); }
@@ -1652,8 +1717,8 @@
 
 #define JMP2(r1, r2) jmp(r1, r2, __FILE__, __LINE__)
 #define JMP(r1, off) jmp(r1, off, __FILE__, __LINE__)
-#define JUMP(a, off)     jump(a, off, __FILE__, __LINE__)
-#define JUMPL(a, d, off) jumpl(a, d, off, __FILE__, __LINE__)
+#define JUMP(a, temp, off)     jump(a, temp, off, __FILE__, __LINE__)
+#define JUMPL(a, temp, d, off) jumpl(a, temp, d, off, __FILE__, __LINE__)
 
 
 class MacroAssembler: public Assembler {
@@ -1798,17 +1863,26 @@
 #endif
 
   // sethi Macro handles optimizations and relocations
-  void sethi( Address& a, bool ForceRelocatable = false );
-  void sethi( intptr_t imm22a, Register d, bool ForceRelocatable = false, RelocationHolder const& rspec = RelocationHolder());
+private:
+  void internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable);
+public:
+  void sethi(const AddressLiteral& addrlit, Register d);
+  void patchable_sethi(const AddressLiteral& addrlit, Register d);
 
   // compute the size of a sethi/set
   static int  size_of_sethi( address a, bool worst_case = false );
   static int  worst_case_size_of_set();
 
   // set may be either setsw or setuw (high 32 bits may be zero or sign)
-  void set(    intptr_t value, Register d, RelocationHolder const& rspec = RelocationHolder() );
-  void setsw(  int value, Register d, RelocationHolder const& rspec = RelocationHolder() );
-  void set64(  jlong value, Register d, Register tmp);
+private:
+  void internal_set(const AddressLiteral& al, Register d, bool ForceRelocatable);
+public:
+  void set(const AddressLiteral& addrlit, Register d);
+  void set(intptr_t value, Register d);
+  void set(address addr, Register d, RelocationHolder const& rspec);
+  void patchable_set(const AddressLiteral& addrlit, Register d);
+  void patchable_set(intptr_t value, Register d);
+  void set64(jlong value, Register d, Register tmp);
 
   // sign-extend 32 to 64
   inline void signx( Register s, Register d ) { sra( s, G0, d); }
@@ -1835,6 +1909,7 @@
   // Functions for isolating 64 bit shifts for LP64
   inline void sll_ptr( Register s1, Register s2, Register d );
   inline void sll_ptr( Register s1, int imm6a,   Register d );
+  inline void sll_ptr( Register s1, RegisterOrConstant s2, Register d );
   inline void srl_ptr( Register s1, Register s2, Register d );
   inline void srl_ptr( Register s1, int imm6a,   Register d );
 
@@ -1897,23 +1972,22 @@
   inline void mov( int simm13a, Register d) { or3( G0, simm13a, d); }
 
   // address pseudos: make these names unlike instruction names to avoid confusion
-  inline void split_disp(    Address& a, Register temp );
   inline intptr_t load_pc_address( Register reg, int bytes_to_skip );
-  inline void load_address(  Address& a, int offset = 0 );
-  inline void load_contents( Address& a, Register d, int offset = 0 );
-  inline void load_ptr_contents( Address& a, Register d, int offset = 0 );
-  inline void store_contents( Register s, Address& a, int offset = 0 );
-  inline void store_ptr_contents( Register s, Address& a, int offset = 0 );
-  inline void jumpl_to( Address& a, Register d, int offset = 0 );
-  inline void jump_to(  Address& a,             int offset = 0 );
+  inline void load_contents(AddressLiteral& addrlit, Register d, int offset = 0);
+  inline void load_ptr_contents(AddressLiteral& addrlit, Register d, int offset = 0);
+  inline void store_contents(Register s, AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void store_ptr_contents(Register s, AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void jumpl_to(AddressLiteral& addrlit, Register temp, Register d, int offset = 0);
+  inline void jump_to(AddressLiteral& addrlit, Register temp, int offset = 0);
+  inline void jump_indirect_to(Address& a, Register temp, int ld_offset = 0, int jmp_offset = 0);
 
   // ring buffer traceable jumps
 
   void jmp2( Register r1, Register r2, const char* file, int line );
   void jmp ( Register r1, int offset,  const char* file, int line );
 
-  void jumpl( Address& a, Register d, int offset, const char* file, int line );
-  void jump ( Address& a,             int offset, const char* file, int line );
+  void jumpl(AddressLiteral& addrlit, Register temp, Register d, int offset, const char* file, int line);
+  void jump (AddressLiteral& addrlit, Register temp,             int offset, const char* file, int line);
 
 
   // argument pseudos:
@@ -1938,21 +2012,50 @@
   // Functions for isolating 64 bit loads for LP64
   // ld_ptr will perform ld for 32 bit VM's and ldx for 64 bit VM's
   // st_ptr will perform st for 32 bit VM's and stx for 64 bit VM's
-  inline void ld_ptr(   Register s1, Register s2, Register d );
-  inline void ld_ptr(   Register s1, int simm13a, Register d);
-  inline void ld_ptr(  const Address& a, Register d, int offset = 0 );
-  inline void st_ptr(  Register d, Register s1, Register s2 );
-  inline void st_ptr(  Register d, Register s1, int simm13a);
-  inline void st_ptr(  Register d, const Address& a, int offset = 0 );
+  inline void ld_ptr(Register s1, Register s2, Register d);
+  inline void ld_ptr(Register s1, int simm13a, Register d);
+  inline void ld_ptr(Register s1, RegisterOrConstant s2, Register d);
+  inline void ld_ptr(const Address& a, Register d, int offset = 0);
+  inline void st_ptr(Register d, Register s1, Register s2);
+  inline void st_ptr(Register d, Register s1, int simm13a);
+  inline void st_ptr(Register d, Register s1, RegisterOrConstant s2);
+  inline void st_ptr(Register d, const Address& a, int offset = 0);
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+  inline void ld_ptr(Register s1, ByteSize simm13a, Register d);
+  inline void st_ptr(Register d, Register s1, ByteSize simm13a);
+#endif
 
   // ld_long will perform ld for 32 bit VM's and ldx for 64 bit VM's
   // st_long will perform st for 32 bit VM's and stx for 64 bit VM's
-  inline void ld_long( Register s1, Register s2, Register d );
-  inline void ld_long( Register s1, int simm13a, Register d );
-  inline void ld_long( const Address& a, Register d, int offset = 0 );
-  inline void st_long( Register d, Register s1, Register s2 );
-  inline void st_long( Register d, Register s1, int simm13a );
-  inline void st_long( Register d, const Address& a, int offset = 0 );
+  inline void ld_long(Register s1, Register s2, Register d);
+  inline void ld_long(Register s1, int simm13a, Register d);
+  inline void ld_long(Register s1, RegisterOrConstant s2, Register d);
+  inline void ld_long(const Address& a, Register d, int offset = 0);
+  inline void st_long(Register d, Register s1, Register s2);
+  inline void st_long(Register d, Register s1, int simm13a);
+  inline void st_long(Register d, Register s1, RegisterOrConstant s2);
+  inline void st_long(Register d, const Address& a, int offset = 0);
+
+  // Helpers for address formation.
+  // They update the dest in place, whether it is a register or constant.
+  // They emit no code at all if src is a constant zero.
+  // If dest is a constant and src is a register, the temp argument
+  // is required, and becomes the result.
+  // If dest is a register and src is a non-simm13 constant,
+  // the temp argument is required, and is used to materialize the constant.
+  void regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src,
+                       Register temp = noreg );
+  void regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src,
+                       Register temp = noreg );
+  RegisterOrConstant ensure_rs2(RegisterOrConstant rs2, Register sethi_temp) {
+    guarantee(sethi_temp != noreg, "constant offset overflow");
+    if (is_simm13(rs2.constant_or_zero()))
+      return rs2;               // register or short constant
+    set(rs2.as_constant(), sethi_temp);
+    return sethi_temp;
+  }
 
   // --------------------------------------------------
 
@@ -1988,8 +2091,8 @@
   // These are idioms to flag the need for care with accessing bools but on
   // this platform we assume byte size
 
-  inline void stbool( Register d, const Address& a, int offset = 0 ) { stb(d, a, offset); }
-  inline void ldbool( const Address& a, Register d, int offset = 0 ) { ldsb( a, d, offset ); }
+  inline void stbool(Register d, const Address& a) { stb(d, a); }
+  inline void ldbool(const Address& a, Register d) { ldsb(a, d); }
   inline void tstbool( Register s ) { tst(s); }
   inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); }
 
@@ -1999,7 +2102,7 @@
   void store_klass_gap(Register s, Register dst_oop);
 
    // oop manipulations
-  void load_heap_oop(const Address& s, Register d, int offset = 0);
+  void load_heap_oop(const Address& s, Register d);
   void load_heap_oop(Register s1, Register s2, Register d);
   void load_heap_oop(Register s1, int simm13a, Register d);
   void store_heap_oop(Register d, Register s1, Register s2);
@@ -2129,11 +2232,11 @@
   void print_CPU_state();
 
   // oops in code
-  Address allocate_oop_address( jobject obj, Register d ); // allocate_index
-  Address constant_oop_address( jobject obj, Register d ); // find_index
-  inline void set_oop         ( jobject obj, Register d ); // uses allocate_oop_address
-  inline void set_oop_constant( jobject obj, Register d ); // uses constant_oop_address
-  inline void set_oop         ( Address obj_addr );        // same as load_address
+  AddressLiteral allocate_oop_address(jobject obj);                          // allocate_index
+  AddressLiteral constant_oop_address(jobject obj);                          // find_index
+  inline void    set_oop             (jobject obj, Register d);              // uses allocate_oop_address
+  inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
+  inline void    set_oop             (AddressLiteral& obj_addr, Register d); // same as load_address
 
   void set_narrow_oop( jobject obj, Register d );
 
@@ -2267,6 +2370,64 @@
   );
   void tlab_refill(Label& retry_tlab, Label& try_eden, Label& slow_case);
 
+  // interface method calling
+  void lookup_interface_method(Register recv_klass,
+                               Register intf_klass,
+                               RegisterOrConstant itable_index,
+                               Register method_result,
+                               Register temp_reg, Register temp2_reg,
+                               Label& no_such_interface);
+
+  // Test sub_klass against super_klass, with fast and slow paths.
+
+  // The fast path produces a tri-state answer: yes / no / maybe-slow.
+  // One of the three labels can be NULL, meaning take the fall-through.
+  // If super_check_offset is -1, the value is loaded up from super_klass.
+  // No registers are killed, except temp_reg and temp2_reg.
+  // If super_check_offset is not -1, temp2_reg is not used and can be noreg.
+  void check_klass_subtype_fast_path(Register sub_klass,
+                                     Register super_klass,
+                                     Register temp_reg,
+                                     Register temp2_reg,
+                                     Label* L_success,
+                                     Label* L_failure,
+                                     Label* L_slow_path,
+                RegisterOrConstant super_check_offset = RegisterOrConstant(-1),
+                Register instanceof_hack = noreg);
+
+  // The rest of the type check; must be wired to a corresponding fast path.
+  // It does not repeat the fast path logic, so don't use it standalone.
+  // The temp_reg can be noreg, if no temps are available.
+  // It can also be sub_klass or super_klass, meaning it's OK to kill that one.
+  // Updates the sub's secondary super cache as necessary.
+  void check_klass_subtype_slow_path(Register sub_klass,
+                                     Register super_klass,
+                                     Register temp_reg,
+                                     Register temp2_reg,
+                                     Register temp3_reg,
+                                     Register temp4_reg,
+                                     Label* L_success,
+                                     Label* L_failure);
+
+  // Simplified, combined version, good for typical uses.
+  // Falls through on failure.
+  void check_klass_subtype(Register sub_klass,
+                           Register super_klass,
+                           Register temp_reg,
+                           Register temp2_reg,
+                           Label& L_success);
+
+  // method handles (JSR 292)
+  void check_method_handle_type(Register mtype_reg, Register mh_reg,
+                                Register temp_reg,
+                                Label& wrong_method_type);
+  void jump_to_method_handle_entry(Register mh_reg, Register temp_reg);
+  // offset relative to Gargs of argument at tos[arg_slot].
+  // (arg_slot == 0 means the last argument, not the first).
+  RegisterOrConstant argument_offset(RegisterOrConstant arg_slot,
+                                     int extra_slot_offset = 0);
+
+
   // Stack overflow checking
 
   // Note: this clobbers G3_scratch
@@ -2281,6 +2442,8 @@
   // stack overflow + shadow pages.  Clobbers tsp and scratch registers.
   void bang_stack_size(Register Rsize, Register Rtsp, Register Rscratch);
 
+  virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset);
+
   void verify_tlab();
 
   Condition negate_condition(Condition cond);
@@ -2289,7 +2452,8 @@
   // Conditionally (non-atomically) increments passed counter address, preserving condition codes.
   void cond_inc(Condition cond, address counter_addr, Register Rtemp1, Register Rtemp2);
   // Unconditional increment.
-  void inc_counter(address counter_addr, Register Rtemp1, Register Rtemp2);
+  void inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2);
+  void inc_counter(int*    counter_addr, Register Rtmp1, Register Rtmp2);
 
 #undef VIRTUAL
 
--- a/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 @@
 inline bool Address::is_simm13(int offset) { return Assembler::is_simm13(disp() + offset); }
 
 
+inline int AddressLiteral::low10() const {
+  return Assembler::low10(value());
+}
+
+
 // inlines for SPARC assembler -- dmu 5/97
 
 inline void Assembler::check_delay() {
@@ -63,10 +68,9 @@
 }
 
 
-inline void Assembler::add(    Register s1, Register s2, Register d )                             { emit_long( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2) ); }
-inline void Assembler::add(    Register s1, int simm13a, Register d, relocInfo::relocType rtype ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); }
-inline void Assembler::add(    Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec ); }
-inline void Assembler::add(    const Address& a, Register d, int offset) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); }
+inline void Assembler::add(Register s1, Register s2, Register d )                             { emit_long( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2) ); }
+inline void Assembler::add(Register s1, int simm13a, Register d, relocInfo::relocType rtype ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); }
+inline void Assembler::add(Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec ); }
 
 inline void Assembler::bpr( RCondition c, bool a, Predict p, Register s1, address d, relocInfo::relocType rt ) { v9_only();  emit_data( op(branch_op) | annul(a) | cond(c) | op2(bpr_op2) | wdisp16(intptr_t(d), intptr_t(pc())) | predict(p) | rs1(s1), rt);  has_delay_slot(); }
 inline void Assembler::bpr( RCondition c, bool a, Predict p, Register s1, Label& L) { bpr( c, a, p, s1, target(L)); }
@@ -95,13 +99,10 @@
 inline void Assembler::jmpl( Register s1, Register s2, Register d                          ) { emit_long( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | rs2(s2));  has_delay_slot(); }
 inline void Assembler::jmpl( Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec);  has_delay_slot(); }
 
-inline void Assembler::jmpl( Address& a, Register d, int offset) { jmpl( a.base(), a.disp() + offset, d, a.rspec(offset)); }
-
+inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); }
+inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); }
 
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); }
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
-
-inline void Assembler::ldf(    FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); ldf( w, a.base(), a.disp() + offset, d); }
+inline void Assembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); ldf( w, a.base(), a.disp() + offset, d); }
 
 inline void Assembler::ldfsr(  Register s1, Register s2) { v9_dep();   emit_long( op(ldst_op) |             op3(ldfsr_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::ldfsr(  Register s1, int simm13a) { v9_dep();   emit_data( op(ldst_op) |             op3(ldfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
@@ -136,24 +137,75 @@
 
 #ifdef _LP64
 // Make all 32 bit loads signed so 64 bit registers maintain proper sign
-inline void Assembler::ld(  Register s1, Register s2, Register d) { ldsw( s1, s2, d); }
-inline void Assembler::ld(  Register s1, int simm13a, Register d) { ldsw( s1, simm13a, d); }
+inline void Assembler::ld(  Register s1, Register s2, Register d)      { ldsw( s1, s2, d); }
+inline void Assembler::ld(  Register s1, int simm13a, Register d)      { ldsw( s1, simm13a, d); }
 #else
-inline void Assembler::ld(  Register s1, Register s2, Register d) { lduw( s1, s2, d); }
-inline void Assembler::ld(  Register s1, int simm13a, Register d) { lduw( s1, simm13a, d); }
+inline void Assembler::ld(  Register s1, Register s2, Register d)      { lduw( s1, s2, d); }
+inline void Assembler::ld(  Register s1, int simm13a, Register d)      { lduw( s1, simm13a, d); }
+#endif
+
+#ifdef ASSERT
+  // ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+# ifdef _LP64
+inline void Assembler::ld(  Register s1, ByteSize simm13a, Register d) { ldsw( s1, in_bytes(simm13a), d); }
+# else
+inline void Assembler::ld(  Register s1, ByteSize simm13a, Register d) { lduw( s1, in_bytes(simm13a), d); }
+# endif
 #endif
 
+inline void Assembler::ld(  const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ld(  a.base(), a.index(),         d); }
+  else               {                          ld(  a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldsb(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsb(a.base(), a.index(),         d); }
+  else               {                          ldsb(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldsh(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsh(a.base(), a.index(),         d); }
+  else               {                          ldsh(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldsw(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldsw(a.base(), a.index(),         d); }
+  else               {                          ldsw(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldub(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldub(a.base(), a.index(),         d); }
+  else               {                          ldub(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::lduh(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); lduh(a.base(), a.index(),         d); }
+  else               {                          lduh(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::lduw(const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); lduw(a.base(), a.index(),         d); }
+  else               {                          lduw(a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldd( const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldd( a.base(), a.index(),         d); }
+  else               {                          ldd( a.base(), a.disp() + offset, d); }
+}
+inline void Assembler::ldx( const Address& a, Register d, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); ldx( a.base(), a.index(),         d); }
+  else               {                          ldx( a.base(), a.disp() + offset, d); }
+}
 
-inline void Assembler::ld(   const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ld(   a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsb( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsb( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsh( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsh( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldsw( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldsw( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldub( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldub( a.base(), a.disp() + offset, d ); }
-inline void Assembler::lduh( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); lduh( a.base(), a.disp() + offset, d ); }
-inline void Assembler::lduw( const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); lduw( a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldd(  const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldd(  a.base(), a.disp() + offset, d ); }
-inline void Assembler::ldx(  const Address& a, Register d, int offset ) { relocate(a.rspec(offset)); ldx(  a.base(), a.disp() + offset, d ); }
+inline void Assembler::ldub(Register s1, RegisterOrConstant s2, Register d) { ldub(Address(s1, s2), d); }
+inline void Assembler::ldsb(Register s1, RegisterOrConstant s2, Register d) { ldsb(Address(s1, s2), d); }
+inline void Assembler::lduh(Register s1, RegisterOrConstant s2, Register d) { lduh(Address(s1, s2), d); }
+inline void Assembler::ldsh(Register s1, RegisterOrConstant s2, Register d) { ldsh(Address(s1, s2), d); }
+inline void Assembler::lduw(Register s1, RegisterOrConstant s2, Register d) { lduw(Address(s1, s2), d); }
+inline void Assembler::ldsw(Register s1, RegisterOrConstant s2, Register d) { ldsw(Address(s1, s2), d); }
+inline void Assembler::ldx( Register s1, RegisterOrConstant s2, Register d) { ldx( Address(s1, s2), d); }
+inline void Assembler::ld(  Register s1, RegisterOrConstant s2, Register d) { ld(  Address(s1, s2), d); }
+inline void Assembler::ldd( Register s1, RegisterOrConstant s2, Register d) { ldd( Address(s1, s2), d); }
 
+// form effective addresses this way:
+inline void Assembler::add(   Register s1, RegisterOrConstant s2, Register d, int offset) {
+  if (s2.is_register())  add(s1, s2.as_register(), d);
+  else                 { add(s1, s2.as_constant() + offset, d); offset = 0; }
+  if (offset != 0)       add(d,  offset,                    d);
+}
 
 inline void Assembler::ldstub(  Register s1, Register s2, Register d) { emit_long( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::ldstub(  Register s1, int simm13a, Register d) { emit_data( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
@@ -197,15 +249,44 @@
 inline void Assembler::std(  Register d, Register s1, Register s2) { v9_dep(); assert(d->is_even(), "not even"); emit_long( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | rs2(s2) ); }
 inline void Assembler::std(  Register d, Register s1, int simm13a) { v9_dep(); assert(d->is_even(), "not even"); emit_data( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
 
-inline void Assembler::st(  Register d, Register s1, Register s2) { stw(d, s1, s2); }
-inline void Assembler::st(  Register d, Register s1, int simm13a) { stw(d, s1, simm13a); }
+inline void Assembler::st( Register d, Register s1, Register s2)      { stw(d, s1, s2); }
+inline void Assembler::st( Register d, Register s1, int simm13a)      { stw(d, s1, simm13a); }
+
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void Assembler::st( Register d, Register s1, ByteSize simm13a) { stw(d, s1, in_bytes(simm13a)); }
+#endif
 
-inline void Assembler::stb( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stb( d, a.base(), a.disp() + offset); }
-inline void Assembler::sth( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); sth( d, a.base(), a.disp() + offset); }
-inline void Assembler::stw( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stw( d, a.base(), a.disp() + offset); }
-inline void Assembler::st(  Register d, const Address& a, int offset) { relocate(a.rspec(offset)); st(  d, a.base(), a.disp() + offset); }
-inline void Assembler::std( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); std( d, a.base(), a.disp() + offset); }
-inline void Assembler::stx( Register d, const Address& a, int offset) { relocate(a.rspec(offset)); stx( d, a.base(), a.disp() + offset); }
+inline void Assembler::stb(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stb(d, a.base(), a.index()        ); }
+  else               {                          stb(d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::sth(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); sth(d, a.base(), a.index()        ); }
+  else               {                          sth(d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::stw(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stw(d, a.base(), a.index()        ); }
+  else               {                          stw(d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::st( Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); st( d, a.base(), a.index()        ); }
+  else               {                          st( d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::std(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); std(d, a.base(), a.index()        ); }
+  else               {                          std(d, a.base(), a.disp() + offset); }
+}
+inline void Assembler::stx(Register d, const Address& a, int offset) {
+  if (a.has_index()) { assert(offset == 0, ""); stx(d, a.base(), a.index()        ); }
+  else               {                          stx(d, a.base(), a.disp() + offset); }
+}
+
+inline void Assembler::stb(Register d, Register s1, RegisterOrConstant s2) { stb(d, Address(s1, s2)); }
+inline void Assembler::sth(Register d, Register s1, RegisterOrConstant s2) { sth(d, Address(s1, s2)); }
+inline void Assembler::stx(Register d, Register s1, RegisterOrConstant s2) { stx(d, Address(s1, s2)); }
+inline void Assembler::std(Register d, Register s1, RegisterOrConstant s2) { std(d, Address(s1, s2)); }
+inline void Assembler::st( Register d, Register s1, RegisterOrConstant s2) { st( d, Address(s1, s2)); }
 
 // v8 p 99
 
@@ -230,31 +311,46 @@
 // Use the right loads/stores for the platform
 inline void MacroAssembler::ld_ptr( Register s1, Register s2, Register d ) {
 #ifdef _LP64
-  Assembler::ldx( s1, s2, d);
+  Assembler::ldx(s1, s2, d);
 #else
-  Assembler::ld(  s1, s2, d);
+  Assembler::ld( s1, s2, d);
 #endif
 }
 
 inline void MacroAssembler::ld_ptr( Register s1, int simm13a, Register d ) {
 #ifdef _LP64
-  Assembler::ldx( s1, simm13a, d);
+  Assembler::ldx(s1, simm13a, d);
 #else
-  Assembler::ld(  s1, simm13a, d);
+  Assembler::ld( s1, simm13a, d);
 #endif
 }
 
-inline void MacroAssembler::ld_ptr( const Address& a, Register d, int offset ) {
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void MacroAssembler::ld_ptr( Register s1, ByteSize simm13a, Register d ) {
+  ld_ptr(s1, in_bytes(simm13a), d);
+}
+#endif
+
+inline void MacroAssembler::ld_ptr( Register s1, RegisterOrConstant s2, Register d ) {
 #ifdef _LP64
-  Assembler::ldx(  a, d, offset );
+  Assembler::ldx(s1, s2, d);
 #else
-  Assembler::ld(   a, d, offset );
+  Assembler::ld( s1, s2, d);
+#endif
+}
+
+inline void MacroAssembler::ld_ptr(const Address& a, Register d, int offset) {
+#ifdef _LP64
+  Assembler::ldx(a, d, offset);
+#else
+  Assembler::ld( a, d, offset);
 #endif
 }
 
 inline void MacroAssembler::st_ptr( Register d, Register s1, Register s2 ) {
 #ifdef _LP64
-  Assembler::stx( d, s1, s2);
+  Assembler::stx(d, s1, s2);
 #else
   Assembler::st( d, s1, s2);
 #endif
@@ -262,17 +358,32 @@
 
 inline void MacroAssembler::st_ptr( Register d, Register s1, int simm13a ) {
 #ifdef _LP64
-  Assembler::stx( d, s1, simm13a);
+  Assembler::stx(d, s1, simm13a);
 #else
   Assembler::st( d, s1, simm13a);
 #endif
 }
 
-inline void MacroAssembler::st_ptr(  Register d, const Address& a, int offset) {
+#ifdef ASSERT
+// ByteSize is only a class when ASSERT is defined, otherwise it's an int.
+inline void MacroAssembler::st_ptr( Register d, Register s1, ByteSize simm13a ) {
+  st_ptr(d, s1, in_bytes(simm13a));
+}
+#endif
+
+inline void MacroAssembler::st_ptr( Register d, Register s1, RegisterOrConstant s2 ) {
 #ifdef _LP64
-  Assembler::stx(  d, a, offset);
+  Assembler::stx(d, s1, s2);
 #else
-  Assembler::st(  d, a, offset);
+  Assembler::st( d, s1, s2);
+#endif
+}
+
+inline void MacroAssembler::st_ptr(Register d, const Address& a, int offset) {
+#ifdef _LP64
+  Assembler::stx(d, a, offset);
+#else
+  Assembler::st( d, a, offset);
 #endif
 }
 
@@ -293,11 +404,19 @@
 #endif
 }
 
-inline void MacroAssembler::ld_long( const Address& a, Register d, int offset ) {
+inline void MacroAssembler::ld_long( Register s1, RegisterOrConstant s2, Register d ) {
 #ifdef _LP64
-  Assembler::ldx(a, d, offset );
+  Assembler::ldx(s1, s2, d);
 #else
-  Assembler::ldd(a, d, offset );
+  Assembler::ldd(s1, s2, d);
+#endif
+}
+
+inline void MacroAssembler::ld_long(const Address& a, Register d, int offset) {
+#ifdef _LP64
+  Assembler::ldx(a, d, offset);
+#else
+  Assembler::ldd(a, d, offset);
 #endif
 }
 
@@ -317,6 +436,14 @@
 #endif
 }
 
+inline void MacroAssembler::st_long( Register d, Register s1, RegisterOrConstant s2 ) {
+#ifdef _LP64
+  Assembler::stx(d, s1, s2);
+#else
+  Assembler::std(d, s1, s2);
+#endif
+}
+
 inline void MacroAssembler::st_long( Register d, const Address& a, int offset ) {
 #ifdef _LP64
   Assembler::stx(d, a, offset);
@@ -331,7 +458,7 @@
 #ifdef _LP64
   Assembler::sllx(s1, s2, d);
 #else
-  Assembler::sll(s1, s2, d);
+  Assembler::sll( s1, s2, d);
 #endif
 }
 
@@ -339,7 +466,7 @@
 #ifdef _LP64
   Assembler::sllx(s1, imm6a, d);
 #else
-  Assembler::sll(s1, imm6a, d);
+  Assembler::sll( s1, imm6a, d);
 #endif
 }
 
@@ -347,7 +474,7 @@
 #ifdef _LP64
   Assembler::srlx(s1, s2, d);
 #else
-  Assembler::srl(s1, s2, d);
+  Assembler::srl( s1, s2, d);
 #endif
 }
 
@@ -355,10 +482,15 @@
 #ifdef _LP64
   Assembler::srlx(s1, imm6a, d);
 #else
-  Assembler::srl(s1, imm6a, d);
+  Assembler::srl( s1, imm6a, d);
 #endif
 }
 
+inline void MacroAssembler::sll_ptr( Register s1, RegisterOrConstant s2, Register d ) {
+  if (s2.is_register())  sll_ptr(s1, s2.as_register(), d);
+  else                   sll_ptr(s1, s2.as_constant(), d);
+}
+
 // Use the right branch for the platform
 
 inline void MacroAssembler::br( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) {
@@ -440,9 +572,8 @@
   disp = (intptr_t)d - (intptr_t)pc();
   if ( disp != (intptr_t)(int32_t)disp ) {
     relocate(rt);
-    Address dest(O7, (address)d);
-    sethi(dest, /*ForceRelocatable=*/ true);
-    jmpl(dest, O7);
+    AddressLiteral dest(d);
+    jumpl_to(dest, O7, O7);
   }
   else {
     Assembler::call( d, rt );
@@ -502,87 +633,72 @@
   return thepc;
 }
 
-inline void MacroAssembler::load_address( Address& a, int offset ) {
+
+inline void MacroAssembler::load_contents(AddressLiteral& addrlit, Register d, int offset) {
   assert_not_delayed();
-#ifdef _LP64
-  sethi(a);
-  add(a, a.base(), offset);
-#else
-  if (a.hi() == 0 && a.rtype() == relocInfo::none) {
-    set(a.disp() + offset, a.base());
-  }
-  else {
-    sethi(a);
-    add(a, a.base(), offset);
-  }
-#endif
-}
-
-
-inline void MacroAssembler::split_disp( Address& a, Register temp ) {
-  assert_not_delayed();
-  a = a.split_disp();
-  Assembler::sethi(a.hi(), temp, a.rspec());
-  add(a.base(), temp, a.base());
+  sethi(addrlit, d);
+  ld(d, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::load_contents( Address& a, Register d, int offset ) {
+inline void MacroAssembler::load_ptr_contents(AddressLiteral& addrlit, Register d, int offset) {
   assert_not_delayed();
-  sethi(a);
-  ld(a, d, offset);
+  sethi(addrlit, d);
+  ld_ptr(d, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::load_ptr_contents( Address& a, Register d, int offset ) {
+inline void MacroAssembler::store_contents(Register s, AddressLiteral& addrlit, Register temp, int offset) {
   assert_not_delayed();
-  sethi(a);
-  ld_ptr(a, d, offset);
+  sethi(addrlit, temp);
+  st(s, temp, addrlit.low10() + offset);
 }
 
 
-inline void MacroAssembler::store_contents( Register s, Address& a, int offset ) {
+inline void MacroAssembler::store_ptr_contents(Register s, AddressLiteral& addrlit, Register temp, int offset) {
   assert_not_delayed();
-  sethi(a);
-  st(s, a, offset);
-}
-
-
-inline void MacroAssembler::store_ptr_contents( Register s, Address& a, int offset ) {
-  assert_not_delayed();
-  sethi(a);
-  st_ptr(s, a, offset);
+  sethi(addrlit, temp);
+  st_ptr(s, temp, addrlit.low10() + offset);
 }
 
 
 // This code sequence is relocatable to any address, even on LP64.
-inline void MacroAssembler::jumpl_to( Address& a, Register d, int offset ) {
+inline void MacroAssembler::jumpl_to(AddressLiteral& addrlit, Register temp, Register d, int offset) {
   assert_not_delayed();
   // Force fixed length sethi because NativeJump and NativeFarCall don't handle
   // variable length instruction streams.
-  sethi(a, /*ForceRelocatable=*/ true);
-  jmpl(a, d, offset);
+  patchable_sethi(addrlit, temp);
+  jmpl(temp, addrlit.low10() + offset, d);
 }
 
 
-inline void MacroAssembler::jump_to( Address& a, int offset ) {
-  jumpl_to( a, G0, offset );
+inline void MacroAssembler::jump_to(AddressLiteral& addrlit, Register temp, int offset) {
+  jumpl_to(addrlit, temp, G0, offset);
 }
 
 
-inline void MacroAssembler::set_oop( jobject obj, Register d ) {
-  set_oop(allocate_oop_address(obj, d));
+inline void MacroAssembler::jump_indirect_to(Address& a, Register temp,
+                                             int ld_offset, int jmp_offset) {
+  assert_not_delayed();
+  //sethi(al);                   // sethi is caller responsibility for this one
+  ld_ptr(a, temp, ld_offset);
+  jmp(temp, jmp_offset);
 }
 
 
-inline void MacroAssembler::set_oop_constant( jobject obj, Register d ) {
-  set_oop(constant_oop_address(obj, d));
+inline void MacroAssembler::set_oop(jobject obj, Register d) {
+  set_oop(allocate_oop_address(obj), d);
 }
 
 
-inline void MacroAssembler::set_oop( Address obj_addr ) {
-  assert(obj_addr.rspec().type()==relocInfo::oop_type, "must be an oop reloc");
-  load_address(obj_addr);
+inline void MacroAssembler::set_oop_constant(jobject obj, Register d) {
+  set_oop(constant_oop_address(obj), d);
+}
+
+
+inline void MacroAssembler::set_oop(AddressLiteral& obj_addr, Register d) {
+  assert(obj_addr.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
+  set(obj_addr, d);
 }
 
 
--- a/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -277,10 +277,11 @@
 
   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();
-    Address addr = Address(_obj, address(NULL), oop_Relocation::spec(_oop_index));
-    __ sethi(addr, true);
-    __ add(addr, _obj, 0);
+#endif
+    AddressLiteral addrlit(NULL, oop_Relocation::spec(_oop_index));
+    __ patchable_set(addrlit, _obj);
 
 #ifdef ASSERT
     for (int i = 0; i < _bytes_to_copy; i++) {
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -327,7 +327,7 @@
 
 
 Address FrameMap::make_new_address(ByteSize sp_offset) const {
-  return Address(SP, 0, STACK_BIAS + in_bytes(sp_offset));
+  return Address(SP, STACK_BIAS + in_bytes(sp_offset));
 }
 
 
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
       // verify the interpreter's monitor has a non-null object
       {
         Label L;
-        __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::obj_offset_in_bytes()), O7);
+        __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::obj_offset_in_bytes(), O7);
         __ cmp(G0, O7);
         __ br(Assembler::notEqual, false, Assembler::pt, L);
         __ delayed()->nop();
@@ -205,9 +205,9 @@
       }
 #endif // ASSERT
       // Copy the lock field into the compiled activation.
-      __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::lock_offset_in_bytes()), O7);
+      __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::lock_offset_in_bytes(), O7);
       __ st_ptr(O7, frame_map()->address_for_monitor_lock(i));
-      __ ld_ptr(Address(OSR_buf, 0, slot_offset + BasicObjectLock::obj_offset_in_bytes()), O7);
+      __ ld_ptr(OSR_buf, slot_offset + BasicObjectLock::obj_offset_in_bytes(), O7);
       __ st_ptr(O7, frame_map()->address_for_monitor_object(i));
     }
   }
@@ -238,21 +238,21 @@
     int offset_offset = java_lang_String::offset_offset_in_bytes(); // first character position
     int  count_offset = java_lang_String:: count_offset_in_bytes();
 
-    __ ld_ptr(Address(str0, 0,  value_offset), tmp0);
-    __ ld(Address(str0, 0, offset_offset), tmp2);
+    __ ld_ptr(str0, value_offset, tmp0);
+    __ ld(str0, offset_offset, tmp2);
     __ add(tmp0, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp0);
-    __ ld(Address(str0, 0, count_offset), str0);
+    __ ld(str0, count_offset, str0);
     __ sll(tmp2, exact_log2(sizeof(jchar)), tmp2);
 
     // str1 may be null
     add_debug_info_for_null_check_here(info);
 
-    __ ld_ptr(Address(str1, 0,  value_offset), tmp1);
+    __ ld_ptr(str1, value_offset, tmp1);
     __ add(tmp0, tmp2, tmp0);
 
-    __ ld(Address(str1, 0, offset_offset), tmp2);
+    __ ld(str1, offset_offset, tmp2);
     __ add(tmp1, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1);
-    __ ld(Address(str1, 0, count_offset), str1);
+    __ ld(str1, count_offset, str1);
     __ sll(tmp2, exact_log2(sizeof(jchar)), tmp2);
     __ subcc(str0, str1, O7);
     __ add(tmp1, tmp2, tmp1);
@@ -378,7 +378,7 @@
   compilation()->offsets()->set_value(CodeOffsets::Exceptions, code_offset());
 
 
-  if (compilation()->has_exception_handlers() || JvmtiExport::can_post_exceptions()) {
+  if (compilation()->has_exception_handlers() || compilation()->env()->jvmti_can_post_exceptions()) {
     __ call(Runtime1::entry_for(Runtime1::handle_exception_id), relocInfo::runtime_call_type);
     __ delayed()->nop();
   }
@@ -412,9 +412,9 @@
 #endif // ASSERT
   compilation()->offsets()->set_value(CodeOffsets::Deopt, code_offset());
 
-  Address deopt_blob(G3_scratch, SharedRuntime::deopt_blob()->unpack());
-
-  __ JUMP(deopt_blob, 0); // sethi;jmp
+  AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
+
+  __ JUMP(deopt_blob, G3_scratch, 0); // sethi;jmp
   __ delayed()->nop();
 
   assert(code_offset() - offset <= deopt_handler_size, "overflow");
@@ -441,13 +441,12 @@
   int oop_index = __ oop_recorder()->allocate_index((jobject)NULL);
   PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, oop_index);
 
-  Address addr = Address(reg, address(NULL), oop_Relocation::spec(oop_index));
-  assert(addr.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
+  AddressLiteral addrlit(NULL, oop_Relocation::spec(oop_index));
+  assert(addrlit.rspec().type() == relocInfo::oop_type, "must be an oop 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
-  __ sethi(addr, true);
-  __ add(addr, reg, 0);
+  __ patchable_set(addrlit, reg);
 
   patching_epilog(patch, lir_patch_normal, reg, info);
 }
@@ -706,7 +705,7 @@
 
 void LIR_Assembler::vtable_call(int vtable_offset, CodeEmitInfo* info) {
   add_debug_info_for_null_check_here(info);
-  __ ld_ptr(Address(O0, 0,  oopDesc::klass_offset_in_bytes()), G3_scratch);
+  __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), G3_scratch);
   if (__ is_simm13(vtable_offset) ) {
     __ ld_ptr(G3_scratch, vtable_offset, G5_method);
   } else {
@@ -715,7 +714,7 @@
     // ld_ptr, set_hi, set
     __ ld_ptr(G3_scratch, G5_method, G5_method);
   }
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3_scratch);
+  __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3_scratch);
   __ callr(G3_scratch, G0);
   // the peephole pass fills the delay slot
 }
@@ -738,8 +737,7 @@
       default      : ShouldNotReachHere();
     }
   } else {
-    __ sethi(disp & ~0x3ff, O7, true);
-    __ add(O7, disp & 0x3ff, O7);
+    __ set(disp, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     load_offset = code_offset();
     switch(ld_type) {
@@ -775,8 +773,7 @@
       default      : ShouldNotReachHere();
     }
   } else {
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     switch (type) {
       case T_BOOLEAN: // fall through
@@ -813,8 +810,7 @@
       __ ldf(w, s, disp, d);
     }
   } else {
-    __ sethi(disp & ~0x3ff, O7, true);
-    __ add(O7, disp & 0x3ff, O7);
+    __ set(disp, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     __ ldf(w, s, O7, d);
   }
@@ -839,8 +835,7 @@
       __ stf(w, value, base, offset);
     }
   } else {
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     if (info != NULL) add_debug_info_for_null_check_here(info);
     __ stf(w, value, O7, base);
   }
@@ -852,8 +847,7 @@
   if (!Assembler::is_simm13(offset + (type == T_LONG) ? wordSize : 0)) {
     assert(!unaligned, "can't handle this");
     // for offsets larger than a simm13 we setup the offset in O7
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     store_offset = store(from_reg, base, O7, type);
   } else {
     if (type == T_ARRAY || type == T_OBJECT) __ verify_oop(from_reg->as_register());
@@ -937,8 +931,7 @@
     assert(base != O7, "destroying register");
     assert(!unaligned, "can't handle this");
     // for offsets larger than a simm13 we setup the offset in O7
-    __ sethi(offset & ~0x3ff, O7, true);
-    __ add(O7, offset & 0x3ff, O7);
+    __ set(offset, O7);
     load_offset = load(base, O7, to_reg, type);
   } else {
     load_offset = code_offset();
@@ -1213,7 +1206,7 @@
           assert(to_reg->is_single_fpu(), "wrong register kind");
 
           __ set(con, O7);
-          Address temp_slot(SP, 0, (frame::register_save_words * wordSize) + STACK_BIAS);
+          Address temp_slot(SP, (frame::register_save_words * wordSize) + STACK_BIAS);
           __ st(O7, temp_slot);
           __ ldf(FloatRegisterImpl::S, temp_slot, to_reg->as_float_reg());
         }
@@ -1238,8 +1231,8 @@
         } else {
           ShouldNotReachHere();
           assert(to_reg->is_double_fpu(), "wrong register kind");
-          Address temp_slot_lo(SP, 0, ((frame::register_save_words  ) * wordSize) + STACK_BIAS);
-          Address temp_slot_hi(SP, 0, ((frame::register_save_words) * wordSize) + (longSize/2) + STACK_BIAS);
+          Address temp_slot_lo(SP, ((frame::register_save_words  ) * wordSize) + STACK_BIAS);
+          Address temp_slot_hi(SP, ((frame::register_save_words) * wordSize) + (longSize/2) + STACK_BIAS);
           __ set(low(con),  O7);
           __ st(O7, temp_slot_lo);
           __ set(high(con), O7);
@@ -1267,17 +1260,16 @@
           break;
         }
         RelocationHolder rspec = internal_word_Relocation::spec(const_addr);
+        AddressLiteral const_addrlit(const_addr, rspec);
         if (to_reg->is_single_fpu()) {
-          __ sethi(  (intx)const_addr & ~0x3ff, O7, true, rspec);
+          __ patchable_sethi(const_addrlit, O7);
           __ relocate(rspec);
-
-          int offset = (intx)const_addr & 0x3ff;
-          __ ldf (FloatRegisterImpl::S, O7, offset, to_reg->as_float_reg());
+          __ ldf(FloatRegisterImpl::S, O7, const_addrlit.low10(), to_reg->as_float_reg());
 
         } else {
           assert(to_reg->is_single_cpu(), "Must be a cpu register.");
 
-          __ set((intx)const_addr, O7, rspec);
+          __ set(const_addrlit, O7);
           load(O7, 0, to_reg->as_register(), T_INT);
         }
       }
@@ -1293,10 +1285,10 @@
         RelocationHolder rspec = internal_word_Relocation::spec(const_addr);
 
         if (to_reg->is_double_fpu()) {
-          __ sethi(  (intx)const_addr & ~0x3ff, O7, true, rspec);
-          int offset = (intx)const_addr & 0x3ff;
+          AddressLiteral const_addrlit(const_addr, rspec);
+          __ patchable_sethi(const_addrlit, O7);
           __ relocate(rspec);
-          __ ldf (FloatRegisterImpl::D, O7, offset, to_reg->as_double_reg());
+          __ ldf (FloatRegisterImpl::D, O7, const_addrlit.low10(), to_reg->as_double_reg());
         } else {
           assert(to_reg->is_double_cpu(), "Must be a long register.");
 #ifdef _LP64
@@ -1317,7 +1309,7 @@
 
 Address LIR_Assembler::as_Address(LIR_Address* addr) {
   Register reg = addr->base()->as_register();
-  return Address(reg, 0, addr->disp());
+  return Address(reg, addr->disp());
 }
 
 
@@ -1360,13 +1352,13 @@
 
 Address LIR_Assembler::as_Address_hi(LIR_Address* addr) {
   Address base = as_Address(addr);
-  return Address(base.base(), 0, base.disp() + hi_word_offset_in_bytes);
+  return Address(base.base(), base.disp() + hi_word_offset_in_bytes);
 }
 
 
 Address LIR_Assembler::as_Address_lo(LIR_Address* addr) {
   Address base = as_Address(addr);
-  return Address(base.base(), 0, base.disp() + lo_word_offset_in_bytes);
+  return Address(base.base(), base.disp() + lo_word_offset_in_bytes);
 }
 
 
@@ -1396,8 +1388,7 @@
   if (addr->index()->is_illegal()) {
     if (!Assembler::is_simm13(disp_value) && (!unaligned || Assembler::is_simm13(disp_value + 4))) {
       if (needs_patching) {
-        __ sethi(0, O7, true);
-        __ add(O7, 0, O7);
+        __ patchable_set(0, O7);
       } else {
         __ set(disp_value, O7);
       }
@@ -1544,8 +1535,7 @@
   if (addr->index()->is_illegal()) {
     if (!Assembler::is_simm13(disp_value) && (!unaligned || Assembler::is_simm13(disp_value + 4))) {
       if (needs_patching) {
-        __ sethi(0, O7, true);
-        __ add(O7, 0, O7);
+        __ patchable_set(0, O7);
       } else {
         __ set(disp_value, O7);
       }
@@ -1627,8 +1617,8 @@
 
   __ set_oop(NULL, G5);
   // must be set to -1 at code generation time
-  Address a(G3, (address)-1);
-  __ jump_to(a, 0);
+  AddressLiteral addrlit(-1);
+  __ jump_to(addrlit, G3);
   __ delayed()->nop();
 
   assert(__ offset() - start <= call_stub_size, "stub too big");
@@ -2063,7 +2053,7 @@
     address pc_for_athrow  = __ pc();
     int pc_for_athrow_offset = __ offset();
     RelocationHolder rspec = internal_word_Relocation::spec(pc_for_athrow);
-    __ set((intptr_t)pc_for_athrow, Oissuing_pc, rspec);
+    __ set(pc_for_athrow, Oissuing_pc, rspec);
     add_call_info(pc_for_athrow_offset, info); // for exception handler
 
     __ call(Runtime1::entry_for(Runtime1::handle_exception_id), relocInfo::runtime_call_type);
@@ -2393,23 +2383,11 @@
 
     // get instance klass
     load(k_RInfo, objArrayKlass::element_klass_offset_in_bytes() + sizeof(oopDesc), k_RInfo, T_OBJECT, NULL);
-    // get super_check_offset
-    load(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes(), Rtmp1, T_INT, NULL);
-    // See if we get an immediate positive hit
-    __ ld_ptr(klass_RInfo, Rtmp1, FrameMap::O7_oop_opr->as_register());
-    __ cmp(k_RInfo, O7);
-    __ br(Assembler::equal, false, Assembler::pn, done);
-    __ delayed()->nop();
-    // check for immediate negative hit
-    __ cmp(Rtmp1, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-    __ br(Assembler::notEqual, false, Assembler::pn, *stub->entry());
-    __ delayed()->nop();
-    // check for self
-    __ cmp(klass_RInfo, k_RInfo);
-    __ br(Assembler::equal, false, Assembler::pn, done);
-    __ delayed()->nop();
-
-    // assert(sub.is_same(FrameMap::G3_RInfo) && super.is_same(FrameMap::G1_RInfo), "incorrect call setup");
+    // perform the fast part of the checking logic
+    __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, O7, &done, stub->entry(), NULL);
+
+    // call out-of-line instance of __ check_klass_subtype_slow_path(...):
+    assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup");
     __ call(Runtime1::entry_for(Runtime1::slow_subtype_check_id), relocInfo::runtime_call_type);
     __ delayed()->nop();
     __ cmp(G3, 0);
@@ -2463,7 +2441,7 @@
       }
 
 
-      Address flags_addr(mdo, 0, md->byte_offset_of_slot(data, DataLayout::flags_offset()) - mdo_offset_bias);
+      Address flags_addr(mdo, md->byte_offset_of_slot(data, DataLayout::flags_offset()) - mdo_offset_bias);
       __ ldub(flags_addr, data_val);
       __ or3(data_val, BitData::null_seen_byte_constant(), data_val);
       __ stb(data_val, flags_addr);
@@ -2493,58 +2471,30 @@
       __ delayed()->nop();
       __ bind(done);
     } else {
+      bool need_slow_path = true;
       if (k->is_loaded()) {
-        load(klass_RInfo, k->super_check_offset(), Rtmp1, T_OBJECT, NULL);
-
-        if (sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() != k->super_check_offset()) {
-          // See if we get an immediate positive hit
-          __ cmp(Rtmp1, k_RInfo );
-          __ br(Assembler::notEqual, false, Assembler::pn, *stub->entry());
-          __ delayed()->nop();
-        } else {
-          // See if we get an immediate positive hit
-          assert_different_registers(Rtmp1, k_RInfo, klass_RInfo);
-          __ cmp(Rtmp1, k_RInfo );
-          __ br(Assembler::equal, false, Assembler::pn, done);
-          // check for self
-          __ delayed()->cmp(klass_RInfo, k_RInfo);
-          __ br(Assembler::equal, false, Assembler::pn, done);
-          __ delayed()->nop();
-
-          // assert(sub.is_same(FrameMap::G3_RInfo) && super.is_same(FrameMap::G1_RInfo), "incorrect call setup");
-          __ call(Runtime1::entry_for(Runtime1::slow_subtype_check_id), relocInfo::runtime_call_type);
-          __ delayed()->nop();
-          __ cmp(G3, 0);
-          __ br(Assembler::equal, false, Assembler::pn, *stub->entry());
-          __ delayed()->nop();
-        }
-        __ bind(done);
+        if (k->super_check_offset() != sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes())
+          need_slow_path = false;
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, noreg,
+                                         (need_slow_path ? &done : NULL),
+                                         stub->entry(), NULL,
+                                         RegisterOrConstant(k->super_check_offset()));
       } else {
-        assert_different_registers(Rtmp1, klass_RInfo, k_RInfo);
-
-        load(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes(), Rtmp1, T_INT, NULL);
-        // See if we get an immediate positive hit
-        load(klass_RInfo, Rtmp1, FrameMap::O7_oop_opr, T_OBJECT);
-        __ cmp(k_RInfo, O7);
-        __ br(Assembler::equal, false, Assembler::pn, done);
-        __ delayed()->nop();
-        // check for immediate negative hit
-        __ cmp(Rtmp1, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-        __ br(Assembler::notEqual, false, Assembler::pn, *stub->entry());
-        // check for self
-        __ delayed()->cmp(klass_RInfo, k_RInfo);
-        __ br(Assembler::equal, false, Assembler::pn, done);
-        __ delayed()->nop();
-
-        // assert(sub.is_same(FrameMap::G3_RInfo) && super.is_same(FrameMap::G1_RInfo), "incorrect call setup");
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, O7,
+                                         &done, stub->entry(), NULL);
+      }
+      if (need_slow_path) {
+        // call out-of-line instance of __ check_klass_subtype_slow_path(...):
+        assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup");
         __ call(Runtime1::entry_for(Runtime1::slow_subtype_check_id), relocInfo::runtime_call_type);
         __ delayed()->nop();
         __ cmp(G3, 0);
         __ br(Assembler::equal, false, Assembler::pn, *stub->entry());
         __ delayed()->nop();
-        __ bind(done);
       }
-
+      __ bind(done);
     }
     __ mov(obj, dst);
   } else if (code == lir_instanceof) {
@@ -2582,58 +2532,32 @@
       __ set(0, dst);
       __ bind(done);
     } else {
+      bool need_slow_path = true;
       if (k->is_loaded()) {
-        assert_different_registers(Rtmp1, klass_RInfo, k_RInfo);
-        load(klass_RInfo, k->super_check_offset(), Rtmp1, T_OBJECT, NULL);
-
-        if (sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() != k->super_check_offset()) {
-          // See if we get an immediate positive hit
-          __ cmp(Rtmp1, k_RInfo );
-          __ br(Assembler::equal, true, Assembler::pt, done);
-          __ delayed()->set(1, dst);
-          __ set(0, dst);
-          __ bind(done);
-        } else {
-          // See if we get an immediate positive hit
-          assert_different_registers(Rtmp1, k_RInfo, klass_RInfo);
-          __ cmp(Rtmp1, k_RInfo );
-          __ br(Assembler::equal, true, Assembler::pt, done);
-          __ delayed()->set(1, dst);
-          // check for self
-          __ cmp(klass_RInfo, k_RInfo);
-          __ br(Assembler::equal, true, Assembler::pt, done);
-          __ delayed()->set(1, dst);
-
-          // assert(sub.is_same(FrameMap::G3_RInfo) && super.is_same(FrameMap::G1_RInfo), "incorrect call setup");
-          __ call(Runtime1::entry_for(Runtime1::slow_subtype_check_id), relocInfo::runtime_call_type);
-          __ delayed()->nop();
-          __ mov(G3, dst);
-          __ bind(done);
-        }
+        if (k->super_check_offset() != sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes())
+          need_slow_path = false;
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, noreg,
+                                         (need_slow_path ? &done : NULL),
+                                         (need_slow_path ? &done : NULL), NULL,
+                                         RegisterOrConstant(k->super_check_offset()),
+                                         dst);
       } else {
         assert(dst != klass_RInfo && dst != k_RInfo, "need 3 registers");
-
-        load(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes(), dst, T_INT, NULL);
-        // See if we get an immediate positive hit
-        load(klass_RInfo, dst, FrameMap::O7_oop_opr, T_OBJECT);
-        __ cmp(k_RInfo, O7);
-        __ br(Assembler::equal, true, Assembler::pt, done);
-        __ delayed()->set(1, dst);
-        // check for immediate negative hit
-        __ cmp(dst, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-        __ br(Assembler::notEqual, true, Assembler::pt, done);
-        __ delayed()->set(0, dst);
-        // check for self
-        __ cmp(klass_RInfo, k_RInfo);
-        __ br(Assembler::equal, true, Assembler::pt, done);
-        __ delayed()->set(1, dst);
-
-        // assert(sub.is_same(FrameMap::G3_RInfo) && super.is_same(FrameMap::G1_RInfo), "incorrect call setup");
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, dst,
+                                         &done, &done, NULL,
+                                         RegisterOrConstant(-1),
+                                         dst);
+      }
+      if (need_slow_path) {
+        // call out-of-line instance of __ check_klass_subtype_slow_path(...):
+        assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup");
         __ call(Runtime1::entry_for(Runtime1::slow_subtype_check_id), relocInfo::runtime_call_type);
         __ delayed()->nop();
         __ mov(G3, dst);
-        __ bind(done);
       }
+      __ bind(done);
     }
   } else {
     ShouldNotReachHere();
@@ -2804,7 +2728,7 @@
     __ add(mdo, O7, mdo);
   }
 
-  Address counter_addr(mdo, 0, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias);
+  Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias);
   __ lduw(counter_addr, tmp1);
   __ add(tmp1, DataLayout::counter_increment, tmp1);
   __ stw(tmp1, counter_addr);
@@ -2830,8 +2754,8 @@
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         ciKlass* receiver = vc_data->receiver(i);
         if (known_klass->equals(receiver)) {
-          Address data_addr(mdo, 0, md->byte_offset_of_slot(data,
-                                                            VirtualCallData::receiver_count_offset(i)) -
+          Address data_addr(mdo, md->byte_offset_of_slot(data,
+                                                         VirtualCallData::receiver_count_offset(i)) -
                             mdo_offset_bias);
           __ lduw(data_addr, tmp1);
           __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2848,11 +2772,11 @@
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         ciKlass* receiver = vc_data->receiver(i);
         if (receiver == NULL) {
-          Address recv_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+          Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                             mdo_offset_bias);
           jobject2reg(known_klass->encoding(), tmp1);
           __ st_ptr(tmp1, recv_addr);
-          Address data_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+          Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
                             mdo_offset_bias);
           __ lduw(data_addr, tmp1);
           __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2861,20 +2785,20 @@
         }
       }
     } else {
-      load(Address(recv, 0, oopDesc::klass_offset_in_bytes()), recv, T_OBJECT);
+      load(Address(recv, oopDesc::klass_offset_in_bytes()), recv, T_OBJECT);
       Label update_done;
       uint i;
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         Label next_test;
         // See if the receiver is receiver[n].
-        Address receiver_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+        Address receiver_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                               mdo_offset_bias);
         __ ld_ptr(receiver_addr, tmp1);
         __ verify_oop(tmp1);
         __ cmp(recv, tmp1);
         __ brx(Assembler::notEqual, false, Assembler::pt, next_test);
         __ delayed()->nop();
-        Address data_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+        Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
                           mdo_offset_bias);
         __ lduw(data_addr, tmp1);
         __ add(tmp1, DataLayout::counter_increment, tmp1);
@@ -2887,7 +2811,7 @@
       // Didn't find receiver; find next empty slot and fill it in
       for (i = 0; i < VirtualCallData::row_limit(); i++) {
         Label next_test;
-        Address recv_addr(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
+        Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                           mdo_offset_bias);
         load(recv_addr, tmp1, T_OBJECT);
         __ tst(tmp1);
@@ -2895,8 +2819,8 @@
         __ delayed()->nop();
         __ st_ptr(recv, recv_addr);
         __ set(DataLayout::counter_increment, tmp1);
-        __ st_ptr(tmp1, Address(mdo, 0, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
-                                mdo_offset_bias));
+        __ st_ptr(tmp1, mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
+                  mdo_offset_bias);
         if (i < (VirtualCallData::row_limit() - 1)) {
           __ br(Assembler::always, false, Assembler::pt, update_done);
           __ delayed()->nop();
--- a/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -371,7 +371,7 @@
   }
   __ move(value.result(), array_addr, null_check_info);
   if (obj_store) {
-    // Is this precise?
+    // Precise card mark
     post_barrier(LIR_OprFact::address(array_addr), value.result());
   }
 }
@@ -685,11 +685,8 @@
   LIR_Opr result = rlock_result(x);
   __ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result);
   if (type == objectType) {  // Write-barrier needed for Object fields.
-#ifdef PRECISE_CARDMARK
+    // Precise card mark since could either be object or array
     post_barrier(addr, val.result());
-#else
-    post_barrier(obj.result(), val.result());
-#endif // PRECISE_CARDMARK
   }
 }
 
--- a/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 +29,13 @@
   Label L;
   const Register temp_reg = G3_scratch;
   // Note: needs more testing of out-of-line vs. inline slow case
-  Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
   verify_oop(receiver);
   ld_ptr(receiver, oopDesc::klass_offset_in_bytes(), temp_reg);
   cmp(temp_reg, iCache);
   brx(Assembler::equal, true, Assembler::pt, L);
   delayed()->nop();
-  jump_to(ic_miss, 0);
+  AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
+  jump_to(ic_miss, temp_reg);
   delayed()->nop();
   align(CodeEntryAlignment);
   bind(L);
@@ -84,7 +84,7 @@
 
   Label done;
 
-  Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
 
   // The following move must be the first instruction of emitted since debug
   // information may be generated for it.
@@ -132,7 +132,7 @@
 
   Label done;
 
-  Address mark_addr(Roop, 0, oopDesc::mark_offset_in_bytes());
+  Address mark_addr(Roop, oopDesc::mark_offset_in_bytes());
   assert(mark_addr.disp() == 0, "cas must take a zero displacement");
 
   if (UseBiasedLocking) {
@@ -286,7 +286,7 @@
     initialize_body(base, index);
   }
 
-  if (DTraceAllocProbes) {
+  if (CURRENT_ENV->dtrace_alloc_probes()) {
     assert(obj == O0, "must be");
     call(CAST_FROM_FN_PTR(address, Runtime1::entry_for(Runtime1::dtrace_object_alloc_id)),
          relocInfo::runtime_call_type);
@@ -355,7 +355,7 @@
   sub(arr_size, hdr_size * wordSize, index);         // compute index = number of words to clear
   initialize_body(base, index);
 
-  if (DTraceAllocProbes) {
+  if (CURRENT_ENV->dtrace_alloc_probes()) {
     assert(obj == O0, "must be");
     call(CAST_FROM_FN_PTR(address, Runtime1::entry_for(Runtime1::dtrace_object_alloc_id)),
          relocInfo::runtime_call_type);
@@ -370,7 +370,7 @@
 
 void C1_MacroAssembler::verify_stack_oop(int stack_offset) {
   if (!VerifyOops) return;
-  verify_oop_addr(Address(SP, 0, stack_offset + STACK_BIAS));
+  verify_oop_addr(Address(SP, stack_offset + STACK_BIAS));
 }
 
 void C1_MacroAssembler::verify_not_null_oop(Register r) {
--- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 +57,13 @@
 
   // check for pending exceptions
   { Label L;
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     ld_ptr(exception_addr, Gtemp);
     br_null(Gtemp, false, pt, L);
     delayed()->nop();
-    Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+    Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
     st_ptr(G0, vm_result_addr);
-    Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+    Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
     st_ptr(G0, vm_result_addr_2);
 
     if (frame_size() == no_frame_size) {
@@ -73,8 +73,8 @@
     } else if (_stub_id == Runtime1::forward_exception_id) {
       should_not_reach_here();
     } else {
-      Address exc(G4, Runtime1::entry_for(Runtime1::forward_exception_id));
-      jump_to(exc, 0);
+      AddressLiteral exc(Runtime1::entry_for(Runtime1::forward_exception_id));
+      jump_to(exc, G4);
       delayed()->nop();
     }
     bind(L);
@@ -85,7 +85,7 @@
     get_vm_result  (oop_result1);
   } else {
     // be a little paranoid and clear the result
-    Address vm_result_addr(G2_thread, 0, in_bytes(JavaThread::vm_result_offset()));
+    Address vm_result_addr(G2_thread, JavaThread::vm_result_offset());
     st_ptr(G0, vm_result_addr);
   }
 
@@ -93,7 +93,7 @@
     get_vm_result_2(oop_result2);
   } else {
     // be a little paranoid and clear the result
-    Address vm_result_addr_2(G2_thread, 0, in_bytes(JavaThread::vm_result_2_offset()));
+    Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
     st_ptr(G0, vm_result_addr_2);
   }
 
@@ -479,8 +479,8 @@
         Register G4_length = G4; // Incoming
         Register O0_obj   = O0; // Outgoing
 
-        Address klass_lh(G5_klass, 0, ((klassOopDesc::header_size() * HeapWordSize)
-                                       + Klass::layout_helper_offset_in_bytes()));
+        Address klass_lh(G5_klass, ((klassOopDesc::header_size() * HeapWordSize)
+                                    + Klass::layout_helper_offset_in_bytes()));
         assert(Klass::_lh_header_size_shift % BitsPerByte == 0, "bytewise");
         assert(Klass::_lh_header_size_mask == 0xFF, "bytewise");
         // Use this offset to pick out an individual byte of the layout_helper:
@@ -714,38 +714,19 @@
         //      sub  : G3, argument, destroyed
         //      super: G1, argument, not changed
         //      raddr: O7, blown by call
-        Label loop, miss;
+        Label miss;
 
         __ save_frame(0);               // Blow no registers!
 
-        __ ld_ptr( G3, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes(), L3 );
-        __ lduw(L3,arrayOopDesc::length_offset_in_bytes(),L0); // length in l0
-        __ add(L3,arrayOopDesc::base_offset_in_bytes(T_OBJECT),L1); // ptr into array
-        __ clr(L4);                     // Index
-        // Load a little early; will load 1 off the end of the array.
-        // Ok for now; revisit if we have other uses of this routine.
-        __ ld_ptr(L1,0,L2);             // Will load a little early
-
-        // The scan loop
-        __ bind(loop);
-        __ add(L1,wordSize,L1); // Bump by OOP size
-        __ cmp(L4,L0);
-        __ br(Assembler::equal,false,Assembler::pn,miss);
-        __ delayed()->inc(L4);  // Bump index
-        __ subcc(L2,G1,L3);             // Check for match; zero in L3 for a hit
-        __ brx( Assembler::notEqual, false, Assembler::pt, loop );
-        __ delayed()->ld_ptr(L1,0,L2); // Will load a little early
-
-        // Got a hit; report success; set cache
-        __ st_ptr( G1, G3, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() );
+        __ check_klass_subtype_slow_path(G3, G1, L0, L1, L2, L4, NULL, &miss);
 
         __ mov(1, G3);
-        __ ret();                       // Result in G5 is ok; flags set
+        __ ret();                       // Result in G5 is 'true'
         __ delayed()->restore();        // free copy or add can go here
 
         __ bind(miss);
         __ mov(0, G3);
-        __ ret();                       // Result in G5 is ok; flags set
+        __ ret();                       // Result in G5 is 'false'
         __ delayed()->restore();        // free copy or add can go here
       }
 
@@ -921,8 +902,8 @@
         __ srl(addr, CardTableModRefBS::card_shift, addr);
 #endif
 
-        Address rs(cardtable, (address)byte_map_base);
-        __ load_address(rs); // cardtable := <card table base>
+        AddressLiteral rs(byte_map_base);
+        __ set(rs, cardtable);         // cardtable := <card table base>
         __ ldub(addr, cardtable, tmp); // tmp := [addr + cardtable]
 
         __ br_on_reg_cond(Assembler::rc_nz, /*annul*/false, Assembler::pt,
@@ -1041,8 +1022,8 @@
 
   __ restore();
 
-  Address exc(G4, Runtime1::entry_for(Runtime1::unwind_exception_id));
-  __ jump_to(exc, 0);
+  AddressLiteral exc(Runtime1::entry_for(Runtime1::unwind_exception_id));
+  __ jump_to(exc, G4);
   __ delayed()->nop();
 
 
--- a/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1017,6 +1017,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
                          frame::memory_parameter_word_sp_offset +  // register save area + param window
                          (native ?  frame::interpreter_frame_extra_outgoing_argument_words : 0); // JNI, class
 
@@ -1163,6 +1164,9 @@
   __ st_ptr(O2, XXX_STATE(_stack));                // PREPUSH
 
   __ lduh(max_stack, O3);                      // Full size expression stack
+  guarantee(!EnableMethodHandles, "no support yet for java.dyn.MethodHandle"); //6815692
+  //6815692//if (EnableMethodHandles)
+  //6815692//  __ inc(O3, methodOopDesc::extra_stack_entries());
   __ sll(O3, LogBytesPerWord, O3);
   __ sub(O2, O3, O3);
 //  __ sub(O3, wordSize, O3);                    // so prepush doesn't look out of bounds
@@ -2017,7 +2021,9 @@
 
   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();
   return (round_to(max_stack +
+                   extra_stack +
                    slop_factor +
                    fixed_size +
                    monitor_size +
@@ -2104,7 +2110,8 @@
   // 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.
-  to_fill->_stack_limit = stack_base - (method->max_stack() + 1);
+  int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  to_fill->_stack_limit = stack_base - (method->max_stack() + 1 + extra_stack);
   to_fill->_monitor_base = (BasicObjectLock*) monitor_base;
 
   // sparc specific
--- a/src/cpu/sparc/vm/dump_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/dump_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +106,7 @@
   __ and3(L0, 255, L4);                 // Isolate L3 = method offset;.
   __ sll(L4, LogBytesPerWord, L4);
   __ ld_ptr(L3, L4, L4);                // Get address of correct virtual method
-  Address method(L4, 0);
-  __ jmpl(method, G0);                  // Jump to correct method.
+  __ jmpl(L4, 0, G0);                   // Jump to correct method.
   __ delayed()->restore();              // Restore registers.
 
   __ flush();
--- a/src/cpu/sparc/vm/frame_sparc.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/frame_sparc.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -59,7 +59,7 @@
 inline bool frame::is_older(intptr_t* id) const   { assert(this->id() != NULL && id != NULL, "NULL frame id");
                                                     return this->id() > id ; }
 
-inline int frame::frame_size() const { return sender_sp() - sp(); }
+inline int frame::frame_size(RegisterMap* map) const { return sender_sp() - sp(); }
 
 inline intptr_t* frame::link() const { return (intptr_t *)(fp()[FP->sp_offset_in_saved_window()] + STACK_BIAS); }
 
--- a/src/cpu/sparc/vm/globals_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/globals_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -46,6 +46,7 @@
 define_pd_global(uintx, NewSize, ScaleForWordSize((2048 * K) + (2 * (64 * K))));
 define_pd_global(intx,  SurvivorRatio,         8);
 define_pd_global(intx,  InlineFrequencyCount,  50);  // we can use more inlining on the SPARC
+define_pd_global(intx,  InlineSmallCode,       1500);
 #ifdef _LP64
 // Stack slots are 2X larger in LP64 than in the 32 bit VM.
 define_pd_global(intx,  ThreadStackSize,       1024);
--- a/src/cpu/sparc/vm/icBuffer_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/icBuffer_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,14 +46,13 @@
   // (1) the oop 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");
-  Address cached_oop_addr(G5_inline_cache_reg, address(cached_oop));
-  // Force the sethi to generate the fixed sequence so next_instruction_address works
-  masm->sethi(cached_oop_addr, true /* ForceRelocatable */ );
-  masm->add(cached_oop_addr, G5_inline_cache_reg);
+  AddressLiteral cached_oop_addrlit(cached_oop, 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);
   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");
-  Address entry(G3_scratch, entry_point);
-  masm->JUMP(entry, 0);
+  AddressLiteral entry(entry_point);
+  masm->JUMP(entry, G3_scratch, 0);
   masm->delayed()->nop();
   masm->flush();
 }
--- a/src/cpu/sparc/vm/interp_masm_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/interp_masm_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +35,8 @@
 
 // This file specializes the assember with interpreter-specific macros
 
-const Address InterpreterMacroAssembler::l_tmp( FP, 0,  (frame::interpreter_frame_l_scratch_fp_offset    * wordSize ) + STACK_BIAS);
-const Address InterpreterMacroAssembler::d_tmp( FP, 0,  (frame::interpreter_frame_d_scratch_fp_offset    * wordSize) + STACK_BIAS);
+const Address InterpreterMacroAssembler::l_tmp(FP, (frame::interpreter_frame_l_scratch_fp_offset * wordSize) + STACK_BIAS);
+const Address InterpreterMacroAssembler::d_tmp(FP, (frame::interpreter_frame_d_scratch_fp_offset * wordSize) + STACK_BIAS);
 
 #else // CC_INTERP
 #ifndef STATE
@@ -78,14 +78,12 @@
   sll(Lbyte_code, LogBytesPerWord, Lbyte_code);         // multiply by wordSize
   ld_ptr(IdispatchTables, Lbyte_code, IdispatchAddress);// get entry addr
 #else
-  ldub( Lbcp, bcp_incr, Lbyte_code);               // load next bytecode
+  ldub( Lbcp, bcp_incr, Lbyte_code);                    // load next bytecode
   // dispatch table to use
-  Address tbl(G3_scratch, (address)Interpreter::dispatch_table(state));
-
-  sethi(tbl);
-  sll(Lbyte_code, LogBytesPerWord, Lbyte_code);    // multiply by wordSize
-  add(tbl, tbl.base(), 0);
-  ld_ptr( G3_scratch, Lbyte_code, IdispatchAddress);     // get entry addr
+  AddressLiteral tbl(Interpreter::dispatch_table(state));
+  sll(Lbyte_code, LogBytesPerWord, Lbyte_code);         // multiply by wordSize
+  set(tbl, G3_scratch);                                 // compute addr of table
+  ld_ptr(G3_scratch, Lbyte_code, IdispatchAddress);     // get entry addr
 #endif
 }
 
@@ -165,8 +163,7 @@
     Label L;
 
     // Check the "pending popframe condition" flag in the current thread
-    Address popframe_condition_addr(G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
-    ld(popframe_condition_addr, scratch_reg);
+    ld(G2_thread, JavaThread::popframe_condition_offset(), scratch_reg);
 
     // Initiate popframe handling only if it is not already being processed.  If the flag
     // has the popframe_processing bit set, it means that this code is called *during* popframe
@@ -192,11 +189,10 @@
 
 void InterpreterMacroAssembler::load_earlyret_value(TosState state) {
   Register thr_state = G4_scratch;
-  ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())),
-         thr_state);
-  const Address tos_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_tos_offset()));
-  const Address oop_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_oop_offset()));
-  const Address val_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_value_offset()));
+  ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), thr_state);
+  const Address tos_addr(thr_state, JvmtiThreadState::earlyret_tos_offset());
+  const Address oop_addr(thr_state, JvmtiThreadState::earlyret_oop_offset());
+  const Address val_addr(thr_state, JvmtiThreadState::earlyret_value_offset());
   switch (state) {
   case ltos: ld_long(val_addr, Otos_l);                   break;
   case atos: ld_ptr(oop_addr, Otos_l);
@@ -222,8 +218,7 @@
   if (JvmtiExport::can_force_early_return()) {
     Label L;
     Register thr_state = G3_scratch;
-    ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())),
-           thr_state);
+    ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), thr_state);
     tst(thr_state);
     br(zero, false, pt, L); // if (thread->jvmti_thread_state() == NULL) exit;
     delayed()->nop();
@@ -231,16 +226,14 @@
     // Initiate earlyret handling only if it is not already being processed.
     // If the flag has the earlyret_processing bit set, it means that this code
     // is called *during* earlyret handling - we don't want to reenter.
-    ld(Address(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_state_offset())),
-       G4_scratch);
+    ld(thr_state, JvmtiThreadState::earlyret_state_offset(), G4_scratch);
     cmp(G4_scratch, JvmtiThreadState::earlyret_pending);
     br(Assembler::notEqual, false, pt, L);
     delayed()->nop();
 
     // Call Interpreter::remove_activation_early_entry() to get the address of the
     // same-named entrypoint in the generated interpreter code
-    Address tos_addr(thr_state, 0, in_bytes(JvmtiThreadState::earlyret_tos_offset()));
-    ld(tos_addr, Otos_l1);
+    ld(thr_state, JvmtiThreadState::earlyret_tos_offset(), Otos_l1);
     call_VM_leaf(noreg, CAST_FROM_FN_PTR(address, Interpreter::remove_activation_early_entry), Otos_l1);
 
     // Jump to Interpreter::_remove_activation_early_entry
@@ -294,10 +287,9 @@
   } else {
 #endif
     // dispatch table to use
-    Address tbl(G3_scratch, (address)table);
-
+    AddressLiteral tbl(table);
     sll(Lbyte_code, LogBytesPerWord, Lbyte_code);       // multiply by wordSize
-    load_address(tbl);                                  // compute addr of table
+    set(tbl, G3_scratch);                               // compute addr of table
     ld_ptr(G3_scratch, Lbyte_code, G3_scratch);         // get entry addr
 #ifdef FAST_DISPATCH
   }
@@ -601,26 +593,17 @@
 
   // Reset SP by subtracting more space from Lesp.
   Label done;
-
-  const Address max_stack   (Lmethod, 0, in_bytes(methodOopDesc::max_stack_offset()));
-  const Address access_flags(Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
-
   verify_oop(Lmethod);
-
-
-  assert( G4_scratch    != Gframe_size,
-          "Only you can prevent register aliasing!");
+  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(access_flags, Gframe_size);
+  ld(Lmethod, methodOopDesc::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( max_stack, Gframe_size );
+  lduh(Lmethod, in_bytes(methodOopDesc::max_stack_offset()), Gframe_size);  // Load max stack.
   if (TaggedStackInterpreter) sll ( Gframe_size, 1, Gframe_size);  // max_stack * 2 for TAGS
   add( Gframe_size, frame::memory_parameter_word_sp_offset, Gframe_size );
 
@@ -721,8 +704,7 @@
     verify_thread();
     Label skip_compiled_code;
 
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, scratch);
     tst(scratch);
     br(Assembler::notZero, true, Assembler::pn, skip_compiled_code);
@@ -866,65 +848,18 @@
                                                   Register Rtmp2,
                                                   Register Rtmp3,
                                                   Label &ok_is_subtype ) {
-  Label not_subtype, loop;
+  Label not_subtype;
 
   // Profile the not-null value's klass.
   profile_typecheck(Rsub_klass, Rtmp1);
 
-  // Load the super-klass's check offset into Rtmp1
-  ld( Rsuper_klass, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes(), Rtmp1 );
-  // Load from the sub-klass's super-class display list, or a 1-word cache of
-  // the secondary superclass list, or a failing value with a sentinel offset
-  // if the super-klass is an interface or exceptionally deep in the Java
-  // hierarchy and we have to scan the secondary superclass list the hard way.
-  ld_ptr( Rsub_klass, Rtmp1, Rtmp2 );
-  // See if we get an immediate positive hit
-  cmp( Rtmp2, Rsuper_klass );
-  brx( Assembler::equal, false, Assembler::pt, ok_is_subtype );
-  // In the delay slot, check for immediate negative hit
-  delayed()->cmp( Rtmp1, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() );
-  br( Assembler::notEqual, false, Assembler::pt, not_subtype );
-  // In the delay slot, check for self
-  delayed()->cmp( Rsub_klass, Rsuper_klass );
-  brx( Assembler::equal, false, Assembler::pt, ok_is_subtype );
-
-  // Now do a linear scan of the secondary super-klass chain.
-  delayed()->ld_ptr( Rsub_klass, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes(), Rtmp2 );
-
-  // compress superclass
-  if (UseCompressedOops) encode_heap_oop(Rsuper_klass);
-
-  // Rtmp2 holds the objArrayOop of secondary supers.
-  ld( Rtmp2, arrayOopDesc::length_offset_in_bytes(), Rtmp1 );// Load the array length
-  // Check for empty secondary super list
-  tst(Rtmp1);
-
-  // Top of search loop
-  bind( loop );
-  br( Assembler::equal, false, Assembler::pn, not_subtype );
-  delayed()->nop();
-
-  // load next super to check
-  if (UseCompressedOops) {
-    lduw( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3);
-    // Bump array pointer forward one oop
-    add( Rtmp2, 4, Rtmp2 );
-  } else {
-    ld_ptr( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3);
-    // Bump array pointer forward one oop
-    add( Rtmp2, wordSize, Rtmp2);
-  }
-  // Look for Rsuper_klass on Rsub_klass's secondary super-class-overflow list
-  cmp( Rtmp3, Rsuper_klass );
-  // A miss means we are NOT a subtype and need to keep looping
-  brx( Assembler::notEqual, false, Assembler::pt, loop );
-  delayed()->deccc( Rtmp1 );    // dec trip counter in delay slot
-  // Falling out the bottom means we found a hit; we ARE a subtype
-  if (UseCompressedOops) decode_heap_oop(Rsuper_klass);
-  br( Assembler::always, false, Assembler::pt, ok_is_subtype );
-  // Update the cache
-  delayed()->st_ptr( Rsuper_klass, Rsub_klass,
-                     sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() );
+  check_klass_subtype_fast_path(Rsub_klass, Rsuper_klass,
+                                Rtmp1, Rtmp2,
+                                &ok_is_subtype, &not_subtype, NULL);
+
+  check_klass_subtype_slow_path(Rsub_klass, Rsuper_klass,
+                                Rtmp1, Rtmp2, Rtmp3, /*hack:*/ noreg,
+                                &ok_is_subtype, NULL);
 
   bind(not_subtype);
   profile_typecheck_failed(Rtmp1);
@@ -963,8 +898,8 @@
                                                 Register Rscratch,
                                                 Label&   ok ) {
   assert(throw_entry_point != NULL, "entry point must be generated by now");
-  Address dest(Rscratch, throw_entry_point);
-  jump_to(dest);
+  AddressLiteral dest(throw_entry_point);
+  jump_to(dest, Rscratch);
   delayed()->nop();
   bind(ok);
 }
@@ -1082,18 +1017,18 @@
   Label unlocked, unlock, no_unlock;
 
   // get the value of _do_not_unlock_if_synchronized into G1_scratch
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-    in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   ldbool(do_not_unlock_if_synchronized, G1_scratch);
   stbool(G0, do_not_unlock_if_synchronized); // reset the flag
 
   // check if synchronized method
-  const Address access_flags(Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address access_flags(Lmethod, methodOopDesc::access_flags_offset());
   interp_verify_oop(Otos_i, state, __FILE__, __LINE__);
   push(state); // save tos
-  ld(access_flags, G3_scratch);
+  ld(access_flags, G3_scratch); // Load access flags.
   btst(JVM_ACC_SYNCHRONIZED, G3_scratch);
-  br( zero, false, pt, unlocked);
+  br(zero, false, pt, unlocked);
   delayed()->nop();
 
   // Don't unlock anything if the _do_not_unlock_if_synchronized flag
@@ -1283,8 +1218,8 @@
     Register obj_reg = Object;
     Register mark_reg = G4_scratch;
     Register temp_reg = G1_scratch;
-    Address  lock_addr = Address(lock_reg, 0, BasicObjectLock::lock_offset_in_bytes());
-    Address  mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+    Address  lock_addr(lock_reg, BasicObjectLock::lock_offset_in_bytes());
+    Address  mark_addr(obj_reg, oopDesc::mark_offset_in_bytes());
     Label    done;
 
     Label slow_case;
@@ -1362,9 +1297,8 @@
     Register obj_reg = G3_scratch;
     Register mark_reg = G4_scratch;
     Register displaced_header_reg = G1_scratch;
-    Address  lock_addr = Address(lock_reg, 0, BasicObjectLock::lock_offset_in_bytes());
-    Address  lockobj_addr = Address(lock_reg, 0, BasicObjectLock::obj_offset_in_bytes());
-    Address  mark_addr = Address(obj_reg, 0, oopDesc::mark_offset_in_bytes());
+    Address  lockobj_addr(lock_reg, BasicObjectLock::obj_offset_in_bytes());
+    Address  mark_addr(obj_reg, oopDesc::mark_offset_in_bytes());
     Label    done;
 
     if (UseBiasedLocking) {
@@ -1375,7 +1309,8 @@
     }
 
     // Test first if we are in the fast recursive case
-    ld_ptr(lock_addr, displaced_header_reg, BasicLock::displaced_header_offset_in_bytes());
+    Address lock_addr(lock_reg, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes());
+    ld_ptr(lock_addr, displaced_header_reg);
     br_null(displaced_header_reg, true, Assembler::pn, done);
     delayed()->st_ptr(G0, lockobj_addr);  // free entry
 
@@ -1431,7 +1366,7 @@
   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, methodOopDesc::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);
   set_method_data_pointer_offset(O0);
@@ -1460,7 +1395,7 @@
   // 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(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), O5);
+  ld_ptr(Lmethod, methodOopDesc::const_offset(), O5);
   add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), G3_scratch);
   add(G3_scratch, O5, G3_scratch);
   cmp(Lbcp, G3_scratch);
@@ -1471,7 +1406,7 @@
   // %%% should use call_VM_leaf here?
   //call_VM_leaf(noreg, ..., Lmethod, Lbcp, ImethodDataPtr);
   save_frame_and_mov(sizeof(jdouble) / wordSize, Lmethod, O0, Lbcp, O1);
-  Address d_save(FP, 0, -sizeof(jdouble) + STACK_BIAS);
+  Address d_save(FP, -sizeof(jdouble) + STACK_BIAS);
   stf(FloatRegisterImpl::D, Ftos_d, d_save);
   mov(temp_reg->after_save(), O2);
   save_thread(L7_thread_cache);
@@ -1503,14 +1438,14 @@
 #endif
 
   // Test to see if we should create a method data oop
-  Address profile_limit(Rtmp, (address)&InvocationCounter::InterpreterProfileLimit);
+  AddressLiteral profile_limit((address) &InvocationCounter::InterpreterProfileLimit);
 #ifdef _LP64
   delayed()->nop();
-  sethi(profile_limit);
+  sethi(profile_limit, Rtmp);
 #else
-  delayed()->sethi(profile_limit);
+  delayed()->sethi(profile_limit, Rtmp);
 #endif
-  ld(profile_limit, Rtmp);
+  ld(Rtmp, profile_limit.low10(), Rtmp);
   cmp(invocation_count, Rtmp);
   br(Assembler::lessUnsigned, false, Assembler::pn, profile_continue);
   delayed()->nop();
@@ -1568,7 +1503,7 @@
                                                       Register bumped_count,
                                                       bool decrement) {
   // Locate the counter at a fixed offset from the mdp:
-  Address counter(ImethodDataPtr, 0, constant);
+  Address counter(ImethodDataPtr, constant);
   increment_mdp_data_at(counter, bumped_count, decrement);
 }
 
@@ -1582,7 +1517,7 @@
                                                       bool decrement) {
   // Add the constant to reg to get the offset.
   add(ImethodDataPtr, reg, scratch2);
-  Address counter(scratch2, 0, constant);
+  Address counter(scratch2, constant);
   increment_mdp_data_at(counter, bumped_count, decrement);
 }
 
@@ -2248,7 +2183,7 @@
 
 
 Address InterpreterMacroAssembler::top_most_monitor() {
-  return Address(FP, 0, top_most_monitor_byte_offset());
+  return Address(FP, top_most_monitor_byte_offset());
 }
 
 
@@ -2261,15 +2196,15 @@
 void InterpreterMacroAssembler::increment_invocation_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address inv_counter(G5_method, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address be_counter(G5_method, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+                                 InvocationCounter::counter_offset());
+  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+                                 InvocationCounter::counter_offset());
 #else
-  Address inv_counter(Lmethod, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address be_counter(Lmethod, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+                               InvocationCounter::counter_offset());
+  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+                               InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
 
@@ -2297,15 +2232,15 @@
 void InterpreterMacroAssembler::increment_backedge_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address be_counter(G5_method, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address inv_counter(G5_method, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            +  InvocationCounter::counter_offset()));
+  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+                                 InvocationCounter::counter_offset());
+  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+                                 InvocationCounter::counter_offset());
 #else
-  Address be_counter(Lmethod, 0, in_bytes(methodOopDesc::backedge_counter_offset()
-                            + InvocationCounter::counter_offset()));
-  Address inv_counter(Lmethod, 0, in_bytes(methodOopDesc::invocation_counter_offset()
-                            + InvocationCounter::counter_offset()));
+  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+                               InvocationCounter::counter_offset());
+  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+                               InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
   // Load each counter in a register
@@ -2336,7 +2271,7 @@
   assert_different_registers(backedge_count, Rtmp, branch_bcp);
   assert(UseOnStackReplacement,"Must UseOnStackReplacement to test_backedge_count_for_osr");
 
-  Address limit(Rtmp, address(&InvocationCounter::InterpreterBackwardBranchLimit));
+  AddressLiteral limit(&InvocationCounter::InterpreterBackwardBranchLimit);
   load_contents(limit, Rtmp);
   cmp(backedge_count, Rtmp);
   br(Assembler::lessUnsigned, false, Assembler::pt, did_not_overflow);
@@ -2465,7 +2400,10 @@
 //   InterpreterRuntime::post_method_entry();
 // }
 // if (DTraceMethodProbes) {
-//   SharedRuntime::dtrace_method_entry(method, reciever);
+//   SharedRuntime::dtrace_method_entry(method, receiver);
+// }
+// if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+//   SharedRuntime::rc_trace_method_entry(method, receiver);
 // }
 
 void InterpreterMacroAssembler::notify_method_entry() {
@@ -2479,9 +2417,7 @@
   if (JvmtiExport::can_post_interpreter_events()) {
     Label L;
     Register temp_reg = O5;
-
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, temp_reg);
     tst(temp_reg);
     br(zero, false, pt, L);
@@ -2497,6 +2433,13 @@
       CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
       G2_thread, Lmethod);
   }
+
+  // RedefineClasses() tracing support for obsolete method entry
+  if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+    call_VM_leaf(noreg,
+      CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+      G2_thread, Lmethod);
+  }
 }
 
 
@@ -2526,9 +2469,7 @@
   if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) {
     Label L;
     Register temp_reg = O5;
-
-    const Address interp_only       (G2_thread, 0, in_bytes(JavaThread::interp_only_mode_offset()));
-
+    const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, temp_reg);
     tst(temp_reg);
     br(zero, false, pt, L);
--- a/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   address generate_normal_entry(bool synchronized);
   address generate_native_entry(bool synchronized);
   address generate_abstract_entry(void);
+  address generate_method_handle_entry(void);
   address generate_math_entry(AbstractInterpreter::MethodKind kind);
   address generate_empty_entry(void);
   address generate_accessor_entry(void);
--- a/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -105,7 +105,7 @@
   // the handle for a receiver will never be null
   bool do_NULL_check = offset() != 0 || is_static();
 
-  Address     h_arg = Address(Llocals, 0, Interpreter::local_offset_in_bytes(offset()));
+  Address     h_arg = Address(Llocals, Interpreter::local_offset_in_bytes(offset()));
   __ ld_ptr(h_arg, Rtmp1);
 #ifdef ASSERT
   if (TaggedStackInterpreter) {
@@ -120,14 +120,14 @@
   }
 #endif // ASSERT
   if (!do_NULL_check) {
-    __ add(h_arg, Rtmp2);
+    __ add(h_arg.base(), h_arg.disp(), Rtmp2);
   } else {
     if (Rtmp1 == Rtmp2)
           __ tst(Rtmp1);
     else  __ addcc(G0, Rtmp1, Rtmp2); // optimize mov/test pair
     Label L;
     __ brx(Assembler::notZero, true, Assembler::pt, L);
-    __ delayed()->add(h_arg, Rtmp2);
+    __ delayed()->add(h_arg.base(), h_arg.disp(), Rtmp2);
     __ bind(L);
   }
   __ store_ptr_argument(Rtmp2, jni_arg);    // this is often a no-op
@@ -140,10 +140,10 @@
   iterate(fingerprint);
 
   // return result handler
-  Address result_handler(Lscratch, Interpreter::result_handler(method()->result_type()));
-  __ sethi(result_handler);
+  AddressLiteral result_handler(Interpreter::result_handler(method()->result_type()));
+  __ sethi(result_handler, Lscratch);
   __ retl();
-  __ delayed()->add(result_handler, result_handler.base());
+  __ delayed()->add(Lscratch, result_handler.low10(), Lscratch);
 
   __ flush();
 }
--- a/src/cpu/sparc/vm/interpreter_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/interpreter_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,19 @@
 }
 
 
+
+// Method handle invoker
+// Dispatch a method of the form java.dyn.MethodHandles::invoke(...)
+address InterpreterGenerator::generate_method_handle_entry(void) {
+  if (!EnableMethodHandles) {
+    return generate_abstract_entry();
+  }
+  return generate_abstract_entry(); //6815692//
+}
+
+
+
+
 //----------------------------------------------------------------------------------------------------
 // Entry points & stack frame layout
 //
@@ -364,6 +377,7 @@
     case Interpreter::empty                  : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry();        break;
     case Interpreter::accessor               : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry();     break;
     case Interpreter::abstract               : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry();     break;
+    case Interpreter::method_handle          : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break;
     case Interpreter::java_lang_math_sin     :                                                                             break;
     case Interpreter::java_lang_math_cos     :                                                                             break;
     case Interpreter::java_lang_math_tan     :                                                                             break;
--- a/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,10 +57,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(O3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, O3);
+  Address cnt_addr(O3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -77,7 +77,7 @@
     default:        ShouldNotReachHere();
   }
 
-  __ ld (ca, O5);
+  __ ld (cnt_addr, O5);
   __ cmp (O5, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
@@ -136,10 +136,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(G3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, G3);
+  Address cnt_addr(G3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -159,7 +159,7 @@
   __ ldx (O5, 0, O3);
 #endif
 
-  __ ld (ca, G1);
+  __ ld (cnt_addr, G1);
   __ cmp (G1, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
@@ -208,10 +208,10 @@
 
   Label label1, label2;
 
-  address cnt_addr = SafepointSynchronize::safepoint_counter_addr();
-  Address ca(O3, cnt_addr);
-  __ sethi (ca);
-  __ ld (ca, G4);
+  AddressLiteral cnt_addrlit(SafepointSynchronize::safepoint_counter_addr());
+  __ sethi (cnt_addrlit, O3);
+  Address cnt_addr(O3, cnt_addrlit.low10());
+  __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
   __ delayed()->srl (O2, 2, O4);
@@ -225,7 +225,7 @@
     default:       ShouldNotReachHere();
   }
 
-  __ ld (ca, O5);
+  __ ld (cnt_addr, O5);
   __ cmp (O5, G4);
   __ br (Assembler::notEqual, false, Assembler::pn, label2);
   __ delayed()->mov (O7, G1);
--- a/src/cpu/sparc/vm/jni_sparc.h	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/jni_sparc.h	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,5 +28,11 @@
 #define JNICALL
 
 typedef int jint;
-typedef long long jlong;
+
+#ifdef _LP64
+  typedef long jlong;
+#else
+  typedef long long jlong;
+#endif
+
 typedef signed char jbyte;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,70 @@
+/*
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+#include "incls/_precompiled.incl"
+#include "incls/_methodHandles_sparc.cpp.incl"
+
+#define __ _masm->
+
+address MethodHandleEntry::start_compiled_entry(MacroAssembler* _masm,
+                                                address interpreted_entry) {
+  __ align(wordSize);
+  address target = __ pc() + sizeof(Data);
+  while (__ pc() < target) {
+    __ nop();
+    __ align(wordSize);
+  }
+
+  MethodHandleEntry* me = (MethodHandleEntry*) __ pc();
+  me->set_end_address(__ pc());         // set a temporary end_address
+  me->set_from_interpreted_entry(interpreted_entry);
+  me->set_type_checking_entry(NULL);
+
+  return (address) me;
+}
+
+MethodHandleEntry* MethodHandleEntry::finish_compiled_entry(MacroAssembler* _masm,
+                                                address start_addr) {
+  MethodHandleEntry* me = (MethodHandleEntry*) start_addr;
+  assert(me->end_address() == start_addr, "valid ME");
+
+  // Fill in the real end_address:
+  __ align(wordSize);
+  me->set_end_address(__ pc());
+
+  return me;
+}
+
+
+// Code generation
+address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm) {
+  ShouldNotReachHere(); //NYI, 6815692
+  return NULL;
+}
+
+// Generate an "entry" field for a method handle.
+// This determines how the method handle will respond to calls.
+void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHandles::EntryKind ek) {
+  ShouldNotReachHere(); //NYI, 6815692
+}
--- a/src/cpu/sparc/vm/nativeInst_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/nativeInst_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +38,7 @@
 
   destreg = inv_rd(*(unsigned int *)instaddr);
   // Generate a the new sequence
-  Address dest( destreg, (address)x );
-  _masm->sethi( dest, true );
+  _masm->patchable_sethi(x, destreg);
   ICache::invalidate_range(instaddr, 7 * BytesPerInstWord);
 }
 
@@ -227,8 +226,8 @@
   CodeBuffer buf(addr_at(0), instruction_size + 1);
   MacroAssembler* _masm = new MacroAssembler(&buf);
   // Generate the new sequence
-  Address(O7, dest);
-  _masm->jumpl_to(dest, O7);
+  AddressLiteral(dest);
+  _masm->jumpl_to(dest, O7, O7);
   ICache::invalidate_range(addr_at(0), instruction_size );
 #endif
 }
@@ -361,10 +360,12 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none);
-  a->add(I3, low10(0xaaaabbbb), I3);
-  a->sethi(0xccccdddd, O2, true, RelocationHolder::none);
-  a->add(O2, low10(0xccccdddd), O2);
+  AddressLiteral al1(0xaaaabbbb, relocInfo::external_word_type);
+  a->sethi(al1, I3);
+  a->add(I3, al1.low10(), I3);
+  AddressLiteral al2(0xccccdddd, relocInfo::external_word_type);
+  a->sethi(al2, O2);
+  a->add(O2, al2.low10(), O2);
 
   nm = nativeMovConstReg_at( cb.code_begin() );
   nm->print();
@@ -468,12 +469,14 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none);
+  AddressLiteral al1(0xaaaabbbb, relocInfo::external_word_type);
+  a->sethi(al1, I3);
   a->nop();
-  a->add(I3, low10(0xaaaabbbb), I3);
-  a->sethi(0xccccdddd, O2, true, RelocationHolder::none);
+  a->add(I3, al1.low10(), I3);
+  AddressLiteral al2(0xccccdddd, relocInfo::external_word_type);
+  a->sethi(al2, O2);
   a->nop();
-  a->add(O2, low10(0xccccdddd), O2);
+  a->add(O2, al2.low10(), O2);
 
   nm = nativeMovConstRegPatching_at( cb.code_begin() );
   nm->print();
@@ -562,51 +565,53 @@
 
   VM_Version::allow_all();
 
-  a->ldsw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  AddressLiteral al1(0xffffffff, relocInfo::external_word_type);
+  AddressLiteral al2(0xaaaabbbb, relocInfo::external_word_type);
+  a->ldsw( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsw( G5, I3, G4 ); idx++;
-  a->ldsb( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsb( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsb( G5, I3, G4 ); idx++;
-  a->ldsh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsh( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldsh( G5, I3, G4 ); idx++;
-  a->lduw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduw( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->lduw( G5, I3, G4 ); idx++;
-  a->ldub( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldub( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldub( G5, I3, G4 ); idx++;
-  a->lduh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduh( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->lduh( G5, I3, G4 ); idx++;
-  a->ldx( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldx( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldx( G5, I3, G4 ); idx++;
-  a->ldd( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldd( G5, al1.low10(), G4 ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldd( G5, I3, G4 ); idx++;
   a->ldf( FloatRegisterImpl::D, O2, -1, F14 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->ldf( FloatRegisterImpl::S, O0, I3, F15 ); idx++;
 
-  a->stw( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stw( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stw( G5, G4, I3 ); idx++;
-  a->stb( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stb( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stb( G5, G4, I3 ); idx++;
-  a->sth( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sth( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->sth( G5, G4, I3 ); idx++;
-  a->stx( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stx( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stx( G5, G4, I3 ); idx++;
-  a->std( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->std( G5, G4, al1.low10() ); idx++;
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->std( G5, G4, I3 ); idx++;
   a->stf( FloatRegisterImpl::S, F18, O2, -1 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al2, I3); a->add(I3, al2.low10(), I3);
   a->stf( FloatRegisterImpl::S, F15, O0, I3 ); idx++;
 
   nm = nativeMovRegMem_at( cb.code_begin() );
@@ -705,51 +710,52 @@
 
   VM_Version::allow_all();
 
-  a->ldsw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  AddressLiteral al(0xffffffff, relocInfo::external_word_type);
+  a->ldsw( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsw( G5, I3, G4 ); idx++;
-  a->ldsb( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsb( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsb( G5, I3, G4 ); idx++;
-  a->ldsh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldsh( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldsh( G5, I3, G4 ); idx++;
-  a->lduw( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduw( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->lduw( G5, I3, G4 ); idx++;
-  a->ldub( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->ldub( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->ldub( G5, I3, G4 ); idx++;
-  a->lduh( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->lduh( G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->lduh( G5, I3, G4 ); idx++;
-  a->ldx( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldx( G5, I3, G4 ); idx++;
-  a->ldd( G5, low10(0xffffffff), G4 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldd( G5, I3, G4 ); idx++;
-  a->ldf( FloatRegisterImpl::D, O2, -1, F14 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
-  a->ldf( FloatRegisterImpl::S, O0, I3, F15 ); idx++;
+  a->ldx(  G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldx(  G5, I3, G4 ); idx++;
+  a->ldd(  G5, al.low10(), G4); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldd(  G5, I3, G4 ); idx++;
+  a->ldf(  FloatRegisterImpl::D, O2, -1, F14 ); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
+  a->ldf(  FloatRegisterImpl::S, O0, I3, F15 ); idx++;
 
-  a->stw( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stw( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stw( G5, G4, I3 ); idx++;
-  a->stb( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stb( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stb( G5, G4, I3 ); idx++;
-  a->sth( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sth( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->sth( G5, G4, I3 ); idx++;
-  a->stx( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->stx( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stx( G5, G4, I3 ); idx++;
-  a->std( G5, G4, low10(0xffffffff) ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->std( G5, G4, al.low10()); idx++;
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->std( G5, G4, I3 ); idx++;
   a->stf( FloatRegisterImpl::S, F18, O2, -1 ); idx++;
-  a->sethi(0xaaaabbbb, I3, true, RelocationHolder::none); a->nop(); a->add(I3, low10(0xaaaabbbb), I3);
+  a->sethi(al, I3); a->nop(); a->add(I3, al.low10(), I3);
   a->stf( FloatRegisterImpl::S, F15, O0, I3 ); idx++;
 
   nm = nativeMovRegMemPatching_at( cb.code_begin() );
@@ -833,11 +839,12 @@
 
   VM_Version::allow_all();
 
-  a->sethi(0x7fffbbbb, I3, true, RelocationHolder::none);
-  a->jmpl(I3, low10(0x7fffbbbb), G0, RelocationHolder::none);
+  AddressLiteral al(0x7fffbbbb, relocInfo::external_word_type);
+  a->sethi(al, I3);
+  a->jmpl(I3, al.low10(), G0, RelocationHolder::none);
   a->delayed()->nop();
-  a->sethi(0x7fffbbbb, I3, true, RelocationHolder::none);
-  a->jmpl(I3, low10(0x7fffbbbb), L3, RelocationHolder::none);
+  a->sethi(al, I3);
+  a->jmpl(I3, al.low10(), L3, RelocationHolder::none);
   a->delayed()->nop();
 
   nj = nativeJump_at( cb.code_begin() );
--- a/src/cpu/sparc/vm/nativeInst_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/nativeInst_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -243,7 +243,7 @@
 
   // Regenerate the instruction sequence that performs the 64 bit
   // sethi.  This only does the sethi.  The disp field (bottom 10 bits)
-  // must be handled seperately.
+  // must be handled separately.
   static void set_data64_sethi(address instaddr, intptr_t x);
 
   // combine the fields of a sethi/simm13 pair (simm13 = or, add, jmpl, ld/st)
--- a/src/cpu/sparc/vm/register_definitions_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/register_definitions_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -142,6 +142,8 @@
 REGISTER_DEFINITION(Register, G3_scratch);
 REGISTER_DEFINITION(Register, G4_scratch);
 REGISTER_DEFINITION(Register, Gtemp);
+REGISTER_DEFINITION(Register, G5_method_type);
+REGISTER_DEFINITION(Register, G3_method_handle);
 REGISTER_DEFINITION(Register, Lentry_args);
 
 #ifdef CC_INTERP
--- a/src/cpu/sparc/vm/relocInfo_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/relocInfo_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 +99,6 @@
       break;
     }
     ip->set_data64_sethi( ip->addr_at(0), (intptr_t)x );
-#ifdef COMPILER2
-    // [RGV] Someone must have missed putting in a reloc entry for the
-    // add in compiler2.
-    inst2 = ip->long_at( NativeMovConstReg::add_offset );
-    guarantee(Assembler::inv_op(inst2)==Assembler::arith_op, "arith op");
-    ip->set_long_at(NativeMovConstReg::add_offset,ip->set_data32_simm13( inst2, (intptr_t)x+o));
-#endif
 #else
     guarantee(Assembler::inv_op2(inst)==Assembler::sethi_op2, "must be sethi");
     inst &= ~Assembler::hi22(     -1);
--- a/src/cpu/sparc/vm/runtime_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/runtime_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +74,8 @@
   int start = __ offset();
 
   __ verify_thread();
-  __ st_ptr(Oexception,  Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())));
-  __ st_ptr(Oissuing_pc, Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())));
+  __ st_ptr(Oexception,  G2_thread, JavaThread::exception_oop_offset());
+  __ st_ptr(Oissuing_pc, G2_thread, JavaThread::exception_pc_offset());
 
   // This call does all the hard work. It checks if an exception catch
   // exists in the method.
@@ -120,19 +120,19 @@
   // Since this may be the deopt blob we must set O7 to look like we returned
   // from the original pc that threw the exception
 
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())), O7);
+  __ ld_ptr(G2_thread, JavaThread::exception_pc_offset(), O7);
   __ sub(O7, frame::pc_return_offset, O7);
 
 
   assert(Assembler::is_simm13(in_bytes(JavaThread::exception_oop_offset())), "exception offset overflows simm13, following ld instruction cannot be in delay slot");
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())), Oexception); // O0
+  __ ld_ptr(G2_thread, JavaThread::exception_oop_offset(), Oexception); // O0
 #ifdef ASSERT
-  __ st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_handler_pc_offset())));
-  __ st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_pc_offset())));
+  __ st_ptr(G0, G2_thread, JavaThread::exception_handler_pc_offset());
+  __ st_ptr(G0, G2_thread, JavaThread::exception_pc_offset());
 #endif
   __ JMP(G3_scratch, 0);
   // Clear the exception oop so GC no longer processes it as a root.
-  __ delayed()->st_ptr(G0, Address(G2_thread, 0, in_bytes(JavaThread::exception_oop_offset())));
+  __ delayed()->st_ptr(G0, G2_thread, JavaThread::exception_oop_offset());
 
   // -------------
   // make sure all code is generated
--- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -625,9 +625,9 @@
   __ mov(I7, O1);                // VM needs caller's callsite
   // Must be a leaf call...
   // can be very far once the blob has been relocated
-  Address dest(O7, CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
+  AddressLiteral dest(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
   __ relocate(relocInfo::runtime_call_type);
-  __ jumpl_to(dest, O7);
+  __ jumpl_to(dest, O7, O7);
   __ delayed()->mov(G2_thread, L7_thread_cache);
   __ mov(L7_thread_cache, G2_thread);
   __ mov(L1, G1);
@@ -937,12 +937,12 @@
   // Inputs:
   // G2_thread      - TLS
   // G5_method      - Method oop
-  // O0             - Flag telling us to restore SP from O5
-  // O4_args        - Pointer to interpreter's args
-  // O5             - Caller's saved SP, to be restored if needed
+  // G4 (Gargs)     - Pointer to interpreter's args
+  // O0..O4         - free for scratch
+  // O5_savedSP     - Caller's saved SP, to be restored if needed
   // O6             - Current SP!
   // O7             - Valid return address
-  // L0-L7, I0-I7    - Caller's temps (no frame pushed yet)
+  // L0-L7, I0-I7   - Caller's temps (no frame pushed yet)
 
   // Outputs:
   // G2_thread      - TLS
@@ -954,7 +954,7 @@
   // F0-F7          - more outgoing args
 
 
-  // O4 is about to get loaded up with compiled callee's args
+  // Gargs is the incoming argument base, and also an outgoing argument.
   __ sub(Gargs, BytesPerWord, Gargs);
 
 #ifdef ASSERT
@@ -1152,7 +1152,7 @@
 #ifndef _LP64
     if (g3_crushed) {
       // Rats load was wasted, at least it is in cache...
-      __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3);
+      __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3);
     }
 #endif /* _LP64 */
 
@@ -1165,7 +1165,7 @@
     // we try and find the callee by normal means a safepoint
     // is possible. So we stash the desired callee in the thread
     // and the vm will find there should this case occur.
-    Address callee_target_addr(G2_thread, 0, in_bytes(JavaThread::callee_target_offset()));
+    Address callee_target_addr(G2_thread, JavaThread::callee_target_offset());
     __ st_ptr(G5_method, callee_target_addr);
 
     if (StressNonEntrant) {
@@ -1218,7 +1218,7 @@
     Register R_temp   = G1;   // another scratch register
 #endif
 
-    Address ic_miss(G3_scratch, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
 
     __ verify_oop(O0);
     __ verify_oop(G5_method);
@@ -1240,7 +1240,7 @@
     Label ok, ok2;
     __ brx(Assembler::equal, false, Assembler::pt, ok);
     __ delayed()->ld_ptr(G5_method, compiledICHolderOopDesc::holder_method_offset(), G5_method);
-    __ jump_to(ic_miss);
+    __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
     __ bind(ok);
@@ -1251,7 +1251,7 @@
     __ bind(ok2);
     __ br_null(G3_scratch, false, __ pt, skip_fixup);
     __ delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
-    __ jump_to(ic_miss);
+    __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
   }
@@ -1444,8 +1444,8 @@
   // without calling into the VM: it's the empty function.  Just pop this
   // frame and then jump to forward_exception_entry; O7 will contain the
   // native caller's return PC.
-  Address exception_entry(G3_scratch, StubRoutines::forward_exception_entry());
-  __ jump_to(exception_entry);
+ AddressLiteral exception_entry(StubRoutines::forward_exception_entry());
+  __ jump_to(exception_entry, G3_scratch);
   __ delayed()->restore();      // Pop this frame off.
   __ bind(L);
 }
@@ -1822,14 +1822,14 @@
   {
     Label L;
     const Register temp_reg = G3_scratch;
-    Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
     __ verify_oop(O0);
     __ load_klass(O0, temp_reg);
     __ cmp(temp_reg, G5_inline_cache_reg);
     __ brx(Assembler::equal, true, Assembler::pt, L);
     __ delayed()->nop();
 
-    __ jump_to(ic_miss, 0);
+    __ jump_to(ic_miss, temp_reg);
     __ delayed()->nop();
     __ align(CodeEntryAlignment);
     __ bind(L);
@@ -2161,6 +2161,18 @@
     __ restore();
   }
 
+  // RedefineClasses() tracing support for obsolete method entry
+  if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+    // create inner frame
+    __ save_frame(0);
+    __ mov(G2_thread, L7_thread_cache);
+    __ set_oop_constant(JNIHandles::make_local(method()), O1);
+    __ call_VM_leaf(L7_thread_cache,
+         CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+         G2_thread, O1);
+    __ restore();
+  }
+
   // We are in the jni frame unless saved_frame is true in which case
   // we are in one frame deeper (the "inner" frame). If we are in the
   // "inner" frames the args are in the Iregs and if the jni frame then
@@ -2249,21 +2261,19 @@
 
   // Transition from _thread_in_Java to _thread_in_native.
   __ set(_thread_in_native, G3_scratch);
-  __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+  __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
 
   // We flushed the windows ages ago now mark them as flushed
 
   // mark windows as flushed
   __ set(JavaFrameAnchor::flushed, G3_scratch);
 
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
 
 #ifdef _LP64
-  Address dest(O7, method->native_function());
+  AddressLiteral dest(method->native_function());
   __ relocate(relocInfo::runtime_call_type);
-  __ jumpl_to(dest, O7);
+  __ jumpl_to(dest, O7, O7);
 #else
   __ call(method->native_function(), relocInfo::runtime_call_type);
 #endif
@@ -2304,7 +2314,7 @@
   // Block, if necessary, before resuming in _thread_in_Java state.
   // In order for GC to work, don't clear the last_Java_sp until after blocking.
   { Label no_block;
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
 
     // Switch thread to "native transition" state before reading the synchronization state.
     // This additional state is necessary because reading and testing the synchronization
@@ -2314,7 +2324,7 @@
     //     Thread A is resumed to finish this native method, but doesn't block here since it
     //     didn't see any synchronization is progress, and escapes.
     __ set(_thread_in_native_trans, G3_scratch);
-    __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+    __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
     if(os::is_MP()) {
       if (UseMembar) {
         // Force this write out before the read below
@@ -2331,10 +2341,9 @@
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
 
     Label L;
-    Address suspend_state(G2_thread, 0, in_bytes(JavaThread::suspend_flags_offset()));
+    Address suspend_state(G2_thread, JavaThread::suspend_flags_offset());
     __ br(Assembler::notEqual, false, Assembler::pn, L);
-    __ delayed()->
-      ld(suspend_state, G3_scratch);
+    __ delayed()->ld(suspend_state, G3_scratch);
     __ cmp(G3_scratch, 0);
     __ br(Assembler::equal, false, Assembler::pt, no_block);
     __ delayed()->nop();
@@ -2360,11 +2369,11 @@
 
 
   __ set(_thread_in_Java, G3_scratch);
-  __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+  __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
 
 
   Label no_reguard;
-  __ ld(G2_thread, in_bytes(JavaThread::stack_guard_state_offset()), G3_scratch);
+  __ ld(G2_thread, JavaThread::stack_guard_state_offset(), G3_scratch);
   __ cmp(G3_scratch, JavaThread::stack_guard_yellow_disabled);
   __ br(Assembler::notEqual, false, Assembler::pt, no_reguard);
   __ delayed()->nop();
@@ -2672,14 +2681,14 @@
   {
     Label L;
     const Register temp_reg = G3_scratch;
-    Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+    AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
     __ verify_oop(O0);
     __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), temp_reg);
     __ cmp(temp_reg, G5_inline_cache_reg);
     __ brx(Assembler::equal, true, Assembler::pt, L);
     __ delayed()->nop();
 
-    __ jump_to(ic_miss, 0);
+    __ jump_to(ic_miss, temp_reg);
     __ delayed()->nop();
     __ align(CodeEntryAlignment);
     __ bind(L);
@@ -3143,15 +3152,13 @@
   // Do this after the caller's return address is on top of stack
   if (UseStackBanging) {
     // Get total frame size for interpreted frames
-    __ ld(Address(O2UnrollBlock, 0,
-         Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes()), O4);
+    __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes(), O4);
     __ bang_stack_size(O4, O3, G3_scratch);
   }
 
-  __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes()), O4array_size);
-  __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()), G3pcs);
-
-  __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes()), O3array);
+  __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes(), O4array_size);
+  __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes(), G3pcs);
+  __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes(), O3array);
 
   // Adjust old interpreter frame to make space for new frame's extra java locals
   //
@@ -3164,7 +3171,7 @@
   // for each frame we create and keep up the illusion every where.
   //
 
-  __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes()), O7);
+  __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes(), O7);
   __ mov(SP, O5_savedSP);       // remember initial sender's original sp before adjustment
   __ sub(SP, O7, SP);
 
@@ -3213,9 +3220,9 @@
   Register        I5exception_tmp    = I5;
   Register        G4exception_tmp    = G4_scratch;
   int             frame_size_words;
-  Address         saved_Freturn0_addr(FP, 0, -sizeof(double) + STACK_BIAS);
+  Address         saved_Freturn0_addr(FP, -sizeof(double) + STACK_BIAS);
 #if !defined(_LP64) && defined(COMPILER2)
-  Address         saved_Greturn1_addr(FP, 0, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
+  Address         saved_Greturn1_addr(FP, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
 #endif
   Label           cont;
 
@@ -3277,7 +3284,7 @@
   // save exception oop in JavaThread and fall through into the
   // exception_in_tls case since they are handled in same way except
   // for where the pending exception is kept.
-  __ st_ptr(Oexception, G2_thread, in_bytes(JavaThread::exception_oop_offset()));
+  __ st_ptr(Oexception, G2_thread, JavaThread::exception_oop_offset());
 
   //
   // Vanilla deoptimization with an exception pending in exception_oop
@@ -3294,7 +3301,7 @@
   {
     // verify that there is really an exception oop in exception_oop
     Label has_exception;
-    __ ld_ptr(G2_thread, in_bytes(JavaThread::exception_oop_offset()), Oexception);
+    __ ld_ptr(G2_thread, JavaThread::exception_oop_offset(), Oexception);
     __ br_notnull(Oexception, false, Assembler::pt, has_exception);
     __ delayed()-> nop();
     __ stop("no exception in thread");
@@ -3302,7 +3309,7 @@
 
     // verify that there is no pending exception
     Label no_pending_exception;
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     __ ld_ptr(exception_addr, Oexception);
     __ br_null(Oexception, false, Assembler::pt, no_pending_exception);
     __ delayed()->nop();
--- a/src/cpu/sparc/vm/sparc.ad	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/sparc.ad	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -189,7 +189,7 @@
 // double fp register numbers.  FloatRegisterImpl in register_sparc.hpp
 // wants 0-63, so we have to convert every time we want to use fp regs
 // with the macroassembler, using reg_to_DoubleFloatRegister_object().
-// 255 is a flag meaning 'dont go here'.
+// 255 is a flag meaning "don't go here".
 // I believe we can't handle callee-save doubles D32 and up until
 // the place in the sparc stack crawler that asserts on the 255 is
 // fixed up.
@@ -462,7 +462,7 @@
 
 // Macros to extract hi & lo halves from a long pair.
 // G0 is not part of any long pair, so assert on that.
-// Prevents accidently using G1 instead of G0.
+// Prevents accidentally using G1 instead of G0.
 #define LONG_HI_REG(x) (x)
 #define LONG_LO_REG(x) (x)
 
@@ -547,7 +547,11 @@
     int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes();
     int klass_load_size;
     if (UseCompressedOops) {
-      klass_load_size = 3*BytesPerInstWord; // see MacroAssembler::load_klass()
+      assert(Universe::heap() != NULL, "java heap should be initialized");
+      if (Universe::narrow_oop_base() == NULL)
+        klass_load_size = 2*BytesPerInstWord; // see MacroAssembler::load_klass()
+      else
+        klass_load_size = 3*BytesPerInstWord;
     } else {
       klass_load_size = 1*BytesPerInstWord;
     }
@@ -762,7 +766,7 @@
     case Assembler::stdf_op3: st_op = Op_StoreD; break;
 
     case Assembler::ldsb_op3: ld_op = Op_LoadB; break;
-    case Assembler::lduh_op3: ld_op = Op_LoadC; break;
+    case Assembler::lduh_op3: ld_op = Op_LoadUS; break;
     case Assembler::ldsh_op3: ld_op = Op_LoadS; break;
     case Assembler::ldx_op3:  // may become LoadP or stay LoadI
     case Assembler::ldsw_op3: // may become LoadP or stay LoadI
@@ -976,8 +980,8 @@
   // This code sequence is relocatable to any address, even on LP64.
   if ( force_far_call ) {
     __ relocate(rtype);
-    Address dest(O7, (address)entry_point);
-    __ jumpl_to(dest, O7);
+    AddressLiteral dest(entry_point);
+    __ jumpl_to(dest, O7, O7);
   }
   else
 #endif
@@ -1027,17 +1031,6 @@
 void emit_lo(CodeBuffer &cbuf, int val) {  }
 void emit_hi(CodeBuffer &cbuf, int val) {  }
 
-void emit_ptr(CodeBuffer &cbuf, intptr_t val, Register reg, bool ForceRelocatable) {
-  MacroAssembler _masm(&cbuf);
-  if (ForceRelocatable) {
-    Address addr(reg, (address)val);
-    __ sethi(addr, ForceRelocatable);
-    __ add(addr, reg);
-  } else {
-    __ set(val, reg);
-  }
-}
-
 
 //=============================================================================
 
@@ -1145,8 +1138,8 @@
 
   // If this does safepoint polling, then do it here
   if( do_polling() && ra_->C->is_method_compilation() ) {
-    Address polling_page(L0, (address)os::get_polling_page());
-    __ sethi(polling_page, false);
+    AddressLiteral polling_page(os::get_polling_page());
+    __ sethi(polling_page, L0);
     __ relocate(relocInfo::poll_return_type);
     __ ld_ptr( L0, 0, G0 );
   }
@@ -1431,7 +1424,7 @@
 
 #ifndef _LP64
   // In the LP64 build, all registers can be moved as aligned/adjacent
-  // pairs, so there's never any need to move the high bits seperately.
+  // pairs, so there's never any need to move the high bits separately.
   // The 32-bit builds have to deal with the 32-bit ABI which can force
   // all sorts of silly alignment problems.
 
@@ -1572,8 +1565,8 @@
   __ set_oop(NULL, reg_to_register_object(Matcher::inline_cache_reg_encode()));
 
   __ set_inst_mark();
-  Address a(G3, (address)-1);
-  __ JUMP(a, 0);
+  AddressLiteral addrlit(-1);
+  __ JUMP(addrlit, G3, 0);
 
   __ delayed()->nop();
 
@@ -1601,9 +1594,11 @@
   st->print_cr("\nUEP:");
 #ifdef    _LP64
   if (UseCompressedOops) {
+    assert(Universe::heap() != NULL, "java heap should be initialized");
     st->print_cr("\tLDUW   [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check - compressed klass");
     st->print_cr("\tSLL    R_G5,3,R_G5");
-    st->print_cr("\tADD    R_G5,R_G6_heap_base,R_G5");
+    if (Universe::narrow_oop_base() != NULL)
+      st->print_cr("\tADD    R_G5,R_G6_heap_base,R_G5");
   } else {
     st->print_cr("\tLDX    [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check");
   }
@@ -1624,7 +1619,7 @@
   Register temp_reg   = G3;
   assert( G5_ic_reg != temp_reg, "conflicting registers" );
 
-  // Load klass from reciever
+  // Load klass from receiver
   __ load_klass(O0, temp_reg);
   // Compare against expected klass
   __ cmp(temp_reg, G5_ic_reg);
@@ -1656,7 +1651,7 @@
 // Emit exception handler code.
 int emit_exception_handler(CodeBuffer& cbuf) {
   Register temp_reg = G3;
-  Address exception_blob(temp_reg, OptoRuntime::exception_blob()->instructions_begin());
+  AddressLiteral exception_blob(OptoRuntime::exception_blob()->instructions_begin());
   MacroAssembler _masm(&cbuf);
 
   address base =
@@ -1665,7 +1660,7 @@
 
   int offset = __ offset();
 
-  __ JUMP(exception_blob, 0); // sethi;jmp
+  __ JUMP(exception_blob, temp_reg, 0); // sethi;jmp
   __ delayed()->nop();
 
   assert(__ offset() - offset <= (int) size_exception_handler(), "overflow");
@@ -1679,7 +1674,7 @@
   // Can't use any of the current frame's registers as we may have deopted
   // at a poll and everything (including G3) can be live.
   Register temp_reg = L0;
-  Address deopt_blob(temp_reg, SharedRuntime::deopt_blob()->unpack());
+  AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
   MacroAssembler _masm(&cbuf);
 
   address base =
@@ -1688,7 +1683,7 @@
 
   int offset = __ offset();
   __ save_frame(0);
-  __ JUMP(deopt_blob, 0); // sethi;jmp
+  __ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp
   __ delayed()->restore();
 
   assert(__ offset() - offset <= (int) size_deopt_handler(), "overflow");
@@ -1717,6 +1712,23 @@
   return as_DoubleFloatRegister(register_encoding);
 }
 
+const bool Matcher::match_rule_supported(int opcode) {
+  if (!has_match_rule(opcode))
+    return false;
+
+  switch (opcode) {
+  case Op_CountLeadingZerosI:
+  case Op_CountLeadingZerosL:
+  case Op_CountTrailingZerosI:
+  case Op_CountTrailingZerosL:
+    if (!UsePopCountInstruction)
+      return false;
+    break;
+  }
+
+  return true;  // Per default match rules are supported.
+}
+
 int Matcher::regnum_to_fpu_offset(int regnum) {
   return regnum - 32; // The FP registers are in the second chunk
 }
@@ -1879,15 +1891,17 @@
 // The intptr_t operand types, defined by textual substitution.
 // (Cf. opto/type.hpp.  This lets us avoid many, many other ifdefs.)
 #ifdef _LP64
-#define immX    immL
-#define immX13  immL13
-#define iRegX   iRegL
-#define g1RegX  g1RegL
+#define immX      immL
+#define immX13    immL13
+#define immX13m7  immL13m7
+#define iRegX     iRegL
+#define g1RegX    g1RegL
 #else
-#define immX    immI
-#define immX13  immI13
-#define iRegX   iRegI
-#define g1RegX  g1RegI
+#define immX      immI
+#define immX13    immI13
+#define immX13m7  immI13m7
+#define iRegX     iRegI
+#define g1RegX    g1RegI
 #endif
 
 //----------ENCODING BLOCK-----------------------------------------------------
@@ -2255,9 +2269,8 @@
     address table_base = __ address_table_constant(_index2label);
     RelocationHolder rspec = internal_word_Relocation::spec(table_base);
 
-    // Load table address
-    Address the_pc(table_reg, table_base, rspec);
-    __ load_address(the_pc);
+    // Move table address into a register.
+    __ set(table_base, table_reg, rspec);
 
     // Jump to base address + switch value
     __ ld_ptr(table_reg, switch_reg, table_reg);
@@ -2396,13 +2409,13 @@
   // The 64 bit pointer is stored in the generated code stream
   enc_class SetPtr( immP src, iRegP rd ) %{
     Register dest = reg_to_register_object($rd$$reg);
+    MacroAssembler _masm(&cbuf);
     // [RGV] This next line should be generated from ADLC
     if ( _opnds[1]->constant_is_oop() ) {
       intptr_t val = $src$$constant;
-      MacroAssembler _masm(&cbuf);
       __ set_oop_constant((jobject)val, dest);
     } else {          // non-oop pointers, e.g. card mark base, heap top
-      emit_ptr(cbuf, $src$$constant, dest, /*ForceRelocatable=*/ false);
+      __ set($src$$constant, dest);
     }
   %}
 
@@ -2502,7 +2515,11 @@
       __ load_klass(O0, G3_scratch);
       int klass_load_size;
       if (UseCompressedOops) {
-        klass_load_size = 3*BytesPerInstWord;
+        assert(Universe::heap() != NULL, "java heap should be initialized");
+        if (Universe::narrow_oop_base() == NULL)
+          klass_load_size = 2*BytesPerInstWord;
+        else
+          klass_load_size = 3*BytesPerInstWord;
       } else {
         klass_load_size = 1*BytesPerInstWord;
       }
@@ -2779,46 +2796,6 @@
     __ set64( $src$$constant, dest, temp );
   %}
 
-  enc_class LdImmF(immF src, regF dst, o7RegP tmp) %{    // Load Immediate
-    address float_address = MacroAssembler(&cbuf).float_constant($src$$constant);
-    RelocationHolder rspec = internal_word_Relocation::spec(float_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)float_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::ldf_op3, $tmp$$reg, 0 );
-#else  // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) float_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::ldf_op3, tmp_reg, (intptr_t) float_address );
-#endif // _LP64
-  %}
-
-  enc_class LdImmD(immD src, regD dst, o7RegP tmp) %{    // Load Immediate
-    address double_address = MacroAssembler(&cbuf).double_constant($src$$constant);
-    RelocationHolder rspec = internal_word_Relocation::spec(double_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)double_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, $tmp$$reg, 0 );
-#else // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) double_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, tmp_reg, (intptr_t) double_address );
-#endif // _LP64
-  %}
-
   enc_class LdReplImmI(immI src, regD dst, o7RegP tmp, int count, int width) %{
     // Load a constant replicated "count" times with width "width"
     int bit_width = $width$$constant * 8;
@@ -2830,28 +2807,15 @@
         val |= elt_val;
     }
     jdouble dval = *(jdouble*)&val; // coerce to double type
-    address double_address = MacroAssembler(&cbuf).double_constant(dval);
+    MacroAssembler _masm(&cbuf);
+    address double_address = __ double_constant(dval);
     RelocationHolder rspec = internal_word_Relocation::spec(double_address);
-#ifdef _LP64
-    Register   tmp_reg = reg_to_register_object($tmp$$reg);
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit_ptr(cbuf, (intptr_t)double_address, tmp_reg, /*ForceRelocatable=*/ true);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, $tmp$$reg, 0 );
-#else // _LP64
-    uint *code;
-    int tmp_reg = $tmp$$reg;
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit2_22( cbuf, Assembler::branch_op, tmp_reg, Assembler::sethi_op2, (intptr_t) double_address );
-
-    cbuf.relocate(cbuf.code_end(), rspec, 0);
-    emit3_simm10( cbuf, Assembler::ldst_op, $dst$$reg, Assembler::lddf_op3, tmp_reg, (intptr_t) double_address );
-#endif // _LP64
-  %}
-
-
-  enc_class ShouldNotEncodeThis ( ) %{
-    ShouldNotCallThis();
+    AddressLiteral addrlit(double_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+    __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
   %}
 
   // Compiler ensures base is doubleword aligned and cnt is count of doublewords
@@ -2891,19 +2855,19 @@
     int  count_offset = java_lang_String:: count_offset_in_bytes();
 
     // load str1 (jchar*) base address into tmp1_reg
-    __ load_heap_oop(Address(str1_reg, 0,  value_offset), tmp1_reg);
-    __ ld(Address(str1_reg, 0, offset_offset), result_reg);
+    __ load_heap_oop(str1_reg, value_offset, tmp1_reg);
+    __ ld(str1_reg, offset_offset, result_reg);
     __ add(tmp1_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1_reg);
-    __    ld(Address(str1_reg, 0, count_offset), str1_reg); // hoisted
+    __   ld(str1_reg, count_offset, str1_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
-    __    load_heap_oop(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
+    __   load_heap_oop(str2_reg, value_offset, tmp2_reg); // hoisted
     __ add(result_reg, tmp1_reg, tmp1_reg);
 
     // load str2 (jchar*) base address into tmp2_reg
-    // __ ld_ptr(Address(str2_reg, 0,  value_offset), tmp2_reg); // hoisted
-    __ ld(Address(str2_reg, 0, offset_offset), result_reg);
+    // __ ld_ptr(str2_reg, value_offset, tmp2_reg); // hoisted
+    __ ld(str2_reg, offset_offset, result_reg);
     __ add(tmp2_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp2_reg);
-    __    ld(Address(str2_reg, 0, count_offset), str2_reg); // hoisted
+    __   ld(str2_reg, count_offset, str2_reg); // hoisted
     __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
     __   subcc(str1_reg, str2_reg, O7); // hoisted
     __ add(result_reg, tmp2_reg, tmp2_reg);
@@ -2912,8 +2876,8 @@
     // difference of the string lengths (stack)
 
     // discard string base pointers, after loading up the lengths
-    // __ ld(Address(str1_reg, 0, count_offset), str1_reg); // hoisted
-    // __ ld(Address(str2_reg, 0, count_offset), str2_reg); // hoisted
+    // __ ld(str1_reg, count_offset, str1_reg); // hoisted
+    // __ ld(str2_reg, count_offset, str2_reg); // hoisted
 
     // See if the lengths are different, and calculate min in str1_reg.
     // Stash diff in O7 in case we need it for a tie-breaker.
@@ -2993,22 +2957,219 @@
     __ bind(Ldone);
   %}
 
+enc_class enc_String_Equals(o0RegP str1, o1RegP str2, g3RegP tmp1, g4RegP tmp2, notemp_iRegI result) %{
+    Label Lword, Lword_loop, Lpost_word, Lchar, Lchar_loop, Ldone;
+    MacroAssembler _masm(&cbuf);
+
+    Register   str1_reg = reg_to_register_object($str1$$reg);
+    Register   str2_reg = reg_to_register_object($str2$$reg);
+    Register   tmp1_reg = reg_to_register_object($tmp1$$reg);
+    Register   tmp2_reg = reg_to_register_object($tmp2$$reg);
+    Register result_reg = reg_to_register_object($result$$reg);
+
+    // Get the first character position in both strings
+    //         [8] char array, [12] offset, [16] count
+    int  value_offset = java_lang_String:: value_offset_in_bytes();
+    int offset_offset = java_lang_String::offset_offset_in_bytes();
+    int  count_offset = java_lang_String:: count_offset_in_bytes();
+
+    // load str1 (jchar*) base address into tmp1_reg
+    __ load_heap_oop(Address(str1_reg, value_offset), tmp1_reg);
+    __ ld(Address(str1_reg, offset_offset), result_reg);
+    __ add(tmp1_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp1_reg);
+    __    ld(Address(str1_reg, count_offset), str1_reg); // hoisted
+    __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
+    __    load_heap_oop(Address(str2_reg, value_offset), tmp2_reg); // hoisted
+    __ add(result_reg, tmp1_reg, tmp1_reg);
+
+    // load str2 (jchar*) base address into tmp2_reg
+    // __ ld_ptr(Address(str2_reg, value_offset), tmp2_reg); // hoisted
+    __ ld(Address(str2_reg, offset_offset), result_reg);
+    __ add(tmp2_reg, arrayOopDesc::base_offset_in_bytes(T_CHAR), tmp2_reg);
+    __    ld(Address(str2_reg, count_offset), str2_reg); // hoisted
+    __ sll(result_reg, exact_log2(sizeof(jchar)), result_reg);
+    __   cmp(str1_reg, str2_reg); // hoisted
+    __ add(result_reg, tmp2_reg, tmp2_reg);
+
+    __ sll(str1_reg, exact_log2(sizeof(jchar)), str1_reg);
+    __ br(Assembler::notEqual, true, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg);    // not equal
+
+    __ br_zero(Assembler::equal, true, Assembler::pn, str1_reg, Ldone);
+    __ delayed()->add(G0, 1, result_reg); //equals
+
+    __ cmp(tmp1_reg, tmp2_reg); //same string ?
+    __ brx(Assembler::equal, true, Assembler::pn, Ldone);
+    __ delayed()->add(G0, 1, result_reg);
+
+    //rename registers
+    Register limit_reg =   str1_reg;
+    Register  chr2_reg =   str2_reg;
+    Register  chr1_reg = result_reg;
+    // tmp{12} are the base pointers
+
+    //check for alignment and position the pointers to the ends
+    __ or3(tmp1_reg, tmp2_reg, chr1_reg);
+    __ andcc(chr1_reg, 0x3, chr1_reg); // notZero means at least one not 4-byte aligned
+    __ br(Assembler::notZero, false, Assembler::pn, Lchar);
+    __ delayed()->nop();
+
+    __ bind(Lword);
+    __ and3(limit_reg, 0x2, O7); //remember the remainder (either 0 or 2)
+    __ andn(limit_reg, 0x3, limit_reg);
+    __ br_zero(Assembler::zero, false, Assembler::pn, limit_reg, Lpost_word);
+    __ delayed()->nop();
+
+    __ add(tmp1_reg, limit_reg, tmp1_reg);
+    __ add(tmp2_reg, limit_reg, tmp2_reg);
+    __ neg(limit_reg);
+
+    __ lduw(tmp1_reg, limit_reg, chr1_reg);
+    __ bind(Lword_loop);
+    __ lduw(tmp2_reg, limit_reg, chr2_reg);
+    __ cmp(chr1_reg, chr2_reg);
+    __ br(Assembler::notEqual, true, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg);
+    __ inccc(limit_reg, 2*sizeof(jchar));
+    // annul LDUW if branch i  s not taken to prevent access past end of string
+    __ br(Assembler::notZero, true, Assembler::pt, Lword_loop); //annul on taken
+    __ delayed()->lduw(tmp1_reg, limit_reg, chr1_reg); // hoisted
+
+    __ bind(Lpost_word);
+    __ br_zero(Assembler::zero, true, Assembler::pt, O7, Ldone);
+    __ delayed()->add(G0, 1, result_reg);
+
+    __ lduh(tmp1_reg, 0, chr1_reg);
+    __ lduh(tmp2_reg, 0, chr2_reg);
+    __ cmp (chr1_reg, chr2_reg);
+    __ br(Assembler::notEqual, true, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg);
+    __ ba(false,Ldone);
+    __ delayed()->add(G0, 1, result_reg);
+
+    __ bind(Lchar);
+    __ add(tmp1_reg, limit_reg, tmp1_reg);
+    __ add(tmp2_reg, limit_reg, tmp2_reg);
+    __ neg(limit_reg); //negate count
+
+    __ lduh(tmp1_reg, limit_reg, chr1_reg);
+    __ bind(Lchar_loop);
+    __ lduh(tmp2_reg, limit_reg, chr2_reg);
+    __ cmp(chr1_reg, chr2_reg);
+    __ br(Assembler::notEqual, true, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg); //not equal
+    __ inccc(limit_reg, sizeof(jchar));
+    // annul LDUH if branch is not taken to prevent access past end of string
+    __ br(Assembler::notZero, true, Assembler::pt, Lchar_loop); //annul on taken
+    __ delayed()->lduh(tmp1_reg, limit_reg, chr1_reg); // hoisted
+
+    __ add(G0, 1, result_reg);  //equal
+
+    __ bind(Ldone);
+  %}
+
+enc_class enc_Array_Equals(o0RegP ary1, o1RegP ary2, g3RegP tmp1, g4RegP tmp2, notemp_iRegI result) %{
+    Label Lvector, Ldone, Lloop;
+    MacroAssembler _masm(&cbuf);
+
+    Register   ary1_reg = reg_to_register_object($ary1$$reg);
+    Register   ary2_reg = reg_to_register_object($ary2$$reg);
+    Register   tmp1_reg = reg_to_register_object($tmp1$$reg);
+    Register   tmp2_reg = reg_to_register_object($tmp2$$reg);
+    Register result_reg = reg_to_register_object($result$$reg);
+
+    int length_offset  = arrayOopDesc::length_offset_in_bytes();
+    int base_offset    = arrayOopDesc::base_offset_in_bytes(T_CHAR);
+
+    // return true if the same array
+    __ cmp(ary1_reg, ary2_reg);
+    __ br(Assembler::equal, true, Assembler::pn, Ldone);
+    __ delayed()->add(G0, 1, result_reg); // equal
+
+    __ br_null(ary1_reg, true, Assembler::pn, Ldone);
+    __ delayed()->mov(G0, result_reg);    // not equal
+
+    __ br_null(ary2_reg, true, Assembler::pn, Ldone);
+    __ delayed()->mov(G0, result_reg);    // not equal
+
+    //load the lengths of arrays
+    __ ld(Address(ary1_reg, length_offset), tmp1_reg);
+    __ ld(Address(ary2_reg, length_offset), tmp2_reg);
+
+    // return false if the two arrays are not equal length
+    __ cmp(tmp1_reg, tmp2_reg);
+    __ br(Assembler::notEqual, true, Assembler::pn, Ldone);
+    __ delayed()->mov(G0, result_reg);     // not equal
+
+    __ br_zero(Assembler::zero, true, Assembler::pn, tmp1_reg, Ldone);
+    __ delayed()->add(G0, 1, result_reg); // zero-length arrays are equal
+
+    // load array addresses
+    __ add(ary1_reg, base_offset, ary1_reg);
+    __ add(ary2_reg, base_offset, ary2_reg);
+
+    // renaming registers
+    Register chr1_reg  =  tmp2_reg;   // for characters in ary1
+    Register chr2_reg  =  result_reg; // for characters in ary2
+    Register limit_reg =  tmp1_reg;   // length
+
+    // set byte count
+    __ sll(limit_reg, exact_log2(sizeof(jchar)), limit_reg);
+    __ andcc(limit_reg, 0x2, chr1_reg); //trailing character ?
+    __ br(Assembler::zero, false, Assembler::pt, Lvector);
+    __ delayed()->nop();
+
+    //compare the trailing char
+    __ sub(limit_reg, sizeof(jchar), limit_reg);
+    __ lduh(ary1_reg, limit_reg, chr1_reg);
+    __ lduh(ary2_reg, limit_reg, chr2_reg);
+    __ cmp(chr1_reg, chr2_reg);
+    __ br(Assembler::notEqual, true, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg);     // not equal
+
+    // only one char ?
+    __ br_zero(Assembler::zero, true, Assembler::pn, limit_reg, Ldone);
+    __ delayed()->add(G0, 1, result_reg); // zero-length arrays are equal
+
+    __ bind(Lvector);
+    // Shift ary1_reg and ary2_reg to the end of the arrays, negate limit
+    __ add(ary1_reg, limit_reg, ary1_reg);
+    __ add(ary2_reg, limit_reg, ary2_reg);
+    __ neg(limit_reg, limit_reg);
+
+    __ lduw(ary1_reg, limit_reg, chr1_reg);
+    __ bind(Lloop);
+    __ lduw(ary2_reg, limit_reg, chr2_reg);
+    __ cmp(chr1_reg, chr2_reg);
+    __ br(Assembler::notEqual, false, Assembler::pt, Ldone);
+    __ delayed()->mov(G0, result_reg);     // not equal
+    __ inccc(limit_reg, 2*sizeof(jchar));
+    // annul LDUW if branch is not taken to prevent access past end of string
+    __ br(Assembler::notZero, true, Assembler::pt, Lloop); //annul on taken
+    __ delayed()->lduw(ary1_reg, limit_reg, chr1_reg); // hoisted
+
+    __ add(G0, 1, result_reg); // equals
+
+    __ bind(Ldone);
+  %}
+
   enc_class enc_rethrow() %{
     cbuf.set_inst_mark();
     Register temp_reg = G3;
-    Address rethrow_stub(temp_reg, OptoRuntime::rethrow_stub());
+    AddressLiteral rethrow_stub(OptoRuntime::rethrow_stub());
     assert(temp_reg != reg_to_register_object(R_I0_num), "temp must not break oop_reg");
     MacroAssembler _masm(&cbuf);
 #ifdef ASSERT
     __ save_frame(0);
-    Address last_rethrow_addr(L1, (address)&last_rethrow);
-    __ sethi(last_rethrow_addr);
+    AddressLiteral last_rethrow_addrlit(&last_rethrow);
+    __ sethi(last_rethrow_addrlit, L1);
+    Address addr(L1, last_rethrow_addrlit.low10());
     __ get_pc(L2);
     __ inc(L2, 3 * BytesPerInstWord);  // skip this & 2 more insns to point at jump_to
-    __ st_ptr(L2, last_rethrow_addr);
+    __ st_ptr(L2, addr);
     __ restore();
 #endif
-    __ JUMP(rethrow_stub, 0); // sethi;jmp
+    __ JUMP(rethrow_stub, temp_reg, 0); // sethi;jmp
     __ delayed()->nop();
   %}
 
@@ -3285,6 +3446,15 @@
   interface(CONST_INTER);
 %}
 
+// Integer Immediate: 8-bit
+operand immI8() %{
+  predicate(Assembler::is_simm(n->get_int(), 8));
+  match(ConI);
+  op_cost(0);
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Integer Immediate: 13-bit
 operand immI13() %{
   predicate(Assembler::is_simm13(n->get_int()));
@@ -3295,6 +3465,25 @@
   interface(CONST_INTER);
 %}
 
+// Integer Immediate: 13-bit minus 7
+operand immI13m7() %{
+  predicate((-4096 < n->get_int()) && ((n->get_int() + 7) <= 4095));
+  match(ConI);
+  op_cost(0);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
+// Integer Immediate: 16-bit
+operand immI16() %{
+  predicate(Assembler::is_simm(n->get_int(), 16));
+  match(ConI);
+  op_cost(0);
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Unsigned (positive) Integer Immediate: 13-bit
 operand immU13() %{
   predicate((0 <= n->get_int()) && Assembler::is_simm13(n->get_int()));
@@ -3373,6 +3562,28 @@
   interface(CONST_INTER);
 %}
 
+// Immediates for special shifts (sign extend)
+
+// Integer Immediate: the value 16
+operand immI_16() %{
+  predicate(n->get_int() == 16);
+  match(ConI);
+  op_cost(0);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
+// Integer Immediate: the value 24
+operand immI_24() %{
+  predicate(n->get_int() == 24);
+  match(ConI);
+  op_cost(0);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Integer Immediate: the value 255
 operand immI_255() %{
   predicate( n->get_int() == 255 );
@@ -3383,6 +3594,16 @@
   interface(CONST_INTER);
 %}
 
+// Integer Immediate: the value 65535
+operand immI_65535() %{
+  predicate(n->get_int() == 65535);
+  match(ConI);
+  op_cost(0);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Long Immediate: the value FF
 operand immL_FF() %{
   predicate( n->get_long() == 0xFFL );
@@ -3488,6 +3709,16 @@
   interface(CONST_INTER);
 %}
 
+// Long Immediate: 13-bit minus 7
+operand immL13m7() %{
+  predicate((-4096L < n->get_long()) && ((n->get_long() + 7L) <= 4095L));
+  match(ConL);
+  op_cost(0);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Long Immediate: low 32-bit mask
 operand immL_32bits() %{
   predicate(n->get_long() == 0xFFFFFFFFL);
@@ -3869,6 +4100,8 @@
   constraint(ALLOC_IN_RC(dflt_reg));
   match(RegD);
 
+  match(regD_low);
+
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3883,7 +4116,7 @@
 
 operand regD_low() %{
   constraint(ALLOC_IN_RC(dflt_low_reg));
-  match(RegD);
+  match(regD);
 
   format %{ %}
   interface(REG_INTER);
@@ -3923,7 +4156,7 @@
   %}
 %}
 
-// Indirect with Offset
+// Indirect with simm13 Offset
 operand indOffset13(sp_ptr_RegP reg, immX13 offset) %{
   constraint(ALLOC_IN_RC(sp_ptr_reg));
   match(AddP reg offset);
@@ -3938,6 +4171,21 @@
   %}
 %}
 
+// Indirect with simm13 Offset minus 7
+operand indOffset13m7(sp_ptr_RegP reg, immX13m7 offset) %{
+  constraint(ALLOC_IN_RC(sp_ptr_reg));
+  match(AddP reg offset);
+
+  op_cost(100);
+  format %{ "[$reg + $offset]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index(0x0);
+    scale(0x0);
+    disp($offset);
+  %}
+%}
+
 // Note:  Intel has a swapped version also, like this:
 //operand indOffsetX(iRegI reg, immP offset) %{
 //  constraint(ALLOC_IN_RC(int_reg));
@@ -4147,7 +4395,7 @@
 
 //----------OPERAND CLASSES----------------------------------------------------
 // Operand Classes are groups of operands that are used to simplify
-// instruction definitions by not requiring the AD writer to specify seperate
+// instruction definitions by not requiring the AD writer to specify separate
 // instructions for every form of operand when the instruction accepts
 // multiple operand types with the same basic encoding and format.  The classic
 // case of this is memory operands.
@@ -5284,69 +5532,349 @@
   ins_cost(MEMORY_REF_COST);
 
   size(4);
-  format %{ "LDSB   $mem,$dst" %}
-  opcode(Assembler::ldsb_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  format %{ "LDSB   $mem,$dst\t! byte" %}
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Byte (8bit signed) into a Long Register
+instruct loadB2L(iRegL dst, memory mem) %{
+  match(Set dst (ConvI2L (LoadB mem)));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDSB   $mem,$dst\t! byte -> long" %}
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
-// Load Byte (8bit UNsigned) into an int reg
-instruct loadUB(iRegI dst, memory mem, immI_255 bytemask) %{
-  match(Set dst (AndI (LoadB mem) bytemask));
+// Load Unsigned Byte (8bit UNsigned) into an int reg
+instruct loadUB(iRegI dst, memory mem) %{
+  match(Set dst (LoadUB mem));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDUB   $mem,$dst\t! ubyte" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Byte (8bit UNsigned) into a Long Register
+instruct loadUB2L(iRegL dst, memory mem) %{
+  match(Set dst (ConvI2L (LoadUB mem)));
   ins_cost(MEMORY_REF_COST);
 
   size(4);
-  format %{ "LDUB   $mem,$dst" %}
-  opcode(Assembler::ldub_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  format %{ "LDUB   $mem,$dst\t! ubyte -> long" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Byte (8 bit UNsigned) with 8-bit mask into Long Register
+instruct loadUB2L_immI8(iRegL dst, memory mem, immI8 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadUB mem) mask)));
+  ins_cost(MEMORY_REF_COST + DEFAULT_COST);
+
+  size(2*4);
+  format %{ "LDUB   $mem,$dst\t# ubyte & 8-bit mask -> long\n\t"
+            "AND    $dst,$mask,$dst" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register);
+    __ and3($dst$$Register, $mask$$constant, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Short (16bit signed)
+instruct loadS(iRegI dst, memory mem) %{
+  match(Set dst (LoadS mem));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDSH   $mem,$dst\t! short" %}
+  ins_encode %{
+    __ ldsh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
-// Load Byte (8bit UNsigned) into a Long Register
-instruct loadUBL(iRegL dst, memory mem, immL_FF bytemask) %{
-  match(Set dst (AndL (ConvI2L (LoadB mem)) bytemask));
+// Load Short (16 bit signed) to Byte (8 bit signed)
+instruct loadS2B(iRegI dst, indOffset13m7 mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadS mem) twentyfour) twentyfour));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+
+  format %{ "LDSB   $mem+1,$dst\t! short -> byte" %}
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register, 1);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Short (16bit signed) into a Long Register
+instruct loadS2L(iRegL dst, memory mem) %{
+  match(Set dst (ConvI2L (LoadS mem)));
   ins_cost(MEMORY_REF_COST);
 
   size(4);
-  format %{ "LDUB   $mem,$dst" %}
-  opcode(Assembler::ldub_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  format %{ "LDSH   $mem,$dst\t! short -> long" %}
+  ins_encode %{
+    __ ldsh($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mask_mem);
 %}
 
-// Load Char (16bit UNsigned) into a Long Register
-instruct loadUCL(iRegL dst, memory mem, immL_FFFF bytemask) %{
-  match(Set dst (AndL (ConvI2L (LoadC mem)) bytemask));
+// Load Unsigned Short/Char (16bit UNsigned)
+instruct loadUS(iRegI dst, memory mem) %{
+  match(Set dst (LoadUS mem));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDUH   $mem,$dst\t! ushort/char" %}
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) to Byte (8 bit signed)
+instruct loadUS2B(iRegI dst, indOffset13m7 mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadUS mem) twentyfour) twentyfour));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDSB   $mem+1,$dst\t! ushort -> byte" %}
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register, 1);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Unsigned Short/Char (16bit UNsigned) into a Long Register
+instruct loadUS2L(iRegL dst, memory mem) %{
+  match(Set dst (ConvI2L (LoadUS mem)));
   ins_cost(MEMORY_REF_COST);
 
   size(4);
-  format %{ "LDUH   $mem,$dst" %}
-  opcode(Assembler::lduh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(iload_mask_mem);
-%}
-
-// Load Char (16bit unsigned)
-instruct loadC(iRegI dst, memory mem) %{
-  match(Set dst (LoadC mem));
+  format %{ "LDUH   $mem,$dst\t! ushort/char -> long" %}
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Short/Char (16bit UNsigned) with mask 0xFF into a Long Register
+instruct loadUS2L_immI_255(iRegL dst, indOffset13m7 mem, immI_255 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
   ins_cost(MEMORY_REF_COST);
 
   size(4);
-  format %{ "LDUH   $mem,$dst" %}
-  opcode(Assembler::lduh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(iload_mask_mem);
+  format %{ "LDUB   $mem+1,$dst\t! ushort/char & 0xFF -> long" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register, 1);  // LSB is index+1 on BE
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Short/Char (16bit UNsigned) with a 13-bit mask into a Long Register
+instruct loadUS2L_immI13(iRegL dst, memory mem, immI13 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+  ins_cost(MEMORY_REF_COST + DEFAULT_COST);
+
+  size(2*4);
+  format %{ "LDUH   $mem,$dst\t! ushort/char & 13-bit mask -> long\n\t"
+            "AND    $dst,$mask,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ lduh($mem$$Address, Rdst);
+    __ and3(Rdst, $mask$$constant, Rdst);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Short/Char (16bit UNsigned) with a 16-bit mask into a Long Register
+instruct loadUS2L_immI16(iRegL dst, memory mem, immI16 mask, iRegL tmp) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+  effect(TEMP dst, TEMP tmp);
+  ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST);
+
+  size(3*4);
+  format %{ "LDUH   $mem,$dst\t! ushort/char & 16-bit mask -> long\n\t"
+            "SET    $mask,$tmp\n\t"
+            "AND    $dst,$tmp,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rtmp = $tmp$$Register;
+    __ lduh($mem$$Address, Rdst);
+    __ set($mask$$constant, Rtmp);
+    __ and3(Rdst, Rtmp, Rdst);
+  %}
+  ins_pipe(iload_mem);
 %}
 
 // Load Integer
 instruct loadI(iRegI dst, memory mem) %{
   match(Set dst (LoadI mem));
   ins_cost(MEMORY_REF_COST);
-  size(4);
-
-  format %{ "LDUW   $mem,$dst" %}
-  opcode(Assembler::lduw_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+
+  size(4);
+  format %{ "LDUW   $mem,$dst\t! int" %}
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Integer to Byte (8 bit signed)
+instruct loadI2B(iRegI dst, indOffset13m7 mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) twentyfour) twentyfour));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+
+  format %{ "LDSB   $mem+3,$dst\t! int -> byte" %}
+  ins_encode %{
+    __ ldsb($mem$$Address, $dst$$Register, 3);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Integer to Unsigned Byte (8 bit UNsigned)
+instruct loadI2UB(iRegI dst, indOffset13m7 mem, immI_255 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+
+  format %{ "LDUB   $mem+3,$dst\t! int -> ubyte" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register, 3);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Integer to Short (16 bit signed)
+instruct loadI2S(iRegI dst, indOffset13m7 mem, immI_16 sixteen) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) sixteen) sixteen));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+
+  format %{ "LDSH   $mem+2,$dst\t! int -> short" %}
+  ins_encode %{
+    __ ldsh($mem$$Address, $dst$$Register, 2);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Integer to Unsigned Short (16 bit UNsigned)
+instruct loadI2US(iRegI dst, indOffset13m7 mem, immI_65535 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+
+  format %{ "LDUH   $mem+2,$dst\t! int -> ushort/char" %}
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register, 2);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Integer into a Long Register
+instruct loadI2L(iRegL dst, memory mem) %{
+  match(Set dst (ConvI2L (LoadI mem)));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDSW   $mem,$dst\t! int -> long" %}
+  ins_encode %{
+    __ ldsw($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mask_mem);
+%}
+
+// Load Integer with mask 0xFF into a Long Register
+instruct loadI2L_immI_255(iRegL dst, indOffset13m7 mem, immI_255 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDUB   $mem+3,$dst\t! int & 0xFF -> long" %}
+  ins_encode %{
+    __ ldub($mem$$Address, $dst$$Register, 3);  // LSB is index+3 on BE
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Integer with mask 0xFFFF into a Long Register
+instruct loadI2L_immI_65535(iRegL dst, indOffset13m7 mem, immI_65535 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDUH   $mem+2,$dst\t! int & 0xFFFF -> long" %}
+  ins_encode %{
+    __ lduh($mem$$Address, $dst$$Register, 2);  // LSW is index+2 on BE
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Integer with a 13-bit mask into a Long Register
+instruct loadI2L_immI13(iRegL dst, memory mem, immI13 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  ins_cost(MEMORY_REF_COST + DEFAULT_COST);
+
+  size(2*4);
+  format %{ "LDUW   $mem,$dst\t! int & 13-bit mask -> long\n\t"
+            "AND    $dst,$mask,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ lduw($mem$$Address, Rdst);
+    __ and3(Rdst, $mask$$constant, Rdst);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Integer with a 32-bit mask into a Long Register
+instruct loadI2L_immI(iRegL dst, memory mem, immI mask, iRegL tmp) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  effect(TEMP dst, TEMP tmp);
+  ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST);
+
+  size(3*4);
+  format %{ "LDUW   $mem,$dst\t! int & 32-bit mask -> long\n\t"
+            "SET    $mask,$tmp\n\t"
+            "AND    $dst,$tmp,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rtmp = $tmp$$Register;
+    __ lduw($mem$$Address, Rdst);
+    __ set($mask$$constant, Rtmp);
+    __ and3(Rdst, Rtmp, Rdst);
+  %}
+  ins_pipe(iload_mem);
+%}
+
+// Load Unsigned Integer into a Long Register
+instruct loadUI2L(iRegL dst, memory mem) %{
+  match(Set dst (LoadUI2L mem));
+  ins_cost(MEMORY_REF_COST);
+
+  size(4);
+  format %{ "LDUW   $mem,$dst\t! uint -> long" %}
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5354,10 +5882,12 @@
 instruct loadL(iRegL dst, memory mem ) %{
   match(Set dst (LoadL mem));
   ins_cost(MEMORY_REF_COST);
+
   size(4);
   format %{ "LDX    $mem,$dst\t! long" %}
-  opcode(Assembler::ldx_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
   ins_pipe(iload_mem);
 %}
 
@@ -5452,33 +5982,29 @@
 
 #ifndef _LP64
   format %{ "LDUW   $mem,$dst\t! ptr" %}
-  opcode(Assembler::lduw_op3, 0, REGP_OP);
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
 #else
   format %{ "LDX    $mem,$dst\t! ptr" %}
-  opcode(Assembler::ldx_op3, 0, REGP_OP);
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
 #endif
-  ins_encode( form3_mem_reg( mem, dst ) );
   ins_pipe(iload_mem);
 %}
 
 // Load Compressed Pointer
 instruct loadN(iRegN dst, memory mem) %{
-   match(Set dst (LoadN mem));
-   ins_cost(MEMORY_REF_COST);
-   size(4);
-
-   format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
-   ins_encode %{
-     Register base = as_Register($mem$$base);
-     Register index = as_Register($mem$$index);
-     Register dst = $dst$$Register;
-     if (index != G0) {
-       __ lduw(base, index, dst);
-     } else {
-       __ lduw(base, $mem$$disp, dst);
-     }
-   %}
-   ins_pipe(iload_mem);
+  match(Set dst (LoadN mem));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+
+  format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
+  ins_pipe(iload_mem);
 %}
 
 // Load Klass Pointer
@@ -5489,12 +6015,15 @@
 
 #ifndef _LP64
   format %{ "LDUW   $mem,$dst\t! klass ptr" %}
-  opcode(Assembler::lduw_op3, 0, REGP_OP);
+  ins_encode %{
+    __ lduw($mem$$Address, $dst$$Register);
+  %}
 #else
   format %{ "LDX    $mem,$dst\t! klass ptr" %}
-  opcode(Assembler::ldx_op3, 0, REGP_OP);
+  ins_encode %{
+    __ ldx($mem$$Address, $dst$$Register);
+  %}
 #endif
-  ins_encode( form3_mem_reg( mem, dst ) );
   ins_pipe(iload_mem);
 %}
 
@@ -5505,32 +6034,12 @@
   size(4);
 
   format %{ "LDUW   $mem,$dst\t! compressed klass ptr" %}
-
   ins_encode %{
-     Register base = as_Register($mem$$base);
-     Register index = as_Register($mem$$index);
-     Register dst = $dst$$Register;
-     if (index != G0) {
-       __ lduw(base, index, dst);
-     } else {
-       __ lduw(base, $mem$$disp, dst);
-     }
+    __ lduw($mem$$Address, $dst$$Register);
   %}
   ins_pipe(iload_mem);
 %}
 
-// Load Short (16bit signed)
-instruct loadS(iRegI dst, memory mem) %{
-  match(Set dst (LoadS mem));
-  ins_cost(MEMORY_REF_COST);
-
-  size(4);
-  format %{ "LDSH   $mem,$dst" %}
-  opcode(Assembler::ldsh_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(iload_mask_mem);
-%}
-
 // Load Double
 instruct loadD(regD dst, memory mem) %{
   match(Set dst (LoadD mem));
@@ -5612,8 +6121,8 @@
   ins_cost(DEFAULT_COST);
   format %{ "SET    $src,$dst\t!ptr" %}
   ins_encode %{
-    Address polling_page(reg_to_register_object($dst$$reg), (address)os::get_polling_page());
-    __ sethi(polling_page, false );
+    AddressLiteral polling_page(os::get_polling_page());
+    __ sethi(polling_page, reg_to_register_object($dst$$reg));
   %}
   ins_pipe(loadConP_poll);
 %}
@@ -5672,14 +6181,21 @@
   effect(KILL tmp);
 
 #ifdef _LP64
-  size(36);
+  size(8*4);
 #else
-  size(8);
+  size(2*4);
 #endif
 
   format %{ "SETHI  hi(&$src),$tmp\t!get float $src from table\n\t"
             "LDF    [$tmp+lo(&$src)],$dst" %}
-  ins_encode( LdImmF(src, dst, tmp) );
+  ins_encode %{
+    address float_address = __ float_constant($src$$constant);
+    RelocationHolder rspec = internal_word_Relocation::spec(float_address);
+    AddressLiteral addrlit(float_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    __ ldf(FloatRegisterImpl::S, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+  %}
   ins_pipe(loadConFD);
 %}
 
@@ -5688,14 +6204,23 @@
   effect(KILL tmp);
 
 #ifdef _LP64
-  size(36);
+  size(8*4);
 #else
-  size(8);
+  size(2*4);
 #endif
 
   format %{ "SETHI  hi(&$src),$tmp\t!get double $src from table\n\t"
             "LDDF   [$tmp+lo(&$src)],$dst" %}
-  ins_encode( LdImmD(src, dst, tmp) );
+  ins_encode %{
+    address double_address = __ double_constant($src$$constant);
+    RelocationHolder rspec = internal_word_Relocation::spec(double_address);
+    AddressLiteral addrlit(double_address, rspec);
+
+    __ sethi(addrlit, $tmp$$Register);
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
+    __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
+  %}
   ins_pipe(loadConFD);
 %}
 
@@ -6845,7 +7370,7 @@
   ins_pipe(sdiv_reg_reg);
 %}
 
-// Magic constant, reciprical of 10
+// Magic constant, reciprocal of 10
 instruct loadConI_x66666667(iRegIsafe dst) %{
   effect( DEF dst );
 
@@ -6855,7 +7380,7 @@
   ins_pipe(ialu_hi_lo_reg);
 %}
 
-// Register Shift Right Arithmatic Long by 32-63
+// Register Shift Right Arithmetic Long by 32-63
 instruct sra_31( iRegI dst, iRegI src ) %{
   effect( DEF dst, USE src );
   format %{ "SRA    $src,31,$dst\t! Used in div-by-10" %}
@@ -8956,6 +9481,191 @@
   ins_pipe(long_memory_op);
 %}
 
+instruct string_equals(o0RegP str1, o1RegP str2, g3RegP tmp1, g4RegP tmp2, notemp_iRegI result,
+                       o7RegI tmp3, flagsReg ccr) %{
+  match(Set result (StrEquals str1 str2));
+  effect(USE_KILL str1, USE_KILL str2, KILL tmp1, KILL tmp2, KILL ccr, KILL tmp3);
+  ins_cost(300);
+  format %{ "String Equals $str1,$str2 -> $result" %}
+  ins_encode( enc_String_Equals(str1, str2, tmp1, tmp2, result) );
+  ins_pipe(long_memory_op);
+%}
+
+instruct array_equals(o0RegP ary1, o1RegP ary2, g3RegP tmp1, g4RegP tmp2, notemp_iRegI result,
+                        flagsReg ccr) %{
+  match(Set result (AryEq ary1 ary2));
+  effect(USE_KILL ary1, USE_KILL ary2, KILL tmp1, KILL tmp2, KILL ccr);
+  ins_cost(300);
+  format %{ "Array Equals $ary1,$ary2 -> $result" %}
+  ins_encode( enc_Array_Equals(ary1, ary2, tmp1, tmp2, result));
+  ins_pipe(long_memory_op);
+%}
+
+
+//---------- Zeros Count Instructions ------------------------------------------
+
+instruct countLeadingZerosI(iRegI dst, iRegI src, iRegI tmp, flagsReg cr) %{
+  predicate(UsePopCountInstruction);  // See Matcher::match_rule_supported
+  match(Set dst (CountLeadingZerosI src));
+  effect(TEMP dst, TEMP tmp, KILL cr);
+
+  // x |= (x >> 1);
+  // x |= (x >> 2);
+  // x |= (x >> 4);
+  // x |= (x >> 8);
+  // x |= (x >> 16);
+  // return (WORDBITS - popc(x));
+  format %{ "SRL     $src,1,$dst\t! count leading zeros (int)\n\t"
+            "OR      $src,$tmp,$dst\n\t"
+            "SRL     $dst,2,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRL     $dst,4,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRL     $dst,8,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRL     $dst,16,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "POPC    $dst,$dst\n\t"
+            "MOV     32,$tmp\n\t"
+            "SUB     $tmp,$dst,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    __ srl(Rsrc, 1, Rtmp);
+    __ or3(Rsrc, Rtmp, Rdst);
+    __ srl(Rdst, 2, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srl(Rdst, 4, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srl(Rdst, 8, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srl(Rdst, 16, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ popc(Rdst, Rdst);
+    __ mov(BitsPerInt, Rtmp);
+    __ sub(Rtmp, Rdst, Rdst);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosL(iRegI dst, iRegL src, iRegL tmp, flagsReg cr) %{
+  predicate(UsePopCountInstruction);  // See Matcher::match_rule_supported
+  match(Set dst (CountLeadingZerosL src));
+  effect(TEMP dst, TEMP tmp, KILL cr);
+
+  // x |= (x >> 1);
+  // x |= (x >> 2);
+  // x |= (x >> 4);
+  // x |= (x >> 8);
+  // x |= (x >> 16);
+  // x |= (x >> 32);
+  // return (WORDBITS - popc(x));
+  format %{ "SRLX    $src,1,$dst\t! count leading zeros (long)\n\t"
+            "OR      $src,$tmp,$dst\n\t"
+            "SRLX    $dst,2,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRLX    $dst,4,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRLX    $dst,8,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRLX    $dst,16,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "SRLX    $dst,32,$tmp\n\t"
+            "OR      $dst,$tmp,$dst\n\t"
+            "POPC    $dst,$dst\n\t"
+            "MOV     64,$tmp\n\t"
+            "SUB     $tmp,$dst,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    __ srlx(Rsrc, 1, Rtmp);
+    __ or3(Rsrc, Rtmp, Rdst);
+    __ srlx(Rdst, 2, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 4, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 8, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 16, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 32, Rtmp);
+    __ or3(Rdst, Rtmp, Rdst);
+    __ popc(Rdst, Rdst);
+    __ mov(BitsPerLong, Rtmp);
+    __ sub(Rtmp, Rdst, Rdst);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosI(iRegI dst, iRegI src, flagsReg cr) %{
+  predicate(UsePopCountInstruction);  // See Matcher::match_rule_supported
+  match(Set dst (CountTrailingZerosI src));
+  effect(TEMP dst, KILL cr);
+
+  // return popc(~x & (x - 1));
+  format %{ "SUB     $src,1,$dst\t! count trailing zeros (int)\n\t"
+            "ANDN    $dst,$src,$dst\n\t"
+            "SRL     $dst,R_G0,$dst\n\t"
+            "POPC    $dst,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    __ sub(Rsrc, 1, Rdst);
+    __ andn(Rdst, Rsrc, Rdst);
+    __ srl(Rdst, G0, Rdst);
+    __ popc(Rdst, Rdst);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosL(iRegI dst, iRegL src, flagsReg cr) %{
+  predicate(UsePopCountInstruction);  // See Matcher::match_rule_supported
+  match(Set dst (CountTrailingZerosL src));
+  effect(TEMP dst, KILL cr);
+
+  // return popc(~x & (x - 1));
+  format %{ "SUB     $src,1,$dst\t! count trailing zeros (long)\n\t"
+            "ANDN    $dst,$src,$dst\n\t"
+            "POPC    $dst,$dst" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    __ sub(Rsrc, 1, Rdst);
+    __ andn(Rdst, Rsrc, Rdst);
+    __ popc(Rdst, Rdst);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
+//---------- Population Count Instructions -------------------------------------
+
+instruct popCountI(iRegI dst, iRegI src) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountI src));
+
+  format %{ "POPC   $src, $dst" %}
+  ins_encode %{
+    __ popc($src$$Register, $dst$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Note: Long.bitCount(long) returns an int.
+instruct popCountL(iRegI dst, iRegL src) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountL src));
+
+  format %{ "POPC   $src, $dst" %}
+  ins_encode %{
+    __ popc($src$$Register, $dst$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
 // ============================================================================
 //------------Bytes reverse--------------------------------------------------
 
@@ -9046,7 +9756,7 @@
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
 //
-// peepmatch ( root_instr_name [preceeding_instruction]* );
+// peepmatch ( root_instr_name [preceding_instruction]* );
 //
 // peepconstraint %{
 // (instruction_number.operand_name relational_op instruction_number.operand_name
--- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,16 +68,9 @@
 #ifdef PRODUCT
 #define inc_counter_np(a,b,c) (0)
 #else
-  void inc_counter_np_(int& counter, Register t1, Register t2) {
-    Address counter_addr(t2, (address) &counter);
-    __ sethi(counter_addr);
-    __ ld(counter_addr, t1);
-    __ inc(t1);
-    __ st(t1, counter_addr);
-  }
 #define inc_counter_np(counter, t1, t2) \
   BLOCK_COMMENT("inc_counter " #counter); \
-  inc_counter_np_(counter, t1, t2);
+  __ inc_counter(&counter, t1, t2);
 #endif
 
   //----------------------------------------------------------------------------------------------------
@@ -325,9 +318,9 @@
     __ verify_thread();
 
     const Register& temp_reg = Gtemp;
-    Address pending_exception_addr    (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-    Address exception_file_offset_addr(G2_thread, 0, in_bytes(Thread::exception_file_offset   ()));
-    Address exception_line_offset_addr(G2_thread, 0, in_bytes(Thread::exception_line_offset   ()));
+    Address pending_exception_addr    (G2_thread, Thread::pending_exception_offset());
+    Address exception_file_offset_addr(G2_thread, Thread::exception_file_offset   ());
+    Address exception_line_offset_addr(G2_thread, Thread::exception_line_offset   ());
 
     // set pending exception
     __ verify_oop(Oexception);
@@ -340,8 +333,8 @@
     // complete return to VM
     assert(StubRoutines::_call_stub_return_address != NULL, "must have been generated before");
 
-    Address stub_ret(temp_reg, StubRoutines::_call_stub_return_address);
-    __ jump_to(stub_ret);
+    AddressLiteral stub_ret(StubRoutines::_call_stub_return_address);
+    __ jump_to(stub_ret, temp_reg);
     __ delayed()->nop();
 
     return start;
@@ -366,7 +359,7 @@
 
     const Register& handler_reg = Gtemp;
 
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
 
 #ifdef ASSERT
     // make sure that this code is only executed if there is a pending exception
@@ -456,8 +449,7 @@
     int frame_complete = __ offset();
 
     if (restore_saved_exception_pc) {
-      Address saved_exception_pc(G2_thread, 0, in_bytes(JavaThread::saved_exception_pc_offset()));
-      __ ld_ptr(saved_exception_pc, I7);
+      __ ld_ptr(G2_thread, JavaThread::saved_exception_pc_offset(), I7);
       __ sub(I7, frame::pc_return_offset, I7);
     }
 
@@ -481,7 +473,7 @@
 #ifdef ASSERT
     Label L;
 
-    Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     Register scratch_reg = Gtemp;
     __ ld_ptr(exception_addr, scratch_reg);
     __ br_notnull(scratch_reg, false, Assembler::pt, L);
@@ -817,21 +809,6 @@
   Label _atomic_add_stub;  // called from other stubs
 
 
-  // Support for void OrderAccess::fence().
-  //
-  address generate_fence() {
-    StubCodeMark mark(this, "StubRoutines", "fence");
-    address start = __ pc();
-
-    __ membar(Assembler::Membar_mask_bits(Assembler::LoadLoad  | Assembler::LoadStore |
-                                          Assembler::StoreLoad | Assembler::StoreStore));
-    __ retl(false);
-    __ delayed()->nop();
-
-    return start;
-  }
-
-
   //------------------------------------------------------------------------------------------------------------------------
   // The following routine generates a subroutine to throw an asynchronous
   // UnknownError when an unsafe access gets a fault that could not be
@@ -850,7 +827,7 @@
     address start = __ pc();
 
     const int preserve_register_words = (64 * 2);
-    Address preserve_addr(FP, 0, (-preserve_register_words * wordSize) + STACK_BIAS);
+    Address preserve_addr(FP, (-preserve_register_words * wordSize) + STACK_BIAS);
 
     Register Lthread = L7_thread_cache;
     int i;
@@ -900,19 +877,7 @@
     __ align(CodeEntryAlignment);
     StubCodeMark mark(this, "StubRoutines", "partial_subtype_check");
     address start = __ pc();
-    Label loop, miss;
-
-    // Compare super with sub directly, since super is not in its own SSA.
-    // The compiler used to emit this test, but we fold it in here,
-    // to increase overall code density, with no real loss of speed.
-    { Label L;
-      __ cmp(O1, O2);
-      __ brx(Assembler::notEqual, false, Assembler::pt, L);
-      __ delayed()->nop();
-      __ retl();
-      __ delayed()->addcc(G0,0,O0); // set Z flags, zero result
-      __ bind(L);
-    }
+    Label miss;
 
 #if defined(COMPILER2) && !defined(_LP64)
     // Do not use a 'save' because it blows the 64-bit O registers.
@@ -936,56 +901,12 @@
     Register L2_super   = L2;
     Register L3_index   = L3;
 
-#ifdef _LP64
-    Register L4_ooptmp  = L4;
-
-    if (UseCompressedOops) {
-      // this must be under UseCompressedOops check, as we rely upon fact
-      // that L4 not clobbered in C2 on 32-bit platforms, where we do explicit save
-      // on stack, see several lines above
-      __ encode_heap_oop(Rsuper, L4_ooptmp);
-    }
-#endif
-
-    inc_counter_np(SharedRuntime::_partial_subtype_ctr, L0, L1);
-
-    __ ld_ptr( Rsub, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes(), L3 );
-    __ lduw(L3,arrayOopDesc::length_offset_in_bytes(),L0_ary_len);
-    __ add(L3,arrayOopDesc::base_offset_in_bytes(T_OBJECT),L1_ary_ptr);
-    __ clr(L3_index);           // zero index
-    // Load a little early; will load 1 off the end of the array.
-    // Ok for now; revisit if we have other uses of this routine.
-    if (UseCompressedOops) {
-      __ lduw(L1_ary_ptr,0,L2_super);// Will load a little early
-    } else {
-      __ ld_ptr(L1_ary_ptr,0,L2_super);// Will load a little early
-    }
-
-    assert(heapOopSize != 0, "heapOopSize should be initialized");
-    // The scan loop
-    __ BIND(loop);
-    __ add(L1_ary_ptr, heapOopSize, L1_ary_ptr); // Bump by OOP size
-    __ cmp(L3_index,L0_ary_len);
-    __ br(Assembler::equal,false,Assembler::pn,miss);
-    __ delayed()->inc(L3_index); // Bump index
-
-    if (UseCompressedOops) {
-#ifdef  _LP64
-      __ subcc(L2_super,L4_ooptmp,Rret);   // Check for match; zero in Rret for a hit
-      __ br( Assembler::notEqual, false, Assembler::pt, loop );
-      __ delayed()->lduw(L1_ary_ptr,0,L2_super);// Will load a little early
-#else
-      ShouldNotReachHere();
-#endif
-    } else {
-      __ subcc(L2_super,Rsuper,Rret);   // Check for match; zero in Rret for a hit
-      __ brx( Assembler::notEqual, false, Assembler::pt, loop );
-      __ delayed()->ld_ptr(L1_ary_ptr,0,L2_super);// Will load a little early
-    }
-
-    // Got a hit; report success; set cache.  Cache load doesn't
-    // happen here; for speed it is directly emitted by the compiler.
-    __ st_ptr( Rsuper, Rsub, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() );
+    __ check_klass_subtype_slow_path(Rsub, Rsuper,
+                                     L0, L1, L2, L3,
+                                     NULL, &miss);
+
+    // Match falls through here.
+    __ addcc(G0,0,Rret);        // set Z flags, Z result
 
 #if defined(COMPILER2) && !defined(_LP64)
     __ ld_ptr(SP,(frame::register_save_words+0)*wordSize,L0);
@@ -999,7 +920,6 @@
     __ delayed()->restore();
 #endif
 
-    // Hit or miss falls through here
     __ BIND(miss);
     __ addcc(G0,1,Rret);        // set NZ flags, NZ result
 
@@ -1178,21 +1098,19 @@
           __ srl_ptr(addr, CardTableModRefBS::card_shift, addr);
           __ srl_ptr(count, CardTableModRefBS::card_shift, count);
           __ sub(count, addr, count);
-          Address rs(tmp, (address)ct->byte_map_base);
-          __ load_address(rs);
+          AddressLiteral rs(ct->byte_map_base);
+          __ set(rs, tmp);
         __ BIND(L_loop);
-          __ stb(G0, rs.base(), addr);
+          __ stb(G0, tmp, addr);
           __ subcc(count, 1, count);
           __ brx(Assembler::greaterEqual, false, Assembler::pt, L_loop);
           __ delayed()->add(addr, 1, addr);
-
-          }
+        }
         break;
       case BarrierSet::ModRef:
         break;
-      default      :
+      default:
         ShouldNotReachHere();
-
     }
   }
 
@@ -2330,51 +2248,31 @@
                            Register super_check_offset,
                            Register super_klass,
                            Register temp,
-                           Label& L_success,
-                           Register deccc_hack = noreg) {
+                           Label& L_success) {
     assert_different_registers(sub_klass, super_check_offset, super_klass, temp);
 
     BLOCK_COMMENT("type_check:");
 
-    Label L_miss;
+    Label L_miss, L_pop_to_miss;
 
     assert_clean_int(super_check_offset, temp);
 
-    // maybe decrement caller's trip count:
-#define DELAY_SLOT delayed();   \
-    { if (deccc_hack == noreg) __ nop(); else __ deccc(deccc_hack); }
-
-    // if the pointers are equal, we are done (e.g., String[] elements)
-    __ cmp(sub_klass, super_klass);
-    __ brx(Assembler::equal, true, Assembler::pt, L_success);
-    __ DELAY_SLOT;
-
-    // check the supertype display:
-    __ ld_ptr(sub_klass, super_check_offset, temp); // query the super type
-    __ cmp(super_klass,                      temp); // test the super type
-    __ brx(Assembler::equal, true, Assembler::pt, L_success);
-    __ DELAY_SLOT;
-
-    int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
-                     Klass::secondary_super_cache_offset_in_bytes());
-    __ cmp(super_klass, sc_offset);
-    __ brx(Assembler::notEqual, true, Assembler::pt, L_miss);
-    __ delayed()->nop();
-
+    __ check_klass_subtype_fast_path(sub_klass, super_klass, temp, noreg,
+                                     &L_success, &L_miss, NULL,
+                                     super_check_offset);
+
+    BLOCK_COMMENT("type_check_slow_path:");
     __ save_frame(0);
-    __ mov(sub_klass->after_save(), O1);
-    // mov(super_klass->after_save(), O2); //fill delay slot
-    assert(StubRoutines::Sparc::_partial_subtype_check != NULL, "order of generation");
-    __ call(StubRoutines::Sparc::_partial_subtype_check);
-    __ delayed()->mov(super_klass->after_save(), O2);
+    __ check_klass_subtype_slow_path(sub_klass->after_save(),
+                                     super_klass->after_save(),
+                                     L0, L1, L2, L4,
+                                     NULL, &L_pop_to_miss);
+    __ ba(false, L_success);
+    __ delayed()->restore();
+
+    __ bind(L_pop_to_miss);
     __ restore();
 
-    // Upon return, the condition codes are already set.
-    __ brx(Assembler::equal, true, Assembler::pt, L_success);
-    __ DELAY_SLOT;
-
-#undef DELAY_SLOT
-
     // Fall through on failure!
     __ BIND(L_miss);
   }
@@ -2411,7 +2309,7 @@
     gen_write_ref_array_pre_barrier(O1, O2);
 
 #ifdef ASSERT
-    // We sometimes save a frame (see partial_subtype_check below).
+    // We sometimes save a frame (see generate_type_check below).
     // If this will cause trouble, let's fail now instead of later.
     __ save_frame(0);
     __ restore();
@@ -2455,41 +2353,39 @@
     //   G3, G4, G5 --- current oop, oop.klass, oop.klass.super
     __ align(16);
 
-    __ bind(store_element);
-    // deccc(G1_remain);                // decrement the count (hoisted)
+    __ BIND(store_element);
+    __ deccc(G1_remain);                // decrement the count
     __ store_heap_oop(G3_oop, O1_to, O5_offset); // store the oop
     __ inc(O5_offset, heapOopSize);     // step to next offset
     __ brx(Assembler::zero, true, Assembler::pt, do_card_marks);
     __ delayed()->set(0, O0);           // return -1 on success
 
     // ======== loop entry is here ========
-    __ bind(load_element);
+    __ BIND(load_element);
     __ load_heap_oop(O0_from, O5_offset, G3_oop);  // load the oop
     __ br_null(G3_oop, true, Assembler::pt, store_element);
-    __ delayed()->deccc(G1_remain);     // decrement the count
+    __ delayed()->nop();
 
     __ load_klass(G3_oop, G4_klass); // query the object klass
 
     generate_type_check(G4_klass, O3_ckoff, O4_ckval, G5_super,
                         // branch to this on success:
-                        store_element,
-                        // decrement this on success:
-                        G1_remain);
+                        store_element);
     // ======== end loop ========
 
     // It was a real error; we must depend on the caller to finish the job.
     // Register G1 has number of *remaining* oops, O2 number of *total* oops.
     // Emit GC store barriers for the oops we have copied (O2 minus G1),
     // and report their number to the caller.
-    __ bind(fail);
+    __ BIND(fail);
     __ subcc(O2_count, G1_remain, O2_count);
     __ brx(Assembler::zero, false, Assembler::pt, done);
     __ delayed()->not1(O2_count, O0);   // report (-1^K) to caller
 
-    __ bind(do_card_marks);
+    __ BIND(do_card_marks);
     gen_write_ref_array_post_barrier(O1_to, O2_count, O3);   // store check on O1[0..O2]
 
-    __ bind(done);
+    __ BIND(done);
     inc_counter_np(SharedRuntime::_checkcast_array_copy_ctr, O3, O4);
     __ retl();
     __ delayed()->nop();             // return value in 00
@@ -2940,16 +2836,16 @@
     StubRoutines::_atomic_cmpxchg_ptr_entry  = StubRoutines::_atomic_cmpxchg_entry;
     StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long();
     StubRoutines::_atomic_add_ptr_entry      = StubRoutines::_atomic_add_entry;
-    StubRoutines::_fence_entry               = generate_fence();
 #endif  // COMPILER2 !=> _LP64
-
-    StubRoutines::Sparc::_partial_subtype_check                = generate_partial_subtype_check();
   }
 
 
   void generate_all() {
     // Generates all stubs and initializes the entry points
 
+    // Generate partial_subtype_check first here since its code depends on
+    // UseZeroBaseCompressedOops which is defined after heap initialization.
+    StubRoutines::Sparc::_partial_subtype_check                = generate_partial_subtype_check();
     // These entry points require SharedInfo::stack0 to be set up in non-core builds
     StubRoutines::_throw_AbstractMethodError_entry         = generate_throw_exception("AbstractMethodError throw_exception",          CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError),  false);
     StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError),  false);
--- a/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -87,8 +87,8 @@
   }
   // throw exception
   assert(Interpreter::throw_exception_entry() != NULL, "generate it first");
-  Address thrower(G3_scratch, Interpreter::throw_exception_entry());
-  __ jump_to (thrower);
+  AddressLiteral thrower(Interpreter::throw_exception_entry());
+  __ jump_to(thrower, G3_scratch);
   __ delayed()->nop();
   return entry;
 }
@@ -108,6 +108,24 @@
 }
 
 
+// Arguments are: required type in G5_method_type, and
+// failing object (or NULL) in G3_method_handle.
+address TemplateInterpreterGenerator::generate_WrongMethodType_handler() {
+  address entry = __ pc();
+  // expression stack must be empty before entering the VM if an exception
+  // happened
+  __ empty_expression_stack();
+  // load exception object
+  __ call_VM(Oexception,
+             CAST_FROM_FN_PTR(address,
+                              InterpreterRuntime::throw_WrongMethodTypeException),
+             G5_method_type,    // required
+             G3_method_handle); // actual
+  __ should_not_reach_here();
+  return entry;
+}
+
+
 address TemplateInterpreterGenerator::generate_ArrayIndexOutOfBounds_handler(const char* name) {
   address entry = __ pc();
   // expression stack must be empty before entering the VM if an exception happened
@@ -132,7 +150,8 @@
 }
 
 
-address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) {
+address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, bool unbox) {
+  assert(!unbox, "NYI");//6815692//
   address compiled_entry = __ pc();
   Label cont;
 
@@ -168,8 +187,8 @@
   const Register cache = G3_scratch;
   const Register size  = G1_scratch;
   __ get_cache_and_index_at_bcp(cache, G1_scratch, 1);
-  __ ld_ptr(Address(cache, 0, in_bytes(constantPoolCacheOopDesc::base_offset()) +
-                    in_bytes(ConstantPoolCacheEntry::flags_offset())), size);
+  __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() +
+                   ConstantPoolCacheEntry::flags_offset(), size);
   __ and3(size, 0xFF, size);                   // argument size in words
   __ sll(size, Interpreter::logStackElementSize(), size); // each argument size in bytes
   __ add(Lesp, size, Lesp);                    // pop arguments
@@ -183,9 +202,8 @@
   address entry = __ pc();
   __ get_constant_pool_cache(LcpoolCache); // load LcpoolCache
   { Label L;
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-
-    __ ld_ptr(exception_addr, Gtemp);
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
+    __ ld_ptr(exception_addr, Gtemp);  // Load pending exception.
     __ tst(Gtemp);
     __ brx(Assembler::equal, false, Assembler::pt, L);
     __ delayed()->nop();
@@ -264,7 +282,7 @@
   // Update standard invocation counters
   __ increment_invocation_counter(O0, G3_scratch);
   if (ProfileInterpreter) {  // %%% Merge this into methodDataOop
-    Address interpreter_invocation_counter(Lmethod, 0, in_bytes(methodOopDesc::interpreter_invocation_counter_offset()));
+    Address interpreter_invocation_counter(Lmethod, methodOopDesc::interpreter_invocation_counter_offset());
     __ ld(interpreter_invocation_counter, G3_scratch);
     __ inc(G3_scratch);
     __ st(G3_scratch, interpreter_invocation_counter);
@@ -272,9 +290,9 @@
 
   if (ProfileInterpreter && profile_method != NULL) {
     // Test to see if we should create a method data oop
-    Address profile_limit(G3_scratch, (address)&InvocationCounter::InterpreterProfileLimit);
-    __ sethi(profile_limit);
-    __ ld(profile_limit, G3_scratch);
+    AddressLiteral profile_limit(&InvocationCounter::InterpreterProfileLimit);
+    __ sethi(profile_limit, G3_scratch);
+    __ ld(G3_scratch, profile_limit.low10(), G3_scratch);
     __ cmp(O0, G3_scratch);
     __ br(Assembler::lessUnsigned, false, Assembler::pn, *profile_method_continue);
     __ delayed()->nop();
@@ -283,9 +301,9 @@
     __ test_method_data_pointer(*profile_method);
   }
 
-  Address invocation_limit(G3_scratch, (address)&InvocationCounter::InterpreterInvocationLimit);
-  __ sethi(invocation_limit);
-  __ ld(invocation_limit, G3_scratch);
+  AddressLiteral invocation_limit(&InvocationCounter::InterpreterInvocationLimit);
+  __ sethi(invocation_limit, G3_scratch);
+  __ ld(G3_scratch, invocation_limit.low10(), G3_scratch);
   __ cmp(O0, G3_scratch);
   __ br(Assembler::greaterEqualUnsigned, false, Assembler::pn, *overflow);
   __ delayed()->nop();
@@ -296,8 +314,7 @@
 // ebx - methodOop
 //
 void InterpreterGenerator::lock_method(void) {
-  const Address access_flags      (Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
-  __ ld(access_flags, O0);
+  __ ld(Lmethod, in_bytes(methodOopDesc::access_flags_offset()), O0);  // Load access flags.
 
 #ifdef ASSERT
  { Label ok;
@@ -341,8 +358,7 @@
                                                          Register Rscratch,
                                                          Register Rscratch2) {
   const int page_size = os::vm_page_size();
-  Address saved_exception_pc(G2_thread, 0,
-                             in_bytes(JavaThread::saved_exception_pc_offset()));
+  Address saved_exception_pc(G2_thread, JavaThread::saved_exception_pc_offset());
   Label after_frame_check;
 
   assert_different_registers(Rframe_size, Rscratch, Rscratch2);
@@ -354,7 +370,7 @@
   __ delayed()->nop();
 
   // get the stack base, and in debug, verify it is non-zero
-  __ ld_ptr( G2_thread, in_bytes(Thread::stack_base_offset()), Rscratch );
+  __ ld_ptr( G2_thread, Thread::stack_base_offset(), Rscratch );
 #ifdef ASSERT
   Label base_not_zero;
   __ cmp( Rscratch, G0 );
@@ -366,7 +382,7 @@
 
   // get the stack size, and in debug, verify it is non-zero
   assert( sizeof(size_t) == sizeof(intptr_t), "wrong load size" );
-  __ ld_ptr( G2_thread, in_bytes(Thread::stack_size_offset()), Rscratch2 );
+  __ ld_ptr( G2_thread, Thread::stack_size_offset(), Rscratch2 );
 #ifdef ASSERT
   Label size_not_zero;
   __ cmp( Rscratch2, G0 );
@@ -441,13 +457,14 @@
   // (gri - 2/25/2000)
 
 
-  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 max_stack         (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset()));
+  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());
   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
     frame::memory_parameter_word_sp_offset +   // register save area
     (native_call ? frame::interpreter_frame_extra_outgoing_argument_words : 0);
 
@@ -519,8 +536,8 @@
   if (native_call) {
     __ mov(G0, Lbcp);
   } else {
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::const_offset())), Lbcp );
-    __ add(Address(Lbcp, 0, in_bytes(constMethodOopDesc::codes_offset())), Lbcp );
+    __ ld_ptr(G5_method, methodOopDesc::const_offset(), Lbcp);
+    __ add(Lbcp, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   }
   __ mov( G5_method, Lmethod);                 // set Lmethod
   __ get_constant_pool_cache( LcpoolCache );   // set LcpoolCache
@@ -558,8 +575,8 @@
   // do nothing for empty methods (do not even increment invocation counter)
   if ( UseFastEmptyMethods) {
     // If we need a safepoint check, generate full interpreter entry.
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
-    __ load_contents(sync_state, G3_scratch);
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
+    __ set(sync_state, G3_scratch);
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
     __ br(Assembler::notEqual, false, Assembler::pn, slow_path);
     __ delayed()->nop();
@@ -597,7 +614,7 @@
   if ( UseFastAccessorMethods && !UseCompressedOops ) {
     // Check if we need to reach a safepoint and generate full interpreter
     // frame if so.
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
     __ load_contents(sync_state, G3_scratch);
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
     __ br(Assembler::notEqual, false, Assembler::pn, slow_path);
@@ -612,8 +629,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(G5_method, methodOopDesc::const_offset(), G1_scratch);
+    __ ld(G1_scratch, constMethodOopDesc::codes_offset(), G1_scratch);
 
     // move index @ 2 far left then to the right most two bytes.
     __ sll(G1_scratch, 2*BitsPerByte, G1_scratch);
@@ -621,7 +638,7 @@
                       ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch);
 
     // get constant pool cache
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::constants_offset()), G3_scratch);
+    __ ld_ptr(G5_method, methodOopDesc::constants_offset(), G3_scratch);
     __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch);
 
     // get specific constant pool cache entry
@@ -630,7 +647,7 @@
     // 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();
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::indices_offset()), G1_scratch);
+    __ 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);
     __ cmp(G1_scratch, Bytecodes::_getfield);
@@ -638,8 +655,8 @@
     __ delayed()->nop();
 
     // Get the type and return field offset from the constant pool cache
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::flags_offset()), G1_scratch);
-    __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset()), G3_scratch);
+    __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), G1_scratch);
+    __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), G3_scratch);
 
     Label xreturn_path;
     // Need to differentiate between igetfield, agetfield, bgetfield etc.
@@ -698,7 +715,7 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address Laccess_flags     (Lmethod, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address Laccess_flags(Lmethod, methodOopDesc::access_flags_offset());
 
   __ verify_oop(G5_method);
 
@@ -708,7 +725,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, in_bytes(methodOopDesc::access_flags_offset()), Gtmp1);
+  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -735,10 +752,10 @@
 
   // this slot will be set later, we initialize it to null here just in
   // case we get a GC before the actual value is stored later
-  __ st_ptr(G0, Address(FP, 0, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS));
+  __ st_ptr(G0, FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS);
 
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-      in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   // Since at this point in the method invocation the exception handler
   // would try to exit the monitor of synchronized methods which hasn't
   // been entered yet, we set the thread local variable
@@ -805,12 +822,13 @@
 
   // get signature handler
   { Label L;
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    Address signature_handler(Lmethod, methodOopDesc::signature_handler_offset());
+    __ ld_ptr(signature_handler, G3_scratch);
     __ tst(G3_scratch);
     __ brx(Assembler::notZero, false, Assembler::pt, L);
     __ delayed()->nop();
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), Lmethod);
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    __ ld_ptr(signature_handler, G3_scratch);
     __ bind(L);
   }
 
@@ -823,10 +841,9 @@
   // Flush the method pointer to the register save area
   __ st_ptr(Lmethod, SP, (Lmethod->sp_offset_in_saved_window() * wordSize) + STACK_BIAS);
   __ mov(Llocals, O1);
+
   // calculate where the mirror handle body is allocated in the interpreter frame:
-
-  Address mirror(FP, 0, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS);
-  __ add(mirror, O2);
+  __ add(FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS, O2);
 
   // Calculate current frame size
   __ sub(SP, FP, O3);         // Calculate negative of current frame size
@@ -863,14 +880,13 @@
     __ ld(Laccess_flags, O0);
     __ btst(JVM_ACC_STATIC, O0);
     __ 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(Lmethod, 0, in_bytes(methodOopDesc::native_function_offset())), O0);
+    // 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);
     // for static methods insert the mirror argument
     const int mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes();
 
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc:: constants_offset())), O1);
-    __ ld_ptr(Address(O1, 0, constantPoolOopDesc::pool_holder_offset_in_bytes()), O1);
+    __ ld_ptr(Lmethod, methodOopDesc:: constants_offset(), O1);
+    __ ld_ptr(O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1);
     __ ld_ptr(O1, mirror_offset, O1);
 #ifdef ASSERT
     if (!PrintSignatureHandlers)  // do not dirty the output with this
@@ -925,15 +941,13 @@
   __ flush_windows();
 
   // mark windows as flushed
-  Address flags(G2_thread,
-                0,
-                in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+  Address flags(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
   __ set(JavaFrameAnchor::flushed, G3_scratch);
   __ st(G3_scratch, flags);
 
   // Transition from _thread_in_Java to _thread_in_native. We are already safepoint ready.
 
-  Address thread_state(G2_thread, 0, in_bytes(JavaThread::thread_state_offset()));
+  Address thread_state(G2_thread, JavaThread::thread_state_offset());
 #ifdef ASSERT
   { Label L;
     __ ld(thread_state, G3_scratch);
@@ -963,7 +977,7 @@
   // Block, if necessary, before resuming in _thread_in_Java state.
   // In order for GC to work, don't clear the last_Java_sp until after blocking.
   { Label no_block;
-    Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+    AddressLiteral sync_state(SafepointSynchronize::address_of_state());
 
     // Switch thread to "native transition" state before reading the synchronization state.
     // This additional state is necessary because reading and testing the synchronization
@@ -990,10 +1004,8 @@
     __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
 
     Label L;
-    Address suspend_state(G2_thread, 0, in_bytes(JavaThread::suspend_flags_offset()));
     __ br(Assembler::notEqual, false, Assembler::pn, L);
-    __ delayed()->
-      ld(suspend_state, G3_scratch);
+    __ delayed()->ld(G2_thread, JavaThread::suspend_flags_offset(), G3_scratch);
     __ cmp(G3_scratch, 0);
     __ br(Assembler::equal, false, Assembler::pt, no_block);
     __ delayed()->nop();
@@ -1035,7 +1047,7 @@
   __ st(G3_scratch, thread_state);
 
   // reset handle block
-  __ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), G3_scratch);
+  __ ld_ptr(G2_thread, JavaThread::active_handles_offset(), G3_scratch);
   __ st_ptr(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
 
   // If we have an oop result store it where it will be safe for any further gc
@@ -1064,8 +1076,7 @@
 
   // handle exceptions (exception handling will handle unlocking!)
   { Label L;
-    Address exception_addr (G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
-
+    Address exception_addr(G2_thread, Thread::pending_exception_offset());
     __ ld_ptr(exception_addr, Gtemp);
     __ tst(Gtemp);
     __ brx(Assembler::equal, false, Assembler::pt, L);
@@ -1151,11 +1162,11 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  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, methodOopDesc::size_of_parameters_offset());
+  const Address size_of_locals    (G5_method, methodOopDesc::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, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address access_flags      (Lmethod,   methodOopDesc::access_flags_offset());
 
   __ verify_oop(G5_method);
 
@@ -1165,7 +1176,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, in_bytes(methodOopDesc::access_flags_offset()), Gtmp1);
+  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -1220,8 +1231,8 @@
   __ brx( Assembler::lessEqualUnsigned, true, Assembler::pt, clear_loop );
   __ delayed()->st_ptr( init_value, O2, 0 );
 
-  const Address do_not_unlock_if_synchronized(G2_thread, 0,
-        in_bytes(JavaThread::do_not_unlock_if_synchronized_offset()));
+  const Address do_not_unlock_if_synchronized(G2_thread,
+    JavaThread::do_not_unlock_if_synchronized_offset());
   // Since at this point in the method invocation the exception handler
   // would try to exit the monitor of synchronized methods which hasn't
   // been entered yet, we set the thread local variable
@@ -1447,6 +1458,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()
                    + rounded_vm_local_words
                    + frame::memory_parameter_word_sp_offset), WordsPerLong)
                    // already rounded
@@ -1696,7 +1708,7 @@
   //
 
   Interpreter::_remove_activation_preserving_args_entry = __ pc();
-  Address popframe_condition_addr (G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
+  Address popframe_condition_addr(G2_thread, JavaThread::popframe_condition_offset());
   // Set the popframe_processing bit in popframe_condition indicating that we are
   // currently handling popframe, so that call_VMs that may happen later do not trigger new
   // popframe handling cycles.
@@ -1738,7 +1750,7 @@
     __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, Deoptimization::popframe_preserve_args), G2_thread, Gtmp1, Gtmp2);
     // Inform deoptimization that it is responsible for restoring these arguments
     __ set(JavaThread::popframe_force_deopt_reexecution_bit, Gtmp1);
-    Address popframe_condition_addr(G2_thread, 0, in_bytes(JavaThread::popframe_condition_offset()));
+    Address popframe_condition_addr(G2_thread, JavaThread::popframe_condition_offset());
     __ st(Gtmp1, popframe_condition_addr);
 
     // Return from the current method
@@ -1787,7 +1799,7 @@
   __ verify_oop(Oexception);
 
     const int return_reg_adjustment = frame::pc_return_offset;
-  Address issuing_pc_addr(I7, 0, return_reg_adjustment);
+  Address issuing_pc_addr(I7, return_reg_adjustment);
 
   // We are done with this activation frame; find out where to go next.
   // The continuation point will be an exception handler, which expects
@@ -1833,8 +1845,8 @@
   __ empty_expression_stack();
   __ load_earlyret_value(state);
 
-  __ ld_ptr(Address(G2_thread, 0, in_bytes(JavaThread::jvmti_thread_state_offset())), G3_scratch);
-  Address cond_addr(G3_scratch, 0, in_bytes(JvmtiThreadState::earlyret_state_offset()));
+  __ ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), G3_scratch);
+  Address cond_addr(G3_scratch, JvmtiThreadState::earlyret_state_offset());
 
   // Clear the earlyret state
   __ stw(G0 /* JvmtiThreadState::earlyret_inactive */, cond_addr);
@@ -1901,43 +1913,33 @@
 // helpers for generate_and_dispatch
 
 void TemplateInterpreterGenerator::count_bytecode() {
-  Address c(G3_scratch, (address)&BytecodeCounter::_counter_value);
-  __ load_contents(c, G4_scratch);
-  __ inc(G4_scratch);
-  __ st(G4_scratch, c);
+  __ inc_counter(&BytecodeCounter::_counter_value, G3_scratch, G4_scratch);
 }
 
 
 void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
-  Address bucket( G3_scratch, (address) &BytecodeHistogram::_counters[t->bytecode()] );
-  __ load_contents(bucket, G4_scratch);
-  __ inc(G4_scratch);
-  __ st(G4_scratch, bucket);
+  __ inc_counter(&BytecodeHistogram::_counters[t->bytecode()], G3_scratch, G4_scratch);
 }
 
 
 void TemplateInterpreterGenerator::histogram_bytecode_pair(Template* t) {
-  address index_addr      = (address)&BytecodePairHistogram::_index;
-  Address index(G3_scratch, index_addr);
-
-  address counters_addr   = (address)&BytecodePairHistogram::_counters;
-  Address counters(G3_scratch, counters_addr);
+  AddressLiteral index   (&BytecodePairHistogram::_index);
+  AddressLiteral counters((address) &BytecodePairHistogram::_counters);
 
   // get index, shift out old bytecode, bring in new bytecode, and store it
   // _index = (_index >> log2_number_of_codes) |
   //          (bytecode << log2_number_of_codes);
 
-
-  __ load_contents( index,      G4_scratch );
+  __ load_contents(index, G4_scratch);
   __ srl( G4_scratch, BytecodePairHistogram::log2_number_of_codes, G4_scratch );
   __ set( ((int)t->bytecode()) << BytecodePairHistogram::log2_number_of_codes,  G3_scratch );
   __ or3( G3_scratch,  G4_scratch, G4_scratch );
-  __ store_contents( G4_scratch, index );
+  __ store_contents(G4_scratch, index, G3_scratch);
 
   // bump bucket contents
   // _counters[_index] ++;
 
-  __ load_address( counters );  // loads into G3_scratch
+  __ set(counters, G3_scratch);                       // loads into G3_scratch
   __ sll( G4_scratch, LogBytesPerWord, G4_scratch );  // Index is word address
   __ add (G3_scratch, G4_scratch, G3_scratch);        // Add in index
   __ ld (G3_scratch, 0, G4_scratch);
@@ -1958,9 +1960,9 @@
 
 
 void TemplateInterpreterGenerator::stop_interpreter_at() {
-  Address counter(G3_scratch , (address)&BytecodeCounter::_counter_value);
-  __ load_contents    (counter, G3_scratch );
-  Address stop_at(G4_scratch, (address)&StopInterpreterAt);
+  AddressLiteral counter(&BytecodeCounter::_counter_value);
+  __ load_contents(counter, G3_scratch);
+  AddressLiteral stop_at(&StopInterpreterAt);
   __ load_ptr_contents(stop_at, G4_scratch);
   __ cmp(G3_scratch, G4_scratch);
   __ breakpoint_trap(Assembler::equal);
--- a/src/cpu/sparc/vm/templateTable_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/templateTable_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -131,7 +131,7 @@
 
 Address TemplateTable::at_bcp(int offset) {
   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
-  return Address( Lbcp, 0, offset);
+  return Address(Lbcp, offset);
 }
 
 
@@ -217,9 +217,9 @@
    case 1:  p = &one;   break;
    case 2:  p = &two;   break;
   }
-  Address a(G3_scratch, (address)p);
-  __ sethi(a);
-  __ ldf(FloatRegisterImpl::S, a, Ftos_f);
+  AddressLiteral a(p);
+  __ sethi(a, G3_scratch);
+  __ ldf(FloatRegisterImpl::S, G3_scratch, a.low10(), Ftos_f);
 }
 
 
@@ -232,9 +232,9 @@
    case 0:  p = &zero;  break;
    case 1:  p = &one;   break;
   }
-  Address a(G3_scratch, (address)p);
-  __ sethi(a);
-  __ ldf(FloatRegisterImpl::D, a, Ftos_d);
+  AddressLiteral a(p);
+  __ sethi(a, G3_scratch);
+  __ ldf(FloatRegisterImpl::D, G3_scratch, a.low10(), Ftos_d);
 }
 
 
@@ -1545,10 +1545,10 @@
 
   // Handle all the JSR stuff here, then exit.
   // It's much shorter and cleaner than intermingling with the
-  // non-JSR normal-branch stuff occuring below.
+  // non-JSR normal-branch stuff occurring below.
   if( is_jsr ) {
     // compute return address as bci in Otos_i
-    __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+    __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
     __ sub(Lbcp, G3_scratch, G3_scratch);
     __ sub(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()) - (is_wide ? 5 : 3), Otos_i);
 
@@ -1665,7 +1665,7 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
   __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
@@ -1680,7 +1680,7 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch);
+  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
   __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
@@ -1968,8 +1968,8 @@
   Label resolved;
 
   __ get_cache_and_index_at_bcp(Rcache, index, 1);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() +
-                                        ConstantPoolCacheEntry::indices_offset())), Lbyte_code);
+  __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() +
+                    ConstantPoolCacheEntry::indices_offset(), Lbyte_code);
 
   __ srl(  Lbyte_code, shift_count, Lbyte_code );
   __ and3( Lbyte_code,        0xFF, Lbyte_code );
@@ -2029,11 +2029,11 @@
     resolve_cache_and_index(byte_no, Rcache, Rscratch);
   }
 
-  __ ld_ptr(Address(Rcache, 0, method_offset), Rmethod);
+  __ ld_ptr(Rcache, method_offset, Rmethod);
   if (Ritable_index != noreg) {
-    __ ld_ptr(Address(Rcache, 0, index_offset), Ritable_index);
+    __ ld_ptr(Rcache, index_offset, Ritable_index);
   }
-  __ ld_ptr(Address(Rcache, 0, flags_offset),  Rflags);
+  __ ld_ptr(Rcache, flags_offset, Rflags);
 }
 
 // The Rcache register must be set before call
@@ -2047,13 +2047,10 @@
 
   ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::flags_offset())), Rflags);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ 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(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f1_offset())), Robj);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f1_offset(), Robj);
   }
 }
 
@@ -2070,9 +2067,7 @@
     // the time to call into the VM.
     Label Label1;
     assert_different_registers(Rcache, index, G1_scratch);
-    Address get_field_access_count_addr(G1_scratch,
-                                        (address)JvmtiExport::get_field_access_count_addr(),
-                                        relocInfo::none);
+    AddressLiteral get_field_access_count_addr(JvmtiExport::get_field_access_count_addr());
     __ load_contents(get_field_access_count_addr, G1_scratch);
     __ tst(G1_scratch);
     __ br(Assembler::zero, false, Assembler::pt, Label1);
@@ -2293,7 +2288,7 @@
   __ get_cache_and_index_at_bcp(Rcache, index, 1);
   jvmti_post_field_access(Rcache, index, /*is_static*/false, /*has_tos*/true);
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
 
   __ null_check(Otos_i);
   __ verify_oop(Otos_i);
@@ -2304,7 +2299,7 @@
     Assembler::Membar_mask_bits(Assembler::LoadLoad | Assembler::LoadStore);
   if (__ membar_has_effect(membar_bits)) {
     // Get volatile flag
-    __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset())), Rflags);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Rflags);
     __ set((1 << ConstantPoolCacheEntry::volatileField), Lscratch);
   }
 
@@ -2355,7 +2350,7 @@
     // Check to see if a field modification watch has been set before we take
     // the time to call into the VM.
     Label done;
-    Address get_field_modification_count_addr(G4_scratch, (address)JvmtiExport::get_field_modification_count_addr(), relocInfo::none);
+    AddressLiteral get_field_modification_count_addr(JvmtiExport::get_field_modification_count_addr());
     __ load_contents(get_field_modification_count_addr, G4_scratch);
     __ tst(G4_scratch);
     __ br(Assembler::zero, false, Assembler::pt, done);
@@ -2408,9 +2403,7 @@
     // the time to call into the VM.
     Label Label1;
     assert_different_registers(Rcache, index, G1_scratch);
-    Address get_field_modification_count_addr(G1_scratch,
-                                              (address)JvmtiExport::get_field_modification_count_addr(),
-                                              relocInfo::none);
+    AddressLiteral get_field_modification_count_addr(JvmtiExport::get_field_modification_count_addr());
     __ load_contents(get_field_modification_count_addr, G1_scratch);
     __ tst(G1_scratch);
     __ br(Assembler::zero, false, Assembler::pt, Label1);
@@ -2433,7 +2426,7 @@
       // the type to determine where the object is.
 
       Label two_word, valsizeknown;
-      __ ld_ptr(Address(G1_scratch, 0, in_bytes(cp_base_offset + ConstantPoolCacheEntry::flags_offset())), Rflags);
+      __ ld_ptr(G1_scratch, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
       __ mov(Lesp, G4_scratch);
       __ srl(Rflags, ConstantPoolCacheEntry::tosBits, Rflags);
       // Make sure we don't need to mask Rflags for tosBits after the above shift
@@ -2689,8 +2682,7 @@
 
   Label notVolatile, checkVolatile, exit;
   if (__ membar_has_effect(read_bits) || __ membar_has_effect(write_bits)) {
-    __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::flags_offset())), Rflags);
+    __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
     __ set((1 << ConstantPoolCacheEntry::volatileField), Lscratch);
     __ and3(Rflags, Lscratch, Lscratch);
     if (__ membar_has_effect(read_bits)) {
@@ -2702,8 +2694,7 @@
     }
   }
 
-  __ ld_ptr(Address(Rcache, 0, in_bytes(cp_base_offset +
-                             ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
   pop_and_check_object(Rclass);
 
   switch (bytecode()) {
@@ -2755,7 +2746,7 @@
 
   // access constant pool cache  (is resolved)
   __ get_cache_and_index_at_bcp(Rcache, G4_scratch, 2);
-  __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset())), Roffset);
+  __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset(), Roffset);
   __ add(Lbcp, 1, Lbcp);       // needed to report exception at the correct bcp
 
   __ verify_oop(Rreceiver);
@@ -2775,7 +2766,7 @@
   if (__ membar_has_effect(membar_bits)) {
 
     // Get is_volatile value in Rflags and check if membar is needed
-    __ ld_ptr(Address(Rcache, 0, in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset())), Rflags);
+    __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset(), Rflags);
 
     // Test volatile
     Label notVolatile;
@@ -2853,8 +2844,8 @@
   __ verify_oop(O0);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2886,7 +2877,7 @@
   __ verify_oop(G5_method);
 
   // Load receiver from stack slot
-  __ lduh(Address(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())), G4_scratch);
+  __ lduh(G5_method, in_bytes(methodOopDesc::size_of_parameters_offset()), G4_scratch);
   __ load_receiver(G4_scratch, O0);
 
   // receiver NULL check
@@ -2895,8 +2886,8 @@
   __ profile_final_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2920,7 +2911,7 @@
 
   __ verify_oop(G5_method);
 
-  __ lduh(Address(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())), G4_scratch);
+  __ lduh(G5_method, in_bytes(methodOopDesc::size_of_parameters_offset()), G4_scratch);
   __ load_receiver(G4_scratch, O0);
 
   // receiver NULL check
@@ -2929,8 +2920,8 @@
   __ profile_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -2956,8 +2947,8 @@
   __ profile_call(O4);
 
   // get return address
-  Address table(Rtemp, (address)Interpreter::return_3_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_3_addrs_by_index_table());
+  __ set(table, Rtemp);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -3021,8 +3012,8 @@
   __ mov(Rflags, Rret);
 
   // get return address
-  Address table(Rscratch, (address)Interpreter::return_5_addrs_by_index_table());
-  __ load_address(table);
+  AddressLiteral table(Interpreter::return_5_addrs_by_index_table());
+  __ set(table, Rscratch);
   __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret);          // get return type
   // Make sure we don't need to mask Rret for tosBits after the above shift
   ConstantPoolCacheEntry::verify_tosBits();
@@ -3059,7 +3050,7 @@
   Label search;
   Register Rtemp = Rflags;
 
-  __ ld(Address(RklassOop, 0, instanceKlass::vtable_length_offset() * wordSize), Rtemp);
+  __ ld(RklassOop, instanceKlass::vtable_length_offset() * wordSize, Rtemp);
   if (align_object_offset(1) > 1) {
     __ round_to(Rtemp, align_object_offset(1));
   }
@@ -3079,7 +3070,7 @@
     Label ok;
 
     // Check that entry is non-null.  Null entries are probably a bytecode
-    // problem.  If the interface isn't implemented by the reciever class,
+    // problem.  If the interface isn't implemented by the receiver class,
     // the VM should throw IncompatibleClassChangeError.  linkResolver checks
     // this too but that's only if the entry isn't already resolved, so we
     // need to check again.
@@ -3125,6 +3116,24 @@
 }
 
 
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  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;
+  }
+
+  __ stop("invokedynamic NYI");//6815692//
+}
+
+
 //----------------------------------------------------------------------------------------------------
 // Allocation
 
@@ -3624,9 +3633,9 @@
   transition(vtos, vtos);
   __ ldub(Lbcp, 1, G3_scratch);// get next bc
   __ sll(G3_scratch, LogBytesPerWord, G3_scratch);
-  Address ep(G4_scratch, (address)Interpreter::_wentry_point);
-  __ load_address(ep);
-  __ ld_ptr(ep.base(), G3_scratch, G3_scratch);
+  AddressLiteral ep(Interpreter::_wentry_point);
+  __ set(ep, G4_scratch);
+  __ ld_ptr(G4_scratch, G3_scratch, G3_scratch);
   __ jmp(G3_scratch, G0);
   __ delayed()->nop();
   // Note: the Lbcp increment step is part of the individual wide bytecode implementations
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +62,7 @@
   if (is_niagara1()) {
     // Indirect branch is the same cost as direct
     if (FLAG_IS_DEFAULT(UseInlineCaches)) {
-      UseInlineCaches         = false;
+      FLAG_SET_DEFAULT(UseInlineCaches, false);
     }
 #ifdef _LP64
     // Single issue niagara1 is slower for CompressedOops
@@ -72,33 +72,50 @@
         FLAG_SET_ERGO(bool, UseCompressedOops, false);
       }
     }
+    // 32-bit oops don't make sense for the 64-bit VM on sparc
+    // since the 32-bit VM has the same registers and smaller objects.
+    Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
 #endif // _LP64
 #ifdef COMPILER2
     // Indirect branch is the same cost as direct
     if (FLAG_IS_DEFAULT(UseJumpTables)) {
-      UseJumpTables           = true;
+      FLAG_SET_DEFAULT(UseJumpTables, true);
     }
     // Single-issue, so entry and loop tops are
     // aligned on a single instruction boundary
     if (FLAG_IS_DEFAULT(InteriorEntryAlignment)) {
-      InteriorEntryAlignment  = 4;
+      FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
     }
     if (FLAG_IS_DEFAULT(OptoLoopAlignment)) {
-      OptoLoopAlignment       = 4;
+      FLAG_SET_DEFAULT(OptoLoopAlignment, 4);
+    }
+    if (is_niagara1_plus() && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+      // Use smaller prefetch distance on N2
+      FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
     }
 #endif
   }
 
+  // Use hardware population count instruction if available.
+  if (has_hardware_popc()) {
+    if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
+      FLAG_SET_DEFAULT(UsePopCountInstruction, true);
+    }
+  }
+
   char buf[512];
-  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s",
+  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s",
                (has_v8() ? ", has_v8" : ""),
                (has_v9() ? ", has_v9" : ""),
+               (has_hardware_popc() ? ", popc" : ""),
                (has_vis1() ? ", has_vis1" : ""),
                (has_vis2() ? ", has_vis2" : ""),
                (is_ultra3() ? ", is_ultra3" : ""),
                (is_sun4v() ? ", is_sun4v" : ""),
                (is_niagara1() ? ", is_niagara1" : ""),
-               (!has_hardware_int_muldiv() ? ", no-muldiv" : ""),
+               (is_niagara1_plus() ? ", is_niagara1_plus" : ""),
+               (!has_hardware_mul32() ? ", no-mul32" : ""),
+               (!has_hardware_div32() ? ", no-div32" : ""),
                (!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
 
   // buf is started with ", " or is empty
--- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,34 +25,38 @@
 class VM_Version: public Abstract_VM_Version {
 protected:
   enum Feature_Flag {
-    v8_instructions     = 0,
-    hardware_int_muldiv = 1,
-    hardware_fsmuld     = 2,
-    v9_instructions     = 3,
-    vis1_instructions   = 4,
-    vis2_instructions   = 5,
-    sun4v_instructions  = 6
+    v8_instructions    = 0,
+    hardware_mul32     = 1,
+    hardware_div32     = 2,
+    hardware_fsmuld    = 3,
+    hardware_popc      = 4,
+    v9_instructions    = 5,
+    vis1_instructions  = 6,
+    vis2_instructions  = 7,
+    sun4v_instructions = 8
   };
 
   enum Feature_Flag_Set {
-    unknown_m             = 0,
-    all_features_m        = -1,
+    unknown_m           = 0,
+    all_features_m      = -1,
 
-    v8_instructions_m     = 1 << v8_instructions,
-    hardware_int_muldiv_m = 1 << hardware_int_muldiv,
-    hardware_fsmuld_m     = 1 << hardware_fsmuld,
-    v9_instructions_m     = 1 << v9_instructions,
-    vis1_instructions_m   = 1 << vis1_instructions,
-    vis2_instructions_m   = 1 << vis2_instructions,
-    sun4v_m               = 1 << sun4v_instructions,
+    v8_instructions_m   = 1 << v8_instructions,
+    hardware_mul32_m    = 1 << hardware_mul32,
+    hardware_div32_m    = 1 << hardware_div32,
+    hardware_fsmuld_m   = 1 << hardware_fsmuld,
+    hardware_popc_m     = 1 << hardware_popc,
+    v9_instructions_m   = 1 << v9_instructions,
+    vis1_instructions_m = 1 << vis1_instructions,
+    vis2_instructions_m = 1 << vis2_instructions,
+    sun4v_m             = 1 << sun4v_instructions,
 
-    generic_v8_m          = v8_instructions_m | hardware_int_muldiv_m | hardware_fsmuld_m,
-    generic_v9_m          = generic_v8_m | v9_instructions_m | vis1_instructions_m,
-    ultra3_m              = generic_v9_m | vis2_instructions_m,
+    generic_v8_m        = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m,
+    generic_v9_m        = generic_v8_m | v9_instructions_m,
+    ultra3_m            = generic_v9_m | vis1_instructions_m | vis2_instructions_m,
 
     // Temporary until we have something more accurate
-    niagara1_unique_m     = sun4v_m,
-    niagara1_m            = generic_v9_m | niagara1_unique_m
+    niagara1_unique_m   = sun4v_m,
+    niagara1_m          = generic_v9_m | niagara1_unique_m
   };
 
   static int  _features;
@@ -62,7 +66,7 @@
   static int  determine_features();
   static int  platform_features(int features);
 
-  static bool is_niagara1(int features) { return (features & niagara1_m) == niagara1_m; }
+  static bool is_niagara1(int features) { return (features & sun4v_m) != 0; }
 
   static int maximum_niagara1_processor_count() { return 32; }
   // Returns true if the platform is in the niagara line and
@@ -76,8 +80,10 @@
   // Instruction support
   static bool has_v8()                  { return (_features & v8_instructions_m) != 0; }
   static bool has_v9()                  { return (_features & v9_instructions_m) != 0; }
-  static bool has_hardware_int_muldiv() { return (_features & hardware_int_muldiv_m) != 0; }
+  static bool has_hardware_mul32()      { return (_features & hardware_mul32_m) != 0; }
+  static bool has_hardware_div32()      { return (_features & hardware_div32_m) != 0; }
   static bool has_hardware_fsmuld()     { return (_features & hardware_fsmuld_m) != 0; }
+  static bool has_hardware_popc()       { return (_features & hardware_popc_m) != 0; }
   static bool has_vis1()                { return (_features & vis1_instructions_m) != 0; }
   static bool has_vis2()                { return (_features & vis2_instructions_m) != 0; }
 
--- a/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 +48,7 @@
 
 #ifndef PRODUCT
   if (CountCompiledCalls) {
-    Address ctr(G5, SharedRuntime::nof_megamorphic_calls_addr());
-    __ sethi(ctr);
-    __ ld(ctr, G3_scratch);
-    __ inc(G3_scratch);
-    __ st(G3_scratch, ctr);
+    __ inc_counter(SharedRuntime::nof_megamorphic_calls_addr(), G5, G3_scratch);
   }
 #endif /* PRODUCT */
 
@@ -106,6 +102,18 @@
   __ delayed()->nop();
 
   masm->flush();
+
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("vtable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  vtable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
+  guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 2*BytesPerInstWord;  // 32-bit offset is this much larger than a 13-bit one
+  assert(vtable_index > 10 || __ pc() + slop <= s->code_end(), "room for sethi;add");
+
   s->set_exception_points(npe_addr, ame_addr);
   return s;
 }
@@ -113,9 +121,9 @@
 
 // NOTE:  %%%% if any change is made to this stub make sure that the function
 //             pd_code_size_limit is changed to ensure the correct size for VtableStub
-VtableStub* VtableStubs::create_itable_stub(int vtable_index) {
+VtableStub* VtableStubs::create_itable_stub(int itable_index) {
   const int sparc_code_length = VtableStub::pd_code_size_limit(false);
-  VtableStub* s = new(sparc_code_length) VtableStub(false, vtable_index);
+  VtableStub* s = new(sparc_code_length) VtableStub(false, itable_index);
   ResourceMark rm;
   CodeBuffer cb(s->entry_point(), sparc_code_length);
   MacroAssembler* masm = new MacroAssembler(&cb);
@@ -139,75 +147,38 @@
   // are passed in the %o registers.  Instead, longs are passed in G1 and G4
   // and so those registers are not available here.
   __ save(SP,-frame::register_save_words*wordSize,SP);
-  Register I0_receiver = I0;    // Location of receiver after save
 
 #ifndef PRODUCT
   if (CountCompiledCalls) {
-    Address ctr(L0, SharedRuntime::nof_megamorphic_calls_addr());
-    __ sethi(ctr);
-    __ ld(ctr, L1);
-    __ inc(L1);
-    __ st(L1, ctr);
+    __ inc_counter(SharedRuntime::nof_megamorphic_calls_addr(), L0, L1);
   }
 #endif /* PRODUCT */
 
-  // load start of itable entries into L0 register
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
-  __ ld(Address(G3_klassOop, 0, instanceKlass::vtable_length_offset() * wordSize), L0);
-
-  // %%% Could store the aligned, prescaled offset in the klassoop.
-  __ sll(L0, exact_log2(vtableEntry::size() * wordSize), L0);
-  // see code for instanceKlass::start_of_itable!
-  const int vtable_alignment = align_object_offset(1);
-  assert(vtable_alignment == 1 || vtable_alignment == 2, "");
-  const int odd_bit = vtableEntry::size() * wordSize;
-  if (vtable_alignment == 2) {
-    __ and3(L0, odd_bit, L1);   // isolate the odd bit
-  }
-  __ add(G3_klassOop, L0, L0);
-  if (vtable_alignment == 2) {
-    __ add(L0, L1, L0);         // double the odd bit, to align up
-  }
+  Label throw_icce;
 
-  // Loop over all itable entries until desired interfaceOop (G5_interface) found
-  __ bind(search);
-
-  // %%%% Could load both offset and interface in one ldx, if they were
-  // in the opposite order.  This would save a load.
-  __ ld_ptr(L0, base + itableOffsetEntry::interface_offset_in_bytes(), L1);
-
-  // If the entry is NULL then we've reached the end of the table
-  // without finding the expected interface, so throw an exception
-  Label throw_icce;
-  __ bpr(Assembler::rc_z, false, Assembler::pn, L1, throw_icce);
-  __ delayed()->cmp(G5_interface, L1);
-  __ brx(Assembler::notEqual, true, Assembler::pn, search);
-  __ delayed()->add(L0, itableOffsetEntry::size() * wordSize, L0);
-
-  // entry found and L0 points to it, move offset of vtable for interface into L0
-  __ ld(L0, base + itableOffsetEntry::offset_offset_in_bytes(), L0);
-
-  // Compute itableMethodEntry and get methodOop(G5_method) and entrypoint(L0) for compiler
-  const int method_offset = (itableMethodEntry::size() * wordSize * vtable_index) + itableMethodEntry::method_offset_in_bytes();
-  __ add(G3_klassOop, L0, L1);
-  __ ld_ptr(L1, method_offset, G5_method);
+  Register L5_method = L5;
+  __ lookup_interface_method(// inputs: rec. class, interface, itable index
+                             G3_klassOop, G5_interface, itable_index,
+                             // outputs: method, scan temp. reg
+                             L5_method, L2, L3,
+                             throw_icce);
 
 #ifndef PRODUCT
   if (DebugVtables) {
     Label L01;
-    __ ld_ptr(L1, method_offset, G5_method);
-    __ bpr(Assembler::rc_nz, false, Assembler::pt, G5_method, L01);
+    __ bpr(Assembler::rc_nz, false, Assembler::pt, L5_method, L01);
     __ delayed()->nop();
     __ stop("methodOop is null");
     __ bind(L01);
-    __ verify_oop(G5_method);
+    __ verify_oop(L5_method);
   }
 #endif
 
   // If the following load is through a NULL pointer, we'll take an OS
   // exception that should translate into an AbstractMethodError.  We need the
   // window count to be correct at that time.
-  __ restore();                 // Restore registers BEFORE the AME point
+  __ restore(L5_method, 0, G5_method);
+  // 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);
@@ -219,13 +190,22 @@
   __ delayed()->nop();
 
   __ bind(throw_icce);
-  Address icce(G3_scratch, StubRoutines::throw_IncompatibleClassChangeError_entry());
-  __ jump_to(icce, 0);
+  AddressLiteral icce(StubRoutines::throw_IncompatibleClassChangeError_entry());
+  __ jump_to(icce, G3_scratch);
   __ delayed()->restore();
 
   masm->flush();
 
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("itable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  itable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
   guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 2*BytesPerInstWord;  // 32-bit offset is this much larger than a 13-bit one
+  assert(itable_index > 10 || __ pc() + slop <= s->code_end(), "room for sethi;add");
 
   s->set_exception_points(npe_addr, ame_addr);
   return s;
@@ -239,17 +219,62 @@
     if (is_vtable_stub) {
       // ld;ld;ld,jmp,nop
       const int basic = 5*BytesPerInstWord +
-                        // shift;add for load_klass
-                        (UseCompressedOops ? 2*BytesPerInstWord : 0);
+                        // shift;add for load_klass (only shift with zero heap based)
+                        (UseCompressedOops ?
+                         ((Universe::narrow_oop_base() == NULL) ? BytesPerInstWord : 2*BytesPerInstWord) : 0);
       return basic + slop;
     } else {
-      // save, ld, ld, sll, and, add, add, ld, cmp, br, add, ld, add, ld, ld, jmp, restore, sethi, jmpl, restore
-      const int basic = (20 LP64_ONLY(+ 6)) * BytesPerInstWord +
-                        // shift;add for load_klass
-                        (UseCompressedOops ? 2*BytesPerInstWord : 0);
+      const int basic = (28 LP64_ONLY(+ 6)) * BytesPerInstWord +
+                        // shift;add for load_klass (only shift with zero heap based)
+                        (UseCompressedOops ?
+                         ((Universe::narrow_oop_base() == NULL) ? BytesPerInstWord : 2*BytesPerInstWord) : 0);
       return (basic + slop);
     }
   }
+
+  // In order to tune these parameters, run the JVM with VM options
+  // +PrintMiscellaneous and +WizardMode to see information about
+  // actual itable stubs.  Look for lines like this:
+  //   itable #1 at 0x5551212[116] left over: 8
+  // Reduce the constants so that the "left over" number is 8
+  // Do not aim at a left-over number of zero, because a very
+  // large vtable or itable offset (> 4K) will require an extra
+  // sethi/or pair of instructions.
+  //
+  // The JVM98 app. _202_jess has a megamorphic interface call.
+  // The itable code looks like this:
+  // Decoding VtableStub itbl[1]@16
+  //   ld  [ %o0 + 4 ], %g3
+  //   save  %sp, -64, %sp
+  //   ld  [ %g3 + 0xe8 ], %l2
+  //   sll  %l2, 2, %l2
+  //   add  %l2, 0x134, %l2
+  //   and  %l2, -8, %l2        ! NOT_LP64 only
+  //   add  %g3, %l2, %l2
+  //   add  %g3, 4, %g3
+  //   ld  [ %l2 ], %l5
+  //   brz,pn   %l5, throw_icce
+  //   cmp  %l5, %g5
+  //   be  %icc, success
+  //   add  %l2, 8, %l2
+  // loop:
+  //   ld  [ %l2 ], %l5
+  //   brz,pn   %l5, throw_icce
+  //   cmp  %l5, %g5
+  //   bne,pn   %icc, loop
+  //   add  %l2, 8, %l2
+  // success:
+  //   ld  [ %l2 + -4 ], %l2
+  //   ld  [ %g3 + %l2 ], %l5
+  //   restore  %l5, 0, %g5
+  //   ld  [ %g5 + 0x44 ], %g3
+  //   jmp  %g3
+  //   nop
+  // throw_icce:
+  //   sethi  %hi(throw_ICCE_entry), %g3
+  //   ! 5 more instructions here, LP64_ONLY
+  //   jmp  %g3 + %lo(throw_ICCE_entry)
+  //   restore
 }
 
 
--- a/src/cpu/x86/vm/assembler_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/assembler_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -129,13 +129,19 @@
 // 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) {
+Address Address::make_raw(int base, int index, int scale, int disp, bool disp_is_oop) {
+  RelocationHolder rspec;
+  if (disp_is_oop) {
+    rspec = Relocation::spec_simple(relocInfo::oop_type);
+  }
   bool valid_index = index != rsp->encoding();
   if (valid_index) {
     Address madr(as_Register(base), as_Register(index), (Address::ScaleFactor)scale, in_ByteSize(disp));
+    madr._rspec = rspec;
     return madr;
   } else {
     Address madr(as_Register(base), noreg, Address::no_scale, in_ByteSize(disp));
+    madr._rspec = rspec;
     return madr;
   }
 }
@@ -721,7 +727,7 @@
   }
 
 #ifdef _LP64
-  assert(false, "fix locate_operand");
+  assert(which == narrow_oop_operand && !is_64bit, "instruction is not a movl adr, imm32");
 #else
   assert(which == imm_operand, "instruction has only an imm field");
 #endif // LP64
@@ -946,6 +952,21 @@
   emit_operand(dst, src);
 }
 
+void Assembler::bsfl(Register dst, Register src) {
+  int encode = prefix_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBC);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::bsrl(Register dst, Register src) {
+  assert(!VM_Version::supports_lzcnt(), "encoding is treated as LZCNT");
+  int encode = prefix_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBD);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::bswapl(Register reg) { // bswap
   int encode = prefix_and_encode(reg->encoding());
   emit_byte(0x0F);
@@ -1432,26 +1453,21 @@
   }
 }
 
-// Serializes memory.
+void Assembler::lzcntl(Register dst, Register src) {
+  assert(VM_Version::supports_lzcnt(), "encoding is treated as BSR");
+  emit_byte(0xF3);
+  int encode = prefix_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBD);
+  emit_byte(0xC0 | encode);
+}
+
+// Emit mfence instruction
 void Assembler::mfence() {
-    // Memory barriers are only needed on multiprocessors
-  if (os::is_MP()) {
-    if( LP64_ONLY(true ||) VM_Version::supports_sse2() ) {
-      emit_byte( 0x0F );                // MFENCE; faster blows no regs
-      emit_byte( 0xAE );
-      emit_byte( 0xF0 );
-    } else {
-      // All usable chips support "locked" instructions which suffice
-      // as barriers, and are much faster than the alternative of
-      // using cpuid instruction. We use here a locked add [esp],0.
-      // This is conveniently otherwise a no-op except for blowing
-      // flags (which we save and restore.)
-      pushf();                // Save eflags register
-      lock();
-      addl(Address(rsp, 0), 0);// Assert the lock# signal here
-      popf();                 // Restore eflags register
-    }
-  }
+  NOT_LP64(assert(VM_Version::supports_sse2(), "unsupported");)
+  emit_byte( 0x0F );
+  emit_byte( 0xAE );
+  emit_byte( 0xF0 );
 }
 
 void Assembler::mov(Register dst, Register src) {
@@ -2181,12 +2197,56 @@
   emit_arith(0x0B, 0xC0, dst, src);
 }
 
+void Assembler::pcmpestri(XMMRegister dst, Address src, int imm8) {
+  assert(VM_Version::supports_sse4_2(), "");
+
+  InstructionMark im(this);
+  emit_byte(0x66);
+  prefix(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0x3A);
+  emit_byte(0x61);
+  emit_operand(dst, src);
+  emit_byte(imm8);
+}
+
+void Assembler::pcmpestri(XMMRegister dst, XMMRegister src, int imm8) {
+  assert(VM_Version::supports_sse4_2(), "");
+
+  emit_byte(0x66);
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0x3A);
+  emit_byte(0x61);
+  emit_byte(0xC0 | encode);
+  emit_byte(imm8);
+}
+
 // generic
 void Assembler::pop(Register dst) {
   int encode = prefix_and_encode(dst->encoding());
   emit_byte(0x58 | encode);
 }
 
+void Assembler::popcntl(Register dst, Address src) {
+  assert(VM_Version::supports_popcnt(), "must support");
+  InstructionMark im(this);
+  emit_byte(0xF3);
+  prefix(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xB8);
+  emit_operand(dst, src);
+}
+
+void Assembler::popcntl(Register dst, Register src) {
+  assert(VM_Version::supports_popcnt(), "must support");
+  emit_byte(0xF3);
+  int encode = prefix_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xB8);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::popf() {
   emit_byte(0x9D);
 }
@@ -2319,6 +2379,29 @@
   emit_byte(shift);
 }
 
+void Assembler::ptest(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_sse4_1(), "");
+
+  InstructionMark im(this);
+  emit_byte(0x66);
+  prefix(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0x38);
+  emit_byte(0x17);
+  emit_operand(dst, src);
+}
+
+void Assembler::ptest(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_sse4_1(), "");
+
+  emit_byte(0x66);
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0x38);
+  emit_byte(0x17);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::punpcklbw(XMMRegister dst, XMMRegister src) {
   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
   emit_byte(0x66);
@@ -3218,12 +3301,6 @@
   emit_byte(0xF1);
 }
 
-void Assembler::mov_literal32(Register dst, int32_t imm32, RelocationHolder const& rspec, int format) {
-  InstructionMark im(this);
-  int encode = prefix_and_encode(dst->encoding());
-  emit_byte(0xB8 | encode);
-  emit_data((int)imm32, rspec, format);
-}
 
 #ifndef _LP64
 
@@ -3243,6 +3320,12 @@
   emit_data((int)imm32, rspec, 0);
 }
 
+void Assembler::mov_literal32(Register dst, int32_t imm32, RelocationHolder const& rspec) {
+  InstructionMark im(this);
+  int encode = prefix_and_encode(dst->encoding());
+  emit_byte(0xB8 | encode);
+  emit_data((int)imm32, rspec, 0);
+}
 
 void Assembler::popa() { // 32bit
   emit_byte(0x61);
@@ -3629,6 +3712,21 @@
   emit_arith(0x23, 0xC0, dst, src);
 }
 
+void Assembler::bsfq(Register dst, Register src) {
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBC);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::bsrq(Register dst, Register src) {
+  assert(!VM_Version::supports_lzcnt(), "encoding is treated as LZCNT");
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBD);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::bswapq(Register reg) {
   int encode = prefixq_and_encode(reg->encoding());
   emit_byte(0x0F);
@@ -3851,6 +3949,46 @@
   emit_data64(imm64, rspec);
 }
 
+void Assembler::mov_narrow_oop(Register dst, int32_t imm32, RelocationHolder const& rspec) {
+  InstructionMark im(this);
+  int encode = prefix_and_encode(dst->encoding());
+  emit_byte(0xB8 | encode);
+  emit_data((int)imm32, rspec, narrow_oop_operand);
+}
+
+void Assembler::mov_narrow_oop(Address dst, int32_t imm32,  RelocationHolder const& rspec) {
+  InstructionMark im(this);
+  prefix(dst);
+  emit_byte(0xC7);
+  emit_operand(rax, dst, 4);
+  emit_data((int)imm32, rspec, narrow_oop_operand);
+}
+
+void Assembler::cmp_narrow_oop(Register src1, int32_t imm32, RelocationHolder const& rspec) {
+  InstructionMark im(this);
+  int encode = prefix_and_encode(src1->encoding());
+  emit_byte(0x81);
+  emit_byte(0xF8 | encode);
+  emit_data((int)imm32, rspec, narrow_oop_operand);
+}
+
+void Assembler::cmp_narrow_oop(Address src1, int32_t imm32, RelocationHolder const& rspec) {
+  InstructionMark im(this);
+  prefix(src1);
+  emit_byte(0x81);
+  emit_operand(rax, src1, 4);
+  emit_data((int)imm32, rspec, narrow_oop_operand);
+}
+
+void Assembler::lzcntq(Register dst, Register src) {
+  assert(VM_Version::supports_lzcnt(), "encoding is treated as BSR");
+  emit_byte(0xF3);
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBD);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::movdq(XMMRegister dst, Register src) {
   // table D-1 says MMX/SSE2
   NOT_LP64(assert(VM_Version::supports_sse2() || VM_Version::supports_mmx(), ""));
@@ -3892,6 +4030,21 @@
   emit_operand(src, dst);
 }
 
+void Assembler::movsbq(Register dst, Address src) {
+  InstructionMark im(this);
+  prefixq(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xBE);
+  emit_operand(dst, src);
+}
+
+void Assembler::movsbq(Register dst, Register src) {
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBE);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::movslq(Register dst, int32_t imm32) {
   // dbx shows movslq(rcx, 3) as movq     $0x0000000049000000,(%rbx)
   // and movslq(r8, 3); as movl     $0x0000000048000000,(%rbx)
@@ -3925,6 +4078,51 @@
   emit_byte(0xC0 | encode);
 }
 
+void Assembler::movswq(Register dst, Address src) {
+  InstructionMark im(this);
+  prefixq(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xBF);
+  emit_operand(dst, src);
+}
+
+void Assembler::movswq(Register dst, Register src) {
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xBF);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::movzbq(Register dst, Address src) {
+  InstructionMark im(this);
+  prefixq(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xB6);
+  emit_operand(dst, src);
+}
+
+void Assembler::movzbq(Register dst, Register src) {
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xB6);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::movzwq(Register dst, Address src) {
+  InstructionMark im(this);
+  prefixq(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xB7);
+  emit_operand(dst, src);
+}
+
+void Assembler::movzwq(Register dst, Register src) {
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xB7);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::negq(Register dst) {
   int encode = prefixq_and_encode(dst->encoding());
   emit_byte(0xF7);
@@ -3983,6 +4181,25 @@
   addq(rsp, 16 * wordSize);
 }
 
+void Assembler::popcntq(Register dst, Address src) {
+  assert(VM_Version::supports_popcnt(), "must support");
+  InstructionMark im(this);
+  emit_byte(0xF3);
+  prefixq(src, dst);
+  emit_byte(0x0F);
+  emit_byte(0xB8);
+  emit_operand(dst, src);
+}
+
+void Assembler::popcntq(Register dst, Register src) {
+  assert(VM_Version::supports_popcnt(), "must support");
+  emit_byte(0xF3);
+  int encode = prefixq_and_encode(dst->encoding(), src->encoding());
+  emit_byte(0x0F);
+  emit_byte(0xB8);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::popq(Address dst) {
   InstructionMark im(this);
   prefixq(dst);
@@ -5212,15 +5429,15 @@
 void MacroAssembler::reset_last_Java_frame(bool clear_fp,
                                            bool clear_pc) {
   // we must set sp to zero to clear frame
-  movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD);
+  movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), NULL_WORD);
   // must clear fp, so that compiled frames are not confused; it is
   // possible that we need it only for debugging
   if (clear_fp) {
-    movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD);
+    movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), NULL_WORD);
   }
 
   if (clear_pc) {
-    movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD);
+    movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), NULL_WORD);
   }
 }
 
@@ -5670,7 +5887,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()), (int32_t)NULL_WORD);
+    movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD);
     verify_oop(oop_result, "broken oop in call_VM_base");
   }
 }
@@ -6197,8 +6414,11 @@
   return off;
 }
 
-// word => int32 which seems bad for 64bit
-int MacroAssembler::load_signed_word(Register dst, Address src) {
+// Note: load_signed_short used to be called load_signed_word.
+// Although the 'w' in x86 opcodes refers to the term "word" in the assembler
+// manual, which means 16 bits, that usage is found nowhere in HotSpot code.
+// The term "word" in HotSpot means a 32- or 64-bit machine word.
+int MacroAssembler::load_signed_short(Register dst, Address src) {
   int off;
   if (LP64_ONLY(true ||) VM_Version::is_P6()) {
     // This is dubious to me since it seems safe to do a signed 16 => 64 bit
@@ -6207,7 +6427,7 @@
     off = offset();
     movswl(dst, src); // movsxw
   } else {
-    off = load_unsigned_word(dst, src);
+    off = load_unsigned_short(dst, src);
     shll(dst, 16);
     sarl(dst, 16);
   }
@@ -6229,7 +6449,8 @@
   return off;
 }
 
-int MacroAssembler::load_unsigned_word(Register dst, Address src) {
+// Note: load_unsigned_short used to be called load_unsigned_word.
+int MacroAssembler::load_unsigned_short(Register dst, Address src) {
   // According to Intel Doc. AP-526, "Zero-Extension of Short", p.16,
   // and "3.9 Partial Register Penalties", p. 22).
   int off;
@@ -6244,6 +6465,28 @@
   return off;
 }
 
+void MacroAssembler::load_sized_value(Register dst, Address src,
+                                      int size_in_bytes, bool is_signed) {
+  switch (size_in_bytes ^ (is_signed ? -1 : 0)) {
+#ifndef _LP64
+  // For case 8, caller is responsible for manually loading
+  // the second word into another register.
+  case ~8:  // fall through:
+  case  8:  movl(                dst, src ); break;
+#else
+  case ~8:  // fall through:
+  case  8:  movq(                dst, src ); break;
+#endif
+  case ~4:  // fall through:
+  case  4:  movl(                dst, src ); break;
+  case ~2:  load_signed_short(   dst, src ); break;
+  case  2:  load_unsigned_short( dst, src ); break;
+  case ~1:  load_signed_byte(    dst, src ); break;
+  case  1:  load_unsigned_byte(  dst, src ); break;
+  default:  ShouldNotReachHere();
+  }
+}
+
 void MacroAssembler::mov32(AddressLiteral dst, Register src) {
   if (reachable(dst)) {
     movl(as_Address(dst), src);
@@ -6426,13 +6669,13 @@
     get_thread(java_thread);
   }
   // we must set sp to zero to clear frame
-  movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD);
+  movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), NULL_WORD);
   if (clear_fp) {
-    movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD);
+    movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), NULL_WORD);
   }
 
   if (clear_pc)
-    movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD);
+    movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), NULL_WORD);
 
 }
 
@@ -6463,7 +6706,8 @@
   Address index(noreg, tmp, Address::times_1);
   ExternalAddress page(os::get_memory_serialize_page());
 
-  movptr(ArrayAddress(page, index), tmp);
+  // Size of store must match masking code above
+  movl(as_Address(ArrayAddress(page, index)), tmp);
 }
 
 // Calls to C land
@@ -6561,14 +6805,18 @@
   jcc(Assembler::equal, done);
 
   // if (x.f == NULL) goto done;
-  cmpptr(Address(obj, 0), NULL_WORD);
+#ifdef _LP64
+  load_heap_oop(tmp2, Address(obj, 0));
+#else
+  movptr(tmp2, Address(obj, 0));
+#endif
+  cmpptr(tmp2, (int32_t) NULL_WORD);
   jcc(Assembler::equal, done);
 
   // Can we store original value in the thread's buffer?
 
-  LP64_ONLY(movslq(tmp, index);)
-  movptr(tmp2, Address(obj, 0));
 #ifdef _LP64
+  movslq(tmp, index);
   cmpq(tmp, 0);
 #else
   cmpl(index, 0);
@@ -6590,8 +6838,7 @@
   if(tosca_live) push(rax);
   push(obj);
 #ifdef _LP64
-  movq(c_rarg0, Address(obj, 0));
-  call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), c_rarg0, r15_thread);
+  call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, r15_thread);
 #else
   push(thread);
   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, thread);
@@ -6943,29 +7190,32 @@
 
   Label slow_case, done;
 
-  // x ?<= pi/4
-  fld_d(ExternalAddress((address)&pi_4));
-  fld_s(1);                // Stack:  X  PI/4  X
-  fabs();                  // Stack: |X| PI/4  X
-  fcmp(tmp);
-  jcc(Assembler::above, slow_case);
-
-  // fastest case: -pi/4 <= x <= pi/4
-  switch(trig) {
-  case 's':
-    fsin();
-    break;
-  case 'c':
-    fcos();
-    break;
-  case 't':
-    ftan();
-    break;
-  default:
-    assert(false, "bad intrinsic");
-    break;
-  }
-  jmp(done);
+  ExternalAddress pi4_adr = (address)&pi_4;
+  if (reachable(pi4_adr)) {
+    // x ?<= pi/4
+    fld_d(pi4_adr);
+    fld_s(1);                // Stack:  X  PI/4  X
+    fabs();                  // Stack: |X| PI/4  X
+    fcmp(tmp);
+    jcc(Assembler::above, slow_case);
+
+    // fastest case: -pi/4 <= x <= pi/4
+    switch(trig) {
+    case 's':
+      fsin();
+      break;
+    case 'c':
+      fcos();
+      break;
+    case 't':
+      ftan();
+      break;
+    default:
+      assert(false, "bad intrinsic");
+      break;
+    }
+    jmp(done);
+  }
 
   // slow case: runtime call
   bind(slow_case);
@@ -7046,6 +7296,300 @@
 }
 
 
+// Look up the method for a megamorphic invokeinterface call.
+// The target method is determined by <intf_klass, itable_index>.
+// The receiver klass is in recv_klass.
+// On success, the result will be in method_result, and execution falls through.
+// On failure, execution transfers to the given label.
+void MacroAssembler::lookup_interface_method(Register recv_klass,
+                                             Register intf_klass,
+                                             RegisterOrConstant itable_index,
+                                             Register method_result,
+                                             Register scan_temp,
+                                             Label& L_no_such_interface) {
+  assert_different_registers(recv_klass, intf_klass, method_result, scan_temp);
+  assert(itable_index.is_constant() || itable_index.as_register() == method_result,
+         "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 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));
+
+  // %%% 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!
+    round_to(scan_temp, BytesPerLong);
+  }
+
+  // Adjust recv_klass by scaled itable_index, so we can free itable_index.
+  assert(itableMethodEntry::size() * wordSize == wordSize, "adjust the scaling in the code below");
+  lea(recv_klass, Address(recv_klass, itable_index, Address::times_ptr, itentry_off));
+
+  // for (scan = klass->itable(); scan->interface() != NULL; scan += scan_step) {
+  //   if (scan->interface() == intf) {
+  //     result = (klass + scan->offset() + itable_index);
+  //   }
+  // }
+  Label search, found_method;
+
+  for (int peel = 1; peel >= 0; peel--) {
+    movptr(method_result, Address(scan_temp, itableOffsetEntry::interface_offset_in_bytes()));
+    cmpptr(intf_klass, method_result);
+
+    if (peel) {
+      jccb(Assembler::equal, found_method);
+    } else {
+      jccb(Assembler::notEqual, search);
+      // (invert the test to fall through to found_method...)
+    }
+
+    if (!peel)  break;
+
+    bind(search);
+
+    // Check that the previous entry is non-null.  A null entry means that
+    // the receiver class doesn't implement the interface, and wasn't the
+    // same as when the caller was compiled.
+    testptr(method_result, method_result);
+    jcc(Assembler::zero, L_no_such_interface);
+    addptr(scan_temp, scan_step);
+  }
+
+  bind(found_method);
+
+  // Got a hit.
+  movl(scan_temp, Address(scan_temp, itableOffsetEntry::offset_offset_in_bytes()));
+  movptr(method_result, Address(recv_klass, scan_temp, Address::times_1));
+}
+
+
+void MacroAssembler::check_klass_subtype(Register sub_klass,
+                           Register super_klass,
+                           Register temp_reg,
+                           Label& L_success) {
+  Label L_failure;
+  check_klass_subtype_fast_path(sub_klass, super_klass, temp_reg,        &L_success, &L_failure, NULL);
+  check_klass_subtype_slow_path(sub_klass, super_klass, temp_reg, noreg, &L_success, NULL);
+  bind(L_failure);
+}
+
+
+void MacroAssembler::check_klass_subtype_fast_path(Register sub_klass,
+                                                   Register super_klass,
+                                                   Register temp_reg,
+                                                   Label* L_success,
+                                                   Label* L_failure,
+                                                   Label* L_slow_path,
+                                        RegisterOrConstant super_check_offset) {
+  assert_different_registers(sub_klass, super_klass, temp_reg);
+  bool must_load_sco = (super_check_offset.constant_or_zero() == -1);
+  if (super_check_offset.is_register()) {
+    assert_different_registers(sub_klass, super_klass,
+                               super_check_offset.as_register());
+  } else if (must_load_sco) {
+    assert(temp_reg != noreg, "supply either a temp or a register offset");
+  }
+
+  Label L_fallthrough;
+  int label_nulls = 0;
+  if (L_success == NULL)   { L_success   = &L_fallthrough; label_nulls++; }
+  if (L_failure == NULL)   { L_failure   = &L_fallthrough; label_nulls++; }
+  if (L_slow_path == NULL) { L_slow_path = &L_fallthrough; label_nulls++; }
+  assert(label_nulls <= 1, "at most one NULL in the batch");
+
+  int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_super_cache_offset_in_bytes());
+  int sco_offset = (klassOopDesc::header_size() * HeapWordSize +
+                    Klass::super_check_offset_offset_in_bytes());
+  Address super_check_offset_addr(super_klass, sco_offset);
+
+  // Hacked jcc, which "knows" that L_fallthrough, at least, is in
+  // range of a jccb.  If this routine grows larger, reconsider at
+  // least some of these.
+#define local_jcc(assembler_cond, label)                                \
+  if (&(label) == &L_fallthrough)  jccb(assembler_cond, label);         \
+  else                             jcc( assembler_cond, label) /*omit semi*/
+
+  // Hacked jmp, which may only be used just before L_fallthrough.
+#define final_jmp(label)                                                \
+  if (&(label) == &L_fallthrough) { /*do nothing*/ }                    \
+  else                            jmp(label)                /*omit semi*/
+
+  // If the pointers are equal, we are done (e.g., String[] elements).
+  // This self-check enables sharing of secondary supertype arrays among
+  // non-primary types such as array-of-interface.  Otherwise, each such
+  // type would need its own customized SSA.
+  // We move this check to the front of the fast path because many
+  // type checks are in fact trivially successful in this manner,
+  // so we get a nicely predicted branch right at the start of the check.
+  cmpptr(sub_klass, super_klass);
+  local_jcc(Assembler::equal, *L_success);
+
+  // Check the supertype display:
+  if (must_load_sco) {
+    // Positive movl does right thing on LP64.
+    movl(temp_reg, super_check_offset_addr);
+    super_check_offset = RegisterOrConstant(temp_reg);
+  }
+  Address super_check_addr(sub_klass, super_check_offset, Address::times_1, 0);
+  cmpptr(super_klass, super_check_addr); // load displayed supertype
+
+  // This check has worked decisively for primary supers.
+  // Secondary supers are sought in the super_cache ('super_cache_addr').
+  // (Secondary supers are interfaces and very deeply nested subtypes.)
+  // This works in the same check above because of a tricky aliasing
+  // between the super_cache and the primary super display elements.
+  // (The 'super_check_addr' can address either, as the case requires.)
+  // Note that the cache is updated below if it does not help us find
+  // what we need immediately.
+  // So if it was a primary super, we can just fail immediately.
+  // Otherwise, it's the slow path for us (no success at this point).
+
+  if (super_check_offset.is_register()) {
+    local_jcc(Assembler::equal, *L_success);
+    cmpl(super_check_offset.as_register(), sc_offset);
+    if (L_failure == &L_fallthrough) {
+      local_jcc(Assembler::equal, *L_slow_path);
+    } else {
+      local_jcc(Assembler::notEqual, *L_failure);
+      final_jmp(*L_slow_path);
+    }
+  } else if (super_check_offset.as_constant() == sc_offset) {
+    // Need a slow path; fast failure is impossible.
+    if (L_slow_path == &L_fallthrough) {
+      local_jcc(Assembler::equal, *L_success);
+    } else {
+      local_jcc(Assembler::notEqual, *L_slow_path);
+      final_jmp(*L_success);
+    }
+  } else {
+    // No slow path; it's a fast decision.
+    if (L_failure == &L_fallthrough) {
+      local_jcc(Assembler::equal, *L_success);
+    } else {
+      local_jcc(Assembler::notEqual, *L_failure);
+      final_jmp(*L_success);
+    }
+  }
+
+  bind(L_fallthrough);
+
+#undef local_jcc
+#undef final_jmp
+}
+
+
+void MacroAssembler::check_klass_subtype_slow_path(Register sub_klass,
+                                                   Register super_klass,
+                                                   Register temp_reg,
+                                                   Register temp2_reg,
+                                                   Label* L_success,
+                                                   Label* L_failure,
+                                                   bool set_cond_codes) {
+  assert_different_registers(sub_klass, super_klass, temp_reg);
+  if (temp2_reg != noreg)
+    assert_different_registers(sub_klass, super_klass, temp_reg, temp2_reg);
+#define IS_A_TEMP(reg) ((reg) == temp_reg || (reg) == temp2_reg)
+
+  Label L_fallthrough;
+  int label_nulls = 0;
+  if (L_success == NULL)   { L_success   = &L_fallthrough; label_nulls++; }
+  if (L_failure == NULL)   { L_failure   = &L_fallthrough; label_nulls++; }
+  assert(label_nulls <= 1, "at most one NULL in the batch");
+
+  // a couple of useful fields in sub_klass:
+  int ss_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_supers_offset_in_bytes());
+  int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
+                   Klass::secondary_super_cache_offset_in_bytes());
+  Address secondary_supers_addr(sub_klass, ss_offset);
+  Address super_cache_addr(     sub_klass, sc_offset);
+
+  // Do a linear scan of the secondary super-klass chain.
+  // This code is rarely used, so simplicity is a virtue here.
+  // The repne_scan instruction uses fixed registers, which we must spill.
+  // Don't worry too much about pre-existing connections with the input regs.
+
+  assert(sub_klass != rax, "killed reg"); // killed by mov(rax, super)
+  assert(sub_klass != rcx, "killed reg"); // killed by lea(rcx, &pst_counter)
+
+  // Get super_klass value into rax (even if it was in rdi or rcx).
+  bool pushed_rax = false, pushed_rcx = false, pushed_rdi = false;
+  if (super_klass != rax || UseCompressedOops) {
+    if (!IS_A_TEMP(rax)) { push(rax); pushed_rax = true; }
+    mov(rax, super_klass);
+  }
+  if (!IS_A_TEMP(rcx)) { push(rcx); pushed_rcx = true; }
+  if (!IS_A_TEMP(rdi)) { push(rdi); pushed_rdi = true; }
+
+#ifndef PRODUCT
+  int* pst_counter = &SharedRuntime::_partial_subtype_ctr;
+  ExternalAddress pst_counter_addr((address) pst_counter);
+  NOT_LP64(  incrementl(pst_counter_addr) );
+  LP64_ONLY( lea(rcx, pst_counter_addr) );
+  LP64_ONLY( incrementl(Address(rcx, 0)) );
+#endif //PRODUCT
+
+  // 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()));
+  // Skip to start of data.
+  addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
+
+  // Scan RCX words at [RDI] for an occurrence of RAX.
+  // Set NZ/Z based on last compare.
+#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);
+    // 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.
+    repne_scanl();
+  } else
+#endif // _LP64
+    repne_scan();
+
+  // Unspill the temp. registers:
+  if (pushed_rdi)  pop(rdi);
+  if (pushed_rcx)  pop(rcx);
+  if (pushed_rax)  pop(rax);
+
+  if (set_cond_codes) {
+    // Special hack for the AD files:  rdi is guaranteed non-zero.
+    assert(!pushed_rdi, "rdi must be left non-NULL");
+    // Also, the condition codes are properly set Z/NZ on succeed/failure.
+  }
+
+  if (L_failure == &L_fallthrough)
+        jccb(Assembler::notEqual, *L_failure);
+  else  jcc(Assembler::notEqual, *L_failure);
+
+  // Success.  Cache the super we found and proceed in triumph.
+  movptr(super_cache_addr, super_klass);
+
+  if (L_success != &L_fallthrough) {
+    jmp(*L_success);
+  }
+
+#undef IS_A_TEMP
+
+  bind(L_fallthrough);
+}
+
+
 void MacroAssembler::ucomisd(XMMRegister dst, AddressLiteral src) {
   ucomisd(dst, as_Address(src));
 }
@@ -7091,6 +7635,108 @@
 }
 
 
+RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
+                                                      Register tmp,
+                                                      int offset) {
+  intptr_t value = *delayed_value_addr;
+  if (value != 0)
+    return RegisterOrConstant(value + offset);
+
+  // load indirectly to solve generation ordering problem
+  movptr(tmp, ExternalAddress((address) delayed_value_addr));
+
+#ifdef ASSERT
+  Label L;
+  testl(tmp, tmp);
+  jccb(Assembler::notZero, L);
+  hlt();
+  bind(L);
+#endif
+
+  if (offset != 0)
+    addptr(tmp, offset);
+
+  return RegisterOrConstant(tmp);
+}
+
+
+// registers on entry:
+//  - rax ('check' register): required MethodType
+//  - rcx: method handle
+//  - rdx, rsi, or ?: killable temp
+void MacroAssembler::check_method_handle_type(Register mtype_reg, Register mh_reg,
+                                              Register temp_reg,
+                                              Label& wrong_method_type) {
+  if (UseCompressedOops)  unimplemented();  // field accesses must decode
+  // compare method type against that of the receiver
+  cmpptr(mtype_reg, Address(mh_reg, delayed_value(java_dyn_MethodHandle::type_offset_in_bytes, temp_reg)));
+  jcc(Assembler::notEqual, wrong_method_type);
+}
+
+
+// A method handle has a "vmslots" field which gives the size of its
+// argument list in JVM stack slots.  This field is either located directly
+// in every method handle, or else is indirectly accessed through the
+// method handle's MethodType.  This macro hides the distinction.
+void MacroAssembler::load_method_handle_vmslots(Register vmslots_reg, Register mh_reg,
+                                                Register temp_reg) {
+  if (UseCompressedOops)  unimplemented();  // field accesses must decode
+  // load mh.type.form.vmslots
+  if (java_dyn_MethodHandle::vmslots_offset_in_bytes() != 0) {
+    // hoist vmslots into every mh to avoid dependent load chain
+    movl(vmslots_reg, Address(mh_reg, delayed_value(java_dyn_MethodHandle::vmslots_offset_in_bytes, temp_reg)));
+  } else {
+    Register temp2_reg = vmslots_reg;
+    movptr(temp2_reg, Address(mh_reg,    delayed_value(java_dyn_MethodHandle::type_offset_in_bytes, temp_reg)));
+    movptr(temp2_reg, Address(temp2_reg, delayed_value(java_dyn_MethodType::form_offset_in_bytes, temp_reg)));
+    movl(vmslots_reg, Address(temp2_reg, delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, temp_reg)));
+  }
+}
+
+
+// registers on entry:
+//  - rcx: method handle
+//  - rdx: killable temp (interpreted only)
+//  - rax: killable temp (compiled only)
+void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_reg) {
+  assert(mh_reg == rcx, "caller must put MH object in rcx");
+  assert_different_registers(mh_reg, temp_reg);
+
+  if (UseCompressedOops)  unimplemented();  // field accesses must decode
+
+  // pick out the interpreted side of the handler
+  movptr(temp_reg, Address(mh_reg, delayed_value(java_dyn_MethodHandle::vmentry_offset_in_bytes, temp_reg)));
+
+  // off we go...
+  jmp(Address(temp_reg, MethodHandleEntry::from_interpreted_entry_offset_in_bytes()));
+
+  // for the various stubs which take control at this point,
+  // see MethodHandles::generate_method_handle_stub
+}
+
+
+Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
+                                         int extra_slot_offset) {
+  // cf. TemplateTable::prepare_invoke(), if (load_receiver).
+  int stackElementSize = Interpreter::stackElementSize();
+  int offset = Interpreter::expr_offset_in_bytes(extra_slot_offset+0);
+#ifdef ASSERT
+  int offset1 = Interpreter::expr_offset_in_bytes(extra_slot_offset+1);
+  assert(offset1 - offset == stackElementSize, "correct arithmetic");
+#endif
+  Register             scale_reg    = noreg;
+  Address::ScaleFactor scale_factor = Address::no_scale;
+  if (arg_slot.is_constant()) {
+    offset += arg_slot.as_constant() * stackElementSize;
+  } else {
+    scale_reg    = arg_slot.as_register();
+    scale_factor = Address::times(stackElementSize);
+  }
+  offset += wordSize;           // return PC is on stack
+  return Address(rsp, scale_reg, scale_factor, offset);
+}
+
+
 void MacroAssembler::verify_oop_addr(Address addr, const char* s) {
   if (!VerifyOops) return;
 
@@ -7514,14 +8160,21 @@
 void MacroAssembler::load_prototype_header(Register dst, Register src) {
 #ifdef _LP64
   if (UseCompressedOops) {
+    assert (Universe::heap() != NULL, "java heap should be initialized");
     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
-    movq(dst, Address(r12_heapbase, dst, Address::times_8, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
+    if (Universe::narrow_oop_shift() != 0) {
+      assert(Address::times_8 == LogMinObjAlignmentInBytes &&
+             Address::times_8 == Universe::narrow_oop_shift(), "decode alg wrong");
+      movq(dst, Address(r12_heapbase, dst, Address::times_8, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
+    } else {
+      movq(dst, Address(dst, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
+    }
   } else
 #endif
-    {
-      movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
-      movptr(dst, Address(dst, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
-    }
+  {
+    movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
+    movptr(dst, Address(dst, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
+  }
 }
 
 void MacroAssembler::store_klass(Register dst, Register src) {
@@ -7564,11 +8217,20 @@
 // Algorithm must match oop.inline.hpp encode_heap_oop.
 void MacroAssembler::encode_heap_oop(Register r) {
   assert (UseCompressedOops, "should be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  if (Universe::narrow_oop_base() == NULL) {
+    verify_oop(r, "broken oop in encode_heap_oop");
+    if (Universe::narrow_oop_shift() != 0) {
+      assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+      shrq(r, LogMinObjAlignmentInBytes);
+    }
+    return;
+  }
 #ifdef ASSERT
   if (CheckCompressedOops) {
     Label ok;
     push(rscratch1); // cmpptr trashes rscratch1
-    cmpptr(r12_heapbase, ExternalAddress((address)Universe::heap_base_addr()));
+    cmpptr(r12_heapbase, ExternalAddress((address)Universe::narrow_oop_base_addr()));
     jcc(Assembler::equal, ok);
     stop("MacroAssembler::encode_heap_oop: heap base corrupted?");
     bind(ok);
@@ -7584,6 +8246,7 @@
 
 void MacroAssembler::encode_heap_oop_not_null(Register r) {
   assert (UseCompressedOops, "should be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
 #ifdef ASSERT
   if (CheckCompressedOops) {
     Label ok;
@@ -7594,12 +8257,18 @@
   }
 #endif
   verify_oop(r, "broken oop in encode_heap_oop_not_null");
-  subq(r, r12_heapbase);
-  shrq(r, LogMinObjAlignmentInBytes);
+  if (Universe::narrow_oop_base() != NULL) {
+    subq(r, r12_heapbase);
+  }
+  if (Universe::narrow_oop_shift() != 0) {
+    assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+    shrq(r, LogMinObjAlignmentInBytes);
+  }
 }
 
 void MacroAssembler::encode_heap_oop_not_null(Register dst, Register src) {
   assert (UseCompressedOops, "should be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
 #ifdef ASSERT
   if (CheckCompressedOops) {
     Label ok;
@@ -7613,18 +8282,32 @@
   if (dst != src) {
     movq(dst, src);
   }
-  subq(dst, r12_heapbase);
-  shrq(dst, LogMinObjAlignmentInBytes);
+  if (Universe::narrow_oop_base() != NULL) {
+    subq(dst, r12_heapbase);
+  }
+  if (Universe::narrow_oop_shift() != 0) {
+    assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+    shrq(dst, LogMinObjAlignmentInBytes);
+  }
 }
 
 void  MacroAssembler::decode_heap_oop(Register r) {
   assert (UseCompressedOops, "should be compressed");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  if (Universe::narrow_oop_base() == NULL) {
+    if (Universe::narrow_oop_shift() != 0) {
+      assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+      shlq(r, LogMinObjAlignmentInBytes);
+    }
+    verify_oop(r, "broken oop in decode_heap_oop");
+    return;
+  }
 #ifdef ASSERT
   if (CheckCompressedOops) {
     Label ok;
     push(rscratch1);
     cmpptr(r12_heapbase,
-           ExternalAddress((address)Universe::heap_base_addr()));
+           ExternalAddress((address)Universe::narrow_oop_base_addr()));
     jcc(Assembler::equal, ok);
     stop("MacroAssembler::decode_heap_oop: heap base corrupted?");
     bind(ok);
@@ -7648,32 +8331,76 @@
 
 void  MacroAssembler::decode_heap_oop_not_null(Register r) {
   assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
   // Cannot assert, unverified entry point counts instructions (see .ad file)
   // vtableStubs also counts instructions in pd_code_size_limit.
   // Also do not verify_oop as this is called by verify_oop.
-  assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
-  leaq(r, Address(r12_heapbase, r, Address::times_8, 0));
+  if (Universe::narrow_oop_base() == NULL) {
+    if (Universe::narrow_oop_shift() != 0) {
+      assert (LogMinObjAlignmentInBytes == Universe::narrow_oop_shift(), "decode alg wrong");
+      shlq(r, LogMinObjAlignmentInBytes);
+    }
+  } else {
+      assert (Address::times_8 == LogMinObjAlignmentInBytes &&
+              Address::times_8 == Universe::narrow_oop_shift(), "decode alg wrong");
+    leaq(r, Address(r12_heapbase, r, Address::times_8, 0));
+  }
 }
 
 void  MacroAssembler::decode_heap_oop_not_null(Register dst, Register src) {
   assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
   // Cannot assert, unverified entry point counts instructions (see .ad file)
   // vtableStubs also counts instructions in pd_code_size_limit.
   // Also do not verify_oop as this is called by verify_oop.
-  assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
-  leaq(dst, Address(r12_heapbase, src, Address::times_8, 0));
+  if (Universe::narrow_oop_shift() != 0) {
+    assert (Address::times_8 == LogMinObjAlignmentInBytes &&
+            Address::times_8 == Universe::narrow_oop_shift(), "decode alg wrong");
+    leaq(dst, Address(r12_heapbase, src, Address::times_8, 0));
+  } else if (dst != src) {
+    movq(dst, src);
+  }
 }
 
 void  MacroAssembler::set_narrow_oop(Register dst, jobject obj) {
-  assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
+  assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (oop_recorder() != NULL, "this assembler needs an OopRecorder");
+  int oop_index = oop_recorder()->find_index(obj);
+  RelocationHolder rspec = oop_Relocation::spec(oop_index);
+  mov_narrow_oop(dst, oop_index, rspec);
+}
+
+void  MacroAssembler::set_narrow_oop(Address dst, jobject obj) {
+  assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (oop_recorder() != NULL, "this assembler needs an OopRecorder");
   int oop_index = oop_recorder()->find_index(obj);
   RelocationHolder rspec = oop_Relocation::spec(oop_index);
-  mov_literal32(dst, oop_index, rspec, narrow_oop_operand);
+  mov_narrow_oop(dst, oop_index, rspec);
+}
+
+void  MacroAssembler::cmp_narrow_oop(Register dst, jobject obj) {
+  assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (oop_recorder() != NULL, "this assembler needs an OopRecorder");
+  int oop_index = oop_recorder()->find_index(obj);
+  RelocationHolder rspec = oop_Relocation::spec(oop_index);
+  Assembler::cmp_narrow_oop(dst, oop_index, rspec);
+}
+
+void  MacroAssembler::cmp_narrow_oop(Address dst, jobject obj) {
+  assert (UseCompressedOops, "should only be used for compressed headers");
+  assert (Universe::heap() != NULL, "java heap should be initialized");
+  assert (oop_recorder() != NULL, "this assembler needs an OopRecorder");
+  int oop_index = oop_recorder()->find_index(obj);
+  RelocationHolder rspec = oop_Relocation::spec(oop_index);
+  Assembler::cmp_narrow_oop(dst, oop_index, rspec);
 }
 
 void MacroAssembler::reinit_heapbase() {
   if (UseCompressedOops) {
-    movptr(r12_heapbase, ExternalAddress((address)Universe::heap_base_addr()));
+    movptr(r12_heapbase, ExternalAddress((address)Universe::narrow_oop_base_addr()));
   }
 }
 #endif // _LP64
--- a/src/cpu/x86/vm/assembler_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/assembler_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -153,6 +153,21 @@
     times_8  =  3,
     times_ptr = LP64_ONLY(times_8) NOT_LP64(times_4)
   };
+  static ScaleFactor times(int size) {
+    assert(size >= 1 && size <= 8 && is_power_of_2(size), "bad scale size");
+    if (size == 8)  return times_8;
+    if (size == 4)  return times_4;
+    if (size == 2)  return times_2;
+    return times_1;
+  }
+  static int scale_size(ScaleFactor scale) {
+    assert(scale != no_scale, "");
+    assert(((1 << (int)times_1) == 1 &&
+            (1 << (int)times_2) == 2 &&
+            (1 << (int)times_4) == 4 &&
+            (1 << (int)times_8) == 8), "");
+    return (1 << (int)scale);
+  }
 
  private:
   Register         _base;
@@ -197,6 +212,22 @@
            "inconsistent address");
   }
 
+  Address(Register base, RegisterOrConstant index, ScaleFactor scale = times_1, int disp = 0)
+    : _base (base),
+      _index(index.register_or_noreg()),
+      _scale(scale),
+      _disp (disp + (index.constant_or_zero() * scale_size(scale))) {
+    if (!index.is_register())  scale = Address::no_scale;
+    assert(!_index->is_valid() == (scale == Address::no_scale),
+           "inconsistent address");
+  }
+
+  Address plus_disp(int disp) const {
+    Address a = (*this);
+    a._disp += disp;
+    return a;
+  }
+
   // The following two overloads are used in connection with the
   // ByteSize type (see sizes.hpp).  They simplify the use of
   // ByteSize'd arguments in assembly code. Note that their equivalent
@@ -224,6 +255,17 @@
     assert(!index->is_valid() == (scale == Address::no_scale),
            "inconsistent address");
   }
+
+  Address(Register base, RegisterOrConstant index, ScaleFactor scale, ByteSize disp)
+    : _base (base),
+      _index(index.register_or_noreg()),
+      _scale(scale),
+      _disp (in_bytes(disp) + (index.constant_or_zero() * scale_size(scale))) {
+    if (!index.is_register())  scale = Address::no_scale;
+    assert(!_index->is_valid() == (scale == Address::no_scale),
+           "inconsistent address");
+  }
+
 #endif // ASSERT
 
   // accessors
@@ -236,11 +278,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.
-  static Address make_raw(int base, int index, int scale, int disp);
+  static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
 
   static Address make_array(ArrayAddress);
 
-
  private:
   bool base_needs_rex() const {
     return _base != noreg && _base->encoding() >= 8;
@@ -537,20 +578,25 @@
 
   // These are all easily abused and hence protected
 
-  void mov_literal32(Register dst, int32_t imm32, RelocationHolder const& rspec, int format = 0);
-
   // 32BIT ONLY SECTION
 #ifndef _LP64
   // Make these disappear in 64bit mode since they would never be correct
   void cmp_literal32(Register src1, int32_t imm32, RelocationHolder const& rspec);   // 32BIT ONLY
   void cmp_literal32(Address src1, int32_t imm32, RelocationHolder const& rspec);    // 32BIT ONLY
 
+  void mov_literal32(Register dst, int32_t imm32, RelocationHolder const& rspec);    // 32BIT ONLY
   void mov_literal32(Address dst, int32_t imm32, RelocationHolder const& rspec);     // 32BIT ONLY
 
   void push_literal32(int32_t imm32, RelocationHolder const& rspec);                 // 32BIT ONLY
 #else
   // 64BIT ONLY SECTION
   void mov_literal64(Register dst, intptr_t imm64, RelocationHolder const& rspec);   // 64BIT ONLY
+
+  void cmp_narrow_oop(Register src1, int32_t imm32, RelocationHolder const& rspec);
+  void cmp_narrow_oop(Address src1, int32_t imm32, RelocationHolder const& rspec);
+
+  void mov_narrow_oop(Register dst, int32_t imm32, RelocationHolder const& rspec);
+  void mov_narrow_oop(Address dst, int32_t imm32, RelocationHolder const& rspec);
 #endif // _LP64
 
   // These are unique in that we are ensured by the caller that the 32bit
@@ -711,6 +757,14 @@
   void andpd(XMMRegister dst, Address src);
   void andpd(XMMRegister dst, XMMRegister src);
 
+  void bsfl(Register dst, Register src);
+  void bsrl(Register dst, Register src);
+
+#ifdef _LP64
+  void bsfq(Register dst, Register src);
+  void bsrq(Register dst, Register src);
+#endif
+
   void bswapl(Register reg);
 
   void bswapq(Register reg);
@@ -1015,6 +1069,12 @@
 
   void lock();
 
+  void lzcntl(Register dst, Register src);
+
+#ifdef _LP64
+  void lzcntq(Register dst, Register src);
+#endif
+
   enum Membar_mask_bits {
     StoreStore = 1 << 3,
     LoadStore  = 1 << 2,
@@ -1022,15 +1082,23 @@
     LoadLoad   = 1 << 0
   };
 
-  // Serializes memory.
+  // Serializes memory and blows flags
   void membar(Membar_mask_bits order_constraint) {
-    // We only have to handle StoreLoad and LoadLoad
-    if (order_constraint & StoreLoad) {
-      // MFENCE subsumes LFENCE
-      mfence();
-    } /* [jk] not needed currently: else if (order_constraint & LoadLoad) {
-         lfence();
-    } */
+    if (os::is_MP()) {
+      // We only have to handle StoreLoad
+      if (order_constraint & StoreLoad) {
+        // All usable chips support "locked" instructions which suffice
+        // as barriers, and are much faster than the alternative of
+        // using cpuid instruction. We use here a locked add [esp],0.
+        // This is conveniently otherwise a no-op except for blowing
+        // flags.
+        // Any change to this code may need to revisit other places in
+        // the code where this idiom is used, in particular the
+        // orderAccess code.
+        lock();
+        addl(Address(rsp, 0), 0);// Assert the lock# signal here
+      }
+    }
   }
 
   void mfence();
@@ -1097,6 +1165,9 @@
   void movsbl(Register dst, Register src);
 
 #ifdef _LP64
+  void movsbq(Register dst, Address src);
+  void movsbq(Register dst, Register src);
+
   // Move signed 32bit immediate to 64bit extending sign
   void movslq(Address dst, int32_t imm64);
   void movslq(Register dst, int32_t imm64);
@@ -1109,6 +1180,11 @@
   void movswl(Register dst, Address src);
   void movswl(Register dst, Register src);
 
+#ifdef _LP64
+  void movswq(Register dst, Address src);
+  void movswq(Register dst, Register src);
+#endif
+
   void movw(Address dst, int imm16);
   void movw(Register dst, Address src);
   void movw(Address dst, Register src);
@@ -1116,9 +1192,19 @@
   void movzbl(Register dst, Address src);
   void movzbl(Register dst, Register src);
 
+#ifdef _LP64
+  void movzbq(Register dst, Address src);
+  void movzbq(Register dst, Register src);
+#endif
+
   void movzwl(Register dst, Address src);
   void movzwl(Register dst, Register src);
 
+#ifdef _LP64
+  void movzwq(Register dst, Address src);
+  void movzwq(Register dst, Register src);
+#endif
+
   void mull(Address src);
   void mull(Register src);
 
@@ -1154,12 +1240,24 @@
   void orq(Register dst, Address src);
   void orq(Register dst, Register src);
 
+  // SSE4.2 string instructions
+  void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8);
+  void pcmpestri(XMMRegister xmm1, Address src, int imm8);
+
   void popl(Address dst);
 
 #ifdef _LP64
   void popq(Address dst);
 #endif
 
+  void popcntl(Register dst, Address src);
+  void popcntl(Register dst, Register src);
+
+#ifdef _LP64
+  void popcntq(Register dst, Address src);
+  void popcntq(Register dst, Register src);
+#endif
+
   // Prefetches (SSE, SSE2, 3DNOW only)
 
   void prefetchnta(Address src);
@@ -1180,6 +1278,10 @@
   // Shift Right Logical Quadword Immediate
   void psrlq(XMMRegister dst, int shift);
 
+  // Logical Compare Double Quadword
+  void ptest(XMMRegister dst, XMMRegister src);
+  void ptest(XMMRegister dst, Address src);
+
   // Interleave Low Bytes
   void punpcklbw(XMMRegister dst, XMMRegister src);
 
@@ -1393,17 +1495,20 @@
 
   // The following 4 methods return the offset of the appropriate move instruction
 
-  // Support for fast byte/word loading with zero extension (depending on particular CPU)
+  // Support for fast byte/short loading with zero extension (depending on particular CPU)
   int load_unsigned_byte(Register dst, Address src);
-  int load_unsigned_word(Register dst, Address src);
-
-  // Support for fast byte/word loading with sign extension (depending on particular CPU)
+  int load_unsigned_short(Register dst, Address src);
+
+  // Support for fast byte/short loading with sign extension (depending on particular CPU)
   int load_signed_byte(Register dst, Address src);
-  int load_signed_word(Register dst, Address src);
+  int load_signed_short(Register dst, Address src);
 
   // Support for sign-extension (hi:lo = extend_sign(lo))
   void extend_sign(Register hi, Register lo);
 
+  // Loading values by size and signed-ness
+  void load_sized_value(Register dst, Address src, int size_in_bytes, bool is_signed);
+
   // Support for inc/dec with optimal instruction selection depending on value
 
   void increment(Register reg, int value = 1) { LP64_ONLY(incrementq(reg, value)) NOT_LP64(incrementl(reg, value)) ; }
@@ -1585,6 +1690,9 @@
   void decode_heap_oop_not_null(Register dst, Register src);
 
   void set_narrow_oop(Register dst, jobject obj);
+  void set_narrow_oop(Address dst, jobject obj);
+  void cmp_narrow_oop(Register dst, jobject obj);
+  void cmp_narrow_oop(Address dst, jobject obj);
 
   // if heap base register is used - reinit it with the correct value
   void reinit_heapbase();
@@ -1721,6 +1829,58 @@
   );
   void tlab_refill(Label& retry_tlab, Label& try_eden, Label& slow_case);
 
+  // interface method calling
+  void lookup_interface_method(Register recv_klass,
+                               Register intf_klass,
+                               RegisterOrConstant itable_index,
+                               Register method_result,
+                               Register scan_temp,
+                               Label& no_such_interface);
+
+  // Test sub_klass against super_klass, with fast and slow paths.
+
+  // The fast path produces a tri-state answer: yes / no / maybe-slow.
+  // One of the three labels can be NULL, meaning take the fall-through.
+  // If super_check_offset is -1, the value is loaded up from super_klass.
+  // No registers are killed, except temp_reg.
+  void check_klass_subtype_fast_path(Register sub_klass,
+                                     Register super_klass,
+                                     Register temp_reg,
+                                     Label* L_success,
+                                     Label* L_failure,
+                                     Label* L_slow_path,
+                RegisterOrConstant super_check_offset = RegisterOrConstant(-1));
+
+  // The rest of the type check; must be wired to a corresponding fast path.
+  // It does not repeat the fast path logic, so don't use it standalone.
+  // The temp_reg and temp2_reg can be noreg, if no temps are available.
+  // Updates the sub's secondary super cache as necessary.
+  // If set_cond_codes, condition codes will be Z on success, NZ on failure.
+  void check_klass_subtype_slow_path(Register sub_klass,
+                                     Register super_klass,
+                                     Register temp_reg,
+                                     Register temp2_reg,
+                                     Label* L_success,
+                                     Label* L_failure,
+                                     bool set_cond_codes = false);
+
+  // Simplified, combined version, good for typical uses.
+  // Falls through on failure.
+  void check_klass_subtype(Register sub_klass,
+                           Register super_klass,
+                           Register temp_reg,
+                           Label& L_success);
+
+  // method handles (JSR 292)
+  void check_method_handle_type(Register mtype_reg, Register mh_reg,
+                                Register temp_reg,
+                                Label& wrong_method_type);
+  void load_method_handle_vmslots(Register vmslots_reg, Register mh_reg,
+                                  Register temp_reg);
+  void jump_to_method_handle_entry(Register mh_reg, Register temp_reg);
+  Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
+
+
   //----
   void set_word_if_not_zero(Register reg); // sets reg to 1 if not zero, otherwise 0
 
@@ -1763,6 +1923,10 @@
   // stack overflow + shadow pages.  Also, clobbers tmp
   void bang_stack_size(Register size, Register tmp);
 
+  virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
+                                                Register tmp,
+                                                int offset);
+
   // Support for serializing memory accesses between threads
   void serialize_memory(Register thread, Register tmp);
 
--- a/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 @@
 
 inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) {
   /* it's possible we could catch this special case implicitly */
-  if (op1 == 0x80000000 && op2 == -1) return op1;
+  if ((juint)op1 == 0x80000000 && op2 == -1) return op1;
   else return op1 / op2;
 }
 
@@ -231,7 +231,7 @@
 
 inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) {
   /* it's possible we could catch this special case implicitly */
-  if (op1 == 0x80000000 && op2 == -1) return 0;
+  if ((juint)op1 == 0x80000000 && op2 == -1) return 0;
   else return op1 % op2;
 }
 
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +439,7 @@
 
   // if the method does not have an exception handler, then there is
   // no reason to search for one
-  if (compilation()->has_exception_handlers() || JvmtiExport::can_post_exceptions()) {
+  if (compilation()->has_exception_handlers() || compilation()->env()->jvmti_can_post_exceptions()) {
     // the exception oop and pc are in rax, and rdx
     // no other registers need to be preserved, so invalidate them
     __ invalidate_registers(false, true, true, false, true, true);
@@ -554,8 +554,8 @@
   __ jcc (Assembler::zero, noLoop);
 
   // compare first characters
-  __ load_unsigned_word(rcx, Address(rdi, 0));
-  __ load_unsigned_word(rbx, Address(rsi, 0));
+  __ load_unsigned_short(rcx, Address(rdi, 0));
+  __ load_unsigned_short(rbx, Address(rsi, 0));
   __ subl(rcx, rbx);
   __ jcc(Assembler::notZero, haveResult);
   // starting loop
@@ -574,8 +574,8 @@
   Label loop;
   __ align(wordSize);
   __ bind(loop);
-  __ load_unsigned_word(rcx, Address(rdi, rax, Address::times_2, 0));
-  __ load_unsigned_word(rbx, Address(rsi, rax, Address::times_2, 0));
+  __ load_unsigned_short(rcx, Address(rdi, rax, Address::times_2, 0));
+  __ load_unsigned_short(rbx, Address(rsi, rax, Address::times_2, 0));
   __ subl(rcx, rbx);
   __ jcc(Assembler::notZero, haveResult);
   __ increment(rax);
@@ -779,7 +779,7 @@
     case T_OBJECT:  // fall through
     case T_ARRAY:
       if (c->as_jobject() == NULL) {
-        __ movptr(as_Address(addr), (int32_t)NULL_WORD);
+        __ movptr(as_Address(addr), NULL_WORD);
       } else {
         if (is_literal_address(addr)) {
           ShouldNotReachHere();
@@ -1598,18 +1598,9 @@
 
     // get instance klass
     __ movptr(k_RInfo, Address(k_RInfo, objArrayKlass::element_klass_offset_in_bytes() + sizeof(oopDesc)));
-    // get super_check_offset
-    __ movl(Rtmp1, Address(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()));
-    // See if we get an immediate positive hit
-    __ cmpptr(k_RInfo, Address(klass_RInfo, Rtmp1, Address::times_1));
-    __ jcc(Assembler::equal, done);
-    // check for immediate negative hit
-    __ cmpl(Rtmp1, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-    __ jcc(Assembler::notEqual, *stub->entry());
-    // check for self
-    __ cmpptr(klass_RInfo, k_RInfo);
-    __ jcc(Assembler::equal, done);
-
+    // perform the fast part of the checking logic
+    __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, &done, stub->entry(), NULL);
+    // call out-of-line instance of __ check_klass_subtype_slow_path(...):
     __ push(klass_RInfo);
     __ push(k_RInfo);
     __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
@@ -1735,17 +1726,9 @@
         }
         __ bind(done);
       } else {
-        __ movl(Rtmp1, Address(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()));
-        // See if we get an immediate positive hit
-        __ cmpptr(k_RInfo, Address(klass_RInfo, Rtmp1, Address::times_1));
-        __ jcc(Assembler::equal, done);
-        // check for immediate negative hit
-        __ cmpl(Rtmp1, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-        __ jcc(Assembler::notEqual, *stub->entry());
-        // check for self
-        __ cmpptr(klass_RInfo, k_RInfo);
-        __ jcc(Assembler::equal, done);
-
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, &done, stub->entry(), NULL);
+        // call out-of-line instance of __ check_klass_subtype_slow_path(...):
         __ push(klass_RInfo);
         __ push(k_RInfo);
         __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
@@ -1821,23 +1804,15 @@
           __ pop(dst);
           __ jmp(done);
         }
-      } else {
-#else
-      { // YUCK
+      }
+        else // next block is unconditional if LP64:
 #endif // LP64
+      {
         assert(dst != klass_RInfo && dst != k_RInfo, "need 3 registers");
 
-        __ movl(dst, Address(k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()));
-        // See if we get an immediate positive hit
-        __ cmpptr(k_RInfo, Address(klass_RInfo, dst, Address::times_1));
-        __ jcc(Assembler::equal, one);
-        // check for immediate negative hit
-        __ cmpl(dst, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-        __ jcc(Assembler::notEqual, zero);
-        // check for self
-        __ cmpptr(klass_RInfo, k_RInfo);
-        __ jcc(Assembler::equal, one);
-
+        // perform the fast part of the checking logic
+        __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, dst, &one, &zero, NULL);
+        // call out-of-line instance of __ check_klass_subtype_slow_path(...):
         __ push(klass_RInfo);
         __ push(k_RInfo);
         __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
--- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -501,7 +501,7 @@
     LIRItem right(x->y(), this);
 
     left.load_item();
-    // dont load constants to save register
+    // don't load constants to save register
     right.load_nonconstant();
     rlock_result(x);
     arithmetic_op_long(x->op(), x->operand(), left.result(), right.result(), NULL);
--- a/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -258,7 +258,7 @@
     }
   }
 
-  if (DTraceAllocProbes) {
+  if (CURRENT_ENV->dtrace_alloc_probes()) {
     assert(obj == rax, "must be");
     call(RuntimeAddress(Runtime1::entry_for(Runtime1::dtrace_object_alloc_id)));
   }
@@ -291,7 +291,7 @@
   const Register len_zero = len;
   initialize_body(obj, arr_size, header_size * BytesPerWord, len_zero);
 
-  if (DTraceAllocProbes) {
+  if (CURRENT_ENV->dtrace_alloc_probes()) {
     assert(obj == rax, "must be");
     call(RuntimeAddress(Runtime1::entry_for(Runtime1::dtrace_object_alloc_id)));
   }
--- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
     movptr(rax, Address(thread, Thread::pending_exception_offset()));
     // make sure that the vm_results are cleared
     if (oop_result1->is_valid()) {
-      movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
+      movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
     }
     if (oop_result2->is_valid()) {
-      movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
+      movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
     }
     if (frame_size() == no_frame_size) {
       leave();
@@ -96,12 +96,12 @@
   // 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()), (int32_t)NULL_WORD);
+    movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
     verify_oop(oop_result1);
   }
   if (oop_result2->is_valid()) {
     movptr(oop_result2, Address(thread, JavaThread::vm_result_2_offset()));
-    movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
+    movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
     verify_oop(oop_result2);
   }
   return call_offset;
@@ -728,8 +728,8 @@
 
   // clear exception fields in JavaThread because they are no longer needed
   // (fields must be cleared because they are processed by GC otherwise)
-  __ movptr(Address(thread, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
-  __ movptr(Address(thread, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(thread, JavaThread::exception_oop_offset()), NULL_WORD);
+  __ movptr(Address(thread, JavaThread::exception_pc_offset()), NULL_WORD);
 
   // pop the stub frame off
   __ leave();
@@ -878,7 +878,7 @@
 
     // load and clear pending exception
     __ movptr(rax, Address(thread, Thread::pending_exception_offset()));
-    __ movptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
+    __ movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD);
 
     // check that there is really a valid exception
     __ verify_not_null_oop(rax);
@@ -971,14 +971,14 @@
         // load pending exception oop into rax,
         __ movptr(exception_oop, Address(thread, Thread::pending_exception_offset()));
         // clear pending exception
-        __ movptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
+        __ movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD);
 
         // load issuing PC (the return address for this stub) into rdx
         __ movptr(exception_pc, Address(rbp, 1*BytesPerWord));
 
         // make sure that the vm_results are cleared (may be unnecessary)
-        __ movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
-        __ movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
+        __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
+        __ movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
 
         // verify that that there is really a valid exception in rax,
         __ verify_not_null_oop(exception_oop);
@@ -1354,6 +1354,13 @@
 
     case slow_subtype_check_id:
       {
+        // Typical calling sequence:
+        // __ push(klass_RInfo);  // object klass or other subclass
+        // __ push(sup_k_RInfo);  // array element klass or other superclass
+        // __ call(slow_subtype_check);
+        // Note that the subclass is pushed first, and is therefore deepest.
+        // Previous versions of this code reversed the names 'sub' and 'super'.
+        // This was operationally harmless but made the code unreadable.
         enum layout {
           rax_off, SLOT2(raxH_off)
           rcx_off, SLOT2(rcxH_off)
@@ -1361,9 +1368,10 @@
           rdi_off, SLOT2(rdiH_off)
           // saved_rbp_off, SLOT2(saved_rbpH_off)
           return_off, SLOT2(returnH_off)
-          sub_off, SLOT2(subH_off)
-          super_off, SLOT2(superH_off)
-          framesize
+          sup_k_off, SLOT2(sup_kH_off)
+          klass_off, SLOT2(superH_off)
+          framesize,
+          result_off = klass_off  // deepest argument is also the return value
         };
 
         __ set_info("slow_subtype_check", dont_gc_arguments);
@@ -1373,19 +1381,14 @@
         __ push(rax);
 
         // This is called by pushing args and not with C abi
-        __ movptr(rsi, Address(rsp, (super_off) * VMRegImpl::stack_slot_size)); // super
-        __ movptr(rax, Address(rsp, (sub_off  ) * VMRegImpl::stack_slot_size)); // sub
-
-        __ movptr(rdi,Address(rsi,sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()));
-        // since size is postive movl does right thing on 64bit
-        __ movl(rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));
-        __ addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
+        __ movptr(rsi, Address(rsp, (klass_off) * VMRegImpl::stack_slot_size)); // subclass
+        __ movptr(rax, Address(rsp, (sup_k_off) * VMRegImpl::stack_slot_size)); // superclass
 
         Label miss;
-        __ repne_scan();
-        __ jcc(Assembler::notEqual, miss);
-        __ movptr(Address(rsi,sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()), rax);
-        __ movptr(Address(rsp, (super_off) * VMRegImpl::stack_slot_size), 1); // result
+        __ check_klass_subtype_slow_path(rsi, rax, rcx, rdi, NULL, &miss);
+
+        // fallthrough on success:
+        __ movptr(Address(rsp, (result_off) * VMRegImpl::stack_slot_size), 1); // result
         __ pop(rax);
         __ pop(rcx);
         __ pop(rsi);
@@ -1393,7 +1396,7 @@
         __ ret(0);
 
         __ bind(miss);
-        __ movptr(Address(rsp, (super_off) * VMRegImpl::stack_slot_size), 0); // result
+        __ movptr(Address(rsp, (result_off) * VMRegImpl::stack_slot_size), NULL_WORD); // result
         __ pop(rax);
         __ pop(rcx);
         __ pop(rsi);
--- a/src/cpu/x86/vm/cppInterpreter_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/cppInterpreter_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -513,17 +513,18 @@
     // compute full expression stack limit
 
     const Address size_of_stack    (rbx, methodOopDesc::max_stack_offset());
-    __ load_unsigned_word(rdx, size_of_stack);                            // get size of expression stack in words
+    const int extra_stack = 0; //6815692//methodOopDesc::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
-    __ lea(rsp, Address(rsp, rdx, Address::times_ptr));
+    __ lea(rsp, Address(rsp, rdx, Address::times_ptr, -extra_stack));
     __ movptr(STATE(_stack_limit), rsp);
   }
 
 #ifdef _LP64
   // Make sure stack is properly aligned and sized for the abi
   __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows
-  __ andptr(rsp, -16); // must be 16 byte boundry (see amd64 ABI)
+  __ andptr(rsp, -16); // must be 16 byte boundary (see amd64 ABI)
 #endif // _LP64
 
 
@@ -594,7 +595,7 @@
   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax);
 
   // for c++ interpreter can rsi really be munged?
-  __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter)));                               // restore state
+  __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter)));                               // restore state
   __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method)));            // restore method
   __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals)));            // get locals pointer
 
@@ -658,9 +659,10 @@
     const Address size_of_stack    (rbx, methodOopDesc::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 one_monitor = frame::interpreter_frame_monitor_size() * wordSize;
-  __ load_unsigned_word(rax, size_of_stack);                            // get size of expression stack in words
-  __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor));
+    const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize;
+    const int extra_stack = 0; //6815692//methodOopDesc::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));
 
 #ifdef ASSERT
@@ -863,13 +865,13 @@
     __ bind(notByte);
     __ cmpl(rdx, stos);
     __ jcc(Assembler::notEqual, notShort);
-    __ load_signed_word(rax, field_address);
+    __ load_signed_short(rax, field_address);
     __ jmp(xreturn_path);
 
     __ bind(notShort);
     __ cmpl(rdx, ctos);
     __ jcc(Assembler::notEqual, notChar);
-    __ load_unsigned_word(rax, field_address);
+    __ load_unsigned_short(rax, field_address);
     __ jmp(xreturn_path);
 
     __ bind(notChar);
@@ -937,7 +939,7 @@
   const Register locals = rdi;
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // rbx: methodOop
   // rcx: size of parameters
@@ -970,7 +972,7 @@
 #ifdef _LP64
     // duplicate the alignment rsp got after setting stack_base
     __ subptr(rax, frame::arg_reg_save_area_bytes); // windows
-    __ andptr(rax, -16); // must be 16 byte boundry (see amd64 ABI)
+    __ andptr(rax, -16); // must be 16 byte boundary (see amd64 ABI)
 #endif // _LP64
     __ cmpptr(rax, rsp);
     __ jcc(Assembler::equal, L);
@@ -1062,12 +1064,12 @@
   // allocate space for parameters
   __ movptr(method, STATE(_method));
   __ verify_oop(method);
-  __ load_unsigned_word(t, Address(method, methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset()));
   __ shll(t, 2);
 #ifdef _LP64
   __ subptr(rsp, t);
   __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows
-  __ andptr(rsp, -16); // must be 16 byte boundry (see amd64 ABI)
+  __ andptr(rsp, -16); // must be 16 byte boundary (see amd64 ABI)
 #else
   __ addptr(t, 2*wordSize);     // allocate two more slots for JNIEnv and possible mirror
   __ subptr(rsp, t);
@@ -1659,11 +1661,11 @@
   // const Address monitor(rbp, frame::interpreter_frame_initial_sp_offset * wordSize - (int)sizeof(BasicObjectLock));
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // rbx: methodOop
   // rcx: size of parameters
-  __ load_unsigned_word(rdx, size_of_locals);                      // get size of locals in words
+  __ load_unsigned_short(rdx, size_of_locals);                     // get size of locals in words
 
   __ subptr(rdx, rcx);                                             // rdx = no. of additional locals
 
@@ -1829,7 +1831,7 @@
   Label unwind_and_forward;
 
   // restore state pointer.
-  __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
+  __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
 
   __ movptr(rbx, STATE(_method));                       // get method
 #ifdef _LP64
@@ -1877,14 +1879,14 @@
 
   // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
   if (UseSSE < 2) {
-    __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
+    __ 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()));
     __ 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
     __ jcc(Assembler::equal, do_double);
-#ifdef COMPILER2
+#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2)
     __ empty_FPU_stack();
 #endif // COMPILER2
     __ jmp(done_conv);
@@ -1928,7 +1930,7 @@
 
   // Restore rsi/r13 as compiled code may not preserve it
 
-  __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
+  __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
 
   // restore stack to what we had when we left (in case i2c extended it)
 
@@ -1942,14 +1944,14 @@
 #else
   __ movptr(rcx, STATE(_thread));                       // get thread
   __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
-#endif / __LP64
+#endif // _LP64
   __ jcc(Assembler::notZero, return_with_exception);
 
   // get method just executed
   __ movptr(rbx, STATE(_result._to_call._callee));
 
   // callee left args on top of expression stack, remove them
-  __ load_unsigned_word(rcx, Address(rbx, methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(rcx, Address(rbx, methodOopDesc::size_of_parameters_offset()));
   __ lea(rsp, Address(rsp, rcx, Address::times_ptr));
 
   __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset()));
@@ -2119,7 +2121,7 @@
   // Make it look like call_stub calling conventions
 
   // Get (potential) receiver
-  __ load_unsigned_word(rcx, size_of_parameters);                     // get size of parameters in words
+  __ load_unsigned_short(rcx, size_of_parameters);                   // get size of parameters in words
 
   ExternalAddress recursive(CAST_FROM_FN_PTR(address, RecursiveInterpreterActivation));
   __ pushptr(recursive.addr());                                      // make it look good in the debugger
@@ -2185,6 +2187,7 @@
     case Interpreter::empty                  : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry();        break;
     case Interpreter::accessor               : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry();     break;
     case Interpreter::abstract               : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry();     break;
+    case Interpreter::method_handle          : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break;
 
     case Interpreter::java_lang_math_sin     : // fall thru
     case Interpreter::java_lang_math_cos     : // fall thru
@@ -2224,7 +2227,8 @@
   const int overhead_size = sizeof(BytecodeInterpreter)/wordSize +
     ( frame::sender_sp_offset - frame::link_offset) + 2;
 
-  const int method_stack = (method->max_locals() + method->max_stack()) *
+  const int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
                            Interpreter::stackElementWords();
   return overhead_size + method_stack + stub_code;
 }
@@ -2289,7 +2293,8 @@
   // 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.
-  to_fill->_stack_limit = stack_base - (method->max_stack() + 1);
+  int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  to_fill->_stack_limit = stack_base - (method->max_stack() + extra_stack + 1);
   to_fill->_monitor_base = (BasicObjectLock*) monitor_base;
 
   to_fill->_self_link = to_fill;
@@ -2335,7 +2340,8 @@
                                                 monitor_size);
 
   // Now with full size expression stack
-  int full_frame_size = short_frame_size + method->max_stack() * BytesPerWord;
+  int extra_stack = 0; //6815692//methodOopDesc::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
   short_frame_size = short_frame_size + tempcount * BytesPerWord;
--- a/src/cpu/x86/vm/frame_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/frame_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -237,9 +237,8 @@
   return Interpreter::contains(pc());
 }
 
-int frame::frame_size() const {
-  RegisterMap map(JavaThread::current(), false);
-  frame sender = this->sender(&map);
+int frame::frame_size(RegisterMap* map) const {
+  frame sender = this->sender(map);
   return sender.sp() - sp();
 }
 
--- a/src/cpu/x86/vm/frame_x86.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/frame_x86.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -139,7 +139,7 @@
 #ifdef CC_INTERP
 
 inline interpreterState frame::get_interpreterState() const {
-  return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize ));
+  return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize ));
 }
 
 inline intptr_t*    frame::sender_sp()        const {
--- a/src/cpu/x86/vm/globals_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/globals_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -60,6 +60,7 @@
 define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+1));
 #endif // AMD64
 define_pd_global(intx,  InlineFrequencyCount,     100);
+define_pd_global(intx,  InlineSmallCode,          1000);
 define_pd_global(intx,  PreInflateSpin,           10);
 
 define_pd_global(intx, StackYellowPages, 2);
--- a/src/cpu/x86/vm/interp_masm_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +133,7 @@
                              + in_ByteSize(wordSize));
   switch (state) {
     case atos: movptr(rax, oop_addr);
-               movptr(oop_addr, (int32_t)NULL_WORD);
+               movptr(oop_addr, NULL_WORD);
                verify_oop(rax, state);                break;
     case ltos:
                movl(rdx, val_addr1);               // fall through
@@ -148,8 +148,8 @@
   }
   // Clean up tos value in the thread object
   movl(tos_addr,  (int32_t) ilgl);
-  movptr(val_addr,  (int32_t)NULL_WORD);
-  NOT_LP64(movl(val_addr1, (int32_t)NULL_WORD));
+  movptr(val_addr,  NULL_WORD);
+  NOT_LP64(movptr(val_addr1, NULL_WORD));
 }
 
 
@@ -189,20 +189,33 @@
 }
 
 
-void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset) {
+void InterpreterMacroAssembler::get_cache_index_at_bcp(Register reg, int bcp_offset, bool giant_index) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
+  if (!giant_index) {
+    load_unsigned_short(reg, Address(rsi, bcp_offset));
+  } else {
+    assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
+    movl(reg, Address(rsi, bcp_offset));
+    assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
+    notl(reg);  // convert to plain index
+  }
+}
+
+
+void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index,
+                                                           int bcp_offset, bool giant_index) {
   assert(cache != index, "must use different registers");
-  load_unsigned_word(index, Address(rsi, bcp_offset));
+  get_cache_index_at_bcp(index, bcp_offset, giant_index);
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
   shlptr(index, 2); // convert from field index to ConstantPoolCacheEntry index
 }
 
 
-void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset) {
-  assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
+void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp,
+                                                               int bcp_offset, bool giant_index) {
   assert(cache != tmp, "must use different register");
-  load_unsigned_word(tmp, Address(rsi, bcp_offset));
+  get_cache_index_at_bcp(tmp, bcp_offset, giant_index);
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
                                // convert from field index to ConstantPoolCacheEntry index
                                // and from word offset to byte offset
@@ -219,47 +232,16 @@
   // Resets EDI to locals.  Register sub_klass cannot be any of the above.
 void InterpreterMacroAssembler::gen_subtype_check( Register Rsub_klass, Label &ok_is_subtype ) {
   assert( Rsub_klass != rax, "rax, holds superklass" );
-  assert( Rsub_klass != rcx, "rcx holds 2ndary super array length" );
-  assert( Rsub_klass != rdi, "rdi holds 2ndary super array scan ptr" );
-  Label not_subtype, loop;
+  assert( Rsub_klass != rcx, "used as a temp" );
+  assert( Rsub_klass != rdi, "used as a temp, restored from locals" );
 
   // Profile the not-null value's klass.
-  profile_typecheck(rcx, Rsub_klass, rdi); // blows rcx, rdi
-
-  // Load the super-klass's check offset into ECX
-  movl( rcx, Address(rax, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes() ) );
-  // Load from the sub-klass's super-class display list, or a 1-word cache of
-  // the secondary superclass list, or a failing value with a sentinel offset
-  // if the super-klass is an interface or exceptionally deep in the Java
-  // hierarchy and we have to scan the secondary superclass list the hard way.
-  // See if we get an immediate positive hit
-  cmpptr( rax, Address(Rsub_klass,rcx,Address::times_1) );
-  jcc( Assembler::equal,ok_is_subtype );
+  profile_typecheck(rcx, Rsub_klass, rdi); // blows rcx, reloads rdi
 
-  // Check for immediate negative hit
-  cmpl( rcx, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes() );
-  jcc( Assembler::notEqual, not_subtype );
-  // Check for self
-  cmpptr( Rsub_klass, rax );
-  jcc( Assembler::equal, ok_is_subtype );
+  // Do the check.
+  check_klass_subtype(Rsub_klass, rax, rcx, ok_is_subtype); // blows rcx
 
-  // Now do a linear scan of the secondary super-klass chain.
-  movptr( rdi, Address(Rsub_klass, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()) );
-  // EDI holds the objArrayOop of secondary supers.
-  movl( rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));// Load the array length
-  // Skip to start of data; also clear Z flag incase ECX is zero
-  addptr( rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT) );
-  // Scan ECX words at [EDI] for occurance of EAX
-  // Set NZ/Z based on last compare
-  repne_scan();
-  restore_locals();           // Restore EDI; Must not blow flags
-  // Not equal?
-  jcc( Assembler::notEqual, not_subtype );
-  // Must be equal but missed in cache.  Update cache.
-  movptr( Address(Rsub_klass, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()), rax );
-  jmp( ok_is_subtype );
-
-  bind(not_subtype);
+  // Profile the failure of the check.
   profile_typecheck_failed(rcx); // blows rcx
 }
 
@@ -586,13 +568,18 @@
 }
 
 
-// Jump to from_interpreted entry of a call unless single stepping is possible
-// in this thread in which case we must call the i2i entry
-void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
+void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {
   // set sender sp
   lea(rsi, Address(rsp, wordSize));
   // record last_sp
   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), rsi);
+}
+
+
+// Jump to from_interpreted entry of a call unless single stepping is possible
+// in this thread in which case we must call the i2i entry
+void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
+  prepare_to_jump_from_interpreted();
 
   if (JvmtiExport::can_post_interpreter_events()) {
     Label run_compiled_code;
@@ -944,7 +931,7 @@
     movptr(obj_reg, Address(lock_reg, BasicObjectLock::obj_offset_in_bytes ()));
 
     // Free entry
-    movptr(Address(lock_reg, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD);
+    movptr(Address(lock_reg, BasicObjectLock::obj_offset_in_bytes()), NULL_WORD);
 
     if (UseBiasedLocking) {
       biased_locking_exit(obj_reg, header_reg, done);
@@ -1031,7 +1018,7 @@
 
   // 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_word(rdx, Address(rcx, in_bytes(DataLayout::bci_offset())));
+  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()));
   cmpptr(rdx, rsi);
@@ -1240,7 +1227,9 @@
 }
 
 
-void InterpreterMacroAssembler::profile_virtual_call(Register receiver, Register mdp, Register reg2) {
+void InterpreterMacroAssembler::profile_virtual_call(Register receiver, Register mdp,
+                                                     Register reg2,
+                                                     bool receiver_can_be_null) {
   if (ProfileInterpreter) {
     Label profile_continue;
 
@@ -1250,8 +1239,15 @@
     // We are making a call.  Increment the count.
     increment_mdp_data_at(mdp, in_bytes(CounterData::count_offset()));
 
+    Label skip_receiver_profile;
+    if (receiver_can_be_null) {
+      testptr(receiver, receiver);
+      jcc(Assembler::zero, skip_receiver_profile);
+    }
+
     // Record the receiver type.
     record_klass_in_profile(receiver, mdp, reg2);
+    bind(skip_receiver_profile);
 
     // The method data pointer needs to be updated to reflect the new target.
     update_mdp_by_constant(mdp,
@@ -1376,6 +1372,8 @@
     // If no method data exists, go to profile_continue.
     test_method_data_pointer(mdp, profile_continue);
 
+    set_mdp_flag_at(mdp, BitData::null_seen_byte_constant());
+
     // The method data pointer needs to be updated.
     int mdp_delta = in_bytes(BitData::bit_data_size());
     if (TypeProfileCasts) {
@@ -1512,6 +1510,15 @@
     call_VM_leaf(
       CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), rcx, rbx);
   }
+
+  // RedefineClasses() tracing support for obsolete method entry
+  if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+    get_thread(rcx);
+    get_method(rbx);
+    call_VM_leaf(
+      CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+      rcx, rbx);
+  }
 }
 
 
--- a/src/cpu/x86/vm/interp_masm_x86_32.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interp_masm_x86_32.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,9 @@
   void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::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);
-  void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset);
+  void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, bool giant_index = false);
+  void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false);
+  void get_cache_index_at_bcp(Register index, int bcp_offset, bool giant_index = false);
 
   // Expression stack
   void f2ieee();                                           // truncate ftos to 32bits
@@ -120,7 +121,7 @@
   void empty_expression_stack()                            {
        movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
       // NULL last_sp until next java call
-      movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+      movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
   }
 
   // Tagged stack helpers for swap and dup
@@ -161,6 +162,7 @@
 
 
   // jump to an invoked target
+  void prepare_to_jump_from_interpreted();
   void jump_from_interpreted(Register method, Register temp);
 
   // Returning from interpreted functions
@@ -225,7 +227,8 @@
   void profile_not_taken_branch(Register mdp);
   void profile_call(Register mdp);
   void profile_final_call(Register mdp);
-  void profile_virtual_call(Register receiver, Register mdp, Register scratch2);
+  void profile_virtual_call(Register receiver, Register mdp, Register scratch2,
+                            bool receiver_can_be_null = false);
   void profile_ret(Register return_bci, Register mdp);
   void profile_null_seen(Register mdp);
   void profile_typecheck(Register mdp, Register klass, Register scratch);
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
 #ifdef CC_INTERP
 void InterpreterMacroAssembler::get_method(Register reg) {
-  movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize)));
+  movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize)));
   movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method)));
 }
 #endif // CC_INTERP
@@ -190,7 +190,7 @@
                                                            int bcp_offset) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
   assert(cache != index, "must use different registers");
-  load_unsigned_word(index, Address(r13, bcp_offset));
+  load_unsigned_short(index, Address(r13, bcp_offset));
   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
@@ -203,7 +203,7 @@
                                                                int bcp_offset) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
   assert(cache != tmp, "must use different register");
-  load_unsigned_word(tmp, Address(r13, bcp_offset));
+  load_unsigned_short(tmp, Address(r13, bcp_offset));
   assert(sizeof(ConstantPoolCacheEntry) == 4 * wordSize, "adjust code below");
   // convert from field index to ConstantPoolCacheEntry index
   // and from word offset to byte offset
@@ -232,65 +232,13 @@
   assert(Rsub_klass != rcx, "rcx holds 2ndary super array length");
   assert(Rsub_klass != rdi, "rdi holds 2ndary super array scan ptr");
 
-  Label not_subtype, not_subtype_pop, loop;
-
   // Profile the not-null value's klass.
-  profile_typecheck(rcx, Rsub_klass, rdi); // blows rcx, rdi
-
-  // Load the super-klass's check offset into rcx
-  movl(rcx, Address(rax, sizeof(oopDesc) +
-                    Klass::super_check_offset_offset_in_bytes()));
-  // Load from the sub-klass's super-class display list, or a 1-word
-  // cache of the secondary superclass list, or a failing value with a
-  // sentinel offset if the super-klass is an interface or
-  // exceptionally deep in the Java hierarchy and we have to scan the
-  // secondary superclass list the hard way.  See if we get an
-  // immediate positive hit
-  cmpptr(rax, Address(Rsub_klass, rcx, Address::times_1));
-  jcc(Assembler::equal,ok_is_subtype);
-
-  // Check for immediate negative hit
-  cmpl(rcx, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes());
-  jcc( Assembler::notEqual, not_subtype );
-  // Check for self
-  cmpptr(Rsub_klass, rax);
-  jcc(Assembler::equal, ok_is_subtype);
+  profile_typecheck(rcx, Rsub_klass, rdi); // blows rcx, reloads rdi
 
-  // Now do a linear scan of the secondary super-klass chain.
-  movptr(rdi, Address(Rsub_klass, sizeof(oopDesc) +
-                      Klass::secondary_supers_offset_in_bytes()));
-  // rdi holds the objArrayOop of secondary supers.
-  // Load the array length
-  movl(rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));
-  // Skip to start of data; also clear Z flag incase rcx is zero
-  addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
-  // Scan rcx words at [rdi] for occurance of rax
-  // Set NZ/Z based on last compare
+  // Do the check.
+  check_klass_subtype(Rsub_klass, rax, rcx, ok_is_subtype); // blows rcx
 
-  // this part is kind 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 value
-  // before repne
-  if (UseCompressedOops) {
-    push(rax);
-    encode_heap_oop(rax);
-    repne_scanl();
-    // Not equal?
-    jcc(Assembler::notEqual, not_subtype_pop);
-    // restore heap oop here for movq
-    pop(rax);
-  } else {
-    repne_scan();
-    jcc(Assembler::notEqual, not_subtype);
-  }
-  // Must be equal but missed in cache.  Update cache.
-  movptr(Address(Rsub_klass, sizeof(oopDesc) +
-               Klass::secondary_super_cache_offset_in_bytes()), rax);
-  jmp(ok_is_subtype);
-
-  bind(not_subtype_pop);
-  // restore heap oop here for miss
-  if (UseCompressedOops) pop(rax);
-  bind(not_subtype);
+  // Profile the failure of the check.
   profile_typecheck_failed(rcx); // blows rcx
 }
 
@@ -603,13 +551,18 @@
   MacroAssembler::call_VM_leaf_base(entry_point, 3);
 }
 
-// Jump to from_interpreted entry of a call unless single stepping is possible
-// in this thread in which case we must call the i2i entry
-void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
+void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {
   // set sender sp
   lea(r13, Address(rsp, wordSize));
   // record last_sp
   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), r13);
+}
+
+
+// Jump to from_interpreted entry of a call unless single stepping is possible
+// in this thread in which case we must call the i2i entry
+void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
+  prepare_to_jump_from_interpreted();
 
   if (JvmtiExport::can_post_interpreter_events()) {
     Label run_compiled_code;
@@ -1063,8 +1016,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_word(c_rarg2,
-                     Address(c_rarg3, in_bytes(DataLayout::bci_offset())));
+  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()));
   cmpptr(c_rarg2, r13);
@@ -1456,6 +1409,8 @@
     // If no method data exists, go to profile_continue.
     test_method_data_pointer(mdp, profile_continue);
 
+    set_mdp_flag_at(mdp, BitData::null_seen_byte_constant());
+
     // The method data pointer needs to be updated.
     int mdp_delta = in_bytes(BitData::bit_data_size());
     if (TypeProfileCasts) {
@@ -1593,6 +1548,14 @@
     call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
                  r15_thread, c_rarg1);
   }
+
+  // RedefineClasses() tracing support for obsolete method entry
+  if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+    get_method(c_rarg1);
+    call_VM_leaf(
+      CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+      r15_thread, c_rarg1);
+  }
 }
 
 
--- a/src/cpu/x86/vm/interp_masm_x86_64.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interp_masm_x86_64.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +176,7 @@
   void dispatch_via (TosState state, address* table);
 
   // jump to an invoked target
+  void prepare_to_jump_from_interpreted();
   void jump_from_interpreted(Register method, Register temp);
 
 
--- a/src/cpu/x86/vm/interpreterGenerator_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interpreterGenerator_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +32,7 @@
   address generate_normal_entry(bool synchronized);
   address generate_native_entry(bool synchronized);
   address generate_abstract_entry(void);
+  address generate_method_handle_entry(void);
   address generate_math_entry(AbstractInterpreter::MethodKind kind);
   address generate_empty_entry(void);
   address generate_accessor_entry(void);
--- a/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   __ cmpptr(Address(from(), Interpreter::local_offset_in_bytes(from_offset)), (int32_t)NULL_WORD); // do not use temp() to avoid AGI
   Label L;
   __ jcc(Assembler::notZero, L);
-  __ movptr(temp(), ((int32_t)NULL_WORD));
+  __ movptr(temp(), NULL_WORD);
   __ bind(L);
   __ movptr(Address(to(), to_offset * wordSize), temp());
 }
@@ -110,7 +110,7 @@
   virtual void pass_object() {
     // pass address of from
     intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
-    *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
+    *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr;
     debug_only(verify_tag(frame::TagReference));
     _from -= Interpreter::stackElementSize();
    }
--- a/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -349,7 +349,7 @@
 
     if (_num_args < Argument::n_float_register_parameters_c-1) {
       *_reg_args++ = from_obj;
-      *_fp_identifiers |= (0x01 << (_num_args*2)); // mark as float
+      *_fp_identifiers |= (intptr_t)(0x01 << (_num_args*2)); // mark as float
       _num_args++;
     } else {
       *_to++ = from_obj;
@@ -364,7 +364,7 @@
 
     if (_num_args < Argument::n_float_register_parameters_c-1) {
       *_reg_args++ = from_obj;
-      *_fp_identifiers |= (0x3 << (_num_args*2)); // mark as double
+      *_fp_identifiers |= (intptr_t)(0x3 << (_num_args*2)); // mark as double
       _num_args++;
     } else {
       *_to++ = from_obj;
--- a/src/cpu/x86/vm/interpreter_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interpreter_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 +201,12 @@
   address entry_point = __ pc();
 
   // abstract method entry
-  // remove return address. Not really needed, since exception handling throws away expression stack
-  __ pop(rbx);
 
-  // adjust stack to what a normal return would do
-  __ mov(rsp, rsi);
+  //  pop return address, reset last_sp to NULL
+  __ empty_expression_stack();
+  __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
+  __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
+
   // throw exception
   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
   // the call_VM checks for exception, so we should never return here.
@@ -214,6 +215,20 @@
   return entry_point;
 }
 
+
+// Method handle invoker
+// Dispatch a method of the form java.dyn.MethodHandles::invoke(...)
+address InterpreterGenerator::generate_method_handle_entry(void) {
+  if (!EnableMethodHandles) {
+    return generate_abstract_entry();
+  }
+
+  address entry_point = MethodHandles::generate_method_handle_interpreter_entry(_masm);
+
+  return entry_point;
+}
+
+
 // This method tells the deoptimizer how big an interpreted frame must be:
 int AbstractInterpreter::size_activation(methodOop method,
                                          int tempcount,
--- a/src/cpu/x86/vm/interpreter_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/interpreter_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -294,6 +294,16 @@
 }
 
 
+// Method handle invoker
+// Dispatch a method of the form java.dyn.MethodHandles::invoke(...)
+address InterpreterGenerator::generate_method_handle_entry(void) {
+  if (!EnableMethodHandles) {
+    return generate_abstract_entry();
+  }
+  return generate_abstract_entry(); //6815692//
+}
+
+
 // Empty method, generate a very fast return.
 
 address InterpreterGenerator::generate_empty_entry(void) {
--- a/src/cpu/x86/vm/jni_x86.h	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/jni_x86.h	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 @@
   #define JNICALL
 
   typedef int jint;
+
+#ifdef _LP64
+  typedef long jlong;
+#else
   typedef long long jlong;
+#endif
+
 #else
   #define JNIEXPORT __declspec(dllexport)
   #define JNIIMPORT __declspec(dllimport)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,1133 @@
+/*
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+#include "incls/_precompiled.incl"
+#include "incls/_methodHandles_x86.cpp.incl"
+
+#define __ _masm->
+
+address MethodHandleEntry::start_compiled_entry(MacroAssembler* _masm,
+                                                address interpreted_entry) {
+  // Just before the actual machine code entry point, allocate space
+  // for a MethodHandleEntry::Data record, so that we can manage everything
+  // from one base pointer.
+  __ align(wordSize);
+  address target = __ pc() + sizeof(Data);
+  while (__ pc() < target) {
+    __ nop();
+    __ align(wordSize);
+  }
+
+  MethodHandleEntry* me = (MethodHandleEntry*) __ pc();
+  me->set_end_address(__ pc());         // set a temporary end_address
+  me->set_from_interpreted_entry(interpreted_entry);
+  me->set_type_checking_entry(NULL);
+
+  return (address) me;
+}
+
+MethodHandleEntry* MethodHandleEntry::finish_compiled_entry(MacroAssembler* _masm,
+                                                address start_addr) {
+  MethodHandleEntry* me = (MethodHandleEntry*) start_addr;
+  assert(me->end_address() == start_addr, "valid ME");
+
+  // Fill in the real end_address:
+  __ align(wordSize);
+  me->set_end_address(__ pc());
+
+  return me;
+}
+
+#ifdef ASSERT
+static void verify_argslot(MacroAssembler* _masm, Register rax_argslot,
+                           const char* error_message) {
+  // Verify that argslot lies within (rsp, rbp].
+  Label L_ok, L_bad;
+  __ cmpptr(rax_argslot, rbp);
+  __ jcc(Assembler::above, L_bad);
+  __ cmpptr(rsp, rax_argslot);
+  __ jcc(Assembler::below, L_ok);
+  __ bind(L_bad);
+  __ stop(error_message);
+  __ bind(L_ok);
+}
+#endif
+
+
+// Code generation
+address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm) {
+  // rbx: methodOop
+  // rcx: receiver method handle (must load from sp[MethodTypeForm.vmslots])
+  // rsi/r13: sender SP (must preserve; see prepare_to_jump_from_interpreted)
+  // rdx: garbage temp, blown away
+
+  Register rbx_method = rbx;
+  Register rcx_recv   = rcx;
+  Register rax_mtype  = rax;
+  Register rdx_temp   = rdx;
+
+  // emit WrongMethodType path first, to enable jccb back-branch from main path
+  Label wrong_method_type;
+  __ bind(wrong_method_type);
+  __ push(rax_mtype);       // required mtype
+  __ push(rcx_recv);        // bad mh (1st stacked argument)
+  __ jump(ExternalAddress(Interpreter::throw_WrongMethodType_entry()));
+
+  // here's where control starts out:
+  __ align(CodeEntryAlignment);
+  address entry_point = __ pc();
+
+  // fetch the MethodType from the method handle into rax (the 'check' register)
+  {
+    Register tem = rbx_method;
+    for (jint* pchase = methodOopDesc::method_type_offsets_chain(); (*pchase) != -1; pchase++) {
+      __ movptr(rax_mtype, Address(tem, *pchase));
+      tem = rax_mtype;          // in case there is another indirection
+    }
+  }
+  Register rbx_temp = rbx_method; // done with incoming methodOop
+
+  // given the MethodType, find out where the MH argument is buried
+  __ movptr(rdx_temp, Address(rax_mtype,
+                              __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, rbx_temp)));
+  __ movl(rdx_temp, Address(rdx_temp,
+                            __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, rbx_temp)));
+  __ movptr(rcx_recv, __ argument_address(rdx_temp));
+
+  __ check_method_handle_type(rax_mtype, rcx_recv, rdx_temp, wrong_method_type);
+  __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+
+  return entry_point;
+}
+
+// Helper to insert argument slots into the stack.
+// arg_slots must be a multiple of stack_move_unit() and <= 0
+void MethodHandles::insert_arg_slots(MacroAssembler* _masm,
+                                     RegisterOrConstant arg_slots,
+                                     int arg_mask,
+                                     Register rax_argslot,
+                                     Register rbx_temp, Register rdx_temp) {
+  assert_different_registers(rax_argslot, rbx_temp, rdx_temp,
+                             (!arg_slots.is_register() ? rsp : arg_slots.as_register()));
+
+#ifdef ASSERT
+  verify_argslot(_masm, rax_argslot, "insertion point must fall within current frame");
+  if (arg_slots.is_register()) {
+    Label L_ok, L_bad;
+    __ cmpptr(arg_slots.as_register(), (int32_t) NULL_WORD);
+    __ jcc(Assembler::greater, L_bad);
+    __ testl(arg_slots.as_register(), -stack_move_unit() - 1);
+    __ jcc(Assembler::zero, L_ok);
+    __ bind(L_bad);
+    __ stop("assert arg_slots <= 0 and clear low bits");
+    __ bind(L_ok);
+  } else {
+    assert(arg_slots.as_constant() <= 0, "");
+    assert(arg_slots.as_constant() % -stack_move_unit() == 0, "");
+  }
+#endif //ASSERT
+
+#ifdef _LP64
+  if (arg_slots.is_register()) {
+    // clean high bits of stack motion register (was loaded as an int)
+    __ movslq(arg_slots.as_register(), arg_slots.as_register());
+  }
+#endif
+
+  // Make space on the stack for the inserted argument(s).
+  // Then pull down everything shallower than rax_argslot.
+  // The stacked return address gets pulled down with everything else.
+  // That is, copy [rsp, argslot) downward by -size words.  In pseudo-code:
+  //   rsp -= size;
+  //   for (rdx = rsp + size; rdx < argslot; rdx++)
+  //     rdx[-size] = rdx[0]
+  //   argslot -= size;
+  __ mov(rdx_temp, rsp);                        // source pointer for copy
+  __ lea(rsp, Address(rsp, arg_slots, Address::times_ptr));
+  {
+    Label loop;
+    __ bind(loop);
+    // pull one word down each time through the loop
+    __ movptr(rbx_temp, Address(rdx_temp, 0));
+    __ movptr(Address(rdx_temp, arg_slots, Address::times_ptr), rbx_temp);
+    __ addptr(rdx_temp, wordSize);
+    __ cmpptr(rdx_temp, rax_argslot);
+    __ jcc(Assembler::less, loop);
+  }
+
+  // Now move the argslot down, to point to the opened-up space.
+  __ lea(rax_argslot, Address(rax_argslot, arg_slots, Address::times_ptr));
+
+  if (TaggedStackInterpreter && arg_mask != _INSERT_NO_MASK) {
+    // The caller has specified a bitmask of tags to put into the opened space.
+    // This only works when the arg_slots value is an assembly-time constant.
+    int constant_arg_slots = arg_slots.as_constant() / stack_move_unit();
+    int tag_offset = Interpreter::tag_offset_in_bytes() - Interpreter::value_offset_in_bytes();
+    for (int slot = 0; slot < constant_arg_slots; slot++) {
+      BasicType slot_type   = ((arg_mask & (1 << slot)) == 0 ? T_OBJECT : T_INT);
+      int       slot_offset = Interpreter::stackElementSize() * slot;
+      Address   tag_addr(rax_argslot, slot_offset + tag_offset);
+      __ movptr(tag_addr, frame::tag_for_basic_type(slot_type));
+    }
+    // Note that the new argument slots are tagged properly but contain
+    // garbage at this point.  The value portions must be initialized
+    // by the caller.  (Especially references!)
+  }
+}
+
+// Helper to remove argument slots from the stack.
+// arg_slots must be a multiple of stack_move_unit() and >= 0
+void MethodHandles::remove_arg_slots(MacroAssembler* _masm,
+                                    RegisterOrConstant arg_slots,
+                                    Register rax_argslot,
+                                    Register rbx_temp, Register rdx_temp) {
+  assert_different_registers(rax_argslot, rbx_temp, rdx_temp,
+                             (!arg_slots.is_register() ? rsp : arg_slots.as_register()));
+
+#ifdef ASSERT
+  {
+    // Verify that [argslot..argslot+size) lies within (rsp, rbp).
+    Label L_ok, L_bad;
+    __ lea(rbx_temp, Address(rax_argslot, arg_slots, Address::times_ptr));
+    __ cmpptr(rbx_temp, rbp);
+    __ jcc(Assembler::above, L_bad);
+    __ cmpptr(rsp, rax_argslot);
+    __ jcc(Assembler::below, L_ok);
+    __ bind(L_bad);
+    __ stop("deleted argument(s) must fall within current frame");
+    __ bind(L_ok);
+  }
+  if (arg_slots.is_register()) {
+    Label L_ok, L_bad;
+    __ cmpptr(arg_slots.as_register(), (int32_t) NULL_WORD);
+    __ jcc(Assembler::less, L_bad);
+    __ testl(arg_slots.as_register(), -stack_move_unit() - 1);
+    __ jcc(Assembler::zero, L_ok);
+    __ bind(L_bad);
+    __ stop("assert arg_slots >= 0 and clear low bits");
+    __ bind(L_ok);
+  } else {
+    assert(arg_slots.as_constant() >= 0, "");
+    assert(arg_slots.as_constant() % -stack_move_unit() == 0, "");
+  }
+#endif //ASSERT
+
+#ifdef _LP64
+  if (false) {                  // not needed, since register is positive
+    // clean high bits of stack motion register (was loaded as an int)
+    if (arg_slots.is_register())
+      __ movslq(arg_slots.as_register(), arg_slots.as_register());
+  }
+#endif
+
+  // Pull up everything shallower than rax_argslot.
+  // Then remove the excess space on the stack.
+  // The stacked return address gets pulled up with everything else.
+  // That is, copy [rsp, argslot) upward by size words.  In pseudo-code:
+  //   for (rdx = argslot-1; rdx >= rsp; --rdx)
+  //     rdx[size] = rdx[0]
+  //   argslot += size;
+  //   rsp += size;
+  __ lea(rdx_temp, Address(rax_argslot, -wordSize)); // source pointer for copy
+  {
+    Label loop;
+    __ bind(loop);
+    // pull one word up each time through the loop
+    __ movptr(rbx_temp, Address(rdx_temp, 0));
+    __ movptr(Address(rdx_temp, arg_slots, Address::times_ptr), rbx_temp);
+    __ addptr(rdx_temp, -wordSize);
+    __ cmpptr(rdx_temp, rsp);
+    __ jcc(Assembler::greaterEqual, loop);
+  }
+
+  // Now move the argslot up, to point to the just-copied block.
+  __ lea(rsp, Address(rsp, arg_slots, Address::times_ptr));
+  // And adjust the argslot address to point at the deletion point.
+  __ lea(rax_argslot, Address(rax_argslot, arg_slots, Address::times_ptr));
+}
+
+#ifndef PRODUCT
+void trace_method_handle_stub(const char* adaptername,
+                              oopDesc* mh,
+                              intptr_t* entry_sp,
+                              intptr_t* saved_sp) {
+  // called as a leaf from native code: do not block the JVM!
+  printf("MH %s "PTR_FORMAT" "PTR_FORMAT" "INTX_FORMAT"\n", adaptername, (void*)mh, entry_sp, entry_sp - saved_sp);
+}
+#endif //PRODUCT
+
+// Generate an "entry" field for a method handle.
+// This determines how the method handle will respond to calls.
+void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHandles::EntryKind ek) {
+  // Here is the register state during an interpreted call,
+  // as set up by generate_method_handle_interpreter_entry():
+  // - rbx: garbage temp (was MethodHandle.invoke methodOop, unused)
+  // - rcx: receiver method handle
+  // - rax: method handle type (only used by the check_mtype entry point)
+  // - rsi/r13: sender SP (must preserve; see prepare_to_jump_from_interpreted)
+  // - rdx: garbage temp, can blow away
+
+  Register rcx_recv    = rcx;
+  Register rax_argslot = rax;
+  Register rbx_temp    = rbx;
+  Register rdx_temp    = rdx;
+
+  guarantee(java_dyn_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets");
+
+  // some handy addresses
+  Address rbx_method_fie(     rbx,      methodOopDesc::from_interpreted_offset() );
+
+  Address rcx_mh_vmtarget(    rcx_recv, java_dyn_MethodHandle::vmtarget_offset_in_bytes() );
+  Address rcx_dmh_vmindex(    rcx_recv, sun_dyn_DirectMethodHandle::vmindex_offset_in_bytes() );
+
+  Address rcx_bmh_vmargslot(  rcx_recv, sun_dyn_BoundMethodHandle::vmargslot_offset_in_bytes() );
+  Address rcx_bmh_argument(   rcx_recv, sun_dyn_BoundMethodHandle::argument_offset_in_bytes() );
+
+  Address rcx_amh_vmargslot(  rcx_recv, sun_dyn_AdapterMethodHandle::vmargslot_offset_in_bytes() );
+  Address rcx_amh_argument(   rcx_recv, sun_dyn_AdapterMethodHandle::argument_offset_in_bytes() );
+  Address rcx_amh_conversion( rcx_recv, sun_dyn_AdapterMethodHandle::conversion_offset_in_bytes() );
+  Address vmarg;                // __ argument_address(vmargslot)
+
+  int tag_offset = -1;
+  if (TaggedStackInterpreter) {
+    tag_offset = Interpreter::tag_offset_in_bytes() - Interpreter::value_offset_in_bytes();
+    assert(tag_offset = wordSize, "stack grows as expected");
+  }
+
+  if (have_entry(ek)) {
+    __ nop();                   // empty stubs make SG sick
+    return;
+  }
+
+  address interp_entry = __ pc();
+  if (UseCompressedOops)  __ unimplemented("UseCompressedOops");
+
+#ifndef PRODUCT
+  if (TraceMethodHandles) {
+    __ push(rax); __ push(rbx); __ push(rcx); __ push(rdx); __ push(rsi); __ push(rdi);
+    __ lea(rax, Address(rsp, wordSize*6)); // entry_sp
+    // arguments:
+    __ push(rsi);               // saved_sp
+    __ push(rax);               // entry_sp
+    __ push(rcx);               // mh
+    __ push(rcx);
+    __ movptr(Address(rsp, 0), (intptr_t)entry_name(ek));
+    __ call_VM_leaf(CAST_FROM_FN_PTR(address, trace_method_handle_stub), 4);
+    __ pop(rdi); __ pop(rsi); __ pop(rdx); __ pop(rcx); __ pop(rbx); __ pop(rax);
+  }
+#endif //PRODUCT
+
+  switch ((int) ek) {
+  case _check_mtype:
+    {
+      // this stub is special, because it requires a live mtype argument
+      Register rax_mtype = rax;
+
+      // emit WrongMethodType path first, to enable jccb back-branch
+      Label wrong_method_type;
+      __ bind(wrong_method_type);
+      __ movptr(rdx_temp, ExternalAddress((address) &_entries[_wrong_method_type]));
+      __ jmp(Address(rdx_temp, MethodHandleEntry::from_interpreted_entry_offset_in_bytes()));
+      __ hlt();
+
+      interp_entry = __ pc();
+      __ check_method_handle_type(rax_mtype, rcx_recv, rdx_temp, wrong_method_type);
+      // now rax_mtype is dead; subsequent stubs will use it as a temp
+
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _wrong_method_type:
+    {
+      // this stub is special, because it requires a live mtype argument
+      Register rax_mtype = rax;
+
+      interp_entry = __ pc();
+      __ push(rax_mtype);       // required mtype
+      __ push(rcx_recv);        // random mh (1st stacked argument)
+      __ jump(ExternalAddress(Interpreter::throw_WrongMethodType_entry()));
+    }
+    break;
+
+  case _invokestatic_mh:
+  case _invokespecial_mh:
+    {
+      Register rbx_method = rbx_temp;
+      __ movptr(rbx_method, rcx_mh_vmtarget); // target is a methodOop
+      __ verify_oop(rbx_method);
+      // same as TemplateTable::invokestatic or invokespecial,
+      // minus the CP setup and profiling:
+      if (ek == _invokespecial_mh) {
+        // Must load & check the first argument before entering the target method.
+        __ load_method_handle_vmslots(rax_argslot, rcx_recv, rdx_temp);
+        __ movptr(rcx_recv, __ argument_address(rax_argslot, -1));
+        __ null_check(rcx_recv);
+        __ verify_oop(rcx_recv);
+      }
+      __ jmp(rbx_method_fie);
+    }
+    break;
+
+  case _invokevirtual_mh:
+    {
+      // same as TemplateTable::invokevirtual,
+      // minus the CP setup and profiling:
+
+      // pick out the vtable index and receiver offset from the MH,
+      // and then we can discard it:
+      __ load_method_handle_vmslots(rax_argslot, rcx_recv, rdx_temp);
+      Register rbx_index = rbx_temp;
+      __ movl(rbx_index, rcx_dmh_vmindex);
+      // Note:  The verifier allows us to ignore rcx_mh_vmtarget.
+      __ movptr(rcx_recv, __ argument_address(rax_argslot, -1));
+      __ null_check(rcx_recv, oopDesc::klass_offset_in_bytes());
+
+      // get receiver klass
+      Register rax_klass = rax_argslot;
+      __ load_klass(rax_klass, rcx_recv);
+      __ verify_oop(rax_klass);
+
+      // get target methodOop & entry point
+      const int base = instanceKlass::vtable_start_offset() * wordSize;
+      assert(vtableEntry::size() * wordSize == wordSize, "adjust the scaling in the code below");
+      Address vtable_entry_addr(rax_klass,
+                                rbx_index, Address::times_ptr,
+                                base + vtableEntry::method_offset_in_bytes());
+      Register rbx_method = rbx_temp;
+      __ movl(rbx_method, vtable_entry_addr);
+
+      __ verify_oop(rbx_method);
+      __ jmp(rbx_method_fie);
+    }
+    break;
+
+  case _invokeinterface_mh:
+    {
+      // same as TemplateTable::invokeinterface,
+      // minus the CP setup and profiling:
+
+      // pick out the interface and itable index from the MH.
+      __ load_method_handle_vmslots(rax_argslot, rcx_recv, rdx_temp);
+      Register rdx_intf  = rdx_temp;
+      Register rbx_index = rbx_temp;
+      __ movptr(rdx_intf,  rcx_mh_vmtarget);
+      __ movl(rbx_index,   rcx_dmh_vmindex);
+      __ movptr(rcx_recv, __ argument_address(rax_argslot, -1));
+      __ null_check(rcx_recv, oopDesc::klass_offset_in_bytes());
+
+      // get receiver klass
+      Register rax_klass = rax_argslot;
+      __ load_klass(rax_klass, rcx_recv);
+      __ verify_oop(rax_klass);
+
+      Register rcx_temp   = rcx_recv;
+      Register rbx_method = rbx_index;
+
+      // get interface klass
+      Label no_such_interface;
+      __ verify_oop(rdx_intf);
+      __ lookup_interface_method(rax_klass, rdx_intf,
+                                 // note: next two args must be the same:
+                                 rbx_index, rbx_method,
+                                 rcx_temp,
+                                 no_such_interface);
+
+      __ verify_oop(rbx_method);
+      __ jmp(rbx_method_fie);
+      __ hlt();
+
+      __ bind(no_such_interface);
+      // Throw an exception.
+      // For historical reasons, it will be IncompatibleClassChangeError.
+      __ should_not_reach_here(); // %%% FIXME NYI
+    }
+    break;
+
+  case _bound_ref_mh:
+  case _bound_int_mh:
+  case _bound_long_mh:
+  case _bound_ref_direct_mh:
+  case _bound_int_direct_mh:
+  case _bound_long_direct_mh:
+    {
+      bool direct_to_method = (ek >= _bound_ref_direct_mh);
+      BasicType arg_type = T_ILLEGAL;
+      if (ek == _bound_long_mh || ek == _bound_long_direct_mh) {
+        arg_type = T_LONG;
+      } else if (ek == _bound_int_mh || ek == _bound_int_direct_mh) {
+        arg_type = T_INT;
+      } else {
+        assert(ek == _bound_ref_mh || ek == _bound_ref_direct_mh, "must be ref");
+        arg_type = T_OBJECT;
+      }
+      int arg_slots = type2size[arg_type];
+      int arg_mask  = (arg_type == T_OBJECT ? _INSERT_REF_MASK :
+                       arg_slots == 1       ? _INSERT_INT_MASK :  _INSERT_LONG_MASK);
+
+      // make room for the new argument:
+      __ movl(rax_argslot, rcx_bmh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot));
+      insert_arg_slots(_masm, arg_slots * stack_move_unit(), arg_mask,
+                       rax_argslot, rbx_temp, rdx_temp);
+
+      // store bound argument into the new stack slot:
+      __ movptr(rbx_temp, rcx_bmh_argument);
+      Address prim_value_addr(rbx_temp, java_lang_boxing_object::value_offset_in_bytes(arg_type));
+      if (arg_type == T_OBJECT) {
+        __ movptr(Address(rax_argslot, 0), rbx_temp);
+      } else {
+        __ load_sized_value(rbx_temp, prim_value_addr,
+                            type2aelembytes(arg_type), is_signed_subword_type(arg_type));
+        __ movptr(Address(rax_argslot, 0), rbx_temp);
+#ifndef _LP64
+        if (arg_slots == 2) {
+          __ movl(rbx_temp, prim_value_addr.plus_disp(wordSize));
+          __ movl(Address(rax_argslot, Interpreter::stackElementSize()), rbx_temp);
+        }
+#endif //_LP64
+        break;
+      }
+
+      if (direct_to_method) {
+        Register rbx_method = rbx_temp;
+        __ movptr(rbx_method, rcx_mh_vmtarget);
+        __ verify_oop(rbx_method);
+        __ jmp(rbx_method_fie);
+      } else {
+        __ movptr(rcx_recv, rcx_mh_vmtarget);
+        __ verify_oop(rcx_recv);
+        __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+      }
+    }
+    break;
+
+  case _adapter_retype_only:
+    // immediately jump to the next MH layer:
+    __ movptr(rcx_recv, rcx_mh_vmtarget);
+    __ verify_oop(rcx_recv);
+    __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    // This is OK when all parameter types widen.
+    // It is also OK when a return type narrows.
+    break;
+
+  case _adapter_check_cast:
+    {
+      // temps:
+      Register rbx_klass = rbx_temp; // interesting AMH data
+
+      // check a reference argument before jumping to the next layer of MH:
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      vmarg = __ argument_address(rax_argslot);
+
+      // What class are we casting to?
+      __ movptr(rbx_klass, rcx_amh_argument); // this is a Class object!
+      __ movptr(rbx_klass, Address(rbx_klass, java_lang_Class::klass_offset_in_bytes()));
+
+      // get the new MH:
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      // (now we are done with the old MH)
+
+      Label done;
+      __ movptr(rdx_temp, vmarg);
+      __ testl(rdx_temp, rdx_temp);
+      __ jcc(Assembler::zero, done);          // no cast if null
+      __ load_klass(rdx_temp, rdx_temp);
+
+      // live at this point:
+      // - rbx_klass:  klass required by the target method
+      // - rdx_temp:   argument klass to test
+      // - rcx_recv:   method handle to invoke (after cast succeeds)
+      __ check_klass_subtype(rdx_temp, rbx_klass, rax_argslot, done);
+
+      // If we get here, the type check failed!
+      // Call the wrong_method_type stub, passing the failing argument type in rax.
+      Register rax_mtype = rax_argslot;
+      __ push(rbx_klass);       // missed klass (required type)
+      __ push(rdx_temp);        // bad actual type (1st stacked argument)
+      __ jump(ExternalAddress(Interpreter::throw_WrongMethodType_entry()));
+
+      __ bind(done);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_prim_to_prim:
+  case _adapter_ref_to_prim:
+    // handled completely by optimized cases
+    __ stop("init_AdapterMethodHandle should not issue this");
+    break;
+
+  case _adapter_opt_i2i:        // optimized subcase of adapt_prim_to_prim
+//case _adapter_opt_f2i:        // optimized subcase of adapt_prim_to_prim
+  case _adapter_opt_l2i:        // optimized subcase of adapt_prim_to_prim
+  case _adapter_opt_unboxi:     // optimized subcase of adapt_ref_to_prim
+    {
+      // perform an in-place conversion to int or an int subword
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      vmarg = __ argument_address(rax_argslot);
+
+      switch (ek) {
+      case _adapter_opt_i2i:
+        __ movl(rdx_temp, vmarg);
+        break;
+      case _adapter_opt_l2i:
+        {
+          // just delete the extra slot; on a little-endian machine we keep the first
+          __ lea(rax_argslot, __ argument_address(rax_argslot, 1));
+          remove_arg_slots(_masm, -stack_move_unit(),
+                           rax_argslot, rbx_temp, rdx_temp);
+          vmarg = Address(rax_argslot, -Interpreter::stackElementSize());
+          __ movl(rdx_temp, vmarg);
+        }
+        break;
+      case _adapter_opt_unboxi:
+        {
+          // Load the value up from the heap.
+          __ movptr(rdx_temp, vmarg);
+          int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT);
+#ifdef ASSERT
+          for (int bt = T_BOOLEAN; bt < T_INT; bt++) {
+            if (is_subword_type(BasicType(bt)))
+              assert(value_offset == java_lang_boxing_object::value_offset_in_bytes(BasicType(bt)), "");
+          }
+#endif
+          __ null_check(rdx_temp, value_offset);
+          __ movl(rdx_temp, Address(rdx_temp, value_offset));
+          // We load this as a word.  Because we are little-endian,
+          // the low bits will be correct, but the high bits may need cleaning.
+          // The vminfo will guide us to clean those bits.
+        }
+        break;
+      default:
+        assert(false, "");
+      }
+      goto finish_int_conversion;
+    }
+
+  finish_int_conversion:
+    {
+      Register rbx_vminfo = rbx_temp;
+      __ movl(rbx_vminfo, rcx_amh_conversion);
+      assert(CONV_VMINFO_SHIFT == 0, "preshifted");
+
+      // get the new MH:
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      // (now we are done with the old MH)
+
+      // original 32-bit vmdata word must be of this form:
+      //    | MBZ:16 | signBitCount:8 | srcDstTypes:8 | conversionOp:8 |
+      __ xchgl(rcx, rbx_vminfo);                // free rcx for shifts
+      __ shll(rdx_temp /*, rcx*/);
+      Label zero_extend, done;
+      __ testl(rcx, CONV_VMINFO_SIGN_FLAG);
+      __ jcc(Assembler::zero, zero_extend);
+
+      // this path is taken for int->byte, int->short
+      __ sarl(rdx_temp /*, rcx*/);
+      __ jmp(done);
+
+      __ bind(zero_extend);
+      // this is taken for int->char
+      __ shrl(rdx_temp /*, rcx*/);
+
+      __ bind(done);
+      __ movptr(vmarg, rdx_temp);
+      __ xchgl(rcx, rbx_vminfo);                // restore rcx_recv
+
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_opt_i2l:        // optimized subcase of adapt_prim_to_prim
+  case _adapter_opt_unboxl:     // optimized subcase of adapt_ref_to_prim
+    {
+      // perform an in-place int-to-long or ref-to-long conversion
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+
+      // on a little-endian machine we keep the first slot and add another after
+      __ lea(rax_argslot, __ argument_address(rax_argslot, 1));
+      insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK,
+                       rax_argslot, rbx_temp, rdx_temp);
+      Address vmarg1(rax_argslot, -Interpreter::stackElementSize());
+      Address vmarg2 = vmarg1.plus_disp(Interpreter::stackElementSize());
+
+      switch (ek) {
+      case _adapter_opt_i2l:
+        {
+          __ movl(rdx_temp, vmarg1);
+          __ sarl(rdx_temp, 31);  // __ extend_sign()
+          __ movl(vmarg2, rdx_temp); // store second word
+        }
+        break;
+      case _adapter_opt_unboxl:
+        {
+          // Load the value up from the heap.
+          __ movptr(rdx_temp, vmarg1);
+          int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_LONG);
+          assert(value_offset == java_lang_boxing_object::value_offset_in_bytes(T_DOUBLE), "");
+          __ null_check(rdx_temp, value_offset);
+          __ movl(rbx_temp, Address(rdx_temp, value_offset + 0*BytesPerInt));
+          __ movl(rdx_temp, Address(rdx_temp, value_offset + 1*BytesPerInt));
+          __ movl(vmarg1, rbx_temp);
+          __ movl(vmarg2, rdx_temp);
+        }
+        break;
+      default:
+        assert(false, "");
+      }
+
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_opt_f2d:        // optimized subcase of adapt_prim_to_prim
+  case _adapter_opt_d2f:        // optimized subcase of adapt_prim_to_prim
+    {
+      // perform an in-place floating primitive conversion
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot, 1));
+      if (ek == _adapter_opt_f2d) {
+        insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK,
+                         rax_argslot, rbx_temp, rdx_temp);
+      }
+      Address vmarg(rax_argslot, -Interpreter::stackElementSize());
+
+#ifdef _LP64
+      if (ek == _adapter_opt_f2d) {
+        __ movflt(xmm0, vmarg);
+        __ cvtss2sd(xmm0, xmm0);
+        __ movdbl(vmarg, xmm0);
+      } else {
+        __ movdbl(xmm0, vmarg);
+        __ cvtsd2ss(xmm0, xmm0);
+        __ movflt(vmarg, xmm0);
+      }
+#else //_LP64
+      if (ek == _adapter_opt_f2d) {
+        __ fld_s(vmarg);        // load float to ST0
+        __ fstp_s(vmarg);       // store single
+      } else if (!TaggedStackInterpreter) {
+        __ fld_d(vmarg);        // load double to ST0
+        __ fstp_s(vmarg);       // store single
+      } else {
+        Address vmarg_tag = vmarg.plus_disp(tag_offset);
+        Address vmarg2    = vmarg.plus_disp(Interpreter::stackElementSize());
+        // vmarg2_tag does not participate in this code
+        Register rbx_tag = rbx_temp;
+        __ movl(rbx_tag, vmarg_tag); // preserve tag
+        __ movl(rdx_temp, vmarg2); // get second word of double
+        __ movl(vmarg_tag, rdx_temp); // align with first word
+        __ fld_d(vmarg);        // load double to ST0
+        __ movl(vmarg_tag, rbx_tag); // restore tag
+        __ fstp_s(vmarg);       // store single
+      }
+#endif //_LP64
+
+      if (ek == _adapter_opt_d2f) {
+        remove_arg_slots(_masm, -stack_move_unit(),
+                         rax_argslot, rbx_temp, rdx_temp);
+      }
+
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_prim_to_ref:
+    __ unimplemented(entry_name(ek)); // %%% FIXME: NYI
+    break;
+
+  case _adapter_swap_args:
+  case _adapter_rot_args:
+    // handled completely by optimized cases
+    __ stop("init_AdapterMethodHandle should not issue this");
+    break;
+
+  case _adapter_opt_swap_1:
+  case _adapter_opt_swap_2:
+  case _adapter_opt_rot_1_up:
+  case _adapter_opt_rot_1_down:
+  case _adapter_opt_rot_2_up:
+  case _adapter_opt_rot_2_down:
+    {
+      int rotate = 0, swap_slots = 0;
+      switch ((int)ek) {
+      case _adapter_opt_swap_1:     swap_slots = 1; break;
+      case _adapter_opt_swap_2:     swap_slots = 2; break;
+      case _adapter_opt_rot_1_up:   swap_slots = 1; rotate++; break;
+      case _adapter_opt_rot_1_down: swap_slots = 1; rotate--; break;
+      case _adapter_opt_rot_2_up:   swap_slots = 2; rotate++; break;
+      case _adapter_opt_rot_2_down: swap_slots = 2; rotate--; break;
+      default: assert(false, "");
+      }
+
+      // the real size of the move must be doubled if TaggedStackInterpreter:
+      int swap_bytes = (int)( swap_slots * Interpreter::stackElementWords() * wordSize );
+
+      // 'argslot' is the position of the first argument to swap
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot));
+
+      // 'vminfo' is the second
+      Register rbx_destslot = rbx_temp;
+      __ movl(rbx_destslot, rcx_amh_conversion);
+      assert(CONV_VMINFO_SHIFT == 0, "preshifted");
+      __ andl(rbx_destslot, CONV_VMINFO_MASK);
+      __ lea(rbx_destslot, __ argument_address(rbx_destslot));
+      DEBUG_ONLY(verify_argslot(_masm, rbx_destslot, "swap point must fall within current frame"));
+
+      if (!rotate) {
+        for (int i = 0; i < swap_bytes; i += wordSize) {
+          __ movptr(rdx_temp, Address(rax_argslot , i));
+          __ push(rdx_temp);
+          __ movptr(rdx_temp, Address(rbx_destslot, i));
+          __ movptr(Address(rax_argslot, i), rdx_temp);
+          __ pop(rdx_temp);
+          __ movptr(Address(rbx_destslot, i), rdx_temp);
+        }
+      } else {
+        // push the first chunk, which is going to get overwritten
+        for (int i = swap_bytes; (i -= wordSize) >= 0; ) {
+          __ movptr(rdx_temp, Address(rax_argslot, i));
+          __ push(rdx_temp);
+        }
+
+        if (rotate > 0) {
+          // rotate upward
+          __ subptr(rax_argslot, swap_bytes);
+#ifdef ASSERT
+          {
+            // Verify that argslot > destslot, by at least swap_bytes.
+            Label L_ok;
+            __ cmpptr(rax_argslot, rbx_destslot);
+            __ jcc(Assembler::aboveEqual, L_ok);
+            __ stop("source must be above destination (upward rotation)");
+            __ bind(L_ok);
+          }
+#endif
+          // work argslot down to destslot, copying contiguous data upwards
+          // pseudo-code:
+          //   rax = src_addr - swap_bytes
+          //   rbx = dest_addr
+          //   while (rax >= rbx) *(rax + swap_bytes) = *(rax + 0), rax--;
+          Label loop;
+          __ bind(loop);
+          __ movptr(rdx_temp, Address(rax_argslot, 0));
+          __ movptr(Address(rax_argslot, swap_bytes), rdx_temp);
+          __ addptr(rax_argslot, -wordSize);
+          __ cmpptr(rax_argslot, rbx_destslot);
+          __ jcc(Assembler::aboveEqual, loop);
+        } else {
+          __ addptr(rax_argslot, swap_bytes);
+#ifdef ASSERT
+          {
+            // Verify that argslot < destslot, by at least swap_bytes.
+            Label L_ok;
+            __ cmpptr(rax_argslot, rbx_destslot);
+            __ jcc(Assembler::belowEqual, L_ok);
+            __ stop("source must be below destination (downward rotation)");
+            __ bind(L_ok);
+          }
+#endif
+          // work argslot up to destslot, copying contiguous data downwards
+          // pseudo-code:
+          //   rax = src_addr + swap_bytes
+          //   rbx = dest_addr
+          //   while (rax <= rbx) *(rax - swap_bytes) = *(rax + 0), rax++;
+          Label loop;
+          __ bind(loop);
+          __ movptr(rdx_temp, Address(rax_argslot, 0));
+          __ movptr(Address(rax_argslot, -swap_bytes), rdx_temp);
+          __ addptr(rax_argslot, wordSize);
+          __ cmpptr(rax_argslot, rbx_destslot);
+          __ jcc(Assembler::belowEqual, loop);
+        }
+
+        // pop the original first chunk into the destination slot, now free
+        for (int i = 0; i < swap_bytes; i += wordSize) {
+          __ pop(rdx_temp);
+          __ movptr(Address(rbx_destslot, i), rdx_temp);
+        }
+      }
+
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_dup_args:
+    {
+      // 'argslot' is the position of the first argument to duplicate
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot));
+
+      // 'stack_move' is negative number of words to duplicate
+      Register rdx_stack_move = rdx_temp;
+      __ movl(rdx_stack_move, rcx_amh_conversion);
+      __ sarl(rdx_stack_move, CONV_STACK_MOVE_SHIFT);
+
+      int argslot0_num = 0;
+      Address argslot0 = __ argument_address(RegisterOrConstant(argslot0_num));
+      assert(argslot0.base() == rsp, "");
+      int pre_arg_size = argslot0.disp();
+      assert(pre_arg_size % wordSize == 0, "");
+      assert(pre_arg_size > 0, "must include PC");
+
+      // remember the old rsp+1 (argslot[0])
+      Register rbx_oldarg = rbx_temp;
+      __ lea(rbx_oldarg, argslot0);
+
+      // move rsp down to make room for dups
+      __ lea(rsp, Address(rsp, rdx_stack_move, Address::times_ptr));
+
+      // compute the new rsp+1 (argslot[0])
+      Register rdx_newarg = rdx_temp;
+      __ lea(rdx_newarg, argslot0);
+
+      __ push(rdi);             // need a temp
+      // (preceding push must be done after arg addresses are taken!)
+
+      // pull down the pre_arg_size data (PC)
+      for (int i = -pre_arg_size; i < 0; i += wordSize) {
+        __ movptr(rdi, Address(rbx_oldarg, i));
+        __ movptr(Address(rdx_newarg, i), rdi);
+      }
+
+      // copy from rax_argslot[0...] down to new_rsp[1...]
+      // pseudo-code:
+      //   rbx = old_rsp+1
+      //   rdx = new_rsp+1
+      //   rax = argslot
+      //   while (rdx < rbx) *rdx++ = *rax++
+      Label loop;
+      __ bind(loop);
+      __ movptr(rdi, Address(rax_argslot, 0));
+      __ movptr(Address(rdx_newarg, 0), rdi);
+      __ addptr(rax_argslot, wordSize);
+      __ addptr(rdx_newarg, wordSize);
+      __ cmpptr(rdx_newarg, rbx_oldarg);
+      __ jcc(Assembler::less, loop);
+
+      __ pop(rdi);              // restore temp
+
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_drop_args:
+    {
+      // 'argslot' is the position of the first argument to nuke
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot));
+
+      __ push(rdi);             // need a temp
+      // (must do previous push after argslot address is taken)
+
+      // 'stack_move' is number of words to drop
+      Register rdi_stack_move = rdi;
+      __ movl(rdi_stack_move, rcx_amh_conversion);
+      __ sarl(rdi_stack_move, CONV_STACK_MOVE_SHIFT);
+      remove_arg_slots(_masm, rdi_stack_move,
+                       rax_argslot, rbx_temp, rdx_temp);
+
+      __ pop(rdi);              // restore temp
+
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+    }
+    break;
+
+  case _adapter_collect_args:
+    __ unimplemented(entry_name(ek)); // %%% FIXME: NYI
+    break;
+
+  case _adapter_spread_args:
+    // handled completely by optimized cases
+    __ stop("init_AdapterMethodHandle should not issue this");
+    break;
+
+  case _adapter_opt_spread_0:
+  case _adapter_opt_spread_1:
+  case _adapter_opt_spread_more:
+    {
+      // spread an array out into a group of arguments
+      int length_constant = -1;
+      switch (ek) {
+      case _adapter_opt_spread_0: length_constant = 0; break;
+      case _adapter_opt_spread_1: length_constant = 1; break;
+      }
+
+      // find the address of the array argument
+      __ movl(rax_argslot, rcx_amh_vmargslot);
+      __ lea(rax_argslot, __ argument_address(rax_argslot));
+
+      // grab some temps
+      { __ push(rsi); __ push(rdi); }
+      // (preceding pushes must be done after argslot address is taken!)
+#define UNPUSH_RSI_RDI \
+      { __ pop(rdi); __ pop(rsi); }
+
+      // arx_argslot points both to the array and to the first output arg
+      vmarg = Address(rax_argslot, 0);
+
+      // Get the array value.
+      Register  rsi_array       = rsi;
+      Register  rdx_array_klass = rdx_temp;
+      BasicType elem_type       = T_OBJECT;
+      int       length_offset   = arrayOopDesc::length_offset_in_bytes();
+      int       elem0_offset    = arrayOopDesc::base_offset_in_bytes(elem_type);
+      __ movptr(rsi_array, vmarg);
+      Label skip_array_check;
+      if (length_constant == 0) {
+        __ testptr(rsi_array, rsi_array);
+        __ jcc(Assembler::zero, skip_array_check);
+      }
+      __ null_check(rsi_array, oopDesc::klass_offset_in_bytes());
+      __ load_klass(rdx_array_klass, rsi_array);
+
+      // Check the array type.
+      Register rbx_klass = rbx_temp;
+      __ movptr(rbx_klass, rcx_amh_argument); // this is a Class object!
+      __ movptr(rbx_klass, Address(rbx_klass, java_lang_Class::klass_offset_in_bytes()));
+
+      Label ok_array_klass, bad_array_klass, bad_array_length;
+      __ check_klass_subtype(rdx_array_klass, rbx_klass, rdi, ok_array_klass);
+      // If we get here, the type check failed!
+      __ jmp(bad_array_klass);
+      __ bind(ok_array_klass);
+
+      // Check length.
+      if (length_constant >= 0) {
+        __ cmpl(Address(rsi_array, length_offset), length_constant);
+      } else {
+        Register rbx_vminfo = rbx_temp;
+        __ movl(rbx_vminfo, rcx_amh_conversion);
+        assert(CONV_VMINFO_SHIFT == 0, "preshifted");
+        __ andl(rbx_vminfo, CONV_VMINFO_MASK);
+        __ cmpl(rbx_vminfo, Address(rsi_array, length_offset));
+      }
+      __ jcc(Assembler::notEqual, bad_array_length);
+
+      Register rdx_argslot_limit = rdx_temp;
+
+      // Array length checks out.  Now insert any required stack slots.
+      if (length_constant == -1) {
+        // Form a pointer to the end of the affected region.
+        __ lea(rdx_argslot_limit, Address(rax_argslot, Interpreter::stackElementSize()));
+        // 'stack_move' is negative number of words to insert
+        Register rdi_stack_move = rdi;
+        __ movl(rdi_stack_move, rcx_amh_conversion);
+        __ sarl(rdi_stack_move, CONV_STACK_MOVE_SHIFT);
+        Register rsi_temp = rsi_array;  // spill this
+        insert_arg_slots(_masm, rdi_stack_move, -1,
+                         rax_argslot, rbx_temp, rsi_temp);
+        // reload the array (since rsi was killed)
+        __ movptr(rsi_array, vmarg);
+      } else if (length_constant > 1) {
+        int arg_mask = 0;
+        int new_slots = (length_constant - 1);
+        for (int i = 0; i < new_slots; i++) {
+          arg_mask <<= 1;
+          arg_mask |= _INSERT_REF_MASK;
+        }
+        insert_arg_slots(_masm, new_slots * stack_move_unit(), arg_mask,
+                         rax_argslot, rbx_temp, rdx_temp);
+      } else if (length_constant == 1) {
+        // no stack resizing required
+      } else if (length_constant == 0) {
+        remove_arg_slots(_masm, -stack_move_unit(),
+                         rax_argslot, rbx_temp, rdx_temp);
+      }
+
+      // Copy from the array to the new slots.
+      // Note: Stack change code preserves integrity of rax_argslot pointer.
+      // So even after slot insertions, rax_argslot still points to first argument.
+      if (length_constant == -1) {
+        // [rax_argslot, rdx_argslot_limit) is the area we are inserting into.
+        Register rsi_source = rsi_array;
+        __ lea(rsi_source, Address(rsi_array, elem0_offset));
+        Label loop;
+        __ bind(loop);
+        __ movptr(rbx_temp, Address(rsi_source, 0));
+        __ movptr(Address(rax_argslot, 0), rbx_temp);
+        __ addptr(rsi_source, type2aelembytes(elem_type));
+        if (TaggedStackInterpreter) {
+          __ movptr(Address(rax_argslot, tag_offset),
+                    frame::tag_for_basic_type(elem_type));
+        }
+        __ addptr(rax_argslot, Interpreter::stackElementSize());
+        __ cmpptr(rax_argslot, rdx_argslot_limit);
+        __ jcc(Assembler::less, loop);
+      } else if (length_constant == 0) {
+        __ bind(skip_array_check);
+        // nothing to copy
+      } else {
+        int elem_offset = elem0_offset;
+        int slot_offset = 0;
+        for (int index = 0; index < length_constant; index++) {
+          __ movptr(rbx_temp, Address(rsi_array, elem_offset));
+          __ movptr(Address(rax_argslot, slot_offset), rbx_temp);
+          elem_offset += type2aelembytes(elem_type);
+          if (TaggedStackInterpreter) {
+            __ movptr(Address(rax_argslot, slot_offset + tag_offset),
+                      frame::tag_for_basic_type(elem_type));
+          }
+          slot_offset += Interpreter::stackElementSize();
+        }
+      }
+
+      // Arguments are spread.  Move to next method handle.
+      UNPUSH_RSI_RDI;
+      __ movptr(rcx_recv, rcx_mh_vmtarget);
+      __ jump_to_method_handle_entry(rcx_recv, rdx_temp);
+
+      __ bind(bad_array_klass);
+      UNPUSH_RSI_RDI;
+      __ stop("bad array klass NYI");
+
+      __ bind(bad_array_length);
+      UNPUSH_RSI_RDI;
+      __ stop("bad array length NYI");
+
+#undef UNPUSH_RSI_RDI
+    }
+    break;
+
+  case _adapter_flyby:
+  case _adapter_ricochet:
+    __ unimplemented(entry_name(ek)); // %%% FIXME: NYI
+    break;
+
+  default:  ShouldNotReachHere();
+  }
+  __ hlt();
+
+  address me_cookie = MethodHandleEntry::start_compiled_entry(_masm, interp_entry);
+  __ unimplemented(entry_name(ek)); // %%% FIXME: NYI
+
+  init_entry(ek, MethodHandleEntry::finish_compiled_entry(_masm, me_cookie));
+}
--- a/src/cpu/x86/vm/runtime_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/runtime_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -129,11 +129,11 @@
   // Get the exception pc in case we are deoptimized
   __ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
 #ifdef ASSERT
-  __ movptr(Address(rcx, JavaThread::exception_handler_pc_offset()), (int32_t)NULL_WORD);
-  __ movptr(Address(rcx, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::exception_handler_pc_offset()), NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::exception_pc_offset()), NULL_WORD);
 #endif
   // Clear the exception oop so GC no longer processes it as a root.
-  __ movptr(Address(rcx, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::exception_oop_offset()), NULL_WORD);
 
   __ pop(rcx);
 
--- a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +39,8 @@
 RuntimeStub*       SharedRuntime::_resolve_virtual_call_blob;
 RuntimeStub*       SharedRuntime::_resolve_static_call_blob;
 
+const int StackAlignmentInSlots = StackAlignmentInBytes / VMRegImpl::stack_slot_size;
+
 class RegisterSaver {
   enum { FPU_regs_live = 8 /*for the FPU stack*/+8/*eight more for XMM registers*/ };
   // Capture info about frame layout
@@ -1299,7 +1301,7 @@
 
   // Now compute actual number of stack words we need rounding to make
   // stack properly aligned.
-  stack_slots = round_to(stack_slots, 2 * VMRegImpl::slots_per_word);
+  stack_slots = round_to(stack_slots, StackAlignmentInSlots);
 
   int stack_size = stack_slots * VMRegImpl::stack_slot_size;
 
@@ -1532,6 +1534,13 @@
          thread, rax);
   }
 
+  // RedefineClasses() tracing support for obsolete method entry
+  if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+    __ movoop(rax, JNIHandles::make_local(method()));
+    __ call_VM_leaf(
+         CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+         thread, rax);
+  }
 
   // These are register definitions we need for locking/unlocking
   const Register swap_reg = rax;  // Must use rax, for cmpxchg instruction
@@ -1793,7 +1802,7 @@
   // reset handle block
   __ movptr(rcx, Address(thread, JavaThread::active_handles_offset()));
 
-  __ movptr(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
+  __ movptr(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
 
   // Any exception pending?
   __ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
@@ -1865,7 +1874,7 @@
     // Save pending exception around call to VM (which contains an EXCEPTION_MARK)
 
     __ pushptr(Address(thread, in_bytes(Thread::pending_exception_offset())));
-    __ movptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
+    __ movptr(Address(thread, in_bytes(Thread::pending_exception_offset())), NULL_WORD);
 
 
     // should be a peal
@@ -2431,7 +2440,7 @@
   __ get_thread(rdi);
   __ movptr(rdx, Address(rdi, JavaThread::exception_pc_offset()));
   __ movptr(Address(rbp, wordSize), rdx);
-  __ movptr(Address(rdi, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(rdi, JavaThread::exception_pc_offset()), NULL_WORD);
 
 #ifdef ASSERT
   // verify that there is really an exception oop in JavaThread
@@ -2489,8 +2498,8 @@
   __ jcc(Assembler::notEqual, noException);
   __ movptr(rax, Address(rcx, JavaThread::exception_oop_offset()));
   __ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
-  __ movptr(Address(rcx, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
-  __ movptr(Address(rcx, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::exception_oop_offset()), NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::exception_pc_offset()), NULL_WORD);
 
   __ verify_oop(rax);
 
@@ -2582,7 +2591,7 @@
           rbx); // Make it walkable
 #else /* CC_INTERP */
   // This value is corrected by layout_activation_impl
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
   __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
 #endif /* CC_INTERP */
   __ movptr(sp_temp, rsp);              // pass to next frame
@@ -2802,7 +2811,7 @@
           rbx); // Make it walkable
 #else /* CC_INTERP */
   // This value is corrected by layout_activation_impl
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD );
   __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
 #endif /* CC_INTERP */
   __ movptr(sp_temp, rsp);              // pass to next frame
@@ -3020,7 +3029,7 @@
   // exception pending => remove activation and forward to exception handler
 
   __ get_thread(thread);
-  __ movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
   __ movptr(rax, Address(thread, Thread::pending_exception_offset()));
   __ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
 
--- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +39,8 @@
 RuntimeStub*       SharedRuntime::_resolve_virtual_call_blob;
 RuntimeStub*       SharedRuntime::_resolve_static_call_blob;
 
+const int StackAlignmentInSlots = StackAlignmentInBytes / VMRegImpl::stack_slot_size;
+
 #define __ masm->
 
 class SimpleRuntimeFrame {
@@ -1286,7 +1288,7 @@
 
   // Now compute actual number of stack words we need rounding to make
   // stack properly aligned.
-  stack_slots = round_to(stack_slots, 4 * VMRegImpl::slots_per_word);
+  stack_slots = round_to(stack_slots, StackAlignmentInSlots);
 
   int stack_size = stack_slots * VMRegImpl::stack_slot_size;
 
@@ -1300,22 +1302,19 @@
 
   const Register ic_reg = rax;
   const Register receiver = j_rarg0;
-  const Register tmp = rdx;
 
   Label ok;
   Label exception_pending;
 
+  assert_different_registers(ic_reg, receiver, rscratch1);
   __ verify_oop(receiver);
-  __ push(tmp); // spill (any other registers free here???)
-  __ load_klass(tmp, receiver);
-  __ cmpq(ic_reg, tmp);
+  __ load_klass(rscratch1, receiver);
+  __ cmpq(ic_reg, rscratch1);
   __ jcc(Assembler::equal, ok);
 
-  __ pop(tmp);
   __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
 
   __ bind(ok);
-  __ pop(tmp);
 
   // Verified entry point must be aligned
   __ align(8);
@@ -1348,7 +1347,7 @@
     {
       Label L;
       __ mov(rax, rsp);
-      __ andptr(rax, -16); // must be 16 byte boundry (see amd64 ABI)
+      __ andptr(rax, -16); // must be 16 byte boundary (see amd64 ABI)
       __ cmpptr(rax, rsp);
       __ jcc(Assembler::equal, L);
       __ stop("improperly aligned stack");
@@ -1506,6 +1505,17 @@
     restore_args(masm, total_c_args, c_arg, out_regs);
   }
 
+  // RedefineClasses() tracing support for obsolete method entry
+  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()));
+    __ call_VM_leaf(
+      CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
+      r15_thread, c_rarg1);
+    restore_args(masm, total_c_args, c_arg, out_regs);
+  }
+
   // Lock a synchronized method
 
   // Register definitions used by locking and unlocking
@@ -2678,7 +2688,7 @@
   __ mov(rdi, rax);
 
    Label noException;
-  __ cmpl(r12, Deoptimization::Unpack_exception);   // Was exception pending?
+  __ cmpl(r14, Deoptimization::Unpack_exception);   // Was exception pending?
   __ jcc(Assembler::notEqual, noException);
   __ movptr(rax, Address(r15_thread, JavaThread::exception_oop_offset()));
   // QQQ this is useless it was NULL above
@@ -2954,10 +2964,16 @@
   __ pushptr(Address(rcx, 0));     // Save return address
   __ enter();                      // Save old & set new rbp
   __ subptr(rsp, rbx);             // Prolog
+#ifdef CC_INTERP
+  __ movptr(Address(rbp,
+                  -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))),
+            sender_sp); // Make it walkable
+#else // CC_INTERP
   __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize),
             sender_sp);            // Make it walkable
   // This value is corrected by layout_activation_impl
   __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
+#endif // CC_INTERP
   __ mov(sender_sp, rsp);          // Pass sender_sp to next frame
   __ addptr(rsi, wordSize);        // Bump array pointer (sizes)
   __ addptr(rcx, wordSize);        // Bump array pointer (pcs)
--- a/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
     __ get_thread(rcx);
     __ pop(rdx);
     __ movptr(rax, Address(rcx, Thread::pending_exception_offset()));
-    __ movptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
+    __ movptr(Address(rcx, Thread::pending_exception_offset()), NULL_WORD);
 
 #ifdef ASSERT
     // make sure exception is set
@@ -709,7 +709,7 @@
   //
   //  Input:
   //     start   -  starting address
-  //     end     -  element count
+  //     count   -  element count
   void  gen_write_ref_array_pre_barrier(Register start, Register count) {
     assert_different_registers(start, count);
     BarrierSet* bs = Universe::heap()->barrier_set();
@@ -757,7 +757,6 @@
           __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post)));
           __ addptr(rsp, 2*wordSize);
           __ popa();
-
         }
         break;
 
@@ -1310,81 +1309,51 @@
                            Address& super_check_offset_addr,
                            Address& super_klass_addr,
                            Register temp,
-                           Label* L_success_ptr, Label* L_failure_ptr) {
+                           Label* L_success, Label* L_failure) {
     BLOCK_COMMENT("type_check:");
 
     Label L_fallthrough;
-    bool fall_through_on_success = (L_success_ptr == NULL);
-    if (fall_through_on_success) {
-      L_success_ptr = &L_fallthrough;
-    } else {
-      L_failure_ptr = &L_fallthrough;
-    }
-    Label& L_success = *L_success_ptr;
-    Label& L_failure = *L_failure_ptr;
+#define LOCAL_JCC(assembler_con, label_ptr)                             \
+    if (label_ptr != NULL)  __ jcc(assembler_con, *(label_ptr));        \
+    else                    __ jcc(assembler_con, L_fallthrough) /*omit semi*/
 
+    // The following is a strange variation of the fast path which requires
+    // one less register, because needed values are on the argument stack.
+    // __ check_klass_subtype_fast_path(sub_klass, *super_klass*, temp,
+    //                                  L_success, L_failure, NULL);
     assert_different_registers(sub_klass, temp);
 
-    // a couple of useful fields in sub_klass:
-    int ss_offset = (klassOopDesc::header_size() * HeapWordSize +
-                     Klass::secondary_supers_offset_in_bytes());
     int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
                      Klass::secondary_super_cache_offset_in_bytes());
-    Address secondary_supers_addr(sub_klass, ss_offset);
-    Address super_cache_addr(     sub_klass, sc_offset);
 
     // if the pointers are equal, we are done (e.g., String[] elements)
     __ cmpptr(sub_klass, super_klass_addr);
-    __ jcc(Assembler::equal, L_success);
+    LOCAL_JCC(Assembler::equal, L_success);
 
     // check the supertype display:
     __ movl2ptr(temp, super_check_offset_addr);
     Address super_check_addr(sub_klass, temp, Address::times_1, 0);
     __ movptr(temp, super_check_addr); // load displayed supertype
     __ cmpptr(temp, super_klass_addr); // test the super type
-    __ jcc(Assembler::equal, L_success);
+    LOCAL_JCC(Assembler::equal, L_success);
 
     // if it was a primary super, we can just fail immediately
     __ cmpl(super_check_offset_addr, sc_offset);
-    __ jcc(Assembler::notEqual, L_failure);
-
-    // Now do a linear scan of the secondary super-klass chain.
-    // This code is rarely used, so simplicity is a virtue here.
-    inc_counter_np(SharedRuntime::_partial_subtype_ctr);
-    {
-      // The repne_scan instruction uses fixed registers, which we must spill.
-      // (We need a couple more temps in any case.)
-      __ push(rax);
-      __ push(rcx);
-      __ push(rdi);
-      assert_different_registers(sub_klass, rax, rcx, rdi);
+    LOCAL_JCC(Assembler::notEqual, L_failure);
 
-      __ movptr(rdi, secondary_supers_addr);
-      // Load the array length.
-      __ movl(rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));
-      // Skip to start of data.
-      __ addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
-      // Scan rcx words at [edi] for occurance of rax,
-      // Set NZ/Z based on last compare
-      __ movptr(rax, super_klass_addr);
-      __ repne_scan();
+    // The repne_scan instruction uses fixed registers, which will get spilled.
+    // We happen to know this works best when super_klass is in rax.
+    Register super_klass = temp;
+    __ movptr(super_klass, super_klass_addr);
+    __ check_klass_subtype_slow_path(sub_klass, super_klass, noreg, noreg,
+                                     L_success, L_failure);
 
-      // Unspill the temp. registers:
-      __ pop(rdi);
-      __ pop(rcx);
-      __ pop(rax);
-    }
-    __ jcc(Assembler::notEqual, L_failure);
+    __ bind(L_fallthrough);
 
-    // Success.  Cache the super we found and proceed in triumph.
-    __ movptr(temp, super_klass_addr); // note: rax, is dead
-    __ movptr(super_cache_addr, temp);
+    if (L_success == NULL) { BLOCK_COMMENT("L_success:"); }
+    if (L_failure == NULL) { BLOCK_COMMENT("L_failure:"); }
 
-    if (!fall_through_on_success)
-      __ jmp(L_success);
-
-    // Fall through on failure!
-    __ bind(L_fallthrough);
+#undef LOCAL_JCC
   }
 
   //
@@ -2249,6 +2218,16 @@
 
     // arraycopy stubs used by compilers
     generate_arraycopy_stubs();
+
+    // generic method handle stubs
+    if (EnableMethodHandles && SystemDictionary::MethodHandle_klass() != NULL) {
+      for (MethodHandles::EntryKind ek = MethodHandles::_EK_FIRST;
+           ek < MethodHandles::_EK_LIMIT;
+           ek = MethodHandles::EntryKind(1 + (int)ek)) {
+        StubCodeMark mark(this, "MethodHandle", MethodHandles::entry_name(ek));
+        MethodHandles::generate_method_handle_stub(_masm, ek);
+      }
+    }
   }
 
 
--- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -472,7 +472,7 @@
     // setup rax & rdx, remove return address & clear pending exception
     __ pop(rdx);
     __ movptr(rax, Address(r15_thread, Thread::pending_exception_offset()));
-    __ movptr(Address(r15_thread, Thread::pending_exception_offset()), (int)NULL_WORD);
+    __ movptr(Address(r15_thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
 
 #ifdef ASSERT
     // make sure exception is set
@@ -637,7 +637,7 @@
   address generate_orderaccess_fence() {
     StubCodeMark mark(this, "StubRoutines", "orderaccess_fence");
     address start = __ pc();
-    __ mfence();
+    __ membar(Assembler::StoreLoad);
     __ ret(0);
 
     return start;
@@ -954,9 +954,9 @@
     __ jcc(Assembler::zero, exit); // if obj is NULL it is OK
     // Check if the oop is in the right area of memory
     __ movptr(c_rarg2, rax);
-    __ movptr(c_rarg3, (int64_t) Universe::verify_oop_mask());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_oop_mask());
     __ andptr(c_rarg2, c_rarg3);
-    __ movptr(c_rarg3, (int64_t) Universe::verify_oop_bits());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_oop_bits());
     __ cmpptr(c_rarg2, c_rarg3);
     __ jcc(Assembler::notZero, error);
 
@@ -969,9 +969,9 @@
     __ 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, (int64_t) Universe::verify_klass_mask());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
     __ andptr(c_rarg2, c_rarg3);
-    __ movptr(c_rarg3, (int64_t) Universe::verify_klass_bits());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
     __ cmpptr(c_rarg2, c_rarg3);
     __ jcc(Assembler::notZero, error);
 
@@ -980,9 +980,9 @@
     __ 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, (int64_t) Universe::verify_klass_mask());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
     __ andptr(rax, c_rarg3);
-    __ movptr(c_rarg3, (int64_t) Universe::verify_klass_bits());
+    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
     __ cmpptr(rax, c_rarg3);
     __ jcc(Assembler::notZero, error);
 
@@ -1207,9 +1207,9 @@
           __ pusha();                      // push registers (overkill)
           // must compute element count unless barrier set interface is changed (other platforms supply count)
           assert_different_registers(start, end, scratch);
-          __ lea(scratch, Address(end, wordSize));
-          __ subptr(scratch, start);
-          __ shrptr(scratch, LogBytesPerWord);
+          __ lea(scratch, Address(end, BytesPerHeapOop));
+          __ subptr(scratch, start);               // subtract start to get #bytes
+          __ shrptr(scratch, LogBytesPerHeapOop);  // convert to element count
           __ mov(c_rarg0, start);
           __ mov(c_rarg1, scratch);
           __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post)));
@@ -1225,6 +1225,7 @@
           Label L_loop;
 
            __ shrptr(start, CardTableModRefBS::card_shift);
+           __ addptr(end, BytesPerHeapOop);
            __ shrptr(end, CardTableModRefBS::card_shift);
            __ subptr(end, start); // number of bytes to copy
 
@@ -2091,66 +2092,9 @@
 
     Label L_miss;
 
-    // a couple of useful fields in sub_klass:
-    int ss_offset = (klassOopDesc::header_size() * HeapWordSize +
-                     Klass::secondary_supers_offset_in_bytes());
-    int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
-                     Klass::secondary_super_cache_offset_in_bytes());
-    Address secondary_supers_addr(sub_klass, ss_offset);
-    Address super_cache_addr(     sub_klass, sc_offset);
-
-    // if the pointers are equal, we are done (e.g., String[] elements)
-    __ cmpptr(super_klass, sub_klass);
-    __ jcc(Assembler::equal, L_success);
-
-    // check the supertype display:
-    Address super_check_addr(sub_klass, super_check_offset, Address::times_1, 0);
-    __ cmpptr(super_klass, super_check_addr); // test the super type
-    __ jcc(Assembler::equal, L_success);
-
-    // if it was a primary super, we can just fail immediately
-    __ cmpl(super_check_offset, sc_offset);
-    __ jcc(Assembler::notEqual, L_miss);
-
-    // Now do a linear scan of the secondary super-klass chain.
-    // The repne_scan instruction uses fixed registers, which we must spill.
-    // (We need a couple more temps in any case.)
-    // This code is rarely used, so simplicity is a virtue here.
-    inc_counter_np(SharedRuntime::_partial_subtype_ctr);
-    {
-      __ push(rax);
-      __ push(rcx);
-      __ push(rdi);
-      assert_different_registers(sub_klass, super_klass, rax, rcx, rdi);
-
-      __ movptr(rdi, secondary_supers_addr);
-      // Load the array length.
-      __ movl(rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));
-      // Skip to start of data.
-      __ addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
-      // Scan rcx words at [rdi] for occurance of rax
-      // Set NZ/Z based on last compare
-      __ movptr(rax, super_klass);
-      if (UseCompressedOops) {
-        // Compare against compressed form.  Don't need to uncompress because
-        // looks like orig rax is restored in popq below.
-        __ encode_heap_oop(rax);
-        __ repne_scanl();
-      } else {
-        __ repne_scan();
-      }
-
-      // Unspill the temp. registers:
-      __ pop(rdi);
-      __ pop(rcx);
-      __ pop(rax);
-
-      __ jcc(Assembler::notEqual, L_miss);
-    }
-
-    // Success.  Cache the super we found and proceed in triumph.
-    __ movptr(super_cache_addr, super_klass); // note: rax is dead
-    __ jmp(L_success);
+    __ check_klass_subtype_fast_path(sub_klass, super_klass, noreg,        &L_success, &L_miss, NULL,
+                                     super_check_offset);
+    __ check_klass_subtype_slow_path(sub_klass, super_klass, noreg, noreg, &L_success, NULL);
 
     // Fall through on failure!
     __ BIND(L_miss);
@@ -2308,6 +2252,7 @@
     // and report their number to the caller.
     assert_different_registers(rax, r14_length, count, to, end_to, rcx);
     __ lea(end_to, to_element_addr);
+    __ addptr(end_to, -heapOopSize);      // make an inclusive end pointer
     gen_write_ref_array_post_barrier(to, end_to, rscratch1);
     __ movptr(rax, r14_length);           // original oops
     __ addptr(rax, count);                // K = (original - remaining) oops
@@ -2316,7 +2261,7 @@
 
     // Come here on success only.
     __ BIND(L_do_card_marks);
-    __ addptr(end_to, -wordSize);         // make an inclusive end pointer
+    __ addptr(end_to, -heapOopSize);         // make an inclusive end pointer
     gen_write_ref_array_post_barrier(to, end_to, rscratch1);
     __ xorptr(rax, rax);                  // return 0 on success
 
--- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -92,6 +92,33 @@
   return entry;
 }
 
+// Arguments are: required type at TOS+8, failing object (or NULL) at TOS+4.
+// pc at TOS (just for debugging)
+address TemplateInterpreterGenerator::generate_WrongMethodType_handler() {
+  address entry = __ pc();
+
+  __ pop(rbx);                  // actual failing object is at TOS
+  __ pop(rax);                  // required type is at TOS+4
+
+  __ verify_oop(rbx);
+  __ verify_oop(rax);
+
+  // Various method handle types use interpreter registers as temps.
+  __ restore_bcp();
+  __ restore_locals();
+
+  // Expression stack must be empty before entering the VM for an exception.
+  __ empty_expression_stack();
+  __ empty_FPU_stack();
+  __ call_VM(noreg,
+             CAST_FROM_FN_PTR(address,
+                              InterpreterRuntime::throw_WrongMethodTypeException),
+             // pass required type, failing object (or NULL)
+             rax, rbx);
+  return entry;
+}
+
+
 address TemplateInterpreterGenerator::generate_exception_handler_common(const char* name, const char* message, bool pass_oop) {
   assert(!pass_oop || message == NULL, "either oop or message but not both");
   address entry = __ pc();
@@ -110,7 +137,7 @@
     if (message != NULL) {
       __ lea(rbx, ExternalAddress((address)message));
     } else {
-      __ movptr(rbx, (int32_t)NULL_WORD);
+      __ movptr(rbx, NULL_WORD);
     }
     __ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception), rax, rbx);
   }
@@ -123,19 +150,28 @@
 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
   address entry = __ pc();
   // NULL last_sp until next java call
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
   __ dispatch_next(state);
   return entry;
 }
 
 
-address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) {
+address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, bool unbox) {
+  TosState incoming_state = state;
+  if (EnableInvokeDynamic) {
+    if (unbox) {
+      incoming_state = atos;
+    }
+  } else {
+    assert(!unbox, "old behavior");
+  }
+
   Label interpreter_entry;
   address compiled_entry = __ pc();
 
 #ifdef COMPILER2
   // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
-  if ((state == ftos && UseSSE < 1) || (state == dtos && UseSSE < 2)) {
+  if ((incoming_state == ftos && UseSSE < 1) || (incoming_state == dtos && UseSSE < 2)) {
     for (int i = 1; i < 8; i++) {
         __ ffree(i);
     }
@@ -143,7 +179,7 @@
     __ empty_FPU_stack();
   }
 #endif
-  if ((state == ftos && UseSSE < 1) || (state == dtos && UseSSE < 2)) {
+  if ((incoming_state == ftos && UseSSE < 1) || (incoming_state == dtos && UseSSE < 2)) {
     __ MacroAssembler::verify_FPU(1, "generate_return_entry_for compiled");
   } else {
     __ MacroAssembler::verify_FPU(0, "generate_return_entry_for compiled");
@@ -159,12 +195,12 @@
 
   // In SSE mode, interpreter returns FP results in xmm0 but they need
   // to end up back on the FPU so it can operate on them.
-  if (state == ftos && UseSSE >= 1) {
+  if (incoming_state == ftos && UseSSE >= 1) {
     __ subptr(rsp, wordSize);
     __ movflt(Address(rsp, 0), xmm0);
     __ fld_s(Address(rsp, 0));
     __ addptr(rsp, wordSize);
-  } else if (state == dtos && UseSSE >= 2) {
+  } else if (incoming_state == dtos && UseSSE >= 2) {
     __ subptr(rsp, 2*wordSize);
     __ movdbl(Address(rsp, 0), xmm0);
     __ fld_d(Address(rsp, 0));
@@ -176,17 +212,106 @@
   // Restore stack bottom in case i2c adjusted stack
   __ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
   // and NULL it as marker that rsp is now tos until next java call
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
 
   __ restore_bcp();
   __ restore_locals();
-  __ get_cache_and_index_at_bcp(rbx, rcx, 1);
+
+  Label L_fail;
+
+  if (unbox && state != atos) {
+    // cast and unbox
+    BasicType type = as_BasicType(state);
+    if (type == T_BYTE)  type = T_BOOLEAN; // FIXME
+    KlassHandle boxk = SystemDictionaryHandles::box_klass(type);
+    __ mov32(rbx, ExternalAddress((address) boxk.raw_value()));
+    __ testl(rax, rax);
+    Label L_got_value, L_get_value;
+    // convert nulls to zeroes (avoid NPEs here)
+    if (!(type == T_FLOAT || type == T_DOUBLE)) {
+      // if rax already contains zero bits, forge ahead
+      __ jcc(Assembler::zero, L_got_value);
+    } else {
+      __ jcc(Assembler::notZero, L_get_value);
+      __ fldz();
+      __ jmp(L_got_value);
+    }
+    __ bind(L_get_value);
+    __ cmp32(rbx, Address(rax, oopDesc::klass_offset_in_bytes()));
+    __ jcc(Assembler::notEqual, L_fail);
+    int offset = java_lang_boxing_object::value_offset_in_bytes(type);
+    // Cf. TemplateTable::getfield_or_static
+    switch (type) {
+      case T_BYTE:     // fall through:
+      case T_BOOLEAN:  __ load_signed_byte(rax, Address(rax, offset));    break;
+      case T_CHAR:     __ load_unsigned_short(rax, Address(rax, offset)); break;
+      case T_SHORT:    __ load_signed_short(rax, Address(rax, offset));   break;
+      case T_INT:      __ movl(rax, Address(rax, offset));                break;
+      case T_FLOAT:    __ fld_s(Address(rax, offset));                    break;
+      case T_DOUBLE:   __ fld_d(Address(rax, offset));                    break;
+      // Access to java.lang.Double.value does not need to be atomic:
+      case T_LONG:   { __ movl(rdx, Address(rax, offset + 4));
+                       __ movl(rax, Address(rax, offset + 0));  }         break;
+      default: ShouldNotReachHere();
+    }
+    __ bind(L_got_value);
+  }
+
+  Label L_got_cache, L_giant_index;
+  if (EnableInvokeDynamic) {
+    __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic);
+    __ jcc(Assembler::equal, L_giant_index);
+  }
+  __ get_cache_and_index_at_bcp(rbx, rcx, 1, false);
+  __ bind(L_got_cache);
+  if (unbox && state == atos) {
+    // insert a casting conversion, to keep verifier sane
+    Label L_ok, L_ok_pops;
+    __ testl(rax, rax);
+    __ jcc(Assembler::zero, L_ok);
+    __ push(rax);               // save the object to check
+    __ push(rbx);               // save CP cache reference
+    __ movl(rdx, Address(rax, oopDesc::klass_offset_in_bytes()));
+    __ movl(rbx, Address(rbx, rcx,
+                      Address::times_4, constantPoolCacheOopDesc::base_offset() +
+                      ConstantPoolCacheEntry::f1_offset()));
+    __ movl(rbx, Address(rbx, __ delayed_value(sun_dyn_CallSiteImpl::type_offset_in_bytes, rcx)));
+    __ movl(rbx, Address(rbx, __ delayed_value(java_dyn_MethodType::rtype_offset_in_bytes, rcx)));
+    __ movl(rax, Address(rbx, __ delayed_value(java_lang_Class::klass_offset_in_bytes, rcx)));
+    __ check_klass_subtype(rdx, rax, rbx, L_ok_pops);
+    __ pop(rcx);                // pop and discard CP cache
+    __ mov(rbx, rax);           // target supertype into rbx for L_fail
+    __ pop(rax);                // failed object into rax for L_fail
+    __ jmp(L_fail);
+
+    __ bind(L_ok_pops);
+    // restore pushed temp regs:
+    __ pop(rbx);
+    __ pop(rax);
+    __ bind(L_ok);
+  }
   __ movl(rbx, Address(rbx, rcx,
                     Address::times_ptr, constantPoolCacheOopDesc::base_offset() +
                     ConstantPoolCacheEntry::flags_offset()));
   __ andptr(rbx, 0xFF);
   __ lea(rsp, Address(rsp, rbx, Interpreter::stackElementScale()));
   __ dispatch_next(state, step);
+
+  // out of the main line of code...
+  if (EnableInvokeDynamic) {
+    __ bind(L_giant_index);
+    __ get_cache_and_index_at_bcp(rbx, rcx, 1, true);
+    __ jmp(L_got_cache);
+
+    if (unbox) {
+      __ bind(L_fail);
+      __ push(rbx);             // missed klass (required)
+      __ push(rax);             // bad object (actual)
+      __ movptr(rdx, ExternalAddress((address) &Interpreter::_throw_WrongMethodType_entry));
+      __ call(rdx);
+    }
+  }
+
   return entry;
 }
 
@@ -211,7 +336,7 @@
 
   // The stack is not extended by deopt but we must NULL last_sp as this
   // entry is like a "return".
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
   __ restore_bcp();
   __ restore_locals();
   // handle exceptions
@@ -382,7 +507,7 @@
   // indicating if the counter overflow occurs at a backwards branch (non-NULL bcp).
   // The call returns the address of the verified entry point for the method or NULL
   // if the compilation did not complete (either went background or bailed out).
-  __ movptr(rax, (int32_t)false);
+  __ 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
@@ -662,13 +787,13 @@
     __ bind(notByte);
     __ cmpl(rdx, stos);
     __ jcc(Assembler::notEqual, notShort);
-    __ load_signed_word(rax, field_address);
+    __ load_signed_short(rax, field_address);
     __ jmp(xreturn_path);
 
     __ bind(notShort);
     __ cmpl(rdx, ctos);
     __ jcc(Assembler::notEqual, notChar);
-    __ load_unsigned_word(rax, field_address);
+    __ load_unsigned_short(rax, field_address);
     __ jmp(xreturn_path);
 
     __ bind(notChar);
@@ -723,7 +848,7 @@
   const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // native calls don't need the stack size check since they have no expression stack
   // and the arguments are already on the stack and we only add a handful of words
@@ -838,7 +963,7 @@
   // allocate space for parameters
   __ get_method(method);
   __ verify_oop(method);
-  __ load_unsigned_word(t, Address(method, methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset()));
   __ shlptr(t, Interpreter::logStackElementSize());
   __ addptr(t, 2*wordSize);     // allocate two more slots for JNIEnv and possible mirror
   __ subptr(rsp, t);
@@ -1028,7 +1153,7 @@
 
   // reset handle block
   __ movptr(t, Address(thread, JavaThread::active_handles_offset()));
-  __ movptr(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
+  __ movptr(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
 
   // If result was an oop then unbox and save it in the frame
   { Label L;
@@ -1155,14 +1280,14 @@
   const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // rbx,: methodOop
   // rcx: size of parameters
 
   // rsi: sender_sp (could differ from sp+wordSize if we were called via c2i )
 
-  __ load_unsigned_word(rdx, size_of_locals);       // get size of locals in words
+  __ load_unsigned_short(rdx, size_of_locals);       // get size of locals in words
   __ subl(rdx, rcx);                                // rdx = no. of additional locals
 
   // see if we've got enough room on the stack for locals plus overhead.
@@ -1370,6 +1495,7 @@
     case Interpreter::empty                  : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry();        break;
     case Interpreter::accessor               : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry();     break;
     case Interpreter::abstract               : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry();     break;
+    case Interpreter::method_handle          : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break;
 
     case Interpreter::java_lang_math_sin     : // fall thru
     case Interpreter::java_lang_math_cos     : // fall thru
@@ -1400,7 +1526,8 @@
   // 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 method_stack = (method->max_locals() + method->max_stack()) *
+  const int extra_stack = methodOopDesc::extra_stack_entries();
+  const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
                            Interpreter::stackElementWords();
   return overhead_size + method_stack + stub_code;
 }
@@ -1488,7 +1615,7 @@
 
   // Restore sp to interpreter_frame_last_sp even though we are going
   // to empty the expression stack for the exception processing.
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
   // rax,: exception
   // rdx: return address/pc that threw exception
   __ restore_bcp();                              // rsi points to call/send
@@ -1558,7 +1685,7 @@
     // Compute size of arguments for saving when returning to deoptimized caller
     __ get_method(rax);
     __ verify_oop(rax);
-    __ load_unsigned_word(rax, Address(rax, in_bytes(methodOopDesc::size_of_parameters_offset())));
+    __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc::size_of_parameters_offset())));
     __ shlptr(rax, Interpreter::logStackElementSize());
     __ restore_locals();
     __ subptr(rdi, rax);
@@ -1608,7 +1735,7 @@
   __ reset_last_Java_frame(rcx, true, true);
   // Restore the last_sp and null it out
   __ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
-  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
+  __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
 
   __ restore_bcp();
   __ restore_locals();
@@ -1636,7 +1763,7 @@
   // restore exception
   __ get_thread(rcx);
   __ movptr(rax, Address(rcx, JavaThread::vm_result_offset()));
-  __ movptr(Address(rcx, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
+  __ movptr(Address(rcx, JavaThread::vm_result_offset()), NULL_WORD);
   __ verify_oop(rax);
 
   // Inbetween activations - previous activation type unknown yet
--- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +100,26 @@
   return entry;
 }
 
+// Arguments are: required type in rarg1, failing object (or NULL) in rarg2
+address TemplateInterpreterGenerator::generate_WrongMethodType_handler() {
+  address entry = __ pc();
+
+  __ pop(c_rarg2);              // failing object is at TOS
+  __ pop(c_rarg1);              // required type is at TOS+8
+
+  // expression stack must be empty before entering the VM if an
+  // exception happened
+  __ empty_expression_stack();
+
+  __ call_VM(noreg,
+             CAST_FROM_FN_PTR(address,
+                              InterpreterRuntime::
+                              throw_WrongMethodTypeException),
+             // pass required type, failing object (or NULL)
+             c_rarg1, c_rarg2);
+  return entry;
+}
+
 address TemplateInterpreterGenerator::generate_exception_handler_common(
         const char* name, const char* message, bool pass_oop) {
   assert(!pass_oop || message == NULL, "either oop or message but not both");
@@ -146,7 +166,8 @@
 
 
 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state,
-                                                                int step) {
+                                                                int step, bool unbox) {
+  assert(!unbox, "NYI");//6815692//
 
   // amd64 doesn't need to do anything special about compiled returns
   // to the interpreter so the code that exists on x86 to place a sentinel
@@ -650,7 +671,7 @@
     __ cmpl(rdx, stos);
     __ jcc(Assembler::notEqual, notShort);
     // stos
-    __ load_signed_word(rax, field_address);
+    __ load_signed_short(rax, field_address);
     __ jmp(xreturn_path);
 
     __ bind(notShort);
@@ -662,7 +683,7 @@
     __ bind(okay);
 #endif
     // ctos
-    __ load_unsigned_word(rax, field_address);
+    __ load_unsigned_short(rax, field_address);
 
     __ bind(xreturn_path);
 
@@ -702,7 +723,7 @@
   const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // native calls don't need the stack size check since they have no
   // expression stack and the arguments are already on the stack and
@@ -819,14 +840,14 @@
   // allocate space for parameters
   __ get_method(method);
   __ verify_oop(method);
-  __ load_unsigned_word(t,
-                        Address(method,
-                                methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(t,
+                         Address(method,
+                                 methodOopDesc::size_of_parameters_offset()));
   __ shll(t, Interpreter::logStackElementSize());
 
   __ subptr(rsp, t);
   __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows
-  __ andptr(rsp, -16); // must be 16 byte boundry (see amd64 ABI)
+  __ andptr(rsp, -16); // must be 16 byte boundary (see amd64 ABI)
 
   // get signature handler
   {
@@ -1165,13 +1186,13 @@
   const Address access_flags(rbx, methodOopDesc::access_flags_offset());
 
   // get parameter size (always needed)
-  __ load_unsigned_word(rcx, size_of_parameters);
+  __ load_unsigned_short(rcx, size_of_parameters);
 
   // rbx: methodOop
   // rcx: size of parameters
   // r13: sender_sp (could differ from sp+wordSize if we were called via c2i )
 
-  __ load_unsigned_word(rdx, size_of_locals); // get size of locals in words
+  __ load_unsigned_short(rdx, size_of_locals); // get size of locals in words
   __ subl(rdx, rcx); // rdx = no. of additional locals
 
   // YYY
@@ -1393,12 +1414,14 @@
   case Interpreter::empty                  : entry_point = ((InterpreterGenerator*) this)->generate_empty_entry();       break;
   case Interpreter::accessor               : entry_point = ((InterpreterGenerator*) this)->generate_accessor_entry();    break;
   case Interpreter::abstract               : entry_point = ((InterpreterGenerator*) this)->generate_abstract_entry();    break;
-  case Interpreter::java_lang_math_sin     :                                                                             break;
-  case Interpreter::java_lang_math_cos     :                                                                             break;
-  case Interpreter::java_lang_math_tan     :                                                                             break;
-  case Interpreter::java_lang_math_abs     :                                                                             break;
-  case Interpreter::java_lang_math_log     :                                                                             break;
-  case Interpreter::java_lang_math_log10   :                                                                             break;
+  case Interpreter::method_handle          : entry_point = ((InterpreterGenerator*) this)->generate_method_handle_entry();break;
+
+  case Interpreter::java_lang_math_sin     : // fall thru
+  case Interpreter::java_lang_math_cos     : // fall thru
+  case Interpreter::java_lang_math_tan     : // fall thru
+  case Interpreter::java_lang_math_abs     : // fall thru
+  case Interpreter::java_lang_math_log     : // fall thru
+  case Interpreter::java_lang_math_log10   : // fall thru
   case Interpreter::java_lang_math_sqrt    : entry_point = ((InterpreterGenerator*) this)->generate_math_entry(kind);    break;
   default                                  : ShouldNotReachHere();                                                       break;
   }
@@ -1422,7 +1445,8 @@
     -(frame::interpreter_frame_initial_sp_offset) + entry_size;
 
   const int stub_code = frame::entry_frame_after_call_words;
-  const int method_stack = (method->max_locals() + method->max_stack()) *
+  const int extra_stack = methodOopDesc::extra_stack_entries();
+  const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
                            Interpreter::stackElementWords();
   return (overhead_size + method_stack + stub_code);
 }
@@ -1583,7 +1607,7 @@
     // Compute size of arguments for saving when returning to
     // deoptimized caller
     __ get_method(rax);
-    __ load_unsigned_word(rax, Address(rax, in_bytes(methodOopDesc::
+    __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc::
                                                 size_of_parameters_offset())));
     __ shll(rax, Interpreter::logStackElementSize());
     __ restore_locals(); // XXX do we need this?
--- a/src/cpu/x86/vm/templateTable_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/templateTable_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -137,7 +137,7 @@
         // Do the actual store
         // noreg means NULL
         if (val == noreg) {
-          __ movl(Address(rdx, 0), NULL_WORD);
+          __ movptr(Address(rdx, 0), NULL_WORD);
           // No post barrier for NULL
         } else {
           __ movl(Address(rdx, 0), val);
@@ -152,7 +152,7 @@
     case BarrierSet::CardTableExtension:
       {
         if (val == noreg) {
-          __ movl(obj, NULL_WORD);
+          __ movptr(obj, NULL_WORD);
         } else {
           __ movl(obj, val);
           // flatten object address if needed
@@ -168,7 +168,7 @@
     case BarrierSet::ModRef:
     case BarrierSet::Other:
       if (val == noreg) {
-        __ movl(obj, NULL_WORD);
+        __ movptr(obj, NULL_WORD);
       } else {
         __ movl(obj, val);
       }
@@ -206,12 +206,12 @@
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::set_original_bytecode_at), scratch, rsi, bc);
 #ifndef ASSERT
     __ jmpb(patch_done);
+#else
+    __ jmp(patch_done);
+#endif
     __ bind(fast_patch);
   }
-#else
-    __ jmp(patch_done);
-    __ bind(fast_patch);
-  }
+#ifdef ASSERT
   Label okay;
   __ load_unsigned_byte(scratch, at_bcp(0));
   __ cmpl(scratch, (int)Bytecodes::java_code(bytecode));
@@ -296,7 +296,7 @@
 
 void TemplateTable::sipush() {
   transition(vtos, itos);
-  __ load_unsigned_word(rax, at_bcp(1));
+  __ load_unsigned_short(rax, at_bcp(1));
   __ bswapl(rax);
   __ sarl(rax, 16);
 }
@@ -662,7 +662,7 @@
   index_check(rdx, rax);  // kills rbx,
   // rax,: index
   // can do better code for P5 - may want to improve this at some point
-  __ load_unsigned_word(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+  __ load_unsigned_short(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
   __ mov(rax, rbx);
 }
 
@@ -677,7 +677,7 @@
   // rdx: array
   index_check(rdx, rax);
   // rax,: index
-  __ load_unsigned_word(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+  __ load_unsigned_short(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
   __ mov(rax, rbx);
 }
 
@@ -687,7 +687,7 @@
   index_check(rdx, rax);  // kills rbx,
   // rax,: index
   // can do better code for P5 - may want to improve this at some point
-  __ load_signed_word(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_SHORT)));
+  __ load_signed_short(rbx, Address(rdx, rax, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_SHORT)));
   __ mov(rax, rbx);
 }
 
@@ -1586,7 +1586,7 @@
 
   // Handle all the JSR stuff here, then exit.
   // It's much shorter and cleaner than intermingling with the
-  // non-JSR normal-branch stuff occuring below.
+  // non-JSR normal-branch stuff occurring below.
   if (is_jsr) {
     // Pre-load the next target bytecode into EBX
     __ load_unsigned_byte(rbx, Address(rsi, rdx, Address::times_1, 0));
@@ -2105,6 +2105,7 @@
 
 void TemplateTable::resolve_cache_and_index(int byte_no, Register Rcache, Register index) {
   assert(byte_no == 1 || byte_no == 2, "byte_no out of range");
+  bool is_invokedynamic = (bytecode() == Bytecodes::_invokedynamic);
 
   Register temp = rbx;
 
@@ -2112,16 +2113,19 @@
 
   const int shift_count = (1 + byte_no)*BitsPerByte;
   Label resolved;
-  __ get_cache_and_index_at_bcp(Rcache, index, 1);
-  __ movl(temp, Address(Rcache,
-                          index,
-                          Address::times_ptr,
-                          constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
-  __ shrl(temp, shift_count);
-  // have we resolved this bytecode?
-  __ andptr(temp, 0xFF);
-  __ cmpl(temp, (int)bytecode());
-  __ jcc(Assembler::equal, resolved);
+  __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic);
+  if (is_invokedynamic) {
+    // we are resolved if the f1 field contains a non-null CallSite object
+    __ cmpptr(Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()), (int32_t) NULL_WORD);
+    __ jcc(Assembler::notEqual, resolved);
+  } else {
+    __ movl(temp, Address(Rcache, index, Address::times_4, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+    __ shrl(temp, shift_count);
+    // have we resolved this bytecode?
+    __ andl(temp, 0xFF);
+    __ cmpl(temp, (int)bytecode());
+    __ jcc(Assembler::equal, resolved);
+  }
 
   // resolve first time through
   address entry;
@@ -2134,12 +2138,13 @@
     case Bytecodes::_invokespecial  : // fall through
     case Bytecodes::_invokestatic   : // fall through
     case Bytecodes::_invokeinterface: entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke);  break;
+    case Bytecodes::_invokedynamic  : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic); break;
     default                         : ShouldNotReachHere();                                 break;
   }
   __ movl(temp, (int)bytecode());
   __ call_VM(noreg, entry, temp);
   // Update registers with resolved info
-  __ get_cache_and_index_at_bcp(Rcache, index, 1);
+  __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic);
   __ bind(resolved);
 }
 
@@ -2310,7 +2315,7 @@
   __ cmpl(flags, ctos );
   __ jcc(Assembler::notEqual, notChar);
 
-  __ load_unsigned_word(rax, lo );
+  __ load_unsigned_short(rax, lo );
   __ push(ctos);
   if (!is_static) {
     patch_bytecode(Bytecodes::_fast_cgetfield, rcx, rbx);
@@ -2322,7 +2327,7 @@
   __ cmpl(flags, stos );
   __ jcc(Assembler::notEqual, notShort);
 
-  __ load_signed_word(rax, lo );
+  __ load_signed_short(rax, lo );
   __ push(stos);
   if (!is_static) {
     patch_bytecode(Bytecodes::_fast_sgetfield, rcx, rbx);
@@ -2830,8 +2835,8 @@
   // access field
   switch (bytecode()) {
     case Bytecodes::_fast_bgetfield: __ movsbl(rax, lo );                 break;
-    case Bytecodes::_fast_sgetfield: __ load_signed_word(rax, lo );       break;
-    case Bytecodes::_fast_cgetfield: __ load_unsigned_word(rax, lo );     break;
+    case Bytecodes::_fast_sgetfield: __ load_signed_short(rax, lo );      break;
+    case Bytecodes::_fast_cgetfield: __ load_unsigned_short(rax, lo );    break;
     case Bytecodes::_fast_igetfield: __ movl(rax, lo);                    break;
     case Bytecodes::_fast_lgetfield: __ stop("should not be rewritten");  break;
     case Bytecodes::_fast_fgetfield: __ fld_s(lo);                        break;
@@ -2884,12 +2889,17 @@
 }
 
 
-void TemplateTable::prepare_invoke(Register method, Register index, int byte_no, Bytecodes::Code code) {
+void TemplateTable::prepare_invoke(Register method, Register index, int byte_no) {
+  bool is_invdyn_bootstrap = (byte_no < 0);
+  if (is_invdyn_bootstrap)  byte_no = -byte_no;
+
   // determine flags
+  Bytecodes::Code code = bytecode();
   const bool is_invokeinterface  = code == Bytecodes::_invokeinterface;
+  const bool is_invokedynamic    = code == Bytecodes::_invokedynamic;
   const bool is_invokevirtual    = code == Bytecodes::_invokevirtual;
   const bool is_invokespecial    = code == Bytecodes::_invokespecial;
-  const bool load_receiver       = code != Bytecodes::_invokestatic;
+  const bool load_receiver      = (code != Bytecodes::_invokestatic && code != Bytecodes::_invokedynamic);
   const bool receiver_null_check = is_invokespecial;
   const bool save_flags = is_invokeinterface || is_invokevirtual;
   // setup registers & access constant pool cache
@@ -2897,6 +2907,8 @@
   const Register flags  = rdx;
   assert_different_registers(method, index, recv, flags);
 
+  assert(!is_invdyn_bootstrap || is_invokedynamic, "byte_no<0 hack only for invdyn");
+
   // save 'interpreter return address'
   __ save_bcp();
 
@@ -2907,8 +2919,13 @@
     __ movl(recv, flags);
     __ andl(recv, 0xFF);
     // recv count is 0 based?
-    __ movptr(recv, Address(rsp, recv, Interpreter::stackElementScale(), -Interpreter::expr_offset_in_bytes(1)));
-    __ verify_oop(recv);
+    Address recv_addr(rsp, recv, Interpreter::stackElementScale(), -Interpreter::expr_offset_in_bytes(1));
+    if (is_invokedynamic) {
+      __ lea(recv, recv_addr);
+    } else {
+      __ movptr(recv, recv_addr);
+      __ verify_oop(recv);
+    }
   }
 
   // do null check if needed
@@ -2926,8 +2943,14 @@
   ConstantPoolCacheEntry::verify_tosBits();
   // load return address
   {
-    ExternalAddress table(is_invokeinterface ? (address)Interpreter::return_5_addrs_by_index_table() :
-                                               (address)Interpreter::return_3_addrs_by_index_table());
+    address table_addr;
+    if (is_invdyn_bootstrap)
+      table_addr = (address)Interpreter::return_5_unbox_addrs_by_index_table();
+    else if (is_invokeinterface || is_invokedynamic)
+      table_addr = (address)Interpreter::return_5_addrs_by_index_table();
+    else
+      table_addr = (address)Interpreter::return_3_addrs_by_index_table();
+    ExternalAddress table(table_addr);
     __ movptr(flags, ArrayAddress(table, Address(noreg, flags, Address::times_ptr)));
   }
 
@@ -2990,7 +3013,7 @@
 
 void TemplateTable::invokevirtual(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
 
   // rbx,: index
   // rcx: receiver
@@ -3002,7 +3025,7 @@
 
 void TemplateTable::invokespecial(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
   // do the call
   __ verify_oop(rbx);
   __ profile_call(rax);
@@ -3012,7 +3035,7 @@
 
 void TemplateTable::invokestatic(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rbx, noreg, byte_no, bytecode());
+  prepare_invoke(rbx, noreg, byte_no);
   // do the call
   __ verify_oop(rbx);
   __ profile_call(rax);
@@ -3028,7 +3051,7 @@
 
 void TemplateTable::invokeinterface(int byte_no) {
   transition(vtos, vtos);
-  prepare_invoke(rax, rbx, byte_no, bytecode());
+  prepare_invoke(rax, rbx, byte_no);
 
   // rax,: Interface
   // rbx,: index
@@ -3055,35 +3078,44 @@
   // profile this call
   __ profile_virtual_call(rdx, rsi, rdi);
 
-  __ mov(rdi, rdx); // Save klassOop in rdi
-
-  // Compute start of first itableOffsetEntry (which is at the end of the vtable)
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
-  assert(vtableEntry::size() * wordSize == (1 << (int)Address::times_ptr), "adjust the scaling in the code below");
-  __ movl(rsi, Address(rdx, instanceKlass::vtable_length_offset() * wordSize)); // Get length of vtable
-  __ lea(rdx, Address(rdx, rsi, Address::times_4, base));
-  if (HeapWordsPerLong > 1) {
-    // Round up to align_object_offset boundary
-    __ round_to(rdx, BytesPerLong);
-  }
-
-  Label entry, search, interface_ok;
-
-  __ jmpb(entry);
-  __ bind(search);
-  __ addptr(rdx, itableOffsetEntry::size() * wordSize);
-
-  __ bind(entry);
-
-  // Check that the entry is non-null.  A null entry means that the receiver
-  // class doesn't implement the interface, and wasn't the same as the
-  // receiver class checked when the interface was resolved.
-  __ push(rdx);
-  __ movptr(rdx, Address(rdx, itableOffsetEntry::interface_offset_in_bytes()));
-  __ testptr(rdx, rdx);
-  __ jcc(Assembler::notZero, interface_ok);
+  Label no_such_interface, no_such_method;
+
+  __ lookup_interface_method(// inputs: rec. class, interface, itable index
+                             rdx, rax, rbx,
+                             // outputs: method, scan temp. reg
+                             rbx, rsi,
+                             no_such_interface);
+
+  // rbx,: methodOop to call
+  // rcx: receiver
+  // Check for abstract method error
+  // Note: This should be done more efficiently via a throw_abstract_method_error
+  //       interpreter entry point and a conditional jump to it in case of a null
+  //       method.
+  __ testptr(rbx, rbx);
+  __ jcc(Assembler::zero, no_such_method);
+
+  // do the call
+  // rcx: receiver
+  // rbx,: methodOop
+  __ jump_from_interpreted(rbx, rdx);
+  __ should_not_reach_here();
+
+  // exception handling code follows...
+  // note: must restore interpreter registers to canonical
+  //       state for exception handling to work correctly!
+
+  __ bind(no_such_method);
   // throw exception
-  __ pop(rdx);           // pop saved register first.
+  __ pop(rbx);           // pop return address (pushed by prepare_invoke)
+  __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
+  __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
+  __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
+  // the call_VM checks for exception, so we should never return here.
+  __ should_not_reach_here();
+
+  __ bind(no_such_interface);
+  // throw exception
   __ pop(rbx);           // pop return address (pushed by prepare_invoke)
   __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
   __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
@@ -3091,42 +3123,84 @@
                    InterpreterRuntime::throw_IncompatibleClassChangeError));
   // the call_VM checks for exception, so we should never return here.
   __ should_not_reach_here();
-  __ bind(interface_ok);
-
-    __ pop(rdx);
-
-    __ cmpptr(rax, Address(rdx, itableOffsetEntry::interface_offset_in_bytes()));
-    __ jcc(Assembler::notEqual, search);
-
-    __ movl(rdx, Address(rdx, itableOffsetEntry::offset_offset_in_bytes()));
-    __ addptr(rdx, rdi); // Add offset to klassOop
-    assert(itableMethodEntry::size() * wordSize == (1 << (int)Address::times_ptr), "adjust the scaling in the code below");
-    __ movptr(rbx, Address(rdx, rbx, Address::times_ptr));
-    // rbx,: methodOop to call
-    // rcx: receiver
-    // Check for abstract method error
-    // Note: This should be done more efficiently via a throw_abstract_method_error
-    //       interpreter entry point and a conditional jump to it in case of a null
-    //       method.
-    { Label L;
-      __ testptr(rbx, rbx);
-      __ jcc(Assembler::notZero, L);
-      // throw exception
-          // note: must restore interpreter registers to canonical
-          //       state for exception handling to work correctly!
-          __ pop(rbx);           // pop return address (pushed by prepare_invoke)
-          __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
-          __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
-      __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
-      // the call_VM checks for exception, so we should never return here.
-      __ should_not_reach_here();
-      __ bind(L);
-    }
-
-  // do the call
-  // rcx: receiver
-  // rbx,: methodOop
-  __ jump_from_interpreted(rbx, rdx);
+}
+
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  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;
+  }
+
+  prepare_invoke(rax, rbx, byte_no);
+
+  // rax: CallSite object (f1)
+  // rbx: unused (f2)
+  // rcx: receiver address
+  // rdx: flags (unused)
+
+  if (ProfileInterpreter) {
+    Label L;
+    // %%% should make a type profile for any invokedynamic that takes a ref argument
+    // profile this call
+    __ profile_call(rsi);
+  }
+
+  Label handle_unlinked_site;
+  __ movptr(rcx, Address(rax, __ delayed_value(sun_dyn_CallSiteImpl::target_offset_in_bytes, rcx)));
+  __ testptr(rcx, rcx);
+  __ jcc(Assembler::zero, handle_unlinked_site);
+
+  __ prepare_to_jump_from_interpreted();
+  __ jump_to_method_handle_entry(rcx, rdx);
+
+  // Initial calls come here...
+  __ bind(handle_unlinked_site);
+  __ pop(rcx);                 // remove return address pushed by prepare_invoke
+
+  // box stacked arguments into an array for the bootstrap method
+  address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::bootstrap_invokedynamic);
+  __ restore_bcp();      // rsi must be correct for call_VM
+  __ call_VM(rax, entry, rax);
+  __ movl(rdi, rax);            // protect bootstrap MH from prepare_invoke
+
+  // recompute return address
+  __ restore_bcp();      // rsi must be correct for prepare_invoke
+  prepare_invoke(rax, rbx, -byte_no);  // smashes rcx, rdx
+  // rax: CallSite object (f1)
+  // rbx: unused (f2)
+  // rdi: bootstrap MH
+  // rdx: flags
+
+  // now load up the arglist, which has been neatly boxed
+  __ get_thread(rcx);
+  __ movptr(rdx, Address(rcx, JavaThread::vm_result_2_offset()));
+  __ movptr(Address(rcx, JavaThread::vm_result_2_offset()), NULL_WORD);
+  __ verify_oop(rdx);
+  // rdx = arglist
+
+  // save SP now, before we add the bootstrap call to the stack
+  // We must preserve a fiction that the original arguments are outgoing,
+  // because the return sequence will reset the stack to this point
+  // and then pop all those arguments.  It seems error-prone to use
+  // a different argument list size just for bootstrapping.
+  __ prepare_to_jump_from_interpreted();
+
+  // Now let's play adapter, pushing the real arguments on the stack.
+  __ pop(rbx);                  // return PC
+  __ push(rdi);                 // boot MH
+  __ push(rax);                 // call site
+  __ push(rdx);                 // arglist
+  __ push(rbx);                 // return PC, again
+  __ mov(rcx, rdi);
+  __ jump_to_method_handle_entry(rcx, rdx);
 }
 
 //----------------------------------------------------------------------------------------------------
--- a/src/cpu/x86/vm/templateTable_x86_32.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/templateTable_x86_32.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,8 +22,7 @@
  *
  */
 
-  static void prepare_invoke(Register method, Register index, int byte_no,
-                             Bytecodes::Code code);
+  static void prepare_invoke(Register method, Register index, int byte_no);
   static void invokevirtual_helper(Register index, Register recv,
                                    Register flags);
   static void volatile_barrier(Assembler::Membar_mask_bits order_constraint );
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -307,7 +307,7 @@
 
 void TemplateTable::sipush() {
   transition(vtos, itos);
-  __ load_unsigned_word(rax, at_bcp(1));
+  __ load_unsigned_short(rax, at_bcp(1));
   __ bswapl(rax);
   __ sarl(rax, 16);
 }
@@ -645,10 +645,10 @@
   // eax: index
   // rdx: array
   index_check(rdx, rax); // kills rbx
-  __ load_unsigned_word(rax,
-                        Address(rdx, rax,
-                                Address::times_2,
-                                arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+  __ load_unsigned_short(rax,
+                         Address(rdx, rax,
+                                 Address::times_2,
+                                 arrayOopDesc::base_offset_in_bytes(T_CHAR)));
 }
 
 // iload followed by caload frequent pair
@@ -663,10 +663,10 @@
   // rdx: array
   __ pop_ptr(rdx);
   index_check(rdx, rax); // kills rbx
-  __ load_unsigned_word(rax,
-                        Address(rdx, rax,
-                                Address::times_2,
-                                arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+  __ load_unsigned_short(rax,
+                         Address(rdx, rax,
+                                 Address::times_2,
+                                 arrayOopDesc::base_offset_in_bytes(T_CHAR)));
 }
 
 void TemplateTable::saload() {
@@ -675,10 +675,10 @@
   // eax: index
   // rdx: array
   index_check(rdx, rax); // kills rbx
-  __ load_signed_word(rax,
-                      Address(rdx, rax,
-                              Address::times_2,
-                              arrayOopDesc::base_offset_in_bytes(T_SHORT)));
+  __ load_signed_short(rax,
+                       Address(rdx, rax,
+                               Address::times_2,
+                               arrayOopDesc::base_offset_in_bytes(T_SHORT)));
 }
 
 void TemplateTable::iload(int n) {
@@ -1559,7 +1559,7 @@
 
   // Handle all the JSR stuff here, then exit.
   // It's much shorter and cleaner than intermingling with the non-JSR
-  // normal-branch stuff occuring below.
+  // normal-branch stuff occurring below.
   if (is_jsr) {
     // Pre-load the next target bytecode into rbx
     __ load_unsigned_byte(rbx, Address(r13, rdx, Address::times_1, 0));
@@ -2276,7 +2276,7 @@
   __ cmpl(flags, ctos);
   __ jcc(Assembler::notEqual, notChar);
   // ctos
-  __ load_unsigned_word(rax, field);
+  __ load_unsigned_short(rax, field);
   __ push(ctos);
   // Rewrite bytecode to be faster
   if (!is_static) {
@@ -2288,7 +2288,7 @@
   __ cmpl(flags, stos);
   __ jcc(Assembler::notEqual, notShort);
   // stos
-  __ load_signed_word(rax, field);
+  __ load_signed_short(rax, field);
   __ push(stos);
   // Rewrite bytecode to be faster
   if (!is_static) {
@@ -2751,10 +2751,10 @@
     __ movsbl(rax, field);
     break;
   case Bytecodes::_fast_sgetfield:
-    __ load_signed_word(rax, field);
+    __ load_signed_short(rax, field);
     break;
   case Bytecodes::_fast_cgetfield:
-    __ load_unsigned_word(rax, field);
+    __ load_unsigned_short(rax, field);
     break;
   case Bytecodes::_fast_fgetfield:
     __ movflt(xmm0, field);
@@ -3010,97 +3010,72 @@
   // profile this call
   __ profile_virtual_call(rdx, r13, r14);
 
-  __ mov(r14, rdx); // Save klassOop in r14
-
-  // Compute start of first itableOffsetEntry (which is at the end of
-  // the vtable)
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
-  // Get length of vtable
-  assert(vtableEntry::size() * wordSize == 8,
-         "adjust the scaling in the code below");
-  __ movl(r13, Address(rdx,
-                       instanceKlass::vtable_length_offset() * wordSize));
-  __ lea(rdx, Address(rdx, r13, Address::times_8, base));
-
-  if (HeapWordsPerLong > 1) {
-    // Round up to align_object_offset boundary
-    __ round_to(rdx, BytesPerLong);
-  }
-
-  Label entry, search, interface_ok;
-
-  __ jmpb(entry);
-  __ bind(search);
-  __ addptr(rdx, itableOffsetEntry::size() * wordSize);
-
-  __ bind(entry);
-
-  // Check that the entry is non-null.  A null entry means that the
-  // receiver class doesn't implement the interface, and wasn't the
-  // same as the receiver class checked when the interface was
-  // resolved.
-  __ push(rdx);
-  __ movptr(rdx, Address(rdx, itableOffsetEntry::interface_offset_in_bytes()));
-  __ testptr(rdx, rdx);
-  __ jcc(Assembler::notZero, interface_ok);
+  Label no_such_interface, no_such_method;
+
+  __ lookup_interface_method(// inputs: rec. class, interface, itable index
+                             rdx, rax, rbx,
+                             // outputs: method, scan temp. reg
+                             rbx, r13,
+                             no_such_interface);
+
+  // rbx,: methodOop to call
+  // rcx: receiver
+  // Check for abstract method error
+  // Note: This should be done more efficiently via a throw_abstract_method_error
+  //       interpreter entry point and a conditional jump to it in case of a null
+  //       method.
+  __ testptr(rbx, rbx);
+  __ jcc(Assembler::zero, no_such_method);
+
+  // do the call
+  // rcx: receiver
+  // rbx,: methodOop
+  __ jump_from_interpreted(rbx, rdx);
+  __ should_not_reach_here();
+
+  // exception handling code follows...
+  // note: must restore interpreter registers to canonical
+  //       state for exception handling to work correctly!
+
+  __ bind(no_such_method);
   // throw exception
-  __ pop(rdx); // pop saved register first.
-  __ pop(rbx); // pop return address (pushed by prepare_invoke)
-  __ restore_bcp(); // r13 must be correct for exception handler (was
-                    // destroyed)
-  __ restore_locals(); // make sure locals pointer is correct as well
-                       // (was destroyed)
+  __ pop(rbx);           // pop return address (pushed by prepare_invoke)
+  __ restore_bcp();      // r13 must be correct for exception handler   (was destroyed)
+  __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
+  __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
+  // the call_VM checks for exception, so we should never return here.
+  __ should_not_reach_here();
+
+  __ bind(no_such_interface);
+  // throw exception
+  __ pop(rbx);           // pop return address (pushed by prepare_invoke)
+  __ restore_bcp();      // r13 must be correct for exception handler   (was destroyed)
+  __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
   __ 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();
-  __ bind(interface_ok);
-
-  __ pop(rdx);
-
-  __ cmpptr(rax, Address(rdx, itableOffsetEntry::interface_offset_in_bytes()));
-  __ jcc(Assembler::notEqual, search);
-
-  __ movl(rdx, Address(rdx, itableOffsetEntry::offset_offset_in_bytes()));
-
-  __ addptr(rdx, r14); // Add offset to klassOop
-  assert(itableMethodEntry::size() * wordSize == 8,
-         "adjust the scaling in the code below");
-  __ movptr(rbx, Address(rdx, rbx, Address::times_8));
-  // rbx: methodOop to call
-  // rcx: receiver
-  // Check for abstract method error
-  // Note: This should be done more efficiently via a
-  // throw_abstract_method_error interpreter entry point and a
-  // conditional jump to it in case of a null method.
-  {
-    Label L;
-    __ testptr(rbx, rbx);
-    __ jcc(Assembler::notZero, L);
-    // throw exception
-    // note: must restore interpreter registers to canonical
-    //       state for exception handling to work correctly!
-    __ pop(rbx);  // pop return address (pushed by prepare_invoke)
-    __ restore_bcp(); // r13 must be correct for exception handler
-                      // (was destroyed)
-    __ restore_locals(); // make sure locals pointer is correct as
-                         // well (was destroyed)
-    __ call_VM(noreg,
-               CAST_FROM_FN_PTR(address,
-                             InterpreterRuntime::throw_AbstractMethodError));
+  return;
+}
+
+void TemplateTable::invokedynamic(int byte_no) {
+  transition(vtos, vtos);
+
+  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();
-    __ bind(L);
+    return;
   }
 
-  __ movptr(rcx, Address(rbx, methodOopDesc::interpreter_entry_offset()));
-
-  // do the call
-  // rcx: receiver
-  // rbx: methodOop
-  __ jump_from_interpreted(rbx, rdx);
+  __ stop("invokedynamic NYI");//6815692//
 }
 
+
 //-----------------------------------------------------------------------------
 // Allocation
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/x86/vm/vm_version_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,535 @@
+/*
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+# include "incls/_precompiled.incl"
+# include "incls/_vm_version_x86.cpp.incl"
+
+
+int VM_Version::_cpu;
+int VM_Version::_model;
+int VM_Version::_stepping;
+int VM_Version::_cpuFeatures;
+const char*           VM_Version::_features_str = "";
+VM_Version::CpuidInfo VM_Version::_cpuid_info   = { 0, };
+
+static BufferBlob* stub_blob;
+static const int stub_size = 300;
+
+extern "C" {
+  typedef void (*getPsrInfo_stub_t)(void*);
+}
+static getPsrInfo_stub_t getPsrInfo_stub = NULL;
+
+
+class VM_Version_StubGenerator: public StubCodeGenerator {
+ public:
+
+  VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
+
+  address generate_getPsrInfo() {
+    // Flags to test CPU type.
+    const uint32_t EFL_AC           = 0x40000;
+    const uint32_t EFL_ID           = 0x200000;
+    // Values for when we don't have a CPUID instruction.
+    const int      CPU_FAMILY_SHIFT = 8;
+    const uint32_t CPU_FAMILY_386   = (3 << CPU_FAMILY_SHIFT);
+    const uint32_t CPU_FAMILY_486   = (4 << CPU_FAMILY_SHIFT);
+
+    Label detect_486, cpu486, detect_586, std_cpuid1;
+    Label ext_cpuid1, ext_cpuid5, done;
+
+    StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
+#   define __ _masm->
+
+    address start = __ pc();
+
+    //
+    // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
+    //
+    // LP64: rcx and rdx are first and second argument registers on windows
+
+    __ push(rbp);
+#ifdef _LP64
+    __ mov(rbp, c_rarg0); // cpuid_info address
+#else
+    __ movptr(rbp, Address(rsp, 8)); // cpuid_info address
+#endif
+    __ push(rbx);
+    __ push(rsi);
+    __ pushf();          // preserve rbx, and flags
+    __ pop(rax);
+    __ push(rax);
+    __ mov(rcx, rax);
+    //
+    // if we are unable to change the AC flag, we have a 386
+    //
+    __ xorl(rax, EFL_AC);
+    __ push(rax);
+    __ popf();
+    __ pushf();
+    __ pop(rax);
+    __ cmpptr(rax, rcx);
+    __ jccb(Assembler::notEqual, detect_486);
+
+    __ movl(rax, CPU_FAMILY_386);
+    __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
+    __ jmp(done);
+
+    //
+    // If we are unable to change the ID flag, we have a 486 which does
+    // not support the "cpuid" instruction.
+    //
+    __ bind(detect_486);
+    __ mov(rax, rcx);
+    __ xorl(rax, EFL_ID);
+    __ push(rax);
+    __ popf();
+    __ pushf();
+    __ pop(rax);
+    __ cmpptr(rcx, rax);
+    __ jccb(Assembler::notEqual, detect_586);
+
+    __ bind(cpu486);
+    __ movl(rax, CPU_FAMILY_486);
+    __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
+    __ jmp(done);
+
+    //
+    // At this point, we have a chip which supports the "cpuid" instruction
+    //
+    __ bind(detect_586);
+    __ xorl(rax, rax);
+    __ cpuid();
+    __ orl(rax, rax);
+    __ jcc(Assembler::equal, cpu486);   // if cpuid doesn't support an input
+                                        // value of at least 1, we give up and
+                                        // assume a 486
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    __ cmpl(rax, 3);     // Is cpuid(0x4) supported?
+    __ jccb(Assembler::belowEqual, std_cpuid1);
+
+    //
+    // cpuid(0x4) Deterministic cache params
+    //
+    __ movl(rax, 4);
+    __ xorl(rcx, rcx);   // L1 cache
+    __ cpuid();
+    __ push(rax);
+    __ andl(rax, 0x1f);  // Determine if valid cache parameters used
+    __ orl(rax, rax);    // eax[4:0] == 0 indicates invalid cache
+    __ pop(rax);
+    __ jccb(Assembler::equal, std_cpuid1);
+
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    //
+    // Standard cpuid(0x1)
+    //
+    __ bind(std_cpuid1);
+    __ movl(rax, 1);
+    __ cpuid();
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    __ movl(rax, 0x80000000);
+    __ cpuid();
+    __ cmpl(rax, 0x80000000);     // Is cpuid(0x80000001) supported?
+    __ jcc(Assembler::belowEqual, done);
+    __ cmpl(rax, 0x80000004);     // Is cpuid(0x80000005) supported?
+    __ jccb(Assembler::belowEqual, ext_cpuid1);
+    __ cmpl(rax, 0x80000007);     // Is cpuid(0x80000008) supported?
+    __ jccb(Assembler::belowEqual, ext_cpuid5);
+    //
+    // Extended cpuid(0x80000008)
+    //
+    __ movl(rax, 0x80000008);
+    __ cpuid();
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    //
+    // Extended cpuid(0x80000005)
+    //
+    __ bind(ext_cpuid5);
+    __ movl(rax, 0x80000005);
+    __ cpuid();
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    //
+    // Extended cpuid(0x80000001)
+    //
+    __ bind(ext_cpuid1);
+    __ movl(rax, 0x80000001);
+    __ cpuid();
+    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
+    __ movl(Address(rsi, 0), rax);
+    __ movl(Address(rsi, 4), rbx);
+    __ movl(Address(rsi, 8), rcx);
+    __ movl(Address(rsi,12), rdx);
+
+    //
+    // return
+    //
+    __ bind(done);
+    __ popf();
+    __ pop(rsi);
+    __ pop(rbx);
+    __ pop(rbp);
+    __ ret(0);
+
+#   undef __
+
+    return start;
+  };
+};
+
+
+void VM_Version::get_processor_features() {
+
+  _cpu = 4; // 486 by default
+  _model = 0;
+  _stepping = 0;
+  _cpuFeatures = 0;
+  _logical_processors_per_package = 1;
+
+  if (!Use486InstrsOnly) {
+    // Get raw processor info
+    getPsrInfo_stub(&_cpuid_info);
+    assert_is_initialized();
+    _cpu = extended_cpu_family();
+    _model = extended_cpu_model();
+    _stepping = cpu_stepping();
+
+    if (cpu_family() > 4) { // it supports CPUID
+      _cpuFeatures = feature_flags();
+      // Logical processors are only available on P4s and above,
+      // and only if hyperthreading is available.
+      _logical_processors_per_package = logical_processor_count();
+    }
+  }
+
+  _supports_cx8 = supports_cmpxchg8();
+
+#ifdef _LP64
+  // OS should support SSE for x64 and hardware should support at least SSE2.
+  if (!VM_Version::supports_sse2()) {
+    vm_exit_during_initialization("Unknown x64 processor: SSE2 not supported");
+  }
+#endif
+
+  // If the OS doesn't support SSE, we can't use this feature even if the HW does
+  if (!os::supports_sse())
+    _cpuFeatures &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
+
+  if (UseSSE < 4) {
+    _cpuFeatures &= ~CPU_SSE4_1;
+    _cpuFeatures &= ~CPU_SSE4_2;
+  }
+
+  if (UseSSE < 3) {
+    _cpuFeatures &= ~CPU_SSE3;
+    _cpuFeatures &= ~CPU_SSSE3;
+    _cpuFeatures &= ~CPU_SSE4A;
+  }
+
+  if (UseSSE < 2)
+    _cpuFeatures &= ~CPU_SSE2;
+
+  if (UseSSE < 1)
+    _cpuFeatures &= ~CPU_SSE;
+
+  if (logical_processors_per_package() == 1) {
+    // HT processor could be installed on a system which doesn't support HT.
+    _cpuFeatures &= ~CPU_HT;
+  }
+
+  char buf[256];
+  jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+               cores_per_cpu(), threads_per_core(),
+               cpu_family(), _model, _stepping,
+               (supports_cmov() ? ", cmov" : ""),
+               (supports_cmpxchg8() ? ", cx8" : ""),
+               (supports_fxsr() ? ", fxsr" : ""),
+               (supports_mmx()  ? ", mmx"  : ""),
+               (supports_sse()  ? ", sse"  : ""),
+               (supports_sse2() ? ", sse2" : ""),
+               (supports_sse3() ? ", sse3" : ""),
+               (supports_ssse3()? ", ssse3": ""),
+               (supports_sse4_1() ? ", sse4.1" : ""),
+               (supports_sse4_2() ? ", sse4.2" : ""),
+               (supports_popcnt() ? ", popcnt" : ""),
+               (supports_mmx_ext() ? ", mmxext" : ""),
+               (supports_3dnow()   ? ", 3dnow"  : ""),
+               (supports_3dnow2()  ? ", 3dnowext" : ""),
+               (supports_lzcnt()   ? ", lzcnt": ""),
+               (supports_sse4a()   ? ", sse4a": ""),
+               (supports_ht() ? ", ht": ""));
+  _features_str = strdup(buf);
+
+  // UseSSE is set to the smaller of what hardware supports and what
+  // the command line requires.  I.e., you cannot set UseSSE to 2 on
+  // older Pentiums which do not support it.
+  if( UseSSE > 4 ) UseSSE=4;
+  if( UseSSE < 0 ) UseSSE=0;
+  if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
+    UseSSE = MIN2((intx)3,UseSSE);
+  if( !supports_sse3() ) // Drop to 2 if no SSE3 support
+    UseSSE = MIN2((intx)2,UseSSE);
+  if( !supports_sse2() ) // Drop to 1 if no SSE2 support
+    UseSSE = MIN2((intx)1,UseSSE);
+  if( !supports_sse () ) // Drop to 0 if no SSE  support
+    UseSSE = 0;
+
+  // On new cpus instructions which update whole XMM register should be used
+  // to prevent partial register stall due to dependencies on high half.
+  //
+  // UseXmmLoadAndClearUpper == true  --> movsd(xmm, mem)
+  // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
+  // UseXmmRegToRegMoveAll == true  --> movaps(xmm, xmm), movapd(xmm, xmm).
+  // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm),  movsd(xmm, xmm).
+
+  if( is_amd() ) { // AMD cpus specific settings
+    if( supports_sse2() && FLAG_IS_DEFAULT(UseAddressNop) ) {
+      // Use it on new AMD cpus starting from Opteron.
+      UseAddressNop = true;
+    }
+    if( supports_sse2() && FLAG_IS_DEFAULT(UseNewLongLShift) ) {
+      // Use it on new AMD cpus starting from Opteron.
+      UseNewLongLShift = true;
+    }
+    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
+      if( supports_sse4a() ) {
+        UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
+      } else {
+        UseXmmLoadAndClearUpper = false;
+      }
+    }
+    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
+      if( supports_sse4a() ) {
+        UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
+      } else {
+        UseXmmRegToRegMoveAll = false;
+      }
+    }
+    if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
+      if( supports_sse4a() ) {
+        UseXmmI2F = true;
+      } else {
+        UseXmmI2F = false;
+      }
+    }
+    if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
+      if( supports_sse4a() ) {
+        UseXmmI2D = true;
+      } else {
+        UseXmmI2D = false;
+      }
+    }
+
+    // Use count leading zeros count instruction if available.
+    if (supports_lzcnt()) {
+      if (FLAG_IS_DEFAULT(UseCountLeadingZerosInstruction)) {
+        UseCountLeadingZerosInstruction = true;
+      }
+    }
+  }
+
+  if( is_intel() ) { // Intel cpus specific settings
+    if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
+      UseStoreImmI16 = false; // don't use it on Intel cpus
+    }
+    if( cpu_family() == 6 || cpu_family() == 15 ) {
+      if( FLAG_IS_DEFAULT(UseAddressNop) ) {
+        // Use it on all Intel cpus starting from PentiumPro
+        UseAddressNop = true;
+      }
+    }
+    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
+      UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
+    }
+    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
+      if( supports_sse3() ) {
+        UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
+      } else {
+        UseXmmRegToRegMoveAll = false;
+      }
+    }
+    if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
+#ifdef COMPILER2
+      if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
+        // For new Intel cpus do the next optimization:
+        // don't align the beginning of a loop if there are enough instructions
+        // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
+        // in current fetch line (OptoLoopAlignment) or the padding
+        // is big (> MaxLoopPad).
+        // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
+        // generated NOP instructions. 11 is the largest size of one
+        // address NOP instruction '0F 1F' (see Assembler::nop(i)).
+        MaxLoopPad = 11;
+      }
+#endif // COMPILER2
+      if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
+        UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
+      }
+      if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
+        if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
+          UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
+        }
+      }
+      if( supports_sse4_2() && UseSSE >= 4 ) {
+        if( FLAG_IS_DEFAULT(UseSSE42Intrinsics)) {
+          UseSSE42Intrinsics = true;
+        }
+      }
+    }
+  }
+
+  // Use population count instruction if available.
+  if (supports_popcnt()) {
+    if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
+      UsePopCountInstruction = true;
+    }
+  }
+
+  assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
+  assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
+
+  // set valid Prefetch instruction
+  if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
+  if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
+  if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
+  if( !supports_sse() && supports_3dnow() ) ReadPrefetchInstr = 3;
+
+  if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
+  if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
+  if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
+  if( !supports_sse() && supports_3dnow() ) AllocatePrefetchInstr = 3;
+
+  // Allocation prefetch settings
+  intx cache_line_size = L1_data_cache_line_size();
+  if( cache_line_size > AllocatePrefetchStepSize )
+    AllocatePrefetchStepSize = cache_line_size;
+  if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
+    AllocatePrefetchLines = 3; // Optimistic value
+  assert(AllocatePrefetchLines > 0, "invalid value");
+  if( AllocatePrefetchLines < 1 ) // set valid value in product VM
+    AllocatePrefetchLines = 1; // Conservative value
+
+  AllocatePrefetchDistance = allocate_prefetch_distance();
+  AllocatePrefetchStyle    = allocate_prefetch_style();
+
+  if( AllocatePrefetchStyle == 2 && is_intel() &&
+      cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
+#ifdef _LP64
+    AllocatePrefetchDistance = 384;
+#else
+    AllocatePrefetchDistance = 320;
+#endif
+  }
+  assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
+
+#ifdef _LP64
+  // Prefetch settings
+  PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
+  PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
+  PrefetchFieldsAhead         = prefetch_fields_ahead();
+#endif
+
+#ifndef PRODUCT
+  if (PrintMiscellaneous && Verbose) {
+    tty->print_cr("Logical CPUs per core: %u",
+                  logical_processors_per_package());
+    tty->print_cr("UseSSE=%d",UseSSE);
+    tty->print("Allocation: ");
+    if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow()) {
+      tty->print_cr("no prefetching");
+    } else {
+      if (UseSSE == 0 && supports_3dnow()) {
+        tty->print("PREFETCHW");
+      } else if (UseSSE >= 1) {
+        if (AllocatePrefetchInstr == 0) {
+          tty->print("PREFETCHNTA");
+        } else if (AllocatePrefetchInstr == 1) {
+          tty->print("PREFETCHT0");
+        } else if (AllocatePrefetchInstr == 2) {
+          tty->print("PREFETCHT2");
+        } else if (AllocatePrefetchInstr == 3) {
+          tty->print("PREFETCHW");
+        }
+      }
+      if (AllocatePrefetchLines > 1) {
+        tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
+      } else {
+        tty->print_cr(" %d, one line", AllocatePrefetchDistance);
+      }
+    }
+
+    if (PrefetchCopyIntervalInBytes > 0) {
+      tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes);
+    }
+    if (PrefetchScanIntervalInBytes > 0) {
+      tty->print_cr("PrefetchScanIntervalInBytes %d", PrefetchScanIntervalInBytes);
+    }
+    if (PrefetchFieldsAhead > 0) {
+      tty->print_cr("PrefetchFieldsAhead %d", PrefetchFieldsAhead);
+    }
+  }
+#endif // !PRODUCT
+}
+
+void VM_Version::initialize() {
+  ResourceMark rm;
+  // Making this stub must be FIRST use of assembler
+
+  stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
+  if (stub_blob == NULL) {
+    vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
+  }
+  CodeBuffer c(stub_blob->instructions_begin(),
+               stub_blob->instructions_size());
+  VM_Version_StubGenerator g(&c);
+  getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
+                                   g.generate_getPsrInfo());
+
+  get_processor_features();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/x86/vm/vm_version_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,474 @@
+/*
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+class VM_Version : public Abstract_VM_Version {
+public:
+  // cpuid result register layouts.  These are all unions of a uint32_t
+  // (in case anyone wants access to the register as a whole) and a bitfield.
+
+  union StdCpuid1Eax {
+    uint32_t value;
+    struct {
+      uint32_t stepping   : 4,
+               model      : 4,
+               family     : 4,
+               proc_type  : 2,
+                          : 2,
+               ext_model  : 4,
+               ext_family : 8,
+                          : 4;
+    } bits;
+  };
+
+  union StdCpuid1Ebx { // example, unused
+    uint32_t value;
+    struct {
+      uint32_t brand_id         : 8,
+               clflush_size     : 8,
+               threads_per_cpu  : 8,
+               apic_id          : 8;
+    } bits;
+  };
+
+  union StdCpuid1Ecx {
+    uint32_t value;
+    struct {
+      uint32_t sse3     : 1,
+                        : 2,
+               monitor  : 1,
+                        : 1,
+               vmx      : 1,
+                        : 1,
+               est      : 1,
+                        : 1,
+               ssse3    : 1,
+               cid      : 1,
+                        : 2,
+               cmpxchg16: 1,
+                        : 4,
+               dca      : 1,
+               sse4_1   : 1,
+               sse4_2   : 1,
+                        : 2,
+               popcnt   : 1,
+                        : 8;
+    } bits;
+  };
+
+  union StdCpuid1Edx {
+    uint32_t value;
+    struct {
+      uint32_t          : 4,
+               tsc      : 1,
+                        : 3,
+               cmpxchg8 : 1,
+                        : 6,
+               cmov     : 1,
+                        : 7,
+               mmx      : 1,
+               fxsr     : 1,
+               sse      : 1,
+               sse2     : 1,
+                        : 1,
+               ht       : 1,
+                        : 3;
+    } bits;
+  };
+
+  union DcpCpuid4Eax {
+    uint32_t value;
+    struct {
+      uint32_t cache_type    : 5,
+                             : 21,
+               cores_per_cpu : 6;
+    } bits;
+  };
+
+  union DcpCpuid4Ebx {
+    uint32_t value;
+    struct {
+      uint32_t L1_line_size  : 12,
+               partitions    : 10,
+               associativity : 10;
+    } bits;
+  };
+
+  union ExtCpuid1Ecx {
+    uint32_t value;
+    struct {
+      uint32_t LahfSahf     : 1,
+               CmpLegacy    : 1,
+                            : 4,
+               lzcnt        : 1,
+               sse4a        : 1,
+               misalignsse  : 1,
+               prefetchw    : 1,
+                            : 22;
+    } bits;
+  };
+
+  union ExtCpuid1Edx {
+    uint32_t value;
+    struct {
+      uint32_t           : 22,
+               mmx_amd   : 1,
+               mmx       : 1,
+               fxsr      : 1,
+                         : 4,
+               long_mode : 1,
+               tdnow2    : 1,
+               tdnow     : 1;
+    } bits;
+  };
+
+  union ExtCpuid5Ex {
+    uint32_t value;
+    struct {
+      uint32_t L1_line_size : 8,
+               L1_tag_lines : 8,
+               L1_assoc     : 8,
+               L1_size      : 8;
+    } bits;
+  };
+
+  union ExtCpuid8Ecx {
+    uint32_t value;
+    struct {
+      uint32_t cores_per_cpu : 8,
+                             : 24;
+    } bits;
+  };
+
+protected:
+   static int _cpu;
+   static int _model;
+   static int _stepping;
+   static int _cpuFeatures;     // features returned by the "cpuid" instruction
+                                // 0 if this instruction is not available
+   static const char* _features_str;
+
+   enum {
+     CPU_CX8    = (1 << 0), // next bits are from cpuid 1 (EDX)
+     CPU_CMOV   = (1 << 1),
+     CPU_FXSR   = (1 << 2),
+     CPU_HT     = (1 << 3),
+     CPU_MMX    = (1 << 4),
+     CPU_3DNOW  = (1 << 5), // 3DNow comes from cpuid 0x80000001 (EDX)
+     CPU_SSE    = (1 << 6),
+     CPU_SSE2   = (1 << 7),
+     CPU_SSE3   = (1 << 8), // SSE3 comes from cpuid 1 (ECX)
+     CPU_SSSE3  = (1 << 9),
+     CPU_SSE4A  = (1 << 10),
+     CPU_SSE4_1 = (1 << 11),
+     CPU_SSE4_2 = (1 << 12),
+     CPU_POPCNT = (1 << 13),
+     CPU_LZCNT  = (1 << 14)
+   } cpuFeatureFlags;
+
+  // cpuid information block.  All info derived from executing cpuid with
+  // various function numbers is stored here.  Intel and AMD info is
+  // merged in this block: accessor methods disentangle it.
+  //
+  // The info block is laid out in subblocks of 4 dwords corresponding to
+  // eax, ebx, ecx and edx, whether or not they contain anything useful.
+  struct CpuidInfo {
+    // cpuid function 0
+    uint32_t std_max_function;
+    uint32_t std_vendor_name_0;
+    uint32_t std_vendor_name_1;
+    uint32_t std_vendor_name_2;
+
+    // cpuid function 1
+    StdCpuid1Eax std_cpuid1_eax;
+    StdCpuid1Ebx std_cpuid1_ebx;
+    StdCpuid1Ecx std_cpuid1_ecx;
+    StdCpuid1Edx std_cpuid1_edx;
+
+    // cpuid function 4 (deterministic cache parameters)
+    DcpCpuid4Eax dcp_cpuid4_eax;
+    DcpCpuid4Ebx dcp_cpuid4_ebx;
+    uint32_t     dcp_cpuid4_ecx; // unused currently
+    uint32_t     dcp_cpuid4_edx; // unused currently
+
+    // cpuid function 0x80000000 // example, unused
+    uint32_t ext_max_function;
+    uint32_t ext_vendor_name_0;
+    uint32_t ext_vendor_name_1;
+    uint32_t ext_vendor_name_2;
+
+    // cpuid function 0x80000001
+    uint32_t     ext_cpuid1_eax; // reserved
+    uint32_t     ext_cpuid1_ebx; // reserved
+    ExtCpuid1Ecx ext_cpuid1_ecx;
+    ExtCpuid1Edx ext_cpuid1_edx;
+
+    // cpuid functions 0x80000002 thru 0x80000004: example, unused
+    uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
+    uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
+    uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
+
+    // cpuid function 0x80000005 //AMD L1, Intel reserved
+    uint32_t     ext_cpuid5_eax; // unused currently
+    uint32_t     ext_cpuid5_ebx; // reserved
+    ExtCpuid5Ex  ext_cpuid5_ecx; // L1 data cache info (AMD)
+    ExtCpuid5Ex  ext_cpuid5_edx; // L1 instruction cache info (AMD)
+
+    // cpuid function 0x80000008
+    uint32_t     ext_cpuid8_eax; // unused currently
+    uint32_t     ext_cpuid8_ebx; // reserved
+    ExtCpuid8Ecx ext_cpuid8_ecx;
+    uint32_t     ext_cpuid8_edx; // reserved
+  };
+
+  // The actual cpuid info block
+  static CpuidInfo _cpuid_info;
+
+  // Extractors and predicates
+  static uint32_t extended_cpu_family() {
+    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.family;
+    result += _cpuid_info.std_cpuid1_eax.bits.ext_family;
+    return result;
+  }
+  static uint32_t extended_cpu_model() {
+    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.model;
+    result |= _cpuid_info.std_cpuid1_eax.bits.ext_model << 4;
+    return result;
+  }
+  static uint32_t cpu_stepping() {
+    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.stepping;
+    return result;
+  }
+  static uint logical_processor_count() {
+    uint result = threads_per_core();
+    return result;
+  }
+  static uint32_t feature_flags() {
+    uint32_t result = 0;
+    if (_cpuid_info.std_cpuid1_edx.bits.cmpxchg8 != 0)
+      result |= CPU_CX8;
+    if (_cpuid_info.std_cpuid1_edx.bits.cmov != 0)
+      result |= CPU_CMOV;
+    if (_cpuid_info.std_cpuid1_edx.bits.fxsr != 0 || is_amd() &&
+        _cpuid_info.ext_cpuid1_edx.bits.fxsr != 0)
+      result |= CPU_FXSR;
+    // HT flag is set for multi-core processors also.
+    if (threads_per_core() > 1)
+      result |= CPU_HT;
+    if (_cpuid_info.std_cpuid1_edx.bits.mmx != 0 || is_amd() &&
+        _cpuid_info.ext_cpuid1_edx.bits.mmx != 0)
+      result |= CPU_MMX;
+    if (_cpuid_info.std_cpuid1_edx.bits.sse != 0)
+      result |= CPU_SSE;
+    if (_cpuid_info.std_cpuid1_edx.bits.sse2 != 0)
+      result |= CPU_SSE2;
+    if (_cpuid_info.std_cpuid1_ecx.bits.sse3 != 0)
+      result |= CPU_SSE3;
+    if (_cpuid_info.std_cpuid1_ecx.bits.ssse3 != 0)
+      result |= CPU_SSSE3;
+    if (_cpuid_info.std_cpuid1_ecx.bits.sse4_1 != 0)
+      result |= CPU_SSE4_1;
+    if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0)
+      result |= CPU_SSE4_2;
+    if (_cpuid_info.std_cpuid1_ecx.bits.popcnt != 0)
+      result |= CPU_POPCNT;
+
+    // AMD features.
+    if (is_amd()) {
+      if (_cpuid_info.ext_cpuid1_edx.bits.tdnow != 0)
+        result |= CPU_3DNOW;
+      if (_cpuid_info.ext_cpuid1_ecx.bits.lzcnt != 0)
+        result |= CPU_LZCNT;
+      if (_cpuid_info.ext_cpuid1_ecx.bits.sse4a != 0)
+        result |= CPU_SSE4A;
+    }
+
+    return result;
+  }
+
+  static void get_processor_features();
+
+public:
+  // Offsets for cpuid asm stub
+  static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
+  static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_eax); }
+  static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_eax); }
+  static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_eax); }
+  static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_eax); }
+  static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_eax); }
+
+  // Initialization
+  static void initialize();
+
+  // Asserts
+  static void assert_is_initialized() {
+    assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
+  }
+
+  //
+  // Processor family:
+  //       3   -  386
+  //       4   -  486
+  //       5   -  Pentium
+  //       6   -  PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
+  //              Pentium M, Core Solo, Core Duo, Core2 Duo
+  //    family 6 model:   9,        13,       14,        15
+  //    0x0f   -  Pentium 4, Opteron
+  //
+  // Note: The cpu family should be used to select between
+  //       instruction sequences which are valid on all Intel
+  //       processors.  Use the feature test functions below to
+  //       determine whether a particular instruction is supported.
+  //
+  static int  cpu_family()        { return _cpu;}
+  static bool is_P6()             { return cpu_family() >= 6; }
+
+  static bool is_amd()            { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
+  static bool is_intel()          { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
+
+  static uint cores_per_cpu()  {
+    uint result = 1;
+    if (is_intel()) {
+      result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
+    } else if (is_amd()) {
+      result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
+    }
+    return result;
+  }
+
+  static uint threads_per_core()  {
+    uint result = 1;
+    if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
+      result = _cpuid_info.std_cpuid1_ebx.bits.threads_per_cpu /
+               cores_per_cpu();
+    }
+    return result;
+  }
+
+  static intx L1_data_cache_line_size()  {
+    intx result = 0;
+    if (is_intel()) {
+      result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
+    } else if (is_amd()) {
+      result = _cpuid_info.ext_cpuid5_ecx.bits.L1_line_size;
+    }
+    if (result < 32) // not defined ?
+      result = 32;   // 32 bytes by default on x86 and other x64
+    return result;
+  }
+
+  //
+  // Feature identification
+  //
+  static bool supports_cpuid()    { return _cpuFeatures  != 0; }
+  static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
+  static bool supports_cmov()     { return (_cpuFeatures & CPU_CMOV) != 0; }
+  static bool supports_fxsr()     { return (_cpuFeatures & CPU_FXSR) != 0; }
+  static bool supports_ht()       { return (_cpuFeatures & CPU_HT) != 0; }
+  static bool supports_mmx()      { return (_cpuFeatures & CPU_MMX) != 0; }
+  static bool supports_sse()      { return (_cpuFeatures & CPU_SSE) != 0; }
+  static bool supports_sse2()     { return (_cpuFeatures & CPU_SSE2) != 0; }
+  static bool supports_sse3()     { return (_cpuFeatures & CPU_SSE3) != 0; }
+  static bool supports_ssse3()    { return (_cpuFeatures & CPU_SSSE3)!= 0; }
+  static bool supports_sse4_1()   { return (_cpuFeatures & CPU_SSE4_1) != 0; }
+  static bool supports_sse4_2()   { return (_cpuFeatures & CPU_SSE4_2) != 0; }
+  static bool supports_popcnt()   { return (_cpuFeatures & CPU_POPCNT) != 0; }
+  //
+  // AMD features
+  //
+  static bool supports_3dnow()    { return (_cpuFeatures & CPU_3DNOW) != 0; }
+  static bool supports_mmx_ext()  { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
+  static bool supports_3dnow2()   { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow2 != 0; }
+  static bool supports_lzcnt()    { return (_cpuFeatures & CPU_LZCNT) != 0; }
+  static bool supports_sse4a()    { return (_cpuFeatures & CPU_SSE4A) != 0; }
+
+  static bool supports_compare_and_exchange() { return true; }
+
+  static const char* cpu_features()           { return _features_str; }
+
+  static intx allocate_prefetch_distance() {
+    // This method should be called before allocate_prefetch_style().
+    //
+    // Hardware prefetching (distance/size in bytes):
+    // Pentium 3 -  64 /  32
+    // Pentium 4 - 256 / 128
+    // Athlon    -  64 /  32 ????
+    // Opteron   - 128 /  64 only when 2 sequential cache lines accessed
+    // Core      - 128 /  64
+    //
+    // Software prefetching (distance in bytes / instruction with best score):
+    // Pentium 3 - 128 / prefetchnta
+    // Pentium 4 - 512 / prefetchnta
+    // Athlon    - 128 / prefetchnta
+    // Opteron   - 256 / prefetchnta
+    // Core      - 256 / prefetchnta
+    // It will be used only when AllocatePrefetchStyle > 0
+
+    intx count = AllocatePrefetchDistance;
+    if (count < 0) {   // default ?
+      if (is_amd()) {  // AMD
+        if (supports_sse2())
+          count = 256; // Opteron
+        else
+          count = 128; // Athlon
+      } else {         // Intel
+        if (supports_sse2())
+          if (cpu_family() == 6) {
+            count = 256; // Pentium M, Core, Core2
+          } else {
+            count = 512; // Pentium 4
+          }
+        else
+          count = 128; // Pentium 3 (and all other old CPUs)
+      }
+    }
+    return count;
+  }
+  static intx allocate_prefetch_style() {
+    assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
+    // Return 0 if AllocatePrefetchDistance was not defined.
+    return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
+  }
+
+  // Prefetch interval for gc copy/scan == 9 dcache lines.  Derived from
+  // 50-warehouse specjbb runs on a 2-way 1.8ghz opteron using a 4gb heap.
+  // Tested intervals from 128 to 2048 in increments of 64 == one cache line.
+  // 256 bytes (4 dcache lines) was the nearest runner-up to 576.
+
+  // gc copy/scan is disabled if prefetchw isn't supported, because
+  // Prefetch::write emits an inlined prefetchw on Linux.
+  // Do not use the 3dnow prefetchw instruction.  It isn't supported on em64t.
+  // The used prefetcht0 instruction works for both amd64 and em64t.
+  static intx prefetch_copy_interval_in_bytes() {
+    intx interval = PrefetchCopyIntervalInBytes;
+    return interval >= 0 ? interval : 576;
+  }
+  static intx prefetch_scan_interval_in_bytes() {
+    intx interval = PrefetchScanIntervalInBytes;
+    return interval >= 0 ? interval : 576;
+  }
+  static intx prefetch_fields_ahead() {
+    intx count = PrefetchFieldsAhead;
+    return count >= 0 ? count : 1;
+  }
+};
--- a/src/cpu/x86/vm/vm_version_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +0,0 @@
-/*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
- * 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.
- *
- */
-
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_x86_32.cpp.incl"
-
-
-int VM_Version::_cpu;
-int VM_Version::_model;
-int VM_Version::_stepping;
-int VM_Version::_cpuFeatures;
-const char*           VM_Version::_features_str = "";
-VM_Version::CpuidInfo VM_Version::_cpuid_info   = { 0, };
-
-static BufferBlob* stub_blob;
-static const int stub_size = 300;
-
-extern "C" {
-  typedef void (*getPsrInfo_stub_t)(void*);
-}
-static getPsrInfo_stub_t getPsrInfo_stub = NULL;
-
-
-class VM_Version_StubGenerator: public StubCodeGenerator {
- public:
-
-  VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
-
-  address generate_getPsrInfo() {
-    // Flags to test CPU type.
-    const uint32_t EFL_AC           = 0x40000;
-    const uint32_t EFL_ID           = 0x200000;
-    // Values for when we don't have a CPUID instruction.
-    const int      CPU_FAMILY_SHIFT = 8;
-    const uint32_t CPU_FAMILY_386   = (3 << CPU_FAMILY_SHIFT);
-    const uint32_t CPU_FAMILY_486   = (4 << CPU_FAMILY_SHIFT);
-
-    Label detect_486, cpu486, detect_586, std_cpuid1;
-    Label ext_cpuid1, ext_cpuid5, done;
-
-    StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
-#   define __ _masm->
-
-    address start = __ pc();
-
-    //
-    // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
-    //
-    __ push(rbp);
-    __ movptr(rbp, Address(rsp, 8)); // cpuid_info address
-    __ push(rbx);
-    __ push(rsi);
-    __ pushf();          // preserve rbx, and flags
-    __ pop(rax);
-    __ push(rax);
-    __ mov(rcx, rax);
-    //
-    // if we are unable to change the AC flag, we have a 386
-    //
-    __ xorl(rax, EFL_AC);
-    __ push(rax);
-    __ popf();
-    __ pushf();
-    __ pop(rax);
-    __ cmpptr(rax, rcx);
-    __ jccb(Assembler::notEqual, detect_486);
-
-    __ movl(rax, CPU_FAMILY_386);
-    __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
-    __ jmp(done);
-
-    //
-    // If we are unable to change the ID flag, we have a 486 which does
-    // not support the "cpuid" instruction.
-    //
-    __ bind(detect_486);
-    __ mov(rax, rcx);
-    __ xorl(rax, EFL_ID);
-    __ push(rax);
-    __ popf();
-    __ pushf();
-    __ pop(rax);
-    __ cmpptr(rcx, rax);
-    __ jccb(Assembler::notEqual, detect_586);
-
-    __ bind(cpu486);
-    __ movl(rax, CPU_FAMILY_486);
-    __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
-    __ jmp(done);
-
-    //
-    // at this point, we have a chip which supports the "cpuid" instruction
-    //
-    __ bind(detect_586);
-    __ xorptr(rax, rax);
-    __ cpuid();
-    __ orptr(rax, rax);
-    __ jcc(Assembler::equal, cpu486);   // if cpuid doesn't support an input
-                                        // value of at least 1, we give up and
-                                        // assume a 486
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    __ cmpl(rax, 3);     // Is cpuid(0x4) supported?
-    __ jccb(Assembler::belowEqual, std_cpuid1);
-
-    //
-    // cpuid(0x4) Deterministic cache params
-    //
-    __ movl(rax, 4);     // and rcx already set to 0x0
-    __ xorl(rcx, rcx);
-    __ cpuid();
-    __ push(rax);
-    __ andl(rax, 0x1f);  // Determine if valid cache parameters used
-    __ orl(rax, rax);    // rax,[4:0] == 0 indicates invalid cache
-    __ pop(rax);
-    __ jccb(Assembler::equal, std_cpuid1);
-
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Standard cpuid(0x1)
-    //
-    __ bind(std_cpuid1);
-    __ movl(rax, 1);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    __ movl(rax, 0x80000000);
-    __ cpuid();
-    __ cmpl(rax, 0x80000000);     // Is cpuid(0x80000001) supported?
-    __ jcc(Assembler::belowEqual, done);
-    __ cmpl(rax, 0x80000004);     // Is cpuid(0x80000005) supported?
-    __ jccb(Assembler::belowEqual, ext_cpuid1);
-    __ cmpl(rax, 0x80000007);     // Is cpuid(0x80000008) supported?
-    __ jccb(Assembler::belowEqual, ext_cpuid5);
-    //
-    // Extended cpuid(0x80000008)
-    //
-    __ movl(rax, 0x80000008);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Extended cpuid(0x80000005)
-    //
-    __ bind(ext_cpuid5);
-    __ movl(rax, 0x80000005);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Extended cpuid(0x80000001)
-    //
-    __ bind(ext_cpuid1);
-    __ movl(rax, 0x80000001);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // return
-    //
-    __ bind(done);
-    __ popf();
-    __ pop(rsi);
-    __ pop(rbx);
-    __ pop(rbp);
-    __ ret(0);
-
-#   undef __
-
-    return start;
-  };
-};
-
-
-void VM_Version::get_processor_features() {
-
-  _cpu = 4; // 486 by default
-  _model = 0;
-  _stepping = 0;
-  _cpuFeatures = 0;
-  _logical_processors_per_package = 1;
-  if (!Use486InstrsOnly) {
-    // Get raw processor info
-    getPsrInfo_stub(&_cpuid_info);
-    assert_is_initialized();
-    _cpu = extended_cpu_family();
-    _model = extended_cpu_model();
-    _stepping = cpu_stepping();
-    if (cpu_family() > 4) { // it supports CPUID
-      _cpuFeatures = feature_flags();
-      // Logical processors are only available on P4s and above,
-      // and only if hyperthreading is available.
-      _logical_processors_per_package = logical_processor_count();
-    }
-  }
-  _supports_cx8 = supports_cmpxchg8();
-  // if the OS doesn't support SSE, we can't use this feature even if the HW does
-  if( !os::supports_sse())
-    _cpuFeatures &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
-  if (UseSSE < 4) {
-    _cpuFeatures &= ~CPU_SSE4_1;
-    _cpuFeatures &= ~CPU_SSE4_2;
-  }
-  if (UseSSE < 3) {
-    _cpuFeatures &= ~CPU_SSE3;
-    _cpuFeatures &= ~CPU_SSSE3;
-    _cpuFeatures &= ~CPU_SSE4A;
-  }
-  if (UseSSE < 2)
-    _cpuFeatures &= ~CPU_SSE2;
-  if (UseSSE < 1)
-    _cpuFeatures &= ~CPU_SSE;
-
-  if (logical_processors_per_package() == 1) {
-    // HT processor could be installed on a system which doesn't support HT.
-    _cpuFeatures &= ~CPU_HT;
-  }
-
-  char buf[256];
-  jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
-               cores_per_cpu(), threads_per_core(),
-               cpu_family(), _model, _stepping,
-               (supports_cmov() ? ", cmov" : ""),
-               (supports_cmpxchg8() ? ", cx8" : ""),
-               (supports_fxsr() ? ", fxsr" : ""),
-               (supports_mmx()  ? ", mmx"  : ""),
-               (supports_sse()  ? ", sse"  : ""),
-               (supports_sse2() ? ", sse2" : ""),
-               (supports_sse3() ? ", sse3" : ""),
-               (supports_ssse3()? ", ssse3": ""),
-               (supports_sse4_1() ? ", sse4.1" : ""),
-               (supports_sse4_2() ? ", sse4.2" : ""),
-               (supports_mmx_ext() ? ", mmxext" : ""),
-               (supports_3dnow()   ? ", 3dnow"  : ""),
-               (supports_3dnow2()  ? ", 3dnowext" : ""),
-               (supports_sse4a()   ? ", sse4a": ""),
-               (supports_ht() ? ", ht": ""));
-  _features_str = strdup(buf);
-
-  // UseSSE is set to the smaller of what hardware supports and what
-  // the command line requires.  I.e., you cannot set UseSSE to 2 on
-  // older Pentiums which do not support it.
-  if( UseSSE > 4 ) UseSSE=4;
-  if( UseSSE < 0 ) UseSSE=0;
-  if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
-    UseSSE = MIN2((intx)3,UseSSE);
-  if( !supports_sse3() ) // Drop to 2 if no SSE3 support
-    UseSSE = MIN2((intx)2,UseSSE);
-  if( !supports_sse2() ) // Drop to 1 if no SSE2 support
-    UseSSE = MIN2((intx)1,UseSSE);
-  if( !supports_sse () ) // Drop to 0 if no SSE  support
-    UseSSE = 0;
-
-  // On new cpus instructions which update whole XMM register should be used
-  // to prevent partial register stall due to dependencies on high half.
-  //
-  // UseXmmLoadAndClearUpper == true  --> movsd(xmm, mem)
-  // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
-  // UseXmmRegToRegMoveAll == true  --> movaps(xmm, xmm), movapd(xmm, xmm).
-  // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm),  movsd(xmm, xmm).
-
-  if( is_amd() ) { // AMD cpus specific settings
-    if( supports_sse2() && FLAG_IS_DEFAULT(UseAddressNop) ) {
-      // Use it on new AMD cpus starting from Opteron.
-      UseAddressNop = true;
-    }
-    if( supports_sse2() && FLAG_IS_DEFAULT(UseNewLongLShift) ) {
-      // Use it on new AMD cpus starting from Opteron.
-      UseNewLongLShift = true;
-    }
-    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
-      if( supports_sse4a() ) {
-        UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
-      } else {
-        UseXmmLoadAndClearUpper = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
-      if( supports_sse4a() ) {
-        UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
-      } else {
-        UseXmmRegToRegMoveAll = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
-      if( supports_sse4a() ) {
-        UseXmmI2F = true;
-      } else {
-        UseXmmI2F = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
-      if( supports_sse4a() ) {
-        UseXmmI2D = true;
-      } else {
-        UseXmmI2D = false;
-      }
-    }
-  }
-
-  if( is_intel() ) { // Intel cpus specific settings
-    if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
-      UseStoreImmI16 = false; // don't use it on Intel cpus
-    }
-    if( cpu_family() == 6 || cpu_family() == 15 ) {
-      if( FLAG_IS_DEFAULT(UseAddressNop) ) {
-        // Use it on all Intel cpus starting from PentiumPro
-        UseAddressNop = true;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
-      UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
-    }
-    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
-      if( supports_sse3() ) {
-        UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
-      } else {
-        UseXmmRegToRegMoveAll = false;
-      }
-    }
-    if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
-#ifdef COMPILER2
-      if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
-        // For new Intel cpus do the next optimization:
-        // don't align the beginning of a loop if there are enough instructions
-        // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
-        // in current fetch line (OptoLoopAlignment) or the padding
-        // is big (> MaxLoopPad).
-        // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
-        // generated NOP instructions. 11 is the largest size of one
-        // address NOP instruction '0F 1F' (see Assembler::nop(i)).
-        MaxLoopPad = 11;
-      }
-#endif // COMPILER2
-      if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
-        UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
-      }
-      if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
-        if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
-          UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
-        }
-      }
-    }
-  }
-
-  assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
-  assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
-
-  // set valid Prefetch instruction
-  if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
-  if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
-  if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
-  if( !supports_sse() && supports_3dnow() ) ReadPrefetchInstr = 3;
-
-  if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
-  if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
-  if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
-  if( !supports_sse() && supports_3dnow() ) AllocatePrefetchInstr = 3;
-
-  // Allocation prefetch settings
-  intx cache_line_size = L1_data_cache_line_size();
-  if( cache_line_size > AllocatePrefetchStepSize )
-    AllocatePrefetchStepSize = cache_line_size;
-  if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
-    AllocatePrefetchLines = 3; // Optimistic value
-  assert(AllocatePrefetchLines > 0, "invalid value");
-  if( AllocatePrefetchLines < 1 ) // set valid value in product VM
-    AllocatePrefetchLines = 1; // Conservative value
-
-  AllocatePrefetchDistance = allocate_prefetch_distance();
-  AllocatePrefetchStyle    = allocate_prefetch_style();
-
-  if( AllocatePrefetchStyle == 2 && is_intel() &&
-      cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
-    AllocatePrefetchDistance = 320;
-  }
-  assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
-
-#ifndef PRODUCT
-  if (PrintMiscellaneous && Verbose) {
-    tty->print_cr("Logical CPUs per core: %u",
-                  logical_processors_per_package());
-    tty->print_cr("UseSSE=%d",UseSSE);
-    tty->print("Allocation: ");
-    if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow()) {
-      tty->print_cr("no prefetching");
-    } else {
-      if (UseSSE == 0 && supports_3dnow()) {
-        tty->print("PREFETCHW");
-      } else if (UseSSE >= 1) {
-        if (AllocatePrefetchInstr == 0) {
-          tty->print("PREFETCHNTA");
-        } else if (AllocatePrefetchInstr == 1) {
-          tty->print("PREFETCHT0");
-        } else if (AllocatePrefetchInstr == 2) {
-          tty->print("PREFETCHT2");
-        } else if (AllocatePrefetchInstr == 3) {
-          tty->print("PREFETCHW");
-        }
-      }
-      if (AllocatePrefetchLines > 1) {
-        tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
-      } else {
-        tty->print_cr(" %d, one line", AllocatePrefetchDistance);
-      }
-    }
-  }
-#endif // !PRODUCT
-}
-
-void VM_Version::initialize() {
-  ResourceMark rm;
-  // Making this stub must be FIRST use of assembler
-
-  stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
-  if (stub_blob == NULL) {
-    vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
-  }
-  CodeBuffer c(stub_blob->instructions_begin(),
-               stub_blob->instructions_size());
-  VM_Version_StubGenerator g(&c);
-  getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
-                                   g.generate_getPsrInfo());
-
-  get_processor_features();
-}
--- a/src/cpu/x86/vm/vm_version_x86_32.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,439 +0,0 @@
-/*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
- * 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.
- *
- */
-
-class VM_Version: public Abstract_VM_Version {
-public:
-  // cpuid result register layouts.  These are all unions of a uint32_t
-  // (in case anyone wants access to the register as a whole) and a bitfield.
-
-  union StdCpuid1Eax {
-    uint32_t value;
-    struct {
-      uint32_t stepping   : 4,
-               model      : 4,
-               family     : 4,
-               proc_type  : 2,
-                          : 2,
-               ext_model  : 4,
-               ext_family : 8,
-                          : 4;
-    } bits;
-  };
-
-  union StdCpuid1Ebx { // example, unused
-    uint32_t value;
-    struct {
-      uint32_t brand_id         : 8,
-               clflush_size     : 8,
-               threads_per_cpu  : 8,
-               apic_id          : 8;
-    } bits;
-  };
-
-  union StdCpuid1Ecx {
-    uint32_t value;
-    struct {
-      uint32_t sse3     : 1,
-                        : 2,
-               monitor  : 1,
-                        : 1,
-               vmx      : 1,
-                        : 1,
-               est      : 1,
-                        : 1,
-               ssse3    : 1,
-               cid      : 1,
-                        : 2,
-               cmpxchg16: 1,
-                        : 4,
-               dca      : 1,
-               sse4_1   : 1,
-               sse4_2   : 1,
-                        : 11;
-    } bits;
-  };
-
-  union StdCpuid1Edx {
-    uint32_t value;
-    struct {
-      uint32_t          : 4,
-               tsc      : 1,
-                        : 3,
-               cmpxchg8 : 1,
-                        : 6,
-               cmov     : 1,
-                        : 7,
-               mmx      : 1,
-               fxsr     : 1,
-               sse      : 1,
-               sse2     : 1,
-                        : 1,
-               ht       : 1,
-                        : 3;
-    } bits;
-  };
-
-  union DcpCpuid4Eax {
-    uint32_t value;
-    struct {
-      uint32_t cache_type    : 5,
-                             : 21,
-               cores_per_cpu : 6;
-    } bits;
-  };
-
-  union DcpCpuid4Ebx {
-    uint32_t value;
-    struct {
-      uint32_t L1_line_size  : 12,
-               partitions    : 10,
-               associativity : 10;
-    } bits;
-  };
-
-  union ExtCpuid1Ecx {
-    uint32_t value;
-    struct {
-      uint32_t LahfSahf     : 1,
-               CmpLegacy    : 1,
-                            : 4,
-               abm          : 1,
-               sse4a        : 1,
-               misalignsse  : 1,
-               prefetchw    : 1,
-                            : 22;
-    } bits;
-  };
-
-  union ExtCpuid1Edx {
-    uint32_t value;
-    struct {
-      uint32_t           : 22,
-               mmx_amd   : 1,
-               mmx       : 1,
-               fxsr      : 1,
-                         : 4,
-               long_mode : 1,
-               tdnow2    : 1,
-               tdnow     : 1;
-    } bits;
-  };
-
-  union ExtCpuid5Ex {
-    uint32_t value;
-    struct {
-      uint32_t L1_line_size : 8,
-               L1_tag_lines : 8,
-               L1_assoc     : 8,
-               L1_size      : 8;
-    } bits;
-  };
-
-  union ExtCpuid8Ecx {
-    uint32_t value;
-    struct {
-      uint32_t cores_per_cpu : 8,
-                             : 24;
-    } bits;
-  };
-
-protected:
-   static int _cpu;
-   static int _model;
-   static int _stepping;
-   static int _cpuFeatures;     // features returned by the "cpuid" instruction
-                                // 0 if this instruction is not available
-   static const char* _features_str;
-
-   enum {
-     CPU_CX8  = (1 << 0), // next bits are from cpuid 1 (EDX)
-     CPU_CMOV = (1 << 1),
-     CPU_FXSR = (1 << 2),
-     CPU_HT   = (1 << 3),
-     CPU_MMX  = (1 << 4),
-     CPU_3DNOW= (1 << 5), // 3DNow comes from cpuid 0x80000001 (EDX)
-     CPU_SSE  = (1 << 6),
-     CPU_SSE2 = (1 << 7),
-     CPU_SSE3 = (1 << 8), // sse3  comes from cpuid 1 (ECX)
-     CPU_SSSE3= (1 << 9),
-     CPU_SSE4A= (1 <<10),
-     CPU_SSE4_1 = (1 << 11),
-     CPU_SSE4_2 = (1 << 12)
-   } cpuFeatureFlags;
-
-  // cpuid information block.  All info derived from executing cpuid with
-  // various function numbers is stored here.  Intel and AMD info is
-  // merged in this block: accessor methods disentangle it.
-  //
-  // The info block is laid out in subblocks of 4 dwords corresponding to
-  // rax, rbx, rcx and rdx, whether or not they contain anything useful.
-  struct CpuidInfo {
-    // cpuid function 0
-    uint32_t std_max_function;
-    uint32_t std_vendor_name_0;
-    uint32_t std_vendor_name_1;
-    uint32_t std_vendor_name_2;
-
-    // cpuid function 1
-    StdCpuid1Eax std_cpuid1_rax;
-    StdCpuid1Ebx std_cpuid1_rbx;
-    StdCpuid1Ecx std_cpuid1_rcx;
-    StdCpuid1Edx std_cpuid1_rdx;
-
-    // cpuid function 4 (deterministic cache parameters)
-    DcpCpuid4Eax dcp_cpuid4_rax;
-    DcpCpuid4Ebx dcp_cpuid4_rbx;
-    uint32_t     dcp_cpuid4_rcx; // unused currently
-    uint32_t     dcp_cpuid4_rdx; // unused currently
-
-    // cpuid function 0x80000000 // example, unused
-    uint32_t ext_max_function;
-    uint32_t ext_vendor_name_0;
-    uint32_t ext_vendor_name_1;
-    uint32_t ext_vendor_name_2;
-
-    // cpuid function 0x80000001
-    uint32_t     ext_cpuid1_rax; // reserved
-    uint32_t     ext_cpuid1_rbx; // reserved
-    ExtCpuid1Ecx ext_cpuid1_rcx;
-    ExtCpuid1Edx ext_cpuid1_rdx;
-
-    // cpuid functions 0x80000002 thru 0x80000004: example, unused
-    uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
-    uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
-    uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
-
-    // cpuid function 0x80000005 //AMD L1, Intel reserved
-    uint32_t     ext_cpuid5_rax; // unused currently
-    uint32_t     ext_cpuid5_rbx; // reserved
-    ExtCpuid5Ex  ext_cpuid5_rcx; // L1 data cache info (AMD)
-    ExtCpuid5Ex  ext_cpuid5_rdx; // L1 instruction cache info (AMD)
-
-    // cpuid function 0x80000008
-    uint32_t     ext_cpuid8_rax; // unused currently
-    uint32_t     ext_cpuid8_rbx; // reserved
-    ExtCpuid8Ecx ext_cpuid8_rcx;
-    uint32_t     ext_cpuid8_rdx; // reserved
-  };
-
-  // The actual cpuid info block
-  static CpuidInfo _cpuid_info;
-
-  // Extractors and predicates
-  static uint32_t extended_cpu_family() {
-    uint32_t result = _cpuid_info.std_cpuid1_rax.bits.family;
-    result += _cpuid_info.std_cpuid1_rax.bits.ext_family;
-    return result;
-  }
-  static uint32_t extended_cpu_model() {
-    uint32_t result = _cpuid_info.std_cpuid1_rax.bits.model;
-    result |= _cpuid_info.std_cpuid1_rax.bits.ext_model << 4;
-    return result;
-  }
-  static uint32_t cpu_stepping() {
-    uint32_t result = _cpuid_info.std_cpuid1_rax.bits.stepping;
-    return result;
-  }
-  static uint logical_processor_count() {
-    uint result = threads_per_core();
-    return result;
-  }
-  static uint32_t feature_flags() {
-    uint32_t result = 0;
-    if (_cpuid_info.std_cpuid1_rdx.bits.cmpxchg8 != 0)
-      result |= CPU_CX8;
-    if (_cpuid_info.std_cpuid1_rdx.bits.cmov != 0)
-      result |= CPU_CMOV;
-    if (_cpuid_info.std_cpuid1_rdx.bits.fxsr != 0 || is_amd() &&
-        _cpuid_info.ext_cpuid1_rdx.bits.fxsr != 0)
-      result |= CPU_FXSR;
-    // HT flag is set for multi-core processors also.
-    if (threads_per_core() > 1)
-      result |= CPU_HT;
-    if (_cpuid_info.std_cpuid1_rdx.bits.mmx != 0 || is_amd() &&
-        _cpuid_info.ext_cpuid1_rdx.bits.mmx != 0)
-      result |= CPU_MMX;
-    if (is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.tdnow != 0)
-      result |= CPU_3DNOW;
-    if (_cpuid_info.std_cpuid1_rdx.bits.sse != 0)
-      result |= CPU_SSE;
-    if (_cpuid_info.std_cpuid1_rdx.bits.sse2 != 0)
-      result |= CPU_SSE2;
-    if (_cpuid_info.std_cpuid1_rcx.bits.sse3 != 0)
-      result |= CPU_SSE3;
-    if (_cpuid_info.std_cpuid1_rcx.bits.ssse3 != 0)
-      result |= CPU_SSSE3;
-    if (is_amd() && _cpuid_info.ext_cpuid1_rcx.bits.sse4a != 0)
-      result |= CPU_SSE4A;
-    if (_cpuid_info.std_cpuid1_rcx.bits.sse4_1 != 0)
-      result |= CPU_SSE4_1;
-    if (_cpuid_info.std_cpuid1_rcx.bits.sse4_2 != 0)
-      result |= CPU_SSE4_2;
-    return result;
-  }
-
-  static void get_processor_features();
-
-public:
-  // Offsets for cpuid asm stub
-  static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
-  static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_rax); }
-  static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_rax); }
-  static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_rax); }
-  static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_rax); }
-  static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_rax); }
-
-  // Initialization
-  static void initialize();
-
-  // Asserts
-  static void assert_is_initialized() {
-    assert(_cpuid_info.std_cpuid1_rax.bits.family != 0, "VM_Version not initialized");
-  }
-
-  //
-  // Processor family:
-  //       3   -  386
-  //       4   -  486
-  //       5   -  Pentium
-  //       6   -  PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
-  //              Pentium M, Core Solo, Core Duo, Core2 Duo
-  //    family 6 model:   9,        13,       14,        15
-  //    0x0f   -  Pentium 4, Opteron
-  //
-  // Note: The cpu family should be used to select between
-  //       instruction sequences which are valid on all Intel
-  //       processors.  Use the feature test functions below to
-  //       determine whether a particular instruction is supported.
-  //
-  static int  cpu_family()        { return _cpu;}
-  static bool is_P6()             { return cpu_family() >= 6; }
-
-  static bool is_amd()            { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
-  static bool is_intel()          { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
-
-  static uint cores_per_cpu()  {
-    uint result = 1;
-    if (is_intel()) {
-      result = (_cpuid_info.dcp_cpuid4_rax.bits.cores_per_cpu + 1);
-    } else if (is_amd()) {
-      result = (_cpuid_info.ext_cpuid8_rcx.bits.cores_per_cpu + 1);
-    }
-    return result;
-  }
-
-  static uint threads_per_core()  {
-    uint result = 1;
-    if (_cpuid_info.std_cpuid1_rdx.bits.ht != 0) {
-      result = _cpuid_info.std_cpuid1_rbx.bits.threads_per_cpu /
-               cores_per_cpu();
-    }
-    return result;
-  }
-
-  static intx L1_data_cache_line_size()  {
-    intx result = 0;
-    if (is_intel()) {
-      result = (_cpuid_info.dcp_cpuid4_rbx.bits.L1_line_size + 1);
-    } else if (is_amd()) {
-      result = _cpuid_info.ext_cpuid5_rcx.bits.L1_line_size;
-    }
-    if (result < 32) // not defined ?
-      result = 32;   // 32 bytes by default on x86
-    return result;
-  }
-
-  //
-  // Feature identification
-  //
-  static bool supports_cpuid()    { return _cpuFeatures  != 0; }
-  static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
-  static bool supports_cmov()     { return (_cpuFeatures & CPU_CMOV) != 0; }
-  static bool supports_fxsr()     { return (_cpuFeatures & CPU_FXSR) != 0; }
-  static bool supports_ht()       { return (_cpuFeatures & CPU_HT) != 0; }
-  static bool supports_mmx()      { return (_cpuFeatures & CPU_MMX) != 0; }
-  static bool supports_sse()      { return (_cpuFeatures & CPU_SSE) != 0; }
-  static bool supports_sse2()     { return (_cpuFeatures & CPU_SSE2) != 0; }
-  static bool supports_sse3()     { return (_cpuFeatures & CPU_SSE3) != 0; }
-  static bool supports_ssse3()    { return (_cpuFeatures & CPU_SSSE3)!= 0; }
-  static bool supports_sse4_1()   { return (_cpuFeatures & CPU_SSE4_1) != 0; }
-  static bool supports_sse4_2()   { return (_cpuFeatures & CPU_SSE4_2) != 0; }
-  //
-  // AMD features
-  //
-  static bool supports_3dnow()    { return (_cpuFeatures & CPU_3DNOW) != 0; }
-  static bool supports_mmx_ext()  { return is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.mmx_amd != 0; }
-  static bool supports_3dnow2()   { return is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.tdnow2 != 0; }
-  static bool supports_sse4a()    { return (_cpuFeatures & CPU_SSE4A) != 0; }
-
-  static bool supports_compare_and_exchange() { return true; }
-
-  static const char* cpu_features()           { return _features_str; }
-
-  static intx allocate_prefetch_distance() {
-    // This method should be called before allocate_prefetch_style().
-    //
-    // Hardware prefetching (distance/size in bytes):
-    // Pentium 3 -  64 /  32
-    // Pentium 4 - 256 / 128
-    // Athlon    -  64 /  32 ????
-    // Opteron   - 128 /  64 only when 2 sequential cache lines accessed
-    // Core      - 128 /  64
-    //
-    // Software prefetching (distance in bytes / instruction with best score):
-    // Pentium 3 - 128 / prefetchnta
-    // Pentium 4 - 512 / prefetchnta
-    // Athlon    - 128 / prefetchnta
-    // Opteron   - 256 / prefetchnta
-    // Core      - 256 / prefetchnta
-    // It will be used only when AllocatePrefetchStyle > 0
-
-    intx count = AllocatePrefetchDistance;
-    if (count < 0) {   // default ?
-      if (is_amd()) {  // AMD
-        if (supports_sse2())
-          count = 256; // Opteron
-        else
-          count = 128; // Athlon
-      } else {         // Intel
-        if (supports_sse2())
-          if (cpu_family() == 6) {
-            count = 256; // Pentium M, Core, Core2
-          } else {
-            count = 512; // Pentium 4
-          }
-        else
-          count = 128; // Pentium 3 (and all other old CPUs)
-      }
-    }
-    return count;
-  }
-  static intx allocate_prefetch_style() {
-    assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
-    // Return 0 if AllocatePrefetchDistance was not defined or
-    // prefetch instruction is not supported.
-    return (AllocatePrefetchDistance > 0 &&
-            (supports_3dnow() || supports_sse())) ? AllocatePrefetchStyle : 0;
-  }
-};
--- a/src/cpu/x86/vm/vm_version_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-/*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
- * 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.
- *
- */
-
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_x86_64.cpp.incl"
-
-int VM_Version::_cpu;
-int VM_Version::_model;
-int VM_Version::_stepping;
-int VM_Version::_cpuFeatures;
-const char*           VM_Version::_features_str = "";
-VM_Version::CpuidInfo VM_Version::_cpuid_info   = { 0, };
-
-static BufferBlob* stub_blob;
-static const int stub_size = 300;
-
-extern "C" {
-  typedef void (*getPsrInfo_stub_t)(void*);
-}
-static getPsrInfo_stub_t getPsrInfo_stub = NULL;
-
-
-class VM_Version_StubGenerator: public StubCodeGenerator {
- public:
-
-  VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
-
-  address generate_getPsrInfo() {
-
-    Label std_cpuid1, ext_cpuid1, ext_cpuid5, done;
-
-    StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
-#   define __ _masm->
-
-    address start = __ pc();
-
-    //
-    // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
-    //
-    // rcx and rdx are first and second argument registers on windows
-
-    __ push(rbp);
-    __ mov(rbp, c_rarg0); // cpuid_info address
-    __ push(rbx);
-    __ push(rsi);
-
-    //
-    // we have a chip which supports the "cpuid" instruction
-    //
-    __ xorl(rax, rax);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    __ cmpl(rax, 3);     // Is cpuid(0x4) supported?
-    __ jccb(Assembler::belowEqual, std_cpuid1);
-
-    //
-    // cpuid(0x4) Deterministic cache params
-    //
-    __ movl(rax, 4);
-    __ xorl(rcx, rcx);   // L1 cache
-    __ cpuid();
-    __ push(rax);
-    __ andl(rax, 0x1f);  // Determine if valid cache parameters used
-    __ orl(rax, rax);    // eax[4:0] == 0 indicates invalid cache
-    __ pop(rax);
-    __ jccb(Assembler::equal, std_cpuid1);
-
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Standard cpuid(0x1)
-    //
-    __ bind(std_cpuid1);
-    __ movl(rax, 1);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    __ movl(rax, 0x80000000);
-    __ cpuid();
-    __ cmpl(rax, 0x80000000);     // Is cpuid(0x80000001) supported?
-    __ jcc(Assembler::belowEqual, done);
-    __ cmpl(rax, 0x80000004);     // Is cpuid(0x80000005) supported?
-    __ jccb(Assembler::belowEqual, ext_cpuid1);
-    __ cmpl(rax, 0x80000007);     // Is cpuid(0x80000008) supported?
-    __ jccb(Assembler::belowEqual, ext_cpuid5);
-    //
-    // Extended cpuid(0x80000008)
-    //
-    __ movl(rax, 0x80000008);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Extended cpuid(0x80000005)
-    //
-    __ bind(ext_cpuid5);
-    __ movl(rax, 0x80000005);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // Extended cpuid(0x80000001)
-    //
-    __ bind(ext_cpuid1);
-    __ movl(rax, 0x80000001);
-    __ cpuid();
-    __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
-    __ movl(Address(rsi, 0), rax);
-    __ movl(Address(rsi, 4), rbx);
-    __ movl(Address(rsi, 8), rcx);
-    __ movl(Address(rsi,12), rdx);
-
-    //
-    // return
-    //
-    __ bind(done);
-    __ pop(rsi);
-    __ pop(rbx);
-    __ pop(rbp);
-    __ ret(0);
-
-#   undef __
-
-    return start;
-  };
-};
-
-
-void VM_Version::get_processor_features() {
-
-  _logical_processors_per_package = 1;
-  // Get raw processor info
-  getPsrInfo_stub(&_cpuid_info);
-  assert_is_initialized();
-  _cpu = extended_cpu_family();
-  _model = extended_cpu_model();
-  _stepping = cpu_stepping();
-  _cpuFeatures = feature_flags();
-  // Logical processors are only available on P4s and above,
-  // and only if hyperthreading is available.
-  _logical_processors_per_package = logical_processor_count();
-  _supports_cx8    = supports_cmpxchg8();
-  // OS should support SSE for x64 and hardware should support at least SSE2.
-  if (!VM_Version::supports_sse2()) {
-    vm_exit_during_initialization("Unknown x64 processor: SSE2 not supported");
-  }
-  if (UseSSE < 4) {
-    _cpuFeatures &= ~CPU_SSE4_1;
-    _cpuFeatures &= ~CPU_SSE4_2;
-  }
-  if (UseSSE < 3) {
-    _cpuFeatures &= ~CPU_SSE3;
-    _cpuFeatures &= ~CPU_SSSE3;
-    _cpuFeatures &= ~CPU_SSE4A;
-  }
-  if (UseSSE < 2)
-    _cpuFeatures &= ~CPU_SSE2;
-  if (UseSSE < 1)
-    _cpuFeatures &= ~CPU_SSE;
-
-  if (logical_processors_per_package() == 1) {
-    // HT processor could be installed on a system which doesn't support HT.
-    _cpuFeatures &= ~CPU_HT;
-  }
-
-  char buf[256];
-  jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
-               cores_per_cpu(), threads_per_core(),
-               cpu_family(), _model, _stepping,
-               (supports_cmov() ? ", cmov" : ""),
-               (supports_cmpxchg8() ? ", cx8" : ""),
-               (supports_fxsr() ? ", fxsr" : ""),
-               (supports_mmx()  ? ", mmx"  : ""),
-               (supports_sse()  ? ", sse"  : ""),
-               (supports_sse2() ? ", sse2" : ""),
-               (supports_sse3() ? ", sse3" : ""),
-               (supports_ssse3()? ", ssse3": ""),
-               (supports_sse4_1() ? ", sse4.1" : ""),
-               (supports_sse4_2() ? ", sse4.2" : ""),
-               (supports_mmx_ext() ? ", mmxext" : ""),
-               (supports_3dnow()   ? ", 3dnow"  : ""),
-               (supports_3dnow2()  ? ", 3dnowext" : ""),
-               (supports_sse4a()   ? ", sse4a": ""),
-               (supports_ht() ? ", ht": ""));
-  _features_str = strdup(buf);
-
-  // UseSSE is set to the smaller of what hardware supports and what
-  // the command line requires.  I.e., you cannot set UseSSE to 2 on
-  // older Pentiums which do not support it.
-  if( UseSSE > 4 ) UseSSE=4;
-  if( UseSSE < 0 ) UseSSE=0;
-  if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
-    UseSSE = MIN2((intx)3,UseSSE);
-  if( !supports_sse3() ) // Drop to 2 if no SSE3 support
-    UseSSE = MIN2((intx)2,UseSSE);
-  if( !supports_sse2() ) // Drop to 1 if no SSE2 support
-    UseSSE = MIN2((intx)1,UseSSE);
-  if( !supports_sse () ) // Drop to 0 if no SSE  support
-    UseSSE = 0;
-
-  // On new cpus instructions which update whole XMM register should be used
-  // to prevent partial register stall due to dependencies on high half.
-  //
-  // UseXmmLoadAndClearUpper == true  --> movsd(xmm, mem)
-  // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
-  // UseXmmRegToRegMoveAll == true  --> movaps(xmm, xmm), movapd(xmm, xmm).
-  // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm),  movsd(xmm, xmm).
-
-  if( is_amd() ) { // AMD cpus specific settings
-    if( FLAG_IS_DEFAULT(UseAddressNop) ) {
-      // Use it on all AMD cpus starting from Opteron (don't need
-      // a cpu check since only Opteron and new cpus support 64-bits mode).
-      UseAddressNop = true;
-    }
-    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
-      if( supports_sse4a() ) {
-        UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
-      } else {
-        UseXmmLoadAndClearUpper = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
-      if( supports_sse4a() ) {
-        UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
-      } else {
-        UseXmmRegToRegMoveAll = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
-      if( supports_sse4a() ) {
-        UseXmmI2F = true;
-      } else {
-        UseXmmI2F = false;
-      }
-    }
-    if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
-      if( supports_sse4a() ) {
-        UseXmmI2D = true;
-      } else {
-        UseXmmI2D = false;
-      }
-    }
-  }
-
-  if( is_intel() ) { // Intel cpus specific settings
-    if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
-      UseStoreImmI16 = false; // don't use it on Intel cpus
-    }
-    if( FLAG_IS_DEFAULT(UseAddressNop) ) {
-      // Use it on all Intel cpus starting from PentiumPro
-      // (don't need a cpu check since only new cpus support 64-bits mode).
-      UseAddressNop = true;
-    }
-    if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
-      UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
-    }
-    if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
-      if( supports_sse3() ) {
-        UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
-      } else {
-        UseXmmRegToRegMoveAll = false;
-      }
-    }
-    if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
-#ifdef COMPILER2
-      if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
-        // For new Intel cpus do the next optimization:
-        // don't align the beginning of a loop if there are enough instructions
-        // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
-        // in current fetch line (OptoLoopAlignment) or the padding
-        // is big (> MaxLoopPad).
-        // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
-        // generated NOP instructions. 11 is the largest size of one
-        // address NOP instruction '0F 1F' (see Assembler::nop(i)).
-        MaxLoopPad = 11;
-      }
-#endif // COMPILER2
-      if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
-        UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
-      }
-      if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
-        if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
-          UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
-        }
-      }
-    }
-  }
-
-  assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
-  assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
-
-  // set valid Prefetch instruction
-  if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
-  if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
-  if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
-
-  if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
-  if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
-  if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
-
-  // Allocation prefetch settings
-  intx cache_line_size = L1_data_cache_line_size();
-  if( cache_line_size > AllocatePrefetchStepSize )
-    AllocatePrefetchStepSize = cache_line_size;
-  if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
-    AllocatePrefetchLines = 3; // Optimistic value
-  assert(AllocatePrefetchLines > 0, "invalid value");
-  if( AllocatePrefetchLines < 1 ) // set valid value in product VM
-    AllocatePrefetchLines = 1; // Conservative value
-
-  AllocatePrefetchDistance = allocate_prefetch_distance();
-  AllocatePrefetchStyle    = allocate_prefetch_style();
-
-  if( AllocatePrefetchStyle == 2 && is_intel() &&
-      cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
-    AllocatePrefetchDistance = 384;
-  }
-  assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
-
-  // Prefetch settings
-  PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
-  PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
-  PrefetchFieldsAhead         = prefetch_fields_ahead();
-
-#ifndef PRODUCT
-  if (PrintMiscellaneous && Verbose) {
-    tty->print_cr("Logical CPUs per core: %u",
-                  logical_processors_per_package());
-    tty->print_cr("UseSSE=%d",UseSSE);
-    tty->print("Allocation: ");
-    if (AllocatePrefetchStyle <= 0) {
-      tty->print_cr("no prefetching");
-    } else {
-      if (AllocatePrefetchInstr == 0) {
-        tty->print("PREFETCHNTA");
-      } else if (AllocatePrefetchInstr == 1) {
-        tty->print("PREFETCHT0");
-      } else if (AllocatePrefetchInstr == 2) {
-        tty->print("PREFETCHT2");
-      } else if (AllocatePrefetchInstr == 3) {
-        tty->print("PREFETCHW");
-      }
-      if (AllocatePrefetchLines > 1) {
-        tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
-      } else {
-        tty->print_cr(" %d, one line", AllocatePrefetchDistance);
-      }
-    }
-    if (PrefetchCopyIntervalInBytes > 0) {
-      tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes);
-    }
-    if (PrefetchScanIntervalInBytes > 0) {
-      tty->print_cr("PrefetchScanIntervalInBytes %d", PrefetchScanIntervalInBytes);
-    }
-    if (PrefetchFieldsAhead > 0) {
-      tty->print_cr("PrefetchFieldsAhead %d", PrefetchFieldsAhead);
-    }
-  }
-#endif // !PRODUCT
-}
-
-void VM_Version::initialize() {
-  ResourceMark rm;
-  // Making this stub must be FIRST use of assembler
-
-  stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
-  if (stub_blob == NULL) {
-    vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
-  }
-  CodeBuffer c(stub_blob->instructions_begin(),
-               stub_blob->instructions_size());
-  VM_Version_StubGenerator g(&c);
-  getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
-                                   g.generate_getPsrInfo());
-
-  get_processor_features();
-}
--- a/src/cpu/x86/vm/vm_version_x86_64.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +0,0 @@
-/*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
- * 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.
- *
- */
-
-class VM_Version : public Abstract_VM_Version {
-public:
-  // cpuid result register layouts.  These are all unions of a uint32_t
-  // (in case anyone wants access to the register as a whole) and a bitfield.
-
-  union StdCpuid1Eax {
-    uint32_t value;
-    struct {
-      uint32_t stepping   : 4,
-               model      : 4,
-               family     : 4,
-               proc_type  : 2,
-                          : 2,
-               ext_model  : 4,
-               ext_family : 8,
-                          : 4;
-    } bits;
-  };
-
-  union StdCpuid1Ebx { // example, unused
-    uint32_t value;
-    struct {
-      uint32_t brand_id         : 8,
-               clflush_size     : 8,
-               threads_per_cpu  : 8,
-               apic_id          : 8;
-    } bits;
-  };
-
-  union StdCpuid1Ecx {
-    uint32_t value;
-    struct {
-      uint32_t sse3     : 1,
-                        : 2,
-               monitor  : 1,
-                        : 1,
-               vmx      : 1,
-                        : 1,
-               est      : 1,
-                        : 1,
-               ssse3    : 1,
-               cid      : 1,
-                        : 2,
-               cmpxchg16: 1,
-                        : 4,
-               dca      : 1,
-               sse4_1   : 1,
-               sse4_2   : 1,
-                        : 11;
-    } bits;
-  };
-
-  union StdCpuid1Edx {
-    uint32_t value;
-    struct {
-      uint32_t          : 4,
-               tsc      : 1,
-                        : 3,
-               cmpxchg8 : 1,
-                        : 6,
-               cmov     : 1,
-                        : 7,
-               mmx      : 1,
-               fxsr     : 1,
-               sse      : 1,
-               sse2     : 1,
-                        : 1,
-               ht       : 1,
-                        : 3;
-    } bits;
-  };
-
-  union DcpCpuid4Eax {
-    uint32_t value;
-    struct {
-      uint32_t cache_type    : 5,
-                             : 21,
-               cores_per_cpu : 6;
-    } bits;
-  };
-
-  union DcpCpuid4Ebx {
-    uint32_t value;
-    struct {
-      uint32_t L1_line_size  : 12,
-               partitions    : 10,
-               associativity : 10;
-    } bits;
-  };
-
-  union ExtCpuid1Edx {
-    uint32_t value;
-    struct {
-      uint32_t           : 22,
-               mmx_amd   : 1,
-               mmx       : 1,
-               fxsr      : 1,
-                         : 4,
-               long_mode : 1,
-               tdnow2    : 1,
-               tdnow     : 1;
-    } bits;
-  };
-
-  union ExtCpuid1Ecx {
-    uint32_t value;
-    struct {
-      uint32_t LahfSahf     : 1,
-               CmpLegacy    : 1,
-                            : 4,
-               abm          : 1,
-               sse4a        : 1,
-               misalignsse  : 1,
-               prefetchw    : 1,
-                            : 22;
-    } bits;
-  };
-
-  union ExtCpuid5Ex {
-    uint32_t value;
-    struct {
-      uint32_t L1_line_size : 8,
-               L1_tag_lines : 8,
-               L1_assoc     : 8,
-               L1_size      : 8;
-    } bits;
-  };
-
-  union ExtCpuid8Ecx {
-    uint32_t value;
-    struct {
-      uint32_t cores_per_cpu : 8,
-                             : 24;
-    } bits;
-  };
-
-protected:
-   static int _cpu;
-   static int _model;
-   static int _stepping;
-   static int _cpuFeatures;     // features returned by the "cpuid" instruction
-                                // 0 if this instruction is not available
-   static const char* _features_str;
-
-   enum {
-     CPU_CX8  = (1 << 0), // next bits are from cpuid 1 (EDX)
-     CPU_CMOV = (1 << 1),
-     CPU_FXSR = (1 << 2),
-     CPU_HT   = (1 << 3),
-     CPU_MMX  = (1 << 4),
-     CPU_3DNOW= (1 << 5),
-     CPU_SSE  = (1 << 6),
-     CPU_SSE2 = (1 << 7),
-     CPU_SSE3 = (1 << 8),
-     CPU_SSSE3= (1 << 9),
-     CPU_SSE4A= (1 <<10),
-     CPU_SSE4_1 = (1 << 11),
-     CPU_SSE4_2 = (1 << 12)
-   } cpuFeatureFlags;
-
-  // cpuid information block.  All info derived from executing cpuid with
-  // various function numbers is stored here.  Intel and AMD info is
-  // merged in this block: accessor methods disentangle it.
-  //
-  // The info block is laid out in subblocks of 4 dwords corresponding to
-  // eax, ebx, ecx and edx, whether or not they contain anything useful.
-  struct CpuidInfo {
-    // cpuid function 0
-    uint32_t std_max_function;
-    uint32_t std_vendor_name_0;
-    uint32_t std_vendor_name_1;
-    uint32_t std_vendor_name_2;
-
-    // cpuid function 1
-    StdCpuid1Eax std_cpuid1_eax;
-    StdCpuid1Ebx std_cpuid1_ebx;
-    StdCpuid1Ecx std_cpuid1_ecx;
-    StdCpuid1Edx std_cpuid1_edx;
-
-    // cpuid function 4 (deterministic cache parameters)
-    DcpCpuid4Eax dcp_cpuid4_eax;
-    DcpCpuid4Ebx dcp_cpuid4_ebx;
-    uint32_t     dcp_cpuid4_ecx; // unused currently
-    uint32_t     dcp_cpuid4_edx; // unused currently
-
-    // cpuid function 0x80000000 // example, unused
-    uint32_t ext_max_function;
-    uint32_t ext_vendor_name_0;
-    uint32_t ext_vendor_name_1;
-    uint32_t ext_vendor_name_2;
-
-    // cpuid function 0x80000001
-    uint32_t     ext_cpuid1_eax; // reserved
-    uint32_t     ext_cpuid1_ebx; // reserved
-    ExtCpuid1Ecx ext_cpuid1_ecx;
-    ExtCpuid1Edx ext_cpuid1_edx;
-
-    // cpuid functions 0x80000002 thru 0x80000004: example, unused
-    uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
-    uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
-    uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
-
-    // cpuid function 0x80000005 //AMD L1, Intel reserved
-    uint32_t     ext_cpuid5_eax; // unused currently
-    uint32_t     ext_cpuid5_ebx; // reserved
-    ExtCpuid5Ex  ext_cpuid5_ecx; // L1 data cache info (AMD)
-    ExtCpuid5Ex  ext_cpuid5_edx; // L1 instruction cache info (AMD)
-
-    // cpuid function 0x80000008
-    uint32_t     ext_cpuid8_eax; // unused currently
-    uint32_t     ext_cpuid8_ebx; // reserved
-    ExtCpuid8Ecx ext_cpuid8_ecx;
-    uint32_t     ext_cpuid8_edx; // reserved
-  };
-
-  // The actual cpuid info block
-  static CpuidInfo _cpuid_info;
-
-  // Extractors and predicates
-  static uint32_t extended_cpu_family() {
-    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.family;
-    result += _cpuid_info.std_cpuid1_eax.bits.ext_family;
-    return result;
-  }
-  static uint32_t extended_cpu_model() {
-    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.model;
-    result |= _cpuid_info.std_cpuid1_eax.bits.ext_model << 4;
-    return result;
-  }
-  static uint32_t cpu_stepping() {
-    uint32_t result = _cpuid_info.std_cpuid1_eax.bits.stepping;
-    return result;
-  }
-  static uint logical_processor_count() {
-    uint result = threads_per_core();
-    return result;
-  }
-  static uint32_t feature_flags() {
-    uint32_t result = 0;
-    if (_cpuid_info.std_cpuid1_edx.bits.cmpxchg8 != 0)
-      result |= CPU_CX8;
-    if (_cpuid_info.std_cpuid1_edx.bits.cmov != 0)
-      result |= CPU_CMOV;
-    if (_cpuid_info.std_cpuid1_edx.bits.fxsr != 0 || is_amd() &&
-        _cpuid_info.ext_cpuid1_edx.bits.fxsr != 0)
-      result |= CPU_FXSR;
-    // HT flag is set for multi-core processors also.
-    if (threads_per_core() > 1)
-      result |= CPU_HT;
-    if (_cpuid_info.std_cpuid1_edx.bits.mmx != 0 || is_amd() &&
-        _cpuid_info.ext_cpuid1_edx.bits.mmx != 0)
-      result |= CPU_MMX;
-    if (is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow != 0)
-      result |= CPU_3DNOW;
-    if (_cpuid_info.std_cpuid1_edx.bits.sse != 0)
-      result |= CPU_SSE;
-    if (_cpuid_info.std_cpuid1_edx.bits.sse2 != 0)
-      result |= CPU_SSE2;
-    if (_cpuid_info.std_cpuid1_ecx.bits.sse3 != 0)
-      result |= CPU_SSE3;
-    if (_cpuid_info.std_cpuid1_ecx.bits.ssse3 != 0)
-      result |= CPU_SSSE3;
-    if (is_amd() && _cpuid_info.ext_cpuid1_ecx.bits.sse4a != 0)
-      result |= CPU_SSE4A;
-    if (_cpuid_info.std_cpuid1_ecx.bits.sse4_1 != 0)
-      result |= CPU_SSE4_1;
-    if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0)
-      result |= CPU_SSE4_2;
-    return result;
-  }
-
-  static void get_processor_features();
-
-public:
-  // Offsets for cpuid asm stub
-  static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
-  static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_eax); }
-  static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_eax); }
-  static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_eax); }
-  static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_eax); }
-  static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_eax); }
-
-  // Initialization
-  static void initialize();
-
-  // Asserts
-  static void assert_is_initialized() {
-    assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
-  }
-
-  //
-  // Processor family:
-  //       3   -  386
-  //       4   -  486
-  //       5   -  Pentium
-  //       6   -  PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
-  //              Pentium M, Core Solo, Core Duo, Core2 Duo
-  //    family 6 model:   9,        13,       14,        15
-  //    0x0f   -  Pentium 4, Opteron
-  //
-  // Note: The cpu family should be used to select between
-  //       instruction sequences which are valid on all Intel
-  //       processors.  Use the feature test functions below to
-  //       determine whether a particular instruction is supported.
-  //
-  static int  cpu_family()        { return _cpu;}
-  static bool is_P6()             { return cpu_family() >= 6; }
-
-  static bool is_amd()            { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
-  static bool is_intel()          { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
-
-  static uint cores_per_cpu()  {
-    uint result = 1;
-    if (is_intel()) {
-      result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
-    } else if (is_amd()) {
-      result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
-    }
-    return result;
-  }
-
-  static uint threads_per_core()  {
-    uint result = 1;
-    if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
-      result = _cpuid_info.std_cpuid1_ebx.bits.threads_per_cpu /
-               cores_per_cpu();
-    }
-    return result;
-  }
-
-  static intx L1_data_cache_line_size()  {
-    intx result = 0;
-    if (is_intel()) {
-      result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
-    } else if (is_amd()) {
-      result = _cpuid_info.ext_cpuid5_ecx.bits.L1_line_size;
-    }
-    if (result < 32) // not defined ?
-      result = 32;   // 32 bytes by default for other x64
-    return result;
-  }
-
-  //
-  // Feature identification
-  //
-  static bool supports_cpuid()    { return _cpuFeatures  != 0; }
-  static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
-  static bool supports_cmov()     { return (_cpuFeatures & CPU_CMOV) != 0; }
-  static bool supports_fxsr()     { return (_cpuFeatures & CPU_FXSR) != 0; }
-  static bool supports_ht()       { return (_cpuFeatures & CPU_HT) != 0; }
-  static bool supports_mmx()      { return (_cpuFeatures & CPU_MMX) != 0; }
-  static bool supports_sse()      { return (_cpuFeatures & CPU_SSE) != 0; }
-  static bool supports_sse2()     { return (_cpuFeatures & CPU_SSE2) != 0; }
-  static bool supports_sse3()     { return (_cpuFeatures & CPU_SSE3) != 0; }
-  static bool supports_ssse3()    { return (_cpuFeatures & CPU_SSSE3)!= 0; }
-  static bool supports_sse4_1()   { return (_cpuFeatures & CPU_SSE4_1) != 0; }
-  static bool supports_sse4_2()   { return (_cpuFeatures & CPU_SSE4_2) != 0; }
-  //
-  // AMD features
-  //
-  static bool supports_3dnow()    { return (_cpuFeatures & CPU_3DNOW) != 0; }
-  static bool supports_mmx_ext()  { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
-  static bool supports_3dnow2()   { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow2 != 0; }
-  static bool supports_sse4a()    { return (_cpuFeatures & CPU_SSE4A) != 0; }
-
-  static bool supports_compare_and_exchange() { return true; }
-
-  static const char* cpu_features()           { return _features_str; }
-
-  static intx allocate_prefetch_distance() {
-    // This method should be called before allocate_prefetch_style().
-    //
-    // Hardware prefetching (distance/size in bytes):
-    // Pentium 4 - 256 / 128
-    // Opteron   - 128 /  64 only when 2 sequential cache lines accessed
-    // Core      - 128 /  64
-    //
-    // Software prefetching (distance in bytes / instruction with best score):
-    // Pentium 4 - 512 / prefetchnta
-    // Opteron   - 256 / prefetchnta
-    // Core      - 256 / prefetchnta
-    // It will be used only when AllocatePrefetchStyle > 0
-
-    intx count = AllocatePrefetchDistance;
-    if (count < 0) {  // default ?
-      if (is_amd()) { // AMD
-        count = 256;  // Opteron
-      } else {        // Intel
-        if (cpu_family() == 6) {
-          count = 256;// Pentium M, Core, Core2
-        } else {
-          count = 512;// Pentium 4
-        }
-      }
-    }
-    return count;
-  }
-  static intx allocate_prefetch_style() {
-    assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
-    // Return 0 if AllocatePrefetchDistance was not defined.
-    return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
-  }
-
-  // Prefetch interval for gc copy/scan == 9 dcache lines.  Derived from
-  // 50-warehouse specjbb runs on a 2-way 1.8ghz opteron using a 4gb heap.
-  // Tested intervals from 128 to 2048 in increments of 64 == one cache line.
-  // 256 bytes (4 dcache lines) was the nearest runner-up to 576.
-
-  // gc copy/scan is disabled if prefetchw isn't supported, because
-  // Prefetch::write emits an inlined prefetchw on Linux.
-  // Do not use the 3dnow prefetchw instruction.  It isn't supported on em64t.
-  // The used prefetcht0 instruction works for both amd64 and em64t.
-  static intx prefetch_copy_interval_in_bytes() {
-    intx interval = PrefetchCopyIntervalInBytes;
-    return interval >= 0 ? interval : 576;
-  }
-  static intx prefetch_scan_interval_in_bytes() {
-    intx interval = PrefetchScanIntervalInBytes;
-    return interval >= 0 ? interval : 576;
-  }
-  static intx prefetch_fields_ahead() {
-    intx count = PrefetchFieldsAhead;
-    return count >= 0 ? count : 1;
-  }
-};
--- a/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -34,10 +34,16 @@
 extern "C" void bad_compiled_vtable_index(JavaThread* thread, oop receiver, int index);
 #endif
 
-// used by compiler only; may use only caller saved registers rax, rbx, rcx.
-// rdx holds first int arg, rsi, rdi, rbp are callee-save & must be preserved.
-// Leave receiver in rcx; required behavior when +OptoArgsInRegisters
-// is modifed to put first oop in rcx.
+// These stubs are used by the compiler only.
+// Argument registers, which must be preserved:
+//   rcx - receiver (always first argument)
+//   rdx - second argument (if any)
+// Other registers that might be usable:
+//   rax - inline cache register (is interface for itable stub)
+//   rbx - method (used when calling out to interpreter)
+// Available now, but may become callee-save at some point:
+//   rsi, rdi
+// Note that rax and rdx are also used for return values.
 //
 VtableStub* VtableStubs::create_vtable_stub(int vtable_index) {
   const int i486_code_length = VtableStub::pd_code_size_limit(true);
@@ -94,16 +100,28 @@
   __ jmp( Address(method, methodOopDesc::from_compiled_offset()));
 
   masm->flush();
+
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("vtable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  vtable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
+  guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 3;  // 32-bit offset is this much larger than an 8-bit one
+  assert(vtable_index > 10 || __ pc() + slop <= s->code_end(), "room for 32-bit offset");
+
   s->set_exception_points(npe_addr, ame_addr);
   return s;
 }
 
 
-VtableStub* VtableStubs::create_itable_stub(int vtable_index) {
+VtableStub* VtableStubs::create_itable_stub(int itable_index) {
   // Note well: pd_code_size_limit is the absolute minimum we can get away with.  If you
   //            add code here, bump the code stub size returned by pd_code_size_limit!
   const int i486_code_length = VtableStub::pd_code_size_limit(false);
-  VtableStub* s = new(i486_code_length) VtableStub(false, vtable_index);
+  VtableStub* s = new(i486_code_length) VtableStub(false, itable_index);
   ResourceMark rm;
   CodeBuffer cb(s->entry_point(), i486_code_length);
   MacroAssembler* masm = new MacroAssembler(&cb);
@@ -123,50 +141,19 @@
 
   // get receiver klass (also an implicit null-check)
   address npe_addr = __ pc();
-  __ movptr(rbx, Address(rcx, oopDesc::klass_offset_in_bytes()));
-
-  __ mov(rsi, rbx);   // Save klass in free register
-  // Most registers are in use, so save a few
-  __ push(rdx);
-  // compute itable entry offset (in words)
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
-  assert(vtableEntry::size() * wordSize == 4, "adjust the scaling in the code below");
-  __ movl(rdx, Address(rbx, instanceKlass::vtable_length_offset() * wordSize)); // Get length of vtable
-  __ lea(rbx, Address(rbx, rdx, Address::times_ptr, base));
-  if (HeapWordsPerLong > 1) {
-    // Round up to align_object_offset boundary
-    __ round_to(rbx, BytesPerLong);
-  }
-
-  Label hit, next, entry, throw_icce;
-
-  __ jmpb(entry);
+  __ movptr(rsi, Address(rcx, oopDesc::klass_offset_in_bytes()));
 
-  __ bind(next);
-  __ addptr(rbx, itableOffsetEntry::size() * wordSize);
-
-  __ bind(entry);
-
-  // If the entry is NULL then we've reached the end of the table
-  // without finding the expected interface, so throw an exception
-  __ movptr(rdx, Address(rbx, itableOffsetEntry::interface_offset_in_bytes()));
-  __ testptr(rdx, rdx);
-  __ jcc(Assembler::zero, throw_icce);
-  __ cmpptr(rax, rdx);
-  __ jcc(Assembler::notEqual, next);
-
-  // We found a hit, move offset into rbx,
-  __ movl(rdx, Address(rbx, itableOffsetEntry::offset_offset_in_bytes()));
-
-  // Compute itableMethodEntry.
-  const int method_offset = (itableMethodEntry::size() * wordSize * vtable_index) + itableMethodEntry::method_offset_in_bytes();
+  // Most registers are in use; we'll use rax, rbx, rsi, rdi
+  // (If we need to make rsi, rdi callee-save, do a push/pop here.)
+  const Register method = rbx;
+  Label throw_icce;
 
   // Get methodOop and entrypoint for compiler
-  const Register method = rbx;
-  __ movptr(method, Address(rsi, rdx, Address::times_1, method_offset));
-
-  // Restore saved register, before possible trap.
-  __ pop(rdx);
+  __ 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
   // rcx: receiver
@@ -187,13 +174,19 @@
   __ jmp(Address(method, methodOopDesc::from_compiled_offset()));
 
   __ bind(throw_icce);
-  // Restore saved register
-  __ pop(rdx);
   __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
-
   masm->flush();
 
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("itable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  itable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
   guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 3;  // 32-bit offset is this much larger than an 8-bit one
+  assert(itable_index > 10 || __ pc() + slop <= s->code_end(), "room for 32-bit offset");
 
   s->set_exception_points(npe_addr, ame_addr);
   return s;
@@ -207,8 +200,43 @@
     return (DebugVtables ? 210 : 16) + (CountCompiledCalls ? 6 : 0);
   } else {
     // Itable stub size
-    return (DebugVtables ? 144 : 64) + (CountCompiledCalls ? 6 : 0);
+    return (DebugVtables ? 256 : 66) + (CountCompiledCalls ? 6 : 0);
   }
+  // In order to tune these parameters, run the JVM with VM options
+  // +PrintMiscellaneous and +WizardMode to see information about
+  // actual itable stubs.  Look for lines like this:
+  //   itable #1 at 0x5551212[65] left over: 3
+  // Reduce the constants so that the "left over" number is >=3
+  // for the common cases.
+  // Do not aim at a left-over number of zero, because a
+  // large vtable or itable index (> 16) will require a 32-bit
+  // immediate displacement instead of an 8-bit one.
+  //
+  // The JVM98 app. _202_jess has a megamorphic interface call.
+  // The itable code looks like this:
+  // Decoding VtableStub itbl[1]@1
+  //   mov    0x4(%ecx),%esi
+  //   mov    0xe8(%esi),%edi
+  //   lea    0x130(%esi,%edi,4),%edi
+  //   add    $0x7,%edi
+  //   and    $0xfffffff8,%edi
+  //   lea    0x4(%esi),%esi
+  //   mov    (%edi),%ebx
+  //   cmp    %ebx,%eax
+  //   je     success
+  // loop:
+  //   test   %ebx,%ebx
+  //   je     throw_icce
+  //   add    $0x8,%edi
+  //   mov    (%edi),%ebx
+  //   cmp    %ebx,%eax
+  //   jne    loop
+  // success:
+  //   mov    0x4(%edi),%edi
+  //   mov    (%esi,%edi,1),%ebx
+  //   jmp    *0x44(%ebx)
+  // throw_icce:
+  //   jmp    throw_ICCE_entry
 }
 
 int VtableStub::pd_code_alignment() {
--- a/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -98,17 +98,29 @@
   __ jmp( Address(rbx, methodOopDesc::from_compiled_offset()));
 
   __ flush();
+
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("vtable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  vtable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
+  guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 3;  // 32-bit offset is this much larger than an 8-bit one
+  assert(vtable_index > 10 || __ pc() + slop <= s->code_end(), "room for 32-bit offset");
+
   s->set_exception_points(npe_addr, ame_addr);
   return s;
 }
 
 
-VtableStub* VtableStubs::create_itable_stub(int vtable_index) {
+VtableStub* VtableStubs::create_itable_stub(int itable_index) {
   // Note well: pd_code_size_limit is the absolute minimum we can get
   // away with.  If you add code here, bump the code stub size
   // returned by pd_code_size_limit!
   const int amd64_code_length = VtableStub::pd_code_size_limit(false);
-  VtableStub* s = new(amd64_code_length) VtableStub(false, vtable_index);
+  VtableStub* s = new(amd64_code_length) VtableStub(false, itable_index);
   ResourceMark rm;
   CodeBuffer cb(s->entry_point(), amd64_code_length);
   MacroAssembler* masm = new MacroAssembler(&cb);
@@ -131,68 +143,28 @@
   // get receiver klass (also an implicit null-check)
   address npe_addr = __ pc();
 
-  __ load_klass(rbx, j_rarg0);
+  // Most registers are in use; we'll use rax, rbx, r10, r11
+  // (various calling sequences use r[cd]x, r[sd]i, r[89]; stay away from them)
+  __ load_klass(r10, j_rarg0);
 
   // If we take a trap while this arg is on the stack we will not
   // be able to walk the stack properly. This is not an issue except
   // when there are mistakes in this assembly code that could generate
   // a spurious fault. Ask me how I know...
 
-  __ push(j_rarg1);     // Most registers are in use, so save one
-
-  // compute itable entry offset (in words)
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
-  assert(vtableEntry::size() * wordSize == 8,
-         "adjust the scaling in the code below");
-  // Get length of vtable
-  __ movl(j_rarg1,
-          Address(rbx, instanceKlass::vtable_length_offset() * wordSize));
-  __ lea(rbx, Address(rbx, j_rarg1, Address::times_8, base));
-
-  if (HeapWordsPerLong > 1) {
-    // Round up to align_object_offset boundary
-    __ round_to(rbx, BytesPerLong);
-  }
-  Label hit, next, entry, throw_icce;
-
-  __ jmpb(entry);
-
-  __ bind(next);
-  __ addptr(rbx, itableOffsetEntry::size() * wordSize);
-
-  __ bind(entry);
-
-  // If the entry is NULL then we've reached the end of the table
-  // without finding the expected interface, so throw an exception
-  __ movptr(j_rarg1, Address(rbx, itableOffsetEntry::interface_offset_in_bytes()));
-  __ testptr(j_rarg1, j_rarg1);
-  __ jcc(Assembler::zero, throw_icce);
-  __ cmpptr(rax, j_rarg1);
-  __ jccb(Assembler::notEqual, next);
-
-  // We found a hit, move offset into j_rarg1
-  __ movl(j_rarg1, Address(rbx, itableOffsetEntry::offset_offset_in_bytes()));
-
-  // Compute itableMethodEntry
-  const int method_offset =
-    (itableMethodEntry::size() * wordSize * vtable_index) +
-    itableMethodEntry::method_offset_in_bytes();
+  const Register method = rbx;
+  Label throw_icce;
 
   // Get methodOop and entrypoint for compiler
-
-  // Get klass pointer again
-  __ load_klass(rax, j_rarg0);
-
-  const Register method = rbx;
-  __ movptr(method, Address(rax, j_rarg1, Address::times_1, method_offset));
-
-  // Restore saved register, before possible trap.
-  __ pop(j_rarg1);
+  __ 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
   // j_rarg0: receiver
 
-
 #ifdef ASSERT
   if (DebugVtables) {
     Label L2;
@@ -211,13 +183,20 @@
   __ jmp(Address(method, methodOopDesc::from_compiled_offset()));
 
   __ bind(throw_icce);
-  // Restore saved register
-  __ pop(j_rarg1);
   __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
 
   __ flush();
 
+  if (PrintMiscellaneous && (WizardMode || Verbose)) {
+    tty->print_cr("itable #%d at "PTR_FORMAT"[%d] left over: %d",
+                  itable_index, s->entry_point(),
+                  (int)(s->code_end() - s->entry_point()),
+                  (int)(s->code_end() - __ pc()));
+  }
   guarantee(__ pc() <= s->code_end(), "overflowed buffer");
+  // shut the door on sizing bugs
+  int slop = 3;  // 32-bit offset is this much larger than an 8-bit one
+  assert(itable_index > 10 || __ pc() + slop <= s->code_end(), "room for 32-bit offset");
 
   s->set_exception_points(npe_addr, ame_addr);
   return s;
@@ -230,9 +209,42 @@
            (UseCompressedOops ? 16 : 0);  // 1 leaq can be 3 bytes + 1 long
   } else {
     // Itable stub size
-    return (DebugVtables ? 636 : 72) + (CountCompiledCalls ? 13 : 0) +
+    return (DebugVtables ? 512 : 72) + (CountCompiledCalls ? 13 : 0) +
            (UseCompressedOops ? 32 : 0);  // 2 leaqs
   }
+  // In order to tune these parameters, run the JVM with VM options
+  // +PrintMiscellaneous and +WizardMode to see information about
+  // actual itable stubs.  Look for lines like this:
+  //   itable #1 at 0x5551212[71] left over: 3
+  // Reduce the constants so that the "left over" number is >=3
+  // for the common cases.
+  // Do not aim at a left-over number of zero, because a
+  // large vtable or itable index (>= 32) will require a 32-bit
+  // immediate displacement instead of an 8-bit one.
+  //
+  // The JVM98 app. _202_jess has a megamorphic interface call.
+  // The itable code looks like this:
+  // Decoding VtableStub itbl[1]@12
+  //   mov    0x8(%rsi),%r10
+  //   mov    0x198(%r10),%r11d
+  //   lea    0x218(%r10,%r11,8),%r11
+  //   lea    0x8(%r10),%r10
+  //   mov    (%r11),%rbx
+  //   cmp    %rbx,%rax
+  //   je     success
+  // loop:
+  //   test   %rbx,%rbx
+  //   je     throw_icce
+  //   add    $0x10,%r11
+  //   mov    (%r11),%rbx
+  //   cmp    %rbx,%rax
+  //   jne    loop
+  // success:
+  //   mov    0x8(%r11),%r11d
+  //   mov    (%r10,%r11,1),%rbx
+  //   jmpq   *0x60(%rbx)
+  // throw_icce:
+  //   jmpq   throw_ICCE_entry
 }
 
 int VtableStub::pd_code_alignment() {
--- a/src/cpu/x86/vm/x86_32.ad	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/x86_32.ad	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,7 +130,7 @@
 // allocation.  Highest priority is first.  A useful heuristic is to
 // give registers a low priority when they are required by machine
 // instructions, like EAX and EDX.  Registers which are used as
-// pairs must fall on an even boundry (witness the FPR#L's in this list).
+// pairs must fall on an even boundary (witness the FPR#L's in this list).
 // For the Intel integer registers, the equivalent Long pairs are
 // EDX:EAX, EBX:ECX, and EDI:EBP.
 alloc_class chunk0( ECX,   EBX,   EBP,   EDI,   EAX,   EDX,   ESI, ESP,
@@ -1281,6 +1281,13 @@
 }
 
 
+const bool Matcher::match_rule_supported(int opcode) {
+  if (!has_match_rule(opcode))
+    return false;
+
+  return true;  // Per default match rules are supported.
+}
+
 int Matcher::regnum_to_fpu_offset(int regnum) {
   return regnum - 32; // The FP registers are in the second chunk
 }
@@ -1483,16 +1490,20 @@
   // main source block for now.  In future, we can generalize this by
   // adding a syntax that specifies the sizes of fields in an order,
   // so that the adlc can build the emit functions automagically
-  enc_class OpcP %{             // Emit opcode
-    emit_opcode(cbuf,$primary);
-  %}
-
-  enc_class OpcS %{             // Emit opcode
-    emit_opcode(cbuf,$secondary);
-  %}
-
-  enc_class Opcode(immI d8 ) %{ // Emit opcode
-    emit_opcode(cbuf,$d8$$constant);
+
+  // Emit primary opcode
+  enc_class OpcP %{
+    emit_opcode(cbuf, $primary);
+  %}
+
+  // Emit secondary opcode
+  enc_class OpcS %{
+    emit_opcode(cbuf, $secondary);
+  %}
+
+  // Emit opcode directly
+  enc_class Opcode(immI d8) %{
+    emit_opcode(cbuf, $d8$$constant);
   %}
 
   enc_class SizePrefix %{
@@ -1688,26 +1699,15 @@
     Register Reax = as_Register(EAX_enc); // super class
     Register Recx = as_Register(ECX_enc); // killed
     Register Resi = as_Register(ESI_enc); // sub class
-    Label hit, miss;
+    Label miss;
 
     MacroAssembler _masm(&cbuf);
-    // Compare super with sub directly, since super is not in its own SSA.
-    // The compiler used to emit this test, but we fold it in here,
-    // to allow platform-specific tweaking on sparc.
-    __ cmpptr(Reax, Resi);
-    __ jcc(Assembler::equal, hit);
-#ifndef PRODUCT
-    __ incrementl(ExternalAddress((address)&SharedRuntime::_partial_subtype_ctr));
-#endif //PRODUCT
-    __ movptr(Redi,Address(Resi,sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()));
-    __ movl(Recx,Address(Redi,arrayOopDesc::length_offset_in_bytes()));
-    __ addptr(Redi,arrayOopDesc::base_offset_in_bytes(T_OBJECT));
-    __ repne_scan();
-    __ jcc(Assembler::notEqual, miss);
-    __ movptr(Address(Resi,sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()),Reax);
-    __ bind(hit);
-    if( $primary )
-      __ xorptr(Redi,Redi);
+    __ check_klass_subtype_slow_path(Resi, Reax, Recx, Redi,
+                                     NULL, &miss,
+                                     /*set_cond_codes:*/ true);
+    if ($primary) {
+      __ xorptr(Redi, Redi);
+    }
     __ bind(miss);
   %}
 
@@ -3126,14 +3126,12 @@
 
   enc_class movq_ld(regXD dst, memory mem) %{
     MacroAssembler _masm(&cbuf);
-    Address madr = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ movq(as_XMMRegister($dst$$reg), madr);
+    __ movq($dst$$XMMRegister, $mem$$Address);
   %}
 
   enc_class movq_st(memory mem, regXD src) %{
     MacroAssembler _masm(&cbuf);
-    Address madr = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ movq(madr, as_XMMRegister($src$$reg));
+    __ movq($mem$$Address, $src$$XMMRegister);
   %}
 
   enc_class pshufd_8x8(regX dst, regX src) %{
@@ -3371,7 +3369,7 @@
          masm.movptr(Address(boxReg, 0), 3) ;            // results in ST-before-CAS penalty
          masm.get_thread (scrReg) ; 
          masm.movptr(boxReg, tmpReg);                    // consider: LEA box, [tmp-2] 
-         masm.movptr(tmpReg, 0);                         // consider: xor vs mov
+         masm.movptr(tmpReg, NULL_WORD);                 // consider: xor vs mov
          if (os::is_MP()) { masm.lock(); } 
          masm.cmpxchgptr(scrReg, Address(boxReg, ObjectMonitor::owner_offset_in_bytes()-2)) ; 
       } else 
@@ -3387,7 +3385,7 @@
 
          if ((EmitSync & 64) == 0) {
            // Optimistic form: consider XORL tmpReg,tmpReg
-           masm.movptr(tmpReg, 0 ) ; 
+           masm.movptr(tmpReg, NULL_WORD) ; 
          } else { 
            // Can suffer RTS->RTO upgrades on shared or cold $ lines
            // Test-And-CAS instead of CAS
@@ -3587,7 +3585,7 @@
          masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ; 
          masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ; 
          masm.jccb  (Assembler::notZero, DONE_LABEL) ; 
-         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ; 
+         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ; 
          masm.jmpb  (DONE_LABEL) ; 
       } else { 
          masm.xorptr(boxReg, Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;  
@@ -3596,7 +3594,7 @@
          masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ; 
          masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ; 
          masm.jccb  (Assembler::notZero, CheckSucc) ; 
-         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ; 
+         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ; 
          masm.jmpb  (DONE_LABEL) ; 
       }
 
@@ -3644,7 +3642,7 @@
          // We currently use (3), although it's likely that switching to (2)
          // is correct for the future.
             
-         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ; 
+         masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ; 
          if (os::is_MP()) { 
             if (VM_Version::supports_sse2() && 1 == FenceInstruction) { 
               masm.mfence();
@@ -3703,12 +3701,16 @@
     }
   %}
 
-  enc_class enc_String_Compare() %{
+  enc_class enc_String_Compare(eDIRegP str1, eSIRegP str2, regXD tmp1, regXD tmp2,
+                        eAXRegI tmp3, eBXRegI tmp4, eCXRegI result) %{
     Label ECX_GOOD_LABEL, LENGTH_DIFF_LABEL,
           POP_LABEL, DONE_LABEL, CONT_LABEL,
           WHILE_HEAD_LABEL;
     MacroAssembler masm(&cbuf);
 
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+
     // Get the first character position in both strings
     //         [8] char array, [12] offset, [16] count
     int value_offset  = java_lang_String::value_offset_in_bytes();
@@ -3726,7 +3728,6 @@
     // Compute the minimum of the string lengths(rsi) and the
     // difference of the string lengths (stack)
 
-
     if (VM_Version::supports_cmov()) {
       masm.movl(rdi, Address(rdi, count_offset));
       masm.movl(rsi, Address(rsi, count_offset));
@@ -3740,7 +3741,7 @@
       masm.movl(rsi, rdi);
       masm.subl(rdi, rcx);
       masm.push(rdi);
-      masm.jcc(Assembler::lessEqual, ECX_GOOD_LABEL);
+      masm.jccb(Assembler::lessEqual, ECX_GOOD_LABEL);
       masm.movl(rsi, rcx);
       // rsi holds min, rcx is unused
     }
@@ -3751,8 +3752,8 @@
     masm.jcc(Assembler::zero, LENGTH_DIFF_LABEL);
 
     // Load first characters
-    masm.load_unsigned_word(rcx, Address(rbx, 0));
-    masm.load_unsigned_word(rdi, Address(rax, 0));
+    masm.load_unsigned_short(rcx, Address(rbx, 0));
+    masm.load_unsigned_short(rdi, Address(rax, 0));
 
     // Compare first characters
     masm.subl(rcx, rdi);
@@ -3765,7 +3766,7 @@
       Label LSkip2;
       // Check if the strings start at same location
       masm.cmpptr(rbx,rax);
-      masm.jcc(Assembler::notEqual, LSkip2);
+      masm.jccb(Assembler::notEqual, LSkip2);
 
       // Check if the length difference is zero (from stack)
       masm.cmpl(Address(rsp, 0), 0x0);
@@ -3775,103 +3776,382 @@
       masm.bind(LSkip2);
     }
 
-    // Shift rax, and rbx, to the end of the arrays, negate min
-    masm.lea(rax, Address(rax, rsi, Address::times_2, 2));
-    masm.lea(rbx, Address(rbx, rsi, Address::times_2, 2));
+   // Advance to next character
+    masm.addptr(rax, 2);
+    masm.addptr(rbx, 2);
+
+    if (UseSSE42Intrinsics) {
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_VECTORS, VECTOR_NOT_EQUAL, COMPARE_TAIL;
+      // Setup to compare 16-byte vectors
+      masm.movl(rdi, rsi);
+      masm.andl(rsi, 0xfffffff8); // rsi holds the vector count
+      masm.andl(rdi, 0x00000007); // rdi holds the tail count
+      masm.testl(rsi, rsi);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+
+      masm.lea(rax, Address(rax, rsi, Address::times_2));
+      masm.lea(rbx, Address(rbx, rsi, Address::times_2));
+      masm.negl(rsi);
+
+      masm.bind(COMPARE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(rax, rsi, Address::times_2));
+      masm.movdqu(tmp2Reg, Address(rbx, rsi, Address::times_2));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+      masm.jccb(Assembler::notZero, VECTOR_NOT_EQUAL);
+      masm.addl(rsi, 8);
+      masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+      masm.jmpb(COMPARE_TAIL);
+
+      // Mismatched characters in the vectors
+      masm.bind(VECTOR_NOT_EQUAL);
+      masm.lea(rax, Address(rax, rsi, Address::times_2));
+      masm.lea(rbx, Address(rbx, rsi, Address::times_2));
+      masm.movl(rdi, 8);
+
+      // Compare tail (< 8 chars), or rescan last vectors to
+      // find 1st mismatched characters
+      masm.bind(COMPARE_TAIL);
+      masm.testl(rdi, rdi);
+      masm.jccb(Assembler::zero, LENGTH_DIFF_LABEL);
+      masm.movl(rsi, rdi);
+      // Fallthru to tail compare
+    }
+
+    //Shift rax, and rbx, to the end of the arrays, negate min
+    masm.lea(rax, Address(rax, rsi, Address::times_2, 0));
+    masm.lea(rbx, Address(rbx, rsi, Address::times_2, 0));
     masm.negl(rsi);
 
     // Compare the rest of the characters
     masm.bind(WHILE_HEAD_LABEL);
-    masm.load_unsigned_word(rcx, Address(rbx, rsi, Address::times_2, 0));
-    masm.load_unsigned_word(rdi, Address(rax, rsi, Address::times_2, 0));
+    masm.load_unsigned_short(rcx, Address(rbx, rsi, Address::times_2, 0));
+    masm.load_unsigned_short(rdi, Address(rax, rsi, Address::times_2, 0));
     masm.subl(rcx, rdi);
-    masm.jcc(Assembler::notZero, POP_LABEL);
+    masm.jccb(Assembler::notZero, POP_LABEL);
     masm.incrementl(rsi);
     masm.jcc(Assembler::notZero, WHILE_HEAD_LABEL);
 
     // Strings are equal up to min length.  Return the length difference.
     masm.bind(LENGTH_DIFF_LABEL);
     masm.pop(rcx);
-    masm.jmp(DONE_LABEL);
+    masm.jmpb(DONE_LABEL);
 
     // Discard the stored length difference
     masm.bind(POP_LABEL);
     masm.addptr(rsp, 4);
-       
+
     // That's it
     masm.bind(DONE_LABEL);
   %}
 
-  enc_class enc_Array_Equals(eDIRegP ary1, eSIRegP ary2, eAXRegI tmp1, eBXRegI tmp2, eCXRegI result) %{
-    Label TRUE_LABEL, FALSE_LABEL, DONE_LABEL, COMPARE_LOOP_HDR, COMPARE_LOOP;
+ enc_class enc_String_Equals(eDIRegP str1, eSIRegP str2, regXD tmp1, regXD tmp2,
+                       eBXRegI tmp3, eCXRegI tmp4, eAXRegI result) %{
+    Label RET_TRUE, RET_FALSE, DONE, COMPARE_VECTORS, COMPARE_CHAR;
+    MacroAssembler masm(&cbuf);
+
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+
+    int value_offset  = java_lang_String::value_offset_in_bytes();
+    int offset_offset = java_lang_String::offset_offset_in_bytes();
+    int count_offset  = java_lang_String::count_offset_in_bytes();
+    int base_offset   = arrayOopDesc::base_offset_in_bytes(T_CHAR);
+
+    // does source == target string?
+    masm.cmpptr(rdi, rsi);
+    masm.jcc(Assembler::equal, RET_TRUE);
+
+    // get and compare counts
+    masm.movl(rcx, Address(rdi, count_offset));
+    masm.movl(rax, Address(rsi, count_offset));
+    masm.cmpl(rcx, rax);
+    masm.jcc(Assembler::notEqual, RET_FALSE);
+    masm.testl(rax, rax);
+    masm.jcc(Assembler::zero, RET_TRUE);
+
+    // get source string offset and value
+    masm.movptr(rbx, Address(rsi, value_offset));
+    masm.movl(rax, Address(rsi, offset_offset));
+    masm.leal(rsi, Address(rbx, rax, Address::times_2, base_offset));
+
+    // get compare string offset and value
+    masm.movptr(rbx, Address(rdi, value_offset));
+    masm.movl(rax, Address(rdi, offset_offset));
+    masm.leal(rdi, Address(rbx, rax, Address::times_2, base_offset));
+
+    // Set byte count
+    masm.shll(rcx, 1);
+    masm.movl(rax, rcx);
+
+    if (UseSSE42Intrinsics) {
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+      // Compare 16-byte vectors
+      masm.andl(rcx, 0xfffffff0);  // vector count (in bytes)
+      masm.andl(rax, 0x0000000e);  // tail count (in bytes)
+      masm.testl(rcx, rcx);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+      masm.lea(rdi, Address(rdi, rcx, Address::times_1));
+      masm.lea(rsi, Address(rsi, rcx, Address::times_1));
+      masm.negl(rcx);
+
+      masm.bind(COMPARE_WIDE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(rdi, rcx, Address::times_1));
+      masm.movdqu(tmp2Reg, Address(rsi, rcx, Address::times_1));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+      masm.jccb(Assembler::notZero, RET_FALSE);
+      masm.addl(rcx, 16);
+      masm.jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+      masm.bind(COMPARE_TAIL);
+      masm.movl(rcx, rax);
+      // Fallthru to tail compare
+    }
+
+    // Compare 4-byte vectors
+    masm.andl(rcx, 0xfffffffc);  // vector count (in bytes)
+    masm.andl(rax, 0x00000002);  // tail char (in bytes)
+    masm.testl(rcx, rcx);
+    masm.jccb(Assembler::zero, COMPARE_CHAR);
+    masm.lea(rdi, Address(rdi, rcx, Address::times_1));
+    masm.lea(rsi, Address(rsi, rcx, Address::times_1));
+    masm.negl(rcx);
+
+    masm.bind(COMPARE_VECTORS);
+    masm.movl(rbx, Address(rdi, rcx, Address::times_1));
+    masm.cmpl(rbx, Address(rsi, rcx, Address::times_1));
+    masm.jccb(Assembler::notEqual, RET_FALSE);
+    masm.addl(rcx, 4);
+    masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+
+    // Compare trailing char (final 2 bytes), if any
+    masm.bind(COMPARE_CHAR);
+    masm.testl(rax, rax);
+    masm.jccb(Assembler::zero, RET_TRUE);
+    masm.load_unsigned_short(rbx, Address(rdi, 0));
+    masm.load_unsigned_short(rcx, Address(rsi, 0));
+    masm.cmpl(rbx, rcx);
+    masm.jccb(Assembler::notEqual, RET_FALSE);
+
+    masm.bind(RET_TRUE);
+    masm.movl(rax, 1);   // return true
+    masm.jmpb(DONE);
+
+    masm.bind(RET_FALSE);
+    masm.xorl(rax, rax); // return false
+
+    masm.bind(DONE);
+    %}
+
+ enc_class enc_String_IndexOf(eSIRegP str1, eDIRegP str2, regXD tmp1, eAXRegI tmp2,
+                        eCXRegI tmp3, eDXRegI tmp4, eBXRegI result) %{
+    // SSE4.2 version
+    Label LOAD_SUBSTR, PREP_FOR_SCAN, SCAN_TO_SUBSTR,
+          SCAN_SUBSTR, RET_NEG_ONE, RET_NOT_FOUND, CLEANUP, DONE;
     MacroAssembler masm(&cbuf);
 
-    Register ary1Reg   = as_Register($ary1$$reg);
-    Register ary2Reg   = as_Register($ary2$$reg);
-    Register tmp1Reg   = as_Register($tmp1$$reg);
-    Register tmp2Reg   = as_Register($tmp2$$reg);
-    Register resultReg = as_Register($result$$reg);
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+
+    // Get the first character position in both strings
+    //         [8] char array, [12] offset, [16] count
+    int value_offset  = java_lang_String::value_offset_in_bytes();
+    int offset_offset = java_lang_String::offset_offset_in_bytes();
+    int count_offset  = java_lang_String::count_offset_in_bytes();
+    int base_offset   = arrayOopDesc::base_offset_in_bytes(T_CHAR);
+
+    // Get counts for string and substr
+    masm.movl(rdx, Address(rsi, count_offset));
+    masm.movl(rax, Address(rdi, count_offset));
+    // Check for substr count > string count
+    masm.cmpl(rax, rdx);
+    masm.jcc(Assembler::greater, RET_NEG_ONE);
+
+    // Start the indexOf operation
+    // Get start addr of string
+    masm.movptr(rbx, Address(rsi, value_offset));
+    masm.movl(rcx, Address(rsi, offset_offset));
+    masm.lea(rsi, Address(rbx, rcx, Address::times_2, base_offset));
+    masm.push(rsi);
+
+    // Get start addr of substr
+    masm.movptr(rbx, Address(rdi, value_offset));
+    masm.movl(rcx, Address(rdi, offset_offset));
+    masm.lea(rdi, Address(rbx, rcx, Address::times_2, base_offset));
+    masm.push(rdi);
+    masm.push(rax);
+    masm.jmpb(PREP_FOR_SCAN);
+
+    // Substr count saved at sp
+    // Substr saved at sp+4
+    // String saved at sp+8
+
+    // Prep to load substr for scan
+    masm.bind(LOAD_SUBSTR);
+    masm.movptr(rdi, Address(rsp, 4));
+    masm.movl(rax, Address(rsp, 0));
+
+    // Load substr
+    masm.bind(PREP_FOR_SCAN);
+    masm.movdqu(tmp1Reg, Address(rdi, 0));
+    masm.addl(rdx, 8);        // prime the loop
+    masm.subptr(rsi, 16);
+
+    // Scan string for substr in 16-byte vectors
+    masm.bind(SCAN_TO_SUBSTR);
+    masm.subl(rdx, 8);
+    masm.addptr(rsi, 16);
+    masm.pcmpestri(tmp1Reg, Address(rsi, 0), 0x0d);
+    masm.jcc(Assembler::above, SCAN_TO_SUBSTR);     // CF == 0 && ZF == 0
+    masm.jccb(Assembler::aboveEqual, RET_NOT_FOUND); // CF == 0
+
+    // Fallthru: found a potential substr
+
+    // Make sure string is still long enough
+    masm.subl(rdx, rcx);
+    masm.cmpl(rdx, rax);
+    masm.jccb(Assembler::negative, RET_NOT_FOUND);
+    // Compute start addr of substr
+    masm.lea(rsi, Address(rsi, rcx, Address::times_2));
+    masm.movptr(rbx, rsi);
+
+    // Compare potential substr
+    masm.addl(rdx, 8);        // prime the loop
+    masm.addl(rax, 8);
+    masm.subptr(rsi, 16);
+    masm.subptr(rdi, 16);
+
+    // Scan 16-byte vectors of string and substr
+    masm.bind(SCAN_SUBSTR);
+    masm.subl(rax, 8);
+    masm.subl(rdx, 8);
+    masm.addptr(rsi, 16);
+    masm.addptr(rdi, 16);
+    masm.movdqu(tmp1Reg, Address(rdi, 0));
+    masm.pcmpestri(tmp1Reg, Address(rsi, 0), 0x0d);
+    masm.jcc(Assembler::noOverflow, LOAD_SUBSTR);   // OF == 0
+    masm.jcc(Assembler::positive, SCAN_SUBSTR);     // SF == 0
+
+    // Compute substr offset
+    masm.movptr(rsi, Address(rsp, 8));
+    masm.subptr(rbx, rsi);
+    masm.shrl(rbx, 1);
+    masm.jmpb(CLEANUP);
+
+    masm.bind(RET_NEG_ONE);
+    masm.movl(rbx, -1);
+    masm.jmpb(DONE);
+
+    masm.bind(RET_NOT_FOUND);
+    masm.movl(rbx, -1);
+
+    masm.bind(CLEANUP);
+    masm.addptr(rsp, 12);
+
+    masm.bind(DONE);
+  %}
+
+  enc_class enc_Array_Equals(eDIRegP ary1, eSIRegP ary2, regXD tmp1, regXD tmp2,
+                             eBXRegI tmp3, eDXRegI tmp4, eAXRegI result) %{
+    Label TRUE_LABEL, FALSE_LABEL, DONE, COMPARE_VECTORS, COMPARE_CHAR;
+    MacroAssembler masm(&cbuf);
+
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+    Register ary1Reg      = as_Register($ary1$$reg);
+    Register ary2Reg      = as_Register($ary2$$reg);
+    Register tmp3Reg      = as_Register($tmp3$$reg);
+    Register tmp4Reg      = as_Register($tmp4$$reg);
+    Register resultReg    = as_Register($result$$reg);
 
     int length_offset  = arrayOopDesc::length_offset_in_bytes();
     int base_offset    = arrayOopDesc::base_offset_in_bytes(T_CHAR);
 
     // Check the input args
-    masm.cmpl(ary1Reg, ary2Reg);
+    masm.cmpptr(ary1Reg, ary2Reg);
     masm.jcc(Assembler::equal, TRUE_LABEL);
-    masm.testl(ary1Reg, ary1Reg);
+    masm.testptr(ary1Reg, ary1Reg);
     masm.jcc(Assembler::zero, FALSE_LABEL);
-    masm.testl(ary2Reg, ary2Reg);
+    masm.testptr(ary2Reg, ary2Reg);
     masm.jcc(Assembler::zero, FALSE_LABEL);
 
     // Check the lengths
-    masm.movl(tmp2Reg, Address(ary1Reg, length_offset));
+    masm.movl(tmp4Reg, Address(ary1Reg, length_offset));
     masm.movl(resultReg, Address(ary2Reg, length_offset));
-    masm.cmpl(tmp2Reg, resultReg);
+    masm.cmpl(tmp4Reg, resultReg);
     masm.jcc(Assembler::notEqual, FALSE_LABEL);
     masm.testl(resultReg, resultReg);
     masm.jcc(Assembler::zero, TRUE_LABEL);
 
-    // Get the number of 4 byte vectors to compare
-    masm.shrl(resultReg, 1);
-
-    // Check for odd-length arrays
-    masm.andl(tmp2Reg, 1);
-    masm.testl(tmp2Reg, tmp2Reg);
-    masm.jcc(Assembler::zero, COMPARE_LOOP_HDR);
-
-    // Compare 2-byte "tail" at end of arrays
-    masm.load_unsigned_word(tmp1Reg, Address(ary1Reg, resultReg, Address::times_4, base_offset));
-    masm.load_unsigned_word(tmp2Reg, Address(ary2Reg, resultReg, Address::times_4, base_offset));
-    masm.cmpl(tmp1Reg, tmp2Reg);
-    masm.jcc(Assembler::notEqual, FALSE_LABEL);
+    // Load array addrs
+    masm.lea(ary1Reg, Address(ary1Reg, base_offset));
+    masm.lea(ary2Reg, Address(ary2Reg, base_offset));
+
+    // Set byte count
+    masm.shll(tmp4Reg, 1);
+    masm.movl(resultReg, tmp4Reg);
+
+    if (UseSSE42Intrinsics) {
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+      // Compare 16-byte vectors
+      masm.andl(tmp4Reg, 0xfffffff0);    // vector count (in bytes)
+      masm.andl(resultReg, 0x0000000e);  // tail count (in bytes)
+      masm.testl(tmp4Reg, tmp4Reg);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+      masm.lea(ary1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+      masm.lea(ary2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+      masm.negl(tmp4Reg);
+
+      masm.bind(COMPARE_WIDE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+      masm.movdqu(tmp2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+
+      masm.jccb(Assembler::notZero, FALSE_LABEL);
+      masm.addl(tmp4Reg, 16);
+      masm.jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+      masm.bind(COMPARE_TAIL);
+      masm.movl(tmp4Reg, resultReg);
+      // Fallthru to tail compare
+    }
+
+    // Compare 4-byte vectors
+    masm.andl(tmp4Reg, 0xfffffffc);    // vector count (in bytes)
+    masm.andl(resultReg, 0x00000002);  // tail char (in bytes)
+    masm.testl(tmp4Reg, tmp4Reg);
+    masm.jccb(Assembler::zero, COMPARE_CHAR);
+    masm.lea(ary1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+    masm.lea(ary2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+    masm.negl(tmp4Reg);
+
+    masm.bind(COMPARE_VECTORS);
+    masm.movl(tmp3Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+    masm.cmpl(tmp3Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+    masm.jccb(Assembler::notEqual, FALSE_LABEL);
+    masm.addl(tmp4Reg, 4);
+    masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+
+    // Compare trailing char (final 2 bytes), if any
+    masm.bind(COMPARE_CHAR);
     masm.testl(resultReg, resultReg);
-    masm.jcc(Assembler::zero, TRUE_LABEL);
-
-    // Setup compare loop
-    masm.bind(COMPARE_LOOP_HDR);
-    // Shift tmp1Reg and tmp2Reg to the last 4-byte boundary of the arrays
-    masm.leal(tmp1Reg, Address(ary1Reg, resultReg, Address::times_4, base_offset));
-    masm.leal(tmp2Reg, Address(ary2Reg, resultReg, Address::times_4, base_offset));
-    masm.negl(resultReg);
-
-    // 4-byte-wide compare loop
-    masm.bind(COMPARE_LOOP);
-    masm.movl(ary1Reg, Address(tmp1Reg, resultReg, Address::times_4, 0));
-    masm.movl(ary2Reg, Address(tmp2Reg, resultReg, Address::times_4, 0));
-    masm.cmpl(ary1Reg, ary2Reg);
-    masm.jcc(Assembler::notEqual, FALSE_LABEL);
-    masm.increment(resultReg);
-    masm.jcc(Assembler::notZero, COMPARE_LOOP);
+    masm.jccb(Assembler::zero, TRUE_LABEL);
+    masm.load_unsigned_short(tmp3Reg, Address(ary1Reg, 0));
+    masm.load_unsigned_short(tmp4Reg, Address(ary2Reg, 0));
+    masm.cmpl(tmp3Reg, tmp4Reg);
+    masm.jccb(Assembler::notEqual, FALSE_LABEL);
 
     masm.bind(TRUE_LABEL);
     masm.movl(resultReg, 1);   // return true
-    masm.jmp(DONE_LABEL);
+    masm.jmpb(DONE);
 
     masm.bind(FALSE_LABEL);
     masm.xorl(resultReg, resultReg); // return false
 
     // That's it
-    masm.bind(DONE_LABEL);
+    masm.bind(DONE);
   %}
 
   enc_class enc_pop_rdx() %{
@@ -4297,24 +4577,6 @@
     emit_opcode(cbuf, 0xC8 + $src2$$reg);
   %}
 
-  enc_class enc_membar_acquire %{
-    // Doug Lea believes this is not needed with current Sparcs and TSO.
-    // MacroAssembler masm(&cbuf);
-    // masm.membar();
-  %}
-
-  enc_class enc_membar_release %{
-    // Doug Lea believes this is not needed with current Sparcs and TSO.
-    // MacroAssembler masm(&cbuf);
-    // masm.membar();
-  %}
-
-  enc_class enc_membar_volatile %{
-    MacroAssembler masm(&cbuf);
-    masm.membar(Assembler::Membar_mask_bits(Assembler::StoreLoad |
-                                            Assembler::StoreStore));
-  %}
-
   // Atomically load the volatile long
   enc_class enc_loadL_volatile( memory mem, stackSlotL dst ) %{
     emit_opcode(cbuf,0xDF);
@@ -4978,6 +5240,15 @@
   interface(CONST_INTER);
 %}
 
+// Constant for short-wide masking
+operand immI_65535() %{
+  predicate(n->get_int() == 65535);
+  match(ConI);
+
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Register Operands
 // Integer Register
 operand eRegI() %{
@@ -5857,7 +6128,7 @@
 
 //----------OPERAND CLASSES----------------------------------------------------
 // Operand Classes are groups of operands that are used as to simplify
-// instruction definitions by not requiring the AD writer to specify seperate
+// instruction definitions by not requiring the AD writer to specify separate
 // instructions for every form of operand when the instruction accepts
 // multiple operand types with the same basic encoding and format.  The classic
 // case of this is memory operands.
@@ -6389,6 +6660,214 @@
 %}
 
 
+//---------- Zeros Count Instructions ------------------------------------------
+
+instruct countLeadingZerosI(eRegI dst, eRegI src, eFlagsReg cr) %{
+  predicate(UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosI src));
+  effect(KILL cr);
+
+  format %{ "LZCNT  $dst, $src\t# count leading zeros (int)" %}
+  ins_encode %{
+    __ lzcntl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosI_bsr(eRegI dst, eRegI src, eFlagsReg cr) %{
+  predicate(!UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosI src));
+  effect(KILL cr);
+
+  format %{ "BSR    $dst, $src\t# count leading zeros (int)\n\t"
+            "JNZ    skip\n\t"
+            "MOV    $dst, -1\n"
+      "skip:\n\t"
+            "NEG    $dst\n\t"
+            "ADD    $dst, 31" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label skip;
+    __ bsrl(Rdst, Rsrc);
+    __ jccb(Assembler::notZero, skip);
+    __ movl(Rdst, -1);
+    __ bind(skip);
+    __ negl(Rdst);
+    __ addl(Rdst, BitsPerInt - 1);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosL(eRegI dst, eRegL src, eFlagsReg cr) %{
+  predicate(UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosL src));
+  effect(TEMP dst, KILL cr);
+
+  format %{ "LZCNT  $dst, $src.hi\t# count leading zeros (long)\n\t"
+            "JNC    done\n\t"
+            "LZCNT  $dst, $src.lo\n\t"
+            "ADD    $dst, 32\n"
+      "done:" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label done;
+    __ lzcntl(Rdst, HIGH_FROM_LOW(Rsrc));
+    __ jccb(Assembler::carryClear, done);
+    __ lzcntl(Rdst, Rsrc);
+    __ addl(Rdst, BitsPerInt);
+    __ bind(done);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosL_bsr(eRegI dst, eRegL src, eFlagsReg cr) %{
+  predicate(!UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosL src));
+  effect(TEMP dst, KILL cr);
+
+  format %{ "BSR    $dst, $src.hi\t# count leading zeros (long)\n\t"
+            "JZ     msw_is_zero\n\t"
+            "ADD    $dst, 32\n\t"
+            "JMP    not_zero\n"
+      "msw_is_zero:\n\t"
+            "BSR    $dst, $src.lo\n\t"
+            "JNZ    not_zero\n\t"
+            "MOV    $dst, -1\n"
+      "not_zero:\n\t"
+            "NEG    $dst\n\t"
+            "ADD    $dst, 63\n" %}
+ ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label msw_is_zero;
+    Label not_zero;
+    __ bsrl(Rdst, HIGH_FROM_LOW(Rsrc));
+    __ jccb(Assembler::zero, msw_is_zero);
+    __ addl(Rdst, BitsPerInt);
+    __ jmpb(not_zero);
+    __ bind(msw_is_zero);
+    __ bsrl(Rdst, Rsrc);
+    __ jccb(Assembler::notZero, not_zero);
+    __ movl(Rdst, -1);
+    __ bind(not_zero);
+    __ negl(Rdst);
+    __ addl(Rdst, BitsPerLong - 1);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosI(eRegI dst, eRegI src, eFlagsReg cr) %{
+  match(Set dst (CountTrailingZerosI src));
+  effect(KILL cr);
+
+  format %{ "BSF    $dst, $src\t# count trailing zeros (int)\n\t"
+            "JNZ    done\n\t"
+            "MOV    $dst, 32\n"
+      "done:" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Label done;
+    __ bsfl(Rdst, $src$$Register);
+    __ jccb(Assembler::notZero, done);
+    __ movl(Rdst, BitsPerInt);
+    __ bind(done);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosL(eRegI dst, eRegL src, eFlagsReg cr) %{
+  match(Set dst (CountTrailingZerosL src));
+  effect(TEMP dst, KILL cr);
+
+  format %{ "BSF    $dst, $src.lo\t# count trailing zeros (long)\n\t"
+            "JNZ    done\n\t"
+            "BSF    $dst, $src.hi\n\t"
+            "JNZ    msw_not_zero\n\t"
+            "MOV    $dst, 32\n"
+      "msw_not_zero:\n\t"
+            "ADD    $dst, 32\n"
+      "done:" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label msw_not_zero;
+    Label done;
+    __ bsfl(Rdst, Rsrc);
+    __ jccb(Assembler::notZero, done);
+    __ bsfl(Rdst, HIGH_FROM_LOW(Rsrc));
+    __ jccb(Assembler::notZero, msw_not_zero);
+    __ movl(Rdst, BitsPerInt);
+    __ bind(msw_not_zero);
+    __ addl(Rdst, BitsPerInt);
+    __ bind(done);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
+//---------- Population Count Instructions -------------------------------------
+
+instruct popCountI(eRegI dst, eRegI src) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountI src));
+
+  format %{ "POPCNT $dst, $src" %}
+  ins_encode %{
+    __ popcntl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct popCountI_mem(eRegI dst, memory mem) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountI (LoadI mem)));
+
+  format %{ "POPCNT $dst, $mem" %}
+  ins_encode %{
+    __ popcntl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Note: Long.bitCount(long) returns an int.
+instruct popCountL(eRegI dst, eRegL src, eRegI tmp, eFlagsReg cr) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountL src));
+  effect(KILL cr, TEMP tmp, TEMP dst);
+
+  format %{ "POPCNT $dst, $src.lo\n\t"
+            "POPCNT $tmp, $src.hi\n\t"
+            "ADD    $dst, $tmp" %}
+  ins_encode %{
+    __ popcntl($dst$$Register, $src$$Register);
+    __ popcntl($tmp$$Register, HIGH_FROM_LOW($src$$Register));
+    __ addl($dst$$Register, $tmp$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Note: Long.bitCount(long) returns an int.
+instruct popCountL_mem(eRegI dst, memory mem, eRegI tmp, eFlagsReg cr) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountL (LoadL mem)));
+  effect(KILL cr, TEMP tmp, TEMP dst);
+
+  format %{ "POPCNT $dst, $mem\n\t"
+            "POPCNT $tmp, $mem+4\n\t"
+            "ADD    $dst, $tmp" %}
+  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));
+    __ addl($dst$$Register, $tmp$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
 //----------Load/Store/Move Instructions---------------------------------------
 //----------Load Instructions--------------------------------------------------
 // Load Byte (8bit signed)
@@ -6396,32 +6875,201 @@
   match(Set dst (LoadB mem));
 
   ins_cost(125);
-  format %{ "MOVSX8 $dst,$mem" %}
-  opcode(0xBE, 0x0F);
-  ins_encode( OpcS, OpcP, RegMem(dst,mem));
-  ins_pipe( ialu_reg_mem );
-%}
-
-// Load Byte (8bit UNsigned)
-instruct loadUB(xRegI dst, memory mem, immI_255 bytemask) %{
-  match(Set dst (AndI (LoadB mem) bytemask));
+  format %{ "MOVSX8 $dst,$mem\t# byte" %}
+
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Byte (8bit signed) into Long Register
+instruct loadB2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (LoadB mem)));
+  effect(KILL cr);
+
+  ins_cost(375);
+  format %{ "MOVSX8 $dst.lo,$mem\t# byte -> long\n\t"
+            "MOV    $dst.hi,$dst.lo\n\t"
+            "SAR    $dst.hi,7" %}
+
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+    __ movl(HIGH_FROM_LOW($dst$$Register), $dst$$Register); // This is always a different register.
+    __ sarl(HIGH_FROM_LOW($dst$$Register), 7); // 24+1 MSB are already signed extended.
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Byte (8bit UNsigned)
+instruct loadUB(xRegI dst, memory mem) %{
+  match(Set dst (LoadUB mem));
+
+  ins_cost(125);
+  format %{ "MOVZX8 $dst,$mem\t# ubyte -> int" %}
+
+  ins_encode %{
+    __ movzbl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Byte (8 bit UNsigned) into Long Register
+instruct loadUB2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (LoadUB mem)));
+  effect(KILL cr);
+
+  ins_cost(250);
+  format %{ "MOVZX8 $dst.lo,$mem\t# ubyte -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzbl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Byte (8 bit UNsigned) with mask into Long Register
+instruct loadUB2L_immI8(eRegL dst, memory mem, immI8 mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadUB mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOVZX8 $dst.lo,$mem\t# ubyte & 8-bit mask -> long\n\t"
+            "XOR    $dst.hi,$dst.hi\n\t"
+            "AND    $dst.lo,$mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzbl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Short (16bit signed)
+instruct loadS(eRegI dst, memory mem) %{
+  match(Set dst (LoadS mem));
+
+  ins_cost(125);
+  format %{ "MOVSX  $dst,$mem\t# short" %}
+
+  ins_encode %{
+    __ movswl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Short (16 bit signed) to Byte (8 bit signed)
+instruct loadS2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadS mem) twentyfour) twentyfour));
 
   ins_cost(125);
-  format %{ "MOVZX8 $dst,$mem" %}
-  opcode(0xB6, 0x0F);
-  ins_encode( OpcS, OpcP, RegMem(dst,mem));
-  ins_pipe( ialu_reg_mem );
-%}
-
-// Load Char (16bit unsigned)
-instruct loadC(eRegI dst, memory mem) %{
-  match(Set dst (LoadC mem));
+  format %{ "MOVSX  $dst, $mem\t# short -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Short (16bit signed) into Long Register
+instruct loadS2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (LoadS mem)));
+  effect(KILL cr);
+
+  ins_cost(375);
+  format %{ "MOVSX  $dst.lo,$mem\t# short -> long\n\t"
+            "MOV    $dst.hi,$dst.lo\n\t"
+            "SAR    $dst.hi,15" %}
+
+  ins_encode %{
+    __ movswl($dst$$Register, $mem$$Address);
+    __ movl(HIGH_FROM_LOW($dst$$Register), $dst$$Register); // This is always a different register.
+    __ sarl(HIGH_FROM_LOW($dst$$Register), 15); // 16+1 MSB are already signed extended.
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16bit unsigned)
+instruct loadUS(eRegI dst, memory mem) %{
+  match(Set dst (LoadUS mem));
+
+  ins_cost(125);
+  format %{ "MOVZX  $dst,$mem\t# ushort/char -> int" %}
+
+  ins_encode %{
+    __ movzwl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) to Byte (8 bit signed)
+instruct loadUS2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadUS mem) twentyfour) twentyfour));
 
   ins_cost(125);
-  format %{ "MOVZX  $dst,$mem" %}
-  opcode(0xB7, 0x0F);
-  ins_encode( OpcS, OpcP, RegMem(dst,mem));
-  ins_pipe( ialu_reg_mem );
+  format %{ "MOVSX  $dst, $mem\t# ushort -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) into Long Register
+instruct loadUS2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (LoadUS mem)));
+  effect(KILL cr);
+
+  ins_cost(250);
+  format %{ "MOVZX  $dst.lo,$mem\t# ushort/char -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+
+  ins_encode %{
+    __ movzwl($dst$$Register, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW($dst$$Register), HIGH_FROM_LOW($dst$$Register));
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) with mask 0xFF into Long Register
+instruct loadUS2L_immI_255(eRegL dst, memory mem, immI_255 mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOVZX8 $dst.lo,$mem\t# ushort/char & 0xFF -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzbl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) with a 16-bit mask into Long Register
+instruct loadUS2L_immI16(eRegL dst, memory mem, immI16 mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOVZX  $dst.lo, $mem\t# ushort/char & 16-bit mask -> long\n\t"
+            "XOR    $dst.hi,$dst.hi\n\t"
+            "AND    $dst.lo,$mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzwl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
 %}
 
 // Load Integer
@@ -6429,10 +7077,144 @@
   match(Set dst (LoadI mem));
 
   ins_cost(125);
-  format %{ "MOV    $dst,$mem" %}
-  opcode(0x8B);
-  ins_encode( OpcP, RegMem(dst,mem));
-  ins_pipe( ialu_reg_mem );
+  format %{ "MOV    $dst,$mem\t# int" %}
+
+  ins_encode %{
+    __ movl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Byte (8 bit signed)
+instruct loadI2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) twentyfour) twentyfour));
+
+  ins_cost(125);
+  format %{ "MOVSX  $dst, $mem\t# int -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Unsigned Byte (8 bit UNsigned)
+instruct loadI2UB(eRegI dst, memory mem, immI_255 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+
+  ins_cost(125);
+  format %{ "MOVZX  $dst, $mem\t# int -> ubyte" %}
+  ins_encode %{
+    __ movzbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Short (16 bit signed)
+instruct loadI2S(eRegI dst, memory mem, immI_16 sixteen) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) sixteen) sixteen));
+
+  ins_cost(125);
+  format %{ "MOVSX  $dst, $mem\t# int -> short" %}
+  ins_encode %{
+    __ movswl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Unsigned Short/Char (16 bit UNsigned)
+instruct loadI2US(eRegI dst, memory mem, immI_65535 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+
+  ins_cost(125);
+  format %{ "MOVZX  $dst, $mem\t# int -> ushort/char" %}
+  ins_encode %{
+    __ movzwl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer into Long Register
+instruct loadI2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (LoadI mem)));
+  effect(KILL cr);
+
+  ins_cost(375);
+  format %{ "MOV    $dst.lo,$mem\t# int -> long\n\t"
+            "MOV    $dst.hi,$dst.lo\n\t"
+            "SAR    $dst.hi,31" %}
+
+  ins_encode %{
+    __ movl($dst$$Register, $mem$$Address);
+    __ movl(HIGH_FROM_LOW($dst$$Register), $dst$$Register); // This is always a different register.
+    __ sarl(HIGH_FROM_LOW($dst$$Register), 31);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with mask 0xFF into Long Register
+instruct loadI2L_immI_255(eRegL dst, memory mem, immI_255 mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOVZX8 $dst.lo,$mem\t# int & 0xFF -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzbl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with mask 0xFFFF into Long Register
+instruct loadI2L_immI_65535(eRegL dst, memory mem, immI_65535 mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOVZX  $dst.lo,$mem\t# int & 0xFFFF -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzwl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with 32-bit mask into Long Register
+instruct loadI2L_immI(eRegL dst, memory mem, immI mask, eFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  effect(KILL cr);
+
+  format %{ "MOV    $dst.lo,$mem\t# int & 32-bit mask -> long\n\t"
+            "XOR    $dst.hi,$dst.hi\n\t"
+            "AND    $dst.lo,$mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movl(Rdst, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Integer into Long Register
+instruct loadUI2L(eRegL dst, memory mem, eFlagsReg cr) %{
+  match(Set dst (LoadUI2L mem));
+  effect(KILL cr);
+
+  ins_cost(250);
+  format %{ "MOV    $dst.lo,$mem\t# uint -> long\n\t"
+            "XOR    $dst.hi,$dst.hi" %}
+
+  ins_encode %{
+    __ movl($dst$$Register, $mem$$Address);
+    __ xorl(HIGH_FROM_LOW($dst$$Register), HIGH_FROM_LOW($dst$$Register));
+  %}
+
+  ins_pipe(ialu_reg_mem);
 %}
 
 // Load Long.  Cannot clobber address while loading, so restrict address
@@ -6442,11 +7224,17 @@
   match(Set dst (LoadL mem));
 
   ins_cost(250);
-  format %{ "MOV    $dst.lo,$mem\n\t"
+  format %{ "MOV    $dst.lo,$mem\t# long\n\t"
             "MOV    $dst.hi,$mem+4" %}
-  opcode(0x8B, 0x8B);
-  ins_encode( OpcP, RegMem(dst,mem), OpcS, RegMem_Hi(dst,mem));
-  ins_pipe( ialu_reg_long_mem );
+
+  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);
+    __ movl($dst$$Register, Amemlo);
+    __ movl(HIGH_FROM_LOW($dst$$Register), Amemhi);
+  %}
+
+  ins_pipe(ialu_reg_long_mem);
 %}
 
 // Volatile Load Long.  Must be atomic, so do 64-bit FILD
@@ -6521,17 +7309,6 @@
   ins_pipe( ialu_reg_mem );
 %}
 
-// Load Short (16bit signed)
-instruct loadS(eRegI dst, memory mem) %{
-  match(Set dst (LoadS mem));
-
-  ins_cost(125);
-  format %{ "MOVSX  $dst,$mem" %}
-  opcode(0xBF, 0x0F);
-  ins_encode( OpcS, OpcP, RegMem(dst,mem));
-  ins_pipe( ialu_reg_mem );
-%}
-
 // Load Double
 instruct loadD(regD dst, memory mem) %{
   predicate(UseSSE<=1);
@@ -7020,6 +7797,17 @@
   ins_pipe( ialu_mem_long_reg );
 %}
 
+// Store Long to Integer
+instruct storeL2I(memory mem, eRegL src) %{
+  match(Set mem (StoreI mem (ConvL2I src)));
+
+  format %{ "MOV    $mem,$src.lo\t# long -> int" %}
+  ins_encode %{
+    __ movl($mem$$Address, $src$$Register);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 // Volatile Store Long.  Must be atomic, so move it into
 // the FP TOS and then do a 64-bit FIST.  Has to probe the
 // target address before the store (for null-ptr checks)
@@ -7321,9 +8109,9 @@
   ins_cost(400);
 
   size(0);
-  format %{ "MEMBAR-acquire" %}
-  ins_encode( enc_membar_acquire );
-  ins_pipe(pipe_slow);
+  format %{ "MEMBAR-acquire ! (empty encoding)" %}
+  ins_encode();
+  ins_pipe(empty);
 %}
 
 instruct membar_acquire_lock() %{
@@ -7342,9 +8130,9 @@
   ins_cost(400);
 
   size(0);
-  format %{ "MEMBAR-release" %}
-  ins_encode( enc_membar_release );
-  ins_pipe(pipe_slow);
+  format %{ "MEMBAR-release ! (empty encoding)" %}
+  ins_encode( );
+  ins_pipe(empty);
 %}
 
 instruct membar_release_lock() %{
@@ -7358,12 +8146,22 @@
   ins_pipe(empty);
 %}
 
-instruct membar_volatile() %{
+instruct membar_volatile(eFlagsReg cr) %{
   match(MemBarVolatile);
+  effect(KILL cr);
   ins_cost(400);
 
-  format %{ "MEMBAR-volatile" %}
-  ins_encode( enc_membar_volatile );
+  format %{ 
+    $$template
+    if (os::is_MP()) {
+      $$emit$$"LOCK ADDL [ESP + #0], 0\t! membar_volatile"
+    } else {
+      $$emit$$"MEMBAR-volatile ! (empty encoding)"
+    }
+  %}
+  ins_encode %{
+    __ membar(Assembler::StoreLoad);
+  %}
   ins_pipe(pipe_slow);
 %}
 
@@ -7957,7 +8755,7 @@
     __ xchgl(as_Register(EBX_enc), as_Register(ECX_enc));
     if( os::is_MP() )
       __ lock();
-    __ cmpxchg8(Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp));
+    __ cmpxchg8($mem$$Address);
     __ xchgl(as_Register(EBX_enc), as_Register(ECX_enc));
   %}
   ins_pipe( pipe_cmpxchg );
@@ -8429,28 +9227,28 @@
 
 // Logical Shift Right by 24, followed by Arithmetic Shift Left by 24.
 // This idiom is used by the compiler for the i2b bytecode.
-instruct i2b(eRegI dst, xRegI src, immI_24 twentyfour, eFlagsReg cr) %{
+instruct i2b(eRegI dst, xRegI src, immI_24 twentyfour) %{
   match(Set dst (RShiftI (LShiftI src twentyfour) twentyfour));
-  effect(KILL cr);
 
   size(3);
   format %{ "MOVSX  $dst,$src :8" %}
-  opcode(0xBE, 0x0F);
-  ins_encode( OpcS, OpcP, RegReg( dst, src));
-  ins_pipe( ialu_reg_reg );
+  ins_encode %{
+    __ movsbl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg_reg);
 %}
 
 // Logical Shift Right by 16, followed by Arithmetic Shift Left by 16.
 // This idiom is used by the compiler the i2s bytecode.
-instruct i2s(eRegI dst, xRegI src, immI_16 sixteen, eFlagsReg cr) %{
+instruct i2s(eRegI dst, xRegI src, immI_16 sixteen) %{
   match(Set dst (RShiftI (LShiftI src sixteen) sixteen));
-  effect(KILL cr);
 
   size(3);
   format %{ "MOVSX  $dst,$src :16" %}
-  opcode(0xBF, 0x0F);
-  ins_encode( OpcS, OpcP, RegReg( dst, src));
-  ins_pipe( ialu_reg_reg );
+  ins_encode %{
+    __ movswl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg_reg);
 %}
 
 
@@ -11467,6 +12265,7 @@
 instruct convI2L_reg( eRegL dst, eRegI src, eFlagsReg cr) %{
   match(Set dst (ConvI2L src));
   effect(KILL cr);
+  ins_cost(375);
   format %{ "MOV    $dst.lo,$src\n\t"
             "MOV    $dst.hi,$src\n\t"
             "SAR    $dst.hi,31" %}
@@ -11478,6 +12277,7 @@
 instruct convI2L_reg_zex(eRegL dst, eRegI src, immL_32bits mask, eFlagsReg flags ) %{
   match(Set dst (AndL (ConvI2L src) mask) );
   effect( KILL flags );
+  ins_cost(250);
   format %{ "MOV    $dst.lo,$src\n\t"
             "XOR    $dst.hi,$dst.hi" %}
   opcode(0x33); // XOR
@@ -11489,6 +12289,7 @@
 instruct zerox_long(eRegL dst, eRegL src, immL_32bits mask, eFlagsReg flags ) %{
   match(Set dst (AndL src mask) );
   effect( KILL flags );
+  ins_cost(250);
   format %{ "MOV    $dst.lo,$src.lo\n\t"
             "XOR    $dst.hi,$dst.hi\n\t" %}
   opcode(0x33); // XOR
@@ -11902,11 +12703,8 @@
   ins_pipe( fpu_reg_reg );
 %}
 
-
-
 // =======================================================================
 // fast clearing of an array
-
 instruct rep_stos(eCXRegI cnt, eDIRegP base, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
   match(Set dummy (ClearArray cnt base));
   effect(USE_KILL cnt, USE_KILL base, KILL zero, KILL cr);
@@ -11920,24 +12718,48 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct string_compare(eDIRegP str1, eSIRegP str2, eAXRegI tmp1, eBXRegI tmp2, eCXRegI result, eFlagsReg cr) %{
+instruct string_compare(eDIRegP str1, eSIRegP str2, regXD tmp1, regXD tmp2,
+                        eAXRegI tmp3, eBXRegI tmp4, eCXRegI result, eFlagsReg cr) %{
   match(Set result (StrComp str1 str2));
-  effect(USE_KILL str1, USE_KILL str2, KILL tmp1, KILL tmp2, KILL cr);
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL str1, USE_KILL str2, KILL tmp3, KILL tmp4, KILL cr);
   //ins_cost(300);
 
   format %{ "String Compare $str1,$str2 -> $result    // KILL EAX, EBX" %}
-  ins_encode( enc_String_Compare() );
+  ins_encode( enc_String_Compare(str1, str2, tmp1, tmp2, tmp3, tmp4, result) );
+  ins_pipe( pipe_slow );
+%}
+
+// fast string equals
+instruct string_equals(eDIRegP str1, eSIRegP str2, regXD tmp1, regXD tmp2,
+                       eBXRegI tmp3, eCXRegI tmp4, eAXRegI result, eFlagsReg cr) %{
+  match(Set result (StrEquals str1 str2));
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL str1, USE_KILL str2, KILL tmp3, KILL tmp4, KILL cr);
+
+  format %{ "String Equals $str1,$str2 -> $result    // KILL EBX, ECX" %}
+  ins_encode( enc_String_Equals(tmp1, tmp2, str1, str2, tmp3, tmp4, result) );
+  ins_pipe( pipe_slow );
+%}
+
+instruct string_indexof(eSIRegP str1, eDIRegP str2, regXD tmp1, eAXRegI tmp2,
+                        eCXRegI tmp3, eDXRegI tmp4, eBXRegI result, eFlagsReg cr) %{
+  predicate(UseSSE42Intrinsics);
+  match(Set result (StrIndexOf str1 str2));
+  effect(TEMP tmp1, USE_KILL str1, USE_KILL str2, KILL tmp2, KILL tmp3, KILL tmp4, KILL cr);
+
+  format %{ "String IndexOf $str1,$str2 -> $result    // KILL EAX, ECX, EDX" %}
+  ins_encode( enc_String_IndexOf(str1, str2, tmp1, tmp2, tmp3, tmp4, result) );
   ins_pipe( pipe_slow );
 %}
 
 // fast array equals
-instruct array_equals(eDIRegP ary1, eSIRegP ary2, eAXRegI tmp1, eBXRegI tmp2, eCXRegI result, eFlagsReg cr) %{
+instruct array_equals(eDIRegP ary1, eSIRegP ary2, regXD tmp1, regXD tmp2, eBXRegI tmp3,
+                      eDXRegI tmp4, eAXRegI result, eFlagsReg cr) %{
   match(Set result (AryEq ary1 ary2));
-  effect(USE_KILL ary1, USE_KILL ary2, KILL tmp1, KILL tmp2, KILL cr);
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL ary1, USE_KILL ary2, KILL tmp3, KILL tmp4, KILL cr);
   //ins_cost(300);
 
-  format %{ "Array Equals $ary1,$ary2 -> $result    // KILL EAX, EBX" %}
-  ins_encode( enc_Array_Equals(ary1, ary2, tmp1, tmp2, result) );
+  format %{ "Array Equals $ary1,$ary2 -> $result    // KILL EBX, EDX" %}
+  ins_encode( enc_Array_Equals(ary1, ary2, tmp1, tmp2, tmp3, tmp4, result) );
   ins_pipe( pipe_slow );
 %}
 
@@ -12375,15 +13197,12 @@
   effect( KILL rcx, KILL cr );
 
   ins_cost(1100);  // slightly larger than the next version
-  format %{ "CMPL   EAX,ESI\n\t"
-            "JEQ,s  hit\n\t"
-            "MOV    EDI,[$sub+Klass::secondary_supers]\n\t"
+  format %{ "MOV    EDI,[$sub+Klass::secondary_supers]\n\t"
             "MOV    ECX,[EDI+arrayKlass::length]\t# length to scan\n\t"
             "ADD    EDI,arrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t"
             "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t"
             "JNE,s  miss\t\t# Missed: EDI not-zero\n\t"
             "MOV    [$sub+Klass::secondary_super_cache],$super\t# Hit: update cache\n\t"
-     "hit:\n\t"
             "XOR    $result,$result\t\t Hit: EDI zero\n\t"
      "miss:\t" %}
 
@@ -12397,9 +13216,7 @@
   effect( KILL rcx, KILL result );
 
   ins_cost(1000);
-  format %{ "CMPL   EAX,ESI\n\t"
-            "JEQ,s  miss\t# Actually a hit; we are done.\n\t"
-            "MOV    EDI,[$sub+Klass::secondary_supers]\n\t"
+  format %{ "MOV    EDI,[$sub+Klass::secondary_supers]\n\t"
             "MOV    ECX,[EDI+arrayKlass::length]\t# length to scan\n\t"
             "ADD    EDI,arrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t"
             "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t"
@@ -13220,7 +14037,7 @@
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
 //
-// peepmatch ( root_instr_name [preceeding_instruction]* );
+// peepmatch ( root_instr_name [preceding_instruction]* );
 //
 // peepconstraint %{
 // (instruction_number.operand_name relational_op instruction_number.operand_name
--- a/src/cpu/x86/vm/x86_64.ad	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/cpu/x86/vm/x86_64.ad	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -326,7 +326,6 @@
                          R9,  R9_H,
                          R10, R10_H,
                          R11, R11_H,
-                         R12, R12_H,
                          R13, R13_H,
                          R14, R14_H);
 
@@ -340,7 +339,6 @@
                          R9,  R9_H,
                          R10, R10_H,
                          R11, R11_H,
-                         R12, R12_H,
                          R13, R13_H,
                          R14, R14_H);
 
@@ -354,7 +352,6 @@
                              R9,  R9_H,
                              R10, R10_H,
                              R11, R11_H,
-                             R12, R12_H,
                              R13, R13_H,
                              R14, R14_H);
 
@@ -444,9 +441,6 @@
 // Singleton class for RDX long register
 reg_class long_rdx_reg(RDX, RDX_H);
 
-// Singleton class for R12 long register
-reg_class long_r12_reg(R12, R12_H);
-
 // Class for all int registers (except RSP)
 reg_class int_reg(RAX,
                   RDX,
@@ -1842,7 +1836,9 @@
 {
   if (UseCompressedOops) {
     st->print_cr("movl    rscratch1, [j_rarg0 + oopDesc::klass_offset_in_bytes() #%d]\t", oopDesc::klass_offset_in_bytes());
-    st->print_cr("leaq    rscratch1, [r12_heapbase, r, Address::times_8, 0]");
+    if (Universe::narrow_oop_shift() != 0) {
+      st->print_cr("leaq    rscratch1, [r12_heapbase, r, Address::times_8, 0]");
+    }
     st->print_cr("cmpq    rax, rscratch1\t # Inline cache check");
   } else {
     st->print_cr("cmpq    rax, [j_rarg0 + oopDesc::klass_offset_in_bytes() #%d]\t"
@@ -1891,7 +1887,11 @@
 uint MachUEPNode::size(PhaseRegAlloc* ra_) const
 {
   if (UseCompressedOops) {
-    return OptoBreakpoint ? 19 : 20;
+    if (Universe::narrow_oop_shift() == 0) {
+      return OptoBreakpoint ? 15 : 16;
+    } else {
+      return OptoBreakpoint ? 19 : 20;
+    }
   } else {
     return OptoBreakpoint ? 11 : 12;
   }
@@ -1980,6 +1980,13 @@
 }
 
 
+const bool Matcher::match_rule_supported(int opcode) {
+  if (!has_match_rule(opcode))
+    return false;
+
+  return true;  // Per default match rules are supported.
+}
+
 int Matcher::regnum_to_fpu_offset(int regnum)
 {
   return regnum - 32; // The FP registers are in the second chunk
@@ -2575,45 +2582,13 @@
     Register Rrax = as_Register(RAX_enc); // super class
     Register Rrcx = as_Register(RCX_enc); // killed
     Register Rrsi = as_Register(RSI_enc); // sub class
-    Label hit, miss, cmiss;
+    Label miss;
+    const bool set_cond_codes = true;
 
     MacroAssembler _masm(&cbuf);
-    // Compare super with sub directly, since super is not in its own SSA.
-    // The compiler used to emit this test, but we fold it in here,
-    // to allow platform-specific tweaking on sparc.
-    __ cmpptr(Rrax, Rrsi);
-    __ jcc(Assembler::equal, hit);
-#ifndef PRODUCT
-    __ lea(Rrcx, ExternalAddress((address)&SharedRuntime::_partial_subtype_ctr));
-    __ incrementl(Address(Rrcx, 0));
-#endif //PRODUCT
-    __ movptr(Rrdi, Address(Rrsi, 
-                          sizeof(oopDesc) + 
-                          Klass::secondary_supers_offset_in_bytes()));
-    __ movl(Rrcx, Address(Rrdi, arrayOopDesc::length_offset_in_bytes()));
-    __ addptr(Rrdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
-    if (UseCompressedOops) {
-      __ encode_heap_oop(Rrax);
-      __ repne_scanl();
-      __ jcc(Assembler::notEqual, cmiss);
-      __ decode_heap_oop(Rrax);
-      __ movptr(Address(Rrsi,
-                      sizeof(oopDesc) +
-                      Klass::secondary_super_cache_offset_in_bytes()),
-              Rrax);
-      __ jmp(hit);
-      __ bind(cmiss);
-      __ decode_heap_oop(Rrax);
-      __ jmp(miss);
-    } else {
-      __ repne_scan();
-      __ jcc(Assembler::notEqual, miss);
-      __ movptr(Address(Rrsi,
-                      sizeof(oopDesc) +
-                      Klass::secondary_super_cache_offset_in_bytes()),
-              Rrax);
-    }
-    __ bind(hit);
+    __ check_klass_subtype_slow_path(Rrsi, Rrax, Rrcx, Rrdi,
+                                     NULL, &miss,
+                                     /*set_cond_codes:*/ true);
     if ($primary) {
       __ xorptr(Rrdi, Rrdi);
     }
@@ -3462,14 +3437,12 @@
 
   enc_class movq_ld(regD dst, memory mem) %{
     MacroAssembler _masm(&cbuf);
-    Address madr = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ movq(as_XMMRegister($dst$$reg), madr);
+    __ movq($dst$$XMMRegister, $mem$$Address);
   %}
 
   enc_class movq_st(memory mem, regD src) %{
     MacroAssembler _masm(&cbuf);
-    Address madr = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ movq(madr, as_XMMRegister($src$$reg));
+    __ movq($mem$$Address, $src$$XMMRegister);
   %}
 
   enc_class pshufd_8x8(regF dst, regF src) %{
@@ -3728,13 +3701,16 @@
     }
   %}
 
-  enc_class enc_String_Compare()
-  %{
+  enc_class enc_String_Compare(rdi_RegP str1, rsi_RegP str2, regD tmp1, regD tmp2,
+                        rax_RegI tmp3, rbx_RegI tmp4, rcx_RegI result) %{
     Label RCX_GOOD_LABEL, LENGTH_DIFF_LABEL,
           POP_LABEL, DONE_LABEL, CONT_LABEL,
           WHILE_HEAD_LABEL;
     MacroAssembler masm(&cbuf);
 
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+
     // Get the first character position in both strings
     //         [8] char array, [12] offset, [16] count
     int value_offset  = java_lang_String::value_offset_in_bytes();
@@ -3752,6 +3728,7 @@
     // Compute the minimum of the string lengths(rsi) and the
     // difference of the string lengths (stack)
 
+    // do the conditional move stuff
     masm.movl(rdi, Address(rdi, count_offset));
     masm.movl(rsi, Address(rsi, count_offset));
     masm.movl(rcx, rdi);
@@ -3765,8 +3742,8 @@
     masm.jcc(Assembler::zero, LENGTH_DIFF_LABEL);
 
     // Load first characters
-    masm.load_unsigned_word(rcx, Address(rbx, 0));
-    masm.load_unsigned_word(rdi, Address(rax, 0));
+    masm.load_unsigned_short(rcx, Address(rbx, 0));
+    masm.load_unsigned_short(rdi, Address(rax, 0));
 
     // Compare first characters
     masm.subl(rcx, rdi);
@@ -3779,7 +3756,7 @@
       Label LSkip2;
       // Check if the strings start at same location
       masm.cmpptr(rbx, rax);
-      masm.jcc(Assembler::notEqual, LSkip2);
+      masm.jccb(Assembler::notEqual, LSkip2);
 
       // Check if the length difference is zero (from stack)
       masm.cmpl(Address(rsp, 0), 0x0);
@@ -3789,103 +3766,382 @@
       masm.bind(LSkip2);
     }
 
+    // Advance to next character
+    masm.addptr(rax, 2);
+    masm.addptr(rbx, 2);
+
+    if (UseSSE42Intrinsics) {
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_VECTORS, VECTOR_NOT_EQUAL, COMPARE_TAIL;
+      // Setup to compare 16-byte vectors
+      masm.movl(rdi, rsi);
+      masm.andl(rsi, 0xfffffff8); // rsi holds the vector count
+      masm.andl(rdi, 0x00000007); // rdi holds the tail count
+      masm.testl(rsi, rsi);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+
+      masm.lea(rax, Address(rax, rsi, Address::times_2));
+      masm.lea(rbx, Address(rbx, rsi, Address::times_2));
+      masm.negptr(rsi);
+
+      masm.bind(COMPARE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(rax, rsi, Address::times_2));
+      masm.movdqu(tmp2Reg, Address(rbx, rsi, Address::times_2));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+      masm.jccb(Assembler::notZero, VECTOR_NOT_EQUAL);
+      masm.addptr(rsi, 8);
+      masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+      masm.jmpb(COMPARE_TAIL);
+
+      // Mismatched characters in the vectors
+      masm.bind(VECTOR_NOT_EQUAL);
+      masm.lea(rax, Address(rax, rsi, Address::times_2));
+      masm.lea(rbx, Address(rbx, rsi, Address::times_2));
+      masm.movl(rdi, 8);
+
+      // Compare tail (< 8 chars), or rescan last vectors to
+      // find 1st mismatched characters
+      masm.bind(COMPARE_TAIL);
+      masm.testl(rdi, rdi);
+      masm.jccb(Assembler::zero, LENGTH_DIFF_LABEL);
+      masm.movl(rsi, rdi);
+      // Fallthru to tail compare
+    }
+
     // Shift RAX and RBX to the end of the arrays, negate min
-    masm.lea(rax, Address(rax, rsi, Address::times_2, 2));
-    masm.lea(rbx, Address(rbx, rsi, Address::times_2, 2));
+    masm.lea(rax, Address(rax, rsi, Address::times_2, 0));
+    masm.lea(rbx, Address(rbx, rsi, Address::times_2, 0));
     masm.negptr(rsi);
 
     // Compare the rest of the characters
     masm.bind(WHILE_HEAD_LABEL);
-    masm.load_unsigned_word(rcx, Address(rbx, rsi, Address::times_2, 0));
-    masm.load_unsigned_word(rdi, Address(rax, rsi, Address::times_2, 0));
+    masm.load_unsigned_short(rcx, Address(rbx, rsi, Address::times_2, 0));
+    masm.load_unsigned_short(rdi, Address(rax, rsi, Address::times_2, 0));
     masm.subl(rcx, rdi);
-    masm.jcc(Assembler::notZero, POP_LABEL);
+    masm.jccb(Assembler::notZero, POP_LABEL);
     masm.increment(rsi);
     masm.jcc(Assembler::notZero, WHILE_HEAD_LABEL);
 
     // Strings are equal up to min length.  Return the length difference.
     masm.bind(LENGTH_DIFF_LABEL);
     masm.pop(rcx);
-    masm.jmp(DONE_LABEL);
+    masm.jmpb(DONE_LABEL);
 
     // Discard the stored length difference
     masm.bind(POP_LABEL);
     masm.addptr(rsp, 8);
-       
+
     // That's it
     masm.bind(DONE_LABEL);
   %}
 
-  enc_class enc_Array_Equals(rdi_RegP ary1, rsi_RegP ary2, rax_RegI tmp1, rbx_RegI tmp2, rcx_RegI result) %{
-    Label TRUE_LABEL, FALSE_LABEL, DONE_LABEL, COMPARE_LOOP_HDR, COMPARE_LOOP;
+ enc_class enc_String_IndexOf(rsi_RegP str1, rdi_RegP str2, regD tmp1, rax_RegI tmp2,
+                        rcx_RegI tmp3, rdx_RegI tmp4, rbx_RegI result) %{
+    // SSE4.2 version
+    Label LOAD_SUBSTR, PREP_FOR_SCAN, SCAN_TO_SUBSTR,
+          SCAN_SUBSTR, RET_NEG_ONE, RET_NOT_FOUND, CLEANUP, DONE;
     MacroAssembler masm(&cbuf);
 
-    Register ary1Reg   = as_Register($ary1$$reg);
-    Register ary2Reg   = as_Register($ary2$$reg);
-    Register tmp1Reg   = as_Register($tmp1$$reg);
-    Register tmp2Reg   = as_Register($tmp2$$reg);
-    Register resultReg = as_Register($result$$reg);
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+
+    // Get the first character position in both strings
+    //         [8] char array, [12] offset, [16] count
+    int value_offset  = java_lang_String::value_offset_in_bytes();
+    int offset_offset = java_lang_String::offset_offset_in_bytes();
+    int count_offset  = java_lang_String::count_offset_in_bytes();
+    int base_offset   = arrayOopDesc::base_offset_in_bytes(T_CHAR);
+
+    // Get counts for string and substr
+    masm.movl(rdx, Address(rsi, count_offset));
+    masm.movl(rax, Address(rdi, count_offset));
+    // Check for substr count > string count
+    masm.cmpl(rax, rdx);
+    masm.jcc(Assembler::greater, RET_NEG_ONE);
+
+    // Start the indexOf operation
+    // Get start addr of string
+    masm.load_heap_oop(rbx, Address(rsi, value_offset));
+    masm.movl(rcx, Address(rsi, offset_offset));
+    masm.lea(rsi, Address(rbx, rcx, Address::times_2, base_offset));
+    masm.push(rsi);
+
+    // Get start addr of substr
+    masm.load_heap_oop(rbx, Address(rdi, value_offset));
+    masm.movl(rcx, Address(rdi, offset_offset));
+    masm.lea(rdi, Address(rbx, rcx, Address::times_2, base_offset));
+    masm.push(rdi);
+    masm.push(rax);
+    masm.jmpb(PREP_FOR_SCAN);
+
+    // Substr count saved at sp
+    // Substr saved at sp+8
+    // String saved at sp+16
+
+    // Prep to load substr for scan
+    masm.bind(LOAD_SUBSTR);
+    masm.movptr(rdi, Address(rsp, 8));
+    masm.movl(rax, Address(rsp, 0));
+
+    // Load substr
+    masm.bind(PREP_FOR_SCAN);
+    masm.movdqu(tmp1Reg, Address(rdi, 0));
+    masm.addq(rdx, 8);    // prime the loop
+    masm.subptr(rsi, 16);
+
+    // Scan string for substr in 16-byte vectors
+    masm.bind(SCAN_TO_SUBSTR);
+    masm.subq(rdx, 8);
+    masm.addptr(rsi, 16);
+    masm.pcmpestri(tmp1Reg, Address(rsi, 0), 0x0d);
+    masm.jcc(Assembler::above, SCAN_TO_SUBSTR);
+    masm.jccb(Assembler::aboveEqual, RET_NOT_FOUND);
+
+    // Fallthru: found a potential substr
+
+    //Make sure string is still long enough
+    masm.subl(rdx, rcx);
+    masm.cmpl(rdx, rax);
+    masm.jccb(Assembler::negative, RET_NOT_FOUND);
+    // Compute start addr of substr
+    masm.lea(rsi, Address(rsi, rcx, Address::times_2));
+    masm.movptr(rbx, rsi);
+
+    // Compare potential substr
+    masm.addq(rdx, 8);        // prime the loop
+    masm.addq(rax, 8);
+    masm.subptr(rsi, 16);
+    masm.subptr(rdi, 16);
+
+    // Scan 16-byte vectors of string and substr
+    masm.bind(SCAN_SUBSTR);
+    masm.subq(rax, 8);
+    masm.subq(rdx, 8);
+    masm.addptr(rsi, 16);
+    masm.addptr(rdi, 16);
+    masm.movdqu(tmp1Reg, Address(rdi, 0));
+    masm.pcmpestri(tmp1Reg, Address(rsi, 0), 0x0d);
+    masm.jcc(Assembler::noOverflow, LOAD_SUBSTR);   // OF == 0
+    masm.jcc(Assembler::positive, SCAN_SUBSTR);     // SF == 0
+
+    // Compute substr offset
+    masm.movptr(rsi, Address(rsp, 16));
+    masm.subptr(rbx, rsi);
+    masm.shrl(rbx, 1);
+    masm.jmpb(CLEANUP);
+
+    masm.bind(RET_NEG_ONE);
+    masm.movl(rbx, -1);
+    masm.jmpb(DONE);
+
+    masm.bind(RET_NOT_FOUND);
+    masm.movl(rbx, -1);
+
+    masm.bind(CLEANUP);
+    masm.addptr(rsp, 24);
+
+    masm.bind(DONE);
+  %}
+
+  enc_class enc_String_Equals(rdi_RegP str1, rsi_RegP str2, regD tmp1, regD tmp2,
+                              rbx_RegI tmp3, rcx_RegI tmp2, rax_RegI result) %{
+    Label RET_TRUE, RET_FALSE, DONE, COMPARE_VECTORS, COMPARE_CHAR;
+    MacroAssembler masm(&cbuf);
+
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+
+    int value_offset  = java_lang_String::value_offset_in_bytes();
+    int offset_offset = java_lang_String::offset_offset_in_bytes();
+    int count_offset  = java_lang_String::count_offset_in_bytes();
+    int base_offset   = arrayOopDesc::base_offset_in_bytes(T_CHAR);
+
+    // does source == target string?
+    masm.cmpptr(rdi, rsi);
+    masm.jcc(Assembler::equal, RET_TRUE);
+
+    // get and compare counts
+    masm.movl(rcx, Address(rdi, count_offset));
+    masm.movl(rax, Address(rsi, count_offset));
+    masm.cmpl(rcx, rax);
+    masm.jcc(Assembler::notEqual, RET_FALSE);
+    masm.testl(rax, rax);
+    masm.jcc(Assembler::zero, RET_TRUE);
+
+    // get source string offset and value
+    masm.load_heap_oop(rbx, Address(rsi, value_offset));
+    masm.movl(rax, Address(rsi, offset_offset));
+    masm.lea(rsi, Address(rbx, rax, Address::times_2, base_offset));
+
+    // get compare string offset and value
+    masm.load_heap_oop(rbx, Address(rdi, value_offset));
+    masm.movl(rax, Address(rdi, offset_offset));
+    masm.lea(rdi, Address(rbx, rax, Address::times_2, base_offset));
+
+    // Set byte count
+    masm.shll(rcx, 1);
+    masm.movl(rax, rcx);
+
+    if (UseSSE42Intrinsics) {
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+      // Compare 16-byte vectors
+      masm.andl(rcx, 0xfffffff0);  // vector count (in bytes)
+      masm.andl(rax, 0x0000000e);  // tail count (in bytes)
+      masm.testl(rcx, rcx);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+      masm.lea(rdi, Address(rdi, rcx, Address::times_1));
+      masm.lea(rsi, Address(rsi, rcx, Address::times_1));
+      masm.negptr(rcx);
+
+      masm.bind(COMPARE_WIDE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(rdi, rcx, Address::times_1));
+      masm.movdqu(tmp2Reg, Address(rsi, rcx, Address::times_1));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+      masm.jccb(Assembler::notZero, RET_FALSE);
+      masm.addptr(rcx, 16);
+      masm.jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+      masm.bind(COMPARE_TAIL);
+      masm.movl(rcx, rax);
+      // Fallthru to tail compare
+    }
+
+    // Compare 4-byte vectors
+    masm.andl(rcx, 0xfffffffc);  // vector count (in bytes)
+    masm.andl(rax, 0x00000002);  // tail char (in bytes)
+    masm.testl(rcx, rcx);
+    masm.jccb(Assembler::zero, COMPARE_CHAR);
+    masm.lea(rdi, Address(rdi, rcx, Address::times_1));
+    masm.lea(rsi, Address(rsi, rcx, Address::times_1));
+    masm.negptr(rcx);
+
+    masm.bind(COMPARE_VECTORS);
+    masm.movl(rbx, Address(rdi, rcx, Address::times_1));
+    masm.cmpl(rbx, Address(rsi, rcx, Address::times_1));
+    masm.jccb(Assembler::notEqual, RET_FALSE);
+    masm.addptr(rcx, 4);
+    masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+
+    // Compare trailing char (final 2 bytes), if any
+    masm.bind(COMPARE_CHAR);
+    masm.testl(rax, rax);
+    masm.jccb(Assembler::zero, RET_TRUE);
+    masm.load_unsigned_short(rbx, Address(rdi, 0));
+    masm.load_unsigned_short(rcx, Address(rsi, 0));
+    masm.cmpl(rbx, rcx);
+    masm.jccb(Assembler::notEqual, RET_FALSE);
+
+    masm.bind(RET_TRUE);
+    masm.movl(rax, 1);   // return true
+    masm.jmpb(DONE);
+
+    masm.bind(RET_FALSE);
+    masm.xorl(rax, rax); // return false
+
+    masm.bind(DONE);
+  %}
+
+  enc_class enc_Array_Equals(rdi_RegP ary1, rsi_RegP ary2, regD tmp1, regD tmp2,
+                             rax_RegI tmp3, rbx_RegI tmp4, rcx_RegI result) %{
+    Label TRUE_LABEL, FALSE_LABEL, DONE, COMPARE_VECTORS, COMPARE_CHAR;
+    MacroAssembler masm(&cbuf);
+
+    XMMRegister tmp1Reg   = as_XMMRegister($tmp1$$reg);
+    XMMRegister tmp2Reg   = as_XMMRegister($tmp2$$reg);
+    Register ary1Reg      = as_Register($ary1$$reg);
+    Register ary2Reg      = as_Register($ary2$$reg);
+    Register tmp3Reg      = as_Register($tmp3$$reg);
+    Register tmp4Reg      = as_Register($tmp4$$reg);
+    Register resultReg    = as_Register($result$$reg);
 
     int length_offset  = arrayOopDesc::length_offset_in_bytes();
     int base_offset    = arrayOopDesc::base_offset_in_bytes(T_CHAR);
 
     // Check the input args
-    masm.cmpq(ary1Reg, ary2Reg);                        
+    masm.cmpq(ary1Reg, ary2Reg);
     masm.jcc(Assembler::equal, TRUE_LABEL);
-    masm.testq(ary1Reg, ary1Reg);                       
+    masm.testq(ary1Reg, ary1Reg);
     masm.jcc(Assembler::zero, FALSE_LABEL);
-    masm.testq(ary2Reg, ary2Reg);                       
+    masm.testq(ary2Reg, ary2Reg);
     masm.jcc(Assembler::zero, FALSE_LABEL);
 
     // Check the lengths
-    masm.movl(tmp2Reg, Address(ary1Reg, length_offset));
+    masm.movl(tmp4Reg, Address(ary1Reg, length_offset));
     masm.movl(resultReg, Address(ary2Reg, length_offset));
-    masm.cmpl(tmp2Reg, resultReg);
+    masm.cmpl(tmp4Reg, resultReg);
     masm.jcc(Assembler::notEqual, FALSE_LABEL);
     masm.testl(resultReg, resultReg);
     masm.jcc(Assembler::zero, TRUE_LABEL);
 
-    // Get the number of 4 byte vectors to compare
-    masm.shrl(resultReg, 1);
-
-    // Check for odd-length arrays
-    masm.andl(tmp2Reg, 1);
-    masm.testl(tmp2Reg, tmp2Reg);
-    masm.jcc(Assembler::zero, COMPARE_LOOP_HDR);
-
-    // Compare 2-byte "tail" at end of arrays
-    masm.load_unsigned_word(tmp1Reg, Address(ary1Reg, resultReg, Address::times_4, base_offset));
-    masm.load_unsigned_word(tmp2Reg, Address(ary2Reg, resultReg, Address::times_4, base_offset));
-    masm.cmpl(tmp1Reg, tmp2Reg);
-    masm.jcc(Assembler::notEqual, FALSE_LABEL);
+    //load array address
+    masm.lea(ary1Reg, Address(ary1Reg, base_offset));
+    masm.lea(ary2Reg, Address(ary2Reg, base_offset));
+
+    //set byte count
+    masm.shll(tmp4Reg, 1);
+    masm.movl(resultReg,tmp4Reg);
+
+    if (UseSSE42Intrinsics){
+      // With SSE4.2, use double quad vector compare
+      Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+      // Compare 16-byte vectors
+      masm.andl(tmp4Reg, 0xfffffff0);    // vector count (in bytes)
+      masm.andl(resultReg, 0x0000000e);  // tail count (in bytes)
+      masm.testl(tmp4Reg, tmp4Reg);
+      masm.jccb(Assembler::zero, COMPARE_TAIL);
+      masm.lea(ary1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+      masm.lea(ary2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+      masm.negptr(tmp4Reg);
+
+      masm.bind(COMPARE_WIDE_VECTORS);
+      masm.movdqu(tmp1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+      masm.movdqu(tmp2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+      masm.pxor(tmp1Reg, tmp2Reg);
+      masm.ptest(tmp1Reg, tmp1Reg);
+
+      masm.jccb(Assembler::notZero, FALSE_LABEL);
+      masm.addptr(tmp4Reg, 16);
+      masm.jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+      masm.bind(COMPARE_TAIL);
+      masm.movl(tmp4Reg, resultReg);
+      // Fallthru to tail compare
+    }
+
+   // Compare 4-byte vectors
+    masm.andl(tmp4Reg, 0xfffffffc);    // vector count (in bytes)
+    masm.andl(resultReg, 0x00000002);  // tail char (in bytes)
+    masm.testl(tmp4Reg, tmp4Reg); //if tmp2 == 0, only compare char
+    masm.jccb(Assembler::zero, COMPARE_CHAR);
+    masm.lea(ary1Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+    masm.lea(ary2Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+    masm.negptr(tmp4Reg);
+
+    masm.bind(COMPARE_VECTORS);
+    masm.movl(tmp3Reg, Address(ary1Reg, tmp4Reg, Address::times_1));
+    masm.cmpl(tmp3Reg, Address(ary2Reg, tmp4Reg, Address::times_1));
+    masm.jccb(Assembler::notEqual, FALSE_LABEL);
+    masm.addptr(tmp4Reg, 4);
+    masm.jcc(Assembler::notZero, COMPARE_VECTORS);
+
+    // Compare trailing char (final 2 bytes), if any
+    masm.bind(COMPARE_CHAR);
     masm.testl(resultReg, resultReg);
-    masm.jcc(Assembler::zero, TRUE_LABEL);
-
-    // Setup compare loop
-    masm.bind(COMPARE_LOOP_HDR);
-    // Shift tmp1Reg and tmp2Reg to the last 4-byte boundary of the arrays
-    masm.leaq(tmp1Reg, Address(ary1Reg, resultReg, Address::times_4, base_offset));
-    masm.leaq(tmp2Reg, Address(ary2Reg, resultReg, Address::times_4, base_offset));
-    masm.negq(resultReg);
-
-    // 4-byte-wide compare loop
-    masm.bind(COMPARE_LOOP);
-    masm.movl(ary1Reg, Address(tmp1Reg, resultReg, Address::times_4, 0));
-    masm.movl(ary2Reg, Address(tmp2Reg, resultReg, Address::times_4, 0));
-    masm.cmpl(ary1Reg, ary2Reg);
-    masm.jcc(Assembler::notEqual, FALSE_LABEL);
-    masm.incrementq(resultReg);
-    masm.jcc(Assembler::notZero, COMPARE_LOOP);
+    masm.jccb(Assembler::zero, TRUE_LABEL);
+    masm.load_unsigned_short(tmp3Reg, Address(ary1Reg, 0));
+    masm.load_unsigned_short(tmp4Reg, Address(ary2Reg, 0));
+    masm.cmpl(tmp3Reg, tmp4Reg);
+    masm.jccb(Assembler::notEqual, FALSE_LABEL);
 
     masm.bind(TRUE_LABEL);
     masm.movl(resultReg, 1);   // return true
-    masm.jmp(DONE_LABEL);
+    masm.jmpb(DONE);
 
     masm.bind(FALSE_LABEL);
     masm.xorl(resultReg, resultReg); // return false
 
     // That's it
-    masm.bind(DONE_LABEL);
+    masm.bind(DONE);
   %}
 
   enc_class enc_rethrow()
@@ -4196,33 +4452,6 @@
     // done:
   %}
 
-  enc_class enc_membar_acquire
-  %{
-    // [jk] not needed currently, if you enable this and it really
-    // emits code don't forget to the remove the "size(0)" line in
-    // membar_acquire()
-    // MacroAssembler masm(&cbuf);
-    // masm.membar(Assembler::Membar_mask_bits(Assembler::LoadStore |
-    //                                         Assembler::LoadLoad));
-  %}
-
-  enc_class enc_membar_release
-  %{
-    // [jk] not needed currently, if you enable this and it really
-    // emits code don't forget to the remove the "size(0)" line in
-    // membar_release()
-    // MacroAssembler masm(&cbuf);
-    // masm.membar(Assembler::Membar_mask_bits(Assembler::LoadStore |
-    //                                         Assembler::StoreStore));
-  %}
-
-  enc_class enc_membar_volatile
-  %{
-    MacroAssembler masm(&cbuf);
-    masm.membar(Assembler::Membar_mask_bits(Assembler::StoreLoad |
-                                            Assembler::StoreStore));
-  %}
-
   // Safepoint Poll.  This polls the safepoint page, and causes an
   // exception if it is not readable. Unfortunately, it kills
   // RFLAGS in the process.
@@ -4908,15 +5137,6 @@
   interface(REG_INTER);
 %}
 
-
-operand r12RegL() %{
-  constraint(ALLOC_IN_RC(long_r12_reg));
-  match(RegL);
-
-  format %{ %}
-  interface(REG_INTER);
-%}
-
 operand rRegN() %{
   constraint(ALLOC_IN_RC(int_reg));
   match(RegN);
@@ -5157,7 +5377,7 @@
 %}
 
 // Double register operands
-operand regD()
+operand regD() 
 %{
   constraint(ALLOC_IN_RC(double_reg));
   match(RegD);
@@ -5291,21 +5511,6 @@
   %}
 %}
 
-// Indirect Narrow Oop Plus Offset Operand
-operand indNarrowOopOffset(rRegN src, immL32 off) %{
-  constraint(ALLOC_IN_RC(ptr_reg));
-  match(AddP (DecodeN src) off);
-
-  op_cost(10);
-  format %{"[R12 + $src << 3 + $off] (compressed oop addressing)" %}
-  interface(MEMORY_INTER) %{
-    base(0xc); // R12
-    index($src);
-    scale(0x3);
-    disp($off);
-  %}
-%}
-
 // Indirect Memory Times Scale Plus Positive Index Register Plus Offset Operand
 operand indPosIndexScaleOffset(any_RegP reg, immL32 off, rRegI idx, immI2 scale)
 %{
@@ -5323,6 +5528,158 @@
   %}
 %}
 
+// Indirect Narrow Oop Plus Offset Operand
+// Note: x86 architecture doesn't support "scale * index + offset" without a base
+// we can't free r12 even with Universe::narrow_oop_base() == NULL.
+operand indCompressedOopOffset(rRegN reg, immL32 off) %{
+  predicate(UseCompressedOops && (Universe::narrow_oop_shift() != 0));
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (DecodeN reg) off);
+
+  op_cost(10);
+  format %{"[R12 + $reg << 3 + $off] (compressed oop addressing)" %}
+  interface(MEMORY_INTER) %{
+    base(0xc); // R12
+    index($reg);
+    scale(0x3);
+    disp($off);
+  %}
+%}
+
+// Indirect Memory Operand
+operand indirectNarrow(rRegN reg)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(DecodeN reg);
+
+  format %{ "[$reg]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index(0x4);
+    scale(0x0);
+    disp(0x0);
+  %}
+%}
+
+// Indirect Memory Plus Short Offset Operand
+operand indOffset8Narrow(rRegN reg, immL8 off)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (DecodeN reg) off);
+
+  format %{ "[$reg + $off (8-bit)]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index(0x4);
+    scale(0x0);
+    disp($off);
+  %}
+%}
+
+// Indirect Memory Plus Long Offset Operand
+operand indOffset32Narrow(rRegN reg, immL32 off)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (DecodeN reg) off);
+
+  format %{ "[$reg + $off (32-bit)]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index(0x4);
+    scale(0x0);
+    disp($off);
+  %}
+%}
+
+// Indirect Memory Plus Index Register Plus Offset Operand
+operand indIndexOffsetNarrow(rRegN reg, rRegL lreg, immL32 off)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (AddP (DecodeN reg) lreg) off);
+
+  op_cost(10);
+  format %{"[$reg + $off + $lreg]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index($lreg);
+    scale(0x0);
+    disp($off);
+  %}
+%}
+
+// Indirect Memory Plus Index Register Plus Offset Operand
+operand indIndexNarrow(rRegN reg, rRegL lreg)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (DecodeN reg) lreg);
+
+  op_cost(10);
+  format %{"[$reg + $lreg]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index($lreg);
+    scale(0x0);
+    disp(0x0);
+  %}
+%}
+
+// Indirect Memory Times Scale Plus Index Register
+operand indIndexScaleNarrow(rRegN reg, rRegL lreg, immI2 scale)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (DecodeN reg) (LShiftL lreg scale));
+
+  op_cost(10);
+  format %{"[$reg + $lreg << $scale]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index($lreg);
+    scale($scale);
+    disp(0x0);
+  %}
+%}
+
+// Indirect Memory Times Scale Plus Index Register Plus Offset Operand
+operand indIndexScaleOffsetNarrow(rRegN reg, immL32 off, rRegL lreg, immI2 scale)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  constraint(ALLOC_IN_RC(ptr_reg));
+  match(AddP (AddP (DecodeN reg) (LShiftL lreg scale)) off);
+
+  op_cost(10);
+  format %{"[$reg + $off + $lreg << $scale]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index($lreg);
+    scale($scale);
+    disp($off);
+  %}
+%}
+
+// Indirect Memory Times Scale Plus Positive Index Register Plus Offset Operand
+operand indPosIndexScaleOffsetNarrow(rRegN reg, immL32 off, rRegI idx, immI2 scale)
+%{
+  constraint(ALLOC_IN_RC(ptr_reg));
+  predicate(Universe::narrow_oop_shift() == 0 && n->in(2)->in(3)->in(1)->as_Type()->type()->is_long()->_lo >= 0);
+  match(AddP (AddP (DecodeN reg) (LShiftL (ConvI2L idx) scale)) off);
+
+  op_cost(10);
+  format %{"[$reg + $off + $idx << $scale]" %}
+  interface(MEMORY_INTER) %{
+    base($reg);
+    index($idx);
+    scale($scale);
+    disp($off);
+  %}
+%}
+
+
 //----------Special Memory Operands--------------------------------------------
 // Stack Slot Operand - This operand is used for loading and storing temporary
 //                      values on the stack where a match requires a value to
@@ -5483,14 +5840,17 @@
 
 //----------OPERAND CLASSES----------------------------------------------------
 // Operand Classes are groups of operands that are used as to simplify
-// instruction definitions by not requiring the AD writer to specify seperate
+// instruction definitions by not requiring the AD writer to specify separate
 // instructions for every form of operand when the instruction accepts
 // multiple operand types with the same basic encoding and format.  The classic
 // case of this is memory operands.
 
 opclass memory(indirect, indOffset8, indOffset32, indIndexOffset, indIndex,
                indIndexScale, indIndexScaleOffset, indPosIndexScaleOffset,
-               indNarrowOopOffset);
+               indCompressedOopOffset,
+               indirectNarrow, indOffset8Narrow, indOffset32Narrow,
+               indIndexOffsetNarrow, indIndexNarrow, indIndexScaleNarrow,
+               indIndexScaleOffsetNarrow, indPosIndexScaleOffsetNarrow);
 
 //----------PIPELINE-----------------------------------------------------------
 // Rules which define the behavior of the target architectures pipeline.
@@ -6031,104 +6391,311 @@
 
   ins_cost(125);
   format %{ "movsbl  $dst, $mem\t# byte" %}
-  opcode(0x0F, 0xBE);
-  ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
+
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+
   ins_pipe(ialu_reg_mem);
 %}
 
-// Load Byte (8 bit signed) into long
-// instruct loadB2L(rRegL dst, memory mem)
-// %{
-//   match(Set dst (ConvI2L (LoadB mem)));
-
-//   ins_cost(125);
-//   format %{ "movsbq  $dst, $mem\t# byte -> long" %}
-//   opcode(0x0F, 0xBE);
-//   ins_encode(REX_reg_mem_wide(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
-//   ins_pipe(ialu_reg_mem);
-// %}
-
-// Load Byte (8 bit UNsigned)
-instruct loadUB(rRegI dst, memory mem, immI_255 bytemask)
-%{
-  match(Set dst (AndI (LoadB mem) bytemask));
+// Load Byte (8 bit signed) into Long Register
+instruct loadB2L(rRegL dst, memory mem)
+%{
+  match(Set dst (ConvI2L (LoadB mem)));
+
+  ins_cost(125);
+  format %{ "movsbq  $dst, $mem\t# byte -> long" %}
+
+  ins_encode %{
+    __ movsbq($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Byte (8 bit UNsigned)
+instruct loadUB(rRegI dst, memory mem)
+%{
+  match(Set dst (LoadUB mem));
 
   ins_cost(125);
   format %{ "movzbl  $dst, $mem\t# ubyte" %}
-  opcode(0x0F, 0xB6);
-  ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
+
+  ins_encode %{
+    __ movzbl($dst$$Register, $mem$$Address);
+  %}
+
   ins_pipe(ialu_reg_mem);
 %}
 
-// Load Byte (8 bit UNsigned) into long
-// instruct loadUB2L(rRegL dst, memory mem, immI_255 bytemask)
-// %{
-//   match(Set dst (ConvI2L (AndI (LoadB mem) bytemask)));
-
-//   ins_cost(125);
-//   format %{ "movzbl  $dst, $mem\t# ubyte -> long" %}
-//   opcode(0x0F, 0xB6);
-//   ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
-//   ins_pipe(ialu_reg_mem);
-// %}
+// Load Unsigned Byte (8 bit UNsigned) into Long Register
+instruct loadUB2L(rRegL dst, memory mem)
+%{
+  match(Set dst (ConvI2L (LoadUB mem)));
+
+  ins_cost(125);
+  format %{ "movzbq  $dst, $mem\t# ubyte -> long" %}
+
+  ins_encode %{
+    __ movzbq($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Byte (8 bit UNsigned) with a 8-bit mask into Long Register
+instruct loadUB2L_immI8(rRegL dst, memory mem, immI8 mask, rFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadUB mem) mask)));
+  effect(KILL cr);
+
+  format %{ "movzbq  $dst, $mem\t# ubyte & 8-bit mask -> long\n\t"
+            "andl    $dst, $mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzbq(Rdst, $mem$$Address);
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
 
 // Load Short (16 bit signed)
 instruct loadS(rRegI dst, memory mem)
 %{
   match(Set dst (LoadS mem));
 
-  ins_cost(125); // XXX
+  ins_cost(125);
   format %{ "movswl $dst, $mem\t# short" %}
-  opcode(0x0F, 0xBF);
-  ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
+
+  ins_encode %{
+    __ movswl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Short (16 bit signed) to Byte (8 bit signed)
+instruct loadS2B(rRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadS mem) twentyfour) twentyfour));
+
+  ins_cost(125);
+  format %{ "movsbl $dst, $mem\t# short -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
   ins_pipe(ialu_reg_mem);
 %}
 
-// Load Short (16 bit signed) into long
-// instruct loadS2L(rRegL dst, memory mem)
-// %{
-//   match(Set dst (ConvI2L (LoadS mem)));
-
-//   ins_cost(125); // XXX
-//   format %{ "movswq $dst, $mem\t# short -> long" %}
-//   opcode(0x0F, 0xBF);
-//   ins_encode(REX_reg_mem_wide(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
-//   ins_pipe(ialu_reg_mem);
-// %}
-
-// Load Char (16 bit UNsigned)
-instruct loadC(rRegI dst, memory mem)
-%{
-  match(Set dst (LoadC mem));
+// Load Short (16 bit signed) into Long Register
+instruct loadS2L(rRegL dst, memory mem)
+%{
+  match(Set dst (ConvI2L (LoadS mem)));
+
+  ins_cost(125);
+  format %{ "movswq $dst, $mem\t# short -> long" %}
+
+  ins_encode %{
+    __ movswq($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned)
+instruct loadUS(rRegI dst, memory mem)
+%{
+  match(Set dst (LoadUS mem));
 
   ins_cost(125);
-  format %{ "movzwl  $dst, $mem\t# char" %}
-  opcode(0x0F, 0xB7);
-  ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
+  format %{ "movzwl  $dst, $mem\t# ushort/char" %}
+
+  ins_encode %{
+    __ movzwl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) to Byte (8 bit signed)
+instruct loadUS2B(rRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadUS mem) twentyfour) twentyfour));
+
+  ins_cost(125);
+  format %{ "movsbl $dst, $mem\t# ushort -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
   ins_pipe(ialu_reg_mem);
 %}
 
-// Load Char (16 bit UNsigned) into long
-// instruct loadC2L(rRegL dst, memory mem)
-// %{
-//   match(Set dst (ConvI2L (LoadC mem)));
-
-//   ins_cost(125);
-//   format %{ "movzwl  $dst, $mem\t# char -> long" %}
-//   opcode(0x0F, 0xB7);
-//   ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
-//   ins_pipe(ialu_reg_mem);
-// %}
+// Load Unsigned Short/Char (16 bit UNsigned) into Long Register
+instruct loadUS2L(rRegL dst, memory mem)
+%{
+  match(Set dst (ConvI2L (LoadUS mem)));
+
+  ins_cost(125);
+  format %{ "movzwq  $dst, $mem\t# ushort/char -> long" %}
+
+  ins_encode %{
+    __ movzwq($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) with mask 0xFF into Long Register
+instruct loadUS2L_immI_255(rRegL dst, memory mem, immI_255 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+
+  format %{ "movzbq  $dst, $mem\t# ushort/char & 0xFF -> long" %}
+  ins_encode %{
+    __ movzbq($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Short/Char (16 bit UNsigned) with mask into Long Register
+instruct loadUS2L_immI16(rRegL dst, memory mem, immI16 mask, rFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadUS mem) mask)));
+  effect(KILL cr);
+
+  format %{ "movzwq  $dst, $mem\t# ushort/char & 16-bit mask -> long\n\t"
+            "andl    $dst, $mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movzwq(Rdst, $mem$$Address);
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
 
 // Load Integer
 instruct loadI(rRegI dst, memory mem)
 %{
   match(Set dst (LoadI mem));
 
-  ins_cost(125); // XXX
+  ins_cost(125);
   format %{ "movl    $dst, $mem\t# int" %}
-  opcode(0x8B);
-  ins_encode(REX_reg_mem(dst, mem), OpcP, reg_mem(dst, mem));
+
+  ins_encode %{
+    __ movl($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Byte (8 bit signed)
+instruct loadI2B(rRegI dst, memory mem, immI_24 twentyfour) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) twentyfour) twentyfour));
+
+  ins_cost(125);
+  format %{ "movsbl  $dst, $mem\t# int -> byte" %}
+  ins_encode %{
+    __ movsbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Unsigned Byte (8 bit UNsigned)
+instruct loadI2UB(rRegI dst, memory mem, immI_255 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+
+  ins_cost(125);
+  format %{ "movzbl  $dst, $mem\t# int -> ubyte" %}
+  ins_encode %{
+    __ movzbl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Short (16 bit signed)
+instruct loadI2S(rRegI dst, memory mem, immI_16 sixteen) %{
+  match(Set dst (RShiftI (LShiftI (LoadI mem) sixteen) sixteen));
+
+  ins_cost(125);
+  format %{ "movswl  $dst, $mem\t# int -> short" %}
+  ins_encode %{
+    __ movswl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer (32 bit signed) to Unsigned Short/Char (16 bit UNsigned)
+instruct loadI2US(rRegI dst, memory mem, immI_65535 mask) %{
+  match(Set dst (AndI (LoadI mem) mask));
+
+  ins_cost(125);
+  format %{ "movzwl  $dst, $mem\t# int -> ushort/char" %}
+  ins_encode %{
+    __ movzwl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer into Long Register
+instruct loadI2L(rRegL dst, memory mem)
+%{
+  match(Set dst (ConvI2L (LoadI mem)));
+
+  ins_cost(125);
+  format %{ "movslq  $dst, $mem\t# int -> long" %}
+
+  ins_encode %{
+    __ movslq($dst$$Register, $mem$$Address);
+  %}
+
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with mask 0xFF into Long Register
+instruct loadI2L_immI_255(rRegL dst, memory mem, immI_255 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+
+  format %{ "movzbq  $dst, $mem\t# int & 0xFF -> long" %}
+  ins_encode %{
+    __ movzbq($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with mask 0xFFFF into Long Register
+instruct loadI2L_immI_65535(rRegL dst, memory mem, immI_65535 mask) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+
+  format %{ "movzwq  $dst, $mem\t# int & 0xFFFF -> long" %}
+  ins_encode %{
+    __ movzwq($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Integer with a 32-bit mask into Long Register
+instruct loadI2L_immI(rRegL dst, memory mem, immI mask, rFlagsReg cr) %{
+  match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
+  effect(KILL cr);
+
+  format %{ "movl    $dst, $mem\t# int & 32-bit mask -> long\n\t"
+            "andl    $dst, $mask" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    __ movl(Rdst, $mem$$Address);
+    __ andl(Rdst, $mask$$constant);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+// Load Unsigned Integer into Long Register
+instruct loadUI2L(rRegL dst, memory mem)
+%{
+  match(Set dst (LoadUI2L mem));
+
+  ins_cost(125);
+  format %{ "movl    $dst, $mem\t# uint -> long" %}
+
+  ins_encode %{
+    __ movl($dst$$Register, $mem$$Address);
+  %}
+
   ins_pipe(ialu_reg_mem);
 %}
 
@@ -6137,10 +6704,13 @@
 %{
   match(Set dst (LoadL mem));
 
-  ins_cost(125); // XXX
+  ins_cost(125);
   format %{ "movq    $dst, $mem\t# long" %}
-  opcode(0x8B);
-  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+
+  ins_encode %{
+    __ movq($dst$$Register, $mem$$Address);
+  %}
+
   ins_pipe(ialu_reg_mem); // XXX
 %}
 
@@ -6176,9 +6746,7 @@
    ins_cost(125); // XXX
    format %{ "movl    $dst, $mem\t# compressed ptr" %}
    ins_encode %{
-     Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-     Register dst = as_Register($dst$$reg);
-     __ movl(dst, addr);
+     __ movl($dst$$Register, $mem$$Address);
    %}
    ins_pipe(ialu_reg_mem); // XXX
 %}
@@ -6204,9 +6772,7 @@
   ins_cost(125); // XXX
   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
   ins_encode %{
-    Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    Register dst = as_Register($dst$$reg);
-    __ movl(dst, addr);
+    __ movl($dst$$Register, $mem$$Address);
   %}
   ins_pipe(ialu_reg_mem); // XXX
 %}
@@ -6360,6 +6926,102 @@
   ins_pipe(ialu_reg_reg_fat);
 %}
 
+instruct leaPPosIdxScaleOff(rRegP dst, indPosIndexScaleOffset mem)
+%{
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr posidxscaleoff" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+// Load Effective Address which uses Narrow (32-bits) oop
+instruct leaPCompressedOopOffset(rRegP dst, indCompressedOopOffset mem)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_shift() != 0));
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr compressedoopoff32" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaP8Narrow(rRegP dst, indOffset8Narrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110); // XXX
+  format %{ "leaq    $dst, $mem\t# ptr off8narrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaP32Narrow(rRegP dst, indOffset32Narrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr off32narrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaPIdxOffNarrow(rRegP dst, indIndexOffsetNarrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr idxoffnarrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaPIdxScaleNarrow(rRegP dst, indIndexScaleNarrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr idxscalenarrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaPIdxScaleOffNarrow(rRegP dst, indIndexScaleOffsetNarrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr idxscaleoffnarrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
+instruct leaPPosIdxScaleOffNarrow(rRegP dst, indPosIndexScaleOffsetNarrow mem)
+%{
+  predicate(Universe::narrow_oop_shift() == 0);
+  match(Set dst mem);
+
+  ins_cost(110);
+  format %{ "leaq    $dst, $mem\t# ptr posidxscaleoffnarrow" %}
+  opcode(0x8D);
+  ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem));
+  ins_pipe(ialu_reg_reg_fat);
+%}
+
 instruct loadConI(rRegI dst, immI src)
 %{
   match(Set dst src);
@@ -6470,8 +7132,7 @@
   effect(KILL cr);
   format %{ "xorq    $dst, $src\t# compressed NULL ptr" %}
   ins_encode %{
-    Register dst = $dst$$Register;
-    __ xorq(dst, dst);
+    __ xorq($dst$$Register, $dst$$Register);
   %}
   ins_pipe(ialu_reg);
 %}
@@ -6483,11 +7144,10 @@
   format %{ "movl    $dst, $src\t# compressed ptr" %}
   ins_encode %{
     address con = (address)$src$$constant;
-    Register dst = $dst$$Register;
     if (con == NULL) {
       ShouldNotReachHere();
     } else {
-      __ set_narrow_oop(dst, (jobject)$src$$constant);
+      __ set_narrow_oop($dst$$Register, (jobject)$src$$constant);
     }
   %}
   ins_pipe(ialu_reg_fat); // XXX
@@ -6736,12 +7396,25 @@
   ins_pipe(ialu_mem_reg);
 %}
 
+instruct storeImmP0(memory mem, immP0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreP mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movq    $mem, R12\t# ptr (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movq($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 // Store NULL Pointer, mark word, or other simple pointer constant.
 instruct storeImmP(memory mem, immP31 src)
 %{
   match(Set mem (StoreP mem src));
 
-  ins_cost(125); // XXX
+  ins_cost(150); // XXX
   format %{ "movq    $mem, $src\t# ptr" %}
   opcode(0xC7); /* C7 /0 */
   ins_encode(REX_mem_wide(mem), OpcP, RM_opc_mem(0x00, mem), Con32(src));
@@ -6756,14 +7429,55 @@
   ins_cost(125); // XXX
   format %{ "movl    $mem, $src\t# compressed ptr" %}
   ins_encode %{
-    Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    Register src = as_Register($src$$reg);
-    __ movl(addr, src);
+    __ movl($mem$$Address, $src$$Register);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
+instruct storeImmN0(memory mem, immN0 zero)
+%{
+  predicate(Universe::narrow_oop_base() == NULL);
+  match(Set mem (StoreN mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movl    $mem, R12\t# compressed ptr (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movl($mem$$Address, r12);
   %}
   ins_pipe(ialu_mem_reg);
 %}
 
+instruct storeImmN(memory mem, immN src)
+%{
+  match(Set mem (StoreN mem src));
+
+  ins_cost(150); // XXX
+  format %{ "movl    $mem, $src\t# compressed ptr" %}
+  ins_encode %{
+    address con = (address)$src$$constant;
+    if (con == NULL) {
+      __ movl($mem$$Address, (int32_t)0);
+    } else {
+      __ set_narrow_oop($mem$$Address, (jobject)$src$$constant);
+    }
+  %}
+  ins_pipe(ialu_mem_imm);
+%}
+
 // Store Integer Immediate
+instruct storeImmI0(memory mem, immI0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreI mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movl    $mem, R12\t# int (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movl($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeImmI(memory mem, immI src)
 %{
   match(Set mem (StoreI mem src));
@@ -6776,6 +7490,19 @@
 %}
 
 // Store Long Immediate
+instruct storeImmL0(memory mem, immL0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreL mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movq    $mem, R12\t# long (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movq($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeImmL(memory mem, immL32 src)
 %{
   match(Set mem (StoreL mem src));
@@ -6788,6 +7515,19 @@
 %}
 
 // Store Short/Char Immediate
+instruct storeImmC0(memory mem, immI0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreC mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movw    $mem, R12\t# short/char (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movw($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeImmI16(memory mem, immI16 src)
 %{
   predicate(UseStoreImmI16);
@@ -6801,6 +7541,19 @@
 %}
 
 // Store Byte Immediate
+instruct storeImmB0(memory mem, immI0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreB mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movb    $mem, R12\t# short/char (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movb($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeImmB(memory mem, immI8 src)
 %{
   match(Set mem (StoreB mem src));
@@ -6840,6 +7593,19 @@
 %}
 
 // Store CMS card-mark Immediate
+instruct storeImmCM0_reg(memory mem, immI0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreCM mem zero));
+
+  ins_cost(125); // XXX
+  format %{ "movb    $mem, R12\t# CMS card-mark byte 0 (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movb($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeImmCM0(memory mem, immI0 src)
 %{
   match(Set mem (StoreCM mem src));
@@ -6873,6 +7639,19 @@
 %}
 
 // Store immediate Float value (it is faster than store from XMM register)
+instruct storeF0(memory mem, immF0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreF mem zero));
+
+  ins_cost(25); // XXX
+  format %{ "movl    $mem, R12\t# float 0. (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movl($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeF_imm(memory mem, immF src)
 %{
   match(Set mem (StoreF mem src));
@@ -6899,6 +7678,7 @@
 // Store immediate double 0.0 (it is faster than store from XMM register)
 instruct storeD0_imm(memory mem, immD0 src)
 %{
+  predicate(!UseCompressedOops || (Universe::narrow_oop_base() != NULL));
   match(Set mem (StoreD mem src));
 
   ins_cost(50);
@@ -6908,6 +7688,19 @@
   ins_pipe(ialu_mem_imm);
 %}
 
+instruct storeD0(memory mem, immD0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set mem (StoreD mem zero));
+
+  ins_cost(25); // XXX
+  format %{ "movq    $mem, R12\t# double 0. (R12_heapbase==0)" %}
+  ins_encode %{
+    __ movq($mem$$Address, r12);
+  %}
+  ins_pipe(ialu_mem_reg);
+%}
+
 instruct storeSSI(stackSlotI dst, rRegI src)
 %{
   match(Set dst src);
@@ -7019,6 +7812,171 @@
   ins_pipe( ialu_mem_reg );
 %}
 
+
+//---------- Zeros Count Instructions ------------------------------------------
+
+instruct countLeadingZerosI(rRegI dst, rRegI src, rFlagsReg cr) %{
+  predicate(UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosI src));
+  effect(KILL cr);
+
+  format %{ "lzcntl  $dst, $src\t# count leading zeros (int)" %}
+  ins_encode %{
+    __ lzcntl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosI_bsr(rRegI dst, rRegI src, rFlagsReg cr) %{
+  predicate(!UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosI src));
+  effect(KILL cr);
+
+  format %{ "bsrl    $dst, $src\t# count leading zeros (int)\n\t"
+            "jnz     skip\n\t"
+            "movl    $dst, -1\n"
+      "skip:\n\t"
+            "negl    $dst\n\t"
+            "addl    $dst, 31" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label skip;
+    __ bsrl(Rdst, Rsrc);
+    __ jccb(Assembler::notZero, skip);
+    __ movl(Rdst, -1);
+    __ bind(skip);
+    __ negl(Rdst);
+    __ addl(Rdst, BitsPerInt - 1);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosL(rRegI dst, rRegL src, rFlagsReg cr) %{
+  predicate(UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosL src));
+  effect(KILL cr);
+
+  format %{ "lzcntq  $dst, $src\t# count leading zeros (long)" %}
+  ins_encode %{
+    __ lzcntq($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countLeadingZerosL_bsr(rRegI dst, rRegL src, rFlagsReg cr) %{
+  predicate(!UseCountLeadingZerosInstruction);
+  match(Set dst (CountLeadingZerosL src));
+  effect(KILL cr);
+
+  format %{ "bsrq    $dst, $src\t# count leading zeros (long)\n\t"
+            "jnz     skip\n\t"
+            "movl    $dst, -1\n"
+      "skip:\n\t"
+            "negl    $dst\n\t"
+            "addl    $dst, 63" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Register Rsrc = $src$$Register;
+    Label skip;
+    __ bsrq(Rdst, Rsrc);
+    __ jccb(Assembler::notZero, skip);
+    __ movl(Rdst, -1);
+    __ bind(skip);
+    __ negl(Rdst);
+    __ addl(Rdst, BitsPerLong - 1);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosI(rRegI dst, rRegI src, rFlagsReg cr) %{
+  match(Set dst (CountTrailingZerosI src));
+  effect(KILL cr);
+
+  format %{ "bsfl    $dst, $src\t# count trailing zeros (int)\n\t"
+            "jnz     done\n\t"
+            "movl    $dst, 32\n"
+      "done:" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Label done;
+    __ bsfl(Rdst, $src$$Register);
+    __ jccb(Assembler::notZero, done);
+    __ movl(Rdst, BitsPerInt);
+    __ bind(done);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct countTrailingZerosL(rRegI dst, rRegL src, rFlagsReg cr) %{
+  match(Set dst (CountTrailingZerosL src));
+  effect(KILL cr);
+
+  format %{ "bsfq    $dst, $src\t# count trailing zeros (long)\n\t"
+            "jnz     done\n\t"
+            "movl    $dst, 64\n"
+      "done:" %}
+  ins_encode %{
+    Register Rdst = $dst$$Register;
+    Label done;
+    __ bsfq(Rdst, $src$$Register);
+    __ jccb(Assembler::notZero, done);
+    __ movl(Rdst, BitsPerLong);
+    __ bind(done);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
+//---------- Population Count Instructions -------------------------------------
+
+instruct popCountI(rRegI dst, rRegI src) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountI src));
+
+  format %{ "popcnt  $dst, $src" %}
+  ins_encode %{
+    __ popcntl($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+instruct popCountI_mem(rRegI dst, memory mem) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountI (LoadI mem)));
+
+  format %{ "popcnt  $dst, $mem" %}
+  ins_encode %{
+    __ popcntl($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Note: Long.bitCount(long) returns an int.
+instruct popCountL(rRegI dst, rRegL src) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountL src));
+
+  format %{ "popcnt  $dst, $src" %}
+  ins_encode %{
+    __ popcntq($dst$$Register, $src$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Note: Long.bitCount(long) returns an int.
+instruct popCountL_mem(rRegI dst, memory mem) %{
+  predicate(UsePopCountInstruction);
+  match(Set dst (PopCountL (LoadL mem)));
+
+  format %{ "popcnt  $dst, $mem" %}
+  ins_encode %{
+    __ popcntq($dst$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+
 //----------MemBar Instructions-----------------------------------------------
 // Memory barrier flavors
 
@@ -7028,7 +7986,7 @@
   ins_cost(0);
 
   size(0);
-  format %{ "MEMBAR-acquire" %}
+  format %{ "MEMBAR-acquire ! (empty encoding)" %}
   ins_encode();
   ins_pipe(empty);
 %}
@@ -7051,7 +8009,7 @@
   ins_cost(0);
 
   size(0);
-  format %{ "MEMBAR-release" %}
+  format %{ "MEMBAR-release ! (empty encoding)" %}
   ins_encode();
   ins_pipe(empty);
 %}
@@ -7068,13 +8026,22 @@
   ins_pipe(empty);
 %}
 
-instruct membar_volatile()
-%{
+instruct membar_volatile(rFlagsReg cr) %{
   match(MemBarVolatile);
+  effect(KILL cr);
   ins_cost(400);
 
-  format %{ "MEMBAR-volatile" %}
-  ins_encode(enc_membar_volatile);
+  format %{ 
+    $$template
+    if (os::is_MP()) {
+      $$emit$$"lock addl [rsp + #0], 0\t! membar_volatile"
+    } else {
+      $$emit$$"MEMBAR-volatile ! (empty encoding)"
+    }
+  %}
+  ins_encode %{
+    __ membar(Assembler::StoreLoad);
+  %}
   ins_pipe(pipe_slow);
 %}
 
@@ -7134,9 +8101,7 @@
   effect(KILL cr);
   format %{ "encode_heap_oop_not_null $dst,$src" %}
   ins_encode %{
-    Register s = $src$$Register;
-    Register d = $dst$$Register;
-    __ encode_heap_oop_not_null(d, s);
+    __ encode_heap_oop_not_null($dst$$Register, $src$$Register);
   %}
   ins_pipe(ialu_reg_long);
 %}
@@ -7166,7 +8131,11 @@
   ins_encode %{
     Register s = $src$$Register;
     Register d = $dst$$Register;
-    __ decode_heap_oop_not_null(d, s);
+    if (s != d) {
+      __ decode_heap_oop_not_null(d, s);
+    } else {
+      __ decode_heap_oop_not_null(d);
+    }
   %}
   ins_pipe(ialu_reg_long);
 %}
@@ -8363,7 +9332,7 @@
 //----------- DivL-By-Constant-Expansions--------------------------------------
 // DivI cases are handled by the compiler
 
-// Magic constant, reciprical of 10
+// Magic constant, reciprocal of 10
 instruct loadConL_0x6666666666666667(rRegL dst)
 %{
   effect(DEF dst);
@@ -9490,14 +10459,14 @@
 %{
   match(Set dst (AndL dst src));
 
-  format %{ "movzbq  $dst, $src\t# long & 0xFF" %}
+  format %{ "movzbq  $dst, $dst\t# long & 0xFF" %}
   opcode(0x0F, 0xB6);
   ins_encode(REX_reg_reg_wide(dst, dst), OpcP, OpcS, reg_reg(dst, dst));
   ins_pipe(ialu_reg);
 %}
 
 // And Register with Immediate 65535
-instruct andL_rReg_imm65535(rRegI dst, immL_65535 src)
+instruct andL_rReg_imm65535(rRegL dst, immL_65535 src)
 %{
   match(Set dst (AndL dst src));
 
@@ -10782,8 +11751,9 @@
 
   ins_cost(125);
   format %{ "movslq  $dst, $src\t# i2l" %}
-  opcode(0x63); // needs REX.W
-  ins_encode(REX_reg_reg_wide(dst, src), OpcP, reg_reg(dst,src));
+  ins_encode %{
+    __ movslq($dst$$Register, $src$$Register);
+  %}
   ins_pipe(ialu_reg_reg);
 %}
 
@@ -10804,16 +11774,6 @@
 //   ins_pipe(ialu_reg_reg);
 // %}
 
-instruct convI2L_reg_mem(rRegL dst, memory src)
-%{
-  match(Set dst (ConvI2L (LoadI src)));
-
-  format %{ "movslq  $dst, $src\t# i2l" %}
-  opcode(0x63); // needs REX.W
-  ins_encode(REX_reg_mem_wide(dst, src), OpcP, reg_mem(dst,src));
-  ins_pipe(ialu_reg_mem);
-%}
-
 // Zero-extend convert int to long
 instruct convI2L_reg_reg_zex(rRegL dst, rRegI src, immL_32bits mask)
 %{
@@ -11136,27 +12096,52 @@
   ins_pipe(pipe_slow);
 %}
 
-instruct string_compare(rdi_RegP str1, rsi_RegP str2, rax_RegI tmp1,
-                        rbx_RegI tmp2, rcx_RegI result, rFlagsReg cr)
+instruct string_compare(rdi_RegP str1, rsi_RegP str2, regD tmp1, regD tmp2,
+                        rax_RegI tmp3, rbx_RegI tmp4, rcx_RegI result, rFlagsReg cr)
 %{
   match(Set result (StrComp str1 str2));
-  effect(USE_KILL str1, USE_KILL str2, KILL tmp1, KILL tmp2, KILL cr);
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL str1, USE_KILL str2, KILL tmp3, KILL tmp4, KILL cr);
   //ins_cost(300);
 
   format %{ "String Compare $str1, $str2 -> $result    // XXX KILL RAX, RBX" %}
-  ins_encode( enc_String_Compare() );
+  ins_encode( enc_String_Compare(str1, str2, tmp1, tmp2, tmp3, tmp4, result) );
+  ins_pipe( pipe_slow );
+%}
+
+instruct string_indexof(rsi_RegP str1, rdi_RegP str2, regD tmp1, rax_RegI tmp2,
+                        rcx_RegI tmp3, rdx_RegI tmp4, rbx_RegI result, rFlagsReg cr)
+%{
+  predicate(UseSSE42Intrinsics);
+  match(Set result (StrIndexOf str1 str2));
+  effect(TEMP tmp1, USE_KILL str1, USE_KILL str2, KILL tmp2, KILL tmp3, KILL tmp4, KILL cr);
+
+  format %{ "String IndexOf $str1,$str2 -> $result   // KILL RAX, RCX, RDX" %}
+  ins_encode( enc_String_IndexOf(str1, str2, tmp1, tmp2, tmp3, tmp4, result) );
+  ins_pipe( pipe_slow );
+%}
+
+// fast string equals
+instruct string_equals(rdi_RegP str1, rsi_RegP str2, regD tmp1, regD tmp2, rbx_RegI tmp3,
+                       rcx_RegI tmp4, rax_RegI result, rFlagsReg cr)
+%{
+  match(Set result (StrEquals str1 str2));
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL str1, USE_KILL str2, KILL tmp3, KILL tmp4, KILL cr);
+
+  format %{ "String Equals $str1,$str2 -> $result    // KILL RBX, RCX" %}
+  ins_encode( enc_String_Equals(str1, str2, tmp1, tmp2, tmp3, tmp4, result) );
   ins_pipe( pipe_slow );
 %}
 
 // fast array equals
-instruct array_equals(rdi_RegP ary1, rsi_RegP ary2, rax_RegI tmp1, 
-                      rbx_RegI tmp2, rcx_RegI result, rFlagsReg cr) %{
+instruct array_equals(rdi_RegP ary1, rsi_RegP ary2, regD tmp1, regD tmp2, rax_RegI tmp3,
+                      rbx_RegI tmp4, rcx_RegI result, rFlagsReg cr)
+%{
   match(Set result (AryEq ary1 ary2));
-  effect(USE_KILL ary1, USE_KILL ary2, KILL tmp1, KILL tmp2, KILL cr);
+  effect(TEMP tmp1, TEMP tmp2, USE_KILL ary1, USE_KILL ary2, KILL tmp3, KILL tmp4, KILL cr);
   //ins_cost(300);
 
-  format %{ "Array Equals $ary1,$ary2 -> $result    // KILL RAX, RBX" %}
-  ins_encode( enc_Array_Equals(ary1, ary2, tmp1, tmp2, result) );
+  format %{ "Array Equals $ary1,$ary2 -> $result   // KILL RAX, RBX" %}
+  ins_encode( enc_Array_Equals(ary1, ary2, tmp1, tmp2, tmp3, tmp4, result) );
   ins_pipe( pipe_slow );
 %}
 
@@ -11341,8 +12326,9 @@
 
 // This will generate a signed flags result. This should be OK since
 // any compare to a zero should be eq/neq.
-instruct testP_reg_mem(rFlagsReg cr, memory op, immP0 zero)
-%{
+instruct testP_mem(rFlagsReg cr, memory op, immP0 zero)
+%{
+  predicate(!UseCompressedOops || (Universe::narrow_oop_base() != NULL));
   match(Set cr (CmpP (LoadP op) zero));
 
   ins_cost(500); // XXX
@@ -11353,13 +12339,24 @@
   ins_pipe(ialu_cr_reg_imm);
 %}
 
+instruct testP_mem_reg0(rFlagsReg cr, memory mem, immP0 zero)
+%{
+  predicate(UseCompressedOops && (Universe::narrow_oop_base() == NULL));
+  match(Set cr (CmpP (LoadP mem) zero));
+
+  format %{ "cmpq    R12, $mem\t# ptr (R12_heapbase==0)" %}
+  ins_encode %{
+    __ cmpq(r12, $mem$$Address);
+  %}
+  ins_pipe(ialu_cr_reg_mem);
+%}
 
 instruct compN_rReg(rFlagsRegU cr, rRegN op1, rRegN op2)
 %{
   match(Set cr (CmpN op1 op2));
 
   format %{ "cmpl    $op1, $op2\t# compressed ptr" %}
-  ins_encode %{ __ cmpl(as_Register($op1$$reg), as_Register($op2$$reg)); %}
+  ins_encode %{ __ cmpl($op1$$Register, $op2$$Register); %}
   ins_pipe(ialu_cr_reg_reg);
 %}
 
@@ -11367,11 +12364,30 @@
 %{
   match(Set cr (CmpN src (LoadN mem)));
 
-  ins_cost(500); // XXX
-  format %{ "cmpl    $src, mem\t# compressed ptr" %}
+  format %{ "cmpl    $src, $mem\t# compressed ptr" %}
+  ins_encode %{
+    __ cmpl($src$$Register, $mem$$Address);
+  %}
+  ins_pipe(ialu_cr_reg_mem);
+%}
+
+instruct compN_rReg_imm(rFlagsRegU cr, rRegN op1, immN op2) %{
+  match(Set cr (CmpN op1 op2));
+
+  format %{ "cmpl    $op1, $op2\t# compressed ptr" %}
   ins_encode %{
-    Address adr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ cmpl(as_Register($src$$reg), adr);
+    __ cmp_narrow_oop($op1$$Register, (jobject)$op2$$constant);
+  %}
+  ins_pipe(ialu_cr_reg_imm);
+%}
+
+instruct compN_mem_imm(rFlagsRegU cr, memory mem, immN src)
+%{
+  match(Set cr (CmpN src (LoadN mem)));
+
+  format %{ "cmpl    $mem, $src\t# compressed ptr" %}
+  ins_encode %{
+    __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
   %}
   ins_pipe(ialu_cr_reg_mem);
 %}
@@ -11384,15 +12400,27 @@
   ins_pipe(ialu_cr_reg_imm);
 %}
 
-instruct testN_reg_mem(rFlagsReg cr, memory mem, immN0 zero)
-%{
+instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
+%{
+  predicate(Universe::narrow_oop_base() != NULL);
   match(Set cr (CmpN (LoadN mem) zero));
 
   ins_cost(500); // XXX
   format %{ "testl   $mem, 0xffffffff\t# compressed ptr" %}
   ins_encode %{
-    Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
-    __ cmpl(addr, (int)0xFFFFFFFF);
+    __ cmpl($mem$$Address, (int)0xFFFFFFFF);
+  %}
+  ins_pipe(ialu_cr_reg_mem);
+%}
+
+instruct testN_mem_reg0(rFlagsReg cr, memory mem, immN0 zero)
+%{
+  predicate(Universe::narrow_oop_base() == NULL);
+  match(Set cr (CmpN (LoadN mem) zero));
+
+  format %{ "cmpl    R12, $mem\t# compressed ptr (R12_heapbase==0)" %}
+  ins_encode %{
+    __ cmpl(r12, $mem$$Address);
   %}
   ins_pipe(ialu_cr_reg_mem);
 %}
@@ -11424,7 +12452,6 @@
 %{
   match(Set cr (CmpL op1 (LoadL op2)));
 
-  ins_cost(500); // XXX
   format %{ "cmpq    $op1, $op2" %}
   opcode(0x3B); /* Opcode 3B /r */
   ins_encode(REX_reg_mem_wide(op1, op2), OpcP, reg_mem(op1, op2));
@@ -11685,15 +12712,12 @@
   effect(KILL rcx, KILL cr);
 
   ins_cost(1100);  // slightly larger than the next version
-  format %{ "cmpq    rax, rsi\n\t"
-            "jeq,s   hit\n\t"
-            "movq    rdi, [$sub + (sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes())]\n\t"
+  format %{ "movq    rdi, [$sub + (sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes())]\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"
             "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 + (sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes())], $super\t# Hit: update cache\n\t"
-    "hit:\n\t"
             "xorq    $result, $result\t\t Hit: rdi zero\n\t"
     "miss:\t" %}
 
@@ -11708,13 +12732,10 @@
                                      rdi_RegP result)
 %{
   match(Set cr (CmpP (PartialSubtypeCheck sub super) zero));
-  predicate(!UseCompressedOops); // decoding oop kills condition codes
   effect(KILL rcx, KILL result);
 
   ins_cost(1000);
-  format %{ "cmpq    rax, rsi\n\t"
-            "jeq,s   miss\t# Actually a hit; we are done.\n\t"
-            "movq    rdi, [$sub + (sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes())]\n\t"
+  format %{ "movq    rdi, [$sub + (sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes())]\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"
             "repne   scasq\t# Scan *rdi++ for a match with rax while cx-- != 0\n\t"
@@ -12082,7 +13103,7 @@
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
 //
-// peepmatch ( root_instr_name [precerding_instruction]* );
+// peepmatch ( root_instr_name [preceding_instruction]* );
 //
 // peepconstraint %{
 // (instruction_number.operand_name relational_op instruction_number.operand_name
--- a/src/os/linux/launcher/java.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/linux/launcher/java.c	Tue Jul 28 13:50:07 2009 -0600
@@ -419,7 +419,7 @@
             goto leave;
         }
         mainClass = LoadClass(env, classname);
-        if(mainClass == NULL) { /* exception occured */
+        if(mainClass == NULL) { /* exception occurred */
             ReportExceptionDescription(env);
             message = "Could not find the main class.  Program will exit.";
             goto leave;
@@ -441,7 +441,7 @@
         goto leave;
       }
       mainClass = LoadClass(env, classname);
-      if(mainClass == NULL) { /* exception occured */
+      if(mainClass == NULL) { /* exception occurred */
         ReportExceptionDescription(env);
         message = "Could not find the main class. Program will exit.";
         goto leave;
--- a/src/os/linux/launcher/java_md.h	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/linux/launcher/java_md.h	Tue Jul 28 13:50:07 2009 -0600
@@ -47,7 +47,7 @@
 #ifdef JAVA_ARGS
 /*
  * ApplicationHome is prepended to each of these entries; the resulting
- * strings are concatenated (seperated by PATH_SEPARATOR) and used as the
+ * strings are concatenated (separated by PATH_SEPARATOR) and used as the
  * value of -cp option to the launcher.
  */
 #ifndef APP_CLASSPATH
--- a/src/os/linux/vm/os_linux.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/linux/vm/os_linux.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -279,7 +279,11 @@
  *        ...
  *        7: The default directories, normally /lib and /usr/lib.
  */
+#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390))
+#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
+#else
 #define DEFAULT_LIBPATH "/lib:/usr/lib"
+#endif
 
 #define EXTENSIONS_DIR  "/lib/ext"
 #define ENDORSED_DIR    "/lib/endorsed"
@@ -1160,7 +1164,10 @@
 
         /*                                     1   1   1   1   1   1   1   1   1   1   2   2   2   2   2   2   2   2   2 */
         /*              3  4  5  6  7  8   9   0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5   6   7   8 */
-        i = sscanf(s, "%c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld %lu %lu %ld %lu %lu %lu %lu",
+        i = sscanf(s, "%c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld "
+                   UINTX_FORMAT UINTX_FORMAT UINTX_FORMAT
+                   " %lu "
+                   UINTX_FORMAT UINTX_FORMAT UINTX_FORMAT,
              &state,          /* 3  %c  */
              &ppid,           /* 4  %d  */
              &pgrp,           /* 5  %d  */
@@ -1180,13 +1187,13 @@
              &nice,           /* 19 %ld  */
              &junk,           /* 20 %ld  */
              &it_real,        /* 21 %ld  */
-             &start,          /* 22 %lu  */
-             &vsize,          /* 23 %lu  */
-             &rss,            /* 24 %ld  */
+             &start,          /* 22 UINTX_FORMAT  */
+             &vsize,          /* 23 UINTX_FORMAT  */
+             &rss,            /* 24 UINTX_FORMAT  */
              &rsslim,         /* 25 %lu  */
-             &scodes,         /* 26 %lu  */
-             &ecode,          /* 27 %lu  */
-             &stack_start);   /* 28 %lu  */
+             &scodes,         /* 26 UINTX_FORMAT  */
+             &ecode,          /* 27 UINTX_FORMAT  */
+             &stack_start);   /* 28 UINTX_FORMAT  */
       }
 
       if (i != 28 - 2) {
@@ -1425,6 +1432,10 @@
   return buf;
 }
 
+struct tm* os::localtime_pd(const time_t* clock, struct tm*  res) {
+  return localtime_r(clock, res);
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // runtime exit support
 
@@ -1507,21 +1518,51 @@
 
 const char* os::get_temp_directory() { return "/tmp/"; }
 
-void os::dll_build_name(
-    char* buffer, size_t buflen, const char* pname, const char* fname) {
-  // copied from libhpi
+static bool file_exists(const char* filename) {
+  struct stat statbuf;
+  if (filename == NULL || strlen(filename) == 0) {
+    return false;
+  }
+  return os::stat(filename, &statbuf) == 0;
+}
+
+void os::dll_build_name(char* buffer, size_t buflen,
+                        const char* pname, const char* fname) {
+  // Copied from libhpi
   const size_t pnamelen = pname ? strlen(pname) : 0;
 
-  /* Quietly truncate on buffer overflow.  Should be an error. */
+  // Quietly truncate on buffer overflow.  Should be an error.
   if (pnamelen + strlen(fname) + 10 > (size_t) buflen) {
       *buffer = '\0';
       return;
   }
 
   if (pnamelen == 0) {
-      sprintf(buffer, "lib%s.so", fname);
+    snprintf(buffer, buflen, "lib%s.so", fname);
+  } else if (strchr(pname, *os::path_separator()) != NULL) {
+    int n;
+    char** pelements = split_path(pname, &n);
+    for (int i = 0 ; i < n ; i++) {
+      // Really shouldn't be NULL, but check can't hurt
+      if (pelements[i] == NULL || strlen(pelements[i]) == 0) {
+        continue; // skip the empty path values
+      }
+      snprintf(buffer, buflen, "%s/lib%s.so", pelements[i], fname);
+      if (file_exists(buffer)) {
+        break;
+      }
+    }
+    // release the storage
+    for (int i = 0 ; i < n ; i++) {
+      if (pelements[i] != NULL) {
+        FREE_C_HEAP_ARRAY(char, pelements[i]);
+      }
+    }
+    if (pelements != NULL) {
+      FREE_C_HEAP_ARRAY(char*, pelements);
+    }
   } else {
-      sprintf(buffer, "%s/lib%s.so", pname, fname);
+    snprintf(buffer, buflen, "%s/lib%s.so", pname, fname);
   }
 }
 
@@ -2024,7 +2065,8 @@
                 CAST_FROM_FN_PTR(address, os::jvm_path),
                 dli_fname, sizeof(dli_fname), NULL);
   assert(ret != 0, "cannot locate libjvm");
-  realpath(dli_fname, buf);
+  if (realpath(dli_fname, buf) == NULL)
+    return;
 
   if (strcmp(Arguments::sun_java_launcher(), "gamma") == 0) {
     // Support for the gamma launcher.  Typical value for buf is
@@ -2048,7 +2090,8 @@
         assert(strstr(p, "/libjvm") == p, "invalid library name");
         p = strstr(p, "_g") ? "_g" : "";
 
-        realpath(java_home_var, buf);
+        if (realpath(java_home_var, buf) == NULL)
+          return;
         sprintf(buf + strlen(buf), "/jre/lib/%s", cpu_arch);
         if (0 == access(buf, F_OK)) {
           // Use current module name "libjvm[_g].so" instead of
@@ -2059,7 +2102,8 @@
           sprintf(buf + strlen(buf), "/hotspot/libjvm%s.so", p);
         } else {
           // Go back to path of .so
-          realpath(dli_fname, buf);
+          if (realpath(dli_fname, buf) == NULL)
+            return;
         }
       }
     }
@@ -2255,21 +2299,23 @@
 //       All it does is to check if there are enough free pages
 //       left at the time of mmap(). This could be a potential
 //       problem.
-bool os::commit_memory(char* addr, size_t size) {
-  uintptr_t res = (uintptr_t) ::mmap(addr, size,
-                                   PROT_READ|PROT_WRITE|PROT_EXEC,
+bool os::commit_memory(char* addr, size_t size, bool exec) {
+  int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
+  uintptr_t res = (uintptr_t) ::mmap(addr, size, prot,
                                    MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
   return res != (uintptr_t) MAP_FAILED;
 }
 
-bool os::commit_memory(char* addr, size_t size, size_t alignment_hint) {
-  return commit_memory(addr, size);
+bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
+                       bool exec) {
+  return commit_memory(addr, size, exec);
 }
 
 void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
 
 void os::free_memory(char *addr, size_t bytes) {
-  uncommit_memory(addr, bytes);
+  ::mmap(addr, bytes, PROT_READ | PROT_WRITE,
+         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
 }
 
 void os::numa_make_global(char *addr, size_t bytes) {
@@ -2316,6 +2362,19 @@
 extern "C" void numa_warn(int number, char *where, ...) { }
 extern "C" void numa_error(char *where) { }
 
+
+// If we are running with libnuma version > 2, then we should
+// be trying to use symbols with versions 1.1
+// If we are running with earlier version, which did not have symbol versions,
+// we should use the base version.
+void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
+  void *f = dlvsym(handle, name, "libnuma_1.1");
+  if (f == NULL) {
+    f = dlsym(handle, name);
+  }
+  return f;
+}
+
 bool os::Linux::libnuma_init() {
   // sched_getcpu() should be in libc.
   set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
@@ -2325,19 +2384,19 @@
     void *handle = dlopen("libnuma.so.1", RTLD_LAZY);
     if (handle != NULL) {
       set_numa_node_to_cpus(CAST_TO_FN_PTR(numa_node_to_cpus_func_t,
-                                           dlsym(handle, "numa_node_to_cpus")));
+                                           libnuma_dlsym(handle, "numa_node_to_cpus")));
       set_numa_max_node(CAST_TO_FN_PTR(numa_max_node_func_t,
-                                       dlsym(handle, "numa_max_node")));
+                                       libnuma_dlsym(handle, "numa_max_node")));
       set_numa_available(CAST_TO_FN_PTR(numa_available_func_t,
-                                        dlsym(handle, "numa_available")));
+                                        libnuma_dlsym(handle, "numa_available")));
       set_numa_tonode_memory(CAST_TO_FN_PTR(numa_tonode_memory_func_t,
-                                            dlsym(handle, "numa_tonode_memory")));
+                                            libnuma_dlsym(handle, "numa_tonode_memory")));
       set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t,
-                                            dlsym(handle, "numa_interleave_memory")));
+                                            libnuma_dlsym(handle, "numa_interleave_memory")));
 
 
       if (numa_available() != -1) {
-        set_numa_all_nodes((unsigned long*)dlsym(handle, "numa_all_nodes"));
+        set_numa_all_nodes((unsigned long*)libnuma_dlsym(handle, "numa_all_nodes"));
         // Create a cpu -> node mapping
         _cpu_to_node = new (ResourceObj::C_HEAP) GrowableArray<int>(0, true);
         rebuild_cpu_to_node_map();
@@ -2403,8 +2462,7 @@
 unsigned long* os::Linux::_numa_all_nodes;
 
 bool os::uncommit_memory(char* addr, size_t size) {
-  return ::mmap(addr, size,
-                PROT_READ|PROT_WRITE|PROT_EXEC,
+  return ::mmap(addr, size, PROT_NONE,
                 MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE|MAP_ANONYMOUS, -1, 0)
     != MAP_FAILED;
 }
@@ -2427,7 +2485,9 @@
     flags |= MAP_FIXED;
   }
 
-  addr = (char*)::mmap(requested_addr, bytes, PROT_READ|PROT_WRITE|PROT_EXEC,
+  // Map uncommitted pages PROT_READ and PROT_WRITE, change access
+  // to PROT_EXEC if executable when we commit the page.
+  addr = (char*)::mmap(requested_addr, bytes, PROT_READ|PROT_WRITE,
                        flags, -1, 0);
 
   if (addr != MAP_FAILED) {
@@ -2568,7 +2628,9 @@
 #define SHM_HUGETLB 04000
 #endif
 
-char* os::reserve_memory_special(size_t bytes) {
+char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
+  // "exec" is passed in but not used.  Creating the shared image for
+  // the code cache doesn't have an SHM_X executable permission to check.
   assert(UseLargePages, "only for large pages");
 
   key_t key = IPC_PRIVATE;
@@ -4184,11 +4246,11 @@
   // Skip blank chars
   do s++; while (isspace(*s));
 
-  count = sscanf(s,"%c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu",
-                 &idummy, &idummy, &idummy, &idummy, &idummy, &idummy,
+  count = sscanf(s,"%*c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu",
+                 &idummy, &idummy, &idummy, &idummy, &idummy,
                  &ldummy, &ldummy, &ldummy, &ldummy, &ldummy,
                  &user_time, &sys_time);
-  if ( count != 13 ) return -1;
+  if ( count != 12 ) return -1;
   if (user_sys_cpu_time) {
     return ((jlong)sys_time + (jlong)user_time) * (1000000000 / clock_tics_per_sec);
   } else {
--- a/src/os/linux/vm/os_linux.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/linux/vm/os_linux.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -147,7 +147,7 @@
 
   static void libpthread_init();
   static bool libnuma_init();
-
+  static void* libnuma_dlsym(void* handle, const char* name);
   // Minimum stack size a thread can be created with (allowing
   // the VM to completely create the thread and enter user code)
   static size_t min_stack_allowed;
--- a/src/os/linux/vm/perfMemory_linux.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/linux/vm/perfMemory_linux.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -192,7 +192,7 @@
 // check if the given path is considered a secure directory for
 // the backing store files. Returns true if the directory exists
 // and is considered a secure location. Returns false if the path
-// is a symbolic link or if an error occured.
+// is a symbolic link or if an error occurred.
 //
 static bool is_directory_secure(const char* path) {
   struct stat statbuf;
--- a/src/os/solaris/dtrace/generateJvmOffsets.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/dtrace/generateJvmOffsets.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -249,6 +249,10 @@
 
   printf("\n");
 
+  GEN_OFFS(NarrowOopStruct, _base);
+  GEN_OFFS(NarrowOopStruct, _shift);
+  printf("\n");
+
   GEN_VALUE(SIZE_HeapBlockHeader, sizeof(HeapBlock::Header));
   GEN_SIZE(oopDesc);
   GEN_SIZE(constantPoolOopDesc);
--- a/src/os/solaris/dtrace/jhelper.d	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/dtrace/jhelper.d	Tue Jul 28 13:50:07 2009 -0600
@@ -46,7 +46,10 @@
 extern pointer __1cJCodeCacheF_heap_;
 extern pointer __1cIUniverseP_methodKlassObj_;
 extern pointer __1cIUniverseO_collectedHeap_;
-extern pointer __1cIUniverseK_heap_base_;
+extern pointer __1cIUniverseL_narrow_oop_;
+#ifdef _LP64
+extern pointer UseCompressedOops;
+#endif
 
 extern pointer __1cHnmethodG__vtbl_;
 extern pointer __1cKBufferBlobG__vtbl_;
@@ -56,6 +59,7 @@
 #define copyin_uint16(ADDR) *(uint16_t*) copyin((pointer) (ADDR), sizeof(uint16_t))
 #define copyin_uint32(ADDR) *(uint32_t*) copyin((pointer) (ADDR), sizeof(uint32_t))
 #define copyin_int32(ADDR)  *(int32_t*)  copyin((pointer) (ADDR), sizeof(int32_t))
+#define copyin_uint8(ADDR)  *(uint8_t*)  copyin((pointer) (ADDR), sizeof(uint8_t))
 
 #define SAME(x) x
 #define copyin_offset(JVM_CONST)  JVM_CONST = \
@@ -132,6 +136,9 @@
   copyin_offset(SIZE_oopDesc);
   copyin_offset(SIZE_constantPoolOopDesc);
 
+  copyin_offset(OFFSET_NarrowOopStruct_base);
+  copyin_offset(OFFSET_NarrowOopStruct_shift);
+
   /*
    * The PC to translate is in arg0.
    */
@@ -151,9 +158,19 @@
 
   this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_);
   this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_);
-  this->Universe_heap_base = copyin_ptr(&``__1cIUniverseK_heap_base_);
 
   /* Reading volatile values */
+#ifdef _LP64
+  this->Use_Compressed_Oops  = copyin_uint8(&``UseCompressedOops);
+#else
+  this->Use_Compressed_Oops  = 0;
+#endif
+
+  this->Universe_narrow_oop_base  = copyin_ptr(&``__1cIUniverseL_narrow_oop_ +
+                                               OFFSET_NarrowOopStruct_base);
+  this->Universe_narrow_oop_shift = copyin_int32(&``__1cIUniverseL_narrow_oop_ +
+                                                 OFFSET_NarrowOopStruct_shift);
+
   this->CodeCache_low = copyin_ptr(this->CodeCache_heap_address + 
       OFFSET_CodeHeap_memory + OFFSET_VirtualSpace_low);
 
@@ -295,7 +312,7 @@
 
 dtrace:helper:ustack:
 /!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Universe_heap_base == NULL &&
+this->Use_Compressed_Oops == 0 &&
 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
 {
   MARK_LINE;
@@ -306,7 +323,7 @@
 
 dtrace:helper:ustack:
 /!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Universe_heap_base != NULL &&
+this->Use_Compressed_Oops != 0 &&
 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
 {
   MARK_LINE;
@@ -314,8 +331,8 @@
    * 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_heap_base +
-                ((uintptr_t)this->cklass << 3));
+  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;
 }
--- a/src/os/solaris/dtrace/libjvm_db.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/dtrace/libjvm_db.c	Tue Jul 28 13:50:07 2009 -0600
@@ -146,13 +146,17 @@
   uint64_t BufferBlob_vtbl;
   uint64_t RuntimeStub_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;
-  uint64_t Universe_heap_base_address;
 
   /* Volatiles */
+  uint8_t  Use_Compressed_Oops;
   uint64_t Universe_methodKlassObj;
-  uint64_t Universe_heap_base;
+  uint64_t Universe_narrow_oop_base;
+  uint32_t Universe_narrow_oop_shift;
   uint64_t CodeCache_low;
   uint64_t CodeCache_high;
   uint64_t CodeCache_segmap_low;
@@ -279,8 +283,11 @@
       if (strcmp("_methodKlassObj", vmp->fieldName) == 0) {
         J->Universe_methodKlassObj_address = vmp->address;
       }
-      if (strcmp("_heap_base", vmp->fieldName) == 0) {
-        J->Universe_heap_base_address = vmp->address;
+      if (strcmp("_narrow_oop._base", vmp->fieldName) == 0) {
+        J->Universe_narrow_oop_base_address = vmp->address;
+      }
+      if (strcmp("_narrow_oop._shift", vmp->fieldName) == 0) {
+        J->Universe_narrow_oop_shift_address = vmp->address;
       }
     }
     CHECK_FAIL(err);
@@ -298,14 +305,39 @@
   return -1;
 }
 
+static int find_symbol(jvm_agent_t* J, const char *name, uint64_t* valuep) {
+  psaddr_t sym_addr;
+  int err;
+
+  err = ps_pglobal_lookup(J->P, LIBJVM_SO, name, &sym_addr);
+  if (err != PS_OK) goto fail;
+  *valuep = sym_addr;
+  return PS_OK;
+
+ fail:
+  return err;
+}
+
 static int read_volatiles(jvm_agent_t* J) {
   uint64_t ptr;
   int err;
 
+  err = find_symbol(J, "UseCompressedOops", &J->Use_Compressed_Oops_address);
+  if (err == PS_OK) {
+    err = ps_pread(J->P,  J->Use_Compressed_Oops_address, &J->Use_Compressed_Oops, sizeof(uint8_t));
+    CHECK_FAIL(err);
+  } else {
+    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_heap_base_address, &J->Universe_heap_base);
+
+  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));
+  CHECK_FAIL(err);
+
   err = read_pointer(J, J->CodeCache_heap_address + OFFSET_CodeHeap_memory +
                      OFFSET_VirtualSpace_low, &J->CodeCache_low);
   CHECK_FAIL(err);
@@ -374,19 +406,6 @@
   return -1;
 }
 
-static int find_symbol(jvm_agent_t* J, const char *name, uint64_t* valuep) {
-  psaddr_t sym_addr;
-  int err;
-
-  err = ps_pglobal_lookup(J->P, LIBJVM_SO, name, &sym_addr);
-  if (err != PS_OK) goto fail;
-  *valuep = sym_addr;
-  return PS_OK;
-
- fail:
-  return err;
-}
-
 static int find_jlong_constant(jvm_agent_t* J, const char *name, uint64_t* valuep) {
   psaddr_t sym_addr;
   int err = ps_pglobal_lookup(J->P, LIBJVM_SO, name, &sym_addr);
@@ -458,14 +477,14 @@
 static int is_methodOop(jvm_agent_t* J, uint64_t methodOopPtr) {
   uint64_t klass;
   int err;
-  // If heap_base is nonnull, this was a compressed oop.
-  if (J->Universe_heap_base != NULL) {
+  // 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_heap_base +
-            ((uintptr_t)cklass << 3));
+    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);
   }
--- a/src/os/solaris/launcher/java.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/launcher/java.c	Tue Jul 28 13:50:07 2009 -0600
@@ -419,7 +419,7 @@
             goto leave;
         }
         mainClass = LoadClass(env, classname);
-        if(mainClass == NULL) { /* exception occured */
+        if(mainClass == NULL) { /* exception occurred */
             ReportExceptionDescription(env);
             message = "Could not find the main class.  Program will exit.";
             goto leave;
@@ -441,7 +441,7 @@
         goto leave;
       }
       mainClass = LoadClass(env, classname);
-      if(mainClass == NULL) { /* exception occured */
+      if(mainClass == NULL) { /* exception occurred */
         ReportExceptionDescription(env);
         message = "Could not find the main class. Program will exit.";
         goto leave;
--- a/src/os/solaris/launcher/java_md.h	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/launcher/java_md.h	Tue Jul 28 13:50:07 2009 -0600
@@ -47,7 +47,7 @@
 #ifdef JAVA_ARGS
 /*
  * ApplicationHome is prepended to each of these entries; the resulting
- * strings are concatenated (seperated by PATH_SEPARATOR) and used as the
+ * strings are concatenated (separated by PATH_SEPARATOR) and used as the
  * value of -cp option to the launcher.
  */
 #ifndef APP_CLASSPATH
--- a/src/os/solaris/vm/os_solaris.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/vm/os_solaris.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -323,6 +323,10 @@
   return (size_t)(base - bottom);
 }
 
+struct tm* os::localtime_pd(const time_t* clock, struct tm*  res) {
+  return localtime_r(clock, res);
+}
+
 // interruptible infrastructure
 
 // setup_interruptible saves the thread state before going into an
@@ -1823,21 +1827,51 @@
 
 const char* os::get_temp_directory() { return "/tmp/"; }
 
-void os::dll_build_name(
-    char* buffer, size_t buflen, const char* pname, const char* fname) {
-  // copied from libhpi
+static bool file_exists(const char* filename) {
+  struct stat statbuf;
+  if (filename == NULL || strlen(filename) == 0) {
+    return false;
+  }
+  return os::stat(filename, &statbuf) == 0;
+}
+
+void os::dll_build_name(char* buffer, size_t buflen,
+                        const char* pname, const char* fname) {
+  // Copied from libhpi
   const size_t pnamelen = pname ? strlen(pname) : 0;
 
-  /* Quietly truncate on buffer overflow.  Should be an error. */
+  // Quietly truncate on buffer overflow.  Should be an error.
   if (pnamelen + strlen(fname) + 10 > (size_t) buflen) {
       *buffer = '\0';
       return;
   }
 
   if (pnamelen == 0) {
-      sprintf(buffer, "lib%s.so", fname);
+    snprintf(buffer, buflen, "lib%s.so", fname);
+  } else if (strchr(pname, *os::path_separator()) != NULL) {
+    int n;
+    char** pelements = split_path(pname, &n);
+    for (int i = 0 ; i < n ; i++) {
+      // really shouldn't be NULL but what the heck, check can't hurt
+      if (pelements[i] == NULL || strlen(pelements[i]) == 0) {
+        continue; // skip the empty path values
+      }
+      snprintf(buffer, buflen, "%s/lib%s.so", pelements[i], fname);
+      if (file_exists(buffer)) {
+        break;
+      }
+    }
+    // release the storage
+    for (int i = 0 ; i < n ; i++) {
+      if (pelements[i] != NULL) {
+        FREE_C_HEAP_ARRAY(char, pelements[i]);
+      }
+    }
+    if (pelements != NULL) {
+      FREE_C_HEAP_ARRAY(char*, pelements);
+    }
   } else {
-      sprintf(buffer, "%s/lib%s.so", pname, fname);
+    snprintf(buffer, buflen, "%s/lib%s.so", pname, fname);
   }
 }
 
@@ -2619,15 +2653,16 @@
   return page_size;
 }
 
-bool os::commit_memory(char* addr, size_t bytes) {
+bool os::commit_memory(char* addr, size_t bytes, bool exec) {
+  int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
   size_t size = bytes;
   return
-     NULL != Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED,
-                                 PROT_READ | PROT_WRITE | PROT_EXEC);
-}
-
-bool os::commit_memory(char* addr, size_t bytes, size_t alignment_hint) {
-  if (commit_memory(addr, bytes)) {
+     NULL != Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED, prot);
+}
+
+bool os::commit_memory(char* addr, size_t bytes, size_t alignment_hint,
+                       bool exec) {
+  if (commit_memory(addr, bytes, exec)) {
     if (UseMPSS && alignment_hint > (size_t)vm_page_size()) {
       // If the large page size has been set and the VM
       // is using large pages, use the large page size
@@ -3216,7 +3251,9 @@
   return true;
 }
 
-char* os::reserve_memory_special(size_t bytes) {
+char* os::reserve_memory_special(size_t bytes, char* addr, bool exec) {
+  // "exec" is passed in but not used.  Creating the shared image for
+  // the code cache doesn't have an SHM_X executable permission to check.
   assert(UseLargePages && UseISM, "only for ISM large pages");
 
   size_t size = bytes;
@@ -4447,6 +4484,9 @@
 int_fnP_thread_t os::Solaris::_thr_suspend_mutator;
 int_fnP_thread_t os::Solaris::_thr_continue_mutator;
 
+// (Static) wrapper for getisax(2) call.
+os::Solaris::getisax_func_t os::Solaris::_getisax = 0;
+
 // (Static) wrappers for the liblgrp API
 os::Solaris::lgrp_home_func_t os::Solaris::_lgrp_home;
 os::Solaris::lgrp_init_func_t os::Solaris::_lgrp_init;
@@ -4461,16 +4501,19 @@
 // (Static) wrapper for meminfo() call.
 os::Solaris::meminfo_func_t os::Solaris::_meminfo = 0;
 
-static address resolve_symbol(const char *name) {
-  address addr;
-
-  addr = (address) dlsym(RTLD_DEFAULT, name);
+static address resolve_symbol_lazy(const char* name) {
+  address addr = (address) dlsym(RTLD_DEFAULT, name);
   if(addr == NULL) {
     // RTLD_DEFAULT was not defined on some early versions of 2.5.1
     addr = (address) dlsym(RTLD_NEXT, name);
-    if(addr == NULL) {
-      fatal(dlerror());
-    }
+  }
+  return addr;
+}
+
+static address resolve_symbol(const char* name) {
+  address addr = resolve_symbol_lazy(name);
+  if(addr == NULL) {
+    fatal(dlerror());
   }
   return addr;
 }
@@ -4669,15 +4712,26 @@
 }
 
 void os::Solaris::misc_sym_init() {
-  address func = (address)dlsym(RTLD_DEFAULT, "meminfo");
-  if(func == NULL) {
-    func = (address) dlsym(RTLD_NEXT, "meminfo");
-  }
+  address func;
+
+  // getisax
+  func = resolve_symbol_lazy("getisax");
+  if (func != NULL) {
+    os::Solaris::_getisax = CAST_TO_FN_PTR(getisax_func_t, func);
+  }
+
+  // meminfo
+  func = resolve_symbol_lazy("meminfo");
   if (func != NULL) {
     os::Solaris::set_meminfo(CAST_TO_FN_PTR(meminfo_func_t, func));
   }
 }
 
+uint_t os::Solaris::getisax(uint32_t* array, uint_t n) {
+  assert(_getisax != NULL, "_getisax not set");
+  return _getisax(array, n);
+}
+
 // Symbol doesn't exist in Solaris 8 pset.h
 #ifndef PS_MYID
 #define PS_MYID -3
@@ -4712,6 +4766,10 @@
 
   Solaris::initialize_system_info();
 
+  // Initialize misc. symbols as soon as possible, so we can use them
+  // if we need them.
+  Solaris::misc_sym_init();
+
   int fd = open("/dev/zero", O_RDWR);
   if (fd < 0) {
     fatal1("os::init: cannot open /dev/zero (%s)", strerror(errno));
@@ -4853,7 +4911,6 @@
     }
   }
 
-  Solaris::misc_sym_init();
   Solaris::signal_sets_init();
   Solaris::init_signal_mem();
   Solaris::install_signal_handlers();
--- a/src/os/solaris/vm/os_solaris.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/vm/os_solaris.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +72,8 @@
         LGRP_VIEW_OS            /* what's available to operating system */
   } lgrp_view_t;
 
+  typedef uint_t (*getisax_func_t)(uint32_t* array, uint_t n);
+
   typedef lgrp_id_t (*lgrp_home_func_t)(idtype_t idtype, id_t id);
   typedef lgrp_cookie_t (*lgrp_init_func_t)(lgrp_view_t view);
   typedef int (*lgrp_fini_func_t)(lgrp_cookie_t cookie);
@@ -87,6 +89,8 @@
                                 const uint_t  info_req[],  int info_count,
                                 uint64_t  outdata[], uint_t validity[]);
 
+  static getisax_func_t _getisax;
+
   static lgrp_home_func_t _lgrp_home;
   static lgrp_init_func_t _lgrp_init;
   static lgrp_fini_func_t _lgrp_fini;
@@ -283,6 +287,9 @@
   }
   static lgrp_cookie_t lgrp_cookie()                 { return _lgrp_cookie; }
 
+  static bool supports_getisax()                     { return _getisax != NULL; }
+  static uint_t getisax(uint32_t* array, uint_t n);
+
   static void set_meminfo(meminfo_func_t func)       { _meminfo = func; }
   static int meminfo (const uint64_t inaddr[],   int addr_count,
                      const uint_t  info_req[],  int info_count,
--- a/src/os/solaris/vm/perfMemory_solaris.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/solaris/vm/perfMemory_solaris.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -194,7 +194,7 @@
 // check if the given path is considered a secure directory for
 // the backing store files. Returns true if the directory exists
 // and is considered a secure location. Returns false if the path
-// is a symbolic link or if an error occured.
+// is a symbolic link or if an error occurred.
 //
 static bool is_directory_secure(const char* path) {
   struct stat statbuf;
--- a/src/os/windows/vm/os_windows.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/windows/vm/os_windows.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -327,6 +327,14 @@
   return sz;
 }
 
+struct tm* os::localtime_pd(const time_t* clock, struct tm* res) {
+  const struct tm* time_struct_ptr = localtime(clock);
+  if (time_struct_ptr != NULL) {
+    *res = *time_struct_ptr;
+    return res;
+  }
+  return NULL;
+}
 
 LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo);
 
@@ -608,12 +616,13 @@
 }
 
 julong os::win32::available_memory() {
-  // FIXME: GlobalMemoryStatus() may return incorrect value if total memory
-  // is larger than 4GB
-  MEMORYSTATUS ms;
-  GlobalMemoryStatus(&ms);
-
-  return (julong)ms.dwAvailPhys;
+  // Use GlobalMemoryStatusEx() because GlobalMemoryStatus() may return incorrect
+  // value if total memory is larger than 4GB
+  MEMORYSTATUSEX ms;
+  ms.dwLength = sizeof(ms);
+  GlobalMemoryStatusEx(&ms);
+
+  return (julong)ms.ullAvailPhys;
 }
 
 julong os::physical_memory() {
@@ -996,26 +1005,61 @@
     }
 }
 
-void os::dll_build_name(char *holder, size_t holderlen,
-                        const char* pname, const char* fname)
-{
-    // copied from libhpi
-    const size_t pnamelen = pname ? strlen(pname) : 0;
-    const char c = (pnamelen > 0) ? pname[pnamelen-1] : 0;
-
-    /* Quietly truncates on buffer overflow. Should be an error. */
-    if (pnamelen + strlen(fname) + 10 > holderlen) {
-        *holder = '\0';
-        return;
+static bool file_exists(const char* filename) {
+  if (filename == NULL || strlen(filename) == 0) {
+    return false;
+  }
+  return GetFileAttributes(filename) != INVALID_FILE_ATTRIBUTES;
+}
+
+void os::dll_build_name(char *buffer, size_t buflen,
+                        const char* pname, const char* fname) {
+  // Copied from libhpi
+  const size_t pnamelen = pname ? strlen(pname) : 0;
+  const char c = (pnamelen > 0) ? pname[pnamelen-1] : 0;
+
+  // Quietly truncates on buffer overflow. Should be an error.
+  if (pnamelen + strlen(fname) + 10 > buflen) {
+    *buffer = '\0';
+    return;
+  }
+
+  if (pnamelen == 0) {
+    jio_snprintf(buffer, buflen, "%s.dll", fname);
+  } else if (c == ':' || c == '\\') {
+    jio_snprintf(buffer, buflen, "%s%s.dll", pname, fname);
+  } else if (strchr(pname, *os::path_separator()) != NULL) {
+    int n;
+    char** pelements = split_path(pname, &n);
+    for (int i = 0 ; i < n ; i++) {
+      char* path = pelements[i];
+      // Really shouldn't be NULL, but check can't hurt
+      size_t plen = (path == NULL) ? 0 : strlen(path);
+      if (plen == 0) {
+        continue; // skip the empty path values
+      }
+      const char lastchar = path[plen - 1];
+      if (lastchar == ':' || lastchar == '\\') {
+        jio_snprintf(buffer, buflen, "%s%s.dll", path, fname);
+      } else {
+        jio_snprintf(buffer, buflen, "%s\\%s.dll", path, fname);
+      }
+      if (file_exists(buffer)) {
+        break;
+      }
     }
-
-    if (pnamelen == 0) {
-        sprintf(holder, "%s.dll", fname);
-    } else if (c == ':' || c == '\\') {
-        sprintf(holder, "%s%s.dll", pname, fname);
-    } else {
-        sprintf(holder, "%s\\%s.dll", pname, fname);
+    // release the storage
+    for (int i = 0 ; i < n ; i++) {
+      if (pelements[i] != NULL) {
+        FREE_C_HEAP_ARRAY(char, pelements[i]);
+      }
     }
+    if (pelements != NULL) {
+      FREE_C_HEAP_ARRAY(char*, pelements);
+    }
+  } else {
+    jio_snprintf(buffer, buflen, "%s\\%s.dll", pname, fname);
+  }
 }
 
 // Needs to be in os specific directory because windows requires another
@@ -1536,16 +1580,17 @@
   st->print("Memory:");
   st->print(" %dk page", os::vm_page_size()>>10);
 
-  // FIXME: GlobalMemoryStatus() may return incorrect value if total memory
-  // is larger than 4GB
-  MEMORYSTATUS ms;
-  GlobalMemoryStatus(&ms);
+  // Use GlobalMemoryStatusEx() because GlobalMemoryStatus() may return incorrect
+  // value if total memory is larger than 4GB
+  MEMORYSTATUSEX ms;
+  ms.dwLength = sizeof(ms);
+  GlobalMemoryStatusEx(&ms);
 
   st->print(", physical %uk", os::physical_memory() >> 10);
   st->print("(%uk free)", os::available_memory() >> 10);
 
-  st->print(", swap %uk", ms.dwTotalPageFile >> 10);
-  st->print("(%uk free)", ms.dwAvailPageFile >> 10);
+  st->print(", swap %uk", ms.ullTotalPageFile >> 10);
+  st->print("(%uk free)", ms.ullAvailPageFile >> 10);
   st->cr();
 }
 
@@ -2181,7 +2226,8 @@
           if (addr > thread->stack_yellow_zone_base() && addr < thread->stack_base() ) {
                   addr = (address)((uintptr_t)addr &
                          (~((uintptr_t)os::vm_page_size() - (uintptr_t)1)));
-                  os::commit_memory( (char *)addr, thread->stack_base() - addr );
+                  os::commit_memory((char *)addr, thread->stack_base() - addr,
+                                    false );
                   return EXCEPTION_CONTINUE_EXECUTION;
           }
           else
@@ -2557,8 +2603,7 @@
   assert((size_t)addr % os::vm_allocation_granularity() == 0,
          "reserve alignment");
   assert(bytes % os::vm_allocation_granularity() == 0, "reserve block size");
-  char* res = (char*)VirtualAlloc(addr, bytes, MEM_RESERVE,
-                                  PAGE_EXECUTE_READWRITE);
+  char* res = (char*)VirtualAlloc(addr, bytes, MEM_RESERVE, PAGE_READWRITE);
   assert(res == NULL || addr == NULL || addr == res,
          "Unexpected address from reserve.");
   return res;
@@ -2587,7 +2632,9 @@
   return true;
 }
 
-char* os::reserve_memory_special(size_t bytes) {
+char* os::reserve_memory_special(size_t bytes, char* addr, bool exec) {
+
+  const DWORD prot = exec ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE;
 
   if (UseLargePagesIndividualAllocation) {
     if (TracePageSizes && Verbose) {
@@ -2607,10 +2654,10 @@
         "use -XX:-UseLargePagesIndividualAllocation to turn off");
       return NULL;
     }
-    p_buf = (char *) VirtualAlloc(NULL,
+    p_buf = (char *) VirtualAlloc(addr,
                                  size_of_reserve,  // size of Reserve
                                  MEM_RESERVE,
-                                 PAGE_EXECUTE_READWRITE);
+                                 PAGE_READWRITE);
     // If reservation failed, return NULL
     if (p_buf == NULL) return NULL;
 
@@ -2651,7 +2698,7 @@
         p_new = (char *) VirtualAlloc(next_alloc_addr,
                                     bytes_to_rq,
                                     MEM_RESERVE | MEM_COMMIT | MEM_LARGE_PAGES,
-                                    PAGE_EXECUTE_READWRITE);
+                                    prot);
       }
 
       if (p_new == NULL) {
@@ -2680,10 +2727,7 @@
   } else {
     // normal policy just allocate it all at once
     DWORD flag = MEM_RESERVE | MEM_COMMIT | MEM_LARGE_PAGES;
-    char * res = (char *)VirtualAlloc(NULL,
-                                      bytes,
-                                      flag,
-                                      PAGE_EXECUTE_READWRITE);
+    char * res = (char *)VirtualAlloc(NULL, bytes, flag, prot);
     return res;
   }
 }
@@ -2695,7 +2739,7 @@
 void os::print_statistics() {
 }
 
-bool os::commit_memory(char* addr, size_t bytes) {
+bool os::commit_memory(char* addr, size_t bytes, bool exec) {
   if (bytes == 0) {
     // Don't bother the OS with noops.
     return true;
@@ -2704,11 +2748,19 @@
   assert(bytes % os::vm_page_size() == 0, "commit in page-sized chunks");
   // Don't attempt to print anything if the OS call fails. We're
   // probably low on resources, so the print itself may cause crashes.
-  return VirtualAlloc(addr, bytes, MEM_COMMIT, PAGE_EXECUTE_READWRITE) != NULL;
+  bool result = VirtualAlloc(addr, bytes, MEM_COMMIT, PAGE_READWRITE) != 0;
+  if (result != NULL && exec) {
+    DWORD oldprot;
+    // Windows doc says to use VirtualProtect to get execute permissions
+    return VirtualProtect(addr, bytes, PAGE_EXECUTE_READWRITE, &oldprot) != 0;
+  } else {
+    return result;
+  }
 }
 
-bool os::commit_memory(char* addr, size_t size, size_t alignment_hint) {
-  return commit_memory(addr, size);
+bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
+                       bool exec) {
+  return commit_memory(addr, size, exec);
 }
 
 bool os::uncommit_memory(char* addr, size_t bytes) {
@@ -2742,7 +2794,7 @@
 
   // Strange enough, but on Win32 one can change protection only for committed
   // memory, not a big deal anyway, as bytes less or equal than 64K
-  if (!is_committed && !commit_memory(addr, bytes)) {
+  if (!is_committed && !commit_memory(addr, bytes, prot == MEM_PROT_RWX)) {
     fatal("cannot commit protection page");
   }
   // One cannot use os::guard_memory() here, as on Win32 guard page
@@ -3085,11 +3137,13 @@
   _processor_level = si.wProcessorLevel;
   _processor_count = si.dwNumberOfProcessors;
 
-  MEMORYSTATUS ms;
+  MEMORYSTATUSEX ms;
+  ms.dwLength = sizeof(ms);
+
   // also returns dwAvailPhys (free physical memory bytes), dwTotalVirtual, dwAvailVirtual,
   // dwMemoryLoad (% of memory in use)
-  GlobalMemoryStatus(&ms);
-  _physical_memory = ms.dwTotalPhys;
+  GlobalMemoryStatusEx(&ms);
+  _physical_memory = ms.ullTotalPhys;
 
   OSVERSIONINFO oi;
   oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
@@ -3240,10 +3294,10 @@
 #endif
 
   if (!UseMembar) {
-    address mem_serialize_page = (address)VirtualAlloc(NULL, os::vm_page_size(), MEM_RESERVE, PAGE_EXECUTE_READWRITE);
+    address mem_serialize_page = (address)VirtualAlloc(NULL, os::vm_page_size(), MEM_RESERVE, PAGE_READWRITE);
     guarantee( mem_serialize_page != NULL, "Reserve Failed for memory serialize page");
 
-    return_page  = (address)VirtualAlloc(mem_serialize_page, os::vm_page_size(), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
+    return_page  = (address)VirtualAlloc(mem_serialize_page, os::vm_page_size(), MEM_COMMIT, PAGE_READWRITE);
     guarantee( return_page != NULL, "Commit Failed for memory serialize page");
 
     os::set_memory_serialize_page( mem_serialize_page );
--- a/src/os/windows/vm/perfMemory_windows.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os/windows/vm/perfMemory_windows.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -195,7 +195,7 @@
 // check if the given path is considered a secure directory for
 // the backing store files. Returns true if the directory exists
 // and is considered a secure location. Returns false if the path
-// is a symbolic link or if an error occured.
+// is a symbolic link or if an error occurred.
 //
 static bool is_directory_secure(const char* path) {
 
@@ -994,7 +994,7 @@
     return false;
   }
 
-  // if running on windows 2000 or later, set the automatic inheritence
+  // if running on windows 2000 or later, set the automatic inheritance
   // control flags.
   SetSecurityDescriptorControlFnPtr _SetSecurityDescriptorControl;
   _SetSecurityDescriptorControl = (SetSecurityDescriptorControlFnPtr)
@@ -1002,7 +1002,7 @@
                       "SetSecurityDescriptorControl");
 
   if (_SetSecurityDescriptorControl != NULL) {
-    // We do not want to further propogate inherited DACLs, so making them
+    // We do not want to further propagate inherited DACLs, so making them
     // protected prevents that.
     if (!_SetSecurityDescriptorControl(pSD, SE_DACL_PROTECTED,
                                             SE_DACL_PROTECTED)) {
--- a/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -30,5 +30,7 @@
 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);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions, false);
--- a/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -29,13 +29,11 @@
   static jint  (*atomic_cmpxchg_func)     (jint,  volatile jint*,  jint);
   static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
   static jint  (*atomic_add_func)         (jint,  volatile jint*);
-  static void  (*fence_func)              ();
 
   static jint  atomic_xchg_bootstrap        (jint,  volatile jint*);
   static jint  atomic_cmpxchg_bootstrap     (jint,  volatile jint*,  jint);
   static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
   static jint  atomic_add_bootstrap         (jint,  volatile jint*);
-  static void  fence_bootstrap              ();
 
   static void setup_fpu() {}
 
--- a/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -43,5 +43,7 @@
 
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
+// Only used on 64 bit platforms
+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_x86/vm/orderAccess_linux_x86.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -44,11 +44,12 @@
 
 inline void OrderAccess::fence() {
   if (os::is_MP()) {
+    // always use locked addl since mfence is sometimes expensive
 #ifdef AMD64
-    __asm__ __volatile__ ("mfence":::"memory");
+    __asm__ volatile ("lock; addl $0,0(%%rsp)" : : : "cc", "memory");
 #else
     __asm__ volatile ("lock; addl $0,0(%%esp)" : : : "cc", "memory");
-#endif // AMD64
+#endif
   }
 }
 
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -30,5 +30,9 @@
 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);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
+
+
--- a/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -60,22 +60,10 @@
   dummy = 0;
 }
 
-#if defined(COMPILER2) || defined(_LP64)
-
 inline void OrderAccess::fence() {
   _OrderAccess_fence();
 }
 
-#else  // defined(COMPILER2) || defined(_LP64)
-
-inline void OrderAccess::fence() {
-  if (os::is_MP()) {
-    (*os::fence_func)();
-  }
-}
-
-#endif // defined(COMPILER2) || defined(_LP64)
-
 #endif // _GNU_SOURCE
 
 inline jbyte    OrderAccess::load_acquire(volatile jbyte*   p) { return *p; }
--- a/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -532,7 +532,7 @@
     if (oldAct.sa_sigaction != signalHandler) {
       void* sighand = oldAct.sa_sigaction ? CAST_FROM_FN_PTR(void*, oldAct.sa_sigaction)
                                           : CAST_FROM_FN_PTR(void*, oldAct.sa_handler);
-      warning("Unexpected Signal %d occured under user-defined signal handler " INTPTR_FORMAT, sig, (intptr_t)sighand);
+      warning("Unexpected Signal %d occurred under user-defined signal handler " INTPTR_FORMAT, sig, (intptr_t)sighand);
     }
   }
 
@@ -619,7 +619,6 @@
 typedef jint  cmpxchg_func_t     (jint,  volatile jint*,  jint);
 typedef jlong cmpxchg_long_func_t(jlong, volatile jlong*, jlong);
 typedef jint  add_func_t         (jint,  volatile jint*);
-typedef void  fence_func_t       ();
 
 jint os::atomic_xchg_bootstrap(jint exchange_value, volatile jint* dest) {
   // try to use the stub:
@@ -681,25 +680,10 @@
   return (*dest) += add_value;
 }
 
-void os::fence_bootstrap() {
-  // try to use the stub:
-  fence_func_t* func = CAST_TO_FN_PTR(fence_func_t*, StubRoutines::fence_entry());
-
-  if (func != NULL) {
-    os::fence_func = func;
-    (*func)();
-    return;
-  }
-  assert(Threads::number_of_threads() == 0, "for bootstrap only");
-
-  // don't have to do anything for a single thread
-}
-
 xchg_func_t*         os::atomic_xchg_func         = os::atomic_xchg_bootstrap;
 cmpxchg_func_t*      os::atomic_cmpxchg_func      = os::atomic_cmpxchg_bootstrap;
 cmpxchg_long_func_t* os::atomic_cmpxchg_long_func = os::atomic_cmpxchg_long_bootstrap;
 add_func_t*          os::atomic_add_func          = os::atomic_add_bootstrap;
-fence_func_t*        os::fence_func               = os::fence_bootstrap;
 
 #endif // !_LP64 && !COMPILER2
 
--- a/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -29,13 +29,11 @@
   static jint  (*atomic_cmpxchg_func)     (jint,  volatile jint*,  jint);
   static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
   static jint  (*atomic_add_func)         (jint,  volatile jint*);
-  static void  (*fence_func)              ();
 
   static jint  atomic_xchg_bootstrap        (jint,  volatile jint*);
   static jint  atomic_cmpxchg_bootstrap     (jint,  volatile jint*,  jint);
   static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
   static jint  atomic_add_bootstrap         (jint,  volatile jint*);
-  static void  fence_bootstrap              ();
 
   static void setup_fpu() {}
 
--- a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,58 +25,107 @@
 # include "incls/_precompiled.incl"
 # include "incls/_vm_version_solaris_sparc.cpp.incl"
 
+# include <sys/auxv.h>
+# include <sys/auxv_SPARC.h>
 # include <sys/systeminfo.h>
 
+// We need to keep these here as long as we have to build on Solaris
+// versions before 10.
+#ifndef SI_ARCHITECTURE_32
+#define SI_ARCHITECTURE_32      516     /* basic 32-bit SI_ARCHITECTURE */
+#endif
+
+#ifndef SI_ARCHITECTURE_64
+#define SI_ARCHITECTURE_64      517     /* basic 64-bit SI_ARCHITECTURE */
+#endif
+
+static void do_sysinfo(int si, const char* string, int* features, int mask) {
+  char   tmp;
+  size_t bufsize = sysinfo(si, &tmp, 1);
+
+  // All SI defines used below must be supported.
+  guarantee(bufsize != -1, "must be supported");
+
+  char* buf = (char*) malloc(bufsize);
+
+  if (buf == NULL)
+    return;
+
+  if (sysinfo(si, buf, bufsize) == bufsize) {
+    // Compare the string.
+    if (strcmp(buf, string) == 0) {
+      *features |= mask;
+    }
+  }
+
+  free(buf);
+}
+
 int VM_Version::platform_features(int features) {
-  // We determine what sort of hardware we have via sysinfo(SI_ISALIST, ...).
-  // This isn't the best of all possible ways because there's not enough
-  // detail in the isa list it returns, but it's a bit less arcane than
-  // generating assembly code and an illegal instruction handler.  We used
-  // to generate a getpsr trap, but that's even more arcane.
-  //
-  // Another possibility would be to use sysinfo(SI_PLATFORM, ...), but
-  // that would require more knowledge here than is wise.
+  // getisax(2), SI_ARCHITECTURE_32, and SI_ARCHITECTURE_64 are
+  // supported on Solaris 10 and later.
+  if (os::Solaris::supports_getisax()) {
+#ifndef PRODUCT
+    if (PrintMiscellaneous && Verbose)
+      tty->print_cr("getisax(2) supported.");
+#endif
 
-  // isalist spec via 'man isalist' as of 01-Aug-2001
+    // Check 32-bit architecture.
+    do_sysinfo(SI_ARCHITECTURE_32, "sparc", &features, v8_instructions_m);
+
+    // Check 64-bit architecture.
+    do_sysinfo(SI_ARCHITECTURE_64, "sparcv9", &features, generic_v9_m);
+
+    // Extract valid instruction set extensions.
+    uint_t av;
+    uint_t avn = os::Solaris::getisax(&av, 1);
+    assert(avn == 1, "should only return one av");
 
-  char   tmp;
-  size_t bufsize  = sysinfo(SI_ISALIST, &tmp, 1);
-  char*  buf      = (char*)malloc(bufsize);
+    if (av & AV_SPARC_MUL32)  features |= hardware_mul32_m;
+    if (av & AV_SPARC_DIV32)  features |= hardware_div32_m;
+    if (av & AV_SPARC_FSMULD) features |= hardware_fsmuld_m;
+    if (av & AV_SPARC_V8PLUS) features |= v9_instructions_m;
+    if (av & AV_SPARC_POPC)   features |= hardware_popc_m;
+    if (av & AV_SPARC_VIS)    features |= vis1_instructions_m;
+    if (av & AV_SPARC_VIS2)   features |= vis2_instructions_m;
+  } else {
+    // getisax(2) failed, use the old legacy code.
+#ifndef PRODUCT
+    if (PrintMiscellaneous && Verbose)
+      tty->print_cr("getisax(2) not supported.");
+#endif
+
+    char   tmp;
+    size_t bufsize = sysinfo(SI_ISALIST, &tmp, 1);
+    char*  buf     = (char*) malloc(bufsize);
 
-  if (buf != NULL) {
-    if (sysinfo(SI_ISALIST, buf, bufsize) == bufsize) {
-      // Figure out what kind of sparc we have
-      char *sparc_string = strstr(buf, "sparc");
-      if (sparc_string != NULL) {            features |= v8_instructions_m;
-        if (sparc_string[5] == 'v') {
-          if (sparc_string[6] == '8') {
-            if (sparc_string[7] == '-')      features |= hardware_int_muldiv_m;
-            else if (sparc_string[7] == 'p') features |= generic_v9_m;
-            else                      features |= generic_v8_m;
-          } else if (sparc_string[6] == '9') features |= generic_v9_m;
+    if (buf != NULL) {
+      if (sysinfo(SI_ISALIST, buf, bufsize) == bufsize) {
+        // Figure out what kind of sparc we have
+        char *sparc_string = strstr(buf, "sparc");
+        if (sparc_string != NULL) {              features |= v8_instructions_m;
+          if (sparc_string[5] == 'v') {
+            if (sparc_string[6] == '8') {
+              if (sparc_string[7] == '-') {      features |= hardware_mul32_m;
+                                                 features |= hardware_div32_m;
+              } else if (sparc_string[7] == 'p') features |= generic_v9_m;
+              else                               features |= generic_v8_m;
+            } else if (sparc_string[6] == '9')   features |= generic_v9_m;
+          }
+        }
+
+        // Check for visualization instructions
+        char *vis = strstr(buf, "vis");
+        if (vis != NULL) {                       features |= vis1_instructions_m;
+          if (vis[3] == '2')                     features |= vis2_instructions_m;
         }
       }
-
-      // Check for visualization instructions
-      char *vis = strstr(buf, "vis");
-      if (vis != NULL) {              features |= vis1_instructions_m;
-        if (vis[3] == '2')            features |= vis2_instructions_m;
-      }
+      free(buf);
     }
-    free(buf);
   }
 
-  bufsize = sysinfo(SI_MACHINE, &tmp, 1);
-  buf     = (char*)malloc(bufsize);
-
-  if (buf != NULL) {
-    if (sysinfo(SI_MACHINE, buf, bufsize) == bufsize) {
-      if (strstr(buf, "sun4v") != NULL) {
-        features |= sun4v_m;
-      }
-    }
-    free(buf);
-  }
+  // Determine the machine type.
+  do_sysinfo(SI_MACHINE, "sun4v", &features, sun4v_m);
 
   return features;
 }
--- a/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -39,12 +39,14 @@
 // ThreadStackSize 320 allows TaggedStackInterpreter and a couple of test cases
 // to run while keeping the number of threads that can be created high.
 define_pd_global(intx, ThreadStackSize,          320);
-define_pd_global(intx, VMThreadStackSize,        256);
+define_pd_global(intx, VMThreadStackSize,        512);
 define_pd_global(intx, SurvivorRatio,            8);
 define_pd_global(uintx, JVMInvokeMethodSlack,    10*K);
 #endif // AMD64
 
 define_pd_global(intx, CompilerThreadStackSize,  0);
 
+// Only used on 64 bit platforms
+define_pd_global(uintx, HeapBaseMinAddress,      256*M);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -61,11 +61,8 @@
 #endif // AMD64
   }
   inline void _OrderAccess_fence() {
-#ifdef AMD64
-    __asm__ __volatile__ ("mfence":::"memory");
-#else
+    // Always use locked addl since mfence is sometimes expensive
     __asm__ volatile ("lock; addl $0,0(%%esp)" : : : "cc", "memory");
-#endif // AMD64
   }
 
 }
--- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -299,14 +299,18 @@
 
 }
 
+#endif // AMD64
+
 bool os::supports_sse() {
+#ifdef AMD64
+  return true;
+#else
   if (sse_status == SSE_UNKNOWN)
     check_for_sse_support();
   return sse_status == SSE_SUPPORTED;
+#endif // AMD64
 }
 
-#endif // AMD64
-
 bool os::is_allocatable(size_t bytes) {
 #ifdef AMD64
   return true;
@@ -690,7 +694,7 @@
     if (oldAct.sa_sigaction != signalHandler) {
       void* sighand = oldAct.sa_sigaction ? CAST_FROM_FN_PTR(void*,  oldAct.sa_sigaction)
                                           : CAST_FROM_FN_PTR(void*, oldAct.sa_handler);
-      warning("Unexpected Signal %d occured under user-defined signal handler %#lx", sig, (long)sighand);
+      warning("Unexpected Signal %d occurred under user-defined signal handler %#lx", sig, (long)sighand);
     }
   }
 
@@ -790,7 +794,6 @@
 typedef jint  cmpxchg_func_t     (jint,  volatile jint*,  jint);
 typedef jlong cmpxchg_long_func_t(jlong, volatile jlong*, jlong);
 typedef jint  add_func_t         (jint,  volatile jint*);
-typedef void  fence_func_t       ();
 
 jint os::atomic_xchg_bootstrap(jint exchange_value, volatile jint* dest) {
   // try to use the stub:
@@ -852,25 +855,10 @@
   return (*dest) += add_value;
 }
 
-void os::fence_bootstrap() {
-  // try to use the stub:
-  fence_func_t* func = CAST_TO_FN_PTR(fence_func_t*, StubRoutines::fence_entry());
-
-  if (func != NULL) {
-    os::fence_func = func;
-    (*func)();
-    return;
-  }
-  assert(Threads::number_of_threads() == 0, "for bootstrap only");
-
-  // don't have to do anything for a single thread
-}
-
 xchg_func_t*         os::atomic_xchg_func         = os::atomic_xchg_bootstrap;
 cmpxchg_func_t*      os::atomic_cmpxchg_func      = os::atomic_cmpxchg_bootstrap;
 cmpxchg_long_func_t* os::atomic_cmpxchg_long_func = os::atomic_cmpxchg_long_bootstrap;
 add_func_t*          os::atomic_add_func          = os::atomic_add_bootstrap;
-fence_func_t*        os::fence_func               = os::fence_bootstrap;
 
 extern "C" _solaris_raw_setup_fpu(address ptr);
 void os::setup_fpu() {
--- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,16 @@
   static jint  (*atomic_cmpxchg_func)     (jint,  volatile jint*,  jint);
   static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
   static jint  (*atomic_add_func)         (jint,  volatile jint*);
-  static void  (*fence_func)              ();
 
   static jint  atomic_xchg_bootstrap        (jint,  volatile jint*);
   static jint  atomic_cmpxchg_bootstrap     (jint,  volatile jint*,  jint);
   static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
   static jint  atomic_add_bootstrap         (jint,  volatile jint*);
-  static void  fence_bootstrap              ();
 
   static void setup_fpu();
+#endif // AMD64
+
   static bool supports_sse();
-#endif // AMD64
 
   static bool is_allocatable(size_t bytes);
 
--- a/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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/os_cpu/solaris_x86/vm/solaris_x86_64.il	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/solaris_x86/vm/solaris_x86_64.il	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -45,5 +45,7 @@
 
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
+// Only used on 64 bit platforms
+define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -46,7 +46,7 @@
 
 inline void OrderAccess::fence() {
 #ifdef AMD64
-  (*os::fence_func)();
+  StubRoutines_fence();
 #else
   if (os::is_MP()) {
     __asm {
--- a/src/os_cpu/windows_x86/vm/os_windows_x86.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/windows_x86/vm/os_windows_x86.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -196,7 +196,6 @@
 typedef jlong     cmpxchg_long_func_t    (jlong,    volatile jlong*, jlong);
 typedef jint      add_func_t             (jint,     volatile jint*);
 typedef intptr_t  add_ptr_func_t         (intptr_t, volatile intptr_t*);
-typedef void      fence_func_t           ();
 
 #ifdef AMD64
 
@@ -292,27 +291,11 @@
   return (*dest) += add_value;
 }
 
-void os::fence_bootstrap() {
-  // try to use the stub:
-  fence_func_t* func = CAST_TO_FN_PTR(fence_func_t*, StubRoutines::fence_entry());
-
-  if (func != NULL) {
-    os::fence_func = func;
-    (*func)();
-    return;
-  }
-  assert(Threads::number_of_threads() == 0, "for bootstrap only");
-
-  // don't have to do anything for a single thread
-}
-
-
 xchg_func_t*         os::atomic_xchg_func         = os::atomic_xchg_bootstrap;
 xchg_ptr_func_t*     os::atomic_xchg_ptr_func     = os::atomic_xchg_ptr_bootstrap;
 cmpxchg_func_t*      os::atomic_cmpxchg_func      = os::atomic_cmpxchg_bootstrap;
 add_func_t*          os::atomic_add_func          = os::atomic_add_bootstrap;
 add_ptr_func_t*      os::atomic_add_ptr_func      = os::atomic_add_ptr_bootstrap;
-fence_func_t*        os::fence_func               = os::fence_bootstrap;
 
 #endif // AMD64
 
--- a/src/os_cpu/windows_x86/vm/os_windows_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/windows_x86/vm/os_windows_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -35,9 +35,6 @@
   static jint      (*atomic_add_func)           (jint,      volatile jint*);
   static intptr_t  (*atomic_add_ptr_func)       (intptr_t,  volatile intptr_t*);
 
-  static void      (*fence_func)                ();
-
-
   static jint      atomic_xchg_bootstrap        (jint,      volatile jint*);
   static intptr_t  atomic_xchg_ptr_bootstrap    (intptr_t,  volatile intptr_t*);
 
@@ -53,8 +50,6 @@
 #ifdef AMD64
   static jint      atomic_add_bootstrap         (jint,      volatile jint*);
   static intptr_t  atomic_add_ptr_bootstrap     (intptr_t,  volatile intptr_t*);
-
-  static void      fence_bootstrap              ();
 #endif // AMD64
 
   static void setup_fpu();
--- a/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -68,6 +68,9 @@
     PVOID HandlerData;
 } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
 
+#if MSC_VER < 1500
+
+/* Not needed for VS2008 compiler, comes from winnt.h. */
 typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) (
     IN PEXCEPTION_RECORD ExceptionRecord,
     IN ULONG64 EstablisherFrame,
@@ -75,4 +78,6 @@
     IN OUT PDISPATCHER_CONTEXT DispatcherContext
 );
 
+#endif
+
 #endif // AMD64
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/Makefile	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,75 @@
+#
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+# 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.
+#  
+#
+PKGLIST = \
+com.sun.hotspot.tools.compiler
+#END PKGLIST
+
+FILELIST = com/sun/hotspot/tools/compiler/*.java
+
+ifneq "x$(ALT_BOOTDIR)" "x"
+  BOOTDIR := $(ALT_BOOTDIR)
+endif
+
+ifeq "x$(BOOTDIR)" "x"
+  JDK_HOME := $(shell dirname $(shell which java))/..
+else
+  JDK_HOME := $(BOOTDIR)
+endif
+
+isUnix := $(shell test -r c:/; echo $$?)
+
+ifeq "$(isUnix)" "1"
+    CPS := :
+else
+    CPS := ";"
+endif
+
+SRC_DIR    = src
+BUILD_DIR  = build
+OUTPUT_DIR = $(BUILD_DIR)/classes
+
+# gnumake 3.78.1 does not accept the *s, 
+# so use the shell to expand them
+ALLFILES := $(patsubst %,$(SRC_DIR)/%,$(FILELIST))
+ALLFILES := $(shell /bin/ls $(ALLFILES))
+
+JAVAC = $(JDK_HOME)/bin/javac
+JAR = $(JDK_HOME)/bin/jar
+
+# Tagging it on because there's no reason not to run it
+all: logc.jar
+
+logc.jar: filelist manifest.mf
+	@mkdir -p $(OUTPUT_DIR)
+	$(JAVAC) -source 1.5 -deprecation -sourcepath $(SRC_DIR) -d $(OUTPUT_DIR) @filelist
+	$(JAR) cvfm logc.jar manifest.mf -C $(OUTPUT_DIR) com
+
+.PHONY: filelist
+filelist: $(ALLFILES)
+	@rm -f $@
+	@echo $(ALLFILES) > $@
+
+clean::
+	rm -rf filelist logc.jar
+	rm -rf $(BUILD_DIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/README	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,18 @@
+This is a very rough tool for parsing -XX:+LogCompilation output.
+It's main purpose is to recreate output similar to
+-XX:+PrintCompilation -XX:+PrintInlining output from a debug JVM.  It
+requires a 1.5 JDK to build and simply typing make should build it.
+
+It produces a jar file, logc.jar, that can be run on the
+hotspot.log from LogCompilation output like this:
+
+  java -jar logc.jar hotspot.log
+
+This will produce something like the normal PrintCompilation output.
+Adding the -i option with also report inlining like PrintInlining.
+
+More information about the LogCompilation output can be found at 
+
+http://wikis.sun.com/display/HotSpotInternals/LogCompilation+overview
+http://wikis.sun.com/display/HotSpotInternals/PrintCompilation
+http://wikis.sun.com/display/HotSpotInternals/LogCompilation+tool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/manifest.mf	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,1 @@
+Main-Class: com.sun.hotspot.tools.compiler.LogCompilation
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/BasicLogEvent.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+
+/**
+ *
+ * @author never
+ */
+public abstract class BasicLogEvent implements LogEvent {
+
+    protected final String id;
+    protected final double start;
+    protected double end;
+    protected Compilation compilation;
+
+    BasicLogEvent(double start, String id) {
+        this.start = start;
+        this.end = start;
+        this.id = id;
+    }
+
+    public double getStart() {
+        return start;
+    }
+
+    public double getEnd() {
+        return end;
+    }
+
+    public void setEnd(double end) {
+        this.end = end;
+    }
+
+    public double getElapsedTime() {
+        return ((int) ((getEnd() - getStart()) * 1000)) / 1000.0;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public Compilation getCompilation() {
+        return compilation;
+    }
+
+    public void setCompilation(Compilation compilation) {
+        this.compilation = compilation;
+    }
+
+    abstract public void print(PrintStream stream);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,183 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CallSite {
+
+    private int bci;
+    private Method method;
+    private int count;
+    private String receiver;
+    private int receiver_count;
+    private String reason;
+    private List<CallSite> calls;
+
+    CallSite() {
+    }
+
+    CallSite(int bci, Method m) {
+        this.bci = bci;
+        this.method = m;
+    }
+
+    void add(CallSite site) {
+        if (getCalls() == null) {
+            setCalls(new ArrayList<CallSite>());
+        }
+        getCalls().add(site);
+    }
+
+    CallSite last() {
+        return last(-1);
+    }
+
+    CallSite last(int fromEnd) {
+        return getCalls().get(getCalls().size() + fromEnd);
+    }
+
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        if (getReason() == null) {
+            sb.append("  @ " + getBci() + " " + getMethod());
+        } else {
+            sb.append("- @ " + getBci() + " " + getMethod() + " " + getReason());
+        }
+        sb.append("\n");
+        if (getCalls() != null) {
+            for (CallSite site : getCalls()) {
+                sb.append(site);
+                sb.append("\n");
+            }
+        }
+        return sb.toString();
+    }
+
+    public void print(PrintStream stream) {
+        print(stream, 0);
+    }
+
+    void emit(PrintStream stream, int indent) {
+        for (int i = 0; i < indent; i++) {
+            stream.print(' ');
+        }
+    }
+    private static boolean compat = true;
+
+    public void print(PrintStream stream, int indent) {
+        emit(stream, indent);
+        String m = getMethod().getHolder().replace('/', '.') + "::" + getMethod().getName();
+        if (getReason() == null) {
+            stream.println("  @ " + getBci() + " " + m + " (" + getMethod().getBytes() + " bytes)");
+
+        } else {
+            if (isCompat()) {
+                stream.println("  @ " + getBci() + " " + m + " " + getReason());
+            } else {
+                stream.println("- @ " + getBci() + " " + m +
+                        " (" + getMethod().getBytes() + " bytes) " + getReason());
+            }
+        }
+        if (getReceiver() != null) {
+            emit(stream, indent + 3);
+            //                 stream.println("type profile " + method.holder + " -> " + receiver + " (" +
+            //                                receiver_count + "/" + count + "," + (receiver_count * 100 / count) + "%)");
+            stream.println("type profile " + getMethod().getHolder() + " -> " + getReceiver() + " (" +
+                    (getReceiverCount() * 100 / getCount()) + "%)");
+        }
+        if (getCalls() != null) {
+            for (CallSite site : getCalls()) {
+                site.print(stream, indent + 2);
+            }
+        }
+    }
+
+    public int getBci() {
+        return bci;
+    }
+
+    public void setBci(int bci) {
+        this.bci = bci;
+    }
+
+    public Method getMethod() {
+        return method;
+    }
+
+    public void setMethod(Method method) {
+        this.method = method;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public String getReceiver() {
+        return receiver;
+    }
+
+    public void setReceiver(String receiver) {
+        this.receiver = receiver;
+    }
+
+    public int getReceiverCount() {
+        return receiver_count;
+    }
+
+    public void setReceiver_count(int receiver_count) {
+        this.receiver_count = receiver_count;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public List<CallSite> getCalls() {
+        return calls;
+    }
+
+    public void setCalls(List<CallSite> calls) {
+        this.calls = calls;
+    }
+
+    public static boolean isCompat() {
+        return compat;
+    }
+
+    public static void setCompat(boolean aCompat) {
+        compat = aCompat;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Compilation.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+
+public class Compilation implements LogEvent {
+
+    private int id;
+    private boolean osr;
+    private Method method;
+    private CallSite call = new CallSite();
+    private int osrBci;
+    private String icount;
+    private String bcount;
+    private String special;
+    private double start;
+    private double end;
+    private int attempts;
+    private NMethod nmethod;
+    private ArrayList<Phase> phases = new ArrayList<Phase>(4);
+    private String failureReason;
+
+    Compilation(int id) {
+        this.id = id;
+    }
+
+    Phase getPhase(String s) {
+        for (Phase p : getPhases()) {
+            if (p.getName().equals(s)) {
+                return p;
+            }
+        }
+        return null;
+    }
+
+    double getRegallocTime() {
+        return getPhase("regalloc").getElapsedTime();
+    }
+
+    public double getStart() {
+        return start;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getId());
+        sb.append(" ");
+        sb.append(getMethod());
+        sb.append(" ");
+        sb.append(getIcount());
+        sb.append("+");
+        sb.append(getBcount());
+        sb.append("\n");
+        for (CallSite site : getCall().getCalls()) {
+            sb.append(site);
+            sb.append("\n");
+        }
+        return sb.toString();
+    }
+
+    public void printShort(PrintStream stream) {
+        if (getMethod() == null) {
+            stream.println(getSpecial());
+        } else {
+            int bc = isOsr() ? getOsr_bci() : -1;
+            stream.print(getId() + getMethod().decodeFlags(bc) + getMethod().format(bc));
+        }
+    }
+
+    public void print(PrintStream stream) {
+        print(stream, 0, false);
+    }
+
+    public void print(PrintStream stream, boolean printInlining) {
+        print(stream, 0, printInlining);
+    }
+
+    public void print(PrintStream stream, int indent, boolean printInlining) {
+        if (getMethod() == null) {
+            stream.println(getSpecial());
+        } else {
+            int bc = isOsr() ? getOsr_bci() : -1;
+            stream.print(getId() + getMethod().decodeFlags(bc) + getMethod().format(bc));
+            stream.println();
+            if (getFailureReason() != null) {
+                stream.println("COMPILE FAILED " + getFailureReason());
+            }
+            if (printInlining && call.getCalls() != null) {
+                for (CallSite site : call.getCalls()) {
+                    site.print(stream, indent + 2);
+                }
+            }
+        }
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public boolean isOsr() {
+        return osr;
+    }
+
+    public void setOsr(boolean osr) {
+        this.osr = osr;
+    }
+
+    public int getOsr_bci() {
+        return osrBci;
+    }
+
+    public void setOsr_bci(int osrBci) {
+        this.osrBci = osrBci;
+    }
+
+    public String getIcount() {
+        return icount;
+    }
+
+    public void setICount(String icount) {
+        this.icount = icount;
+    }
+
+    public String getBcount() {
+        return bcount;
+    }
+
+    public void setBCount(String bcount) {
+        this.bcount = bcount;
+    }
+
+    public String getSpecial() {
+        return special;
+    }
+
+    public void setSpecial(String special) {
+        this.special = special;
+    }
+
+    public void setStart(double start) {
+        this.start = start;
+    }
+
+    public double getEnd() {
+        return end;
+    }
+
+    public void setEnd(double end) {
+        this.end = end;
+    }
+
+    public int getAttempts() {
+        return attempts;
+    }
+
+    public void setAttempts(int attempts) {
+        this.attempts = attempts;
+    }
+
+    public NMethod getNMethod() {
+        return nmethod;
+    }
+
+    public void setNMethod(NMethod NMethod) {
+        this.nmethod = NMethod;
+    }
+
+    public ArrayList<Phase> getPhases() {
+        return phases;
+    }
+
+    public void setPhases(ArrayList<Phase> phases) {
+        this.setPhases(phases);
+    }
+
+    public String getFailureReason() {
+        return failureReason;
+    }
+
+    public void setFailureReason(String failureReason) {
+        this.failureReason = failureReason;
+    }
+
+    public Method getMethod() {
+        return method;
+    }
+
+    public void setMethod(Method method) {
+        this.method = method;
+    }
+
+    public CallSite getCall() {
+        return call;
+    }
+
+    public void setCall(CallSite call) {
+        this.call = call;
+    }
+
+    public double getElapsedTime() {
+        return end - start;
+    }
+
+    public Compilation getCompilation() {
+        return this;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Constants.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+interface Constants {
+    static final int  JVM_ACC_PUBLIC        = 0x0001;  /* visible to everyone */
+    static final int  JVM_ACC_PRIVATE       = 0x0002;  /* visible only to the defining class */
+    static final int  JVM_ACC_PROTECTED     = 0x0004;  /* visible to subclasses */
+    static final int  JVM_ACC_STATIC        = 0x0008;  /* instance variable is static */
+    static final int  JVM_ACC_FINAL         = 0x0010;  /* no further subclassing, overriding */
+    static final int  JVM_ACC_SYNCHRONIZED  = 0x0020;  /* wrap method call in monitor lock */
+    static final int  JVM_ACC_SUPER         = 0x0020;  /* funky handling of invokespecial */
+    static final int  JVM_ACC_VOLATILE      = 0x0040;  /* can not cache in registers */
+    static final int  JVM_ACC_BRIDGE        = 0x0040;  /* bridge method generated by compiler */
+    static final int  JVM_ACC_TRANSIENT     = 0x0080;  /* not persistent */
+    static final int  JVM_ACC_VARARGS       = 0x0080;  /* method declared with variable number of args */
+    static final int  JVM_ACC_NATIVE        = 0x0100;  /* implemented in C */
+    static final int  JVM_ACC_INTERFACE     = 0x0200;  /* class is an interface */
+    static final int  JVM_ACC_ABSTRACT      = 0x0400;  /* no definition provided */
+    static final int  JVM_ACC_STRICT        = 0x0800;  /* strict floating point */
+    static final int  JVM_ACC_SYNTHETIC     = 0x1000;  /* compiler-generated class, method or field */
+    static final int  JVM_ACC_ANNOTATION    = 0x2000;  /* annotation type */
+    static final int  JVM_ACC_ENUM          = 0x4000;  /* field is declared as element of enum */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCleanupReader.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,212 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.*;
+import java.util.regex.*;
+
+/**
+ * This class is a filter class to deal with malformed XML that used
+ * to be produced by the JVM when generating LogCompilation.  In 1.6
+ * and later releases it shouldn't be required.
+ * @author never
+ */
+
+class LogCleanupReader extends Reader {
+    private Reader reader;
+
+    private char[] buffer = new char[4096];
+
+    private int bufferCount;
+
+    private int bufferOffset;
+
+    private char[] line = new char[1024];
+
+    private int index;
+
+    private int length;
+
+    private char[] one = new char[1];
+
+    LogCleanupReader(Reader r) {
+        reader = r;
+    }
+
+    static final private Matcher pattern = Pattern.compile(".+ compile_id='[0-9]+'.*( compile_id='[0-9]+)").matcher("");
+    static final private Matcher pattern2 = Pattern.compile("' (C[12]) compile_id=").matcher("");
+    static final private Matcher pattern3 = Pattern.compile("'(destroy_vm)/").matcher("");
+
+    private void fill() throws IOException {
+        rawFill();
+        if (length != -1) {
+            boolean changed = false;
+            String s = new String(line, 0, length);
+            String orig = s;
+
+            pattern2.reset(s);
+            if (pattern2.find()) {
+                s = s.substring(0, pattern2.start(1)) + s.substring(pattern2.end(1) + 1);
+                changed = true;
+            }
+
+            pattern.reset(s);
+            if (pattern.lookingAt()) {
+                s = s.substring(0, pattern.start(1)) + s.substring(pattern.end(1) + 1);
+                changed = true;
+            }
+
+            pattern3.reset(s);
+            if (pattern3.find()) {
+                s = s.substring(0, pattern3.start(1)) + s.substring(pattern3.end(1));
+                changed = true;
+            }
+
+            if (changed) {
+                s.getChars(0, s.length(), line, 0);
+                length = s.length();
+            }
+        }
+    }
+
+    private void rawFill() throws IOException {
+        if (bufferCount == -1) {
+            length = -1;
+            return;
+        }
+
+        int i = 0;
+        boolean fillNonEOL = true;
+        outer:
+        while (true) {
+            if (fillNonEOL) {
+                int p;
+                for (p = bufferOffset; p < bufferCount; p++) {
+                    char c = buffer[p];
+                    if (c == '\r' || c == '\n') {
+                        bufferOffset = p;
+                        fillNonEOL = false;
+                        continue outer;
+                    }
+                    if (i >= line.length) {
+                        // copy and enlarge the line array
+                        char[] newLine = new char[line.length * 2];
+                        System.arraycopy(line, 0, newLine, 0, line.length);
+                        line = newLine;
+                    }
+                    line[i++] = c;
+                }
+                bufferOffset = p;
+            } else {
+                int p;
+                for (p = bufferOffset; p < bufferCount; p++) {
+                    char c = buffer[p];
+                    if (c != '\r' && c != '\n') {
+                        bufferOffset = p;
+                        length = i;
+                        index = 0;
+                        return;
+                    }
+                    line[i++] = c;
+                }
+                bufferOffset = p;
+            }
+            if (bufferCount == -1) {
+                if (i == 0) {
+                    length = -1;
+                } else {
+                    length = i;
+                }
+                index = 0;
+                return;
+            }
+            if (bufferOffset != bufferCount) {
+                System.out.println(bufferOffset);
+                System.out.println(bufferCount);
+                throw new InternalError("how did we get here");
+            }
+            // load more data and try again.
+            bufferCount = reader.read(buffer, 0, buffer.length);
+            bufferOffset = 0;
+        }
+    }
+
+    public int read() throws java.io.IOException {
+        read(one, 0, 1);
+        return one[0];
+    }
+
+    public int read(char[] buffer) throws java.io.IOException {
+        return read(buffer, 0, buffer.length);
+    }
+
+    public int read(char[] b, int off, int len) throws java.io.IOException {
+        if (length == -1) {
+            return -1;
+        }
+
+        if (index == length) {
+            fill();
+            if (length == -1) {
+                return -1;
+            }
+        }
+        int n = Math.min(length - index, Math.min(b.length - off, len));
+        // System.out.printf("%d %d %d %d %d\n", index, length, off, len, n);
+        System.arraycopy(line, index, b, off, n);
+        index += n;
+        return n;
+    }
+
+    public long skip(long n) throws java.io.IOException {
+        long result = n;
+        while (n-- > 0) read();
+        return result;
+    }
+
+    public boolean ready() throws java.io.IOException {
+        return reader.ready() || (line != null && length > 0);
+    }
+
+    public boolean markSupported() {
+        return false;
+    }
+
+    public void mark(int unused) throws java.io.IOException {
+        throw new UnsupportedOperationException("mark not supported");
+    }
+
+    public void reset() throws java.io.IOException {
+        reader.reset();
+        line = null;
+        index = 0;
+    }
+
+    public void close() throws java.io.IOException {
+        reader.close();
+        line = null;
+        index = 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCompilation.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * The main command line driver of a parser for LogCompilation output.
+ * @author never
+ */
+
+package com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+import java.util.*;
+import org.xml.sax.*;
+import org.xml.sax.helpers.*;
+
+public class LogCompilation extends DefaultHandler implements ErrorHandler, Constants {
+
+    public static void usage(int exitcode) {
+        System.out.println("Usage: LogCompilation [ -v ] [ -c ] [ -s ] [ -e | -N ] file1 ...");
+        System.out.println("  -c:   clean up malformed 1.5 xml");
+        System.out.println("  -i:   print inlining decisions");
+        System.out.println("  -S:   print compilation statistics");
+        System.out.println("  -s:   sort events by start time");
+        System.out.println("  -e:   sort events by elapsed time");
+        System.out.println("  -N:   sort events by name and start");
+        System.exit(exitcode);
+    }
+
+    public static void main(String[] args) throws Exception {
+        Comparator<LogEvent> defaultSort = LogParser.sortByStart;
+        boolean statistics = false;
+        boolean printInlining = false;
+        boolean cleanup = false;
+        int index = 0;
+
+        while (args.length > index) {
+            if (args[index].equals("-e")) {
+                defaultSort = LogParser.sortByElapsed;
+                index++;
+            } else if (args[index].equals("-n")) {
+                defaultSort = LogParser.sortByNameAndStart;
+                index++;
+            } else if (args[index].equals("-s")) {
+                defaultSort = LogParser.sortByStart;
+                index++;
+            } else if (args[index].equals("-c")) {
+                cleanup = true;
+                index++;
+            } else if (args[index].equals("-S")) {
+                statistics = true;
+                index++;
+            } else if (args[index].equals("-h")) {
+                usage(0);
+            } else if (args[index].equals("-i")) {
+                printInlining = true;
+                index++;
+            } else {
+                break;
+            }
+        }
+
+        if (index >= args.length) {
+            usage(1);
+        }
+
+        while (index < args.length) {
+            ArrayList<LogEvent> events = LogParser.parse(args[index], cleanup);
+
+            if (statistics) {
+                printStatistics(events, System.out);
+            } else {
+                Collections.sort(events, defaultSort);
+                for (LogEvent c : events) {
+                    if (printInlining && c instanceof Compilation) {
+                        Compilation comp = (Compilation)c;
+                        comp.print(System.out, true);
+                    } else {
+                        c.print(System.out);
+                    }
+                }
+            }
+            index++;
+        }
+    }
+
+    public static void printStatistics(ArrayList<LogEvent> events, PrintStream out) {
+        long cacheSize = 0;
+        long maxCacheSize = 0;
+        int nmethodsCreated = 0;
+        int nmethodsLive = 0;
+        int[] attempts = new int[32];
+        double regallocTime = 0;
+        int maxattempts = 0;
+
+        LinkedHashMap<String, Double> phaseTime = new LinkedHashMap<String, Double>(7);
+        LinkedHashMap<String, Integer> phaseNodes = new LinkedHashMap<String, Integer>(7);
+        double elapsed = 0;
+
+        for (LogEvent e : events) {
+            if (e instanceof Compilation) {
+                Compilation c = (Compilation) e;
+                c.printShort(out);
+                out.printf(" %6.4f\n", c.getElapsedTime());
+                attempts[c.getAttempts()]++;
+                maxattempts = Math.max(maxattempts,c.getAttempts());
+                elapsed += c.getElapsedTime();
+                for (Phase phase : c.getPhases()) {
+                    out.printf("\t%s %6.4f\n", phase.getName(), phase.getElapsedTime());
+                    Double v = phaseTime.get(phase.getName());
+                    if (v == null) {
+                        v = Double.valueOf(0.0);
+                    }
+                    phaseTime.put(phase.getName(), Double.valueOf(v.doubleValue() + phase.getElapsedTime()));
+
+                    Integer v2 = phaseNodes.get(phase.getName());
+                    if (v2 == null) {
+                        v2 = Integer.valueOf(0);
+                    }
+                    phaseNodes.put(phase.getName(), Integer.valueOf(v2.intValue() + phase.getNodes()));
+                }
+            } else if (e instanceof MakeNotEntrantEvent) {
+                MakeNotEntrantEvent mne = (MakeNotEntrantEvent) e;
+                NMethod nm = mne.getNMethod();
+                if (mne.isZombie()) {
+                    if (nm == null) {
+                        System.err.println(mne.getId());
+                    }
+                    cacheSize -= nm.getSize();
+                    nmethodsLive--;
+                }
+            } else if (e instanceof NMethod) {
+                nmethodsLive++;
+                nmethodsCreated++;
+                NMethod nm = (NMethod) e;
+                cacheSize += nm.getSize();
+                maxCacheSize = Math.max(cacheSize, maxCacheSize);
+            }
+        }
+        out.printf("NMethods: %d created %d live %d bytes (%d peak) in the code cache\n",
+                          nmethodsCreated, nmethodsLive, cacheSize, maxCacheSize);
+        out.println("Phase times:");
+        for (String name : phaseTime.keySet()) {
+            Double v = phaseTime.get(name);
+            Integer v2 = phaseNodes.get(name);
+            out.printf("%20s %6.4f %d\n", name, v.doubleValue(), v2.intValue());
+        }
+        out.printf("%20s %6.4f\n", "total", elapsed);
+
+        if (maxattempts > 0) {
+            out.println("Distribution of regalloc passes:");
+            for (int i = 0; i <= maxattempts; i++) {
+                out.printf("%2d %8d\n", i, attempts[i]);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogEvent.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+import java.util.*;
+
+public interface LogEvent {
+    public double getStart();
+
+    public double getElapsedTime();
+
+    public Compilation getCompilation();
+
+    public void print(PrintStream stream);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,430 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * A SAX based parser of LogCompilation output from HotSpot.  It takes a complete
+ * @author never
+ */
+
+package com.sun.hotspot.tools.compiler;
+
+import java.io.FileReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Stack;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class LogParser extends DefaultHandler implements ErrorHandler, Constants {
+
+    static final HashMap<String, String> typeMap;
+    static {
+        typeMap = new HashMap<String, String>();
+        typeMap.put("[I", "int[]");
+        typeMap.put("[C", "char[]");
+        typeMap.put("[Z", "boolean[]");
+        typeMap.put("[L", "Object[]");
+        typeMap.put("[B", "byte[]");
+    }
+
+    static Comparator<LogEvent> sortByStart = new Comparator<LogEvent>() {
+
+        public int compare(LogEvent a, LogEvent b) {
+            double difference = (a.getStart() - b.getStart());
+            if (difference < 0) {
+                return -1;
+            }
+            if (difference > 0) {
+                return 1;
+            }
+            return 0;
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return 7;
+        }
+    };
+    static Comparator<LogEvent> sortByNameAndStart = new Comparator<LogEvent>() {
+
+        public int compare(LogEvent a, LogEvent b) {
+            Compilation c1 = a.getCompilation();
+            Compilation c2 = b.getCompilation();
+            if (c1 != null && c2 != null) {
+                int result = c1.getMethod().toString().compareTo(c2.getMethod().toString());
+                if (result != 0) {
+                    return result;
+                }
+            }
+            double difference = (a.getStart() - b.getStart());
+            if (difference < 0) {
+                return -1;
+            }
+            if (difference > 0) {
+                return 1;
+            }
+            return 0;
+        }
+
+        public boolean equals(Object other) {
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return 7;
+        }
+    };
+    static Comparator<LogEvent> sortByElapsed = new Comparator<LogEvent>() {
+
+        public int compare(LogEvent a, LogEvent b) {
+            double difference = (a.getElapsedTime() - b.getElapsedTime());
+            if (difference < 0) {
+                return -1;
+            }
+            if (difference > 0) {
+                return 1;
+            }
+            return 0;
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return 7;
+        }
+    };
+
+    private ArrayList<LogEvent> events = new ArrayList<LogEvent>();
+
+    private HashMap<String, String> types = new HashMap<String, String>();
+    private HashMap<String, Method> methods = new HashMap<String, Method>();
+    private LinkedHashMap<String, NMethod> nmethods = new LinkedHashMap<String, NMethod>();
+    private HashMap<String, Compilation> compiles = new HashMap<String, Compilation>();
+    private String failureReason;
+    private int bci;
+    private Stack<CallSite> scopes = new Stack<CallSite>();
+    private Compilation compile;
+    private CallSite site;
+    private Stack<Phase> phaseStack = new Stack<Phase>();
+    private UncommonTrapEvent currentTrap;
+
+    long parseLong(String l) {
+        try {
+            return Long.decode(l).longValue();
+        } catch (NumberFormatException nfe) {
+            int split = l.length() - 8;
+            String s1 = "0x" + l.substring(split);
+            String s2 = l.substring(0, split);
+            long v1 = Long.decode(s1).longValue() & 0xffffffffL;
+            long v2 = (Long.decode(s2).longValue() & 0xffffffffL) << 32;
+            if (!l.equals("0x" + Long.toHexString(v1 + v2))) {
+                System.out.println(l);
+                System.out.println(s1);
+                System.out.println(s2);
+                System.out.println(v1);
+                System.out.println(v2);
+                System.out.println(Long.toHexString(v1 + v2));
+                throw new InternalError("bad conversion");
+            }
+            return v1 + v2;
+        }
+    }
+
+    public static ArrayList<LogEvent> parse(String file, boolean cleanup) throws Exception {
+        return parse(new FileReader(file), cleanup);
+    }
+
+    public static ArrayList<LogEvent> parse(Reader reader, boolean cleanup) throws Exception {
+        // Create the XML input factory
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+
+        // Create the XML LogEvent reader
+        SAXParser p = factory.newSAXParser();
+
+        if (cleanup) {
+            // some versions of the log have slightly malformed XML, so clean it
+            // up before passing it to SAX
+            reader = new LogCleanupReader(reader);
+        }
+
+        LogParser log = new LogParser();
+        p.parse(new InputSource(reader), log);
+
+        // Associate compilations with their NMethods
+        for (NMethod nm : log.nmethods.values()) {
+            Compilation c = log.compiles.get(nm.getId());
+            nm.setCompilation(c);
+            // Native wrappers for methods don't have a compilation
+            if (c != null) {
+                c.setNMethod(nm);
+            }
+        }
+
+        // Initially we want the LogEvent log sorted by timestamp
+        Collections.sort(log.events, sortByStart);
+
+        return log.events;
+    }
+
+    String search(Attributes attr, String name) {
+        return search(attr, name, null);
+    }
+
+    String search(Attributes attr, String name, String defaultValue) {
+        String result = attr.getValue(name);
+        if (result != null) {
+            return result;
+        }
+        if (defaultValue != null) {
+            return defaultValue;
+        }
+        for (int i = 0; i < attr.getLength(); i++) {
+            System.out.println(attr.getQName(i) + " " + attr.getValue(attr.getQName(i)));
+        }
+        throw new InternalError("can't find " + name);
+    }
+    int indent = 0;
+    String compile_id;
+
+    String type(String id) {
+        String result = types.get(id);
+        if (result == null) {
+            throw new InternalError(id);
+        }
+        String remapped = typeMap.get(result);
+        if (remapped != null) {
+            return remapped;
+        }
+        return result;
+    }
+
+    void type(String id, String name) {
+        assert type(id) == null;
+        types.put(id, name);
+    }
+
+    Method method(String id) {
+        Method result = methods.get(id);
+        if (result == null) {
+            throw new InternalError(id);
+        }
+        return result;
+    }
+
+    public String makeId(Attributes atts) {
+        String id = atts.getValue("compile_id");
+        String kind = atts.getValue("kind");
+        if (kind != null && kind.equals("osr")) {
+            id += "%";
+        }
+        return id;
+    }
+
+    @Override
+    public void startElement(String uri,
+            String localName,
+            String qname,
+            Attributes atts) {
+        if (qname.equals("phase")) {
+            Phase p = new Phase(search(atts, "name"),
+                    Double.parseDouble(search(atts, "stamp")),
+                    Integer.parseInt(search(atts, "nodes")));
+            phaseStack.push(p);
+        } else if (qname.equals("phase_done")) {
+            Phase p = phaseStack.pop();
+            p.setEndNodes(Integer.parseInt(search(atts, "nodes")));
+            p.setEnd(Double.parseDouble(search(atts, "stamp")));
+            compile.getPhases().add(p);
+        } else if (qname.equals("task")) {
+            compile = new Compilation(Integer.parseInt(search(atts, "compile_id", "-1")));
+            compile.setStart(Double.parseDouble(search(atts, "stamp")));
+            compile.setICount(search(atts, "count", "0"));
+            compile.setBCount(search(atts, "backedge_count", "0"));
+
+            String method = atts.getValue("method");
+            int space = method.indexOf(' ');
+            method = method.substring(0, space) + "::" +
+                    method.substring(space + 1, method.indexOf(' ', space + 1) + 1);
+            String compiler = atts.getValue("compiler");
+            if (compiler == null) {
+                compiler = "";
+            }
+            String kind = atts.getValue("compile_kind");
+            if (kind == null) {
+                kind = "normal";
+            }
+            if (kind.equals("osr")) {
+                compile.setOsr(true);
+                compile.setOsr_bci(Integer.parseInt(search(atts, "osr_bci")));
+            } else if (kind.equals("c2i")) {
+                compile.setSpecial("--- adapter " + method);
+            } else {
+                compile.setSpecial(compile.getId() + " " + method + " (0 bytes)");
+            }
+            events.add(compile);
+            compiles.put(makeId(atts), compile);
+        } else if (qname.equals("type")) {
+            type(search(atts, "id"), search(atts, "name"));
+        } else if (qname.equals("bc")) {
+            bci = Integer.parseInt(search(atts, "bci"));
+        } else if (qname.equals("klass")) {
+            type(search(atts, "id"), search(atts, "name"));
+        } else if (qname.equals("method")) {
+            String id = search(atts, "id");
+            Method m = new Method();
+            m.setHolder(type(search(atts, "holder")));
+            m.setName(search(atts, "name"));
+            m.setReturnType(type(search(atts, "return")));
+            m.setArguments(search(atts, "arguments", "void"));
+            m.setBytes(search(atts, "bytes"));
+            m.setIICount(search(atts, "iicount"));
+            m.setFlags(search(atts, "flags"));
+            methods.put(id, m);
+        } else if (qname.equals("call")) {
+            site = new CallSite(bci, method(search(atts, "method")));
+            site.setCount(Integer.parseInt(search(atts, "count")));
+            String receiver = atts.getValue("receiver");
+            if (receiver != null) {
+                site.setReceiver(type(receiver));
+                site.setReceiver_count(Integer.parseInt(search(atts, "receiver_count")));
+            }
+            scopes.peek().add(site);
+        } else if (qname.equals("regalloc")) {
+            compile.setAttempts(Integer.parseInt(search(atts, "attempts")));
+        } else if (qname.equals("inline_fail")) {
+            scopes.peek().last().setReason(search(atts, "reason"));
+        } else if (qname.equals("failure")) {
+            failureReason = search(atts, "reason");
+        } else if (qname.equals("task_done")) {
+            compile.setEnd(Double.parseDouble(search(atts, "stamp")));
+            if (Integer.parseInt(search(atts, "success")) == 0) {
+                compile.setFailureReason(failureReason);
+            }
+        } else if (qname.equals("make_not_entrant")) {
+            String id = makeId(atts);
+            NMethod nm = nmethods.get(id);
+            if (nm == null) throw new InternalError();
+            LogEvent e = new MakeNotEntrantEvent(Double.parseDouble(search(atts, "stamp")), id,
+                                                 atts.getValue("zombie") != null, nm);
+            events.add(e);
+        } else if (qname.equals("uncommon_trap")) {
+            String id = atts.getValue("compile_id");
+            if (id != null) {
+                id = makeId(atts);
+                currentTrap = new UncommonTrapEvent(Double.parseDouble(search(atts, "stamp")),
+                        id,
+                        atts.getValue("reason"),
+                        atts.getValue("action"),
+                        Integer.parseInt(search(atts, "count", "0")));
+                events.add(currentTrap);
+            } else {
+                // uncommon trap inserted during parsing.
+                // ignore for now
+            }
+        } else if (qname.equals("jvms")) {
+            // <jvms bci='4' method='java/io/DataInputStream readChar ()C' bytes='40' count='5815' iicount='20815'/>
+            if (currentTrap != null) {
+                currentTrap.addJVMS(atts.getValue("method"), Integer.parseInt(atts.getValue("bci")));
+            } else {
+                System.err.println("Missing uncommon_trap for jvms");
+            }
+        } else if (qname.equals("nmethod")) {
+            String id = makeId(atts);
+            NMethod nm = new NMethod(Double.parseDouble(search(atts, "stamp")),
+                    id,
+                    parseLong(atts.getValue("address")),
+                    parseLong(atts.getValue("size")));
+            nmethods.put(id, nm);
+            events.add(nm);
+        } else if (qname.equals("parse")) {
+            Method m = method(search(atts, "method"));
+            if (scopes.size() == 0) {
+                compile.setMethod(m);
+                scopes.push(compile.getCall());
+            } else {
+                if (site.getMethod() == m) {
+                    scopes.push(site);
+                } else if (scopes.peek().getCalls().size() > 2 && m == scopes.peek().last(-2).getMethod()) {
+                    scopes.push(scopes.peek().last(-2));
+                } else {
+                    System.out.println(site.getMethod());
+                    System.out.println(m);
+                    throw new InternalError("call site and parse don't match");
+                }
+            }
+        }
+    }
+
+    @Override
+    public void endElement(String uri,
+            String localName,
+            String qname) {
+        if (qname.equals("parse")) {
+            indent -= 2;
+            scopes.pop();
+        } else if (qname.equals("uncommon_trap")) {
+            currentTrap = null;
+        } else if (qname.equals("task")) {
+            types.clear();
+            methods.clear();
+            site = null;
+        }
+    }
+
+    @Override
+    public void warning(org.xml.sax.SAXParseException e) {
+        System.err.println(e.getMessage() + " at line " + e.getLineNumber() + ", column " + e.getColumnNumber());
+        e.printStackTrace();
+    }
+
+    @Override
+    public void error(org.xml.sax.SAXParseException e) {
+        System.err.println(e.getMessage() + " at line " + e.getLineNumber() + ", column " + e.getColumnNumber());
+        e.printStackTrace();
+    }
+
+    @Override
+    public void fatalError(org.xml.sax.SAXParseException e) {
+        System.err.println(e.getMessage() + " at line " + e.getLineNumber() + ", column " + e.getColumnNumber());
+        e.printStackTrace();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/MakeNotEntrantEvent.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+
+class MakeNotEntrantEvent extends BasicLogEvent {
+    private final boolean zombie;
+
+    private NMethod nmethod;
+
+    MakeNotEntrantEvent(double s, String i, boolean z, NMethod nm) {
+        super(s, i);
+        zombie = z;
+        nmethod = nm;
+    }
+
+    public NMethod getNMethod() {
+        return nmethod;
+    }
+
+    public void print(PrintStream stream) {
+        if (isZombie()) {
+            stream.printf("%s make_zombie\n", getId());
+        } else {
+            stream.printf("%s make_not_entrant\n", getId());
+        }
+    }
+
+    public boolean isZombie() {
+        return zombie;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Method.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.util.Arrays;
+
+public class Method implements Constants {
+
+    private String holder;
+    private String name;
+    private String returnType;
+    private String arguments;
+    private String bytes;
+    private String iicount;
+    private String flags;
+
+    String decodeFlags(int osr_bci) {
+        int f = Integer.parseInt(getFlags());
+        char[] c = new char[4];
+        Arrays.fill(c, ' ');
+        if (osr_bci >= 0) {
+            c[0] = '%';
+        }
+        if ((f & JVM_ACC_SYNCHRONIZED) != 0) {
+            c[1] = 's';
+        }
+        return new String(c);
+    }
+
+    String format(int osr_bci) {
+        if (osr_bci >= 0) {
+            return getHolder().replace('/', '.') + "::" + getName() + " @ " + osr_bci + " (" + getBytes() + " bytes)";
+        } else {
+            return getHolder().replace('/', '.') + "::" + getName() + " (" + getBytes() + " bytes)";
+        }
+    }
+
+    @Override
+    public String toString() {
+        return getHolder().replace('/', '.') + "::" + getName() + " (" + getBytes() + " bytes)";
+    }
+
+    public String getHolder() {
+        return holder;
+    }
+
+    public void setHolder(String holder) {
+        this.holder = holder;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getReturnType() {
+        return returnType;
+    }
+
+    public void setReturnType(String returnType) {
+        this.returnType = returnType;
+    }
+
+    public String getArguments() {
+        return arguments;
+    }
+
+    public void setArguments(String arguments) {
+        this.arguments = arguments;
+    }
+
+    public String getBytes() {
+        return bytes;
+    }
+
+    public void setBytes(String bytes) {
+        this.bytes = bytes;
+    }
+
+    public String getIICount() {
+        return iicount;
+    }
+
+    public void setIICount(String iicount) {
+        this.iicount = iicount;
+    }
+
+    public String getFlags() {
+        return flags;
+    }
+
+    public void setFlags(String flags) {
+        this.flags = flags;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/NMethod.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+
+public class NMethod extends BasicLogEvent {
+
+    private long address;
+    private long size;
+
+    NMethod(double s, String i, long a, long sz) {
+        super(s, i);
+        address = a;
+        size = sz;
+    }
+
+    public void print(PrintStream out) {
+        // XXX Currently we do nothing
+        // throw new InternalError();
+    }
+
+    public long getAddress() {
+        return address;
+    }
+
+    public void setAddress(long address) {
+        this.address = address;
+    }
+
+    public long getSize() {
+        return size;
+    }
+
+    public void setSize(long size) {
+        this.size = size;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Phase.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+
+public class Phase extends BasicLogEvent {
+
+    private final int startNodes;
+    private int endNodes;
+
+    Phase(String n, double s, int nodes) {
+        super(s, n);
+        startNodes = nodes;
+    }
+
+    int getNodes() {
+        return getStartNodes();
+    }
+
+    void setEndNodes(int n) {
+        endNodes = n;
+    }
+
+    public String getName() {
+        return getId();
+    }
+
+    public int getStartNodes() {
+        return startNodes;
+    }
+
+    public int getEndNodes() {
+        return endNodes;
+    }
+
+    @Override
+    public void print(PrintStream stream) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/UncommonTrapEvent.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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 com.sun.hotspot.tools.compiler;
+
+import java.io.PrintStream;
+
+class UncommonTrapEvent extends BasicLogEvent {
+
+    private final String reason;
+    private final String action;
+    private int count;
+    private String jvms = "";
+
+    UncommonTrapEvent(double s, String i, String r, String a, int c) {
+        super(s, i);
+        reason = r;
+        action = a;
+        count = c;
+    }
+
+
+    public void addJVMS(String method, int bci) {
+        setJvms(getJvms() + "  @" + bci + " " + method + "\n");
+    }
+
+    public void updateCount(UncommonTrapEvent trap) {
+        setCount(Math.max(getCount(), trap.getCount()));
+    }
+
+    public void print(PrintStream stream) {
+        stream.printf("%s uncommon trap %s %s\n", getId(), getReason(), getAction());
+        stream.print(getJvms());
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public String getAction() {
+        return action;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public String getJvms() {
+        return jvms;
+    }
+
+    public void setJvms(String jvms) {
+        this.jvms = jvms;
+    }
+
+    public void setCompilation(Compilation compilation) {
+        this.compilation = compilation;
+    }
+}
--- a/src/share/tools/MakeDeps/BuildConfig.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/MakeDeps/BuildConfig.java	Tue Jul 28 13:50:07 2009 -0600
@@ -247,6 +247,7 @@
         sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name"));
         sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\"");
         sysDefines.add("_JNI_IMPLEMENTATION_");
+        sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
 
         sysDefines.addAll(defines);
 
--- a/src/share/tools/MakeDeps/Database.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/MakeDeps/Database.java	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   private HashMap<String,String> platformDepFiles;
   private long threshold;
   private int nOuterFiles;
-  private int nPrecompiledFiles;
   private boolean missingOk;
   private Platform plat;
   /** These allow you to specify files not in the include database
@@ -62,7 +61,6 @@
 
     threshold = t;
     nOuterFiles = 0;
-    nPrecompiledFiles = 0;
     missingOk = false;
     firstFile = null;
     lastFile = null;
@@ -343,7 +341,6 @@
             plat.getGIFileTemplate().getInvDir() +
             list.getName() +
             "\"");
-        nPrecompiledFiles += 1;
       }
     }
     inclFile.println();
@@ -365,7 +362,7 @@
 
     // HACK ALERT. The compilation of ad_<arch> files is very slow.
     // We want to start compiling them as early as possible. The compilation
-    // order on unix is dependant on the order we emit files here.
+    // order on unix is dependent on the order we emit files here.
     // By sorting the output before emitting it, we expect
     // that ad_<arch> will be compiled early.
     boolean shouldSortObjFiles = true;
@@ -408,22 +405,22 @@
       gd.println();
     }
 
-    if (nPrecompiledFiles > 0) {
-      // write Precompiled_Files = ...
-      gd.println("Precompiled_Files = \\");
-      for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
-        FileList list = (FileList) iter.next();
+    // write Precompiled_Files = ...
+    gd.println("Precompiled_Files = \\");
+    for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
+      FileList list = (FileList) iter.next();
+      if (list.getCount() >= threshold) {
         gd.println(list.getName() + " \\");
         String platformDep = platformDepFiles.get(list.getName());
         if (platformDep != null) {
-            // make sure changes to the platform dependent file will
-            // cause regeneration of the pch file.
-            gd.println(platformDep + " \\");
+          // make sure changes to the platform dependent file will
+          // cause regeneration of the pch file.
+          gd.println(platformDep + " \\");
         }
       }
-      gd.println();
-      gd.println();
     }
+    gd.println();
+    gd.println();
 
     gd.println("DTraced_Files = \\");
     for (Iterator iter = outerFiles.iterator(); iter.hasNext(); ) {
@@ -483,7 +480,6 @@
         }
 
         if (plat.includeGIDependencies()
-            && nPrecompiledFiles > 0
             && anII.getUseGrandInclude()) {
           gd.println("    $(Precompiled_Files) \\");
         }
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC7.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC7.java	Tue Jul 28 13:50:07 2009 -0600
@@ -27,6 +27,8 @@
 
 public class WinGammaPlatformVC7 extends WinGammaPlatform {
 
+    String projectVersion() {return "7.10";};
+
     public void writeProjectFile(String projectFileName, String projectName,
                                  Vector allConfigs) throws IOException {
         System.out.println();
@@ -40,7 +42,7 @@
             "VisualStudioProject",
             new String[] {
                 "ProjectType", "Visual C++",
-                "Version", "7.10",
+                "Version", projectVersion(),
                 "Name", projectName,
                 "ProjectGUID", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}",
                 "SccProjectName", "",
@@ -417,7 +419,9 @@
             new String[] {
                 "Name", "VCPreLinkEventTool",
                 "Description", BuildConfig.getFieldString(null, "PrelinkDescription"),
-                "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace('\t', '\n'))
+                //Caution: String.replace(String,String) is available from JDK5 onwards only
+                "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace
+                   ("\t", "&#x0D;&#x0A;"))
             }
             );
 
@@ -542,25 +546,41 @@
 }
 
 class CompilerInterfaceVC7 extends CompilerInterface {
-    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
-        Vector rv = new Vector();
+    void getBaseCompilerFlags_common(Vector defines, Vector includes, String outDir,Vector rv) {
 
         // advanced M$ IDE (2003) can only recognize name if it's first or
         // second attribute in the tag - go guess
         addAttr(rv, "Name", "VCCLCompilerTool");
         addAttr(rv, "AdditionalIncludeDirectories", Util.join(",", includes));
-        addAttr(rv, "PreprocessorDefinitions", Util.join(";", defines).replace("\"","&quot;"));
-        addAttr(rv, "UsePrecompiledHeader", "3");
-        addAttr(rv, "PrecompiledHeaderThrough", "incls"+Util.sep+"_precompiled.incl");
+        addAttr(rv, "PreprocessorDefinitions",
+                                Util.join(";", defines).replace("\"","&quot;"));
+        addAttr(rv, "PrecompiledHeaderThrough",
+                                "incls"+Util.sep+"_precompiled.incl");
         addAttr(rv, "PrecompiledHeaderFile", outDir+Util.sep+"vm.pch");
         addAttr(rv, "AssemblerListingLocation", outDir);
         addAttr(rv, "ObjectFile", outDir+Util.sep);
         addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"vm.pdb");
+        // Set /nologo optin
         addAttr(rv, "SuppressStartupBanner", "TRUE");
+        // Surpass the default /Tc or /Tp. 0 is compileAsDefault
         addAttr(rv, "CompileAs", "0");
+        // Set /W3 option. 3 is warningLevel_3
         addAttr(rv, "WarningLevel", "3");
+        // Set /WX option,
         addAttr(rv, "WarnAsError", "TRUE");
+        // Set /GS option
         addAttr(rv, "BufferSecurityCheck", "FALSE");
+        // Set /Zi option. 3 is debugEnabled
+        addAttr(rv, "DebugInformationFormat", "3");
+    }
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        getBaseCompilerFlags_common(defines,includes, outDir, rv);
+        // Set /Yu option. 3 is pchUseUsingSpecific
+        // Note: Starting VC8 pchUseUsingSpecific is 2 !!!
+        addAttr(rv, "UsePrecompiledHeader", "3");
+        // Set /EHsc- option
         addAttr(rv, "ExceptionHandling", "FALSE");
 
         return rv;
@@ -579,27 +599,39 @@
                 "/export:jio_vsnprintf ");
         addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib");
         addAttr(rv, "OutputFile", outDll);
+        // Set /INCREMENTAL option. 1 is linkIncrementalNo
         addAttr(rv, "LinkIncremental", "1");
         addAttr(rv, "SuppressStartupBanner", "TRUE");
         addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
         addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"vm.pdb");
+        // Set /SUBSYSTEM option. 2 is subSystemWindows
         addAttr(rv, "SubSystem", "2");
         addAttr(rv, "BaseAddress", "0x8000000");
         addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
+        // Set /MACHINE option. 1 is machineX86
         addAttr(rv, "TargetMachine", "1");
 
         return rv;
     }
 
+    void  getDebugCompilerFlags_common(String opt,Vector rv) {
+
+        // Set /On option
+        addAttr(rv, "Optimization", opt);
+        // Set /FR option. 1 is brAllInfo
+        addAttr(rv, "BrowseInformation", "1");
+        addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
+        // Set /MD option. 2 is rtMultiThreadedDLL
+        addAttr(rv, "RuntimeLibrary", "2");
+        // Set /Oy- option
+        addAttr(rv, "OmitFramePointers", "FALSE");
+
+    }
+
     Vector getDebugCompilerFlags(String opt) {
         Vector rv = new Vector();
 
-        addAttr(rv, "Optimization", opt);
-        addAttr(rv, "OptimizeForProcessor", "1");
-        addAttr(rv, "DebugInformationFormat", "3");
-        addAttr(rv, "RuntimeLibrary", "2");
-        addAttr(rv, "BrowseInformation", "1");
-        addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
+        getDebugCompilerFlags_common(opt,rv);
 
         return rv;
     }
@@ -607,18 +639,29 @@
     Vector getDebugLinkerFlags() {
         Vector rv = new Vector();
 
-        addAttr(rv, "GenerateDebugInformation", "TRUE");
+        addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
 
         return rv;
     }
 
+    void getProductCompilerFlags_common(Vector rv) {
+        // Set /O2 option. 2 is optimizeMaxSpeed
+        addAttr(rv, "Optimization", "2");
+        // Set /Oy- option
+        addAttr(rv, "OmitFramePointers", "FALSE");
+    }
+
     Vector getProductCompilerFlags() {
         Vector rv = new Vector();
 
-        addAttr(rv, "Optimization", "2");
+        getProductCompilerFlags_common(rv);
+        // Set /Ob option.  1 is expandOnlyInline
         addAttr(rv, "InlineFunctionExpansion", "1");
+        // Set /GF option.
         addAttr(rv, "StringPooling", "TRUE");
+        // Set /MD option. 2 is rtMultiThreadedDLL
         addAttr(rv, "RuntimeLibrary", "2");
+        // Set /Gy option
         addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
 
         return rv;
@@ -627,7 +670,9 @@
     Vector getProductLinkerFlags() {
         Vector rv = new Vector();
 
+        // Set /OPT:REF option. 2 is optReferences
         addAttr(rv, "OptimizeReferences", "2");
+        // Set /OPT:optFolding option. 2 is optFolding
         addAttr(rv, "EnableCOMDATFolding", "2");
 
         return rv;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC8.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+import java.io.*;
+import java.util.*;
+
+public class WinGammaPlatformVC8 extends WinGammaPlatformVC7 {
+
+    String projectVersion() {return "8.00";};
+
+}
+
+class CompilerInterfaceVC8 extends CompilerInterfaceVC7 {
+
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        getBaseCompilerFlags_common(defines,includes, outDir, rv);
+        // Set /Yu option. 2 is pchUseUsingSpecific
+        addAttr(rv, "UsePrecompiledHeader", "2");
+        // Set /EHsc- option. 0 is cppExceptionHandlingNo
+        addAttr(rv, "ExceptionHandling", "0");
+
+        return rv;
+    }
+
+
+    Vector getDebugCompilerFlags(String opt) {
+        Vector rv = new Vector();
+
+        getDebugCompilerFlags_common(opt,rv);
+
+        return rv;
+    }
+
+    Vector getProductCompilerFlags() {
+        Vector rv = new Vector();
+
+        getProductCompilerFlags_common(rv);
+
+        return rv;
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC9.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+import java.io.*;
+import java.util.*;
+
+public class WinGammaPlatformVC9 extends WinGammaPlatformVC8 {
+
+    String projectVersion() {return "9.00";};
+
+}
+
+class CompilerInterfaceVC9 extends CompilerInterfaceVC8 {
+}
--- a/src/share/tools/hsdis/Makefile	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/hsdis/Makefile	Tue Jul 28 13:50:07 2009 -0600
@@ -22,61 +22,75 @@
 #  
 #
 
-# Single gnu makefile for solaris, linux and windows (windows requires mks or
-# cygwin).
-
-ifeq            ($(BINUTILS),)
-# Pop all the way out of the workspace to look for binutils.
-# ...You probably want to override this setting.
-BINUTILS	= $(shell cd ../../../../..;pwd)/binutils-2.17-$(LIBARCH)
-endif
+# Single gnu makefile for solaris, linux and windows (windows requires cygwin and mingw)
 
 # Default arch; it is changed below as needed.
 ARCH		= i386
 OS		= $(shell uname)
 
-CPPFLAGS	+= -I$(BINUTILS)/include -I$(BINUTILS)/bfd
-CPPFLAGS	+= -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\" -DLIBARCH_$(LIBARCH)
-CPPFLAGS	+= -DHOTSPOT_OS=\"$(OS)\" -DOS_$(OS)
-
 ## OS = SunOS ##
 ifeq		($(OS),SunOS)
-ARCH    	= $(shell uname -p)
+CPU             = $(shell uname -p)
+ARCH1=$(CPU:i586=i386)
+ARCH=$(ARCH1:i686=i386)
 OS		= solaris
 CC 		= cc
-CCFLAGS		+= -Kpic -g
-CCFLAGS/amd64   += -xarch=amd64
-CCFLAGS/sparcv9 += -xarch=v9
-CCFLAGS		+= $(CCFLAGS/$(LIBARCH))
+CFLAGS		+= -KPIC
+ifdef LP64
+ifeq ($(ARCH),sparc)
+ARCH            = sparcv9
+endif
+ifeq ($(ARCH),i386)
+ARCH            = amd64
+endif
+endif
+CFLAGS/sparcv9	+= -xarch=v9
+CFLAGS/amd64	+= -m64
+CFLAGS		+= $(CFLAGS/$(ARCH))
 DLDFLAGS	+= -G
+LDFLAGS         += -ldl
 OUTFLAGS	+= -o $@
 LIB_EXT		= .so
 else
 ## OS = Linux ##
 ifeq		($(OS),Linux)
-CPU             = $(shell uname -m)
-ifeq		($(CPU),ia64)
-ARCH    	= ia64
+ifneq           ($(MINGW),)
+LIB_EXT		= .dll
+CPPFLAGS += -I$(TARGET_DIR)/include
+LDFLAGS += -L$(TARGET_DIR)/lib
+OS=windows
+ifneq           ($(findstring x86_64-,$(MINGW)),)
+ARCH=amd64
+else
+ARCH=i386
+endif
+CC 		= $(MINGW)-gcc
+CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
 else
-ifeq		($(CPU),x86_64)
-CCFLAGS		+= -fPIC
-endif   # x86_64
-endif   # ia64
+CPU             = $(shell uname -m)
+ARCH1=$(CPU:x86_64=amd64)
+ARCH=$(ARCH1:i686=i386)
+CFLAGS/i386	+= -m32
+CFLAGS/sparc	+= -m32
+CFLAGS/sparcv9	+= -m64
+CFLAGS/amd64	+= -m64
+CFLAGS		+= $(CFLAGS/$(ARCH))
+CFLAGS		+= -fPIC
 OS		= linux
+LIB_EXT		= .so
 CC 		= gcc
-CCFLAGS		+= -O
+endif
+CFLAGS		+= -O
 DLDFLAGS	+= -shared
+LDFLAGS         += -ldl
 OUTFLAGS	+= -o $@
-LIB_EXT		= .so
-CPPFLAGS	+= -Iinclude -Iinclude/$(OS)_$(ARCH)/
 ## OS = Windows ##
 else   # !SunOS, !Linux => Windows
-OS		= win
-CC		= cl
+OS		= windows
+CC		= gcc
 #CPPFLAGS	+= /D"WIN32" /D"_WINDOWS" /D"DEBUG" /D"NDEBUG"
-CCFLAGS		+=  /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
-CCFLAGS		+= -Iinclude -Iinclude/gnu -Iinclude/$(OS)_$(ARCH)
-CCFLAGS		+= /D"HOTSPOT_LIB_ARCH=\"$(LIBARCH)\""
+CFLAGS		+=  /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
+CFLAGS		+= LIBARCH=\"$(LIBARCH)\""
 DLDFLAGS	+= /dll /subsystem:windows /incremental:no \
 			/export:decode_instruction
 OUTFLAGS	+= /link /out:$@
@@ -94,21 +108,34 @@
 endif   # LIBARCH64/$(ARCH)
 endif   # LP64
 
-TARGET_DIR	= bin/$(OS)
+JDKARCH=$(LIBARCH:i386=i586)
+
+ifeq            ($(BINUTILS),)
+# Pop all the way out of the workspace to look for binutils.
+# ...You probably want to override this setting.
+BINUTILSDIR	= $(shell cd build/binutils;pwd)
+else
+BINUTILSDIR	= $(shell cd $(BINUTILS);pwd)
+endif
+
+CPPFLAGS	+= -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
+CPPFLAGS	+= -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
+
+TARGET_DIR	= build/$(OS)-$(JDKARCH)
 TARGET		= $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT)
 
 SOURCE		= hsdis.c
 
-LIBRARIES =	$(BINUTILS)/bfd/libbfd.a \
-		$(BINUTILS)/opcodes/libopcodes.a \
-		$(BINUTILS)/libiberty/libiberty.a
+LIBRARIES =	$(TARGET_DIR)/bfd/libbfd.a \
+		$(TARGET_DIR)/opcodes/libopcodes.a \
+		$(TARGET_DIR)/libiberty/libiberty.a
 
-DEMO_TARGET	= $(TARGET_DIR)/hsdis-demo-$(LIBARCH)
+DEMO_TARGET	= $(TARGET_DIR)/hsdis-demo
 DEMO_SOURCE	= hsdis-demo.c
 
 .PHONY:  all clean demo both
 
-all:  $(TARGET) demo
+all:  $(TARGET)
 
 both: all all64
 
@@ -117,16 +144,17 @@
 
 demo: $(TARGET) $(DEMO_TARGET)
 
-$(LIBRARIES):
-	@echo "*** Please build binutils first; see ./README: ***"
-	@sed < ./README '1,/__________/d' | head -20
-	@echo "..."; exit 1
+$(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
+	if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
+
+$(TARGET_DIR)/Makefile:
+	(cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
 
 $(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR)
-	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
+	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
 
 $(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR)
-	$(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(DEMO_SOURCE) $(LDFLAGS)
+	$(CC) $(OUTFLAGS) -DTARGET_DIR=\"$(TARGET_DIR)\" $(CPPFLAGS) -g $(CFLAGS/$(ARCH)) $(DEMO_SOURCE) $(LDFLAGS)
 
 $(TARGET_DIR):
 	[ -d $@ ] || mkdir -p $@
--- a/src/share/tools/hsdis/README	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/hsdis/README	Tue Jul 28 13:50:07 2009 -0600
@@ -32,61 +32,55 @@
 
 * Building
 
-To build this project you need a build of Gnu binutils to link against.
-It is known to work with binutils 2.17.
-
-The makefile looks for this build in $BINUTILS, or (if that is not set),
-in  .../binutils-2.17-$LIBARCH, where LIBARCH (as in HotSpot) is one of
-the jre subdirectory keywords i386, amd64, sparc, sparcv9, etc.
-
-To build Gnu binutils, first download a copy of the software:
-  http://directory.fsf.org/project/binutils/
+To build this project you a copy of GNU binutils to build against.  It
+is known to work with binutils 2.17 and binutils 2.19.1.  Download a
+copy of the software from http://directory.fsf.org/project/binutils or
+one of it's mirrors.  Builds targetting windows should use at least
+2.19 and currently requires the use of a cross compiler.
 
-Unpack the binutils tarball into an empty directory:
-  chdir ../../../../..
-  tar -xzf - < ../binutils-2.17.tar.gz
-  mv binutils-2.17 binutils-2.17-i386  #or binutils-2.17-sparc
-  cd binutils-2.17-i386
+The makefile looks for the sources in build/binutils or you can
+specify it's location to the makefile using BINTUILS=path.  It will
+configure binutils and build it first and then build and link the
+disasembly adapter.  Make all will build the default target for your
+platform.  If you platform support both 32 and 64 simultaneously then
+"make both" will build them both at once.  "make all64" will
+explicitly build the 64 bit version.  By default this will build the
+disassembler library only.  If you build demo it will build a demo
+program that attempts to exercise the library.
 
-From inside that directory, run configure and make:
-  ( export CFLAGS='-fPIC'
-    ./configure i386-pc-elf )
-  gnumake
-
-(Leave out or change the argument to configure if not on an i386 system.)
+Windows
 
-Next, untar again into another empty directory for the LP64 version:
-  chdir ..
-  tar -xzf - < ../binutils-2.17.tar.gz
-  mv binutils-2.17 binutils-2.17-amd64  #or binutils-2.17-sparcv9
-  cd binutils-2.17-amd64
-
-From inside that directory, run configure for LP64 and make:
-  ( export ac_cv_c_bigendian=no CFLAGS='-m64 -fPIC' LDFLAGS=-m64
-    ./configure amd64-pc-elf )
-  gnumake
+In theory this should be buildable on Windows but getting a working
+GNU build environment on Windows has proven difficult.  MINGW should
+be able to do it but at the time of this writing I was unable to get
+this working.  Instead you can use the mingw cross compiler on linux
+to produce the windows binaries.  For 32-bit windows you can install
+mingw32 using your package manager and it will be added to your path
+automatically.  For 64-bit you need to download the 64 bit mingw from
+http://sourceforge.net/projects/mingw-w64.  Grab a copy of the
+complete toolchain and unpack it somewhere.  Put the bin directory of
+the toolchain in your path.  The mingw installs contain cross compile
+versions of gcc that are named with a prefix to indicate what they are
+targetting and you must tell the Makefile which one to use.  This
+should either be i586-mingw32msvc or x86_64-pc-mingw32 depending on
+which on you are targetting and there should be a version of gcc in
+your path named i586-mingw32msvc-gcc or x86_64-pc-mingw32-gcc.  Tell
+the makefile what prefix to use to find the mingw tools by using
+MINGW=.  For example:
 
-The -fPIC option is needed because the generated code will be
-linked into the hsdid-$LIBARCH.so binary.  If you miss the
-option, the JVM will fail to load the disassembler.
+make MINGW=i586-mingw32msvc BINTUILS=build/binutils-2.19.1
 
-You probably want two builds, one for 32 and one for 64 bits.
-To build the 64-bit variation of a platforn, add LP64=1 to
-the make command line for hsdis.
-
-So, go back to the hsdis project and build:
-  chdir .../hsdis
-  gnumake
-  gnumake LP64=1
+will build the Win32 cross compiled version of hsdis based on 2.19.1.
 
 * Installing
 
-Products are named like bin/$OS/hsdis-$LIBARCH.so.
-You can install them on your LD_LIBRARY_PATH,
-or inside of your JRE next to $LIBARCH/libjvm.so.
+Products are named like build/$OS-$LIBARCH/hsdis-$LIBARCH.so.  You can
+install them on your LD_LIBRARY_PATH, or inside of your JRE next to
+$LIBARCH/libjvm.so.
 
 Now test:
-  export LD_LIBRARY_PATH .../hsdis/bin/solaris:$LD_LIBRARY_PATH
+
+  export LD_LIBRARY_PATH .../hsdis/build/$OS-$LIBARCH:$LD_LIBRARY_PATH
   dargs='-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly'
   dargs=$dargs' -XX:PrintAssemblyOptions=hsdis-print-bytes'
   java $dargs -Xbatch CompileCommand=print,*String.hashCode HelloWorld
--- a/src/share/tools/hsdis/hsdis-demo.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/hsdis/hsdis-demo.c	Tue Jul 28 13:50:07 2009 -0600
@@ -53,7 +53,7 @@
       else if (!strncmp(arg, "-options=", 9))
         options = arg+9;
       else
-        { printf("Usage: %s [-xml] [name...]\n"); exit(2); }
+        { printf("Usage: %s [-xml] [name...]\n", av[0]); exit(2); }
       continue;
     }
     greet(arg);
@@ -76,26 +76,14 @@
 
 #include "dlfcn.h"
 
-#ifdef HOTSPOT_LIB_ARCH
-#define LIBARCH HOTSPOT_LIB_ARCH
-#endif
-#ifdef HOTSPOT_OS
-#define OS HOTSPOT_OS
-#endif
-
 #define DECODE_INSTRUCTIONS_NAME "decode_instructions"
 #define HSDIS_NAME               "hsdis"
 static void* decode_instructions_pv = 0;
 static const char* hsdis_path[] = {
-  HSDIS_NAME".so",
-#ifdef OS
-  "bin/"OS"/"HSDIS_NAME".so",
-#endif
-#ifdef LIBARCH
-  HSDIS_NAME"-"LIBARCH".so",
-#ifdef OS
-  "bin/"OS"/"HSDIS_NAME"-"LIBARCH".so",
-#endif
+  HSDIS_NAME"-"LIBARCH LIB_EXT,
+  "./" HSDIS_NAME"-"LIBARCH LIB_EXT,
+#ifdef TARGET_DIR
+  TARGET_DIR"/"HSDIS_NAME"-"LIBARCH LIB_EXT,
 #endif
   NULL
 };
@@ -112,7 +100,7 @@
     for (dllib = NULL; dllib == NULL; ) {
       const char* next_lib = (*next_in_path++);
       if (next_lib == NULL)
-        return "cannot find plugin "HSDIS_NAME".so";
+        return "cannot find plugin "HSDIS_NAME LIB_EXT;
       dllib = dlopen(next_lib, RTLD_LAZY);
     }
   }
--- a/src/share/tools/hsdis/hsdis.c	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/tools/hsdis/hsdis.c	Tue Jul 28 13:50:07 2009 -0600
@@ -33,6 +33,7 @@
 #include <libiberty.h>
 #include <bfd.h>
 #include <dis-asm.h>
+#include <inttypes.h>
 
 #ifndef bool
 #define bool int
@@ -404,21 +405,21 @@
 }
 
 static const char* native_arch_name() {
-  const char* res = HOTSPOT_LIB_ARCH;
+  const char* res = NULL;
+#ifdef LIBARCH_i386
+    res = "i386";
+#endif
 #ifdef LIBARCH_amd64
     res = "i386:x86-64";
 #endif
 #ifdef LIBARCH_sparc
     res = "sparc:v8plusb";
 #endif
-#ifdef LIBARCH_sparc
-    res = "sparc:v8plusb";
-#endif
 #ifdef LIBARCH_sparcv9
     res = "sparc:v9b";
 #endif
   if (res == NULL)
-    res = "HOTSPOT_LIB_ARCH is not set in Makefile!";
+    res = "architecture not set in Makefile!";
   return res;
 }
 
--- a/src/share/vm/adlc/Doc/Syntax.doc	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/Doc/Syntax.doc	Tue Jul 28 13:50:07 2009 -0600
@@ -88,7 +88,7 @@
                          // these are used for constraints, etc.
 
 alloc_class class1(AX, BX); // form an allocation class of registers
-                            // used by the register allocator for seperate
+                            // used by the register allocator for separate
                             // allocation of target register classes
 
 	3. Pipeline Syntax for Scheduling
@@ -150,7 +150,7 @@
 		b. %}  (block terminator)
 		c. EOF (file terminator)
 
-	4. Each statement must start on a seperate line
+	4. Each statement must start on a separate line
 
 	5. Identifiers cannot contain: (){}%;,"/\
 
--- a/src/share/vm/adlc/adlc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/adlc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -44,7 +44,7 @@
 #error "Something is wrong with the detection of MSC_VER in the makefiles"
 #endif
 
-#if _MSC_VER >= 1400 && !defined(_WIN64)
+#if _MSC_VER >= 1400
 #define strdup _strdup
 #endif
 
@@ -79,6 +79,7 @@
 
 // Macros
 // Debugging note:  Put a breakpoint on "abort".
+#undef assert
 #define assert(cond, msg) { if (!(cond)) { fprintf(stderr, "assert fails %s %d: %s\n", __FILE__, __LINE__, msg); abort(); }}
 #define max(a, b)   (((a)>(b)) ? (a) : (b))
 
--- a/src/share/vm/adlc/adlparse.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/adlparse.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -298,7 +298,7 @@
   rule->count_commutative_op(count);
   if (count > 0) {
     // Clone match rule and swap commutative operation's operands.
-    rule->swap_commutative_op(instr_ident, count, match_rules_cnt);
+    rule->matchrule_swap_commutative_op(instr_ident, count, match_rules_cnt);
   }
 }
 
@@ -2586,7 +2586,7 @@
   while( _curchar != ')' ) {
     // Get information on the left instruction and its operand
     // left-instructions's number
-    intptr_t   left_inst = get_int();
+    int left_inst = get_int();
     // Left-instruction's operand
     skipws();
     if( _curchar != '.' ) {
@@ -2602,7 +2602,7 @@
 
     skipws();
     // Get information on the right instruction and its operand
-    intptr_t right_inst;        // Right-instructions's number
+    int right_inst;        // Right-instructions's number
     if( isdigit(_curchar) ) {
       right_inst = get_int();
       // Right-instruction's operand
@@ -3497,22 +3497,24 @@
 
     // (1)
     // Check if there is a string to pass through to output
-    char *start = _ptr;       // Record start of the next string
-    while ((_curchar != '$') && ((_curchar != '%') || (*(_ptr+1) != '}')) ) {
-      // If at the start of a comment, skip past it
-      if( (_curchar == '/') && ((*(_ptr+1) == '/') || (*(_ptr+1) == '*')) ) {
-        skipws_no_preproc();
-      } else {
-        // ELSE advance to the next character, or start of the next line
-        next_char_or_line();
+    {
+      char *start = _ptr;       // Record start of the next string
+      while ((_curchar != '$') && ((_curchar != '%') || (*(_ptr+1) != '}')) ) {
+        // If at the start of a comment, skip past it
+        if( (_curchar == '/') && ((*(_ptr+1) == '/') || (*(_ptr+1) == '*')) ) {
+          skipws_no_preproc();
+        } else {
+          // ELSE advance to the next character, or start of the next line
+          next_char_or_line();
+        }
       }
-    }
-    // If a string was found, terminate it and record in EncClass
-    if ( start != _ptr ) {
-      *_ptr  = '\0';          // Terminate the string
-      // Add flag to _strings list indicating we should check _rep_vars
-      format->_strings.addName(NameList::_signal2);
-      format->_strings.addName(start);
+      // If a string was found, terminate it and record in EncClass
+      if ( start != _ptr ) {
+        *_ptr  = '\0';          // Terminate the string
+        // Add flag to _strings list indicating we should check _rep_vars
+        format->_strings.addName(NameList::_signal2);
+        format->_strings.addName(start);
+      }
     }
 
     // (2)
@@ -3563,10 +3565,10 @@
             // copy it and record in FormatRule
             if ( _curchar == '$' ) {
               next_char();          // Move past the '$'
-              char* rep_var = get_ident(); // Nil terminate the variable name
-              rep_var = strdup(rep_var);// Copy the string
+              char* next_rep_var = get_ident(); // Nil terminate the variable name
+              next_rep_var = strdup(next_rep_var);// Copy the string
               *_ptr   = _curchar;     // and replace Nil with original character
-              format->_rep_vars.addName(rep_var);
+              format->_rep_vars.addName(next_rep_var);
               // Add flag to _strings list indicating we should check _rep_vars
               format->_strings.addName(NameList::_signal);
             }
@@ -3714,13 +3716,13 @@
           parse_err(SYNERR, "identifier expected at %c\n", _curchar);
           continue;
         }                            // Check that you have a valid operand
-        const Form *form = instr->_localNames[ident2];
-        if (!form) {
+        const Form *form2 = instr->_localNames[ident2];
+        if (!form2) {
           parse_err(SYNERR, "operand name expected at %s\n", ident2);
           continue;
         }
-        oper = form->is_operand();
-        if (oper == NULL && !form->is_opclass()) {
+        oper = form2->is_operand();
+        if (oper == NULL && !form2->is_opclass()) {
           parse_err(SYNERR, "operand name expected at %s\n", ident2);
           continue;
         }                            // Add operand to list
@@ -4271,7 +4273,7 @@
   int           result;           // Storage for integer result
 
   if( _curline == NULL )          // Return NULL at EOF.
-    return NULL;
+    return 0;
 
   skipws();                       // Skip whitespace before identifier
   start = end = _ptr;             // Start points at first character
@@ -4553,7 +4555,7 @@
 
 //---------------------------ensure_start_of_line------------------------------
 // A preprocessor directive has been encountered.  Be sure it has fallen at
-// the begining of a line, or else report an error.
+// the beginning of a line, or else report an error.
 void ADLParser::ensure_start_of_line(void) {
   if (_curchar == '\n') { next_line(); return; }
   assert( _ptr >= _curline && _ptr < _curline+strlen(_curline),
--- a/src/share/vm/adlc/adlparse.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/adlparse.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/adlc/archDesc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/archDesc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -436,10 +436,12 @@
   if ((oper->_matrule) && (oper->_matrule->_lChild == NULL) &&
       (oper->_matrule->_rChild == NULL)) {
 
-    const Form *form = _globalNames[oper->_matrule->_opType];
-    if ((form) && form->is_operand() &&
-        (form->ideal_only() == false)) {
-      add_chain_rule_entry(oper->_matrule->_opType, oper->cost(), oper->_ident);
+    {
+      const Form *form = _globalNames[oper->_matrule->_opType];
+      if ((form) && form->is_operand() &&
+          (form->ideal_only() == false)) {
+        add_chain_rule_entry(oper->_matrule->_opType, oper->cost(), oper->_ident);
+      }
     }
     // Check for additional chain rules
     if (oper->_matrule->_next) {
@@ -1015,12 +1017,12 @@
   int idealIndex = 0;
   for (idealIndex = 1; idealIndex < _last_machine_leaf; ++idealIndex) {
     const char *idealName = NodeClassNames[idealIndex];
-    _idealIndex.Insert((void*)idealName, (void*)idealIndex);
+    _idealIndex.Insert((void*) idealName, (void*) (intptr_t) idealIndex);
   }
   for ( idealIndex = _last_machine_leaf+1;
         idealIndex < _last_opcode; ++idealIndex) {
     const char *idealName = NodeClassNames[idealIndex];
-    _idealIndex.Insert((void*)idealName, (void*)idealIndex);
+    _idealIndex.Insert((void*) idealName, (void*) (intptr_t) idealIndex);
   }
 
 }
--- a/src/share/vm/adlc/dfa.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/dfa.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -870,7 +870,7 @@
 }
 
 // Print out the dictionary contents as key-value pairs
-static void dumpekey(const void* key)  { fprintf(stdout, "%s", key); }
+static void dumpekey(const void* key)  { fprintf(stdout, "%s", (char*) key); }
 static void dumpexpr(const void* expr) { fflush(stdout); ((Expr*)expr)->print(); }
 
 void ExprDict::dump() {
@@ -1020,7 +1020,7 @@
 }
 
 // Print out the dictionary contents as key-value pairs
-static void print_key (const void* key)              { fprintf(stdout, "%s", key); }
+static void print_key (const void* key)              { fprintf(stdout, "%s", (char*) key); }
 static void print_production(const void* production) { fflush(stdout); ((Production*)production)->print(); }
 
 void ProductionState::print() {
--- a/src/share/vm/adlc/dict2.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/dict2.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -275,7 +275,7 @@
 // Convert string to hash key.  This algorithm implements a universal hash
 // function with the multipliers frozen (ok, so it's not universal).  The
 // multipliers (and allowable characters) are all odd, so the resultant sum
-// is odd - guarenteed not divisible by any power of two, so the hash tables
+// is odd - guaranteed not divisible by any power of two, so the hash tables
 // can be any power of two with good results.  Also, I choose multipliers
 // that have only 2 bits set (the low is always set to be odd) so
 // multiplication requires only shifts and adds.  Characters are required to
@@ -296,7 +296,7 @@
 }
 
 //------------------------------hashptr--------------------------------------
-// Slimey cheap hash function; no guarenteed performance.  Better than the
+// Slimey cheap hash function; no guaranteed performance.  Better than the
 // default for pointers, especially on MS-DOS machines.
 int hashptr(const void *key) {
 #ifdef __TURBOC__
@@ -306,7 +306,7 @@
 #endif
 }
 
-// Slimey cheap hash function; no guarenteed performance.
+// Slimey cheap hash function; no guaranteed performance.
 int hashkey(const void *key) {
   return (int)((intptr_t)key);
 }
@@ -316,9 +316,12 @@
   return strcmp((const char *)k1,(const char *)k2);
 }
 
-// Slimey cheap key comparator.
+// Cheap key comparator.
 int cmpkey(const void *key1, const void *key2) {
-  return (int)((intptr_t)key1 - (intptr_t)key2);
+  if (key1 == key2) return 0;
+  intptr_t delta = (intptr_t)key1 - (intptr_t)key2;
+  if (delta > 0) return 1;
+  return -1;
 }
 
 //=============================================================================
--- a/src/share/vm/adlc/dict2.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/dict2.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -89,10 +89,10 @@
 
 // Hashing functions
 int hashstr(const void *s);        // Nice string hash
-// Slimey cheap hash function; no guarenteed performance.  Better than the
+// Slimey cheap hash function; no guaranteed performance.  Better than the
 // default for pointers, especially on MS-DOS machines.
 int hashptr(const void *key);
-// Slimey cheap hash function; no guarenteed performance.
+// Slimey cheap hash function; no guaranteed performance.
 int hashkey(const void *key);
 
 // Key comparators
--- a/src/share/vm/adlc/filebuff.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/filebuff.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // FILEBUFF.CPP - Routines for handling a parser file buffer
 #include "adlc.hpp"
 
+using namespace std;
+
 //------------------------------FileBuff---------------------------------------
 // Create a new parsing buffer
 FileBuff::FileBuff( BufferedFile *fptr, ArchDesc& archDesc) : _fp(fptr), _AD(archDesc) {
@@ -48,10 +50,10 @@
     file_error(SEMERR, 0, "Buffer allocation failed\n");
     exit(1);                    // Exit on allocation failure
   }
-  *_bigbuf = '\n';               // Lead with a sentinal newline
-  _buf = _bigbuf+1;                     // Skip sentinal
+  *_bigbuf = '\n';               // Lead with a sentinel newline
+  _buf = _bigbuf+1;                     // Skip sentinel
   _bufmax = _buf;               // Buffer is empty
-  _bufeol = _bigbuf;              // _bufeol points at sentinal
+  _bufeol = _bigbuf;              // _bufeol points at sentinel
   _filepos = -1;                 // filepos is in sync with _bufeol
   _bufoff = _offset = 0L;       // Offset at file start
 
@@ -60,8 +62,8 @@
     file_error(SEMERR, 0, "File read error, no input read\n");
     exit(1);                     // Exit on read error
   }
-  *_bufmax = '\n';               // End with a sentinal new-line
-  *(_bufmax+1) = '\0';           // Then end with a sentinal NULL
+  *_bufmax = '\n';               // End with a sentinel new-line
+  *(_bufmax+1) = '\0';           // Then end with a sentinel NULL
 }
 
 //------------------------------~FileBuff--------------------------------------
@@ -79,7 +81,7 @@
 
   _linenum++;
   retval = ++_bufeol;      // return character following end of previous line
-  if (*retval == '\0') return NULL; // Check for EOF sentinal
+  if (*retval == '\0') return NULL; // Check for EOF sentinel
   // Search for newline character which must end each line
   for(_filepos++; *_bufeol != '\n'; _bufeol++)
     _filepos++;                    // keep filepos in sync with _bufeol
@@ -217,7 +219,7 @@
     off = expandtab(os,off,*s++,'-','-');
   if( i == len ) os << '^';     // Mark end of region
   os << '\n';                   // End of marked line
-  return 0L;                    // All done
+  return 0;                     // All done
 }
 
 //------------------------------print------------------------------------------
--- a/src/share/vm/adlc/filebuff.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/filebuff.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 #include <iostream>
 
 using namespace std;
+
 // STRUCTURE FOR HANDLING INPUT AND OUTPUT FILES
 typedef struct {
   const char *_name;
@@ -36,7 +37,7 @@
 
 //------------------------------FileBuff--------------------------------------
 // This class defines a nicely behaved buffer of text.  Entire file of text
-// is read into buffer at creation, with sentinals at start and end.
+// is read into buffer at creation, with sentinels at start and end.
 class FileBuff {
   friend class FileBuffRegion;
  private:
@@ -45,8 +46,8 @@
   long  _bufoff;                // Start of buffer file offset
 
   char *_buf;                   // The buffer itself.
-  char *_bigbuf;                // The buffer plus sentinals; actual heap area
-  char *_bufmax;                // A pointer to the buffer end sentinal
+  char *_bigbuf;                // The buffer plus sentinels; actual heap area
+  char *_bufmax;                // A pointer to the buffer end sentinel
   char *_bufeol;                // A pointer to the last complete line end
 
   int   _err;                   // Error flag for file seek/read operations
@@ -72,7 +73,7 @@
 
   // This converts a pointer into the buffer to a file offset.  It only works
   // when the pointer is valid (i.e. just obtained from getline()).
-  int getoff(const char *s) { return _bufoff+(int)(s-_buf); }
+  long getoff(const char* s) { return _bufoff + (long)(s - _buf); }
 };
 
 //------------------------------FileBuffRegion---------------------------------
@@ -95,8 +96,6 @@
   FileBuffRegion *copy();                   // Deep copy
   FileBuffRegion *merge(FileBuffRegion*); // Merge 2 regions; delete input
 
-//  void print(std::ostream&);
-//  friend std::ostream& operator<< (std::ostream&, FileBuffRegion&);
   void print(ostream&);
   friend ostream& operator<< (ostream&, FileBuffRegion&);
 };
--- a/src/share/vm/adlc/forms.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/forms.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +70,7 @@
   else return (_iter <_cur-1 ? _names[++_iter] : NULL);
 }
 const char  *NameList::current() { return (_iter < _cur ? _names[_iter] : NULL); }
+const char  *NameList::peek(int skip) { return (_iter + skip < _cur ? _names[_iter + skip] : NULL); }
 
 // Return 'true' if current entry is signal
 bool  NameList::current_is_signal() {
@@ -248,11 +249,13 @@
 // True if 'opType', an ideal name, loads or stores.
 Form::DataType Form::is_load_from_memory(const char *opType) const {
   if( strcmp(opType,"LoadB")==0 )  return Form::idealB;
-  if( strcmp(opType,"LoadC")==0 )  return Form::idealC;
+  if( strcmp(opType,"LoadUB")==0 )  return Form::idealB;
+  if( strcmp(opType,"LoadUS")==0 )  return Form::idealC;
   if( strcmp(opType,"LoadD")==0 )  return Form::idealD;
   if( strcmp(opType,"LoadD_unaligned")==0 )  return Form::idealD;
   if( strcmp(opType,"LoadF")==0 )  return Form::idealF;
   if( strcmp(opType,"LoadI")==0 )  return Form::idealI;
+  if( strcmp(opType,"LoadUI2L")==0 )  return Form::idealI;
   if( strcmp(opType,"LoadKlass")==0 )  return Form::idealP;
   if( strcmp(opType,"LoadNKlass")==0 ) return Form::idealN;
   if( strcmp(opType,"LoadL")==0 )  return Form::idealL;
@@ -370,7 +373,7 @@
 }
 
 // Print out the dictionary contents as key-value pairs
-static void dumpkey (const void* key)  { fprintf(stdout, "%s", key); }
+static void dumpkey (const void* key)  { fprintf(stdout, "%s", (char*) key); }
 static void dumpform(const void* form) { fflush(stdout); ((Form*)form)->dump(); }
 
 void FormDict::dump() {
--- a/src/share/vm/adlc/forms.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/forms.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +124,7 @@
 public:
   // Public Data
   Form *_next;                     // Next pointer for form lists
-  long  _linenum;                  // Line number for debugging
+  int   _linenum;                  // Line number for debugging
 
   // Dynamic type check for common forms.
   virtual OpClassForm   *is_opclass()     const;
@@ -342,6 +342,7 @@
   void  reset();                   // Reset iteration
   const char *iter();              // after reset(), first element : else next
   const char *current();           // return current element in iteration.
+  const char *peek(int skip = 1);  // returns element + skip in iteration if there is one
 
   bool  current_is_signal();       // Return 'true' if current entry is signal
   bool  is_signal(const char *entry); // Return true if entry is a signal
--- a/src/share/vm/adlc/formsopt.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/formsopt.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -273,13 +273,13 @@
   for(_regDefs.reset(); (name = _regDefs.iter()) != NULL;) {
     int rnum = ((RegDef*)_regDef[name])->register_num();
     if( (rnum >> 5) == wordnum )
-      word |= (1L<<(rnum&31));
+      word |= (1 << (rnum & 31));
   }
   if( stack_also ) {
     // Now also collect stack bits
     for( int i = 0; i < 32; i++ )
       if( wordnum*32+i >= RegisterForm::_reg_ctr )
-        word |= (1L<<i);
+        word |= (1 << i);
   }
 
   return word;
@@ -592,10 +592,10 @@
                                  int input) {
   if( position > _max_position ) _max_position = position;
 
-  _parent.addName((char *)parent);
-  _position.addName((char *)position);
+  _parent.addName((char*) (intptr_t) parent);
+  _position.addName((char*) (intptr_t) position);
   _instrs.addName(name);
-  _input.addName((char *)input);
+  _input.addName((char*) (intptr_t) input);
 }
 
 // Access info about instructions in the peep-match rule
@@ -603,7 +603,7 @@
   return _max_position;
 }
 
-const char *PeepMatch::instruction_name(intptr_t position) {
+const char *PeepMatch::instruction_name(int position) {
   return _instrs.name(position);
 }
 
@@ -615,11 +615,11 @@
   _input.reset();
 }
 
-void  PeepMatch::next_instruction( intptr_t &parent, intptr_t &position, const char * &name, intptr_t &input ){
-  parent   = (intptr_t)_parent.iter();
-  position = (intptr_t)_position.iter();
+void  PeepMatch::next_instruction(int &parent, int &position, const char* &name, int &input) {
+  parent   = (int) (intptr_t) _parent.iter();
+  position = (int) (intptr_t) _position.iter();
   name     = _instrs.iter();
-  input    = (intptr_t)_input.iter();
+  input    = (int) (intptr_t) _input.iter();
 }
 
 // 'true' if current position in iteration is a placeholder, not matched.
@@ -637,15 +637,15 @@
 }
 
 //------------------------------PeepConstraint---------------------------------
-PeepConstraint::PeepConstraint(intptr_t  left_inst,  char *left_op, char *relation,
-                               intptr_t  right_inst, char *right_op)
+PeepConstraint::PeepConstraint(int left_inst,  char* left_op, char* relation,
+                               int right_inst, char* right_op)
   : _left_inst(left_inst), _left_op(left_op), _relation(relation),
     _right_inst(right_inst), _right_op(right_op), _next(NULL) {}
 PeepConstraint::~PeepConstraint() {
 }
 
 // Check if constraints use instruction at position
-bool PeepConstraint::constrains_instruction(intptr_t position) {
+bool PeepConstraint::constrains_instruction(int position) {
   // Check local instruction constraints
   if( _left_inst  == position ) return true;
   if( _right_inst == position ) return true;
@@ -692,7 +692,7 @@
 }
 void  PeepReplace::add_operand( int inst_num, char *inst_operand ) {
   _instruction.add_signal();
-  _operand_inst_num.addName((char*)inst_num);
+  _operand_inst_num.addName((char*) (intptr_t) inst_num);
   _operand_op_name.addName(inst_operand);
 }
 
@@ -702,15 +702,15 @@
   _operand_inst_num.reset();
   _operand_op_name.reset();
 }
-void  PeepReplace::next_instruction(const char * &inst){
+void  PeepReplace::next_instruction(const char* &inst){
   inst                     = _instruction.iter();
-  intptr_t   inst_num      = (intptr_t)_operand_inst_num.iter();
-  const char *inst_operand = _operand_op_name.iter();
+  int         inst_num     = (int) (intptr_t) _operand_inst_num.iter();
+  const char* inst_operand = _operand_op_name.iter();
 }
-void  PeepReplace::next_operand( intptr_t &inst_num, const char * &inst_operand ) {
-  const char *inst   = _instruction.iter();
-  inst_num           = (intptr_t)_operand_inst_num.iter();
-  inst_operand       = _operand_op_name.iter();
+void  PeepReplace::next_operand(int &inst_num, const char* &inst_operand) {
+  const char* inst = _instruction.iter();
+  inst_num         = (int) (intptr_t) _operand_inst_num.iter();
+  inst_operand     = _operand_op_name.iter();
 }
 
 
--- a/src/share/vm/adlc/formsopt.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/formsopt.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -457,10 +457,10 @@
 
   // Access info about instructions in the peep-match rule
   int   max_position();
-  const char *instruction_name(intptr_t position);
+  const char *instruction_name(int position);
   // Iterate through all info on matched instructions
   void  reset();
-  void  next_instruction( intptr_t &parent, intptr_t &position, const char * &name, intptr_t &input );
+  void  next_instruction(int &parent, int &position, const char* &name, int &input);
   // 'true' if current position in iteration is a placeholder, not matched.
   bool  is_placeholder();
 
@@ -474,20 +474,20 @@
   PeepConstraint *_next;           // Additional constraints ANDed together
 
 public:
-  const intptr_t  _left_inst;
-  const char      *_left_op;
-  const char      *_relation;
-  const intptr_t  _right_inst;
-  const char      *_right_op;
+  const int   _left_inst;
+  const char* _left_op;
+  const char* _relation;
+  const int   _right_inst;
+  const char* _right_op;
 
 public:
   // Public Methods
-  PeepConstraint(intptr_t  left_inst,  char *left_op, char *relation,
-                 intptr_t  right_inst, char *right_op);
+  PeepConstraint(int left_inst,  char* left_op, char* relation,
+                 int right_inst, char* right_op);
   ~PeepConstraint();
 
   // Check if constraints use instruction at position
-  bool constrains_instruction(intptr_t position);
+  bool constrains_instruction(int position);
 
   // Add another constraint
   void append(PeepConstraint *next_peep_constraint);
@@ -519,7 +519,7 @@
   // Access contents of peepreplace
   void  reset();
   void  next_instruction(const char * &root);
-  void  next_operand( intptr_t &inst_num, const char * &inst_operand );
+  void  next_operand(int &inst_num, const char * &inst_operand );
 
   // Utilities
   void dump();
--- a/src/share/vm/adlc/formssel.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/formssel.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -420,6 +420,13 @@
   return  _matrule->is_ideal_load();
 }
 
+// Return 'true' if this instruction matches an ideal 'LoadKlass' node
+bool InstructForm::skip_antidep_check() const {
+  if( _matrule == NULL ) return false;
+
+  return  _matrule->skip_antidep_check();
+}
+
 // Return 'true' if this instruction matches an ideal 'Load?' node
 Form::DataType InstructForm::is_ideal_store() const {
   if( _matrule == NULL ) return Form::none;
@@ -567,6 +574,8 @@
 
 // loads from memory, so must check for anti-dependence
 bool InstructForm::needs_anti_dependence_check(FormDict &globals) const {
+  if ( skip_antidep_check() ) return false;
+
   // Machine independent loads must be checked for anti-dependences
   if( is_ideal_load() != Form::none )  return true;
 
@@ -574,9 +583,13 @@
   // TEMPORARY
   // if( is_simple_chain_rule(globals) )  return false;
 
-  // String-compare uses many memorys edges, but writes none
+  // String.(compareTo/equals/indexOf) and Arrays.equals use many memorys edges,
+  // but writes none
   if( _matrule && _matrule->_rChild &&
-      strcmp(_matrule->_rChild->_opType,"StrComp")==0 )
+      ( strcmp(_matrule->_rChild->_opType,"StrComp"    )==0 ||
+        strcmp(_matrule->_rChild->_opType,"StrEquals"  )==0 ||
+        strcmp(_matrule->_rChild->_opType,"StrIndexOf" )==0 ||
+        strcmp(_matrule->_rChild->_opType,"AryEq"      )==0 ))
     return true;
 
   // Check if instruction has a USE of a memory operand class, but no defs
@@ -815,8 +828,10 @@
     return AdlcVMDeps::Parms;   // Skip the machine-state edges
 
   if( _matrule->_rChild &&
-          strcmp(_matrule->_rChild->_opType,"StrComp")==0 ) {
-        // String compare takes 1 control and 4 memory edges.
+      ( strcmp(_matrule->_rChild->_opType,"StrComp"   )==0 ||
+        strcmp(_matrule->_rChild->_opType,"StrEquals" )==0 ||
+        strcmp(_matrule->_rChild->_opType,"StrIndexOf")==0 )) {
+        // String.(compareTo/equals/indexOf) take 1 control and 4 memory edges.
     return 5;
   }
 
@@ -844,8 +859,12 @@
   for (_parameters.reset(); (name = _parameters.iter()) != NULL;) {
     OperandForm *opForm = (OperandForm*)_localNames[name];
 
-    const Form *form = _effects[name];
-    Effect     *e    = form ? form->is_effect() : NULL;
+    Effect* e = NULL;
+    {
+      const Form* form = _effects[name];
+      e = form ? form->is_effect() : NULL;
+    }
+
     if (e != NULL) {
       has_temp |= e->is(Component::TEMP);
 
@@ -858,19 +877,7 @@
         OperandForm* kill = (OperandForm*)_localNames[kill_name];
         globalAD->syntax_err(_linenum, "%s: %s %s must be at the end of the argument list\n",
                              _ident, kill->_ident, kill_name);
-      } else if (e->isa(Component::KILL)) {
-        kill_name = name;
-      }
-
-      // TEMPs are real uses and need to be among the first parameters
-      // listed, otherwise the numbering of operands and inputs gets
-      // screwy, so enforce this restriction during parse.
-      if (kill_name != NULL &&
-          e->isa(Component::TEMP) && !e->isa(Component::DEF)) {
-        OperandForm* kill = (OperandForm*)_localNames[kill_name];
-        globalAD->syntax_err(_linenum, "%s: %s %s must follow %s %s in the argument list\n",
-                             _ident, kill->_ident, kill_name, opForm->_ident, name);
-      } else if (e->isa(Component::KILL)) {
+      } else if (e->isa(Component::KILL) && !e->isa(Component::USE)) {
         kill_name = name;
       }
     }
@@ -1122,7 +1129,7 @@
   const char *op_name            = NULL;
   const char *reg_type           = NULL;
   FormDict   &globals            = AD.globalNames();
-  cisc_spill_operand = _matrule->cisc_spill_match(globals, AD.get_registers(), instr->_matrule, op_name, reg_type);
+  cisc_spill_operand = _matrule->matchrule_cisc_spill_match(globals, AD.get_registers(), instr->_matrule, op_name, reg_type);
   if( (cisc_spill_operand != Not_cisc_spillable) && (op_name != NULL) && equivalent_predicates(this, instr) ) {
     cisc_spill_operand = operand_position(op_name, Component::USE);
     int def_oper  = operand_position(op_name, Component::DEF);
@@ -1217,13 +1224,17 @@
 // Seach through operands to determine parameters unique positions.
 void InstructForm::set_unique_opnds() {
   uint* uniq_idx = NULL;
-  uint  nopnds = num_opnds();
+  int  nopnds = num_opnds();
   uint  num_uniq = nopnds;
-  uint i;
+  int i;
+  _uniq_idx_length = 0;
   if ( nopnds > 0 ) {
-    // Allocate index array with reserve.
-    uniq_idx = (uint*) malloc(sizeof(uint)*(nopnds + 2));
-    for( i = 0; i < nopnds+2; i++ ) {
+    // Allocate index array.  Worst case we're mapping from each
+    // component back to an index and any DEF always goes at 0 so the
+    // length of the array has to be the number of components + 1.
+    _uniq_idx_length = _components.count() + 1;
+    uniq_idx = (uint*) malloc(sizeof(uint)*(_uniq_idx_length));
+    for( i = 0; i < _uniq_idx_length; i++ ) {
       uniq_idx[i] = i;
     }
   }
@@ -1238,8 +1249,8 @@
     _parameters.reset();
     while( (name = _parameters.iter()) != NULL ) {
       count = 0;
-      uint position = 0;
-      uint uniq_position = 0;
+      int position = 0;
+      int uniq_position = 0;
       _components.reset();
       Component *comp = NULL;
       if( sets_result() ) {
@@ -1255,6 +1266,7 @@
         }
         if( strcmp(name, comp->_name)==0 ) {
           if( ++count > 1 ) {
+            assert(position < _uniq_idx_length, "out of bounds");
             uniq_idx[position] = uniq_position;
             has_dupl_use = true;
           } else {
@@ -1284,7 +1296,7 @@
   _num_uniq = num_uniq;
 }
 
-// Generate index values needed for determing the operand position
+// Generate index values needed for determining the operand position
 void InstructForm::index_temps(FILE *fp, FormDict &globals, const char *prefix, const char *receiver) {
   uint  idx = 0;                  // position of operand in match rule
   int   cur_num_opnds = num_opnds();
@@ -2200,8 +2212,8 @@
 // Return zero-based position in component list, only counting constants;
 // Return -1 if not in list.
 int OperandForm::constant_position(FormDict &globals, const Component *last) {
-  // Iterate through components and count constants preceeding 'constant'
-  uint  position = 0;
+  // Iterate through components and count constants preceding 'constant'
+  int position = 0;
   Component *comp;
   _components.reset();
   while( (comp = _components.iter()) != NULL  && (comp != last) ) {
@@ -2238,7 +2250,7 @@
 // Return zero-based position in component list, only counting constants;
 // Return -1 if not in list.
 int OperandForm::register_position(FormDict &globals, const char *reg_name) {
-  // Iterate through components and count registers preceeding 'last'
+  // Iterate through components and count registers preceding 'last'
   uint  position = 0;
   Component *comp;
   _components.reset();
@@ -2304,7 +2316,7 @@
   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 {", _ident);
+    fprintf(fp,"  virtual bool disp_is_oop() const {");
     fprintf(fp,  "  return _c%d->isa_oop_ptr();", idx);
     fprintf(fp, " }\n");
   }
@@ -3042,9 +3054,9 @@
 
 // Recursive call collecting info on top-level operands, not transitive.
 // Implementation does not modify state of internal structures.
-void MatchNode::append_components(FormDict &locals, ComponentList &components,
-                                  bool deflag) const {
-  int   usedef = deflag ? Component::DEF : Component::USE;
+void MatchNode::append_components(FormDict& locals, ComponentList& components,
+                                  bool def_flag) const {
+  int usedef = def_flag ? Component::DEF : Component::USE;
   FormDict &globals = _AD.globalNames();
 
   assert (_name != NULL, "MatchNode::build_components encountered empty node\n");
@@ -3062,10 +3074,10 @@
     return;
   }
   // Promote results of "Set" to DEF
-  bool def_flag = (!strcmp(_opType, "Set")) ? true : false;
-  if (_lChild) _lChild->append_components(locals, components, def_flag);
-  def_flag = false;   // only applies to component immediately following 'Set'
-  if (_rChild) _rChild->append_components(locals, components, def_flag);
+  bool tmpdef_flag = (!strcmp(_opType, "Set")) ? true : false;
+  if (_lChild) _lChild->append_components(locals, components, tmpdef_flag);
+  tmpdef_flag = false;   // only applies to component immediately following 'Set'
+  if (_rChild) _rChild->append_components(locals, components, tmpdef_flag);
 }
 
 // Find the n'th base-operand in the match node,
@@ -3313,8 +3325,8 @@
   static const char *needs_ideal_memory_list[] = {
     "StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" ,
     "StoreB","StoreC","Store" ,"StoreFP",
-    "LoadI" ,"LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF"  ,
-    "LoadB" ,"LoadC" ,"LoadS" ,"Load"   ,
+    "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF"  ,
+    "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load"   ,
     "Store4I","Store2I","Store2L","Store2D","Store4F","Store2F","Store16B",
     "Store8B","Store4B","Store8C","Store4C","Store2C",
     "Load4I" ,"Load2I" ,"Load2L" ,"Load2D" ,"Load4F" ,"Load2F" ,"Load16B" ,
@@ -3411,9 +3423,9 @@
   return (form1 == form2);
 }
 
-//-------------------------cisc_spill_match------------------------------------
+//-------------------------cisc_spill_match_node-------------------------------
 // Recursively check two MatchRules for legal conversion via cisc-spilling
-int  MatchNode::cisc_spill_match(FormDict &globals, RegisterForm *registers, MatchNode *mRule2, const char * &operand, const char * &reg_type) {
+int MatchNode::cisc_spill_match(FormDict& globals, RegisterForm* registers, MatchNode* mRule2, const char* &operand, const char* &reg_type) {
   int cisc_spillable  = Maybe_cisc_spillable;
   int left_spillable  = Maybe_cisc_spillable;
   int right_spillable = Maybe_cisc_spillable;
@@ -3434,10 +3446,16 @@
     const InstructForm *form2_inst = form2 ? form2->is_instruction() : NULL;
     const char *name_left  = mRule2->_lChild ? mRule2->_lChild->_opType : NULL;
     const char *name_right = mRule2->_rChild ? mRule2->_rChild->_opType : NULL;
+    DataType data_type = Form::none;
+    if (form->is_operand()) {
+      // Make sure the loadX matches the type of the reg
+      data_type = form->ideal_to_Reg_type(form->is_operand()->ideal_type(globals));
+    }
     // Detect reg vs (loadX memory)
     if( form->is_cisc_reg(globals)
         && form2_inst
-        && (is_load_from_memory(mRule2->_opType) != Form::none) // reg vs. (load memory)
+        && data_type != Form::none
+        && (is_load_from_memory(mRule2->_opType) == data_type) // reg vs. (load memory)
         && (name_left != NULL)       // NOT (load)
         && (name_right == NULL) ) {  // NOT (load memory foo)
       const Form *form2_left = name_left ? globals[name_left] : NULL;
@@ -3487,13 +3505,13 @@
   return cisc_spillable;
 }
 
-//---------------------------cisc_spill_match----------------------------------
+//---------------------------cisc_spill_match_rule------------------------------
 // Recursively check two MatchRules for legal conversion via cisc-spilling
 // This method handles the root of Match tree,
 // general recursive checks done in MatchNode
-int  MatchRule::cisc_spill_match(FormDict &globals, RegisterForm *registers,
-                                 MatchRule *mRule2, const char * &operand,
-                                 const char * &reg_type) {
+int  MatchRule::matchrule_cisc_spill_match(FormDict& globals, RegisterForm* registers,
+                                           MatchRule* mRule2, const char* &operand,
+                                           const char* &reg_type) {
   int cisc_spillable  = Maybe_cisc_spillable;
   int left_spillable  = Maybe_cisc_spillable;
   int right_spillable = Maybe_cisc_spillable;
@@ -3531,7 +3549,7 @@
 //----------------------------- equivalent ------------------------------------
 // Recursively check to see if two match rules are equivalent.
 // This rule handles the root.
-bool MatchRule::equivalent(FormDict &globals, MatchRule *mRule2) {
+bool MatchRule::equivalent(FormDict &globals, MatchNode *mRule2) {
   // Check that each sets a result
   if (sets_result() != mRule2->sets_result()) {
     return false;
@@ -3647,7 +3665,7 @@
 
 //-------------------------- swap_commutative_op ------------------------------
 // Recursively swap specified commutative operation with subtree operands.
-void MatchRule::swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt) {
+void MatchRule::matchrule_swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt) {
   assert(match_rules_cnt < 100," too many match rule clones");
   // Clone
   MatchRule* clone = new MatchRule(_AD, this);
@@ -3660,8 +3678,8 @@
   clone->_next = this->_next;
   this-> _next = clone;
   if( (--count) > 0 ) {
-    this-> swap_commutative_op(instr_ident, count, match_rules_cnt);
-    clone->swap_commutative_op(instr_ident, count, match_rules_cnt);
+    this-> matchrule_swap_commutative_op(instr_ident, count, match_rules_cnt);
+    clone->matchrule_swap_commutative_op(instr_ident, count, match_rules_cnt);
   }
 }
 
@@ -3693,7 +3711,7 @@
 
 // Recursive call collecting info on top-level operands, not transitive.
 // Implementation does not modify state of internal structures.
-void MatchRule::append_components(FormDict &locals, ComponentList &components) const {
+void MatchRule::append_components(FormDict& locals, ComponentList& components, bool def_flag) const {
   assert (_name != NULL, "MatchNode::build_components encountered empty node\n");
 
   MatchNode::append_components(locals, components,
@@ -3948,6 +3966,28 @@
 }
 
 
+bool MatchRule::skip_antidep_check() const {
+  // Some loads operate on what is effectively immutable memory so we
+  // should skip the anti dep computations.  For some of these nodes
+  // the rewritable field keeps the anti dep logic from triggering but
+  // for certain kinds of LoadKlass it does not since they are
+  // actually reading memory which could be rewritten by the runtime,
+  // though never by generated code.  This disables it uniformly for
+  // the nodes that behave like this: LoadKlass, LoadNKlass and
+  // LoadRange.
+  if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
+    const char *opType = _rChild->_opType;
+    if (strcmp("LoadKlass", opType) == 0 ||
+        strcmp("LoadNKlass", opType) == 0 ||
+        strcmp("LoadRange", opType) == 0) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+
 Form::DataType MatchRule::is_ideal_store() const {
   Form::DataType ideal_store = Form::none;
 
--- a/src/share/vm/adlc/formssel.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/formssel.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +101,7 @@
   const char    *_ins_pipe;        // Instruction Scheduline description class
 
   uint          *_uniq_idx;        // Indexes of unique operands
+  int            _uniq_idx_length; // Length of _uniq_idx array
   uint           _num_uniq;        // Number  of unique operands
   ComponentList  _components;      // List of Components matches MachNode's
                                    // operand structure
@@ -157,6 +158,9 @@
 
   virtual Form::CallType is_ideal_call() const; // matches ideal 'Call'
   virtual Form::DataType is_ideal_load() const; // node matches ideal 'LoadXNode'
+  // Should antidep checks be disabled for this Instruct
+  // See definition of MatchRule::skip_antidep_check
+  bool skip_antidep_check() const;
   virtual Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
           bool        is_ideal_mem() const { return is_ideal_load() != Form::none || is_ideal_store() != Form::none; }
   virtual uint        two_address(FormDict &globals); // output reg must match input reg
@@ -257,11 +261,13 @@
   void                set_unique_opnds();
   uint                num_unique_opnds() { return _num_uniq; }
   uint                unique_opnds_idx(int idx) {
-                        if( _uniq_idx != NULL && idx > 0 )
+                        if( _uniq_idx != NULL && idx > 0 ) {
+                          assert(idx < _uniq_idx_length, "out of bounds");
                           return _uniq_idx[idx];
-                        else
+                        } else {
                           return idx;
-                      }
+                        }
+  }
 
   // Operands which are only KILLs aren't part of the input array and
   // require special handling in some cases.  Their position in this
@@ -274,7 +280,7 @@
   //
   // Generate the format call for the replacement variable
   void                rep_var_format(FILE *fp, const char *rep_var);
-  // Generate index values needed for determing the operand position
+  // Generate index values needed for determining the operand position
   void                index_temps   (FILE *fp, FormDict &globals, const char *prefix = "", const char *receiver = "");
   // ---------------------------
 
@@ -341,7 +347,7 @@
 
   // --------------------------- Code Block
   // Add code
-  void add_code(const char *string_preceeding_replacement_var);
+  void add_code(const char *string_preceding_replacement_var);
   // Add a replacement variable or one of its subfields
   // Subfields are stored with a leading '$'
   void add_rep_var(char *replacement_var);
@@ -917,8 +923,8 @@
   // return 1 if found and position is incremented by operand offset in rule
   bool       find_name(const char *str, int &position) const;
   bool       find_type(const char *str, int &position) const;
-  void       append_components(FormDict &locals, ComponentList &components,
-                               bool def_flag) const;
+  virtual void append_components(FormDict& locals, ComponentList& components,
+                                 bool def_flag = false) const;
   bool       base_operand(uint &position, FormDict &globals,
                          const char * &result, const char * &name,
                          const char * &opType) const;
@@ -944,12 +950,12 @@
   const char *reduce_left (FormDict &globals)  const;
 
   // Recursive version of check in MatchRule
-  int        cisc_spill_match(FormDict &globals, RegisterForm *registers,
-                              MatchNode *mRule2, const char * &operand,
-                              const char * &reg_type);
+  int        cisc_spill_match(FormDict& globals, RegisterForm* registers,
+                              MatchNode* mRule2, const char* &operand,
+                              const char* &reg_type);
   int        cisc_spill_merge(int left_result, int right_result);
 
-  bool       equivalent(FormDict &globals, MatchNode *mNode2);
+  virtual bool equivalent(FormDict& globals, MatchNode* mNode2);
 
   void       count_commutative_op(int& count);
   void       swap_commutative_op(bool atroot, int count);
@@ -976,7 +982,7 @@
   MatchRule(ArchDesc &ad, MatchNode* mroot, int depth, char* construct, int numleaves);
   ~MatchRule();
 
-  void       append_components(FormDict &locals, ComponentList &components) const;
+  virtual void append_components(FormDict& locals, ComponentList& components, bool def_flag = false) const;
   // Recursive call on all operands' match rules in my match rule.
   bool       base_operand(uint &position, FormDict &globals,
                          const char * &result, const char * &name,
@@ -1000,17 +1006,20 @@
   bool       is_ideal_loopEnd() const; // node matches ideal 'LoopEnd'
   bool       is_ideal_bool() const;    // node matches ideal 'Bool'
   Form::DataType is_ideal_load() const;// node matches ideal 'LoadXNode'
+  // Should antidep checks be disabled for this rule
+  // See definition of MatchRule::skip_antidep_check
+  bool skip_antidep_check() const;
   Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
 
   // Check if 'mRule2' is a cisc-spill variant of this MatchRule
-  int        cisc_spill_match(FormDict &globals, RegisterForm *registers,
-                              MatchRule *mRule2, const char * &operand,
-                              const char * &reg_type);
+  int        matchrule_cisc_spill_match(FormDict &globals, RegisterForm* registers,
+                                        MatchRule* mRule2, const char* &operand,
+                                        const char* &reg_type);
 
   // Check if 'mRule2' is equivalent to this MatchRule
-  bool       equivalent(FormDict &globals, MatchRule *mRule2);
+  virtual bool equivalent(FormDict& globals, MatchNode* mRule2);
 
-  void       swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt);
+  void       matchrule_swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt);
 
   void dump();
   void output(FILE *fp);
--- a/src/share/vm/adlc/main.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/main.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -349,7 +349,7 @@
     }
     else {
       if (_ADL_file._name) printf("%s --> ", _ADL_file._name);
-      printf("%s, %s, %s, %s, %s, %s, %s, %s, %s",
+      printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s",
              _CPP_file._name,
              _CPP_CLONE_file._name,
              _CPP_EXPAND_file._name,
@@ -358,7 +358,8 @@
              _CPP_MISC_file._name,
              _CPP_PEEPHOLE_file._name,
              _CPP_PIPELINE_file._name,
-             _HPP_file._name, _DFA_file._name);
+             _HPP_file._name,
+             _DFA_file._name);
     }
     printf("\n");
   }
@@ -431,7 +432,7 @@
     legal_end = fbuf.get_line();
   }
   *legal_text = legal_start;
-  return (legal_end - legal_start);
+  return (int) (legal_end - legal_start);
 }
 
 // VS2005 has its own definition, identical to this one.
--- a/src/share/vm/adlc/output_c.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/output_c.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -225,11 +225,11 @@
     pipeclass->_parameters.reset();
 
   while ( (paramname = pipeclass->_parameters.iter()) != NULL ) {
-    const PipeClassOperandForm *pipeopnd =
+    const PipeClassOperandForm *tmppipeopnd =
         (const PipeClassOperandForm *)pipeclass->_localUsage[paramname];
 
-    if (pipeopnd)
-      templen += 10 + (int)strlen(pipeopnd->_stage);
+    if (tmppipeopnd)
+      templen += 10 + (int)strlen(tmppipeopnd->_stage);
     else
       templen += 19;
 
@@ -253,10 +253,10 @@
     pipeclass->_parameters.reset();
 
   while ( (paramname = pipeclass->_parameters.iter()) != NULL ) {
-    const PipeClassOperandForm *pipeopnd =
+    const PipeClassOperandForm *tmppipeopnd =
         (const PipeClassOperandForm *)pipeclass->_localUsage[paramname];
     templen += sprintf(&operand_stages[templen], "  stage_%s%c\n",
-      pipeopnd ? pipeopnd->_stage : "undefined",
+      tmppipeopnd ? tmppipeopnd->_stage : "undefined",
       (++i < paramcount ? ',' : ' ') );
   }
 
@@ -1042,10 +1042,10 @@
 
 // Scan the peepmatch and output a test for each instruction
 static void check_peepmatch_instruction_tree(FILE *fp, PeepMatch *pmatch, PeepConstraint *pconstraint) {
-  intptr_t   parent        = -1;
-  intptr_t   inst_position = 0;
-  const char *inst_name    = NULL;
-  intptr_t   input         = 0;
+  int         parent        = -1;
+  int         inst_position = 0;
+  const char* inst_name     = NULL;
+  int         input         = 0;
   fprintf(fp, "      // Check instruction sub-tree\n");
   pmatch->reset();
   for( pmatch->next_instruction( parent, inst_position, inst_name, input );
@@ -1055,14 +1055,14 @@
     if( ! pmatch->is_placeholder() ) {
       // Define temporaries 'inst#', based on parent and parent's input index
       if( parent != -1 ) {                // root was initialized
-        fprintf(fp, "  inst%ld = inst%ld->in(%ld);\n",
+        fprintf(fp, "  inst%d = inst%d->in(%d);\n",
                 inst_position, parent, input);
       }
 
       // When not the root
       // Test we have the correct instruction by comparing the rule
       if( parent != -1 ) {
-        fprintf(fp, "  matches = matches &&  ( inst%ld->rule() == %s_rule );",
+        fprintf(fp, "  matches = matches &&  ( inst%d->rule() == %s_rule );",
                 inst_position, inst_name);
       }
     } else {
@@ -1073,20 +1073,20 @@
   }
 }
 
-static void print_block_index(FILE *fp, intptr_t inst_position) {
+static void print_block_index(FILE *fp, int inst_position) {
   assert( inst_position >= 0, "Instruction number less than zero");
   fprintf(fp, "block_index");
   if( inst_position != 0 ) {
-    fprintf(fp, " - %ld", inst_position);
+    fprintf(fp, " - %d", inst_position);
   }
 }
 
 // Scan the peepmatch and output a test for each instruction
 static void check_peepmatch_instruction_sequence(FILE *fp, PeepMatch *pmatch, PeepConstraint *pconstraint) {
-  intptr_t   parent        = -1;
-  intptr_t   inst_position = 0;
-  const char *inst_name    = NULL;
-  intptr_t   input         = 0;
+  int         parent        = -1;
+  int         inst_position = 0;
+  const char* inst_name     = NULL;
+  int         input         = 0;
   fprintf(fp, "  // Check instruction sub-tree\n");
   pmatch->reset();
   for( pmatch->next_instruction( parent, inst_position, inst_name, input );
@@ -1101,14 +1101,14 @@
         print_block_index(fp, inst_position);
         fprintf(fp, " > 0 ) {\n    Node *n = block->_nodes.at(");
         print_block_index(fp, inst_position);
-        fprintf(fp, ");\n    inst%ld = (n->is_Mach()) ? ", inst_position);
+        fprintf(fp, ");\n    inst%d = (n->is_Mach()) ? ", inst_position);
         fprintf(fp, "n->as_Mach() : NULL;\n  }\n");
       }
 
       // When not the root
       // Test we have the correct instruction by comparing the rule.
       if( parent != -1 ) {
-        fprintf(fp, "  matches = matches && (inst%ld != NULL) && (inst%ld->rule() == %s_rule);\n",
+        fprintf(fp, "  matches = matches && (inst%d != NULL) && (inst%d->rule() == %s_rule);\n",
                 inst_position, inst_position, inst_name);
       }
     } else {
@@ -1121,10 +1121,10 @@
 
 // Build mapping for register indices, num_edges to input
 static void build_instruction_index_mapping( FILE *fp, FormDict &globals, PeepMatch *pmatch ) {
-  intptr_t   parent        = -1;
-  intptr_t   inst_position = 0;
-  const char *inst_name    = NULL;
-  intptr_t   input         = 0;
+  int         parent        = -1;
+  int         inst_position = 0;
+  const char* inst_name     = NULL;
+  int         input         = 0;
   fprintf(fp, "      // Build map to register info\n");
   pmatch->reset();
   for( pmatch->next_instruction( parent, inst_position, inst_name, input );
@@ -1136,9 +1136,9 @@
       InstructForm *inst = globals[inst_name]->is_instruction();
       if( inst != NULL ) {
         char inst_prefix[]  = "instXXXX_";
-        sprintf(inst_prefix, "inst%ld_",   inst_position);
+        sprintf(inst_prefix, "inst%d_",   inst_position);
         char receiver[]     = "instXXXX->";
-        sprintf(receiver,    "inst%ld->", inst_position);
+        sprintf(receiver,    "inst%d->", inst_position);
         inst->index_temps( fp, globals, inst_prefix, receiver );
       }
     }
@@ -1168,7 +1168,7 @@
       }
 
       // LEFT
-      intptr_t left_index  = pconstraint->_left_inst;
+      int left_index       = pconstraint->_left_inst;
       const char *left_op  = pconstraint->_left_op;
       // Access info on the instructions whose operands are compared
       InstructForm *inst_left = globals[pmatch->instruction_name(left_index)]->is_instruction();
@@ -1191,7 +1191,7 @@
 
       // RIGHT
       int right_op_index = -1;
-      intptr_t right_index = pconstraint->_right_inst;
+      int right_index      = pconstraint->_right_inst;
       const char *right_op = pconstraint->_right_op;
       if( right_index != -1 ) { // Match operand
         // Access info on the instructions whose operands are compared
@@ -1351,7 +1351,7 @@
     assert( root_form != NULL, "Replacement instruction was not previously defined");
     fprintf(fp, "        %sNode *root = new (C) %sNode();\n", root_inst, root_inst);
 
-    intptr_t    inst_num;
+    int         inst_num;
     const char *op_name;
     int         opnds_index = 0;            // define result operand
     // Then install the use-operands for the new sub-tree
@@ -1362,7 +1362,6 @@
       InstructForm *inst_form;
       inst_form  = globals[pmatch->instruction_name(inst_num)]->is_instruction();
       assert( inst_form, "Parser should guaranty this is an instruction");
-      int op_base     = inst_form->oper_input_base(globals);
       int inst_op_num = inst_form->operand_position(op_name, Component::USE);
       if( inst_op_num == NameList::Not_in_list )
         inst_op_num = inst_form->operand_position(op_name, Component::USE_DEF);
@@ -1379,32 +1378,32 @@
         // Add unmatched edges from root of match tree
         int op_base = root_form->oper_input_base(globals);
         for( int unmatched_edge = 1; unmatched_edge < op_base; ++unmatched_edge ) {
-          fprintf(fp, "        root->add_req(inst%ld->in(%d));        // unmatched ideal edge\n",
+          fprintf(fp, "        root->add_req(inst%d->in(%d));        // unmatched ideal edge\n",
                                           inst_num, unmatched_edge);
         }
         // If new instruction captures bottom type
         if( root_form->captures_bottom_type() ) {
           // Get bottom type from instruction whose result we are replacing
-          fprintf(fp, "        root->_bottom_type = inst%ld->bottom_type();\n", inst_num);
+          fprintf(fp, "        root->_bottom_type = inst%d->bottom_type();\n", inst_num);
         }
         // Define result register and result operand
-        fprintf(fp, "        ra_->add_reference(root, inst%ld);\n", inst_num);
-        fprintf(fp, "        ra_->set_oop (root, ra_->is_oop(inst%ld));\n", inst_num);
-        fprintf(fp, "        ra_->set_pair(root->_idx, ra_->get_reg_second(inst%ld), ra_->get_reg_first(inst%ld));\n", inst_num, inst_num);
-        fprintf(fp, "        root->_opnds[0] = inst%ld->_opnds[0]->clone(C); // result\n", inst_num);
+        fprintf(fp, "        ra_->add_reference(root, inst%d);\n", inst_num);
+        fprintf(fp, "        ra_->set_oop (root, ra_->is_oop(inst%d));\n", inst_num);
+        fprintf(fp, "        ra_->set_pair(root->_idx, ra_->get_reg_second(inst%d), ra_->get_reg_first(inst%d));\n", inst_num, inst_num);
+        fprintf(fp, "        root->_opnds[0] = inst%d->_opnds[0]->clone(C); // result\n", inst_num);
         fprintf(fp, "        // ----- Done with initial setup -----\n");
       } else {
         if( (op_form == NULL) || (op_form->is_base_constant(globals) == Form::none) ) {
           // Do not have ideal edges for constants after matching
-          fprintf(fp, "        for( unsigned x%d = inst%ld_idx%d; x%d < inst%ld_idx%d; x%d++ )\n",
+          fprintf(fp, "        for( unsigned x%d = inst%d_idx%d; x%d < inst%d_idx%d; x%d++ )\n",
                   inst_op_num, inst_num, inst_op_num,
                   inst_op_num, inst_num, inst_op_num+1, inst_op_num );
-          fprintf(fp, "          root->add_req( inst%ld->in(x%d) );\n",
+          fprintf(fp, "          root->add_req( inst%d->in(x%d) );\n",
                   inst_num, inst_op_num );
         } else {
           fprintf(fp, "        // no ideal edge for constants after matching\n");
         }
-        fprintf(fp, "        root->_opnds[%d] = inst%ld->_opnds[%d]->clone(C);\n",
+        fprintf(fp, "        root->_opnds[%d] = inst%d->_opnds[%d]->clone(C);\n",
                 opnds_index, inst_num, inst_op_num );
       }
       ++opnds_index;
@@ -1443,7 +1442,7 @@
   }
   for( int i = 0; i <= max_position; ++i ) {
     if( i == 0 ) {
-      fprintf(fp, "  MachNode *inst0 = this;\n", i);
+      fprintf(fp, "  MachNode *inst0 = this;\n");
     } else {
       fprintf(fp, "  MachNode *inst%d = NULL;\n", i);
     }
@@ -1743,9 +1742,10 @@
       }
       // delete the rest of edges
       fprintf(fp,"  for(int i = idx%d - 1; i >= (int)idx%d; i--) {\n", cur_num_opnds, new_num_opnds);
-      fprintf(fp,"    del_req(i);\n", i);
+      fprintf(fp,"    del_req(i);\n");
       fprintf(fp,"  }\n");
       fprintf(fp,"  _num_opnds = %d;\n", new_num_opnds);
+      assert(new_num_opnds == node->num_unique_opnds(), "what?");
     }
   }
 
@@ -1817,7 +1817,7 @@
 
   fprintf(fp,"\n");
   if( node->expands() ) {
-    fprintf(fp,"  return result;\n",cnt-1);
+    fprintf(fp,"  return result;\n");
   } else {
     fprintf(fp,"  return this;\n");
   }
@@ -2140,8 +2140,59 @@
         // A subfield variable, '$$' prefix
         emit_field( rep_var );
       } else {
-        // A replacement variable, '$' prefix
-        emit_rep_var( rep_var );
+        if (_strings_to_emit.peek() != NULL &&
+            strcmp(_strings_to_emit.peek(), "$Address") == 0) {
+          fprintf(_fp, "Address::make_raw(");
+
+          emit_rep_var( rep_var );
+          fprintf(_fp,"->base(ra_,this,idx%d), ", _operand_idx);
+
+          _reg_status = LITERAL_ACCESSED;
+          emit_rep_var( rep_var );
+          fprintf(_fp,"->index(ra_,this,idx%d), ", _operand_idx);
+
+          _reg_status = LITERAL_ACCESSED;
+          emit_rep_var( rep_var );
+          fprintf(_fp,"->scale(), ");
+
+          _reg_status = LITERAL_ACCESSED;
+          emit_rep_var( rep_var );
+          Form::DataType stack_type = _operand ? _operand->is_user_name_for_sReg() : Form::none;
+          if( _operand  && _operand_idx==0 && stack_type != Form::none ) {
+            fprintf(_fp,"->disp(ra_,this,0), ");
+          } else {
+            fprintf(_fp,"->disp(ra_,this,idx%d), ", _operand_idx);
+          }
+
+          _reg_status = LITERAL_ACCESSED;
+          emit_rep_var( rep_var );
+          fprintf(_fp,"->disp_is_oop())");
+
+          // skip trailing $Address
+          _strings_to_emit.iter();
+        } else {
+          // A replacement variable, '$' prefix
+          const char* next = _strings_to_emit.peek();
+          const char* next2 = _strings_to_emit.peek(2);
+          if (next != NULL && next2 != NULL && strcmp(next2, "$Register") == 0 &&
+              (strcmp(next, "$base") == 0 || strcmp(next, "$index") == 0)) {
+            // handle $rev_var$$base$$Register and $rev_var$$index$$Register by
+            // producing as_Register(opnd_array(#)->base(ra_,this,idx1)).
+            fprintf(_fp, "as_Register(");
+            // emit the operand reference
+            emit_rep_var( rep_var );
+            rep_var = _strings_to_emit.iter();
+            assert(strcmp(rep_var, "$base") == 0 || strcmp(rep_var, "$index") == 0, "bad pattern");
+            // handle base or index
+            emit_field(rep_var);
+            rep_var = _strings_to_emit.iter();
+            assert(strcmp(rep_var, "$Register") == 0, "bad pattern");
+            // close up the parens
+            fprintf(_fp, ")");
+          } else {
+            emit_rep_var( rep_var );
+          }
+        }
       } // end replacement and/or subfield
     }
   }
@@ -3711,6 +3762,12 @@
     if ( this->captures_bottom_type() ) {
       fprintf(fp_cpp, "  node->_bottom_type = bottom_type();\n");
     }
+
+    uint cur_num_opnds = num_opnds();
+    if (cur_num_opnds > 1 && cur_num_opnds != num_unique_opnds()) {
+      fprintf(fp_cpp,"  node->_num_opnds = %d;\n", num_unique_opnds());
+    }
+
     fprintf(fp_cpp, "\n");
     fprintf(fp_cpp, "  // Copy _idx, inputs and operands to new node\n");
     fprintf(fp_cpp, "  fill_new_machnode(node, C);\n");
--- a/src/share/vm/adlc/output_h.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/adlc/output_h.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -574,7 +574,7 @@
   // Generate the user-defined portion of the format
   if( inst._format ) {
     // If there are replacement variables,
-    // Generate index values needed for determing the operand position
+    // Generate index values needed for determining the operand position
     if( inst._format->_rep_vars.count() )
       inst.index_temps(fp, globals);
 
@@ -1367,11 +1367,11 @@
         else if (!strcmp(oper->ideal_type(_globalNames), "ConN")) {
           // Access the locally stored constant
           fprintf(fp,"  virtual intptr_t       constant() const {");
-          fprintf(fp,   " return _c0->make_oopptr()->get_con();");
+          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->make_oopptr()->isa_oop_ptr();");
+          fprintf(fp,   " return _c0->get_ptrtype()->isa_oop_ptr();");
           fprintf(fp, " }\n");
         }
         else if (!strcmp(oper->ideal_type(_globalNames), "ConL")) {
@@ -1832,7 +1832,7 @@
         break;
       case Form::idealP:
       case Form::idealN:
-        fprintf(fp,"    return  opnd_array(1)->type();\n",result);
+        fprintf(fp,"    return  opnd_array(1)->type();\n");
         break;
       case Form::idealD:
         fprintf(fp,"    return  TypeD::make(opnd_array(1)->constantD());\n");
--- a/src/share/vm/asm/assembler.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/asm/assembler.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -31,7 +31,7 @@
 // The AbstractAssembler is generating code into a CodeBuffer. To make code generation faster,
 // the assembler keeps a copy of the code buffers boundaries & modifies them when
 // emitting bytes rather than using the code buffers accessor functions all the time.
-// The code buffer is updated via set_code_end(...) after emiting a whole instruction.
+// The code buffer is updated via set_code_end(...) after emitting a whole instruction.
 
 AbstractAssembler::AbstractAssembler(CodeBuffer* code) {
   if (code == NULL)  return;
@@ -239,6 +239,78 @@
   }
 }
 
+struct DelayedConstant {
+  typedef void (*value_fn_t)();
+  BasicType type;
+  intptr_t value;
+  value_fn_t value_fn;
+  // This limit of 20 is generous for initial uses.
+  // The limit needs to be large enough to store the field offsets
+  // into classes which do not have statically fixed layouts.
+  // (Initial use is for method handle object offsets.)
+  // Look for uses of "delayed_value" in the source code
+  // and make sure this number is generous enough to handle all of them.
+  enum { DC_LIMIT = 20 };
+  static DelayedConstant delayed_constants[DC_LIMIT];
+  static DelayedConstant* add(BasicType type, value_fn_t value_fn);
+  bool match(BasicType t, value_fn_t cfn) {
+    return type == t && value_fn == cfn;
+  }
+  static void update_all();
+};
+
+DelayedConstant DelayedConstant::delayed_constants[DC_LIMIT];
+// Default C structure initialization rules have the following effect here:
+// = { { (BasicType)0, (intptr_t)NULL }, ... };
+
+DelayedConstant* DelayedConstant::add(BasicType type,
+                                      DelayedConstant::value_fn_t cfn) {
+  for (int i = 0; i < DC_LIMIT; i++) {
+    DelayedConstant* dcon = &delayed_constants[i];
+    if (dcon->match(type, cfn))
+      return dcon;
+    if (dcon->value_fn == NULL) {
+      // (cmpxchg not because this is multi-threaded but because I'm paranoid)
+      if (Atomic::cmpxchg_ptr(CAST_FROM_FN_PTR(void*, cfn), &dcon->value_fn, NULL) == NULL) {
+        dcon->type = type;
+        return dcon;
+      }
+    }
+  }
+  // If this assert is hit (in pre-integration testing!) then re-evaluate
+  // the comment on the definition of DC_LIMIT.
+  guarantee(false, "too many delayed constants");
+  return NULL;
+}
+
+void DelayedConstant::update_all() {
+  for (int i = 0; i < DC_LIMIT; i++) {
+    DelayedConstant* dcon = &delayed_constants[i];
+    if (dcon->value_fn != NULL && dcon->value == 0) {
+      typedef int     (*int_fn_t)();
+      typedef address (*address_fn_t)();
+      switch (dcon->type) {
+      case T_INT:     dcon->value = (intptr_t) ((int_fn_t)    dcon->value_fn)(); break;
+      case T_ADDRESS: dcon->value = (intptr_t) ((address_fn_t)dcon->value_fn)(); break;
+      }
+    }
+  }
+}
+
+intptr_t* AbstractAssembler::delayed_value_addr(int(*value_fn)()) {
+  DelayedConstant* dcon = DelayedConstant::add(T_INT, (DelayedConstant::value_fn_t) value_fn);
+  return &dcon->value;
+}
+intptr_t* AbstractAssembler::delayed_value_addr(address(*value_fn)()) {
+  DelayedConstant* dcon = DelayedConstant::add(T_ADDRESS, (DelayedConstant::value_fn_t) value_fn);
+  return &dcon->value;
+}
+void AbstractAssembler::update_delayed_values() {
+  DelayedConstant::update_all();
+}
+
+
+
 
 void AbstractAssembler::block_comment(const char* comment) {
   if (sect() == CodeBuffer::SECT_INSTS) {
@@ -249,16 +321,19 @@
 bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
   // Exception handler checks the nmethod's implicit null checks table
   // only when this method returns false.
-  if (UseCompressedOops) {
+#ifdef _LP64
+  if (UseCompressedOops && Universe::narrow_oop_base() != NULL) {
+    assert (Universe::heap() != NULL, "java heap should be initialized");
     // The first page after heap_base is unmapped and
     // the 'offset' is equal to [heap_base + offset] for
     // narrow oop implicit null checks.
-    uintptr_t heap_base = (uintptr_t)Universe::heap_base();
-    if ((uintptr_t)offset >= heap_base) {
+    uintptr_t base = (uintptr_t)Universe::narrow_oop_base();
+    if ((uintptr_t)offset >= base) {
       // Normalize offset for the next check.
-      offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
+      offset = (intptr_t)(pointer_delta((void*)offset, (void*)base, 1));
     }
   }
+#endif
   return offset < 0 || os::vm_page_size() <= offset;
 }
 
--- a/src/share/vm/asm/assembler.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/asm/assembler.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains platform-independant assembler declarations.
+// This file contains platform-independent assembler declarations.
 
 class CodeBuffer;
 class MacroAssembler;
@@ -140,6 +140,28 @@
   }
 };
 
+// A union type for code which has to assemble both constant and
+// non-constant operands, when the distinction cannot be made
+// statically.
+class RegisterOrConstant VALUE_OBJ_CLASS_SPEC {
+ private:
+  Register _r;
+  intptr_t _c;
+
+ public:
+  RegisterOrConstant(): _r(noreg), _c(0) {}
+  RegisterOrConstant(Register r): _r(r), _c(0) {}
+  RegisterOrConstant(intptr_t c): _r(noreg), _c(c) {}
+
+  Register as_register() const { assert(is_register(),""); return _r; }
+  intptr_t as_constant() const { assert(is_constant(),""); return _c; }
+
+  Register register_or_noreg() const { return _r; }
+  intptr_t constant_or_zero() const  { return _c; }
+
+  bool is_register() const { return _r != noreg; }
+  bool is_constant() const { return _r == noreg; }
+};
 
 // The Abstract Assembler: Pure assembler doing NO optimizations on the
 // instruction level; i.e., what you write is what you get.
@@ -280,6 +302,26 @@
   inline address address_constant(Label& L);
   inline address address_table_constant(GrowableArray<Label*> label);
 
+  // Bootstrapping aid to cope with delayed determination of constants.
+  // Returns a static address which will eventually contain the constant.
+  // The value zero (NULL) stands instead of a constant which is still uncomputed.
+  // Thus, the eventual value of the constant must not be zero.
+  // This is fine, since this is designed for embedding object field
+  // offsets in code which must be generated before the object class is loaded.
+  // Field offsets are never zero, since an object's header (mark word)
+  // is located at offset zero.
+  RegisterOrConstant delayed_value(int(*value_fn)(), Register tmp, int offset = 0) {
+    return delayed_value_impl(delayed_value_addr(value_fn), tmp, offset);
+  }
+  RegisterOrConstant delayed_value(address(*value_fn)(), Register tmp, int offset = 0) {
+    return delayed_value_impl(delayed_value_addr(value_fn), tmp, offset);
+  }
+  virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset) = 0;
+  // Last overloading is platform-dependent; look in assembler_<arch>.cpp.
+  static intptr_t* delayed_value_addr(int(*constant_fn)());
+  static intptr_t* delayed_value_addr(address(*constant_fn)());
+  static void update_delayed_values();
+
   // Bang stack to trigger StackOverflowError at a safe location
   // implementation delegates to machine-specific bang_stack_with_offset
   void generate_stack_overflow_check( int frame_size_in_bytes );
--- a/src/share/vm/asm/codeBuffer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/asm/codeBuffer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +123,10 @@
     // addresses constructed before expansions will not be confused.
     cb->free_blob();
   }
+
+  // free any overflow storage
+  delete _overflow_arena;
+
 #ifdef ASSERT
   Copy::fill_to_bytes(this, sizeof(*this), badResourceValue);
 #endif
--- a/src/share/vm/c1/c1_Compilation.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_Compilation.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -319,7 +319,7 @@
     return;
   }
 
-  if (JvmtiExport::can_hotswap_or_post_breakpoint()) {
+  if (_env->jvmti_can_hotswap_or_post_breakpoint()) {
     // We can assert evol_method because method->can_be_compiled is true.
     dependency_recorder()->assert_evol_method(method());
   }
@@ -435,7 +435,7 @@
   assert(_arena == NULL, "shouldn't only one instance of Compilation in existence at a time");
   _arena = Thread::current()->resource_area();
   _compilation = this;
-  _needs_debug_information = JvmtiExport::can_examine_or_deopt_anywhere() ||
+  _needs_debug_information = _env->jvmti_can_examine_or_deopt_anywhere() ||
                                JavaMonitorsInStackTrace || AlwaysEmitDebugInfo || DeoptimizeALot;
   _exception_info_list = new ExceptionInfoList();
   _implicit_exception_table.set_size(0);
--- a/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1524,6 +1524,11 @@
     code = Bytecodes::_invokespecial;
   }
 
+  if (code == Bytecodes::_invokedynamic) {
+    BAILOUT("invokedynamic NYI"); // FIXME
+    return;
+  }
+
   // NEEDS_CLEANUP
   // I've added the target-is_loaded() test below but I don't really understand
   // how klass->is_loaded() can be true and yet target->is_loaded() is false.
@@ -1657,7 +1662,7 @@
         // Register dependence if JVMTI has either breakpoint
         // setting or hotswapping of methods capabilities since they may
         // cause deoptimization.
-        if (JvmtiExport::can_hotswap_or_post_breakpoint()) {
+        if (compilation()->env()->jvmti_can_hotswap_or_post_breakpoint()) {
           dependency_recorder()->assert_evol_method(inline_target);
         }
         return;
@@ -2431,8 +2436,8 @@
       case Bytecodes::_invokevirtual  : // fall through
       case Bytecodes::_invokespecial  : // fall through
       case Bytecodes::_invokestatic   : // fall through
+      case Bytecodes::_invokedynamic  : // fall through
       case Bytecodes::_invokeinterface: invoke(code); break;
-      case Bytecodes::_xxxunusedxxx   : ShouldNotReachHere(); break;
       case Bytecodes::_new            : new_instance(s.get_index_big()); break;
       case Bytecodes::_newarray       : new_type_array(); break;
       case Bytecodes::_anewarray      : new_object_array(); break;
@@ -2571,6 +2576,7 @@
     , Bytecodes::_invokevirtual
     , Bytecodes::_invokespecial
     , Bytecodes::_invokestatic
+    , Bytecodes::_invokedynamic
     , Bytecodes::_invokeinterface
     , Bytecodes::_new
     , Bytecodes::_newarray
@@ -2857,7 +2863,7 @@
   start_block->merge(_initial_state);
 
   BlockBegin* sync_handler = NULL;
-  if (method()->is_synchronized() || DTraceMethodProbes) {
+  if (method()->is_synchronized() || _compilation->env()->dtrace_method_probes()) {
     // setup an exception handler to do the unlocking and/or notification
     sync_handler = new BlockBegin(-1);
     sync_handler->set(BlockBegin::exception_entry_flag);
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1064,7 +1064,7 @@
 
 
 void LIRGenerator::do_Return(Return* x) {
-  if (DTraceMethodProbes) {
+  if (compilation()->env()->dtrace_method_probes()) {
     BasicTypeList signature;
     signature.append(T_INT);    // thread
     signature.append(T_OBJECT); // methodOop
@@ -1534,12 +1534,8 @@
   }
 
   if (is_oop) {
-#ifdef PRECISE_CARDMARK
-    // Precise cardmarks don't work
-    post_barrier(LIR_OprFact::address(address), value.result());
-#else
+    // Store to object so mark the card of the header
     post_barrier(object.result(), value.result());
-#endif // PRECISE_CARDMARK
   }
 
   if (is_volatile && os::is_MP()) {
@@ -1769,7 +1765,7 @@
     __ null_check(exception_opr, new CodeEmitInfo(info, true));
   }
 
-  if (JvmtiExport::can_post_exceptions() &&
+  if (compilation()->env()->jvmti_can_post_exceptions() &&
       !block()->is_set(BlockBegin::default_exception_handler_flag)) {
     // we need to go through the exception lookup path to get JVMTI
     // notification done
@@ -1779,7 +1775,7 @@
   assert(!block()->is_set(BlockBegin::default_exception_handler_flag) || unwind,
          "should be no more handlers to dispatch to");
 
-  if (DTraceMethodProbes &&
+  if (compilation()->env()->dtrace_method_probes() &&
       block()->is_set(BlockBegin::default_exception_handler_flag)) {
     // notify that this frame is unwinding
     BasicTypeList signature;
@@ -2204,7 +2200,7 @@
     java_index += type2size[t];
   }
 
-  if (DTraceMethodProbes) {
+  if (compilation()->env()->dtrace_method_probes()) {
     BasicTypeList signature;
     signature.append(T_INT);    // thread
     signature.append(T_OBJECT); // methodOop
--- a/src/share/vm/c1/c1_LinearScan.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_LinearScan.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -2956,9 +2956,11 @@
 
   NOT_PRODUCT(print_intervals("After Register Allocation"));
   NOT_PRODUCT(print_lir(2, "LIR after register allocation:"));
-  DEBUG_ONLY(verify());
 
   sort_intervals_after_allocation();
+
+  DEBUG_ONLY(verify());
+
   eliminate_spill_moves();
   assign_reg_num();
   CHECK_BAILOUT();
@@ -3147,6 +3149,16 @@
 
 
 void LinearScan::verify_no_oops_in_fixed_intervals() {
+  Interval* fixed_intervals;
+  Interval* other_intervals;
+  create_unhandled_lists(&fixed_intervals, &other_intervals, is_precolored_cpu_interval, NULL);
+
+  // to ensure a walking until the last instruction id, add a dummy interval
+  // with a high operation id
+  other_intervals = new Interval(any_reg);
+  other_intervals->add_range(max_jint - 2, max_jint - 1);
+  IntervalWalker* iw = new IntervalWalker(this, fixed_intervals, other_intervals);
+
   LIR_OpVisitState visitor;
   for (int i = 0; i < block_count(); i++) {
     BlockBegin* block = block_at(i);
@@ -3159,6 +3171,54 @@
 
       visitor.visit(op);
 
+      if (visitor.info_count() > 0) {
+        iw->walk_before(op->id());
+        bool check_live = true;
+        if (op->code() == lir_move) {
+          LIR_Op1* move = (LIR_Op1*)op;
+          check_live = (move->patch_code() == lir_patch_none);
+        }
+        LIR_OpBranch* branch = op->as_OpBranch();
+        if (branch != NULL && branch->stub() != NULL && branch->stub()->is_exception_throw_stub()) {
+          // Don't bother checking the stub in this case since the
+          // exception stub will never return to normal control flow.
+          check_live = false;
+        }
+
+        // Make sure none of the fixed registers is live across an
+        // oopmap since we can't handle that correctly.
+        if (check_live) {
+          for (Interval* interval = iw->active_first(fixedKind);
+               interval != Interval::end();
+               interval = interval->next()) {
+            if (interval->current_to() > op->id() + 1) {
+              // This interval is live out of this op so make sure
+              // that this interval represents some value that's
+              // referenced by this op either as an input or output.
+              bool ok = false;
+              for_each_visitor_mode(mode) {
+                int n = visitor.opr_count(mode);
+                for (int k = 0; k < n; k++) {
+                  LIR_Opr opr = visitor.opr_at(mode, k);
+                  if (opr->is_fixed_cpu()) {
+                    if (interval_at(reg_num(opr)) == interval) {
+                      ok = true;
+                      break;
+                    }
+                    int hi = reg_numHi(opr);
+                    if (hi != -1 && interval_at(hi) == interval) {
+                      ok = true;
+                      break;
+                    }
+                  }
+                }
+              }
+              assert(ok, "fixed intervals should never be live across an oopmap point");
+            }
+          }
+        }
+      }
+
       // oop-maps at calls do not contain registers, so check is not needed
       if (!visitor.has_call()) {
 
--- a/src/share/vm/c1/c1_Optimizer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_Optimizer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/c1/c1_Runtime1.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/c1/c1_Runtime1.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/ci/bcEscapeAnalyzer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -833,6 +833,7 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         { bool will_link;
           ciMethod* target = s.get_method(will_link);
@@ -848,9 +849,6 @@
           }
         }
         break;
-      case Bytecodes::_xxxunusedxxx:
-        ShouldNotReachHere();
-        break;
       case Bytecodes::_new:
         state.apush(allocated_obj);
         break;
--- a/src/share/vm/ci/ciEnv.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciEnv.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -171,6 +171,34 @@
 }
 
 // ------------------------------------------------------------------
+// Cache Jvmti state
+void ciEnv::cache_jvmti_state() {
+  VM_ENTRY_MARK;
+  // Get Jvmti capabilities under lock to get consistant values.
+  MutexLocker mu(JvmtiThreadState_lock);
+  _jvmti_can_hotswap_or_post_breakpoint = JvmtiExport::can_hotswap_or_post_breakpoint();
+  _jvmti_can_examine_or_deopt_anywhere  = JvmtiExport::can_examine_or_deopt_anywhere();
+  _jvmti_can_access_local_variables     = JvmtiExport::can_access_local_variables();
+  _jvmti_can_post_exceptions            = JvmtiExport::can_post_exceptions();
+}
+
+// ------------------------------------------------------------------
+// Cache DTrace flags
+void ciEnv::cache_dtrace_flags() {
+  // Need lock?
+  _dtrace_extended_probes = ExtendedDTraceProbes;
+  if (_dtrace_extended_probes) {
+    _dtrace_monitor_probes  = true;
+    _dtrace_method_probes   = true;
+    _dtrace_alloc_probes    = true;
+  } else {
+    _dtrace_monitor_probes  = DTraceMonitorProbes;
+    _dtrace_method_probes   = DTraceMethodProbes;
+    _dtrace_alloc_probes    = DTraceAllocProbes;
+  }
+}
+
+// ------------------------------------------------------------------
 // helper for lazy exception creation
 ciInstance* ciEnv::get_or_create_exception(jobject& handle, symbolHandle name) {
   VM_ENTRY_MARK;
@@ -810,16 +838,39 @@
     // and invalidating our dependencies until we install this method.
     MutexLocker ml(Compile_lock);
 
-    if (log() != NULL) {
-      // Log the dependencies which this compilation declares.
-      dependencies()->log_all_dependencies();
+    // Change in Jvmti state may invalidate compilation.
+    if (!failing() &&
+        ( (!jvmti_can_hotswap_or_post_breakpoint() &&
+           JvmtiExport::can_hotswap_or_post_breakpoint()) ||
+          (!jvmti_can_examine_or_deopt_anywhere() &&
+           JvmtiExport::can_examine_or_deopt_anywhere()) ||
+          (!jvmti_can_access_local_variables() &&
+           JvmtiExport::can_access_local_variables()) ||
+          (!jvmti_can_post_exceptions() &&
+           JvmtiExport::can_post_exceptions()) )) {
+      record_failure("Jvmti state change invalidated dependencies");
     }
 
-    // Encode the dependencies now, so we can check them right away.
-    dependencies()->encode_content_bytes();
+    // Change in DTrace flags may invalidate compilation.
+    if (!failing() &&
+        ( (!dtrace_extended_probes() && ExtendedDTraceProbes) ||
+          (!dtrace_method_probes() && DTraceMethodProbes) ||
+          (!dtrace_alloc_probes() && DTraceAllocProbes) )) {
+      record_failure("DTrace flags change invalidated dependencies");
+    }
 
-    // Check for {class loads, evolution, breakpoints} during compilation
-    check_for_system_dictionary_modification(target);
+    if (!failing()) {
+      if (log() != NULL) {
+        // Log the dependencies which this compilation declares.
+        dependencies()->log_all_dependencies();
+      }
+
+      // Encode the dependencies now, so we can check them right away.
+      dependencies()->encode_content_bytes();
+
+      // Check for {class loads, evolution, breakpoints} during compilation
+      check_for_system_dictionary_modification(target);
+    }
 
     methodHandle method(THREAD, target->get_methodOop());
 
--- a/src/share/vm/ci/ciEnv.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciEnv.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -53,6 +53,18 @@
   char* _name_buffer;
   int   _name_buffer_len;
 
+  // Cache Jvmti state
+  bool  _jvmti_can_hotswap_or_post_breakpoint;
+  bool  _jvmti_can_examine_or_deopt_anywhere;
+  bool  _jvmti_can_access_local_variables;
+  bool  _jvmti_can_post_exceptions;
+
+  // Cache DTrace flags
+  bool  _dtrace_extended_probes;
+  bool  _dtrace_monitor_probes;
+  bool  _dtrace_method_probes;
+  bool  _dtrace_alloc_probes;
+
   // Distinguished instances of certain ciObjects..
   static ciObject*              _null_object_instance;
   static ciMethodKlass*         _method_klass_instance;
@@ -236,6 +248,20 @@
   bool break_at_compile() { return _break_at_compile; }
   void set_break_at_compile(bool z) { _break_at_compile = z; }
 
+  // Cache Jvmti state
+  void  cache_jvmti_state();
+  bool  jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
+  bool  jvmti_can_examine_or_deopt_anywhere()  const { return _jvmti_can_examine_or_deopt_anywhere; }
+  bool  jvmti_can_access_local_variables()     const { return _jvmti_can_access_local_variables; }
+  bool  jvmti_can_post_exceptions()            const { return _jvmti_can_post_exceptions; }
+
+  // Cache DTrace flags
+  void  cache_dtrace_flags();
+  bool  dtrace_extended_probes() const { return _dtrace_extended_probes; }
+  bool  dtrace_monitor_probes()  const { return _dtrace_monitor_probes; }
+  bool  dtrace_method_probes()   const { return _dtrace_method_probes; }
+  bool  dtrace_alloc_probes()    const { return _dtrace_alloc_probes; }
+
   // The compiler task which has created this env.
   // May be useful to find out compile_id, comp_level, etc.
   CompileTask* task() { return _task; }
--- a/src/share/vm/ci/ciMethod.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciMethod.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,7 +60,8 @@
   _flow               = NULL;
 #endif // COMPILER2
 
-  if (JvmtiExport::can_hotswap_or_post_breakpoint() && _is_compilable) {
+  ciEnv *env = CURRENT_ENV;
+  if (env->jvmti_can_hotswap_or_post_breakpoint() && _is_compilable) {
     // 6328518 check hotswap conditions under the right lock.
     MutexLocker locker(Compile_lock);
     if (Dependencies::check_evol_method(h_m()) != NULL) {
@@ -84,7 +85,6 @@
   if (_can_be_statically_bound && h_m()->is_abstract())
     _can_be_statically_bound = false;
 
-  ciEnv *env = CURRENT_ENV;
   // generating _signature may allow GC and therefore move m.
   // These fields are always filled in.
   _name = env->get_object(h_m()->name())->as_symbol();
@@ -337,7 +337,7 @@
     _liveness->compute_liveness();
   }
   MethodLivenessResult result = _liveness->get_liveness_at(bci);
-  if (JvmtiExport::can_access_local_variables() || DeoptimizeALot || CompileTheWorld) {
+  if (CURRENT_ENV->jvmti_can_access_local_variables() || DeoptimizeALot || CompileTheWorld) {
     // Keep all locals live for the user's edification and amusement.
     result.at_put_range(0, result.size(), true);
   }
@@ -675,6 +675,30 @@
 }
 
 // ------------------------------------------------------------------
+// invokedynamic support
+//
+bool ciMethod::is_method_handle_invoke() {
+  check_is_loaded();
+  bool flag = ((flags().as_int() & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS);
+#ifdef ASSERT
+  {
+    VM_ENTRY_MARK;
+    bool flag2 = get_methodOop()->is_method_handle_invoke();
+    assert(flag == flag2, "consistent");
+  }
+#endif //ASSERT
+  return flag;
+}
+
+ciInstance* ciMethod::method_handle_type() {
+  check_is_loaded();
+  VM_ENTRY_MARK;
+  oop mtype = get_methodOop()->method_handle_type();
+  return CURRENT_THREAD_ENV->get_object(mtype)->as_instance();
+}
+
+
+// ------------------------------------------------------------------
 // ciMethod::build_method_data
 //
 // Generate new methodDataOop objects at compile time.
--- a/src/share/vm/ci/ciMethod.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciMethod.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -207,6 +207,8 @@
   bool check_call(int refinfo_index, bool is_static) const;
   void build_method_data();  // make sure it exists in the VM also
   int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
+  bool is_method_handle_invoke();
+  ciInstance* method_handle_type();
 
   // What kind of ciObject is this?
   bool is_method()                               { return true; }
--- a/src/share/vm/ci/ciMethodBlocks.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciMethodBlocks.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -284,6 +284,11 @@
       //
       int ex_start = handler->start();
       int ex_end = handler->limit();
+      // ensure a block at the start of exception range and start of following code
+      (void) make_block_at(ex_start);
+      if (ex_end < _code_size)
+        (void) make_block_at(ex_end);
+
       if (eb->is_handler()) {
         // Extend old handler exception range to cover additional range.
         int old_ex_start = eb->ex_start_bci();
@@ -295,10 +300,6 @@
         eb->clear_exception_handler(); // Reset exception information
       }
       eb->set_exception_range(ex_start, ex_end);
-      // ensure a block at the start of exception range and start of following code
-      (void) make_block_at(ex_start);
-      if (ex_end < _code_size)
-        (void) make_block_at(ex_end);
     }
   }
 
--- a/src/share/vm/ci/ciStreams.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciStreams.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -301,17 +301,19 @@
 // If this is a method invocation bytecode, get the constant pool
 // index of the invoked method.
 int ciBytecodeStream::get_method_index() {
+#ifdef ASSERT
   switch (cur_bc()) {
   case Bytecodes::_invokeinterface:
-    return Bytes::get_Java_u2(_pc-4);
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokestatic:
-    return get_index_big();
+  case Bytecodes::_invokedynamic:
+    break;
   default:
     ShouldNotReachHere();
-    return 0;
   }
+#endif
+  return get_index_int();
 }
 
 // ------------------------------------------------------------------
@@ -337,6 +339,9 @@
 // for checking linkability when retrieving the associated method.
 ciKlass* ciBytecodeStream::get_declared_method_holder() {
   bool ignore;
+  // report as Dynamic for invokedynamic, which is syntactically classless
+  if (cur_bc() == Bytecodes::_invokedynamic)
+    return CURRENT_ENV->get_klass_by_name(_holder, ciSymbol::java_dyn_Dynamic(), false);
   return CURRENT_ENV->get_klass_by_index(_holder, get_method_holder_index(), ignore);
 }
 
--- a/src/share/vm/ci/ciStreams.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciStreams.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -91,9 +91,10 @@
     _end = _start + max;
   }
 
-  address cur_bcp()             { return _bc_start; }  // Returns bcp to current instruction
+  address cur_bcp() const       { return _bc_start; }  // Returns bcp to current instruction
   int next_bci() const          { return _pc -_start; }
   int cur_bci() const           { return _bc_start - _start; }
+  int instruction_size() const  { return _pc - _bc_start; }
 
   Bytecodes::Code cur_bc() const{ return check_java(_bc); }
   Bytecodes::Code next_bc()     { return Bytecodes::java_code((Bytecodes::Code)* _pc); }
@@ -121,34 +122,39 @@
     return check_java(_bc);
   }
 
-  bool is_wide()  { return ( _pc == _was_wide ); }
+  bool is_wide() const { return ( _pc == _was_wide ); }
 
   // Get a byte index following this bytecode.
   // If prefixed with a wide bytecode, get a wide index.
   int get_index() const {
+    assert_index_size(is_wide() ? 2 : 1);
     return (_pc == _was_wide)   // was widened?
       ? Bytes::get_Java_u2(_bc_start+2) // yes, return wide index
       : _bc_start[1];           // no, return narrow index
   }
 
-  // Set a byte index following this bytecode.
-  // If prefixed with a wide bytecode, get a wide index.
-  void put_index(int idx) {
-      if (_pc == _was_wide)     // was widened?
-         Bytes::put_Java_u2(_bc_start+2,idx);   // yes, set wide index
-      else
-         _bc_start[1]=idx;              // no, set narrow index
+  // Get 2-byte index (getfield/putstatic/etc)
+  int get_index_big() const {
+    assert_index_size(2);
+    return Bytes::get_Java_u2(_bc_start+1);
   }
 
-  // Get 2-byte index (getfield/putstatic/etc)
-  int get_index_big() const { return Bytes::get_Java_u2(_bc_start+1); }
+  // Get 2-byte index (or 4-byte, for invokedynamic)
+  int get_index_int() const {
+    return has_giant_index() ? get_index_giant() : get_index_big();
+  }
+
+  // Get 4-byte index, for invokedynamic.
+  int get_index_giant() const {
+    assert_index_size(4);
+    return Bytes::get_native_u4(_bc_start+1);
+  }
+
+  bool has_giant_index() const { return (cur_bc() == Bytecodes::_invokedynamic); }
 
   // Get dimensions byte (multinewarray)
   int get_dimensions() const { return *(unsigned char*)(_pc-1); }
 
-  // Get unsigned index fast
-  int get_index_fast() const { return Bytes::get_native_u2(_pc-2); }
-
   // Sign-extended index byte/short, no widening
   int get_byte() const { return (int8_t)(_pc[-1]); }
   int get_short() const { return (int16_t)Bytes::get_Java_u2(_pc-2); }
@@ -225,6 +231,22 @@
   ciKlass*  get_declared_method_holder();
   int       get_method_holder_index();
   int       get_method_signature_index();
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - (is_wide() ? 1 : 0) - 1;
+    if (isize == 2 &&  cur_bc() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (has_giant_index())
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 
--- a/src/share/vm/ci/ciTypeFlow.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/ci/ciTypeFlow.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -541,7 +541,7 @@
     // is report a value that will meet correctly with any downstream
     // reference types on paths that will truly be executed.  This null type
     // meets with any reference type to yield that same reference type.
-    // (The compiler will generate an unconditonal exception here.)
+    // (The compiler will generate an unconditional exception here.)
     push(null_type());
     return;
   }
@@ -2237,7 +2237,6 @@
   for (SuccIter iter(tail); !iter.done(); iter.next()) {
     if (iter.succ() == head) {
       iter.set_succ(clone);
-      break;
     }
   }
   flow_block(tail, temp_vector, temp_set);
--- a/src/share/vm/classfile/classFileParser.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/classFileParser.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -232,7 +232,9 @@
     length >= 1, "Illegal constant pool size %u in class file %s",
     length, CHECK_(nullHandle));
   constantPoolOop constant_pool =
-                      oopFactory::new_constantPool(length, CHECK_(nullHandle));
+                      oopFactory::new_constantPool(length,
+                                                   methodOopDesc::IsSafeConc,
+                                                   CHECK_(nullHandle));
   constantPoolHandle cp (THREAD, constant_pool);
 
   cp->set_partially_loaded();    // Enables heap verify to work on partial constantPoolOops
@@ -545,7 +547,6 @@
                                                  int length,
                                                  Handle class_loader,
                                                  Handle protection_domain,
-                                                 PerfTraceTime* vmtimer,
                                                  symbolHandle class_name,
                                                  TRAPS) {
   ClassFileStream* cfs = stream();
@@ -573,13 +574,11 @@
       guarantee_property(unresolved_klass->byte_at(0) != JVM_SIGNATURE_ARRAY,
                          "Bad interface name in class file %s", CHECK_(nullHandle));
 
-      vmtimer->suspend();  // do not count recursive loading twice
       // Call resolve_super so classcircularity is checked
       klassOop k = SystemDictionary::resolve_super_or_fail(class_name,
                     unresolved_klass, class_loader, protection_domain,
                     false, CHECK_(nullHandle));
       interf = KlassHandle(THREAD, k);
-      vmtimer->resume();
 
       if (LinkWellKnownClasses)  // my super type is well known to me
         cp->klass_at_put(interface_index, interf()); // eagerly resolve
@@ -1675,7 +1674,8 @@
   // All sizing information for a methodOop is finally available, now create it
   methodOop m_oop  = oopFactory::new_method(
     code_length, access_flags, linenumber_table_length,
-    total_lvt_length, checked_exceptions_length, CHECK_(nullHandle));
+    total_lvt_length, checked_exceptions_length,
+    methodOopDesc::IsSafeConc, CHECK_(nullHandle));
   methodHandle m (THREAD, m_oop);
 
   ClassLoadingService::add_class_method_size(m_oop->size()*HeapWordSize);
@@ -1839,6 +1839,11 @@
     _has_vanilla_constructor = true;
   }
 
+  if (EnableMethodHandles && m->is_method_handle_invoke()) {
+    THROW_MSG_(vmSymbols::java_lang_VirtualMachineError(),
+               "Method handle invokers must be defined internally to the VM", nullHandle);
+  }
+
   return m;
 }
 
@@ -2462,9 +2467,84 @@
 }
 
 
+// Force MethodHandle.vmentry to be an unmanaged pointer.
+// There is no way for a classfile to express this, so we must help it.
+void ClassFileParser::java_dyn_MethodHandle_fix_pre(constantPoolHandle cp,
+                                                    typeArrayHandle* fields_ptr,
+                                                    FieldAllocationCount *fac_ptr,
+                                                    TRAPS) {
+  // Add fake fields for java.dyn.MethodHandle instances
+  //
+  // This is not particularly nice, but since there is no way to express
+  // a native wordSize field in Java, we must do it at this level.
+
+  if (!EnableMethodHandles)  return;
+
+  int word_sig_index = 0;
+  const int cp_size = cp->length();
+  for (int index = 1; index < cp_size; index++) {
+    if (cp->tag_at(index).is_utf8() &&
+        cp->symbol_at(index) == vmSymbols::machine_word_signature()) {
+      word_sig_index = index;
+      break;
+    }
+  }
+
+  if (word_sig_index == 0)
+    THROW_MSG(vmSymbols::java_lang_VirtualMachineError(),
+              "missing I or J signature (for vmentry) in java.dyn.MethodHandle");
+
+  bool found_vmentry = false;
+
+  const int n = (*fields_ptr)()->length();
+  for (int i = 0; i < n; i += instanceKlass::next_offset) {
+    int name_index = (*fields_ptr)->ushort_at(i + instanceKlass::name_index_offset);
+    int sig_index  = (*fields_ptr)->ushort_at(i + instanceKlass::signature_index_offset);
+    int acc_flags  = (*fields_ptr)->ushort_at(i + instanceKlass::access_flags_offset);
+    symbolOop f_name = cp->symbol_at(name_index);
+    symbolOop f_sig  = cp->symbol_at(sig_index);
+    if (f_sig == vmSymbols::byte_signature() &&
+        f_name == vmSymbols::vmentry_name() &&
+        (acc_flags & JVM_ACC_STATIC) == 0) {
+      // Adjust the field type from byte to an unmanaged pointer.
+      assert(fac_ptr->nonstatic_byte_count > 0, "");
+      fac_ptr->nonstatic_byte_count -= 1;
+      (*fields_ptr)->ushort_at_put(i + instanceKlass::signature_index_offset,
+                                   word_sig_index);
+      if (wordSize == jintSize) {
+        fac_ptr->nonstatic_word_count += 1;
+      } else {
+        fac_ptr->nonstatic_double_count += 1;
+      }
+
+      FieldAllocationType atype = (FieldAllocationType) (*fields_ptr)->ushort_at(i+4);
+      assert(atype == NONSTATIC_BYTE, "");
+      FieldAllocationType new_atype = NONSTATIC_WORD;
+      if (wordSize > jintSize) {
+        if (Universe::field_type_should_be_aligned(T_LONG)) {
+          atype = NONSTATIC_ALIGNED_DOUBLE;
+        } else {
+          atype = NONSTATIC_DOUBLE;
+        }
+      }
+      (*fields_ptr)->ushort_at_put(i+4, new_atype);
+
+      found_vmentry = true;
+      break;
+    }
+  }
+
+  if (!found_vmentry)
+    THROW_MSG(vmSymbols::java_lang_VirtualMachineError(),
+              "missing vmentry byte field in java.dyn.MethodHandle");
+
+}
+
+
 instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name,
                                                     Handle class_loader,
                                                     Handle protection_domain,
+                                                    KlassHandle host_klass,
                                                     GrowableArray<Handle>* cp_patches,
                                                     symbolHandle& parsed_name,
                                                     TRAPS) {
@@ -2475,7 +2555,15 @@
 
   ClassFileStream* cfs = stream();
   // Timing
-  PerfTraceTime vmtimer(ClassLoader::perf_accumulated_time());
+  assert(THREAD->is_Java_thread(), "must be a JavaThread");
+  JavaThread* jt = (JavaThread*) THREAD;
+
+  PerfClassTraceTime ctimer(ClassLoader::perf_class_parse_time(),
+                            ClassLoader::perf_class_parse_selftime(),
+                            NULL,
+                            jt->get_thread_stat()->perf_recursion_counts_addr(),
+                            jt->get_thread_stat()->perf_timers_addr(),
+                            PerfClassTraceTime::PARSE_CLASS);
 
   _has_finalizer = _has_empty_finalizer = _has_vanilla_constructor = false;
 
@@ -2497,6 +2585,7 @@
     }
   }
 
+  _host_klass = host_klass;
   _cp_patches = cp_patches;
 
   instanceKlassHandle nullHandle;
@@ -2654,7 +2743,7 @@
     if (itfs_len == 0) {
       local_interfaces = objArrayHandle(THREAD, Universe::the_empty_system_obj_array());
     } else {
-      local_interfaces = parse_interfaces(cp, itfs_len, class_loader, protection_domain, &vmtimer, _class_name, CHECK_(nullHandle));
+      local_interfaces = parse_interfaces(cp, itfs_len, class_loader, protection_domain, _class_name, CHECK_(nullHandle));
     }
 
     // Fields (offsets are filled in later)
@@ -2698,6 +2787,7 @@
                                                            protection_domain,
                                                            true,
                                                            CHECK_(nullHandle));
+
       KlassHandle kh (THREAD, k);
       super_klass = instanceKlassHandle(THREAD, kh());
       if (LinkWellKnownClasses)  // my super class is well known to me
@@ -2744,9 +2834,10 @@
                                                       super_klass(),
                                                       methods(),
                                                       access_flags,
-                                                      class_loader(),
-                                                      class_name(),
-                                                      local_interfaces());
+                                                      class_loader,
+                                                      class_name,
+                                                      local_interfaces(),
+                                                      CHECK_(nullHandle));
 
     // Size of Java itable (in words)
     itable_size = access_flags.is_interface() ? 0 : klassItable::compute_itable_size(transitive_interfaces);
@@ -2804,6 +2895,11 @@
       java_lang_Class_fix_pre(&methods, &fac, CHECK_(nullHandle));
     }
 
+    // adjust the vmentry field declaration in java.dyn.MethodHandle
+    if (EnableMethodHandles && class_name() == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) {
+      java_dyn_MethodHandle_fix_pre(cp, &fields, &fac, CHECK_(nullHandle));
+    }
+
     // Add a fake "discovered" field if it is not present
     // for compatibility with earlier jdk's.
     if (class_name() == vmSymbols::java_lang_ref_Reference()
@@ -3130,7 +3226,7 @@
     this_klass->set_method_ordering(method_ordering());
     this_klass->set_initial_method_idnum(methods->length());
     this_klass->set_name(cp->klass_name_at(this_class_index));
-    if (LinkWellKnownClasses)  // I am well known to myself
+    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());
@@ -3141,6 +3237,16 @@
     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.
+    // (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) {
+      for (int j = 0; j < methods->length(); j++) {
+        ((methodOop)methods->obj_at(j))->init_intrinsic_id();
+      }
+    }
+
     if (cached_class_file_bytes != NULL) {
       // JVMTI: we have an instanceKlass now, tell it about the cached bytes
       this_klass->set_cached_class_file(cached_class_file_bytes,
@@ -3226,7 +3332,7 @@
       // print out the superclass.
       const char * from = Klass::cast(this_klass())->external_name();
       if (this_klass->java_super() != NULL) {
-        tty->print("RESOLVE %s %s\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());
@@ -3236,7 +3342,7 @@
           klassOop k = klassOop(local_interfaces->obj_at(i));
           instanceKlass* to_class = instanceKlass::cast(k);
           const char * to = to_class->external_name();
-          tty->print("RESOLVE %s %s\n", from, to);
+          tty->print("RESOLVE %s %s (interface)\n", from, to);
         }
       }
     }
--- a/src/share/vm/classfile/classFileParser.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/classFileParser.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   u2   _major_version;
   u2   _minor_version;
   symbolHandle _class_name;
+  KlassHandle _host_klass;
   GrowableArray<Handle>* _cp_patches; // overrides for CP entries
 
   bool _has_finalizer;
@@ -60,7 +61,6 @@
                                   int length,
                                   Handle class_loader,
                                   Handle protection_domain,
-                                  PerfTraceTime* vmtimer,
                                   symbolHandle class_name,
                                   TRAPS);
 
@@ -145,6 +145,11 @@
   // Adjust the next_nonstatic_oop_offset to place the fake fields
   // before any Java fields.
   void java_lang_Class_fix_post(int* next_nonstatic_oop_offset);
+  // Adjust the field allocation counts for java.dyn.MethodHandle to add
+  // a fake address (void*) field.
+  void java_dyn_MethodHandle_fix_pre(constantPoolHandle cp,
+                                     typeArrayHandle* fields_ptr,
+                                     FieldAllocationCount *fac_ptr, TRAPS);
 
   // Format checker methods
   void classfile_parse_error(const char* msg, TRAPS);
@@ -204,6 +209,10 @@
   char* skip_over_field_name(char* name, bool slash_ok, unsigned int length);
   char* skip_over_field_signature(char* signature, bool void_ok, unsigned int length, TRAPS);
 
+  bool is_anonymous() {
+    assert(AnonymousClasses || _host_klass.is_null(), "");
+    return _host_klass.not_null();
+  }
   bool has_cp_patch_at(int index) {
     assert(AnonymousClasses, "");
     assert(index >= 0, "oob");
@@ -249,11 +258,13 @@
                                      Handle protection_domain,
                                      symbolHandle& parsed_name,
                                      TRAPS) {
-    return parseClassFile(name, class_loader, protection_domain, NULL, parsed_name, THREAD);
+    KlassHandle no_host_klass;
+    return parseClassFile(name, class_loader, protection_domain, no_host_klass, NULL, parsed_name, THREAD);
   }
   instanceKlassHandle parseClassFile(symbolHandle name,
                                      Handle class_loader,
                                      Handle protection_domain,
+                                     KlassHandle host_klass,
                                      GrowableArray<Handle>* cp_patches,
                                      symbolHandle& parsed_name,
                                      TRAPS);
--- a/src/share/vm/classfile/classLoader.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/classLoader.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -48,9 +48,26 @@
 PerfCounter*    ClassLoader::_perf_accumulated_time = NULL;
 PerfCounter*    ClassLoader::_perf_classes_inited = NULL;
 PerfCounter*    ClassLoader::_perf_class_init_time = NULL;
+PerfCounter*    ClassLoader::_perf_class_init_selftime = NULL;
+PerfCounter*    ClassLoader::_perf_classes_verified = NULL;
 PerfCounter*    ClassLoader::_perf_class_verify_time = NULL;
+PerfCounter*    ClassLoader::_perf_class_verify_selftime = NULL;
 PerfCounter*    ClassLoader::_perf_classes_linked = NULL;
 PerfCounter*    ClassLoader::_perf_class_link_time = NULL;
+PerfCounter*    ClassLoader::_perf_class_link_selftime = NULL;
+PerfCounter*    ClassLoader::_perf_class_parse_time = NULL;
+PerfCounter*    ClassLoader::_perf_class_parse_selftime = NULL;
+PerfCounter*    ClassLoader::_perf_sys_class_lookup_time = NULL;
+PerfCounter*    ClassLoader::_perf_shared_classload_time = NULL;
+PerfCounter*    ClassLoader::_perf_sys_classload_time = NULL;
+PerfCounter*    ClassLoader::_perf_app_classload_time = NULL;
+PerfCounter*    ClassLoader::_perf_app_classload_selftime = NULL;
+PerfCounter*    ClassLoader::_perf_app_classload_count = NULL;
+PerfCounter*    ClassLoader::_perf_define_appclasses = NULL;
+PerfCounter*    ClassLoader::_perf_define_appclass_time = NULL;
+PerfCounter*    ClassLoader::_perf_define_appclass_selftime = NULL;
+PerfCounter*    ClassLoader::_perf_app_classfile_bytes_read = NULL;
+PerfCounter*    ClassLoader::_perf_sys_classfile_bytes_read = NULL;
 PerfCounter*    ClassLoader::_sync_systemLoaderLockContentionRate = NULL;
 PerfCounter*    ClassLoader::_sync_nonSystemLoaderLockContentionRate = NULL;
 PerfCounter*    ClassLoader::_sync_JVMFindLoadedClassLockFreeCounter = NULL;
@@ -152,6 +169,9 @@
       hpi::close(file_handle);
       // construct ClassFileStream
       if (num_read == (size_t)st.st_size) {
+        if (UsePerfData) {
+          ClassLoader::perf_sys_classfile_bytes_read()->inc(num_read);
+        }
         return new ClassFileStream(buffer, st.st_size, _dir);    // Resource allocated
       }
     }
@@ -198,6 +218,9 @@
       buffer     = NEW_RESOURCE_ARRAY(u1, filesize);
       if (!(*ReadEntry)(_zip, entry, buffer, filename)) return NULL;
   }
+  if (UsePerfData) {
+    ClassLoader::perf_sys_classfile_bytes_read()->inc(filesize);
+  }
   // return result
   return new ClassFileStream(buffer, filesize, _zip_name);    // Resource allocated
 }
@@ -825,7 +848,9 @@
   ClassFileStream* stream = NULL;
   int classpath_index = 0;
   {
-    PerfTraceTime vmtimer(perf_accumulated_time());
+    PerfClassTraceTime vmtimer(perf_sys_class_lookup_time(),
+                               ((JavaThread*) THREAD)->get_thread_stat()->perf_timers_addr(),
+                               PerfClassTraceTime::CLASS_LOAD);
     ClassPathEntry* e = _first_entry;
     while (e != NULL) {
       stream = e->open_stream(name);
@@ -890,11 +915,29 @@
     // jvmstat performance counters
     NEWPERFTICKCOUNTER(_perf_accumulated_time, SUN_CLS, "time");
     NEWPERFTICKCOUNTER(_perf_class_init_time, SUN_CLS, "classInitTime");
+    NEWPERFTICKCOUNTER(_perf_class_init_selftime, SUN_CLS, "classInitTime.self");
     NEWPERFTICKCOUNTER(_perf_class_verify_time, SUN_CLS, "classVerifyTime");
+    NEWPERFTICKCOUNTER(_perf_class_verify_selftime, SUN_CLS, "classVerifyTime.self");
     NEWPERFTICKCOUNTER(_perf_class_link_time, SUN_CLS, "classLinkedTime");
-
+    NEWPERFTICKCOUNTER(_perf_class_link_selftime, SUN_CLS, "classLinkedTime.self");
     NEWPERFEVENTCOUNTER(_perf_classes_inited, SUN_CLS, "initializedClasses");
     NEWPERFEVENTCOUNTER(_perf_classes_linked, SUN_CLS, "linkedClasses");
+    NEWPERFEVENTCOUNTER(_perf_classes_verified, SUN_CLS, "verifiedClasses");
+
+    NEWPERFTICKCOUNTER(_perf_class_parse_time, SUN_CLS, "parseClassTime");
+    NEWPERFTICKCOUNTER(_perf_class_parse_selftime, SUN_CLS, "parseClassTime.self");
+    NEWPERFTICKCOUNTER(_perf_sys_class_lookup_time, SUN_CLS, "lookupSysClassTime");
+    NEWPERFTICKCOUNTER(_perf_shared_classload_time, SUN_CLS, "sharedClassLoadTime");
+    NEWPERFTICKCOUNTER(_perf_sys_classload_time, SUN_CLS, "sysClassLoadTime");
+    NEWPERFTICKCOUNTER(_perf_app_classload_time, SUN_CLS, "appClassLoadTime");
+    NEWPERFTICKCOUNTER(_perf_app_classload_selftime, SUN_CLS, "appClassLoadTime.self");
+    NEWPERFEVENTCOUNTER(_perf_app_classload_count, SUN_CLS, "appClassLoadCount");
+    NEWPERFTICKCOUNTER(_perf_define_appclasses, SUN_CLS, "defineAppClasses");
+    NEWPERFTICKCOUNTER(_perf_define_appclass_time, SUN_CLS, "defineAppClassTime");
+    NEWPERFTICKCOUNTER(_perf_define_appclass_selftime, SUN_CLS, "defineAppClassTime.self");
+    NEWPERFBYTECOUNTER(_perf_app_classfile_bytes_read, SUN_CLS, "appClassBytes");
+    NEWPERFBYTECOUNTER(_perf_sys_classfile_bytes_read, SUN_CLS, "sysClassBytes");
+
 
     // The following performance counters are added for measuring the impact
     // of the bug fix of 6365597. They are mainly focused on finding out
@@ -1217,31 +1260,34 @@
     // valid class file.  The class loader will check everything else.
     if (strchr(buffer, '.') == NULL) {
       _compile_the_world_counter++;
-      if (_compile_the_world_counter >= CompileTheWorldStartAt && _compile_the_world_counter <= CompileTheWorldStopAt) {
-        // Construct name without extension
-        symbolHandle sym = oopFactory::new_symbol_handle(buffer, CHECK);
-        // Use loader to load and initialize class
-        klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
-        instanceKlassHandle k (THREAD, ik);
-        if (k.not_null() && !HAS_PENDING_EXCEPTION) {
-          k->initialize(THREAD);
+      if (_compile_the_world_counter > CompileTheWorldStopAt) return;
+
+      // Construct name without extension
+      symbolHandle sym = oopFactory::new_symbol_handle(buffer, CHECK);
+      // Use loader to load and initialize class
+      klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
+      instanceKlassHandle k (THREAD, ik);
+      if (k.not_null() && !HAS_PENDING_EXCEPTION) {
+        k->initialize(THREAD);
+      }
+      bool exception_occurred = HAS_PENDING_EXCEPTION;
+      CLEAR_PENDING_EXCEPTION;
+      if (CompileTheWorldPreloadClasses && k.not_null()) {
+        constantPoolKlass::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;
+          tty->print_cr("Preloading failed for (%d) %s", _compile_the_world_counter, buffer);
         }
-        bool exception_occurred = HAS_PENDING_EXCEPTION;
-        CLEAR_PENDING_EXCEPTION;
+      }
+
+      if (_compile_the_world_counter >= CompileTheWorldStartAt) {
         if (k.is_null() || (exception_occurred && !CompileTheWorldIgnoreInitErrors)) {
           // If something went wrong (e.g. ExceptionInInitializerError) we skip this class
           tty->print_cr("CompileTheWorld (%d) : Skipping %s", _compile_the_world_counter, buffer);
         } else {
           tty->print_cr("CompileTheWorld (%d) : %s", _compile_the_world_counter, buffer);
           // Preload all classes to get around uncommon traps
-          if (CompileTheWorldPreloadClasses) {
-            constantPoolKlass::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;
-              tty->print_cr("Preloading failed for (%d) %s", _compile_the_world_counter, buffer);
-            }
-          }
           // Iterate over all methods in class
           for (int n = 0; n < k->methods()->length(); n++) {
             methodHandle m (THREAD, methodOop(k->methods()->obj_at(n)));
@@ -1253,16 +1299,28 @@
                 CLEAR_PENDING_EXCEPTION;
                 tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
               }
-            if (TieredCompilation) {
-              // Clobber the first compile and force second tier compilation
-              m->clear_code();
-              CompileBroker::compile_method(m, InvocationEntryBci,
-                                            methodHandle(), 0, "CTW", THREAD);
-              if (HAS_PENDING_EXCEPTION) {
-                CLEAR_PENDING_EXCEPTION;
-                tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
+              if (TieredCompilation) {
+                // Clobber the first compile and force second tier compilation
+                nmethod* nm = m->code();
+                if (nm != NULL) {
+                  // Throw out the code so that the code cache doesn't fill up
+                  nm->make_not_entrant();
+                  m->clear_code();
+                }
+                CompileBroker::compile_method(m, InvocationEntryBci,
+                                              methodHandle(), 0, "CTW", THREAD);
+                if (HAS_PENDING_EXCEPTION) {
+                  CLEAR_PENDING_EXCEPTION;
+                  tty->print_cr("CompileTheWorld (%d) : Skipping method: %s", _compile_the_world_counter, m->name()->as_C_string());
+                }
               }
             }
+
+            nmethod* nm = m->code();
+            if (nm != NULL) {
+              // Throw out the code so that the code cache doesn't fill up
+              nm->make_not_entrant();
+              m->clear_code();
             }
           }
         }
--- a/src/share/vm/classfile/classLoader.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/classLoader.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -149,9 +149,26 @@
   static PerfCounter* _perf_accumulated_time;
   static PerfCounter* _perf_classes_inited;
   static PerfCounter* _perf_class_init_time;
+  static PerfCounter* _perf_class_init_selftime;
+  static PerfCounter* _perf_classes_verified;
   static PerfCounter* _perf_class_verify_time;
+  static PerfCounter* _perf_class_verify_selftime;
   static PerfCounter* _perf_classes_linked;
   static PerfCounter* _perf_class_link_time;
+  static PerfCounter* _perf_class_link_selftime;
+  static PerfCounter* _perf_class_parse_time;
+  static PerfCounter* _perf_class_parse_selftime;
+  static PerfCounter* _perf_sys_class_lookup_time;
+  static PerfCounter* _perf_shared_classload_time;
+  static PerfCounter* _perf_sys_classload_time;
+  static PerfCounter* _perf_app_classload_time;
+  static PerfCounter* _perf_app_classload_selftime;
+  static PerfCounter* _perf_app_classload_count;
+  static PerfCounter* _perf_define_appclasses;
+  static PerfCounter* _perf_define_appclass_time;
+  static PerfCounter* _perf_define_appclass_selftime;
+  static PerfCounter* _perf_app_classfile_bytes_read;
+  static PerfCounter* _perf_sys_classfile_bytes_read;
 
   static PerfCounter* _sync_systemLoaderLockContentionRate;
   static PerfCounter* _sync_nonSystemLoaderLockContentionRate;
@@ -196,12 +213,29 @@
   static void print_bootclasspath();
 
   // Timing
-  static PerfCounter* perf_accumulated_time()  { return _perf_accumulated_time; }
-  static PerfCounter* perf_classes_inited()    { return _perf_classes_inited; }
-  static PerfCounter* perf_class_init_time()   { return _perf_class_init_time; }
-  static PerfCounter* perf_class_verify_time() { return _perf_class_verify_time; }
-  static PerfCounter* perf_classes_linked()    { return _perf_classes_linked; }
-  static PerfCounter* perf_class_link_time() { return _perf_class_link_time; }
+  static PerfCounter* perf_accumulated_time()         { return _perf_accumulated_time; }
+  static PerfCounter* perf_classes_inited()           { return _perf_classes_inited; }
+  static PerfCounter* perf_class_init_time()          { return _perf_class_init_time; }
+  static PerfCounter* perf_class_init_selftime()      { return _perf_class_init_selftime; }
+  static PerfCounter* perf_classes_verified()         { return _perf_classes_verified; }
+  static PerfCounter* perf_class_verify_time()        { return _perf_class_verify_time; }
+  static PerfCounter* perf_class_verify_selftime()    { return _perf_class_verify_selftime; }
+  static PerfCounter* perf_classes_linked()           { return _perf_classes_linked; }
+  static PerfCounter* perf_class_link_time()          { return _perf_class_link_time; }
+  static PerfCounter* perf_class_link_selftime()      { return _perf_class_link_selftime; }
+  static PerfCounter* perf_class_parse_time()         { return _perf_class_parse_time; }
+  static PerfCounter* perf_class_parse_selftime()     { return _perf_class_parse_selftime; }
+  static PerfCounter* perf_sys_class_lookup_time()    { return _perf_sys_class_lookup_time; }
+  static PerfCounter* perf_shared_classload_time()    { return _perf_shared_classload_time; }
+  static PerfCounter* perf_sys_classload_time()       { return _perf_sys_classload_time; }
+  static PerfCounter* perf_app_classload_time()       { return _perf_app_classload_time; }
+  static PerfCounter* perf_app_classload_selftime()   { return _perf_app_classload_selftime; }
+  static PerfCounter* perf_app_classload_count()      { return _perf_app_classload_count; }
+  static PerfCounter* perf_define_appclasses()        { return _perf_define_appclasses; }
+  static PerfCounter* perf_define_appclass_time()     { return _perf_define_appclass_time; }
+  static PerfCounter* perf_define_appclass_selftime() { return _perf_define_appclass_selftime; }
+  static PerfCounter* perf_app_classfile_bytes_read() { return _perf_app_classfile_bytes_read; }
+  static PerfCounter* perf_sys_classfile_bytes_read() { return _perf_sys_classfile_bytes_read; }
 
   // Record how often system loader lock object is contended
   static PerfCounter* sync_systemLoaderLockContentionRate() {
@@ -307,3 +341,118 @@
   static int  compile_the_world_counter() { return _compile_the_world_counter; }
 #endif //PRODUCT
 };
+
+// PerfClassTraceTime is used to measure time for class loading related events.
+// This class tracks cumulative time and exclusive time for specific event types.
+// During the execution of one event, other event types (e.g. class loading and
+// resolution) as well as recursive calls of the same event type could happen.
+// Only one elapsed timer (cumulative) and one thread-local self timer (exclusive)
+// (i.e. only one event type) are active at a time even multiple PerfClassTraceTime
+// instances have been created as multiple events are happening.
+class PerfClassTraceTime {
+  public:
+    enum {
+       CLASS_LOAD   = 0,
+       PARSE_CLASS  = 1,
+       CLASS_LINK   = 2,
+       CLASS_VERIFY = 3,
+       CLASS_CLINIT = 4,
+       DEFINE_CLASS = 5,
+       EVENT_TYPE_COUNT = 6
+    };
+  protected:
+    // _t tracks time from initialization to destruction of this timer instance
+    // including time for all other event types, and recursive calls of this type.
+    // When a timer is called recursively, the elapsedTimer _t would not be used.
+    elapsedTimer     _t;
+    PerfLongCounter* _timep;
+    PerfLongCounter* _selftimep;
+    PerfLongCounter* _eventp;
+    // pointer to thread-local recursion counter and timer array
+    // The thread_local timers track cumulative time for specific event types
+    // exclusive of time for other event types, but including recursive calls
+    // of the same type.
+    int*             _recursion_counters;
+    elapsedTimer*    _timers;
+    int              _event_type;
+    int              _prev_active_event;
+
+  public:
+
+    inline PerfClassTraceTime(PerfLongCounter* timep,     /* counter incremented with inclusive time */
+                              PerfLongCounter* selftimep, /* counter incremented with exclusive time */
+                              PerfLongCounter* eventp,    /* event counter */
+                              int* recursion_counters,    /* thread-local recursion counter array */
+                              elapsedTimer* timers,       /* thread-local timer array */
+                              int type                    /* event type */ ) :
+        _timep(timep), _selftimep(selftimep), _eventp(eventp), _recursion_counters(recursion_counters), _timers(timers), _event_type(type) {
+      initialize();
+    }
+
+    inline PerfClassTraceTime(PerfLongCounter* timep,     /* counter incremented with inclusive time */
+                              elapsedTimer* timers,       /* thread-local timer array */
+                              int type                    /* event type */ ) :
+        _timep(timep), _selftimep(NULL), _eventp(NULL), _recursion_counters(NULL), _timers(timers), _event_type(type) {
+      initialize();
+    }
+
+    void initialize() {
+      if (!UsePerfData) return;
+
+      if (_eventp != NULL) {
+        // increment the event counter
+        _eventp->inc();
+      }
+
+      // stop the current active thread-local timer to measure inclusive time
+      _prev_active_event = -1;
+      for (int i=0; i < EVENT_TYPE_COUNT; i++) {
+         if (_timers[i].is_active()) {
+           assert(_prev_active_event == -1, "should have only one active timer");
+           _prev_active_event = i;
+           _timers[i].stop();
+         }
+      }
+
+      if (_recursion_counters == NULL || (_recursion_counters[_event_type])++ == 0) {
+        // start the inclusive timer if not recursively called
+        _t.start();
+      }
+
+      // start thread-local timer of the given event type
+      if (!_timers[_event_type].is_active()) {
+        _timers[_event_type].start();
+      }
+    }
+
+    inline void suspend() { _t.stop(); _timers[_event_type].stop(); }
+    inline void resume()  { _t.start(); _timers[_event_type].start(); }
+
+    ~PerfClassTraceTime() {
+      if (!UsePerfData) return;
+
+      // stop the thread-local timer as the event completes
+      // and resume the thread-local timer of the event next on the stack
+      _timers[_event_type].stop();
+      jlong selftime = _timers[_event_type].ticks();
+
+      if (_prev_active_event >= 0) {
+        _timers[_prev_active_event].start();
+      }
+
+      if (_recursion_counters != NULL && --(_recursion_counters[_event_type]) > 0) return;
+
+      // increment the counters only on the leaf call
+      _t.stop();
+      _timep->inc(_t.ticks());
+      if (_selftimep != NULL) {
+        _selftimep->inc(selftime);
+      }
+      // add all class loading related event selftime to the accumulated time counter
+      ClassLoader::perf_accumulated_time()->inc(selftime);
+
+      // reset the timer
+      _timers[_event_type].reset();
+    }
+};
+
--- a/src/share/vm/classfile/dictionary.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/dictionary.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -549,6 +549,63 @@
   }
 }
 
+SymbolPropertyTable::SymbolPropertyTable(int table_size)
+  : Hashtable(table_size, sizeof(SymbolPropertyEntry))
+{
+}
+SymbolPropertyTable::SymbolPropertyTable(int table_size, HashtableBucket* t,
+                                         int number_of_entries)
+  : Hashtable(table_size, sizeof(SymbolPropertyEntry), t, number_of_entries)
+{
+}
+
+
+SymbolPropertyEntry* SymbolPropertyTable::find_entry(int index, unsigned int hash,
+                                                     symbolHandle sym) {
+  assert(index == index_for(sym), "incorrect index?");
+  for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) {
+    if (p->hash() == hash && p->symbol() == sym()) {
+      return p;
+    }
+  }
+  return NULL;
+}
+
+
+SymbolPropertyEntry* SymbolPropertyTable::add_entry(int index, unsigned int hash,
+                                                    symbolHandle sym) {
+  assert_locked_or_safepoint(SystemDictionary_lock);
+  assert(index == index_for(sym), "incorrect index?");
+  assert(find_entry(index, hash, sym) == NULL, "no double entry");
+
+  SymbolPropertyEntry* p = new_entry(hash, sym());
+  Hashtable::add_entry(index, p);
+  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()) {
+      f->do_oop((oop*) p->symbol_addr());
+      if (p->property_oop() != NULL) {
+        f->do_oop(p->property_oop_addr());
+      }
+    }
+  }
+}
+
+void SymbolPropertyTable::methods_do(void f(methodOop)) {
+  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);
+      }
+    }
+  }
+}
+
 
 // ----------------------------------------------------------------------------
 #ifndef PRODUCT
--- a/src/share/vm/classfile/dictionary.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/dictionary.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,3 +217,112 @@
     tty->print_cr("pd set = #%d", count);
   }
 };
+
+// Entry in a SymbolPropertyTable, mapping a single symbolOop
+// to a managed and an unmanaged pointer.
+class SymbolPropertyEntry : public HashtableEntry {
+  friend class VMStructs;
+ private:
+  oop     _property_oop;
+  address _property_data;
+
+ public:
+  symbolOop symbol() const          { return (symbolOop) literal(); }
+
+  oop      property_oop() const     { return _property_oop; }
+  void set_property_oop(oop p)      { _property_oop = p; }
+
+  address  property_data() const    { return _property_data; }
+  void set_property_data(address p) { _property_data = p; }
+
+  SymbolPropertyEntry* next() const {
+    return (SymbolPropertyEntry*)HashtableEntry::next();
+  }
+
+  SymbolPropertyEntry** next_addr() {
+    return (SymbolPropertyEntry**)HashtableEntry::next_addr();
+  }
+
+  oop* symbol_addr()                { return literal_addr(); }
+  oop* property_oop_addr()          { return &_property_oop; }
+
+  void print_on(outputStream* st) const {
+    symbol()->print_value_on(st);
+    st->print(" -> ");
+    bool printed = false;
+    if (property_oop() != NULL) {
+      property_oop()->print_value_on(st);
+      printed = true;
+    }
+    if (property_data() != NULL) {
+      if (printed)  st->print(" and ");
+      st->print(INTPTR_FORMAT, property_data());
+      printed = true;
+    }
+    st->print_cr(printed ? "" : "(empty)");
+  }
+};
+
+// A system-internal mapping of symbols to pointers, both managed
+// and unmanaged.  Used to record the auto-generation of each method
+// MethodHandle.invoke(S)T, for all signatures (S)T.
+class SymbolPropertyTable : public Hashtable {
+  friend class VMStructs;
+private:
+  SymbolPropertyEntry* bucket(int i) {
+    return (SymbolPropertyEntry*) Hashtable::bucket(i);
+  }
+
+  // The following method is not MT-safe and must be done under lock.
+  SymbolPropertyEntry** bucket_addr(int i) {
+    return (SymbolPropertyEntry**) Hashtable::bucket_addr(i);
+  }
+
+  void add_entry(int index, SymbolPropertyEntry* new_entry) {
+    ShouldNotReachHere();
+  }
+  void set_entry(int index, SymbolPropertyEntry* new_entry) {
+    ShouldNotReachHere();
+  }
+
+  SymbolPropertyEntry* new_entry(unsigned int hash, symbolOop symbol) {
+    SymbolPropertyEntry* entry = (SymbolPropertyEntry*) Hashtable::new_entry(hash, symbol);
+    entry->set_property_oop(NULL);
+    entry->set_property_data(NULL);
+    return entry;
+  }
+
+public:
+  SymbolPropertyTable(int table_size);
+  SymbolPropertyTable(int table_size, HashtableBucket* t, int number_of_entries);
+
+  void free_entry(SymbolPropertyEntry* entry) {
+    Hashtable::free_entry(entry);
+  }
+
+  unsigned int compute_hash(symbolHandle sym) {
+    // Use the regular identity_hash.
+    return Hashtable::compute_hash(sym);
+  }
+
+  // need not be locked; no state change
+  SymbolPropertyEntry* find_entry(int index, unsigned int hash, symbolHandle name);
+
+  // must be done under SystemDictionary_lock
+  SymbolPropertyEntry* add_entry(int index, unsigned int hash, symbolHandle name);
+
+  // GC support
+  void oops_do(OopClosure* f);
+  void methods_do(void f(methodOop));
+
+  // Sharing support
+  void dump(SerializeOopClosure* soc);
+  void restore(SerializeOopClosure* soc);
+  void reorder_dictionary();
+
+#ifndef PRODUCT
+  void print();
+#endif
+  void verify();
+};
+
--- a/src/share/vm/classfile/javaClasses.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/javaClasses.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 +25,24 @@
 # include "incls/_precompiled.incl"
 # include "incls/_javaClasses.cpp.incl"
 
+static bool find_field(instanceKlass* ik,
+                       symbolOop name_symbol, symbolOop signature_symbol,
+                       fieldDescriptor* fd,
+                       bool allow_super = false) {
+  if (allow_super)
+    return ik->find_field(name_symbol, signature_symbol, fd) != NULL;
+  else
+    return ik->find_local_field(name_symbol, signature_symbol, fd);
+}
+
 // Helpful routine for computing field offsets at run time rather than hardcoding them
 static void
 compute_offset(int &dest_offset,
-               klassOop klass_oop, symbolOop name_symbol, symbolOop signature_symbol) {
+               klassOop klass_oop, symbolOop name_symbol, symbolOop signature_symbol,
+               bool allow_super = false) {
   fieldDescriptor fd;
   instanceKlass* ik = instanceKlass::cast(klass_oop);
-  if (!ik->find_local_field(name_symbol, signature_symbol, &fd)) {
+  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());
     fatal("Invalid layout of preloaded class");
@@ -42,14 +53,16 @@
 // 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, symbolOop name_symbol, symbolOop signature_symbol) {
+                        klassOop klass_oop, symbolOop name_symbol, symbolOop signature_symbol,
+                        bool allow_super = false) {
   fieldDescriptor fd;
   instanceKlass* ik = instanceKlass::cast(klass_oop);
-  if (ik->find_local_field(name_symbol, signature_symbol, &fd)) {
+  if (find_field(ik, name_symbol, signature_symbol, &fd, allow_super)) {
     dest_offset = fd.offset();
   }
 }
 
+
 Handle java_lang_String::basic_create(int length, bool tenured, TRAPS) {
   // 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.
@@ -239,22 +252,20 @@
   typeArrayOop value  = java_lang_String::value(obj);
   int          offset = java_lang_String::offset(obj);
   int          length = java_lang_String::length(obj);
-
-  ResourceMark rm(THREAD);
-  symbolHandle result;
-
-  if (length > 0) {
-    int utf8_length = UNICODE::utf8_length(value->char_at_addr(offset), length);
-    char* chars = NEW_RESOURCE_ARRAY(char, utf8_length + 1);
-    UNICODE::convert_to_utf8(value->char_at_addr(offset), length, chars);
-    // Allocate the symbol
-    result = oopFactory::new_symbol_handle(chars, utf8_length, CHECK_(symbolHandle()));
-  } else {
-    result = oopFactory::new_symbol_handle("", 0, CHECK_(symbolHandle()));
-  }
-  return result;
+  jchar* base = value->char_at_addr(offset);
+  symbolOop sym = SymbolTable::lookup_unicode(base, length, THREAD);
+  return symbolHandle(THREAD, sym);
 }
 
+symbolOop java_lang_String::as_symbol_or_null(oop java_string) {
+  typeArrayOop value  = java_lang_String::value(java_string);
+  int          offset = java_lang_String::offset(java_string);
+  int          length = java_lang_String::length(java_string);
+  jchar* base = value->char_at_addr(offset);
+  return SymbolTable::probe_unicode(base, length);
+}
+
+
 int java_lang_String::utf8_length(oop java_string) {
   typeArrayOop value  = java_lang_String::value(java_string);
   int          offset = java_lang_String::offset(java_string);
@@ -385,6 +396,48 @@
 }
 
 
+void java_lang_Class::print_signature(oop java_class, outputStream* st) {
+  assert(java_lang_Class::is_instance(java_class), "must be a Class object");
+  symbolOop name = NULL;
+  bool is_instance = false;
+  if (is_primitive(java_class)) {
+    name = vmSymbols::type_signature(primitive_type(java_class));
+  } else {
+    klassOop k = as_klassOop(java_class);
+    is_instance = Klass::cast(k)->oop_is_instance();
+    name = Klass::cast(k)->name();
+  }
+  if (name == NULL) {
+    st->print("<null>");
+    return;
+  }
+  if (is_instance)  st->print("L");
+  st->write((char*) name->base(), (int) name->utf8_length());
+  if (is_instance)  st->print(";");
+}
+
+symbolOop java_lang_Class::as_signature(oop java_class, bool intern_if_not_found, TRAPS) {
+  assert(java_lang_Class::is_instance(java_class), "must be a Class object");
+  symbolOop name = NULL;
+  if (is_primitive(java_class)) {
+    return vmSymbols::type_signature(primitive_type(java_class));
+  } else {
+    klassOop k = as_klassOop(java_class);
+    if (!Klass::cast(k)->oop_is_instance()) {
+      return Klass::cast(k)->name();
+    } else {
+      ResourceMark rm;
+      const char* sigstr = Klass::cast(k)->signature_name();
+      int         siglen = (int) strlen(sigstr);
+      if (!intern_if_not_found)
+        return SymbolTable::probe(sigstr, siglen);
+      else
+        return oopFactory::new_symbol(sigstr, siglen, THREAD);
+    }
+  }
+}
+
+
 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");
@@ -412,6 +465,8 @@
 
 
 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;
 }
@@ -431,6 +486,19 @@
   return type;
 }
 
+BasicType java_lang_Class::as_BasicType(oop java_class, klassOop* reference_klass) {
+  assert(java_lang_Class::is_instance(java_class), "must be a Class object");
+  if (is_primitive(java_class)) {
+    if (reference_klass != NULL)
+      (*reference_klass) = NULL;
+    return primitive_type(java_class);
+  } else {
+    if (reference_klass != NULL)
+      (*reference_klass) = as_klassOop(java_class);
+    return T_OBJECT;
+  }
+}
+
 
 oop java_lang_Class::primitive_mirror(BasicType t) {
   oop mirror = Universe::java_mirror(t);
@@ -441,6 +509,7 @@
 
 bool java_lang_Class::offsets_computed = false;
 int  java_lang_Class::classRedefinedCount_offset = -1;
+int  java_lang_Class::parallelCapable_offset = -1;
 
 void java_lang_Class::compute_offsets() {
   assert(!offsets_computed, "offsets should be initialized only once");
@@ -451,6 +520,23 @@
   // so don't go fatal.
   compute_optional_offset(classRedefinedCount_offset,
     k, vmSymbols::classRedefinedCount_name(), vmSymbols::int_signature());
+
+  // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
+  klassOop k1 = SystemDictionary::classloader_klass();
+  compute_optional_offset(parallelCapable_offset,
+    k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
+}
+
+// For class loader classes, parallelCapable defined
+// based on non-null field
+// Written to by java.lang.ClassLoader, vm only reads this field, doesn't set it
+bool java_lang_Class::parallelCapable(oop class_loader) {
+  if (!JDK_Version::is_gte_jdk17x_version()
+     || parallelCapable_offset == -1) {
+     // Default for backward compatibility is false
+     return false;
+  }
+  return (class_loader->obj_field(parallelCapable_offset) != NULL);
 }
 
 int java_lang_Class::classRedefinedCount(oop the_class_mirror) {
@@ -866,7 +952,7 @@
     }
     nmethod* nm = method->code();
     if (WizardMode && nm != NULL) {
-      sprintf(buf + (int)strlen(buf), "(nmethod %#x)", nm);
+      sprintf(buf + (int)strlen(buf), "(nmethod " PTR_FORMAT ")", (intptr_t)nm);
     }
   }
 
@@ -1970,6 +2056,21 @@
 }
 
 
+void java_lang_boxing_object::print(BasicType type, jvalue* value, outputStream* st) {
+  switch (type) {
+  case T_BOOLEAN:   st->print("%s", value->z ? "true" : "false");   break;
+  case T_CHAR:      st->print("%d", value->c);                      break;
+  case T_BYTE:      st->print("%d", value->b);                      break;
+  case T_SHORT:     st->print("%d", value->s);                      break;
+  case T_INT:       st->print("%d", value->i);                      break;
+  case T_LONG:      st->print(INT64_FORMAT, value->j);              break;
+  case T_FLOAT:     st->print("%f", value->f);                      break;
+  case T_DOUBLE:    st->print("%lf", value->d);                     break;
+  default:          st->print("type %d?", type);                    break;
+  }
+}
+
+
 // Support for java_lang_ref_Reference
 oop java_lang_ref_Reference::pending_list_lock() {
   instanceKlass* ik = instanceKlass::cast(SystemDictionary::reference_klass());
@@ -2019,13 +2120,359 @@
 }
 
 
+// Support for java_dyn_MethodHandle
+
+int java_dyn_MethodHandle::_type_offset;
+int java_dyn_MethodHandle::_vmtarget_offset;
+int java_dyn_MethodHandle::_vmentry_offset;
+int java_dyn_MethodHandle::_vmslots_offset;
+
+int sun_dyn_MemberName::_clazz_offset;
+int sun_dyn_MemberName::_name_offset;
+int sun_dyn_MemberName::_type_offset;
+int sun_dyn_MemberName::_flags_offset;
+int sun_dyn_MemberName::_vmtarget_offset;
+int sun_dyn_MemberName::_vmindex_offset;
+
+int sun_dyn_DirectMethodHandle::_vmindex_offset;
+
+int sun_dyn_BoundMethodHandle::_argument_offset;
+int sun_dyn_BoundMethodHandle::_vmargslot_offset;
+
+int sun_dyn_AdapterMethodHandle::_conversion_offset;
+
+void java_dyn_MethodHandle::compute_offsets() {
+  klassOop k = SystemDictionary::MethodHandle_klass();
+  if (k != NULL && EnableMethodHandles) {
+    compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_dyn_MethodType_signature(), true);
+    compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature(), true);
+    compute_offset(_vmentry_offset,   k, vmSymbols::vmentry_name(),   vmSymbols::machine_word_signature(), true);
+
+    // Note:  MH.vmslots (if it is present) is a hoisted copy of MH.type.form.vmslots.
+    // It is optional pending experiments to keep or toss.
+    compute_optional_offset(_vmslots_offset, k, vmSymbols::vmslots_name(), vmSymbols::int_signature(), true);
+  }
+}
+
+void sun_dyn_MemberName::compute_offsets() {
+  klassOop k = SystemDictionary::MemberName_klass();
+  if (k != NULL && EnableMethodHandles) {
+    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::object_signature());
+    compute_offset(_flags_offset,     k, vmSymbols::flags_name(),     vmSymbols::int_signature());
+    compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature());
+    compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature());
+  }
+}
+
+void sun_dyn_DirectMethodHandle::compute_offsets() {
+  klassOop k = SystemDictionary::DirectMethodHandle_klass();
+  if (k != NULL && EnableMethodHandles) {
+    compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
+  }
+}
+
+void sun_dyn_BoundMethodHandle::compute_offsets() {
+  klassOop k = SystemDictionary::BoundMethodHandle_klass();
+  if (k != NULL && EnableMethodHandles) {
+    compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
+    compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
+  }
+}
+
+void sun_dyn_AdapterMethodHandle::compute_offsets() {
+  klassOop k = SystemDictionary::AdapterMethodHandle_klass();
+  if (k != NULL && EnableMethodHandles) {
+    compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
+  }
+}
+
+oop java_dyn_MethodHandle::type(oop mh) {
+  return mh->obj_field(_type_offset);
+}
+
+void java_dyn_MethodHandle::set_type(oop mh, oop mtype) {
+  mh->obj_field_put(_type_offset, mtype);
+}
+
+int java_dyn_MethodHandle::vmslots(oop mh) {
+  int vmslots_offset = _vmslots_offset;
+  if (vmslots_offset != 0) {
+#ifdef ASSERT
+    int x = mh->int_field(vmslots_offset);
+    int y = compute_vmslots(mh);
+    assert(x == y, "correct hoisted value");
+#endif
+    return mh->int_field(vmslots_offset);
+  } else {
+    return compute_vmslots(mh);
+  }
+}
+
+// if MH.vmslots exists, hoist into it the value of type.form.vmslots
+void java_dyn_MethodHandle::init_vmslots(oop mh) {
+  int vmslots_offset = _vmslots_offset;
+  if (vmslots_offset != 0) {
+    mh->int_field_put(vmslots_offset, compute_vmslots(mh));
+  }
+}
+
+// fetch type.form.vmslots, which is the number of JVM stack slots
+// required to carry the arguments of this MH
+int java_dyn_MethodHandle::compute_vmslots(oop mh) {
+  oop mtype = type(mh);
+  if (mtype == NULL)  return 0;  // Java code would get NPE
+  oop form = java_dyn_MethodType::form(mtype);
+  if (form == NULL)   return 0;  // Java code would get NPE
+  return java_dyn_MethodTypeForm::vmslots(form);
+}
+
+// fetch the low-level entry point for this mh
+MethodHandleEntry* java_dyn_MethodHandle::vmentry(oop mh) {
+  return (MethodHandleEntry*) mh->address_field(_vmentry_offset);
+}
+
+void java_dyn_MethodHandle::set_vmentry(oop mh, MethodHandleEntry* me) {
+  assert(_vmentry_offset != 0, "must be present");
+
+  // This is always the final step that initializes a valid method handle:
+  mh->release_address_field_put(_vmentry_offset, (address) me);
+
+  // There should be enough memory barriers on exit from native methods
+  // to ensure that the MH is fully initialized to all threads before
+  // Java code can publish it in global data structures.
+  // But just in case, we use release_address_field_put.
+}
+
+/// MemberName accessors
+
+oop sun_dyn_MemberName::clazz(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->obj_field(_clazz_offset);
+}
+
+void sun_dyn_MemberName::set_clazz(oop mname, oop clazz) {
+  assert(is_instance(mname), "wrong type");
+  mname->obj_field_put(_clazz_offset, clazz);
+}
+
+oop sun_dyn_MemberName::name(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->obj_field(_name_offset);
+}
+
+void sun_dyn_MemberName::set_name(oop mname, oop name) {
+  assert(is_instance(mname), "wrong type");
+  mname->obj_field_put(_name_offset, name);
+}
+
+oop sun_dyn_MemberName::type(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->obj_field(_type_offset);
+}
+
+void sun_dyn_MemberName::set_type(oop mname, oop type) {
+  assert(is_instance(mname), "wrong type");
+  mname->obj_field_put(_type_offset, type);
+}
+
+int sun_dyn_MemberName::flags(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->int_field(_flags_offset);
+}
+
+void sun_dyn_MemberName::set_flags(oop mname, int flags) {
+  assert(is_instance(mname), "wrong type");
+  mname->int_field_put(_flags_offset, flags);
+}
+
+oop sun_dyn_MemberName::vmtarget(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->obj_field(_vmtarget_offset);
+}
+
+void sun_dyn_MemberName::set_vmtarget(oop mname, oop ref) {
+  assert(is_instance(mname), "wrong type");
+  mname->obj_field_put(_vmtarget_offset, ref);
+}
+
+int sun_dyn_MemberName::vmindex(oop mname) {
+  assert(is_instance(mname), "wrong type");
+  return mname->int_field(_vmindex_offset);
+}
+
+void sun_dyn_MemberName::set_vmindex(oop mname, int index) {
+  assert(is_instance(mname), "wrong type");
+  mname->int_field_put(_vmindex_offset, index);
+}
+
+oop java_dyn_MethodHandle::vmtarget(oop mh) {
+  assert(is_instance(mh), "MH only");
+  return mh->obj_field(_vmtarget_offset);
+}
+
+void java_dyn_MethodHandle::set_vmtarget(oop mh, oop ref) {
+  assert(is_instance(mh), "MH only");
+  mh->obj_field_put(_vmtarget_offset, ref);
+}
+
+int sun_dyn_DirectMethodHandle::vmindex(oop mh) {
+  assert(is_instance(mh), "DMH only");
+  return mh->int_field(_vmindex_offset);
+}
+
+void sun_dyn_DirectMethodHandle::set_vmindex(oop mh, int index) {
+  assert(is_instance(mh), "DMH only");
+  mh->int_field_put(_vmindex_offset, index);
+}
+
+int sun_dyn_BoundMethodHandle::vmargslot(oop mh) {
+  assert(is_instance(mh), "BMH only");
+  return mh->int_field(_vmargslot_offset);
+}
+
+oop sun_dyn_BoundMethodHandle::argument(oop mh) {
+  assert(is_instance(mh), "BMH only");
+  return mh->obj_field(_argument_offset);
+}
+
+int sun_dyn_AdapterMethodHandle::conversion(oop mh) {
+  assert(is_instance(mh), "AMH only");
+  return mh->int_field(_conversion_offset);
+}
+
+void sun_dyn_AdapterMethodHandle::set_conversion(oop mh, int conv) {
+  assert(is_instance(mh), "AMH only");
+  mh->int_field_put(_conversion_offset, conv);
+}
+
+
+// Support for java_dyn_MethodType
+
+int java_dyn_MethodType::_rtype_offset;
+int java_dyn_MethodType::_ptypes_offset;
+int java_dyn_MethodType::_form_offset;
+
+void java_dyn_MethodType::compute_offsets() {
+  klassOop 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());
+    compute_offset(_form_offset,   k, vmSymbols::form_name(),   vmSymbols::java_dyn_MethodTypeForm_signature());
+  }
+}
+
+void java_dyn_MethodType::print_signature(oop mt, outputStream* st) {
+  st->print("(");
+  objArrayOop pts = ptypes(mt);
+  for (int i = 0, limit = pts->length(); i < limit; i++) {
+    java_lang_Class::print_signature(pts->obj_at(i), st);
+  }
+  st->print(")");
+  java_lang_Class::print_signature(rtype(mt), st);
+}
+
+symbolOop java_dyn_MethodType::as_signature(oop mt, bool intern_if_not_found, TRAPS) {
+  ResourceMark rm;
+  stringStream buffer(128);
+  print_signature(mt, &buffer);
+  const char* sigstr =       buffer.base();
+  int         siglen = (int) buffer.size();
+  if (!intern_if_not_found)
+    return SymbolTable::probe(sigstr, siglen);
+  else
+    return oopFactory::new_symbol(sigstr, siglen, THREAD);
+}
+
+oop java_dyn_MethodType::rtype(oop mt) {
+  assert(is_instance(mt), "must be a MethodType");
+  return mt->obj_field(_rtype_offset);
+}
+
+objArrayOop java_dyn_MethodType::ptypes(oop mt) {
+  assert(is_instance(mt), "must be a MethodType");
+  return (objArrayOop) mt->obj_field(_ptypes_offset);
+}
+
+oop java_dyn_MethodType::form(oop mt) {
+  assert(is_instance(mt), "must be a MethodType");
+  return mt->obj_field(_form_offset);
+}
+
+oop java_dyn_MethodType::ptype(oop mt, int idx) {
+  return ptypes(mt)->obj_at(idx);
+}
+
+
+
+// Support for java_dyn_MethodTypeForm
+
+int java_dyn_MethodTypeForm::_vmslots_offset;
+int java_dyn_MethodTypeForm::_erasedType_offset;
+
+void java_dyn_MethodTypeForm::compute_offsets() {
+  klassOop k = SystemDictionary::MethodTypeForm_klass();
+  if (k != NULL) {
+    compute_optional_offset(_vmslots_offset,    k, vmSymbols::vmslots_name(),    vmSymbols::int_signature(), true);
+    compute_optional_offset(_erasedType_offset, k, vmSymbols::erasedType_name(), vmSymbols::java_dyn_MethodType_signature(), true);
+  }
+}
+
+int java_dyn_MethodTypeForm::vmslots(oop mtform) {
+  assert(mtform->klass() == SystemDictionary::MethodTypeForm_klass(), "MTForm only");
+  return mtform->int_field(_vmslots_offset);
+}
+
+oop java_dyn_MethodTypeForm::erasedType(oop mtform) {
+  assert(mtform->klass() == SystemDictionary::MethodTypeForm_klass(), "MTForm only");
+  return mtform->obj_field(_erasedType_offset);
+}
+
+
+// Support for sun_dyn_CallSiteImpl
+
+int sun_dyn_CallSiteImpl::_type_offset;
+int sun_dyn_CallSiteImpl::_target_offset;
+int sun_dyn_CallSiteImpl::_vmmethod_offset;
+
+void sun_dyn_CallSiteImpl::compute_offsets() {
+  if (!EnableInvokeDynamic)  return;
+  klassOop k = SystemDictionary::CallSiteImpl_klass();
+  if (k != NULL) {
+    compute_offset(_type_offset,   k, vmSymbols::type_name(),   vmSymbols::java_dyn_MethodType_signature(), true);
+    compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature(), true);
+    compute_offset(_vmmethod_offset, k, vmSymbols::vmmethod_name(), vmSymbols::object_signature(), true);
+  }
+}
+
+oop sun_dyn_CallSiteImpl::type(oop site) {
+  return site->obj_field(_type_offset);
+}
+
+oop sun_dyn_CallSiteImpl::target(oop site) {
+  return site->obj_field(_target_offset);
+}
+
+void sun_dyn_CallSiteImpl::set_target(oop site, oop target) {
+  site->obj_field_put(_target_offset, target);
+}
+
+oop sun_dyn_CallSiteImpl::vmmethod(oop site) {
+  return site->obj_field(_vmmethod_offset);
+}
+
+void sun_dyn_CallSiteImpl::set_vmmethod(oop site, oop ref) {
+  site->obj_field_put(_vmmethod_offset, ref);
+}
+
+
 // Support for java_security_AccessControlContext
 
 int java_security_AccessControlContext::_context_offset = 0;
 int java_security_AccessControlContext::_privilegedContext_offset = 0;
 int java_security_AccessControlContext::_isPrivileged_offset = 0;
 
-
 void java_security_AccessControlContext::compute_offsets() {
   assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
   fieldDescriptor fd;
@@ -2354,6 +2801,18 @@
   java_lang_System::compute_offsets();
   java_lang_Thread::compute_offsets();
   java_lang_ThreadGroup::compute_offsets();
+  if (EnableMethodHandles) {
+    java_dyn_MethodHandle::compute_offsets();
+    sun_dyn_MemberName::compute_offsets();
+    sun_dyn_DirectMethodHandle::compute_offsets();
+    sun_dyn_BoundMethodHandle::compute_offsets();
+    sun_dyn_AdapterMethodHandle::compute_offsets();
+    java_dyn_MethodType::compute_offsets();
+    java_dyn_MethodTypeForm::compute_offsets();
+  }
+  if (EnableInvokeDynamic) {
+    sun_dyn_CallSiteImpl::compute_offsets();
+  }
   java_security_AccessControlContext::compute_offsets();
   // Initialize reflection classes. The layouts of these classes
   // changed with the new reflection implementation in JDK 1.4, and
@@ -2371,6 +2830,9 @@
     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
   }
   sun_misc_AtomicLongCSImpl::compute_offsets();
+
+  // generated interpreter code wants to know about the offsets we just computed:
+  AbstractAssembler::update_delayed_values();
 }
 
 #ifndef PRODUCT
--- a/src/share/vm/classfile/javaClasses.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/javaClasses.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +107,7 @@
 
   // Conversion
   static symbolHandle as_symbol(Handle java_string, TRAPS);
+  static symbolOop as_symbol_or_null(oop java_string);
 
   // Testers
   static bool is_instance(oop obj) {
@@ -141,6 +142,7 @@
   static void compute_offsets();
   static bool offsets_computed;
   static int classRedefinedCount_offset;
+  static int parallelCapable_offset;
 
  public:
   // Instance creation
@@ -148,6 +150,15 @@
   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
   // Conversion
   static klassOop as_klassOop(oop java_class);
+  static BasicType as_BasicType(oop java_class, klassOop* reference_klass = NULL);
+  static BasicType as_BasicType(oop java_class, KlassHandle* reference_klass) {
+    klassOop refk_oop = NULL;
+    BasicType result = as_BasicType(java_class, &refk_oop);
+    (*reference_klass) = KlassHandle(refk_oop);
+    return result;
+  }
+  static symbolOop as_signature(oop java_class, bool intern_if_not_found, TRAPS);
+  static void print_signature(oop java_class, outputStream *st);
   // Testing
   static bool is_instance(oop obj) {
     return obj != NULL && obj->klass() == SystemDictionary::class_klass();
@@ -168,6 +179,8 @@
   // Support for classRedefinedCount field
   static int classRedefinedCount(oop the_class_mirror);
   static void set_classRedefinedCount(oop the_class_mirror, int value);
+  // Support for parallelCapable field
+  static bool parallelCapable(oop the_class_mirror);
   // Debugging
   friend class JavaClasses;
   friend class instanceKlass;   // verification code accesses offsets
@@ -665,6 +678,8 @@
   static BasicType basic_type(oop box);
   static bool is_instance(oop box)                 { return basic_type(box) != T_ILLEGAL; }
   static bool is_instance(oop box, BasicType type) { return basic_type(box) == type; }
+  static void print(oop box, outputStream* st)     { jvalue value;  print(get_value(box, &value), &value, st); }
+  static void print(BasicType type, jvalue* value, outputStream* st);
 
   static int value_offset_in_bytes(BasicType type) {
     return ( type == T_LONG || type == T_DOUBLE ) ? long_value_offset :
@@ -769,6 +784,311 @@
 };
 
 
+// Interface to java.dyn.MethodHandle objects
+
+class MethodHandleEntry;
+
+class java_dyn_MethodHandle: AllStatic {
+  friend class JavaClasses;
+
+ private:
+  static int _vmentry_offset;           // assembly code trampoline for MH
+  static int _vmtarget_offset;          // class-specific target reference
+  static int _type_offset;              // the MethodType of this MH
+  static int _vmslots_offset;           // OPTIONAL hoisted type.form.vmslots
+
+  static void compute_offsets();
+
+ public:
+  // Accessors
+  static oop            type(oop mh);
+  static void       set_type(oop mh, oop mtype);
+
+  static oop            vmtarget(oop mh);
+  static void       set_vmtarget(oop mh, oop target);
+
+  static MethodHandleEntry* vmentry(oop mh);
+  static void       set_vmentry(oop mh, MethodHandleEntry* data);
+
+  static int            vmslots(oop mh);
+  static void      init_vmslots(oop mh);
+  static int    compute_vmslots(oop mh);
+
+  // Testers
+  static bool is_subclass(klassOop klass) {
+    return Klass::cast(klass)->is_subclass_of(SystemDictionary::MethodHandle_klass());
+  }
+  static bool is_instance(oop obj) {
+    return obj != NULL && is_subclass(obj->klass());
+  }
+
+  // Accessors for code generation:
+  static int type_offset_in_bytes()             { return _type_offset; }
+  static int vmtarget_offset_in_bytes()         { return _vmtarget_offset; }
+  static int vmentry_offset_in_bytes()          { return _vmentry_offset; }
+  static int vmslots_offset_in_bytes()          { return _vmslots_offset; }
+};
+
+class sun_dyn_DirectMethodHandle: public java_dyn_MethodHandle {
+  friend class JavaClasses;
+
+ private:
+  //         _vmtarget_offset;          // method   or class      or interface
+  static int _vmindex_offset;           // negative or vtable idx or itable idx
+  static void compute_offsets();
+
+ public:
+  // Accessors
+  static int            vmindex(oop mh);
+  static void       set_vmindex(oop mh, int index);
+
+  // Testers
+  static bool is_subclass(klassOop klass) {
+    return Klass::cast(klass)->is_subclass_of(SystemDictionary::DirectMethodHandle_klass());
+  }
+  static bool is_instance(oop obj) {
+    return obj != NULL && is_subclass(obj->klass());
+  }
+
+  // Accessors for code generation:
+  static int vmindex_offset_in_bytes()          { return _vmindex_offset; }
+};
+
+class sun_dyn_BoundMethodHandle: public java_dyn_MethodHandle {
+  friend class JavaClasses;
+
+ private:
+  static int _argument_offset;          // argument value bound into this MH
+  static int _vmargslot_offset;         // relevant argument slot (<= vmslots)
+  static void compute_offsets();
+
+public:
+  static oop            argument(oop mh);
+  static void       set_argument(oop mh, oop ref);
+
+  static jint           vmargslot(oop mh);
+  static void       set_vmargslot(oop mh, jint slot);
+
+  // Testers
+  static bool is_subclass(klassOop klass) {
+    return Klass::cast(klass)->is_subclass_of(SystemDictionary::BoundMethodHandle_klass());
+  }
+  static bool is_instance(oop obj) {
+    return obj != NULL && is_subclass(obj->klass());
+  }
+
+  static int argument_offset_in_bytes()         { return _argument_offset; }
+  static int vmargslot_offset_in_bytes()        { return _vmargslot_offset; }
+};
+
+class sun_dyn_AdapterMethodHandle: public sun_dyn_BoundMethodHandle {
+  friend class JavaClasses;
+
+ private:
+  static int _conversion_offset;        // type of conversion to apply
+  static void compute_offsets();
+
+ public:
+  static int            conversion(oop mh);
+  static void       set_conversion(oop mh, int conv);
+
+  // Testers
+  static bool is_subclass(klassOop klass) {
+    return Klass::cast(klass)->is_subclass_of(SystemDictionary::AdapterMethodHandle_klass());
+  }
+  static bool is_instance(oop obj) {
+    return obj != NULL && is_subclass(obj->klass());
+  }
+
+  // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
+  enum {
+    OP_RETYPE_ONLY   = 0x0, // no argument changes; straight retype
+    OP_CHECK_CAST    = 0x1, // ref-to-ref conversion; requires a Class argument
+    OP_PRIM_TO_PRIM  = 0x2, // converts from one primitive to another
+    OP_REF_TO_PRIM   = 0x3, // unboxes a wrapper to produce a primitive
+    OP_PRIM_TO_REF   = 0x4, // boxes a primitive into a wrapper (NYI)
+    OP_SWAP_ARGS     = 0x5, // swap arguments (vminfo is 2nd arg)
+    OP_ROT_ARGS      = 0x6, // rotate arguments (vminfo is displaced arg)
+    OP_DUP_ARGS      = 0x7, // duplicates one or more arguments (at TOS)
+    OP_DROP_ARGS     = 0x8, // remove one or more argument slots
+    OP_COLLECT_ARGS  = 0x9, // combine one or more arguments into a varargs (NYI)
+    OP_SPREAD_ARGS   = 0xA, // expand in place a varargs array (of known size)
+    OP_FLYBY         = 0xB, // operate first on reified argument list (NYI)
+    OP_RICOCHET      = 0xC, // run an adapter chain on the return value (NYI)
+    CONV_OP_LIMIT    = 0xD, // limit of CONV_OP enumeration
+
+    CONV_OP_MASK     = 0xF00, // this nybble contains the conversion op field
+    CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use
+    CONV_VMINFO_SHIFT     =  0, // position of bits in CONV_VMINFO_MASK
+    CONV_OP_SHIFT         =  8, // position of bits in CONV_OP_MASK
+    CONV_DEST_TYPE_SHIFT  = 12, // byte 2 has the adapter BasicType (if needed)
+    CONV_SRC_TYPE_SHIFT   = 16, // byte 2 has the source BasicType (if needed)
+    CONV_STACK_MOVE_SHIFT = 20, // high 12 bits give signed SP change
+    CONV_STACK_MOVE_MASK  = (1 << (32 - CONV_STACK_MOVE_SHIFT)) - 1
+  };
+
+  static int conversion_offset_in_bytes()       { return _conversion_offset; }
+};
+
+
+// Interface to sun.dyn.MemberName objects
+// (These are a private interface for Java code to query the class hierarchy.)
+
+class sun_dyn_MemberName: AllStatic {
+  friend class JavaClasses;
+
+ private:
+  // From java.dyn.MemberName:
+  //    private Class<?>   clazz;       // class in which the method is defined
+  //    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 int        vmindex;     // method 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 _vmindex_offset;
+
+  static void compute_offsets();
+
+ public:
+  // Accessors
+  static oop            clazz(oop mname);
+  static void       set_clazz(oop mname, oop clazz);
+
+  static oop            type(oop mname);
+  static void       set_type(oop mname, oop type);
+
+  static oop            name(oop mname);
+  static void       set_name(oop mname, oop name);
+
+  static int            flags(oop mname);
+  static void       set_flags(oop mname, int flags);
+
+  static int            modifiers(oop mname) { return (u2) flags(mname); }
+  static void       set_modifiers(oop mname, int mods)
+                                { set_flags(mname, (flags(mname) &~ (u2)-1) | (u2)mods); }
+
+  static oop            vmtarget(oop mname);
+  static void       set_vmtarget(oop mname, oop target);
+
+  static int            vmindex(oop mname);
+  static void       set_vmindex(oop mname, int index);
+
+  // Testers
+  static bool is_subclass(klassOop klass) {
+    return Klass::cast(klass)->is_subclass_of(SystemDictionary::MemberName_klass());
+  }
+  static bool is_instance(oop obj) {
+    return obj != NULL && is_subclass(obj->klass());
+  }
+
+  // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
+  enum {
+    MN_IS_METHOD           = 0x00010000, // method (not constructor)
+    MN_IS_CONSTRUCTOR      = 0x00020000, // constructor
+    MN_IS_FIELD            = 0x00040000, // field
+    MN_IS_TYPE             = 0x00080000, // nested type
+    MN_SEARCH_SUPERCLASSES = 0x00100000, // for MHN.getMembers
+    MN_SEARCH_INTERFACES   = 0x00200000, // for MHN.getMembers
+    VM_INDEX_UNINITIALIZED = -99
+  };
+
+  // Accessors for code generation:
+  static int clazz_offset_in_bytes()            { return _clazz_offset; }
+  static int type_offset_in_bytes()             { return _type_offset; }
+  static int name_offset_in_bytes()             { return _name_offset; }
+  static int flags_offset_in_bytes()            { return _flags_offset; }
+  static int vmtarget_offset_in_bytes()         { return _vmtarget_offset; }
+  static int vmindex_offset_in_bytes()          { return _vmindex_offset; }
+};
+
+
+// Interface to java.dyn.MethodType objects
+
+class java_dyn_MethodType: AllStatic {
+  friend class JavaClasses;
+
+ private:
+  static int _rtype_offset;
+  static int _ptypes_offset;
+  static int _form_offset;
+
+  static void compute_offsets();
+
+ public:
+  // Accessors
+  static oop            rtype(oop mt);
+  static objArrayOop    ptypes(oop mt);
+  static oop            form(oop mt);
+
+  static oop            ptype(oop mt, int index);
+
+  static symbolOop      as_signature(oop mt, bool intern_if_not_found, TRAPS);
+  static void           print_signature(oop mt, outputStream* st);
+
+  static bool is_instance(oop obj) {
+    return obj != NULL && obj->klass() == SystemDictionary::MethodType_klass();
+  }
+
+  // Accessors for code generation:
+  static int rtype_offset_in_bytes()            { return _rtype_offset; }
+  static int ptypes_offset_in_bytes()           { return _ptypes_offset; }
+  static int form_offset_in_bytes()             { return _form_offset; }
+};
+
+class java_dyn_MethodTypeForm: AllStatic {
+  friend class JavaClasses;
+
+ private:
+  static int _vmslots_offset;           // number of argument slots needed
+  static int _erasedType_offset;        // erasedType = canonical MethodType
+
+  static void compute_offsets();
+
+ public:
+  // Accessors
+  static int            vmslots(oop mtform);
+  static oop            erasedType(oop mtform);
+
+  // Accessors for code generation:
+  static int vmslots_offset_in_bytes()          { return _vmslots_offset; }
+  static int erasedType_offset_in_bytes()       { return _erasedType_offset; }
+};
+
+
+// Interface to sun.dyn.CallSiteImpl objects
+
+class sun_dyn_CallSiteImpl: AllStatic {
+  friend class JavaClasses;
+
+private:
+  static int _type_offset;
+  static int _target_offset;
+  static int _vmmethod_offset;
+
+  static void compute_offsets();
+
+public:
+  // Accessors
+  static oop            type(oop site);
+
+  static oop            target(oop site);
+  static void       set_target(oop site, oop target);
+
+  static oop            vmmethod(oop site);
+  static void       set_vmmethod(oop site, oop ref);
+
+  // Accessors for code generation:
+  static int target_offset_in_bytes()           { return _target_offset; }
+  static int type_offset_in_bytes()             { return _type_offset; }
+  static int vmmethod_offset_in_bytes()         { return _vmmethod_offset; }
+};
+
+
 // Interface to java.security.AccessControlContext objects
 
 class java_security_AccessControlContext: AllStatic {
--- a/src/share/vm/classfile/loaderConstraints.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/loaderConstraints.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,8 +60,10 @@
   bool add_entry(symbolHandle name, klassOop klass1, Handle loader1,
                                     klassOop klass2, Handle loader2);
 
-  void check_signature_loaders(symbolHandle signature, Handle loader1,
-                               Handle loader2, bool is_method, TRAPS);
+  // Note:  The main entry point for this module is via SystemDictionary.
+  // SystemDictionary::check_signature_loaders(symbolHandle signature,
+  //                                           Handle loader1, Handle loader2,
+  //                                           bool is_method, TRAPS)
 
   klassOop find_constrained_klass(symbolHandle name, Handle loader);
   klassOop find_constrained_elem_klass(symbolHandle name, symbolHandle elem_name,
--- a/src/share/vm/classfile/symbolTable.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/symbolTable.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -109,6 +109,40 @@
   return the_table()->lookup(index, name, len, hash);
 }
 
+// Suggestion: Push unicode-based lookup all the way into the hashing
+// and probing logic, so there is no need for convert_to_utf8 until
+// an actual new symbolOop is created.
+symbolOop SymbolTable::lookup_unicode(const jchar* name, int utf16_length, TRAPS) {
+  int utf8_length = UNICODE::utf8_length((jchar*) name, utf16_length);
+  char stack_buf[128];
+  if (utf8_length < (int) sizeof(stack_buf)) {
+    char* chars = stack_buf;
+    UNICODE::convert_to_utf8(name, utf16_length, chars);
+    return lookup(chars, utf8_length, THREAD);
+  } else {
+    ResourceMark rm(THREAD);
+    char* chars = NEW_RESOURCE_ARRAY(char, utf8_length + 1);;
+    UNICODE::convert_to_utf8(name, utf16_length, chars);
+    return lookup(chars, utf8_length, THREAD);
+  }
+}
+
+symbolOop SymbolTable::lookup_only_unicode(const jchar* name, int utf16_length,
+                                           unsigned int& hash) {
+  int utf8_length = UNICODE::utf8_length((jchar*) name, utf16_length);
+  char stack_buf[128];
+  if (utf8_length < (int) sizeof(stack_buf)) {
+    char* chars = stack_buf;
+    UNICODE::convert_to_utf8(name, utf16_length, chars);
+    return lookup_only(chars, utf8_length, hash);
+  } else {
+    ResourceMark rm;
+    char* chars = NEW_RESOURCE_ARRAY(char, utf8_length + 1);;
+    UNICODE::convert_to_utf8(name, utf16_length, chars);
+    return lookup_only(chars, utf8_length, hash);
+  }
+}
+
 void SymbolTable::add(constantPoolHandle cp, int names_count,
                       const char** names, int* lengths, int* cp_indices,
                       unsigned int* hashValues, TRAPS) {
@@ -126,15 +160,6 @@
   }
 }
 
-// Needed for preloading classes in signatures when compiling.
-
-symbolOop SymbolTable::probe(const char* name, int len) {
-  unsigned int hashValue = hash_symbol(name, len);
-  int index = the_table()->hash_to_index(hashValue);
-  return the_table()->lookup(index, name, len, hashValue);
-}
-
-
 symbolOop SymbolTable::basic_add(int index, u1 *name, int len,
                                  unsigned int hashValue, TRAPS) {
   assert(!Universe::heap()->is_in_reserved(name) || GC_locker::is_active(),
@@ -156,7 +181,7 @@
 
   symbolOop test = lookup(index, (char*)name, len, hashValue);
   if (test != NULL) {
-    // A race occured and another thread introduced the symbol, this one
+    // A race occurred and another thread introduced the symbol, this one
     // will be dropped and collected.
     return test;
   }
@@ -193,7 +218,7 @@
     int index = hash_to_index(hashValues[i]);
     symbolOop test = lookup(index, names[i], lengths[i], hashValues[i]);
     if (test != NULL) {
-      // A race occured and another thread introduced the symbol, this one
+      // A race occurred and another thread introduced the symbol, this one
       // will be dropped and collected. Use test instead.
       cp->symbol_at_put(cp_indices[i], test);
     } else {
--- a/src/share/vm/classfile/symbolTable.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/symbolTable.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +91,10 @@
   // Only copy to C string to be added if lookup failed.
   static symbolOop lookup(symbolHandle sym, int begin, int end, TRAPS);
 
+  // jchar (utf16) version of lookups
+  static symbolOop lookup_unicode(const jchar* name, int len, TRAPS);
+  static symbolOop lookup_only_unicode(const jchar* name, int len, unsigned int& hash);
+
   static void add(constantPoolHandle cp, int names_count,
                   const char** names, int* lengths, int* cp_indices,
                   unsigned int* hashValues, TRAPS);
@@ -112,7 +116,14 @@
   // Needed for preloading classes in signatures when compiling.
   // Returns the symbol is already present in symbol table, otherwise
   // NULL.  NO ALLOCATION IS GUARANTEED!
-  static symbolOop probe(const char* name, int len);
+  static symbolOop probe(const char* name, int len) {
+    unsigned int ignore_hash;
+    return lookup_only(name, len, ignore_hash);
+  }
+  static symbolOop probe_unicode(const jchar* name, int len) {
+    unsigned int ignore_hash;
+    return lookup_only_unicode(name, len, ignore_hash);
+  }
 
   // Histogram
   static void print_histogram()     PRODUCT_RETURN;
--- a/src/share/vm/classfile/systemDictionary.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/systemDictionary.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +31,7 @@
 Dictionary*       SystemDictionary::_shared_dictionary = NULL;
 LoaderConstraintTable* SystemDictionary::_loader_constraints = NULL;
 ResolutionErrorTable* SystemDictionary::_resolution_errors = NULL;
+SymbolPropertyTable* SystemDictionary::_invoke_method_table = NULL;
 
 
 int         SystemDictionary::_number_of_modifications = 0;
@@ -90,6 +91,14 @@
 #endif
 
 // ----------------------------------------------------------------------------
+// Parallel class loading check
+
+bool SystemDictionary::is_parallelCapable(Handle class_loader) {
+  if (UnsyncloadClass || class_loader.is_null()) return true;
+  if (AlwaysLockClassLoader) return false;
+  return java_lang_Class::parallelCapable(class_loader());
+}
+// ----------------------------------------------------------------------------
 // Resolving of classes
 
 // Forwards to resolve_or_null
@@ -196,7 +205,8 @@
 // super-class callers:
 //   ClassFileParser - for defineClass & jvmtiRedefineClasses
 //   load_shared_class - while loading a class from shared archive
-//   resolve_instance_class_or_fail:
+//   resolve_instance_class_or_null:
+//     via: handle_parallel_super_load
 //      when resolving a class that has an existing placeholder with
 //      a saved superclass [i.e. a defineClass is currently in progress]
 //      if another thread is trying to resolve the class, it must do
@@ -283,12 +293,9 @@
       if (probe && probe->check_seen_thread(THREAD, PlaceholderTable::LOAD_SUPER)) {
           throw_circularity_error = true;
       }
-
-      // add placeholder entry even if error - callers will remove on error
+    }
+    if (!throw_circularity_error) {
       PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, child_name, class_loader, PlaceholderTable::LOAD_SUPER, class_name, THREAD);
-      if (throw_circularity_error) {
-         newprobe->remove_seen_thread(THREAD, PlaceholderTable::LOAD_SUPER);
-      }
     }
   }
   if (throw_circularity_error) {
@@ -325,7 +332,6 @@
   return superk_h();
 }
 
-
 void SystemDictionary::validate_protection_domain(instanceKlassHandle klass,
                                                   Handle class_loader,
                                                   Handle protection_domain,
@@ -421,7 +427,7 @@
   bool calledholdinglock
       = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject);
   assert(calledholdinglock,"must hold lock for notify");
-  assert(!UnsyncloadClass, "unexpected double_lock_wait");
+  assert((!(lockObject() == _system_loader_lock_obj) && !is_parallelCapable(lockObject)), "unexpected double_lock_wait");
   ObjectSynchronizer::notifyall(lockObject, THREAD);
   intptr_t recursions =  ObjectSynchronizer::complete_exit(lockObject, THREAD);
   SystemDictionary_lock->wait();
@@ -439,7 +445,7 @@
 // even in non-circularity situations.
 // Note: only one thread can define the class, but multiple can resolve
 // Note: must call resolve_super_or_fail even if null super -
-// to force placeholder entry creation for this class
+// 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
 // and we are done,
@@ -477,9 +483,9 @@
     SystemDictionary_lock->notify_all();
   }
 
-  // UnsyncloadClass does NOT wait for parallel superclass loads to complete
-  // Bootstrap classloader does wait for parallel superclass loads
- if (UnsyncloadClass) {
+  // parallelCapable class loaders do NOT wait for parallel superclass loads to complete
+  // Serial class loaders and bootstrap classloader do wait for superclass loads
+ 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);
@@ -566,10 +572,10 @@
   // This lock must be acquired here so the waiter will find
   // any successful result in the SystemDictionary and not attempt
   // the define
-  // Classloaders that support parallelism, e.g. bootstrap classloader,
+  // ParallelCapable Classloaders and the bootstrap classloader,
   // or all classloaders with UnsyncloadClass do not acquire lock here
   bool DoObjectLock = true;
-  if (UnsyncloadClass || (class_loader.is_null())) {
+  if (is_parallelCapable(class_loader)) {
     DoObjectLock = false;
   }
 
@@ -627,6 +633,9 @@
     // Five cases:
     // All cases need to prevent modifying bootclasssearchpath
     // in parallel with a classload of same classname
+    // Redefineclasses uses existence of the placeholder for the duration
+    // of the class load to prevent concurrent redefinition of not completely
+    // defined classes.
     // case 1. traditional classloaders that rely on the classloader object lock
     //   - no other need for LOAD_INSTANCE
     // case 2. traditional classloaders that break the classloader object lock
@@ -642,12 +651,13 @@
     //    This classloader supports parallelism at the classloader level,
     //    but only allows a single load of a class/classloader pair.
     //    No performance benefit and no deadlock issues.
-    // case 5. Future: parallel user level classloaders - without objectLocker
+    // case 5. parallelCapable user level classloaders - without objectLocker
+    //    Allow parallel classloading of a class/classloader pair
     symbolHandle nullsymbolHandle;
     bool throw_circularity_error = false;
     {
       MutexLocker mu(SystemDictionary_lock, THREAD);
-      if (!UnsyncloadClass) {
+      if (class_loader.is_null() || !is_parallelCapable(class_loader)) {
         PlaceholderEntry* oldprobe = placeholders()->get_entry(p_index, p_hash, name, class_loader);
         if (oldprobe) {
           // only need check_seen_thread once, not on each loop
@@ -681,25 +691,25 @@
         }
       }
       // All cases: add LOAD_INSTANCE
-      // case 3: UnsyncloadClass: allow competing threads to try
+      // case 3: UnsyncloadClass || case 5: parallelCapable: allow competing threads to try
       // LOAD_INSTANCE in parallel
       // add placeholder entry even if error - callers will remove on error
-      if (!class_has_been_loaded) {
+      if (!throw_circularity_error && !class_has_been_loaded) {
         PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, name, class_loader, PlaceholderTable::LOAD_INSTANCE, nullsymbolHandle, THREAD);
-        if (throw_circularity_error) {
-          newprobe->remove_seen_thread(THREAD, PlaceholderTable::LOAD_INSTANCE);
-        }
         // 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);
         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);
+          SystemDictionary_lock->notify_all();
         }
       }
     }
@@ -714,18 +724,14 @@
       // Do actual loading
       k = load_instance_class(name, class_loader, THREAD);
 
-      // In custom class loaders, the usual findClass calls
-      // findLoadedClass, which directly searches  the SystemDictionary, then
-      // defineClass. If these are not atomic with respect to other threads,
-      // the findLoadedClass can fail, but the defineClass can get a
-      // LinkageError:: duplicate class definition.
+      // For UnsyncloadClass and AllowParallelDefineClass only:
       // 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
-      // Note: Class can not be unloaded as long as any classloader refs exist
       // Should not get here for classloaders that support parallelism
-      // with the new cleaner mechanism, e.g. bootstrap classloader
+      // with the new cleaner mechanism
+      // Bootstrap goes through here to allow for an extra guarantee check
       if (UnsyncloadClass || (class_loader.is_null())) {
         if (k.is_null() && HAS_PENDING_EXCEPTION
           && PENDING_EXCEPTION->is_a(SystemDictionary::linkageError_klass())) {
@@ -841,6 +847,12 @@
                                 Handle protection_domain,
                                 TRAPS) {
 
+  // UseNewReflection
+  // The result of this call should be consistent with the result
+  // 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);
   int d_index = dictionary()->hash_to_index(d_hash);
 
@@ -955,10 +967,12 @@
   instanceKlassHandle k = ClassFileParser(st).parseClassFile(class_name,
                                                              class_loader,
                                                              protection_domain,
+                                                             host_klass,
                                                              cp_patches,
                                                              parsed_name,
                                                              THREAD);
 
+
   // We don't redefine the class, so we just need to clean up whether there
   // was an error or not (don't want to modify any system dictionary
   // data structures).
@@ -1013,11 +1027,17 @@
                                                ClassFileStream* st,
                                                TRAPS) {
 
-  // Make sure we are synchronized on the class loader before we initiate
-  // loading.
+  // Classloaders that support parallelism, e.g. bootstrap classloader,
+  // or all classloaders with UnsyncloadClass do not acquire lock here
+  bool DoObjectLock = true;
+  if (is_parallelCapable(class_loader)) {
+    DoObjectLock = false;
+  }
+
+  // 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);
-  ObjectLocker ol(lockObject, THREAD);
+  ObjectLocker ol(lockObject, THREAD, DoObjectLock);
 
   symbolHandle parsed_name;
 
@@ -1069,7 +1089,13 @@
            "external class name format used internally");
 
     // Add class just loaded
-    define_instance_class(k, THREAD);
+    // If a class loader supports parallel classloading handle parallel define requests
+    // 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 {
+      define_instance_class(k, THREAD);
+    }
   }
 
   // If parsing the class file or define_instance_class failed, we
@@ -1280,13 +1306,18 @@
 instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS) {
   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
   if (class_loader.is_null()) {
+
     // Search the shared system dictionary for classes preloaded into the
     // shared spaces.
     instanceKlassHandle k;
-    k = load_shared_class(class_name, class_loader, THREAD);
+    {
+      PerfTraceTime vmtimer(ClassLoader::perf_shared_classload_time());
+      k = load_shared_class(class_name, class_loader, THREAD);
+    }
 
     if (k.is_null()) {
       // Use VM class loader
+      PerfTraceTime vmtimer(ClassLoader::perf_sys_classload_time());
       k = ClassLoader::load_classfile(class_name, CHECK_(nh));
     }
 
@@ -1299,7 +1330,7 @@
     }
 #endif // KERNEL
 
-    // find_or_define_instance_class may return a different k
+    // 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));
     }
@@ -1308,6 +1339,16 @@
     // Use user specified class loader to load class. Call loadClass operation on class_loader.
     ResourceMark rm(THREAD);
 
+    assert(THREAD->is_Java_thread(), "must be a JavaThread");
+    JavaThread* jt = (JavaThread*) THREAD;
+
+    PerfClassTraceTime vmtimer(ClassLoader::perf_app_classload_time(),
+                               ClassLoader::perf_app_classload_selftime(),
+                               ClassLoader::perf_app_classload_count(),
+                               jt->get_thread_stat()->perf_recursion_counts_addr(),
+                               jt->get_thread_stat()->perf_timers_addr(),
+                               PerfClassTraceTime::CLASS_LOAD);
+
     Handle s = java_lang_String::create_from_symbol(class_name, CHECK_(nh));
     // Translate to external class name format, i.e., convert '/' chars to '.'
     Handle string = java_lang_String::externalize_classname(s, CHECK_(nh));
@@ -1316,14 +1357,24 @@
 
     KlassHandle spec_klass (THREAD, SystemDictionary::classloader_klass());
 
-    // UnsyncloadClass option means don't synchronize loadClass() calls.
-    // loadClassInternal() is synchronized and public loadClass(String) is not.
-    // This flag is for diagnostic purposes only. It is risky to call
+    // Call public unsynchronized loadClass(String) directly for all class loaders
+    // for parallelCapable class loaders. JDK >=7, loadClass(String, boolean) will
+    // acquire a class-name based lock rather than the class loader object lock.
+    // JDK < 7 already acquire the class loader lock in loadClass(String, boolean),
+    // so the call to loadClassInternal() was not required.
+    //
+    // UnsyncloadClass flag means both call loadClass(String) and do
+    // not acquire the class loader lock even for class loaders that are
+    // not parallelCapable. This was a risky transitional
+    // flag for diagnostic purposes only. It is risky to call
     // custom class loaders without synchronization.
     // WARNING If a custom class loader does NOT synchronizer findClass, or callers of
-    // findClass, this flag risks unexpected timing bugs in the field.
+    // findClass, the UnsyncloadClass flag risks unexpected timing bugs in the field.
     // Do NOT assume this will be supported in future releases.
-    if (!UnsyncloadClass && has_loadClassInternal()) {
+    //
+    // Added MustCallLoadClassInternal in case we discover in the field
+    // a customer that counts on this call
+    if (MustCallLoadClassInternal && has_loadClassInternal()) {
       JavaCalls::call_special(&result,
                               class_loader,
                               spec_klass,
@@ -1365,14 +1416,17 @@
 
   Handle class_loader_h(THREAD, k->class_loader());
 
-  // for bootstrap classloader don't acquire lock
-  if (!class_loader_h.is_null()) {
+ // for bootstrap and other parallel classloaders don't acquire lock,
+ // use placeholder token
+ // If a parallelCapable class loader calls define_instance_class instead of
+ // find_or_define_instance_class to get here, we have a timing
+ // hole with systemDictionary updates and check_constraints
+ if (!class_loader_h.is_null() && !is_parallelCapable(class_loader_h)) {
     assert(ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD,
          compute_loader_lock_object(class_loader_h, THREAD)),
          "define called without lock");
   }
 
-
   // Check class-loading constraints. Throw exception if violation is detected.
   // Grabs and releases SystemDictionary_lock
   // The check_constraints/find_class call and update_dictionary sequence
@@ -1427,59 +1481,63 @@
 
 // Support parallel classloading
 // Initial implementation for bootstrap classloader
-// For future:
 // For custom class loaders that support parallel classloading,
-// in case they do not synchronize around
-// FindLoadedClass/DefineClass calls, we check for parallel
+// With AllowParallelDefine flag==true, in case they do not synchronize around
+// FindLoadedClass/DefineClass, calls, we check for parallel
 // loading for them, wait if a defineClass is in progress
 // and return the initial requestor's results
+// With AllowParallelDefine flag==false, call through to define_instance_class
+// which will throw LinkageError: duplicate class definition.
 // For better performance, the class loaders should synchronize
-// findClass(), i.e. FindLoadedClass/DefineClass or they
+// findClass(), i.e. FindLoadedClass/DefineClassIfAbsent or they
 // potentially waste time reading and parsing the bytestream.
 // Note: VM callers should ensure consistency of k/class_name,class_loader
 instanceKlassHandle SystemDictionary::find_or_define_instance_class(symbolHandle class_name, Handle class_loader, instanceKlassHandle k, TRAPS) {
 
   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
+  symbolHandle name_h(THREAD, k->name()); // passed in class_name may be null
 
-  unsigned int d_hash = dictionary()->compute_hash(class_name, class_loader);
+  unsigned int d_hash = dictionary()->compute_hash(name_h, class_loader);
   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(class_name, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(name_h, class_loader);
   int p_index = placeholders()->hash_to_index(p_hash);
   PlaceholderEntry* probe;
 
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
     // First check if class already defined
-    klassOop check = find_class(d_index, d_hash, class_name, class_loader);
+    klassOop check = find_class(d_index, d_hash, name_h, class_loader);
     if (check != NULL) {
       return(instanceKlassHandle(THREAD, check));
     }
 
     // Acquire define token for this class/classloader
     symbolHandle nullsymbolHandle;
-    probe = placeholders()->find_and_add(p_index, p_hash, class_name, class_loader, PlaceholderTable::DEFINE_CLASS, nullsymbolHandle, THREAD);
-    // Check if another thread defining in parallel
-    if (probe->definer() == NULL) {
-      // Thread will define the class
-      probe->set_definer(THREAD);
+    probe = placeholders()->find_and_add(p_index, p_hash, name_h, class_loader, PlaceholderTable::DEFINE_CLASS, nullsymbolHandle, 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
+    // if other thread has not finished updating dictionary
+    while (probe->definer() != NULL) {
+      SystemDictionary_lock->wait();
+    }
+    // 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 || AllowParallelDefineClass) && (probe->instanceKlass() != NULL)) {
+        probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS);
+        placeholders()->find_and_remove(p_index, p_hash, name_h, class_loader, THREAD);
+        SystemDictionary_lock->notify_all();
+#ifdef ASSERT
+        klassOop check = find_class(d_index, d_hash, name_h, class_loader);
+        assert(check != NULL, "definer missed recording success");
+#endif
+        return(instanceKlassHandle(THREAD, probe->instanceKlass()));
     } else {
-      // Wait for defining thread to finish and return results
-      while (probe->definer() != NULL) {
-        SystemDictionary_lock->wait();
-      }
-      if (probe->instanceKlass() != NULL) {
-        probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS);
-        return(instanceKlassHandle(THREAD, probe->instanceKlass()));
-      } else {
-        // If definer had an error, try again as any new thread would
-        probe->set_definer(THREAD);
-#ifdef ASSERT
-        klassOop check = find_class(d_index, d_hash, class_name, class_loader);
-        assert(check == NULL, "definer missed recording success");
-#endif
-      }
+      // This thread will define the class (even if earlier thread tried and had an error)
+      probe->set_definer(THREAD);
     }
   }
 
@@ -1490,7 +1548,7 @@
   // definer must notify any waiting threads
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, class_name, class_loader);
+    PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, name_h, class_loader);
     assert(probe != NULL, "DEFINE_CLASS placeholder lost?");
     if (probe != NULL) {
       if (HAS_PENDING_EXCEPTION) {
@@ -1501,6 +1559,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);
       SystemDictionary_lock->notify_all();
     }
   }
@@ -1512,7 +1571,6 @@
 
   return k;
 }
-
 Handle SystemDictionary::compute_loader_lock_object(Handle class_loader, TRAPS) {
   // If class_loader is NULL we synchronize on _system_loader_lock_obj
   if (class_loader.is_null()) {
@@ -1651,6 +1709,10 @@
   // represent classes we're actively loading.
   placeholders_do(blk);
 
+  // Visit extra methods
+  if (invoke_method_table() != NULL)
+    invoke_method_table()->oops_do(blk);
+
   // Loader constraints. We must keep the symbolOop used in the name alive.
   constraints()->always_strong_classes_do(blk);
 
@@ -1686,6 +1748,10 @@
   // Adjust dictionary
   dictionary()->oops_do(f);
 
+  // Visit extra methods
+  if (invoke_method_table() != NULL)
+    invoke_method_table()->oops_do(f);
+
   // Partially loaded classes
   placeholders()->oops_do(f);
 
@@ -1758,6 +1824,8 @@
 
 void SystemDictionary::methods_do(void f(methodOop)) {
   dictionary()->methods_do(f);
+  if (invoke_method_table() != NULL)
+    invoke_method_table()->methods_do(f);
 }
 
 // ----------------------------------------------------------------------------
@@ -1790,6 +1858,7 @@
   _number_of_modifications = 0;
   _loader_constraints = new LoaderConstraintTable(_loader_constraint_size);
   _resolution_errors = new ResolutionErrorTable(_resolution_error_size);
+  // _invoke_method_table is allocated lazily in find_method_handle_invoke()
 
   // Allocate private object used as system class loader lock
   _system_loader_lock_obj = oopFactory::new_system_objArray(0, CHECK);
@@ -1851,6 +1920,9 @@
       wk_klass_name_limits[0] = s;
     }
   }
+
+  // move the starting value forward to the limit:
+  start_id = limit_id;
 }
 
 
@@ -1884,6 +1956,27 @@
   instanceKlass::cast(WK_KLASS(final_reference_klass))->set_reference_type(REF_FINAL);
   instanceKlass::cast(WK_KLASS(phantom_reference_klass))->set_reference_type(REF_PHANTOM);
 
+  WKID meth_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass);
+  WKID meth_group_end   = WK_KLASS_ENUM_NAME(WrongMethodTypeException_klass);
+  initialize_wk_klasses_until(meth_group_start, scan, CHECK);
+  if (EnableMethodHandles) {
+    initialize_wk_klasses_through(meth_group_start, scan, CHECK);
+  }
+  if (_well_known_klasses[meth_group_start] == NULL) {
+    // Skip the rest of the method handle classes, if MethodHandle is not loaded.
+    scan = WKID(meth_group_end+1);
+  }
+  WKID indy_group_start = WK_KLASS_ENUM_NAME(Linkage_klass);
+  WKID indy_group_end   = WK_KLASS_ENUM_NAME(Dynamic_klass);
+  initialize_wk_klasses_until(indy_group_start, scan, CHECK);
+  if (EnableInvokeDynamic) {
+    initialize_wk_klasses_through(indy_group_start, scan, CHECK);
+  }
+  if (_well_known_klasses[indy_group_start] == NULL) {
+    // Skip the rest of the dynamic typing classes, if Linkage is not loaded.
+    scan = WKID(indy_group_end+1);
+  }
+
   initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK);
 
   _box_klasses[T_BOOLEAN] = WK_KLASS(boolean_klass);
@@ -1902,11 +1995,11 @@
     warning("Cannot find sun/jkernel/DownloadManager");
   }
 #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());
     _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());
     _has_checkPackageAccess = (method != NULL);
@@ -1924,6 +2017,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
@@ -2134,11 +2234,56 @@
 }
 
 
+// Signature constraints ensure that callers and callees agree about
+// the meaning of type names in their signatures.  This routine is the
+// intake for constraints.  It collects them from several places:
+//
+//  * LinkResolver::resolve_method (if check_access is true) requires
+//    that the resolving class (the caller) and the defining class of
+//    the resolved method (the callee) agree on each type in the
+//    method's signature.
+//
+//  * LinkResolver::resolve_interface_method performs exactly the same
+//    checks.
+//
+//  * LinkResolver::resolve_field requires that the constant pool
+//    attempting to link to a field agree with the field's defining
+//    class about the type of the field signature.
+//
+//  * klassVtable::initialize_vtable requires that, when a class
+//    overrides a vtable entry allocated by a superclass, that the
+//    overriding method (i.e., the callee) agree with the superclass
+//    on each type in the method's signature.
+//
+//  * klassItable::initialize_itable requires that, when a class fills
+//    in its itables, for each non-abstract method installed in an
+//    itable, the method (i.e., the callee) agree with the interface
+//    on each type in the method's signature.
+//
+// All those methods have a boolean (check_access, checkconstraints)
+// which turns off the checks.  This is used from specialized contexts
+// such as bootstrapping, dumping, and debugging.
+//
+// No direct constraint is placed between the class and its
+// supertypes.  Constraints are only placed along linked relations
+// between callers and callees.  When a method overrides or implements
+// an abstract method in a supertype (superclass or interface), the
+// constraints are placed as if the supertype were the caller to the
+// overriding method.  (This works well, since callers to the
+// supertype have already established agreement between themselves and
+// the supertype.)  As a result of all this, a class can disagree with
+// its supertype about the meaning of a type name, as long as that
+// class neither calls a relevant method of the supertype, nor is
+// called (perhaps via an override) from the supertype.
+//
+//
+// SystemDictionary::check_signature_loaders(sig, l1, l2)
+//
 // Make sure all class components (including arrays) in the given
 // signature will be resolved to the same class in both loaders.
 // Returns the name of the type that failed a loader constraint check, or
 // NULL if no constraint failed. The returned C string needs cleaning up
-// with a ResourceMark in the caller
+// with a ResourceMark in the caller.  No exception except OOME is thrown.
 char* SystemDictionary::check_signature_loaders(symbolHandle signature,
                                                Handle loader1, Handle loader2,
                                                bool is_method, TRAPS)  {
@@ -2162,6 +2307,161 @@
 }
 
 
+methodOop SystemDictionary::find_method_handle_invoke(symbolHandle signature,
+                                                      Handle class_loader,
+                                                      Handle protection_domain,
+                                                      TRAPS) {
+  if (!EnableMethodHandles)  return NULL;
+  assert(class_loader.is_null() && protection_domain.is_null(),
+         "cannot load specialized versions of MethodHandle.invoke");
+  if (invoke_method_table() == NULL) {
+    // create this side table lazily
+    _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
+  }
+  unsigned int hash  = invoke_method_table()->compute_hash(signature);
+  int          index = invoke_method_table()->hash_to_index(hash);
+  SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature);
+  if (spe == NULL || spe->property_oop() == NULL) {
+    // Must create lots of stuff here, but outside of the SystemDictionary lock.
+    Handle mt = compute_method_handle_type(signature(),
+                                           class_loader, protection_domain,
+                                           CHECK_NULL);
+    KlassHandle  mh_klass = SystemDictionaryHandles::MethodHandle_klass();
+    methodHandle m = methodOopDesc::make_invoke_method(mh_klass, signature,
+                                                       mt, CHECK_NULL);
+    // Now grab the lock.  We might have to throw away the new method,
+    // if a racing thread has managed to install one at the same time.
+    {
+      MutexLocker ml(SystemDictionary_lock, Thread::current());
+      spe = invoke_method_table()->find_entry(index, hash, signature);
+      if (spe == NULL)
+        spe = invoke_method_table()->add_entry(index, hash, signature);
+      if (spe->property_oop() == NULL)
+        spe->set_property_oop(m());
+    }
+  }
+  methodOop m = (methodOop) spe->property_oop();
+  assert(m->is_method(), "");
+  return m;
+}
+
+// Ask Java code to find or construct a java.dyn.MethodType for the given
+// signature, as interpreted relative to the given class loader.
+// Because of class loader constraints, all method handle usage must be
+// consistent with this loader.
+Handle SystemDictionary::compute_method_handle_type(symbolHandle signature,
+                                                    Handle class_loader,
+                                                    Handle protection_domain,
+                                                    TRAPS) {
+  Handle empty;
+  int npts = ArgumentCount(signature()).size();
+  objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::class_klass(), npts, CHECK_(empty));
+  int arg = 0;
+  Handle rt;                            // the return type from the signature
+  for (SignatureStream ss(signature()); !ss.is_done(); ss.next()) {
+    oop mirror;
+    if (!ss.is_object()) {
+      mirror = Universe::java_mirror(ss.type());
+    } else {
+      symbolOop    name_oop = ss.as_symbol(CHECK_(empty));
+      symbolHandle name(THREAD, name_oop);
+      klassOop klass = resolve_or_fail(name,
+                                       class_loader, protection_domain,
+                                       true, CHECK_(empty));
+      mirror = Klass::cast(klass)->java_mirror();
+    }
+    if (ss.at_return_type())
+      rt = Handle(THREAD, mirror);
+    else
+      pts->obj_at_put(arg++, mirror);
+  }
+  assert(arg == npts, "");
+
+  // call MethodType java.dyn.MethodType::makeImpl(Class rt, Class[] pts, false, true)
+  bool varargs = false, trusted = true;
+  JavaCallArguments args(Handle(THREAD, rt()));
+  args.push_oop(pts());
+  args.push_int(false);
+  args.push_int(trusted);
+  JavaValue result(T_OBJECT);
+  JavaCalls::call_static(&result,
+                         SystemDictionary::MethodType_klass(),
+                         vmSymbols::makeImpl_name(), vmSymbols::makeImpl_signature(),
+                         &args, CHECK_(empty));
+  return Handle(THREAD, (oop) result.get_jobject());
+}
+
+
+// Ask Java code to find or construct a java.dyn.CallSite for the given
+// name and signature, as interpreted relative to the given class loader.
+Handle SystemDictionary::make_dynamic_call_site(KlassHandle caller,
+                                                int caller_method_idnum,
+                                                int caller_bci,
+                                                symbolHandle name,
+                                                methodHandle mh_invdyn,
+                                                TRAPS) {
+  Handle empty;
+  // call sun.dyn.CallSiteImpl::makeSite(caller, name, mtype, cmid, cbci)
+  oop name_str_oop = StringTable::intern(name(), CHECK_(empty)); // not a handle!
+  JavaCallArguments args(Handle(THREAD, caller->java_mirror()));
+  args.push_oop(name_str_oop);
+  args.push_oop(mh_invdyn->method_handle_type());
+  args.push_int(caller_method_idnum);
+  args.push_int(caller_bci);
+  JavaValue result(T_OBJECT);
+  JavaCalls::call_static(&result,
+                         SystemDictionary::CallSiteImpl_klass(),
+                         vmSymbols::makeSite_name(), vmSymbols::makeSite_signature(),
+                         &args, CHECK_(empty));
+  oop call_site_oop = (oop) result.get_jobject();
+  sun_dyn_CallSiteImpl::set_vmmethod(call_site_oop, mh_invdyn());
+  if (TraceMethodHandles) {
+    tty->print_cr("Linked invokedynamic bci=%d site="INTPTR_FORMAT":", caller_bci, call_site_oop);
+    call_site_oop->print();
+    tty->cr();
+  }
+  return call_site_oop;
+}
+
+Handle SystemDictionary::find_bootstrap_method(KlassHandle caller,
+                                               KlassHandle search_bootstrap_klass,
+                                               TRAPS) {
+  Handle empty;
+  if (!caller->oop_is_instance())  return empty;
+
+  instanceKlassHandle ik(THREAD, caller());
+
+  if (ik->bootstrap_method() != NULL) {
+    return Handle(THREAD, ik->bootstrap_method());
+  }
+
+  // call java.dyn.Linkage::findBootstrapMethod(caller, sbk)
+  JavaCallArguments args(Handle(THREAD, ik->java_mirror()));
+  if (search_bootstrap_klass.is_null())
+    args.push_oop(Handle());
+  else
+    args.push_oop(search_bootstrap_klass->java_mirror());
+  JavaValue result(T_OBJECT);
+  JavaCalls::call_static(&result,
+                         SystemDictionary::Linkage_klass(),
+                         vmSymbols::findBootstrapMethod_name(),
+                         vmSymbols::findBootstrapMethod_signature(),
+                         &args, CHECK_(empty));
+  oop boot_method_oop = (oop) result.get_jobject();
+
+  if (boot_method_oop != NULL) {
+    // probably no race conditions, but let's be careful:
+    if (Atomic::cmpxchg_ptr(boot_method_oop, ik->adr_bootstrap_method(), NULL) == NULL)
+      ik->set_bootstrap_method(boot_method_oop);
+    else
+      boot_method_oop = ik->bootstrap_method();
+  } else {
+    boot_method_oop = ik->bootstrap_method();
+  }
+
+  return Handle(THREAD, boot_method_oop);
+}
+
 // Since the identity hash code for symbols changes when the symbols are
 // moved from the regular perm gen (hash in the mark word) to the shared
 // spaces (hash is the address), the classes loaded into the dictionary
--- a/src/share/vm/classfile/systemDictionary.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/systemDictionary.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +63,7 @@
 class LoaderConstraintTable;
 class HashtableBucket;
 class ResolutionErrorTable;
+class SymbolPropertyTable;
 
 // Certain classes are preloaded, such as java.lang.Object and java.lang.String.
 // They are all "well-known", in the sense that no class loader is allowed
@@ -131,6 +132,22 @@
   template(reflect_constant_pool_klass,  sun_reflect_ConstantPool,       Opt_Only_JDK15) \
   template(reflect_unsafe_static_field_accessor_impl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \
                                                                               \
+  /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
+  template(MethodHandle_klass,           java_dyn_MethodHandle,          Opt) \
+  template(MemberName_klass,             sun_dyn_MemberName,             Opt) \
+  template(MethodHandleImpl_klass,       sun_dyn_MethodHandleImpl,       Opt) \
+  template(AdapterMethodHandle_klass,    sun_dyn_AdapterMethodHandle,    Opt) \
+  template(BoundMethodHandle_klass,      sun_dyn_BoundMethodHandle,      Opt) \
+  template(DirectMethodHandle_klass,     sun_dyn_DirectMethodHandle,     Opt) \
+  template(MethodType_klass,             java_dyn_MethodType,            Opt) \
+  template(MethodTypeForm_klass,         java_dyn_MethodTypeForm,        Opt) \
+  template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
+  template(Linkage_klass,                java_dyn_Linkage,               Opt) \
+  template(CallSite_klass,               java_dyn_CallSite,              Opt) \
+  template(CallSiteImpl_klass,           sun_dyn_CallSiteImpl,     Opt) \
+  template(Dynamic_klass,                java_dyn_Dynamic,               Opt) \
+  /* Note: MethodHandle must be first, and Dynamic last in group */           \
+                                                                              \
   template(vector_klass,                 java_util_Vector,               Pre) \
   template(hashtable_klass,              java_util_Hashtable,            Pre) \
   template(stringBuffer_klass,           java_lang_StringBuffer,         Pre) \
@@ -161,6 +178,7 @@
 class SystemDictionary : AllStatic {
   friend class VMStructs;
   friend class CompactingPermGenGen;
+  friend class SystemDictionaryHandles;
   NOT_PRODUCT(friend class instanceKlassKlass;)
 
  public:
@@ -443,6 +461,32 @@
   static char* check_signature_loaders(symbolHandle signature, Handle loader1,
                                        Handle loader2, bool is_method, TRAPS);
 
+  // JSR 292
+  // find the java.dyn.MethodHandles::invoke method for a given signature
+  static methodOop find_method_handle_invoke(symbolHandle signature,
+                                             Handle class_loader,
+                                             Handle protection_domain,
+                                             TRAPS);
+  // ask Java to compute the java.dyn.MethodType object for a given signature
+  static Handle    compute_method_handle_type(symbolHandle signature,
+                                              Handle class_loader,
+                                              Handle protection_domain,
+                                              TRAPS);
+  // ask Java to create a dynamic call site, while linking an invokedynamic op
+  static Handle    make_dynamic_call_site(KlassHandle caller,
+                                          int caller_method_idnum,
+                                          int caller_bci,
+                                          symbolHandle name,
+                                          methodHandle mh_invoke,
+                                          TRAPS);
+
+  // coordinate with Java about bootstrap methods
+  static Handle    find_bootstrap_method(KlassHandle caller,
+                                         // This argument is non-null only when a
+                                         // classfile attribute has been found:
+                                         KlassHandle search_bootstrap_klass,
+                                         TRAPS);
+
   // Utility for printing loader "name" as part of tracing constraints
   static const char* loader_name(oop loader) {
     return ((loader) == NULL ? "<bootloader>" :
@@ -459,6 +503,7 @@
   enum Constants {
     _loader_constraint_size = 107,                     // number of entries in constraint table
     _resolution_error_size  = 107,                     // number of entries in resolution error table
+    _invoke_method_size     = 139,                     // number of entries in invoke method table
     _nof_buckets            = 1009                     // number of buckets in hash table
   };
 
@@ -488,6 +533,9 @@
   // Resolution errors
   static ResolutionErrorTable*   _resolution_errors;
 
+  // Invoke methods (JSR 292)
+  static SymbolPropertyTable*    _invoke_method_table;
+
 public:
   // for VM_CounterDecay iteration support
   friend class CounterDecay;
@@ -505,6 +553,7 @@
   static PlaceholderTable*   placeholders() { return _placeholders; }
   static LoaderConstraintTable* constraints() { return _loader_constraints; }
   static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
+  static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
 
   // Basic loading operations
   static klassOop resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);
@@ -526,6 +575,7 @@
   static instanceKlassHandle load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS);
   static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
   static void check_loader_lock_contention(Handle loader_lock, TRAPS);
+  static bool is_parallelCapable(Handle class_loader);
 
   static klassOop find_shared_class(symbolHandle class_name);
 
@@ -594,3 +644,18 @@
   static bool _has_loadClassInternal;
   static bool _has_checkPackageAccess;
 };
+
+// Cf. vmSymbols vs. vmSymbolHandles
+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);
+};
--- a/src/share/vm/classfile/verifier.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/verifier.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1174,6 +1174,7 @@
             &this_uninit, return_type, cp, CHECK_VERIFY(this));
           no_control_flow = false; break;
         case Bytecodes::_invokeinterface :
+        case Bytecodes::_invokedynamic :
           verify_invoke_instructions(
             &bcs, code_length, &current_frame,
             &this_uninit, return_type, cp, CHECK_VERIFY(this));
@@ -1895,12 +1896,23 @@
   Bytecodes::Code opcode = bcs->code();
   unsigned int types = (opcode == Bytecodes::_invokeinterface
                                 ? 1 << JVM_CONSTANT_InterfaceMethodref
+                      : opcode == Bytecodes::_invokedynamic
+                                ? 1 << JVM_CONSTANT_NameAndType
                                 : 1 << JVM_CONSTANT_Methodref);
   verify_cp_type(index, cp, types, CHECK_VERIFY(this));
 
   // Get method name and signature
-  symbolHandle method_name(THREAD, cp->name_ref_at(index));
-  symbolHandle method_sig(THREAD, cp->signature_ref_at(index));
+  symbolHandle method_name;
+  symbolHandle method_sig;
+  if (opcode == Bytecodes::_invokedynamic) {
+    int name_index = cp->name_ref_index_at(index);
+    int sig_index  = cp->signature_ref_index_at(index);
+    method_name = symbolHandle(THREAD, cp->symbol_at(name_index));
+    method_sig  = symbolHandle(THREAD, cp->symbol_at(sig_index));
+  } else {
+    method_name = symbolHandle(THREAD, cp->name_ref_at(index));
+    method_sig  = symbolHandle(THREAD, cp->signature_ref_at(index));
+  }
 
   if (!SignatureVerifier::is_valid_method_signature(method_sig)) {
     class_format_error(
@@ -1910,8 +1922,17 @@
   }
 
   // Get referenced class type
-  VerificationType ref_class_type = cp_ref_index_to_type(
-    index, cp, CHECK_VERIFY(this));
+  VerificationType ref_class_type;
+  if (opcode == Bytecodes::_invokedynamic) {
+    if (!EnableInvokeDynamic) {
+      class_format_error(
+        "invokedynamic instructions not enabled on this JVM",
+        _klass->external_name());
+      return;
+    }
+  } else {
+    ref_class_type = cp_ref_index_to_type(index, cp, CHECK_VERIFY(this));
+  }
 
   // For a small signature length, we just allocate 128 bytes instead
   // of parsing the signature once to find its size.
@@ -1970,6 +1991,14 @@
     }
   }
 
+  if (opcode == Bytecodes::_invokedynamic) {
+    address bcp = bcs->bcp();
+    if (*(bcp+3) != 0 || *(bcp+4) != 0) {
+      verify_error(bci, "Third and fourth operand bytes of invokedynamic must be zero");
+      return;
+    }
+  }
+
   if (method_name->byte_at(0) == '<') {
     // Make sure <init> can only be invoked by invokespecial
     if (opcode != Bytecodes::_invokespecial ||
@@ -1994,7 +2023,8 @@
     current_frame->pop_stack(sig_types[i], CHECK_VERIFY(this));
   }
   // Check objectref on operand stack
-  if (opcode != Bytecodes::_invokestatic) {
+  if (opcode != Bytecodes::_invokestatic &&
+      opcode != Bytecodes::_invokedynamic) {
     if (method_name() == vmSymbols::object_initializer_name()) {  // <init> method
       verify_invoke_init(bcs, ref_class_type, current_frame,
         code_length, this_uninit, cp, CHECK_VERIFY(this));
--- a/src/share/vm/classfile/vmSymbols.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/classfile/vmSymbols.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +49,8 @@
   template(java_lang_Object,                          "java/lang/Object")                         \
   template(java_lang_Class,                           "java/lang/Class")                          \
   template(java_lang_String,                          "java/lang/String")                         \
+  template(java_lang_StringValue,                     "java/lang/StringValue")                    \
+  template(java_lang_StringCache,                     "java/lang/StringValue$StringCache")        \
   template(java_lang_Thread,                          "java/lang/Thread")                         \
   template(java_lang_ThreadGroup,                     "java/lang/ThreadGroup")                    \
   template(java_lang_Cloneable,                       "java/lang/Cloneable")                      \
@@ -214,7 +216,34 @@
   template(sun_reflect_UnsafeStaticFieldAccessorImpl, "sun/reflect/UnsafeStaticFieldAccessorImpl")\
   template(base_name,                                 "base")                                     \
                                                                                                   \
-  /* common method names */                                                                       \
+  /* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */                                   \
+  template(java_dyn_Dynamic,                          "java/dyn/Dynamic")                         \
+  template(java_dyn_Linkage,                          "java/dyn/Linkage")                         \
+  template(java_dyn_CallSite,                         "java/dyn/CallSite")                        \
+  template(java_dyn_MethodHandle,                     "java/dyn/MethodHandle")                    \
+  template(java_dyn_MethodType,                       "java/dyn/MethodType")                      \
+  template(java_dyn_WrongMethodTypeException,         "java/dyn/WrongMethodTypeException")        \
+  template(java_dyn_MethodType_signature,             "Ljava/dyn/MethodType;")                    \
+  template(java_dyn_MethodHandle_signature,           "Ljava/dyn/MethodHandle;")                  \
+  /* internal classes known only to the JVM: */                                                   \
+  template(java_dyn_MethodTypeForm,                   "java/dyn/MethodTypeForm")                  \
+  template(java_dyn_MethodTypeForm_signature,         "Ljava/dyn/MethodTypeForm;")                \
+  template(sun_dyn_MemberName,                        "sun/dyn/MemberName")                       \
+  template(sun_dyn_MethodHandleImpl,                  "sun/dyn/MethodHandleImpl")                 \
+  template(sun_dyn_AdapterMethodHandle,               "sun/dyn/AdapterMethodHandle")              \
+  template(sun_dyn_BoundMethodHandle,                 "sun/dyn/BoundMethodHandle")                \
+  template(sun_dyn_DirectMethodHandle,                "sun/dyn/DirectMethodHandle")               \
+  template(sun_dyn_CallSiteImpl,                      "sun/dyn/CallSiteImpl")                     \
+  template(makeImpl_name,                             "makeImpl") /*MethodType::makeImpl*/        \
+  template(makeImpl_signature,    "(Ljava/lang/Class;[Ljava/lang/Class;ZZ)Ljava/dyn/MethodType;") \
+  template(makeSite_name,                             "makeSite") /*CallSiteImpl::makeImpl*/       \
+  template(makeSite_signature,    "(Ljava/lang/Class;Ljava/lang/String;Ljava/dyn/MethodType;II)Ljava/dyn/CallSite;") \
+  template(findBootstrapMethod_name,                  "findBootstrapMethod")                      \
+  template(findBootstrapMethod_signature, "(Ljava/lang/Class;Ljava/lang/Class;)Ljava/dyn/MethodHandle;") \
+  NOT_LP64(  do_alias(machine_word_signature,         int_signature)  )                           \
+  LP64_ONLY( do_alias(machine_word_signature,         long_signature) )                           \
+                                                                                                  \
+  /* common method and field names */                                                             \
   template(object_initializer_name,                   "<init>")                                   \
   template(class_initializer_name,                    "<clinit>")                                 \
   template(println_name,                              "println")                                  \
@@ -284,6 +313,28 @@
   template(value_name,                                "value")                                    \
   template(frontCacheEnabled_name,                    "frontCacheEnabled")                        \
   template(stringCacheEnabled_name,                   "stringCacheEnabled")                       \
+  template(numberOfLeadingZeros_name,                 "numberOfLeadingZeros")                     \
+  template(numberOfTrailingZeros_name,                "numberOfTrailingZeros")                    \
+  template(bitCount_name,                             "bitCount")                                 \
+  template(profile_name,                              "profile")                                  \
+  template(equals_name,                               "equals")                                   \
+  template(target_name,                               "target")                                   \
+  template(toString_name,                             "toString")                                 \
+  template(values_name,                               "values")                                   \
+  template(receiver_name,                             "receiver")                                 \
+  template(vmmethod_name,                             "vmmethod")                                 \
+  template(vmtarget_name,                             "vmtarget")                                 \
+  template(vmentry_name,                              "vmentry")                                  \
+  template(vmslots_name,                              "vmslots")                                  \
+  template(vmindex_name,                              "vmindex")                                  \
+  template(vmargslot_name,                            "vmargslot")                                \
+  template(flags_name,                                "flags")                                    \
+  template(argument_name,                             "argument")                                 \
+  template(conversion_name,                           "conversion")                               \
+  template(rtype_name,                                "rtype")                                    \
+  template(ptypes_name,                               "ptypes")                                   \
+  template(form_name,                                 "form")                                     \
+  template(erasedType_name,                           "erasedType")                               \
                                                                                                   \
   /* non-intrinsic name/signature pairs: */                                                       \
   template(register_method_name,                      "register")                                 \
@@ -304,6 +355,7 @@
   template(double_long_signature,                     "(D)J")                                     \
   template(double_double_signature,                   "(D)D")                                     \
   template(int_float_signature,                       "(I)F")                                     \
+  template(long_int_signature,                        "(J)I")                                     \
   template(long_long_signature,                       "(J)J")                                     \
   template(long_double_signature,                     "(J)D")                                     \
   template(byte_signature,                            "B")                                        \
@@ -347,6 +399,7 @@
   template(void_classloader_signature,                "()Ljava/lang/ClassLoader;")                                \
   template(void_object_signature,                     "()Ljava/lang/Object;")                                     \
   template(void_class_signature,                      "()Ljava/lang/Class;")                                      \
+  template(void_string_signature,                     "()Ljava/lang/String;")                                      \
   template(object_array_object_object_signature,      "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\
   template(exception_void_signature,                  "(Ljava/lang/Exception;)V")                                 \
   template(protectiondomain_signature,                "[Ljava/security/ProtectionDomain;")                        \
@@ -362,6 +415,7 @@
   template(class_signature,                           "Ljava/lang/Class;")                                        \
   template(string_signature,                          "Ljava/lang/String;")                                       \
   template(reference_signature,                       "Ljava/lang/ref/Reference;")                                \
+  template(concurrenthashmap_signature,               "Ljava/util/concurrent/ConcurrentHashMap;")                 \
   /* signature symbols needed by intrinsics */                                                                    \
   VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, template, VM_ALIAS_IGNORE)            \
                                                                                                                   \
@@ -374,6 +428,9 @@
   /* used by ClassFormatError when class name is not known yet */                                                 \
   template(unknown_class_name,                        "<Unknown>")                                                \
                                                                                                                   \
+  /* used to identify class loaders handling parallel class loading */                                            \
+  template(parallelCapable_name,                      "parallelLockMap")                                          \
+                                                                                                                  \
   /* JVM monitoring and management support */                                                                     \
   template(java_lang_StackTraceElement_array,          "[Ljava/lang/StackTraceElement;")                          \
   template(java_lang_management_ThreadState,           "java/lang/management/ThreadState")                        \
@@ -456,9 +513,6 @@
 //
 // for Emacs: (let ((c-backslash-column 120) (c-backslash-max-column 120)) (c-backslash-region (point) (point-max) nil t))
 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias)                                       \
-  do_intrinsic(_Object_init,              java_lang_Object, object_initializer_name, void_method_signature,      F_R)   \
-  /*    (symbol object_initializer_name defined above) */                                                               \
-                                                                                                                        \
   do_intrinsic(_hashCode,                 java_lang_Object,       hashCode_name, void_int_signature,             F_R)   \
    do_name(     hashCode_name,                                   "hashCode")                                            \
   do_intrinsic(_getClass,                 java_lang_Object,       getClass_name, void_class_signature,           F_R)   \
@@ -503,6 +557,16 @@
    do_name(     doubleToLongBits_name,                           "doubleToLongBits")                                    \
   do_intrinsic(_longBitsToDouble,         java_lang_Double,       longBitsToDouble_name,    long_double_signature, F_S) \
    do_name(     longBitsToDouble_name,                           "longBitsToDouble")                                    \
+                                                                                                                        \
+  do_intrinsic(_numberOfLeadingZeros_i,   java_lang_Integer,      numberOfLeadingZeros_name,int_int_signature,   F_S)   \
+  do_intrinsic(_numberOfLeadingZeros_l,   java_lang_Long,         numberOfLeadingZeros_name,long_int_signature,  F_S)   \
+                                                                                                                        \
+  do_intrinsic(_numberOfTrailingZeros_i,  java_lang_Integer,      numberOfTrailingZeros_name,int_int_signature,  F_S)   \
+  do_intrinsic(_numberOfTrailingZeros_l,  java_lang_Long,         numberOfTrailingZeros_name,long_int_signature, F_S)   \
+                                                                                                                        \
+  do_intrinsic(_bitCount_i,               java_lang_Integer,      bitCount_name,            int_int_signature,   F_S)   \
+  do_intrinsic(_bitCount_l,               java_lang_Long,         bitCount_name,            long_int_signature,  F_S)   \
+                                                                                                                        \
   do_intrinsic(_reverseBytes_i,           java_lang_Integer,      reverseBytes_name,        int_int_signature,   F_S)   \
    do_name(     reverseBytes_name,                               "reverseBytes")                                        \
   do_intrinsic(_reverseBytes_l,           java_lang_Long,         reverseBytes_name,        long_long_signature, F_S)   \
@@ -566,16 +630,13 @@
    do_signature(copyOfRange_signature,        "([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;")            \
                                                                                                                         \
   do_intrinsic(_equalsC,                  java_util_Arrays,       equals_name,    equalsC_signature,             F_S)   \
-   do_name(     equals_name,                                     "equals")                                              \
    do_signature(equalsC_signature,                               "([C[C)Z")                                             \
                                                                                                                         \
-  do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
-  /*   (symbols invoke_name and invoke_signature defined above) */                                                      \
-                                                                                                                        \
   do_intrinsic(_compareTo,                java_lang_String,       compareTo_name, string_int_signature,          F_R)   \
    do_name(     compareTo_name,                                  "compareTo")                                           \
   do_intrinsic(_indexOf,                  java_lang_String,       indexOf_name, string_int_signature,            F_R)   \
    do_name(     indexOf_name,                                    "indexOf")                                             \
+  do_intrinsic(_equals,                   java_lang_String,       equals_name, object_boolean_signature,         F_R)   \
                                                                                                                         \
   do_class(java_nio_Buffer,               "java/nio/Buffer")                                                            \
   do_intrinsic(_checkIndex,               java_nio_Buffer,        checkIndex_name, int_int_signature,            F_R)   \
@@ -589,8 +650,6 @@
    do_name(     attemptUpdate_name,                                 "attemptUpdate")                                    \
    do_signature(attemptUpdate_signature,                            "(JJ)Z")                                            \
                                                                                                                         \
-  do_intrinsic(_fillInStackTrace,         java_lang_Throwable, fillInStackTrace_name, void_throwable_signature,  F_RNY) \
-                                                                                                                        \
   /* support for sun.misc.Unsafe */                                                                                     \
   do_class(sun_misc_Unsafe,               "sun/misc/Unsafe")                                                            \
                                                                                                                         \
@@ -692,7 +751,6 @@
   do_signature(putShort_raw_signature,    "(JS)V")                                                                      \
   do_signature(getChar_raw_signature,     "(J)C")                                                                       \
   do_signature(putChar_raw_signature,     "(JC)V")                                                                      \
-  do_signature(getInt_raw_signature,      "(J)I")                                                                       \
   do_signature(putInt_raw_signature,      "(JI)V")                                                                      \
       do_alias(getLong_raw_signature,    /*(J)J*/ long_long_signature)                                                  \
       do_alias(putLong_raw_signature,    /*(JJ)V*/ long_long_void_signature)                                            \
@@ -709,7 +767,7 @@
   do_intrinsic(_getByte_raw,              sun_misc_Unsafe,        getByte_name, getByte_raw_signature,           F_RN)  \
   do_intrinsic(_getShort_raw,             sun_misc_Unsafe,        getShort_name, getShort_raw_signature,         F_RN)  \
   do_intrinsic(_getChar_raw,              sun_misc_Unsafe,        getChar_name, getChar_raw_signature,           F_RN)  \
-  do_intrinsic(_getInt_raw,               sun_misc_Unsafe,        getInt_name, getInt_raw_signature,             F_RN)  \
+  do_intrinsic(_getInt_raw,               sun_misc_Unsafe,        getInt_name, long_int_signature,               F_RN)  \
   do_intrinsic(_getLong_raw,              sun_misc_Unsafe,        getLong_name, getLong_raw_signature,           F_RN)  \
   do_intrinsic(_getFloat_raw,             sun_misc_Unsafe,        getFloat_name, getFloat_raw_signature,         F_RN)  \
   do_intrinsic(_getDouble_raw,            sun_misc_Unsafe,        getDouble_name, getDouble_raw_signature,       F_RN)  \
@@ -753,10 +811,22 @@
    do_name(     prefetchReadStatic_name,                         "prefetchReadStatic")                                  \
   do_intrinsic(_prefetchWriteStatic,      sun_misc_Unsafe,        prefetchWriteStatic_name, prefetch_signature,  F_SN)  \
    do_name(     prefetchWriteStatic_name,                        "prefetchWriteStatic")                                 \
+    /*== LAST_COMPILER_INLINE*/                                                                                         \
+    /*the compiler does have special inlining code for these; bytecode inline is just fine */                           \
+                                                                                                                        \
+  do_intrinsic(_fillInStackTrace,         java_lang_Throwable, fillInStackTrace_name, void_throwable_signature,  F_RNY) \
+                                                                                                                        \
+  do_intrinsic(_Object_init,              java_lang_Object, object_initializer_name, void_method_signature,      F_R)   \
+  /*    (symbol object_initializer_name defined above) */                                                               \
+                                                                                                                        \
+  do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
+  /*   (symbols invoke_name and invoke_signature defined above) */                                                      \
+                                                                                                                        \
     /*end*/
 
 
 
+
 // Class vmSymbols
 
 class vmSymbols: AllStatic {
@@ -869,6 +939,7 @@
     #undef VM_INTRINSIC_ENUM
 
     ID_LIMIT,
+    LAST_COMPILER_INLINE = _prefetchWriteStatic,
     FIRST_ID = _none + 1
   };
 
@@ -906,4 +977,7 @@
   static Flags              flags_for(ID id);
 
   static const char* short_name_as_C_string(ID id, char* buf, int size);
+
+  // Access to intrinsic methods:
+  static methodOop method_for(ID id);
 };
--- a/src/share/vm/code/nmethod.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/code/nmethod.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -380,7 +380,7 @@
 void nmethod::add_handler_for_exception_and_pc(Handle exception, address pc, address handler) {
   // There are potential race conditions during exception cache updates, so we
   // must own the ExceptionCache_lock before doing ANY modifications. Because
-  // we dont lock during reads, it is possible to have several threads attempt
+  // we don't lock during reads, it is possible to have several threads attempt
   // to update the cache with the same data. We need to check for already inserted
   // copies of the current data before adding it.
 
--- a/src/share/vm/code/nmethod.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/code/nmethod.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -167,7 +167,7 @@
   nmFlags flags;           // various flags to keep track of nmethod state
   bool _markedForDeoptimization;       // Used for stack deoptimization
   enum { alive        = 0,
-         not_entrant  = 1, // uncommon trap has happend but activations may still exist
+         not_entrant  = 1, // uncommon trap has happened but activations may still exist
          zombie       = 2,
          unloaded     = 3 };
 
--- a/src/share/vm/code/vtableStubs.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/code/vtableStubs.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -107,13 +107,11 @@
       s = create_itable_stub(vtable_index);
     }
     enter(is_vtable_stub, vtable_index, s);
-#ifndef PRODUCT
     if (PrintAdapterHandlers) {
       tty->print_cr("Decoding VtableStub %s[%d]@%d",
                     is_vtable_stub? "vtbl": "itbl", vtable_index, VtableStub::receiver_location());
       Disassembler::decode(s->code_begin(), s->code_end());
     }
-#endif
   }
   return s->entry_point();
 }
--- a/src/share/vm/compiler/compileBroker.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/compiler/compileBroker.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1530,6 +1530,12 @@
     assert(thread->env() == &ci_env, "set by ci_env");
     // The thread-env() field is cleared in ~CompileTaskWrapper.
 
+    // Cache Jvmti state
+    ci_env.cache_jvmti_state();
+
+    // Cache DTrace flags
+    ci_env.cache_dtrace_flags();
+
     ciMethod* target = ci_env.get_method_from_handle(target_handle);
 
     TraceTime t1("compilation", &time);
--- a/src/share/vm/compiler/oopMap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/compiler/oopMap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -379,7 +379,15 @@
         if ( loc != NULL ) {
           oop *base_loc    = fr->oopmapreg_to_location(omv.content_reg(), reg_map);
           oop *derived_loc = loc;
-          derived_oop_fn(base_loc, derived_loc);
+          oop val = *base_loc;
+          if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
+            // Ignore NULL oops and decoded NULL narrow oops which
+            // equal to Universe::narrow_oop_base when a narrow oop
+            // implicit null check is used in compiled code.
+            // The narrow_oop_base could be NULL or be the address
+            // of the page below heap depending on compressed oops mode.
+          } else
+            derived_oop_fn(base_loc, derived_loc);
         }
         oms.next();
       }  while (!oms.is_done());
@@ -394,6 +402,15 @@
       oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map);
       if ( loc != NULL ) {
         if ( omv.type() == OopMapValue::oop_value ) {
+          oop val = *loc;
+          if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
+            // Ignore NULL oops and decoded NULL narrow oops which
+            // equal to Universe::narrow_oop_base when a narrow oop
+            // implicit null check is used in compiled code.
+            // The narrow_oop_base could be NULL or be the address
+            // of the page below heap depending on compressed oops mode.
+            continue;
+          }
 #ifdef ASSERT
           if ((((uintptr_t)loc & (sizeof(*loc)-1)) != 0) ||
              !Universe::heap()->is_in_or_null(*loc)) {
@@ -410,6 +427,8 @@
 #endif // ASSERT
           oop_fn->do_oop(loc);
         } else if ( omv.type() == OopMapValue::value_value ) {
+          assert((*loc) == (oop)NULL || !Universe::is_narrow_oop_base(*loc),
+                 "found invalid value pointer");
           value_fn->do_oop(loc);
         } else if ( omv.type() == OopMapValue::narrowoop_value ) {
           narrowOop *nl = (narrowOop*)loc;
--- a/src/share/vm/compiler/oopMap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/compiler/oopMap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -233,6 +233,10 @@
   int heap_size() const;
   void copy_to(address addr);
 
+  // Methods oops_do() and all_do() filter out NULL oops and
+  // oop == Universe::narrow_oop_base() before passing oops
+  // to closures.
+
   // Iterates through frame for a compiled method
   static void oops_do            (const frame* fr,
                                   const RegisterMap* reg_map, OopClosure* f);
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -393,7 +393,7 @@
    // Restarts the concurrent phases timer.
    void concurrent_phases_resume();
 
-   // Time begining and end of the marking phase for
+   // Time beginning and end of the marking phase for
    // a synchronous MS collection.  A MS collection
    // that finishes in the foreground can have started
    // in the background.  These methods capture the
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -69,7 +69,7 @@
   // end of the sweep of the tenured generation.
   PerfVariable* _avg_cms_free_counter;
   // Average of the free space in the tenured generation at the
-  // start of the sweep of the tenured genertion.
+  // start of the sweep of the tenured generation.
   PerfVariable* _avg_cms_free_at_sweep_counter;
   // Average of the free space in the tenured generation at the
   // after any resizing of the tenured generation at the end
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -706,6 +706,30 @@
   }
 }
 
+// Apply the given closure to each live object in the space
+//   The usage of CompactibleFreeListSpace
+// by the ConcurrentMarkSweepGeneration for concurrent GC's allows
+// objects in the space with references to objects that are no longer
+// valid.  For example, an object may reference another object
+// that has already been sweep up (collected).  This method uses
+// obj_is_alive() to determine whether it is safe to apply the closure to
+// an object.  See obj_is_alive() for details on how liveness of an
+// object is decided.
+
+void CompactibleFreeListSpace::safe_object_iterate(ObjectClosure* blk) {
+  assert_lock_strong(freelistLock());
+  NOT_PRODUCT(verify_objects_initialized());
+  HeapWord *cur, *limit;
+  size_t curSize;
+  for (cur = bottom(), limit = end(); cur < limit;
+       cur += curSize) {
+    curSize = block_size(cur);
+    if (block_is_obj(cur) && obj_is_alive(cur)) {
+      blk->do_object(oop(cur));
+    }
+  }
+}
+
 void CompactibleFreeListSpace::object_iterate_mem(MemRegion mr,
                                                   UpwardsObjectClosure* cl) {
   assert_locked();
@@ -861,7 +885,9 @@
     } else {
       // must read from what 'p' points to in each loop.
       klassOop k = ((volatile oopDesc*)p)->klass_or_null();
-      if (k != NULL && ((oopDesc*)p)->is_parsable()) {
+      if (k != NULL &&
+          ((oopDesc*)p)->is_parsable() &&
+          ((oopDesc*)p)->is_conc_safe()) {
         assert(k->is_oop(), "Should really be klass oop.");
         oop o = (oop)p;
         assert(o->is_oop(), "Should be an oop");
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -481,6 +481,15 @@
   void oop_iterate(OopClosure* cl);
 
   void object_iterate(ObjectClosure* blk);
+  // Apply the closure to each object in the space whose references
+  // point to objects in the heap.  The usage of CompactibleFreeListSpace
+  // by the ConcurrentMarkSweepGeneration for concurrent GC's allows
+  // objects in the space with references to objects that are no longer
+  // valid.  For example, an object may reference another object
+  // that has already been sweep up (collected).  This method uses
+  // obj_is_alive() to determine whether it is safe to iterate of
+  // an object.
+  void safe_object_iterate(ObjectClosure* blk);
   void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl);
 
   // Requires that "mr" be entirely within the space.
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -555,6 +555,7 @@
   _collector_policy(cp),
   _should_unload_classes(false),
   _concurrent_cycles_since_last_unload(0),
+  _roots_scanning_options(0),
   _sweep_estimate(CMS_SweepWeight, CMS_SweepPadding)
 {
   if (ExplicitGCInvokesConcurrentAndUnloadsClasses) {
@@ -3018,6 +3019,16 @@
 }
 
 void
+ConcurrentMarkSweepGeneration::safe_object_iterate(ObjectClosure* cl) {
+  if (freelistLock()->owned_by_self()) {
+    Generation::safe_object_iterate(cl);
+  } else {
+    MutexLockerEx x(freelistLock(), Mutex::_no_safepoint_check_flag);
+    Generation::safe_object_iterate(cl);
+  }
+}
+
+void
 ConcurrentMarkSweepGeneration::pre_adjust_pointers() {
 }
 
@@ -3837,7 +3848,7 @@
   MutexLockerEx ml(ovflw_stk->par_lock(),
                    Mutex::_no_safepoint_check_flag);
   // Grab up to 1/4 the size of the work queue
-  size_t num = MIN2((size_t)work_q->max_elems()/4,
+  size_t num = MIN2((size_t)(work_q->max_elems() - work_q->size())/4,
                     (size_t)ParGCDesiredObjsFromOverflowList);
   num = MIN2(num, ovflw_stk->length());
   for (int i = (int) num; i > 0; i--) {
@@ -4168,7 +4179,7 @@
     // and is deferred for now; see CR# TBF. 07252005YSR. XXX
     assert(!CMSAbortSemantics || tsk.aborted(), "Inconsistency");
     // If _restart_addr is non-NULL, a marking stack overflow
-    // occured; we need to do a fresh marking iteration from the
+    // occurred; we need to do a fresh marking iteration from the
     // indicated restart address.
     if (_foregroundGCIsActive && asynch) {
       // We may be running into repeated stack overflows, having
@@ -4211,7 +4222,7 @@
   // should be incremental with periodic yields.
   _markBitMap.iterate(&markFromRootsClosure);
   // If _restart_addr is non-NULL, a marking stack overflow
-  // occured; we need to do a fresh iteration from the
+  // occurred; we need to do a fresh iteration from the
   // indicated restart address.
   while (_restart_addr != NULL) {
     if (_foregroundGCIsActive && asynch) {
@@ -5194,13 +5205,12 @@
   NOT_PRODUCT(int num_steals = 0;)
   oop obj_to_scan;
   CMSBitMap* bm = &(_collector->_markBitMap);
-  size_t num_from_overflow_list =
-           MIN2((size_t)work_q->max_elems()/4,
-                (size_t)ParGCDesiredObjsFromOverflowList);
 
   while (true) {
     // Completely finish any left over work from (an) earlier round(s)
     cl->trim_queue(0);
+    size_t num_from_overflow_list = MIN2((size_t)(work_q->max_elems() - work_q->size())/4,
+                                         (size_t)ParGCDesiredObjsFromOverflowList);
     // Now check if there's any work in the overflow list
     if (_collector->par_take_from_overflow_list(num_from_overflow_list,
                                                 work_q)) {
@@ -5612,13 +5622,12 @@
   OopTaskQueue* work_q = work_queue(i);
   NOT_PRODUCT(int num_steals = 0;)
   oop obj_to_scan;
-  size_t num_from_overflow_list =
-           MIN2((size_t)work_q->max_elems()/4,
-                (size_t)ParGCDesiredObjsFromOverflowList);
 
   while (true) {
     // Completely finish any left over work from (an) earlier round(s)
     drain->trim_queue(0);
+    size_t num_from_overflow_list = MIN2((size_t)(work_q->max_elems() - work_q->size())/4,
+                                         (size_t)ParGCDesiredObjsFromOverflowList);
     // Now check if there's any work in the overflow list
     if (_collector->par_take_from_overflow_list(num_from_overflow_list,
                                                 work_q)) {
@@ -6623,7 +6632,11 @@
   if (_bitMap->isMarked(addr)) {
     // it's marked; is it potentially uninitialized?
     if (p->klass_or_null() != NULL) {
-      if (CMSPermGenPrecleaningEnabled && !p->is_parsable()) {
+      // 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");
@@ -7001,7 +7014,6 @@
       _mut->clear_range(mr);
     }
   DEBUG_ONLY(})
-
   // Note: the finger doesn't advance while we drain
   // the stack below.
   PushOrMarkClosure pushOrMarkClosure(_collector,
@@ -8062,9 +8074,13 @@
     #ifdef DEBUG
       if (oop(addr)->klass_or_null() != NULL &&
           (   !_collector->should_unload_classes()
-           || oop(addr)->is_parsable())) {
+           || (oop(addr)->is_parsable()) &&
+               oop(addr)->is_conc_safe())) {
         // 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");
@@ -8077,6 +8093,13 @@
            (!_collector->should_unload_classes()
             || oop(addr)->is_parsable()),
            "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
@@ -8484,7 +8507,7 @@
   size_t i = num;
   oop  cur = _overflow_list;
   const markOop proto = markOopDesc::prototype();
-  NOT_PRODUCT(size_t n = 0;)
+  NOT_PRODUCT(ssize_t n = 0;)
   for (oop next; i > 0 && cur != NULL; cur = next, i--) {
     next = oop(cur->mark());
     cur->set_mark(proto);   // until proven otherwise
@@ -8501,45 +8524,131 @@
   return !stack->isEmpty();
 }
 
-// Multi-threaded; use CAS to break off a prefix
+#define BUSY  (oop(0x1aff1aff))
+// (MT-safe) Get a prefix of at most "num" from the list.
+// The overflow list is chained through the mark word of
+// each object in the list. We fetch the entire list,
+// break off a prefix of the right size and return the
+// remainder. If other threads try to take objects from
+// the overflow list at that time, they will wait for
+// some time to see if data becomes available. If (and
+// only if) another thread places one or more object(s)
+// on the global list before we have returned the suffix
+// to the global list, we will walk down our local list
+// to find its end and append the global list to
+// our suffix before returning it. This suffix walk can
+// prove to be expensive (quadratic in the amount of traffic)
+// when there are many objects in the overflow list and
+// there is much producer-consumer contention on the list.
+// *NOTE*: The overflow list manipulation code here and
+// in ParNewGeneration:: are very similar in shape,
+// except that in the ParNew case we use the old (from/eden)
+// copy of the object to thread the list via its klass word.
+// Because of the common code, if you make any changes in
+// the code below, please check the ParNew version to see if
+// similar changes might be needed.
+// CR 6797058 has been filed to consolidate the common code.
 bool CMSCollector::par_take_from_overflow_list(size_t num,
                                                OopTaskQueue* work_q) {
-  assert(work_q->size() == 0, "That's the current policy");
+  assert(work_q->size() == 0, "First empty local work queue");
   assert(num < work_q->max_elems(), "Can't bite more than we can chew");
   if (_overflow_list == NULL) {
     return false;
   }
   // Grab the entire list; we'll put back a suffix
-  oop prefix = (oop)Atomic::xchg_ptr(NULL, &_overflow_list);
-  if (prefix == NULL) {  // someone grabbed it before we did ...
-    // ... we could spin for a short while, but for now we don't
-    return false;
-  }
+  oop prefix = (oop)Atomic::xchg_ptr(BUSY, &_overflow_list);
+  Thread* tid = Thread::current();
+  size_t CMSOverflowSpinCount = (size_t)ParallelGCThreads;
+  size_t sleep_time_millis = MAX2((size_t)1, num/100);
+  // If the list is busy, we spin for a short while,
+  // sleeping between attempts to get the list.
+  for (size_t spin = 0; prefix == BUSY && spin < CMSOverflowSpinCount; spin++) {
+    os::sleep(tid, sleep_time_millis, false);
+    if (_overflow_list == NULL) {
+      // Nothing left to take
+      return false;
+    } else if (_overflow_list != BUSY) {
+      // Try and grab the prefix
+      prefix = (oop)Atomic::xchg_ptr(BUSY, &_overflow_list);
+    }
+  }
+  // If the list was found to be empty, or we spun long
+  // enough, we give up and return empty-handed. If we leave
+  // the list in the BUSY state below, it must be the case that
+  // some other thread holds the overflow list and will set it
+  // to a non-BUSY state in the future.
+  if (prefix == NULL || prefix == BUSY) {
+     // Nothing to take or waited long enough
+     if (prefix == NULL) {
+       // Write back the NULL in case we overwrote it with BUSY above
+       // and it is still the same value.
+       (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY);
+     }
+     return false;
+  }
+  assert(prefix != NULL && prefix != BUSY, "Error");
   size_t i = num;
   oop cur = prefix;
+  // Walk down the first "num" objects, unless we reach the end.
   for (; i > 1 && cur->mark() != NULL; cur = oop(cur->mark()), i--);
-  if (cur->mark() != NULL) {
+  if (cur->mark() == NULL) {
+    // We have "num" or fewer elements in the list, so there
+    // is nothing to return to the global list.
+    // Write back the NULL in lieu of the BUSY we wrote
+    // above, if it is still the same value.
+    if (_overflow_list == BUSY) {
+      (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY);
+    }
+  } else {
+    // Chop off the suffix and rerturn it to the global list.
+    assert(cur->mark() != BUSY, "Error");
     oop suffix_head = cur->mark(); // suffix will be put back on global list
     cur->set_mark(NULL);           // break off suffix
-    // Find tail of suffix so we can prepend suffix to global list
-    for (cur = suffix_head; cur->mark() != NULL; cur = (oop)(cur->mark()));
-    oop suffix_tail = cur;
-    assert(suffix_tail != NULL && suffix_tail->mark() == NULL,
-           "Tautology");
+    // 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
+    // able to place back the suffix without incurring the cost
+    // of a walk down the list.
     oop observed_overflow_list = _overflow_list;
-    do {
-      cur = observed_overflow_list;
-      suffix_tail->set_mark(markOop(cur));
+    oop cur_overflow_list = observed_overflow_list;
+    bool attached = false;
+    while (observed_overflow_list == BUSY || observed_overflow_list == NULL) {
       observed_overflow_list =
-        (oop) Atomic::cmpxchg_ptr(suffix_head, &_overflow_list, cur);
-    } while (cur != observed_overflow_list);
+        (oop) Atomic::cmpxchg_ptr(suffix_head, &_overflow_list, cur_overflow_list);
+      if (cur_overflow_list == observed_overflow_list) {
+        attached = true;
+        break;
+      } else cur_overflow_list = observed_overflow_list;
+    }
+    if (!attached) {
+      // Too bad, someone else sneaked in (at least) an element; we'll need
+      // to do a splice. Find tail of suffix so we can prepend suffix to global
+      // list.
+      for (cur = suffix_head; cur->mark() != NULL; cur = (oop)(cur->mark()));
+      oop suffix_tail = cur;
+      assert(suffix_tail != NULL && suffix_tail->mark() == NULL,
+             "Tautology");
+      observed_overflow_list = _overflow_list;
+      do {
+        cur_overflow_list = observed_overflow_list;
+        if (cur_overflow_list != BUSY) {
+          // Do the splice ...
+          suffix_tail->set_mark(markOop(cur_overflow_list));
+        } else { // cur_overflow_list == BUSY
+          suffix_tail->set_mark(NULL);
+        }
+        // ... and try to place spliced list back on overflow_list ...
+        observed_overflow_list =
+          (oop) Atomic::cmpxchg_ptr(suffix_head, &_overflow_list, cur_overflow_list);
+      } while (cur_overflow_list != observed_overflow_list);
+      // ... until we have succeeded in doing so.
+    }
   }
 
   // Push the prefix elements on work_q
   assert(prefix != NULL, "control point invariant");
   const markOop proto = markOopDesc::prototype();
   oop next;
-  NOT_PRODUCT(size_t n = 0;)
+  NOT_PRODUCT(ssize_t n = 0;)
   for (cur = prefix; cur != NULL; cur = next) {
     next = oop(cur->mark());
     cur->set_mark(proto);   // until proven otherwise
@@ -8573,11 +8682,16 @@
   oop cur_overflow_list;
   do {
     cur_overflow_list = observed_overflow_list;
-    p->set_mark(markOop(cur_overflow_list));
+    if (cur_overflow_list != BUSY) {
+      p->set_mark(markOop(cur_overflow_list));
+    } else {
+      p->set_mark(NULL);
+    }
     observed_overflow_list =
       (oop) Atomic::cmpxchg_ptr(p, &_overflow_list, cur_overflow_list);
   } while (cur_overflow_list != observed_overflow_list);
 }
+#undef BUSY
 
 // Single threaded
 // General Note on GrowableArray: pushes may silently fail
@@ -8586,7 +8700,7 @@
 // a lot of code in the JVM. The prudent thing for GrowableArray
 // to do (for now) is to exit with an error. However, that may
 // be too draconian in some cases because the caller may be
-// able to recover without much harm. For suych cases, we
+// able to recover without much harm. For such cases, we
 // should probably introduce a "soft_push" method which returns
 // an indication of success or failure with the assumption that
 // the caller may be able to recover from a failure; code in
@@ -8594,8 +8708,6 @@
 // failures where possible, thus, incrementally hardening the VM
 // in such low resource situations.
 void CMSCollector::preserve_mark_work(oop p, markOop m) {
-  int PreserveMarkStackSize = 128;
-
   if (_preserved_oop_stack == NULL) {
     assert(_preserved_mark_stack == NULL,
            "bijection with preserved_oop_stack");
@@ -8908,7 +9020,7 @@
 // Transfer some number of overflown objects to usual marking
 // stack. Return true if some objects were transferred.
 bool MarkRefsIntoAndScanClosure::take_from_overflow_list() {
-  size_t num = MIN2((size_t)_mark_stack->capacity()/4,
+  size_t num = MIN2((size_t)(_mark_stack->capacity() - _mark_stack->length())/4,
                     (size_t)ParGCDesiredObjsFromOverflowList);
 
   bool res = _collector->take_from_overflow_list(num, _mark_stack);
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -545,6 +545,11 @@
   bool unloaded_classes_last_cycle() const {
     return concurrent_cycles_since_last_unload() == 0;
   }
+  // Root scanning options for perm gen
+  int _roots_scanning_options;
+  int roots_scanning_options() const      { return _roots_scanning_options; }
+  void add_root_scanning_option(int o)    { _roots_scanning_options |= o;   }
+  void remove_root_scanning_option(int o) { _roots_scanning_options &= ~o;  }
 
   // Verification support
   CMSBitMap     _verification_mark_bm;
@@ -595,7 +600,7 @@
   size_t        _ser_kac_preclean_ovflw;
   size_t        _ser_kac_ovflw;
   size_t        _par_kac_ovflw;
-  NOT_PRODUCT(size_t _num_par_pushes;)
+  NOT_PRODUCT(ssize_t _num_par_pushes;)
 
   // ("Weak") Reference processing support
   ReferenceProcessor*            _ref_processor;
@@ -719,11 +724,6 @@
   NOT_PRODUCT(bool simulate_overflow();)       // sequential
   NOT_PRODUCT(bool par_simulate_overflow();)   // MT version
 
-  int _roots_scanning_options;
-  int roots_scanning_options() const      { return _roots_scanning_options; }
-  void add_root_scanning_option(int o)    { _roots_scanning_options |= o;   }
-  void remove_root_scanning_option(int o) { _roots_scanning_options &= ~o;  }
-
   // CMS work methods
   void checkpointRootsInitialWork(bool asynch); // initial checkpoint work
 
@@ -1212,6 +1212,7 @@
   // More iteration support
   virtual void oop_iterate(MemRegion mr, OopClosure* cl);
   virtual void oop_iterate(OopClosure* cl);
+  virtual void safe_object_iterate(ObjectClosure* cl);
   virtual void object_iterate(ObjectClosure* cl);
 
   // Need to declare the full complement of closures, whether we'll
--- a/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -42,35 +42,40 @@
     BufferLength = 1024
   };
 
-  oop          *_buffer[BufferLength];
-  oop         **_buffer_top;
-  oop         **_buffer_curr;
+  StarTask  _buffer[BufferLength];
+  StarTask* _buffer_top;
+  StarTask* _buffer_curr;
 
-  OopClosure  *_oc;
-  double       _closure_app_seconds;
+  OopClosure* _oc;
+  double      _closure_app_seconds;
 
   void process_buffer () {
-
     double start = os::elapsedTime();
-    for (oop **curr = _buffer; curr < _buffer_curr; ++curr) {
-      _oc->do_oop(*curr);
+    for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) {
+      if (curr->is_narrow()) {
+        assert(UseCompressedOops, "Error");
+        _oc->do_oop((narrowOop*)(*curr));
+      } else {
+        _oc->do_oop((oop*)(*curr));
+      }
     }
     _buffer_curr = _buffer;
     _closure_app_seconds += (os::elapsedTime() - start);
   }
 
-public:
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  virtual void do_oop(oop *p) {
+  template <class T> inline void do_oop_work(T* p) {
     if (_buffer_curr == _buffer_top) {
       process_buffer();
     }
-
-    *_buffer_curr = p;
+    StarTask new_ref(p);
+    *_buffer_curr = new_ref;
     ++_buffer_curr;
   }
+
+public:
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(oop* p)       { do_oop_work(p); }
+
   void done () {
     if (_buffer_curr > _buffer) {
       process_buffer();
@@ -88,18 +93,17 @@
 class BufferingOopsInGenClosure: public OopsInGenClosure {
   BufferingOopClosure _boc;
   OopsInGenClosure* _oc;
-public:
+ protected:
+  template <class T> inline void do_oop_work(T* p) {
+    assert(generation()->is_in_reserved((void*)p), "Must be in!");
+    _boc.do_oop(p);
+  }
+ public:
   BufferingOopsInGenClosure(OopsInGenClosure *oc) :
     _boc(oc), _oc(oc) {}
 
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  virtual void do_oop(oop* p) {
-    assert(generation()->is_in_reserved(p), "Must be in!");
-    _boc.do_oop(p);
-  }
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(oop* p)       { do_oop_work(p); }
 
   void done() {
     _boc.done();
@@ -130,14 +134,14 @@
     BufferLength = 1024
   };
 
-  oop                      *_buffer[BufferLength];
-  oop                     **_buffer_top;
-  oop                     **_buffer_curr;
+  StarTask     _buffer[BufferLength];
+  StarTask*    _buffer_top;
+  StarTask*    _buffer_curr;
 
-  HeapRegion               *_hr_buffer[BufferLength];
-  HeapRegion              **_hr_curr;
+  HeapRegion*  _hr_buffer[BufferLength];
+  HeapRegion** _hr_curr;
 
-  OopsInHeapRegionClosure  *_oc;
+  OopsInHeapRegionClosure*  _oc;
   double                    _closure_app_seconds;
 
   void process_buffer () {
@@ -146,15 +150,20 @@
            "the two lengths should be the same");
 
     double start = os::elapsedTime();
-    HeapRegion **hr_curr = _hr_buffer;
-    HeapRegion *hr_prev = NULL;
-    for (oop **curr = _buffer; curr < _buffer_curr; ++curr) {
-      HeapRegion *region = *hr_curr;
+    HeapRegion** hr_curr = _hr_buffer;
+    HeapRegion*  hr_prev = NULL;
+    for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) {
+      HeapRegion* region = *hr_curr;
       if (region != hr_prev) {
         _oc->set_region(region);
         hr_prev = region;
       }
-      _oc->do_oop(*curr);
+      if (curr->is_narrow()) {
+        assert(UseCompressedOops, "Error");
+        _oc->do_oop((narrowOop*)(*curr));
+      } else {
+        _oc->do_oop((oop*)(*curr));
+      }
       ++hr_curr;
     }
     _buffer_curr = _buffer;
@@ -163,17 +172,16 @@
   }
 
 public:
-  virtual void do_oop(narrowOop *p) {
-    guarantee(false, "NYI");
-  }
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
 
-  virtual void do_oop(oop *p) {
+  template <class T> void do_oop_work(T* p) {
     if (_buffer_curr == _buffer_top) {
       assert(_hr_curr > _hr_buffer, "_hr_curr should be consistent with _buffer_curr");
       process_buffer();
     }
-
-    *_buffer_curr = p;
+    StarTask new_ref(p);
+    *_buffer_curr = new_ref;
     ++_buffer_curr;
     *_hr_curr = _from;
     ++_hr_curr;
--- a/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -277,8 +277,6 @@
     gclog_or_tty->print("H: ");
   if (hr->in_collection_set())
     gclog_or_tty->print("CS: ");
-  if (hr->popular())
-    gclog_or_tty->print("pop: ");
   gclog_or_tty->print_cr("Region " PTR_FORMAT " (%s%s) "
                          "[" PTR_FORMAT ", " PTR_FORMAT"] "
                          "Used: " SIZE_FORMAT "K, garbage: " SIZE_FORMAT "K.",
--- a/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +24,7 @@
 
 // We need to sort heap regions by collection desirability.
 
-class CSetChooserCache {
+class CSetChooserCache VALUE_OBJ_CLASS_SPEC {
 private:
   enum {
     CacheLength = 16
--- a/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -25,26 +25,37 @@
 #include "incls/_precompiled.incl"
 #include "incls/_concurrentG1Refine.cpp.incl"
 
-bool ConcurrentG1Refine::_enabled = false;
-
 ConcurrentG1Refine::ConcurrentG1Refine() :
-  _pya(PYA_continue), _last_pya(PYA_continue),
-  _last_cards_during(), _first_traversal(false),
   _card_counts(NULL), _cur_card_count_histo(NULL), _cum_card_count_histo(NULL),
   _hot_cache(NULL),
   _def_use_cache(false), _use_cache(false),
-  _n_periods(0), _total_cards(0), _total_travs(0)
+  _n_periods(0), _total_cards(0), _total_travs(0),
+  _threads(NULL), _n_threads(0)
 {
   if (G1ConcRefine) {
-    _cg1rThread = new ConcurrentG1RefineThread(this);
-    assert(cg1rThread() != NULL, "Conc refine should have been created");
-    assert(cg1rThread()->cg1r() == this,
-           "Conc refine thread should refer to this");
-  } else {
-    _cg1rThread = NULL;
+    _n_threads = (int)thread_num();
+    if (_n_threads > 0) {
+      _threads = NEW_C_HEAP_ARRAY(ConcurrentG1RefineThread*, _n_threads);
+      int worker_id_offset = (int)DirtyCardQueueSet::num_par_ids();
+      ConcurrentG1RefineThread *next = NULL;
+      for (int i = _n_threads - 1; i >= 0; i--) {
+        ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, worker_id_offset, i);
+        assert(t != NULL, "Conc refine should have been created");
+        assert(t->cg1r() == this, "Conc refine thread should refer to this");
+        _threads[i] = t;
+        next = t;
+      }
+    }
   }
 }
 
+size_t ConcurrentG1Refine::thread_num() {
+  if (G1ConcRefine) {
+    return (G1ParallelRSetThreads > 0) ? G1ParallelRSetThreads : ParallelGCThreads;
+  }
+  return 0;
+}
+
 void ConcurrentG1Refine::init() {
   if (G1ConcRSLogCacheSize > 0 || G1ConcRSCountTraversals) {
     G1CollectedHeap* g1h = G1CollectedHeap::heap();
@@ -75,6 +86,14 @@
   }
 }
 
+void ConcurrentG1Refine::stop() {
+  if (_threads != NULL) {
+    for (int i = 0; i < _n_threads; i++) {
+      _threads[i]->stop();
+    }
+  }
+}
+
 ConcurrentG1Refine::~ConcurrentG1Refine() {
   if (G1ConcRSLogCacheSize > 0 || G1ConcRSCountTraversals) {
     assert(_card_counts != NULL, "Logic");
@@ -88,109 +107,22 @@
     assert(_hot_cache != NULL, "Logic");
     FREE_C_HEAP_ARRAY(jbyte*, _hot_cache);
   }
-}
-
-bool ConcurrentG1Refine::refine() {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  unsigned cards_before = g1h->g1_rem_set()->conc_refine_cards();
-  clear_hot_cache();  // Any previous values in this are now invalid.
-  g1h->g1_rem_set()->concurrentRefinementPass(this);
-  _traversals++;
-  unsigned cards_after = g1h->g1_rem_set()->conc_refine_cards();
-  unsigned cards_during = cards_after-cards_before;
-  // If this is the first traversal in the current enabling
-  // and we did some cards, or if the number of cards found is decreasing
-  // sufficiently quickly, then keep going.  Otherwise, sleep a while.
-  bool res =
-    (_first_traversal && cards_during > 0)
-    ||
-    (!_first_traversal && cards_during * 3 < _last_cards_during * 2);
-  _last_cards_during = cards_during;
-  _first_traversal = false;
-  return res;
-}
-
-void ConcurrentG1Refine::enable() {
-  MutexLocker x(G1ConcRefine_mon);
-  if (!_enabled) {
-    _enabled = true;
-    _first_traversal = true; _last_cards_during = 0;
-    G1ConcRefine_mon->notify_all();
-  }
-}
-
-unsigned ConcurrentG1Refine::disable() {
-  MutexLocker x(G1ConcRefine_mon);
-  if (_enabled) {
-    _enabled = false;
-    return _traversals;
-  } else {
-    return 0;
+  if (_threads != NULL) {
+    for (int i = 0; i < _n_threads; i++) {
+      delete _threads[i];
+    }
+    FREE_C_HEAP_ARRAY(ConcurrentG1RefineThread*, _threads);
   }
 }
 
-void ConcurrentG1Refine::wait_for_ConcurrentG1Refine_enabled() {
-  G1ConcRefine_mon->lock();
-  while (!_enabled) {
-    G1ConcRefine_mon->wait(Mutex::_no_safepoint_check_flag);
-  }
-  G1ConcRefine_mon->unlock();
-  _traversals = 0;
-};
-
-void ConcurrentG1Refine::set_pya_restart() {
-  // If we're using the log-based RS barrier, the above will cause
-  // in-progress traversals of completed log buffers to quit early; we will
-  // also abandon all other buffers.
-  if (G1RSBarrierUseQueue) {
-    DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
-    dcqs.abandon_logs();
-    if (_cg1rThread->do_traversal()) {
-      _pya = PYA_restart;
-    } else {
-      _cg1rThread->set_do_traversal(true);
-      // Reset the post-yield actions.
-      _pya = PYA_continue;
-      _last_pya = PYA_continue;
+void ConcurrentG1Refine::threads_do(ThreadClosure *tc) {
+  if (_threads != NULL) {
+    for (int i = 0; i < _n_threads; i++) {
+      tc->do_thread(_threads[i]);
     }
-  } else {
-    _pya = PYA_restart;
   }
 }
 
-void ConcurrentG1Refine::set_pya_cancel() {
-  _pya = PYA_cancel;
-}
-
-PostYieldAction ConcurrentG1Refine::get_pya() {
-  if (_pya != PYA_continue) {
-    jint val = _pya;
-    while (true) {
-      jint val_read = Atomic::cmpxchg(PYA_continue, &_pya, val);
-      if (val_read == val) {
-        PostYieldAction res = (PostYieldAction)val;
-        assert(res != PYA_continue, "Only the refine thread should reset.");
-        _last_pya = res;
-        return res;
-      } else {
-        val = val_read;
-      }
-    }
-  }
-  // QQQ WELL WHAT DO WE RETURN HERE???
-  // make up something!
-  return PYA_continue;
-}
-
-PostYieldAction ConcurrentG1Refine::get_last_pya() {
-  PostYieldAction res = _last_pya;
-  _last_pya = PYA_continue;
-  return res;
-}
-
-bool ConcurrentG1Refine::do_traversal() {
-  return _cg1rThread->do_traversal();
-}
 
 int ConcurrentG1Refine::add_card_count(jbyte* card_ptr) {
   size_t card_num = (card_ptr - _ct_bot);
--- a/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,26 +26,9 @@
 class ConcurrentG1RefineThread;
 class G1RemSet;
 
-// What to do after a yield:
-enum PostYieldAction {
-  PYA_continue,  // Continue the traversal
-  PYA_restart,   // Restart
-  PYA_cancel     // It's been completed by somebody else: cancel.
-};
-
-class ConcurrentG1Refine {
-  ConcurrentG1RefineThread* _cg1rThread;
-
-  volatile jint _pya;
-  PostYieldAction _last_pya;
-
-  static bool _enabled;  // Protected by G1ConcRefine_mon.
-  unsigned _traversals;
-
-  // Number of cards processed during last refinement traversal.
-  unsigned _first_traversal;
-  unsigned _last_cards_during;
-
+class ConcurrentG1Refine: public CHeapObj {
+  ConcurrentG1RefineThread** _threads;
+  int _n_threads;
   // The cache for card refinement.
   bool     _use_cache;
   bool     _def_use_cache;
@@ -74,37 +57,10 @@
   ~ConcurrentG1Refine();
 
   void init(); // Accomplish some initialization that has to wait.
-
-  // Enabled Conc refinement, waking up thread if necessary.
-  void enable();
-
-  // Returns the number of traversals performed since this refiner was enabled.
-  unsigned disable();
-
-  // Requires G1ConcRefine_mon to be held.
-  bool enabled() { return _enabled; }
-
-  // Returns only when G1 concurrent refinement has been enabled.
-  void wait_for_ConcurrentG1Refine_enabled();
+  void stop();
 
-  // Do one concurrent refinement pass over the card table.  Returns "true"
-  // if heuristics determine that another pass should be done immediately.
-  bool refine();
-
-  // Indicate that an in-progress refinement pass should start over.
-  void set_pya_restart();
-  // Indicate that an in-progress refinement pass should quit.
-  void set_pya_cancel();
-
-  // Get the appropriate post-yield action.  Also sets last_pya.
-  PostYieldAction get_pya();
-
-  // The last PYA read by "get_pya".
-  PostYieldAction get_last_pya();
-
-  bool do_traversal();
-
-  ConcurrentG1RefineThread* cg1rThread() { return _cg1rThread; }
+  // Iterate over the conc refine threads
+  void threads_do(ThreadClosure *tc);
 
   // If this is the first entry for the slot, writes into the cache and
   // returns NULL.  If it causes an eviction, returns the evicted pointer.
@@ -129,4 +85,6 @@
 
   void clear_and_record_card_counts();
   void print_final_card_counts();
+
+  static size_t thread_num();
 };
--- a/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -30,12 +30,14 @@
 // The CM thread is created when the G1 garbage collector is used
 
 ConcurrentG1RefineThread::
-ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r) :
+ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r, ConcurrentG1RefineThread *next,
+                         int worker_id_offset, int worker_id) :
   ConcurrentGCThread(),
+  _worker_id_offset(worker_id_offset),
+  _worker_id(worker_id),
+  _active(false),
+  _next(next),
   _cg1r(cg1r),
-  _started(false),
-  _in_progress(false),
-  _do_traversal(false),
   _vtime_accum(0.0),
   _co_tracker(G1CRGroup),
   _interval_ms(5.0)
@@ -43,112 +45,6 @@
   create_and_start();
 }
 
-const long timeout = 200; // ms.
-
-void ConcurrentG1RefineThread::traversalBasedRefinement() {
-  _cg1r->wait_for_ConcurrentG1Refine_enabled();
-  MutexLocker x(G1ConcRefine_mon);
-  while (_cg1r->enabled()) {
-    MutexUnlocker ux(G1ConcRefine_mon);
-    ResourceMark rm;
-    HandleMark   hm;
-
-    if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine starting pass");
-    _sts.join();
-    bool no_sleep = _cg1r->refine();
-    _sts.leave();
-    if (!no_sleep) {
-      MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
-      // We do this only for the timeout; we don't expect this to be signalled.
-      CGC_lock->wait(Mutex::_no_safepoint_check_flag, timeout);
-    }
-  }
-}
-
-void ConcurrentG1RefineThread::queueBasedRefinement() {
-  DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
-  // Wait for completed log buffers to exist.
-  {
-    MutexLockerEx x(DirtyCardQ_CBL_mon, Mutex::_no_safepoint_check_flag);
-    while (!_do_traversal && !dcqs.process_completed_buffers() &&
-           !_should_terminate) {
-      DirtyCardQ_CBL_mon->wait(Mutex::_no_safepoint_check_flag);
-    }
-  }
-
-  if (_should_terminate) {
-    return;
-  }
-
-  // Now we take them off (this doesn't hold locks while it applies
-  // closures.)  (If we did a full collection, then we'll do a full
-  // traversal.
-  _sts.join();
-  if (_do_traversal) {
-    (void)_cg1r->refine();
-    switch (_cg1r->get_last_pya()) {
-    case PYA_cancel: case PYA_continue:
-      // Continue was caught and handled inside "refine".  If it's still
-      // "continue" when we get here, we're done.
-      _do_traversal = false;
-      break;
-    case PYA_restart:
-      assert(_do_traversal, "Because of Full GC.");
-      break;
-    }
-  } else {
-    int n_logs = 0;
-    int lower_limit = 0;
-    double start_vtime_sec; // only used when G1SmoothConcRefine is on
-    int prev_buffer_num; // only used when G1SmoothConcRefine is on
-
-    if (G1SmoothConcRefine) {
-      lower_limit = 0;
-      start_vtime_sec = os::elapsedVTime();
-      prev_buffer_num = (int) dcqs.completed_buffers_num();
-    } else {
-      lower_limit = DCQBarrierProcessCompletedThreshold / 4; // For now.
-    }
-    while (dcqs.apply_closure_to_completed_buffer(0, lower_limit)) {
-      double end_vtime_sec;
-      double elapsed_vtime_sec;
-      int elapsed_vtime_ms;
-      int curr_buffer_num;
-
-      if (G1SmoothConcRefine) {
-        end_vtime_sec = os::elapsedVTime();
-        elapsed_vtime_sec = end_vtime_sec - start_vtime_sec;
-        elapsed_vtime_ms = (int) (elapsed_vtime_sec * 1000.0);
-        curr_buffer_num = (int) dcqs.completed_buffers_num();
-
-        if (curr_buffer_num > prev_buffer_num ||
-            curr_buffer_num > DCQBarrierProcessCompletedThreshold) {
-          decreaseInterval(elapsed_vtime_ms);
-        } else if (curr_buffer_num < prev_buffer_num) {
-          increaseInterval(elapsed_vtime_ms);
-        }
-      }
-
-      sample_young_list_rs_lengths();
-      _co_tracker.update(false);
-
-      if (G1SmoothConcRefine) {
-        start_vtime_sec = os::elapsedVTime();
-        prev_buffer_num = curr_buffer_num;
-
-        _sts.leave();
-        os::sleep(Thread::current(), (jlong) _interval_ms, false);
-        _sts.join();
-      }
-
-      n_logs++;
-    }
-    // Make sure we harvest the PYA, if any.
-    (void)_cg1r->get_pya();
-  }
-  _sts.leave();
-}
-
 void ConcurrentG1RefineThread::sample_young_list_rs_lengths() {
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
   G1CollectorPolicy* g1p = g1h->g1_policy();
@@ -184,15 +80,97 @@
   _co_tracker.start();
 
   while (!_should_terminate) {
-    // wait until started is set.
-    if (G1RSBarrierUseQueue) {
-      queueBasedRefinement();
+    DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
+    // Wait for completed log buffers to exist.
+    {
+      MutexLockerEx x(DirtyCardQ_CBL_mon, Mutex::_no_safepoint_check_flag);
+      while (((_worker_id == 0 && !dcqs.process_completed_buffers()) ||
+              (_worker_id > 0 && !is_active())) &&
+             !_should_terminate) {
+         DirtyCardQ_CBL_mon->wait(Mutex::_no_safepoint_check_flag);
+      }
+    }
+
+    if (_should_terminate) {
+      return;
+    }
+
+    // Now we take them off (this doesn't hold locks while it applies
+    // closures.)  (If we did a full collection, then we'll do a full
+    // traversal.
+    _sts.join();
+    int n_logs = 0;
+    int lower_limit = 0;
+    double start_vtime_sec; // only used when G1SmoothConcRefine is on
+    int prev_buffer_num; // only used when G1SmoothConcRefine is on
+    // This thread activation threshold
+    int threshold = DCQBarrierProcessCompletedThreshold * _worker_id;
+    // Next thread activation threshold
+    int next_threshold = threshold + DCQBarrierProcessCompletedThreshold;
+    int deactivation_threshold = MAX2<int>(threshold - DCQBarrierProcessCompletedThreshold / 2, 0);
+
+    if (G1SmoothConcRefine) {
+      lower_limit = 0;
+      start_vtime_sec = os::elapsedVTime();
+      prev_buffer_num = (int) dcqs.completed_buffers_num();
     } else {
-      traversalBasedRefinement();
+      lower_limit = DCQBarrierProcessCompletedThreshold / 4; // For now.
     }
-    _sts.join();
-    _co_tracker.update();
+    while (dcqs.apply_closure_to_completed_buffer(_worker_id + _worker_id_offset, lower_limit)) {
+      double end_vtime_sec;
+      double elapsed_vtime_sec;
+      int elapsed_vtime_ms;
+      int curr_buffer_num = (int) dcqs.completed_buffers_num();
+
+      if (G1SmoothConcRefine) {
+        end_vtime_sec = os::elapsedVTime();
+        elapsed_vtime_sec = end_vtime_sec - start_vtime_sec;
+        elapsed_vtime_ms = (int) (elapsed_vtime_sec * 1000.0);
+
+        if (curr_buffer_num > prev_buffer_num ||
+            curr_buffer_num > next_threshold) {
+          decreaseInterval(elapsed_vtime_ms);
+        } else if (curr_buffer_num < prev_buffer_num) {
+          increaseInterval(elapsed_vtime_ms);
+        }
+      }
+      if (_worker_id == 0) {
+        sample_young_list_rs_lengths();
+      } else if (curr_buffer_num < deactivation_threshold) {
+        // If the number of the buffer has fallen below our threshold
+        // we should deactivate. The predecessor will reactivate this
+        // thread should the number of the buffers cross the threshold again.
+        MutexLockerEx x(DirtyCardQ_CBL_mon, Mutex::_no_safepoint_check_flag);
+        deactivate();
+        if (G1TraceConcurrentRefinement) {
+          gclog_or_tty->print_cr("G1-Refine-deactivated worker %d", _worker_id);
+        }
+        break;
+      }
+      _co_tracker.update(false);
+
+      // Check if we need to activate the next thread.
+      if (curr_buffer_num > next_threshold && _next != NULL && !_next->is_active()) {
+        MutexLockerEx x(DirtyCardQ_CBL_mon, Mutex::_no_safepoint_check_flag);
+        _next->activate();
+        DirtyCardQ_CBL_mon->notify_all();
+        if (G1TraceConcurrentRefinement) {
+          gclog_or_tty->print_cr("G1-Refine-activated worker %d", _next->_worker_id);
+        }
+      }
+
+      if (G1SmoothConcRefine) {
+        prev_buffer_num = curr_buffer_num;
+        _sts.leave();
+        os::sleep(Thread::current(), (jlong) _interval_ms, false);
+        _sts.join();
+        start_vtime_sec = os::elapsedVTime();
+      }
+      n_logs++;
+    }
+    _co_tracker.update(false);
     _sts.leave();
+
     if (os::supports_vtime()) {
       _vtime_accum = (os::elapsedVTime() - _vtime_start);
     } else {
@@ -209,9 +187,9 @@
 
 
 void ConcurrentG1RefineThread::yield() {
-  if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-yield");
+  if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-yield");
   _sts.yield("G1 refine");
-  if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-yield-end");
+  if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-yield-end");
 }
 
 void ConcurrentG1RefineThread::stop() {
@@ -232,7 +210,7 @@
       Terminator_lock->wait();
     }
   }
-  if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-stop");
+  if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-stop");
 }
 
 void ConcurrentG1RefineThread::print() {
@@ -240,7 +218,3 @@
   Thread::print();
   gclog_or_tty->cr();
 }
-
-void ConcurrentG1RefineThread::set_do_traversal(bool b) {
-  _do_traversal = b;
-}
--- a/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -33,21 +33,27 @@
 
   double _vtime_start;  // Initial virtual time.
   double _vtime_accum;  // Initial virtual time.
+  int _worker_id;
+  int _worker_id_offset;
 
+  // The refinement threads collection is linked list. A predecessor can activate a successor
+  // when the number of the rset update buffer crosses a certain threshold. A successor
+  // would self-deactivate when the number of the buffers falls below the threshold.
+  bool _active;
+  ConcurrentG1RefineThread *       _next;
  public:
   virtual void run();
 
+  bool is_active()  { return _active;  }
+  void activate()   { _active = true;  }
+  void deactivate() { _active = false; }
+
  private:
   ConcurrentG1Refine*              _cg1r;
-  bool                             _started;
-  bool                             _in_progress;
-  volatile bool                    _restart;
 
   COTracker                        _co_tracker;
   double                           _interval_ms;
 
-  bool                             _do_traversal;
-
   void decreaseInterval(int processing_time_ms) {
     double min_interval_ms = (double) processing_time_ms;
     _interval_ms = 0.8 * _interval_ms;
@@ -63,16 +69,13 @@
 
   void sleepBeforeNextCycle();
 
-  void traversalBasedRefinement();
-
-  void queueBasedRefinement();
-
   // For use by G1CollectedHeap, which is a friend.
   static SuspendibleThreadSet* sts() { return &_sts; }
 
  public:
   // Constructor
-  ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r);
+  ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r, ConcurrentG1RefineThread* next,
+                           int worker_id_offset, int worker_id);
 
   // Printing
   void print();
@@ -82,23 +85,11 @@
 
   ConcurrentG1Refine* cg1r()                     { return _cg1r;     }
 
-
-  void            set_started()                  { _started = true;   }
-  void            clear_started()                { _started = false;  }
-  bool            started()                      { return _started;   }
-
-  void            set_in_progress()              { _in_progress = true;   }
-  void            clear_in_progress()            { _in_progress = false;  }
-  bool            in_progress()                  { return _in_progress;   }
-
-  void            set_do_traversal(bool b);
-  bool            do_traversal() { return _do_traversal; }
-
   void            sample_young_list_rs_lengths();
 
   // Yield for GC
   void            yield();
 
   // shutdown
-  static void stop();
+  void stop();
 };
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -107,7 +107,7 @@
 #ifndef PRODUCT
 bool CMBitMapRO::covers(ReservedSpace rs) const {
   // assert(_bm.map() == _virtual_space.low(), "map inconsistency");
-  assert(((size_t)_bm.size() * (1 << _shifter)) == _bmWordSize,
+  assert(((size_t)_bm.size() * (size_t)(1 << _shifter)) == _bmWordSize,
          "size inconsistency");
   return _bmStartWord == (HeapWord*)(rs.base()) &&
          _bmWordSize  == rs.size()>>LogHeapWordSize;
@@ -420,6 +420,10 @@
 
   _has_overflown(false),
   _concurrent(false),
+  _has_aborted(false),
+  _restart_for_overflow(false),
+  _concurrent_marking_in_progress(false),
+  _should_gray_objects(false),
 
   // _verbose_level set below
 
@@ -444,17 +448,14 @@
     gclog_or_tty->print_cr("[global] init, heap start = "PTR_FORMAT", "
                            "heap end = "PTR_FORMAT, _heap_start, _heap_end);
 
-  _markStack.allocate(G1CMStackSize);
-  _regionStack.allocate(G1CMRegionStackSize);
+  _markStack.allocate(G1MarkStackSize);
+  _regionStack.allocate(G1MarkRegionStackSize);
 
   // Create & start a ConcurrentMark thread.
-  if (G1ConcMark) {
-    _cmThread = new ConcurrentMarkThread(this);
-    assert(cmThread() != NULL, "CM Thread should have been created");
-    assert(cmThread()->cm() != NULL, "CM Thread should refer to this cm");
-  } else {
-    _cmThread = NULL;
-  }
+  _cmThread = new ConcurrentMarkThread(this);
+  assert(cmThread() != NULL, "CM Thread should have been created");
+  assert(cmThread()->cm() != NULL, "CM Thread should refer to this cm");
+
   _g1h = G1CollectedHeap::heap();
   assert(CGC_lock != NULL, "Where's the CGC_lock?");
   assert(_markBitMap1.covers(rs), "_markBitMap1 inconsistency");
@@ -495,20 +496,21 @@
     _marking_task_overhead    = 1.0;
   } else {
     if (ParallelMarkingThreads > 0) {
-      // notice that ParallelMarkingThreads overwrites G1MarkingOverheadPerc
+      // notice that ParallelMarkingThreads overwrites G1MarkingOverheadPercent
       // if both are set
 
       _parallel_marking_threads = ParallelMarkingThreads;
       _sleep_factor             = 0.0;
       _marking_task_overhead    = 1.0;
-    } else if (G1MarkingOverheadPerc > 0) {
+    } else if (G1MarkingOverheadPercent > 0) {
       // we will calculate the number of parallel marking threads
       // based on a target overhead with respect to the soft real-time
       // goal
 
-      double marking_overhead = (double) G1MarkingOverheadPerc / 100.0;
+      double marking_overhead = (double) G1MarkingOverheadPercent / 100.0;
       double overall_cm_overhead =
-        (double) G1MaxPauseTimeMS * marking_overhead / (double) G1TimeSliceMS;
+        (double) MaxGCPauseMillis * marking_overhead /
+        (double) GCPauseIntervalMillis;
       double cpu_ratio = 1.0 / (double) os::processor_count();
       double marking_thread_num = ceil(overall_cm_overhead / cpu_ratio);
       double marking_task_overhead =
@@ -778,18 +780,18 @@
                      bool do_barrier) : _cm(cm), _g1h(g1h),
                                         _do_barrier(do_barrier) { }
 
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  virtual void do_oop(oop* p) {
-    oop thisOop = *p;
-    if (thisOop != NULL) {
-      assert(thisOop->is_oop() || thisOop->mark() == NULL,
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T* p) {
+    T heap_oop = oopDesc::load_heap_oop(p);
+    if (!oopDesc::is_null(heap_oop)) {
+      oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
+      assert(obj->is_oop() || obj->mark() == NULL,
              "expected an oop, possibly with mark word displaced");
-      HeapWord* addr = (HeapWord*)thisOop;
+      HeapWord* addr = (HeapWord*)obj;
       if (_g1h->is_in_g1_reserved(addr)) {
-        _cm->grayRoot(thisOop);
+        _cm->grayRoot(obj);
       }
     }
     if (_do_barrier) {
@@ -845,16 +847,6 @@
   double start = os::elapsedTime();
   GCOverheadReporter::recordSTWStart(start);
 
-  // If there has not been a GC[n-1] since last GC[n] cycle completed,
-  // precede our marking with a collection of all
-  // younger generations to keep floating garbage to a minimum.
-  // YSR: we won't do this for now -- it's an optimization to be
-  // done post-beta.
-
-  // YSR:    ignoring weak refs for now; will do at bug fixing stage
-  // EVM:    assert(discoveredRefsAreClear());
-
-
   G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy();
   g1p->record_concurrent_mark_init_start();
   checkpointRootsInitialPre();
@@ -1130,6 +1122,13 @@
     return;
   }
 
+  if (VerifyDuringGC) {
+    HandleMark hm;  // handle scope
+    gclog_or_tty->print(" VerifyDuringGC:(before)");
+    Universe::heap()->prepare_for_verify();
+    Universe::verify(true, false, true);
+  }
+
   G1CollectorPolicy* g1p = g1h->g1_policy();
   g1p->record_concurrent_mark_remark_start();
 
@@ -1152,6 +1151,15 @@
   } else {
     // We're done with marking.
     JavaThread::satb_mark_queue_set().set_active_all_threads(false);
+
+    if (VerifyDuringGC) {
+      HandleMark hm;  // handle scope
+      gclog_or_tty->print(" VerifyDuringGC:(after)");
+      Universe::heap()->prepare_for_verify();
+      Universe::heap()->verify(/* allow_dirty */      true,
+                               /* silent */           false,
+                               /* use_prev_marking */ false);
+    }
   }
 
 #if VERIFY_OBJS_PROCESSED
@@ -1221,6 +1229,41 @@
                CardTableModRefBS::card_shift);
   }
 
+  // It takes a region that's not empty (i.e., it has at least one
+  // live object in it and sets its corresponding bit on the region
+  // bitmap to 1. If the region is "starts humongous" it will also set
+  // to 1 the bits on the region bitmap that correspond to its
+  // associated "continues humongous" regions.
+  void set_bit_for_region(HeapRegion* hr) {
+    assert(!hr->continuesHumongous(), "should have filtered those out");
+
+    size_t index = hr->hrs_index();
+    if (!hr->startsHumongous()) {
+      // Normal (non-humongous) case: just set the bit.
+      _region_bm->par_at_put((BitMap::idx_t) index, true);
+    } else {
+      // Starts humongous case: calculate how many regions are part of
+      // this humongous region and then set the bit range. It might
+      // have been a bit more efficient to look at the object that
+      // spans these humongous regions to calculate their number from
+      // the object's size. However, it's a good idea to calculate
+      // this based on the metadata itself, and not the region
+      // contents, so that this code is not aware of what goes into
+      // the humongous regions (in case this changes in the future).
+      G1CollectedHeap* g1h = G1CollectedHeap::heap();
+      size_t end_index = index + 1;
+      while (end_index < g1h->n_regions()) {
+        HeapRegion* chr = g1h->region_at(end_index);
+        if (!chr->continuesHumongous()) {
+          break;
+        }
+        end_index += 1;
+      }
+      _region_bm->par_at_put_range((BitMap::idx_t) index,
+                                   (BitMap::idx_t) end_index, true);
+    }
+  }
+
   bool doHeapRegion(HeapRegion* hr) {
     if (_co_tracker != NULL)
       _co_tracker->update();
@@ -1228,7 +1271,16 @@
     if (!_final && _regions_done == 0)
       _start_vtime_sec = os::elapsedVTime();
 
-    if (hr->continuesHumongous()) return false;
+    if (hr->continuesHumongous()) {
+      // We will ignore these here and process them when their
+      // associated "starts humongous" region is processed (see
+      // set_bit_for_heap_region()). Note that we cannot rely on their
+      // associated "starts humongous" region to have their bit set to
+      // 1 since, due to the region chunking in the parallel region
+      // iteration, a "continues humongous" region might be visited
+      // before its associated "starts humongous".
+      return false;
+    }
 
     HeapWord* nextTop = hr->next_top_at_mark_start();
     HeapWord* start   = hr->top_at_conc_mark_count();
@@ -1322,14 +1374,14 @@
           intptr_t(uintptr_t(tp) >> CardTableModRefBS::card_shift);
         mark_card_num_range(start_card_num, last_card_num);
         // This definitely means the region has live objects.
-        _region_bm->par_at_put(hr->hrs_index(), 1);
+        set_bit_for_region(hr);
       }
     }
 
     hr->add_to_marked_bytes(marked_bytes);
     // Update the live region bitmap.
     if (marked_bytes > 0) {
-      _region_bm->par_at_put(hr->hrs_index(), 1);
+      set_bit_for_region(hr);
     }
     hr->set_top_at_conc_mark_count(nextTop);
     _tot_live += hr->next_live_bytes();
@@ -1602,6 +1654,15 @@
     return;
   }
 
+  if (VerifyDuringGC) {
+    HandleMark hm;  // handle scope
+    gclog_or_tty->print(" VerifyDuringGC:(before)");
+    Universe::heap()->prepare_for_verify();
+    Universe::verify(/* allow dirty  */ true,
+                     /* silent       */ false,
+                     /* prev marking */ true);
+  }
+
   _cleanup_co_tracker.disable();
 
   G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy();
@@ -1733,12 +1794,14 @@
   // races with it goes around and waits for completeCleanup to finish.
   g1h->increment_total_collections();
 
-#ifndef PRODUCT
-  if (G1VerifyConcMark) {
-    G1CollectedHeap::heap()->prepare_for_verify();
-    G1CollectedHeap::heap()->verify(true,false);
+  if (VerifyDuringGC) {
+    HandleMark hm;  // handle scope
+    gclog_or_tty->print(" VerifyDuringGC:(after)");
+    Universe::heap()->prepare_for_verify();
+    Universe::verify(/* allow dirty  */ true,
+                     /* silent       */ false,
+                     /* prev marking */ true);
   }
-#endif
 }
 
 void ConcurrentMark::completeCleanup() {
@@ -1796,12 +1859,11 @@
     _g1(g1), _cm(cm),
     _bitMap(bitMap) {}
 
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  void do_oop(oop* p) {
-    oop thisOop = *p;
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T* p) {
+    oop thisOop = oopDesc::load_decode_heap_oop(p);
     HeapWord* addr = (HeapWord*)thisOop;
     if (_g1->is_in_g1_reserved(addr) && _g1->is_obj_ill(thisOop)) {
       _bitMap->mark(addr);
@@ -1960,12 +2022,11 @@
   ReachablePrinterOopClosure(CMBitMapRO* bitmap, outputStream* out) :
     _bitmap(bitmap), _g1h(G1CollectedHeap::heap()), _out(out) { }
 
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  void do_oop(oop* p) {
-    oop         obj = *p;
+  void do_oop(narrowOop* p) { do_oop_work(p); }
+  void do_oop(      oop* p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T* p) {
+    oop         obj = oopDesc::load_decode_heap_oop(p);
     const char* str = NULL;
     const char* str2 = "";
 
@@ -2107,6 +2168,7 @@
 
 
   HeapWord* objAddr = (HeapWord*) obj;
+  assert(obj->is_oop_or_null(true /* ignore mark word */), "Error");
   if (_g1h->is_in_g1_reserved(objAddr)) {
     tmp_guarantee_CM( obj != NULL, "is_in_g1_reserved should ensure this" );
     HeapRegion* hr = _g1h->heap_region_containing(obj);
@@ -2324,7 +2386,7 @@
     }
   }
 
-  bool drain() {
+  template <class T> bool drain() {
     while (_ms_ind > 0) {
       oop obj = pop();
       assert(obj != NULL, "Since index was non-zero.");
@@ -2338,9 +2400,8 @@
         }
         // Now process this portion of this one.
         int lim = MIN2(next_arr_ind, len);
-        assert(!UseCompressedOops, "This needs to be fixed");
         for (int j = arr_ind; j < lim; j++) {
-          do_oop(aobj->obj_at_addr<oop>(j));
+          do_oop(aobj->obj_at_addr<T>(j));
         }
 
       } else {
@@ -2367,13 +2428,13 @@
     FREE_C_HEAP_ARRAY(jint, _array_ind_stack);
   }
 
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  void do_oop(oop* p) {
-    oop obj = *p;
-    if (obj == NULL) return;
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T* p) {
+    T heap_oop = oopDesc::load_heap_oop(p);
+    if (oopDesc::is_null(heap_oop)) return;
+    oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
     if (obj->is_forwarded()) {
       // If the object has already been forwarded, we have to make sure
       // that it's marked.  So follow the forwarding pointer.  Note that
@@ -2422,7 +2483,11 @@
     oop obj = oop(addr);
     if (!obj->is_forwarded()) {
       if (!_oop_cl.push(obj)) return false;
-      if (!_oop_cl.drain()) return false;
+      if (UseCompressedOops) {
+        if (!_oop_cl.drain<narrowOop>()) return false;
+      } else {
+        if (!_oop_cl.drain<oop>()) return false;
+      }
     }
     // Otherwise...
     return true;
@@ -2580,9 +2645,6 @@
 
 // abandon current marking iteration due to a Full GC
 void ConcurrentMark::abort() {
-  // If we're not marking, nothing to do.
-  if (!G1ConcMark) return;
-
   // Clear all marks to force marking thread to do nothing
   _nextMarkBitMap->clearAll();
   // Empty mark stack
@@ -2758,14 +2820,14 @@
   CMTask*            _task;
 
 public:
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  void do_oop(oop* p) {
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T* p) {
     tmp_guarantee_CM( _g1h->is_in_g1_reserved((HeapWord*) p), "invariant" );
-
-    oop obj = *p;
+    tmp_guarantee_CM( !_g1h->heap_region_containing((HeapWord*) p)->is_on_free_list(), "invariant" );
+
+    oop obj = oopDesc::load_decode_heap_oop(p);
     if (_cm->verbose_high())
       gclog_or_tty->print_cr("[%d] we're looking at location "
                              "*"PTR_FORMAT" = "PTR_FORMAT,
@@ -2911,6 +2973,7 @@
   ++_refs_reached;
 
   HeapWord* objAddr = (HeapWord*) obj;
+  assert(obj->is_oop_or_null(true /* ignore mark word */), "Error");
   if (_g1h->is_in_g1_reserved(objAddr)) {
     tmp_guarantee_CM( obj != NULL, "is_in_g1_reserved should ensure this" );
     HeapRegion* hr =  _g1h->heap_region_containing(obj);
@@ -2974,6 +3037,7 @@
 void CMTask::push(oop obj) {
   HeapWord* objAddr = (HeapWord*) obj;
   tmp_guarantee_CM( _g1h->is_in_g1_reserved(objAddr), "invariant" );
+  tmp_guarantee_CM( !_g1h->heap_region_containing(objAddr)->is_on_free_list(), "invariant" );
   tmp_guarantee_CM( !_g1h->is_obj_ill(obj), "invariant" );
   tmp_guarantee_CM( _nextMarkBitMap->isMarked(objAddr), "invariant" );
 
@@ -3219,6 +3283,8 @@
 
       tmp_guarantee_CM( _g1h->is_in_g1_reserved((HeapWord*) obj),
                         "invariant" );
+      tmp_guarantee_CM( !_g1h->heap_region_containing(obj)->is_on_free_list(),
+                        "invariant" );
 
       scan_object(obj);
 
--- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // A generic CM bit map.  This is essentially a wrapper around the BitMap
 // class, with one bit per (1<<_shifter) HeapWords.
 
-class CMBitMapRO {
+class CMBitMapRO VALUE_OBJ_CLASS_SPEC {
  protected:
   HeapWord* _bmStartWord;      // base address of range covered by map
   size_t    _bmWordSize;       // map size (in #HeapWords covered)
@@ -139,7 +139,7 @@
 
 // Represents a marking stack used by the CM collector.
 // Ideally this should be GrowableArray<> just like MSC's marking stack(s).
-class CMMarkStack {
+class CMMarkStack VALUE_OBJ_CLASS_SPEC {
   ConcurrentMark* _cm;
   oop*   _base;      // bottom of stack
   jint   _index;     // one more than last occupied index
@@ -237,7 +237,7 @@
   void oops_do(OopClosure* f);
 };
 
-class CMRegionStack {
+class CMRegionStack VALUE_OBJ_CLASS_SPEC {
   MemRegion* _base;
   jint _capacity;
   jint _index;
@@ -312,7 +312,7 @@
 
 class ConcurrentMarkThread;
 
-class ConcurrentMark {
+class ConcurrentMark: public CHeapObj {
   friend class ConcurrentMarkThread;
   friend class CMTask;
   friend class CMBitMapClosure;
@@ -763,6 +763,7 @@
   CMBitMap*                   _nextMarkBitMap;
   // the task queue of this task
   CMTaskQueue*                _task_queue;
+private:
   // the task queue set---needed for stealing
   CMTaskQueueSet*             _task_queues;
   // indicates whether the task has been claimed---this is only  for
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -107,7 +107,7 @@
       if (PrintGC) {
         gclog_or_tty->date_stamp(PrintGCDateStamps);
         gclog_or_tty->stamp(PrintGCTimeStamps);
-        tty->print_cr("[GC concurrent-mark-start]");
+        gclog_or_tty->print_cr("[GC concurrent-mark-start]");
       }
 
       if (!g1_policy->in_young_gc_mode()) {
@@ -136,9 +136,6 @@
         iter++;
         if (!cm()->has_aborted()) {
           _cm->markFromRoots();
-        } else {
-          if (TraceConcurrentMark)
-            gclog_or_tty->print_cr("CM-skip-mark-from-roots");
         }
 
         double mark_end_time = os::elapsedVTime();
@@ -163,9 +160,6 @@
           sprintf(verbose_str, "GC remark");
           VM_CGC_Operation op(&final_cl, verbose_str);
           VMThread::execute(&op);
-        } else {
-          if (TraceConcurrentMark)
-            gclog_or_tty->print_cr("CM-skip-remark");
         }
         if (cm()->restart_for_overflow() &&
             G1TraceMarkStackOverflow) {
@@ -208,8 +202,6 @@
                                    count_end_sec - count_start_sec);
           }
         }
-      } else {
-        if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-skip-end-game");
       }
       double end_time = os::elapsedVTime();
       _vtime_count_accum += (end_time - counting_start_time);
@@ -230,7 +222,6 @@
         VM_CGC_Operation op(&cl_cl, verbose_str);
         VMThread::execute(&op);
       } else {
-        if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-skip-cleanup");
         G1CollectedHeap::heap()->set_marking_complete();
       }
 
@@ -287,9 +278,7 @@
 
 
 void ConcurrentMarkThread::yield() {
-  if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-yield");
   _sts.yield("Concurrent Mark");
-  if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-yield-end");
 }
 
 void ConcurrentMarkThread::stop() {
@@ -299,7 +288,6 @@
   while (!_has_terminated) {
     Terminator_lock->wait();
   }
-  if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-stop");
 }
 
 void ConcurrentMarkThread::print() {
@@ -314,14 +302,10 @@
   // below while the world is otherwise stopped.
   MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
   while (!started()) {
-    if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-sleeping");
     CGC_lock->wait(Mutex::_no_safepoint_check_flag);
   }
   set_in_progress();
   clear_started();
-  if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-starting");
-
-  return;
 }
 
 // Note: this method, although exported by the ConcurrentMarkSweepThread,
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -80,5 +80,5 @@
   void            yield();
 
   // shutdown
-  static void stop();
+  void stop();
 };
--- a/src/share/vm/gc_implementation/g1/concurrentZFThread.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/concurrentZFThread.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -73,7 +73,7 @@
   // while holding the ZF_needed_mon lock.
 
   // shutdown
-  static void stop();
+  void stop();
 
   // Stats
   static void note_region_alloc() {_region_allocs++; }
--- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -71,22 +71,20 @@
   _all_active = true;
 }
 
+// Determines how many mutator threads can process the buffers in parallel.
 size_t DirtyCardQueueSet::num_par_ids() {
-  return MAX2(ParallelGCThreads, (size_t)2);
+  return os::processor_count();
 }
 
-
 void DirtyCardQueueSet::initialize(Monitor* cbl_mon, Mutex* fl_lock,
                                    int max_completed_queue,
-                                   Mutex* lock) {
-  PtrQueueSet::initialize(cbl_mon, fl_lock, max_completed_queue);
+                                   Mutex* lock, PtrQueueSet* fl_owner) {
+  PtrQueueSet::initialize(cbl_mon, fl_lock, max_completed_queue, fl_owner);
   set_buffer_size(DCQBarrierQueueBufferSize);
   set_process_completed_threshold(DCQBarrierProcessCompletedThreshold);
 
   _shared_dirty_card_queue.set_lock(lock);
   _free_ids = new FreeIdSet((int) num_par_ids(), _cbl_mon);
-  bool b = _free_ids->claim_perm_id(0);
-  guarantee(b, "Must reserve id zero for concurrent refinement thread.");
 }
 
 void DirtyCardQueueSet::handle_zero_index_for_thread(JavaThread* t) {
@@ -234,7 +232,7 @@
     nd = get_completed_buffer_lock(stop_at);
   }
   bool res = apply_closure_to_completed_buffer_helper(worker_i, nd);
-  if (res) _processed_buffers_rs_thread++;
+  if (res) Atomic::inc(&_processed_buffers_rs_thread);
   return res;
 }
 
--- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -88,7 +88,7 @@
 
   void initialize(Monitor* cbl_mon, Mutex* fl_lock,
                   int max_completed_queue = 0,
-                  Mutex* lock = NULL);
+                  Mutex* lock = NULL, PtrQueueSet* fl_owner = NULL);
 
   // The number of parallel ids that can be claimed to allow collector or
   // mutator threads to do card-processing work.
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -424,7 +424,7 @@
       while (n <= next_boundary) {
         q = n;
         oop obj = oop(q);
-        if (obj->klass() == NULL) return q;
+        if (obj->klass_or_null() == NULL) return q;
         n += obj->size();
       }
       assert(q <= next_boundary && n > next_boundary, "Consequence of loop");
@@ -436,7 +436,7 @@
       while (n <= next_boundary) {
         q = n;
         oop obj = oop(q);
-        if (obj->klass() == NULL) return q;
+        if (obj->klass_or_null() == NULL) return q;
         n += _sp->block_size(q);
       }
       assert(q <= next_boundary && n > next_boundary, "Consequence of loop");
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -96,14 +96,14 @@
     while (n <= addr) {
       q = n;
       oop obj = oop(q);
-      if (obj->klass() == NULL) return q;
+      if (obj->klass_or_null() == NULL) return q;
       n += obj->size();
     }
   } else {
     while (n <= addr) {
       q = n;
       oop obj = oop(q);
-      if (obj->klass() == NULL) return q;
+      if (obj->klass_or_null() == NULL) return q;
       n += _sp->block_size(q);
     }
   }
@@ -115,7 +115,7 @@
 inline HeapWord*
 G1BlockOffsetArray::forward_to_block_containing_addr(HeapWord* q,
                                                      const void* addr) {
-  if (oop(q)->klass() == NULL) return q;
+  if (oop(q)->klass_or_null() == NULL) return q;
   HeapWord* n = q + _sp->block_size(q);
   // In the normal case, where the query "addr" is a card boundary, and the
   // offset table chunks are the same size as cards, the block starting at
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,21 +42,6 @@
 
 // Local to this file.
 
-// Finds the first HeapRegion.
-// No longer used, but might be handy someday.
-
-class FindFirstRegionClosure: public HeapRegionClosure {
-  HeapRegion* _a_region;
-public:
-  FindFirstRegionClosure() : _a_region(NULL) {}
-  bool doHeapRegion(HeapRegion* r) {
-    _a_region = r;
-    return true;
-  }
-  HeapRegion* result() { return _a_region; }
-};
-
-
 class RefineCardTableEntryClosure: public CardTableEntryClosure {
   SuspendibleThreadSet* _sts;
   G1RemSet* _g1rs;
@@ -136,12 +121,20 @@
   int calls() { return _calls; }
 };
 
+class RedirtyLoggedCardTableEntryFastClosure : public CardTableEntryClosure {
+public:
+  bool do_card_ptr(jbyte* card_ptr, int worker_i) {
+    *card_ptr = CardTableModRefBS::dirty_card_val();
+    return true;
+  }
+};
+
 YoungList::YoungList(G1CollectedHeap* g1h)
   : _g1h(g1h), _head(NULL),
     _scan_only_head(NULL), _scan_only_tail(NULL), _curr_scan_only(NULL),
     _length(0), _scan_only_length(0),
     _last_sampled_rs_lengths(0),
-    _survivor_head(NULL), _survivors_tail(NULL), _survivor_length(0)
+    _survivor_head(NULL), _survivor_tail(NULL), _survivor_length(0)
 {
   guarantee( check_list_empty(false), "just making sure..." );
 }
@@ -159,16 +152,15 @@
 }
 
 void YoungList::add_survivor_region(HeapRegion* hr) {
-  assert(!hr->is_survivor(), "should not already be for survived");
+  assert(hr->is_survivor(), "should be flagged as survivor region");
   assert(hr->get_next_young_region() == NULL, "cause it should!");
 
   hr->set_next_young_region(_survivor_head);
   if (_survivor_head == NULL) {
-    _survivors_tail = hr;
+    _survivor_tail = hr;
   }
   _survivor_head = hr;
 
-  hr->set_survivor();
   ++_survivor_length;
 }
 
@@ -239,7 +231,7 @@
 
   empty_list(_survivor_head);
   _survivor_head = NULL;
-  _survivors_tail = NULL;
+  _survivor_tail = NULL;
   _survivor_length = 0;
 
   _last_sampled_rs_lengths = 0;
@@ -391,6 +383,7 @@
 
   // Add survivor regions to SurvRateGroup.
   _g1h->g1_policy()->note_start_adding_survivor_regions();
+  _g1h->g1_policy()->finished_recalculating_age_indexes(true /* is_survivors */);
   for (HeapRegion* curr = _survivor_head;
        curr != NULL;
        curr = curr->get_next_young_region()) {
@@ -401,7 +394,7 @@
   if (_survivor_head != NULL) {
     _head           = _survivor_head;
     _length         = _survivor_length + _scan_only_length;
-    _survivors_tail->set_next_young_region(_scan_only_head);
+    _survivor_tail->set_next_young_region(_scan_only_head);
   } else {
     _head           = _scan_only_head;
     _length         = _scan_only_length;
@@ -418,9 +411,9 @@
   _curr_scan_only   = NULL;
 
   _survivor_head    = NULL;
-  _survivors_tail   = NULL;
+  _survivor_tail   = NULL;
   _survivor_length  = 0;
-  _g1h->g1_policy()->finished_recalculating_age_indexes();
+  _g1h->g1_policy()->finished_recalculating_age_indexes(false /* is_survivors */);
 
   assert(check_list_well_formed(), "young list should be well formed");
 }
@@ -453,8 +446,61 @@
   gclog_or_tty->print_cr("");
 }
 
+void G1CollectedHeap::push_dirty_cards_region(HeapRegion* hr)
+{
+  // Claim the right to put the region on the dirty cards region list
+  // by installing a self pointer.
+  HeapRegion* next = hr->get_next_dirty_cards_region();
+  if (next == NULL) {
+    HeapRegion* res = (HeapRegion*)
+      Atomic::cmpxchg_ptr(hr, hr->next_dirty_cards_region_addr(),
+                          NULL);
+    if (res == NULL) {
+      HeapRegion* head;
+      do {
+        // Put the region to the dirty cards region list.
+        head = _dirty_cards_region_list;
+        next = (HeapRegion*)
+          Atomic::cmpxchg_ptr(hr, &_dirty_cards_region_list, head);
+        if (next == head) {
+          assert(hr->get_next_dirty_cards_region() == hr,
+                 "hr->get_next_dirty_cards_region() != hr");
+          if (next == NULL) {
+            // The last region in the list points to itself.
+            hr->set_next_dirty_cards_region(hr);
+          } else {
+            hr->set_next_dirty_cards_region(next);
+          }
+        }
+      } while (next != head);
+    }
+  }
+}
+
+HeapRegion* G1CollectedHeap::pop_dirty_cards_region()
+{
+  HeapRegion* head;
+  HeapRegion* hr;
+  do {
+    head = _dirty_cards_region_list;
+    if (head == NULL) {
+      return NULL;
+    }
+    HeapRegion* new_head = head->get_next_dirty_cards_region();
+    if (head == new_head) {
+      // The last region.
+      new_head = NULL;
+    }
+    hr = (HeapRegion*)Atomic::cmpxchg_ptr(new_head, &_dirty_cards_region_list,
+                                          head);
+  } while (hr != head);
+  assert(hr != NULL, "invariant");
+  hr->set_next_dirty_cards_region(NULL);
+  return hr;
+}
+
 void G1CollectedHeap::stop_conc_gc_threads() {
-  _cg1r->cg1rThread()->stop();
+  _cg1r->stop();
   _czft->stop();
   _cmThread->stop();
 }
@@ -535,7 +581,7 @@
            res->zero_fill_state() == HeapRegion::Allocated)),
          "Non-young alloc Regions must be zero filled (and non-H)");
 
-  if (G1TraceRegions) {
+  if (G1PrintRegions) {
     if (res != NULL) {
       gclog_or_tty->print_cr("new alloc region %d:["PTR_FORMAT", "PTR_FORMAT"], "
                              "top "PTR_FORMAT,
@@ -553,7 +599,7 @@
   if (_gc_alloc_region_counts[purpose] < g1_policy()->max_regions(purpose)) {
     alloc_region = newAllocRegion_work(word_size, true, zero_filled);
     if (purpose == GCAllocForSurvived && alloc_region != NULL) {
-      _young_list->add_survivor_region(alloc_region);
+      alloc_region->set_survivor();
     }
     ++_gc_alloc_region_counts[purpose];
   } else {
@@ -778,6 +824,12 @@
   }
 }
 
+void G1CollectedHeap::abandon_gc_alloc_regions() {
+  // first, make sure that the GC alloc region list is empty (it should!)
+  assert(_gc_alloc_region_list == NULL, "invariant");
+  release_gc_alloc_regions(true /* totally */);
+}
+
 class PostMCRemSetClearClosure: public HeapRegionClosure {
   ModRefBarrierSet* _mr_bs;
 public:
@@ -812,10 +864,48 @@
   }
 };
 
+class RebuildRSOutOfRegionClosure: public HeapRegionClosure {
+  G1CollectedHeap*   _g1h;
+  UpdateRSOopClosure _cl;
+  int                _worker_i;
+public:
+  RebuildRSOutOfRegionClosure(G1CollectedHeap* g1, int worker_i = 0) :
+    _cl(g1->g1_rem_set()->as_HRInto_G1RemSet(), worker_i),
+    _worker_i(worker_i),
+    _g1h(g1)
+  { }
+  bool doHeapRegion(HeapRegion* r) {
+    if (!r->continuesHumongous()) {
+      _cl.set_from(r);
+      r->oop_iterate(&_cl);
+    }
+    return false;
+  }
+};
+
+class ParRebuildRSTask: public AbstractGangTask {
+  G1CollectedHeap* _g1;
+public:
+  ParRebuildRSTask(G1CollectedHeap* g1)
+    : AbstractGangTask("ParRebuildRSTask"),
+      _g1(g1)
+  { }
+
+  void work(int i) {
+    RebuildRSOutOfRegionClosure rebuild_rs(_g1, i);
+    _g1->heap_region_par_iterate_chunked(&rebuild_rs, i,
+                                         HeapRegion::RebuildRSClaimValue);
+  }
+};
+
 void G1CollectedHeap::do_collection(bool full, bool clear_all_soft_refs,
                                     size_t word_size) {
   ResourceMark rm;
 
+  if (PrintHeapAtGC) {
+    Universe::print_heap_before_gc();
+  }
+
   if (full && DisableExplicitGC) {
     gclog_or_tty->print("\n\n\nDisabling Explicit GC\n\n\n");
     return;
@@ -841,7 +931,7 @@
     g1_policy()->record_full_collection_start();
 
     gc_prologue(true);
-    increment_total_collections();
+    increment_total_collections(true /* full gc */);
 
     size_t g1h_prev_used = used();
     assert(used() == recalculate_used(), "Should be equal");
@@ -872,6 +962,7 @@
 
     // Make sure we'll choose a new allocation region afterwards.
     abandon_cur_alloc_region();
+    abandon_gc_alloc_regions();
     assert(_cur_alloc_region == NULL, "Invariant.");
     g1_rem_set()->as_HRInto_G1RemSet()->cleanupHRRS();
     tear_down_region_lists();
@@ -912,30 +1003,42 @@
     if (VerifyAfterGC && total_collections() >= VerifyGCStartAt) {
       HandleMark hm;  // Discard invalid handles created during verification
       gclog_or_tty->print(" VerifyAfterGC:");
+      prepare_for_verify();
       Universe::verify(false);
     }
     NOT_PRODUCT(ref_processor()->verify_no_references_recorded());
 
     reset_gc_time_stamp();
     // Since everything potentially moved, we will clear all remembered
-    // sets, and clear all cards.  Later we will also cards in the used
-    // portion of the heap after the resizing (which could be a shrinking.)
-    // We will also reset the GC time stamps of the regions.
+    // sets, and clear all cards.  Later we will rebuild remebered
+    // sets. We will also reset the GC time stamps of the regions.
     PostMCRemSetClearClosure rs_clear(mr_bs());
     heap_region_iterate(&rs_clear);
 
     // Resize the heap if necessary.
     resize_if_necessary_after_full_collection(full ? 0 : word_size);
 
-    // Since everything potentially moved, we will clear all remembered
-    // sets, but also dirty all cards corresponding to used regions.
-    PostMCRemSetInvalidateClosure rs_invalidate(mr_bs());
-    heap_region_iterate(&rs_invalidate);
     if (_cg1r->use_cache()) {
       _cg1r->clear_and_record_card_counts();
       _cg1r->clear_hot_cache();
     }
 
+    // Rebuild remembered sets of all regions.
+    if (ParallelGCThreads > 0) {
+      ParRebuildRSTask rebuild_rs_task(this);
+      assert(check_heap_region_claim_values(
+             HeapRegion::InitialClaimValue), "sanity check");
+      set_par_threads(workers()->total_workers());
+      workers()->run_task(&rebuild_rs_task);
+      set_par_threads(0);
+      assert(check_heap_region_claim_values(
+             HeapRegion::RebuildRSClaimValue), "sanity check");
+      reset_heap_region_claim_values();
+    } else {
+      RebuildRSOutOfRegionClosure rebuild_rs(this);
+      heap_region_iterate(&rebuild_rs);
+    }
+
     if (PrintGC) {
       print_size_transition(gclog_or_tty, g1h_prev_used, used(), capacity());
     }
@@ -949,15 +1052,16 @@
     GCOverheadReporter::recordSTWEnd(end);
     g1_policy()->record_full_collection_end();
 
+#ifdef TRACESPINNING
+    ParallelTaskTerminator::print_termination_counts();
+#endif
+
     gc_epilogue(true);
 
-    // Abandon concurrent refinement.  This must happen last: in the
-    // dirty-card logging system, some cards may be dirty by weak-ref
-    // processing, and may be enqueued.  But the whole card table is
-    // dirtied, so this should abandon those logs, and set "do_traversal"
-    // to true.
-    concurrent_g1_refine()->set_pya_restart();
-
+    // Discard all rset updates
+    JavaThread::dirty_card_queue_set().abandon_logs();
+    assert(!G1DeferredRSUpdate
+           || (G1DeferredRSUpdate && (dirty_card_queue_set().completed_buffers_num() == 0)), "Should not be any");
     assert(regions_accounted_for(), "Region leakage!");
   }
 
@@ -966,6 +1070,10 @@
     assert( check_young_list_empty(false, false),
             "young list should be empty at this point");
   }
+
+  if (PrintHeapAtGC) {
+    Universe::print_heap_after_gc();
+  }
 }
 
 void G1CollectedHeap::do_full_collection(bool clear_all_soft_refs) {
@@ -1141,13 +1249,12 @@
                                                    bool par) {
   assert(!hr->continuesHumongous(), "should have filtered these out");
   size_t res = 0;
-  if (!hr->popular() && hr->used() > 0 && hr->garbage_bytes() == hr->used()) {
-    if (!hr->is_young()) {
-      if (G1PolicyVerbose > 0)
-        gclog_or_tty->print_cr("Freeing empty region "PTR_FORMAT "(" SIZE_FORMAT " bytes)"
-                               " during cleanup", hr, hr->used());
-      free_region_work(hr, pre_used, cleared_h, freed_regions, list, par);
-    }
+  if (hr->used() > 0 && hr->garbage_bytes() == hr->used() &&
+      !hr->is_young()) {
+    if (G1PolicyVerbose > 0)
+      gclog_or_tty->print_cr("Freeing empty region "PTR_FORMAT "(" SIZE_FORMAT " bytes)"
+                                                                               " during cleanup", hr, hr->used());
+    free_region_work(hr, pre_used, cleared_h, freed_regions, list, par);
   }
 }
 
@@ -1248,7 +1355,7 @@
 }
 
 void G1CollectedHeap::shrink(size_t shrink_bytes) {
-  release_gc_alloc_regions();
+  release_gc_alloc_regions(true /* totally */);
   tear_down_region_lists();  // We will rebuild them in a moment.
   shrink_helper(shrink_bytes);
   rebuild_region_lists();
@@ -1276,17 +1383,15 @@
   _refine_cte_cl(NULL),
   _free_region_list(NULL), _free_region_list_size(0),
   _free_regions(0),
-  _popular_object_boundary(NULL),
-  _cur_pop_hr_index(0),
-  _popular_regions_to_be_evacuated(NULL),
-  _pop_obj_rc_at_copy(),
   _full_collection(false),
   _unclean_region_list(),
   _unclean_regions_coming(false),
   _young_list(new YoungList(this)),
   _gc_time_stamp(0),
-  _surviving_young_words(NULL)
-{
+  _surviving_young_words(NULL),
+  _in_cset_fast_test(NULL),
+  _in_cset_fast_test_base(NULL),
+  _dirty_cards_region_list(NULL) {
   _g1h = this; // To catch bugs.
   if (_process_strong_tasks == NULL || !_process_strong_tasks->valid()) {
     vm_exit_during_initialization("Failed necessary allocation.");
@@ -1311,9 +1416,19 @@
   }
 
   for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
-    _gc_alloc_regions[ap]       = NULL;
-    _gc_alloc_region_counts[ap] = 0;
-  }
+    _gc_alloc_regions[ap]          = NULL;
+    _gc_alloc_region_counts[ap]    = 0;
+    _retained_gc_alloc_regions[ap] = NULL;
+    // by default, we do not retain a GC alloc region for each ap;
+    // we'll override this, when appropriate, below
+    _retain_gc_alloc_region[ap]    = false;
+  }
+
+  // We will try to remember the last half-full tenured region we
+  // allocated to at the end of a collection so that we can re-use it
+  // during the next collection.
+  _retain_gc_alloc_region[GCAllocForTenured]  = true;
+
   guarantee(_task_queues != NULL, "task_queues allocation failure.");
 }
 
@@ -1345,9 +1460,34 @@
   // Reserve the maximum.
   PermanentGenerationSpec* pgs = collector_policy()->permanent_generation();
   // Includes the perm-gen.
+
+  const size_t total_reserved = max_byte_size + pgs->max_size();
+  char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
+
   ReservedSpace heap_rs(max_byte_size + pgs->max_size(),
                         HeapRegion::GrainBytes,
-                        false /*ism*/);
+                        false /*ism*/, 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);
+      ReservedSpace heap_rs0(total_reserved, HeapRegion::GrainBytes,
+                             false /*ism*/, 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, "");
+        ReservedSpace heap_rs1(total_reserved, HeapRegion::GrainBytes,
+                               false /*ism*/, 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");
@@ -1403,6 +1543,15 @@
   guarantee(_hrs != NULL, "Couldn't allocate HeapRegionSeq");
   guarantee(_cur_alloc_region == NULL, "from constructor");
 
+  // 6843694 - ensure that the maximum region index can fit
+  // in the remembered set structures.
+  const size_t max_region_idx = ((size_t)1 << (sizeof(RegionIdx_t)*BitsPerByte-1)) - 1;
+  guarantee((max_regions() - 1) <= max_region_idx, "too many regions");
+
+  const size_t cards_per_region = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift;
+  size_t max_cards_per_region = ((size_t)1 << (sizeof(CardIdx_t)*BitsPerByte-1)) - 1;
+  guarantee(cards_per_region < max_cards_per_region, "too many cards per region");
+
   _bot_shared = new G1BlockOffsetSharedArray(_reserved,
                                              heap_word_size(init_byte_size));
 
@@ -1418,26 +1567,11 @@
     _czft = new ConcurrentZFThread();
   }
 
-
-
-  // Allocate the popular regions; take them off free lists.
-  size_t pop_byte_size = G1NumPopularRegions * HeapRegion::GrainBytes;
-  expand(pop_byte_size);
-  _popular_object_boundary =
-    _g1_reserved.start() + (G1NumPopularRegions * HeapRegion::GrainWords);
-  for (int i = 0; i < G1NumPopularRegions; i++) {
-    HeapRegion* hr = newAllocRegion(HeapRegion::GrainWords);
-    //    assert(hr != NULL && hr->bottom() < _popular_object_boundary,
-    //     "Should be enough, and all should be below boundary.");
-    hr->set_popular(true);
-  }
-  assert(_cur_pop_hr_index == 0, "Start allocating at the first region.");
-
   // Initialize the from_card cache structure of HeapRegionRemSet.
   HeapRegionRemSet::init_heap(max_regions());
 
-  // Now expand into the rest of the initial heap size.
-  expand(init_byte_size - pop_byte_size);
+  // Now expand into the initial heap size.
+  expand(init_byte_size);
 
   // Perform any initialization actions delegated to the policy.
   g1_policy()->init();
@@ -1454,11 +1588,18 @@
                                                SATB_Q_FL_lock,
                                                0,
                                                Shared_SATB_Q_lock);
-  if (G1RSBarrierUseQueue) {
-    JavaThread::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
-                                                  DirtyCardQ_FL_lock,
-                                                  G1DirtyCardQueueMax,
-                                                  Shared_DirtyCardQ_lock);
+
+  JavaThread::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
+                                                DirtyCardQ_FL_lock,
+                                                G1DirtyCardQueueMax,
+                                                Shared_DirtyCardQ_lock);
+
+  if (G1DeferredRSUpdate) {
+    dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
+                                      DirtyCardQ_FL_lock,
+                                      0,
+                                      Shared_DirtyCardQ_lock,
+                                      &JavaThread::dirty_card_queue_set());
   }
   // In case we're keeping closure specialization stats, initialize those
   // counts and that mechanism.
@@ -1517,8 +1658,15 @@
   assert(Heap_lock->owner() != NULL,
          "Should be owned on this thread's behalf.");
   size_t result = _summary_bytes_used;
-  if (_cur_alloc_region != NULL)
-    result += _cur_alloc_region->used();
+  // Read only once in case it is set to NULL concurrently
+  HeapRegion* hr = _cur_alloc_region;
+  if (hr != NULL)
+    result += hr->used();
+  return result;
+}
+
+size_t G1CollectedHeap::used_unlocked() const {
+  size_t result = _summary_bytes_used;
   return result;
 }
 
@@ -1545,8 +1693,7 @@
 class SumUsedRegionsClosure: public HeapRegionClosure {
   size_t _num;
 public:
-  // _num is set to 1 to account for the popular region
-  SumUsedRegionsClosure() : _num(G1NumPopularRegions) {}
+  SumUsedRegionsClosure() : _num(0) {}
   bool doHeapRegion(HeapRegion* r) {
     if (r->continuesHumongous() || r->used() > 0 || r->is_gc_alloc_region()) {
       _num += 1;
@@ -1649,14 +1796,20 @@
   }
 };
 
-void G1CollectedHeap::oop_iterate(OopClosure* cl) {
+void G1CollectedHeap::oop_iterate(OopClosure* cl, bool do_perm) {
   IterateOopClosureRegionClosure blk(_g1_committed, cl);
   _hrs->iterate(&blk);
+  if (do_perm) {
+    perm_gen()->oop_iterate(cl);
+  }
 }
 
-void G1CollectedHeap::oop_iterate(MemRegion mr, OopClosure* cl) {
+void G1CollectedHeap::oop_iterate(MemRegion mr, OopClosure* cl, bool do_perm) {
   IterateOopClosureRegionClosure blk(mr, cl);
   _hrs->iterate(&blk);
+  if (do_perm) {
+    perm_gen()->oop_iterate(cl);
+  }
 }
 
 // Iterates an ObjectClosure over all objects within a HeapRegion.
@@ -1673,9 +1826,12 @@
   }
 };
 
-void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
+void G1CollectedHeap::object_iterate(ObjectClosure* cl, bool do_perm) {
   IterateObjectClosureRegionClosure blk(cl);
   _hrs->iterate(&blk);
+  if (do_perm) {
+    perm_gen()->object_iterate(cl);
+  }
 }
 
 void G1CollectedHeap::object_iterate_since_last_GC(ObjectClosure* cl) {
@@ -1984,28 +2140,33 @@
   VerifyLivenessOopClosure(G1CollectedHeap* _g1h) {
     g1h = _g1h;
   }
-  void do_oop(narrowOop *p) {
-    guarantee(false, "NYI");
-  }
-  void do_oop(oop *p) {
-    oop obj = *p;
-    assert(obj == NULL || !g1h->is_obj_dead(obj),
-           "Dead object referenced by a not dead object");
+  void do_oop(narrowOop *p) { do_oop_work(p); }
+  void do_oop(      oop *p) { do_oop_work(p); }
+
+  template <class T> void do_oop_work(T *p) {
+    oop obj = oopDesc::load_decode_heap_oop(p);
+    guarantee(obj == NULL || !g1h->is_obj_dead(obj),
+              "Dead object referenced by a not dead object");
   }
 };
 
 class VerifyObjsInRegionClosure: public ObjectClosure {
+private:
   G1CollectedHeap* _g1h;
   size_t _live_bytes;
   HeapRegion *_hr;
+  bool _use_prev_marking;
 public:
-  VerifyObjsInRegionClosure(HeapRegion *hr) : _live_bytes(0), _hr(hr) {
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  VerifyObjsInRegionClosure(HeapRegion *hr, bool use_prev_marking)
+    : _live_bytes(0), _hr(hr), _use_prev_marking(use_prev_marking) {
     _g1h = G1CollectedHeap::heap();
   }
   void do_object(oop o) {
     VerifyLivenessOopClosure isLive(_g1h);
     assert(o != NULL, "Huh?");
-    if (!_g1h->is_obj_dead(o)) {
+    if (!_g1h->is_obj_dead_cond(o, _use_prev_marking)) {
       o->oop_iterate(&isLive);
       if (!_hr->obj_allocated_since_prev_marking(o))
         _live_bytes += (o->size() * HeapWordSize);
@@ -2044,25 +2205,24 @@
 };
 
 class VerifyRegionClosure: public HeapRegionClosure {
-public:
+private:
   bool _allow_dirty;
   bool _par;
-  VerifyRegionClosure(bool allow_dirty, bool par = false)
-    : _allow_dirty(allow_dirty), _par(par) {}
+  bool _use_prev_marking;
+public:
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  VerifyRegionClosure(bool allow_dirty, bool par, bool use_prev_marking)
+    : _allow_dirty(allow_dirty),
+      _par(par),
+      _use_prev_marking(use_prev_marking) {}
+
   bool doHeapRegion(HeapRegion* r) {
     guarantee(_par || r->claim_value() == HeapRegion::InitialClaimValue,
               "Should be unclaimed at verify points.");
-    if (r->isHumongous()) {
-      if (r->startsHumongous()) {
-        // Verify the single H object.
-        oop(r->bottom())->verify();
-        size_t word_sz = oop(r->bottom())->size();
-        guarantee(r->top() == r->bottom() + word_sz,
-                  "Only one object in a humongous region");
-      }
-    } else {
-      VerifyObjsInRegionClosure not_dead_yet_cl(r);
-      r->verify(_allow_dirty);
+    if (!r->continuesHumongous()) {
+      VerifyObjsInRegionClosure not_dead_yet_cl(r, _use_prev_marking);
+      r->verify(_allow_dirty, _use_prev_marking);
       r->object_iterate(&not_dead_yet_cl);
       guarantee(r->max_live_bytes() >= not_dead_yet_cl.live_bytes(),
                 "More live objects than counted in last complete marking.");
@@ -2075,21 +2235,22 @@
 private:
   G1CollectedHeap* _g1h;
   bool             _failures;
-
+  bool             _use_prev_marking;
 public:
-  VerifyRootsClosure() :
-    _g1h(G1CollectedHeap::heap()), _failures(false) { }
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  VerifyRootsClosure(bool use_prev_marking) :
+    _g1h(G1CollectedHeap::heap()),
+    _failures(false),
+    _use_prev_marking(use_prev_marking) { }
 
   bool failures() { return _failures; }
 
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-
-  void do_oop(oop* p) {
-    oop obj = *p;
-    if (obj != NULL) {
-      if (_g1h->is_obj_dead(obj)) {
+  template <class T> void do_oop_nv(T* p) {
+    T heap_oop = oopDesc::load_heap_oop(p);
+    if (!oopDesc::is_null(heap_oop)) {
+      oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
+      if (_g1h->is_obj_dead_cond(obj, _use_prev_marking)) {
         gclog_or_tty->print_cr("Root location "PTR_FORMAT" "
                                "points to dead obj "PTR_FORMAT, p, (void*) obj);
         obj->print_on(gclog_or_tty);
@@ -2097,6 +2258,9 @@
       }
     }
   }
+
+  void do_oop(oop* p)       { do_oop_nv(p); }
+  void do_oop(narrowOop* p) { do_oop_nv(p); }
 };
 
 // This is the task used for parallel heap verification.
@@ -2105,23 +2269,36 @@
 private:
   G1CollectedHeap* _g1h;
   bool _allow_dirty;
+  bool _use_prev_marking;
 
 public:
-  G1ParVerifyTask(G1CollectedHeap* g1h, bool allow_dirty) :
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  G1ParVerifyTask(G1CollectedHeap* g1h, bool allow_dirty,
+                  bool use_prev_marking) :
     AbstractGangTask("Parallel verify task"),
-    _g1h(g1h), _allow_dirty(allow_dirty) { }
+    _g1h(g1h),
+    _allow_dirty(allow_dirty),
+    _use_prev_marking(use_prev_marking) { }
 
   void work(int worker_i) {
-    VerifyRegionClosure blk(_allow_dirty, true);
+    HandleMark hm;
+    VerifyRegionClosure blk(_allow_dirty, true, _use_prev_marking);
     _g1h->heap_region_par_iterate_chunked(&blk, worker_i,
                                           HeapRegion::ParVerifyClaimValue);
   }
 };
 
 void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
+  verify(allow_dirty, silent, /* use_prev_marking */ true);
+}
+
+void G1CollectedHeap::verify(bool allow_dirty,
+                             bool silent,
+                             bool use_prev_marking) {
   if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
     if (!silent) { gclog_or_tty->print("roots "); }
-    VerifyRootsClosure rootsCl;
+    VerifyRootsClosure rootsCl(use_prev_marking);
     process_strong_roots(false,
                          SharedHeap::SO_AllClasses,
                          &rootsCl,
@@ -2132,7 +2309,7 @@
       assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
              "sanity check");
 
-      G1ParVerifyTask task(this, allow_dirty);
+      G1ParVerifyTask task(this, allow_dirty, use_prev_marking);
       int n_workers = workers()->total_workers();
       set_par_threads(n_workers);
       workers()->run_task(&task);
@@ -2146,7 +2323,7 @@
       assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
              "sanity check");
     } else {
-      VerifyRegionClosure blk(allow_dirty);
+      VerifyRegionClosure blk(allow_dirty, false, use_prev_marking);
       _hrs->iterate(&blk);
     }
     if (!silent) gclog_or_tty->print("remset ");
@@ -2167,13 +2344,50 @@
   }
 };
 
-void G1CollectedHeap::print() const { print_on(gclog_or_tty); }
+void G1CollectedHeap::print() const { print_on(tty); }
 
 void G1CollectedHeap::print_on(outputStream* st) const {
+  print_on(st, PrintHeapAtGCExtended);
+}
+
+void G1CollectedHeap::print_on(outputStream* st, bool extended) const {
+  st->print(" %-20s", "garbage-first heap");
+  st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K",
+            capacity()/K, used_unlocked()/K);
+  st->print(" [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT ")",
+            _g1_storage.low_boundary(),
+            _g1_storage.high(),
+            _g1_storage.high_boundary());
+  st->cr();
+  st->print("  region size " SIZE_FORMAT "K, ",
+            HeapRegion::GrainBytes/K);
+  size_t young_regions = _young_list->length();
+  st->print(SIZE_FORMAT " young (" SIZE_FORMAT "K), ",
+            young_regions, young_regions * HeapRegion::GrainBytes / K);
+  size_t survivor_regions = g1_policy()->recorded_survivor_regions();
+  st->print(SIZE_FORMAT " survivors (" SIZE_FORMAT "K)",
+            survivor_regions, survivor_regions * HeapRegion::GrainBytes / K);
+  st->cr();
+  perm()->as_gen()->print_on(st);
+  if (extended) {
+    print_on_extended(st);
+  }
+}
+
+void G1CollectedHeap::print_on_extended(outputStream* st) const {
   PrintRegionClosure blk(st);
   _hrs->iterate(&blk);
 }
 
+class PrintOnThreadsClosure : public ThreadClosure {
+  outputStream* _st;
+public:
+  PrintOnThreadsClosure(outputStream* st) : _st(st) { }
+  virtual void do_thread(Thread *t) {
+    t->print_on(_st);
+  }
+};
+
 void G1CollectedHeap::print_gc_threads_on(outputStream* st) const {
   if (ParallelGCThreads > 0) {
     workers()->print_worker_threads();
@@ -2181,8 +2395,9 @@
   st->print("\"G1 concurrent mark GC Thread\" ");
   _cmThread->print();
   st->cr();
-  st->print("\"G1 concurrent refinement GC Thread\" ");
-  _cg1r->cg1rThread()->print_on(st);
+  st->print("\"G1 concurrent refinement GC Threads\" ");
+  PrintOnThreadsClosure p(st);
+  _cg1r->threads_do(&p);
   st->cr();
   st->print("\"G1 zero-fill GC Thread\" ");
   _czft->print_on(st);
@@ -2194,7 +2409,7 @@
     workers()->threads_do(tc);
   }
   tc->do_thread(_cmThread);
-  tc->do_thread(_cg1r->cg1rThread());
+  _cg1r->threads_do(tc);
   tc->do_thread(_czft);
 }
 
@@ -2207,18 +2422,15 @@
     // to that.
     g1_policy()->print_tracing_info();
   }
-  if (SummarizeG1RSStats) {
+  if (G1SummarizeRSetStats) {
     g1_rem_set()->print_summary_info();
   }
-  if (SummarizeG1ConcMark) {
+  if (G1SummarizeConcurrentMark) {
     concurrent_mark()->print_summary_info();
   }
-  if (SummarizeG1ZFStats) {
+  if (G1SummarizeZFStats) {
     ConcurrentZFThread::print_summary_info();
   }
-  if (G1SummarizePopularity) {
-    print_popularity_summary_info();
-  }
   g1_policy()->print_yg_surv_rate_info();
 
   GCOverheadReporter::printGCOverhead();
@@ -2243,10 +2455,6 @@
 }
 
 void G1CollectedHeap::gc_prologue(bool full /* Ignored */) {
-  if (PrintHeapAtGC){
-    gclog_or_tty->print_cr(" {Heap before GC collections=%d:", total_collections());
-    Universe::print();
-  }
   assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer");
   // Call allocation profiler
   AllocationProfiler::iterate_since_last_gc();
@@ -2260,12 +2468,6 @@
   // is set.
   COMPILER2_PRESENT(assert(DerivedPointerTable::is_empty(),
                         "derived pointer present"));
-
-  if (PrintHeapAtGC){
-    gclog_or_tty->print_cr(" Heap after GC collections=%d:", total_collections());
-    Universe::print();
-    gclog_or_tty->print("} ");
-  }
 }
 
 void G1CollectedHeap::do_collection_pause() {
@@ -2288,12 +2490,10 @@
 
 void
 G1CollectedHeap::doConcurrentMark() {
-  if (G1ConcMark) {
-    MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
-    if (!_cmThread->in_progress()) {
-      _cmThread->set_started();
-      CGC_lock->notify();
-    }
+  MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
+  if (!_cmThread->in_progress()) {
+    _cmThread->set_started();
+    CGC_lock->notify();
   }
 }
 
@@ -2310,10 +2510,9 @@
 void
 G1CollectedHeap::checkConcurrentMark() {
     VerifyMarkedObjsClosure verifycl(this);
-    doConcurrentMark();
     //    MutexLockerEx x(getMarkBitMapLock(),
     //              Mutex::_no_safepoint_check_flag);
-    object_iterate(&verifycl);
+    object_iterate(&verifycl, false);
 }
 
 void G1CollectedHeap::do_sync_mark() {
@@ -2371,9 +2570,11 @@
                           "Not enough space for young surv words summary.");
   }
   memset(_surviving_young_words, 0, array_length * sizeof(size_t));
+#ifdef ASSERT
   for (size_t i = 0;  i < array_length; ++i) {
-    guarantee( _surviving_young_words[i] == 0, "invariant" );
-  }
+    assert( _surviving_young_words[i] == 0, "memset above" );
+  }
+#endif // !ASSERT
 }
 
 void
@@ -2394,253 +2595,264 @@
 // </NEW PREDICTION>
 
 void
-G1CollectedHeap::do_collection_pause_at_safepoint(HeapRegion* popular_region) {
-  char verbose_str[128];
-  sprintf(verbose_str, "GC pause ");
-  if (popular_region != NULL)
-    strcat(verbose_str, "(popular)");
-  else if (g1_policy()->in_young_gc_mode()) {
-    if (g1_policy()->full_young_gcs())
-      strcat(verbose_str, "(young)");
-    else
-      strcat(verbose_str, "(partial)");
-  }
-  bool reset_should_initiate_conc_mark = false;
-  if (popular_region != NULL && g1_policy()->should_initiate_conc_mark()) {
-    // we currently do not allow an initial mark phase to be piggy-backed
-    // on a popular pause
-    reset_should_initiate_conc_mark = true;
-    g1_policy()->unset_should_initiate_conc_mark();
-  }
-  if (g1_policy()->should_initiate_conc_mark())
-    strcat(verbose_str, " (initial-mark)");
-
-  GCCauseSetter x(this, (popular_region == NULL ?
-                         GCCause::_g1_inc_collection_pause :
-                         GCCause::_g1_pop_region_collection_pause));
-
-  // if PrintGCDetails is on, we'll print long statistics information
-  // in the collector policy code, so let's not print this as the output
-  // is messy if we do.
-  gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps);
-  TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty);
-  TraceTime t(verbose_str, PrintGC && !PrintGCDetails, true, gclog_or_tty);
-
-  ResourceMark rm;
-  assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
-  assert(Thread::current() == VMThread::vm_thread(), "should be in vm thread");
-  guarantee(!is_gc_active(), "collection is not reentrant");
-  assert(regions_accounted_for(), "Region leakage!");
-
-  increment_gc_time_stamp();
-
-  if (g1_policy()->in_young_gc_mode()) {
-    assert(check_young_list_well_formed(),
-                "young list should be well formed");
-  }
-
-  if (GC_locker::is_active()) {
-    return; // GC is disabled (e.g. JNI GetXXXCritical operation)
-  }
-
-  bool abandoned = false;
-  { // Call to jvmpi::post_class_unload_events must occur outside of active GC
-    IsGCActiveMark x;
-
-    gc_prologue(false);
-    increment_total_collections();
-
-#if G1_REM_SET_LOGGING
-    gclog_or_tty->print_cr("\nJust chose CS, heap:");
-    print();
-#endif
-
-    if (VerifyBeforeGC && total_collections() >= VerifyGCStartAt) {
-      HandleMark hm;  // Discard invalid handles created during verification
-      prepare_for_verify();
-      gclog_or_tty->print(" VerifyBeforeGC:");
-      Universe::verify(false);
+G1CollectedHeap::do_collection_pause_at_safepoint() {
+  if (PrintHeapAtGC) {
+    Universe::print_heap_before_gc();
+  }
+
+  {
+    char verbose_str[128];
+    sprintf(verbose_str, "GC pause ");
+    if (g1_policy()->in_young_gc_mode()) {
+      if (g1_policy()->full_young_gcs())
+        strcat(verbose_str, "(young)");
+      else
+        strcat(verbose_str, "(partial)");
     }
-
-    COMPILER2_PRESENT(DerivedPointerTable::clear());
-
-    // We want to turn off ref discovery, if necessary, and turn it back on
-    // on again later if we do.
-    bool was_enabled = ref_processor()->discovery_enabled();
-    if (was_enabled) ref_processor()->disable_discovery();
-
-    // Forget the current alloc region (we might even choose it to be part
-    // of the collection set!).
-    abandon_cur_alloc_region();
-
-    // The elapsed time induced by the start time below deliberately elides
-    // the possible verification above.
-    double start_time_sec = os::elapsedTime();
-    GCOverheadReporter::recordSTWStart(start_time_sec);
-    size_t start_used_bytes = used();
-    if (!G1ConcMark) {
-      do_sync_mark();
+    if (g1_policy()->should_initiate_conc_mark())
+      strcat(verbose_str, " (initial-mark)");
+
+    GCCauseSetter x(this, GCCause::_g1_inc_collection_pause);
+
+    // if PrintGCDetails is on, we'll print long statistics information
+    // in the collector policy code, so let's not print this as the output
+    // is messy if we do.
+    gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps);
+    TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty);
+    TraceTime t(verbose_str, PrintGC && !PrintGCDetails, true, gclog_or_tty);
+
+    ResourceMark rm;
+    assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
+    assert(Thread::current() == VMThread::vm_thread(), "should be in vm thread");
+    guarantee(!is_gc_active(), "collection is not reentrant");
+    assert(regions_accounted_for(), "Region leakage!");
+
+    increment_gc_time_stamp();
+
+    if (g1_policy()->in_young_gc_mode()) {
+      assert(check_young_list_well_formed(),
+             "young list should be well formed");
     }
 
-    g1_policy()->record_collection_pause_start(start_time_sec,
-                                               start_used_bytes);
-
-#if SCAN_ONLY_VERBOSE
-    _young_list->print();
-#endif // SCAN_ONLY_VERBOSE
-
-    if (g1_policy()->should_initiate_conc_mark()) {
-      concurrent_mark()->checkpointRootsInitialPre();
+    if (GC_locker::is_active()) {
+      return; // GC is disabled (e.g. JNI GetXXXCritical operation)
     }
-    save_marks();
-
-    // We must do this before any possible evacuation that should propogate
-    // marks, including evacuation of popular objects in a popular pause.
-    if (mark_in_progress()) {
-      double start_time_sec = os::elapsedTime();
-
-      _cm->drainAllSATBBuffers();
-      double finish_mark_ms = (os::elapsedTime() - start_time_sec) * 1000.0;
-      g1_policy()->record_satb_drain_time(finish_mark_ms);
-
-    }
-    // Record the number of elements currently on the mark stack, so we
-    // only iterate over these.  (Since evacuation may add to the mark
-    // stack, doing more exposes race conditions.)  If no mark is in
-    // progress, this will be zero.
-    _cm->set_oops_do_bound();
-
-    assert(regions_accounted_for(), "Region leakage.");
 
     bool abandoned = false;
-
-    if (mark_in_progress())
-      concurrent_mark()->newCSet();
-
-    // Now choose the CS.
-    if (popular_region == NULL) {
-      g1_policy()->choose_collection_set();
-    } else {
-      // We may be evacuating a single region (for popularity).
-      g1_policy()->record_popular_pause_preamble_start();
-      popularity_pause_preamble(popular_region);
-      g1_policy()->record_popular_pause_preamble_end();
-      abandoned = (g1_policy()->collection_set() == NULL);
-      // Now we allow more regions to be added (we have to collect
-      // all popular regions).
-      if (!abandoned) {
-        g1_policy()->choose_collection_set(popular_region);
-      }
-    }
-    // We may abandon a pause if we find no region that will fit in the MMU
-    // pause.
-    abandoned = (g1_policy()->collection_set() == NULL);
-
-    // Nothing to do if we were unable to choose a collection set.
-    if (!abandoned) {
+    { // Call to jvmpi::post_class_unload_events must occur outside of active GC
+      IsGCActiveMark x;
+
+      gc_prologue(false);
+      increment_total_collections(false /* full gc */);
+
 #if G1_REM_SET_LOGGING
-      gclog_or_tty->print_cr("\nAfter pause, heap:");
+      gclog_or_tty->print_cr("\nJust chose CS, heap:");
       print();
 #endif
 
-      setup_surviving_young_words();
-
-      // Set up the gc allocation regions.
-      get_gc_alloc_regions();
-
-      // Actually do the work...
-      evacuate_collection_set();
-      free_collection_set(g1_policy()->collection_set());
-      g1_policy()->clear_collection_set();
-
-      if (popular_region != NULL) {
-        // We have to wait until now, because we don't want the region to
-        // be rescheduled for pop-evac during RS update.
-        popular_region->set_popular_pending(false);
+      if (VerifyBeforeGC && total_collections() >= VerifyGCStartAt) {
+        HandleMark hm;  // Discard invalid handles created during verification
+        prepare_for_verify();
+        gclog_or_tty->print(" VerifyBeforeGC:");
+        Universe::verify(false);
       }
 
-      release_gc_alloc_regions();
-
-      cleanup_surviving_young_words();
-
-      if (g1_policy()->in_young_gc_mode()) {
-        _young_list->reset_sampled_info();
-        assert(check_young_list_empty(true),
-               "young list should be empty");
+      COMPILER2_PRESENT(DerivedPointerTable::clear());
+
+      // We want to turn off ref discovery, if necessary, and turn it back on
+      // on again later if we do. XXX Dubious: why is discovery disabled?
+      bool was_enabled = ref_processor()->discovery_enabled();
+      if (was_enabled) ref_processor()->disable_discovery();
+
+      // Forget the current alloc region (we might even choose it to be part
+      // of the collection set!).
+      abandon_cur_alloc_region();
+
+      // The elapsed time induced by the start time below deliberately elides
+      // the possible verification above.
+      double start_time_sec = os::elapsedTime();
+      GCOverheadReporter::recordSTWStart(start_time_sec);
+      size_t start_used_bytes = used();
+
+      g1_policy()->record_collection_pause_start(start_time_sec,
+                                                 start_used_bytes);
+
+      guarantee(_in_cset_fast_test == NULL, "invariant");
+      guarantee(_in_cset_fast_test_base == NULL, "invariant");
+      _in_cset_fast_test_length = max_regions();
+      _in_cset_fast_test_base =
+                             NEW_C_HEAP_ARRAY(bool, _in_cset_fast_test_length);
+      memset(_in_cset_fast_test_base, false,
+                                     _in_cset_fast_test_length * sizeof(bool));
+      // We're biasing _in_cset_fast_test to avoid subtracting the
+      // beginning of the heap every time we want to index; basically
+      // it's the same with what we do with the card table.
+      _in_cset_fast_test = _in_cset_fast_test_base -
+              ((size_t) _g1_reserved.start() >> HeapRegion::LogOfHRGrainBytes);
 
 #if SCAN_ONLY_VERBOSE
-        _young_list->print();
+      _young_list->print();
 #endif // SCAN_ONLY_VERBOSE
 
-        _young_list->reset_auxilary_lists();
+      if (g1_policy()->should_initiate_conc_mark()) {
+        concurrent_mark()->checkpointRootsInitialPre();
+      }
+      save_marks();
+
+      // We must do this before any possible evacuation that should propagate
+      // marks.
+      if (mark_in_progress()) {
+        double start_time_sec = os::elapsedTime();
+
+        _cm->drainAllSATBBuffers();
+        double finish_mark_ms = (os::elapsedTime() - start_time_sec) * 1000.0;
+        g1_policy()->record_satb_drain_time(finish_mark_ms);
       }
-    } else {
-      COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
-    }
-
-    if (evacuation_failed()) {
-      _summary_bytes_used = recalculate_used();
-    } else {
-      // The "used" of the the collection set have already been subtracted
-      // when they were freed.  Add in the bytes evacuated.
-      _summary_bytes_used += g1_policy()->bytes_in_to_space();
-    }
-
-    if (g1_policy()->in_young_gc_mode() &&
-        g1_policy()->should_initiate_conc_mark()) {
-      concurrent_mark()->checkpointRootsInitialPost();
-      set_marking_started();
-      doConcurrentMark();
-    }
+      // Record the number of elements currently on the mark stack, so we
+      // only iterate over these.  (Since evacuation may add to the mark
+      // stack, doing more exposes race conditions.)  If no mark is in
+      // progress, this will be zero.
+      _cm->set_oops_do_bound();
+
+      assert(regions_accounted_for(), "Region leakage.");
+
+      if (mark_in_progress())
+        concurrent_mark()->newCSet();
+
+      // Now choose the CS.
+      g1_policy()->choose_collection_set();
+
+      // We may abandon a pause if we find no region that will fit in the MMU
+      // pause.
+      bool abandoned = (g1_policy()->collection_set() == NULL);
+
+      // Nothing to do if we were unable to choose a collection set.
+      if (!abandoned) {
+#if G1_REM_SET_LOGGING
+        gclog_or_tty->print_cr("\nAfter pause, heap:");
+        print();
+#endif
+
+        setup_surviving_young_words();
+
+        // Set up the gc allocation regions.
+        get_gc_alloc_regions();
+
+        // Actually do the work...
+        evacuate_collection_set();
+        free_collection_set(g1_policy()->collection_set());
+        g1_policy()->clear_collection_set();
+
+        FREE_C_HEAP_ARRAY(bool, _in_cset_fast_test_base);
+        // this is more for peace of mind; we're nulling them here and
+        // we're expecting them to be null at the beginning of the next GC
+        _in_cset_fast_test = NULL;
+        _in_cset_fast_test_base = NULL;
+
+        release_gc_alloc_regions(false /* totally */);
+
+        cleanup_surviving_young_words();
+
+        if (g1_policy()->in_young_gc_mode()) {
+          _young_list->reset_sampled_info();
+          assert(check_young_list_empty(true),
+                 "young list should be empty");
 
 #if SCAN_ONLY_VERBOSE
-    _young_list->print();
+          _young_list->print();
 #endif // SCAN_ONLY_VERBOSE
 
-    double end_time_sec = os::elapsedTime();
-    g1_policy()->record_pause_time((end_time_sec - start_time_sec)*1000.0);
-    GCOverheadReporter::recordSTWEnd(end_time_sec);
-    g1_policy()->record_collection_pause_end(popular_region != NULL,
-                                             abandoned);
-
-    assert(regions_accounted_for(), "Region leakage.");
-
-    if (VerifyAfterGC && total_collections() >= VerifyGCStartAt) {
-      HandleMark hm;  // Discard invalid handles created during verification
-      gclog_or_tty->print(" VerifyAfterGC:");
-      Universe::verify(false);
+          g1_policy()->record_survivor_regions(_young_list->survivor_length(),
+                                          _young_list->first_survivor_region(),
+                                          _young_list->last_survivor_region());
+          _young_list->reset_auxilary_lists();
+        }
+      } else {
+        COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
+      }
+
+      if (evacuation_failed()) {
+        _summary_bytes_used = recalculate_used();
+      } else {
+        // The "used" of the the collection set have already been subtracted
+        // when they were freed.  Add in the bytes evacuated.
+        _summary_bytes_used += g1_policy()->bytes_in_to_space();
+      }
+
+      if (g1_policy()->in_young_gc_mode() &&
+          g1_policy()->should_initiate_conc_mark()) {
+        concurrent_mark()->checkpointRootsInitialPost();
+        set_marking_started();
+        // CAUTION: after the doConcurrentMark() call below,
+        // the concurrent marking thread(s) could be running
+        // concurrently with us. Make sure that anything after
+        // this point does not assume that we are the only GC thread
+        // running. Note: of course, the actual marking work will
+        // not start until the safepoint itself is released in
+        // ConcurrentGCThread::safepoint_desynchronize().
+        doConcurrentMark();
+      }
+
+#if SCAN_ONLY_VERBOSE
+      _young_list->print();
+#endif // SCAN_ONLY_VERBOSE
+
+      double end_time_sec = os::elapsedTime();
+      double pause_time_ms = (end_time_sec - start_time_sec) * MILLIUNITS;
+      g1_policy()->record_pause_time_ms(pause_time_ms);
+      GCOverheadReporter::recordSTWEnd(end_time_sec);
+      g1_policy()->record_collection_pause_end(abandoned);
+
+      assert(regions_accounted_for(), "Region leakage.");
+
+      if (VerifyAfterGC && total_collections() >= VerifyGCStartAt) {
+        HandleMark hm;  // Discard invalid handles created during verification
+        gclog_or_tty->print(" VerifyAfterGC:");
+        prepare_for_verify();
+        Universe::verify(false);
+      }
+
+      if (was_enabled) ref_processor()->enable_discovery();
+
+      {
+        size_t expand_bytes = g1_policy()->expansion_amount();
+        if (expand_bytes > 0) {
+          size_t bytes_before = capacity();
+          expand(expand_bytes);
+        }
+      }
+
+      if (mark_in_progress()) {
+        concurrent_mark()->update_g1_committed();
+      }
+
+#ifdef TRACESPINNING
+      ParallelTaskTerminator::print_termination_counts();
+#endif
+
+      gc_epilogue(false);
     }
 
-    if (was_enabled) ref_processor()->enable_discovery();
-
-    {
-      size_t expand_bytes = g1_policy()->expansion_amount();
-      if (expand_bytes > 0) {
-        size_t bytes_before = capacity();
-        expand(expand_bytes);
-      }
+    assert(verify_region_lists(), "Bad region lists.");
+
+    if (ExitAfterGCNum > 0 && total_collections() == ExitAfterGCNum) {
+      gclog_or_tty->print_cr("Stopping after GC #%d", ExitAfterGCNum);
+      print_tracing_info();
+      vm_exit(-1);
     }
-
-    if (mark_in_progress())
-      concurrent_mark()->update_g1_committed();
-
-    gc_epilogue(false);
-  }
-
-  assert(verify_region_lists(), "Bad region lists.");
-
-  if (reset_should_initiate_conc_mark)
-    g1_policy()->set_should_initiate_conc_mark();
-
-  if (ExitAfterGCNum > 0 && total_collections() == ExitAfterGCNum) {
-    gclog_or_tty->print_cr("Stopping after GC #%d", ExitAfterGCNum);
-    print_tracing_info();
-    vm_exit(-1);
+  }
+
+  if (PrintHeapAtGC) {
+    Universe::print_heap_after_gc();
   }
 }
 
 void G1CollectedHeap::set_gc_alloc_region(int purpose, HeapRegion* r) {
   assert(purpose >= 0 && purpose < GCAllocPurposeCount, "invalid purpose");
+  // make sure we don't call set_gc_alloc_region() multiple times on
+  // the same region
+  assert(r == NULL || !r->is_gc_alloc_region(),
+         "shouldn't already be a GC alloc region");
   HeapWord* original_top = NULL;
   if (r != NULL)
     original_top = r->top();
@@ -2730,9 +2942,22 @@
   while (_gc_alloc_region_list != NULL) {
     HeapRegion* r = _gc_alloc_region_list;
     assert(r->is_gc_alloc_region(), "Invariant.");
+    // We need HeapRegion::oops_on_card_seq_iterate_careful() to work on
+    // newly allocated data in order to be able to apply deferred updates
+    // before the GC is done for verification purposes (i.e to allow
+    // G1HRRSFlushLogBuffersOnVerify). It's safe thing to do after the
+    // collection.
+    r->ContiguousSpace::set_saved_mark();
     _gc_alloc_region_list = r->next_gc_alloc_region();
     r->set_next_gc_alloc_region(NULL);
     r->set_is_gc_alloc_region(false);
+    if (r->is_survivor()) {
+      if (r->is_empty()) {
+        r->set_not_young();
+      } else {
+        _young_list->add_survivor_region(r);
+      }
+    }
     if (r->is_empty()) {
       ++_free_regions;
     }
@@ -2750,23 +2975,59 @@
 }
 
 void G1CollectedHeap::get_gc_alloc_regions() {
+  // First, let's check that the GC alloc region list is empty (it should)
+  assert(_gc_alloc_region_list == NULL, "invariant");
+
   for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
+    assert(_gc_alloc_regions[ap] == NULL, "invariant");
+    assert(_gc_alloc_region_counts[ap] == 0, "invariant");
+
     // Create new GC alloc regions.
-    HeapRegion* alloc_region = _gc_alloc_regions[ap];
-    // Clear this alloc region, so that in case it turns out to be
-    // unacceptable, we end up with no allocation region, rather than a bad
-    // one.
-    _gc_alloc_regions[ap] = NULL;
-    if (alloc_region == NULL || alloc_region->in_collection_set()) {
-      // Can't re-use old one.  Allocate a new one.
+    HeapRegion* alloc_region = _retained_gc_alloc_regions[ap];
+    _retained_gc_alloc_regions[ap] = NULL;
+
+    if (alloc_region != NULL) {
+      assert(_retain_gc_alloc_region[ap], "only way to retain a GC region");
+
+      // let's make sure that the GC alloc region is not tagged as such
+      // outside a GC operation
+      assert(!alloc_region->is_gc_alloc_region(), "sanity");
+
+      if (alloc_region->in_collection_set() ||
+          alloc_region->top() == alloc_region->end() ||
+          alloc_region->top() == alloc_region->bottom()) {
+        // we will discard the current GC alloc region if it's in the
+        // collection set (it can happen!), if it's already full (no
+        // point in using it), or if it's empty (this means that it
+        // was emptied during a cleanup and it should be on the free
+        // list now).
+
+        alloc_region = NULL;
+      }
+    }
+
+    if (alloc_region == NULL) {
+      // we will get a new GC alloc region
       alloc_region = newAllocRegionWithExpansion(ap, 0);
+    } else {
+      // the region was retained from the last collection
+      ++_gc_alloc_region_counts[ap];
     }
+
     if (alloc_region != NULL) {
+      assert(_gc_alloc_regions[ap] == NULL, "pre-condition");
       set_gc_alloc_region(ap, alloc_region);
     }
+
+    assert(_gc_alloc_regions[ap] == NULL ||
+           _gc_alloc_regions[ap]->is_gc_alloc_region(),
+           "the GC alloc region should be tagged as such");
+    assert(_gc_alloc_regions[ap] == NULL ||
+           _gc_alloc_regions[ap] == _gc_alloc_region_list,
+           "the GC alloc region should be the same as the GC alloc list head");
   }
   // Set alternative regions for allocation purposes that have reached
-  // thier limit.
+  // their limit.
   for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
     GCAllocPurpose alt_purpose = g1_policy()->alternative_purpose(ap);
     if (_gc_alloc_regions[ap] == NULL && alt_purpose != ap) {
@@ -2776,28 +3037,56 @@
   assert(check_gc_alloc_regions(), "alloc regions messed up");
 }
 
-void G1CollectedHeap::release_gc_alloc_regions() {
+void G1CollectedHeap::release_gc_alloc_regions(bool totally) {
   // We keep a separate list of all regions that have been alloc regions in
-  // the current collection pause.  Forget that now.
+  // the current collection pause. Forget that now. This method will
+  // untag the GC alloc regions and tear down the GC alloc region
+  // list. It's desirable that no regions are tagged as GC alloc
+  // outside GCs.
   forget_alloc_region_list();
 
   // The current alloc regions contain objs that have survived
   // collection. Make them no longer GC alloc regions.
   for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
     HeapRegion* r = _gc_alloc_regions[ap];
-    if (r != NULL && r->is_empty()) {
-      {
+    _retained_gc_alloc_regions[ap] = NULL;
+    _gc_alloc_region_counts[ap] = 0;
+
+    if (r != NULL) {
+      // we retain nothing on _gc_alloc_regions between GCs
+      set_gc_alloc_region(ap, NULL);
+
+      if (r->is_empty()) {
+        // we didn't actually allocate anything in it; let's just put
+        // it on the free list
         MutexLockerEx x(ZF_mon, Mutex::_no_safepoint_check_flag);
         r->set_zero_fill_complete();
         put_free_region_on_list_locked(r);
+      } else if (_retain_gc_alloc_region[ap] && !totally) {
+        // retain it so that we can use it at the beginning of the next GC
+        _retained_gc_alloc_regions[ap] = r;
       }
     }
-    // set_gc_alloc_region will also NULLify all aliases to the region
-    set_gc_alloc_region(ap, NULL);
-    _gc_alloc_region_counts[ap] = 0;
   }
 }
 
+#ifndef PRODUCT
+// Useful for debugging
+
+void G1CollectedHeap::print_gc_alloc_regions() {
+  gclog_or_tty->print_cr("GC alloc regions");
+  for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
+    HeapRegion* r = _gc_alloc_regions[ap];
+    if (r == NULL) {
+      gclog_or_tty->print_cr("  %2d : "PTR_FORMAT, ap, NULL);
+    } else {
+      gclog_or_tty->print_cr("  %2d : "PTR_FORMAT" "SIZE_FORMAT,
+                             ap, r->bottom(), r->used());
+    }
+  }
+}
+#endif // PRODUCT
+
 void G1CollectedHeap::init_for_evac_failure(OopsInHeapRegionClosure* cl) {
   _drain_in_progress = false;
   set_evac_failure_closure(cl);
@@ -2853,10 +3142,8 @@
   G1CollectedHeap* _g1;
 public:
   G1KeepAliveClosure(G1CollectedHeap* g1) : _g1(g1) {}
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  void do_oop(oop* p) {
+  void do_oop(narrowOop* p) { guarantee(false, "Not needed"); }
+  void do_oop(      oop* p) {
     oop obj = *p;
 #ifdef G1_DEBUG
     if (PrintGC && Verbose) {
@@ -2868,7 +3155,6 @@
     if (_g1->obj_in_cs(obj)) {
       assert( obj->is_forwarded(), "invariant" );
       *p = obj->forwardee();
-
 #ifdef G1_DEBUG
       gclog_or_tty->print_cr("     in CSet: moved "PTR_FORMAT" -> "PTR_FORMAT,
                              (void*) obj, (void*) *p);
@@ -2877,27 +3163,51 @@
   }
 };
 
-class RecreateRSetEntriesClosure: public OopClosure {
+class UpdateRSetImmediate : public OopsInHeapRegionClosure {
 private:
   G1CollectedHeap* _g1;
   G1RemSet* _g1_rem_set;
-  HeapRegion* _from;
 public:
-  RecreateRSetEntriesClosure(G1CollectedHeap* g1, HeapRegion* from) :
-    _g1(g1), _g1_rem_set(g1->g1_rem_set()), _from(from)
-  {}
-
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  void do_oop(oop* p) {
+  UpdateRSetImmediate(G1CollectedHeap* g1) :
+    _g1(g1), _g1_rem_set(g1->g1_rem_set()) {}
+
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
     assert(_from->is_in_reserved(p), "paranoia");
-    if (*p != NULL) {
-      _g1_rem_set->write_ref(_from, p);
+    T heap_oop = oopDesc::load_heap_oop(p);
+    if (!oopDesc::is_null(heap_oop) && !_from->is_survivor()) {
+      _g1_rem_set->par_write_ref(_from, p, 0);
     }
   }
 };
 
+class UpdateRSetDeferred : public OopsInHeapRegionClosure {
+private:
+  G1CollectedHeap* _g1;
+  DirtyCardQueue *_dcq;
+  CardTableModRefBS* _ct_bs;
+
+public:
+  UpdateRSetDeferred(G1CollectedHeap* g1, DirtyCardQueue* dcq) :
+    _g1(g1), _ct_bs((CardTableModRefBS*)_g1->barrier_set()), _dcq(dcq) {}
+
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
+    assert(_from->is_in_reserved(p), "paranoia");
+    if (!_from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) &&
+        !_from->is_survivor()) {
+      size_t card_index = _ct_bs->index_for(p);
+      if (_ct_bs->mark_card_deferred(card_index)) {
+        _dcq->enqueue((jbyte*)_ct_bs->byte_for_index(card_index));
+      }
+    }
+  }
+};
+
+
+
 class RemoveSelfPointerClosure: public ObjectClosure {
 private:
   G1CollectedHeap* _g1;
@@ -2905,11 +3215,11 @@
   HeapRegion* _hr;
   size_t _prev_marked_bytes;
   size_t _next_marked_bytes;
+  OopsInHeapRegionClosure *_cl;
 public:
-  RemoveSelfPointerClosure(G1CollectedHeap* g1, HeapRegion* hr) :
-    _g1(g1), _cm(_g1->concurrent_mark()), _hr(hr),
-    _prev_marked_bytes(0), _next_marked_bytes(0)
-  {}
+  RemoveSelfPointerClosure(G1CollectedHeap* g1, OopsInHeapRegionClosure* cl) :
+    _g1(g1), _cm(_g1->concurrent_mark()),  _prev_marked_bytes(0),
+    _next_marked_bytes(0), _cl(cl) {}
 
   size_t prev_marked_bytes() { return _prev_marked_bytes; }
   size_t next_marked_bytes() { return _next_marked_bytes; }
@@ -2947,8 +3257,7 @@
       // that, if evacuation fails, we might have remembered set
       // entries missing given that we skipped cards on the
       // collection set. So, we'll recreate such entries now.
-      RecreateRSetEntriesClosure cl(_g1, _hr);
-      obj->oop_iterate(&cl);
+      obj->oop_iterate(_cl);
       assert(_cm->isPrevMarked(obj), "Should be marked!");
     } else {
       // The object has been either evacuated or is dead. Fill it with a
@@ -2961,14 +3270,23 @@
 };
 
 void G1CollectedHeap::remove_self_forwarding_pointers() {
+  UpdateRSetImmediate immediate_update(_g1h);
+  DirtyCardQueue dcq(&_g1h->dirty_card_queue_set());
+  UpdateRSetDeferred deferred_update(_g1h, &dcq);
+  OopsInHeapRegionClosure *cl;
+  if (G1DeferredRSUpdate) {
+    cl = &deferred_update;
+  } else {
+    cl = &immediate_update;
+  }
   HeapRegion* cur = g1_policy()->collection_set();
-
   while (cur != NULL) {
     assert(g1_policy()->assertMarkedBytesDataOK(), "Should be!");
 
+    RemoveSelfPointerClosure rspc(_g1h, cl);
     if (cur->evacuation_failed()) {
-      RemoveSelfPointerClosure rspc(_g1h, cur);
       assert(cur->in_collection_set(), "bad CS");
+      cl->set_region(cur);
       cur->object_iterate(&rspc);
 
       // A number of manipulations to make the TAMS be the current top,
@@ -3081,7 +3399,7 @@
   HeapRegion* r = heap_region_containing(old);
   if (!r->evacuation_failed()) {
     r->set_evacuation_failed(true);
-    if (G1TraceRegions) {
+    if (G1PrintRegions) {
       gclog_or_tty->print("evacuation failed in heap region "PTR_FORMAT" "
                           "["PTR_FORMAT","PTR_FORMAT")\n",
                           r, r->bottom(), r->end());
@@ -3129,6 +3447,20 @@
   return block;
 }
 
+void G1CollectedHeap::retire_alloc_region(HeapRegion* alloc_region,
+                                            bool par) {
+  // Another thread might have obtained alloc_region for the given
+  // purpose, and might be attempting to allocate in it, and might
+  // succeed.  Therefore, we can't do the "finalization" stuff on the
+  // region below until we're sure the last allocation has happened.
+  // We ensure this by allocating the remaining space with a garbage
+  // object.
+  if (par) par_allocate_remaining_space(alloc_region);
+  // Now we can do the post-GC stuff on the region.
+  alloc_region->note_end_of_copying();
+  g1_policy()->record_after_bytes(alloc_region->used());
+}
+
 HeapWord*
 G1CollectedHeap::allocate_during_gc_slow(GCAllocPurpose purpose,
                                          HeapRegion*    alloc_region,
@@ -3146,16 +3478,7 @@
     // Otherwise, continue; this new region is empty, too.
   }
   assert(alloc_region != NULL, "We better have an allocation region");
-  // Another thread might have obtained alloc_region for the given
-  // purpose, and might be attempting to allocate in it, and might
-  // succeed.  Therefore, we can't do the "finalization" stuff on the
-  // region below until we're sure the last allocation has happened.
-  // We ensure this by allocating the remaining space with a garbage
-  // object.
-  if (par) par_allocate_remaining_space(alloc_region);
-  // Now we can do the post-GC stuff on the region.
-  alloc_region->note_end_of_copying();
-  g1_policy()->record_after_bytes(alloc_region->used());
+  retire_alloc_region(alloc_region, par);
 
   if (_gc_alloc_region_counts[purpose] >= g1_policy()->max_regions(purpose)) {
     // Cannot allocate more regions for the given purpose.
@@ -3164,7 +3487,7 @@
     if (purpose != alt_purpose) {
       HeapRegion* alt_region = _gc_alloc_regions[alt_purpose];
       // Has not the alternative region been aliased?
-      if (alloc_region != alt_region) {
+      if (alloc_region != alt_region && alt_region != NULL) {
         // Try to allocate in the alternative region.
         if (par) {
           block = alt_region->par_allocate(word_size);
@@ -3173,9 +3496,10 @@
         }
         // Make an alias.
         _gc_alloc_regions[purpose] = _gc_alloc_regions[alt_purpose];
-      }
-      if (block != NULL) {
-        return block;
+        if (block != NULL) {
+          return block;
+        }
+        retire_alloc_region(alt_region, par);
       }
       // Both the allocation region and the alternative one are full
       // and aliased, replace them with a new allocation region.
@@ -3228,529 +3552,66 @@
   fill_with_object(block, free_words);
 }
 
-#define use_local_bitmaps         1
-#define verify_local_bitmaps      0
-
 #ifndef PRODUCT
-
-class GCLabBitMap;
-class GCLabBitMapClosure: public BitMapClosure {
-private:
-  ConcurrentMark* _cm;
-  GCLabBitMap*    _bitmap;
-
-public:
-  GCLabBitMapClosure(ConcurrentMark* cm,
-                     GCLabBitMap* bitmap) {
-    _cm     = cm;
-    _bitmap = bitmap;
-  }
-
-  virtual bool do_bit(size_t offset);
-};
-
-#endif // PRODUCT
-
-#define oop_buffer_length 256
-
-class GCLabBitMap: public BitMap {
-private:
-  ConcurrentMark* _cm;
-
-  int       _shifter;
-  size_t    _bitmap_word_covers_words;
-
-  // beginning of the heap
-  HeapWord* _heap_start;
-
-  // this is the actual start of the GCLab
-  HeapWord* _real_start_word;
-
-  // this is the actual end of the GCLab
-  HeapWord* _real_end_word;
-
-  // this is the first word, possibly located before the actual start
-  // of the GCLab, that corresponds to the first bit of the bitmap
-  HeapWord* _start_word;
-
-  // size of a GCLab in words
-  size_t _gclab_word_size;
-
-  static int shifter() {
-    return MinObjAlignment - 1;
-  }
-
-  // how many heap words does a single bitmap word corresponds to?
-  static size_t bitmap_word_covers_words() {
-    return BitsPerWord << shifter();
-  }
-
-  static size_t gclab_word_size() {
-    return ParallelGCG1AllocBufferSize / HeapWordSize;
-  }
-
-  static size_t bitmap_size_in_bits() {
-    size_t bits_in_bitmap = gclab_word_size() >> shifter();
-    // We are going to ensure that the beginning of a word in this
-    // bitmap also corresponds to the beginning of a word in the
-    // global marking bitmap. To handle the case where a GCLab
-    // starts from the middle of the bitmap, we need to add enough
-    // space (i.e. up to a bitmap word) to ensure that we have
-    // enough bits in the bitmap.
-    return bits_in_bitmap + BitsPerWord - 1;
-  }
-public:
-  GCLabBitMap(HeapWord* heap_start)
-    : BitMap(bitmap_size_in_bits()),
-      _cm(G1CollectedHeap::heap()->concurrent_mark()),
-      _shifter(shifter()),
-      _bitmap_word_covers_words(bitmap_word_covers_words()),
-      _heap_start(heap_start),
-      _gclab_word_size(gclab_word_size()),
-      _real_start_word(NULL),
-      _real_end_word(NULL),
-      _start_word(NULL)
-  {
-    guarantee( size_in_words() >= bitmap_size_in_words(),
-               "just making sure");
-  }
-
-  inline unsigned heapWordToOffset(HeapWord* addr) {
-    unsigned offset = (unsigned) pointer_delta(addr, _start_word) >> _shifter;
-    assert(offset < size(), "offset should be within bounds");
-    return offset;
-  }
-
-  inline HeapWord* offsetToHeapWord(size_t offset) {
-    HeapWord* addr =  _start_word + (offset << _shifter);
-    assert(_real_start_word <= addr && addr < _real_end_word, "invariant");
-    return addr;
-  }
-
-  bool fields_well_formed() {
-    bool ret1 = (_real_start_word == NULL) &&
-                (_real_end_word == NULL) &&
-                (_start_word == NULL);
-    if (ret1)
-      return true;
-
-    bool ret2 = _real_start_word >= _start_word &&
-      _start_word < _real_end_word &&
-      (_real_start_word + _gclab_word_size) == _real_end_word &&
-      (_start_word + _gclab_word_size + _bitmap_word_covers_words)
-                                                              > _real_end_word;
-    return ret2;
-  }
-
-  inline bool mark(HeapWord* addr) {
-    guarantee(use_local_bitmaps, "invariant");
-    assert(fields_well_formed(), "invariant");
-
-    if (addr >= _real_start_word && addr < _real_end_word) {
-      assert(!isMarked(addr), "should not have already been marked");
-
-      // first mark it on the bitmap
-      at_put(heapWordToOffset(addr), true);
-
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  inline bool isMarked(HeapWord* addr) {
-    guarantee(use_local_bitmaps, "invariant");
-    assert(fields_well_formed(), "invariant");
-
-    return at(heapWordToOffset(addr));
-  }
-
-  void set_buffer(HeapWord* start) {
-    guarantee(use_local_bitmaps, "invariant");
-    clear();
-
-    assert(start != NULL, "invariant");
-    _real_start_word = start;
-    _real_end_word   = start + _gclab_word_size;
-
-    size_t diff =
-      pointer_delta(start, _heap_start) % _bitmap_word_covers_words;
-    _start_word = start - diff;
-
-    assert(fields_well_formed(), "invariant");
-  }
-
-#ifndef PRODUCT
-  void verify() {
-    // verify that the marks have been propagated
-    GCLabBitMapClosure cl(_cm, this);
-    iterate(&cl);
-  }
-#endif // PRODUCT
-
-  void retire() {
-    guarantee(use_local_bitmaps, "invariant");
-    assert(fields_well_formed(), "invariant");
-
-    if (_start_word != NULL) {
-      CMBitMap*       mark_bitmap = _cm->nextMarkBitMap();
-
-      // this means that the bitmap was set up for the GCLab
-      assert(_real_start_word != NULL && _real_end_word != NULL, "invariant");
-
-      mark_bitmap->mostly_disjoint_range_union(this,
-                                0, // always start from the start of the bitmap
-                                _start_word,
-                                size_in_words());
-      _cm->grayRegionIfNecessary(MemRegion(_real_start_word, _real_end_word));
-
-#ifndef PRODUCT
-      if (use_local_bitmaps && verify_local_bitmaps)
-        verify();
-#endif // PRODUCT
-    } else {
-      assert(_real_start_word == NULL && _real_end_word == NULL, "invariant");
-    }
-  }
-
-  static size_t bitmap_size_in_words() {
-    return (bitmap_size_in_bits() + BitsPerWord - 1) / BitsPerWord;
-  }
-};
-
-#ifndef PRODUCT
-
 bool GCLabBitMapClosure::do_bit(size_t offset) {
   HeapWord* addr = _bitmap->offsetToHeapWord(offset);
   guarantee(_cm->isMarked(oop(addr)), "it should be!");
   return true;
 }
-
 #endif // PRODUCT
 
-class G1ParGCAllocBuffer: public ParGCAllocBuffer {
-private:
-  bool        _retired;
-  bool        _during_marking;
-  GCLabBitMap _bitmap;
-
-public:
-  G1ParGCAllocBuffer() :
-    ParGCAllocBuffer(ParallelGCG1AllocBufferSize / HeapWordSize),
-    _during_marking(G1CollectedHeap::heap()->mark_in_progress()),
-    _bitmap(G1CollectedHeap::heap()->reserved_region().start()),
-    _retired(false)
-  { }
-
-  inline bool mark(HeapWord* addr) {
-    guarantee(use_local_bitmaps, "invariant");
-    assert(_during_marking, "invariant");
-    return _bitmap.mark(addr);
-  }
-
-  inline void set_buf(HeapWord* buf) {
-    if (use_local_bitmaps && _during_marking)
-      _bitmap.set_buffer(buf);
-    ParGCAllocBuffer::set_buf(buf);
-    _retired = false;
-  }
-
-  inline void retire(bool end_of_gc, bool retain) {
-    if (_retired)
-      return;
-    if (use_local_bitmaps && _during_marking) {
-      _bitmap.retire();
-    }
-    ParGCAllocBuffer::retire(end_of_gc, retain);
-    _retired = true;
-  }
-};
-
-
-class G1ParScanThreadState : public StackObj {
-protected:
-  G1CollectedHeap* _g1h;
-  RefToScanQueue*  _refs;
-
-  typedef GrowableArray<oop*> OverflowQueue;
-  OverflowQueue* _overflowed_refs;
-
-  G1ParGCAllocBuffer _alloc_buffers[GCAllocPurposeCount];
-
-  size_t           _alloc_buffer_waste;
-  size_t           _undo_waste;
-
-  OopsInHeapRegionClosure*      _evac_failure_cl;
-  G1ParScanHeapEvacClosure*     _evac_cl;
-  G1ParScanPartialArrayClosure* _partial_scan_cl;
-
-  int _hash_seed;
-  int _queue_num;
-
-  int _term_attempts;
+G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, int queue_num)
+  : _g1h(g1h),
+    _refs(g1h->task_queue(queue_num)),
+    _dcq(&g1h->dirty_card_queue_set()),
+    _ct_bs((CardTableModRefBS*)_g1h->barrier_set()),
+    _g1_rem(g1h->g1_rem_set()),
+    _hash_seed(17), _queue_num(queue_num),
+    _term_attempts(0),
+    _age_table(false),
 #if G1_DETAILED_STATS
-  int _pushes, _pops, _steals, _steal_attempts;
-  int _overflow_pushes;
-#endif
-
-  double _start;
-  double _start_strong_roots;
-  double _strong_roots_time;
-  double _start_term;
-  double _term_time;
-
-  // Map from young-age-index (0 == not young, 1 is youngest) to
-  // surviving words. base is what we get back from the malloc call
-  size_t* _surviving_young_words_base;
-  // this points into the array, as we use the first few entries for padding
-  size_t* _surviving_young_words;
-
-#define PADDING_ELEM_NUM (64 / sizeof(size_t))
-
-  void   add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; }
-
-  void   add_to_undo_waste(size_t waste)         { _undo_waste += waste; }
-
-public:
-  G1ParScanThreadState(G1CollectedHeap* g1h, int queue_num)
-    : _g1h(g1h),
-      _refs(g1h->task_queue(queue_num)),
-      _hash_seed(17), _queue_num(queue_num),
-      _term_attempts(0),
-#if G1_DETAILED_STATS
-      _pushes(0), _pops(0), _steals(0),
-      _steal_attempts(0),  _overflow_pushes(0),
+    _pushes(0), _pops(0), _steals(0),
+    _steal_attempts(0),  _overflow_pushes(0),
 #endif
-      _strong_roots_time(0), _term_time(0),
-      _alloc_buffer_waste(0), _undo_waste(0)
-  {
-    // we allocate G1YoungSurvRateNumRegions plus one entries, since
-    // we "sacrifice" entry 0 to keep track of surviving bytes for
-    // non-young regions (where the age is -1)
-    // We also add a few elements at the beginning and at the end in
-    // an attempt to eliminate cache contention
-    size_t real_length = 1 + _g1h->g1_policy()->young_cset_length();
-    size_t array_length = PADDING_ELEM_NUM +
-                          real_length +
-                          PADDING_ELEM_NUM;
-    _surviving_young_words_base = NEW_C_HEAP_ARRAY(size_t, array_length);
-    if (_surviving_young_words_base == NULL)
-      vm_exit_out_of_memory(array_length * sizeof(size_t),
-                            "Not enough space for young surv histo.");
-    _surviving_young_words = _surviving_young_words_base + PADDING_ELEM_NUM;
-    memset(_surviving_young_words, 0, real_length * sizeof(size_t));
-
-    _overflowed_refs = new OverflowQueue(10);
-
-    _start = os::elapsedTime();
-  }
-
-  ~G1ParScanThreadState() {
-    FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base);
-  }
-
-  RefToScanQueue*   refs()            { return _refs;             }
-  OverflowQueue*    overflowed_refs() { return _overflowed_refs;  }
-
-  inline G1ParGCAllocBuffer* alloc_buffer(GCAllocPurpose purpose) {
-    return &_alloc_buffers[purpose];
-  }
-
-  size_t alloc_buffer_waste()                    { return _alloc_buffer_waste; }
-  size_t undo_waste()                            { return _undo_waste; }
-
-  void push_on_queue(oop* ref) {
-    if (!refs()->push(ref)) {
-      overflowed_refs()->push(ref);
-      IF_G1_DETAILED_STATS(note_overflow_push());
-    } else {
-      IF_G1_DETAILED_STATS(note_push());
-    }
-  }
-
-  void pop_from_queue(oop*& ref) {
-    if (!refs()->pop_local(ref)) {
-      ref = NULL;
-    } else {
-      IF_G1_DETAILED_STATS(note_pop());
-    }
-  }
-
-  void pop_from_overflow_queue(oop*& ref) {
-    ref = overflowed_refs()->pop();
-  }
-
-  int refs_to_scan()                             { return refs()->size();                 }
-  int overflowed_refs_to_scan()                  { return overflowed_refs()->length();    }
-
-  HeapWord* allocate_slow(GCAllocPurpose purpose, size_t word_sz) {
-
-    HeapWord* obj = NULL;
-    if (word_sz * 100 <
-        (size_t)(ParallelGCG1AllocBufferSize / HeapWordSize) *
-                                                  ParallelGCBufferWastePct) {
-      G1ParGCAllocBuffer* alloc_buf = alloc_buffer(purpose);
-      add_to_alloc_buffer_waste(alloc_buf->words_remaining());
-      alloc_buf->retire(false, false);
-
-      HeapWord* buf =
-        _g1h->par_allocate_during_gc(purpose, ParallelGCG1AllocBufferSize / HeapWordSize);
-      if (buf == NULL) return NULL; // Let caller handle allocation failure.
-      // Otherwise.
-      alloc_buf->set_buf(buf);
-
-      obj = alloc_buf->allocate(word_sz);
-      assert(obj != NULL, "buffer was definitely big enough...");
-    }
-    else {
-      obj = _g1h->par_allocate_during_gc(purpose, word_sz);
-    }
-    return obj;
-  }
-
-  HeapWord* allocate(GCAllocPurpose purpose, size_t word_sz) {
-    HeapWord* obj = alloc_buffer(purpose)->allocate(word_sz);
-    if (obj != NULL) return obj;
-    return allocate_slow(purpose, word_sz);
-  }
-
-  void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz) {
-    if (alloc_buffer(purpose)->contains(obj)) {
-      guarantee(alloc_buffer(purpose)->contains(obj + word_sz - 1),
-                "should contain whole object");
-      alloc_buffer(purpose)->undo_allocation(obj, word_sz);
-    } else {
-      CollectedHeap::fill_with_object(obj, word_sz);
-      add_to_undo_waste(word_sz);
-    }
-  }
-
-  void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) {
-    _evac_failure_cl = evac_failure_cl;
-  }
-  OopsInHeapRegionClosure* evac_failure_closure() {
-    return _evac_failure_cl;
-  }
-
-  void set_evac_closure(G1ParScanHeapEvacClosure* evac_cl) {
-    _evac_cl = evac_cl;
-  }
-
-  void set_partial_scan_closure(G1ParScanPartialArrayClosure* partial_scan_cl) {
-    _partial_scan_cl = partial_scan_cl;
-  }
-
-  int* hash_seed() { return &_hash_seed; }
-  int  queue_num() { return _queue_num; }
-
-  int term_attempts()   { return _term_attempts; }
-  void note_term_attempt()  { _term_attempts++; }
-
-#if G1_DETAILED_STATS
-  int pushes()          { return _pushes; }
-  int pops()            { return _pops; }
-  int steals()          { return _steals; }
-  int steal_attempts()  { return _steal_attempts; }
-  int overflow_pushes() { return _overflow_pushes; }
-
-  void note_push()          { _pushes++; }
-  void note_pop()           { _pops++; }
-  void note_steal()         { _steals++; }
-  void note_steal_attempt() { _steal_attempts++; }
-  void note_overflow_push() { _overflow_pushes++; }
-#endif
-
-  void start_strong_roots() {
-    _start_strong_roots = os::elapsedTime();
-  }
-  void end_strong_roots() {
-    _strong_roots_time += (os::elapsedTime() - _start_strong_roots);
-  }
-  double strong_roots_time() { return _strong_roots_time; }
-
-  void start_term_time() {
-    note_term_attempt();
-    _start_term = os::elapsedTime();
-  }
-  void end_term_time() {
-    _term_time += (os::elapsedTime() - _start_term);
-  }
-  double term_time() { return _term_time; }
-
-  double elapsed() {
-    return os::elapsedTime() - _start;
-  }
-
-  size_t* surviving_young_words() {
-    // We add on to hide entry 0 which accumulates surviving words for
-    // age -1 regions (i.e. non-young ones)
-    return _surviving_young_words;
-  }
-
-  void retire_alloc_buffers() {
-    for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
-      size_t waste = _alloc_buffers[ap].words_remaining();
-      add_to_alloc_buffer_waste(waste);
-      _alloc_buffers[ap].retire(true, false);
-    }
-  }
-
-  void trim_queue() {
-    while (refs_to_scan() > 0 || overflowed_refs_to_scan() > 0) {
-      oop *ref_to_scan = NULL;
-      if (overflowed_refs_to_scan() == 0) {
-        pop_from_queue(ref_to_scan);
-      } else {
-        pop_from_overflow_queue(ref_to_scan);
-      }
-      if (ref_to_scan != NULL) {
-        if ((intptr_t)ref_to_scan & G1_PARTIAL_ARRAY_MASK) {
-          _partial_scan_cl->do_oop_nv(ref_to_scan);
-        } else {
-          // Note: we can use "raw" versions of "region_containing" because
-          // "obj_to_scan" is definitely in the heap, and is not in a
-          // humongous region.
-          HeapRegion* r = _g1h->heap_region_containing_raw(ref_to_scan);
-          _evac_cl->set_region(r);
-          _evac_cl->do_oop_nv(ref_to_scan);
-        }
-      }
-    }
-  }
-};
-
+    _strong_roots_time(0), _term_time(0),
+    _alloc_buffer_waste(0), _undo_waste(0)
+{
+  // we allocate G1YoungSurvRateNumRegions plus one entries, since
+  // we "sacrifice" entry 0 to keep track of surviving bytes for
+  // non-young regions (where the age is -1)
+  // We also add a few elements at the beginning and at the end in
+  // an attempt to eliminate cache contention
+  size_t real_length = 1 + _g1h->g1_policy()->young_cset_length();
+  size_t array_length = PADDING_ELEM_NUM +
+                        real_length +
+                        PADDING_ELEM_NUM;
+  _surviving_young_words_base = NEW_C_HEAP_ARRAY(size_t, array_length);
+  if (_surviving_young_words_base == NULL)
+    vm_exit_out_of_memory(array_length * sizeof(size_t),
+                          "Not enough space for young surv histo.");
+  _surviving_young_words = _surviving_young_words_base + PADDING_ELEM_NUM;
+  memset(_surviving_young_words, 0, real_length * sizeof(size_t));
+
+  _overflowed_refs = new OverflowQueue(10);
+
+  _start = os::elapsedTime();
+}
 
 G1ParClosureSuper::G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) :
   _g1(g1), _g1_rem(_g1->g1_rem_set()), _cm(_g1->concurrent_mark()),
   _par_scan_state(par_scan_state) { }
 
-// This closure is applied to the fields of the objects that have just been copied.
-// Should probably be made inline and moved in g1OopClosures.inline.hpp.
-void G1ParScanClosure::do_oop_nv(oop* p) {
-  oop obj = *p;
-  if (obj != NULL) {
-    if (_g1->obj_in_cs(obj)) {
-      if (obj->is_forwarded()) {
-        *p = obj->forwardee();
-      } else {
-        _par_scan_state->push_on_queue(p);
-        return;
-      }
-    }
-    _g1_rem->par_write_ref(_from, p, _par_scan_state->queue_num());
-  }
-}
-
-void G1ParCopyHelper::mark_forwardee(oop* p) {
+template <class T> void G1ParCopyHelper::mark_forwardee(T* p) {
   // This is called _after_ do_oop_work has been called, hence after
   // the object has been relocated to its new location and *p points
   // to its new location.
 
-  oop thisOop = *p;
-  if (thisOop != NULL) {
-    assert((_g1->evacuation_failed()) || (!_g1->obj_in_cs(thisOop)),
+  T heap_oop = oopDesc::load_heap_oop(p);
+  if (!oopDesc::is_null(heap_oop)) {
+    oop obj = oopDesc::decode_heap_oop(heap_oop);
+    assert((_g1->evacuation_failed()) || (!_g1->obj_in_cs(obj)),
            "shouldn't still be in the CSet if evacuation didn't fail.");
-    HeapWord* addr = (HeapWord*)thisOop;
+    HeapWord* addr = (HeapWord*)obj;
     if (_g1->is_in_g1_reserved(addr))
       _cm->grayRoot(oop(addr));
   }
@@ -3765,7 +3626,9 @@
           (!from_region->is_young() && young_index == 0), "invariant" );
   G1CollectorPolicy* g1p = _g1->g1_policy();
   markOop m = old->mark();
-  GCAllocPurpose alloc_purpose = g1p->evacuation_destination(from_region, m->age(),
+  int age = m->has_displaced_mark_helper() ? m->displaced_mark_helper()->age()
+                                           : m->age();
+  GCAllocPurpose alloc_purpose = g1p->evacuation_destination(from_region, age,
                                                              word_sz);
   HeapWord* obj_ptr = _par_scan_state->allocate(alloc_purpose, word_sz);
   oop       obj     = oop(obj_ptr);
@@ -3777,13 +3640,39 @@
     return _g1->handle_evacuation_failure_par(cl, old);
   }
 
+  // We're going to allocate linearly, so might as well prefetch ahead.
+  Prefetch::write(obj_ptr, PrefetchCopyIntervalInBytes);
+
   oop forward_ptr = old->forward_to_atomic(obj);
   if (forward_ptr == NULL) {
     Copy::aligned_disjoint_words((HeapWord*) old, obj_ptr, word_sz);
-    obj->set_mark(m);
     if (g1p->track_object_age(alloc_purpose)) {
-      obj->incr_age();
+      // We could simply do obj->incr_age(). However, this causes a
+      // performance issue. obj->incr_age() will first check whether
+      // the object has a displaced mark by checking its mark word;
+      // getting the mark word from the new location of the object
+      // stalls. So, given that we already have the mark word and we
+      // are about to install it anyway, it's better to increase the
+      // age on the mark word, when the object does not have a
+      // displaced mark word. We're not expecting many objects to have
+      // a displaced marked word, so that case is not optimized
+      // further (it could be...) and we simply call obj->incr_age().
+
+      if (m->has_displaced_mark_helper()) {
+        // in this case, we have to install the mark word first,
+        // otherwise obj looks to be forwarded (the old mark word,
+        // which contains the forward pointer, was copied)
+        obj->set_mark(m);
+        obj->incr_age();
+      } else {
+        m = m->incr_age();
+        obj->set_mark(m);
+      }
+      _par_scan_state->age_table()->add(obj, word_sz);
+    } else {
+      obj->set_mark(m);
     }
+
     // preserve "next" mark bit
     if (_g1->mark_in_progress() && !_g1->is_obj_ill(old)) {
       if (!use_local_bitmaps ||
@@ -3805,9 +3694,12 @@
 
     if (obj->is_objArray() && arrayOop(obj)->length() >= ParGCArrayScanChunk) {
       arrayOop(old)->set_length(0);
-      _par_scan_state->push_on_queue((oop*) ((intptr_t)old | G1_PARTIAL_ARRAY_MASK));
+      oop* old_p = set_partial_array_mask(old);
+      _par_scan_state->push_on_queue(old_p);
     } else {
-      _scanner->set_region(_g1->heap_region_containing(obj));
+      // No point in using the slower heap_region_containing() method,
+      // given that we know obj is in the heap.
+      _scanner->set_region(_g1->heap_region_containing_raw(obj));
       obj->oop_iterate_backwards(_scanner);
     }
   } else {
@@ -3817,56 +3709,54 @@
   return obj;
 }
 
-template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_forwardee>
-void G1ParCopyClosure<do_gen_barrier, barrier, do_mark_forwardee>::do_oop_work(oop* p) {
-  oop obj = *p;
+template <bool do_gen_barrier, G1Barrier barrier, bool do_mark_forwardee, bool skip_cset_test>
+template <class T>
+void G1ParCopyClosure <do_gen_barrier, barrier, do_mark_forwardee, skip_cset_test>
+::do_oop_work(T* p) {
+  oop obj = oopDesc::load_decode_heap_oop(p);
   assert(barrier != G1BarrierRS || obj != NULL,
          "Precondition: G1BarrierRS implies obj is nonNull");
 
-  if (obj != NULL) {
-    if (_g1->obj_in_cs(obj)) {
+  // The only time we skip the cset test is when we're scanning
+  // references popped from the queue. And we only push on the queue
+  // references that we know point into the cset, so no point in
+  // checking again. But we'll leave an assert here for peace of mind.
+  assert(!skip_cset_test || _g1->obj_in_cs(obj), "invariant");
+
+  // here the null check is implicit in the cset_fast_test() test
+  if (skip_cset_test || _g1->in_cset_fast_test(obj)) {
 #if G1_REM_SET_LOGGING
-      gclog_or_tty->print_cr("Loc "PTR_FORMAT" contains pointer "PTR_FORMAT" into CS.",
-                             p, (void*) obj);
+    gclog_or_tty->print_cr("Loc "PTR_FORMAT" contains pointer "PTR_FORMAT" "
+                           "into CS.", p, (void*) obj);
 #endif
-      if (obj->is_forwarded()) {
-        *p = obj->forwardee();
-      } else {
-        *p = copy_to_survivor_space(obj);
-      }
-      // When scanning the RS, we only care about objs in CS.
-      if (barrier == G1BarrierRS) {
-        _g1_rem->par_write_ref(_from, p, _par_scan_state->queue_num());
-      }
+    if (obj->is_forwarded()) {
+      oopDesc::encode_store_heap_oop(p, obj->forwardee());
+    } else {
+      oop copy_oop = copy_to_survivor_space(obj);
+      oopDesc::encode_store_heap_oop(p, copy_oop);
+    }
+    // When scanning the RS, we only care about objs in CS.
+    if (barrier == G1BarrierRS) {
+      _par_scan_state->update_rs(_from, p, _par_scan_state->queue_num());
     }
-    // When scanning moved objs, must look at all oops.
-    if (barrier == G1BarrierEvac) {
-      _g1_rem->par_write_ref(_from, p, _par_scan_state->queue_num());
-    }
-
-    if (do_gen_barrier) {
-      par_do_barrier(p);
-    }
+  }
+
+  // When scanning moved objs, must look at all oops.
+  if (barrier == G1BarrierEvac && obj != NULL) {
+    _par_scan_state->update_rs(_from, p, _par_scan_state->queue_num());
+  }
+
+  if (do_gen_barrier && obj != NULL) {
+    par_do_barrier(p);
   }
 }
 
-template void G1ParCopyClosure<false, G1BarrierEvac, false>::do_oop_work(oop* p);
-
-template <class T> void G1ParScanPartialArrayClosure::process_array_chunk(
-  oop obj, int start, int end) {
-  // process our set of indices (include header in first chunk)
-  assert(start < end, "invariant");
-  T* const base      = (T*)objArrayOop(obj)->base();
-  T* const start_addr = base + start;
-  T* const end_addr   = base + end;
-  MemRegion mr((HeapWord*)start_addr, (HeapWord*)end_addr);
-  _scanner.set_region(_g1->heap_region_containing(obj));
-  obj->oop_iterate(&_scanner, mr);
-}
-
-void G1ParScanPartialArrayClosure::do_oop_nv(oop* p) {
-  assert(!UseCompressedOops, "Needs to be fixed to work with compressed oops");
-  oop old = oop((intptr_t)p & ~G1_PARTIAL_ARRAY_MASK);
+template void G1ParCopyClosure<false, G1BarrierEvac, false, true>::do_oop_work(oop* p);
+template void G1ParCopyClosure<false, G1BarrierEvac, false, true>::do_oop_work(narrowOop* p);
+
+template <class T> void G1ParScanPartialArrayClosure::do_oop_nv(T* p) {
+  assert(has_partial_array_mask(p), "invariant");
+  oop old = clear_partial_array_mask(p);
   assert(old->is_objArray(), "must be obj array");
   assert(old->is_forwarded(), "must be forwarded");
   assert(Universe::heap()->is_in_reserved(old), "must be in heap.");
@@ -3884,24 +3774,19 @@
     end = start + ParGCArrayScanChunk;
     arrayOop(old)->set_length(end);
     // Push remainder.
-    _par_scan_state->push_on_queue((oop*) ((intptr_t) old | G1_PARTIAL_ARRAY_MASK));
+    oop* old_p = set_partial_array_mask(old);
+    assert(arrayOop(old)->length() < obj->length(), "Empty push?");
+    _par_scan_state->push_on_queue(old_p);
   } else {
     // Restore length so that the heap remains parsable in
     // case of evacuation failure.
     arrayOop(old)->set_length(end);
   }
-
+  _scanner.set_region(_g1->heap_region_containing_raw(obj));
   // process our set of indices (include header in first chunk)
-  process_array_chunk<oop>(obj, start, end);
-  oop* start_addr = start == 0 ? (oop*)obj : obj->obj_at_addr<oop>(start);
-  oop* end_addr   = (oop*)(obj->base()) + end; // obj_at_addr(end) asserts end < length
-  MemRegion mr((HeapWord*)start_addr, (HeapWord*)end_addr);
-  _scanner.set_region(_g1->heap_region_containing(obj));
-  obj->oop_iterate(&_scanner, mr);
+  obj->oop_iterate_range(&_scanner, start, end);
 }
 
-int G1ScanAndBalanceClosure::_nq = 0;
-
 class G1ParEvacuateFollowersClosure : public VoidClosure {
 protected:
   G1CollectedHeap*              _g1h;
@@ -3924,14 +3809,28 @@
   void do_void() {
     G1ParScanThreadState* pss = par_scan_state();
     while (true) {
-      oop* ref_to_scan;
       pss->trim_queue();
       IF_G1_DETAILED_STATS(pss->note_steal_attempt());
-      if (queues()->steal(pss->queue_num(),
-                          pss->hash_seed(),
-                          ref_to_scan)) {
+
+      StarTask stolen_task;
+      if (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) {
         IF_G1_DETAILED_STATS(pss->note_steal());
-        pss->push_on_queue(ref_to_scan);
+
+        // slightly paranoid tests; I'm trying to catch potential
+        // problems before we go into push_on_queue to know where the
+        // problem is coming from
+        assert((oop*)stolen_task != NULL, "Error");
+        if (stolen_task.is_narrow()) {
+          assert(UseCompressedOops, "Error");
+          narrowOop* p = (narrowOop*) stolen_task;
+          assert(has_partial_array_mask(p) ||
+                 _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(p)), "Error");
+          pss->push_on_queue(p);
+        } else {
+          oop* p = (oop*) stolen_task;
+          assert(has_partial_array_mask(p) || _g1h->obj_in_cs(*p), "Error");
+          pss->push_on_queue(p);
+        }
         continue;
       }
       pss->start_term_time();
@@ -3948,6 +3847,7 @@
   G1CollectedHeap*       _g1h;
   RefToScanQueueSet      *_queues;
   ParallelTaskTerminator _terminator;
+  int _n_workers;
 
   Mutex _stats_lock;
   Mutex* stats_lock() { return &_stats_lock; }
@@ -3963,7 +3863,8 @@
       _g1h(g1h),
       _queues(task_queues),
       _terminator(workers, _queues),
-      _stats_lock(Mutex::leaf, "parallel G1 stats lock", true)
+      _stats_lock(Mutex::leaf, "parallel G1 stats lock", true),
+      _n_workers(workers)
   {}
 
   RefToScanQueueSet* queues() { return _queues; }
@@ -3973,13 +3874,14 @@
   }
 
   void work(int i) {
+    if (i >= _n_workers) return;  // no work needed this round
     ResourceMark rm;
     HandleMark   hm;
 
-    G1ParScanThreadState pss(_g1h, i);
-    G1ParScanHeapEvacClosure     scan_evac_cl(_g1h, &pss);
-    G1ParScanHeapEvacClosure     evac_failure_cl(_g1h, &pss);
-    G1ParScanPartialArrayClosure partial_scan_cl(_g1h, &pss);
+    G1ParScanThreadState            pss(_g1h, i);
+    G1ParScanHeapEvacClosure        scan_evac_cl(_g1h, &pss);
+    G1ParScanHeapEvacFailureClosure evac_failure_cl(_g1h, &pss);
+    G1ParScanPartialArrayClosure    partial_scan_cl(_g1h, &pss);
 
     pss.set_evac_closure(&scan_evac_cl);
     pss.set_evac_failure_closure(&evac_failure_cl);
@@ -3988,6 +3890,7 @@
     G1ParScanExtRootClosure         only_scan_root_cl(_g1h, &pss);
     G1ParScanPermClosure            only_scan_perm_cl(_g1h, &pss);
     G1ParScanHeapRSClosure          only_scan_heap_rs_cl(_g1h, &pss);
+
     G1ParScanAndMarkExtRootClosure  scan_mark_root_cl(_g1h, &pss);
     G1ParScanAndMarkPermClosure     scan_mark_perm_cl(_g1h, &pss);
     G1ParScanAndMarkHeapRSClosure   scan_mark_heap_rs_cl(_g1h, &pss);
@@ -4024,6 +3927,9 @@
       _g1h->g1_policy()->record_obj_copy_time(i, elapsed_ms-term_ms);
       _g1h->g1_policy()->record_termination_time(i, term_ms);
     }
+    if (G1UseSurvivorSpaces) {
+      _g1h->g1_policy()->record_thread_age_table(pss.age_table());
+    }
     _g1h->update_surviving_young_words(pss.surviving_young_words()+1);
 
     // Clean up any par-expanded rem sets.
@@ -4066,23 +3972,6 @@
 
 // *** Common G1 Evacuation Stuff
 
-class G1CountClosure: public OopsInHeapRegionClosure {
-public:
-  int n;
-  G1CountClosure() : n(0) {}
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  void do_oop(oop* p) {
-    oop obj = *p;
-    assert(obj != NULL && G1CollectedHeap::heap()->obj_in_cs(obj),
-           "Rem set closure called on non-rem-set pointer.");
-    n++;
-  }
-};
-
-static G1CountClosure count_closure;
-
 void
 G1CollectedHeap::
 g1_process_strong_roots(bool collecting_perm_gen,
@@ -4125,28 +4014,6 @@
 
   // XXX What should this be doing in the parallel case?
   g1_policy()->record_collection_pause_end_CH_strong_roots();
-  if (G1VerifyRemSet) {
-    // :::: FIXME ::::
-    // The stupid remembered set doesn't know how to filter out dead
-    // objects, which the smart one does, and so when it is created
-    // and then compared the number of entries in each differs and
-    // the verification code fails.
-    guarantee(false, "verification code is broken, see note");
-
-    // Let's make sure that the current rem set agrees with the stupidest
-    // one possible!
-    bool refs_enabled = ref_processor()->discovery_enabled();
-    if (refs_enabled) ref_processor()->disable_discovery();
-    StupidG1RemSet stupid(this);
-    count_closure.n = 0;
-    stupid.oops_into_collection_set_do(&count_closure, worker_i);
-    int stupid_n = count_closure.n;
-    count_closure.n = 0;
-    g1_rem_set()->oops_into_collection_set_do(&count_closure, worker_i);
-    guarantee(count_closure.n == stupid_n, "Old and new rem sets differ.");
-    gclog_or_tty->print_cr("\nFound %d pointers in heap RS.", count_closure.n);
-    if (refs_enabled) ref_processor()->enable_discovery();
-  }
   if (scan_so != NULL) {
     scan_scan_only_set(scan_so, worker_i);
   }
@@ -4240,7 +4107,6 @@
   g1_rem_set()->prepare_for_oops_into_collection_set_do();
   concurrent_g1_refine()->set_use_cache(false);
   int n_workers = (ParallelGCThreads > 0 ? workers()->total_workers() : 1);
-
   set_par_threads(n_workers);
   G1ParTask g1_par_task(this, n_workers, _task_queues);
 
@@ -4248,8 +4114,9 @@
 
   change_strong_roots_parity();  // In preparation for parallel strong roots.
   rem_set()->prepare_for_younger_refs_iterate(true);
+
+  assert(dirty_card_queue_set().completed_buffers_num() == 0, "Should be empty");
   double start_par = os::elapsedTime();
-
   if (ParallelGCThreads > 0) {
     // The individual threads will set their evac-failure closures.
     workers()->run_task(&g1_par_task);
@@ -4263,14 +4130,14 @@
   // Is this the right thing to do here?  We don't save marks
   // on individual heap regions when we allocate from
   // them in parallel, so this seems like the correct place for this.
-  all_alloc_regions_note_end_of_copying();
+  retire_all_alloc_regions();
   {
     G1IsAliveClosure is_alive(this);
     G1KeepAliveClosure keep_alive(this);
     JNIHandles::weak_oops_do(&is_alive, &keep_alive);
   }
-
   g1_rem_set()->cleanup_after_oops_into_collection_set_do();
+
   concurrent_g1_refine()->set_use_cache(true);
 
   finalize_for_evac_failure();
@@ -4281,7 +4148,6 @@
 
   if (evacuation_failed()) {
     remove_self_forwarding_pointers();
-
     if (PrintGCDetails) {
       gclog_or_tty->print(" (evacuation failed)");
     } else if (PrintGC) {
@@ -4289,6 +4155,14 @@
     }
   }
 
+  if (G1DeferredRSUpdate) {
+    RedirtyLoggedCardTableEntryFastClosure redirty;
+    dirty_card_queue_set().set_closure(&redirty);
+    dirty_card_queue_set().apply_closure_to_all_completed_buffers();
+    JavaThread::dirty_card_queue_set().merge_bufferlists(&dirty_card_queue_set());
+    assert(dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed");
+  }
+
   COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
 }
 
@@ -4325,7 +4199,6 @@
                                   size_t& freed_regions,
                                   UncleanRegionList* list,
                                   bool par) {
-  assert(!hr->popular(), "should not free popular regions");
   pre_used += hr->used();
   if (hr->isHumongous()) {
     assert(hr->startsHumongous(),
@@ -4391,15 +4264,58 @@
   }
 }
 
+
+class G1ParCleanupCTTask : public AbstractGangTask {
+  CardTableModRefBS* _ct_bs;
+  G1CollectedHeap* _g1h;
+public:
+  G1ParCleanupCTTask(CardTableModRefBS* ct_bs,
+                     G1CollectedHeap* g1h) :
+    AbstractGangTask("G1 Par Cleanup CT Task"),
+    _ct_bs(ct_bs),
+    _g1h(g1h)
+  { }
+
+  void work(int i) {
+    HeapRegion* r;
+    while (r = _g1h->pop_dirty_cards_region()) {
+      clear_cards(r);
+    }
+  }
+  void clear_cards(HeapRegion* r) {
+    // Cards for Survivor and Scan-Only regions will be dirtied later.
+    if (!r->is_scan_only() && !r->is_survivor()) {
+      _ct_bs->clear(MemRegion(r->bottom(), r->end()));
+    }
+  }
+};
+
+
 void G1CollectedHeap::cleanUpCardTable() {
   CardTableModRefBS* ct_bs = (CardTableModRefBS*) (barrier_set());
   double start = os::elapsedTime();
 
-  ct_bs->clear(_g1_committed);
-
+  // Iterate over the dirty cards region list.
+  G1ParCleanupCTTask cleanup_task(ct_bs, this);
+  if (ParallelGCThreads > 0) {
+    set_par_threads(workers()->total_workers());
+    workers()->run_task(&cleanup_task);
+    set_par_threads(0);
+  } else {
+    while (_dirty_cards_region_list) {
+      HeapRegion* r = _dirty_cards_region_list;
+      cleanup_task.clear_cards(r);
+      _dirty_cards_region_list = r->get_next_dirty_cards_region();
+      if (_dirty_cards_region_list == r) {
+        // The last region.
+        _dirty_cards_region_list = NULL;
+      }
+      r->set_next_dirty_cards_region(NULL);
+    }
+  }
   // now, redirty the cards of the scan-only and survivor regions
   // (it seemed faster to do it this way, instead of iterating over
-  // all regions and then clearing / dirtying as approprite)
+  // all regions and then clearing / dirtying as appropriate)
   dirtyCardsForYoungRegions(ct_bs, _young_list->first_scan_only_region());
   dirtyCardsForYoungRegions(ct_bs, _young_list->first_survivor_region());
 
@@ -4409,12 +4325,6 @@
 
 
 void G1CollectedHeap::do_collection_pause_if_appropriate(size_t word_size) {
-  // First do any popular regions.
-  HeapRegion* hr;
-  while ((hr = popular_region_to_evac()) != NULL) {
-    evac_popular_region(hr);
-  }
-  // Now do heuristic pauses.
   if (g1_policy()->should_do_collection_pause(word_size)) {
     do_collection_pause();
   }
@@ -4810,7 +4720,7 @@
 public:
   RegionCounter() : _n(0) {}
   bool doHeapRegion(HeapRegion* r) {
-    if (r->is_empty() && !r->popular()) {
+    if (r->is_empty()) {
       assert(!r->isHumongous(), "H regions should not be empty.");
       _n++;
     }
@@ -4903,7 +4813,7 @@
   return no_allocs;
 }
 
-void G1CollectedHeap::all_alloc_regions_note_end_of_copying() {
+void G1CollectedHeap::retire_all_alloc_regions() {
   for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
     HeapRegion* r = _gc_alloc_regions[ap];
     if (r != NULL) {
@@ -4916,8 +4826,7 @@
         }
       }
       if (!has_processed_alias) {
-        r->note_end_of_copying();
-        g1_policy()->record_after_bytes(r->used());
+        retire_alloc_region(r, false /* par */);
       }
     }
   }
@@ -4934,7 +4843,7 @@
   assert(_free_region_list == NULL, "Postcondition of loop.");
   if (_free_region_list_size != 0) {
     gclog_or_tty->print_cr("Size is %d.", _free_region_list_size);
-    print();
+    print_on(gclog_or_tty, true /* extended */);
   }
   assert(_free_region_list_size == 0, "Postconditions of loop.");
 }
@@ -4955,14 +4864,8 @@
       r->set_zero_fill_allocated();
     } else {
       assert(r->is_empty(), "tautology");
-      if (r->popular()) {
-        if (r->zero_fill_state() != HeapRegion::Allocated) {
-          r->ensure_zero_filled_locked();
-          r->set_zero_fill_allocated();
-        }
-      } else {
-        _n++;
-        switch (r->zero_fill_state()) {
+      _n++;
+      switch (r->zero_fill_state()) {
         case HeapRegion::NotZeroFilled:
         case HeapRegion::ZeroFilling:
           _g1->put_region_on_unclean_list_locked(r);
@@ -4973,7 +4876,6 @@
         case HeapRegion::ZeroFilled:
           _g1->put_free_region_on_list_locked(r);
           break;
-        }
       }
     }
     return false;
@@ -5021,376 +4923,6 @@
   heap_region_iterate(&rs);
 }
 
-class CountObjClosure: public ObjectClosure {
-  size_t _n;
-public:
-  CountObjClosure() : _n(0) {}
-  void do_object(oop obj) { _n++; }
-  size_t n() { return _n; }
-};
-
-size_t G1CollectedHeap::pop_object_used_objs() {
-  size_t sum_objs = 0;
-  for (int i = 0; i < G1NumPopularRegions; i++) {
-    CountObjClosure cl;
-    _hrs->at(i)->object_iterate(&cl);
-    sum_objs += cl.n();
-  }
-  return sum_objs;
-}
-
-size_t G1CollectedHeap::pop_object_used_bytes() {
-  size_t sum_bytes = 0;
-  for (int i = 0; i < G1NumPopularRegions; i++) {
-    sum_bytes += _hrs->at(i)->used();
-  }
-  return sum_bytes;
-}
-
-
-static int nq = 0;
-
-HeapWord* G1CollectedHeap::allocate_popular_object(size_t word_size) {
-  while (_cur_pop_hr_index < G1NumPopularRegions) {
-    HeapRegion* cur_pop_region = _hrs->at(_cur_pop_hr_index);
-    HeapWord* res = cur_pop_region->allocate(word_size);
-    if (res != NULL) {
-      // We account for popular objs directly in the used summary:
-      _summary_bytes_used += (word_size * HeapWordSize);
-      return res;
-    }
-    // Otherwise, try the next region (first making sure that we remember
-    // the last "top" value as the "next_top_at_mark_start", so that
-    // objects made popular during markings aren't automatically considered
-    // live).
-    cur_pop_region->note_end_of_copying();
-    // Otherwise, try the next region.
-    _cur_pop_hr_index++;
-  }
-  // XXX: For now !!!
-  vm_exit_out_of_memory(word_size,
-                        "Not enough pop obj space (To Be Fixed)");
-  return NULL;
-}
-
-class HeapRegionList: public CHeapObj {
-  public:
-  HeapRegion* hr;
-  HeapRegionList* next;
-};
-
-void G1CollectedHeap::schedule_popular_region_evac(HeapRegion* r) {
-  // This might happen during parallel GC, so protect by this lock.
-  MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
-  // We don't schedule regions whose evacuations are already pending, or
-  // are already being evacuated.
-  if (!r->popular_pending() && !r->in_collection_set()) {
-    r->set_popular_pending(true);
-    if (G1TracePopularity) {
-      gclog_or_tty->print_cr("Scheduling region "PTR_FORMAT" "
-                             "["PTR_FORMAT", "PTR_FORMAT") for pop-object evacuation.",
-                             r, r->bottom(), r->end());
-    }
-    HeapRegionList* hrl = new HeapRegionList;
-    hrl->hr = r;
-    hrl->next = _popular_regions_to_be_evacuated;
-    _popular_regions_to_be_evacuated = hrl;
-  }
-}
-
-HeapRegion* G1CollectedHeap::popular_region_to_evac() {
-  MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
-  HeapRegion* res = NULL;
-  while (_popular_regions_to_be_evacuated != NULL && res == NULL) {
-    HeapRegionList* hrl = _popular_regions_to_be_evacuated;
-    _popular_regions_to_be_evacuated = hrl->next;
-    res = hrl->hr;
-    // The G1RSPopLimit may have increased, so recheck here...
-    if (res->rem_set()->occupied() < (size_t) G1RSPopLimit) {
-      // Hah: don't need to schedule.
-      if (G1TracePopularity) {
-        gclog_or_tty->print_cr("Unscheduling region "PTR_FORMAT" "
-                               "["PTR_FORMAT", "PTR_FORMAT") "
-                               "for pop-object evacuation (size %d < limit %d)",
-                               res, res->bottom(), res->end(),
-                               res->rem_set()->occupied(), G1RSPopLimit);
-      }
-      res->set_popular_pending(false);
-      res = NULL;
-    }
-    // We do not reset res->popular() here; if we did so, it would allow
-    // the region to be "rescheduled" for popularity evacuation.  Instead,
-    // this is done in the collection pause, with the world stopped.
-    // So the invariant is that the regions in the list have the popularity
-    // boolean set, but having the boolean set does not imply membership
-    // on the list (though there can at most one such pop-pending region
-    // not on the list at any time).
-    delete hrl;
-  }
-  return res;
-}
-
-void G1CollectedHeap::evac_popular_region(HeapRegion* hr) {
-  while (true) {
-    // Don't want to do a GC pause while cleanup is being completed!
-    wait_for_cleanup_complete();
-
-    // Read the GC count while holding the Heap_lock
-    int gc_count_before = SharedHeap::heap()->total_collections();
-    g1_policy()->record_stop_world_start();
-
-    {
-      MutexUnlocker mu(Heap_lock);  // give up heap lock, execute gets it back
-      VM_G1PopRegionCollectionPause op(gc_count_before, hr);
-      VMThread::execute(&op);
-
-      // If the prolog succeeded, we didn't do a GC for this.
-      if (op.prologue_succeeded()) break;
-    }
-    // Otherwise we didn't.  We should recheck the size, though, since
-    // the limit may have increased...
-    if (hr->rem_set()->occupied() < (size_t) G1RSPopLimit) {
-      hr->set_popular_pending(false);
-      break;
-    }
-  }
-}
-
-void G1CollectedHeap::atomic_inc_obj_rc(oop obj) {
-  Atomic::inc(obj_rc_addr(obj));
-}
-
-class CountRCClosure: public OopsInHeapRegionClosure {
-  G1CollectedHeap* _g1h;
-  bool _parallel;
-public:
-  CountRCClosure(G1CollectedHeap* g1h) :
-    _g1h(g1h), _parallel(ParallelGCThreads > 0)
-  {}
-  void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  void do_oop(oop* p) {
-    oop obj = *p;
-    assert(obj != NULL, "Precondition.");
-    if (_parallel) {
-      // We go sticky at the limit to avoid excess contention.
-      // If we want to track the actual RC's further, we'll need to keep a
-      // per-thread hash table or something for the popular objects.
-      if (_g1h->obj_rc(obj) < G1ObjPopLimit) {
-        _g1h->atomic_inc_obj_rc(obj);
-      }
-    } else {
-      _g1h->inc_obj_rc(obj);
-    }
-  }
-};
-
-class EvacPopObjClosure: public ObjectClosure {
-  G1CollectedHeap* _g1h;
-  size_t _pop_objs;
-  size_t _max_rc;
-public:
-  EvacPopObjClosure(G1CollectedHeap* g1h) :
-    _g1h(g1h), _pop_objs(0), _max_rc(0) {}
-
-  void do_object(oop obj) {
-    size_t rc = _g1h->obj_rc(obj);
-    _max_rc = MAX2(rc, _max_rc);
-    if (rc >= (size_t) G1ObjPopLimit) {
-      _g1h->_pop_obj_rc_at_copy.add((double)rc);
-      size_t word_sz = obj->size();
-      HeapWord* new_pop_loc = _g1h->allocate_popular_object(word_sz);
-      oop new_pop_obj = (oop)new_pop_loc;
-      Copy::aligned_disjoint_words((HeapWord*)obj, new_pop_loc, word_sz);
-      obj->forward_to(new_pop_obj);
-      G1ScanAndBalanceClosure scan_and_balance(_g1h);
-      new_pop_obj->oop_iterate_backwards(&scan_and_balance);
-      // preserve "next" mark bit if marking is in progress.
-      if (_g1h->mark_in_progress() && !_g1h->is_obj_ill(obj)) {
-        _g1h->concurrent_mark()->markAndGrayObjectIfNecessary(new_pop_obj);
-      }
-
-      if (G1TracePopularity) {
-        gclog_or_tty->print_cr("Found obj " PTR_FORMAT " of word size " SIZE_FORMAT
-                               " pop (%d), move to " PTR_FORMAT,
-                               (void*) obj, word_sz,
-                               _g1h->obj_rc(obj), (void*) new_pop_obj);
-      }
-      _pop_objs++;
-    }
-  }
-  size_t pop_objs() { return _pop_objs; }
-  size_t max_rc() { return _max_rc; }
-};
-
-class G1ParCountRCTask : public AbstractGangTask {
-  G1CollectedHeap* _g1h;
-  BitMap _bm;
-
-  size_t getNCards() {
-    return (_g1h->capacity() + G1BlockOffsetSharedArray::N_bytes - 1)
-      / G1BlockOffsetSharedArray::N_bytes;
-  }
-  CountRCClosure _count_rc_closure;
-public:
-  G1ParCountRCTask(G1CollectedHeap* g1h) :
-    AbstractGangTask("G1 Par RC Count task"),
-    _g1h(g1h), _bm(getNCards()), _count_rc_closure(g1h)
-  {}
-
-  void work(int i) {
-    ResourceMark rm;
-    HandleMark   hm;
-    _g1h->g1_rem_set()->oops_into_collection_set_do(&_count_rc_closure, i);
-  }
-};
-
-void G1CollectedHeap::popularity_pause_preamble(HeapRegion* popular_region) {
-  // We're evacuating a single region (for popularity).
-  if (G1TracePopularity) {
-    gclog_or_tty->print_cr("Doing pop region pause for ["PTR_FORMAT", "PTR_FORMAT")",
-                           popular_region->bottom(), popular_region->end());
-  }
-  g1_policy()->set_single_region_collection_set(popular_region);
-  size_t max_rc;
-  if (!compute_reference_counts_and_evac_popular(popular_region,
-                                                 &max_rc)) {
-    // We didn't evacuate any popular objects.
-    // We increase the RS popularity limit, to prevent this from
-    // happening in the future.
-    if (G1RSPopLimit < (1 << 30)) {
-      G1RSPopLimit *= 2;
-    }
-    // For now, interesting enough for a message:
-#if 1
-    gclog_or_tty->print_cr("In pop region pause for ["PTR_FORMAT", "PTR_FORMAT"), "
-                           "failed to find a pop object (max = %d).",
-                           popular_region->bottom(), popular_region->end(),
-                           max_rc);
-    gclog_or_tty->print_cr("Increased G1RSPopLimit to %d.", G1RSPopLimit);
-#endif // 0
-    // Also, we reset the collection set to NULL, to make the rest of
-    // the collection do nothing.
-    assert(popular_region->next_in_collection_set() == NULL,
-           "should be single-region.");
-    popular_region->set_in_collection_set(false);
-    popular_region->set_popular_pending(false);
-    g1_policy()->clear_collection_set();
-  }
-}
-
-bool G1CollectedHeap::
-compute_reference_counts_and_evac_popular(HeapRegion* popular_region,
-                                          size_t* max_rc) {
-  HeapWord* rc_region_bot;
-  HeapWord* rc_region_end;
-
-  // Set up the reference count region.
-  HeapRegion* rc_region = newAllocRegion(HeapRegion::GrainWords);
-  if (rc_region != NULL) {
-    rc_region_bot = rc_region->bottom();
-    rc_region_end = rc_region->end();
-  } else {
-    rc_region_bot = NEW_C_HEAP_ARRAY(HeapWord, HeapRegion::GrainWords);
-    if (rc_region_bot == NULL) {
-      vm_exit_out_of_memory(HeapRegion::GrainWords,
-                            "No space for RC region.");
-    }
-    rc_region_end = rc_region_bot + HeapRegion::GrainWords;
-  }
-
-  if (G1TracePopularity)
-    gclog_or_tty->print_cr("RC region is ["PTR_FORMAT", "PTR_FORMAT")",
-                           rc_region_bot, rc_region_end);
-  if (rc_region_bot > popular_region->bottom()) {
-    _rc_region_above = true;
-    _rc_region_diff =
-      pointer_delta(rc_region_bot, popular_region->bottom(), 1);
-  } else {
-    assert(rc_region_bot < popular_region->bottom(), "Can't be equal.");
-    _rc_region_above = false;
-    _rc_region_diff =
-      pointer_delta(popular_region->bottom(), rc_region_bot, 1);
-  }
-  g1_policy()->record_pop_compute_rc_start();
-  // Count external references.
-  g1_rem_set()->prepare_for_oops_into_collection_set_do();
-  if (ParallelGCThreads > 0) {
-
-    set_par_threads(workers()->total_workers());
-    G1ParCountRCTask par_count_rc_task(this);
-    workers()->run_task(&par_count_rc_task);
-    set_par_threads(0);
-
-  } else {
-    CountRCClosure count_rc_closure(this);
-    g1_rem_set()->oops_into_collection_set_do(&count_rc_closure, 0);
-  }
-  g1_rem_set()->cleanup_after_oops_into_collection_set_do();
-  g1_policy()->record_pop_compute_rc_end();
-
-  // Now evacuate popular objects.
-  g1_policy()->record_pop_evac_start();
-  EvacPopObjClosure evac_pop_obj_cl(this);
-  popular_region->object_iterate(&evac_pop_obj_cl);
-  *max_rc = evac_pop_obj_cl.max_rc();
-
-  // Make sure the last "top" value of the current popular region is copied
-  // as the "next_top_at_mark_start", so that objects made popular during
-  // markings aren't automatically considered live.
-  HeapRegion* cur_pop_region = _hrs->at(_cur_pop_hr_index);
-  cur_pop_region->note_end_of_copying();
-
-  if (rc_region != NULL) {
-    free_region(rc_region);
-  } else {
-    FREE_C_HEAP_ARRAY(HeapWord, rc_region_bot);
-  }
-  g1_policy()->record_pop_evac_end();
-
-  return evac_pop_obj_cl.pop_objs() > 0;
-}
-
-class CountPopObjInfoClosure: public HeapRegionClosure {
-  size_t _objs;
-  size_t _bytes;
-
-  class CountObjClosure: public ObjectClosure {
-    int _n;
-  public:
-    CountObjClosure() : _n(0) {}
-    void do_object(oop obj) { _n++; }
-    size_t n() { return _n; }
-  };
-
-public:
-  CountPopObjInfoClosure() : _objs(0), _bytes(0) {}
-  bool doHeapRegion(HeapRegion* r) {
-    _bytes += r->used();
-    CountObjClosure blk;
-    r->object_iterate(&blk);
-    _objs += blk.n();
-    return false;
-  }
-  size_t objs() { return _objs; }
-  size_t bytes() { return _bytes; }
-};
-
-
-void G1CollectedHeap::print_popularity_summary_info() const {
-  CountPopObjInfoClosure blk;
-  for (int i = 0; i <= _cur_pop_hr_index; i++) {
-    blk.doHeapRegion(_hrs->at(i));
-  }
-  gclog_or_tty->print_cr("\nPopular objects: %d objs, %d bytes.",
-                         blk.objs(), blk.bytes());
-  gclog_or_tty->print_cr("   RC at copy = [avg = %5.2f, max = %5.2f, sd = %5.2f].",
-                _pop_obj_rc_at_copy.avg(),
-                _pop_obj_rc_at_copy.maximum(),
-                _pop_obj_rc_at_copy.sd());
-}
-
 void G1CollectedHeap::set_refine_cte_cl_concurrency(bool concurrent) {
   _refine_cte_cl->set_concurrent(concurrent);
 }
@@ -5464,7 +4996,6 @@
 }
 
 bool G1CollectedHeap::print_region_accounting_info() {
-  gclog_or_tty->print_cr("P regions: %d.", G1NumPopularRegions);
   gclog_or_tty->print_cr("Free regions: %d (count: %d count list %d) (clean: %d unclean: %d).",
                          free_regions(),
                          count_free_regions(), count_free_regions_list(),
@@ -5490,8 +5021,3 @@
 void G1CollectedHeap::g1_unimplemented() {
   // Unimplemented();
 }
-
-
-// Local Variables: ***
-// c-indentation-style: gnu ***
-// End: ***
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
 class HeapRegion;
 class HeapRegionSeq;
-class HeapRegionList;
 class PermanentGenerationSpec;
 class GenerationSpec;
 class OopsInHeapRegionClosure;
@@ -57,8 +56,11 @@
 #  define IF_G1_DETAILED_STATS(code)
 #endif
 
-typedef GenericTaskQueue<oop*>    RefToScanQueue;
-typedef GenericTaskQueueSet<oop*> RefToScanQueueSet;
+typedef GenericTaskQueue<StarTask>    RefToScanQueue;
+typedef GenericTaskQueueSet<StarTask> RefToScanQueueSet;
+
+typedef int RegionIdx_t;   // needs to hold [ 0..max_regions() )
+typedef int CardIdx_t;     // needs to hold [ 0..CardsPerRegion )
 
 enum G1GCThreadGroups {
   G1CRGroup = 0,
@@ -90,7 +92,7 @@
   HeapRegion* _curr_scan_only;
 
   HeapRegion* _survivor_head;
-  HeapRegion* _survivors_tail;
+  HeapRegion* _survivor_tail;
   size_t      _survivor_length;
 
   void          empty_list(HeapRegion* list);
@@ -105,6 +107,7 @@
   bool          is_empty() { return _length == 0; }
   size_t        length() { return _length; }
   size_t        scan_only_length() { return _scan_only_length; }
+  size_t        survivor_length() { return _survivor_length; }
 
   void rs_length_sampling_init();
   bool rs_length_sampling_more();
@@ -120,6 +123,7 @@
   HeapRegion* first_region() { return _head; }
   HeapRegion* first_scan_only_region() { return _scan_only_head; }
   HeapRegion* first_survivor_region() { return _survivor_head; }
+  HeapRegion* last_survivor_region() { return _survivor_tail; }
   HeapRegion* par_get_next_scan_only_region() {
     MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
     HeapRegion* ret = _curr_scan_only;
@@ -141,7 +145,6 @@
   friend class VM_GenCollectForPermanentAllocation;
   friend class VM_G1CollectFull;
   friend class VM_G1IncCollectionPause;
-  friend class VM_G1PopRegionCollectionPause;
   friend class VMStructs;
 
   // Closures used in implementation.
@@ -158,6 +161,7 @@
   friend class RegionSorter;
   friend class CountRCClosure;
   friend class EvacPopObjClosure;
+  friend class G1ParCleanupCTTask;
 
   // Other related classes.
   friend class G1MarkSweep;
@@ -170,7 +174,6 @@
     NumAPIs = HeapRegion::MaxAge
   };
 
-
   // The one and only G1CollectedHeap, so static functions can find it.
   static G1CollectedHeap* _g1h;
 
@@ -215,11 +218,20 @@
 
   // Postcondition: cur_alloc_region == NULL.
   void abandon_cur_alloc_region();
+  void abandon_gc_alloc_regions();
 
   // The to-space memory regions into which objects are being copied during
   // a GC.
   HeapRegion* _gc_alloc_regions[GCAllocPurposeCount];
-  uint _gc_alloc_region_counts[GCAllocPurposeCount];
+  size_t _gc_alloc_region_counts[GCAllocPurposeCount];
+  // These are the regions, one per GCAllocPurpose, that are half-full
+  // at the end of a collection and that we want to reuse during the
+  // next collection.
+  HeapRegion* _retained_gc_alloc_regions[GCAllocPurposeCount];
+  // This specifies whether we will keep the last half-full region at
+  // the end of a collection so that it can be reused during the next
+  // collection (this is specified per GCAllocPurpose)
+  bool _retain_gc_alloc_region[GCAllocPurposeCount];
 
   // A list of the regions that have been set to be alloc regions in the
   // current collection.
@@ -243,9 +255,26 @@
   // than the current allocation region.
   size_t _summary_bytes_used;
 
-  // Summary information about popular objects; method to print it.
-  NumberSeq _pop_obj_rc_at_copy;
-  void print_popularity_summary_info() const;
+  // This is used for a quick test on whether a reference points into
+  // the collection set or not. Basically, we have an array, with one
+  // byte per region, and that byte denotes whether the corresponding
+  // region is in the collection set or not. The entry corresponding
+  // the bottom of the heap, i.e., region 0, is pointed to by
+  // _in_cset_fast_test_base.  The _in_cset_fast_test field has been
+  // biased so that it actually points to address 0 of the address
+  // space, to make the test as fast as possible (we can simply shift
+  // the address to address into it, instead of having to subtract the
+  // bottom of the heap from the address before shifting it; basically
+  // it works in the same way the card table works).
+  bool* _in_cset_fast_test;
+
+  // The allocated array used for the fast test on whether a reference
+  // points into the collection set or not. This field is also used to
+  // free the array.
+  bool* _in_cset_fast_test_base;
+
+  // The length of the _in_cset_fast_test_base array.
+  size_t _in_cset_fast_test_length;
 
   volatile unsigned _gc_time_stamp;
 
@@ -260,8 +289,8 @@
   // Returns "true" iff none of the gc alloc regions have any allocations
   // since the last call to "save_marks".
   bool all_alloc_regions_no_allocs_since_save_marks();
-  // Calls "note_end_of_copying on all gc alloc_regions.
-  void all_alloc_regions_note_end_of_copying();
+  // Perform finalization stuff on all allocation regions.
+  void retire_all_alloc_regions();
 
   // The number of regions allocated to hold humongous objects.
   int         _num_humongous_regions;
@@ -330,6 +359,10 @@
   // that parallel threads might be attempting allocations.
   void par_allocate_remaining_space(HeapRegion* r);
 
+  // Retires an allocation region when it is full or at the end of a
+  // GC pause.
+  void  retire_alloc_region(HeapRegion* alloc_region, bool par);
+
   // Helper function for two callbacks below.
   // "full", if true, indicates that the GC is for a System.gc() request,
   // and should collect the entire heap.  If "clear_all_soft_refs" is true,
@@ -368,6 +401,38 @@
   virtual void gc_prologue(bool full);
   virtual void gc_epilogue(bool full);
 
+  // We register a region with the fast "in collection set" test. We
+  // simply set to true the array slot corresponding to this region.
+  void register_region_with_in_cset_fast_test(HeapRegion* r) {
+    assert(_in_cset_fast_test_base != NULL, "sanity");
+    assert(r->in_collection_set(), "invariant");
+    int index = r->hrs_index();
+    assert(0 <= (size_t) index && (size_t) index < _in_cset_fast_test_length,
+           "invariant");
+    assert(!_in_cset_fast_test_base[index], "invariant");
+    _in_cset_fast_test_base[index] = true;
+  }
+
+  // This is a fast test on whether a reference points into the
+  // collection set or not. It does not assume that the reference
+  // points into the heap; if it doesn't, it will return false.
+  bool in_cset_fast_test(oop obj) {
+    assert(_in_cset_fast_test != NULL, "sanity");
+    if (_g1_committed.contains((HeapWord*) obj)) {
+      // no need to subtract the bottom of the heap from obj,
+      // _in_cset_fast_test is biased
+      size_t index = ((size_t) obj) >> HeapRegion::LogOfHRGrainBytes;
+      bool ret = _in_cset_fast_test[index];
+      // let's make sure the result is consistent with what the slower
+      // test returns
+      assert( ret || !obj_in_cs(obj), "sanity");
+      assert(!ret ||  obj_in_cs(obj), "sanity");
+      return ret;
+    } else {
+      return false;
+    }
+  }
+
 protected:
 
   // Shrink the garbage-first heap by at most the given size (in bytes!).
@@ -380,10 +445,8 @@
   virtual void do_collection_pause();
 
   // The guts of the incremental collection pause, executed by the vm
-  // thread.  If "popular_region" is non-NULL, this pause should evacuate
-  // this single region whose remembered set has gotten large, moving
-  // any popular objects to one of the popular regions.
-  virtual void do_collection_pause_at_safepoint(HeapRegion* popular_region);
+  // thread.
+  virtual void do_collection_pause_at_safepoint();
 
   // Actually do the work of evacuating the collection set.
   virtual void evacuate_collection_set();
@@ -398,6 +461,10 @@
   // And it's mod ref barrier set, used to track updates for the above.
   ModRefBarrierSet* _mr_bs;
 
+  // A set of cards that cover the objects for which the Rsets should be updated
+  // concurrently after the collection.
+  DirtyCardQueueSet _dirty_card_queue_set;
+
   // The Heap Region Rem Set Iterator.
   HeapRegionRemSetIterator** _rem_set_iterator;
 
@@ -526,8 +593,21 @@
 
   // Ensure that the relevant gc_alloc regions are set.
   void get_gc_alloc_regions();
-  // We're done with GC alloc regions; release them, as appropriate.
-  void release_gc_alloc_regions();
+  // We're done with GC alloc regions. We are going to tear down the
+  // gc alloc list and remove the gc alloc tag from all the regions on
+  // that list. However, we will also retain the last (i.e., the one
+  // that is half-full) GC alloc region, per GCAllocPurpose, for
+  // possible reuse during the next collection, provided
+  // _retain_gc_alloc_region[] indicates that it should be the
+  // case. Said regions are kept in the _retained_gc_alloc_regions[]
+  // array. If the parameter totally is set, we will not retain any
+  // regions, irrespective of what _retain_gc_alloc_region[]
+  // indicates.
+  void release_gc_alloc_regions(bool totally);
+#ifndef PRODUCT
+  // Useful for debugging.
+  void print_gc_alloc_regions();
+#endif // !PRODUCT
 
   // ("Weak") Reference processing support
   ReferenceProcessor* _ref_processor;
@@ -541,72 +621,18 @@
 
   SubTasksDone* _process_strong_tasks;
 
-  // Allocate space to hold a popular object.  Result is guaranteed below
-  // "popular_object_boundary()".  Note: CURRENTLY halts the system if we
-  // run out of space to hold popular objects.
-  HeapWord* allocate_popular_object(size_t word_size);
-
-  // The boundary between popular and non-popular objects.
-  HeapWord* _popular_object_boundary;
-
-  HeapRegionList* _popular_regions_to_be_evacuated;
-
-  // Compute which objects in "single_region" are popular.  If any are,
-  // evacuate them to a popular region, leaving behind forwarding pointers,
-  // and select "popular_region" as the single collection set region.
-  // Otherwise, leave the collection set null.
-  void popularity_pause_preamble(HeapRegion* populer_region);
-
-  // Compute which objects in "single_region" are popular, and evacuate
-  // them to a popular region, leaving behind forwarding pointers.
-  // Returns "true" if at least one popular object is discovered and
-  // evacuated.  In any case, "*max_rc" is set to the maximum reference
-  // count of an object in the region.
-  bool compute_reference_counts_and_evac_popular(HeapRegion* populer_region,
-                                                 size_t* max_rc);
-  // Subroutines used in the above.
-  bool _rc_region_above;
-  size_t _rc_region_diff;
-  jint* obj_rc_addr(oop obj) {
-    uintptr_t obj_addr = (uintptr_t)obj;
-    if (_rc_region_above) {
-      jint* res = (jint*)(obj_addr + _rc_region_diff);
-      assert((uintptr_t)res > obj_addr, "RC region is above.");
-      return res;
-    } else {
-      jint* res = (jint*)(obj_addr - _rc_region_diff);
-      assert((uintptr_t)res < obj_addr, "RC region is below.");
-      return res;
-    }
-  }
-  jint obj_rc(oop obj) {
-    return *obj_rc_addr(obj);
-  }
-  void inc_obj_rc(oop obj) {
-    (*obj_rc_addr(obj))++;
-  }
-  void atomic_inc_obj_rc(oop obj);
-
-
-  // Number of popular objects and bytes (latter is cheaper!).
-  size_t pop_object_used_objs();
-  size_t pop_object_used_bytes();
-
-  // Index of the popular region in which allocation is currently being
-  // done.
-  int _cur_pop_hr_index;
-
   // List of regions which require zero filling.
   UncleanRegionList _unclean_region_list;
   bool _unclean_regions_coming;
 
-  bool check_age_cohort_well_formed_work(int a, HeapRegion* hr);
-
 public:
   void set_refine_cte_cl_concurrency(bool concurrent);
 
   RefToScanQueue *task_queue(int i);
 
+  // A set of cards where updates happened during the GC
+  DirtyCardQueueSet& dirty_card_queue_set() { return _dirty_card_queue_set; }
+
   // Create a G1CollectedHeap with the specified policy.
   // Must call the initialize method afterwards.
   // May not return if something goes wrong.
@@ -674,6 +700,9 @@
   size_t g1_reserved_obj_bytes() { return _g1_reserved.byte_size(); }
   virtual size_t capacity() const;
   virtual size_t used() const;
+  // This should be called when we're not holding the heap lock. The
+  // result might be a bit inaccurate.
+  size_t used_unlocked() const;
   size_t recalculate_used() const;
 #ifndef PRODUCT
   size_t recalculate_used_regions() const;
@@ -843,13 +872,25 @@
 
   // Iterate over all the ref-containing fields of all objects, calling
   // "cl.do_oop" on each.
-  virtual void oop_iterate(OopClosure* cl);
+  virtual void oop_iterate(OopClosure* cl) {
+    oop_iterate(cl, true);
+  }
+  void oop_iterate(OopClosure* cl, bool do_perm);
 
   // Same as above, restricted to a memory region.
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl);
+  virtual void oop_iterate(MemRegion mr, OopClosure* cl) {
+    oop_iterate(mr, cl, true);
+  }
+  void oop_iterate(MemRegion mr, OopClosure* cl, bool do_perm);
 
   // Iterate over all objects, calling "cl.do_object" on each.
-  virtual void object_iterate(ObjectClosure* cl);
+  virtual void object_iterate(ObjectClosure* cl) {
+    object_iterate(cl, true);
+  }
+  virtual void safe_object_iterate(ObjectClosure* cl) {
+    object_iterate(cl, true);
+  }
+  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
@@ -978,21 +1019,6 @@
   // words.
   virtual size_t large_typearray_limit();
 
-  // All popular objects are guaranteed to have addresses below this
-  // boundary.
-  HeapWord* popular_object_boundary() {
-    return _popular_object_boundary;
-  }
-
-  // Declare the region as one that should be evacuated because its
-  // remembered set is too large.
-  void schedule_popular_region_evac(HeapRegion* r);
-  // If there is a popular region to evacuate it, remove it from the list
-  // and return it.
-  HeapRegion* popular_region_to_evac();
-  // Evacuate the given popular region.
-  void evac_popular_region(HeapRegion* r);
-
   // Returns "true" iff the given word_size is "very large".
   static bool isHumongous(size_t word_size) {
     return word_size >= VeryLargeInWords;
@@ -1026,9 +1052,26 @@
   virtual void prepare_for_verify();
 
   // Perform verification.
+
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  // NOTE: Only the "prev" marking information is guaranteed to be
+  // consistent most of the time, so most calls to this should use
+  // use_prev_marking == true. Currently, there is only one case where
+  // this is called with use_prev_marking == false, which is to verify
+  // the "next" marking information at the end of remark.
+  void verify(bool allow_dirty, bool silent, bool use_prev_marking);
+
+  // Override; it uses the "prev" marking information
   virtual void verify(bool allow_dirty, bool silent);
+  // Default behavior by calling print(tty);
   virtual void print() const;
+  // This calls print_on(st, PrintHeapAtGCExtended).
   virtual void print_on(outputStream* st) const;
+  // If extended is true, it will print out information for all
+  // regions in the heap by calling print_on_extended(st).
+  virtual void print_on(outputStream* st, bool extended) const;
+  virtual void print_on_extended(outputStream* st) const;
 
   virtual void print_gc_threads_on(outputStream* st) const;
   virtual void gc_threads_do(ThreadClosure* tc) const;
@@ -1102,6 +1145,18 @@
   bool isMarkedPrev(oop obj) const;
   bool isMarkedNext(oop obj) const;
 
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  bool is_obj_dead_cond(const oop obj,
+                        const HeapRegion* hr,
+                        const bool use_prev_marking) const {
+    if (use_prev_marking) {
+      return is_obj_dead(obj, hr);
+    } else {
+      return is_obj_ill(obj, hr);
+    }
+  }
+
   // Determine if an object is dead, given the object and also
   // the region to which the object belongs. An object is dead
   // iff a) it was not allocated since the last mark and b) it
@@ -1139,8 +1194,19 @@
   // Added if it is in permanent gen it isn't dead.
   // Added if it is NULL it isn't dead.
 
-  bool is_obj_dead(oop obj) {
-    HeapRegion* hr = heap_region_containing(obj);
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  bool is_obj_dead_cond(const oop obj,
+                        const bool use_prev_marking) {
+    if (use_prev_marking) {
+      return is_obj_dead(obj);
+    } else {
+      return is_obj_ill(obj);
+    }
+  }
+
+  bool is_obj_dead(const oop obj) {
+    const HeapRegion* hr = heap_region_containing(obj);
     if (hr == NULL) {
       if (Universe::heap()->is_in_permanent(obj))
         return false;
@@ -1150,8 +1216,8 @@
     else return is_obj_dead(obj, hr);
   }
 
-  bool is_obj_ill(oop obj) {
-    HeapRegion* hr = heap_region_containing(obj);
+  bool is_obj_ill(const oop obj) {
+    const HeapRegion* hr = heap_region_containing(obj);
     if (hr == NULL) {
       if (Universe::heap()->is_in_permanent(obj))
         return false;
@@ -1172,6 +1238,16 @@
   ConcurrentMark* concurrent_mark() const { return _cm; }
   ConcurrentG1Refine* concurrent_g1_refine() const { return _cg1r; }
 
+  // The dirty cards region list is used to record a subset of regions
+  // whose cards need clearing. The list if populated during the
+  // remembered set scanning and drained during the card table
+  // cleanup. Although the methods are reentrant, population/draining
+  // phases must not overlap. For synchronization purposes the last
+  // element on the list points to itself.
+  HeapRegion* _dirty_cards_region_list;
+  void push_dirty_cards_region(HeapRegion* hr);
+  HeapRegion* pop_dirty_cards_region();
+
 public:
   void stop_conc_gc_threads();
 
@@ -1198,6 +1274,552 @@
 
 };
 
-// Local Variables: ***
-// c-indentation-style: gnu ***
-// End: ***
+#define use_local_bitmaps         1
+#define verify_local_bitmaps      0
+#define oop_buffer_length       256
+
+#ifndef PRODUCT
+class GCLabBitMap;
+class GCLabBitMapClosure: public BitMapClosure {
+private:
+  ConcurrentMark* _cm;
+  GCLabBitMap*    _bitmap;
+
+public:
+  GCLabBitMapClosure(ConcurrentMark* cm,
+                     GCLabBitMap* bitmap) {
+    _cm     = cm;
+    _bitmap = bitmap;
+  }
+
+  virtual bool do_bit(size_t offset);
+};
+#endif // !PRODUCT
+
+class GCLabBitMap: public BitMap {
+private:
+  ConcurrentMark* _cm;
+
+  int       _shifter;
+  size_t    _bitmap_word_covers_words;
+
+  // beginning of the heap
+  HeapWord* _heap_start;
+
+  // this is the actual start of the GCLab
+  HeapWord* _real_start_word;
+
+  // this is the actual end of the GCLab
+  HeapWord* _real_end_word;
+
+  // this is the first word, possibly located before the actual start
+  // of the GCLab, that corresponds to the first bit of the bitmap
+  HeapWord* _start_word;
+
+  // size of a GCLab in words
+  size_t _gclab_word_size;
+
+  static int shifter() {
+    return MinObjAlignment - 1;
+  }
+
+  // how many heap words does a single bitmap word corresponds to?
+  static size_t bitmap_word_covers_words() {
+    return BitsPerWord << shifter();
+  }
+
+  static size_t gclab_word_size() {
+    return G1ParallelGCAllocBufferSize / HeapWordSize;
+  }
+
+  static size_t bitmap_size_in_bits() {
+    size_t bits_in_bitmap = gclab_word_size() >> shifter();
+    // We are going to ensure that the beginning of a word in this
+    // bitmap also corresponds to the beginning of a word in the
+    // global marking bitmap. To handle the case where a GCLab
+    // starts from the middle of the bitmap, we need to add enough
+    // space (i.e. up to a bitmap word) to ensure that we have
+    // enough bits in the bitmap.
+    return bits_in_bitmap + BitsPerWord - 1;
+  }
+public:
+  GCLabBitMap(HeapWord* heap_start)
+    : BitMap(bitmap_size_in_bits()),
+      _cm(G1CollectedHeap::heap()->concurrent_mark()),
+      _shifter(shifter()),
+      _bitmap_word_covers_words(bitmap_word_covers_words()),
+      _heap_start(heap_start),
+      _gclab_word_size(gclab_word_size()),
+      _real_start_word(NULL),
+      _real_end_word(NULL),
+      _start_word(NULL)
+  {
+    guarantee( size_in_words() >= bitmap_size_in_words(),
+               "just making sure");
+  }
+
+  inline unsigned heapWordToOffset(HeapWord* addr) {
+    unsigned offset = (unsigned) pointer_delta(addr, _start_word) >> _shifter;
+    assert(offset < size(), "offset should be within bounds");
+    return offset;
+  }
+
+  inline HeapWord* offsetToHeapWord(size_t offset) {
+    HeapWord* addr =  _start_word + (offset << _shifter);
+    assert(_real_start_word <= addr && addr < _real_end_word, "invariant");
+    return addr;
+  }
+
+  bool fields_well_formed() {
+    bool ret1 = (_real_start_word == NULL) &&
+                (_real_end_word == NULL) &&
+                (_start_word == NULL);
+    if (ret1)
+      return true;
+
+    bool ret2 = _real_start_word >= _start_word &&
+      _start_word < _real_end_word &&
+      (_real_start_word + _gclab_word_size) == _real_end_word &&
+      (_start_word + _gclab_word_size + _bitmap_word_covers_words)
+                                                              > _real_end_word;
+    return ret2;
+  }
+
+  inline bool mark(HeapWord* addr) {
+    guarantee(use_local_bitmaps, "invariant");
+    assert(fields_well_formed(), "invariant");
+
+    if (addr >= _real_start_word && addr < _real_end_word) {
+      assert(!isMarked(addr), "should not have already been marked");
+
+      // first mark it on the bitmap
+      at_put(heapWordToOffset(addr), true);
+
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  inline bool isMarked(HeapWord* addr) {
+    guarantee(use_local_bitmaps, "invariant");
+    assert(fields_well_formed(), "invariant");
+
+    return at(heapWordToOffset(addr));
+  }
+
+  void set_buffer(HeapWord* start) {
+    guarantee(use_local_bitmaps, "invariant");
+    clear();
+
+    assert(start != NULL, "invariant");
+    _real_start_word = start;
+    _real_end_word   = start + _gclab_word_size;
+
+    size_t diff =
+      pointer_delta(start, _heap_start) % _bitmap_word_covers_words;
+    _start_word = start - diff;
+
+    assert(fields_well_formed(), "invariant");
+  }
+
+#ifndef PRODUCT
+  void verify() {
+    // verify that the marks have been propagated
+    GCLabBitMapClosure cl(_cm, this);
+    iterate(&cl);
+  }
+#endif // PRODUCT
+
+  void retire() {
+    guarantee(use_local_bitmaps, "invariant");
+    assert(fields_well_formed(), "invariant");
+
+    if (_start_word != NULL) {
+      CMBitMap*       mark_bitmap = _cm->nextMarkBitMap();
+
+      // this means that the bitmap was set up for the GCLab
+      assert(_real_start_word != NULL && _real_end_word != NULL, "invariant");
+
+      mark_bitmap->mostly_disjoint_range_union(this,
+                                0, // always start from the start of the bitmap
+                                _start_word,
+                                size_in_words());
+      _cm->grayRegionIfNecessary(MemRegion(_real_start_word, _real_end_word));
+
+#ifndef PRODUCT
+      if (use_local_bitmaps && verify_local_bitmaps)
+        verify();
+#endif // PRODUCT
+    } else {
+      assert(_real_start_word == NULL && _real_end_word == NULL, "invariant");
+    }
+  }
+
+  static size_t bitmap_size_in_words() {
+    return (bitmap_size_in_bits() + BitsPerWord - 1) / BitsPerWord;
+  }
+};
+
+class G1ParGCAllocBuffer: public ParGCAllocBuffer {
+private:
+  bool        _retired;
+  bool        _during_marking;
+  GCLabBitMap _bitmap;
+
+public:
+  G1ParGCAllocBuffer() :
+    ParGCAllocBuffer(G1ParallelGCAllocBufferSize / HeapWordSize),
+    _during_marking(G1CollectedHeap::heap()->mark_in_progress()),
+    _bitmap(G1CollectedHeap::heap()->reserved_region().start()),
+    _retired(false)
+  { }
+
+  inline bool mark(HeapWord* addr) {
+    guarantee(use_local_bitmaps, "invariant");
+    assert(_during_marking, "invariant");
+    return _bitmap.mark(addr);
+  }
+
+  inline void set_buf(HeapWord* buf) {
+    if (use_local_bitmaps && _during_marking)
+      _bitmap.set_buffer(buf);
+    ParGCAllocBuffer::set_buf(buf);
+    _retired = false;
+  }
+
+  inline void retire(bool end_of_gc, bool retain) {
+    if (_retired)
+      return;
+    if (use_local_bitmaps && _during_marking) {
+      _bitmap.retire();
+    }
+    ParGCAllocBuffer::retire(end_of_gc, retain);
+    _retired = true;
+  }
+};
+
+class G1ParScanThreadState : public StackObj {
+protected:
+  G1CollectedHeap* _g1h;
+  RefToScanQueue*  _refs;
+  DirtyCardQueue   _dcq;
+  CardTableModRefBS* _ct_bs;
+  G1RemSet* _g1_rem;
+
+  typedef GrowableArray<StarTask> OverflowQueue;
+  OverflowQueue* _overflowed_refs;
+
+  G1ParGCAllocBuffer _alloc_buffers[GCAllocPurposeCount];
+  ageTable           _age_table;
+
+  size_t           _alloc_buffer_waste;
+  size_t           _undo_waste;
+
+  OopsInHeapRegionClosure*      _evac_failure_cl;
+  G1ParScanHeapEvacClosure*     _evac_cl;
+  G1ParScanPartialArrayClosure* _partial_scan_cl;
+
+  int _hash_seed;
+  int _queue_num;
+
+  int _term_attempts;
+#if G1_DETAILED_STATS
+  int _pushes, _pops, _steals, _steal_attempts;
+  int _overflow_pushes;
+#endif
+
+  double _start;
+  double _start_strong_roots;
+  double _strong_roots_time;
+  double _start_term;
+  double _term_time;
+
+  // Map from young-age-index (0 == not young, 1 is youngest) to
+  // surviving words. base is what we get back from the malloc call
+  size_t* _surviving_young_words_base;
+  // this points into the array, as we use the first few entries for padding
+  size_t* _surviving_young_words;
+
+#define PADDING_ELEM_NUM (64 / sizeof(size_t))
+
+  void   add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; }
+
+  void   add_to_undo_waste(size_t waste)         { _undo_waste += waste; }
+
+  DirtyCardQueue& dirty_card_queue()             { return _dcq;  }
+  CardTableModRefBS* ctbs()                      { return _ct_bs; }
+
+  template <class T> void immediate_rs_update(HeapRegion* from, T* p, int tid) {
+    if (!from->is_survivor()) {
+      _g1_rem->par_write_ref(from, p, tid);
+    }
+  }
+
+  template <class T> void deferred_rs_update(HeapRegion* from, T* p, int tid) {
+    // If the new value of the field points to the same region or
+    // is the to-space, we don't need to include it in the Rset updates.
+    if (!from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) && !from->is_survivor()) {
+      size_t card_index = ctbs()->index_for(p);
+      // If the card hasn't been added to the buffer, do it.
+      if (ctbs()->mark_card_deferred(card_index)) {
+        dirty_card_queue().enqueue((jbyte*)ctbs()->byte_for_index(card_index));
+      }
+    }
+  }
+
+public:
+  G1ParScanThreadState(G1CollectedHeap* g1h, int queue_num);
+
+  ~G1ParScanThreadState() {
+    FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base);
+  }
+
+  RefToScanQueue*   refs()            { return _refs;             }
+  OverflowQueue*    overflowed_refs() { return _overflowed_refs;  }
+  ageTable*         age_table()       { return &_age_table;       }
+
+  G1ParGCAllocBuffer* alloc_buffer(GCAllocPurpose purpose) {
+    return &_alloc_buffers[purpose];
+  }
+
+  size_t alloc_buffer_waste()                    { return _alloc_buffer_waste; }
+  size_t undo_waste()                            { return _undo_waste; }
+
+  template <class T> void push_on_queue(T* ref) {
+    assert(ref != NULL, "invariant");
+    assert(has_partial_array_mask(ref) ||
+           _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(ref)), "invariant");
+#ifdef ASSERT
+    if (has_partial_array_mask(ref)) {
+      oop p = clear_partial_array_mask(ref);
+      // Verify that we point into the CS
+      assert(_g1h->obj_in_cs(p), "Should be in CS");
+    }
+#endif
+    if (!refs()->push(ref)) {
+      overflowed_refs()->push(ref);
+      IF_G1_DETAILED_STATS(note_overflow_push());
+    } else {
+      IF_G1_DETAILED_STATS(note_push());
+    }
+  }
+
+  void pop_from_queue(StarTask& ref) {
+    if (refs()->pop_local(ref)) {
+      assert((oop*)ref != NULL, "pop_local() returned true");
+      assert(UseCompressedOops || !ref.is_narrow(), "Error");
+      assert(has_partial_array_mask((oop*)ref) ||
+             _g1h->obj_in_cs(ref.is_narrow() ? oopDesc::load_decode_heap_oop((narrowOop*)ref)
+                                             : oopDesc::load_decode_heap_oop((oop*)ref)),
+             "invariant");
+      IF_G1_DETAILED_STATS(note_pop());
+    } else {
+      StarTask null_task;
+      ref = null_task;
+    }
+  }
+
+  void pop_from_overflow_queue(StarTask& ref) {
+    StarTask new_ref = overflowed_refs()->pop();
+    assert((oop*)new_ref != NULL, "pop() from a local non-empty stack");
+    assert(UseCompressedOops || !new_ref.is_narrow(), "Error");
+    assert(has_partial_array_mask((oop*)new_ref) ||
+           _g1h->obj_in_cs(new_ref.is_narrow() ? oopDesc::load_decode_heap_oop((narrowOop*)new_ref)
+                                               : oopDesc::load_decode_heap_oop((oop*)new_ref)),
+             "invariant");
+    ref = new_ref;
+  }
+
+  int refs_to_scan()                             { return refs()->size();                 }
+  int overflowed_refs_to_scan()                  { return overflowed_refs()->length();    }
+
+  template <class T> void update_rs(HeapRegion* from, T* p, int tid) {
+    if (G1DeferredRSUpdate) {
+      deferred_rs_update(from, p, tid);
+    } else {
+      immediate_rs_update(from, p, tid);
+    }
+  }
+
+  HeapWord* allocate_slow(GCAllocPurpose purpose, size_t word_sz) {
+
+    HeapWord* obj = NULL;
+    if (word_sz * 100 <
+        (size_t)(G1ParallelGCAllocBufferSize / HeapWordSize) *
+                                                  ParallelGCBufferWastePct) {
+      G1ParGCAllocBuffer* alloc_buf = alloc_buffer(purpose);
+      add_to_alloc_buffer_waste(alloc_buf->words_remaining());
+      alloc_buf->retire(false, false);
+
+      HeapWord* buf =
+        _g1h->par_allocate_during_gc(purpose, G1ParallelGCAllocBufferSize / HeapWordSize);
+      if (buf == NULL) return NULL; // Let caller handle allocation failure.
+      // Otherwise.
+      alloc_buf->set_buf(buf);
+
+      obj = alloc_buf->allocate(word_sz);
+      assert(obj != NULL, "buffer was definitely big enough...");
+    } else {
+      obj = _g1h->par_allocate_during_gc(purpose, word_sz);
+    }
+    return obj;
+  }
+
+  HeapWord* allocate(GCAllocPurpose purpose, size_t word_sz) {
+    HeapWord* obj = alloc_buffer(purpose)->allocate(word_sz);
+    if (obj != NULL) return obj;
+    return allocate_slow(purpose, word_sz);
+  }
+
+  void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz) {
+    if (alloc_buffer(purpose)->contains(obj)) {
+      assert(alloc_buffer(purpose)->contains(obj + word_sz - 1),
+             "should contain whole object");
+      alloc_buffer(purpose)->undo_allocation(obj, word_sz);
+    } else {
+      CollectedHeap::fill_with_object(obj, word_sz);
+      add_to_undo_waste(word_sz);
+    }
+  }
+
+  void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) {
+    _evac_failure_cl = evac_failure_cl;
+  }
+  OopsInHeapRegionClosure* evac_failure_closure() {
+    return _evac_failure_cl;
+  }
+
+  void set_evac_closure(G1ParScanHeapEvacClosure* evac_cl) {
+    _evac_cl = evac_cl;
+  }
+
+  void set_partial_scan_closure(G1ParScanPartialArrayClosure* partial_scan_cl) {
+    _partial_scan_cl = partial_scan_cl;
+  }
+
+  int* hash_seed() { return &_hash_seed; }
+  int  queue_num() { return _queue_num; }
+
+  int term_attempts()   { return _term_attempts; }
+  void note_term_attempt()  { _term_attempts++; }
+
+#if G1_DETAILED_STATS
+  int pushes()          { return _pushes; }
+  int pops()            { return _pops; }
+  int steals()          { return _steals; }
+  int steal_attempts()  { return _steal_attempts; }
+  int overflow_pushes() { return _overflow_pushes; }
+
+  void note_push()          { _pushes++; }
+  void note_pop()           { _pops++; }
+  void note_steal()         { _steals++; }
+  void note_steal_attempt() { _steal_attempts++; }
+  void note_overflow_push() { _overflow_pushes++; }
+#endif
+
+  void start_strong_roots() {
+    _start_strong_roots = os::elapsedTime();
+  }
+  void end_strong_roots() {
+    _strong_roots_time += (os::elapsedTime() - _start_strong_roots);
+  }
+  double strong_roots_time() { return _strong_roots_time; }
+
+  void start_term_time() {
+    note_term_attempt();
+    _start_term = os::elapsedTime();
+  }
+  void end_term_time() {
+    _term_time += (os::elapsedTime() - _start_term);
+  }
+  double term_time() { return _term_time; }
+
+  double elapsed() {
+    return os::elapsedTime() - _start;
+  }
+
+  size_t* surviving_young_words() {
+    // We add on to hide entry 0 which accumulates surviving words for
+    // age -1 regions (i.e. non-young ones)
+    return _surviving_young_words;
+  }
+
+  void retire_alloc_buffers() {
+    for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
+      size_t waste = _alloc_buffers[ap].words_remaining();
+      add_to_alloc_buffer_waste(waste);
+      _alloc_buffers[ap].retire(true, false);
+    }
+  }
+
+private:
+  template <class T> void deal_with_reference(T* ref_to_scan) {
+    if (has_partial_array_mask(ref_to_scan)) {
+      _partial_scan_cl->do_oop_nv(ref_to_scan);
+    } else {
+      // Note: we can use "raw" versions of "region_containing" because
+      // "obj_to_scan" is definitely in the heap, and is not in a
+      // humongous region.
+      HeapRegion* r = _g1h->heap_region_containing_raw(ref_to_scan);
+      _evac_cl->set_region(r);
+      _evac_cl->do_oop_nv(ref_to_scan);
+    }
+  }
+
+public:
+  void trim_queue() {
+    // I've replicated the loop twice, first to drain the overflow
+    // queue, second to drain the task queue. This is better than
+    // having a single loop, which checks both conditions and, inside
+    // it, either pops the overflow queue or the task queue, as each
+    // loop is tighter. Also, the decision to drain the overflow queue
+    // first is not arbitrary, as the overflow queue is not visible
+    // to the other workers, whereas the task queue is. So, we want to
+    // drain the "invisible" entries first, while allowing the other
+    // workers to potentially steal the "visible" entries.
+
+    while (refs_to_scan() > 0 || overflowed_refs_to_scan() > 0) {
+      while (overflowed_refs_to_scan() > 0) {
+        StarTask ref_to_scan;
+        assert((oop*)ref_to_scan == NULL, "Constructed above");
+        pop_from_overflow_queue(ref_to_scan);
+        // We shouldn't have pushed it on the queue if it was not
+        // pointing into the CSet.
+        assert((oop*)ref_to_scan != NULL, "Follows from inner loop invariant");
+        if (ref_to_scan.is_narrow()) {
+          assert(UseCompressedOops, "Error");
+          narrowOop* p = (narrowOop*)ref_to_scan;
+          assert(!has_partial_array_mask(p) &&
+                 _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(p)), "sanity");
+          deal_with_reference(p);
+        } else {
+          oop* p = (oop*)ref_to_scan;
+          assert((has_partial_array_mask(p) && _g1h->obj_in_cs(clear_partial_array_mask(p))) ||
+                 _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(p)), "sanity");
+          deal_with_reference(p);
+        }
+      }
+
+      while (refs_to_scan() > 0) {
+        StarTask ref_to_scan;
+        assert((oop*)ref_to_scan == NULL, "Constructed above");
+        pop_from_queue(ref_to_scan);
+        if ((oop*)ref_to_scan != NULL) {
+          if (ref_to_scan.is_narrow()) {
+            assert(UseCompressedOops, "Error");
+            narrowOop* p = (narrowOop*)ref_to_scan;
+            assert(!has_partial_array_mask(p) &&
+                   _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(p)), "sanity");
+            deal_with_reference(p);
+          } else {
+            oop* p = (oop*)ref_to_scan;
+            assert((has_partial_array_mask(p) && _g1h->obj_in_cs(clear_partial_array_mask(p))) ||
+                  _g1h->obj_in_cs(oopDesc::load_decode_heap_oop(p)), "sanity");
+            deal_with_reference(p);
+          }
+        }
+      }
+    }
+  }
+};
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +36,12 @@
 
 inline HeapRegion*
 G1CollectedHeap::heap_region_containing_raw(const void* addr) const {
-  HeapRegion* res = _hrs->addr_to_region(addr);
-  assert(res != NULL, "addr outside of heap?");
+  assert(_g1_reserved.contains(addr), "invariant");
+  size_t index = pointer_delta(addr, _g1_reserved.start(), 1)
+                                        >> HeapRegion::LogOfHRGrainBytes;
+
+  HeapRegion* res = _hrs->at(index);
+  assert(res == _hrs->addr_to_region(addr), "sanity");
   return res;
 }
 
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,10 +91,8 @@
 
   _all_mod_union_times_ms(new NumberSeq()),
 
-  _non_pop_summary(new NonPopSummary()),
-  _pop_summary(new PopSummary()),
-  _non_pop_abandoned_summary(new NonPopAbandonedSummary()),
-  _pop_abandoned_summary(new PopAbandonedSummary()),
+  _summary(new Summary()),
+  _abandoned_summary(new AbandonedSummary()),
 
   _cur_clear_ct_time_ms(0.0),
 
@@ -109,9 +107,6 @@
   _cur_aux_times_ms(new double[_aux_num]),
   _cur_aux_times_set(new bool[_aux_num]),
 
-  _pop_compute_rc_start(0.0),
-  _pop_evac_start(0.0),
-
   _concurrent_mark_init_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
   _concurrent_mark_remark_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
   _concurrent_mark_cleanup_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
@@ -141,7 +136,7 @@
   _scanned_cards_seq(new TruncatedSeq(TruncatedSeqLength)),
   _rs_lengths_seq(new TruncatedSeq(TruncatedSeqLength)),
 
-  _pause_time_target_ms((double) G1MaxPauseTimeMS),
+  _pause_time_target_ms((double) MaxGCPauseMillis),
 
   // </NEW PREDICTION>
 
@@ -172,11 +167,6 @@
 
   _all_full_gc_times_ms(new NumberSeq()),
 
-  _conc_refine_enabled(0),
-  _conc_refine_zero_traversals(0),
-  _conc_refine_max_traversals(0),
-  _conc_refine_current_delta(G1ConcRefineInitialDelta),
-
   // G1PausesBtwnConcMark defaults to -1
   // so the hack is to do the cast  QQQ FIXME
   _pauses_btwn_concurrent_mark((size_t)G1PausesBtwnConcMark),
@@ -196,8 +186,13 @@
   _short_lived_surv_rate_group(new SurvRateGroup(this, "Short Lived",
                                                  G1YoungSurvRateNumRegionsSummary)),
   _survivor_surv_rate_group(new SurvRateGroup(this, "Survivor",
-                                              G1YoungSurvRateNumRegionsSummary))
+                                              G1YoungSurvRateNumRegionsSummary)),
   // add here any more surv rate groups
+  _recorded_survivor_regions(0),
+  _recorded_survivor_head(NULL),
+  _recorded_survivor_tail(NULL),
+  _survivors_age_table(true)
+
 {
   _recent_prev_end_times_for_all_gcs_sec->add(os::elapsedTime());
   _prev_collection_pause_end_ms = os::elapsedTime() * 1000.0;
@@ -219,18 +214,8 @@
 
   _par_last_termination_times_ms = new double[_parallel_gc_threads];
 
-  // we store the data from the first pass during popularity pauses
-  _pop_par_last_update_rs_start_times_ms = new double[_parallel_gc_threads];
-  _pop_par_last_update_rs_times_ms = new double[_parallel_gc_threads];
-  _pop_par_last_update_rs_processed_buffers = new double[_parallel_gc_threads];
-
-  _pop_par_last_scan_rs_start_times_ms = new double[_parallel_gc_threads];
-  _pop_par_last_scan_rs_times_ms = new double[_parallel_gc_threads];
-
-  _pop_par_last_closure_app_times_ms = new double[_parallel_gc_threads];
-
   // start conservatively
-  _expensive_region_limit_ms = 0.5 * (double) G1MaxPauseTimeMS;
+  _expensive_region_limit_ms = 0.5 * (double) MaxGCPauseMillis;
 
   // <NEW PREDICTION>
 
@@ -259,12 +244,12 @@
 
   // </NEW PREDICTION>
 
-  double time_slice  = (double) G1TimeSliceMS / 1000.0;
-  double max_gc_time = (double) G1MaxPauseTimeMS / 1000.0;
+  double time_slice  = (double) GCPauseIntervalMillis / 1000.0;
+  double max_gc_time = (double) MaxGCPauseMillis / 1000.0;
   guarantee(max_gc_time < time_slice,
             "Max GC time should not be greater than the time slice");
   _mmu_tracker = new G1MMUTrackerQueue(time_slice, max_gc_time);
-  _sigma = (double) G1ConfidencePerc / 100.0;
+  _sigma = (double) G1ConfidencePercent / 100.0;
 
   // start conservatively (around 50ms is about right)
   _concurrent_mark_init_times_ms->add(0.05);
@@ -272,6 +257,15 @@
   _concurrent_mark_cleanup_times_ms->add(0.20);
   _tenuring_threshold = MaxTenuringThreshold;
 
+  if (G1UseSurvivorSpaces) {
+    // if G1FixedSurvivorSpaceSize is 0 which means the size is not
+    // fixed, then _max_survivor_regions will be calculated at
+    // calculate_young_list_target_config during initialization
+    _max_survivor_regions = G1FixedSurvivorSpaceSize / HeapRegion::GrainBytes;
+  } else {
+    _max_survivor_regions = 0;
+  }
+
   initialize_all();
 }
 
@@ -283,6 +277,9 @@
 void G1CollectorPolicy::initialize_flags() {
   set_min_alignment(HeapRegion::GrainBytes);
   set_max_alignment(GenRemSet::max_alignment_constraint(rem_set_name()));
+  if (SurvivorRatio < 1) {
+    vm_exit_during_initialization("Invalid survivor ratio specified");
+  }
   CollectorPolicy::initialize_flags();
 }
 
@@ -296,10 +293,8 @@
   if (G1SteadyStateUsed < 50) {
     vm_exit_during_initialization("G1SteadyStateUsed must be at least 50%.");
   }
-  if (UseConcMarkSweepGC) {
-    vm_exit_during_initialization("-XX:+UseG1GC is incompatible with "
-                                  "-XX:+UseConcMarkSweepGC.");
-  }
+
+  initialize_gc_policy_counters();
 
   if (G1Gen) {
     _in_young_gc_mode = true;
@@ -322,6 +317,12 @@
   }
 }
 
+// Create the jstat counters for the policy.
+void G1CollectorPolicy::initialize_gc_policy_counters()
+{
+  _gc_policy_counters = new GCPolicyCounters("GarbageFirst", 1, 2 + G1Gen);
+}
+
 void G1CollectorPolicy::calculate_young_list_min_length() {
   _young_list_min_length = 0;
 
@@ -352,6 +353,7 @@
     guarantee( so_length < _young_list_target_length, "invariant" );
     _young_list_so_prefix_length = so_length;
   }
+  calculate_survivors_policy();
 }
 
 // This method calculate the optimal scan-only set for a fixed young
@@ -440,7 +442,7 @@
   guarantee( adaptive_young_list_length(), "pre-condition" );
 
   double start_time_sec = os::elapsedTime();
-  size_t min_reserve_perc = MAX2((size_t)2, (size_t)G1MinReservePerc);
+  size_t min_reserve_perc = MAX2((size_t)2, (size_t)G1MinReservePercent);
   min_reserve_perc = MIN2((size_t) 50, min_reserve_perc);
   size_t reserve_regions =
     (size_t) ((double) min_reserve_perc * (double) _g1->n_regions() / 100.0);
@@ -448,6 +450,9 @@
   if (full_young_gcs() && _free_regions_at_end_of_collection > 0) {
     // we are in fully-young mode and there are free regions in the heap
 
+    double survivor_regions_evac_time =
+        predict_survivor_regions_evac_time();
+
     size_t min_so_length = 0;
     size_t max_so_length = 0;
 
@@ -497,9 +502,8 @@
       scanned_cards = predict_non_young_card_num(adj_rs_lengths);
     // calculate this once, so that we don't have to recalculate it in
     // the innermost loop
-    double base_time_ms = predict_base_elapsed_time_ms(pending_cards,
-                                                       scanned_cards);
-
+    double base_time_ms = predict_base_elapsed_time_ms(pending_cards, scanned_cards)
+                          + survivor_regions_evac_time;
     // the result
     size_t final_young_length = 0;
     size_t final_so_length = 0;
@@ -548,14 +552,14 @@
     bool done = false;
     // this is the outermost loop
     while (!done) {
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
       // leave this in for debugging, just in case
       gclog_or_tty->print_cr("searching between " SIZE_FORMAT " and " SIZE_FORMAT
                              ", incr " SIZE_FORMAT ", pass %s",
                              from_so_length, to_so_length, so_length_incr,
                              (pass == pass_type_coarse) ? "coarse" :
                              (pass == pass_type_fine) ? "fine" : "final");
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
 
       size_t so_length = from_so_length;
       size_t init_free_regions =
@@ -651,11 +655,11 @@
           guarantee( so_length_incr == so_coarse_increments, "invariant" );
           guarantee( final_so_length >= min_so_length, "invariant" );
 
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
           // leave this in for debugging, just in case
           gclog_or_tty->print_cr("  coarse pass: SO length " SIZE_FORMAT,
                                  final_so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
 
           from_so_length =
             (final_so_length - min_so_length > so_coarse_increments) ?
@@ -687,12 +691,12 @@
             // of the optimal
             size_t new_so_length = 950 * final_so_length / 1000;
 
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
             // leave this in for debugging, just in case
             gclog_or_tty->print_cr("  fine pass: SO length " SIZE_FORMAT
                                    ", setting it to " SIZE_FORMAT,
                                     final_so_length, new_so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
 
             from_so_length = new_so_length;
             to_so_length = new_so_length;
@@ -719,7 +723,8 @@
     }
 
     // we should have at least one region in the target young length
-    _young_list_target_length = MAX2((size_t) 1, final_young_length);
+    _young_list_target_length =
+        MAX2((size_t) 1, final_young_length + _recorded_survivor_regions);
     if (final_so_length >= final_young_length)
       // and we need to ensure that the S-O length is not greater than
       // the target young length (this is being a bit careful)
@@ -734,7 +739,7 @@
     double end_time_sec = os::elapsedTime();
     double elapsed_time_ms = (end_time_sec - start_time_sec) * 1000.0;
 
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
     // leave this in for debugging, just in case
     gclog_or_tty->print_cr("target = %1.1lf ms, young = " SIZE_FORMAT
                            ", SO = " SIZE_FORMAT ", "
@@ -747,9 +752,9 @@
                            calculations,
                            full_young_gcs() ? "full" : "partial",
                            should_initiate_conc_mark() ? " i-m" : "",
-                           in_marking_window(),
-                           in_marking_window_im());
-#endif // 0
+                           _in_marking_window,
+                           _in_marking_window_im);
+#endif // TRACE_CALC_YOUNG_CONFIG
 
     if (_young_list_target_length < _young_list_min_length) {
       // bummer; this means that, if we do a pause when the optimal
@@ -768,14 +773,14 @@
         // S-O length
         so_length = calculate_optimal_so_length(_young_list_min_length);
 
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
       // leave this in for debugging, just in case
       gclog_or_tty->print_cr("adjusted target length from "
                              SIZE_FORMAT " to " SIZE_FORMAT
                              ", SO " SIZE_FORMAT,
                              _young_list_target_length, _young_list_min_length,
                              so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
 
       _young_list_target_length =
         MAX2(_young_list_min_length, (size_t)1);
@@ -785,12 +790,12 @@
     // we are in a partially-young mode or we've run out of regions (due
     // to evacuation failure)
 
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
     // leave this in for debugging, just in case
     gclog_or_tty->print_cr("(partial) setting target to " SIZE_FORMAT
                            ", SO " SIZE_FORMAT,
                            _young_list_min_length, 0);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
 
     // we'll do the pause as soon as possible and with no S-O prefix
     // (see above for the reasons behind the latter)
@@ -884,6 +889,16 @@
   return true;
 }
 
+double G1CollectorPolicy::predict_survivor_regions_evac_time() {
+  double survivor_regions_evac_time = 0.0;
+  for (HeapRegion * r = _recorded_survivor_head;
+       r != NULL && r != _recorded_survivor_tail->get_next_young_region();
+       r = r->get_next_young_region()) {
+    survivor_regions_evac_time += predict_region_elapsed_time_ms(r, true);
+  }
+  return survivor_regions_evac_time;
+}
+
 void G1CollectorPolicy::check_prediction_validity() {
   guarantee( adaptive_young_list_length(), "should not call this otherwise" );
 
@@ -975,7 +990,7 @@
 
   _all_full_gc_times_ms->add(full_gc_time_ms);
 
-  update_recent_gc_times(end_sec, full_gc_time_sec);
+  update_recent_gc_times(end_sec, full_gc_time_ms);
 
   _g1->clear_full_collection();
 
@@ -995,32 +1010,19 @@
   _short_lived_surv_rate_group->start_adding_regions();
   // also call this on any additional surv rate groups
 
+  record_survivor_regions(0, NULL, NULL);
+
   _prev_region_num_young   = _region_num_young;
   _prev_region_num_tenured = _region_num_tenured;
 
   _free_regions_at_end_of_collection = _g1->free_regions();
   _scan_only_regions_at_end_of_collection = 0;
+  // Reset survivors SurvRateGroup.
+  _survivor_surv_rate_group->reset();
   calculate_young_list_min_length();
   calculate_young_list_target_config();
  }
 
-void G1CollectorPolicy::record_pop_compute_rc_start() {
-  _pop_compute_rc_start = os::elapsedTime();
-}
-void G1CollectorPolicy::record_pop_compute_rc_end() {
-  double ms = (os::elapsedTime() - _pop_compute_rc_start)*1000.0;
-  _cur_popular_compute_rc_time_ms = ms;
-  _pop_compute_rc_start = 0.0;
-}
-void G1CollectorPolicy::record_pop_evac_start() {
-  _pop_evac_start = os::elapsedTime();
-}
-void G1CollectorPolicy::record_pop_evac_end() {
-  double ms = (os::elapsedTime() - _pop_evac_start)*1000.0;
-  _cur_popular_evac_time_ms = ms;
-  _pop_evac_start = 0.0;
-}
-
 void G1CollectorPolicy::record_before_bytes(size_t bytes) {
   _bytes_in_to_space_before_gc += bytes;
 }
@@ -1044,6 +1046,7 @@
 
   assert(_g1->used_regions() == _g1->recalculate_used_regions(),
          "sanity");
+  assert(_g1->used() == _g1->recalculate_used(), "sanity");
 
   double s_w_t_ms = (start_time_sec - _stop_world_start) * 1000.0;
   _all_stop_world_times_ms->add(s_w_t_ms);
@@ -1076,13 +1079,6 @@
     _par_last_scan_new_refs_times_ms[i] = -666.0;
     _par_last_obj_copy_times_ms[i] = -666.0;
     _par_last_termination_times_ms[i] = -666.0;
-
-    _pop_par_last_update_rs_start_times_ms[i] = -666.0;
-    _pop_par_last_update_rs_times_ms[i] = -666.0;
-    _pop_par_last_update_rs_processed_buffers[i] = -666.0;
-    _pop_par_last_scan_rs_start_times_ms[i] = -666.0;
-    _pop_par_last_scan_rs_times_ms[i] = -666.0;
-    _pop_par_last_closure_app_times_ms[i] = -666.0;
   }
 #endif
 
@@ -1104,6 +1100,10 @@
   _short_lived_surv_rate_group->record_scan_only_prefix(short_lived_so_length);
   tag_scan_only(short_lived_so_length);
 
+  if (G1UseSurvivorSpaces) {
+    _survivors_age_table.clear();
+  }
+
   assert( verify_young_ages(), "region age verification" );
 }
 
@@ -1137,25 +1137,6 @@
   guarantee( false, "we should never reach here" );
 }
 
-void G1CollectorPolicy::record_popular_pause_preamble_start() {
-  _cur_popular_preamble_start_ms = os::elapsedTime() * 1000.0;
-}
-
-void G1CollectorPolicy::record_popular_pause_preamble_end() {
-  _cur_popular_preamble_time_ms =
-    (os::elapsedTime() * 1000.0) - _cur_popular_preamble_start_ms;
-
-  // copy the recorded statistics of the first pass to temporary arrays
-  for (int i = 0; i < _parallel_gc_threads; ++i) {
-    _pop_par_last_update_rs_start_times_ms[i] = _par_last_update_rs_start_times_ms[i];
-    _pop_par_last_update_rs_times_ms[i] = _par_last_update_rs_times_ms[i];
-    _pop_par_last_update_rs_processed_buffers[i] = _par_last_update_rs_processed_buffers[i];
-    _pop_par_last_scan_rs_start_times_ms[i] = _par_last_scan_rs_start_times_ms[i];
-    _pop_par_last_scan_rs_times_ms[i] = _par_last_scan_rs_times_ms[i];
-    _pop_par_last_closure_app_times_ms[i] = _par_last_obj_copy_times_ms[i];
-  }
-}
-
 void G1CollectorPolicy::record_mark_closure_time(double mark_closure_time_ms) {
   _mark_closure_time_ms = mark_closure_time_ms;
 }
@@ -1417,8 +1398,7 @@
 // Anything below that is considered to be zero
 #define MIN_TIMER_GRANULARITY 0.0000001
 
-void G1CollectorPolicy::record_collection_pause_end(bool popular,
-                                                    bool abandoned) {
+void G1CollectorPolicy::record_collection_pause_end(bool abandoned) {
   double end_time_sec = os::elapsedTime();
   double elapsed_ms = _last_pause_time_ms;
   bool parallel = ParallelGCThreads > 0;
@@ -1428,6 +1408,7 @@
   size_t cur_used_bytes = _g1->used();
   assert(cur_used_bytes == _g1->recalculate_used(), "It should!");
   bool last_pause_included_initial_mark = false;
+  bool update_stats = !abandoned && !_g1->evacuation_failed();
 
 #ifndef PRODUCT
   if (G1YoungSurvRateVerbose) {
@@ -1488,7 +1469,7 @@
 
   _n_pauses++;
 
-  if (!abandoned) {
+  if (update_stats) {
     _recent_CH_strong_roots_times_ms->add(_cur_CH_strong_roots_dur_ms);
     _recent_G1_strong_roots_times_ms->add(_cur_G1_strong_roots_dur_ms);
     _recent_evac_times_ms->add(evac_ms);
@@ -1538,42 +1519,10 @@
   }
 
   PauseSummary* summary;
-  if (!abandoned && !popular)
-    summary = _non_pop_summary;
-  else if (!abandoned && popular)
-    summary = _pop_summary;
-  else if (abandoned && !popular)
-    summary = _non_pop_abandoned_summary;
-  else if (abandoned && popular)
-    summary = _pop_abandoned_summary;
-  else
-    guarantee(false, "should not get here!");
-
-  double pop_update_rs_time;
-  double pop_update_rs_processed_buffers;
-  double pop_scan_rs_time;
-  double pop_closure_app_time;
-  double pop_other_time;
-
-  if (popular) {
-    PopPreambleSummary* preamble_summary = summary->pop_preamble_summary();
-    guarantee(preamble_summary != NULL, "should not be null!");
-
-    pop_update_rs_time = avg_value(_pop_par_last_update_rs_times_ms);
-    pop_update_rs_processed_buffers =
-      sum_of_values(_pop_par_last_update_rs_processed_buffers);
-    pop_scan_rs_time = avg_value(_pop_par_last_scan_rs_times_ms);
-    pop_closure_app_time = avg_value(_pop_par_last_closure_app_times_ms);
-    pop_other_time = _cur_popular_preamble_time_ms -
-      (pop_update_rs_time + pop_scan_rs_time + pop_closure_app_time +
-       _cur_popular_evac_time_ms);
-
-    preamble_summary->record_pop_preamble_time_ms(_cur_popular_preamble_time_ms);
-    preamble_summary->record_pop_update_rs_time_ms(pop_update_rs_time);
-    preamble_summary->record_pop_scan_rs_time_ms(pop_scan_rs_time);
-    preamble_summary->record_pop_closure_app_time_ms(pop_closure_app_time);
-    preamble_summary->record_pop_evacuation_time_ms(_cur_popular_evac_time_ms);
-    preamble_summary->record_pop_other_time_ms(pop_other_time);
+  if (abandoned) {
+    summary = _abandoned_summary;
+  } else {
+    summary = _summary;
   }
 
   double ext_root_scan_time = avg_value(_par_last_ext_root_scan_times_ms);
@@ -1588,8 +1537,10 @@
   double obj_copy_time = avg_value(_par_last_obj_copy_times_ms);
   double termination_time = avg_value(_par_last_termination_times_ms);
 
-  double parallel_other_time;
-  if (!abandoned) {
+  double parallel_other_time = _cur_collection_par_time_ms -
+    (update_rs_time + ext_root_scan_time + mark_stack_scan_time +
+     scan_only_time + scan_rs_time + obj_copy_time + termination_time);
+  if (update_stats) {
     MainBodySummary* body_summary = summary->main_body_summary();
     guarantee(body_summary != NULL, "should not be null!");
 
@@ -1607,9 +1558,6 @@
       body_summary->record_parallel_time_ms(_cur_collection_par_time_ms);
       body_summary->record_clear_ct_time_ms(_cur_clear_ct_time_ms);
       body_summary->record_termination_time_ms(termination_time);
-      parallel_other_time = _cur_collection_par_time_ms -
-        (update_rs_time + ext_root_scan_time + mark_stack_scan_time +
-         scan_only_time + scan_rs_time + obj_copy_time + termination_time);
       body_summary->record_parallel_other_time_ms(parallel_other_time);
     }
     body_summary->record_mark_closure_time_ms(_mark_closure_time_ms);
@@ -1646,8 +1594,6 @@
   }
 
   double other_time_ms = elapsed_ms;
-  if (popular)
-    other_time_ms -= _cur_popular_preamble_time_ms;
 
   if (!abandoned) {
     if (_satb_drain_time_set)
@@ -1664,41 +1610,23 @@
 
   if (PrintGCDetails) {
     gclog_or_tty->print_cr("%s%s, %1.8lf secs]",
-                           (popular && !abandoned) ? " (popular)" :
-                           (!popular && abandoned) ? " (abandoned)" :
-                           (popular && abandoned) ? " (popular/abandoned)" : "",
+                           abandoned ? " (abandoned)" : "",
                            (last_pause_included_initial_mark) ? " (initial-mark)" : "",
                            elapsed_ms / 1000.0);
 
     if (!abandoned) {
-      if (_satb_drain_time_set)
+      if (_satb_drain_time_set) {
         print_stats(1, "SATB Drain Time", _cur_satb_drain_time_ms);
-      if (_last_satb_drain_processed_buffers >= 0)
+      }
+      if (_last_satb_drain_processed_buffers >= 0) {
         print_stats(2, "Processed Buffers", _last_satb_drain_processed_buffers);
-    }
-    if (popular)
-      print_stats(1, "Popularity Preamble", _cur_popular_preamble_time_ms);
-    if (parallel) {
-      if (popular) {
-        print_par_stats(2, "Update RS (Start)", _pop_par_last_update_rs_start_times_ms, false);
-        print_par_stats(2, "Update RS", _pop_par_last_update_rs_times_ms);
-        if (G1RSBarrierUseQueue)
-          print_par_buffers(3, "Processed Buffers",
-                            _pop_par_last_update_rs_processed_buffers, true);
-        print_par_stats(2, "Scan RS", _pop_par_last_scan_rs_times_ms);
-        print_par_stats(2, "Closure app", _pop_par_last_closure_app_times_ms);
-        print_stats(2, "Evacuation", _cur_popular_evac_time_ms);
-        print_stats(2, "Other", pop_other_time);
       }
-      if (!abandoned) {
+      if (parallel) {
         print_stats(1, "Parallel Time", _cur_collection_par_time_ms);
-        if (!popular) {
-          print_par_stats(2, "Update RS (Start)", _par_last_update_rs_start_times_ms, false);
-          print_par_stats(2, "Update RS", _par_last_update_rs_times_ms);
-          if (G1RSBarrierUseQueue)
-            print_par_buffers(3, "Processed Buffers",
-                              _par_last_update_rs_processed_buffers, true);
-        }
+        print_par_stats(2, "Update RS (Start)", _par_last_update_rs_start_times_ms, false);
+        print_par_stats(2, "Update RS", _par_last_update_rs_times_ms);
+        print_par_buffers(3, "Processed Buffers",
+                          _par_last_update_rs_processed_buffers, true);
         print_par_stats(2, "Ext Root Scanning", _par_last_ext_root_scan_times_ms);
         print_par_stats(2, "Mark Stack Scanning", _par_last_mark_stack_scan_times_ms);
         print_par_stats(2, "Scan-Only Scanning", _par_last_scan_only_times_ms);
@@ -1709,25 +1637,10 @@
         print_par_stats(2, "Termination", _par_last_termination_times_ms);
         print_stats(2, "Other", parallel_other_time);
         print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
-      }
-    } else {
-      if (popular) {
-        print_stats(2, "Update RS", pop_update_rs_time);
-        if (G1RSBarrierUseQueue)
-          print_stats(3, "Processed Buffers",
-                      (int)pop_update_rs_processed_buffers);
-        print_stats(2, "Scan RS", pop_scan_rs_time);
-        print_stats(2, "Closure App", pop_closure_app_time);
-        print_stats(2, "Evacuation", _cur_popular_evac_time_ms);
-        print_stats(2, "Other", pop_other_time);
-      }
-      if (!abandoned) {
-        if (!popular) {
-          print_stats(1, "Update RS", update_rs_time);
-          if (G1RSBarrierUseQueue)
-            print_stats(2, "Processed Buffers",
-                        (int)update_rs_processed_buffers);
-        }
+      } else {
+        print_stats(1, "Update RS", update_rs_time);
+        print_stats(2, "Processed Buffers",
+                    (int)update_rs_processed_buffers);
         print_stats(1, "Ext Root Scanning", ext_root_scan_time);
         print_stats(1, "Mark Stack Scanning", mark_stack_scan_time);
         print_stats(1, "Scan-Only Scanning", scan_only_time);
@@ -1754,8 +1667,10 @@
     gclog_or_tty->print_cr("]");
 
   _all_pause_times_ms->add(elapsed_ms);
-  summary->record_total_time_ms(elapsed_ms);
-  summary->record_other_time_ms(other_time_ms);
+  if (update_stats) {
+    summary->record_total_time_ms(elapsed_ms);
+    summary->record_other_time_ms(other_time_ms);
+  }
   for (int i = 0; i < _aux_num; ++i)
     if (_cur_aux_times_set[i])
       _all_aux_times_ms[i].add(_cur_aux_times_ms[i]);
@@ -1805,7 +1720,7 @@
 
   // <NEW PREDICTION>
 
-  if (!popular && !abandoned) {
+  if (update_stats) {
     double pause_time_ms = elapsed_ms;
 
     size_t diff = 0;
@@ -1900,11 +1815,11 @@
     _rs_lengths_seq->add((double) _max_rs_lengths);
 
     double expensive_region_limit_ms =
-      (double) G1MaxPauseTimeMS - predict_constant_other_time_ms();
+      (double) MaxGCPauseMillis - predict_constant_other_time_ms();
     if (expensive_region_limit_ms < 0.0) {
       // this means that the other time was predicted to be longer than
       // than the max pause time
-      expensive_region_limit_ms = (double) G1MaxPauseTimeMS;
+      expensive_region_limit_ms = (double) MaxGCPauseMillis;
     }
     _expensive_region_limit_ms = expensive_region_limit_ms;
 
@@ -1965,9 +1880,6 @@
   // </NEW PREDICTION>
 
   _target_pause_time_ms = -1.0;
-
-  // TODO: calculate tenuring threshold
-  _tenuring_threshold = MaxTenuringThreshold;
 }
 
 // <NEW PREDICTION>
@@ -2058,7 +1970,7 @@
     guarantee( hr->is_young() && hr->age_in_surv_rate_group() != -1,
                "invariant" );
     int age = hr->age_in_surv_rate_group();
-    double yg_surv_rate = predict_yg_surv_rate(age);
+    double yg_surv_rate = predict_yg_surv_rate(age, hr->surv_rate_group());
     bytes_to_copy = (size_t) ((double) hr->used() * yg_surv_rate);
   }
 
@@ -2091,7 +2003,7 @@
   }
 #if PREDICTIONS_VERBOSE
   if (young) {
-    _recorded_young_bytes += hr->asSpace()->used();
+    _recorded_young_bytes += hr->used();
   } else {
     _recorded_marked_bytes += hr->max_live_bytes();
   }
@@ -2119,11 +2031,6 @@
       predict_non_young_card_num(_predicted_rs_lengths);
   _recorded_region_num = _recorded_young_regions + _recorded_non_young_regions;
 
-  _predicted_young_survival_ratio = 0.0;
-  for (int i = 0; i < _recorded_young_regions; ++i)
-    _predicted_young_survival_ratio += predict_yg_surv_rate(i);
-  _predicted_young_survival_ratio /= (double) _recorded_young_regions;
-
   _predicted_scan_only_scan_time_ms =
     predict_scan_only_time_ms(_recorded_scan_only_regions);
   _predicted_rs_update_time_ms =
@@ -2175,24 +2082,24 @@
 }
 
 double G1CollectorPolicy::recent_avg_time_for_pauses_ms() {
-  if (_recent_pause_times_ms->num() == 0) return (double) G1MaxPauseTimeMS;
+  if (_recent_pause_times_ms->num() == 0) return (double) MaxGCPauseMillis;
   else return _recent_pause_times_ms->avg();
 }
 
 double G1CollectorPolicy::recent_avg_time_for_CH_strong_ms() {
   if (_recent_CH_strong_roots_times_ms->num() == 0)
-    return (double)G1MaxPauseTimeMS/3.0;
+    return (double)MaxGCPauseMillis/3.0;
   else return _recent_CH_strong_roots_times_ms->avg();
 }
 
 double G1CollectorPolicy::recent_avg_time_for_G1_strong_ms() {
   if (_recent_G1_strong_roots_times_ms->num() == 0)
-    return (double)G1MaxPauseTimeMS/3.0;
+    return (double)MaxGCPauseMillis/3.0;
   else return _recent_G1_strong_roots_times_ms->avg();
 }
 
 double G1CollectorPolicy::recent_avg_time_for_evac_ms() {
-  if (_recent_evac_times_ms->num() == 0) return (double)G1MaxPauseTimeMS/3.0;
+  if (_recent_evac_times_ms->num() == 0) return (double)MaxGCPauseMillis/3.0;
   else return _recent_evac_times_ms->avg();
 }
 
@@ -2279,17 +2186,18 @@
 }
 
 size_t G1CollectorPolicy::expansion_amount() {
-  if ((int)(recent_avg_pause_time_ratio() * 100.0) > G1GCPct) {
-    // We will double the existing space, or take G1ExpandByPctOfAvail % of
-    // the available expansion space, whichever is smaller, bounded below
-    // by a minimum expansion (unless that's all that's left.)
+  if ((int)(recent_avg_pause_time_ratio() * 100.0) > G1GCPercent) {
+    // We will double the existing space, or take
+    // G1ExpandByPercentOfAvailable % of the available expansion
+    // space, whichever is smaller, bounded below by a minimum
+    // expansion (unless that's all that's left.)
     const size_t min_expand_bytes = 1*M;
     size_t reserved_bytes = _g1->g1_reserved_obj_bytes();
     size_t committed_bytes = _g1->capacity();
     size_t uncommitted_bytes = reserved_bytes - committed_bytes;
     size_t expand_bytes;
     size_t expand_bytes_via_pct =
-      uncommitted_bytes * G1ExpandByPctOfAvail / 100;
+      uncommitted_bytes * G1ExpandByPercentOfAvailable / 100;
     expand_bytes = MIN2(expand_bytes_via_pct, committed_bytes);
     expand_bytes = MAX2(expand_bytes, min_expand_bytes);
     expand_bytes = MIN2(expand_bytes, uncommitted_bytes);
@@ -2412,36 +2320,8 @@
 void G1CollectorPolicy::print_summary(PauseSummary* summary) const {
   bool parallel = ParallelGCThreads > 0;
   MainBodySummary*    body_summary = summary->main_body_summary();
-  PopPreambleSummary* preamble_summary = summary->pop_preamble_summary();
-
   if (summary->get_total_seq()->num() > 0) {
-    print_summary_sd(0,
-                     (preamble_summary == NULL) ? "Non-Popular Pauses" :
-                     "Popular Pauses",
-                     summary->get_total_seq());
-    if (preamble_summary != NULL) {
-      print_summary(1, "Popularity Preamble",
-                    preamble_summary->get_pop_preamble_seq());
-      print_summary(2, "Update RS", preamble_summary->get_pop_update_rs_seq());
-      print_summary(2, "Scan RS", preamble_summary->get_pop_scan_rs_seq());
-      print_summary(2, "Closure App",
-                    preamble_summary->get_pop_closure_app_seq());
-      print_summary(2, "Evacuation",
-                    preamble_summary->get_pop_evacuation_seq());
-      print_summary(2, "Other", preamble_summary->get_pop_other_seq());
-      {
-        NumberSeq* other_parts[] = {
-          preamble_summary->get_pop_update_rs_seq(),
-          preamble_summary->get_pop_scan_rs_seq(),
-          preamble_summary->get_pop_closure_app_seq(),
-          preamble_summary->get_pop_evacuation_seq()
-        };
-        NumberSeq calc_other_times_ms(preamble_summary->get_pop_preamble_seq(),
-                                      4, other_parts);
-        check_other_times(2, preamble_summary->get_pop_other_seq(),
-                          &calc_other_times_ms);
-      }
-    }
+    print_summary_sd(0, "Evacuation Pauses", summary->get_total_seq());
     if (body_summary != NULL) {
       print_summary(1, "SATB Drain", body_summary->get_satb_drain_seq());
       if (parallel) {
@@ -2495,19 +2375,15 @@
           // parallel
           NumberSeq* other_parts[] = {
             body_summary->get_satb_drain_seq(),
-            (preamble_summary == NULL) ? NULL :
-              preamble_summary->get_pop_preamble_seq(),
             body_summary->get_parallel_seq(),
             body_summary->get_clear_ct_seq()
           };
-          calc_other_times_ms = NumberSeq (summary->get_total_seq(),
-                                          4, other_parts);
+          calc_other_times_ms = NumberSeq(summary->get_total_seq(),
+                                          3, other_parts);
         } else {
           // serial
           NumberSeq* other_parts[] = {
             body_summary->get_satb_drain_seq(),
-            (preamble_summary == NULL) ? NULL :
-              preamble_summary->get_pop_preamble_seq(),
             body_summary->get_update_rs_seq(),
             body_summary->get_ext_root_scan_seq(),
             body_summary->get_mark_stack_scan_seq(),
@@ -2516,16 +2392,11 @@
             body_summary->get_obj_copy_seq()
           };
           calc_other_times_ms = NumberSeq(summary->get_total_seq(),
-                                          8, other_parts);
+                                          7, other_parts);
         }
       } else {
         // abandoned
-        NumberSeq* other_parts[] = {
-          (preamble_summary == NULL) ? NULL :
-            preamble_summary->get_pop_preamble_seq()
-        };
-        calc_other_times_ms = NumberSeq(summary->get_total_seq(),
-                                        1, other_parts);
+        calc_other_times_ms = NumberSeq();
       }
       check_other_times(1,  summary->get_other_seq(), &calc_other_times_ms);
     }
@@ -2537,18 +2408,12 @@
 }
 
 void
-G1CollectorPolicy::print_abandoned_summary(PauseSummary* non_pop_summary,
-                                           PauseSummary* pop_summary) const {
+G1CollectorPolicy::print_abandoned_summary(PauseSummary* summary) const {
   bool printed = false;
-  if (non_pop_summary->get_total_seq()->num() > 0) {
+  if (summary->get_total_seq()->num() > 0) {
     printed = true;
-    print_summary(non_pop_summary);
+    print_summary(summary);
   }
-  if (pop_summary->get_total_seq()->num() > 0) {
-    printed = true;
-    print_summary(pop_summary);
-  }
-
   if (!printed) {
     print_indent(0);
     gclog_or_tty->print_cr("none");
@@ -2566,15 +2431,11 @@
     gclog_or_tty->print_cr("   Partial Young GC Pauses: %8d", _partial_young_pause_num);
     gclog_or_tty->print_cr("");
 
-    gclog_or_tty->print_cr("NON-POPULAR PAUSES");
-    print_summary(_non_pop_summary);
-
-    gclog_or_tty->print_cr("POPULAR PAUSES");
-    print_summary(_pop_summary);
+    gclog_or_tty->print_cr("EVACUATION PAUSES");
+    print_summary(_summary);
 
     gclog_or_tty->print_cr("ABANDONED PAUSES");
-    print_abandoned_summary(_non_pop_abandoned_summary,
-                            _pop_abandoned_summary);
+    print_abandoned_summary(_abandoned_summary);
 
     gclog_or_tty->print_cr("MISC");
     print_summary_sd(0, "Stop World", _all_stop_world_times_ms);
@@ -2595,18 +2456,6 @@
                (double) _region_num_young / (double) all_region_num * 100.0,
                _region_num_tenured,
                (double) _region_num_tenured / (double) all_region_num * 100.0);
-
-    if (!G1RSBarrierUseQueue) {
-      gclog_or_tty->print_cr("Of %d times conc refinement was enabled, %d (%7.2f%%) "
-                    "did zero traversals.",
-                    _conc_refine_enabled, _conc_refine_zero_traversals,
-                    _conc_refine_enabled > 0 ?
-                    100.0 * (float)_conc_refine_zero_traversals/
-                    (float)_conc_refine_enabled : 0.0);
-      gclog_or_tty->print_cr("  Max # of traversals = %d.",
-                    _conc_refine_max_traversals);
-      gclog_or_tty->print_cr("");
-    }
   }
   if (TraceGen1Time) {
     if (_all_full_gc_times_ms->num() > 0) {
@@ -2628,53 +2477,16 @@
 #endif // PRODUCT
 }
 
-void G1CollectorPolicy::update_conc_refine_data() {
-  unsigned traversals = _g1->concurrent_g1_refine()->disable();
-  if (traversals == 0) _conc_refine_zero_traversals++;
-  _conc_refine_max_traversals = MAX2(_conc_refine_max_traversals,
-                                     (size_t)traversals);
-
-  if (G1PolicyVerbose > 1)
-    gclog_or_tty->print_cr("Did a CR traversal series: %d traversals.", traversals);
-  double multiplier = 1.0;
-  if (traversals == 0) {
-    multiplier = 4.0;
-  } else if (traversals > (size_t)G1ConcRefineTargTraversals) {
-    multiplier = 1.0/1.5;
-  } else if (traversals < (size_t)G1ConcRefineTargTraversals) {
-    multiplier = 1.5;
-  }
-  if (G1PolicyVerbose > 1) {
-    gclog_or_tty->print_cr("  Multiplier = %7.2f.", multiplier);
-    gclog_or_tty->print("  Delta went from %d regions to ",
-               _conc_refine_current_delta);
-  }
-  _conc_refine_current_delta =
-    MIN2(_g1->n_regions(),
-         (size_t)(_conc_refine_current_delta * multiplier));
-  _conc_refine_current_delta =
-    MAX2(_conc_refine_current_delta, (size_t)1);
-  if (G1PolicyVerbose > 1) {
-    gclog_or_tty->print_cr("%d regions.", _conc_refine_current_delta);
-  }
-  _conc_refine_enabled++;
-}
-
-void G1CollectorPolicy::set_single_region_collection_set(HeapRegion* hr) {
-  assert(collection_set() == NULL, "Must be no current CS.");
-  _collection_set_size = 0;
-  _collection_set_bytes_used_before = 0;
-  add_to_collection_set(hr);
-  count_CS_bytes_used();
-}
-
 bool
 G1CollectorPolicy::should_add_next_region_to_young_list() {
   assert(in_young_gc_mode(), "should be in young GC mode");
   bool ret;
   size_t young_list_length = _g1->young_list_length();
-
-  if (young_list_length < _young_list_target_length) {
+  size_t young_list_max_length = _young_list_target_length;
+  if (G1FixedEdenSize) {
+    young_list_max_length -= _max_survivor_regions;
+  }
+  if (young_list_length < young_list_max_length) {
     ret = true;
     ++_region_num_young;
   } else {
@@ -2710,25 +2522,38 @@
 }
 
 
-uint G1CollectorPolicy::max_regions(int purpose) {
+size_t G1CollectorPolicy::max_regions(int purpose) {
   switch (purpose) {
     case GCAllocForSurvived:
-      return G1MaxSurvivorRegions;
+      return _max_survivor_regions;
     case GCAllocForTenured:
-      return UINT_MAX;
+      return REGIONS_UNLIMITED;
     default:
-      return UINT_MAX;
+      ShouldNotReachHere();
+      return REGIONS_UNLIMITED;
   };
 }
 
-void
-G1CollectorPolicy_BestRegionsFirst::
-set_single_region_collection_set(HeapRegion* hr) {
-  G1CollectorPolicy::set_single_region_collection_set(hr);
-  _collectionSetChooser->removeRegion(hr);
+// Calculates survivor space parameters.
+void G1CollectorPolicy::calculate_survivors_policy()
+{
+  if (!G1UseSurvivorSpaces) {
+    return;
+  }
+  if (G1FixedSurvivorSpaceSize == 0) {
+    _max_survivor_regions = _young_list_target_length / SurvivorRatio;
+  } else {
+    _max_survivor_regions = G1FixedSurvivorSpaceSize / HeapRegion::GrainBytes;
+  }
+
+  if (G1FixedTenuringThreshold) {
+    _tenuring_threshold = MaxTenuringThreshold;
+  } else {
+    _tenuring_threshold = _survivors_age_table.compute_tenuring_threshold(
+        HeapRegion::GrainWords * _max_survivor_regions);
+  }
 }
 
-
 bool
 G1CollectorPolicy_BestRegionsFirst::should_do_collection_pause(size_t
                                                                word_size) {
@@ -2743,7 +2568,11 @@
   double max_pause_time_ms = _mmu_tracker->max_gc_time() * 1000.0;
 
   size_t young_list_length = _g1->young_list_length();
-  bool reached_target_length = young_list_length >= _young_list_target_length;
+  size_t young_list_max_length = _young_list_target_length;
+  if (G1FixedEdenSize) {
+    young_list_max_length -= _max_survivor_regions;
+  }
+  bool reached_target_length = young_list_length >= young_list_max_length;
 
   if (in_young_gc_mode()) {
     if (reached_target_length) {
@@ -2968,7 +2797,7 @@
 // estimate of the number of live bytes.
 void G1CollectorPolicy::
 add_to_collection_set(HeapRegion* hr) {
-  if (G1TraceRegions) {
+  if (G1PrintRegions) {
     gclog_or_tty->print_cr("added region to cset %d:["PTR_FORMAT", "PTR_FORMAT"], "
                   "top "PTR_FORMAT", young %s",
                   hr->hrs_index(), hr->bottom(), hr->end(),
@@ -2985,23 +2814,18 @@
   _collection_set = hr;
   _collection_set_size++;
   _collection_set_bytes_used_before += hr->used();
+  _g1->register_region_with_in_cset_fast_test(hr);
 }
 
 void
 G1CollectorPolicy_BestRegionsFirst::
-choose_collection_set(HeapRegion* pop_region) {
+choose_collection_set() {
   double non_young_start_time_sec;
   start_recording_regions();
 
-  if (pop_region != NULL) {
-    _target_pause_time_ms = (double) G1MaxPauseTimeMS;
-  } else {
-    guarantee(_target_pause_time_ms > -1.0,
-              "_target_pause_time_ms should have been set!");
-  }
-
-  // pop region is either null (and so is CS), or else it *is* the CS.
-  assert(_collection_set == pop_region, "Precondition");
+  guarantee(_target_pause_time_ms > -1.0,
+            "_target_pause_time_ms should have been set!");
+  assert(_collection_set == NULL, "Precondition");
 
   double base_time_ms = predict_base_elapsed_time_ms(_pending_cards);
   double predicted_pause_time_ms = base_time_ms;
@@ -3028,15 +2852,13 @@
   size_t expansion_bytes =
     _g1->expansion_regions() * HeapRegion::GrainBytes;
 
-  if (pop_region == NULL) {
-    _collection_set_bytes_used_before = 0;
-    _collection_set_size = 0;
-  }
+  _collection_set_bytes_used_before = 0;
+  _collection_set_size = 0;
 
   // Adjust for expansion and slop.
   max_live_bytes = max_live_bytes + expansion_bytes;
 
-  assert(pop_region != NULL || _g1->regions_accounted_for(), "Region leakage!");
+  assert(_g1->regions_accounted_for(), "Region leakage!");
 
   HeapRegion* hr;
   if (in_young_gc_mode()) {
@@ -3063,14 +2885,9 @@
       double predicted_time_ms = predict_region_elapsed_time_ms(hr, true);
       time_remaining_ms -= predicted_time_ms;
       predicted_pause_time_ms += predicted_time_ms;
-      if (hr == pop_region) {
-        // The popular region was young.  Skip over it.
-        assert(hr->in_collection_set(), "It's the pop region.");
-      } else {
-        assert(!hr->in_collection_set(), "It's not the pop region.");
-        add_to_collection_set(hr);
-        record_cset_region(hr, true);
-      }
+      assert(!hr->in_collection_set(), "invariant");
+      add_to_collection_set(hr);
+      record_cset_region(hr, true);
       max_live_bytes -= MIN2(hr->max_live_bytes(), max_live_bytes);
       if (G1PolicyVerbose > 0) {
         gclog_or_tty->print_cr("  Added [" PTR_FORMAT ", " PTR_FORMAT") to CS.",
@@ -3093,10 +2910,6 @@
       // don't bother adding more regions...
       goto choose_collection_set_end;
     }
-  } else if (pop_region != NULL) {
-    // We're not in young mode, and we chose a popular region; don't choose
-    // any more.
-    return;
   }
 
   if (!in_young_gc_mode() || !full_young_gcs()) {
@@ -3106,7 +2919,7 @@
     do {
       hr = _collectionSetChooser->getNextMarkedRegion(time_remaining_ms,
                                                       avg_prediction);
-      if (hr != NULL && !hr->popular()) {
+      if (hr != NULL) {
         double predicted_time_ms = predict_region_elapsed_time_ms(hr, false);
         time_remaining_ms -= predicted_time_ms;
         predicted_pause_time_ms += predicted_time_ms;
@@ -3153,8 +2966,8 @@
 }
 
 void G1CollectorPolicy_BestRegionsFirst::
-record_collection_pause_end(bool popular, bool abandoned) {
-  G1CollectorPolicy::record_collection_pause_end(popular, abandoned);
+record_collection_pause_end(bool abandoned) {
+  G1CollectorPolicy::record_collection_pause_end(abandoned);
   assert(assertMarkedBytesDataOK(), "Marked regions not OK at pause end.");
 }
 
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,18 +47,16 @@
   }
 
 class MainBodySummary;
-class PopPreambleSummary;
 
-class PauseSummary {
+class PauseSummary: public CHeapObj {
   define_num_seq(total)
     define_num_seq(other)
 
 public:
   virtual MainBodySummary*    main_body_summary()    { return NULL; }
-  virtual PopPreambleSummary* pop_preamble_summary() { return NULL; }
 };
 
-class MainBodySummary {
+class MainBodySummary: public CHeapObj {
   define_num_seq(satb_drain) // optional
   define_num_seq(parallel) // parallel only
     define_num_seq(ext_root_scan)
@@ -75,36 +73,13 @@
   define_num_seq(clear_ct)  // parallel only
 };
 
-class PopPreambleSummary {
-  define_num_seq(pop_preamble)
-    define_num_seq(pop_update_rs)
-    define_num_seq(pop_scan_rs)
-    define_num_seq(pop_closure_app)
-    define_num_seq(pop_evacuation)
-    define_num_seq(pop_other)
-};
-
-class NonPopSummary: public PauseSummary,
-                     public MainBodySummary {
+class Summary: public PauseSummary,
+               public MainBodySummary {
 public:
   virtual MainBodySummary*    main_body_summary()    { return this; }
 };
 
-class PopSummary: public PauseSummary,
-                  public MainBodySummary,
-                  public PopPreambleSummary {
-public:
-  virtual MainBodySummary*    main_body_summary()    { return this; }
-  virtual PopPreambleSummary* pop_preamble_summary() { return this; }
-};
-
-class NonPopAbandonedSummary: public PauseSummary {
-};
-
-class PopAbandonedSummary: public PauseSummary,
-                           public PopPreambleSummary {
-public:
-  virtual PopPreambleSummary* pop_preamble_summary() { return this; }
+class AbandonedSummary: public PauseSummary {
 };
 
 class G1CollectorPolicy: public CollectorPolicy {
@@ -146,10 +121,6 @@
   double _cur_satb_drain_time_ms;
   double _cur_clear_ct_time_ms;
   bool   _satb_drain_time_set;
-  double _cur_popular_preamble_start_ms;
-  double _cur_popular_preamble_time_ms;
-  double _cur_popular_compute_rc_time_ms;
-  double _cur_popular_evac_time_ms;
 
   double _cur_CH_strong_roots_end_sec;
   double _cur_CH_strong_roots_dur_ms;
@@ -173,10 +144,8 @@
   TruncatedSeq* _concurrent_mark_remark_times_ms;
   TruncatedSeq* _concurrent_mark_cleanup_times_ms;
 
-  NonPopSummary*           _non_pop_summary;
-  PopSummary*              _pop_summary;
-  NonPopAbandonedSummary*  _non_pop_abandoned_summary;
-  PopAbandonedSummary*     _pop_abandoned_summary;
+  Summary*           _summary;
+  AbandonedSummary*  _abandoned_summary;
 
   NumberSeq* _all_pause_times_ms;
   NumberSeq* _all_full_gc_times_ms;
@@ -210,18 +179,6 @@
   double* _par_last_obj_copy_times_ms;
   double* _par_last_termination_times_ms;
 
-  // there are two pases during popular pauses, so we need to store
-  // somewhere the results of the first pass
-  double* _pop_par_last_update_rs_start_times_ms;
-  double* _pop_par_last_update_rs_times_ms;
-  double* _pop_par_last_update_rs_processed_buffers;
-  double* _pop_par_last_scan_rs_start_times_ms;
-  double* _pop_par_last_scan_rs_times_ms;
-  double* _pop_par_last_closure_app_times_ms;
-
-  double _pop_compute_rc_start;
-  double _pop_evac_start;
-
   // indicates that we are in young GC mode
   bool _in_young_gc_mode;
 
@@ -557,6 +514,8 @@
     return get_new_neg_prediction(_young_gc_eff_seq);
   }
 
+  double predict_survivor_regions_evac_time();
+
   // </NEW PREDICTION>
 
 public:
@@ -599,8 +558,8 @@
 
   // Returns an estimate of the survival rate of the region at yg-age
   // "yg_age".
-  double predict_yg_surv_rate(int age) {
-    TruncatedSeq* seq = _short_lived_surv_rate_group->get_seq(age);
+  double predict_yg_surv_rate(int age, SurvRateGroup* surv_rate_group) {
+    TruncatedSeq* seq = surv_rate_group->get_seq(age);
     if (seq->num() == 0)
       gclog_or_tty->print("BARF! age is %d", age);
     guarantee( seq->num() > 0, "invariant" );
@@ -610,6 +569,10 @@
     return pred;
   }
 
+  double predict_yg_surv_rate(int age) {
+    return predict_yg_surv_rate(age, _short_lived_surv_rate_group);
+  }
+
   double accum_yg_surv_rate_pred(int age) {
     return _short_lived_surv_rate_group->accum_surv_rate_pred(age);
   }
@@ -628,8 +591,7 @@
                          NumberSeq* calc_other_times_ms) const;
 
   void print_summary (PauseSummary* stats) const;
-  void print_abandoned_summary(PauseSummary* non_pop_summary,
-                               PauseSummary* pop_summary) const;
+  void print_abandoned_summary(PauseSummary* summary) const;
 
   void print_summary (int level, const char* str, NumberSeq* seq) const;
   void print_summary_sd (int level, const char* str, NumberSeq* seq) const;
@@ -675,18 +637,6 @@
   // The number of collection pauses at the end of the last mark.
   size_t _n_pauses_at_mark_end;
 
-  // ==== This section is for stats related to starting Conc Refinement on time.
-  size_t _conc_refine_enabled;
-  size_t _conc_refine_zero_traversals;
-  size_t _conc_refine_max_traversals;
-  // In # of heap regions.
-  size_t _conc_refine_current_delta;
-
-  // At the beginning of a collection pause, update the variables above,
-  // especially the "delta".
-  void update_conc_refine_data();
-  // ====
-
   // Stash a pointer to the g1 heap.
   G1CollectedHeap* _g1;
 
@@ -822,6 +772,9 @@
 
   virtual void init();
 
+  // Create jstat counters for the policy.
+  virtual void initialize_gc_policy_counters();
+
   virtual HeapWord* mem_allocate_work(size_t size,
                                       bool is_tlab,
                                       bool* gc_overhead_limit_was_exceeded);
@@ -847,9 +800,6 @@
   virtual void record_collection_pause_start(double start_time_sec,
                                              size_t start_used);
 
-  virtual void record_popular_pause_preamble_start();
-  virtual void record_popular_pause_preamble_end();
-
   // Must currently be called while the world is stopped.
   virtual void record_concurrent_mark_init_start();
   virtual void record_concurrent_mark_init_end();
@@ -872,7 +822,7 @@
   virtual void record_collection_pause_end_CH_strong_roots();
   virtual void record_collection_pause_end_G1_strong_roots();
 
-  virtual void record_collection_pause_end(bool popular, bool abandoned);
+  virtual void record_collection_pause_end(bool abandoned);
 
   // Record the fact that a full collection occurred.
   virtual void record_full_collection_start();
@@ -957,7 +907,7 @@
     record_termination_time(0, ms);
   }
 
-  void record_pause_time(double ms) {
+  void record_pause_time_ms(double ms) {
     _last_pause_time_ms = ms;
   }
 
@@ -981,12 +931,6 @@
     _cur_aux_times_ms[i] += ms;
   }
 
-  void record_pop_compute_rc_start();
-  void record_pop_compute_rc_end();
-
-  void record_pop_evac_start();
-  void record_pop_evac_end();
-
   // Record the fact that "bytes" bytes allocated in a region.
   void record_before_bytes(size_t bytes);
   void record_after_bytes(size_t bytes);
@@ -999,9 +943,7 @@
   // Choose a new collection set.  Marks the chosen regions as being
   // "in_collection_set", and links them together.  The head and number of
   // the collection set are available via access methods.
-  // If "pop_region" is non-NULL, it is a popular region that has already
-  // been added to the collection set.
-  virtual void choose_collection_set(HeapRegion* pop_region = NULL) = 0;
+  virtual void choose_collection_set() = 0;
 
   void clear_collection_set() { _collection_set = NULL; }
 
@@ -1009,9 +951,6 @@
   // current collection set.
   HeapRegion* collection_set() { return _collection_set; }
 
-  // Sets the collection set to the given single region.
-  virtual void set_single_region_collection_set(HeapRegion* hr);
-
   // The number of elements in the current collection set.
   size_t collection_set_size() { return _collection_set_size; }
 
@@ -1047,8 +986,12 @@
   // Print stats on young survival ratio
   void print_yg_surv_rate_info() const;
 
-  void finished_recalculating_age_indexes() {
-    _short_lived_surv_rate_group->finished_recalculating_age_indexes();
+  void finished_recalculating_age_indexes(bool is_survivors) {
+    if (is_survivors) {
+      _survivor_surv_rate_group->finished_recalculating_age_indexes();
+    } else {
+      _short_lived_surv_rate_group->finished_recalculating_age_indexes();
+    }
     // do that for any other surv rate groups
   }
 
@@ -1097,6 +1040,17 @@
   // maximum amount of suvivors regions.
   int _tenuring_threshold;
 
+  // The limit on the number of regions allocated for survivors.
+  size_t _max_survivor_regions;
+
+  // The amount of survor regions after a collection.
+  size_t _recorded_survivor_regions;
+  // List of survivor regions.
+  HeapRegion* _recorded_survivor_head;
+  HeapRegion* _recorded_survivor_tail;
+
+  ageTable _survivors_age_table;
+
 public:
 
   inline GCAllocPurpose
@@ -1116,7 +1070,9 @@
     return GCAllocForTenured;
   }
 
-  uint max_regions(int purpose);
+  static const size_t REGIONS_UNLIMITED = ~(size_t)0;
+
+  size_t max_regions(int purpose);
 
   // The limit on regions for a particular purpose is reached.
   void note_alloc_region_limit_reached(int purpose) {
@@ -1132,6 +1088,27 @@
   void note_stop_adding_survivor_regions() {
     _survivor_surv_rate_group->stop_adding_regions();
   }
+
+  void record_survivor_regions(size_t      regions,
+                               HeapRegion* head,
+                               HeapRegion* tail) {
+    _recorded_survivor_regions = regions;
+    _recorded_survivor_head    = head;
+    _recorded_survivor_tail    = tail;
+  }
+
+  size_t recorded_survivor_regions() {
+    return _recorded_survivor_regions;
+  }
+
+  void record_thread_age_table(ageTable* age_table)
+  {
+    _survivors_age_table.merge_par(age_table);
+  }
+
+  // Calculates survivor space parameters.
+  void calculate_survivors_policy();
+
 };
 
 // This encapsulates a particular strategy for a g1 Collector.
@@ -1160,7 +1137,7 @@
   // If the estimated is less then desirable, resize if possible.
   void expand_if_possible(size_t numRegions);
 
-  virtual void choose_collection_set(HeapRegion* pop_region = NULL);
+  virtual void choose_collection_set();
   virtual void record_collection_pause_start(double start_time_sec,
                                              size_t start_used);
   virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes,
@@ -1171,9 +1148,8 @@
   G1CollectorPolicy_BestRegionsFirst() {
     _collectionSetChooser = new CollectionSetChooser();
   }
-  void record_collection_pause_end(bool popular, bool abandoned);
+  void record_collection_pause_end(bool abandoned);
   bool should_do_collection_pause(size_t word_size);
-  virtual void set_single_region_collection_set(HeapRegion* hr);
   // This is not needed any more, after the CSet choosing code was
   // changed to use the pause prediction work. But let's leave the
   // hook in just in case.
--- a/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 /***** ALL TIMES ARE IN SECS!!!!!!! *****/
 
 // this is the "interface"
-class G1MMUTracker {
+class G1MMUTracker: public CHeapObj {
 protected:
   double          _time_slice;
   double          _max_gc_time; // this is per time slice
@@ -67,7 +67,7 @@
   }
 };
 
-class G1MMUTrackerQueueElem {
+class G1MMUTrackerQueueElem VALUE_OBJ_CLASS_SPEC {
 private:
   double _start_time;
   double _end_time;
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -57,7 +57,7 @@
 
   mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
 
-  if (G1VerifyConcMark) {
+  if (VerifyDuringGC) {
       G1CollectedHeap* g1h = G1CollectedHeap::heap();
       g1h->checkConcurrentMark();
   }
@@ -157,7 +157,6 @@
 class G1PrepareCompactClosure: public HeapRegionClosure {
   ModRefBarrierSet* _mrbs;
   CompactPoint _cp;
-  bool _popular_only;
 
   void free_humongous_region(HeapRegion* hr) {
     HeapWord* bot = hr->bottom();
@@ -172,17 +171,11 @@
   }
 
 public:
-  G1PrepareCompactClosure(CompactibleSpace* cs, bool popular_only) :
+  G1PrepareCompactClosure(CompactibleSpace* cs) :
     _cp(NULL, cs, cs->initialize_threshold()),
-    _mrbs(G1CollectedHeap::heap()->mr_bs()),
-    _popular_only(popular_only)
+    _mrbs(G1CollectedHeap::heap()->mr_bs())
   {}
   bool doHeapRegion(HeapRegion* hr) {
-    if (_popular_only && !hr->popular())
-      return true; // terminate early
-    else if (!_popular_only && hr->popular())
-      return false; // skip this one.
-
     if (hr->isHumongous()) {
       if (hr->startsHumongous()) {
         oop obj = oop(hr->bottom());
@@ -203,20 +196,15 @@
     return false;
   }
 };
-// Stolen verbatim from g1CollectedHeap.cpp
+
+// Finds the first HeapRegion.
 class FindFirstRegionClosure: public HeapRegionClosure {
   HeapRegion* _a_region;
-  bool _find_popular;
 public:
-  FindFirstRegionClosure(bool find_popular) :
-    _a_region(NULL), _find_popular(find_popular) {}
+  FindFirstRegionClosure() : _a_region(NULL) {}
   bool doHeapRegion(HeapRegion* r) {
-    if (r->popular() == _find_popular) {
-      _a_region = r;
-      return true;
-    } else {
-      return false;
-    }
+    _a_region = r;
+    return true;
   }
   HeapRegion* result() { return _a_region; }
 };
@@ -242,30 +230,15 @@
   TraceTime tm("phase 2", PrintGC && Verbose, true, gclog_or_tty);
   GenMarkSweep::trace("2");
 
-  // First we compact the popular regions.
-  if (G1NumPopularRegions > 0) {
-    CompactibleSpace* sp = g1h->first_compactible_space();
-    FindFirstRegionClosure cl(true /*find_popular*/);
-    g1h->heap_region_iterate(&cl);
-    HeapRegion *r = cl.result();
-    assert(r->popular(), "should have found a popular region.");
-    assert(r == sp, "first popular heap region should "
-                    "== first compactible space");
-    G1PrepareCompactClosure blk(sp, true/*popular_only*/);
-    g1h->heap_region_iterate(&blk);
-  }
-
-  // Now we do the regular regions.
-  FindFirstRegionClosure cl(false /*find_popular*/);
+  FindFirstRegionClosure cl;
   g1h->heap_region_iterate(&cl);
   HeapRegion *r = cl.result();
-  assert(!r->popular(), "should have founda non-popular region.");
   CompactibleSpace* sp = r;
   if (r->isHumongous() && oop(r->bottom())->is_gc_marked()) {
     sp = r->next_compaction_space();
   }
 
-  G1PrepareCompactClosure blk(sp, false/*popular_only*/);
+  G1PrepareCompactClosure blk(sp);
   g1h->heap_region_iterate(&blk);
 
   CompactPoint perm_cp(pg, NULL, NULL);
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,18 +42,6 @@
   virtual void set_region(HeapRegion* from) { _from = from; }
 };
 
-
-class G1ScanAndBalanceClosure : public OopClosure {
-  G1CollectedHeap* _g1;
-  static int _nq;
-public:
-  G1ScanAndBalanceClosure(G1CollectedHeap* g1) : _g1(g1) { }
-  inline  void do_oop_nv(oop* p);
-  inline  void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
-  virtual void do_oop(oop* p);
-  virtual void do_oop(narrowOop* p)    { guarantee(false, "NYI"); }
-};
-
 class G1ParClosureSuper : public OopsInHeapRegionClosure {
 protected:
   G1CollectedHeap* _g1;
@@ -69,22 +57,32 @@
 public:
   G1ParScanClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) :
     G1ParClosureSuper(g1, par_scan_state) { }
-  void do_oop_nv(oop* p);   // should be made inline
-  inline  void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
   virtual void do_oop(oop* p)          { do_oop_nv(p); }
   virtual void do_oop(narrowOop* p)    { do_oop_nv(p); }
 };
 
-#define G1_PARTIAL_ARRAY_MASK 1
+#define G1_PARTIAL_ARRAY_MASK 0x2
+
+template <class T> inline bool has_partial_array_mask(T* ref) {
+  return ((uintptr_t)ref & G1_PARTIAL_ARRAY_MASK) == G1_PARTIAL_ARRAY_MASK;
+}
+
+template <class T> inline T* set_partial_array_mask(T obj) {
+  assert(((uintptr_t)obj & G1_PARTIAL_ARRAY_MASK) == 0, "Information loss!");
+  return (T*) ((uintptr_t)obj | G1_PARTIAL_ARRAY_MASK);
+}
+
+template <class T> inline oop clear_partial_array_mask(T* ref) {
+  return oop((intptr_t)ref & ~G1_PARTIAL_ARRAY_MASK);
+}
 
 class G1ParScanPartialArrayClosure : public G1ParClosureSuper {
   G1ParScanClosure _scanner;
-  template <class T> void process_array_chunk(oop obj, int start, int end);
 public:
   G1ParScanPartialArrayClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) :
     G1ParClosureSuper(g1, par_scan_state), _scanner(g1, par_scan_state) { }
-  void do_oop_nv(oop* p);
-  void do_oop_nv(narrowOop* p)      { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
   virtual void do_oop(oop* p)       { do_oop_nv(p); }
   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 };
@@ -93,7 +91,7 @@
 class G1ParCopyHelper : public G1ParClosureSuper {
   G1ParScanClosure *_scanner;
 protected:
-  void mark_forwardee(oop* p);
+  template <class T> void mark_forwardee(T* p);
   oop copy_to_survivor_space(oop obj);
 public:
   G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state,
@@ -101,32 +99,40 @@
     G1ParClosureSuper(g1, par_scan_state), _scanner(scanner) { }
 };
 
-template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_forwardee>
+template<bool do_gen_barrier, G1Barrier barrier,
+         bool do_mark_forwardee, bool skip_cset_test>
 class G1ParCopyClosure : public G1ParCopyHelper {
   G1ParScanClosure _scanner;
-  void do_oop_work(oop* p);
-  void do_oop_work(narrowOop* p) { guarantee(false, "NYI"); }
+  template <class T> void do_oop_work(T* p);
 public:
   G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) :
     _scanner(g1, par_scan_state), G1ParCopyHelper(g1, par_scan_state, &_scanner) { }
-  inline void do_oop_nv(oop* p) {
+  template <class T> void do_oop_nv(T* p) {
     do_oop_work(p);
     if (do_mark_forwardee)
       mark_forwardee(p);
   }
-  inline void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
   virtual void do_oop(oop* p)       { do_oop_nv(p); }
   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 };
 
-typedef G1ParCopyClosure<false, G1BarrierNone, false> G1ParScanExtRootClosure;
-typedef G1ParCopyClosure<true, G1BarrierNone, false> G1ParScanPermClosure;
-typedef G1ParCopyClosure<false, G1BarrierNone, true> G1ParScanAndMarkExtRootClosure;
-typedef G1ParCopyClosure<true, G1BarrierNone, true> G1ParScanAndMarkPermClosure;
-typedef G1ParCopyClosure<false, G1BarrierRS, false> G1ParScanHeapRSClosure;
-typedef G1ParCopyClosure<false, G1BarrierRS, true> G1ParScanAndMarkHeapRSClosure;
-typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacClosure;
-
+typedef G1ParCopyClosure<false, G1BarrierNone, false, false> G1ParScanExtRootClosure;
+typedef G1ParCopyClosure<true,  G1BarrierNone, false, false> G1ParScanPermClosure;
+typedef G1ParCopyClosure<false, G1BarrierRS,   false, false> G1ParScanHeapRSClosure;
+typedef G1ParCopyClosure<false, G1BarrierNone, true,  false> G1ParScanAndMarkExtRootClosure;
+typedef G1ParCopyClosure<true,  G1BarrierNone, true,  false> G1ParScanAndMarkPermClosure;
+typedef G1ParCopyClosure<false, G1BarrierRS,   true,  false> G1ParScanAndMarkHeapRSClosure;
+// This is the only case when we set skip_cset_test. Basically, this
+// closure is (should?) only be called directly while we're draining
+// the overflow and task queues. In that case we know that the
+// reference in question points into the collection set, otherwise we
+// would not have pushed it on the queue. The following is defined in
+// g1_specialized_oop_closures.hpp.
+// typedef G1ParCopyClosure<false, G1BarrierEvac, false, true> G1ParScanHeapEvacClosure;
+// We need a separate closure to handle references during evacuation
+// failure processing, as we cannot asume that the reference already
+// points into the collection set (like G1ParScanHeapEvacClosure does).
+typedef G1ParCopyClosure<false, G1BarrierEvac, false, false> G1ParScanHeapEvacFailureClosure;
 
 class FilterIntoCSClosure: public OopClosure {
   G1CollectedHeap* _g1;
@@ -137,10 +143,9 @@
                         G1CollectedHeap* g1, OopClosure* oc) :
     _dcto_cl(dcto_cl), _g1(g1), _oc(oc)
   {}
-  inline void do_oop_nv(oop* p);
-  inline void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
-  virtual void do_oop(oop* p);
-  virtual void do_oop(narrowOop* p)   { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
+  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; }
 };
@@ -153,10 +158,9 @@
                                      OopsInHeapRegionClosure* oc) :
     _g1(g1), _oc(oc)
   {}
-  inline  void do_oop_nv(oop* p);
-  inline  void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
-  virtual void do_oop(oop* p);
-  virtual void do_oop(narrowOop* p)    { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
+  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; }
   void set_region(HeapRegion* from) {
@@ -174,10 +178,9 @@
                                             ConcurrentMark* cm)
   : _g1(g1), _oc(oc), _cm(cm) { }
 
-  inline  void do_oop_nv(oop* p);
-  inline  void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
-  virtual void do_oop(oop* p);
-  virtual void do_oop(narrowOop* p)    { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
+  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; }
   void set_region(HeapRegion* from) {
@@ -192,10 +195,9 @@
   int _out_of_region;
 public:
   FilterOutOfRegionClosure(HeapRegion* r, OopClosure* oc);
-  inline  void do_oop_nv(oop* p);
-  inline  void do_oop_nv(narrowOop* p) { guarantee(false, "NYI"); }
-  virtual void do_oop(oop* p);
-  virtual void do_oop(narrowOop* p)   { guarantee(false, "NYI"); }
+  template <class T> void do_oop_nv(T* p);
+  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; }
   int out_of_region() { return _out_of_region; }
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -31,9 +31,10 @@
 // perf-critical inner loop.
 #define FILTERINTOCSCLOSURE_DOHISTOGRAMCOUNT 0
 
-inline void FilterIntoCSClosure::do_oop_nv(oop* p) {
-  oop obj = *p;
-  if (obj != NULL && _g1->obj_in_cs(obj)) {
+template <class T> inline void FilterIntoCSClosure::do_oop_nv(T* p) {
+  T heap_oop = oopDesc::load_heap_oop(p);
+  if (!oopDesc::is_null(heap_oop) &&
+      _g1->obj_in_cs(oopDesc::decode_heap_oop_not_null(heap_oop))) {
     _oc->do_oop(p);
 #if FILTERINTOCSCLOSURE_DOHISTOGRAMCOUNT
     _dcto_cl->incr_count();
@@ -41,44 +42,32 @@
   }
 }
 
-inline void FilterIntoCSClosure::do_oop(oop* p)
-{
-  do_oop_nv(p);
-}
-
 #define FILTEROUTOFREGIONCLOSURE_DOHISTOGRAMCOUNT 0
 
-inline void FilterOutOfRegionClosure::do_oop_nv(oop* p) {
-  oop obj = *p;
-  HeapWord* obj_hw = (HeapWord*)obj;
-  if (obj_hw != NULL && (obj_hw < _r_bottom || obj_hw >= _r_end)) {
-    _oc->do_oop(p);
+template <class T> inline void FilterOutOfRegionClosure::do_oop_nv(T* p) {
+  T heap_oop = oopDesc::load_heap_oop(p);
+  if (!oopDesc::is_null(heap_oop)) {
+    HeapWord* obj_hw = (HeapWord*)oopDesc::decode_heap_oop_not_null(heap_oop);
+    if (obj_hw < _r_bottom || obj_hw >= _r_end) {
+      _oc->do_oop(p);
 #if FILTEROUTOFREGIONCLOSURE_DOHISTOGRAMCOUNT
-    _out_of_region++;
+      _out_of_region++;
 #endif
+    }
   }
 }
 
-inline void FilterOutOfRegionClosure::do_oop(oop* p)
-{
-  do_oop_nv(p);
-}
-
-inline void FilterInHeapRegionAndIntoCSClosure::do_oop_nv(oop* p) {
-  oop obj = *p;
-  if (obj != NULL && _g1->obj_in_cs(obj))
+template <class T> inline void FilterInHeapRegionAndIntoCSClosure::do_oop_nv(T* p) {
+  T heap_oop = oopDesc::load_heap_oop(p);
+  if (!oopDesc::is_null(heap_oop) &&
+      _g1->obj_in_cs(oopDesc::decode_heap_oop_not_null(heap_oop)))
     _oc->do_oop(p);
 }
 
-inline void FilterInHeapRegionAndIntoCSClosure::do_oop(oop* p)
-{
-  do_oop_nv(p);
-}
-
-
-inline void FilterAndMarkInHeapRegionAndIntoCSClosure::do_oop_nv(oop* p) {
-  oop obj = *p;
-  if (obj != NULL) {
+template <class T> inline void FilterAndMarkInHeapRegionAndIntoCSClosure::do_oop_nv(T* p) {
+  T heap_oop = oopDesc::load_heap_oop(p);
+  if (!oopDesc::is_null(heap_oop)) {
+    oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
     HeapRegion* hr = _g1->heap_region_containing((HeapWord*) obj);
     if (hr != NULL) {
       if (hr->in_collection_set())
@@ -89,24 +78,29 @@
   }
 }
 
-inline void FilterAndMarkInHeapRegionAndIntoCSClosure::do_oop(oop* p)
-{
-  do_oop_nv(p);
-}
+// This closure is applied to the fields of the objects that have just been copied.
+template <class T> inline void G1ParScanClosure::do_oop_nv(T* p) {
+  T heap_oop = oopDesc::load_heap_oop(p);
 
-inline void G1ScanAndBalanceClosure::do_oop_nv(oop* p) {
-  RefToScanQueue* q;
-  if (ParallelGCThreads > 0) {
-    // Deal the work out equally.
-    _nq = (_nq + 1) % ParallelGCThreads;
-    q = _g1->task_queue(_nq);
-  } else {
-    q = _g1->task_queue(0);
+  if (!oopDesc::is_null(heap_oop)) {
+    oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
+    if (_g1->in_cset_fast_test(obj)) {
+      // We're not going to even bother checking whether the object is
+      // already forwarded or not, as this usually causes an immediate
+      // stall. We'll try to prefetch the object (for write, given that
+      // we might need to install the forwarding reference) and we'll
+      // get back to it when pop it from the queue
+      Prefetch::write(obj->mark_addr(), 0);
+      Prefetch::read(obj->mark_addr(), (HeapWordSize*2));
+
+      // slightly paranoid test; I'm trying to catch potential
+      // problems before we go into push_on_queue to know where the
+      // problem is coming from
+      assert(obj == oopDesc::load_decode_heap_oop(p),
+             "p should still be pointing to obj");
+      _par_scan_state->push_on_queue(p);
+    } else {
+      _par_scan_state->update_rs(_from, p, _par_scan_state->queue_num());
+    }
   }
-  bool nooverflow = q->push(p);
-  guarantee(nooverflow, "Overflow during poplularity region processing");
 }
-
-inline void G1ScanAndBalanceClosure::do_oop(oop* p) {
-  do_oop_nv(p);
-}
--- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 +65,10 @@
   void set_region(HeapRegion* from) {
     _blk->set_region(from);
   }
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  virtual void do_oop(oop* p) {
-    oop obj = *p;
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
+    oop obj = oopDesc::load_decode_heap_oop(p);
     if (_g1->obj_in_cs(obj)) _blk->do_oop(p);
   }
   bool apply_to_weak_ref_discovered_field() { return true; }
@@ -105,65 +104,15 @@
   _g1->heap_region_iterate(&rc);
 }
 
-class UpdateRSOopClosure: public OopClosure {
-  HeapRegion* _from;
-  HRInto_G1RemSet* _rs;
-  int _worker_i;
-public:
-  UpdateRSOopClosure(HRInto_G1RemSet* rs, int worker_i = 0) :
-    _from(NULL), _rs(rs), _worker_i(worker_i) {
-    guarantee(_rs != NULL, "Requires an HRIntoG1RemSet");
-  }
-
-  void set_from(HeapRegion* from) {
-    assert(from != NULL, "from region must be non-NULL");
-    _from = from;
-  }
-
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  virtual void do_oop(oop* p) {
-    assert(_from != NULL, "from region must be non-NULL");
-    _rs->par_write_ref(_from, p, _worker_i);
-  }
-  // Override: this closure is idempotent.
-  //  bool idempotent() { return true; }
-  bool apply_to_weak_ref_discovered_field() { return true; }
-};
-
-class UpdateRSOutOfRegionClosure: public HeapRegionClosure {
-  G1CollectedHeap*    _g1h;
-  ModRefBarrierSet*   _mr_bs;
-  UpdateRSOopClosure  _cl;
-  int _worker_i;
-public:
-  UpdateRSOutOfRegionClosure(G1CollectedHeap* g1, int worker_i = 0) :
-    _cl(g1->g1_rem_set()->as_HRInto_G1RemSet(), worker_i),
-    _mr_bs(g1->mr_bs()),
-    _worker_i(worker_i),
-    _g1h(g1)
-    {}
-  bool doHeapRegion(HeapRegion* r) {
-    if (!r->in_collection_set() && !r->continuesHumongous()) {
-      _cl.set_from(r);
-      r->set_next_filter_kind(HeapRegionDCTOC::OutOfRegionFilterKind);
-      _mr_bs->mod_oop_in_space_iterate(r, &_cl, true, true);
-    }
-    return false;
-  }
-};
-
 class VerifyRSCleanCardOopClosure: public OopClosure {
   G1CollectedHeap* _g1;
 public:
   VerifyRSCleanCardOopClosure(G1CollectedHeap* g1) : _g1(g1) {}
 
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
-  virtual void do_oop(oop* p) {
-    oop obj = *p;
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
+    oop obj = oopDesc::load_decode_heap_oop(p);
     HeapRegion* to = _g1->heap_region_containing(obj);
     guarantee(to == NULL || !to->in_collection_set(),
               "Missed a rem set member.");
@@ -177,11 +126,19 @@
     _cards_scanned(NULL), _total_cards_scanned(0)
 {
   _seq_task = new SubTasksDone(NumSeqTasks);
-  _new_refs = NEW_C_HEAP_ARRAY(GrowableArray<oop*>*, ParallelGCThreads);
+  guarantee(n_workers() > 0, "There should be some workers");
+  _new_refs = NEW_C_HEAP_ARRAY(GrowableArray<OopOrNarrowOopStar>*, n_workers());
+  for (uint i = 0; i < n_workers(); i++) {
+    _new_refs[i] = new (ResourceObj::C_HEAP) GrowableArray<OopOrNarrowOopStar>(8192,true);
+  }
 }
 
 HRInto_G1RemSet::~HRInto_G1RemSet() {
   delete _seq_task;
+  for (uint i = 0; i < n_workers(); i++) {
+    delete _new_refs[i];
+  }
+  FREE_C_HEAP_ARRAY(GrowableArray<OopOrNarrowOopStar>*, _new_refs);
 }
 
 void CountNonCleanMemRegionClosure::do_MemRegion(MemRegion mr) {
@@ -199,6 +156,7 @@
   CardTableModRefBS *_ct_bs;
   int _worker_i;
   bool _try_claimed;
+  size_t _min_skip_distance, _max_skip_distance;
 public:
   ScanRSClosure(OopsInHeapRegionClosure* oc, int worker_i) :
     _oc(oc),
@@ -210,6 +168,8 @@
     _g1h = G1CollectedHeap::heap();
     _bot_shared = _g1h->bot_shared();
     _ct_bs = (CardTableModRefBS*) (_g1h->barrier_set());
+    _min_skip_distance = 16;
+    _max_skip_distance = 2 * _g1h->n_par_threads() * _min_skip_distance;
   }
 
   void set_try_claimed() { _try_claimed = true; }
@@ -257,6 +217,7 @@
     HeapRegionRemSet* hrrs = r->rem_set();
     if (hrrs->iter_is_complete()) return false; // All done.
     if (!_try_claimed && !hrrs->claim_iter()) return false;
+    _g1h->push_dirty_cards_region(r);
     // If we didn't return above, then
     //   _try_claimed || r->claim_iter()
     // is true: either we're supposed to work on claimed-but-not-complete
@@ -264,9 +225,13 @@
     HeapRegionRemSetIterator* iter = _g1h->rem_set_iterator(_worker_i);
     hrrs->init_iterator(iter);
     size_t card_index;
+    size_t skip_distance = 0, current_card = 0, jump_to_card = 0;
     while (iter->has_next(card_index)) {
+      if (current_card < jump_to_card) {
+        ++current_card;
+        continue;
+      }
       HeapWord* card_start = _g1h->bot_shared()->address_for_index(card_index);
-
 #if 0
       gclog_or_tty->print("Rem set iteration yielded card [" PTR_FORMAT ", " PTR_FORMAT ").\n",
                           card_start, card_start + CardTableModRefBS::card_size_in_words);
@@ -276,19 +241,32 @@
       assert(card_region != NULL, "Yielding cards not in the heap?");
       _cards++;
 
-      if (!card_region->in_collection_set()) {
-        // If the card is dirty, then we will scan it during updateRS.
-        if (!_ct_bs->is_card_claimed(card_index) &&
-            !_ct_bs->is_card_dirty(card_index)) {
-          assert(_ct_bs->is_card_clean(card_index) ||
-                 _ct_bs->is_card_claimed(card_index),
-                 "Card is either dirty, clean, or claimed");
-          if (_ct_bs->claim_card(card_index))
+      if (!card_region->is_on_dirty_cards_region_list()) {
+        _g1h->push_dirty_cards_region(card_region);
+      }
+
+       // If the card is dirty, then we will scan it during updateRS.
+      if (!card_region->in_collection_set() && !_ct_bs->is_card_dirty(card_index)) {
+          if (!_ct_bs->is_card_claimed(card_index) && _ct_bs->claim_card(card_index)) {
             scanCard(card_index, card_region);
-        }
+          } else if (_try_claimed) {
+            if (jump_to_card == 0 || jump_to_card != current_card) {
+              // We did some useful work in the previous iteration.
+              // Decrease the distance.
+              skip_distance = MAX2(skip_distance >> 1, _min_skip_distance);
+            } else {
+              // Previous iteration resulted in a claim failure.
+              // Increase the distance.
+              skip_distance = MIN2(skip_distance << 1, _max_skip_distance);
+            }
+            jump_to_card = current_card + skip_distance;
+          }
       }
+      ++current_card;
     }
-    hrrs->set_iter_complete();
+    if (!_try_claimed) {
+      hrrs->set_iter_complete();
+    }
     return false;
   }
   // Set all cards back to clean.
@@ -338,14 +316,12 @@
 
   _g1p->record_scan_rs_start_time(worker_i, rs_time_start * 1000.0);
   _g1p->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0);
-  if (ParallelGCThreads > 0) {
-    // In this case, we called scanNewRefsRS and recorded the corresponding
-    // time.
-    double scan_new_refs_time_ms = _g1p->get_scan_new_refs_time(worker_i);
-    if (scan_new_refs_time_ms > 0.0) {
-      closure_app_time_ms += scan_new_refs_time_ms;
-    }
+
+  double scan_new_refs_time_ms = _g1p->get_scan_new_refs_time(worker_i);
+  if (scan_new_refs_time_ms > 0.0) {
+    closure_app_time_ms += scan_new_refs_time_ms;
   }
+
   _g1p->record_obj_copy_time(worker_i, closure_app_time_ms);
 }
 
@@ -355,30 +331,17 @@
   double start = os::elapsedTime();
   _g1p->record_update_rs_start_time(worker_i, start * 1000.0);
 
-  if (G1RSBarrierUseQueue && !cg1r->do_traversal()) {
-    // Apply the appropriate closure to all remaining log entries.
-    _g1->iterate_dirty_card_closure(false, worker_i);
-    // Now there should be no dirty cards.
-    if (G1RSLogCheckCardTable) {
-      CountNonCleanMemRegionClosure cl(_g1);
-      _ct_bs->mod_card_iterate(&cl);
-      // XXX This isn't true any more: keeping cards of young regions
-      // marked dirty broke it.  Need some reasonable fix.
-      guarantee(cl.n() == 0, "Card table should be clean.");
-    }
-  } else {
-    UpdateRSOutOfRegionClosure update_rs(_g1, worker_i);
-    _g1->heap_region_iterate(&update_rs);
-    // We did a traversal; no further one is necessary.
-    if (G1RSBarrierUseQueue) {
-      assert(cg1r->do_traversal(), "Or we shouldn't have gotten here.");
-      cg1r->set_pya_cancel();
-    }
-    if (_cg1r->use_cache()) {
-      _cg1r->clear_and_record_card_counts();
-      _cg1r->clear_hot_cache();
-    }
+  // Apply the appropriate closure to all remaining log entries.
+  _g1->iterate_dirty_card_closure(false, worker_i);
+  // Now there should be no dirty cards.
+  if (G1RSLogCheckCardTable) {
+    CountNonCleanMemRegionClosure cl(_g1);
+    _ct_bs->mod_card_iterate(&cl);
+    // XXX This isn't true any more: keeping cards of young regions
+    // marked dirty broke it.  Need some reasonable fix.
+    guarantee(cl.n() == 0, "Card table should be clean.");
   }
+
   _g1p->record_update_rs_time(worker_i, (os::elapsedTime() - start) * 1000.0);
 }
 
@@ -463,15 +426,15 @@
   }
 };
 
-void
-HRInto_G1RemSet::scanNewRefsRS(OopsInHeapRegionClosure* oc,
-                                             int worker_i) {
+template <class T> void
+HRInto_G1RemSet::scanNewRefsRS_work(OopsInHeapRegionClosure* oc,
+                                    int worker_i) {
   double scan_new_refs_start_sec = os::elapsedTime();
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
   CardTableModRefBS* ct_bs = (CardTableModRefBS*) (g1h->barrier_set());
-  while (_new_refs[worker_i]->is_nonempty()) {
-    oop* p = _new_refs[worker_i]->pop();
-    oop obj = *p;
+  for (int i = 0; i < _new_refs[worker_i]->length(); i++) {
+    T* p = (T*) _new_refs[worker_i]->at(i);
+    oop obj = oopDesc::load_decode_heap_oop(p);
     // *p was in the collection set when p was pushed on "_new_refs", but
     // another thread may have processed this location from an RS, so it
     // might not point into the CS any longer.  If so, it's obviously been
@@ -480,10 +443,6 @@
       HeapRegion* r = g1h->heap_region_containing(p);
 
       DEBUG_ONLY(HeapRegion* to = g1h->heap_region_containing(obj));
-      assert(ParallelGCThreads > 1
-             || to->rem_set()->contains_reference(p),
-             "Invariant: pushed after being added."
-             "(Not reliable in parallel code.)");
       oc->set_region(r);
       // If "p" has already been processed concurrently, this is
       // idempotent.
@@ -495,11 +454,6 @@
                                   * 1000.0);
 }
 
-void HRInto_G1RemSet::set_par_traversal(bool b) {
-  _par_traversal_in_progress = b;
-  HeapRegionRemSet::set_par_traversal(b);
-}
-
 void HRInto_G1RemSet::cleanupHRRS() {
   HeapRegionRemSet::cleanup();
 }
@@ -526,20 +480,31 @@
   }
 
   if (ParallelGCThreads > 0) {
-    // This is a temporary change to serialize the update and scanning
-    // of remembered sets. There are some race conditions when this is
-    // done in parallel and they are causing failures. When we resolve
-    // said race conditions, we'll revert back to parallel remembered
-    // set updating and scanning. See CRs 6677707 and 6677708.
-    if (worker_i == 0) {
+    // The two flags below were introduced temporarily to serialize
+    // the updating and scanning of remembered sets. There are some
+    // race conditions when these two operations are done in parallel
+    // and they are causing failures. When we resolve said race
+    // conditions, we'll revert back to parallel remembered set
+    // updating and scanning. See CRs 6677707 and 6677708.
+    if (G1ParallelRSetUpdatingEnabled || (worker_i == 0)) {
       updateRS(worker_i);
       scanNewRefsRS(oc, worker_i);
+    } else {
+      _g1p->record_update_rs_start_time(worker_i, os::elapsedTime() * 1000.0);
+      _g1p->record_update_rs_processed_buffers(worker_i, 0.0);
+      _g1p->record_update_rs_time(worker_i, 0.0);
+      _g1p->record_scan_new_refs_time(worker_i, 0.0);
+    }
+    if (G1ParallelRSetScanningEnabled || (worker_i == 0)) {
       scanRS(oc, worker_i);
+    } else {
+      _g1p->record_scan_rs_start_time(worker_i, os::elapsedTime() * 1000.0);
+      _g1p->record_scan_rs_time(worker_i, 0.0);
     }
   } else {
     assert(worker_i == 0, "invariant");
-
     updateRS(0);
+    scanNewRefsRS(oc, 0);
     scanRS(oc, 0);
   }
 }
@@ -559,19 +524,13 @@
   assert(!_par_traversal_in_progress, "Invariant between iterations.");
   if (ParallelGCThreads > 0) {
     set_par_traversal(true);
-    int n_workers = _g1->workers()->total_workers();
-    _seq_task->set_par_threads(n_workers);
-    for (uint i = 0; i < ParallelGCThreads; i++)
-      _new_refs[i] = new (ResourceObj::C_HEAP) GrowableArray<oop*>(8192,true);
-
-    if (cg1r->do_traversal()) {
-      updateRS(0);
-      // Have to do this again after updaters
-      cleanupHRRS();
-    }
+    _seq_task->set_par_threads((int)n_workers());
   }
   guarantee( _cards_scanned == NULL, "invariant" );
   _cards_scanned = NEW_C_HEAP_ARRAY(size_t, n_workers());
+  for (uint i = 0; i < n_workers(); ++i) {
+    _cards_scanned[i] = 0;
+  }
   _total_cards_scanned = 0;
 }
 
@@ -584,6 +543,49 @@
   }
 };
 
+class UpdateRSetOopsIntoCSImmediate : public OopClosure {
+  G1CollectedHeap* _g1;
+public:
+  UpdateRSetOopsIntoCSImmediate(G1CollectedHeap* g1) : _g1(g1) { }
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
+    HeapRegion* to = _g1->heap_region_containing(oopDesc::load_decode_heap_oop(p));
+    if (to->in_collection_set()) {
+      to->rem_set()->add_reference(p, 0);
+    }
+  }
+};
+
+class UpdateRSetOopsIntoCSDeferred : public OopClosure {
+  G1CollectedHeap* _g1;
+  CardTableModRefBS* _ct_bs;
+  DirtyCardQueue* _dcq;
+public:
+  UpdateRSetOopsIntoCSDeferred(G1CollectedHeap* g1, DirtyCardQueue* dcq) :
+    _g1(g1), _ct_bs((CardTableModRefBS*)_g1->barrier_set()), _dcq(dcq) { }
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
+  template <class T> void do_oop_work(T* p) {
+    oop obj = oopDesc::load_decode_heap_oop(p);
+    if (_g1->obj_in_cs(obj)) {
+      size_t card_index = _ct_bs->index_for(p);
+      if (_ct_bs->mark_card_deferred(card_index)) {
+        _dcq->enqueue((jbyte*)_ct_bs->byte_for_index(card_index));
+      }
+    }
+  }
+};
+
+template <class T> void HRInto_G1RemSet::new_refs_iterate_work(OopClosure* cl) {
+  for (size_t i = 0; i < n_workers(); i++) {
+    for (int j = 0; j < _new_refs[i]->length(); j++) {
+      T* p = (T*) _new_refs[i]->at(j);
+      cl->do_oop(p);
+    }
+  }
+}
+
 void HRInto_G1RemSet::cleanup_after_oops_into_collection_set_do() {
   guarantee( _cards_scanned != NULL, "invariant" );
   _total_cards_scanned = 0;
@@ -601,16 +603,27 @@
   _g1->collection_set_iterate(&iterClosure);
   // Set all cards back to clean.
   _g1->cleanUpCardTable();
+
   if (ParallelGCThreads > 0) {
-    ConcurrentG1Refine* cg1r = _g1->concurrent_g1_refine();
-    if (cg1r->do_traversal()) {
-      cg1r->cg1rThread()->set_do_traversal(false);
-    }
-    for (uint i = 0; i < ParallelGCThreads; i++) {
-      delete _new_refs[i];
-    }
     set_par_traversal(false);
   }
+
+  if (_g1->evacuation_failed()) {
+    // Restore remembered sets for the regions pointing into
+    // the collection set.
+    if (G1DeferredRSUpdate) {
+      DirtyCardQueue dcq(&_g1->dirty_card_queue_set());
+      UpdateRSetOopsIntoCSDeferred deferred_update(_g1, &dcq);
+      new_refs_iterate(&deferred_update);
+    } else {
+      UpdateRSetOopsIntoCSImmediate immediate_update(_g1);
+      new_refs_iterate(&immediate_update);
+    }
+  }
+  for (uint i = 0; i < n_workers(); i++) {
+    _new_refs[i]->clear();
+  }
+
   assert(!_par_traversal_in_progress, "Invariant between iterations.");
 }
 
@@ -661,139 +674,8 @@
 }
 
 
-class ConcRefineRegionClosure: public HeapRegionClosure {
-  G1CollectedHeap* _g1h;
-  CardTableModRefBS* _ctbs;
-  ConcurrentGCThread* _cgc_thrd;
-  ConcurrentG1Refine* _cg1r;
-  unsigned _cards_processed;
-  UpdateRSOopClosure _update_rs_oop_cl;
-public:
-  ConcRefineRegionClosure(CardTableModRefBS* ctbs,
-                          ConcurrentG1Refine* cg1r,
-                          HRInto_G1RemSet* g1rs) :
-    _ctbs(ctbs), _cg1r(cg1r), _cgc_thrd(cg1r->cg1rThread()),
-    _update_rs_oop_cl(g1rs), _cards_processed(0),
-    _g1h(G1CollectedHeap::heap())
-  {}
-
-  bool doHeapRegion(HeapRegion* r) {
-    if (!r->in_collection_set() &&
-        !r->continuesHumongous() &&
-        !r->is_young()) {
-      _update_rs_oop_cl.set_from(r);
-      UpdateRSObjectClosure update_rs_obj_cl(&_update_rs_oop_cl);
-
-      // For each run of dirty card in the region:
-      //   1) Clear the cards.
-      //   2) Process the range corresponding to the run, adding any
-      //      necessary RS entries.
-      // 1 must precede 2, so that a concurrent modification redirties the
-      // card.  If a processing attempt does not succeed, because it runs
-      // into an unparseable region, we will do binary search to find the
-      // beginning of the next parseable region.
-      HeapWord* startAddr = r->bottom();
-      HeapWord* endAddr = r->used_region().end();
-      HeapWord* lastAddr;
-      HeapWord* nextAddr;
-
-      for (nextAddr = lastAddr = startAddr;
-           nextAddr < endAddr;
-           nextAddr = lastAddr) {
-        MemRegion dirtyRegion;
-
-        // Get and clear dirty region from card table
-        MemRegion next_mr(nextAddr, endAddr);
-        dirtyRegion =
-          _ctbs->dirty_card_range_after_reset(
-                           next_mr,
-                           true, CardTableModRefBS::clean_card_val());
-        assert(dirtyRegion.start() >= nextAddr,
-               "returned region inconsistent?");
-
-        if (!dirtyRegion.is_empty()) {
-          HeapWord* stop_point =
-            r->object_iterate_mem_careful(dirtyRegion,
-                                          &update_rs_obj_cl);
-          if (stop_point == NULL) {
-            lastAddr = dirtyRegion.end();
-            _cards_processed +=
-              (int) (dirtyRegion.word_size() / CardTableModRefBS::card_size_in_words);
-          } else {
-            // We're going to skip one or more cards that we can't parse.
-            HeapWord* next_parseable_card =
-              r->next_block_start_careful(stop_point);
-            // Round this up to a card boundary.
-            next_parseable_card =
-              _ctbs->addr_for(_ctbs->byte_after_const(next_parseable_card));
-            // Now we invalidate the intervening cards so we'll see them
-            // again.
-            MemRegion remaining_dirty =
-              MemRegion(stop_point, dirtyRegion.end());
-            MemRegion skipped =
-              MemRegion(stop_point, next_parseable_card);
-            _ctbs->invalidate(skipped.intersection(remaining_dirty));
-
-            // Now start up again where we can parse.
-            lastAddr = next_parseable_card;
-
-            // Count how many we did completely.
-            _cards_processed +=
-              (stop_point - dirtyRegion.start()) /
-              CardTableModRefBS::card_size_in_words;
-          }
-          // Allow interruption at regular intervals.
-          // (Might need to make them more regular, if we get big
-          // dirty regions.)
-          if (_cgc_thrd != NULL) {
-            if (_cgc_thrd->should_yield()) {
-              _cgc_thrd->yield();
-              switch (_cg1r->get_pya()) {
-              case PYA_continue:
-                // This may have changed: re-read.
-                endAddr = r->used_region().end();
-                continue;
-              case PYA_restart: case PYA_cancel:
-                return true;
-              }
-            }
-          }
-        } else {
-          break;
-        }
-      }
-    }
-    // A good yield opportunity.
-    if (_cgc_thrd != NULL) {
-      if (_cgc_thrd->should_yield()) {
-        _cgc_thrd->yield();
-        switch (_cg1r->get_pya()) {
-        case PYA_restart: case PYA_cancel:
-          return true;
-        default:
-          break;
-        }
-
-      }
-    }
-    return false;
-  }
-
-  unsigned cards_processed() { return _cards_processed; }
-};
-
-
-void HRInto_G1RemSet::concurrentRefinementPass(ConcurrentG1Refine* cg1r) {
-  ConcRefineRegionClosure cr_cl(ct_bs(), cg1r, this);
-  _g1->heap_region_iterate(&cr_cl);
-  _conc_refine_traversals++;
-  _conc_refine_cards += cr_cl.cards_processed();
-}
-
 static IntHistogram out_of_histo(50, 50);
 
-
-
 void HRInto_G1RemSet::concurrentRefineOneCard(jbyte* card_ptr, int worker_i) {
   // If the card is no longer dirty, nothing to do.
   if (*card_ptr != CardTableModRefBS::dirty_card_val()) return;
@@ -923,10 +805,16 @@
   HeapRegion* max_mem_sz_region() { return _max_mem_sz_region; }
 };
 
+class PrintRSThreadVTimeClosure : public ThreadClosure {
+public:
+  virtual void do_thread(Thread *t) {
+    ConcurrentG1RefineThread* crt = (ConcurrentG1RefineThread*) t;
+    gclog_or_tty->print("    %5.2f", crt->vtime_accum());
+  }
+};
+
 void HRInto_G1RemSet::print_summary_info() {
   G1CollectedHeap* g1 = G1CollectedHeap::heap();
-  ConcurrentG1RefineThread* cg1r_thrd =
-    g1->concurrent_g1_refine()->cg1rThread();
 
 #if CARD_REPEAT_HISTO
   gclog_or_tty->print_cr("\nG1 card_repeat count histogram: ");
@@ -939,15 +827,13 @@
     gclog_or_tty->print_cr("  # of CS ptrs --> # of cards with that number.");
     out_of_histo.print_on(gclog_or_tty);
   }
-  gclog_or_tty->print_cr("\n Concurrent RS processed %d cards in "
-                "%5.2fs.",
-                _conc_refine_cards, cg1r_thrd->vtime_accum());
-
+  gclog_or_tty->print_cr("\n Concurrent RS processed %d cards",
+                         _conc_refine_cards);
   DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
   jint tot_processed_buffers =
     dcqs.processed_buffers_mut() + dcqs.processed_buffers_rs_thread();
   gclog_or_tty->print_cr("  Of %d completed buffers:", tot_processed_buffers);
-  gclog_or_tty->print_cr("     %8d (%5.1f%%) by conc RS thread.",
+  gclog_or_tty->print_cr("     %8d (%5.1f%%) by conc RS threads.",
                 dcqs.processed_buffers_rs_thread(),
                 100.0*(float)dcqs.processed_buffers_rs_thread()/
                 (float)tot_processed_buffers);
@@ -955,15 +841,12 @@
                 dcqs.processed_buffers_mut(),
                 100.0*(float)dcqs.processed_buffers_mut()/
                 (float)tot_processed_buffers);
-  gclog_or_tty->print_cr("   Did %d concurrent refinement traversals.",
-                _conc_refine_traversals);
-  if (!G1RSBarrierUseQueue) {
-    gclog_or_tty->print_cr("   Scanned %8.2f cards/traversal.",
-                  _conc_refine_traversals > 0 ?
-                  (float)_conc_refine_cards/(float)_conc_refine_traversals :
-                  0);
-  }
+  gclog_or_tty->print_cr("  Conc RS threads times(s)");
+  PrintRSThreadVTimeClosure p;
+  gclog_or_tty->print("     ");
+  g1->concurrent_g1_refine()->threads_do(&p);
   gclog_or_tty->print_cr("");
+
   if (G1UseHRIntoRS) {
     HRRSStatsIter blk;
     g1->heap_region_iterate(&blk);
@@ -977,9 +860,8 @@
     gclog_or_tty->print_cr("    %d occupied cards represented.",
                            blk.occupied());
     gclog_or_tty->print_cr("    Max sz region = [" PTR_FORMAT ", " PTR_FORMAT " )"
-                           " %s, cap = " SIZE_FORMAT "K, occ = " SIZE_FORMAT "K.",
+                           ", cap = " SIZE_FORMAT "K, occ = " SIZE_FORMAT "K.",
                            blk.max_mem_sz_region()->bottom(), blk.max_mem_sz_region()->end(),
-                           (blk.max_mem_sz_region()->popular() ? "POP" : ""),
                            (blk.max_mem_sz_region()->rem_set()->mem_size() + K - 1)/K,
                            (blk.max_mem_sz_region()->rem_set()->occupied() + K - 1)/K);
     gclog_or_tty->print_cr("    Did %d coarsenings.",
@@ -988,7 +870,9 @@
   }
 }
 void HRInto_G1RemSet::prepare_for_verify() {
-  if (G1HRRSFlushLogBuffersOnVerify && VerifyBeforeGC && !_g1->full_collection()) {
+  if (G1HRRSFlushLogBuffersOnVerify &&
+      (VerifyBeforeGC || VerifyAfterGC)
+      &&  !_g1->full_collection()) {
     cleanupHRRS();
     _g1->set_refine_cte_cl_concurrency(false);
     if (SafepointSynchronize::is_at_safepoint()) {
@@ -999,5 +883,7 @@
     _cg1r->set_use_cache(false);
     updateRS(0);
     _cg1r->set_use_cache(cg1r_use_cache);
+
+    assert(JavaThread::dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed");
   }
 }
--- a/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,18 +30,15 @@
 class HRInto_G1RemSet;
 class ConcurrentG1Refine;
 
-class G1RemSet {
+class G1RemSet: public CHeapObj {
 protected:
   G1CollectedHeap* _g1;
-
-  unsigned _conc_refine_traversals;
   unsigned _conc_refine_cards;
-
   size_t n_workers();
 
 public:
   G1RemSet(G1CollectedHeap* g1) :
-    _g1(g1), _conc_refine_traversals(0), _conc_refine_cards(0)
+    _g1(g1), _conc_refine_cards(0)
   {}
 
   // Invoke "blk->do_oop" on all pointers into the CS in object in regions
@@ -65,10 +62,12 @@
   // If "this" is of the given subtype, return "this", else "NULL".
   virtual HRInto_G1RemSet* as_HRInto_G1RemSet() { return NULL; }
 
-  // Record, if necessary, the fact that *p (where "p" is in region "from")
-  // has changed to its new value.
+  // Record, if necessary, the fact that *p (where "p" is in region "from",
+  // and is, a fortiori, required to be non-NULL) has changed to its new value.
   virtual void write_ref(HeapRegion* from, oop* p) = 0;
+  virtual void write_ref(HeapRegion* from, narrowOop* p) = 0;
   virtual void par_write_ref(HeapRegion* from, oop* p, int tid) = 0;
+  virtual void par_write_ref(HeapRegion* from, narrowOop* p, int tid) = 0;
 
   // Requires "region_bm" and "card_bm" to be bitmaps with 1 bit per region
   // or card, respectively, such that a region or card with a corresponding
@@ -81,19 +80,11 @@
   virtual void scrub_par(BitMap* region_bm, BitMap* card_bm,
                          int worker_num, int claim_val) = 0;
 
-  // Do any "refinement" activity that might be appropriate to the given
-  // G1RemSet.  If "refinement" has iterateive "passes", do one pass.
-  // If "t" is non-NULL, it is the thread performing the refinement.
-  // Default implementation does nothing.
-  virtual void concurrentRefinementPass(ConcurrentG1Refine* cg1r) {}
-
   // Refine the card corresponding to "card_ptr".  If "sts" is non-NULL,
   // join and leave around parts that must be atomic wrt GC.  (NULL means
   // being done at a safepoint.)
   virtual void concurrentRefineOneCard(jbyte* card_ptr, int worker_i) {}
 
-  unsigned conc_refine_cards() { return _conc_refine_cards; }
-
   // Print any relevant summary info.
   virtual void print_summary_info() {}
 
@@ -116,7 +107,9 @@
 
   // Nothing is necessary in the version below.
   void write_ref(HeapRegion* from, oop* p) {}
+  void write_ref(HeapRegion* from, narrowOop* p) {}
   void par_write_ref(HeapRegion* from, oop* p, int tid) {}
+  void par_write_ref(HeapRegion* from, narrowOop* p, int tid) {}
 
   void scrub(BitMap* region_bm, BitMap* card_bm) {}
   void scrub_par(BitMap* region_bm, BitMap* card_bm,
@@ -153,8 +146,20 @@
   // progress.  If so, then cards added to remembered sets should also have
   // their references into the collection summarized in "_new_refs".
   bool _par_traversal_in_progress;
-  void set_par_traversal(bool b);
-  GrowableArray<oop*>** _new_refs;
+  void set_par_traversal(bool b) { _par_traversal_in_progress = b; }
+  GrowableArray<OopOrNarrowOopStar>** _new_refs;
+  template <class T> void new_refs_iterate_work(OopClosure* cl);
+  void new_refs_iterate(OopClosure* cl) {
+    if (UseCompressedOops) {
+      new_refs_iterate_work<narrowOop>(cl);
+    } else {
+      new_refs_iterate_work<oop>(cl);
+    }
+  }
+
+protected:
+  template <class T> void write_ref_nv(HeapRegion* from, T* p);
+  template <class T> void par_write_ref_nv(HeapRegion* from, T* p, int tid);
 
 public:
   // This is called to reset dual hash tables after the gc pause
@@ -171,7 +176,14 @@
   void prepare_for_oops_into_collection_set_do();
   void cleanup_after_oops_into_collection_set_do();
   void scanRS(OopsInHeapRegionClosure* oc, int worker_i);
-  void scanNewRefsRS(OopsInHeapRegionClosure* oc, int worker_i);
+  template <class T> void scanNewRefsRS_work(OopsInHeapRegionClosure* oc, int worker_i);
+  void scanNewRefsRS(OopsInHeapRegionClosure* oc, int worker_i) {
+    if (UseCompressedOops) {
+      scanNewRefsRS_work<narrowOop>(oc, worker_i);
+    } else {
+      scanNewRefsRS_work<oop>(oc, worker_i);
+    }
+  }
   void updateRS(int worker_i);
   HeapRegion* calculateStartRegion(int i);
 
@@ -182,18 +194,27 @@
 
   // Record, if necessary, the fact that *p (where "p" is in region "from",
   // which is required to be non-NULL) has changed to a new non-NULL value.
-  inline void write_ref(HeapRegion* from, oop* p);
-  // The "_nv" version is the same; it exists just so that it is not virtual.
-  inline void write_ref_nv(HeapRegion* from, oop* p);
+  // [Below the virtual version calls a non-virtual protected
+  // workhorse that is templatified for narrow vs wide oop.]
+  inline void write_ref(HeapRegion* from, oop* p) {
+    write_ref_nv(from, p);
+  }
+  inline void write_ref(HeapRegion* from, narrowOop* p) {
+    write_ref_nv(from, p);
+  }
+  inline void par_write_ref(HeapRegion* from, oop* p, int tid) {
+    par_write_ref_nv(from, p, tid);
+  }
+  inline void par_write_ref(HeapRegion* from, narrowOop* p, int tid) {
+    par_write_ref_nv(from, p, tid);
+  }
 
-  inline bool self_forwarded(oop obj);
-  inline void par_write_ref(HeapRegion* from, oop* p, int tid);
+  bool self_forwarded(oop obj);
 
   void scrub(BitMap* region_bm, BitMap* card_bm);
   void scrub_par(BitMap* region_bm, BitMap* card_bm,
                  int worker_num, int claim_val);
 
-  virtual void concurrentRefinementPass(ConcurrentG1Refine* t);
   virtual void concurrentRefineOneCard(jbyte* card_ptr, int worker_i);
 
   virtual void print_summary_info();
@@ -214,3 +235,29 @@
   int n() { return _n; };
   HeapWord* start_first() { return _start_first; }
 };
+
+class UpdateRSOopClosure: public OopClosure {
+  HeapRegion* _from;
+  HRInto_G1RemSet* _rs;
+  int _worker_i;
+
+  template <class T> void do_oop_work(T* p);
+
+public:
+  UpdateRSOopClosure(HRInto_G1RemSet* rs, int worker_i = 0) :
+    _from(NULL), _rs(rs), _worker_i(worker_i) {
+    guarantee(_rs != NULL, "Requires an HRIntoG1RemSet");
+  }
+
+  void set_from(HeapRegion* from) {
+    assert(from != NULL, "from region must be non-NULL");
+    _from = from;
+  }
+
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(oop* p)       { do_oop_work(p); }
+
+  // Override: this closure is idempotent.
+  //  bool idempotent() { return true; }
+  bool apply_to_weak_ref_discovered_field() { return true; }
+};
--- a/src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -30,29 +30,8 @@
   }
 }
 
-inline void HRInto_G1RemSet::write_ref_nv(HeapRegion* from, oop* p) {
-  oop obj = *p;
-  assert(from != NULL && from->is_in_reserved(p),
-         "p is not in a from");
-  HeapRegion* to = _g1->heap_region_containing(obj);
-  if (from != to && to != NULL) {
-    if (!to->popular() && !from->is_survivor()) {
-#if G1_REM_SET_LOGGING
-      gclog_or_tty->print_cr("Adding " PTR_FORMAT " (" PTR_FORMAT ") to RS"
-                             " for region [" PTR_FORMAT ", " PTR_FORMAT ")",
-                             p, obj,
-                             to->bottom(), to->end());
-#endif
-      assert(to->rem_set() != NULL, "Need per-region 'into' remsets.");
-      if (to->rem_set()->add_reference(p)) {
-        _g1->schedule_popular_region_evac(to);
-      }
-    }
-  }
-}
-
-inline void HRInto_G1RemSet::write_ref(HeapRegion* from, oop* p) {
-  write_ref_nv(from, p);
+template <class T> inline void HRInto_G1RemSet::write_ref_nv(HeapRegion* from, T* p) {
+  par_write_ref_nv(from, p, 0);
 }
 
 inline bool HRInto_G1RemSet::self_forwarded(oop obj) {
@@ -60,8 +39,8 @@
   return result;
 }
 
-inline void HRInto_G1RemSet::par_write_ref(HeapRegion* from, oop* p, int tid) {
-  oop obj = *p;
+template <class T> inline void HRInto_G1RemSet::par_write_ref_nv(HeapRegion* from, T* p, int tid) {
+  oop obj = oopDesc::load_decode_heap_oop(p);
 #ifdef ASSERT
   // can't do because of races
   // assert(obj == NULL || obj->is_oop(), "expected an oop");
@@ -82,7 +61,18 @@
   HeapRegion* to = _g1->heap_region_containing(obj);
   // The test below could be optimized by applying a bit op to to and from.
   if (to != NULL && from != NULL && from != to) {
-    if (!to->popular() && !from->is_survivor()) {
+    // There is a tricky infinite loop if we keep pushing
+    // self forwarding pointers onto our _new_refs list.
+    // The _par_traversal_in_progress flag is true during the collection pause,
+    // false during the evacuation failure handing.
+    if (_par_traversal_in_progress &&
+        to->in_collection_set() && !self_forwarded(obj)) {
+      _new_refs[tid]->push((void*)p);
+      // Deferred updates to the Cset are either discarded (in the normal case),
+      // or processed (if an evacuation failure occurs) at the end
+      // of the collection.
+      // See HRInto_G1RemSet::cleanup_after_oops_into_collection_set_do().
+    } else {
 #if G1_REM_SET_LOGGING
       gclog_or_tty->print_cr("Adding " PTR_FORMAT " (" PTR_FORMAT ") to RS"
                              " for region [" PTR_FORMAT ", " PTR_FORMAT ")",
@@ -90,15 +80,12 @@
                              to->bottom(), to->end());
 #endif
       assert(to->rem_set() != NULL, "Need per-region 'into' remsets.");
-      if (to->rem_set()->add_reference(p, tid)) {
-        _g1->schedule_popular_region_evac(to);
-      }
-    }
-    // There is a tricky infinite loop if we keep pushing
-    // self forwarding pointers onto our _new_refs list.
-    if (_par_traversal_in_progress &&
-        to->in_collection_set() && !self_forwarded(obj)) {
-      _new_refs[tid]->push(p);
+      to->rem_set()->add_reference(p, tid);
     }
   }
 }
+
+template <class T> inline void UpdateRSOopClosure::do_oop_work(T* p) {
+  assert(_from != NULL, "from region must be non-NULL");
+  _rs->par_write_ref(_from, p, _worker_i);
+}
--- a/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -34,6 +34,7 @@
 
 
 void G1SATBCardTableModRefBS::enqueue(oop pre_val) {
+  assert(pre_val->is_oop_or_null(true), "Error");
   if (!JavaThread::satb_mark_queue_set().active()) return;
   Thread* thr = Thread::current();
   if (thr->is_Java_thread()) {
@@ -46,32 +47,31 @@
 }
 
 // When we know the current java thread:
-void
-G1SATBCardTableModRefBS::write_ref_field_pre_static(void* field,
-                                                    oop newVal,
+template <class T> void
+G1SATBCardTableModRefBS::write_ref_field_pre_static(T* field,
+                                                    oop new_val,
                                                     JavaThread* jt) {
   if (!JavaThread::satb_mark_queue_set().active()) return;
-  assert(!UseCompressedOops, "Else will need to modify this to deal with narrowOop");
-  oop preVal = *(oop*)field;
-  if (preVal != NULL) {
-    jt->satb_mark_queue().enqueue(preVal);
+  T heap_oop = oopDesc::load_heap_oop(field);
+  if (!oopDesc::is_null(heap_oop)) {
+    oop pre_val = oopDesc::decode_heap_oop_not_null(heap_oop);
+    assert(pre_val->is_oop(true /* ignore mark word */), "Error");
+    jt->satb_mark_queue().enqueue(pre_val);
   }
 }
 
-void
-G1SATBCardTableModRefBS::write_ref_array_pre(MemRegion mr) {
+template <class T> void
+G1SATBCardTableModRefBS::write_ref_array_pre_work(T* dst, int count) {
   if (!JavaThread::satb_mark_queue_set().active()) return;
-  assert(!UseCompressedOops, "Else will need to modify this to deal with narrowOop");
-  oop* elem_ptr = (oop*)mr.start();
-  while ((HeapWord*)elem_ptr < mr.end()) {
-    oop elem = *elem_ptr;
-    if (elem != NULL) enqueue(elem);
-    elem_ptr++;
+  T* elem_ptr = dst;
+  for (int i = 0; i < count; i++, elem_ptr++) {
+    T heap_oop = oopDesc::load_heap_oop(elem_ptr);
+    if (!oopDesc::is_null(heap_oop)) {
+      enqueue(oopDesc::decode_heap_oop_not_null(heap_oop));
+    }
   }
 }
 
-
-
 G1SATBCardTableLoggingModRefBS::
 G1SATBCardTableLoggingModRefBS(MemRegion whole_heap,
                                int max_covered_regions) :
--- a/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -47,31 +47,41 @@
 
   // This notes that we don't need to access any BarrierSet data
   // structures, so this can be called from a static context.
-  static void write_ref_field_pre_static(void* field, oop newVal) {
-    assert(!UseCompressedOops, "Else needs to be templatized");
-    oop preVal = *((oop*)field);
-    if (preVal != NULL) {
-      enqueue(preVal);
+  template <class T> static void write_ref_field_pre_static(T* field, oop newVal) {
+    T heap_oop = oopDesc::load_heap_oop(field);
+    if (!oopDesc::is_null(heap_oop)) {
+      enqueue(oopDesc::decode_heap_oop(heap_oop));
     }
   }
 
   // When we know the current java thread:
-  static void write_ref_field_pre_static(void* field, oop newVal,
-                                         JavaThread* jt);
+  template <class T> static void write_ref_field_pre_static(T* field, oop newVal,
+                                                            JavaThread* jt);
 
   // We export this to make it available in cases where the static
   // type of the barrier set is known.  Note that it is non-virtual.
-  inline void inline_write_ref_field_pre(void* field, oop newVal) {
+  template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {
     write_ref_field_pre_static(field, newVal);
   }
 
-  // This is the more general virtual version.
-  void write_ref_field_pre_work(void* field, oop new_val) {
+  // These are the more general virtual versions.
+  virtual void write_ref_field_pre_work(oop* field, oop new_val) {
+    inline_write_ref_field_pre(field, new_val);
+  }
+  virtual void write_ref_field_pre_work(narrowOop* field, oop new_val) {
     inline_write_ref_field_pre(field, new_val);
   }
+  virtual void write_ref_field_pre_work(void* field, oop new_val) {
+    guarantee(false, "Not needed");
+  }
 
-  virtual void write_ref_array_pre(MemRegion mr);
-
+  template <class T> void write_ref_array_pre_work(T* dst, int count);
+  virtual void write_ref_array_pre(oop* dst, int count) {
+    write_ref_array_pre_work(dst, count);
+  }
+  virtual void write_ref_array_pre(narrowOop* dst, int count) {
+    write_ref_array_pre_work(dst, count);
+  }
 };
 
 // Adds card-table logging to the post-barrier.
--- a/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,87 +28,62 @@
 
 #define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw) \
                                                                             \
-  product(intx, ParallelGCG1AllocBufferSize, 4*K,                           \
+  product(intx, G1ParallelGCAllocBufferSize, 8*K,                           \
           "Size of parallel G1 allocation buffers in to-space.")            \
                                                                             \
-  product(intx, G1TimeSliceMS, 500,                                         \
-          "Time slice for MMU specification")                               \
-                                                                            \
-  product(intx, G1MaxPauseTimeMS, 200,                                      \
-          "Max GC time per MMU time slice")                                 \
-                                                                            \
-  product(intx, G1ConfidencePerc, 50,                                       \
+  product(intx, G1ConfidencePercent, 50,                                    \
           "Confidence level for MMU/pause predictions")                     \
                                                                             \
-  product(intx, G1MarkingOverheadPerc, 0,                                   \
+  develop(intx, G1MarkingOverheadPercent, 0,                                   \
           "Overhead of concurrent marking")                                 \
                                                                             \
-  product(bool, G1AccountConcurrentOverhead, false,                         \
+  develop(bool, G1AccountConcurrentOverhead, false,                         \
           "Whether soft real-time compliance in G1 will take into account"  \
           "concurrent overhead")                                            \
                                                                             \
   product(intx, G1YoungGenSize, 0,                                          \
           "Size of the G1 young generation, 0 is the adaptive policy")      \
                                                                             \
-  product(bool, G1Gen, true,                                                \
+  develop(bool, G1Gen, true,                                                \
           "If true, it will enable the generational G1")                    \
                                                                             \
-  develop(intx, G1GCPct, 10,                                                \
+  develop(intx, G1GCPercent, 10,                                                \
           "The desired percent time spent on GC")                           \
                                                                             \
-  product(intx, G1PolicyVerbose, 0,                                         \
+  develop(intx, G1PolicyVerbose, 0,                                         \
           "The verbosity level on G1 policy decisions")                     \
                                                                             \
   develop(bool, G1UseHRIntoRS, true,                                        \
           "Determines whether the 'advanced' HR Into rem set is used.")     \
                                                                             \
-  product(bool, G1VerifyRemSet, false,                                      \
-          "If true, verify the rem set functioning at each GC")             \
-                                                                            \
-  product(bool, G1VerifyConcMark, false,                                    \
-          "If true, verify the conc marking code at full GC time")          \
-                                                                            \
   develop(intx, G1MarkingVerboseLevel, 0,                                   \
           "Level (0-4) of verboseness of the marking code")                 \
                                                                             \
-  develop(bool, G1VerifyConcMarkPrintReachable, true,                       \
+  develop(bool, G1VerifyConcMarkPrintReachable, false,                      \
           "If conc mark verification fails, print reachable objects")       \
                                                                             \
   develop(bool, G1TraceMarkStackOverflow, false,                            \
           "If true, extra debugging code for CM restart for ovflw.")        \
                                                                             \
-  product(bool, G1VerifyMarkingInEvac, false,                               \
-          "If true, verify marking info during evacuation")                 \
-                                                                            \
   develop(intx, G1PausesBtwnConcMark, -1,                                   \
           "If positive, fixed number of pauses between conc markings")      \
                                                                             \
-  product(intx, G1EfficiencyPctCausesMark, 80,                              \
-          "The cum gc efficiency since mark fall-off that causes "          \
-          "new marking")                                                    \
-                                                                            \
-  product(bool, TraceConcurrentMark, false,                                 \
-          "Trace concurrent mark")                                          \
-                                                                            \
-  product(bool, SummarizeG1ConcMark, false,                                 \
+  diagnostic(bool, G1SummarizeConcurrentMark, false,                        \
           "Summarize concurrent mark info")                                 \
                                                                             \
-  product(bool, SummarizeG1RSStats, false,                                  \
+  diagnostic(bool, G1SummarizeRSetStats, false,                             \
           "Summarize remembered set processing info")                       \
                                                                             \
-  product(bool, SummarizeG1ZFStats, false,                                  \
+  diagnostic(bool, G1SummarizeZFStats, false,                               \
           "Summarize zero-filling info")                                    \
                                                                             \
-  product(bool, TraceG1Refine, false,                                       \
+  develop(bool, G1TraceConcurrentRefinement, false,                         \
           "Trace G1 concurrent refinement")                                 \
                                                                             \
-  develop(bool, G1ConcMark, true,                                           \
-          "If true, run concurrent marking for G1")                         \
-                                                                            \
-  product(intx, G1CMStackSize, 2 * 1024 * 1024,                             \
+  product(intx, G1MarkStackSize, 2 * 1024 * 1024,                           \
           "Size of the mark stack for concurrent marking.")                 \
                                                                             \
-  product(intx, G1CMRegionStackSize, 1024 * 1024,                           \
+  product(intx, G1MarkRegionStackSize, 1024 * 1024,                         \
           "Size of the region stack for concurrent marking.")               \
                                                                             \
   develop(bool, G1ConcRefine, true,                                         \
@@ -121,7 +96,7 @@
           "Number of heap regions of alloc ahead of starting collection "   \
           "pause to start concurrent refinement (initially)")               \
                                                                             \
-  product(bool, G1SmoothConcRefine, true,                                   \
+  develop(bool, G1SmoothConcRefine, true,                                   \
           "Attempts to smooth out the overhead of concurrent refinement")   \
                                                                             \
   develop(bool, G1ConcZeroFill, true,                                       \
@@ -157,7 +132,7 @@
   develop(bool, G1SATBPrintStubs, false,                                    \
           "If true, print generated stubs for the SATB barrier")            \
                                                                             \
-  product(intx, G1ExpandByPctOfAvail, 20,                                   \
+  product(intx, G1ExpandByPercentOfAvailable, 20,                           \
           "When expanding, % of uncommitted space to claim.")               \
                                                                             \
   develop(bool, G1RSBarrierRegionFilter, true,                              \
@@ -169,51 +144,23 @@
   develop(bool, G1PrintCTFilterStats, false,                                \
           "If true, print stats on RS filtering effectiveness")             \
                                                                             \
-  develop(bool, G1RSBarrierUseQueue, true,                                  \
-          "If true, use queueing RS barrier")                               \
+  develop(bool, G1DeferredRSUpdate, true,                                   \
+          "If true, use deferred RS updates")                               \
                                                                             \
   develop(bool, G1RSLogCheckCardTable, false,                               \
           "If true, verify that no dirty cards remain after RS log "        \
           "processing.")                                                    \
                                                                             \
-  product(intx, G1MinPausesBetweenMarks, 2,                                 \
-          "Number of inefficient pauses necessary to trigger marking.")     \
-                                                                            \
-  product(intx, G1InefficientPausePct, 80,                                  \
-          "Threshold of an 'inefficient' pauses (as % of cum efficiency.")  \
-                                                                            \
-  product(intx, G1RSPopLimit, 32768,                                        \
-          "Limit that defines popularity.  Should go away! XXX")            \
-                                                                            \
   develop(bool, G1RSCountHisto, false,                                      \
           "If true, print a histogram of RS occupancies after each pause")  \
                                                                             \
-  product(intx, G1ObjPopLimit, 256,                                         \
-          "Limit that defines popularity for an object.")                   \
-                                                                            \
-  product(bool, G1TraceFileOverwrite, false,                                \
-          "Allow the trace file to be overwritten")                         \
-                                                                            \
   develop(intx, G1PrintRegionLivenessInfo, 0,                               \
           "When > 0, print the occupancies of the <n> best and worst"       \
           "regions.")                                                       \
                                                                             \
-  develop(bool, G1TracePopularity, false,                                   \
-          "When true, provide detailed tracing of popularity.")             \
-                                                                            \
-  product(bool, G1SummarizePopularity, false,                               \
-          "When true, provide end-of-run-summarization of popularity.")     \
-                                                                            \
-  product(intx, G1NumPopularRegions, 1,                                     \
-          "Number of regions reserved to hold popular objects.  "           \
-          "Should go away later.")                                          \
-                                                                            \
   develop(bool, G1PrintParCleanupStats, false,                              \
           "When true, print extra stats about parallel cleanup.")           \
                                                                             \
-  product(bool, G1DoAgeCohortChecks, false,                                 \
-          "When true, check well-formedness of age cohort structures.")     \
-                                                                            \
   develop(bool, G1DisablePreBarrier, false,                                 \
           "Disable generation of pre-barrier (i.e., marking barrier)   ")   \
                                                                             \
@@ -227,17 +174,17 @@
   develop(intx, G1ConcRSLogCacheSize, 10,                                   \
           "Log base 2 of the length of conc RS hot-card cache.")            \
                                                                             \
-  product(bool, G1ConcRSCountTraversals, false,                             \
+  develop(bool, G1ConcRSCountTraversals, false,                             \
           "If true, gather data about the number of times CR traverses "    \
           "cards ")                                                         \
                                                                             \
-  product(intx, G1ConcRSHotCardLimit, 4,                                    \
+  develop(intx, G1ConcRSHotCardLimit, 4,                                    \
           "The threshold that defines (>=) a hot card.")                    \
                                                                             \
   develop(bool, G1PrintOopAppls, false,                                     \
           "When true, print applications of closures to external locs.")    \
                                                                             \
-  product(intx, G1LogRSRegionEntries, 7,                                    \
+  develop(intx, G1LogRSRegionEntries, 7,                                    \
           "Log_2 of max number of regions for which we keep bitmaps.")      \
                                                                             \
   develop(bool, G1RecordHRRSOops, false,                                    \
@@ -267,11 +214,11 @@
           "It determines whether the system will calculate an optimum "     \
           "scan-only set.")                                                 \
                                                                             \
-  product(intx, G1MinReservePerc, 10,                                       \
+  product(intx, G1MinReservePercent, 10,                                    \
           "It determines the minimum reserve we should have in the heap "   \
           "to minimize the probability of promotion failure.")              \
                                                                             \
-  product(bool, G1TraceRegions, false,                                      \
+  diagnostic(bool, G1PrintRegions, false,                                   \
           "If set G1 will print information on which regions are being "    \
           "allocated and which are reclaimed.")                             \
                                                                             \
@@ -281,7 +228,29 @@
   develop(bool, G1HRRSFlushLogBuffersOnVerify, false,                       \
           "Forces flushing of log buffers before verification.")            \
                                                                             \
-  product(intx, G1MaxSurvivorRegions, 0,                                    \
-          "The maximum number of survivor regions")
+  product(bool, G1UseSurvivorSpaces, true,                                  \
+          "When true, use survivor space.")                                 \
+                                                                            \
+  develop(bool, G1FixedTenuringThreshold, false,                            \
+          "When set, G1 will not adjust the tenuring threshold")            \
+                                                                            \
+  develop(bool, G1FixedEdenSize, false,                                     \
+          "When set, G1 will not allocate unused survivor space regions")   \
+                                                                            \
+  develop(uintx, G1FixedSurvivorSpaceSize, 0,                               \
+          "If non-0 is the size of the G1 survivor space, "                 \
+          "otherwise SurvivorRatio is used to determine the size")          \
+                                                                            \
+  experimental(bool, G1ParallelRSetUpdatingEnabled, false,                  \
+          "Enables the parallelization of remembered set updating "         \
+          "during evacuation pauses")                                       \
+                                                                            \
+  experimental(bool, G1ParallelRSetScanningEnabled, false,                  \
+          "Enables the parallelization of remembered set scanning "         \
+          "during evacuation pauses")                                       \
+                                                                            \
+  product(uintx, G1ParallelRSetThreads, 0,                                  \
+          "If non-0 is the number of parallel rem set update threads, "     \
+          "otherwise the value is determined ergonomically.")
 
 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
--- a/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,17 @@
   G1BarrierNone, G1BarrierRS, G1BarrierEvac
 };
 
-template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_forwardee>
+template<bool do_gen_barrier, G1Barrier barrier,
+         bool do_mark_forwardee, bool skip_cset_test>
 class G1ParCopyClosure;
 class G1ParScanClosure;
 
-typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacClosure;
+typedef G1ParCopyClosure<false, G1BarrierEvac, false, true> G1ParScanHeapEvacClosure;
 
 class FilterIntoCSClosure;
 class FilterOutOfRegionClosure;
 class FilterInHeapRegionAndIntoCSClosure;
 class FilterAndMarkInHeapRegionAndIntoCSClosure;
-class G1ScanAndBalanceClosure;
 
 #ifdef FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES
 #error "FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES already defined."
@@ -54,8 +54,7 @@
       f(FilterIntoCSClosure,_nv)                        \
       f(FilterOutOfRegionClosure,_nv)                   \
       f(FilterInHeapRegionAndIntoCSClosure,_nv)         \
-      f(FilterAndMarkInHeapRegionAndIntoCSClosure,_nv)  \
-      f(G1ScanAndBalanceClosure,_nv)
+      f(FilterAndMarkInHeapRegionAndIntoCSClosure,_nv)
 
 #ifdef FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES
 #error "FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES already defined."
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -40,15 +40,19 @@
 {}
 
 class VerifyLiveClosure: public OopClosure {
+private:
   G1CollectedHeap* _g1h;
   CardTableModRefBS* _bs;
   oop _containing_obj;
   bool _failures;
   int _n_failures;
+  bool _use_prev_marking;
 public:
-  VerifyLiveClosure(G1CollectedHeap* g1h) :
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  VerifyLiveClosure(G1CollectedHeap* g1h, bool use_prev_marking) :
     _g1h(g1h), _bs(NULL), _containing_obj(NULL),
-    _failures(false), _n_failures(0)
+    _failures(false), _n_failures(0), _use_prev_marking(use_prev_marking)
   {
     BarrierSet* bs = _g1h->barrier_set();
     if (bs->is_a(BarrierSet::CardTableModRef))
@@ -62,17 +66,19 @@
   bool failures() { return _failures; }
   int n_failures() { return _n_failures; }
 
-  virtual void do_oop(narrowOop* p) {
-    guarantee(false, "NYI");
-  }
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(      oop* p) { do_oop_work(p); }
 
-  void do_oop(oop* p) {
+  template <class T> void do_oop_work(T* p) {
     assert(_containing_obj != NULL, "Precondition");
-    assert(!_g1h->is_obj_dead(_containing_obj), "Precondition");
-    oop obj = *p;
-    if (obj != NULL) {
+    assert(!_g1h->is_obj_dead_cond(_containing_obj, _use_prev_marking),
+           "Precondition");
+    T heap_oop = oopDesc::load_heap_oop(p);
+    if (!oopDesc::is_null(heap_oop)) {
+      oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
       bool failed = false;
-      if (!_g1h->is_in_closed_subset(obj) || _g1h->is_obj_dead(obj)) {
+      if (!_g1h->is_in_closed_subset(obj) ||
+          _g1h->is_obj_dead_cond(obj, _use_prev_marking)) {
         if (!_failures) {
           gclog_or_tty->print_cr("");
           gclog_or_tty->print_cr("----------");
@@ -100,11 +106,10 @@
       }
 
       if (!_g1h->full_collection()) {
-        HeapRegion* from = _g1h->heap_region_containing(p);
-        HeapRegion* to   = _g1h->heap_region_containing(*p);
+        HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p);
+        HeapRegion* to   = _g1h->heap_region_containing(obj);
         if (from != NULL && to != NULL &&
             from != to &&
-            !to->popular() &&
             !to->isHumongous()) {
           jbyte cv_obj = *_bs->byte_for_const(_containing_obj);
           jbyte cv_field = *_bs->byte_for_const(p);
@@ -161,12 +166,6 @@
     if (!g1h->is_obj_dead(cur_oop, hr)) {
       // Bottom lies entirely below top, so we can call the
       // non-memRegion version of oop_iterate below.
-#ifndef PRODUCT
-      if (G1VerifyMarkingInEvac) {
-        VerifyLiveClosure vl_cl(g1h);
-        cur_oop->oop_iterate(&vl_cl);
-      }
-#endif
       cur_oop->oop_iterate(cl);
     }
     cur = next_obj;
@@ -198,12 +197,6 @@
   // or it was allocated after marking finished, then we add it. Otherwise
   // we can safely ignore the object.
   if (!g1h->is_obj_dead(oop(bottom), _hr)) {
-#ifndef PRODUCT
-    if (G1VerifyMarkingInEvac) {
-      VerifyLiveClosure vl_cl(g1h);
-      oop(bottom)->oop_iterate(&vl_cl, mr);
-    }
-#endif
     oop_size = oop(bottom)->oop_iterate(cl2, mr);
   } else {
     oop_size = oop(bottom)->size();
@@ -233,12 +226,6 @@
 
     // Last object. Need to do dead-obj filtering here too.
     if (!g1h->is_obj_dead(oop(bottom), _hr)) {
-#ifndef PRODUCT
-      if (G1VerifyMarkingInEvac) {
-        VerifyLiveClosure vl_cl(g1h);
-        oop(bottom)->oop_iterate(&vl_cl, mr);
-      }
-#endif
       oop(bottom)->oop_iterate(cl2, mr);
     }
   }
@@ -285,8 +272,6 @@
   }
   zero_marked_bytes();
   set_sort_index(-1);
-  if ((uintptr_t)bottom() >= (uintptr_t)g1h->popular_object_boundary())
-    set_popular(false);
 
   _offsets.resize(HeapRegion::GrainWords);
   init_top_at_mark_start();
@@ -371,8 +356,8 @@
     _next_in_special_set(NULL), _orig_end(NULL),
     _claimed(InitialClaimValue), _evacuation_failed(false),
     _prev_marked_bytes(0), _next_marked_bytes(0), _sort_index(-1),
-    _popularity(NotPopular),
     _young_type(NotYoung), _next_young_region(NULL),
+    _next_dirty_cards_region(NULL),
     _young_index_in_cset(-1), _surv_rate_group(NULL), _age_index(-1),
     _rem_set(NULL), _zfs(NotZeroFilled)
 {
@@ -549,13 +534,13 @@
   // Otherwise, find the obj that extends onto mr.start().
 
   assert(cur <= mr.start()
-         && (oop(cur)->klass() == NULL ||
+         && (oop(cur)->klass_or_null() == NULL ||
              cur + oop(cur)->size() > mr.start()),
          "postcondition of block_start");
   oop obj;
   while (cur < mr.end()) {
     obj = oop(cur);
-    if (obj->klass() == NULL) {
+    if (obj->klass_or_null() == NULL) {
       // Ran into an unparseable point.
       return cur;
     } else if (!g1h->is_obj_dead(obj)) {
@@ -592,7 +577,7 @@
   assert(cur <= mr.start(), "Postcondition");
 
   while (cur <= mr.start()) {
-    if (oop(cur)->klass() == NULL) {
+    if (oop(cur)->klass_or_null() == NULL) {
       // Ran into an unparseable point.
       return cur;
     }
@@ -606,7 +591,7 @@
   obj = oop(cur);
   // If we finish this loop...
   assert(cur <= mr.start()
-         && obj->klass() != NULL
+         && obj->klass_or_null() != NULL
          && cur + obj->size() > mr.start(),
          "Loop postcondition");
   if (!g1h->is_obj_dead(obj)) {
@@ -616,7 +601,7 @@
   HeapWord* next;
   while (cur < mr.end()) {
     obj = oop(cur);
-    if (obj->klass() == NULL) {
+    if (obj->klass_or_null() == NULL) {
       // Ran into an unparseable point.
       return cur;
     };
@@ -668,19 +653,23 @@
   G1OffsetTableContigSpace::print_on(st);
 }
 
+void HeapRegion::verify(bool allow_dirty) const {
+  verify(allow_dirty, /* use_prev_marking */ true);
+}
+
 #define OBJ_SAMPLE_INTERVAL 0
 #define BLOCK_SAMPLE_INTERVAL 100
 
 // This really ought to be commoned up into OffsetTableContigSpace somehow.
 // We would need a mechanism to make that code skip dead objects.
 
-void HeapRegion::verify(bool allow_dirty) const {
+void HeapRegion::verify(bool allow_dirty, bool use_prev_marking) const {
   G1CollectedHeap* g1 = G1CollectedHeap::heap();
   HeapWord* p = bottom();
   HeapWord* prev_p = NULL;
   int objs = 0;
   int blocks = 0;
-  VerifyLiveClosure vl_cl(g1);
+  VerifyLiveClosure vl_cl(g1, use_prev_marking);
   while (p < top()) {
     size_t size = oop(p)->size();
     if (blocks == BLOCK_SAMPLE_INTERVAL) {
@@ -692,7 +681,7 @@
     }
     if (objs == OBJ_SAMPLE_INTERVAL) {
       oop obj = oop(p);
-      if (!g1->is_obj_dead(obj, this)) {
+      if (!g1->is_obj_dead_cond(obj, this, use_prev_marking)) {
         obj->verify();
         vl_cl.set_containing_obj(obj);
         obj->oop_iterate(&vl_cl);
@@ -714,15 +703,15 @@
   }
   if (vl_cl.failures()) {
     gclog_or_tty->print_cr("Heap:");
-    G1CollectedHeap::heap()->print();
+    G1CollectedHeap::heap()->print_on(gclog_or_tty, true /* extended */);
     gclog_or_tty->print_cr("");
   }
-  if (G1VerifyConcMark &&
+  if (VerifyDuringGC &&
       G1VerifyConcMarkPrintReachable &&
       vl_cl.failures()) {
     g1->concurrent_mark()->print_prev_bitmap_reachable();
   }
-  guarantee(!vl_cl.failures(), "should not have had any failures");
+  guarantee(!vl_cl.failures(), "region verification failed");
   guarantee(p == top(), "end of last object must match end of space");
 }
 
@@ -792,8 +781,13 @@
     // will pick up the right saved_mark_word() as the high water mark
     // of the region. Either way, the behaviour will be correct.
     ContiguousSpace::set_saved_mark();
+    OrderAccess::storestore();
     _gc_time_stamp = curr_gc_time_stamp;
-    OrderAccess::fence();
+    // The following fence is to force a flush of the writes above, but
+    // is strictly not needed because when an allocating worker thread
+    // calls set_saved_mark() it does so under the ParGCRareEvent_lock;
+    // when the lock is released, the write will be flushed.
+    // OrderAccess::fence();
   }
 }
 
--- a/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -227,6 +227,9 @@
   // next region in the young "generation" region set
   HeapRegion* _next_young_region;
 
+  // Next region whose cards need cleaning
+  HeapRegion* _next_dirty_cards_region;
+
   // For parallel heapRegion traversal.
   jint _claimed;
 
@@ -238,15 +241,6 @@
   // See "sort_index" method.  -1 means is not in the array.
   int _sort_index;
 
-  // Means it has (or at least had) a very large RS, and should not be
-  // considered for membership in a collection set.
-  enum PopularityState {
-    NotPopular,
-    PopularPending,
-    Popular
-  };
-  PopularityState _popularity;
-
   // <PREDICTION>
   double _gc_efficiency;
   // </PREDICTION>
@@ -318,7 +312,8 @@
     FinalCountClaimValue  = 1,
     NoteEndClaimValue     = 2,
     ScrubRemSetClaimValue = 3,
-    ParVerifyClaimValue   = 4
+    ParVerifyClaimValue   = 4,
+    RebuildRSClaimValue   = 5
   };
 
   // Concurrent refinement requires contiguous heap regions (in which TLABs
@@ -432,10 +427,6 @@
     _next_in_special_set = r;
   }
 
-  bool is_reserved() {
-    return popular();
-  }
-
   bool is_on_free_list() {
     return _is_on_free_list;
   }
@@ -480,6 +471,11 @@
     _next_young_region = hr;
   }
 
+  HeapRegion* get_next_dirty_cards_region() const { return _next_dirty_cards_region; }
+  HeapRegion** next_dirty_cards_region_addr() { return &_next_dirty_cards_region; }
+  void set_next_dirty_cards_region(HeapRegion* hr) { _next_dirty_cards_region = hr; }
+  bool is_on_dirty_cards_region_list() const { return get_next_dirty_cards_region() != NULL; }
+
   // Allows logical separation between objects allocated before and after.
   void save_marks();
 
@@ -566,7 +562,11 @@
   void note_end_of_copying() {
     assert(top() >= _next_top_at_mark_start,
            "Increase only");
-    _next_top_at_mark_start = top();
+    // Survivor regions will be scanned on the start of concurrent
+    // marking.
+    if (!is_survivor()) {
+      _next_top_at_mark_start = top();
+    }
   }
 
   // Returns "false" iff no object in the region was allocated when the
@@ -604,23 +604,6 @@
     init_top_at_mark_start();
   }
 
-  bool popular() { return _popularity == Popular; }
-  void set_popular(bool b) {
-    if (b) {
-      _popularity = Popular;
-    } else {
-      _popularity = NotPopular;
-    }
-  }
-  bool popular_pending() { return _popularity == PopularPending; }
-  void set_popular_pending(bool b) {
-    if (b) {
-      _popularity = PopularPending;
-    } else {
-      _popularity = NotPopular;
-    }
-  }
-
   // <PREDICTION>
   void calc_gc_efficiency(void);
   double gc_efficiency() { return _gc_efficiency;}
@@ -799,7 +782,16 @@
   void print() const;
   void print_on(outputStream* st) const;
 
-  // Override
+  // use_prev_marking == true  -> use "prev" marking information,
+  // use_prev_marking == false -> use "next" marking information
+  // NOTE: Only the "prev" marking information is guaranteed to be
+  // consistent most of the time, so most calls to this should use
+  // use_prev_marking == true. Currently, there is only one case where
+  // this is called with use_prev_marking == false, which is to verify
+  // the "next" marking information at the end of remark.
+  void verify(bool allow_dirty, bool use_prev_marking) const;
+
+  // Override; it uses the "prev" marking information
   virtual void verify(bool allow_dirty) const;
 
 #ifdef DEBUG
@@ -829,7 +821,7 @@
 
 // A linked lists of heap regions.  It leaves the "next" field
 // unspecified; that's up to subtypes.
-class RegionList {
+class RegionList VALUE_OBJ_CLASS_SPEC {
 protected:
   virtual HeapRegion* get_next(HeapRegion* chr) = 0;
   virtual void set_next(HeapRegion* chr,
--- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,9 +65,11 @@
   // We need access in order to union things into the base table.
   BitMap* bm() { return &_bm; }
 
+#if PRT_COUNT_OCCUPIED
   void recount_occupied() {
     _occupied = (jint) bm()->count_one_bits();
   }
+#endif
 
   PerRegionTable(HeapRegion* hr) :
     _hr(hr),
@@ -107,7 +109,7 @@
     return new PerRegionTable(hr);
   }
 
-  void add_card_work(short from_card, bool par) {
+  void add_card_work(CardIdx_t from_card, bool par) {
     if (!_bm.at(from_card)) {
       if (par) {
         if (_bm.par_at_put(from_card, 1)) {
@@ -124,7 +126,7 @@
     }
   }
 
-  void add_reference_work(oop* from, bool par) {
+  void add_reference_work(OopOrNarrowOopStar from, bool par) {
     // Must make this robust in case "from" is not in "_hr", because of
     // concurrency.
 
@@ -139,11 +141,11 @@
     // and adding a bit to the new table is never incorrect.
     if (loc_hr->is_in_reserved(from)) {
       size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom());
-      size_t from_card =
-        hw_offset >>
-        (CardTableModRefBS::card_shift - LogHeapWordSize);
+      CardIdx_t from_card = (CardIdx_t)
+          hw_offset >> (CardTableModRefBS::card_shift - LogHeapWordSize);
 
-      add_card_work((short) from_card, par);
+      assert(0 <= from_card && from_card < CardsPerRegion, "Must be in range.");
+      add_card_work(from_card, par);
     }
   }
 
@@ -171,11 +173,11 @@
     _bm.clear();
   }
 
-  void add_reference(oop* from) {
+  void add_reference(OopOrNarrowOopStar from) {
     add_reference_work(from, /*parallel*/ true);
   }
 
-  void seq_add_reference(oop* from) {
+  void seq_add_reference(OopOrNarrowOopStar from) {
     add_reference_work(from, /*parallel*/ false);
   }
 
@@ -188,11 +190,11 @@
 #endif
   }
 
-  void add_card(short from_card_index) {
+  void add_card(CardIdx_t from_card_index) {
     add_card_work(from_card_index, /*parallel*/ true);
   }
 
-  void seq_add_card(short from_card_index) {
+  void seq_add_card(CardIdx_t from_card_index) {
     add_card_work(from_card_index, /*parallel*/ false);
   }
 
@@ -218,7 +220,7 @@
   }
 
   // Requires "from" to be in "hr()".
-  bool contains_reference(oop* from) const {
+  bool contains_reference(OopOrNarrowOopStar from) const {
     assert(hr()->is_in_reserved(from), "Precondition.");
     size_t card_ind = pointer_delta(from, hr()->bottom(),
                                     CardTableModRefBS::card_size);
@@ -392,7 +394,7 @@
   void set_next(PosParPRT* nxt) { _next = nxt; }
   PosParPRT** next_addr() { return &_next; }
 
-  void add_reference(oop* from, int tid) {
+  void add_reference(OopOrNarrowOopStar from, int tid) {
     // Expand if necessary.
     PerRegionTable** pt = par_tables();
     if (par_tables() == NULL && tid > 0 && hr()->is_gc_alloc_region()) {
@@ -445,7 +447,7 @@
     return res;
   }
 
-  bool contains_reference(oop* from) const {
+  bool contains_reference(OopOrNarrowOopStar from) const {
     if (PerRegionTable::contains_reference(from)) return true;
     if (_par_tables != NULL) {
       for (int i = 0; i < HeapRegionRemSet::num_par_rem_sets()-1; i++) {
@@ -506,7 +508,7 @@
   typedef PosParPRT* PosParPRTPtr;
   if (_max_fine_entries == 0) {
     assert(_mod_max_fine_entries_mask == 0, "Both or none.");
-    _max_fine_entries = (1 << G1LogRSRegionEntries);
+    _max_fine_entries = (size_t)(1 << G1LogRSRegionEntries);
     _mod_max_fine_entries_mask = _max_fine_entries - 1;
 #if SAMPLE_FOR_EVICTION
     assert(_fine_eviction_sample_size == 0
@@ -562,12 +564,15 @@
 }
 #endif
 
-void OtherRegionsTable::add_reference(oop* from, int tid) {
+void OtherRegionsTable::add_reference(OopOrNarrowOopStar from, int tid) {
   size_t cur_hrs_ind = hr()->hrs_index();
 
 #if HRRS_VERBOSE
   gclog_or_tty->print_cr("ORT::add_reference_work(" PTR_FORMAT "->" PTR_FORMAT ").",
-                                                  from, *from);
+                                                  from,
+                                                  UseCompressedOops
+                                                  ? oopDesc::load_decode_heap_oop((narrowOop*)from)
+                                                  : oopDesc::load_decode_heap_oop((oop*)from));
 #endif
 
   int from_card = (int)(uintptr_t(from) >> CardTableModRefBS::card_shift);
@@ -602,7 +607,7 @@
 
   // Note that this may be a continued H region.
   HeapRegion* from_hr = _g1h->heap_region_containing_raw(from);
-  size_t from_hrs_ind = (size_t)from_hr->hrs_index();
+  RegionIdx_t from_hrs_ind = (RegionIdx_t) from_hr->hrs_index();
 
   // If the region is already coarsened, return.
   if (_coarse_map.at(from_hrs_ind)) {
@@ -625,11 +630,11 @@
       uintptr_t from_hr_bot_card_index =
         uintptr_t(from_hr->bottom())
           >> CardTableModRefBS::card_shift;
-      int card_index = from_card - from_hr_bot_card_index;
+      CardIdx_t card_index = from_card - from_hr_bot_card_index;
       assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion,
              "Must be in range.");
       if (G1HRRSUseSparseTable &&
-          _sparse_table.add_card((short) from_hrs_ind, card_index)) {
+          _sparse_table.add_card(from_hrs_ind, card_index)) {
         if (G1RecordHRRSOops) {
           HeapRegionRemSet::record(hr(), from);
 #if HRRS_VERBOSE
@@ -654,9 +659,9 @@
       }
 
       // Otherwise, transfer from sparse to fine-grain.
-      short cards[SparsePRTEntry::CardsPerEntry];
+      CardIdx_t cards[SparsePRTEntry::CardsPerEntry];
       if (G1HRRSUseSparseTable) {
-        bool res = _sparse_table.get_cards((short) from_hrs_ind, &cards[0]);
+        bool res = _sparse_table.get_cards(from_hrs_ind, &cards[0]);
         assert(res, "There should have been an entry");
       }
 
@@ -677,13 +682,13 @@
       // Add in the cards from the sparse table.
       if (G1HRRSUseSparseTable) {
         for (int i = 0; i < SparsePRTEntry::CardsPerEntry; i++) {
-          short c = cards[i];
+          CardIdx_t c = cards[i];
           if (c != SparsePRTEntry::NullEntry) {
             prt->add_card(c);
           }
         }
         // Now we can delete the sparse entry.
-        bool res = _sparse_table.delete_entry((short) from_hrs_ind);
+        bool res = _sparse_table.delete_entry(from_hrs_ind);
         assert(res, "It should have been there.");
       }
     }
@@ -1019,16 +1024,16 @@
   }
 }
 
-bool OtherRegionsTable::contains_reference(oop* from) const {
+bool OtherRegionsTable::contains_reference(OopOrNarrowOopStar from) const {
   // Cast away const in this case.
   MutexLockerEx x((Mutex*)&_m, Mutex::_no_safepoint_check_flag);
   return contains_reference_locked(from);
 }
 
-bool OtherRegionsTable::contains_reference_locked(oop* from) const {
+bool OtherRegionsTable::contains_reference_locked(OopOrNarrowOopStar from) const {
   HeapRegion* hr = _g1h->heap_region_containing_raw(from);
   if (hr == NULL) return false;
-  size_t hr_ind = hr->hrs_index();
+  RegionIdx_t hr_ind = (RegionIdx_t) hr->hrs_index();
   // Is this region in the coarse map?
   if (_coarse_map.at(hr_ind)) return true;
 
@@ -1043,25 +1048,19 @@
     uintptr_t hr_bot_card_index =
       uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift;
     assert(from_card >= hr_bot_card_index, "Inv");
-    int card_index = from_card - hr_bot_card_index;
-    return _sparse_table.contains_card((short)hr_ind, card_index);
+    CardIdx_t card_index = from_card - hr_bot_card_index;
+    assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion, "Must be in range.");
+    return _sparse_table.contains_card(hr_ind, card_index);
   }
 
 
 }
 
-
-bool HeapRegionRemSet::_par_traversal = false;
-
-void HeapRegionRemSet::set_par_traversal(bool b) {
-  assert(_par_traversal != b, "Proper alternation...");
-  _par_traversal = b;
-}
-
+// Determines how many threads can add records to an rset in parallel.
+// This can be done by either mutator threads together with the
+// concurrent refinement threads or GC threads.
 int HeapRegionRemSet::num_par_rem_sets() {
-  // We always have at least two, so that a mutator thread can claim an
-  // id and add to a rem set.
-  return (int) MAX2(ParallelGCThreads, (size_t)2);
+  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
 }
 
 HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
@@ -1144,7 +1143,9 @@
   size_t i = _outgoing_region_map.get_next_one_offset(0);
   while (i < _outgoing_region_map.size()) {
     HeapRegion* to_region = g1h->region_at(i);
-    to_region->rem_set()->clear_incoming_entry(hr());
+    if (!to_region->in_collection_set()) {
+      to_region->rem_set()->clear_incoming_entry(hr());
+    }
     i = _outgoing_region_map.get_next_one_offset(i+1);
   }
 }
@@ -1290,24 +1291,24 @@
 
 
 
-oop**        HeapRegionRemSet::_recorded_oops = NULL;
-HeapWord**   HeapRegionRemSet::_recorded_cards = NULL;
-HeapRegion** HeapRegionRemSet::_recorded_regions = NULL;
-int          HeapRegionRemSet::_n_recorded = 0;
+OopOrNarrowOopStar* HeapRegionRemSet::_recorded_oops = NULL;
+HeapWord**          HeapRegionRemSet::_recorded_cards = NULL;
+HeapRegion**        HeapRegionRemSet::_recorded_regions = NULL;
+int                 HeapRegionRemSet::_n_recorded = 0;
 
 HeapRegionRemSet::Event* HeapRegionRemSet::_recorded_events = NULL;
 int*         HeapRegionRemSet::_recorded_event_index = NULL;
 int          HeapRegionRemSet::_n_recorded_events = 0;
 
-void HeapRegionRemSet::record(HeapRegion* hr, oop* f) {
+void HeapRegionRemSet::record(HeapRegion* hr, OopOrNarrowOopStar f) {
   if (_recorded_oops == NULL) {
     assert(_n_recorded == 0
            && _recorded_cards == NULL
            && _recorded_regions == NULL,
            "Inv");
-    _recorded_oops = NEW_C_HEAP_ARRAY(oop*, MaxRecorded);
-    _recorded_cards = NEW_C_HEAP_ARRAY(HeapWord*, MaxRecorded);
-    _recorded_regions = NEW_C_HEAP_ARRAY(HeapRegion*, MaxRecorded);
+    _recorded_oops    = NEW_C_HEAP_ARRAY(OopOrNarrowOopStar, MaxRecorded);
+    _recorded_cards   = NEW_C_HEAP_ARRAY(HeapWord*,          MaxRecorded);
+    _recorded_regions = NEW_C_HEAP_ARRAY(HeapRegion*,        MaxRecorded);
   }
   if (_n_recorded == MaxRecorded) {
     gclog_or_tty->print_cr("Filled up 'recorded' (%d).", MaxRecorded);
@@ -1410,21 +1411,21 @@
   HeapRegionRemSet* hrrs = hr0->rem_set();
 
   // Make three references from region 0x101...
-  hrrs->add_reference((oop*)hr1_start);
-  hrrs->add_reference((oop*)hr1_mid);
-  hrrs->add_reference((oop*)hr1_last);
+  hrrs->add_reference((OopOrNarrowOopStar)hr1_start);
+  hrrs->add_reference((OopOrNarrowOopStar)hr1_mid);
+  hrrs->add_reference((OopOrNarrowOopStar)hr1_last);
 
-  hrrs->add_reference((oop*)hr2_start);
-  hrrs->add_reference((oop*)hr2_mid);
-  hrrs->add_reference((oop*)hr2_last);
+  hrrs->add_reference((OopOrNarrowOopStar)hr2_start);
+  hrrs->add_reference((OopOrNarrowOopStar)hr2_mid);
+  hrrs->add_reference((OopOrNarrowOopStar)hr2_last);
 
-  hrrs->add_reference((oop*)hr3_start);
-  hrrs->add_reference((oop*)hr3_mid);
-  hrrs->add_reference((oop*)hr3_last);
+  hrrs->add_reference((OopOrNarrowOopStar)hr3_start);
+  hrrs->add_reference((OopOrNarrowOopStar)hr3_mid);
+  hrrs->add_reference((OopOrNarrowOopStar)hr3_last);
 
   // Now cause a coarsening.
-  hrrs->add_reference((oop*)hr4->bottom());
-  hrrs->add_reference((oop*)hr5->bottom());
+  hrrs->add_reference((OopOrNarrowOopStar)hr4->bottom());
+  hrrs->add_reference((OopOrNarrowOopStar)hr5->bottom());
 
   // Now, does iteration yield these three?
   HeapRegionRemSetIterator iter;
--- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +58,7 @@
 //      is represented.  If a deleted PRT is re-used, a thread adding a bit,
 //      thinking the PRT is for a different region, does no harm.
 
-class OtherRegionsTable: public CHeapObj {
+class OtherRegionsTable VALUE_OBJ_CLASS_SPEC {
   friend class HeapRegionRemSetIterator;
 
   G1CollectedHeap* _g1h;
@@ -116,9 +116,9 @@
 
   // For now.  Could "expand" some tables in the future, so that this made
   // sense.
-  void add_reference(oop* from, int tid);
+  void add_reference(OopOrNarrowOopStar from, int tid);
 
-  void add_reference(oop* from) {
+  void add_reference(OopOrNarrowOopStar from) {
     return add_reference(from, 0);
   }
 
@@ -140,8 +140,8 @@
   static size_t static_mem_size();
   static size_t fl_mem_size();
 
-  bool contains_reference(oop* from) const;
-  bool contains_reference_locked(oop* from) const;
+  bool contains_reference(OopOrNarrowOopStar from) const;
+  bool contains_reference_locked(OopOrNarrowOopStar from) const;
 
   void clear();
 
@@ -177,8 +177,6 @@
   G1BlockOffsetSharedArray* _bosa;
   G1BlockOffsetSharedArray* bosa() const { return _bosa; }
 
-  static bool _par_traversal;
-
   OtherRegionsTable _other_regions;
 
   // One set bit for every region that has an entry for this one.
@@ -188,42 +186,16 @@
   // the _outgoing_region_map.
   void clear_outgoing_entries();
 
-#if MAYBE
-  // Audit the given card index.
-  void audit_card(size_t card_num, HeapRegion* hr, u2* rc_arr,
-                  HeapRegionRemSet* empty_cards, size_t* one_obj_cards);
-
-  // Assumes that "audit_stage1" has been called for "hr", to set up
-  // "shadow" and "new_rs" appropriately.  Identifies individual popular
-  // objects; returns "true" if any are found.
-  bool audit_find_pop(HeapRegion* hr, u2* rc_arr);
-
-  // Assumes that "audit_stage1" has been called for "hr", to set up
-  // "shadow" and "new_rs" appropriately.  Identifies individual popular
-  // objects, and determines the number of entries in "new_rs" if any such
-  // popular objects are ignored.  If this is sufficiently small, returns
-  // "false" to indicate that a constraint should not be introduced.
-  // Otherwise, returns "true" to indicate that we should go ahead with
-  // adding the constraint.
-  bool audit_stag(HeapRegion* hr, u2* rc_arr);
-
-
-  u2* alloc_rc_array();
-
-  SeqHeapRegionRemSet* audit_post(u2* rc_arr, size_t multi_obj_crds,
-                                  SeqHeapRegionRemSet* empty_cards);
-#endif
-
   enum ParIterState { Unclaimed, Claimed, Complete };
   ParIterState _iter_state;
 
   // Unused unless G1RecordHRRSOops is true.
 
   static const int MaxRecorded = 1000000;
-  static oop**        _recorded_oops;
-  static HeapWord**   _recorded_cards;
-  static HeapRegion** _recorded_regions;
-  static int          _n_recorded;
+  static OopOrNarrowOopStar* _recorded_oops;
+  static HeapWord**          _recorded_cards;
+  static HeapRegion**        _recorded_regions;
+  static int                 _n_recorded;
 
   static const int MaxRecordedEvents = 1000;
   static Event*       _recorded_events;
@@ -237,8 +209,6 @@
                    HeapRegion* hr);
 
   static int num_par_rem_sets();
-  static bool par_traversal() { return _par_traversal; }
-  static void set_par_traversal(bool b);
 
   HeapRegion* hr() const {
     return _other_regions.hr();
@@ -261,16 +231,14 @@
 
   /* Used in the sequential case.  Returns "true" iff this addition causes
      the size limit to be reached. */
-  bool add_reference(oop* from) {
+  void add_reference(OopOrNarrowOopStar from) {
     _other_regions.add_reference(from);
-    return false;
   }
 
   /* Used in the parallel case.  Returns "true" iff this addition causes
      the size limit to be reached. */
-  bool add_reference(oop* from, int tid) {
+  void add_reference(OopOrNarrowOopStar from, int tid) {
     _other_regions.add_reference(from, tid);
-    return false;
   }
 
   // Records the fact that the current region contains an outgoing
@@ -333,25 +301,11 @@
     return OtherRegionsTable::fl_mem_size();
   }
 
-  bool contains_reference(oop* from) const {
+  bool contains_reference(OopOrNarrowOopStar from) const {
     return _other_regions.contains_reference(from);
   }
   void print() const;
 
-#if MAYBE
-  // We are about to introduce a constraint, requiring the collection time
-  // of the region owning this RS to be <= "hr", and forgetting pointers
-  // from the owning region to "hr."  Before doing so, examines this rem
-  // set for pointers to "hr", possibly identifying some popular objects.,
-  // and possibly finding some cards to no longer contain pointers to "hr",
-  //
-  // These steps may prevent the the constraint from being necessary; in
-  // which case returns a set of cards now thought to contain no pointers
-  // into HR.  In the normal (I assume) case, returns NULL, indicating that
-  // we should go ahead and add the constraint.
-  virtual SeqHeapRegionRemSet* audit(HeapRegion* hr) = 0;
-#endif
-
   // Called during a stop-world phase to perform any deferred cleanups.
   // The second version may be called by parallel threads after then finish
   // collection work.
@@ -375,7 +329,7 @@
   }
 #endif
 
-  static void record(HeapRegion* hr, oop* f);
+  static void record(HeapRegion* hr, OopOrNarrowOopStar f);
   static void print_recorded();
   static void record_event(Event evnt);
 
--- a/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 @@
     //       [first, cur)
     HeapRegion* curhr = _regions.at(cur);
     if (curhr->is_empty()
-        && !curhr->is_reserved()
         && (first == cur
             || (_regions.at(cur-1)->end() ==
                 curhr->bottom()))) {
@@ -121,35 +120,27 @@
   }
 }
 
-void HeapRegionSeq::print_empty_runs(bool reserved_are_empty) {
+void HeapRegionSeq::print_empty_runs() {
   int empty_run = 0;
   int n_empty = 0;
-  bool at_least_one_reserved = false;
   int empty_run_start;
   for (int i = 0; i < _regions.length(); i++) {
     HeapRegion* r = _regions.at(i);
     if (r->continuesHumongous()) continue;
-    if (r->is_empty() && (reserved_are_empty || !r->is_reserved())) {
+    if (r->is_empty()) {
       assert(!r->isHumongous(), "H regions should not be empty.");
       if (empty_run == 0) empty_run_start = i;
       empty_run++;
       n_empty++;
-      if (r->is_reserved()) {
-        at_least_one_reserved = true;
-      }
     } else {
       if (empty_run > 0) {
         gclog_or_tty->print("  %d:%d", empty_run_start, empty_run);
-        if (reserved_are_empty && at_least_one_reserved)
-          gclog_or_tty->print("(R)");
         empty_run = 0;
-        at_least_one_reserved = false;
       }
     }
   }
   if (empty_run > 0) {
     gclog_or_tty->print(" %d:%d", empty_run_start, empty_run);
-    if (reserved_are_empty && at_least_one_reserved) gclog_or_tty->print("(R)");
   }
   gclog_or_tty->print_cr(" [tot = %d]", n_empty);
 }
@@ -193,7 +184,6 @@
   int cur = first;
   while (cur >= 0 &&
          (_regions.at(cur)->is_empty()
-          && !_regions.at(cur)->is_reserved()
           && (first == cur
               || (_regions.at(cur+1)->bottom() ==
                   _regions.at(cur)->end())))) {
--- a/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -104,8 +104,7 @@
 
   void print();
 
-  // Prints out runs of empty regions.  If the arg is "true" reserved
-  // (popular regions are considered "empty".
-  void print_empty_runs(bool reserved_are_empty);
+  // Prints out runs of empty regions.
+  void print_empty_runs();
 
 };
--- a/src/share/vm/gc_implementation/g1/ptrQueue.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/ptrQueue.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -91,15 +91,17 @@
   _n_completed_buffers(0),
   _process_completed_threshold(0), _process_completed(false),
   _buf_free_list(NULL), _buf_free_list_sz(0)
-{}
+{
+  _fl_owner = this;
+}
 
 void** PtrQueueSet::allocate_buffer() {
   assert(_sz > 0, "Didn't set a buffer size.");
-  MutexLockerEx x(_fl_lock, Mutex::_no_safepoint_check_flag);
-  if (_buf_free_list != NULL) {
-    void** res = _buf_free_list;
-    _buf_free_list = (void**)_buf_free_list[0];
-    _buf_free_list_sz--;
+  MutexLockerEx x(_fl_owner->_fl_lock, Mutex::_no_safepoint_check_flag);
+  if (_fl_owner->_buf_free_list != NULL) {
+    void** res = _fl_owner->_buf_free_list;
+    _fl_owner->_buf_free_list = (void**)_fl_owner->_buf_free_list[0];
+    _fl_owner->_buf_free_list_sz--;
     // Just override the next pointer with NULL, just in case we scan this part
     // of the buffer.
     res[0] = NULL;
@@ -111,10 +113,10 @@
 
 void PtrQueueSet::deallocate_buffer(void** buf) {
   assert(_sz > 0, "Didn't set a buffer size.");
-  MutexLockerEx x(_fl_lock, Mutex::_no_safepoint_check_flag);
-  buf[0] = (void*)_buf_free_list;
-  _buf_free_list = buf;
-  _buf_free_list_sz++;
+  MutexLockerEx x(_fl_owner->_fl_lock, Mutex::_no_safepoint_check_flag);
+  buf[0] = (void*)_fl_owner->_buf_free_list;
+  _fl_owner->_buf_free_list = buf;
+  _fl_owner->_buf_free_list_sz++;
 }
 
 void PtrQueueSet::reduce_free_list() {
@@ -170,7 +172,7 @@
   _n_completed_buffers++;
 
   if (!_process_completed &&
-      _n_completed_buffers == _process_completed_threshold) {
+      _n_completed_buffers >= _process_completed_threshold) {
     _process_completed = true;
     if (_notify_when_complete)
       _cbl_mon->notify_all();
@@ -207,3 +209,58 @@
 void PtrQueueSet::set_process_completed_threshold(size_t sz) {
   _process_completed_threshold = sz;
 }
+
+// Merge lists of buffers. Notify waiting threads if the length of the list
+// exceeds threshold. The source queue is emptied as a result. The queues
+// must share the monitor.
+void PtrQueueSet::merge_bufferlists(PtrQueueSet *src) {
+  assert(_cbl_mon == src->_cbl_mon, "Should share the same lock");
+  MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag);
+  if (_completed_buffers_tail == NULL) {
+    assert(_completed_buffers_head == NULL, "Well-formedness");
+    _completed_buffers_head = src->_completed_buffers_head;
+    _completed_buffers_tail = src->_completed_buffers_tail;
+  } else {
+    assert(_completed_buffers_head != NULL, "Well formedness");
+    if (src->_completed_buffers_head != NULL) {
+      _completed_buffers_tail->next = src->_completed_buffers_head;
+      _completed_buffers_tail = src->_completed_buffers_tail;
+    }
+  }
+  _n_completed_buffers += src->_n_completed_buffers;
+
+  src->_n_completed_buffers = 0;
+  src->_completed_buffers_head = NULL;
+  src->_completed_buffers_tail = NULL;
+
+  assert(_completed_buffers_head == NULL && _completed_buffers_tail == NULL ||
+         _completed_buffers_head != NULL && _completed_buffers_tail != NULL,
+         "Sanity");
+
+  if (!_process_completed &&
+      _n_completed_buffers >= _process_completed_threshold) {
+    _process_completed = true;
+    if (_notify_when_complete)
+      _cbl_mon->notify_all();
+  }
+}
+
+// Merge free lists of the two queues. The free list of the source
+// queue is emptied as a result. The queues must share the same
+// mutex that guards free lists.
+void PtrQueueSet::merge_freelists(PtrQueueSet* src) {
+  assert(_fl_lock == src->_fl_lock, "Should share the same lock");
+  MutexLockerEx x(_fl_lock, Mutex::_no_safepoint_check_flag);
+  if (_buf_free_list != NULL) {
+    void **p = _buf_free_list;
+    while (*p != NULL) {
+      p = (void**)*p;
+    }
+    *p = src->_buf_free_list;
+  } else {
+    _buf_free_list = src->_buf_free_list;
+  }
+  _buf_free_list_sz += src->_buf_free_list_sz;
+  src->_buf_free_list = NULL;
+  src->_buf_free_list_sz = 0;
+}
--- a/src/share/vm/gc_implementation/g1/ptrQueue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/ptrQueue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
 class PtrQueueSet;
 
-class PtrQueue: public CHeapObj {
+class PtrQueue VALUE_OBJ_CLASS_SPEC {
 
 protected:
   // The ptr queue set to which this queue belongs.
@@ -130,7 +130,7 @@
 // In particular, the individual queues allocate buffers from this shared
 // set, and return completed buffers to the set.
 // All these variables are are protected by the TLOQ_CBL_mon. XXX ???
-class PtrQueueSet: public CHeapObj {
+class PtrQueueSet VALUE_OBJ_CLASS_SPEC {
 
 protected:
 
@@ -155,6 +155,9 @@
   Mutex* _fl_lock;
   void** _buf_free_list;
   size_t _buf_free_list_sz;
+  // Queue set can share a freelist. The _fl_owner variable
+  // specifies the owner. It is set to "this" by default.
+  PtrQueueSet* _fl_owner;
 
   // The size of all buffers in the set.
   size_t _sz;
@@ -188,10 +191,13 @@
   // Because of init-order concerns, we can't pass these as constructor
   // arguments.
   void initialize(Monitor* cbl_mon, Mutex* fl_lock,
-                  int max_completed_queue = 0) {
+                  int max_completed_queue = 0,
+                  PtrQueueSet *fl_owner = NULL) {
     _max_completed_queue = max_completed_queue;
     assert(cbl_mon != NULL && fl_lock != NULL, "Init order issue?");
-    _cbl_mon = cbl_mon; _fl_lock = fl_lock;
+    _cbl_mon = cbl_mon;
+    _fl_lock = fl_lock;
+    _fl_owner = (fl_owner != NULL) ? fl_owner : this;
   }
 
   // Return an empty oop array of size _sz (required to be non-zero).
@@ -228,4 +234,7 @@
   void reduce_free_list();
 
   size_t completed_buffers_num() { return _n_completed_buffers; }
+
+  void merge_bufferlists(PtrQueueSet* src);
+  void merge_freelists(PtrQueueSet* src);
 };
--- a/src/share/vm/gc_implementation/g1/satbQueue.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/satbQueue.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -43,6 +43,18 @@
     }
   }
 }
+
+#ifdef ASSERT
+void ObjPtrQueue::verify_oops_in_buffer() {
+  if (_buf == NULL) return;
+  for (size_t i = _index; i < _sz; i += oopSize) {
+    oop obj = (oop)_buf[byte_index_to_index((int)i)];
+    assert(obj != NULL && obj->is_oop(true /* ignore mark word */),
+           "Not an oop");
+  }
+}
+#endif
+
 #ifdef _MSC_VER // the use of 'this' below gets a warning, make it go away
 #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
 #endif // _MSC_VER
@@ -66,6 +78,7 @@
 
 
 void SATBMarkQueueSet::handle_zero_index_for_thread(JavaThread* t) {
+  DEBUG_ONLY(t->satb_mark_queue().verify_oops_in_buffer();)
   t->satb_mark_queue().handle_zero_index();
 }
 
@@ -143,7 +156,7 @@
     }
     _completed_buffers_tail = NULL;
     _n_completed_buffers = 0;
-    debug_only(assert_completed_buffer_list_len_correct_locked());
+    DEBUG_ONLY(assert_completed_buffer_list_len_correct_locked());
   }
   while (buffers_to_delete != NULL) {
     CompletedBufferNode* nd = buffers_to_delete;
--- a/src/share/vm/gc_implementation/g1/satbQueue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/satbQueue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -39,6 +39,7 @@
   static void apply_closure_to_buffer(ObjectClosure* cl,
                                       void** buf, size_t index, size_t sz);
 
+  void verify_oops_in_buffer() NOT_DEBUG_RETURN;
 };
 
 
--- a/src/share/vm/gc_implementation/g1/sparsePRT.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/sparsePRT.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -33,7 +33,7 @@
     sprt_iter->init(this);
 }
 
-void SparsePRTEntry::init(short region_ind) {
+void SparsePRTEntry::init(RegionIdx_t region_ind) {
   _region_ind = region_ind;
   _next_index = NullEntry;
 #if UNROLL_CARD_LOOPS
@@ -43,11 +43,12 @@
   _cards[2] = NullEntry;
   _cards[3] = NullEntry;
 #else
-  for (int i = 0; i < CardsPerEntry; i++) _cards[i] = NullEntry;
+  for (int i = 0; i < CardsPerEntry; i++)
+    _cards[i] = NullEntry;
 #endif
 }
 
-bool SparsePRTEntry::contains_card(short card_index) const {
+bool SparsePRTEntry::contains_card(CardIdx_t card_index) const {
 #if UNROLL_CARD_LOOPS
   assert(CardsPerEntry == 4, "Assumption.  If changes, un-unroll.");
   if (_cards[0] == card_index) return true;
@@ -80,10 +81,10 @@
   return sum;
 }
 
-SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(short card_index) {
+SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(CardIdx_t card_index) {
 #if UNROLL_CARD_LOOPS
   assert(CardsPerEntry == 4, "Assumption.  If changes, un-unroll.");
-  short c = _cards[0];
+  CardIdx_t c = _cards[0];
   if (c == card_index) return found;
   if (c == NullEntry) { _cards[0] = card_index; return added; }
   c = _cards[1];
@@ -97,16 +98,19 @@
   if (c == NullEntry) { _cards[3] = card_index; return added; }
 #else
   for (int i = 0; i < CardsPerEntry; i++) {
-    short c = _cards[i];
+    CardIdx_t c = _cards[i];
     if (c == card_index) return found;
-    if (c == NullEntry) { _cards[i] = card_index; return added; }
+    if (c == NullEntry) {
+      _cards[i] = card_index;
+      return added;
+    }
   }
 #endif
   // Otherwise, we're full.
   return overflow;
 }
 
-void SparsePRTEntry::copy_cards(short* cards) const {
+void SparsePRTEntry::copy_cards(CardIdx_t* cards) const {
 #if UNROLL_CARD_LOOPS
   assert(CardsPerEntry == 4, "Assumption.  If changes, un-unroll.");
   cards[0] = _cards[0];
@@ -130,7 +134,7 @@
   _capacity(capacity), _capacity_mask(capacity-1),
   _occupied_entries(0), _occupied_cards(0),
   _entries(NEW_C_HEAP_ARRAY(SparsePRTEntry, capacity)),
-  _buckets(NEW_C_HEAP_ARRAY(short, capacity)),
+  _buckets(NEW_C_HEAP_ARRAY(int, capacity)),
   _next_deleted(NULL), _deleted(false),
   _free_list(NullEntry), _free_region(0)
 {
@@ -143,7 +147,7 @@
     _entries = NULL;
   }
   if (_buckets != NULL) {
-    FREE_C_HEAP_ARRAY(short, _buckets);
+    FREE_C_HEAP_ARRAY(int, _buckets);
     _buckets = NULL;
   }
 }
@@ -153,14 +157,18 @@
   _occupied_cards = 0;
   guarantee(_entries != NULL, "INV");
   guarantee(_buckets != NULL, "INV");
+
+  guarantee(_capacity <= ((size_t)1 << (sizeof(int)*BitsPerByte-1)) - 1,
+                "_capacity too large");
+
   // This will put -1 == NullEntry in the key field of all entries.
   memset(_entries, -1, _capacity * sizeof(SparsePRTEntry));
-  memset(_buckets, -1, _capacity * sizeof(short));
+  memset(_buckets, -1, _capacity * sizeof(int));
   _free_list = NullEntry;
   _free_region = 0;
 }
 
-bool RSHashTable::add_card(short region_ind, short card_index) {
+bool RSHashTable::add_card(RegionIdx_t region_ind, CardIdx_t card_index) {
   SparsePRTEntry* e = entry_for_region_ind_create(region_ind);
   assert(e != NULL && e->r_ind() == region_ind,
          "Postcondition of call above.");
@@ -175,9 +183,9 @@
   return res != SparsePRTEntry::overflow;
 }
 
-bool RSHashTable::get_cards(short region_ind, short* cards) {
-  short ind = (short) (region_ind & capacity_mask());
-  short cur_ind = _buckets[ind];
+bool RSHashTable::get_cards(RegionIdx_t region_ind, CardIdx_t* cards) {
+  int ind = (int) (region_ind & capacity_mask());
+  int cur_ind = _buckets[ind];
   SparsePRTEntry* cur;
   while (cur_ind != NullEntry &&
          (cur = entry(cur_ind))->r_ind() != region_ind) {
@@ -192,10 +200,10 @@
   return true;
 }
 
-bool RSHashTable::delete_entry(short region_ind) {
-  short ind = (short) (region_ind & capacity_mask());
-  short* prev_loc = &_buckets[ind];
-  short cur_ind = *prev_loc;
+bool RSHashTable::delete_entry(RegionIdx_t region_ind) {
+  int ind = (int) (region_ind & capacity_mask());
+  int* prev_loc = &_buckets[ind];
+  int cur_ind = *prev_loc;
   SparsePRTEntry* cur;
   while (cur_ind != NullEntry &&
          (cur = entry(cur_ind))->r_ind() != region_ind) {
@@ -212,10 +220,11 @@
   return true;
 }
 
-SparsePRTEntry* RSHashTable::entry_for_region_ind(short region_ind) const {
+SparsePRTEntry*
+RSHashTable::entry_for_region_ind(RegionIdx_t region_ind) const {
   assert(occupied_entries() < capacity(), "Precondition");
-  short ind = (short) (region_ind & capacity_mask());
-  short cur_ind = _buckets[ind];
+  int ind = (int) (region_ind & capacity_mask());
+  int cur_ind = _buckets[ind];
   SparsePRTEntry* cur;
   // XXX
   // int k = 0;
@@ -242,15 +251,16 @@
   }
 }
 
-SparsePRTEntry* RSHashTable::entry_for_region_ind_create(short region_ind) {
+SparsePRTEntry*
+RSHashTable::entry_for_region_ind_create(RegionIdx_t region_ind) {
   SparsePRTEntry* res = entry_for_region_ind(region_ind);
   if (res == NULL) {
-    short new_ind = alloc_entry();
+    int new_ind = alloc_entry();
     assert(0 <= new_ind && (size_t)new_ind < capacity(), "There should be room.");
     res = entry(new_ind);
     res->init(region_ind);
     // Insert at front.
-    short ind = (short) (region_ind & capacity_mask());
+    int ind = (int) (region_ind & capacity_mask());
     res->set_next_index(_buckets[ind]);
     _buckets[ind] = new_ind;
     _occupied_entries++;
@@ -258,8 +268,8 @@
   return res;
 }
 
-short RSHashTable::alloc_entry() {
-  short res;
+int RSHashTable::alloc_entry() {
+  int res;
   if (_free_list != NullEntry) {
     res = _free_list;
     _free_list = entry(res)->next_index();
@@ -273,13 +283,11 @@
   }
 }
 
-
-void RSHashTable::free_entry(short fi) {
+void RSHashTable::free_entry(int fi) {
   entry(fi)->set_next_index(_free_list);
   _free_list = fi;
 }
 
-
 void RSHashTable::add_entry(SparsePRTEntry* e) {
   assert(e->num_valid_cards() > 0, "Precondition.");
   SparsePRTEntry* e2 = entry_for_region_ind_create(e->r_ind());
@@ -322,8 +330,8 @@
   return NULL;
 }
 
-short /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
-  short res;
+CardIdx_t /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
+  CardIdx_t res;
   while (_bl_ind != RSHashTable::NullEntry) {
     res = _rsht->entry(_bl_ind)->card(0);
     if (res != SparsePRTEntry::NullEntry) {
@@ -336,7 +344,7 @@
   return SparsePRTEntry::NullEntry;
 }
 
-size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(short ci) {
+size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(CardIdx_t ci) {
   return
     _heap_bot_card_ind
     + (_rsht->entry(_bl_ind)->r_ind() * CardsPerRegion)
@@ -345,7 +353,7 @@
 
 bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
   _card_ind++;
-  short ci;
+  CardIdx_t ci;
   if (_card_ind < SparsePRTEntry::CardsPerEntry &&
       ((ci = _rsht->entry(_bl_ind)->card(_card_ind)) !=
        SparsePRTEntry::NullEntry)) {
@@ -379,16 +387,16 @@
   return false;
 }
 
-bool RSHashTable::contains_card(short region_index, short card_index) const {
+bool RSHashTable::contains_card(RegionIdx_t region_index, CardIdx_t card_index) const {
   SparsePRTEntry* e = entry_for_region_ind(region_index);
   return (e != NULL && e->contains_card(card_index));
 }
 
 size_t RSHashTable::mem_size() const {
-  return sizeof(this) + capacity() * (sizeof(SparsePRTEntry) + sizeof(short));
+  return sizeof(this) +
+    capacity() * (sizeof(SparsePRTEntry) + sizeof(int));
 }
 
-
 // ----------------------------------------------------------------------
 
 SparsePRT* SparsePRT::_head_expanded_list = NULL;
@@ -408,6 +416,7 @@
   }
 }
 
+
 SparsePRT* SparsePRT::get_from_expanded_list() {
   SparsePRT* hd = _head_expanded_list;
   while (hd != NULL) {
@@ -452,6 +461,7 @@
   _next = _cur;
 }
 
+
 SparsePRT::~SparsePRT() {
   assert(_next != NULL && _cur != NULL, "Inv");
   if (_cur != _next) { delete _cur; }
@@ -465,7 +475,7 @@
   return sizeof(this) + _next->mem_size();
 }
 
-bool SparsePRT::add_card(short region_id, short card_index) {
+bool SparsePRT::add_card(RegionIdx_t region_id, CardIdx_t card_index) {
 #if SPARSE_PRT_VERBOSE
   gclog_or_tty->print_cr("  Adding card %d from region %d to region %d sparse.",
                 card_index, region_id, _hr->hrs_index());
@@ -476,11 +486,11 @@
   return _next->add_card(region_id, card_index);
 }
 
-bool SparsePRT::get_cards(short region_id, short* cards) {
+bool SparsePRT::get_cards(RegionIdx_t region_id, CardIdx_t* cards) {
   return _next->get_cards(region_id, cards);
 }
 
-bool SparsePRT::delete_entry(short region_id) {
+bool SparsePRT::delete_entry(RegionIdx_t region_id) {
   return _next->delete_entry(region_id);
 }
 
@@ -504,6 +514,7 @@
   // Make sure that the current and next tables agree.  (Another mechanism
   // takes care of deleting now-unused tables.)
   _cur = _next;
+  set_expanded(false);
 }
 
 void SparsePRT::expand() {
--- a/src/share/vm/gc_implementation/g1/sparsePRT.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/sparsePRT.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,34 +33,34 @@
 // old versions synchronously.
 
 
-class SparsePRTEntry {
+class SparsePRTEntry: public CHeapObj {
 public:
+
   enum SomePublicConstants {
-    CardsPerEntry = (short)4,
-    NullEntry = (short)-1,
-    DeletedEntry = (short)-2
+    CardsPerEntry =  4,
+    NullEntry     = -1
   };
 
 private:
-  short _region_ind;
-  short _next_index;
-  short _cards[CardsPerEntry];
+  RegionIdx_t _region_ind;
+  int         _next_index;
+  CardIdx_t   _cards[CardsPerEntry];
 
 public:
 
   // Set the region_ind to the given value, and delete all cards.
-  inline void init(short region_ind);
+  inline void init(RegionIdx_t region_ind);
 
-  short r_ind() const { return _region_ind; }
+  RegionIdx_t r_ind() const { return _region_ind; }
   bool valid_entry() const { return r_ind() >= 0; }
-  void set_r_ind(short rind) { _region_ind = rind; }
+  void set_r_ind(RegionIdx_t rind) { _region_ind = rind; }
 
-  short next_index() const { return _next_index; }
-  short* next_index_addr() { return &_next_index; }
-  void set_next_index(short ni) { _next_index = ni; }
+  int next_index() const { return _next_index; }
+  int* next_index_addr() { return &_next_index; }
+  void set_next_index(int ni) { _next_index = ni; }
 
   // Returns "true" iff the entry contains the given card index.
-  inline bool contains_card(short card_index) const;
+  inline bool contains_card(CardIdx_t card_index) const;
 
   // Returns the number of non-NULL card entries.
   inline int num_valid_cards() const;
@@ -73,14 +73,14 @@
     found,
     added
   };
-  inline AddCardResult add_card(short card_index);
+  inline AddCardResult add_card(CardIdx_t card_index);
 
   // Copy the current entry's cards into "cards".
-  inline void copy_cards(short* cards) const;
+  inline void copy_cards(CardIdx_t* cards) const;
   // Copy the current entry's cards into the "_card" array of "e."
   inline void copy_cards(SparsePRTEntry* e) const;
 
-  inline short card(int i) const { return _cards[i]; }
+  inline CardIdx_t card(int i) const { return _cards[i]; }
 };
 
 
@@ -98,9 +98,9 @@
   size_t _occupied_cards;
 
   SparsePRTEntry* _entries;
-  short* _buckets;
-  short  _free_region;
-  short  _free_list;
+  int* _buckets;
+  int  _free_region;
+  int  _free_list;
 
   static RSHashTable* _head_deleted_list;
   RSHashTable* _next_deleted;
@@ -113,20 +113,20 @@
   // operations, and that the the table be less than completely full.  If
   // an entry for "region_ind" is already in the table, finds it and
   // returns its address; otherwise returns "NULL."
-  SparsePRTEntry* entry_for_region_ind(short region_ind) const;
+  SparsePRTEntry* entry_for_region_ind(RegionIdx_t region_ind) const;
 
   // Requires that the caller hold a lock preventing parallel modifying
   // operations, and that the the table be less than completely full.  If
   // an entry for "region_ind" is already in the table, finds it and
   // returns its address; otherwise allocates, initializes, inserts and
   // returns a new entry for "region_ind".
-  SparsePRTEntry* entry_for_region_ind_create(short region_ind);
+  SparsePRTEntry* entry_for_region_ind_create(RegionIdx_t region_ind);
 
   // Returns the index of the next free entry in "_entries".
-  short alloc_entry();
+  int alloc_entry();
   // Declares the entry "fi" to be free.  (It must have already been
   // deleted from any bucket lists.
-  void free_entry(short fi);
+  void free_entry(int fi);
 
 public:
   RSHashTable(size_t capacity);
@@ -138,12 +138,12 @@
   // Otherwise, returns "false" to indicate that the addition would
   // overflow the entry for the region.  The caller must transfer these
   // entries to a larger-capacity representation.
-  bool add_card(short region_id, short card_index);
+  bool add_card(RegionIdx_t region_id, CardIdx_t card_index);
 
-  bool get_cards(short region_id, short* cards);
-  bool delete_entry(short region_id);
+  bool get_cards(RegionIdx_t region_id, CardIdx_t* cards);
+  bool delete_entry(RegionIdx_t region_id);
 
-  bool contains_card(short region_id, short card_index) const;
+  bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const;
 
   void add_entry(SparsePRTEntry* e);
 
@@ -162,58 +162,56 @@
 
   static void add_to_deleted_list(RSHashTable* rsht);
   static RSHashTable* get_from_deleted_list();
-
-
 };
 
-  // ValueObj because will be embedded in HRRS iterator.
-class RSHashTableIter: public CHeapObj {
-    short _tbl_ind;
-    short _bl_ind;
-    short _card_ind;
-    RSHashTable* _rsht;
-    size_t _heap_bot_card_ind;
+// ValueObj because will be embedded in HRRS iterator.
+class RSHashTableIter VALUE_OBJ_CLASS_SPEC {
+  int _tbl_ind;         // [-1, 0.._rsht->_capacity)
+  int _bl_ind;          // [-1, 0.._rsht->_capacity)
+  short _card_ind;      // [0..CardsPerEntry)
+  RSHashTable* _rsht;
+  size_t _heap_bot_card_ind;
 
-    enum SomePrivateConstants {
-      CardsPerRegion = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift
-    };
+  enum SomePrivateConstants {
+    CardsPerRegion = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift
+  };
+
+  // If the bucket list pointed to by _bl_ind contains a card, sets
+  // _bl_ind to the index of that entry, and returns the card.
+  // Otherwise, returns SparseEntry::NullEntry.
+  CardIdx_t find_first_card_in_list();
 
-    // If the bucket list pointed to by _bl_ind contains a card, sets
-    // _bl_ind to the index of that entry, and returns the card.
-    // Otherwise, returns SparseEntry::NullEnty.
-    short find_first_card_in_list();
-    // Computes the proper card index for the card whose offset in the
-    // current region (as indicated by _bl_ind) is "ci".
-    // This is subject to errors when there is iteration concurrent with
-    // modification, but these errors should be benign.
-    size_t compute_card_ind(short ci);
+  // Computes the proper card index for the card whose offset in the
+  // current region (as indicated by _bl_ind) is "ci".
+  // This is subject to errors when there is iteration concurrent with
+  // modification, but these errors should be benign.
+  size_t compute_card_ind(CardIdx_t ci);
 
-  public:
-    RSHashTableIter(size_t heap_bot_card_ind) :
-      _tbl_ind(RSHashTable::NullEntry),
-      _bl_ind(RSHashTable::NullEntry),
-      _card_ind((SparsePRTEntry::CardsPerEntry-1)),
-      _rsht(NULL),
-      _heap_bot_card_ind(heap_bot_card_ind)
-    {}
+public:
+  RSHashTableIter(size_t heap_bot_card_ind) :
+    _tbl_ind(RSHashTable::NullEntry),
+    _bl_ind(RSHashTable::NullEntry),
+    _card_ind((SparsePRTEntry::CardsPerEntry-1)),
+    _rsht(NULL),
+    _heap_bot_card_ind(heap_bot_card_ind)
+  {}
 
-    void init(RSHashTable* rsht) {
-      _rsht = rsht;
-      _tbl_ind = -1; // So that first increment gets to 0.
-      _bl_ind = RSHashTable::NullEntry;
-      _card_ind = (SparsePRTEntry::CardsPerEntry-1);
-    }
+  void init(RSHashTable* rsht) {
+    _rsht = rsht;
+    _tbl_ind = -1; // So that first increment gets to 0.
+    _bl_ind = RSHashTable::NullEntry;
+    _card_ind = (SparsePRTEntry::CardsPerEntry-1);
+  }
 
-    bool has_next(size_t& card_index);
-
-  };
+  bool has_next(size_t& card_index);
+};
 
 // Concurrent accesss to a SparsePRT must be serialized by some external
 // mutex.
 
 class SparsePRTIter;
 
-class SparsePRT : public CHeapObj {
+class SparsePRT VALUE_OBJ_CLASS_SPEC {
   //  Iterations are done on the _cur hash table, since they only need to
   //  see entries visible at the start of a collection pause.
   //  All other operations are done using the _next hash table.
@@ -238,7 +236,6 @@
   SparsePRT* next_expanded() { return _next_expanded; }
   void set_next_expanded(SparsePRT* nxt) { _next_expanded = nxt; }
 
-
   static SparsePRT* _head_expanded_list;
 
 public:
@@ -255,16 +252,16 @@
   // Otherwise, returns "false" to indicate that the addition would
   // overflow the entry for the region.  The caller must transfer these
   // entries to a larger-capacity representation.
-  bool add_card(short region_id, short card_index);
+  bool add_card(RegionIdx_t region_id, CardIdx_t card_index);
 
   // If the table hold an entry for "region_ind",  Copies its
   // cards into "cards", which must be an array of length at least
   // "CardsPerEntry", and returns "true"; otherwise, returns "false".
-  bool get_cards(short region_ind, short* cards);
+  bool get_cards(RegionIdx_t region_ind, CardIdx_t* cards);
 
   // If there is an entry for "region_ind", removes it and return "true";
   // otherwise returns "false."
-  bool delete_entry(short region_ind);
+  bool delete_entry(RegionIdx_t region_ind);
 
   // Clear the table, and reinitialize to initial capacity.
   void clear();
@@ -274,15 +271,14 @@
 
   // Clean up all tables on the expanded list.  Called single threaded.
   static void cleanup_all();
-  RSHashTable* next() const { return _next; }
-
+  RSHashTable* cur() const { return _cur; }
 
   void init_iterator(SparsePRTIter* sprt_iter);
 
   static void add_to_expanded_list(SparsePRT* sprt);
   static SparsePRT* get_from_expanded_list();
 
-  bool contains_card(short region_id, short card_index) const {
+  bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const {
     return _next->contains_card(region_id, card_index);
   }
 
@@ -300,7 +296,7 @@
   {}
 
   void init(const SparsePRT* sprt) {
-    RSHashTableIter::init(sprt->next());
+    RSHashTableIter::init(sprt->cur());
   }
   bool has_next(size_t& card_index) {
     return RSHashTableIter::has_next(card_index);
--- a/src/share/vm/gc_implementation/g1/survRateGroup.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/survRateGroup.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,23 +29,14 @@
                              const char* name,
                              size_t summary_surv_rates_len) :
     _g1p(g1p), _name(name),
-    _all_regions_allocated(0),
-    _curr_length(0), _scan_only_prefix(0), _setup_seq_num(0),
-    _array_length(0), _surv_rate(NULL), _accum_surv_rate_pred(NULL),
-    _accum_surv_rate(0.0), _surv_rate_pred(NULL), _last_pred(0.0),
     _summary_surv_rates_len(summary_surv_rates_len),
     _summary_surv_rates_max_len(0),
-    _summary_surv_rates(NULL) {
-
-  // the following will set up the arrays with length 1
-  _curr_length = 1;
-  stop_adding_regions();
-  guarantee( _array_length == 1, "invariant" );
-  guarantee( _surv_rate_pred[0] != NULL, "invariant" );
-  _surv_rate_pred[0]->add(0.4);
-  all_surviving_words_recorded(false);
-  _curr_length = 0;
-
+    _summary_surv_rates(NULL),
+    _surv_rate(NULL),
+    _accum_surv_rate_pred(NULL),
+    _surv_rate_pred(NULL)
+{
+  reset();
   if (summary_surv_rates_len > 0) {
     size_t length = summary_surv_rates_len;
       _summary_surv_rates = NEW_C_HEAP_ARRAY(NumberSeq*, length);
@@ -60,61 +51,80 @@
   start_adding_regions();
 }
 
+
+void SurvRateGroup::reset()
+{
+  _all_regions_allocated = 0;
+  _scan_only_prefix      = 0;
+  _setup_seq_num         = 0;
+  _stats_arrays_length   = 0;
+  _accum_surv_rate       = 0.0;
+  _last_pred             = 0.0;
+  // the following will set up the arrays with length 1
+  _region_num            = 1;
+  stop_adding_regions();
+  guarantee( _stats_arrays_length == 1, "invariant" );
+  guarantee( _surv_rate_pred[0] != NULL, "invariant" );
+  _surv_rate_pred[0]->add(0.4);
+  all_surviving_words_recorded(false);
+  _region_num = 0;
+}
+
+
 void
 SurvRateGroup::start_adding_regions() {
-  _setup_seq_num   = _array_length;
-  _curr_length     = _scan_only_prefix;
+  _setup_seq_num   = _stats_arrays_length;
+  _region_num      = _scan_only_prefix;
   _accum_surv_rate = 0.0;
 
 #if 0
-  gclog_or_tty->print_cr("start adding regions, seq num %d, length %d",
-                         _setup_seq_num, _curr_length);
+  gclog_or_tty->print_cr("[%s] start adding regions, seq num %d, length %d",
+                         _name, _setup_seq_num, _region_num);
 #endif // 0
 }
 
 void
 SurvRateGroup::stop_adding_regions() {
-  size_t length = _curr_length;
 
 #if 0
-  gclog_or_tty->print_cr("stop adding regions, length %d", length);
+  gclog_or_tty->print_cr("[%s] stop adding regions, length %d", _name, _region_num);
 #endif // 0
 
-  if (length > _array_length) {
+  if (_region_num > _stats_arrays_length) {
     double* old_surv_rate = _surv_rate;
     double* old_accum_surv_rate_pred = _accum_surv_rate_pred;
     TruncatedSeq** old_surv_rate_pred = _surv_rate_pred;
 
-    _surv_rate = NEW_C_HEAP_ARRAY(double, length);
+    _surv_rate = NEW_C_HEAP_ARRAY(double, _region_num);
     if (_surv_rate == NULL) {
-      vm_exit_out_of_memory(sizeof(double) * length,
+      vm_exit_out_of_memory(sizeof(double) * _region_num,
                             "Not enough space for surv rate array.");
     }
-    _accum_surv_rate_pred = NEW_C_HEAP_ARRAY(double, length);
+    _accum_surv_rate_pred = NEW_C_HEAP_ARRAY(double, _region_num);
     if (_accum_surv_rate_pred == NULL) {
-      vm_exit_out_of_memory(sizeof(double) * length,
+      vm_exit_out_of_memory(sizeof(double) * _region_num,
                          "Not enough space for accum surv rate pred array.");
     }
-    _surv_rate_pred = NEW_C_HEAP_ARRAY(TruncatedSeq*, length);
+    _surv_rate_pred = NEW_C_HEAP_ARRAY(TruncatedSeq*, _region_num);
     if (_surv_rate == NULL) {
-      vm_exit_out_of_memory(sizeof(TruncatedSeq*) * length,
+      vm_exit_out_of_memory(sizeof(TruncatedSeq*) * _region_num,
                             "Not enough space for surv rate pred array.");
     }
 
-    for (size_t i = 0; i < _array_length; ++i)
+    for (size_t i = 0; i < _stats_arrays_length; ++i)
       _surv_rate_pred[i] = old_surv_rate_pred[i];
 
 #if 0
-    gclog_or_tty->print_cr("stop adding regions, new seqs %d to %d",
-                  _array_length, length - 1);
+    gclog_or_tty->print_cr("[%s] stop adding regions, new seqs %d to %d",
+                  _name, _array_length, _region_num - 1);
 #endif // 0
 
-    for (size_t i = _array_length; i < length; ++i) {
+    for (size_t i = _stats_arrays_length; i < _region_num; ++i) {
       _surv_rate_pred[i] = new TruncatedSeq(10);
       // _surv_rate_pred[i]->add(last_pred);
     }
 
-    _array_length = length;
+    _stats_arrays_length = _region_num;
 
     if (old_surv_rate != NULL)
       FREE_C_HEAP_ARRAY(double, old_surv_rate);
@@ -124,7 +134,7 @@
       FREE_C_HEAP_ARRAY(NumberSeq*, old_surv_rate_pred);
   }
 
-  for (size_t i = 0; i < _array_length; ++i)
+  for (size_t i = 0; i < _stats_arrays_length; ++i)
     _surv_rate[i] = 0.0;
 }
 
@@ -135,7 +145,7 @@
 
   double ret = _accum_surv_rate;
   if (adjustment > 0) {
-    TruncatedSeq* seq = get_seq(_curr_length+1);
+    TruncatedSeq* seq = get_seq(_region_num+1);
     double surv_rate = _g1p->get_new_prediction(seq);
     ret += surv_rate;
   }
@@ -145,23 +155,23 @@
 
 int
 SurvRateGroup::next_age_index() {
-  TruncatedSeq* seq = get_seq(_curr_length);
+  TruncatedSeq* seq = get_seq(_region_num);
   double surv_rate = _g1p->get_new_prediction(seq);
   _accum_surv_rate += surv_rate;
 
-  ++_curr_length;
+  ++_region_num;
   return (int) ++_all_regions_allocated;
 }
 
 void
 SurvRateGroup::record_scan_only_prefix(size_t scan_only_prefix) {
-  guarantee( scan_only_prefix <= _curr_length, "pre-condition" );
+  guarantee( scan_only_prefix <= _region_num, "pre-condition" );
   _scan_only_prefix = scan_only_prefix;
 }
 
 void
 SurvRateGroup::record_surviving_words(int age_in_group, size_t surv_words) {
-  guarantee( 0 <= age_in_group && (size_t) age_in_group < _curr_length,
+  guarantee( 0 <= age_in_group && (size_t) age_in_group < _region_num,
              "pre-condition" );
   guarantee( _surv_rate[age_in_group] <= 0.00001,
              "should only update each slot once" );
@@ -178,15 +188,15 @@
 
 void
 SurvRateGroup::all_surviving_words_recorded(bool propagate) {
-  if (propagate && _curr_length > 0) { // conservative
-    double surv_rate = _surv_rate_pred[_curr_length-1]->last();
+  if (propagate && _region_num > 0) { // conservative
+    double surv_rate = _surv_rate_pred[_region_num-1]->last();
 
 #if 0
     gclog_or_tty->print_cr("propagating %1.2lf from %d to %d",
                   surv_rate, _curr_length, _array_length - 1);
 #endif // 0
 
-    for (size_t i = _curr_length; i < _array_length; ++i) {
+    for (size_t i = _region_num; i < _stats_arrays_length; ++i) {
       guarantee( _surv_rate[i] <= 0.00001,
                  "the slot should not have been updated" );
       _surv_rate_pred[i]->add(surv_rate);
@@ -195,7 +205,7 @@
 
   double accum = 0.0;
   double pred = 0.0;
-  for (size_t i = 0; i < _array_length; ++i) {
+  for (size_t i = 0; i < _stats_arrays_length; ++i) {
     pred = _g1p->get_new_prediction(_surv_rate_pred[i]);
     if (pred > 1.0) pred = 1.0;
     accum += pred;
@@ -209,8 +219,8 @@
 void
 SurvRateGroup::print() {
   gclog_or_tty->print_cr("Surv Rate Group: %s (%d entries, %d scan-only)",
-                _name, _curr_length, _scan_only_prefix);
-  for (size_t i = 0; i < _curr_length; ++i) {
+                _name, _region_num, _scan_only_prefix);
+  for (size_t i = 0; i < _region_num; ++i) {
     gclog_or_tty->print_cr("    age %4d   surv rate %6.2lf %%   pred %6.2lf %%%s",
                   i, _surv_rate[i] * 100.0,
                   _g1p->get_new_prediction(_surv_rate_pred[i]) * 100.0,
--- a/src/share/vm/gc_implementation/g1/survRateGroup.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/survRateGroup.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   G1CollectorPolicy* _g1p;
   const char* _name;
 
-  size_t  _array_length;
+  size_t  _stats_arrays_length;
   double* _surv_rate;
   double* _accum_surv_rate_pred;
   double  _last_pred;
@@ -40,7 +40,7 @@
   size_t         _summary_surv_rates_max_len;
 
   int _all_regions_allocated;
-  size_t _curr_length;
+  size_t _region_num;
   size_t _scan_only_prefix;
   size_t _setup_seq_num;
 
@@ -48,6 +48,7 @@
   SurvRateGroup(G1CollectorPolicy* g1p,
                 const char* name,
                 size_t summary_surv_rates_len);
+  void reset();
   void start_adding_regions();
   void stop_adding_regions();
   void record_scan_only_prefix(size_t scan_only_prefix);
@@ -55,22 +56,21 @@
   void all_surviving_words_recorded(bool propagate);
   const char* name() { return _name; }
 
-  size_t region_num() { return _curr_length; }
+  size_t region_num() { return _region_num; }
   size_t scan_only_length() { return _scan_only_prefix; }
   double accum_surv_rate_pred(int age) {
     assert(age >= 0, "must be");
-    if ((size_t)age < _array_length)
+    if ((size_t)age < _stats_arrays_length)
       return _accum_surv_rate_pred[age];
     else {
-      double diff = (double) (age - _array_length + 1);
-      return _accum_surv_rate_pred[_array_length-1] + diff * _last_pred;
+      double diff = (double) (age - _stats_arrays_length + 1);
+      return _accum_surv_rate_pred[_stats_arrays_length-1] + diff * _last_pred;
     }
   }
 
   double accum_surv_rate(size_t adjustment);
 
   TruncatedSeq* get_seq(size_t age) {
-    guarantee( 0 <= age, "pre-condition" );
     if (age >= _setup_seq_num) {
       guarantee( _setup_seq_num > 0, "invariant" );
       age = _setup_seq_num-1;
--- a/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -43,16 +43,9 @@
   JvmtiGCForAllocationMarker jgcm;
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
   GCCauseSetter x(g1h, GCCause::_g1_inc_collection_pause);
-  g1h->do_collection_pause_at_safepoint(NULL);
+  g1h->do_collection_pause_at_safepoint();
 }
 
-void VM_G1PopRegionCollectionPause::doit() {
-  JvmtiGCForAllocationMarker jgcm;
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  g1h->do_collection_pause_at_safepoint(_pop_region);
-}
-
-
 void VM_CGC_Operation::doit() {
   gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps);
   TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty);
--- a/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -77,20 +77,6 @@
   }
 };
 
-class VM_G1PopRegionCollectionPause: public VM_GC_Operation {
-  HeapRegion* _pop_region;
- public:
-  VM_G1PopRegionCollectionPause(int gc_count_before, HeapRegion* pop_region) :
-    VM_GC_Operation(gc_count_before),
-    _pop_region(pop_region)
-  {}
-  virtual VMOp_Type type() const { return VMOp_G1PopRegionCollectionPause; }
-  virtual void doit();
-  virtual const char* name() const {
-    return "garbage-first popular region collection pause";
-  }
-};
-
 // Concurrent GC stop-the-world operations such as initial and final mark;
 // consider sharing these with CMS's counterparts.
 class VM_CGC_Operation: public VM_Operation {
--- a/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,7 @@
 binaryTreeDictionary.cpp                binaryTreeDictionary.hpp
 binaryTreeDictionary.cpp                globals.hpp
 binaryTreeDictionary.cpp                ostream.hpp
+binaryTreeDictionary.cpp                space.inline.hpp
 binaryTreeDictionary.cpp                spaceDecorator.hpp
 
 binaryTreeDictionary.hpp                freeBlockDictionary.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_g1	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/includeDB_gc_g1	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2004-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,13 +27,15 @@
 bufferingOopClosure.hpp			genOopClosures.hpp
 bufferingOopClosure.hpp			generation.hpp
 bufferingOopClosure.hpp			os.hpp
+bufferingOopClosure.hpp			taskqueue.hpp
 
 cardTableRS.cpp				concurrentMark.hpp
 cardTableRS.cpp				g1SATBCardTableModRefBS.hpp
 
-collectionSetChooser.cpp		g1CollectedHeap.hpp
+collectionSetChooser.cpp		g1CollectedHeap.inline.hpp
 collectionSetChooser.cpp		g1CollectorPolicy.hpp
 collectionSetChooser.cpp		collectionSetChooser.hpp
+collectionSetChooser.cpp		space.inline.hpp
 
 collectionSetChooser.hpp		heapRegion.hpp
 collectionSetChooser.hpp                growableArray.hpp
@@ -42,14 +44,17 @@
 concurrentG1Refine.cpp			concurrentG1Refine.hpp
 concurrentG1Refine.cpp			concurrentG1RefineThread.hpp
 concurrentG1Refine.cpp			copy.hpp
-concurrentG1Refine.cpp			g1CollectedHeap.hpp
+concurrentG1Refine.cpp			g1CollectedHeap.inline.hpp
 concurrentG1Refine.cpp			g1RemSet.hpp
+concurrentG1Refine.cpp			space.inline.hpp
 
 concurrentG1Refine.hpp			globalDefinitions.hpp
+concurrentG1Refine.hpp			allocation.hpp
+concurrentG1Refine.hpp			thread.hpp
 
 concurrentG1RefineThread.cpp		concurrentG1Refine.hpp
 concurrentG1RefineThread.cpp		concurrentG1RefineThread.hpp
-concurrentG1RefineThread.cpp		g1CollectedHeap.hpp
+concurrentG1RefineThread.cpp		g1CollectedHeap.inline.hpp
 concurrentG1RefineThread.cpp            g1CollectorPolicy.hpp
 concurrentG1RefineThread.cpp		handles.inline.hpp
 concurrentG1RefineThread.cpp		mutexLocker.hpp
@@ -135,7 +140,7 @@
 g1CollectedHeap.cpp                     g1CollectedHeap.inline.hpp
 g1CollectedHeap.cpp                     g1CollectorPolicy.hpp
 g1CollectedHeap.cpp                     g1MarkSweep.hpp
-g1CollectedHeap.cpp                     g1RemSet.hpp
+g1CollectedHeap.cpp                     g1RemSet.inline.hpp
 g1CollectedHeap.cpp                     g1OopClosures.inline.hpp
 g1CollectedHeap.cpp                     genOopClosures.inline.hpp
 g1CollectedHeap.cpp                     gcLocker.inline.hpp
@@ -147,13 +152,14 @@
 g1CollectedHeap.cpp                     isGCActiveMark.hpp
 g1CollectedHeap.cpp			oop.inline.hpp
 g1CollectedHeap.cpp			oop.pcgc.inline.hpp
-g1CollectedHeap.cpp			parGCAllocBuffer.hpp
 g1CollectedHeap.cpp                     vm_operations_g1.hpp
 g1CollectedHeap.cpp                     vmThread.hpp
 
 g1CollectedHeap.hpp                     barrierSet.hpp
+g1CollectedHeap.hpp                     g1RemSet.hpp
 g1CollectedHeap.hpp                     heapRegion.hpp
 g1CollectedHeap.hpp                     memRegion.hpp
+g1CollectedHeap.hpp			parGCAllocBuffer.hpp
 g1CollectedHeap.hpp                     sharedHeap.hpp
 
 g1CollectedHeap.inline.hpp              concurrentMark.hpp
@@ -166,10 +172,11 @@
 g1CollectorPolicy.cpp			concurrentMarkThread.inline.hpp
 g1CollectorPolicy.cpp			debug.hpp
 g1CollectorPolicy.cpp			java.hpp
-g1CollectorPolicy.cpp                   g1CollectedHeap.hpp
+g1CollectorPolicy.cpp                   g1CollectedHeap.inline.hpp
 g1CollectorPolicy.cpp                   g1CollectorPolicy.hpp
 g1CollectorPolicy.cpp                   heapRegionRemSet.hpp
 g1CollectorPolicy.cpp			mutexLocker.hpp
+g1CollectorPolicy.cpp			gcPolicyCounters.hpp
 
 g1CollectorPolicy.hpp                   collectorPolicy.hpp
 g1CollectorPolicy.hpp                   collectionSetChooser.hpp
@@ -187,7 +194,7 @@
 g1MarkSweep.cpp                         codeCache.hpp
 g1MarkSweep.cpp                         events.hpp
 g1MarkSweep.cpp                         fprofiler.hpp
-g1MarkSweep.hpp                         g1CollectedHeap.hpp
+g1MarkSweep.hpp                         g1CollectedHeap.inline.hpp
 g1MarkSweep.cpp                         g1MarkSweep.hpp
 g1MarkSweep.cpp                         gcLocker.hpp
 g1MarkSweep.cpp                         genCollectedHeap.hpp
@@ -226,7 +233,7 @@
 g1MMUTracker.cpp			mutexLocker.hpp
 
 g1MMUTracker.hpp			debug.hpp
-
+g1MMUTracker.hpp			allocation.hpp
 g1RemSet.cpp				bufferingOopClosure.hpp
 g1RemSet.cpp				concurrentG1Refine.hpp
 g1RemSet.cpp				concurrentG1RefineThread.hpp
@@ -240,6 +247,7 @@
 g1RemSet.cpp				iterator.hpp
 g1RemSet.cpp				oop.inline.hpp
 
+g1RemSet.inline.hpp			oop.inline.hpp
 g1RemSet.inline.hpp			g1RemSet.hpp
 g1RemSet.inline.hpp			heapRegionRemSet.hpp
 
@@ -250,6 +258,7 @@
 g1SATBCardTableModRefBS.cpp		thread_<os_family>.inline.hpp
 g1SATBCardTableModRefBS.cpp		satbQueue.hpp
 
+g1SATBCardTableModRefBS.hpp		oop.inline.hpp
 g1SATBCardTableModRefBS.hpp		cardTableModRefBS.hpp
 g1SATBCardTableModRefBS.hpp		memRegion.hpp
 
@@ -264,17 +273,19 @@
 heapRegion.cpp                          iterator.hpp
 heapRegion.cpp                          oop.inline.hpp
 
-heapRegion.hpp                          space.hpp
+heapRegion.hpp                          space.inline.hpp
 heapRegion.hpp                          spaceDecorator.hpp
 heapRegion.hpp                          g1BlockOffsetTable.inline.hpp
 heapRegion.hpp                          watermark.hpp
 heapRegion.hpp				g1_specialized_oop_closures.hpp
 heapRegion.hpp				survRateGroup.hpp
+heapRegion.hpp				ageTable.hpp
 
 heapRegionRemSet.hpp			sparsePRT.hpp
 
 heapRegionRemSet.cpp                    allocation.hpp
 heapRegionRemSet.cpp                    bitMap.inline.hpp
+heapRegionRemSet.cpp                    concurrentG1Refine.hpp
 heapRegionRemSet.cpp                    g1BlockOffsetTable.inline.hpp
 heapRegionRemSet.cpp                    g1CollectedHeap.inline.hpp
 heapRegionRemSet.cpp                    heapRegionRemSet.hpp
@@ -283,7 +294,7 @@
 heapRegionRemSet.cpp                    space.inline.hpp
 
 heapRegionSeq.cpp                       allocation.hpp
-heapRegionSeq.cpp                       g1CollectedHeap.hpp
+heapRegionSeq.cpp                       g1CollectedHeap.inline.hpp
 heapRegionSeq.cpp                       heapRegionSeq.hpp
 
 heapRegionSeq.hpp                       growableArray.hpp
@@ -326,6 +337,7 @@
 sparsePRT.hpp				allocation.hpp
 sparsePRT.hpp				cardTableModRefBS.hpp
 sparsePRT.hpp				globalDefinitions.hpp
+sparsePRT.hpp                           g1CollectedHeap.inline.hpp
 sparsePRT.hpp				heapRegion.hpp
 sparsePRT.hpp				mutex.hpp
 
@@ -334,18 +346,18 @@
 survRateGroup.hpp			numberSeq.hpp
 
 survRateGroup.cpp			allocation.hpp
-survRateGroup.cpp			g1CollectedHeap.hpp
+survRateGroup.cpp			g1CollectedHeap.inline.hpp
 survRateGroup.cpp			g1CollectorPolicy.hpp
 survRateGroup.cpp			heapRegion.hpp
 survRateGroup.cpp			survRateGroup.hpp
 
 thread.cpp				concurrentMarkThread.inline.hpp
 
-universe.cpp                            g1CollectedHeap.hpp
+universe.cpp                            g1CollectedHeap.inline.hpp
 universe.cpp                            g1CollectorPolicy.hpp
 
 vm_operations_g1.hpp			vmGCOperations.hpp
 
 vm_operations_g1.cpp			vm_operations_g1.hpp
-vm_operations_g1.cpp                    g1CollectedHeap.hpp
+vm_operations_g1.cpp                    g1CollectedHeap.inline.hpp
 vm_operations_g1.cpp                    isGCActiveMark.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_parNew	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/includeDB_gc_parNew	Tue Jul 28 13:50:07 2009 -0600
@@ -29,6 +29,8 @@
 asParNewGeneration.cpp                  cmsAdaptiveSizePolicy.hpp
 asParNewGeneration.cpp                  cmsGCAdaptivePolicyCounters.hpp
 asParNewGeneration.cpp                  defNewGeneration.inline.hpp
+asParNewGeneration.cpp                  markOop.inline.hpp
+asParNewGeneration.cpp                  markSweep.inline.hpp
 asParNewGeneration.cpp                  oop.pcgc.inline.hpp
 asParNewGeneration.cpp                  parNewGeneration.hpp
 asParNewGeneration.cpp                  referencePolicy.hpp
@@ -40,7 +42,7 @@
 parCardTableModRefBS.cpp                java.hpp
 parCardTableModRefBS.cpp                mutexLocker.hpp
 parCardTableModRefBS.cpp                sharedHeap.hpp
-parCardTableModRefBS.cpp                space.hpp
+parCardTableModRefBS.cpp                space.inline.hpp
 parCardTableModRefBS.cpp                universe.hpp
 parCardTableModRefBS.cpp                virtualspace.hpp
 
@@ -77,6 +79,7 @@
 parNewGeneration.cpp                    sharedHeap.hpp
 parNewGeneration.cpp                    space.hpp
 parNewGeneration.cpp                    spaceDecorator.hpp
+parNewGeneration.cpp                    thread.hpp
 parNewGeneration.cpp                    workgroup.hpp
 
 parNewGeneration.hpp                    defNewGeneration.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -302,6 +302,8 @@
 psOldGen.hpp                            spaceCounters.hpp
 
 psPermGen.cpp                           gcUtil.hpp
+psPermGen.cpp                           markOop.inline.hpp
+psPermGen.cpp                           markSweep.inline.hpp
 psPermGen.cpp                           parallelScavengeHeap.hpp
 psPermGen.cpp                           psMarkSweepDecorator.hpp
 psPermGen.cpp                           psParallelCompact.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_shared	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/includeDB_gc_shared	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,4 +100,4 @@
 spaceCounters.hpp                       perfData.hpp
 spaceCounters.hpp                       generationCounters.hpp
 
-vmGCOperations.cpp                      g1CollectedHeap.hpp
+vmGCOperations.cpp                      g1CollectedHeap.inline.hpp
--- a/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -31,9 +31,10 @@
                                                         bool clear,
                                                         int n_threads) {
   if (n_threads > 0) {
-    assert(n_threads == (int)ParallelGCThreads, "# worker threads != # requested!");
-
-      // Make sure the LNC array is valid for the space.
+    assert((n_threads == 1 && ParallelGCThreads == 0) ||
+           n_threads <= (int)ParallelGCThreads,
+           "# worker threads != # requested!");
+    // Make sure the LNC array is valid for the space.
     jbyte**   lowest_non_clean;
     uintptr_t lowest_non_clean_base_chunk_index;
     size_t    lowest_non_clean_chunk_size;
--- a/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/gc_implementation/parNew/parGCAllocBuffer.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -63,9 +63,8 @@
   // return NULL.
   HeapWord* allocate(size_t word_sz) {
     HeapWord* res = _top;
-    HeapWord* new_top = _top + word_sz;
-    if (new_top <= _end) {
-      _top = new_top;
+    if (pointer_delta(_end, _top) >= word_sz) {
+      _top = _top + word_sz;
       return res;
     } else {
       return NULL;
@@ -75,10 +74,9 @@
   // Undo the last allocation in the buffer, which is required to be of the
   // "obj" of the given "word_sz".
   void undo_allocation(HeapWord* obj, size_t word_sz) {
-    assert(_top - word_sz >= _bottom
-           && _top - word_sz == obj,
-           "Bad undo_allocation");
-    _top = _top - word_sz;
+    assert(pointer_delta(_top, _bottom) >= word_sz, "Bad undo");
+    assert(pointer_delta(_top, obj)     == word_sz, "Bad undo");
+    _top = obj;
   }
 
   // The total (word) size of the buffer, including both allocated and
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,12 @@
                                        Generation* old_gen_,
                                        int thread_num_,
                                        ObjToScanQueueSet* work_queue_set_,
+                                       GrowableArray<oop>**  overflow_stack_set_,
                                        size_t desired_plab_sz_,
                                        ParallelTaskTerminator& term_) :
-  _to_space(to_space_), _old_gen(old_gen_), _thread_num(thread_num_),
+  _to_space(to_space_), _old_gen(old_gen_), _young_gen(gen_), _thread_num(thread_num_),
   _work_queue(work_queue_set_->queue(thread_num_)), _to_space_full(false),
+  _overflow_stack(overflow_stack_set_[thread_num_]),
   _ageTable(false), // false ==> not the global age table, no perf data.
   _to_space_alloc_buffer(desired_plab_sz_),
   _to_space_closure(gen_, this), _old_gen_closure(gen_, this),
@@ -81,7 +83,7 @@
   assert(old->is_objArray(), "must be obj array");
   assert(old->is_forwarded(), "must be forwarded");
   assert(Universe::heap()->is_in_reserved(old), "must be in heap.");
-  assert(!_old_gen->is_in(old), "must be in young generation.");
+  assert(!old_gen()->is_in(old), "must be in young generation.");
 
   objArrayOop obj = objArrayOop(old->forwardee());
   // Process ParGCArrayScanChunk elements now
@@ -119,26 +121,68 @@
 
 void ParScanThreadState::trim_queues(int max_size) {
   ObjToScanQueue* queue = work_queue();
-  while (queue->size() > (juint)max_size) {
-    oop obj_to_scan;
-    if (queue->pop_local(obj_to_scan)) {
-      note_pop();
-
-      if ((HeapWord *)obj_to_scan < young_old_boundary()) {
-        if (obj_to_scan->is_objArray() &&
-            obj_to_scan->is_forwarded() &&
-            obj_to_scan->forwardee() != obj_to_scan) {
-          scan_partial_array_and_push_remainder(obj_to_scan);
+  do {
+    while (queue->size() > (juint)max_size) {
+      oop obj_to_scan;
+      if (queue->pop_local(obj_to_scan)) {
+        note_pop();
+        if ((HeapWord *)obj_to_scan < young_old_boundary()) {
+          if (obj_to_scan->is_objArray() &&
+              obj_to_scan->is_forwarded() &&
+              obj_to_scan->forwardee() != obj_to_scan) {
+            scan_partial_array_and_push_remainder(obj_to_scan);
+          } else {
+            // object is in to_space
+            obj_to_scan->oop_iterate(&_to_space_closure);
+          }
         } else {
-          // object is in to_space
-          obj_to_scan->oop_iterate(&_to_space_closure);
+          // object is in old generation
+          obj_to_scan->oop_iterate(&_old_gen_closure);
         }
-      } else {
-        // object is in old generation
-        obj_to_scan->oop_iterate(&_old_gen_closure);
       }
     }
+    // For the  case of compressed oops, we have a private, non-shared
+    // overflow stack, so we eagerly drain it so as to more evenly
+    // distribute load early. Note: this may be good to do in
+    // general rather than delay for the final stealing phase.
+    // If applicable, we'll transfer a set of objects over to our
+    // work queue, allowing them to be stolen and draining our
+    // private overflow stack.
+  } while (ParGCTrimOverflow && young_gen()->take_from_overflow_list(this));
+}
+
+bool ParScanThreadState::take_from_overflow_stack() {
+  assert(ParGCUseLocalOverflow, "Else should not call");
+  assert(young_gen()->overflow_list() == NULL, "Error");
+  ObjToScanQueue* queue = work_queue();
+  GrowableArray<oop>* of_stack = overflow_stack();
+  uint num_overflow_elems = of_stack->length();
+  uint num_take_elems     = MIN2(MIN2((queue->max_elems() - queue->size())/4,
+                                      (juint)ParGCDesiredObjsFromOverflowList),
+                                 num_overflow_elems);
+  // Transfer the most recent num_take_elems from the overflow
+  // stack to our work queue.
+  for (size_t i = 0; i != num_take_elems; i++) {
+    oop cur = of_stack->pop();
+    oop obj_to_push = cur->forwardee();
+    assert(Universe::heap()->is_in_reserved(cur), "Should be in heap");
+    assert(!old_gen()->is_in_reserved(cur), "Should be in young gen");
+    assert(Universe::heap()->is_in_reserved(obj_to_push), "Should be in heap");
+    if (should_be_partially_scanned(obj_to_push, cur)) {
+      assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned");
+      obj_to_push = cur;
+    }
+    bool ok = queue->push(obj_to_push);
+    assert(ok, "Should have succeeded");
   }
+  assert(young_gen()->overflow_list() == NULL, "Error");
+  return num_take_elems > 0;  // was something transferred?
+}
+
+void ParScanThreadState::push_on_overflow_stack(oop p) {
+  assert(ParGCUseLocalOverflow, "Else should not call");
+  overflow_stack()->push(p);
+  assert(young_gen()->overflow_list() == NULL, "Error");
 }
 
 HeapWord* ParScanThreadState::alloc_in_to_space_slow(size_t word_sz) {
@@ -213,6 +257,7 @@
                         ParNewGeneration&       gen,
                         Generation&             old_gen,
                         ObjToScanQueueSet&      queue_set,
+                        GrowableArray<oop>**    overflow_stacks_,
                         size_t                  desired_plab_sz,
                         ParallelTaskTerminator& term);
   inline ParScanThreadState& thread_sate(int i);
@@ -235,6 +280,7 @@
 ParScanThreadStateSet::ParScanThreadStateSet(
   int num_threads, Space& to_space, ParNewGeneration& gen,
   Generation& old_gen, ObjToScanQueueSet& queue_set,
+  GrowableArray<oop>** overflow_stack_set_,
   size_t desired_plab_sz, ParallelTaskTerminator& term)
   : ResourceArray(sizeof(ParScanThreadState), num_threads),
     _gen(gen), _next_gen(old_gen), _term(term),
@@ -245,7 +291,7 @@
   for (int i = 0; i < num_threads; ++i) {
     new ((ParScanThreadState*)_data + i)
         ParScanThreadState(&to_space, &gen, &old_gen, i, &queue_set,
-                           desired_plab_sz, term);
+                           overflow_stack_set_, desired_plab_sz, term);
   }
 }
 
@@ -404,6 +450,8 @@
     if (terminator()->offer_termination()) break;
     par_scan_state()->end_term_time();
   }
+  assert(par_gen()->_overflow_list == NULL && par_gen()->_num_par_pushes == 0,
+         "Broken overflow list?");
   // Finish the last termination pause.
   par_scan_state()->end_term_time();
 }
@@ -423,8 +471,7 @@
   ResourceMark rm;
   HandleMark hm;
   // We would need multiple old-gen queues otherwise.
-  guarantee(gch->n_gens() == 2,
-     "Par young collection currently only works with one older gen.");
+  assert(gch->n_gens() == 2, "Par young collection currently only works with one older gen.");
 
   Generation* old_gen = gch->next_gen(_gen);
 
@@ -456,6 +503,8 @@
   _is_alive_closure(this),
   _plab_stats(YoungPLABSize, PLABWeight)
 {
+  NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
+  NOT_PRODUCT(_num_par_pushes = 0;)
   _task_queues = new ObjToScanQueueSet(ParallelGCThreads);
   guarantee(_task_queues != NULL, "task_queues allocation failure.");
 
@@ -469,6 +518,17 @@
   for (uint i2 = 0; i2 < ParallelGCThreads; i2++)
     _task_queues->queue(i2)->initialize();
 
+  _overflow_stacks = NEW_C_HEAP_ARRAY(GrowableArray<oop>*, ParallelGCThreads);
+  guarantee(_overflow_stacks != NULL, "Overflow stack set allocation failure");
+  for (uint i = 0; i < ParallelGCThreads; i++) {
+    if (ParGCUseLocalOverflow) {
+      _overflow_stacks[i] = new (ResourceObj::C_HEAP) GrowableArray<oop>(512, true);
+      guarantee(_overflow_stacks[i] != NULL, "Overflow Stack allocation failure.");
+    } else {
+      _overflow_stacks[i] = NULL;
+    }
+  }
+
   if (UsePerfData) {
     EXCEPTION_MARK;
     ResourceMark rm;
@@ -734,7 +794,7 @@
   ParallelTaskTerminator _term(workers->total_workers(), task_queues());
   ParScanThreadStateSet thread_state_set(workers->total_workers(),
                                          *to(), *this, *_next_gen, *task_queues(),
-                                         desired_plab_sz(), _term);
+                                         _overflow_stacks, desired_plab_sz(), _term);
 
   ParNewGenTask tsk(this, _next_gen, reserved().end(), &thread_state_set);
   int n_workers = workers->total_workers();
@@ -993,12 +1053,19 @@
              "push forwarded object");
     }
     // Push it on one of the queues of to-be-scanned objects.
-    if (!par_scan_state->work_queue()->push(obj_to_push)) {
+    bool simulate_overflow = false;
+    NOT_PRODUCT(
+      if (ParGCWorkQueueOverflowALot && should_simulate_overflow()) {
+        // simulate a stack overflow
+        simulate_overflow = true;
+      }
+    )
+    if (simulate_overflow || !par_scan_state->work_queue()->push(obj_to_push)) {
       // Add stats for overflow pushes.
       if (Verbose && PrintGCDetails) {
         gclog_or_tty->print("queue overflow!\n");
       }
-      push_on_overflow_list(old);
+      push_on_overflow_list(old, par_scan_state);
       par_scan_state->note_overflow_push();
     }
     par_scan_state->note_push();
@@ -1110,9 +1177,16 @@
              "push forwarded object");
     }
     // Push it on one of the queues of to-be-scanned objects.
-    if (!par_scan_state->work_queue()->push(obj_to_push)) {
+    bool simulate_overflow = false;
+    NOT_PRODUCT(
+      if (ParGCWorkQueueOverflowALot && should_simulate_overflow()) {
+        // simulate a stack overflow
+        simulate_overflow = true;
+      }
+    )
+    if (simulate_overflow || !par_scan_state->work_queue()->push(obj_to_push)) {
       // Add stats for overflow pushes.
-      push_on_overflow_list(old);
+      push_on_overflow_list(old, par_scan_state);
       par_scan_state->note_overflow_push();
     }
     par_scan_state->note_push();
@@ -1135,89 +1209,231 @@
   return forward_ptr;
 }
 
-void ParNewGeneration::push_on_overflow_list(oop from_space_obj) {
-  oop cur_overflow_list = _overflow_list;
-  // if the object has been forwarded to itself, then we cannot
-  // use the klass pointer for the linked list.  Instead we have
-  // to allocate an oopDesc in the C-Heap and use that for the linked list.
-  if (from_space_obj->forwardee() == from_space_obj) {
-    oopDesc* listhead = NEW_C_HEAP_ARRAY(oopDesc, 1);
-    listhead->forward_to(from_space_obj);
-    from_space_obj = listhead;
+#ifndef PRODUCT
+// It's OK to call this multi-threaded;  the worst thing
+// that can happen is that we'll get a bunch of closely
+// spaced simulated oveflows, but that's OK, in fact
+// probably good as it would exercise the overflow code
+// under contention.
+bool ParNewGeneration::should_simulate_overflow() {
+  if (_overflow_counter-- <= 0) { // just being defensive
+    _overflow_counter = ParGCWorkQueueOverflowInterval;
+    return true;
+  } else {
+    return false;
   }
-  while (true) {
-    from_space_obj->set_klass_to_list_ptr(cur_overflow_list);
-    oop observed_overflow_list =
-      (oop)Atomic::cmpxchg_ptr(from_space_obj, &_overflow_list, cur_overflow_list);
-    if (observed_overflow_list == cur_overflow_list) break;
-    // Otherwise...
-    cur_overflow_list = observed_overflow_list;
+}
+#endif
+
+// In case we are using compressed oops, we need to be careful.
+// If the object being pushed is an object array, then its length
+// field keeps track of the "grey boundary" at which the next
+// incremental scan will be done (see ParGCArrayScanChunk).
+// When using compressed oops, this length field is kept in the
+// lower 32 bits of the erstwhile klass word and cannot be used
+// for the overflow chaining pointer (OCP below). As such the OCP
+// would itself need to be compressed into the top 32-bits in this
+// case. Unfortunately, see below, in the event that we have a
+// promotion failure, the node to be pushed on the list can be
+// outside of the Java heap, so the heap-based pointer compression
+// would not work (we would have potential aliasing between C-heap
+// and Java-heap pointers). For this reason, when using compressed
+// oops, we simply use a worker-thread-local, non-shared overflow
+// list in the form of a growable array, with a slightly different
+// overflow stack draining strategy. If/when we start using fat
+// stacks here, we can go back to using (fat) pointer chains
+// (although some performance comparisons would be useful since
+// single global lists have their own performance disadvantages
+// as we were made painfully aware not long ago, see 6786503).
+#define BUSY (oop(0x1aff1aff))
+void ParNewGeneration::push_on_overflow_list(oop from_space_obj, ParScanThreadState* par_scan_state) {
+  assert(is_in_reserved(from_space_obj), "Should be from this generation");
+  if (ParGCUseLocalOverflow) {
+    // In the case of compressed oops, we use a private, not-shared
+    // overflow stack.
+    par_scan_state->push_on_overflow_stack(from_space_obj);
+  } else {
+    assert(!UseCompressedOops, "Error");
+    // if the object has been forwarded to itself, then we cannot
+    // use the klass pointer for the linked list.  Instead we have
+    // to allocate an oopDesc in the C-Heap and use that for the linked list.
+    // XXX This is horribly inefficient when a promotion failure occurs
+    // and should be fixed. XXX FIX ME !!!
+#ifndef PRODUCT
+    Atomic::inc_ptr(&_num_par_pushes);
+    assert(_num_par_pushes > 0, "Tautology");
+#endif
+    if (from_space_obj->forwardee() == from_space_obj) {
+      oopDesc* listhead = NEW_C_HEAP_ARRAY(oopDesc, 1);
+      listhead->forward_to(from_space_obj);
+      from_space_obj = listhead;
+    }
+    oop observed_overflow_list = _overflow_list;
+    oop cur_overflow_list;
+    do {
+      cur_overflow_list = observed_overflow_list;
+      if (cur_overflow_list != BUSY) {
+        from_space_obj->set_klass_to_list_ptr(cur_overflow_list);
+      } else {
+        from_space_obj->set_klass_to_list_ptr(NULL);
+      }
+      observed_overflow_list =
+        (oop)Atomic::cmpxchg_ptr(from_space_obj, &_overflow_list, cur_overflow_list);
+    } while (cur_overflow_list != observed_overflow_list);
   }
 }
 
-bool
-ParNewGeneration::take_from_overflow_list(ParScanThreadState* par_scan_state) {
+bool ParNewGeneration::take_from_overflow_list(ParScanThreadState* par_scan_state) {
+  bool res;
+
+  if (ParGCUseLocalOverflow) {
+    res = par_scan_state->take_from_overflow_stack();
+  } else {
+    assert(!UseCompressedOops, "Error");
+    res = take_from_overflow_list_work(par_scan_state);
+  }
+  return res;
+}
+
+
+// *NOTE*: The overflow list manipulation code here and
+// in CMSCollector:: are very similar in shape,
+// except that in the CMS case we thread the objects
+// directly into the list via their mark word, and do
+// not need to deal with special cases below related
+// to chunking of object arrays and promotion failure
+// handling.
+// CR 6797058 has been filed to attempt consolidation of
+// the common code.
+// Because of the common code, if you make any changes in
+// the code below, please check the CMS version to see if
+// similar changes might be needed.
+// See CMSCollector::par_take_from_overflow_list() for
+// more extensive documentation comments.
+bool ParNewGeneration::take_from_overflow_list_work(ParScanThreadState* par_scan_state) {
   ObjToScanQueue* work_q = par_scan_state->work_queue();
   // How many to take?
-  int objsFromOverflow = MIN2(work_q->max_elems()/4,
-                              (juint)ParGCDesiredObjsFromOverflowList);
+  size_t objsFromOverflow = MIN2((size_t)(work_q->max_elems() - work_q->size())/4,
+                                 (size_t)ParGCDesiredObjsFromOverflowList);
 
+  assert(par_scan_state->overflow_stack() == NULL, "Error");
+  assert(!UseCompressedOops, "Error");
   if (_overflow_list == NULL) return false;
 
   // Otherwise, there was something there; try claiming the list.
-  oop prefix = (oop)Atomic::xchg_ptr(NULL, &_overflow_list);
-
-  if (prefix == NULL) {
-    return false;
+  oop prefix = (oop)Atomic::xchg_ptr(BUSY, &_overflow_list);
+  // Trim off a prefix of at most objsFromOverflow items
+  Thread* tid = Thread::current();
+  size_t spin_count = (size_t)ParallelGCThreads;
+  size_t sleep_time_millis = MAX2((size_t)1, objsFromOverflow/100);
+  for (size_t spin = 0; prefix == BUSY && spin < spin_count; spin++) {
+    // someone grabbed it before we did ...
+    // ... we spin for a short while...
+    os::sleep(tid, sleep_time_millis, false);
+    if (_overflow_list == NULL) {
+      // nothing left to take
+      return false;
+    } else if (_overflow_list != BUSY) {
+     // try and grab the prefix
+     prefix = (oop)Atomic::xchg_ptr(BUSY, &_overflow_list);
+    }
   }
-  // Trim off a prefix of at most objsFromOverflow items
-  int i = 1;
+  if (prefix == NULL || prefix == BUSY) {
+     // Nothing to take or waited long enough
+     if (prefix == NULL) {
+       // Write back the NULL in case we overwrote it with BUSY above
+       // and it is still the same value.
+       (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY);
+     }
+     return false;
+  }
+  assert(prefix != NULL && prefix != BUSY, "Error");
+  size_t i = 1;
   oop cur = prefix;
   while (i < objsFromOverflow && cur->klass_or_null() != NULL) {
     i++; cur = oop(cur->klass());
   }
 
   // Reattach remaining (suffix) to overflow list
-  if (cur->klass_or_null() != NULL) {
-    oop suffix = oop(cur->klass());
-    cur->set_klass_to_list_ptr(NULL);
-
-    // Find last item of suffix list
-    oop last = suffix;
-    while (last->klass_or_null() != NULL) {
-      last = oop(last->klass());
+  if (cur->klass_or_null() == NULL) {
+    // Write back the NULL in lieu of the BUSY we wrote
+    // above and it is still the same value.
+    if (_overflow_list == BUSY) {
+      (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY);
     }
-    // Atomically prepend suffix to current overflow list
-    oop cur_overflow_list = _overflow_list;
-    while (true) {
-      last->set_klass_to_list_ptr(cur_overflow_list);
-      oop observed_overflow_list =
-        (oop)Atomic::cmpxchg_ptr(suffix, &_overflow_list, cur_overflow_list);
-      if (observed_overflow_list == cur_overflow_list) break;
-      // Otherwise...
-      cur_overflow_list = observed_overflow_list;
+  } else {
+    assert(cur->klass_or_null() != BUSY, "Error");
+    oop suffix = oop(cur->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
+    // able to place back the suffix.
+    oop observed_overflow_list = _overflow_list;
+    oop cur_overflow_list = observed_overflow_list;
+    bool attached = false;
+    while (observed_overflow_list == BUSY || observed_overflow_list == NULL) {
+      observed_overflow_list =
+        (oop) Atomic::cmpxchg_ptr(suffix, &_overflow_list, cur_overflow_list);
+      if (cur_overflow_list == observed_overflow_list) {
+        attached = true;
+        break;
+      } else cur_overflow_list = observed_overflow_list;
+    }
+    if (!attached) {
+      // Too bad, someone else got in in between; we'll need to do a splice.
+      // Find the last item of suffix list
+      oop last = suffix;
+      while (last->klass_or_null() != NULL) {
+        last = oop(last->klass());
+      }
+      // Atomically prepend suffix to current overflow list
+      observed_overflow_list = _overflow_list;
+      do {
+        cur_overflow_list = observed_overflow_list;
+        if (cur_overflow_list != BUSY) {
+          // Do the splice ...
+          last->set_klass_to_list_ptr(cur_overflow_list);
+        } else { // cur_overflow_list == BUSY
+          last->set_klass_to_list_ptr(NULL);
+        }
+        observed_overflow_list =
+          (oop)Atomic::cmpxchg_ptr(suffix, &_overflow_list, cur_overflow_list);
+      } while (cur_overflow_list != observed_overflow_list);
     }
   }
 
   // Push objects on prefix list onto this thread's work queue
-  assert(cur != NULL, "program logic");
+  assert(prefix != NULL && prefix != BUSY, "program logic");
   cur = prefix;
-  int n = 0;
+  ssize_t n = 0;
   while (cur != NULL) {
     oop obj_to_push = cur->forwardee();
     oop next        = oop(cur->klass_or_null());
     cur->set_klass(obj_to_push->klass());
-    if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
-      obj_to_push = cur;
+    // 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.
+    if (!is_in_reserved(cur)) {
+      // This can become a scaling bottleneck when there is work queue overflow coincident
+      // with promotion failure.
+      oopDesc* f = cur;
+      FREE_C_HEAP_ARRAY(oopDesc, f);
+    } else if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
       assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned");
+      obj_to_push = cur;
     }
-    work_q->push(obj_to_push);
+    bool ok = work_q->push(obj_to_push);
+    assert(ok, "Should have succeeded");
     cur = next;
     n++;
   }
   par_scan_state->note_overflow_refill(n);
+#ifndef PRODUCT
+  assert(_num_par_pushes >= n, "Too many pops?");
+  Atomic::add_ptr(-(intptr_t)n, &_num_par_pushes);
+#endif
   return true;
 }
+#undef BUSY
 
 void ParNewGeneration::ref_processor_init()
 {
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // but they must be here to allow ParScanClosure::do_oop_work to be defined
 // in genOopClosures.inline.hpp.
 
-typedef OopTaskQueue    ObjToScanQueue;
-typedef OopTaskQueueSet ObjToScanQueueSet;
+typedef OopTaskQueue       ObjToScanQueue;
+typedef OopTaskQueueSet    ObjToScanQueueSet;
 
 // Enable this to get push/pop/steal stats.
 const int PAR_STATS_ENABLED = 0;
@@ -55,6 +55,7 @@
   friend class ParScanThreadStateSet;
  private:
   ObjToScanQueue *_work_queue;
+  GrowableArray<oop>* _overflow_stack;
 
   ParGCAllocBuffer _to_space_alloc_buffer;
 
@@ -79,6 +80,9 @@
   Space* _to_space;
   Space* to_space() { return _to_space; }
 
+  ParNewGeneration* _young_gen;
+  ParNewGeneration* young_gen() const { return _young_gen; }
+
   Generation* _old_gen;
   Generation* old_gen() { return _old_gen; }
 
@@ -112,7 +116,9 @@
 
   ParScanThreadState(Space* to_space_, ParNewGeneration* gen_,
                      Generation* old_gen_, int thread_num_,
-                     ObjToScanQueueSet* work_queue_set_, size_t desired_plab_sz_,
+                     ObjToScanQueueSet* work_queue_set_,
+                     GrowableArray<oop>** overflow_stack_set_,
+                     size_t desired_plab_sz_,
                      ParallelTaskTerminator& term_);
 
  public:
@@ -134,6 +140,11 @@
   // Decrease queue size below "max_size".
   void trim_queues(int max_size);
 
+  // Private overflow stack usage
+  GrowableArray<oop>* overflow_stack() { return _overflow_stack; }
+  bool take_from_overflow_stack();
+  void push_on_overflow_stack(oop p);
+
   // Is new_obj a candidate for scan_partial_array_and_push_remainder method.
   inline bool should_be_partially_scanned(oop new_obj, oop old_obj) const;
 
@@ -278,6 +289,7 @@
   friend class ParNewRefProcTask;
   friend class ParNewRefProcTaskExecutor;
   friend class ParScanThreadStateSet;
+  friend class ParEvacuateFollowersClosure;
 
  private:
   // XXX use a global constant instead of 64!
@@ -286,9 +298,12 @@
         char pad[64 - sizeof(ObjToScanQueue)];  // prevent false sharing
   };
 
-  // The per-thread work queues, available here for stealing.
+  // The per-worker-thread work queues
   ObjToScanQueueSet* _task_queues;
 
+  // Per-worker-thread local overflow stacks
+  GrowableArray<oop>** _overflow_stacks;
+
   // Desired size of survivor space plab's
   PLABStats _plab_stats;
 
@@ -296,6 +311,7 @@
   // klass-pointers (klass information already copied to the forwarded
   // image.)  Manipulated with CAS.
   oop _overflow_list;
+  NOT_PRODUCT(ssize_t _num_par_pushes;)
 
   // If true, older generation does not support promotion undo, so avoid.
   static bool _avoid_promotion_undo;
@@ -372,13 +388,21 @@
   oop copy_to_survivor_space_with_undo(ParScanThreadState* par_scan_state,
                              oop obj, size_t obj_sz, markOop m);
 
+  // in support of testing overflow code
+  NOT_PRODUCT(int _overflow_counter;)
+  NOT_PRODUCT(bool should_simulate_overflow();)
+
+  // Accessor for overflow list
+  oop overflow_list() { return _overflow_list; }
+
   // Push the given (from-space) object on the global overflow list.
-  void push_on_overflow_list(oop from_space_obj);
+  void push_on_overflow_list(oop from_space_obj, ParScanThreadState* par_scan_state);
 
   // If the global overflow list is non-empty, move some tasks from it
-  // onto "work_q" (which must be empty).  No more than 1/4 of the
-  // max_elems of "work_q" are moved.
+  // onto "work_q" (which need not be empty).  No more than 1/4 of the
+  // available space on "work_q" is used.
   bool take_from_overflow_list(ParScanThreadState* par_scan_state);
+  bool take_from_overflow_list_work(ParScanThreadState* par_scan_state);
 
   // The task queues to be used by parallel GC threads.
   ObjToScanQueueSet* task_queues() {
--- a/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -78,7 +78,7 @@
   }
 
   // Card marks are not precise. The current system can leave us with
-  // a mismash of precise marks and begining of object marks. This means
+  // a mismash of precise marks and beginning of object marks. This means
   // we test for missing precise marks first. If any are found, we don't
   // fail unless the object head is also unmarked.
   virtual void do_object(oop obj) {
@@ -258,7 +258,7 @@
     if (!start_array->object_starts_in_range(slice_start, slice_end)) {
       continue;
     }
-    // Update our begining addr
+    // Update our beginning addr
     HeapWord* first_object = start_array->object_start(slice_start);
     debug_only(oop* first_object_within_slice = (oop*) first_object;)
     if (first_object < slice_start) {
--- a/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -127,7 +127,7 @@
   // Optimized for finding the first object that crosses into
   // a given block. The blocks contain the offset of the last
   // object in that block. Scroll backwards by one, and the first
-  // object hit should be at the begining of the block
+  // object hit should be at the beginning of the block
   HeapWord* object_start(HeapWord* addr) const {
     assert(_covered_region.contains(addr), "Must be in covered region");
     jbyte* block = block_for_addr(addr);
--- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -177,6 +177,7 @@
   // are double-word aligned in 32-bit VMs, but not in 64-bit VMs, so the 32-bit
   // granularity is 2, 64-bit is 1.
   static inline size_t obj_granularity() { return size_t(MinObjAlignment); }
+  static inline int obj_granularity_shift() { return LogMinObjAlignment; }
 
   HeapWord*       _region_start;
   size_t          _region_size;
@@ -299,13 +300,13 @@
 inline size_t
 ParMarkBitMap::bits_to_words(idx_t bits)
 {
-  return bits * obj_granularity();
+  return bits << obj_granularity_shift();
 }
 
 inline ParMarkBitMap::idx_t
 ParMarkBitMap::words_to_bits(size_t words)
 {
-  return words / obj_granularity();
+  return words >> obj_granularity_shift();
 }
 
 inline size_t ParMarkBitMap::obj_size(idx_t beg_bit, idx_t end_bit) const
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,12 +104,38 @@
                   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);
+                            og_align, 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(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;
+      }
+    }
+  }
+
   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,
@@ -799,6 +825,7 @@
   if (young_gen()->is_in_reserved(addr)) {
     assert(young_gen()->is_in(addr),
            "addr should be in allocated part of young gen");
+    if (Debugging)  return NULL;  // called from find() in debug.cpp
     Unimplemented();
   } else if (old_gen()->is_in_reserved(addr)) {
     assert(old_gen()->is_in(addr),
@@ -858,7 +885,7 @@
 }
 
 
-void ParallelScavengeHeap::verify(bool allow_dirty, bool silent) {
+void ParallelScavengeHeap::verify(bool allow_dirty, bool silent, bool option /* ignored */) {
   // Why do we need the total_collections()-filter below?
   if (total_collections() > 0) {
     if (!silent) {
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -200,6 +200,7 @@
 
   void oop_iterate(OopClosure* 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);
 
@@ -216,7 +217,7 @@
   virtual void gc_threads_do(ThreadClosure* tc) const;
   virtual void print_tracing_info() const;
 
-  void verify(bool allow_dirty, bool silent);
+  void verify(bool allow_dirty, bool silent, bool /* option */);
 
   void print_heap_change(size_t prev_used);
 
--- a/src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -26,7 +26,7 @@
 // PrefetchQueue is a FIFO queue of variable length (currently 8).
 //
 // We need to examine the performance penalty of variable lengths.
-// We may also want to split this into cpu dependant bits.
+// We may also want to split this into cpu dependent bits.
 //
 
 const int PREFETCH_QUEUE_SIZE  = 8;
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -125,6 +125,8 @@
     perm_gen->verify_object_start_array();
   }
 
+  heap->pre_full_gc_dump();
+
   // Filled in below to track the state of the young gen after the collection.
   bool eden_empty;
   bool survivors_empty;
@@ -362,6 +364,12 @@
   if (PrintHeapAtGC) {
     Universe::print_heap_after_gc();
   }
+
+  heap->post_full_gc_dump();
+
+#ifdef TRACESPINNING
+  ParallelTaskTerminator::print_termination_counts();
+#endif
 }
 
 bool PSMarkSweep::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/gc_implementation/parallelScavenge/psOldGen.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -116,7 +116,7 @@
   // ObjectSpace stuff
   //
 
-  _object_space = new MutableSpace();
+  _object_space = new MutableSpace(virtual_space()->alignment());
 
   if (_object_space == NULL)
     vm_exit_during_initialization("Could not allocate an old gen space");
@@ -385,10 +385,10 @@
   start_array()->set_covered_region(new_memregion);
   Universe::heap()->barrier_set()->resize_covered_region(new_memregion);
 
-  HeapWord* const virtual_space_high = (HeapWord*) virtual_space()->high();
-
   // ALWAYS do this last!!
-  object_space()->set_end(virtual_space_high);
+  object_space()->initialize(new_memregion,
+                             SpaceDecorator::DontClear,
+                             SpaceDecorator::DontMangle);
 
   assert(new_word_size == heap_word_size(object_space()->capacity_in_bytes()),
     "Sanity");
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -508,6 +508,7 @@
   assert(destination <= target_end, "sanity");
   assert(destination + _region_data[src_region].data_size() > target_end,
     "region should not fit into target space");
+  assert(is_region_aligned(target_end), "sanity");
 
   size_t split_region = src_region;
   HeapWord* split_destination = destination;
@@ -538,14 +539,12 @@
     //         max(top, max(new_top, clear_top))
     //
     // where clear_top is a new field in SpaceInfo.  Would have to set clear_top
-    // to destination + partial_obj_size, where both have the values passed to
-    // this routine.
+    // to target_end.
     const RegionData* const sr = region(split_region);
     const size_t beg_idx =
       addr_to_region_idx(region_align_up(sr->destination() +
                                          sr->partial_obj_size()));
-    const size_t end_idx =
-      addr_to_region_idx(region_align_up(destination + partial_obj_size));
+    const size_t end_idx = addr_to_region_idx(target_end);
 
     if (TraceParallelOldGCSummaryPhase) {
         gclog_or_tty->print_cr("split:  clearing source_region field in ["
@@ -1982,6 +1981,8 @@
     heap->record_gen_tops_before_GC();
   }
 
+  heap->pre_full_gc_dump();
+
   _print_phases = PrintGCDetails && PrintParallelOldGCPhaseTimes;
 
   // Make sure data structures are sane, make the heap parsable, and do other
@@ -2203,6 +2204,12 @@
                            collection_exit.ticks());
     gc_task_manager()->print_task_time_stamps();
   }
+
+  heap->post_full_gc_dump();
+
+#ifdef TRACESPINNING
+  ParallelTaskTerminator::print_termination_counts();
+#endif
 }
 
 bool PSParallelCompact::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -117,6 +117,7 @@
     process_array_chunk(old);
   } else {
     if (p.is_narrow()) {
+      assert(UseCompressedOops, "Error");
       PSScavenge::copy_and_push_safe_barrier(this, (narrowOop*)p);
     } else {
       PSScavenge::copy_and_push_safe_barrier(this, (oop*)p);
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -615,6 +615,10 @@
     gc_task_manager()->print_task_time_stamps();
   }
 
+#ifdef TRACESPINNING
+  ParallelTaskTerminator::print_termination_counts();
+#endif
+
   return !promotion_failure_occurred;
 }
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +78,7 @@
   _special = false;
 }
 
-bool PSVirtualSpace::expand_by(size_t bytes, bool pre_touch) {
+bool PSVirtualSpace::expand_by(size_t bytes) {
   assert(is_aligned(bytes), "arg not aligned");
   DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
 
@@ -92,15 +92,6 @@
     _committed_high_addr += bytes;
   }
 
-  if (pre_touch || AlwaysPreTouch) {
-    for (char* curr = base_addr;
-         curr < _committed_high_addr;
-         curr += os::vm_page_size()) {
-      char tmp = *curr;
-      *curr = 0;
-    }
-  }
-
   return result;
 }
 
@@ -255,7 +246,7 @@
   DEBUG_ONLY(verify());
 }
 
-bool PSVirtualSpaceHighToLow::expand_by(size_t bytes, bool pre_touch) {
+bool PSVirtualSpaceHighToLow::expand_by(size_t bytes) {
   assert(is_aligned(bytes), "arg not aligned");
   DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
 
@@ -269,15 +260,6 @@
     _committed_low_addr -= bytes;
   }
 
-  if (pre_touch || AlwaysPreTouch) {
-    for (char* curr = base_addr;
-         curr < _committed_high_addr;
-         curr += os::vm_page_size()) {
-      char tmp = *curr;
-      *curr = 0;
-    }
-  }
-
   return result;
 }
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +80,7 @@
   inline  void   set_reserved(char* low_addr, char* high_addr, bool special);
   inline  void   set_reserved(ReservedSpace rs);
   inline  void   set_committed(char* low_addr, char* high_addr);
-  virtual bool   expand_by(size_t bytes, bool pre_touch = false);
+  virtual bool   expand_by(size_t bytes);
   virtual bool   shrink_by(size_t bytes);
   virtual size_t expand_into(PSVirtualSpace* space, size_t bytes);
   void           release();
@@ -127,7 +127,7 @@
   PSVirtualSpaceHighToLow(ReservedSpace rs, size_t alignment);
   PSVirtualSpaceHighToLow(ReservedSpace rs);
 
-  virtual bool   expand_by(size_t bytes, bool pre_touch = false);
+  virtual bool   expand_by(size_t bytes);
   virtual bool   shrink_by(size_t bytes);
   virtual size_t expand_into(PSVirtualSpace* space, size_t bytes);
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,12 +64,12 @@
   }
 
   if (UseNUMA) {
-    _eden_space = new MutableNUMASpace();
+    _eden_space = new MutableNUMASpace(virtual_space()->alignment());
   } else {
-    _eden_space = new MutableSpace();
+    _eden_space = new MutableSpace(virtual_space()->alignment());
   }
-  _from_space = new MutableSpace();
-  _to_space   = new MutableSpace();
+  _from_space = new MutableSpace(virtual_space()->alignment());
+  _to_space   = new MutableSpace(virtual_space()->alignment());
 
   if (_eden_space == NULL || _from_space == NULL || _to_space == NULL) {
     vm_exit_during_initialization("Could not allocate a young gen space");
--- a/src/share/vm/gc_implementation/shared/ageTable.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/ageTable.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-/* Copyright 1992 Sun Microsystems, Inc. and Stanford University.
+/* Copyright 1992-2009 Sun Microsystems, Inc. and Stanford University.
    See the LICENSE file for license information. */
 
 # include "incls/_precompiled.incl"
@@ -67,6 +67,12 @@
   }
 }
 
+void ageTable::merge_par(ageTable* subTable) {
+  for (int i = 0; i < table_size; i++) {
+    Atomic::add_ptr(subTable->sizes[i], &sizes[i]);
+  }
+}
+
 int ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
   size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
   size_t total = 0;
--- a/src/share/vm/gc_implementation/shared/ageTable.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/ageTable.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-/* Copyright 1992 Sun Microsystems, Inc. and Stanford University.
+/* Copyright 1992-2009 Sun Microsystems, Inc. and Stanford University.
    See the LICENSE file for license information. */
 
 // Age table for adaptive feedback-mediated tenuring (scavenging)
@@ -56,6 +56,7 @@
   // Merge another age table with the current one.  Used
   // for parallel young generation gc.
   void merge(ageTable* subTable);
+  void merge_par(ageTable* subTable);
 
   // calculate new tenuring threshold based on age information
   int compute_tenuring_threshold(size_t survivor_capacity);
--- a/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -27,13 +27,12 @@
 # include "incls/_precompiled.incl"
 # include "incls/_concurrentGCThread.cpp.incl"
 
-bool ConcurrentGCThread::_should_terminate    = false;
-bool ConcurrentGCThread::_has_terminated      = false;
 int  ConcurrentGCThread::_CGC_flag            = CGC_nil;
 
 SuspendibleThreadSet ConcurrentGCThread::_sts;
 
-ConcurrentGCThread::ConcurrentGCThread() {
+ConcurrentGCThread::ConcurrentGCThread() :
+  _should_terminate(false), _has_terminated(false) {
   _sts.initialize();
 };
 
--- a/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -72,8 +72,8 @@
   friend class VMStructs;
 
 protected:
-  static bool _should_terminate;
-  static bool _has_terminated;
+  bool _should_terminate;
+  bool _has_terminated;
 
   enum CGC_flag_type {
     CGC_nil           = 0x0,
--- a/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,6 +1,6 @@
 
 /*
- * Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 "incls/_mutableNUMASpace.cpp.incl"
 
 
-MutableNUMASpace::MutableNUMASpace() {
+MutableNUMASpace::MutableNUMASpace(size_t alignment) : MutableSpace(alignment) {
   _lgrp_spaces = new (ResourceObj::C_HEAP) GrowableArray<LGRPSpace*>(0, true);
   _page_size = os::vm_page_size();
   _adaptation_cycles = 0;
@@ -74,7 +74,7 @@
   for (int i = 0; i < lgrp_spaces()->length(); i++) {
     LGRPSpace *ls = lgrp_spaces()->at(i);
     MutableSpace *s = ls->space();
-    if (s->top() < top()) { // For all spaces preceeding the one containing top()
+    if (s->top() < top()) { // For all spaces preceding the one containing top()
       if (s->free_in_words() > 0) {
         size_t area_touched_words = pointer_delta(s->end(), s->top());
         CollectedHeap::fill_with_object(s->top(), area_touched_words);
@@ -221,7 +221,7 @@
         }
       }
       if (!found) {
-        lgrp_spaces()->append(new LGRPSpace(lgrp_ids[i]));
+        lgrp_spaces()->append(new LGRPSpace(lgrp_ids[i], alignment()));
       }
     }
 
@@ -443,10 +443,10 @@
   // Is there bottom?
   if (new_region.start() < intersection.start()) { // Yes
     // Try to coalesce small pages into a large one.
-    if (UseLargePages && page_size() >= os::large_page_size()) {
-      HeapWord* p = (HeapWord*)round_to((intptr_t) intersection.start(), os::large_page_size());
+    if (UseLargePages && page_size() >= alignment()) {
+      HeapWord* p = (HeapWord*)round_to((intptr_t) intersection.start(), alignment());
       if (new_region.contains(p)
-          && pointer_delta(p, new_region.start(), sizeof(char)) >= os::large_page_size()) {
+          && pointer_delta(p, new_region.start(), sizeof(char)) >= alignment()) {
         if (intersection.contains(p)) {
           intersection = MemRegion(p, intersection.end());
         } else {
@@ -462,10 +462,10 @@
   // Is there top?
   if (intersection.end() < new_region.end()) { // Yes
     // Try to coalesce small pages into a large one.
-    if (UseLargePages && page_size() >= os::large_page_size()) {
-      HeapWord* p = (HeapWord*)round_down((intptr_t) intersection.end(), os::large_page_size());
+    if (UseLargePages && page_size() >= alignment()) {
+      HeapWord* p = (HeapWord*)round_down((intptr_t) intersection.end(), alignment());
       if (new_region.contains(p)
-          && pointer_delta(new_region.end(), p, sizeof(char)) >= os::large_page_size()) {
+          && pointer_delta(new_region.end(), p, sizeof(char)) >= alignment()) {
         if (intersection.contains(p)) {
           intersection = MemRegion(intersection.start(), p);
         } else {
@@ -504,12 +504,12 @@
             // That's the only case we have to make an additional bias_region() call.
             HeapWord* start = invalid_region->start();
             HeapWord* end = invalid_region->end();
-            if (UseLargePages && page_size() >= os::large_page_size()) {
-              HeapWord *p = (HeapWord*)round_down((intptr_t) start, os::large_page_size());
+            if (UseLargePages && page_size() >= alignment()) {
+              HeapWord *p = (HeapWord*)round_down((intptr_t) start, alignment());
               if (new_region.contains(p)) {
                 start = p;
               }
-              p = (HeapWord*)round_to((intptr_t) end, os::large_page_size());
+              p = (HeapWord*)round_to((intptr_t) end, alignment());
               if (new_region.contains(end)) {
                 end = p;
               }
@@ -526,7 +526,8 @@
 
 void MutableNUMASpace::initialize(MemRegion mr,
                                   bool clear_space,
-                                  bool mangle_space) {
+                                  bool mangle_space,
+                                  bool setup_pages) {
   assert(clear_space, "Reallocation will destory data!");
   assert(lgrp_spaces()->length() > 0, "There should be at least one space");
 
@@ -538,7 +539,7 @@
 
   // Compute chunk sizes
   size_t prev_page_size = page_size();
-  set_page_size(UseLargePages ? os::large_page_size() : os::vm_page_size());
+  set_page_size(UseLargePages ? alignment() : os::vm_page_size());
   HeapWord* rounded_bottom = (HeapWord*)round_to((intptr_t) bottom(), page_size());
   HeapWord* rounded_end = (HeapWord*)round_down((intptr_t) end(), page_size());
   size_t base_space_size_pages = pointer_delta(rounded_end, rounded_bottom, sizeof(char)) / page_size();
@@ -666,7 +667,7 @@
     }
 
     // Clear space (set top = bottom) but never mangle.
-    s->initialize(new_region, SpaceDecorator::Clear, SpaceDecorator::DontMangle);
+    s->initialize(new_region, SpaceDecorator::Clear, SpaceDecorator::DontMangle, MutableSpace::DontSetupPages);
 
     set_adaptation_cycles(samples_count());
   }
--- a/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -82,8 +82,8 @@
     char* last_page_scanned()            { return _last_page_scanned; }
     void set_last_page_scanned(char* p)  { _last_page_scanned = p;    }
    public:
-    LGRPSpace(int l) : _lgrp_id(l), _last_page_scanned(NULL), _allocation_failed(false) {
-      _space = new MutableSpace();
+    LGRPSpace(int l, size_t alignment) : _lgrp_id(l), _last_page_scanned(NULL), _allocation_failed(false) {
+      _space = new MutableSpace(alignment);
       _alloc_rate = new AdaptiveWeightedAverage(NUMAChunkResizeWeight);
     }
     ~LGRPSpace() {
@@ -183,10 +183,10 @@
 
  public:
   GrowableArray<LGRPSpace*>* lgrp_spaces() const     { return _lgrp_spaces;       }
-  MutableNUMASpace();
+  MutableNUMASpace(size_t alignment);
   virtual ~MutableNUMASpace();
   // Space initialization.
-  virtual void initialize(MemRegion mr, bool clear_space, bool mangle_space);
+  virtual void initialize(MemRegion mr, bool clear_space, bool mangle_space, bool setup_pages = SetupPages);
   // Update space layout if necessary. Do all adaptive resizing job.
   virtual void update();
   // Update allocation rate averages.
--- a/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 "incls/_precompiled.incl"
 # include "incls/_mutableSpace.cpp.incl"
 
-MutableSpace::MutableSpace(): ImmutableSpace(), _top(NULL) {
+MutableSpace::MutableSpace(size_t alignment): ImmutableSpace(), _top(NULL), _alignment(alignment) {
+  assert(MutableSpace::alignment() >= 0 &&
+         MutableSpace::alignment() % os::vm_page_size() == 0,
+         "Space should be aligned");
   _mangler = new MutableSpaceMangler(this);
 }
 
@@ -33,16 +36,88 @@
   delete _mangler;
 }
 
+void MutableSpace::numa_setup_pages(MemRegion mr, bool clear_space) {
+  if (!mr.is_empty()) {
+    size_t page_size = UseLargePages ? alignment() : os::vm_page_size();
+    HeapWord *start = (HeapWord*)round_to((intptr_t) mr.start(), page_size);
+    HeapWord *end =  (HeapWord*)round_down((intptr_t) mr.end(), page_size);
+    if (end > start) {
+      size_t size = pointer_delta(end, start, sizeof(char));
+      if (clear_space) {
+        // Prefer page reallocation to migration.
+        os::free_memory((char*)start, size);
+      }
+      os::numa_make_global((char*)start, size);
+    }
+  }
+}
+
+void MutableSpace::pretouch_pages(MemRegion mr) {
+  for (volatile char *p = (char*)mr.start(); p < (char*)mr.end(); p += os::vm_page_size()) {
+    char t = *p; *p = t;
+  }
+}
+
 void MutableSpace::initialize(MemRegion mr,
                               bool clear_space,
-                              bool mangle_space) {
-  HeapWord* bottom = mr.start();
-  HeapWord* end    = mr.end();
+                              bool mangle_space,
+                              bool setup_pages) {
+
+  assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()),
+         "invalid space boundaries");
 
-  assert(Universe::on_page_boundary(bottom) && Universe::on_page_boundary(end),
-         "invalid space boundaries");
-  set_bottom(bottom);
-  set_end(end);
+  if (setup_pages && (UseNUMA || AlwaysPreTouch)) {
+    // The space may move left and right or expand/shrink.
+    // We'd like to enforce the desired page placement.
+    MemRegion head, tail;
+    if (last_setup_region().is_empty()) {
+      // If it's the first initialization don't limit the amount of work.
+      head = mr;
+      tail = MemRegion(mr.end(), mr.end());
+    } else {
+      // Is there an intersection with the address space?
+      MemRegion intersection = last_setup_region().intersection(mr);
+      if (intersection.is_empty()) {
+        intersection = MemRegion(mr.end(), mr.end());
+      }
+      // All the sizes below are in words.
+      size_t head_size = 0, tail_size = 0;
+      if (mr.start() <= intersection.start()) {
+        head_size = pointer_delta(intersection.start(), mr.start());
+      }
+      if(intersection.end() <= mr.end()) {
+        tail_size = pointer_delta(mr.end(), intersection.end());
+      }
+      // Limit the amount of page manipulation if necessary.
+      if (NUMASpaceResizeRate > 0 && !AlwaysPreTouch) {
+        const size_t change_size = head_size + tail_size;
+        const float setup_rate_words = NUMASpaceResizeRate >> LogBytesPerWord;
+        head_size = MIN2((size_t)(setup_rate_words * head_size / change_size),
+                         head_size);
+        tail_size = MIN2((size_t)(setup_rate_words * tail_size / change_size),
+                         tail_size);
+      }
+      head = MemRegion(intersection.start() - head_size, intersection.start());
+      tail = MemRegion(intersection.end(), intersection.end() + tail_size);
+    }
+    assert(mr.contains(head) && mr.contains(tail), "Sanity");
+
+    if (UseNUMA) {
+      numa_setup_pages(head, clear_space);
+      numa_setup_pages(tail, clear_space);
+    }
+
+    if (AlwaysPreTouch) {
+      pretouch_pages(head);
+      pretouch_pages(tail);
+    }
+
+    // Remember where we stopped so that we can continue later.
+    set_last_setup_region(MemRegion(head.start(), tail.end()));
+  }
+
+  set_bottom(mr.start());
+  set_end(mr.end());
 
   if (clear_space) {
     clear(mangle_space);
--- a/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // A MutableSpace is a subtype of ImmutableSpace that supports the
 // concept of allocation. This includes the concepts that a space may
 // be only partially full, and the querry methods that go with such
-// an assumption.
+// an assumption. MutableSpace is also responsible for minimizing the
+// page allocation time by having the memory pretouched (with
+// AlwaysPretouch) and for optimizing page placement on NUMA systems
+// by make the underlying region interleaved (with UseNUMA).
 //
 // Invariant: (ImmutableSpace +) bottom() <= top() <= end()
 // top() is inclusive and end() is exclusive.
@@ -37,15 +40,23 @@
 
   // Helper for mangling unused space in debug builds
   MutableSpaceMangler* _mangler;
-
+  // The last region which page had been setup to be interleaved.
+  MemRegion _last_setup_region;
+  size_t _alignment;
  protected:
   HeapWord* _top;
 
   MutableSpaceMangler* mangler() { return _mangler; }
 
+  void numa_setup_pages(MemRegion mr, bool clear_space);
+  void pretouch_pages(MemRegion mr);
+
+  void set_last_setup_region(MemRegion mr) { _last_setup_region = mr;   }
+  MemRegion last_setup_region() const      { return _last_setup_region; }
+
  public:
   virtual ~MutableSpace();
-  MutableSpace();
+  MutableSpace(size_t page_size);
 
   // Accessors
   HeapWord* top() const                    { return _top;    }
@@ -57,13 +68,20 @@
   virtual void set_bottom(HeapWord* value) { _bottom = value; }
   virtual void set_end(HeapWord* value)    { _end = value; }
 
+  size_t alignment()                       { return _alignment; }
+
   // Returns a subregion containing all objects in this space.
   MemRegion used_region() { return MemRegion(bottom(), top()); }
 
+  static const bool SetupPages = true;
+  static const bool DontSetupPages = false;
+
   // Initialization
   virtual void initialize(MemRegion mr,
                           bool clear_space,
-                          bool mangle_space);
+                          bool mangle_space,
+                          bool setup_pages = SetupPages);
+
   virtual void clear(bool mangle_space);
   // Does the usual initialization but optionally resets top to bottom.
 #if 0  // MANGLE_SPACE
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -121,7 +121,7 @@
     // make the heap parsable (no need to retire TLABs)
     ch->ensure_parsability(false);
   }
-  HeapInspection::heap_inspection(_out);
+  HeapInspection::heap_inspection(_out, _need_prologue /* need_prologue */);
 }
 
 
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -112,13 +112,16 @@
  private:
   outputStream* _out;
   bool _full_gc;
+  bool _need_prologue;
  public:
-  VM_GC_HeapInspection(outputStream* out, bool request_full_gc) :
+  VM_GC_HeapInspection(outputStream* out, bool request_full_gc,
+                       bool need_prologue) :
     VM_GC_Operation(0 /* total collections,      dummy, ignored */,
                     0 /* total full collections, dummy, ignored */,
                     request_full_gc) {
     _out = out;
     _full_gc = request_full_gc;
+    _need_prologue = need_prologue;
   }
 
   ~VM_GC_HeapInspection() {}
--- a/src/share/vm/gc_interface/collectedHeap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_interface/collectedHeap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -294,3 +294,29 @@
     ThreadLocalAllocBuffer::resize_all_tlabs();
   }
 }
+
+void CollectedHeap::pre_full_gc_dump() {
+  if (HeapDumpBeforeFullGC) {
+    TraceTime tt("Heap Dump: ", PrintGCDetails, false, gclog_or_tty);
+    // We are doing a "major" collection and a heap dump before
+    // major collection has been requested.
+    HeapDumper::dump_heap();
+  }
+  if (PrintClassHistogramBeforeFullGC) {
+    TraceTime tt("Class Histogram: ", PrintGCDetails, true, gclog_or_tty);
+    VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
+    inspector.doit();
+  }
+}
+
+void CollectedHeap::post_full_gc_dump() {
+  if (HeapDumpAfterFullGC) {
+    TraceTime tt("Heap Dump", PrintGCDetails, false, gclog_or_tty);
+    HeapDumper::dump_heap();
+  }
+  if (PrintClassHistogramAfterFullGC) {
+    TraceTime tt("Class Histogram", PrintGCDetails, true, gclog_or_tty);
+    VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
+    inspector.doit();
+  }
+}
--- a/src/share/vm/gc_interface/collectedHeap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_interface/collectedHeap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +42,7 @@
 class CollectedHeap : public CHeapObj {
   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;
@@ -82,8 +83,6 @@
   // Reinitialize tlabs before resuming mutators.
   virtual void resize_all_tlabs();
 
-  debug_only(static void check_for_valid_allocation_state();)
-
  protected:
   // Allocate from the current thread's TLAB, with broken-out slow path.
   inline static HeapWord* allocate_from_tlab(Thread* thread, size_t size);
@@ -142,6 +141,7 @@
     PRODUCT_RETURN;
   virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size)
     PRODUCT_RETURN;
+  debug_only(static void check_for_valid_allocation_state();)
 
  public:
   enum Name {
@@ -466,6 +466,10 @@
   // 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.
@@ -510,6 +514,10 @@
   // Perform any cleanup actions necessary before allowing a verification.
   virtual void prepare_for_verify() = 0;
 
+  // Generate any dumps preceding or following a full gc
+  void pre_full_gc_dump();
+  void post_full_gc_dump();
+
   virtual void print() const = 0;
   virtual void print_on(outputStream* st) const = 0;
 
@@ -525,7 +533,7 @@
   virtual void print_tracing_info() const = 0;
 
   // Heap verification
-  virtual void verify(bool allow_dirty, bool silent) = 0;
+  virtual void verify(bool allow_dirty, bool silent, bool option) = 0;
 
   // Non product verification and debugging.
 #ifndef PRODUCT
--- a/src/share/vm/gc_interface/collectedHeap.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_interface/collectedHeap.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/gc_interface/gcCause.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/gc_interface/gcCause.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -60,7 +60,7 @@
     _old_generation_too_full_to_scavenge,
     _adaptive_size_policy,
 
-    _g1_inc_collection_pause, _g1_pop_region_collection_pause,
+    _g1_inc_collection_pause,
 
     _last_ditch_collection,
     _last_gc_cause
--- a/src/share/vm/includeDB_compiler1	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_compiler1	Tue Jul 28 13:50:07 2009 -0600
@@ -270,6 +270,7 @@
 
 c1_LinearScan.cpp                       bitMap.inline.hpp
 c1_LinearScan.cpp                       c1_CFGPrinter.hpp
+c1_LinearScan.cpp                       c1_CodeStubs.hpp
 c1_LinearScan.cpp                       c1_Compilation.hpp
 c1_LinearScan.cpp                       c1_FrameMap.hpp
 c1_LinearScan.cpp                       c1_IR.hpp
@@ -386,7 +387,7 @@
 c1_ValueSet.cpp                         c1_ValueSet.hpp
 
 c1_ValueSet.hpp                         allocation.hpp
-c1_ValueSet.hpp                         bitMap.hpp
+c1_ValueSet.hpp                         bitMap.inline.hpp
 c1_ValueSet.hpp                         c1_Instruction.hpp
 
 c1_ValueStack.cpp                       c1_IR.hpp
--- a/src/share/vm/includeDB_compiler2	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_compiler2	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,6 +140,7 @@
 c2_globals_<os_family>.hpp              macros.hpp
 
 c2_init_<arch>.cpp                      compile.hpp
+c2_init_<arch>.cpp                      node.hpp
 
 c2compiler.cpp                          ad_<arch_model>.hpp
 c2compiler.cpp                          c2compiler.hpp
@@ -839,6 +840,7 @@
 phase.cpp                               compile.hpp
 phase.cpp                               compileBroker.hpp
 phase.cpp                               nmethod.hpp
+phase.cpp                               node.hpp
 phase.cpp                               phase.hpp
 
 phase.hpp                               port.hpp
--- a/src/share/vm/includeDB_core	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_core	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,7 +176,7 @@
 arguments.cpp                           oop.inline.hpp
 arguments.cpp                           os_<os_family>.inline.hpp
 arguments.cpp                           universe.inline.hpp
-arguments.cpp                           vm_version_<arch_model>.hpp
+arguments.cpp                           vm_version_<arch>.hpp
 
 arguments.hpp                           java.hpp
 arguments.hpp                           perfData.hpp
@@ -241,7 +241,7 @@
 assembler.hpp                           register_<arch>.hpp
 assembler.hpp                           relocInfo.hpp
 assembler.hpp                           top.hpp
-assembler.hpp                           vm_version_<arch_model>.hpp
+assembler.hpp                           vm_version_<arch>.hpp
 
 assembler.inline.hpp                    assembler.hpp
 assembler.inline.hpp                    codeBuffer.hpp
@@ -254,6 +254,7 @@
 assembler_<arch>.cpp              collectedHeap.inline.hpp
 assembler_<arch>.cpp              interfaceSupport.hpp
 assembler_<arch>.cpp              interpreter.hpp
+assembler_<arch>.cpp              methodHandles.hpp
 assembler_<arch>.cpp              objectMonitor.hpp
 assembler_<arch>.cpp              os.hpp
 assembler_<arch>.cpp              resourceArea.hpp
@@ -280,7 +281,7 @@
 
 atomic_<os_arch>.inline.hpp             atomic.hpp
 atomic_<os_arch>.inline.hpp             os.hpp
-atomic_<os_arch>.inline.hpp             vm_version_<arch_model>.hpp
+atomic_<os_arch>.inline.hpp             vm_version_<arch>.hpp
 
 // attachListener is jck optional, put cpp deps in includeDB_features
 
@@ -474,6 +475,7 @@
 cardTableModRefBS.cpp                   mutexLocker.hpp
 cardTableModRefBS.cpp                   sharedHeap.hpp
 cardTableModRefBS.cpp                   space.hpp
+cardTableModRefBS.cpp                   space.inline.hpp
 cardTableModRefBS.cpp                   universe.hpp
 cardTableModRefBS.cpp                   virtualspace.hpp
 
@@ -552,7 +554,6 @@
 ciEnv.cpp                               linkResolver.hpp
 ciEnv.cpp                               methodDataOop.hpp
 ciEnv.cpp                               objArrayKlass.hpp
-ciEnv.cpp                               oop.hpp
 ciEnv.cpp                               oop.inline.hpp
 ciEnv.cpp                               oop.inline2.hpp
 ciEnv.cpp                               oopFactory.hpp
@@ -783,7 +784,6 @@
 ciSignature.cpp                         allocation.inline.hpp
 ciSignature.cpp                         ciSignature.hpp
 ciSignature.cpp                         ciUtilities.hpp
-ciSignature.cpp                         oop.hpp
 ciSignature.cpp                         oop.inline.hpp
 ciSignature.cpp                         signature.hpp
 
@@ -872,6 +872,7 @@
 classFileParser.cpp                     symbolOop.hpp
 classFileParser.cpp                     symbolTable.hpp
 classFileParser.cpp                     systemDictionary.hpp
+classFileParser.cpp                     threadService.hpp
 classFileParser.cpp                     timer.hpp
 classFileParser.cpp                     universe.inline.hpp
 classFileParser.cpp                     verificationType.hpp
@@ -924,6 +925,7 @@
 classLoader.cpp                         symbolOop.hpp
 classLoader.cpp                         systemDictionary.hpp
 classLoader.cpp                         threadCritical.hpp
+classLoader.cpp                         threadService.hpp
 classLoader.cpp                         timer.hpp
 classLoader.cpp                         universe.inline.hpp
 classLoader.cpp                         vmSymbols.hpp
@@ -948,7 +950,6 @@
 classify.cpp                            classify.hpp
 classify.cpp                            systemDictionary.hpp
 
-classify.hpp                            oop.hpp
 classify.hpp                            oop.inline.hpp
 
 codeBlob.cpp                            allocation.inline.hpp
@@ -1183,7 +1184,6 @@
 compilerOracle.cpp                      jniHandles.hpp
 compilerOracle.cpp                      klass.hpp
 compilerOracle.cpp                      methodOop.hpp
-compilerOracle.cpp                      oop.hpp
 compilerOracle.cpp                      oop.inline.hpp
 compilerOracle.cpp                      oopFactory.hpp
 compilerOracle.cpp                      resourceArea.hpp
@@ -1273,6 +1273,7 @@
 cpCacheKlass.cpp                        collectedHeap.hpp
 cpCacheKlass.cpp                        constantPoolOop.hpp
 cpCacheKlass.cpp                        cpCacheKlass.hpp
+cpCacheKlass.cpp                        genOopClosures.inline.hpp
 cpCacheKlass.cpp                        handles.inline.hpp
 cpCacheKlass.cpp                        javaClasses.hpp
 cpCacheKlass.cpp                        markSweep.inline.hpp
@@ -1311,6 +1312,7 @@
 cppInterpreter_<arch>.cpp               debug.hpp
 cppInterpreter_<arch>.cpp               deoptimization.hpp
 cppInterpreter_<arch>.cpp               frame.inline.hpp
+cppInterpreter_<arch>.cpp               interfaceSupport.hpp
 cppInterpreter_<arch>.cpp               interpreterRuntime.hpp
 cppInterpreter_<arch>.cpp               interpreter.hpp
 cppInterpreter_<arch>.cpp               interpreterGenerator.hpp
@@ -1625,7 +1627,6 @@
 frame.cpp                               methodOop.hpp
 frame.cpp                               monitorChunk.hpp
 frame.cpp                               nativeInst_<arch>.hpp
-frame.cpp                               oop.hpp
 frame.cpp                               oop.inline.hpp
 frame.cpp                               oop.inline2.hpp
 frame.cpp                               oopMapCache.hpp
@@ -1793,7 +1794,6 @@
 generation.cpp                          generation.hpp
 generation.cpp                          generation.inline.hpp
 generation.cpp                          java.hpp
-generation.cpp                          oop.hpp
 generation.cpp                          oop.inline.hpp
 generation.cpp                          spaceDecorator.hpp
 generation.cpp                          space.inline.hpp
@@ -2014,7 +2014,7 @@
 instanceKlass.cpp                       vmSymbols.hpp
 
 instanceKlass.hpp                       accessFlags.hpp
-instanceKlass.hpp                       bitMap.hpp
+instanceKlass.hpp                       bitMap.inline.hpp
 instanceKlass.hpp                       constMethodOop.hpp
 instanceKlass.hpp                       constantPoolOop.hpp
 instanceKlass.hpp                       handles.hpp
@@ -2093,6 +2093,7 @@
 interp_masm_<arch_model>.cpp            interpreterRuntime.hpp
 interp_masm_<arch_model>.cpp            interpreter.hpp
 interp_masm_<arch_model>.cpp            jvmtiExport.hpp
+interp_masm_<arch_model>.cpp            jvmtiRedefineClassesTrace.hpp
 interp_masm_<arch_model>.cpp            jvmtiThreadState.hpp
 interp_masm_<arch_model>.cpp            markOop.hpp
 interp_masm_<arch_model>.cpp            methodDataOop.hpp
@@ -2175,7 +2176,7 @@
 interpreterRuntime.cpp                  threadCritical.hpp
 interpreterRuntime.cpp                  universe.inline.hpp
 interpreterRuntime.cpp                  vmSymbols.hpp
-interpreterRuntime.cpp                  vm_version_<arch_model>.hpp
+interpreterRuntime.cpp                  vm_version_<arch>.hpp
 
 interpreterRuntime.hpp                  bytecode.hpp
 interpreterRuntime.hpp                  frame.inline.hpp
@@ -2199,6 +2200,7 @@
 interpreter_<arch_model>.cpp            jvmtiExport.hpp
 interpreter_<arch_model>.cpp            jvmtiThreadState.hpp
 interpreter_<arch_model>.cpp            methodDataOop.hpp
+interpreter_<arch_model>.cpp            methodHandles.hpp
 interpreter_<arch_model>.cpp            methodOop.hpp
 interpreter_<arch_model>.cpp            oop.inline.hpp
 interpreter_<arch_model>.cpp            sharedRuntime.hpp
@@ -2264,7 +2266,6 @@
 java.cpp                                memprofiler.hpp
 java.cpp                                methodOop.hpp
 java.cpp                                objArrayOop.hpp
-java.cpp                                oop.hpp
 java.cpp                                oop.inline.hpp
 java.cpp                                oopFactory.hpp
 java.cpp                                sharedRuntime.hpp
@@ -2278,7 +2279,7 @@
 java.cpp                                universe.hpp
 java.cpp                                vmError.hpp
 java.cpp                                vm_operations.hpp
-java.cpp                                vm_version_<arch_model>.hpp
+java.cpp                                vm_version_<arch>.hpp
 java.cpp                                vtune.hpp
 
 java.hpp                                os.hpp
@@ -2593,6 +2594,7 @@
 linkResolver.cpp                        instanceKlass.hpp
 linkResolver.cpp                        interpreterRuntime.hpp
 linkResolver.cpp                        linkResolver.hpp
+linkResolver.cpp                        methodHandles.hpp
 linkResolver.cpp                        nativeLookup.hpp
 linkResolver.cpp                        objArrayOop.hpp
 linkResolver.cpp                        reflection.hpp
@@ -2809,6 +2811,25 @@
 methodDataOop.hpp                       orderAccess.hpp
 methodDataOop.hpp                       universe.hpp
 
+methodHandles.hpp                       frame.inline.hpp
+methodHandles.hpp                       globals.hpp
+methodHandles.hpp                       interfaceSupport.hpp
+methodHandles.hpp                       javaClasses.hpp
+methodHandles.hpp                       vmSymbols.hpp
+
+methodHandles.cpp                       allocation.inline.hpp
+methodHandles.cpp                       interpreter.hpp
+methodHandles.cpp                       javaCalls.hpp
+methodHandles.cpp                       methodHandles.hpp
+methodHandles.cpp                       oopFactory.hpp
+methodHandles.cpp                       reflection.hpp
+methodHandles.cpp                       signature.hpp
+methodHandles.cpp                       symbolTable.hpp
+
+methodHandles_<arch>.cpp                allocation.inline.hpp
+methodHandles_<arch>.cpp                interpreter.hpp
+methodHandles_<arch>.cpp                methodHandles.hpp
+
 methodKlass.cpp                         collectedHeap.inline.hpp
 methodKlass.cpp                         constMethodKlass.hpp
 methodKlass.cpp                         gcLocker.hpp
@@ -2921,7 +2942,7 @@
 nativeInst_<arch>.cpp                   assembler_<arch>.inline.hpp
 nativeInst_<arch>.cpp                   handles.hpp
 nativeInst_<arch>.cpp                   nativeInst_<arch>.hpp
-nativeInst_<arch>.cpp                   oop.hpp
+nativeInst_<arch>.cpp                   oop.inline.hpp
 nativeInst_<arch>.cpp                   ostream.hpp
 nativeInst_<arch>.cpp                   resourceArea.hpp
 nativeInst_<arch>.cpp                   sharedRuntime.hpp
@@ -3058,6 +3079,7 @@
 oop.inline.hpp                          arrayOop.hpp
 oop.inline.hpp                          atomic.hpp
 oop.inline.hpp                          barrierSet.inline.hpp
+oop.inline.hpp                          bytes_<arch>.hpp
 oop.inline.hpp                          cardTableModRefBS.hpp
 oop.inline.hpp                          collectedHeap.inline.hpp
 oop.inline.hpp                          compactingPermGenGen.hpp
@@ -3151,6 +3173,8 @@
 oopsHierarchy.cpp                       thread_<os_family>.inline.hpp
 
 orderAccess.cpp                         orderAccess.hpp
+orderAccess.cpp                         stubRoutines.hpp
+orderAccess.cpp                         thread.hpp
 
 orderAccess.hpp                         allocation.hpp
 orderAccess.hpp                         os.hpp
@@ -3484,7 +3508,7 @@
 register_<arch>.cpp                     register_<arch>.hpp
 
 register_<arch>.hpp                     register.hpp
-register_<arch>.hpp                     vm_version_<arch_model>.hpp
+register_<arch>.hpp                     vm_version_<arch>.hpp
 
 registerMap.hpp                         globalDefinitions.hpp
 registerMap.hpp                         register_<arch>.hpp
@@ -3669,6 +3693,8 @@
 sharedRuntime.cpp                       interpreter.hpp
 sharedRuntime.cpp                       javaCalls.hpp
 sharedRuntime.cpp                       jvmtiExport.hpp
+sharedRuntime.cpp                       methodHandles.hpp
+sharedRuntime.cpp                       jvmtiRedefineClassesTrace.hpp
 sharedRuntime.cpp                       nativeInst_<arch>.hpp
 sharedRuntime.cpp                       nativeLookup.hpp
 sharedRuntime.cpp                       oop.inline.hpp
@@ -3698,6 +3724,7 @@
 sharedRuntime_<arch_model>.cpp          debugInfoRec.hpp
 sharedRuntime_<arch_model>.cpp          icBuffer.hpp
 sharedRuntime_<arch_model>.cpp          interpreter.hpp
+sharedRuntime_<arch_model>.cpp          jvmtiRedefineClassesTrace.hpp
 sharedRuntime_<arch_model>.cpp          sharedRuntime.hpp
 sharedRuntime_<arch_model>.cpp          vframeArray.hpp
 sharedRuntime_<arch_model>.cpp          vmreg_<arch>.inline.hpp
@@ -3771,6 +3798,7 @@
 
 spaceDecorator.cpp                      copy.hpp
 spaceDecorator.cpp                      spaceDecorator.hpp
+spaceDecorator.cpp                      space.inline.hpp
 
 specialized_oop_closures.cpp            ostream.hpp
 specialized_oop_closures.cpp            specialized_oop_closures.hpp
@@ -3809,7 +3837,7 @@
 stackValue.cpp                          debugInfo.hpp
 stackValue.cpp                          frame.inline.hpp
 stackValue.cpp                          handles.inline.hpp
-stackValue.cpp                          oop.hpp
+stackValue.cpp                          oop.inline.hpp
 stackValue.cpp                          stackValue.hpp
 
 stackValue.hpp                          handles.hpp
@@ -3833,7 +3861,7 @@
 statSampler.cpp                         statSampler.hpp
 statSampler.cpp                         systemDictionary.hpp
 statSampler.cpp                         vmSymbols.hpp
-statSampler.cpp                         vm_version_<arch_model>.hpp
+statSampler.cpp                         vm_version_<arch>.hpp
 
 statSampler.hpp                         perfData.hpp
 statSampler.hpp                         task.hpp
@@ -3854,6 +3882,7 @@
 stubGenerator_<arch_model>.cpp          handles.inline.hpp
 stubGenerator_<arch_model>.cpp          instanceOop.hpp
 stubGenerator_<arch_model>.cpp          interpreter.hpp
+stubGenerator_<arch_model>.cpp          methodHandles.hpp
 stubGenerator_<arch_model>.cpp          methodOop.hpp
 stubGenerator_<arch_model>.cpp          nativeInst_<arch>.hpp
 stubGenerator_<arch_model>.cpp          objArrayKlass.hpp
@@ -3992,6 +4021,7 @@
 systemDictionary.cpp                    resolutionErrors.hpp
 systemDictionary.cpp                    signature.hpp
 systemDictionary.cpp                    systemDictionary.hpp
+systemDictionary.cpp                    threadService.hpp
 systemDictionary.cpp                    typeArrayKlass.hpp
 systemDictionary.cpp                    vmSymbols.hpp
 
@@ -4068,6 +4098,7 @@
 templateTable_<arch_model>.cpp          interpreterRuntime.hpp
 templateTable_<arch_model>.cpp          interpreter.hpp
 templateTable_<arch_model>.cpp          methodDataOop.hpp
+templateTable_<arch_model>.cpp          methodHandles.hpp
 templateTable_<arch_model>.cpp          objArrayKlass.hpp
 templateTable_<arch_model>.cpp          oop.inline.hpp
 templateTable_<arch_model>.cpp          sharedRuntime.hpp
@@ -4294,7 +4325,6 @@
 unhandledOops.cpp                       collectedHeap.hpp
 unhandledOops.cpp                       gcLocker.inline.hpp
 unhandledOops.cpp                       globalDefinitions.hpp
-unhandledOops.cpp                       oop.hpp
 unhandledOops.cpp                       oop.inline.hpp
 unhandledOops.cpp                       thread.hpp
 unhandledOops.cpp                       unhandledOops.hpp
@@ -4430,7 +4460,6 @@
 vframe.cpp                              nmethod.hpp
 vframe.cpp                              objectMonitor.hpp
 vframe.cpp                              objectMonitor.inline.hpp
-vframe.cpp                              oop.hpp
 vframe.cpp                              oop.inline.hpp
 vframe.cpp                              oopMapCache.hpp
 vframe.cpp                              pcDesc.hpp
@@ -4542,7 +4571,6 @@
 vmThread.cpp                            interfaceSupport.hpp
 vmThread.cpp                            methodOop.hpp
 vmThread.cpp                            mutexLocker.hpp
-vmThread.cpp                            oop.hpp
 vmThread.cpp                            oop.inline.hpp
 vmThread.cpp                            os.hpp
 vmThread.cpp                            resourceArea.hpp
@@ -4577,22 +4605,23 @@
 vm_version.cpp                          arguments.hpp
 vm_version.cpp                          oop.inline.hpp
 vm_version.cpp                          universe.hpp
-vm_version.cpp                          vm_version_<arch_model>.hpp
+vm_version.cpp                          vm_version_<arch>.hpp
 
 vm_version.hpp                          allocation.hpp
 vm_version.hpp                          ostream.hpp
 
-vm_version_<arch_model>.cpp             assembler_<arch>.inline.hpp
-vm_version_<arch_model>.cpp             java.hpp
-vm_version_<arch_model>.cpp             os_<os_family>.inline.hpp
-vm_version_<arch_model>.cpp             resourceArea.hpp
-vm_version_<arch_model>.cpp             stubCodeGenerator.hpp
-vm_version_<arch_model>.cpp             vm_version_<arch_model>.hpp
-
-vm_version_<arch_model>.hpp             globals_extension.hpp
-vm_version_<arch_model>.hpp             vm_version.hpp
-
-vm_version_<os_arch>.cpp                vm_version_<arch_model>.hpp
+vm_version_<arch>.cpp                   assembler_<arch>.inline.hpp
+vm_version_<arch>.cpp                   java.hpp
+vm_version_<arch>.cpp                   os_<os_family>.inline.hpp
+vm_version_<arch>.cpp                   resourceArea.hpp
+vm_version_<arch>.cpp                   stubCodeGenerator.hpp
+vm_version_<arch>.cpp                   vm_version_<arch>.hpp
+
+vm_version_<arch>.hpp                   globals_extension.hpp
+vm_version_<arch>.hpp                   vm_version.hpp
+
+vm_version_<os_arch>.cpp                os.hpp
+vm_version_<os_arch>.cpp                vm_version_<arch>.hpp
 
 vmreg.cpp                               assembler.hpp
 vmreg.cpp                               vmreg.hpp
--- a/src/share/vm/includeDB_features	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_features	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,7 @@
 dump.cpp                                javaClasses.hpp
 dump.cpp                                loaderConstraints.hpp
 dump.cpp                                methodDataOop.hpp
-dump.cpp                                oop.hpp
+dump.cpp                                oop.inline.hpp
 dump.cpp                                oopFactory.hpp
 dump.cpp                                resourceArea.hpp
 dump.cpp                                signature.hpp
@@ -59,6 +59,8 @@
 
 dump_<arch_model>.cpp                   assembler_<arch>.inline.hpp
 dump_<arch_model>.cpp                   compactingPermGenGen.hpp
+dump_<arch_model>.cpp                   generation.inline.hpp
+dump_<arch_model>.cpp                   space.inline.hpp
 
 forte.cpp                               collectedHeap.inline.hpp
 forte.cpp                               debugInfoRec.hpp
@@ -235,7 +237,7 @@
 serialize.cpp                           compiledICHolderOop.hpp
 serialize.cpp                           methodDataOop.hpp
 serialize.cpp                           objArrayOop.hpp
-serialize.cpp                           oop.hpp
+serialize.cpp                           oop.inline.hpp
 serialize.cpp                           symbolTable.hpp
 serialize.cpp                           systemDictionary.hpp
 
@@ -293,7 +295,7 @@
 vmStructs.cpp                           objArrayKlass.hpp
 vmStructs.cpp                           objArrayKlassKlass.hpp
 vmStructs.cpp                           objArrayOop.hpp
-vmStructs.cpp                           oop.hpp
+vmStructs.cpp                           oop.inline.hpp
 vmStructs.cpp                           oopMap.hpp
 vmStructs.cpp                           pcDesc.hpp
 vmStructs.cpp                           perfMemory.hpp
--- a/src/share/vm/includeDB_gc	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_gc	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 //
-// Copyright 2001-2005 Sun Microsystems, Inc.  All Rights Reserved.
+// Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
 // 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,10 +26,12 @@
 
 collectedHeap.cpp                       collectedHeap.hpp
 collectedHeap.cpp                       collectedHeap.inline.hpp
+collectedHeap.cpp                       heapDumper.hpp
 collectedHeap.cpp                       init.hpp
 collectedHeap.cpp                       oop.inline.hpp
 collectedHeap.cpp                       systemDictionary.hpp
 collectedHeap.cpp                       thread_<os_family>.inline.hpp
+collectedHeap.cpp                       vmGCOperations.hpp
 
 collectedHeap.hpp                       allocation.hpp
 collectedHeap.hpp                       barrierSet.hpp
--- a/src/share/vm/includeDB_gc_parallel	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_gc_parallel	Tue Jul 28 13:50:07 2009 -0600
@@ -36,6 +36,18 @@
 constantPoolKlass.cpp                   psScavenge.inline.hpp
 constantPoolKlass.cpp                   parOopClosures.inline.hpp
 
+constantPoolKlass.cpp                   cardTableRS.hpp
+constantPoolKlass.cpp                   oop.pcgc.inline.hpp
+constantPoolKlass.cpp                   psPromotionManager.inline.hpp
+constantPoolKlass.cpp                   psScavenge.inline.hpp
+constantPoolKlass.cpp                   parOopClosures.inline.hpp
+
+cpCacheKlass.cpp                        cardTableRS.hpp
+cpCacheKlass.cpp                        oop.pcgc.inline.hpp
+cpCacheKlass.cpp                        psPromotionManager.inline.hpp
+cpCacheKlass.cpp                        psScavenge.inline.hpp
+cpCacheKlass.cpp                        parOopClosures.inline.hpp
+
 genCollectedHeap.cpp                    concurrentMarkSweepThread.hpp
 genCollectedHeap.cpp                    vmCMSOperations.hpp
 
--- a/src/share/vm/includeDB_jvmti	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/includeDB_jvmti	Tue Jul 28 13:50:07 2009 -0600
@@ -28,6 +28,7 @@
 jvmtiClassFileReconstituter.cpp         bytes_<arch>.hpp
 jvmtiClassFileReconstituter.cpp         jvmtiClassFileReconstituter.hpp
 jvmtiClassFileReconstituter.cpp         symbolTable.hpp
+jvmtiClassFileReconstituter.cpp         signature.hpp
 
 jvmtiClassFileReconstituter.hpp         jvmtiEnv.hpp
 
--- a/src/share/vm/interpreter/abstractInterpreter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/abstractInterpreter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the abstract interpreter and the abstract interpreter generator.
 
 // Organization of the interpreter(s). There exists two different interpreters in hotpot
@@ -61,6 +61,7 @@
     empty,                                                      // empty method (code: _return)
     accessor,                                                   // accessor method (code: _aload_0, _getfield, _(a|i)return)
     abstract,                                                   // abstract method (throws an AbstractMethodException)
+    method_handle,                                              // java.dyn.MethodHandles::invoke
     java_lang_math_sin,                                         // implementation of java.lang.Math.sin   (x)
     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
@@ -91,8 +92,6 @@
 
   static address    _rethrow_exception_entry;                   // rethrows an activation in previous frame
 
-
-
   friend class      AbstractInterpreterGenerator;
   friend class              InterpreterGenerator;
   friend class      InterpreterMacroAssembler;
@@ -218,6 +217,73 @@
             stackElementSize()) + tag_offset_in_bytes();
   }
 
+  // access to stacked values according to type:
+  static oop* oop_addr_in_slot(intptr_t* slot_addr) {
+    return (oop*) slot_addr;
+  }
+  static jint* int_addr_in_slot(intptr_t* slot_addr) {
+    if ((int) sizeof(jint) < wordSize && !Bytes::is_Java_byte_ordering_different())
+      // big-endian LP64
+      return (jint*)(slot_addr + 1) - 1;
+    else
+      return (jint*) slot_addr;
+  }
+  static jlong long_in_slot(intptr_t* slot_addr) {
+    if (sizeof(intptr_t) >= sizeof(jlong)) {
+      return *(jlong*) slot_addr;
+    } else if (!TaggedStackInterpreter) {
+      return Bytes::get_native_u8((address)slot_addr);
+    } else {
+      assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32");
+      // assemble the long in memory order (not arithmetic order)
+      union { jlong j; jint i[2]; } u;
+      u.i[0] = (jint) slot_addr[0*stackElementSize()];
+      u.i[1] = (jint) slot_addr[1*stackElementSize()];
+      return u.j;
+    }
+  }
+  static void set_long_in_slot(intptr_t* slot_addr, jlong value) {
+    if (sizeof(intptr_t) >= sizeof(jlong)) {
+      *(jlong*) slot_addr = value;
+    } else if (!TaggedStackInterpreter) {
+      Bytes::put_native_u8((address)slot_addr, value);
+    } else {
+      assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32");
+      // assemble the long in memory order (not arithmetic order)
+      union { jlong j; jint i[2]; } u;
+      u.j = value;
+      slot_addr[0*stackElementSize()] = (intptr_t) u.i[0];
+      slot_addr[1*stackElementSize()] = (intptr_t) u.i[1];
+    }
+  }
+  static void get_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
+    switch (type) {
+    case T_BOOLEAN: value->z = *int_addr_in_slot(slot_addr);            break;
+    case T_CHAR:    value->c = *int_addr_in_slot(slot_addr);            break;
+    case T_BYTE:    value->b = *int_addr_in_slot(slot_addr);            break;
+    case T_SHORT:   value->s = *int_addr_in_slot(slot_addr);            break;
+    case T_INT:     value->i = *int_addr_in_slot(slot_addr);            break;
+    case T_LONG:    value->j = long_in_slot(slot_addr);                 break;
+    case T_FLOAT:   value->f = *(jfloat*)int_addr_in_slot(slot_addr);   break;
+    case T_DOUBLE:  value->d = jdouble_cast(long_in_slot(slot_addr));   break;
+    case T_OBJECT:  value->l = (jobject)*oop_addr_in_slot(slot_addr);   break;
+    default:        ShouldNotReachHere();
+    }
+  }
+  static void set_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
+    switch (type) {
+    case T_BOOLEAN: *int_addr_in_slot(slot_addr) = (value->z != 0);     break;
+    case T_CHAR:    *int_addr_in_slot(slot_addr) = value->c;            break;
+    case T_BYTE:    *int_addr_in_slot(slot_addr) = value->b;            break;
+    case T_SHORT:   *int_addr_in_slot(slot_addr) = value->s;            break;
+    case T_INT:     *int_addr_in_slot(slot_addr) = value->i;            break;
+    case T_LONG:    set_long_in_slot(slot_addr, value->j);              break;
+    case T_FLOAT:   *(jfloat*)int_addr_in_slot(slot_addr) = value->f;   break;
+    case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
+    case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
+    default:        ShouldNotReachHere();
+    }
+  }
 };
 
 //------------------------------------------------------------------------------------------------------------------------
--- a/src/share/vm/interpreter/bytecode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -34,12 +34,6 @@
 }
 
 
-void Bytecode::set_fast_index(int i) {
-  assert(0 <= i && i < 0x10000, "illegal index value");
-  Bytes::put_native_u2(addr_at(1), (jushort)i);
-}
-
-
 bool Bytecode::check_must_rewrite() const {
   assert(Bytecodes::can_rewrite(code()), "post-check only");
 
@@ -118,7 +112,12 @@
 
 
 int Bytecode_invoke::index() const {
-  return Bytes::get_Java_u2(bcp() + 1);
+  // Note:  Rewriter::rewrite changes the Java_u2 of an invokedynamic to a native_u4,
+  // at the same time it allocates per-call-site CP cache entries.
+  if (has_giant_index())
+    return Bytes::get_native_u4(bcp() + 1);
+  else
+    return Bytes::get_Java_u2(bcp() + 1);
 }
 
 
--- a/src/share/vm/interpreter/bytecode.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecode.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -65,14 +65,6 @@
 // The base class for different kinds of bytecode abstractions.
 // Provides the primitive operations to manipulate code relative
 // to an objects 'this' pointer.
-//
-// Note: Even though it seems that the fast_index & set_fast_index
-//       functions are machine specific, they're not. They only use
-//       the natural way to store a 16bit index on a given machine,
-//       independent of the particular byte ordering. Since all other
-//       places in the system that refer to these indices use the
-//       same method (the natural byte ordering on the platform)
-//       this will always work and be machine-independent).
 
 class Bytecode: public ThisRelativeObj {
  protected:
@@ -83,24 +75,40 @@
   // Attributes
   address bcp() const                            { return addr_at(0); }
   address next_bcp() const                       { return addr_at(0) + Bytecodes::length_at(bcp()); }
+  int instruction_size() const                   { return Bytecodes::length_at(bcp()); }
 
   Bytecodes::Code code() const                   { return Bytecodes::code_at(addr_at(0)); }
   Bytecodes::Code java_code() const              { return Bytecodes::java_code(code()); }
   bool must_rewrite() const                      { return Bytecodes::can_rewrite(code()) && check_must_rewrite(); }
   bool is_active_breakpoint() const              { return Bytecodes::is_active_breakpoint_at(bcp()); }
 
-  int     one_byte_index() const                 { return byte_at(1); }
-  int     two_byte_index() const                 { return (byte_at(1) << 8) + byte_at(2); }
+  int     one_byte_index() const                 { assert_index_size(1); return byte_at(1); }
+  int     two_byte_index() const                 { assert_index_size(2); return (byte_at(1) << 8) + byte_at(2); }
+
   int     offset() const                         { return (two_byte_index() << 16) >> 16; }
   address destination() const                    { return bcp() + offset(); }
-  int     fast_index() const                     { return Bytes::get_native_u2(addr_at(1)); }
 
   // Attribute modification
   void    set_code(Bytecodes::Code code);
-  void    set_fast_index(int i);
 
   // Creation
   inline friend Bytecode* Bytecode_at(address bcp);
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - 1;
+    if (isize == 2 && code() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (code() == Bytecodes::_invokedynamic)
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 inline Bytecode* Bytecode_at(address bcp) {
@@ -195,6 +203,9 @@
   bool is_invokevirtual() const                  { return adjusted_invoke_code() == Bytecodes::_invokevirtual; }
   bool is_invokestatic() const                   { return adjusted_invoke_code() == Bytecodes::_invokestatic; }
   bool is_invokespecial() const                  { return adjusted_invoke_code() == Bytecodes::_invokespecial; }
+  bool is_invokedynamic() const                  { return adjusted_invoke_code() == Bytecodes::_invokedynamic; }
+
+  bool has_giant_index() const                   { return is_invokedynamic(); }
 
   bool is_valid() const                          { return is_invokeinterface() ||
                                                           is_invokevirtual()   ||
--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -163,7 +163,7 @@
 #ifdef USELABELS
 // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an
 // initialization (which is is the initialization of the table pointer...)
-#define DISPATCH(opcode) goto *dispatch_table[opcode]
+#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode]
 #define CONTINUE {                              \
         opcode = *pc;                           \
         DO_UPDATE_INSTRUCTION_COUNT(opcode);    \
@@ -341,7 +341,7 @@
  */
 #undef CHECK_NULL
 #define CHECK_NULL(obj_)                                                 \
-    if ((obj_) == 0) {                                                   \
+    if ((obj_) == NULL) {                                                \
         VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), "");  \
     }
 
@@ -1362,7 +1362,7 @@
 
 #define NULL_COMPARISON_NOT_OP(name)                                         \
       CASE(_if##name): {                                                     \
-          int skip = (!(STACK_OBJECT(-1) == 0))                              \
+          int skip = (!(STACK_OBJECT(-1) == NULL))                           \
                       ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3;             \
           address branch_pc = pc;                                            \
           UPDATE_PC_AND_TOS(skip, -1);                                       \
@@ -1372,7 +1372,7 @@
 
 #define NULL_COMPARISON_OP(name)                                             \
       CASE(_if##name): {                                                     \
-          int skip = ((STACK_OBJECT(-1) == 0))                               \
+          int skip = ((STACK_OBJECT(-1) == NULL))                            \
                       ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3;             \
           address branch_pc = pc;                                            \
           UPDATE_PC_AND_TOS(skip, -1);                                       \
@@ -2642,7 +2642,7 @@
         // two interpreted frames). We need to save the current arguments in C heap so that
         // the deoptimized frame when it restarts can copy the arguments to its expression
         // stack and re-execute the call. We also have to notify deoptimization that this
-        // has occured and to pick the preerved args copy them to the deoptimized frame's
+        // has occurred and to pick the preserved args copy them to the deoptimized frame's
         // java expression stack. Yuck.
         //
         THREAD->popframe_preserve_args(in_ByteSize(METHOD->size_of_parameters() * wordSize),
--- a/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 @@
 friend class InterpreterGenerator;
 friend class InterpreterMacroAssembler;
 friend class frame;
-friend class SharedRuntime;
 friend class VMStructs;
 
 public:
--- a/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,7 +22,7 @@
  *
  */
 
-// This file holds platform-independant bodies of inline functions for the C++ based interpreter
+// This file holds platform-independent bodies of inline functions for the C++ based interpreter
 
 #ifdef CC_INTERP
 
--- a/src/share/vm/interpreter/bytecodeStream.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodeStream.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -109,6 +109,7 @@
 
   Bytecodes::Code code() const                   { return _code; }
   bool            is_wide() const                { return _is_wide; }
+  int             instruction_size() const       { return (_next_bci - _bci); }
   bool            is_last_bytecode() const       { return _next_bci >= _end_bci; }
 
   address         bcp() const                    { return method()->code_base() + _bci; }
@@ -122,8 +123,29 @@
   int             dest_w() const                 { return bci() + (int  )Bytes::get_Java_u4(bcp() + 1); }
 
   // Unsigned indices, widening
-  int             get_index() const              { return (is_wide()) ? Bytes::get_Java_u2(bcp() + 2) : bcp()[1]; }
-  int             get_index_big() const          { return (int)Bytes::get_Java_u2(bcp() + 1);  }
+  int             get_index() const              { assert_index_size(is_wide() ? 2 : 1);
+                                                   return (is_wide()) ? Bytes::get_Java_u2(bcp() + 2) : bcp()[1]; }
+  int             get_index_big() const          { assert_index_size(2);
+                                                   return (int)Bytes::get_Java_u2(bcp() + 1);  }
+  int             get_index_int() const          { return has_giant_index() ? get_index_giant() : get_index_big(); }
+  int             get_index_giant() const        { assert_index_size(4); return Bytes::get_native_u4(bcp() + 1); }
+  int             has_giant_index() const        { return (code() == Bytecodes::_invokedynamic); }
+
+ private:
+  void assert_index_size(int required_size) const {
+#ifdef ASSERT
+    int isize = instruction_size() - (int)_is_wide - 1;
+    if (isize == 2 && code() == Bytecodes::_iinc)
+      isize = 1;
+    else if (isize <= 2)
+      ;                         // no change
+    else if (has_giant_index())
+      isize = 4;
+    else
+      isize = 2;
+    assert(isize = required_size, "wrong index size");
+#endif
+  }
 };
 
 // In BytecodeStream, non-java bytecodes will be translated into the
--- a/src/share/vm/interpreter/bytecodeTracer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodeTracer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -48,12 +48,15 @@
 
   int       get_index()              { return *(address)_next_pc++; }
   int       get_big_index()          { int i=Bytes::get_Java_u2(_next_pc); _next_pc+=2; return i; }
+  int       get_giant_index()        { int i=Bytes::get_native_u4(_next_pc); _next_pc+=4; return i; }
   int       get_index_special()      { return (is_wide()) ? get_big_index() : get_index(); }
   methodOop method()                 { return _current_method; }
   bool      is_wide()                { return _is_wide; }
 
 
+  bool      check_index(int i, bool in_cp_cache, 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_attributes(Bytecodes::Code code, int bci, outputStream* st = tty);
   void      bytecode_epilog(int bci, outputStream* st = tty);
 
@@ -182,7 +185,71 @@
   }
 }
 
+bool BytecodePrinter::check_index(int i, bool in_cp_cache, int& cp_index, outputStream* st) {
+  constantPoolOop constants = method()->constants();
+  int ilimit = constants->length(), climit = 0;
+
+  constantPoolCacheOop cache = NULL;
+  if (in_cp_cache) {
+    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 (in_cp_cache && 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();
+      goto check_cache_index;
+    } else {
+      st->print_cr(" not in cache[*]?", i);
+      return false;
+    }
+  }
+
+  if (cache != NULL) {
+    i = Bytes::swap_u2(i);
+    if (WizardMode)  st->print(" (swap=%d)", i);
+    goto check_cache_index;
+  }
+
+ check_cp_index:
+  if (i >= 0 && i < ilimit) {
+    if (WizardMode)  st->print(" cp[%d]", i);
+    cp_index = i;
+    return true;
+  }
+
+  st->print_cr(" CP[%d] not in CP", i);
+  return false;
+
+ check_cache_index:
+  if (i >= 0 && i < climit) {
+    if (cache->entry_at(i)->is_secondary_entry()) {
+      st->print_cr(" secondary entry?");
+      return false;
+    }
+    i = cache->entry_at(i)->constant_pool_index();
+    goto check_cp_index;
+  }
+  st->print_cr(" not in CP[*]?", i);
+  return false;
+}
+
 void BytecodePrinter::print_constant(int i, outputStream* st) {
+  int orig_i = i;
+  if (!check_index(orig_i, false, i, st))  return;
+
   constantPoolOop constants = method()->constants();
   constantTag tag = constants->tag_at(i);
 
@@ -203,7 +270,31 @@
     st->print_cr(" %s", constants->resolved_klass_at(i)->klass_part()->external_name());
   } else if (tag.is_unresolved_klass()) {
     st->print_cr(" <unresolved klass at %d>", i);
-  } else ShouldNotReachHere();
+  } else {
+    st->print_cr(" bad tag=%d at %d", tag.value(), i);
+  }
+}
+
+void BytecodePrinter::print_field_or_method(int i, outputStream* st) {
+  int orig_i = i;
+  if (!check_index(orig_i, true, i, st))  return;
+
+  constantPoolOop constants = method()->constants();
+  constantTag tag = constants->tag_at(i);
+
+  switch (tag.value()) {
+  case JVM_CONSTANT_InterfaceMethodref:
+  case JVM_CONSTANT_Methodref:
+  case JVM_CONSTANT_Fieldref:
+    break;
+  default:
+    st->print_cr(" bad tag=%d at %d", tag.value(), i);
+    return;
+  }
+
+  symbolOop name = constants->name_ref_at(orig_i);
+  symbolOop signature = constants->signature_ref_at(orig_i);
+  st->print_cr(" %d <%s> <%s> ", i, name->as_C_string(), signature->as_C_string());
 }
 
 
@@ -354,36 +445,28 @@
     case Bytecodes::_putstatic:
     case Bytecodes::_getstatic:
     case Bytecodes::_putfield:
-    case Bytecodes::_getfield: {
-        int i = get_big_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop field = constants->name_ref_at(i);
-        st->print_cr(" %d <%s>", i, field->as_C_string());
-      }
+    case Bytecodes::_getfield:
+      print_field_or_method(get_big_index(), st);
       break;
 
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokespecial:
     case Bytecodes::_invokestatic:
-      { int i = get_big_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop name = constants->name_ref_at(i);
-        symbolOop signature = constants->signature_ref_at(i);
-        st->print_cr(" %d <%s> <%s> ", i, name->as_C_string(), signature->as_C_string());
-      }
+      print_field_or_method(get_big_index(), st);
       break;
 
     case Bytecodes::_invokeinterface:
       { int i = get_big_index();
         int n = get_index();
-        get_index();
-        constantPoolOop constants = method()->constants();
-        symbolOop name = constants->name_ref_at(i);
-        symbolOop signature = constants->signature_ref_at(i);
-        st->print_cr(" %d <%s> <%s> %d", i, name->as_C_string(), signature->as_C_string(), n);
+        get_index();            // ignore zero byte
+        print_field_or_method(i, st);
       }
       break;
 
+    case Bytecodes::_invokedynamic:
+      print_field_or_method(get_giant_index(), st);
+      break;
+
     case Bytecodes::_new:
     case Bytecodes::_checkcast:
     case Bytecodes::_instanceof:
--- a/src/share/vm/interpreter/bytecodes.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodes.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -357,7 +357,7 @@
   def(_invokespecial       , "invokespecial"       , "bjj"  , NULL    , T_ILLEGAL, -1, true);
   def(_invokestatic        , "invokestatic"        , "bjj"  , NULL    , T_ILLEGAL,  0, true);
   def(_invokeinterface     , "invokeinterface"     , "bjj__", NULL    , T_ILLEGAL, -1, true);
-  def(_xxxunusedxxx        , "xxxunusedxxx"        , NULL   , NULL    , T_VOID   ,  0, false);
+  def(_invokedynamic       , "invokedynamic"       , "bjjjj", NULL    , T_ILLEGAL, -1, true );
   def(_new                 , "new"                 , "bii"  , NULL    , T_OBJECT ,  1, true );
   def(_newarray            , "newarray"            , "bc"   , NULL    , T_OBJECT ,  0, true );
   def(_anewarray           , "anewarray"           , "bii"  , NULL    , T_OBJECT ,  0, true );
--- a/src/share/vm/interpreter/bytecodes.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/bytecodes.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -218,7 +218,7 @@
     _invokespecial        = 183, // 0xb7
     _invokestatic         = 184, // 0xb8
     _invokeinterface      = 185, // 0xb9
-    _xxxunusedxxx         = 186, // 0xba
+    _invokedynamic        = 186, // 0xba     // if EnableInvokeDynamic
     _new                  = 187, // 0xbb
     _newarray             = 188, // 0xbc
     _anewarray            = 189, // 0xbd
--- a/src/share/vm/interpreter/cppInterpreter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/cppInterpreter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -114,6 +114,7 @@
     method_entry(empty);
     method_entry(accessor);
     method_entry(abstract);
+    method_entry(method_handle);
     method_entry(java_lang_math_sin   );
     method_entry(java_lang_math_cos   );
     method_entry(java_lang_math_tan   );
--- a/src/share/vm/interpreter/cppInterpreter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/cppInterpreter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -24,7 +24,7 @@
 
 #ifdef CC_INTERP
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the c++ interpreter
 
 class CppInterpreter: public AbstractInterpreter {
--- a/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the template interpreter generator.
 
 #ifdef CC_INTERP
--- a/src/share/vm/interpreter/interpreter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/interpreter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,10 +168,14 @@
   // Abstract method?
   if (m->is_abstract()) return abstract;
 
+  // Invoker for method handles?
+  if (m->is_method_handle_invoke())  return method_handle;
+
   // Native method?
   // Note: This test must come _before_ the test for intrinsic
   //       methods. See also comments below.
   if (m->is_native()) {
+    assert(!m->is_method_handle_invoke(), "overlapping bits here, watch out");
     return m->is_synchronized() ? native_synchronized : native;
   }
 
@@ -249,6 +253,7 @@
     case empty                  : tty->print("empty"                  ); break;
     case accessor               : tty->print("accessor"               ); break;
     case abstract               : tty->print("abstract"               ); break;
+    case method_handle          : tty->print("method_handle"          ); break;
     case java_lang_math_sin     : tty->print("java_lang_math_sin"     ); break;
     case java_lang_math_cos     : tty->print("java_lang_math_cos"     ); break;
     case java_lang_math_tan     : tty->print("java_lang_math_tan"     ); break;
--- a/src/share/vm/interpreter/interpreter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/interpreter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the interpreter and the interpreter generator.
 
 //------------------------------------------------------------------------------------------------------------------------
--- a/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the interpreter generator.
 
 
--- a/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -293,6 +293,24 @@
   THROW_MSG(vmSymbols::java_lang_ClassCastException(), message);
 IRT_END
 
+// required can be either a MethodType, or a Class (for a single argument)
+// actual (if not null) can be either a MethodHandle, or an arbitrary value (for a single argument)
+IRT_ENTRY(void, InterpreterRuntime::throw_WrongMethodTypeException(JavaThread* thread,
+                                                                   oopDesc* required,
+                                                                   oopDesc* actual)) {
+  ResourceMark rm(thread);
+  char* message = SharedRuntime::generate_wrong_method_type_message(thread, required, actual);
+
+  if (ProfileTraps) {
+    note_trap(thread, Deoptimization::Reason_constraint, CHECK);
+  }
+
+  // create exception
+  THROW_MSG(vmSymbols::java_dyn_WrongMethodTypeException(), message);
+}
+IRT_END
+
+
 
 // exception_handler_for_exception(...) returns the continuation address,
 // the exception oop (via TLS) and sets the bci/bcp for the continuation.
@@ -663,6 +681,133 @@
 IRT_END
 
 
+// First time execution:  Resolve symbols, create a permanent CallSiteImpl object.
+IRT_ENTRY(void, InterpreterRuntime::resolve_invokedynamic(JavaThread* thread)) {
+  ResourceMark rm(thread);
+
+  assert(EnableInvokeDynamic, "");
+
+  const Bytecodes::Code bytecode = Bytecodes::_invokedynamic;
+
+  methodHandle caller_method(thread, method(thread));
+
+  // first determine if there is a bootstrap method
+  {
+    KlassHandle caller_klass(thread, caller_method->method_holder());
+    Handle bootm = SystemDictionary::find_bootstrap_method(caller_klass, KlassHandle(), CHECK);
+    if (bootm.is_null()) {
+      // If there is no bootstrap method, throw IncompatibleClassChangeError.
+      // This is a valid generic error type for resolution (JLS 12.3.3).
+      char buf[200];
+      jio_snprintf(buf, sizeof(buf), "Class %s has not declared a bootstrap method for invokedynamic",
+                   (Klass::cast(caller_klass()))->external_name());
+      THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
+    }
+  }
+
+  constantPoolHandle pool(thread, caller_method->constants());
+  pool->set_invokedynamic();    // mark header to flag active call sites
+
+  int raw_index = four_byte_index(thread);
+  assert(constantPoolCacheOopDesc::is_secondary_index(raw_index), "invokedynamic indexes marked specially");
+
+  // there are two CPC entries that are of interest:
+  int site_index = constantPoolCacheOopDesc::decode_secondary_index(raw_index);
+  int main_index = pool->cache()->entry_at(site_index)->main_entry_index();
+  // and there is one CP entry, a NameAndType:
+  int nt_index = pool->map_instruction_operand_to_index(raw_index);
+
+  // first resolve the signature to a MH.invoke methodOop
+  if (!pool->cache()->entry_at(main_index)->is_resolved(bytecode)) {
+    JvmtiHideSingleStepping jhss(thread);
+    CallInfo info;
+    LinkResolver::resolve_invoke(info, Handle(), pool,
+                                 raw_index, bytecode, CHECK);
+    // The main entry corresponds to a JVM_CONSTANT_NameAndType, and serves
+    // as a common reference point for all invokedynamic call sites with
+    // that exact call descriptor.  We will link it in the CP cache exactly
+    // as if it were an invokevirtual of MethodHandle.invoke.
+    pool->cache()->entry_at(main_index)->set_method(
+      bytecode,
+      info.resolved_method(),
+      info.vtable_index());
+    assert(pool->cache()->entry_at(main_index)->is_vfinal(), "f2 must be a methodOop");
+  }
+
+  // The method (f2 entry) of the main entry is the MH.invoke for the
+  // invokedynamic target call signature.
+  intptr_t f2_value = pool->cache()->entry_at(main_index)->f2();
+  methodHandle mh_invdyn(THREAD, (methodOop) f2_value);
+  assert(mh_invdyn.not_null() && mh_invdyn->is_method() && mh_invdyn->is_method_handle_invoke(),
+         "correct result from LinkResolver::resolve_invokedynamic");
+
+  symbolHandle call_site_name(THREAD, pool->nt_name_ref_at(nt_index));
+  Handle call_site
+    = SystemDictionary::make_dynamic_call_site(caller_method->method_holder(),
+                                               caller_method->method_idnum(),
+                                               caller_method->bci_from(bcp(thread)),
+                                               call_site_name,
+                                               mh_invdyn,
+                                               CHECK);
+
+  // In the secondary entry, the f1 field is the call site, and the f2 (index)
+  // field is some data about the invoke site.
+  int extra_data = 0;
+  pool->cache()->entry_at(site_index)->set_dynamic_call(call_site(), extra_data);
+}
+IRT_END
+
+
+// Called on first time execution, and also whenever the CallSite.target is null.
+// FIXME:  Do more of this in Java code.
+IRT_ENTRY(void, InterpreterRuntime::bootstrap_invokedynamic(JavaThread* thread, oopDesc* call_site)) {
+  methodHandle   mh_invdyn(thread, (methodOop) sun_dyn_CallSiteImpl::vmmethod(call_site));
+  Handle         mh_type(thread,   mh_invdyn->method_handle_type());
+  objArrayHandle mh_ptypes(thread, java_dyn_MethodType::ptypes(mh_type()));
+
+  // squish the arguments down to a single array
+  int nargs = mh_ptypes->length();
+  objArrayHandle arg_array;
+  {
+    objArrayOop aaoop = oopFactory::new_objArray(SystemDictionary::object_klass(), nargs, CHECK);
+    arg_array = objArrayHandle(thread, aaoop);
+  }
+  frame fr = thread->last_frame();
+  assert(fr.interpreter_frame_bcp() != NULL, "sanity");
+  int tos_offset = 0;
+  for (int i = nargs; --i >= 0; ) {
+    intptr_t* slot_addr = fr.interpreter_frame_tos_at(tos_offset++);
+    oop ptype = mh_ptypes->obj_at(i);
+    oop arg = NULL;
+    if (!java_lang_Class::is_primitive(ptype)) {
+      arg = *(oop*) slot_addr;
+    } else {
+      BasicType bt = java_lang_Class::primitive_type(ptype);
+      assert(frame::interpreter_frame_expression_stack_direction() < 0, "else reconsider this code");
+      jvalue value;
+      Interpreter::get_jvalue_in_slot(slot_addr, bt, &value);
+      tos_offset += type2size[bt]-1;
+      arg = java_lang_boxing_object::create(bt, &value, CHECK);
+      // FIXME:  These boxing objects are not canonicalized under
+      // the Java autoboxing rules.  They should be...
+      // The best approach would be to push the arglist creation into Java.
+      // The JVM should use a lower-level interface to communicate argument lists.
+    }
+    arg_array->obj_at_put(i, arg);
+  }
+
+  // now find the bootstrap method
+  oop bootstrap_mh_oop = instanceKlass::cast(fr.interpreter_frame_method()->method_holder())->bootstrap_method();
+  assert(bootstrap_mh_oop != NULL, "resolve_invokedynamic ensures a BSM");
+
+  // return the bootstrap method and argument array via vm_result/_2
+  thread->set_vm_result(bootstrap_mh_oop);
+  thread->set_vm_result_2(arg_array());
+}
+IRT_END
+
+
+
 //------------------------------------------------------------------------------------------------------------------------
 // Miscellaneous
 
--- a/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 @@
   static bool      already_resolved(JavaThread *thread) { return cache_entry(thread)->is_resolved(code(thread)); }
   static int       one_byte_index(JavaThread *thread)   { return bcp(thread)[1]; }
   static int       two_byte_index(JavaThread *thread)   { return Bytes::get_Java_u2(bcp(thread) + 1); }
+  static int       four_byte_index(JavaThread *thread)  { return Bytes::get_native_u4(bcp(thread) + 1); }
   static int       number_of_dimensions(JavaThread *thread)  { return bcp(thread)[3]; }
-  static ConstantPoolCacheEntry* cache_entry(JavaThread *thread)  { return method(thread)->constants()->cache()->entry_at(Bytes::get_native_u2(bcp(thread) + 1)); }
+
+  static ConstantPoolCacheEntry* cache_entry_at(JavaThread *thread, int i)  { return method(thread)->constants()->cache()->entry_at(i); }
+  static ConstantPoolCacheEntry* cache_entry(JavaThread *thread)            { return cache_entry_at(thread, Bytes::get_native_u2(bcp(thread) + 1)); }
   static void      note_trap(JavaThread *thread, int reason, TRAPS);
 
  public:
@@ -66,6 +69,7 @@
   static void    throw_StackOverflowError(JavaThread* thread);
   static void    throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index);
   static void    throw_ClassCastException(JavaThread* thread, oopDesc* obj);
+  static void    throw_WrongMethodTypeException(JavaThread* thread, oopDesc* mtype = NULL, oopDesc* mhandle = NULL);
   static void    create_exception(JavaThread* thread, char* name, char* message);
   static void    create_klass_exception(JavaThread* thread, char* name, oopDesc* obj);
   static address exception_handler_for_exception(JavaThread* thread, oopDesc* exception);
@@ -82,7 +86,9 @@
   static void    new_illegal_monitor_state_exception(JavaThread* thread);
 
   // Calls
-  static void    resolve_invoke     (JavaThread* thread, Bytecodes::Code bytecode);
+  static void    resolve_invoke       (JavaThread* thread, Bytecodes::Code bytecode);
+  static void    resolve_invokedynamic(JavaThread* thread);
+  static void  bootstrap_invokedynamic(JavaThread* thread, oopDesc* call_site);
 
   // Breakpoints
   static void _breakpoint(JavaThread* thread, methodOopDesc* method, address bcp);
--- a/src/share/vm/interpreter/invocationCounter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/invocationCounter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -47,6 +47,8 @@
   // executed many more times before re-entering the VM.
   int old_count = count();
   int new_count = MIN2(old_count, (int) (CompileThreshold / 2));
+  // prevent from going to zero, to distinguish from never-executed methods
+  if (new_count == 0)  new_count = 1;
   if (old_count != new_count)  set(state(), new_count);
 }
 
--- a/src/share/vm/interpreter/linkResolver.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/linkResolver.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,20 @@
   result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name(), signature()));
 }
 
+void LinkResolver::lookup_implicit_method(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) {
+  if (EnableMethodHandles && MethodHandles::enabled() &&
+      name == vmSymbolHandles::invoke_name() && klass() == SystemDictionary::MethodHandle_klass()) {
+    methodOop result_oop = SystemDictionary::find_method_handle_invoke(signature,
+                                                                       Handle(),
+                                                                       Handle(),
+                                                                       CHECK);
+    if (result_oop != NULL) {
+      assert(result_oop->is_method_handle_invoke() && result_oop->signature() == signature(), "consistent");
+      result = methodHandle(THREAD, result_oop);
+    }
+  }
+}
+
 void LinkResolver::check_method_accessability(KlassHandle ref_klass,
                                               KlassHandle resolved_klass,
                                               KlassHandle sel_klass,
@@ -240,6 +254,11 @@
     lookup_method_in_interfaces(resolved_method, resolved_klass, method_name, method_signature, CHECK);
 
     if (resolved_method.is_null()) {
+      // JSR 292:  see if this is an implicitly generated method MethodHandle.invoke(*...)
+      lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK);
+    }
+
+    if (resolved_method.is_null()) {
       // 4. method lookup failed
       ResourceMark rm(THREAD);
       THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(),
@@ -928,6 +947,7 @@
     case Bytecodes::_invokestatic   : resolve_invokestatic   (result,       pool, index, CHECK); break;
     case Bytecodes::_invokespecial  : resolve_invokespecial  (result,       pool, index, CHECK); break;
     case Bytecodes::_invokevirtual  : resolve_invokevirtual  (result, recv, pool, index, CHECK); break;
+    case Bytecodes::_invokedynamic  : resolve_invokedynamic  (result,       pool, index, CHECK); break;
     case Bytecodes::_invokeinterface: resolve_invokeinterface(result, recv, pool, index, CHECK); break;
   }
   return;
@@ -989,6 +1009,30 @@
   resolve_interface_call(result, recv, recvrKlass, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
 }
 
+
+void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle pool, int raw_index, TRAPS) {
+  assert(EnableInvokeDynamic, "");
+
+  // This guy is reached from InterpreterRuntime::resolve_invokedynamic.
+
+  assert(constantPoolCacheOopDesc::is_secondary_index(raw_index), "must be secondary index");
+  int nt_index = pool->map_instruction_operand_to_index(raw_index);
+
+  // At this point, we only need the signature, and can ignore the name.
+  symbolHandle method_signature(THREAD, pool->nt_signature_ref_at(nt_index));
+  symbolHandle method_name = vmSymbolHandles::invoke_name();
+  KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass();
+
+  // JSR 292:  this must be an implicitly generated method MethodHandle.invoke(*...)
+  // The extra MH receiver will be inserted into the stack on every call.
+  methodHandle resolved_method;
+  lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK);
+  if (resolved_method.is_null()) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+  result.set_virtual(resolved_klass, KlassHandle(), resolved_method, resolved_method, resolved_method->vtable_index(), CHECK);
+}
+
 //------------------------------------------------------------------------------------------------------------------------
 #ifndef PRODUCT
 
--- a/src/share/vm/interpreter/linkResolver.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/linkResolver.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -103,6 +103,7 @@
   static void lookup_method_in_klasses          (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS);
   static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS);
   static void lookup_method_in_interfaces       (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS);
+  static void lookup_implicit_method            (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS);
 
   static int vtable_index_of_miranda_method(KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS);
 
@@ -166,6 +167,7 @@
   static void resolve_invokespecial  (CallInfo& result,              constantPoolHandle pool, int index, TRAPS);
   static void resolve_invokevirtual  (CallInfo& result, Handle recv, constantPoolHandle pool, int index, TRAPS);
   static void resolve_invokeinterface(CallInfo& result, Handle recv, constantPoolHandle pool, int index, TRAPS);
+  static void resolve_invokedynamic  (CallInfo& result,              constantPoolHandle pool, int index, TRAPS);
 
   static void resolve_invoke         (CallInfo& result, Handle recv, constantPoolHandle pool, int index, Bytecodes::Code byte, TRAPS);
 };
--- a/src/share/vm/interpreter/rewriter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/rewriter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,34 +25,50 @@
 # include "incls/_precompiled.incl"
 # include "incls/_rewriter.cpp.incl"
 
-
-// Computes an index_map (new_index -> original_index) for contant pool entries
+// Computes a CPC map (new_index -> original_index) for constant pool entries
 // that are referred to by the interpreter at runtime via the constant pool cache.
-void Rewriter::compute_index_maps(constantPoolHandle pool, intArray*& index_map, intStack*& inverse_index_map) {
-  const int length  = pool->length();
-  index_map         = new intArray(length, -1);
-  // Choose an initial value large enough that we don't get frequent
-  // calls to grow().
-  inverse_index_map = new intStack(length / 2);
+// Also computes a CP map (original_index -> new_index).
+// Marks entries in CP which require additional processing.
+void Rewriter::compute_index_maps() {
+  const int length  = _pool->length();
+  init_cp_map(length);
   for (int i = 0; i < length; i++) {
-    switch (pool->tag_at(i).value()) {
+    int tag = _pool->tag_at(i).value();
+    switch (tag) {
+      case JVM_CONSTANT_InterfaceMethodref:
       case JVM_CONSTANT_Fieldref          : // fall through
       case JVM_CONSTANT_Methodref         : // fall through
-      case JVM_CONSTANT_InterfaceMethodref: {
-        index_map->at_put(i, inverse_index_map->length());
-        inverse_index_map->append(i);
-      }
+        add_cp_cache_entry(i);
+        break;
     }
   }
+
+  guarantee((int)_cp_cache_map.length()-1 <= (int)((u2)-1),
+            "all cp cache indexes fit in a u2");
 }
 
 
-// Creates a constant pool cache given an inverse_index_map
-constantPoolCacheHandle Rewriter::new_constant_pool_cache(intArray& inverse_index_map, TRAPS) {
-  const int length = inverse_index_map.length();
-  constantPoolCacheOop cache = oopFactory::new_constantPoolCache(length, CHECK_(constantPoolCacheHandle()));
-  cache->initialize(inverse_index_map);
-  return constantPoolCacheHandle(THREAD, cache);
+int Rewriter::add_extra_cp_cache_entry(int main_entry) {
+  // Hack: We put it on the map as an encoded value.
+  // The only place that consumes this is ConstantPoolCacheEntry::set_initial_state
+  int encoded = constantPoolCacheOopDesc::encode_secondary_index(main_entry);
+  int plain_secondary_index = _cp_cache_map.append(encoded);
+  return constantPoolCacheOopDesc::encode_secondary_index(plain_secondary_index);
+}
+
+
+
+// Creates a constant pool cache given a CPC map
+// This creates the constant pool cache initially in a state
+// that is unsafe for concurrent GC processing but sets it to
+// a safe mode before the constant pool cache is returned.
+void Rewriter::make_constant_pool_cache(TRAPS) {
+  const int length = _cp_cache_map.length();
+  constantPoolCacheOop cache =
+      oopFactory::new_constantPoolCache(length, methodOopDesc::IsUnsafeConc, CHECK);
+  cache->initialize(_cp_cache_map);
+  _pool->set_cache(cache);
+  cache->set_constant_pool(_pool());
 }
 
 
@@ -96,8 +112,38 @@
 }
 
 
+// Rewrite a classfile-order CP index into a native-order CPC index.
+int Rewriter::rewrite_member_reference(address bcp, int offset) {
+  address p = bcp + offset;
+  int  cp_index    = Bytes::get_Java_u2(p);
+  int  cache_index = cp_entry_to_cp_cache(cp_index);
+  Bytes::put_native_u2(p, cache_index);
+  return cp_index;
+}
+
+
+void Rewriter::rewrite_invokedynamic(address bcp, int offset, int delete_me) {
+  address p = bcp + offset;
+  assert(p[-1] == Bytecodes::_invokedynamic, "");
+  int cp_index = Bytes::get_Java_u2(p);
+  int cpc  = maybe_add_cp_cache_entry(cp_index);  // add lazily
+  int cpc2 = add_extra_cp_cache_entry(cpc);
+
+  // 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
+  // CPC-to-CP relation is many-to-one for invokedynamic entries.
+  // This means we must use a larger index size than u2 to address
+  // 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, cpc2);
+  // Note: We use native_u4 format exclusively for 4-byte indexes.
+}
+
+
 // Rewrites a method given the index_map information
-methodHandle Rewriter::rewrite_method(methodHandle method, intArray& index_map, TRAPS) {
+void Rewriter::scan_method(methodOop method) {
 
   int nof_jsrs = 0;
   bool has_monitor_bytecodes = false;
@@ -116,6 +162,7 @@
     int bc_length;
     for (int bci = 0; bci < code_length; bci += bc_length) {
       address bcp = code_base + bci;
+      int prefix_length = 0;
       c = (Bytecodes::Code)(*bcp);
 
       // Since we have the code, see if we can get the length
@@ -130,6 +177,7 @@
         // by 'wide'. We don't currently examine any of the bytecodes
         // modified by wide, but in case we do in the future...
         if (c == Bytecodes::_wide) {
+          prefix_length = 1;
           c = (Bytecodes::Code)bcp[1];
         }
       }
@@ -154,12 +202,13 @@
         case Bytecodes::_putfield       : // fall through
         case Bytecodes::_invokevirtual  : // fall through
         case Bytecodes::_invokespecial  : // fall through
-        case Bytecodes::_invokestatic   : // fall through
-        case Bytecodes::_invokeinterface: {
-          address p = bcp + 1;
-          Bytes::put_native_u2(p, index_map[Bytes::get_Java_u2(p)]);
+        case Bytecodes::_invokestatic   :
+        case Bytecodes::_invokeinterface:
+          rewrite_member_reference(bcp, prefix_length+1);
           break;
-        }
+        case Bytecodes::_invokedynamic:
+          rewrite_invokedynamic(bcp, prefix_length+1, int(sizeof"@@@@DELETE ME"));
+          break;
         case Bytecodes::_jsr            : // fall through
         case Bytecodes::_jsr_w          : nof_jsrs++;                   break;
         case Bytecodes::_monitorenter   : // fall through
@@ -177,70 +226,90 @@
   // have to be rewritten, so we run the oopMapGenerator on the method
   if (nof_jsrs > 0) {
     method->set_has_jsrs();
-    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);
-    }
+    // Second pass will revisit this method.
+    assert(method->has_jsrs(), "");
+  }
+}
 
-    // Update monitor matching info.
-    if (romc.monitor_safe()) {
-      method->set_guaranteed_monitor_matching();
-    }
+// After constant pool is created, revisit methods containing jsrs.
+methodHandle Rewriter::rewrite_jsrs(methodHandle method, TRAPS) {
+  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);
   }
 
-  // Setup method entrypoints for compiler and interpreter
-  method->link_method(method, CHECK_(methodHandle()));
+  // Update monitor matching info.
+  if (romc.monitor_safe()) {
+    method->set_guaranteed_monitor_matching();
+  }
 
   return method;
 }
 
 
 void Rewriter::rewrite(instanceKlassHandle klass, TRAPS) {
-  // gather starting points
   ResourceMark rm(THREAD);
-  constantPoolHandle pool (THREAD, klass->constants());
-  objArrayHandle methods  (THREAD, klass->methods());
-  assert(pool->cache() == NULL, "constant pool cache must not be set yet");
+  Rewriter     rw(klass, CHECK);
+  // (That's all, folks.)
+}
+
+Rewriter::Rewriter(instanceKlassHandle klass, TRAPS)
+  : _klass(klass),
+    // gather starting points
+    _pool(   THREAD, klass->constants()),
+    _methods(THREAD, klass->methods())
+{
+  assert(_pool->cache() == NULL, "constant pool cache must not be set yet");
 
   // determine index maps for methodOop rewriting
-  intArray* index_map         = NULL;
-  intStack* inverse_index_map = NULL;
-  compute_index_maps(pool, index_map, inverse_index_map);
+  compute_index_maps();
 
-  // allocate constant pool cache
-  constantPoolCacheHandle cache = new_constant_pool_cache(*inverse_index_map, CHECK);
-  pool->set_cache(cache());
-  cache->set_constant_pool(pool());
-
-  if (RegisterFinalizersAtInit && klass->name() == vmSymbols::java_lang_Object()) {
-    int i = methods->length();
+  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);
+      methodOop method = (methodOop)_methods->obj_at(i);
       if (method->intrinsic_id() == vmIntrinsics::_Object_init) {
         // rewrite the return bytecodes of Object.<init> to register the
         // object for finalization if needed.
         methodHandle m(THREAD, method);
         rewrite_Object_init(m, CHECK);
+        did_rewrite = true;
         break;
       }
     }
+    assert(did_rewrite, "must find Object::<init> to rewrite it");
+  }
+
+  // rewrite methods, in two passes
+  int i, len = _methods->length();
+
+  for (i = len; --i >= 0; ) {
+    methodOop method = (methodOop)_methods->obj_at(i);
+    scan_method(method);
   }
 
-  // rewrite methods
-  { int i = methods->length();
-    while (i-- > 0) {
-      methodHandle m(THREAD, (methodOop)methods->obj_at(i));
-      m = rewrite_method(m, *index_map, CHECK);
+  // allocate constant pool cache, now that we've seen all the bytecodes
+  make_constant_pool_cache(CHECK);
+
+  for (i = len; --i >= 0; ) {
+    methodHandle m(THREAD, (methodOop)_methods->obj_at(i));
+
+    if (m->has_jsrs()) {
+      m = rewrite_jsrs(m, CHECK);
       // Method might have gotten rewritten.
-      methods->obj_at_put(i, m());
+      _methods->obj_at_put(i, m());
     }
+
+    // Set up method entry points for compiler and interpreter.
+    m->link_method(m, CHECK);
   }
 }
--- a/src/share/vm/interpreter/rewriter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/rewriter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -25,13 +25,44 @@
 // The Rewriter adds caches to the constant pool and rewrites bytecode indices
 // pointing into the constant pool for better interpreter performance.
 
-class Rewriter: public AllStatic {
+class Rewriter: public StackObj {
  private:
-  static void compute_index_maps(constantPoolHandle pool, intArray*& index_map, intStack*& inverse_index_map);
-  static constantPoolCacheHandle new_constant_pool_cache(intArray& inverse_index_map, TRAPS);
-  static methodHandle rewrite_method(methodHandle method, intArray& index_map, TRAPS);
-  static void rewrite_Object_init(methodHandle method, TRAPS);
+  instanceKlassHandle _klass;
+  constantPoolHandle  _pool;
+  objArrayHandle      _methods;
+  intArray            _cp_map;
+  intStack            _cp_cache_map;
+
+  void init_cp_map(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);
+  }
+  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_map[cp_index] == -1, "not twice on same cp_index");
+    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, "");
+    return cache_index;
+  }
+  int add_extra_cp_cache_entry(int main_entry);
+
+  // All the work goes in here:
+  Rewriter(instanceKlassHandle klass, TRAPS);
+
+  void compute_index_maps();
+  void make_constant_pool_cache(TRAPS);
+  void scan_method(methodOop m);
+  methodHandle rewrite_jsrs(methodHandle m, TRAPS);
+  void rewrite_Object_init(methodHandle m, TRAPS);
+  int  rewrite_member_reference(address bcp, int offset);
+  void rewrite_invokedynamic(address bcp, int offset, int cp_index);
 
  public:
+  // Driver routine:
   static void rewrite(instanceKlassHandle klass, TRAPS);
 };
--- a/src/share/vm/interpreter/templateInterpreter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/templateInterpreter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +168,7 @@
 address    TemplateInterpreter::_throw_ArrayStoreException_entry            = NULL;
 address    TemplateInterpreter::_throw_ArithmeticException_entry            = NULL;
 address    TemplateInterpreter::_throw_ClassCastException_entry             = NULL;
+address    TemplateInterpreter::_throw_WrongMethodType_entry                = NULL;
 address    TemplateInterpreter::_throw_NullPointerException_entry           = NULL;
 address    TemplateInterpreter::_throw_StackOverflowError_entry             = NULL;
 address    TemplateInterpreter::_throw_exception_entry                      = NULL;
@@ -177,12 +178,14 @@
 #endif // !PRODUCT
 EntryPoint TemplateInterpreter::_return_entry[TemplateInterpreter::number_of_return_entries];
 EntryPoint TemplateInterpreter::_earlyret_entry;
+EntryPoint TemplateInterpreter::_return_unbox_entry;
 EntryPoint TemplateInterpreter::_deopt_entry [TemplateInterpreter::number_of_deopt_entries ];
 EntryPoint TemplateInterpreter::_continuation_entry;
 EntryPoint TemplateInterpreter::_safept_entry;
 
 address    TemplateInterpreter::_return_3_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
 address    TemplateInterpreter::_return_5_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
+address    TemplateInterpreter::_return_5_unbox_addrs_by_index[TemplateInterpreter::number_of_return_addrs];
 
 DispatchTable TemplateInterpreter::_active_table;
 DispatchTable TemplateInterpreter::_normal_table;
@@ -250,6 +253,22 @@
     }
   }
 
+  if (EnableInvokeDynamic) {
+    CodeletMark cm(_masm, "unboxing return entry points");
+    Interpreter::_return_unbox_entry =
+      EntryPoint(
+        generate_return_unbox_entry_for(btos, 5),
+        generate_return_unbox_entry_for(ctos, 5),
+        generate_return_unbox_entry_for(stos, 5),
+        generate_return_unbox_entry_for(atos, 5), // cast conversion
+        generate_return_unbox_entry_for(itos, 5),
+        generate_return_unbox_entry_for(ltos, 5),
+        generate_return_unbox_entry_for(ftos, 5),
+        generate_return_unbox_entry_for(dtos, 5),
+        Interpreter::_return_entry[5].entry(vtos) // no unboxing for void
+      );
+  }
+
   { CodeletMark cm(_masm, "earlyret entry points");
     Interpreter::_earlyret_entry =
       EntryPoint(
@@ -297,8 +316,11 @@
 
   for (int j = 0; j < number_of_states; j++) {
     const TosState states[] = {btos, ctos, stos, itos, ltos, ftos, dtos, atos, vtos};
-    Interpreter::_return_3_addrs_by_index[Interpreter::TosState_as_index(states[j])] = Interpreter::return_entry(states[j], 3);
-    Interpreter::_return_5_addrs_by_index[Interpreter::TosState_as_index(states[j])] = Interpreter::return_entry(states[j], 5);
+    int index = Interpreter::TosState_as_index(states[j]);
+    Interpreter::_return_3_addrs_by_index[index] = Interpreter::return_entry(states[j], 3);
+    Interpreter::_return_5_addrs_by_index[index] = Interpreter::return_entry(states[j], 5);
+    if (EnableInvokeDynamic)
+      Interpreter::_return_5_unbox_addrs_by_index[index] = Interpreter::return_unbox_entry(states[j], 5);
   }
 
   { CodeletMark cm(_masm, "continuation entry points");
@@ -341,6 +363,7 @@
     Interpreter::_throw_ArrayStoreException_entry            = generate_klass_exception_handler("java/lang/ArrayStoreException"                 );
     Interpreter::_throw_ArithmeticException_entry            = generate_exception_handler("java/lang/ArithmeticException"           , "/ by zero");
     Interpreter::_throw_ClassCastException_entry             = generate_ClassCastException_handler();
+    Interpreter::_throw_WrongMethodType_entry                = generate_WrongMethodType_handler();
     Interpreter::_throw_NullPointerException_entry           = generate_exception_handler("java/lang/NullPointerException"          , NULL       );
     Interpreter::_throw_StackOverflowError_entry             = generate_StackOverflowError_handler();
   }
@@ -358,6 +381,7 @@
   method_entry(empty)
   method_entry(accessor)
   method_entry(abstract)
+  method_entry(method_handle)
   method_entry(java_lang_math_sin  )
   method_entry(java_lang_math_cos  )
   method_entry(java_lang_math_tan  )
@@ -523,6 +547,18 @@
 }
 
 
+address TemplateInterpreter::return_unbox_entry(TosState state, int length) {
+  assert(EnableInvokeDynamic, "");
+  if (state == vtos) {
+    // no unboxing to do, actually
+    return return_entry(state, length);
+  } else {
+    assert(length == 5, "unboxing entries generated for invokedynamic only");
+    return _return_unbox_entry.entry(state);
+  }
+}
+
+
 address TemplateInterpreter::deopt_entry(TosState state, int length) {
   guarantee(0 <= length && length < Interpreter::number_of_deopt_entries, "illegal length");
   return _deopt_entry[length].entry(state);
--- a/src/share/vm/interpreter/templateInterpreter.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/templateInterpreter.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the template interpreter and the template interpreter generator.
 
 #ifndef CC_INTERP
@@ -77,14 +77,15 @@
   friend class VMStructs;
   friend class InterpreterMacroAssembler;
   friend class TemplateInterpreterGenerator;
+  friend class InterpreterGenerator;
   friend class TemplateTable;
   // friend class Interpreter;
  public:
 
   enum MoreConstants {
-    number_of_return_entries  = 9,                              // number of return entry points
-    number_of_deopt_entries   = 9,                              // number of deoptimization entry points
-    number_of_return_addrs    = 9                              // number of return addresses
+    number_of_return_entries  = number_of_states,               // number of return entry points
+    number_of_deopt_entries   = number_of_states,               // number of deoptimization entry points
+    number_of_return_addrs    = number_of_states                // number of return addresses
   };
 
  protected:
@@ -93,6 +94,7 @@
   static address    _throw_ArrayStoreException_entry;
   static address    _throw_ArithmeticException_entry;
   static address    _throw_ClassCastException_entry;
+  static address    _throw_WrongMethodType_entry;
   static address    _throw_NullPointerException_entry;
   static address    _throw_exception_entry;
 
@@ -108,12 +110,14 @@
 #endif // !PRODUCT
   static EntryPoint _return_entry[number_of_return_entries];    // entry points to return to from a call
   static EntryPoint _earlyret_entry;                            // entry point to return early from a call
+  static EntryPoint _return_unbox_entry;                        // entry point to unbox a return value from a call
   static EntryPoint _deopt_entry[number_of_deopt_entries];      // entry points to return to from a deoptimization
   static EntryPoint _continuation_entry;
   static EntryPoint _safept_entry;
 
   static address    _return_3_addrs_by_index[number_of_return_addrs];     // for invokevirtual   return entries
   static address    _return_5_addrs_by_index[number_of_return_addrs];     // for invokeinterface return entries
+  static address    _return_5_unbox_addrs_by_index[number_of_return_addrs]; // for invokedynamic bootstrap methods
 
   static DispatchTable _active_table;                           // the active    dispatch table (used by the interpreter for dispatch)
   static DispatchTable _normal_table;                           // the normal    dispatch table (used to set the active table in normal mode)
@@ -137,6 +141,7 @@
   static address    remove_activation_entry()                   { return _remove_activation_entry; }
   static address    throw_exception_entry()                     { return _throw_exception_entry; }
   static address    throw_ArithmeticException_entry()           { return _throw_ArithmeticException_entry; }
+  static address    throw_WrongMethodType_entry()               { return _throw_WrongMethodType_entry; }
   static address    throw_NullPointerException_entry()          { return _throw_NullPointerException_entry; }
   static address    throw_StackOverflowError_entry()            { return _throw_StackOverflowError_entry; }
 
@@ -154,10 +159,12 @@
   // Support for invokes
   static address*   return_3_addrs_by_index_table()             { return _return_3_addrs_by_index; }
   static address*   return_5_addrs_by_index_table()             { return _return_5_addrs_by_index; }
+  static address*   return_5_unbox_addrs_by_index_table()       { return _return_5_unbox_addrs_by_index; }
   static int        TosState_as_index(TosState state);          // computes index into return_3_entry_by_index table
 
   static address    return_entry  (TosState state, int length);
   static address    deopt_entry   (TosState state, int length);
+  static address    return_unbox_entry(TosState state, int length);
 
   // Safepoint support
   static void       notice_safepoints();                        // stops the thread when reaching a safepoint
--- a/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  *
  */
 
-// This file contains the platform-independant parts
+// This file contains the platform-independent parts
 // of the template interpreter generator.
 
 #ifndef CC_INTERP
@@ -48,9 +48,13 @@
   }
   address generate_exception_handler_common(const char* name, const char* message, bool pass_oop);
   address generate_ClassCastException_handler();
+  address generate_WrongMethodType_handler();
   address generate_ArrayIndexOutOfBounds_handler(const char* name);
   address generate_continuation_for(TosState state);
-  address generate_return_entry_for(TosState state, int step);
+  address generate_return_entry_for(TosState state, int step, bool unbox = false);
+  address generate_return_unbox_entry_for(TosState state, int step) {
+    return generate_return_entry_for(state, step, true);
+  }
   address generate_earlyret_entry_for(TosState state);
   address generate_deopt_entry_for(TosState state, int step);
   address generate_safept_entry_for(TosState state, address runtime_entry);
--- a/src/share/vm/interpreter/templateTable.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/templateTable.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -442,6 +442,7 @@
   def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       ,  1           );
   def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        ,  1           );
   def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     ,  1           );
+  def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       ,  1           );
   def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           );
   def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           );
   def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           );
@@ -503,7 +504,6 @@
 
   def(Bytecodes::_fast_invokevfinal   , ubcp|disp|clvm|____, vtos, vtos, fast_invokevfinal   ,  2           );
 
-
   def(Bytecodes::_fast_linearswitch   , ubcp|disp|____|____, itos, vtos, fast_linearswitch   ,  _           );
   def(Bytecodes::_fast_binaryswitch   , ubcp|disp|____|____, itos, vtos, fast_binaryswitch   ,  _           );
 
--- a/src/share/vm/interpreter/templateTable.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/interpreter/templateTable.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -261,6 +261,7 @@
   static void invokespecial(int byte_no);
   static void invokestatic(int byte_no);
   static void invokeinterface(int byte_no);
+  static void invokedynamic(int byte_no);
   static void fast_invokevfinal(int byte_no);
 
   static void getfield_or_static(int byte_no, bool is_static);
--- a/src/share/vm/libadt/dict.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/libadt/dict.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -306,7 +306,7 @@
 // Convert string to hash key.  This algorithm implements a universal hash
 // function with the multipliers frozen (ok, so it's not universal).  The
 // multipliers (and allowable characters) are all odd, so the resultant sum
-// is odd - guarenteed not divisible by any power of two, so the hash tables
+// is odd - guaranteed not divisible by any power of two, so the hash tables
 // can be any power of two with good results.  Also, I choose multipliers
 // that have only 2 bits set (the low is always set to be odd) so
 // multiplication requires only shifts and adds.  Characters are required to
@@ -326,7 +326,7 @@
 }
 
 //------------------------------hashptr--------------------------------------
-// Slimey cheap hash function; no guarenteed performance.  Better than the
+// Slimey cheap hash function; no guaranteed performance.  Better than the
 // default for pointers, especially on MS-DOS machines.
 int hashptr(const void *key) {
 #ifdef __TURBOC__
@@ -336,7 +336,7 @@
 #endif
 }
 
-// Slimey cheap hash function; no guarenteed performance.
+// Slimey cheap hash function; no guaranteed performance.
 int hashkey(const void *key) {
   return (intptr_t)key;
 }
@@ -346,9 +346,12 @@
   return strcmp((const char *)k1,(const char *)k2);
 }
 
-// Slimey cheap key comparator.
+// Cheap key comparator.
 int32 cmpkey(const void *key1, const void *key2) {
-  return (int32)((intptr_t)key1 - (intptr_t)key2);
+  if (key1 == key2) return 0;
+  intptr_t delta = (intptr_t)key1 - (intptr_t)key2;
+  if (delta > 0) return 1;
+  return -1;
 }
 
 //=============================================================================
--- a/src/share/vm/libadt/dict.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/libadt/dict.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -86,10 +86,10 @@
 
 // Hashing functions
 int hashstr(const void *s);        // Nice string hash
-// Slimey cheap hash function; no guarenteed performance.  Better than the
+// Slimey cheap hash function; no guaranteed performance.  Better than the
 // default for pointers, especially on MS-DOS machines.
 int hashptr(const void *key);
-// Slimey cheap hash function; no guarenteed performance.
+// Slimey cheap hash function; no guaranteed performance.
 int hashkey(const void *key);
 
 // Key comparators
--- a/src/share/vm/libadt/port.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/libadt/port.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,17 +34,6 @@
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
-#undef bzero
-inline void bzero(void *b, int len) { memset(b,0,len); }
-#undef bcopy
-inline void bcopy(const void *s, void *d, size_t len) { memmove(d,s,len); }
-#undef bcmp
-inline int bcmp(const void *s,const void *t,int len) { return memcmp(s,t,len);}
-extern "C" unsigned long strtoul(const char *s, char **end, int base);
-
-// Definition for sys_errlist varies from Sun 4.1 & Solaris.
-// We use the new Solaris definition.
-#include <string.h>
 
 // Access to the C++ class virtual function pointer
 // Put the class in the macro
--- a/src/share/vm/memory/barrierSet.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/barrierSet.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -25,12 +25,27 @@
 # include "incls/_precompiled.incl"
 # include "incls/_barrierSet.cpp.incl"
 
-// count is in HeapWord's
+// count is number of array elements being written
 void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) {
-   Universe::heap()->barrier_set()->write_ref_array_pre(MemRegion(start, start + count));
+  assert(count <= (size_t)max_intx, "count too large");
+#if 0
+  warning("Pre: \t" INTPTR_FORMAT "[" SIZE_FORMAT "]\t",
+                   start,            count);
+#endif
+  if (UseCompressedOops) {
+    Universe::heap()->barrier_set()->write_ref_array_pre((narrowOop*)start, (int)count);
+  } else {
+    Universe::heap()->barrier_set()->write_ref_array_pre(      (oop*)start, (int)count);
+  }
 }
 
-// count is in HeapWord's
+// count is number of array elements being written
 void BarrierSet::static_write_ref_array_post(HeapWord* start, size_t count) {
-   Universe::heap()->barrier_set()->write_ref_array_work(MemRegion(start, start + count));
+  assert(count <= (size_t)max_intx, "count too large");
+  HeapWord* end = start + objArrayOopDesc::array_size((int)count);
+#if 0
+  warning("Post:\t" INTPTR_FORMAT "[" SIZE_FORMAT "] : [" INTPTR_FORMAT","INTPTR_FORMAT")\t",
+                   start,            count,              start,          end);
+#endif
+  Universe::heap()->barrier_set()->write_ref_array_work(MemRegion(start, end));
 }
--- a/src/share/vm/memory/barrierSet.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/barrierSet.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -81,9 +81,13 @@
   // barrier types.  Semantically, it should be thought of as a call to the
   // virtual "_work" function below, which must implement the barrier.)
   // First the pre-write versions...
-  inline void write_ref_field_pre(void* field, oop new_val);
+  template <class T> inline void write_ref_field_pre(T* field, oop new_val);
+private:
+  // Keep this private so as to catch violations at build time.
+  virtual void write_ref_field_pre_work(     void* field, oop new_val) { guarantee(false, "Not needed"); };
 protected:
-  virtual void write_ref_field_pre_work(void* field, oop new_val) {};
+  virtual void write_ref_field_pre_work(      oop* field, oop new_val) {};
+  virtual void write_ref_field_pre_work(narrowOop* field, oop new_val) {};
 public:
 
   // ...then the post-write version.
@@ -117,12 +121,17 @@
   virtual void read_ref_array(MemRegion mr) = 0;
   virtual void read_prim_array(MemRegion mr) = 0;
 
-  virtual void write_ref_array_pre(MemRegion mr) {}
+  virtual void write_ref_array_pre(      oop* dst, int length) {}
+  virtual void write_ref_array_pre(narrowOop* dst, int length) {}
   inline void write_ref_array(MemRegion mr);
 
   // Static versions, suitable for calling from generated code.
   static void static_write_ref_array_pre(HeapWord* start, size_t count);
   static void static_write_ref_array_post(HeapWord* start, size_t count);
+  // Narrow oop versions of the above; count is # of array elements being written,
+  // starting with "start", which is HeapWord-aligned.
+  static void static_write_ref_array_pre_narrow(HeapWord* start, size_t count);
+  static void static_write_ref_array_post_narrow(HeapWord* start, size_t count);
 
 protected:
   virtual void write_ref_array_work(MemRegion mr) = 0;
--- a/src/share/vm/memory/barrierSet.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/barrierSet.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -23,10 +23,10 @@
  */
 
 // Inline functions of BarrierSet, which de-virtualize certain
-// performance-critical calls when when the barrier is the most common
+// performance-critical calls when the barrier is the most common
 // card-table kind.
 
-void BarrierSet::write_ref_field_pre(void* field, oop new_val) {
+template <class T> void BarrierSet::write_ref_field_pre(T* field, oop new_val) {
   if (kind() == CardTableModRef) {
     ((CardTableModRefBS*)this)->inline_write_ref_field_pre(field, new_val);
   } else {
--- a/src/share/vm/memory/blockOffsetTable.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/blockOffsetTable.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -235,7 +235,7 @@
   };
 
   static size_t power_to_cards_back(uint i) {
-    return 1 << (LogBase * i);
+    return (size_t)(1 << (LogBase * i));
   }
   static size_t power_to_words_back(uint i) {
     return power_to_cards_back(i) * N_words;
--- a/src/share/vm/memory/cardTableModRefBS.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/cardTableModRefBS.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,15 +217,28 @@
       (HeapWord*) align_size_up((uintptr_t)new_end, _page_size);
     assert(new_end_aligned >= (HeapWord*) new_end,
            "align up, but less");
+    // Check the other regions (excludes "ind") to ensure that
+    // the new_end_aligned does not intrude onto the committed
+    // space of another region.
     int ri = 0;
     for (ri = 0; ri < _cur_covered_regions; ri++) {
       if (ri != ind) {
         if (_committed[ri].contains(new_end_aligned)) {
-          assert((new_end_aligned >= _committed[ri].start()) &&
-                 (_committed[ri].start() > _committed[ind].start()),
+          // The prior check included in the assert
+          // (new_end_aligned >= _committed[ri].start())
+          // is redundant with the "contains" test.
+          // Any region containing the new end
+          // should start at or beyond the region found (ind)
+          // for the new end (committed regions are not expected to
+          // be proper subsets of other committed regions).
+          assert(_committed[ri].start() >= _committed[ind].start(),
                  "New end of committed region is inconsistent");
           new_end_aligned = _committed[ri].start();
-          assert(new_end_aligned > _committed[ind].start(),
+          // new_end_aligned can be equal to the start of its
+          // committed region (i.e., of "ind") if a second
+          // region following "ind" also start at the same location
+          // as "ind".
+          assert(new_end_aligned >= _committed[ind].start(),
             "New end of committed region is before start");
           debug_only(collided = true;)
           // Should only collide with 1 region
@@ -343,18 +356,62 @@
   inline_write_ref_field(field, newVal);
 }
 
+/*
+   Claimed and deferred bits are used together in G1 during the evacuation
+   pause. These bits can have the following state transitions:
+   1. The claimed bit can be put over any other card state. Except that
+      the "dirty -> dirty and claimed" transition is checked for in
+      G1 code and is not used.
+   2. Deferred bit can be set only if the previous state of the card
+      was either clean or claimed. mark_card_deferred() is wait-free.
+      We do not care if the operation is be successful because if
+      it does not it will only result in duplicate entry in the update
+      buffer because of the "cache-miss". So it's not worth spinning.
+ */
+
 
 bool CardTableModRefBS::claim_card(size_t card_index) {
   jbyte val = _byte_map[card_index];
-  if (val != claimed_card_val()) {
-    jbyte res = Atomic::cmpxchg((jbyte) claimed_card_val(), &_byte_map[card_index], val);
-    if (res == val)
+  assert(val != dirty_card_val(), "Shouldn't claim a dirty card");
+  while (val == clean_card_val() ||
+         (val & (clean_card_mask_val() | claimed_card_val())) != claimed_card_val()) {
+    jbyte new_val = val;
+    if (val == clean_card_val()) {
+      new_val = (jbyte)claimed_card_val();
+    } else {
+      new_val = val | (jbyte)claimed_card_val();
+    }
+    jbyte res = Atomic::cmpxchg(new_val, &_byte_map[card_index], val);
+    if (res == val) {
       return true;
-    else return false;
+    }
+    val = res;
   }
   return false;
 }
 
+bool CardTableModRefBS::mark_card_deferred(size_t card_index) {
+  jbyte val = _byte_map[card_index];
+  // It's already processed
+  if ((val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val()) {
+    return false;
+  }
+  // Cached bit can be installed either on a clean card or on a claimed card.
+  jbyte new_val = val;
+  if (val == clean_card_val()) {
+    new_val = (jbyte)deferred_card_val();
+  } else {
+    if (val & claimed_card_val()) {
+      new_val = val | (jbyte)deferred_card_val();
+    }
+  }
+  if (new_val != val) {
+    Atomic::cmpxchg(new_val, &_byte_map[card_index], val);
+  }
+  return true;
+}
+
+
 void CardTableModRefBS::non_clean_card_iterate(Space* sp,
                                                MemRegion mr,
                                                DirtyCardToOopClosure* dcto_cl,
--- a/src/share/vm/memory/cardTableModRefBS.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/cardTableModRefBS.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,15 @@
 
   enum CardValues {
     clean_card                  = -1,
+    // The mask contains zeros in places for all other values.
+    clean_card_mask             = clean_card - 31,
+
     dirty_card                  =  0,
     precleaned_card             =  1,
-    claimed_card                =  3,
-    last_card                   =  4,
-    CT_MR_BS_last_reserved      = 10
+    claimed_card                =  2,
+    deferred_card               =  4,
+    last_card                   =  8,
+    CT_MR_BS_last_reserved      = 16
   };
 
   // dirty and precleaned are equivalent wrt younger_refs_iter.
@@ -254,9 +258,11 @@
   };
 
   static int clean_card_val()      { return clean_card; }
+  static int clean_card_mask_val() { return clean_card_mask; }
   static int dirty_card_val()      { return dirty_card; }
   static int claimed_card_val()    { return claimed_card; }
   static int precleaned_card_val() { return precleaned_card; }
+  static int deferred_card_val()   { return deferred_card; }
 
   // For RTTI simulation.
   bool is_a(BarrierSet::Name bsn) {
@@ -281,7 +287,7 @@
   // these functions here for performance.
 protected:
   void write_ref_field_work(oop obj, size_t offset, oop newVal);
-  void write_ref_field_work(void* field, oop newVal);
+  virtual void write_ref_field_work(void* field, oop newVal);
 public:
 
   bool has_write_ref_array_opt() { return true; }
@@ -311,10 +317,10 @@
 
   // *** Card-table-barrier-specific things.
 
-  inline void inline_write_ref_field_pre(void* field, oop newVal) {}
+  template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {}
 
-  inline void inline_write_ref_field(void* field, oop newVal) {
-    jbyte* byte = byte_for(field);
+  template <class T> inline void inline_write_ref_field(T* field, oop newVal) {
+    jbyte* byte = byte_for((void*)field);
     *byte = dirty_card;
   }
 
@@ -329,7 +335,8 @@
   }
 
   bool is_card_claimed(size_t card_index) {
-    return _byte_map[card_index] == claimed_card_val();
+    jbyte val = _byte_map[card_index];
+    return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
   }
 
   bool claim_card(size_t card_index);
@@ -338,6 +345,13 @@
     return _byte_map[card_index] == clean_card_val();
   }
 
+  bool is_card_deferred(size_t card_index) {
+    jbyte val = _byte_map[card_index];
+    return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
+  }
+
+  bool mark_card_deferred(size_t card_index);
+
   // Card marking array base (adjusted for heap low boundary)
   // This would be the 0th element of _byte_map, if the heap started at 0x0.
   // But since the heap starts at some higher address, this points to somewhere
@@ -434,6 +448,10 @@
     return byte_for(p) - _byte_map;
   }
 
+  const jbyte* byte_for_index(const size_t card_index) const {
+    return _byte_map + card_index;
+  }
+
   void verify();
   void verify_guard();
 
--- a/src/share/vm/memory/cardTableRS.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/cardTableRS.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -33,12 +33,8 @@
 {
 #ifndef SERIALGC
   if (UseG1GC) {
-    if (G1RSBarrierUseQueue) {
       _ct_bs = new G1SATBCardTableLoggingModRefBS(whole_heap,
                                                   max_covered_regions);
-    } else {
-      _ct_bs = new G1SATBCardTableModRefBS(whole_heap, max_covered_regions);
-    }
   } else {
     _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions);
   }
--- a/src/share/vm/memory/dump.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/dump.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -928,6 +928,10 @@
     // 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.
--- a/src/share/vm/memory/filemap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/filemap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -35,14 +35,14 @@
 extern address JVM_FunctionAtStart();
 extern address JVM_FunctionAtEnd();
 
-// Complain and stop. All error conditions occuring during the writing of
+// Complain and stop. All error conditions occurring during the writing of
 // an archive file should stop the process.  Unrecoverable errors during
 // the reading of the archive file should stop the process.
 
 static void fail(const char *msg, va_list ap) {
   // This occurs very early during initialization: tty is not initialized.
   jio_fprintf(defaultStream::error_stream(),
-              "An error has occured while processing the"
+              "An error has occurred while processing the"
               " shared archive file.\n");
   jio_vfprintf(defaultStream::error_stream(), msg, ap);
   jio_fprintf(defaultStream::error_stream(), "\n");
--- a/src/share/vm/memory/gcLocker.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/gcLocker.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -242,6 +242,31 @@
 #endif
 };
 
+// A SkipGCALot object is used to elide the usual effect of gc-a-lot
+// over a section of execution by a thread. Currently, it's used only to
+// prevent re-entrant calls to GC.
+class SkipGCALot : public StackObj {
+  private:
+   bool _saved;
+   Thread* _t;
+
+  public:
+#ifdef ASSERT
+    SkipGCALot(Thread* t) : _t(t) {
+      _saved = _t->skip_gcalot();
+      _t->set_skip_gcalot(true);
+    }
+
+    ~SkipGCALot() {
+      assert(_t->skip_gcalot(), "Save-restore protocol invariant");
+      _t->set_skip_gcalot(_saved);
+    }
+#else
+    SkipGCALot(Thread* t) { }
+    ~SkipGCALot() { }
+#endif
+};
+
 // JRT_LEAF currently can be called from either _thread_in_Java or
 // _thread_in_native mode. In _thread_in_native, it is ok
 // for another thread to trigger GC. The rest of the JRT_LEAF
--- a/src/share/vm/memory/genCollectedHeap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/genCollectedHeap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -218,6 +218,31 @@
     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;
@@ -461,6 +486,7 @@
             // The full_collections increment was missed above.
             increment_total_full_collections();
           }
+          pre_full_gc_dump();    // do any pre full gc dumps
         }
         // Timer for individual generations. Last argument is false: no CR
         TraceTime t1(_gens[i]->short_name(), PrintGCDetails, false, gclog_or_tty);
@@ -579,6 +605,10 @@
     // a whole heap collection.
     complete = complete || (max_level_collected == n_gens() - 1);
 
+    if (complete) { // We did a "major" collection
+      post_full_gc_dump();   // do any post full gc dumps
+    }
+
     if (PrintGCDetails) {
       print_heap_change(gch_prev_used);
 
@@ -616,6 +646,10 @@
     Universe::print_heap_after_gc();
   }
 
+#ifdef TRACESPINNING
+  ParallelTaskTerminator::print_termination_counts();
+#endif
+
   if (ExitAfterGCNum > 0 && total_collections() == ExitAfterGCNum) {
     tty->print_cr("Stopping after GC #%d", ExitAfterGCNum);
     vm_exit(-1);
@@ -916,6 +950,13 @@
   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) {
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->object_iterate_since_last_GC(cl);
@@ -1157,7 +1198,7 @@
   return _gens[level]->gc_stats();
 }
 
-void GenCollectedHeap::verify(bool allow_dirty, bool silent) {
+void GenCollectedHeap::verify(bool allow_dirty, bool silent, bool option /* ignored */) {
   if (!silent) {
     gclog_or_tty->print("permgen ");
   }
--- a/src/share/vm/memory/genCollectedHeap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/genCollectedHeap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +215,7 @@
   void oop_iterate(OopClosure* cl);
   void oop_iterate(MemRegion mr, OopClosure* cl);
   void object_iterate(ObjectClosure* cl);
+  void safe_object_iterate(ObjectClosure* cl);
   void object_iterate_since_last_GC(ObjectClosure* cl);
   Space* space_containing(const void* addr) const;
 
@@ -324,7 +325,7 @@
   void prepare_for_verify();
 
   // Override.
-  void verify(bool allow_dirty, bool silent);
+  void verify(bool allow_dirty, bool silent, bool /* option */);
 
   // Override.
   void print() const;
--- a/src/share/vm/memory/genOopClosures.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/genOopClosures.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -57,7 +57,7 @@
   template <class T> void do_barrier(T* p);
 
   // Version for use by closures that may be called in parallel code.
-  void par_do_barrier(oop* p);
+  template <class T> void par_do_barrier(T* p);
 
  public:
   OopsInGenClosure() : OopClosure(NULL),
--- a/src/share/vm/memory/genOopClosures.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/genOopClosures.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -40,18 +40,20 @@
 
 template <class T> inline void OopsInGenClosure::do_barrier(T* p) {
   assert(generation()->is_in_reserved(p), "expected ref in generation");
-  assert(!oopDesc::is_null(*p), "expected non-null object");
-  oop obj = oopDesc::load_decode_heap_oop_not_null(p);
+  T heap_oop = oopDesc::load_heap_oop(p);
+  assert(!oopDesc::is_null(heap_oop), "expected non-null oop");
+  oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
   // If p points to a younger generation, mark the card.
   if ((HeapWord*)obj < _gen_boundary) {
     _rs->inline_write_ref_field_gc(p, obj);
   }
 }
 
-inline void OopsInGenClosure::par_do_barrier(oop* p) {
+template <class T> inline void OopsInGenClosure::par_do_barrier(T* p) {
   assert(generation()->is_in_reserved(p), "expected ref in generation");
-  oop obj = *p;
-  assert(obj != NULL, "expected non-null object");
+  T heap_oop = oopDesc::load_heap_oop(p);
+  assert(!oopDesc::is_null(heap_oop), "expected non-null oop");
+  oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
   // If p points to a younger generation, mark the card.
   if ((HeapWord*)obj < gen_boundary()) {
     rs()->write_ref_field_gc_par(p, obj);
--- a/src/share/vm/memory/generation.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/generation.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -319,6 +319,21 @@
   space_iterate(&blk);
 }
 
+class GenerationSafeObjIterateClosure : public SpaceClosure {
+ private:
+  ObjectClosure* _cl;
+ public:
+  virtual void do_space(Space* s) {
+    s->safe_object_iterate(_cl);
+  }
+  GenerationSafeObjIterateClosure(ObjectClosure* cl) : _cl(cl) {}
+};
+
+void Generation::safe_object_iterate(ObjectClosure* cl) {
+  GenerationSafeObjIterateClosure blk(cl);
+  space_iterate(&blk);
+}
+
 void Generation::prepare_for_compaction(CompactPoint* cp) {
   // Generic implementation, can be specialized
   CompactibleSpace* space = first_compaction_space();
--- a/src/share/vm/memory/generation.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/generation.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -518,6 +518,11 @@
   // each.
   virtual void object_iterate(ObjectClosure* cl);
 
+  // Iterate over all safe objects in the generation, calling "cl.do_object" on
+  // each.  An object is safe if its references point to other objects in
+  // the heap.  This defaults to object_iterate() unless overridden.
+  virtual void safe_object_iterate(ObjectClosure* cl);
+
   // Iterate over all objects allocated in the generation since the last
   // collection, calling "cl.do_object" on each.  The generation must have
   // been initialized properly to support this function, or else this call
--- a/src/share/vm/memory/heap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/heap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -112,7 +112,7 @@
 
   const size_t rs_align = page_size == (size_t) os::vm_page_size() ? 0 :
     MAX2(page_size, granularity);
-  ReservedSpace rs(r_size, rs_align, rs_align > 0);
+  ReservedCodeSpace rs(r_size, rs_align, rs_align > 0);
   os::trace_page_sizes("code heap", committed_size, reserved_size, page_size,
                        rs.base(), rs.size());
   if (!_memory.initialize(rs, c_size)) {
--- a/src/share/vm/memory/heapInspection.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/heapInspection.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -233,7 +233,7 @@
   size_t missed_count() { return _missed_count; }
 };
 
-void HeapInspection::heap_inspection(outputStream* st) {
+void HeapInspection::heap_inspection(outputStream* st, bool need_prologue) {
   ResourceMark rm;
   HeapWord* ref;
 
@@ -244,7 +244,9 @@
     case CollectedHeap::GenCollectedHeap: {
       is_shared_heap = true;
       SharedHeap* sh = (SharedHeap*)heap;
-      sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
+      if (need_prologue) {
+        sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
+      }
       ref = sh->perm_gen()->used_region().start();
       break;
     }
@@ -263,6 +265,9 @@
   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
@@ -287,7 +292,7 @@
   }
   st->flush();
 
-  if (is_shared_heap) {
+  if (need_prologue && is_shared_heap) {
     SharedHeap* sh = (SharedHeap*)heap;
     sh->gc_epilogue(false /* !full */); // release all acquired locks, etc.
   }
@@ -317,5 +322,8 @@
 
   // 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
+  // objects that may contain bad references.
   Universe::heap()->object_iterate(&fic);
 }
--- a/src/share/vm/memory/heapInspection.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/heapInspection.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -127,6 +127,6 @@
 
 class HeapInspection : public AllStatic {
  public:
-  static void heap_inspection(outputStream* st) KERNEL_RETURN;
+  static void heap_inspection(outputStream* st, bool need_prologue) KERNEL_RETURN;
   static void find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result) KERNEL_RETURN;
 };
--- a/src/share/vm/memory/oopFactory.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/oopFactory.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -82,15 +82,19 @@
 }
 
 
-constantPoolOop oopFactory::new_constantPool(int length, TRAPS) {
+constantPoolOop oopFactory::new_constantPool(int length,
+                                             bool is_conc_safe,
+                                             TRAPS) {
   constantPoolKlass* ck = constantPoolKlass::cast(Universe::constantPoolKlassObj());
-  return ck->allocate(length, CHECK_NULL);
+  return ck->allocate(length, is_conc_safe, CHECK_NULL);
 }
 
 
-constantPoolCacheOop oopFactory::new_constantPoolCache(int length, TRAPS) {
+constantPoolCacheOop oopFactory::new_constantPoolCache(int length,
+                                                       bool is_conc_safe,
+                                                       TRAPS) {
   constantPoolCacheKlass* ck = constantPoolCacheKlass::cast(Universe::constantPoolCacheKlassObj());
-  return ck->allocate(length, CHECK_NULL);
+  return ck->allocate(length, is_conc_safe, CHECK_NULL);
 }
 
 
@@ -105,11 +109,13 @@
                                            int compressed_line_number_size,
                                            int localvariable_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, checked_exceptions_length,
+                       is_conc_safe,
                        CHECK_NULL);
 }
 
@@ -117,14 +123,17 @@
 methodOop oopFactory::new_method(int byte_code_size, AccessFlags access_flags,
                                  int compressed_line_number_size,
                                  int localvariable_table_length,
-                                 int checked_exceptions_length, TRAPS) {
+                                 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,
-                                      checked_exceptions_length, CHECK_NULL);
+                                      checked_exceptions_length,
+                                      is_conc_safe, CHECK_NULL);
   constMethodHandle rw(THREAD, cm);
   return mk->allocate(rw, access_flags, CHECK_NULL);
 }
--- a/src/share/vm/memory/oopFactory.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/oopFactory.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +81,12 @@
   static symbolHandle    new_symbol_handle(const char* name, TRAPS) { return new_symbol_handle(name, (int)strlen(name), CHECK_(symbolHandle())); }
 
   // Constant pools
-  static constantPoolOop      new_constantPool     (int length, TRAPS);
-  static constantPoolCacheOop new_constantPoolCache(int length, TRAPS);
+  static constantPoolOop      new_constantPool     (int length,
+                                                    bool is_conc_safe,
+                                                    TRAPS);
+  static constantPoolCacheOop new_constantPoolCache(int length,
+                                                    bool is_conc_safe,
+                                                    TRAPS);
 
   // Instance classes
   static klassOop        new_instanceKlass(int vtable_len, int itable_len, int static_field_size,
@@ -93,9 +97,20 @@
   static constMethodOop  new_constMethod(int byte_code_size,
                                          int compressed_line_number_size,
                                          int localvariable_table_length,
-                                         int checked_exceptions_length, TRAPS);
+                                         int checked_exceptions_length,
+                                         bool is_conc_safe,
+                                         TRAPS);
 public:
-  static methodOop       new_method(int byte_code_size, AccessFlags access_flags, int compressed_line_number_size, int localvariable_table_length, int checked_exceptions_length, TRAPS);
+  // 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 checked_exceptions_length,
+                                    bool is_conc_safe,
+                                    TRAPS);
 
   // Method Data containers
   static methodDataOop   new_methodData(methodHandle method, TRAPS);
--- a/src/share/vm/memory/permGen.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/permGen.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/memory/permGen.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/permGen.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -36,7 +36,7 @@
   friend class VMStructs;
  protected:
   size_t _capacity_expansion_limit;  // maximum expansion allowed without a
-                                     // full gc occuring
+                                     // full gc occurring
 
   HeapWord* mem_allocate_in_gen(size_t size, Generation* gen);
 
--- a/src/share/vm/memory/referenceProcessor.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/referenceProcessor.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,12 +721,6 @@
                              iter.obj(), iter.obj()->blueprint()->internal_name());
     }
     assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference");
-    // If discovery is concurrent, we may have objects with null referents,
-    // being those that were concurrently cleared after they were discovered
-    // (and not subsequently precleaned).
-    assert(   (discovery_is_atomic() && iter.referent()->is_oop())
-           || (!discovery_is_atomic() && iter.referent()->is_oop_or_null(UseConcMarkSweepGC)),
-           "Adding a bad referent");
     iter.next();
   }
   // Remember to keep sentinel pointer around
@@ -1019,12 +1013,19 @@
   // discovered_addr.
   oop current_head = refs_list.head();
 
-  // Note: In the case of G1, this pre-barrier is strictly
+  // Note: In the case of G1, this specific pre-barrier is strictly
   // not necessary because the only case we are interested in
-  // here is when *discovered_addr is NULL, so this will expand to
-  // nothing. As a result, I am just manually eliding this out for G1.
+  // here is when *discovered_addr is NULL (see the CAS further below),
+  // so this will expand to nothing. As a result, we have manually
+  // elided this out for G1, but left in the test for some future
+  // collector that might have need for a pre-barrier here.
   if (_discovered_list_needs_barrier && !UseG1GC) {
-    _bs->write_ref_field_pre((void*)discovered_addr, current_head); guarantee(false, "Needs to be fixed: YSR");
+    if (UseCompressedOops) {
+      _bs->write_ref_field_pre((narrowOop*)discovered_addr, current_head);
+    } else {
+      _bs->write_ref_field_pre((oop*)discovered_addr, current_head);
+    }
+    guarantee(false, "Need to check non-G1 collector");
   }
   oop retest = oopDesc::atomic_compare_exchange_oop(current_head, discovered_addr,
                                                     NULL);
@@ -1035,9 +1036,8 @@
     refs_list.set_head(obj);
     refs_list.inc_length(1);
     if (_discovered_list_needs_barrier) {
-      _bs->write_ref_field((void*)discovered_addr, current_head); guarantee(false, "Needs to be fixed: YSR");
+      _bs->write_ref_field((void*)discovered_addr, current_head);
     }
-
   } else {
     // If retest was non NULL, another thread beat us to it:
     // The reference has already been discovered...
@@ -1183,11 +1183,16 @@
     // pre-value, we can safely elide the pre-barrier here for the case of G1.
     assert(discovered == NULL, "control point invariant");
     if (_discovered_list_needs_barrier && !UseG1GC) { // safe to elide for G1
-      _bs->write_ref_field_pre((oop*)discovered_addr, current_head);
+      if (UseCompressedOops) {
+        _bs->write_ref_field_pre((narrowOop*)discovered_addr, current_head);
+      } else {
+        _bs->write_ref_field_pre((oop*)discovered_addr, current_head);
+      }
+      guarantee(false, "Need to check non-G1 collector");
     }
     oop_store_raw(discovered_addr, current_head);
     if (_discovered_list_needs_barrier) {
-      _bs->write_ref_field((oop*)discovered_addr, current_head);
+      _bs->write_ref_field((void*)discovered_addr, current_head);
     }
     list->set_head(obj);
     list->inc_length(1);
--- a/src/share/vm/memory/sharedHeap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/sharedHeap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/memory/sharedHeap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/sharedHeap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/memory/space.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/space.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -569,7 +569,15 @@
   if (prev > mr.start()) {
     region_start_addr = prev;
     blk_start_addr    = prev;
-    assert(blk_start_addr == block_start(region_start_addr), "invariant");
+    // The previous invocation may have pushed "prev" beyond the
+    // last allocated block yet there may be still be blocks
+    // in this region due to a particular coalescing policy.
+    // Relax the assertion so that the case where the unallocated
+    // block is maintained and "prev" is beyond the unallocated
+    // block does not cause the assertion to fire.
+    assert((BlockOffsetArrayUseUnallocatedBlock &&
+            (!is_in(prev))) ||
+           (blk_start_addr == block_start(region_start_addr)), "invariant");
   } else {
     region_start_addr = mr.start();
     blk_start_addr    = block_start(region_start_addr);
@@ -705,6 +713,12 @@
   object_iterate_from(bm, blk);
 }
 
+// For a continguous space object_iterate() and safe_object_iterate()
+// are the same.
+void ContiguousSpace::safe_object_iterate(ObjectClosure* blk) {
+  object_iterate(blk);
+}
+
 void ContiguousSpace::object_iterate_from(WaterMark mark, ObjectClosure* blk) {
   assert(mark.space() == this, "Mark does not match space");
   HeapWord* p = mark.point();
--- a/src/share/vm/memory/space.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/space.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +106,7 @@
   virtual void set_end(HeapWord* value)    { _end = value; }
 
   virtual HeapWord* saved_mark_word() const  { return _saved_mark_word; }
+
   void set_saved_mark_word(HeapWord* p) { _saved_mark_word = p; }
 
   MemRegionClosure* preconsumptionDirtyCardClosure() const {
@@ -193,6 +194,9 @@
   // each.  Objects allocated by applications of the closure are not
   // included in the iteration.
   virtual void object_iterate(ObjectClosure* blk) = 0;
+  // Similar to object_iterate() except only iterates over
+  // objects whose internal references point to objects in the space.
+  virtual void safe_object_iterate(ObjectClosure* blk) = 0;
 
   // Iterate over all objects that intersect with mr, calling "cl->do_object"
   // on each.  There is an exception to this: if this closure has already
@@ -843,6 +847,9 @@
   void oop_iterate(OopClosure* cl);
   void oop_iterate(MemRegion mr, OopClosure* 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.
+  void safe_object_iterate(ObjectClosure* blk);
   void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl);
   // iterates on objects up to the safe limit
   HeapWord* object_iterate_careful(ObjectClosureCareful* cl);
--- a/src/share/vm/memory/tenuredGeneration.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/tenuredGeneration.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/memory/threadLocalAllocBuffer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/threadLocalAllocBuffer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/memory/universe.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/universe.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 @@
 size_t          Universe::_heap_used_at_last_gc = 0;
 
 CollectedHeap*  Universe::_collectedHeap = NULL;
-address         Universe::_heap_base = NULL;
+
+NarrowOopStruct Universe::_narrow_oop = { NULL, 0, true };
 
 
 void Universe::basic_type_classes_do(void f(klassOop)) {
@@ -729,6 +730,53 @@
   return JNI_OK;
 }
 
+// Choose the heap base address and oop encoding mode
+// when compressed oops are used:
+// Unscaled  - Use 32-bits oops without encoding when
+//     NarrowOopHeapBaseMin + heap_size < 4Gb
+// ZeroBased - Use zero based compressed oops with encoding when
+//     NarrowOopHeapBaseMin + heap_size < 32Gb
+// HeapBased - Use compressed oops with heap base + encoding.
+
+// 4Gb
+static const uint64_t NarrowOopHeapMax = (uint64_t(max_juint) + 1);
+// 32Gb
+static const uint64_t OopEncodingHeapMax = NarrowOopHeapMax << LogMinObjAlignmentInBytes;
+
+char* Universe::preferred_heap_base(size_t heap_size, NARROW_OOP_MODE mode) {
+#ifdef _LP64
+  if (UseCompressedOops) {
+    assert(mode == UnscaledNarrowOop  ||
+           mode == ZeroBasedNarrowOop ||
+           mode == HeapBasedNarrowOop, "mode is invalid");
+
+    const size_t total_size = heap_size + HeapBaseMinAddress;
+    if (total_size <= OopEncodingHeapMax && (mode != HeapBasedNarrowOop)) {
+      if (total_size <= NarrowOopHeapMax && (mode == UnscaledNarrowOop) &&
+          (Universe::narrow_oop_shift() == 0)) {
+        // Use 32-bits oops without encoding and
+        // place heap's top on the 4Gb boundary
+        return (char*)(NarrowOopHeapMax - heap_size);
+      } else {
+        // Can't reserve with NarrowOopShift == 0
+        Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
+        if (mode == UnscaledNarrowOop ||
+            mode == ZeroBasedNarrowOop && total_size <= NarrowOopHeapMax) {
+          // Use zero based compressed oops with encoding and
+          // place heap's top on the 32Gb boundary in case
+          // total_size > 4Gb or failed to reserve below 4Gb.
+          return (char*)(OopEncodingHeapMax - heap_size);
+        }
+      }
+    } else {
+      // Can't reserve below 32Gb.
+      Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
+    }
+  }
+#endif
+  return NULL; // also return NULL (don't care) for 32-bit VM
+}
+
 jint Universe::initialize_heap() {
 
   if (UseParallelGC) {
@@ -773,6 +821,8 @@
   if (status != JNI_OK) {
     return status;
   }
+
+#ifdef _LP64
   if (UseCompressedOops) {
     // Subtract a page because something can get allocated at heap base.
     // This also makes implicit null checking work, because the
@@ -780,8 +830,49 @@
     // See needs_explicit_null_check.
     // Only set the heap base for compressed oops because it indicates
     // compressed oops for pstack code.
-    Universe::_heap_base = Universe::heap()->base() - os::vm_page_size();
+    if (PrintCompressedOopsMode) {
+      tty->cr();
+      tty->print("heap address: "PTR_FORMAT, Universe::heap()->base());
+    }
+    if ((uint64_t)Universe::heap()->reserved_region().end() > OopEncodingHeapMax) {
+      // Can't reserve heap below 32Gb.
+      Universe::set_narrow_oop_base(Universe::heap()->base() - os::vm_page_size());
+      Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
+      if (PrintCompressedOopsMode) {
+        tty->print(", Compressed Oops with base: "PTR_FORMAT, Universe::narrow_oop_base());
+      }
+    } else {
+      Universe::set_narrow_oop_base(0);
+      if (PrintCompressedOopsMode) {
+        tty->print(", zero based Compressed Oops");
+      }
+#ifdef _WIN64
+      if (!Universe::narrow_oop_use_implicit_null_checks()) {
+        // Don't need guard page for implicit checks in indexed addressing
+        // mode with zero based Compressed Oops.
+        Universe::set_narrow_oop_use_implicit_null_checks(true);
+      }
+#endif //  _WIN64
+      if((uint64_t)Universe::heap()->reserved_region().end() > NarrowOopHeapMax) {
+        // Can't reserve heap below 4Gb.
+        Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
+      } else {
+        assert(Universe::narrow_oop_shift() == 0, "use unscaled narrow oop");
+        if (PrintCompressedOopsMode) {
+          tty->print(", 32-bits Oops");
+        }
+      }
+    }
+    if (PrintCompressedOopsMode) {
+      tty->cr();
+      tty->cr();
+    }
   }
+  assert(Universe::narrow_oop_base() == (Universe::heap()->base() - os::vm_page_size()) ||
+         Universe::narrow_oop_base() == NULL, "invalid value");
+  assert(Universe::narrow_oop_shift() == LogMinObjAlignmentInBytes ||
+         Universe::narrow_oop_shift() == 0, "invalid value");
+#endif
 
   // We will never reach the CATCH below since Exceptions::_throw will cause
   // the VM to exit if an exception is thrown during initialization
@@ -1079,7 +1170,7 @@
   st->print_cr("}");
 }
 
-void Universe::verify(bool allow_dirty, bool silent) {
+void Universe::verify(bool allow_dirty, bool silent, bool option) {
   if (SharedSkipVerify) {
     return;
   }
@@ -1103,7 +1194,7 @@
   if (!silent) gclog_or_tty->print("[Verifying ");
   if (!silent) gclog_or_tty->print("threads ");
   Threads::verify();
-  heap()->verify(allow_dirty, silent);
+  heap()->verify(allow_dirty, silent, option);
 
   if (!silent) gclog_or_tty->print("syms ");
   SymbolTable::verify();
--- a/src/share/vm/memory/universe.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/memory/universe.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +90,19 @@
   methodOop get_methodOop();
 };
 
+// For UseCompressedOops.
+struct NarrowOopStruct {
+  // Base address for oop-within-java-object materialization.
+  // NULL if using wide oops or zero based narrow oops.
+  address _base;
+  // Number of shift bits for encoding/decoding narrow oops.
+  // 0 if using wide oops or zero based unscaled narrow oops,
+  // LogMinObjAlignmentInBytes otherwise.
+  int     _shift;
+  // Generate code with implicit null checks for narrow oops.
+  bool    _use_implicit_null_checks;
+};
+
 
 class Universe: AllStatic {
   // Ugh.  Universe is much too friendly.
@@ -181,9 +194,9 @@
 
   // The particular choice of collected heap.
   static CollectedHeap* _collectedHeap;
-  // Base address for oop-within-java-object materialization.
-  // NULL if using wide oops.  Doubles as heap oop null value.
-  static address        _heap_base;
+
+  // For UseCompressedOops.
+  static struct NarrowOopStruct _narrow_oop;
 
   // array of dummy objects used with +FullGCAlot
   debug_only(static objArrayOop _fullgc_alot_dummy_array;)
@@ -328,8 +341,26 @@
   static CollectedHeap* heap() { return _collectedHeap; }
 
   // For UseCompressedOops
-  static address heap_base()       { return _heap_base; }
-  static address* heap_base_addr() { return &_heap_base; }
+  static address* narrow_oop_base_addr()              { return &_narrow_oop._base; }
+  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 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);
 
   // Historic gc information
   static size_t get_heap_capacity_at_last_gc()         { return _heap_capacity_at_last_gc; }
@@ -368,7 +399,7 @@
 
   // Debugging
   static bool verify_in_progress() { return _verify_in_progress; }
-  static void verify(bool allow_dirty = true, bool silent = false);
+  static void verify(bool allow_dirty = true, bool silent = false, bool option = true);
   static int  verify_count()                  { return _verify_count; }
   static void print();
   static void print_on(outputStream* st);
--- a/src/share/vm/oops/arrayKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/arrayKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -140,6 +140,7 @@
     THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
   }
   if (length > arrayOopDesc::max_array_length(T_ARRAY)) {
+    report_java_out_of_memory("Requested array size exceeds VM limit");
     THROW_OOP_0(Universe::out_of_memory_error_array_size());
   }
   int size = objArrayOopDesc::object_size(length);
--- a/src/share/vm/oops/arrayOop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/arrayOop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/oops/constMethodKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constMethodKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,16 @@
   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 checked_exceptions_length,
+                                          bool is_conc_safe,
                                           TRAPS) {
 
   int size = constMethodOopDesc::object_size(byte_code_size,
@@ -75,6 +81,7 @@
                                 compressed_line_number_size,
                                 localvariable_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;
--- a/src/share/vm/oops/constMethodKlass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constMethodKlass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,16 @@
   // 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 checked_exceptions_length, TRAPS);
+                          int checked_exceptions_length,
+                          bool is_conc_safe,
+                          TRAPS);
   static klassOop create_klass(TRAPS);
 
   // Sizing
--- a/src/share/vm/oops/constMethodOop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constMethodOop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,6 +104,7 @@
   // 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_method(); }
@@ -273,6 +274,8 @@
   oop*  adr_method() const             { return (oop*)&_method;          }
   oop*  adr_stackmap_data() const      { return (oop*)&_stackmap_data;   }
   oop*  adr_exception_table() const    { return (oop*)&_exception_table; }
+  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;
--- a/src/share/vm/oops/constantPoolKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constantPoolKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 "incls/_precompiled.incl"
 # include "incls/_constantPoolKlass.cpp.incl"
 
-constantPoolOop constantPoolKlass::allocate(int length, TRAPS) {
+constantPoolOop constantPoolKlass::allocate(int length, bool is_conc_safe, TRAPS) {
   int size = constantPoolOopDesc::object_size(length);
   KlassHandle klass (THREAD, as_klassOop());
   constantPoolOop c =
@@ -38,6 +38,9 @@
   c->set_flags(0);
   // only set to non-zero if constant pool is merged by RedefineClasses
   c->set_orig_length(0);
+  // if constant pool may change during RedefineClasses, it is created
+  // unsafe for GC concurrent processing.
+  c->set_is_conc_safe(is_conc_safe);
   // all fields are initialized; needed for GC
 
   // initialize tag array
@@ -207,6 +210,11 @@
   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");
@@ -304,6 +312,7 @@
   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");
     st->cr();
   }
 
--- a/src/share/vm/oops/constantPoolKlass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constantPoolKlass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
   // Allocation
   DEFINE_ALLOCATE_PERMANENT(constantPoolKlass);
-  constantPoolOop allocate(int length, TRAPS);
+  constantPoolOop allocate(int length, bool is_conc_safe, TRAPS);
   static klassOop create_klass(TRAPS);
 
   // Casting from klassOop
@@ -48,6 +48,8 @@
   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);
 
--- a/src/share/vm/oops/constantPoolOop.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constantPoolOop.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,32 +249,41 @@
 }
 
 
-symbolOop constantPoolOopDesc::uncached_name_ref_at(int which) {
-  jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
-  int name_index = extract_low_short_from_int(ref_index);
+symbolOop 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);
 }
 
 
-symbolOop constantPoolOopDesc::uncached_signature_ref_at(int which) {
-  jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
-  int signature_index = extract_high_short_from_int(ref_index);
+symbolOop 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::uncached_name_and_type_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) {
+  jint ref_index = field_or_method_at(which, uncached);
   return extract_high_short_from_int(ref_index);
 }
 
 
-int constantPoolOopDesc::uncached_klass_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_klass_ref_index_at(int which, bool uncached) {
+  jint ref_index = field_or_method_at(which, uncached);
   return extract_low_short_from_int(ref_index);
 }
 
 
+
+int constantPoolOopDesc::map_instruction_operand_to_index(int operand) {
+  if (constantPoolCacheOopDesc::is_secondary_index(operand)) {
+    return cache()->main_entry_at(operand)->constant_pool_index();
+  }
+  assert((int)(u2)operand == operand, "clean u2");
+  int index = Bytes::swap_u2(operand);
+  return cache()->entry_at(index)->constant_pool_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());
@@ -290,26 +299,14 @@
 }
 
 
-int constantPoolOopDesc::klass_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, false);
+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::name_and_type_ref_index_at(int which) {
-  jint ref_index = field_or_method_at(which, false);
-  return extract_high_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::name_ref_index_at(int which) {
-  jint ref_index = name_and_type_at(which);
-  return extract_low_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::signature_ref_index_at(int which) {
-  jint ref_index = name_and_type_at(which);
+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);
 }
 
@@ -353,20 +350,6 @@
 }
 
 
-symbolOop constantPoolOopDesc::name_ref_at(int which) {
-  jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
-  int name_index = extract_low_short_from_int(ref_index);
-  return symbol_at(name_index);
-}
-
-
-symbolOop constantPoolOopDesc::signature_ref_at(int which) {
-  jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
-  int signature_index = extract_high_short_from_int(ref_index);
-  return symbol_at(signature_index);
-}
-
-
 BasicType constantPoolOopDesc::basic_type_for_signature_at(int which) {
   return FieldType::basic_type(symbol_at(which));
 }
@@ -962,7 +945,7 @@
       }
       case JVM_CONSTANT_Long: {
         u8 val = Bytes::get_Java_u8(bytes);
-        printf("long         %lldl", *(jlong *) &val);
+        printf("long         "INT64_FORMAT, *(jlong *) &val);
         ent_size = 8;
         idx++; // Long takes two cpool slots
         break;
@@ -1198,7 +1181,28 @@
         unsigned int hash;
         char *str = string_at_noresolve(idx);
         symbolOop sym = SymbolTable::lookup_only(str, (int) strlen(str), hash);
-        idx1 = tbl->symbol_to_value(sym);
+        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(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;
+              sym = cur->symbol();
+              jchar* chars = sym->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));
--- a/src/share/vm/oops/constantPoolOop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/constantPoolOop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   klassOop             _pool_holder;   // the corresponding class
   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;
 
@@ -51,6 +53,7 @@
   void release_tag_at_put(int which, jbyte t)  { tags()->release_byte_at_put(which, t); }
 
   enum FlagBit {
+    FB_has_invokedynamic = 1,
     FB_has_pseudo_string = 2
   };
 
@@ -94,7 +97,9 @@
   typeArrayOop tags() const                 { return _tags; }
 
   bool has_pseudo_string() const            { return flag_at(FB_has_pseudo_string); }
+  bool has_invokedynamic() const            { return flag_at(FB_has_invokedynamic); }
   void set_pseudo_string()                  {    set_flag_at(FB_has_pseudo_string); }
+  void set_invokedynamic()                  {    set_flag_at(FB_has_invokedynamic); }
 
   // Klass holding pool
   klassOop pool_holder() const              { return _pool_holder; }
@@ -336,24 +341,28 @@
     return *int_at_addr(which);
   }
 
-  // The following methods (klass_ref_at, klass_ref_at_noresolve, name_ref_at,
-  // signature_ref_at, klass_ref_index_at, name_and_type_ref_index_at,
-  // name_ref_index_at, signature_ref_index_at) all expect constant pool indices
+  // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve,
+  // name_and_type_ref_index_at) all expect constant pool indices
   // from the bytecodes to be passed in, which are actually potentially byte-swapped
-  // contstant pool cache indices. See field_or_method_at.
+  // or rewritten constant pool cache indices.  They all call map_instruction_operand_to_index.
+  int map_instruction_operand_to_index(int operand);
+
+  // There are also "uncached" versions which do not map the operand index; see below.
 
   // Lookup for entries consisting of (klass_index, name_and_type index)
   klassOop klass_ref_at(int which, TRAPS);
   symbolOop klass_ref_at_noresolve(int which);
-  symbolOop name_ref_at(int which);
-  symbolOop signature_ref_at(int which);    // the type descriptor
+  symbolOop name_ref_at(int which)                { return impl_name_ref_at(which, false); }
+  symbolOop signature_ref_at(int which)           { return impl_signature_ref_at(which, false); }
 
-  int klass_ref_index_at(int which);
-  int name_and_type_ref_index_at(int which);
+  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);
-  int signature_ref_index_at(int which);
+  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)
+  symbolOop nt_name_ref_at(int which_nt)          { return symbol_at(name_ref_index_at(which_nt)); }
+  symbolOop nt_signature_ref_at(int which_nt)     { return symbol_at(signature_ref_index_at(which_nt)); }
 
   BasicType basic_type_for_signature_at(int which);
 
@@ -379,6 +388,9 @@
   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;
@@ -392,10 +404,10 @@
   // 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 possibly-byte-swapped
   // constant pool cache indices as do the peer methods above.
-  symbolOop uncached_name_ref_at(int which);
-  symbolOop uncached_signature_ref_at(int which);
-  int       uncached_klass_ref_index_at(int which);
-  int       uncached_name_and_type_ref_index_at(int which);
+  symbolOop uncached_name_ref_at(int which)                 { return impl_name_ref_at(which, true); }
+  symbolOop 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);
@@ -408,16 +420,19 @@
 
  private:
 
+  symbolOop impl_name_ref_at(int which, bool uncached);
+  symbolOop 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);
+
   // Takes either a constant pool cache index in possibly byte-swapped
   // byte order (which comes from the bytecodes after rewriting) or,
   // if "uncached" is true, a vanilla constant pool index
   jint field_or_method_at(int which, bool uncached) {
-    int i = -1;
-    if (uncached || cache() == NULL) {
-      i = which;
-    } else {
+    int i = which;
+    if (!uncached && cache() != NULL) {
       // change byte-ordering and go via cache
-      i = cache()->entry_at(Bytes::swap_u2(which))->constant_pool_index();
+      i = map_instruction_operand_to_index(which);
     }
     assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
     return *int_at_addr(i);
--- a/src/share/vm/oops/cpCacheKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/cpCacheKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,43 @@
 }
 
 
-constantPoolCacheOop constantPoolCacheKlass::allocate(int length, TRAPS) {
+constantPoolCacheOop constantPoolCacheKlass::allocate(int length,
+                                                      bool is_conc_safe,
+                                                      TRAPS) {
   // allocate memory
   int size = constantPoolCacheOopDesc::object_size(length);
+
   KlassHandle klass (THREAD, as_klassOop());
-  constantPoolCacheOop cache = (constantPoolCacheOop)
-    CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
+
+  // This is the original code.  The code from permanent_obj_allocate()
+  // was in-lined to allow the setting of is_conc_safe before the klass
+  // is installed.
+  // constantPoolCacheOop cache = (constantPoolCacheOop)
+  //   CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
+
+  oop obj = CollectedHeap::permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL);
+  constantPoolCacheOop cache = (constantPoolCacheOop) obj;
+  cache->set_is_conc_safe(is_conc_safe);
+  // The store to is_conc_safe must be visible before the klass
+  // is set.  This should be done safely because _is_conc_safe has
+  // been declared volatile.  If there are any problems, consider adding
+  // OrderAccess::storestore();
+  CollectedHeap::post_allocation_install_obj_klass(klass, obj, size);
+  NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value((HeapWord*) obj,
+                                                              size));
+
+  // The length field affects the size of the object.  The allocation
+  // above allocates the correct size (see calculation of "size") but
+  // the size() method of the constant pool cache oop will not reflect
+  // that size until the correct length is set.
   cache->set_length(length);
+
+  // The store of the length must be visible before is_conc_safe is
+  // set to a safe state.
+  // This should be done safely because _is_conc_safe has
+  // been declared volatile.  If there are any problems, consider adding
+  // OrderAccess::storestore();
+  cache->set_is_conc_safe(methodOopDesc::IsSafeConc);
   cache->set_constant_pool(NULL);
   return cache;
 }
@@ -114,7 +144,6 @@
   return size;
 }
 
-
 int constantPoolCacheKlass::oop_adjust_pointers(oop obj) {
   assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
   constantPoolCacheOop cache = (constantPoolCacheOop)obj;
@@ -131,15 +160,56 @@
   return size;
 }
 
+bool constantPoolCacheKlass::oop_is_conc_safe(oop obj) const {
+  assert(obj->is_constantPoolCache(), "should be constant pool");
+  return constantPoolCacheOop(obj)->is_conc_safe();
+}
+
 #ifndef SERIALGC
 void constantPoolCacheKlass::oop_copy_contents(PSPromotionManager* pm,
                                                oop obj) {
   assert(obj->is_constantPoolCache(), "should be constant pool");
+  if (EnableInvokeDynamic) {
+    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");
+    if (pool->has_invokedynamic()) {
+      for (int i = 0; i < cache->length(); i++) {
+        ConstantPoolCacheEntry* e = cache->entry_at(i);
+        oop* p = (oop*)&e->_f1;
+        if (e->is_secondary_entry()) {
+          if (PSScavenge::should_scavenge(p))
+            pm->claim_or_forward_breadth(p);
+          assert(!(e->is_vfinal() && PSScavenge::should_scavenge((oop*)&e->_f2)),
+                 "no live oops here");
+        }
+      }
+    }
+  }
 }
 
 void constantPoolCacheKlass::oop_push_contents(PSPromotionManager* pm,
                                                oop obj) {
   assert(obj->is_constantPoolCache(), "should be constant pool");
+  if (EnableInvokeDynamic) {
+    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");
+    if (pool->has_invokedynamic()) {
+      for (int i = 0; i < cache->length(); i++) {
+        ConstantPoolCacheEntry* e = cache->entry_at(i);
+        oop* p = (oop*)&e->_f1;
+        if (e->is_secondary_entry()) {
+          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
--- a/src/share/vm/oops/cpCacheKlass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/cpCacheKlass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
   // Allocation
   DEFINE_ALLOCATE_PERMANENT(constantPoolCacheKlass);
-  constantPoolCacheOop allocate(int length, TRAPS);
+  constantPoolCacheOop allocate(int length, bool is_conc_safe, TRAPS);
   static klassOop create_klass(TRAPS);
 
   // Casting from klassOop
@@ -48,6 +48,7 @@
   // Garbage collection
   void oop_follow_contents(oop obj);
   int oop_adjust_pointers(oop obj);
+  virtual bool oop_is_conc_safe(oop obj) const;
 
   // Parallel Scavenge and Parallel Old
   PARALLEL_GC_DECLS
--- a/src/share/vm/oops/cpCacheOop.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/cpCacheOop.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -29,8 +29,18 @@
 // Implememtation of ConstantPoolCacheEntry
 
 void ConstantPoolCacheEntry::set_initial_state(int index) {
-  assert(0 <= index && index < 0x10000, "sanity check");
+  if (constantPoolCacheOopDesc::is_secondary_index(index)) {
+    // Hack:  The rewriter is trying to say that this entry itself
+    // will be a secondary entry.
+    int main_index = constantPoolCacheOopDesc::decode_secondary_index(index);
+    assert(0 <= main_index && main_index < 0x10000, "sanity check");
+    _indices = (main_index << 16);
+    assert(main_entry_index() == main_index, "");
+    return;
+  }
+  assert(0 < index && index < 0x10000, "sanity check");
   _indices = index;
+  assert(constant_pool_index() == index, "");
 }
 
 
@@ -136,6 +146,7 @@
   int byte_no = -1;
   bool needs_vfinal_flag = false;
   switch (invoke_code) {
+    case Bytecodes::_invokedynamic:
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokeinterface: {
         if (method->can_be_statically_bound()) {
@@ -211,6 +222,23 @@
 }
 
 
+void ConstantPoolCacheEntry::set_dynamic_call(Handle call_site, int extra_data) {
+  methodOop method = (methodOop) sun_dyn_CallSiteImpl::vmmethod(call_site());
+  assert(method->is_method(), "must be initialized properly");
+  int param_size = method->size_of_parameters();
+  assert(param_size > 1, "method argument size must include MH.this & initial dynamic receiver");
+  param_size -= 1;              // do not count MH.this; it is not stacked for invokedynamic
+  if (Atomic::cmpxchg_ptr(call_site(), &_f1, NULL) == NULL) {
+    // racing threads might be trying to install their own favorites
+    set_f1(call_site());
+  }
+  set_f2(extra_data);
+  set_flags(as_flags(as_TosState(method->result_type()), method->is_final_method(), false, false, false, true) | param_size);
+  // do not do set_bytecode on a secondary CP cache entry
+  //set_bytecode_1(Bytecodes::_invokedynamic);
+}
+
+
 class LocalOopClosure: public OopClosure {
  private:
   void (*_f)(oop*);
@@ -392,7 +420,11 @@
   // print separator
   if (index == 0) tty->print_cr("                 -------------");
   // print entry
-  tty->print_cr("%3d  (%08x)  [%02x|%02x|%5d]", index, this, bytecode_2(), bytecode_1(), constant_pool_index());
+  tty->print_cr("%3d  (%08x)  ", index, this);
+  if (is_secondary_entry())
+    tty->print_cr("[%5d|secondary]", main_entry_index());
+  else
+    tty->print_cr("[%02x|%02x|%5d]", bytecode_2(), bytecode_1(), constant_pool_index());
   tty->print_cr("                 [   %08x]", (address)(oop)_f1);
   tty->print_cr("                 [   %08x]", _f2);
   tty->print_cr("                 [   %08x]", _flags);
--- a/src/share/vm/oops/cpCacheOop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/cpCacheOop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +89,7 @@
 // _f1      = method for all but virtual calls, unused by virtual calls
 //            (note: for interface calls, which are essentially virtual,
 //             contains klassOop for the corresponding interface.
+//            for invokedynamic, f1 contains the CallSite object for the invocation
 // _f2      = method/vtable index for virtual calls only, unused by all other
 //            calls.  The vf flag indicates this is a method pointer not an
 //            index.
@@ -108,6 +109,8 @@
 
 class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
   friend class VMStructs;
+  friend class constantPoolCacheKlass;
+
  private:
   volatile intx     _indices;  // constant pool index & rewrite bytecodes
   volatile oop      _f1;       // entry specific oop field
@@ -175,6 +178,11 @@
     int index                                    // Method index into interface
   );
 
+  void set_dynamic_call(
+    Handle call_site,                            // Resolved java.dyn.CallSite (f1)
+    int extra_data                               // (f2)
+  );
+
   void set_parameter_size(int value) {
     assert(parameter_size() == 0 || parameter_size() == value,
            "size must not change");
@@ -216,7 +224,11 @@
   }
 
   // Accessors
-  int constant_pool_index() const                { return _indices & 0xFFFF; }
+  bool is_secondary_entry() const                { return (_indices & 0xFFFF) == 0; }
+  int constant_pool_index() const                { assert((_indices & 0xFFFF) != 0, "must be main entry");
+                                                   return (_indices & 0xFFFF); }
+  int main_entry_index() const                   { assert((_indices & 0xFFFF) == 0, "must be secondary entry");
+                                                   return ((uintx)_indices >> 16); }
   Bytecodes::Code bytecode_1() const             { return Bytecodes::cast((_indices >> 16) & 0xFF); }
   Bytecodes::Code bytecode_2() const             { return Bytecodes::cast((_indices >> 24) & 0xFF); }
   volatile oop  f1() const                       { return _f1; }
@@ -291,6 +303,9 @@
  private:
   int             _length;
   constantPoolOop _constant_pool;                // the corresponding constant pool
+  // If true, safe for concurrent GC processing,
+  // Set unconditionally in constantPoolCacheKlass::allocate()
+  volatile bool        _is_conc_safe;
 
   // Sizing
   debug_only(friend class ClassVerifier;)
@@ -311,10 +326,36 @@
   // 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, 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; }
   ConstantPoolCacheEntry* entry_at(int i) const  { assert(0 <= i && i < length(), "index out of bounds"); return base() + i; }
+  ConstantPoolCacheEntry* main_entry_at(int i) const {
+    ConstantPoolCacheEntry* e;
+    if (is_secondary_index(i)) {
+      // run through an extra level of indirection:
+      i = decode_secondary_index(i);
+      e = entry_at(i);
+      i = e->main_entry_index();
+    }
+    e = entry_at(i);
+    assert(!e->is_secondary_entry(), "only one level of indirection");
+    return e;
+  }
+
+  // GC support
+  // If the _length field has not been set, the size of the
+  // constantPoolCache cannot be correctly calculated.
+  bool is_conc_safe()                            { return _is_conc_safe; }
+  void set_is_conc_safe(bool v)                  { _is_conc_safe = v; }
 
   // Code generation
   static ByteSize base_offset()                  { return in_ByteSize(sizeof(constantPoolCacheOopDesc)); }
--- a/src/share/vm/oops/generateOopMap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/generateOopMap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1252,8 +1252,9 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->get_index_big();
+        int idx = currentBC->get_index_int();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1283,8 +1284,9 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->get_index_big();
+        int idx = currentBC->get_index_int();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1310,6 +1312,7 @@
       case Bytecodes::_invokevirtual:
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         _itr_send = itr;
         _report_result_for_send = true;
@@ -1556,6 +1559,7 @@
     case Bytecodes::_invokevirtual:
     case Bytecodes::_invokespecial:     do_method(false, false, itr->get_index_big(), itr->bci()); break;
     case Bytecodes::_invokestatic:      do_method(true,  false, itr->get_index_big(), itr->bci()); break;
+    case Bytecodes::_invokedynamic:     do_method(false, true,  itr->get_index_int(), itr->bci()); break;
     case Bytecodes::_invokeinterface:   do_method(false, true,  itr->get_index_big(), itr->bci()); break;
     case Bytecodes::_newarray:
     case Bytecodes::_anewarray:         pp_new_ref(vCTS, itr->bci()); break;
@@ -1899,7 +1903,7 @@
   // Dig up signature for field in constant pool
   constantPoolOop cp    = _method->constants();
   int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
-  int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
+  int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);  // @@@@@
   symbolOop signature   = cp->symbol_at(signatureIdx);
 
   // Parse method signature
@@ -2003,7 +2007,7 @@
 //  ============ Main Entry Point ===========
 //
 GenerateOopMap::GenerateOopMap(methodHandle method) {
-  // We have to initialize all variables here, that can be queried direcly
+  // We have to initialize all variables here, that can be queried directly
   _method = method;
   _max_locals=0;
   _init_vars = NULL;
--- a/src/share/vm/oops/generateOopMap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/generateOopMap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -292,7 +292,7 @@
   int          _max_stack;                  // Cached value of max. stack depth
   int          _max_monitors;               // Cached value of max. monitor stack depth
   int          _has_exceptions;             // True, if exceptions exist for method
-  bool         _got_error;                  // True, if an error occured during interpretation.
+  bool         _got_error;                  // True, if an error occurred during interpretation.
   Handle       _exception;                  // Exception if got_error is true.
   bool         _did_rewriting;              // was bytecodes rewritten
   bool         _did_relocation;             // was relocation neccessary
@@ -422,7 +422,7 @@
   void  add_to_ref_init_set                 (int localNo);
 
   // Conflicts rewrite logic
-  bool      _conflict;                      // True, if a conflict occured during interpretation
+  bool      _conflict;                      // True, if a conflict occurred during interpretation
   int       _nof_refval_conflicts;          // No. of conflicts that require rewrites
   int *     _new_var_map;
 
--- a/src/share/vm/oops/instanceKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/instanceKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -158,9 +158,6 @@
   // timer handles recursion
   assert(THREAD->is_Java_thread(), "non-JavaThread in link_class_impl");
   JavaThread* jt = (JavaThread*)THREAD;
-  PerfTraceTimedEvent vmtimer(ClassLoader::perf_class_link_time(),
-                        ClassLoader::perf_classes_linked(),
-                        jt->get_thread_stat()->class_link_recursion_count_addr());
 
   // link super class before linking this class
   instanceKlassHandle super(THREAD, this_oop->super());
@@ -194,6 +191,15 @@
     return true;
   }
 
+  // trace only the link time for this klass that includes
+  // the verification time
+  PerfClassTraceTime vmtimer(ClassLoader::perf_class_link_time(),
+                             ClassLoader::perf_class_link_selftime(),
+                             ClassLoader::perf_classes_linked(),
+                             jt->get_thread_stat()->perf_recursion_counts_addr(),
+                             jt->get_thread_stat()->perf_timers_addr(),
+                             PerfClassTraceTime::CLASS_LINK);
+
   // verification & rewriting
   {
     ObjectLocker ol(this_oop, THREAD);
@@ -203,12 +209,14 @@
     if (!this_oop->is_linked()) {
       if (!this_oop->is_rewritten()) {
         {
-          assert(THREAD->is_Java_thread(), "non-JavaThread in link_class_impl");
-          JavaThread* jt = (JavaThread*)THREAD;
           // Timer includes any side effects of class verification (resolution,
           // etc), but not recursive entry into verify_code().
-          PerfTraceTime timer(ClassLoader::perf_class_verify_time(),
-                            jt->get_thread_stat()->class_verify_recursion_count_addr());
+          PerfClassTraceTime timer(ClassLoader::perf_class_verify_time(),
+                                   ClassLoader::perf_class_verify_selftime(),
+                                   ClassLoader::perf_classes_verified(),
+                                   jt->get_thread_stat()->perf_recursion_counts_addr(),
+                                   jt->get_thread_stat()->perf_timers_addr(),
+                                   PerfClassTraceTime::CLASS_VERIFY);
           bool verify_ok = verify_code(this_oop, throw_verifyerror, THREAD);
           if (!verify_ok) {
             return false;
@@ -350,9 +358,12 @@
     JavaThread* jt = (JavaThread*)THREAD;
     // Timer includes any side effects of class initialization (resolution,
     // etc), but not recursive entry into call_class_initializer().
-    PerfTraceTimedEvent timer(ClassLoader::perf_class_init_time(),
-                              ClassLoader::perf_classes_inited(),
-                              jt->get_thread_stat()->class_init_recursion_count_addr());
+    PerfClassTraceTime timer(ClassLoader::perf_class_init_time(),
+                             ClassLoader::perf_class_init_selftime(),
+                             ClassLoader::perf_classes_inited(),
+                             jt->get_thread_stat()->perf_recursion_counts_addr(),
+                             jt->get_thread_stat()->perf_timers_addr(),
+                             PerfClassTraceTime::CLASS_CLINIT);
     this_oop->call_class_initializer(THREAD);
   }
 
@@ -497,6 +508,7 @@
 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");
     THROW_OOP_0(Universe::out_of_memory_error_array_size());
   }
   int size = objArrayOopDesc::object_size(length);
@@ -1813,6 +1825,8 @@
                                           oop class_loader2, symbolOop class_name2) {
   if (class_loader1 != class_loader2) {
     return false;
+  } else if (class_name1 == class_name2) {
+    return true;                // skip painful bytewise comparison
   } else {
     ResourceMark rm;
 
@@ -1859,6 +1873,75 @@
   }
 }
 
+// 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, symbolHandle targetclassname, TRAPS) {
+   // Private methods can not be overridden
+   if (super_method->is_private()) {
+     return false;
+   }
+   // If super method is accessible, then override
+   if ((super_method->is_protected()) ||
+       (super_method->is_public())) {
+     return true;
+   }
+   // Package-private methods are not inherited outside of package
+   assert(super_method->is_package_private(), "must be package private");
+   return(is_same_class_package(targetclassloader(), targetclassname()));
+}
+
+/* defined for now in jvm.cpp, for historical reasons *--
+klassOop instanceKlass::compute_enclosing_class_impl(instanceKlassHandle self,
+                                                     symbolOop& 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;
+  if (!Klass::cast(class2_oop)->oop_is_instance())  return false;
+  instanceKlassHandle class2(THREAD, class2_oop);
+
+  // must be in same package before we try anything else
+  if (!class1->is_same_class_package(class2->class_loader(), class2->name()))
+    return false;
+
+  // As long as there is an outer1.getEnclosingClass,
+  // shift the search outward.
+  instanceKlassHandle outer1 = class1;
+  for (;;) {
+    // As we walk along, look for equalities between outer1 and class2.
+    // Eventually, the walks will terminate as outer1 stops
+    // at the top-level class around the original class.
+    symbolOop ignore_name;
+    klassOop next = outer1->compute_enclosing_class(ignore_name, CHECK_false);
+    if (next == NULL)  break;
+    if (next == class2())  return true;
+    outer1 = instanceKlassHandle(THREAD, next);
+  }
+
+  // Now do the same for class2.
+  instanceKlassHandle outer2 = class2;
+  for (;;) {
+    symbolOop ignore_name;
+    klassOop next = outer2->compute_enclosing_class(ignore_name, CHECK_false);
+    if (next == NULL)  break;
+    // Might as well check the new outer against all available values.
+    if (next == class1())  return true;
+    if (next == outer1())  return true;
+    outer2 = instanceKlassHandle(THREAD, next);
+  }
+
+  // If by this point we have not found an equality between the
+  // two classes, we know they are in separate package members.
+  return false;
+}
+
 
 jint instanceKlass::compute_modifier_flags(TRAPS) const {
   klassOop k = as_klassOop();
@@ -1917,7 +2000,7 @@
                        / itableOffsetEntry::size();
 
   for (int cnt = 0 ; ; cnt ++, ioe ++) {
-    // If the interface isn't implemented by the reciever class,
+    // If the interface isn't implemented by the receiver class,
     // the VM should throw IncompatibleClassChangeError.
     if (cnt >= nof_interfaces) {
       THROW_OOP_0(vmSymbols::java_lang_IncompatibleClassChangeError());
@@ -1996,9 +2079,11 @@
 
 // Printing
 
+#define BULLET  " - "
+
 void FieldPrinter::do_field(fieldDescriptor* fd) {
-   if (fd->is_static() == (_obj == NULL)) {
-     _st->print("   - ");
+  _st->print(BULLET);
+   if (fd->is_static() || (_obj == NULL)) {
      fd->print_on(_st);
      _st->cr();
    } else {
@@ -2019,7 +2104,7 @@
         value->is_typeArray() &&
         offset          <= (juint) value->length() &&
         offset + length <= (juint) value->length()) {
-      st->print("string: ");
+      st->print(BULLET"string: ");
       Handle h_obj(obj);
       java_lang_String::print(h_obj, st);
       st->cr();
@@ -2027,23 +2112,26 @@
     }
   }
 
-  st->print_cr("fields:");
+  st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
   FieldPrinter print_nonstatic_field(st, obj);
   do_nonstatic_fields(&print_nonstatic_field);
 
   if (as_klassOop() == 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);
-    st->print("   - fake entry for mirror: ");
+    st->print(BULLET"fake entry for mirror: ");
     mirrored_klass->print_value_on(st);
     st->cr();
-    st->print("   - fake entry resolved_constructor: ");
+    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);
-    st->print("   - fake entry for array: ");
+    st->cr();
+    st->print(BULLET"fake entry for array: ");
     array_klass->print_value_on(st);
     st->cr();
-    st->cr();
   }
 }
 
@@ -2051,6 +2139,28 @@
   st->print("a ");
   name()->print_value_on(st);
   obj->print_address_on(st);
+  if (as_klassOop() == SystemDictionary::string_klass()
+      && java_lang_String::value(obj) != NULL) {
+    ResourceMark rm;
+    int len = java_lang_String::length(obj);
+    int plen = (len < 24 ? len : 12);
+    char* str = java_lang_String::as_utf8_string(obj, 0, plen);
+    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);
+    st->print(" = ");
+    if (k != NULL) {
+      k->print_value_on(st);
+    } else {
+      const char* tname = type2name(java_lang_Class::primitive_type(obj));
+      st->print("%s", tname ? tname : "type?");
+    }
+  } else if (java_lang_boxing_object::is_instance(obj)) {
+    st->print(" = ");
+    java_lang_boxing_object::print(obj, st);
+  }
 }
 
 #endif // ndef PRODUCT
--- a/src/share/vm/oops/instanceKlass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/instanceKlass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -163,6 +163,8 @@
   klassOop        _implementors[implementors_limit];
   // Generic signature, or null if none.
   symbolOop       _generic_signature;
+  // invokedynamic bootstrap method (a java.dyn.MethodHandle)
+  oop             _bootstrap_method;
   // Annotations for this class, or null if none.
   typeArrayOop    _class_annotations;
   // Annotation objects (byte arrays) for fields, or null if no annotations.
@@ -303,11 +305,30 @@
     inner_class_next_offset = 4
   };
 
+  // method override check
+  bool is_override(methodHandle super_method, Handle targetclassloader, symbolHandle targetclassname, TRAPS);
+
   // package
   bool is_same_class_package(klassOop class2);
   bool is_same_class_package(oop classloader2, symbolOop classname2);
   static bool is_same_class_package(oop class_loader1, symbolOop class_name1, oop class_loader2, symbolOop class_name2);
 
+  // find an enclosing class (defined where original code was, in jvm.cpp!)
+  klassOop compute_enclosing_class(symbolOop& simple_name_result, TRAPS) {
+    instanceKlassHandle self(THREAD, this->as_klassOop());
+    return compute_enclosing_class_impl(self, simple_name_result, THREAD);
+  }
+  static klassOop compute_enclosing_class_impl(instanceKlassHandle self,
+                                               symbolOop& simple_name_result, 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());
+    return is_same_package_member_impl(self, class2, THREAD);
+  }
+  static bool is_same_package_member_impl(instanceKlassHandle self,
+                                          klassOop class2, TRAPS);
+
   // initialization state
   bool is_loaded() const                   { return _init_state >= loaded; }
   bool is_linked() const                   { return _init_state >= linked; }
@@ -445,6 +466,10 @@
                                     u2 method_index)  { _enclosing_method_class_index  = class_index;
                                                         _enclosing_method_method_index = method_index; }
 
+  // JSR 292 support
+  oop bootstrap_method() const                        { return _bootstrap_method; }
+  void set_bootstrap_method(oop mh)                   { oop_store(&_bootstrap_method, mh); }
+
   // jmethodID support
   static jmethodID get_jmethod_id(instanceKlassHandle ik_h, size_t idnum,
                                   jmethodID new_id, jmethodID* new_jmeths);
@@ -725,6 +750,7 @@
   oop* adr_inner_classes() const     { return (oop*)&this->_inner_classes;}
   oop* adr_implementors() const      { return (oop*)&this->_implementors[0];}
   oop* adr_generic_signature() const { return (oop*)&this->_generic_signature;}
+  oop* adr_bootstrap_method() const  { return (oop*)&this->_bootstrap_method;}
   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;}
--- a/src/share/vm/oops/instanceKlassKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/instanceKlassKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +84,7 @@
   MarkSweep::mark_and_push(ik->adr_host_klass());
   MarkSweep::mark_and_push(ik->adr_signers());
   MarkSweep::mark_and_push(ik->adr_generic_signature());
+  MarkSweep::mark_and_push(ik->adr_bootstrap_method());
   MarkSweep::mark_and_push(ik->adr_class_annotations());
   MarkSweep::mark_and_push(ik->adr_fields_annotations());
   MarkSweep::mark_and_push(ik->adr_methods_annotations());
@@ -124,6 +125,7 @@
   PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
   PSParallelCompact::mark_and_push(cm, ik->adr_signers());
   PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature());
+  PSParallelCompact::mark_and_push(cm, ik->adr_bootstrap_method());
   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());
@@ -170,6 +172,7 @@
     blk->do_oop(&ik->adr_implementors()[i]);
   }
   blk->do_oop(ik->adr_generic_signature());
+  blk->do_oop(ik->adr_bootstrap_method());
   blk->do_oop(ik->adr_class_annotations());
   blk->do_oop(ik->adr_fields_annotations());
   blk->do_oop(ik->adr_methods_annotations());
@@ -230,6 +233,8 @@
   }
   adr = ik->adr_generic_signature();
   if (mr.contains(adr)) blk->do_oop(adr);
+  adr = ik->adr_bootstrap_method();
+  if (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();
@@ -274,6 +279,7 @@
     MarkSweep::adjust_pointer(&ik->adr_implementors()[i]);
   }
   MarkSweep::adjust_pointer(ik->adr_generic_signature());
+  MarkSweep::adjust_pointer(ik->adr_bootstrap_method());
   MarkSweep::adjust_pointer(ik->adr_class_annotations());
   MarkSweep::adjust_pointer(ik->adr_fields_annotations());
   MarkSweep::adjust_pointer(ik->adr_methods_annotations());
@@ -454,6 +460,7 @@
     ik->set_breakpoints(NULL);
     ik->init_previous_versions();
     ik->set_generic_signature(NULL);
+    ik->set_bootstrap_method(NULL);
     ik->release_set_methods_jmethod_ids(NULL);
     ik->release_set_methods_cached_itable_indices(NULL);
     ik->set_class_annotations(NULL);
@@ -487,6 +494,8 @@
 
 // Printing
 
+#define BULLET  " - "
+
 static const char* state_names[] = {
   "unparseable_by_gc", "allocated", "loaded", "linked", "being_initialized", "fully_initialized", "initialization_error"
 };
@@ -497,13 +506,13 @@
   instanceKlass* ik = instanceKlass::cast(klassOop(obj));
   klassKlass::oop_print_on(obj, st);
 
-  st->print(" - instance size:     %d", ik->size_helper());                        st->cr();
-  st->print(" - klass size:        %d", ik->object_size());                        st->cr();
-  st->print(" - access:            "); ik->access_flags().print_on(st);            st->cr();
-  st->print(" - state:             "); st->print_cr(state_names[ik->_init_state]);
-  st->print(" - name:              "); ik->name()->print_value_on(st);             st->cr();
-  st->print(" - super:             "); ik->super()->print_value_on(st);            st->cr();
-  st->print(" - sub:               ");
+  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()) {
@@ -516,12 +525,12 @@
   st->cr();
 
   if (ik->is_interface()) {
-    st->print_cr(" - nof implementors:  %d", ik->nof_implementors());
+    st->print_cr(BULLET"nof implementors:  %d", ik->nof_implementors());
     int print_impl = 0;
     for (int i = 0; i < instanceKlass::implementors_limit; i++) {
       if (ik->implementor(i) != NULL) {
         if (++print_impl == 1)
-          st->print_cr(" - implementor:    ");
+          st->print_cr(BULLET"implementor:    ");
         st->print("   ");
         ik->implementor(i)->print_value_on(st);
       }
@@ -529,34 +538,33 @@
     if (print_impl > 0)  st->cr();
   }
 
-  st->print(" - arrays:            "); ik->array_klasses()->print_value_on(st);     st->cr();
-  st->print(" - methods:           "); ik->methods()->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(" - method ordering:   "); ik->method_ordering()->print_value_on(st);       st->cr();
-  st->print(" - local interfaces:  "); ik->local_interfaces()->print_value_on(st);      st->cr();
-  st->print(" - trans. interfaces: "); ik->transitive_interfaces()->print_value_on(st); st->cr();
-  st->print(" - constants:         "); ik->constants()->print_value_on(st);         st->cr();
-  st->print(" - class loader:      "); ik->class_loader()->print_value_on(st);      st->cr();
-  st->print(" - protection domain: "); ik->protection_domain()->print_value_on(st); st->cr();
-  st->print(" - host class: ");        ik->host_klass()->print_value_on(st);        st->cr();
-  st->print(" - signers:           "); ik->signers()->print_value_on(st);           st->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();
+  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(" - source file:       ");
+    st->print(BULLET"source file:       ");
     ik->source_file_name()->print_value_on(st);
     st->cr();
   }
   if (ik->source_debug_extension() != NULL) {
-    st->print(" - source debug extension:       ");
+    st->print(BULLET"source debug extension:       ");
     ik->source_debug_extension()->print_value_on(st);
     st->cr();
   }
 
-  st->print_cr(" - previous version:       ");
   {
     ResourceMark rm;
     // PreviousVersionInfo objects returned via PreviousVersionWalker
@@ -564,38 +572,48 @@
     // 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);
       }
-      st->cr();
+      if (have_pv)  st->cr();
     } // pvw is cleaned up
   } // rm is cleaned up
 
-  if (ik->generic_signature() != NULL) {
-    st->print(" - generic signature:            ");
-    ik->generic_signature()->print_value_on(st);
+  if (ik->bootstrap_method() != NULL) {
+    st->print(BULLET"bootstrap method:  ");
+    ik->bootstrap_method()->print_value_on(st);
+    st->cr();
   }
-  st->print(" - inner classes:     "); ik->inner_classes()->print_value_on(st);     st->cr();
-  st->print(" - java mirror:       "); ik->java_mirror()->print_value_on(st);       st->cr();
-  st->print(" - vtable length      %d  (start addr: " INTPTR_FORMAT ")", ik->vtable_length(), ik->start_of_vtable());  st->cr();
-  st->print(" - itable length      %d (start addr: " INTPTR_FORMAT ")", ik->itable_length(), ik->start_of_itable()); st->cr();
-  st->print_cr(" - static fields:");
+  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(" - non-static fields:");
-  FieldPrinter print_nonstatic_field(st, obj);
+  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(" - static oop maps:     ");
+  st->print(BULLET"static oop maps:     ");
   if (ik->static_oop_field_size() > 0) {
     int first_offset = ik->offset_of_static_fields();
     st->print("%d-%d", first_offset, first_offset + ik->static_oop_field_size() - 1);
   }
   st->cr();
 
-  st->print(" - non-static oop maps: ");
+  st->print(BULLET"non-static oop maps: ");
   OopMapBlock* map     = ik->start_of_nonstatic_oop_maps();
   OopMapBlock* end_map = map + ik->nonstatic_oop_map_size();
   while (map < end_map) {
--- a/src/share/vm/oops/instanceRefKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/instanceRefKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -28,13 +28,14 @@
 template <class T>
 static void specialized_oop_follow_contents(instanceRefKlass* ref, oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
-  oop referent = oopDesc::load_decode_heap_oop(referent_addr);
+  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);
     }
   )
-  if (referent != NULL) {
+  if (!oopDesc::is_null(heap_oop)) {
+    oop referent = oopDesc::decode_heap_oop_not_null(heap_oop);
     if (!referent->is_gc_marked() &&
         MarkSweep::ref_processor()->
           discover_reference(obj, ref->reference_type())) {
@@ -81,13 +82,14 @@
                                             ParCompactionManager* cm,
                                             oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
-  oop referent = oopDesc::load_decode_heap_oop(referent_addr);
+  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);
     }
   )
-  if (referent != NULL) {
+  if (!oopDesc::is_null(heap_oop)) {
+    oop referent = oopDesc::decode_heap_oop_not_null(heap_oop);
     if (PSParallelCompact::mark_bitmap()->is_unmarked(referent) &&
         PSParallelCompact::ref_processor()->
           discover_reference(obj, ref->reference_type())) {
@@ -182,9 +184,10 @@
   }                                                                             \
                                                                                 \
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);           \
-  oop referent = oopDesc::load_decode_heap_oop(referent_addr);                  \
-  if (referent != NULL && contains(referent_addr)) {                            \
+  T heap_oop = oopDesc::load_heap_oop(referent_addr);                           \
+  if (!oopDesc::is_null(heap_oop) && contains(referent_addr)) {                 \
     ReferenceProcessor* rp = closure->_ref_processor;                           \
+    oop referent = oopDesc::decode_heap_oop_not_null(heap_oop);                 \
     if (!referent->is_gc_marked() && (rp != NULL) &&                            \
         rp->discover_reference(obj, reference_type())) {                        \
       return size;                                                              \
--- a/src/share/vm/oops/klass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/klass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -71,7 +71,7 @@
   return r;                   // Return the 1 concrete class
 }
 
-// Find LCA in class heirarchy
+// Find LCA in class hierarchy
 Klass *Klass::LCA( Klass *k2 ) {
   Klass *k1 = this;
   while( 1 ) {
--- a/src/share/vm/oops/klass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/klass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -471,7 +471,7 @@
   }
   bool search_secondary_supers(klassOop k) const;
 
-  // Find LCA in class heirarchy
+  // Find LCA in class hierarchy
   Klass *LCA( Klass *k );
 
   // Check whether reflection/jni/jvm code is allowed to instantiate this class;
@@ -606,8 +606,19 @@
   #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; }
--- a/src/share/vm/oops/klassVtable.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/klassVtable.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,10 @@
                                                        klassOop super,
                                                        objArrayOop methods,
                                                        AccessFlags class_flags,
-                                                       oop classloader,
-                                                       symbolOop classname,
-                                                       objArrayOop local_interfaces
+                                                       Handle classloader,
+                                                       symbolHandle classname,
+                                                       objArrayOop local_interfaces,
+                                                       TRAPS
                                                        ) {
 
   No_Safepoint_Verifier nsv;
@@ -64,9 +65,9 @@
   int len = methods->length();
   for (int i = 0; i < len; i++) {
     assert(methods->obj_at(i)->is_method(), "must be a methodOop");
-    methodOop m = methodOop(methods->obj_at(i));
+    methodHandle mh(THREAD, methodOop(methods->obj_at(i)));
 
-    if (needs_new_vtable_entry(m, super, classloader, classname, class_flags)) {
+    if (needs_new_vtable_entry(mh, super, classloader, classname, class_flags, THREAD)) {
       vtable_length += vtableEntry::size(); // we need a new entry
     }
   }
@@ -117,6 +118,7 @@
     superVtable->copy_vtable_to(table());
 #ifndef PRODUCT
     if (PrintVtables && Verbose) {
+      ResourceMark rm;
       tty->print_cr("copy vtable from %s to %s size %d", sk->internal_name(), klass()->internal_name(), _length);
     }
 #endif
@@ -159,13 +161,13 @@
     int len = methods()->length();
     int initialized = super_vtable_len;
 
-    // update_super_vtable can stop for gc - ensure using handles
+    // 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));
 
-      bool needs_new_entry = update_super_vtable(ik(), mh, super_vtable_len, checkconstraints, CHECK);
+      bool needs_new_entry = update_inherited_vtable(ik(), mh, super_vtable_len, checkconstraints, CHECK);
 
       if (needs_new_entry) {
         put_method_at(mh(), initialized);
@@ -177,7 +179,7 @@
     // add miranda methods; it will also update the value of initialized
     fill_in_mirandas(initialized);
 
-    // In class hierachieswhere the accesibility is not increasing (i.e., going from private ->
+    // In class hierarchies where the accessibility is not increasing (i.e., going from private ->
     // package_private -> publicprotected), the vtable might actually be smaller than our initial
     // calculation.
     assert(initialized <= _length, "vtable initialization failed");
@@ -188,26 +190,49 @@
   }
 }
 
-// Interates through the vtables to find the broadest access level. This
-// will always be monotomic for valid Java programs - but not neccesarily
-// for incompatible class files.
-klassVtable::AccessType klassVtable::vtable_accessibility_at(int i) {
-  // This vtable is not implementing the specific method
-  if (i >= length()) return acc_private;
+// Called for cases where a method does not override its superclass' vtable entry
+// 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,
+                            int vtable_index, Handle target_loader, symbolHandle target_classname, Thread * THREAD) {
+  instanceKlass* superk = initialsuper;
+  while (superk != NULL && superk->super() != NULL) {
+    instanceKlass* supersuperklass = instanceKlass::cast(superk->super());
+    klassVtable* ssVtable = supersuperklass->vtable();
+    if (vtable_index < ssVtable->length()) {
+      methodOop super_method = ssVtable->method_at(vtable_index);
+#ifndef PRODUCT
+      symbolHandle name(THREAD,target_method()->name());
+      symbolHandle signature(THREAD,target_method()->signature());
+      assert(super_method->name() == name() && super_method->signature() == signature(), "vtable entry name/sig mismatch");
+#endif
+      if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) {
+#ifndef PRODUCT
+        if (PrintVtables && Verbose) {
+          ResourceMark rm(THREAD);
+          tty->print("transitive overriding superclass %s with %s::%s index %d, original flags: ",
+           supersuperklass->internal_name(),
+           _klass->internal_name(), (target_method() != NULL) ?
+           target_method()->name()->as_C_string() : "<NULL>", vtable_index);
+           super_method->access_flags().print_on(tty);
+           tty->print("overriders flags: ");
+           target_method->access_flags().print_on(tty);
+           tty->cr();
+        }
+#endif /*PRODUCT*/
+        break; // return found superk
+      }
+    } else  {
+      // super class has no vtable entry here, stop transitive search
+      superk = (instanceKlass*)NULL;
+      break;
+    }
+    // if no override found yet, continue to search up
+    superk = instanceKlass::cast(superk->super());
+  }
 
-  // Compute AccessType for current method. public or protected we are done.
-  methodOop m = method_at(i);
-  if (m->is_protected() || m->is_public()) return acc_publicprotected;
-
-  AccessType acc = m->is_package_private() ? acc_package_private : acc_private;
-
-  // Compute AccessType for method in super classes
-  klassOop super = klass()->super();
-  AccessType super_acc = (super != NULL) ? instanceKlass::cast(klass()->super())->vtable()->vtable_accessibility_at(i)
-                                         : acc_private;
-
-  // Merge
-  return (AccessType)MAX2((int)acc, (int)super_acc);
+  return superk;
 }
 
 
@@ -215,7 +240,8 @@
 // OR return true if a new vtable entry is required
 // Only called for instanceKlass's, i.e. not for arrays
 // If that changed, could not use _klass as handle for klass
-bool klassVtable::update_super_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS) {
+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");
@@ -242,58 +268,35 @@
   }
 
   // private methods always have a new entry in the vtable
+  // specification interpretation since classic has
+  // private methods not overriding
   if (target_method()->is_private()) {
     return allocate_new;
   }
 
   // search through the vtable and update overridden entries
   // Since check_signature_loaders acquires SystemDictionary_lock
-  // which can block for gc, once we are in this loop, use handles, not
-  // unhandled oops unless they are reinitialized for each loop
-  // handles for name, signature, klass, target_method
-  // not for match_method, holder
+  // which can block for gc, once we are in this loop, use handles
+  // For classfiles built with >= jdk7, we now look for transitive overrides
 
   symbolHandle name(THREAD,target_method()->name());
   symbolHandle signature(THREAD,target_method()->signature());
+  Handle target_loader(THREAD, _klass->class_loader());
+  symbolHandle target_classname(THREAD, _klass->name());
   for(int i = 0; i < super_vtable_len; i++) {
-    methodOop match_method = method_at(i);
+    methodOop super_method = method_at(i);
     // Check if method name matches
-    if (match_method->name() == name() && match_method->signature() == signature()) {
-
-      instanceKlass* holder = (THREAD, instanceKlass::cast(match_method->method_holder()));
-
-      // Check if the match_method is accessable from current class
-
-      bool same_package_init = false;
-      bool same_package_flag = false;
-      bool simple_match = match_method->is_public()  || match_method->is_protected();
-      if (!simple_match) {
-        same_package_init = true;
-        same_package_flag = holder->is_same_class_package(_klass->class_loader(), _klass->name());
+    if (super_method->name() == name() && super_method->signature() == signature()) {
 
-        simple_match = match_method->is_package_private() && same_package_flag;
-      }
-      // match_method is the superclass' method. Note we can't override
-      // and shouldn't access superclass' ACC_PRIVATE methods
-      // (although they have been copied into our vtable)
-      // A simple form of this statement is:
-      // if ( (match_method->is_public()  || match_method->is_protected()) ||
-      //    (match_method->is_package_private() && holder->is_same_class_package(klass->class_loader(), klass->name()))) {
-      //
-      // The complexity is introduced it avoid recomputing 'is_same_class_package' which is expensive.
-      if (simple_match) {
-        // Check if target_method and match_method has same level of accessibility. The accesibility of the
-        // match method is the "most-general" visibility of all entries at it's particular vtable index for
-        // all superclasses. This check must be done before we override the current entry in the vtable.
-        AccessType at = vtable_accessibility_at(i);
-        bool same_access = false;
+      // get super_klass for method_holder for the found method
+      instanceKlass* super_klass =  instanceKlass::cast(super_method->method_holder());
 
-        if (  (at == acc_publicprotected && (target_method()->is_public() || target_method()->is_protected())
-           || (at == acc_package_private && (target_method()->is_package_private() &&
-                                            (( same_package_init && same_package_flag) ||
-                                             (!same_package_init && holder->is_same_class_package(_klass->class_loader(), _klass->name()))))))) {
-           same_access = true;
-        }
+      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))) {
+        // overriding, so no new entry
+        allocate_new = false;
 
         if (checkconstraints) {
         // Override vtable entry if passes loader constraint check
@@ -302,15 +305,12 @@
         // have already made any needed loader constraints.
         // Since loader constraints are transitive, it is enough
         // to link to the first super, and we get all the others.
-          symbolHandle signature(THREAD, target_method()->signature());
-          Handle this_loader(THREAD, _klass->class_loader());
-          instanceKlassHandle super_klass(THREAD, _klass->super());
           Handle super_loader(THREAD, super_klass->class_loader());
 
-          if (this_loader() != super_loader()) {
+          if (target_loader() != super_loader()) {
             ResourceMark rm(THREAD);
             char* failed_type_name =
-              SystemDictionary::check_signature_loaders(signature, this_loader,
+              SystemDictionary::check_signature_loaders(signature, target_loader,
                                                         super_loader, true,
                                                         CHECK_(false));
             if (failed_type_name != NULL) {
@@ -320,7 +320,7 @@
                 "(instance of %s), have different Class objects for the type "
                 "%s used in the signature";
               char* sig = target_method()->name_and_sig_as_C_string();
-              const char* loader1 = SystemDictionary::loader_name(this_loader());
+              const char* loader1 = SystemDictionary::loader_name(target_loader());
               char* current = _klass->name()->as_C_string();
               const char* loader2 = SystemDictionary::loader_name(super_loader());
               size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) +
@@ -331,59 +331,46 @@
               THROW_MSG_(vmSymbols::java_lang_LinkageError(), buf, false);
             }
           }
-        }
-        put_method_at(target_method(), i);
-
+       }
 
-        if (same_access) {
-          // target and match has same accessiblity - share entry
-          allocate_new = false;
-          target_method()->set_vtable_index(i);
+        put_method_at(target_method(), i);
+        target_method()->set_vtable_index(i);
 #ifndef PRODUCT
-          if (PrintVtables && Verbose) {
-            AccessType targetacc;
-            if (target_method()->is_protected() ||
-                 target_method()->is_public()) {
-               targetacc =  acc_publicprotected;
-            } else {
-              targetacc = target_method()->is_package_private() ? acc_package_private : acc_private;
-            }
-            tty->print_cr("overriding with %s::%s index %d, original flags: %x overriders flags: %x",
-             _klass->internal_name(), (target_method() != NULL) ?
-             target_method()->name()->as_C_string() : "<NULL>", i,
-             at, targetacc);
-          }
+        if (PrintVtables && Verbose) {
+          tty->print("overriding with %s::%s index %d, original flags: ",
+           _klass->internal_name(), (target_method() != NULL) ?
+           target_method()->name()->as_C_string() : "<NULL>", i);
+           super_method->access_flags().print_on(tty);
+           tty->print("overriders flags: ");
+           target_method->access_flags().print_on(tty);
+           tty->cr();
+        }
 #endif /*PRODUCT*/
-        } else {
+      } else {
+        // allocate_new = true; default. We might override one entry,
+        // but not override another. Once we override one, not need new
 #ifndef PRODUCT
-          if (PrintVtables && Verbose) {
-            AccessType targetacc;
-            if (target_method()->is_protected() ||
-                 target_method()->is_public()) {
-               targetacc =  acc_publicprotected;
-            } else {
-              targetacc = target_method()->is_package_private() ? acc_package_private : acc_private;
-            }
-            tty->print_cr("override %s %s::%s at index %d, original flags: %x overriders flags: %x",
-            allocate_new ? "+ new" : "only",
-            _klass->internal_name(), (target_method() != NULL) ?
-            target_method()->name()->as_C_string() : "<NULL>", i,
-            at, targetacc);
-           }
+        if (PrintVtables && Verbose) {
+          tty->print("NOT overriding with %s::%s index %d, original flags: ",
+           _klass->internal_name(), (target_method() != NULL) ?
+           target_method()->name()->as_C_string() : "<NULL>", i);
+           super_method->access_flags().print_on(tty);
+           tty->print("overriders flags: ");
+           target_method->access_flags().print_on(tty);
+           tty->cr();
+        }
 #endif /*PRODUCT*/
-        }
       }
     }
   }
   return allocate_new;
 }
 
-
-
 void klassVtable::put_method_at(methodOop m, int index) {
   assert(m->is_oop_or_null(), "Not an oop or null");
 #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);
   }
@@ -397,19 +384,23 @@
 // 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,
-// when the Universe is boostrapping, a super's vtable might not be initialized.
-bool klassVtable::needs_new_vtable_entry(methodOop target_method,
+// 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,
-                                         oop classloader,
-                                         symbolOop classname,
-                                         AccessFlags class_flags) {
-  if ((class_flags.is_final() || target_method->is_final()) ||
+                                         Handle classloader,
+                                         symbolHandle classname,
+                                         AccessFlags class_flags,
+                                         TRAPS) {
+  if ((class_flags.is_final() || target_method()->is_final()) ||
       // a final method never needs a new entry; final methods can be statically
       // resolved and they have to be present in the vtable only if they override
       // a super's method, in which case they re-use its entry
-      (target_method->is_static()) ||
+      (target_method()->is_static()) ||
       // static methods don't need to be in vtable
-      (target_method->name() ==  vmSymbols::object_initializer_name())
+      (target_method()->name() ==  vmSymbols::object_initializer_name())
       // <init> is never called dynamically-bound
       ) {
     return false;
@@ -421,55 +412,58 @@
   }
 
   // private methods always have a new entry in the vtable
-  if (target_method->is_private()) {
+  // specification interpretation since classic has
+  // private methods not overriding
+  if (target_method()->is_private()) {
     return true;
   }
 
   // search through the super class hierarchy to see if we need
   // a new entry
-  symbolOop name = target_method->name();
-  symbolOop signature = target_method->signature();
+  ResourceMark rm;
+  symbolOop name = target_method()->name();
+  symbolOop signature = target_method()->signature();
   klassOop k = super;
-  methodOop match_method = NULL;
+  methodOop super_method = NULL;
   instanceKlass *holder = NULL;
+  methodOop recheck_method =  NULL;
   while (k != NULL) {
     // lookup through the hierarchy for a method with matching name and sign.
-    match_method = instanceKlass::cast(k)->lookup_method(name, signature);
-    if (match_method == NULL) {
+    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
-    holder = instanceKlass::cast(match_method->method_holder());
-
-    if (!match_method->is_static()) { // we want only instance method matches
-      if ((target_method->is_public() || target_method->is_protected()) &&
-          (match_method->is_public()  || match_method->is_protected())) {
-        // target and match are public/protected; we do not need a new entry
+    // make sure you use that class for is_override
+    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,
+    // ignore private, c.m pub does override a.m pub
+    // For classes that were not javac'd together, we also do transitive overriding around
+    // methods that have less accessibility
+    if ((!super_method->is_static()) &&
+       (!super_method->is_private())) {
+      if (superk->is_override(super_method, classloader, classname, THREAD)) {
         return false;
-      }
-
-      if (target_method->is_package_private() &&
-          match_method->is_package_private() &&
-          holder->is_same_class_package(classloader, classname)) {
-        // target and match are P private; we do not need a new entry
-        return false;
+      // else keep looking for transitive overrides
       }
     }
 
-    k = holder->super(); // haven't found a match yet; continue to look
+    // Start with lookup result and continue to search up
+    k = superk->super(); // haven't found an override match yet; continue to look
   }
 
   // if the target method is public or protected it may have a matching
   // miranda method in the super, whose entry it should re-use.
-  if (target_method->is_public() || target_method->is_protected()) {
-    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
-      }
+  // Actually, to handle cases that javac would not generate, we need
+  // this check for all access permissions.
+  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
     }
   }
-
   return true; // found no match; we need a new entry
 }
 
@@ -884,7 +878,7 @@
                                     _klass->name()->as_C_string());
 
 
-    // Interate through all interfaces
+    // Iterate through all interfaces
     int i;
     for(i = 0; i < num_interfaces; i++) {
       itableOffsetEntry* ioe = offset_entry(i);
@@ -992,6 +986,10 @@
     methodOop new_method = new_methods[j];
     itableMethodEntry* ime = method_entry(0);
 
+    // The itable can describe more than one interface and the same
+    // method signature can be specified by more than one interface.
+    // This means we have to do an exhaustive search to find all the
+    // old_method references.
     for (int i = 0; i < _size_method_table; i++) {
       if (ime->method() == old_method) {
         ime->initialize(new_method);
@@ -1150,6 +1148,27 @@
   return index;
 }
 
+
+// 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();
+
+  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))->name() == vmSymbols::class_initializer_name()) {
+    index++;
+  }
+
+  if (itable_index < 0 || index >= methods->length())
+    return NULL;                // help caller defend against bad indexes
+
+  methodOop m = (methodOop)methods->obj_at(index);
+  assert(compute_itable_index(m) == itable_index, "correct inverse");
+
+  return m;
+}
+
 void klassVtable::verify(outputStream* st, bool forced) {
   // make sure table is initialized
   if (!Universe::is_fully_initialized()) return;
--- a/src/share/vm/oops/klassVtable.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/klassVtable.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 +70,9 @@
   // conputes 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,
-                                                   AccessFlags class_flags, oop classloader,
-                                                   symbolOop classname, objArrayOop local_interfaces);
+                                                   AccessFlags class_flags, Handle classloader,
+                                                   symbolHandle classname, objArrayOop local_interfaces,
+                                                   TRAPS);
 
   // RedefineClasses() API support:
   // If any entry of this vtable points to any of old_methods,
@@ -111,14 +112,16 @@
  protected:
   friend class vtableEntry;
  private:
+  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(methodOop m, klassOop super, oop classloader, symbolOop classname, AccessFlags access_flags);
-  AccessType vtable_accessibility_at(int i);
+  static bool needs_new_vtable_entry(methodHandle m, klassOop super, Handle classloader, symbolHandle classname, AccessFlags access_flags, TRAPS);
 
-  bool update_super_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, 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,
+                                         Handle target_loader, symbolHandle target_classname, Thread* THREAD);
 
   // support for miranda methods
   bool is_miranda_entry_at(int i);
@@ -298,6 +301,8 @@
 
   // Resolving of method to index
   static int compute_itable_index(methodOop m);
+  // ...and back again:
+  static methodOop method_for_itable_index(klassOop klass, int itable_index);
 
   // Debugging/Statistics
   static void print_statistics() PRODUCT_RETURN;
--- a/src/share/vm/oops/methodDataOop.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/methodDataOop.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -442,6 +442,8 @@
   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:
@@ -570,6 +572,11 @@
     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;
--- a/src/share/vm/oops/methodKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/methodKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
   m->set_constants(NULL);
   m->set_max_stack(0);
   m->set_max_locals(0);
-  m->clear_intrinsic_id_cache();
+  m->set_intrinsic_id(vmIntrinsics::_none);
   m->set_method_data(NULL);
   m->set_interpreter_throwout_count(0);
   m->set_vtable_index(methodOopDesc::garbage_vtable_index);
@@ -247,9 +247,14 @@
   st->print_cr(" - size of params:    %d",   m->size_of_parameters());
   st->print_cr(" - method size:       %d",   m->method_size());
   st->print_cr(" - vtable index:      %d",   m->_vtable_index);
+  st->print_cr(" - i2i entry:         " INTPTR_FORMAT, m->interpreter_entry());
+  st->print_cr(" - adapter:           " INTPTR_FORMAT, m->adapter());
+  st->print_cr(" - compiled entry     " INTPTR_FORMAT, m->from_compiled_entry());
   st->print_cr(" - code size:         %d",   m->code_size());
-  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->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());
   }
@@ -293,6 +298,14 @@
     m->code()->print_value_on(st);
     st->cr();
   }
+  if (m->is_method_handle_invoke()) {
+    st->print_cr(" - invoke method type: " INTPTR_FORMAT, (address) m->method_handle_type());
+    // m is classified as native, but it does not have an interesting
+    // native_function or signature handler
+  } else if (m->is_native()) {
+    st->print_cr(" - native function:   " INTPTR_FORMAT, m->native_function());
+    st->print_cr(" - signature handler: " INTPTR_FORMAT, m->signature_handler());
+  }
 }
 
 
--- a/src/share/vm/oops/methodOop.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/methodOop.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -161,7 +161,7 @@
 
 
 int methodOopDesc::bci_from(address bcp) const {
-  assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
+  assert(is_native() && bcp == code_base() || contains(bcp) || is_error_reported(), "bcp doesn't belong to this method");
   return bcp - code_base();
 }
 
@@ -304,6 +304,12 @@
 }
 
 
+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) {
   symbolHandle h_signature(thread, signature());
   ArgumentSizeComputer asc(h_signature);
@@ -564,6 +570,11 @@
 
 
 bool methodOopDesc::is_not_compilable(int comp_level) const {
+  if (is_method_handle_invoke()) {
+    // compilers must recognize this method specially, or not at all
+    return true;
+  }
+
   methodDataOop mdo = method_data();
   if (mdo != NULL
       && (uint)mdo->decompile_count() > (uint)PerMethodRecompilationCutoff) {
@@ -651,7 +662,7 @@
   assert(entry != NULL, "interpreter entry must be non-null");
   // Sets both _i2i_entry and _from_interpreted_entry
   set_interpreter_entry(entry);
-  if (is_native()) {
+  if (is_native() && !is_method_handle_invoke()) {
     set_native_function(
       SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
       !native_bind_event_is_interesting);
@@ -783,6 +794,100 @@
   return false;
 }
 
+// Constant pool structure for invoke methods:
+enum {
+  _imcp_invoke_name = 1,        // utf8: 'invoke'
+  _imcp_invoke_signature,       // utf8: (variable symbolOop)
+  _imcp_method_type_value,      // string: (variable java/dyn/MethodType, sic)
+  _imcp_limit
+};
+
+oop methodOopDesc::method_handle_type() const {
+  if (!is_method_handle_invoke()) { assert(false, "caller resp."); return NULL; }
+  oop mt = constants()->resolved_string_at(_imcp_method_type_value);
+  assert(mt->klass() == SystemDictionary::MethodType_klass(), "");
+  return mt;
+}
+
+jint* methodOopDesc::method_type_offsets_chain() {
+  static jint pchase[] = { -1, -1, -1 };
+  if (pchase[0] == -1) {
+    jint step0 = in_bytes(constants_offset());
+    jint step1 = (constantPoolOopDesc::header_size() + _imcp_method_type_value) * HeapWordSize;
+    // do this in reverse to avoid races:
+    OrderAccess::release_store(&pchase[1], step1);
+    OrderAccess::release_store(&pchase[0], step0);
+  }
+  return pchase;
+}
+
+methodHandle methodOopDesc::make_invoke_method(KlassHandle holder,
+                                               symbolHandle signature,
+                                               Handle method_type, TRAPS) {
+  methodHandle empty;
+
+  assert(holder() == SystemDictionary::MethodHandle_klass(),
+         "must be a JSR 292 magic type");
+
+  if (TraceMethodHandles) {
+    tty->print("Creating invoke method for ");
+    signature->print_value();
+    tty->cr();
+  }
+
+  constantPoolHandle cp;
+  {
+    constantPoolOop cp_oop = oopFactory::new_constantPool(_imcp_limit, IsSafeConc, CHECK_(empty));
+    cp = constantPoolHandle(THREAD, cp_oop);
+  }
+  cp->symbol_at_put(_imcp_invoke_name,       vmSymbols::invoke_name());
+  cp->symbol_at_put(_imcp_invoke_signature,  signature());
+  cp->string_at_put(_imcp_method_type_value, vmSymbols::void_signature());
+  cp->set_pool_holder(holder());
+
+  // set up the fancy stuff:
+  cp->pseudo_string_at_put(_imcp_method_type_value, method_type());
+  methodHandle m;
+  {
+    int flags_bits = (JVM_MH_INVOKE_BITS | JVM_ACC_PUBLIC | JVM_ACC_FINAL);
+    methodOop m_oop = oopFactory::new_method(0, accessFlags_from(flags_bits),
+                                             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(m->name() == vmSymbols::invoke_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->set_exception_table(Universe::the_empty_int_array());
+
+  // Finally, set up its entry points.
+  assert(m->method_handle_type() == method_type(), "");
+  assert(m->can_be_statically_bound(), "");
+  m->set_vtable_index(methodOopDesc::nonvirtual_vtable_index);
+  m->link_method(m, CHECK_(empty));
+
+#ifdef ASSERT
+  // Make sure the pointer chase works.
+  address p = (address) m();
+  for (jint* pchase = method_type_offsets_chain(); (*pchase) != -1; pchase++) {
+    p = *(address*)(p + (*pchase));
+  }
+  assert((oop)p == method_type(), "pointer chase is correct");
+#endif
+
+  if (TraceMethodHandles)
+    m->print_on(tty);
+
+  return m;
+}
+
+
 
 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) {
@@ -792,15 +897,34 @@
   AccessFlags flags = m->access_flags();
   int checked_exceptions_len = m->checked_exceptions_length();
   int localvariable_len = m->localvariable_table_length();
-  methodOop newm_oop = oopFactory::new_method(new_code_length, flags, new_compressed_linenumber_size, localvariable_len, checked_exceptions_len, CHECK_(methodHandle()));
+  // 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,
+                                              checked_exceptions_len,
+                                              IsUnsafeConc,
+                                              CHECK_(methodHandle()));
   methodHandle newm (THREAD, newm_oop);
   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();
   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(false);
   memcpy(newcm, m->constMethod(), sizeof(constMethodOopDesc));
+  m->constMethod()->set_is_conc_safe(true);
   // Reset correct method/const method, method size, and parameter info
   newcm->set_method(newm());
   newm->set_constMethod(newcm);
@@ -831,29 +955,46 @@
            m->localvariable_table_start(),
            localvariable_len * sizeof(LocalVariableTableElement));
   }
+
+  // Only set is_conc_safe to true when changes to newcm are
+  // complete.
+  newcm->set_is_conc_safe(true);
   return newm;
 }
 
-vmIntrinsics::ID methodOopDesc::compute_intrinsic_id() const {
-  assert(vmIntrinsics::_none == 0, "correct coding of default case");
-  const uintptr_t max_cache_uint = right_n_bits((int)(sizeof(_intrinsic_id_cache) * BitsPerByte));
-  assert((uintptr_t)vmIntrinsics::ID_LIMIT <= max_cache_uint, "else fix cache size");
+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(method_holder())->class_loader() != NULL) return vmIntrinsics::_none;
+  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:
-  symbolOop klass_name    = instanceKlass::cast(method_holder())->name();
-  vmSymbols::SID klass_id = vmSymbols::find_sid(klass_name);
-  if (klass_id == vmSymbols::NO_SID)  return vmIntrinsics::_none;
+  symbolOop 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");
+
+  // 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 (name_id  == vmSymbols::NO_SID)  return vmIntrinsics::_none;
+  if (name_id  == vmSymbols::NO_SID)  return;
   vmSymbols::SID   sig_id = vmSymbols::find_sid(signature());
-  if (sig_id   == vmSymbols::NO_SID)  return vmIntrinsics::_none;
+  if (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):
@@ -864,15 +1005,18 @@
     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;
     }
   }
 
-  // return intrinsic id if any
-  return vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
+  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) {
   bool sig_is_loaded = true;
--- a/src/share/vm/oops/methodOop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/methodOop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,7 +104,7 @@
   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_cache;         // Cache for intrinsic_id; 0 or 1+vmInt::ID
+  u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
   u1                _highest_tier_compile;       // Highest compile level this method has ever seen.
   u2                _interpreter_throwout_count; // Count of times method was exited via exception while interpreting
   u2                _number_of_breakpoints;      // fullspeed debugging support
@@ -129,6 +129,10 @@
   volatile address           _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry
 
  public:
+
+  static const bool IsUnsafeConc         = false;
+  static const bool IsSafeConc           = true;
+
   // accessors for instance variables
   constMethodOop constMethod() const             { return _constMethod; }
   void set_constMethod(constMethodOop xconst)    { oop_store_without_check((oop*)&_constMethod, (oop)xconst); }
@@ -220,8 +224,6 @@
   int highest_tier_compile()                     { return _highest_tier_compile;}
   void set_highest_tier_compile(int level)      { _highest_tier_compile = level;}
 
-  void clear_intrinsic_id_cache() { _intrinsic_id_cache = 0; }
-
   // Count of times method was exited via exception while interpreting
   void interpreter_throwout_increment() {
     if (_interpreter_throwout_count < 65534) {
@@ -292,7 +294,7 @@
   void set_compiled_invocation_count(int count)  { _compiled_invocation_count = count; }
 #endif // not PRODUCT
 
-  // Clear (non-shared space) pointers which could not be relevent
+  // Clear (non-shared space) pointers which could not be relevant
   // if this (shared) method were mapped into another JVM.
   void remove_unshareable_info();
 
@@ -316,6 +318,7 @@
   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
@@ -519,6 +522,21 @@
   // Reflection support
   bool is_overridden_in(klassOop k) const;
 
+  // JSR 292 support
+  bool is_method_handle_invoke() const              { return access_flags().is_method_handle_invoke(); }
+  static methodHandle make_invoke_method(KlassHandle holder,
+                                         symbolHandle signature,
+                                         Handle method_type,
+                                         TRAPS);
+  // these operate only on invoke methods:
+  oop method_handle_type() const;
+  static jint* method_type_offsets_chain();  // series of pointer-offsets, terminated by -1
+  // 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 (EnableMethodHandles ? (int)MethodHandlePushLimit : 0) + (EnableInvokeDynamic ? 3 : 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(); }
@@ -551,18 +569,12 @@
   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 { // returns zero if not an intrinsic
-    const u1& cache = _intrinsic_id_cache;
-    if (cache != 0) {
-      return (vmIntrinsics::ID)(cache - 1);
-    } else {
-      vmIntrinsics::ID id = compute_intrinsic_id();
-      *(u1*)&cache = ((u1) id) + 1;   // force the cache to be non-const
-      vmIntrinsics::verify_method(id, (methodOop) this);
-      assert((vmIntrinsics::ID)(cache - 1) == id, "proper conversion");
-      return id;
-    }
-  }
+  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);
 
   // On-stack replacement support
   bool has_osr_nmethod()                         { return instanceKlass::cast(method_holder())->lookup_osr_nmethod(this, InvocationEntryBci) != NULL; }
@@ -615,9 +627,6 @@
   void set_size_of_parameters(int size)          { _size_of_parameters = size; }
  private:
 
-  // Helper routine for intrinsic_id().
-  vmIntrinsics::ID compute_intrinsic_id() const;
-
   // 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; }
--- a/src/share/vm/oops/objArrayKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/objArrayKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +39,7 @@
       assert(a->is_parsable(), "Can't publish unless parsable");
       return a;
     } else {
+      report_java_out_of_memory("Requested array size exceeds VM limit");
       THROW_OOP_0(Universe::out_of_memory_error_array_size());
     }
   } else {
@@ -84,8 +85,6 @@
 template <class T> void objArrayKlass::do_copy(arrayOop s, T* src,
                                arrayOop d, T* dst, int length, TRAPS) {
 
-  const size_t word_len = objArrayOopDesc::array_size(length);
-
   BarrierSet* bs = Universe::heap()->barrier_set();
   // For performance reasons, we assume we are that the write barrier we
   // are using has optimized modes for arrays of references.  At least one
@@ -93,11 +92,10 @@
   assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
   assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well.");
 
-  MemRegion dst_mr = MemRegion((HeapWord*)dst, word_len);
   if (s == d) {
     // since source and destination are equal we do not need conversion checks.
     assert(length > 0, "sanity check");
-    bs->write_ref_array_pre(dst_mr);
+    bs->write_ref_array_pre(dst, length);
     Copy::conjoint_oops_atomic(src, dst, length);
   } else {
     // We have to make sure all elements conform to the destination array
@@ -105,7 +103,7 @@
     klassOop 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_mr);
+      bs->write_ref_array_pre(dst, length);
       Copy::conjoint_oops_atomic(src, dst, length);
     } else {
       // slow case: need individual subtype checks
@@ -137,6 +135,7 @@
       }
     }
   }
+  const size_t word_len = objArrayOopDesc::array_size(length);
   bs->write_ref_array(MemRegion((HeapWord*)dst, word_len));
 }
 
@@ -502,12 +501,25 @@
   }
 }
 
+static int max_objArray_print_length = 4;
 
 void objArrayKlass::oop_print_value_on(oop obj, outputStream* st) {
   assert(obj->is_objArray(), "must be objArray");
+  st->print("a ");
   element_klass()->print_value_on(st);
-  st->print("a [%d] ", objArrayOop(obj)->length());
-  as_klassOop()->klass()->print_value_on(st);
+  int len = objArrayOop(obj)->length();
+  st->print("[%d] ", len);
+  obj->print_address_on(st);
+  if (PrintOopAddress || PrintMiscellaneous && (WizardMode || Verbose)) {
+    st->print("{");
+    for (int i = 0; i < len; i++) {
+      if (i > max_objArray_print_length) {
+        st->print("..."); break;
+      }
+      st->print(" "INTPTR_FORMAT, (intptr_t)(void*)objArrayOop(obj)->obj_at(i));
+    }
+    st->print(" }");
+  }
 }
 
 #endif // PRODUCT
--- a/src/share/vm/oops/oop.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/oop.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 +65,7 @@
 
 void oopDesc::print_address_on(outputStream* st) const {
   if (PrintOopAddress) {
-    st->print("{");
-    if (PrintOopAddress) {
-      st->print(INTPTR_FORMAT, this);
-    }
-    st->print("}");
+    st->print("{"INTPTR_FORMAT"}", this);
   }
 }
 
--- a/src/share/vm/oops/oop.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/oop.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -108,6 +108,13 @@
   // 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_instanceRef()        const;
@@ -256,6 +263,9 @@
   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);
+
   // printing functions for VM debugging
   void print_on(outputStream* st) const;         // First level print
   void print_value_on(outputStream* st) const;   // Second level print.
--- a/src/share/vm/oops/oop.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/oop.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -148,11 +148,14 @@
 
 inline narrowOop oopDesc::encode_heap_oop_not_null(oop v) {
   assert(!is_null(v), "oop value can never be zero");
-  address heap_base = Universe::heap_base();
-  uint64_t pd = (uint64_t)(pointer_delta((void*)v, (void*)heap_base, 1));
+  assert(Universe::heap()->is_in_reserved(v), "Address not in heap");
+  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 >> LogMinObjAlignmentInBytes;
+  uint64_t result = pd >> shift;
   assert((result & CONST64(0xffffffff00000000)) == 0, "narrow oop overflow");
+  assert(decode_heap_oop(result) == v, "reversibility");
   return (narrowOop)result;
 }
 
@@ -162,8 +165,9 @@
 
 inline oop oopDesc::decode_heap_oop_not_null(narrowOop v) {
   assert(!is_null(v), "narrow oop value can never be zero");
-  address heap_base = Universe::heap_base();
-  return (oop)(void*)((uintptr_t)heap_base + ((uintptr_t)v << LogMinObjAlignmentInBytes));
+  address base = Universe::narrow_oop_base();
+  int    shift = Universe::narrow_oop_shift();
+  return (oop)(void*)((uintptr_t)base + ((uintptr_t)v << shift));
 }
 
 inline oop oopDesc::decode_heap_oop(narrowOop v) {
@@ -347,6 +351,9 @@
 inline jdouble oopDesc::double_field_acquire(int offset) const              { return OrderAccess::load_acquire(double_field_addr(offset));     }
 inline void oopDesc::release_double_field_put(int offset, jdouble contents) { OrderAccess::release_store(double_field_addr(offset), contents); }
 
+inline address oopDesc::address_field_acquire(int offset) const             { return (address) OrderAccess::load_ptr_acquire(address_field_addr(offset)); }
+inline void oopDesc::release_address_field_put(int offset, address contents) { OrderAccess::release_store_ptr(address_field_addr(offset), contents); }
+
 inline int oopDesc::size_given_klass(Klass* klass)  {
   int lh = klass->layout_helper();
   int s  = lh >> LogHeapWordSize;  // deliver size scaled by wordSize
@@ -435,12 +442,16 @@
   return blueprint()->oop_is_parsable(this);
 }
 
+inline bool oopDesc::is_conc_safe() {
+  return blueprint()->oop_is_conc_safe(this);
+}
+
 inline void update_barrier_set(void* p, oop v) {
   assert(oopDesc::bs() != NULL, "Uninitialized bs in oop!");
   oopDesc::bs()->write_ref_field(p, v);
 }
 
-inline void update_barrier_set_pre(void* p, oop v) {
+template <class T> inline void update_barrier_set_pre(T* p, oop v) {
   oopDesc::bs()->write_ref_field_pre(p, v);
 }
 
@@ -450,15 +461,15 @@
   } else {
     update_barrier_set_pre(p, v);
     oopDesc::encode_store_heap_oop(p, v);
-    update_barrier_set(p, v);
+    update_barrier_set((void*)p, v);  // cast away type
   }
 }
 
 template <class T> inline void oop_store(volatile T* p, oop v) {
-  update_barrier_set_pre((void*)p, v);
+  update_barrier_set_pre((T*)p, v);   // cast away volatile
   // Used by release_obj_field_put, so use release_store_ptr.
   oopDesc::release_encode_store_heap_oop(p, v);
-  update_barrier_set((void*)p, v);
+  update_barrier_set((void*)p, v);    // cast away type
 }
 
 template <class T> inline void oop_store_without_check(T* p, oop v) {
--- a/src/share/vm/oops/oopsHierarchy.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/oopsHierarchy.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 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;
 
 #ifndef CHECK_UNHANDLED_OOPS
 
@@ -126,8 +127,11 @@
   operator jobject () const           { return (jobject)obj(); }
   // from javaClasses.cpp
   operator JavaThread* () const       { return (JavaThread*)obj(); }
+
+#ifndef _LP64
   // from jvm.cpp
   operator jlong* () const            { return (jlong*)obj(); }
+#endif
 
   // from parNewGeneration and other things that want to get to the end of
   // an oop for stuff (like constMethodKlass.cpp, objArrayKlass.cpp)
--- a/src/share/vm/oops/typeArrayKlass.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/typeArrayKlass.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
       assert(t->is_parsable(), "Don't publish unless parsable");
       return t;
     } else {
+      report_java_out_of_memory("Requested array size exceeds VM limit");
       THROW_OOP_0(Universe::out_of_memory_error_array_size());
     }
   } else {
--- a/src/share/vm/oops/typeArrayKlass.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/oops/typeArrayKlass.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/opto/addnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/addnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -756,7 +756,13 @@
       if ( eti == NULL ) {
         // there must be one pointer among the operands
         guarantee(tptr == NULL, "must be only one pointer operand");
-        tptr = et->isa_oopptr();
+        if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
+          // 32-bits narrow oop can be the base of address expressions
+          tptr = et->make_ptr()->isa_oopptr();
+        } else {
+          // only regular oops are expected here
+          tptr = et->isa_oopptr();
+        }
         guarantee(tptr != NULL, "non-int operand must be pointer");
         if (tptr->higher_equal(tp->add_offset(tptr->offset())))
           tp = tptr; // Set more precise type for bailout
--- a/src/share/vm/opto/block.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/block.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -181,7 +181,7 @@
 }
 
 //------------------------------has_uncommon_code------------------------------
-// Return true if the block's code implies that it is not likely to be
+// Return true if the block's code implies that it is likely to be
 // executed infrequently.  Check to see if the block ends in a Halt or
 // a low probability call.
 bool Block::has_uncommon_code() const {
@@ -357,6 +357,9 @@
 #ifndef PRODUCT
   , _trace_opto_pipelining(TraceOptoPipelining || C->method_has_option("TraceOptoPipelining"))
 #endif
+#ifdef ASSERT
+  , _raw_oops(a)
+#endif
 {
   ResourceMark rm;
   // I'll need a few machine-specific GotoNodes.  Make an Ideal GotoNode,
@@ -880,6 +883,7 @@
 }
 
 void PhaseCFG::verify( ) const {
+#ifdef ASSERT
   // Verify sane CFG
   for( uint i = 0; i < _num_blocks; i++ ) {
     Block *b = _blocks[i];
@@ -894,10 +898,24 @@
                 "CreateEx must be first instruction in block" );
       }
       for( uint k = 0; k < n->req(); k++ ) {
-        Node *use = n->in(k);
-        if( use && use != n ) {
-          assert( _bbs[use->_idx] || use->is_Con(),
+        Node *def = n->in(k);
+        if( def && def != n ) {
+          assert( _bbs[def->_idx] || def->is_Con(),
                   "must have block; constants for debug info ok" );
+          // Verify that instructions in the block is in correct order.
+          // Uses must follow their definition if they are at the same block.
+          // Mostly done to check that MachSpillCopy nodes are placed correctly
+          // when CreateEx node is moved in build_ifg_physical().
+          if( _bbs[def->_idx] == b &&
+              !(b->head()->is_Loop() && n->is_Phi()) &&
+              // See (+++) comment in reg_split.cpp
+              !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) {
+            assert( b->find_node(def) < j, "uses must follow definitions" );
+          }
+          if( def->is_SafePointScalarObject() ) {
+            assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node");
+            assert(_bbs[def->_idx] == _bbs[def->in(0)->_idx], "SafePointScalarObject Node should be at the same block as its control edge");
+          }
         }
       }
     }
@@ -914,6 +932,7 @@
       assert( b->_num_succs == 2, "Conditional branch must have two targets");
     }
   }
+#endif
 }
 #endif
 
@@ -1295,7 +1314,7 @@
       }
     } else if (e->state() == CFGEdge::open) {
       // Append traces, even without a fall-thru connection.
-      // But leave root entry at the begining of the block list.
+      // But leave root entry at the beginning of the block list.
       if (targ_trace != trace(_cfg._broot)) {
         e->set_state(CFGEdge::connected);
         src_trace->append(targ_trace);
@@ -1418,7 +1437,7 @@
     }
 
     // Backbranch to the top of a trace
-    // Scroll foward through the trace from the targ_block. If we find
+    // Scroll forward through the trace from the targ_block. If we find
     // a loop head before another loop top, use the the loop head alignment.
     for (Block *b = targ_block; b != NULL; b = next(b)) {
       if (b->has_loop_alignment()) {
--- a/src/share/vm/opto/block.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/block.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -347,6 +347,8 @@
   // Helper function to insert a node into a block
   void schedule_node_into_block( Node *n, Block *b );
 
+  void replace_block_proj_ctrl( Node *n );
+
   // Set the basic block for pinned Nodes
   void schedule_pinned_nodes( VectorSet &visited );
 
@@ -369,6 +371,7 @@
   Block *_broot;                // Basic block of root
   uint _rpo_ctr;
   CFGLoop* _root_loop;
+  float _outer_loop_freq;       // Outmost loop frequency
 
   // Per node latency estimation, valid only during GCM
   GrowableArray<uint> _node_latency;
@@ -377,6 +380,10 @@
   bool _trace_opto_pipelining;  // tracing flag
 #endif
 
+#ifdef ASSERT
+  Unique_Node_List _raw_oops;
+#endif
+
   // Build dominators
   void Dominators();
 
@@ -535,6 +542,7 @@
   void compute_loop_depth(int depth);
   void compute_freq(); // compute frequency with loop assuming head freq 1.0f
   void scale_freq();   // scale frequency by loop trip count (including outer loops)
+  float outer_loop_freq() const; // frequency of outer loop
   bool in_loop_nest(Block* b);
   float trip_count() const { return 1.0f / _exit_prob; }
   virtual bool is_loop()  { return true; }
@@ -607,7 +615,7 @@
   Block * next(Block *b) const { return _next_list[b->_pre_order]; }
   void set_next(Block *b, Block *n) const { _next_list[b->_pre_order] = n; }
 
-  // Return the block that preceeds "b" in the trace.
+  // Return the block that precedes "b" in the trace.
   Block * prev(Block *b) const { return _prev_list[b->_pre_order]; }
   void set_prev(Block *b, Block *p) const { _prev_list[b->_pre_order] = p; }
 
--- a/src/share/vm/opto/buildOopMap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/buildOopMap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -55,7 +55,7 @@
 // breadth-first approach but it was worse (showed O(n^2) in the
 // pick-next-block code).
 //
-// The relevent data is kept in a struct of arrays (it could just as well be
+// The relevant data is kept in a struct of arrays (it could just as well be
 // an array of structs, but the struct-of-arrays is generally a little more
 // efficient).  The arrays are indexed by register number (including
 // stack-slots as registers) and so is bounded by 200 to 300 elements in
@@ -74,9 +74,11 @@
   // this block.
   Block *_b;                    // Block for this struct
   OopFlow *_next;               // Next free OopFlow
+                                // or NULL if dead/conflict
+  Compile* C;
 
-  OopFlow( short *callees, Node **defs ) : _callees(callees), _defs(defs),
-    _b(NULL), _next(NULL) { }
+  OopFlow( short *callees, Node **defs, Compile* c ) : _callees(callees), _defs(defs),
+    _b(NULL), _next(NULL), C(c) { }
 
   // Given reaching-defs for this block start, compute it for this block end
   void compute_reach( PhaseRegAlloc *regalloc, int max_reg, Dict *safehash );
@@ -88,7 +90,7 @@
   void clone( OopFlow *flow, int max_size);
 
   // Make a new OopFlow from scratch
-  static OopFlow *make( Arena *A, int max_size );
+  static OopFlow *make( Arena *A, int max_size, Compile* C );
 
   // Build an oopmap from the current flow info
   OopMap *build_oop_map( Node *n, int max_reg, PhaseRegAlloc *regalloc, int* live );
@@ -180,11 +182,11 @@
 }
 
 //------------------------------make-------------------------------------------
-OopFlow *OopFlow::make( Arena *A, int max_size ) {
+OopFlow *OopFlow::make( Arena *A, int max_size, Compile* C ) {
   short *callees = NEW_ARENA_ARRAY(A,short,max_size+1);
   Node **defs    = NEW_ARENA_ARRAY(A,Node*,max_size+1);
   debug_only( memset(defs,0,(max_size+1)*sizeof(Node*)) );
-  OopFlow *flow = new (A) OopFlow(callees+1, defs+1);
+  OopFlow *flow = new (A) OopFlow(callees+1, defs+1, C);
   assert( &flow->_callees[OptoReg::Bad] == callees, "Ok to index at OptoReg::Bad" );
   assert( &flow->_defs   [OptoReg::Bad] == defs   , "Ok to index at OptoReg::Bad" );
   return flow;
@@ -288,7 +290,7 @@
               m = m->in(idx);
             }
           }
-         guarantee( 0, "must find derived/base pair" );
+          guarantee( 0, "must find derived/base pair" );
         }
       found: ;
         Node *base = n->in(i+1); // Base is other half of pair
@@ -347,6 +349,13 @@
     } else {
       // Other - some reaching non-oop value
       omap->set_value( r);
+#ifdef ASSERT
+      if( t->isa_rawptr() && C->cfg()->_raw_oops.member(def) ) {
+        def->dump();
+        n->dump();
+        assert(false, "there should be a oop in OopMap instead of a live raw oop at safepoint");
+      }
+#endif
     }
 
   }
@@ -363,6 +372,20 @@
   */
 #endif
 
+#ifdef ASSERT
+  for( OopMapStream oms1(omap, OopMapValue::derived_oop_value); !oms1.is_done(); oms1.next()) {
+    OopMapValue omv1 = oms1.current();
+    bool found = false;
+    for( OopMapStream oms2(omap,OopMapValue::oop_value); !oms2.is_done(); oms2.next()) {
+      if( omv1.content_reg() == oms2.current().reg() ) {
+        found = true;
+        break;
+      }
+    }
+    assert( found, "derived with no base in oopmap" );
+  }
+#endif
+
   return omap;
 }
 
@@ -548,7 +571,7 @@
 
   // Do the first block 'by hand' to prime the worklist
   Block *entry = _cfg->_blocks[1];
-  OopFlow *rootflow = OopFlow::make(A,max_reg);
+  OopFlow *rootflow = OopFlow::make(A,max_reg,this);
   // Initialize to 'bottom' (not 'top')
   memset( rootflow->_callees, OptoReg::Bad, max_reg*sizeof(short) );
   memset( rootflow->_defs   ,            0, max_reg*sizeof(Node*) );
@@ -614,7 +637,7 @@
       // Carry it forward.
     } else {                    // Draw a new OopFlow from the freelist
       if( !free_list )
-        free_list = OopFlow::make(A,max_reg);
+        free_list = OopFlow::make(A,max_reg,C);
       flow = free_list;
       assert( flow->_b == NULL, "oopFlow is not free" );
       free_list = flow->_next;
--- a/src/share/vm/opto/bytecodeInfo.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/bytecodeInfo.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -232,6 +232,14 @@
     return "disallowed by CompilerOracle";
   }
 
+  if (UseStringCache) {
+    // Do not inline StringCache::profile() method used only at the beginning.
+    if (callee_method->name() == ciSymbol::profile_name() &&
+        callee_method->holder()->name() == ciSymbol::java_lang_StringCache()) {
+      return "profiling method";
+    }
+  }
+
   return NULL;
 }
 
@@ -313,7 +321,7 @@
     // stricter than callee_holder->is_initialized()
     ciBytecodeStream iter(caller_method);
     iter.force_bci(caller_bci);
-    int index = iter.get_index_big();
+    int index = iter.get_index_int();
     if( !caller_method->is_klass_loaded(index, true) ) {
       return false;
     }
--- a/src/share/vm/opto/c2_globals.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/c2_globals.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -191,6 +191,9 @@
   notproduct(bool, VerifyHashTableKeys, true,                               \
           "Verify the immutability of keys in the VN hash tables")          \
                                                                             \
+  notproduct(bool, VerifyRegisterAllocator , false,                         \
+          "Verify Register Allocator")                                      \
+                                                                            \
   develop_pd(intx, FLOATPRESSURE,                                           \
           "Number of float LRG's that constitute high register pressure")   \
                                                                             \
@@ -388,7 +391,7 @@
   product(intx, EliminateAllocationArraySizeLimit, 64,                      \
           "Array size (number of elements) limit for scalar replacement")   \
                                                                             \
-  product(bool, UseOptoBiasInlining, true,                                 \
+  product(bool, UseOptoBiasInlining, true,                                  \
           "Generate biased locking code in C2 ideal graph")                 \
                                                                             \
   product(intx, ValueSearchLimit, 1000,                                     \
@@ -407,7 +410,7 @@
           "Miniumum %% of a successor (predecessor) for which block layout "\
           "a will allow a fork (join) in a single chain")                   \
                                                                             \
-  product(bool, BlockLayoutRotateLoops, false,                              \
+  product(bool, BlockLayoutRotateLoops, true,                               \
           "Allow back branches to be fall throughs in the block layour")    \
 
 C2_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)
--- a/src/share/vm/opto/c2compiler.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/c2compiler.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -104,7 +104,9 @@
     initialize();
   }
   bool subsume_loads = true;
-  bool do_escape_analysis = DoEscapeAnalysis;
+  bool do_escape_analysis = DoEscapeAnalysis &&
+                            !(env->jvmti_can_hotswap_or_post_breakpoint() ||
+                              env->jvmti_can_examine_or_deopt_anywhere());
   while (!env->failing()) {
     // Attempt to compile while subsuming loads into machine instructions.
     Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis);
--- a/src/share/vm/opto/callnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/callnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -975,6 +975,7 @@
 }
 
 bool SafePointScalarObjectNode::pinned() const { return true; }
+bool SafePointScalarObjectNode::depends_only_on_test() const { return false; }
 
 uint SafePointScalarObjectNode::ideal_reg() const {
   return 0; // No matching to machine instruction
@@ -1042,6 +1043,51 @@
 //=============================================================================
 uint AllocateArrayNode::size_of() const { return sizeof(*this); }
 
+Node* AllocateArrayNode::Ideal(PhaseGVN *phase, bool can_reshape) {
+  if (remove_dead_region(phase, can_reshape))  return this;
+
+  const Type* type = phase->type(Ideal_length());
+  if (type->isa_int() && type->is_int()->_hi < 0) {
+    if (can_reshape) {
+      PhaseIterGVN *igvn = phase->is_IterGVN();
+      // Unreachable fall through path (negative array length),
+      // the allocation can only throw so disconnect it.
+      Node* proj = proj_out(TypeFunc::Control);
+      Node* catchproj = NULL;
+      if (proj != NULL) {
+        for (DUIterator_Fast imax, i = proj->fast_outs(imax); i < imax; i++) {
+          Node *cn = proj->fast_out(i);
+          if (cn->is_Catch()) {
+            catchproj = cn->as_Multi()->proj_out(CatchProjNode::fall_through_index);
+            break;
+          }
+        }
+      }
+      if (catchproj != NULL && catchproj->outcnt() > 0 &&
+          (catchproj->outcnt() > 1 ||
+           catchproj->unique_out()->Opcode() != Op_Halt)) {
+        assert(catchproj->is_CatchProj(), "must be a CatchProjNode");
+        Node* nproj = catchproj->clone();
+        igvn->register_new_node_with_optimizer(nproj);
+
+        Node *frame = new (phase->C, 1) ParmNode( phase->C->start(), TypeFunc::FramePtr );
+        frame = phase->transform(frame);
+        // Halt & Catch Fire
+        Node *halt = new (phase->C, TypeFunc::Parms) HaltNode( nproj, frame );
+        phase->C->root()->add_req(halt);
+        phase->transform(halt);
+
+        igvn->replace_node(catchproj, phase->C->top());
+        return this;
+      }
+    } else {
+      // Can't correct it during regular GVN so register for IGVN
+      phase->C->record_for_igvn(this);
+    }
+  }
+  return NULL;
+}
+
 // Retrieve the length from the AllocateArrayNode. Narrow the type with a
 // CastII, if appropriate.  If we are not allowed to create new nodes, and
 // a CastII is appropriate, return NULL.
--- a/src/share/vm/opto/callnode.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/callnode.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -437,6 +437,10 @@
   // of the SafePoint node for which it was generated.
   virtual bool pinned() const; // { return true; }
 
+  // SafePointScalarObject depends on the SafePoint node
+  // for which it was generated.
+  virtual bool depends_only_on_test() const; // { return false; }
+
   virtual uint size_of() const { return sizeof(*this); }
 
   // Assumes that "this" is an argument to a safepoint node "s", and that
@@ -758,6 +762,7 @@
   }
   virtual int Opcode() const;
   virtual uint size_of() const; // Size is bigger
+  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 
   // Dig the length operand out of a array allocation site.
   Node* Ideal_length() {
--- a/src/share/vm/opto/cfgnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/cfgnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -858,12 +858,18 @@
   // convert the one to the other.
   const TypePtr* ttp = _type->make_ptr();
   const TypeInstPtr* ttip = (ttp != NULL) ? ttp->isa_instptr() : NULL;
+  const TypeKlassPtr* ttkp = (ttp != NULL) ? ttp->isa_klassptr() : NULL;
   bool is_intf = false;
   if (ttip != NULL) {
     ciKlass* k = ttip->klass();
     if (k->is_loaded() && k->is_interface())
       is_intf = true;
   }
+  if (ttkp != NULL) {
+    ciKlass* k = ttkp->klass();
+    if (k->is_loaded() && k->is_interface())
+      is_intf = true;
+  }
 
   // Default case: merge all inputs
   const Type *t = Type::TOP;        // Merged type starting value
@@ -921,6 +927,8 @@
     // uplift the type.
     if( !t->empty() && ttip && ttip->is_loaded() && ttip->klass()->is_interface() )
       { assert(ft == _type, ""); } // Uplift to interface
+    else if( !t->empty() && ttkp && ttkp->is_loaded() && ttkp->klass()->is_interface() )
+      { assert(ft == _type, ""); } // Uplift to interface
     // Otherwise it's something stupid like non-overlapping int ranges
     // found on dying counted loops.
     else
@@ -936,6 +944,7 @@
     // because the type system doesn't interact well with interfaces.
     const TypePtr *jtp = jt->make_ptr();
     const TypeInstPtr *jtip = (jtp != NULL) ? jtp->isa_instptr() : NULL;
+    const TypeKlassPtr *jtkp = (jtp != NULL) ? jtp->isa_klassptr() : NULL;
     if( jtip && ttip ) {
       if( jtip->is_loaded() &&  jtip->klass()->is_interface() &&
           ttip->is_loaded() && !ttip->klass()->is_interface() ) {
@@ -945,6 +954,14 @@
         jt = ft;
       }
     }
+    if( jtkp && ttkp ) {
+      if( jtkp->is_loaded() &&  jtkp->klass()->is_interface() &&
+          ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
+        assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
+               ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
+        jt = ft;
+      }
+    }
     if (jt != ft && jt->base() == ft->base()) {
       if (jt->isa_int() &&
           jt->is_int()->_lo == ft->is_int()->_lo &&
@@ -1333,7 +1350,7 @@
   }
 
   // Register the new node but do not transform it.  Cannot transform until the
-  // entire Region/Phi conglerate has been hacked as a single huge transform.
+  // entire Region/Phi conglomerate has been hacked as a single huge transform.
   igvn->register_new_node_with_optimizer( newn );
   // Now I can point to the new node.
   n->add_req(newn);
@@ -1364,7 +1381,7 @@
   Node *val = phi->in(i);       // Constant to split for
   uint hit = 0;                 // Number of times it occurs
 
-  for( ; i < phi->req(); i++ ){ // Count occurances of constant
+  for( ; i < phi->req(); i++ ){ // Count occurrences of constant
     Node *n = phi->in(i);
     if( !n ) return NULL;
     if( phase->type(n) == Type::TOP ) return NULL;
@@ -1406,7 +1423,7 @@
 
 //=============================================================================
 //------------------------------simple_data_loop_check-------------------------
-//  Try to determing if the phi node in a simple safe/unsafe data loop.
+//  Try to determining if the phi node in a simple safe/unsafe data loop.
 //  Returns:
 // enum LoopSafety { Safe = 0, Unsafe, UnsafeLoop };
 // Safe       - safe case when the phi and it's inputs reference only safe data
@@ -1670,7 +1687,7 @@
               progress = phase->C->top();
               break;
             }
-            // If tranformed to a MergeMem, get the desired slice
+            // If transformed to a MergeMem, get the desired slice
             // Otherwise the returned node represents memory for every slice
             Node *new_mem = (m->is_MergeMem()) ?
                              m->as_MergeMem()->memory_at(alias_idx) : m;
@@ -1779,8 +1796,12 @@
     for (uint i=1; i<req(); ++i) {// For all paths in
       Node *ii = in(i);
       if (ii->is_DecodeN() && ii->bottom_type() == bottom_type()) {
-        has_decodeN = true;
-        in_decodeN = ii->in(1);
+        // Note: in_decodeN is used only to define the type of new phi.
+        // Find a non dead path otherwise phi type will be wrong.
+        if (ii->in(1)->bottom_type() != Type::TOP) {
+          has_decodeN = true;
+          in_decodeN = ii->in(1);
+        }
       } else if (!ii->is_Phi()) {
         may_push = false;
       }
@@ -1788,7 +1809,6 @@
 
     if (has_decodeN && may_push) {
       PhaseIterGVN *igvn = phase->is_IterGVN();
-      // Note: in_decodeN is used only to define the type of new phi here.
       PhiNode *new_phi = PhiNode::make_blank(in(0), in_decodeN);
       uint orig_cnt = req();
       for (uint i=1; i<req(); ++i) {// For all paths in
@@ -1945,7 +1965,7 @@
         f[CatchProjNode::fall_through_index] = Type::TOP;
       } else if( call->req() > TypeFunc::Parms ) {
         const Type *arg0 = phase->type( call->in(TypeFunc::Parms) );
-        // Check for null reciever to virtual or interface calls
+        // Check for null receiver to virtual or interface calls
         if( call->is_CallDynamicJava() &&
             arg0->higher_equal(TypePtr::NULL_PTR) ) {
           f[CatchProjNode::fall_through_index] = Type::TOP;
@@ -1978,7 +1998,7 @@
   // also remove any exception table entry.  Thus we must know the call
   // feeding the Catch will not really throw an exception.  This is ok for
   // the main fall-thru control (happens when we know a call can never throw
-  // an exception) or for "rethrow", because a further optimnization will
+  // an exception) or for "rethrow", because a further optimization will
   // yank the rethrow (happens when we inline a function that can throw an
   // exception and the caller has no handler).  Not legal, e.g., for passing
   // a NULL receiver to a v-call, or passing bad types to a slow-check-cast.
--- a/src/share/vm/opto/chaitin.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/chaitin.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +149,9 @@
 #endif
 {
   NOT_PRODUCT( Compile::TracePhase t3("ctorChaitin", &_t_ctorChaitin, TimeCompiler); )
+
+  _high_frequency_lrg = MIN2(float(OPTO_LRG_HIGH_FREQ), _cfg._outer_loop_freq);
+
   uint i,j;
   // Build a list of basic blocks, sorted by frequency
   _blks = NEW_RESOURCE_ARRAY( Block *, _cfg._num_blocks );
@@ -228,6 +231,11 @@
   // them for real.
   de_ssa();
 
+#ifdef ASSERT
+  // Veify the graph before RA.
+  verify(&live_arena);
+#endif
+
   {
     NOT_PRODUCT( Compile::TracePhase t3("computeLive", &_t_computeLive, TimeCompiler); )
     _live = NULL;                 // Mark live as being not available
@@ -306,12 +314,6 @@
     C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after physical split");
     if (C->failing())  return;
 
-#ifdef ASSERT
-    if( VerifyOpto ) {
-      _cfg.verify();
-      verify_base_ptrs(&live_arena);
-    }
-#endif
     NOT_PRODUCT( C->verify_graph_edges(); )
 
     compact();                  // Compact LRGs; return new lower max lrg
@@ -340,7 +342,7 @@
     compress_uf_map_for_nodes();
 
 #ifdef ASSERT
-    if( VerifyOpto ) _ifg->verify(this);
+    verify(&live_arena, true);
 #endif
   } else {
     ifg.SquareUp();
@@ -376,12 +378,6 @@
     // Bail out if unique gets too large (ie - unique > MaxNodeLimit - 2*NodeLimitFudgeFactor)
     C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after split");
     if (C->failing())  return;
-#ifdef ASSERT
-    if( VerifyOpto ) {
-      _cfg.verify();
-      verify_base_ptrs(&live_arena);
-    }
-#endif
 
     compact();                  // Compact LRGs; return new lower max lrg
 
@@ -412,7 +408,7 @@
     }
     compress_uf_map_for_nodes();
 #ifdef ASSERT
-    if( VerifyOpto ) _ifg->verify(this);
+    verify(&live_arena, true);
 #endif
     cache_lrg_info();           // Count degree of LRGs
 
@@ -432,6 +428,11 @@
   // Peephole remove copies
   post_allocate_copy_removal();
 
+#ifdef ASSERT
+  // Veify the graph after RA.
+  verify(&live_arena);
+#endif
+
   // max_reg is past the largest *register* used.
   // Convert that to a frame_slot number.
   if( _max_reg <= _matcher._new_SP )
@@ -956,7 +957,7 @@
       while ((neighbor = elements.next()) != 0) {
         LRG *n = &lrgs(neighbor);
 #ifdef ASSERT
-        if( VerifyOpto ) {
+        if( VerifyOpto || VerifyRegisterAllocator ) {
           assert( _ifg->effective_degree(neighbor) == n->degree(), "" );
         }
 #endif
@@ -1248,7 +1249,7 @@
 
       // If the live range is not bound, then we actually had some choices
       // to make.  In this case, the mask has more bits in it than the colors
-      // choosen.  Restrict the mask to just what was picked.
+      // chosen.  Restrict the mask to just what was picked.
       if( lrg->num_regs() == 1 ) { // Size 1 live range
         lrg->Clear();           // Clear the mask
         lrg->Insert(reg);       // Set regmask to match selected reg
@@ -1422,17 +1423,33 @@
   // pointers derived from NULL!  These are always along paths that
   // can't happen at run-time but the optimizer cannot deduce it so
   // we have to handle it gracefully.
+  assert(!derived->bottom_type()->isa_narrowoop() ||
+          derived->bottom_type()->make_ptr()->is_ptr()->_offset == 0, "sanity");
   const TypePtr *tj = derived->bottom_type()->isa_ptr();
   // If its an OOP with a non-zero offset, then it is derived.
-  if( tj->_offset == 0 ) {
+  if( tj == NULL || tj->_offset == 0 ) {
     derived_base_map[derived->_idx] = derived;
     return derived;
   }
   // Derived is NULL+offset?  Base is NULL!
   if( derived->is_Con() ) {
-    Node *base = new (C, 1) ConPNode( TypePtr::NULL_PTR );
-    uint no_lidx = 0;  // an unmatched constant in debug info has no LRG
-    _names.extend(base->_idx, no_lidx);
+    Node *base = _matcher.mach_null();
+    assert(base != NULL, "sanity");
+    if (base->in(0) == NULL) {
+      // Initialize it once and make it shared:
+      // set control to _root and place it into Start block
+      // (where top() node is placed).
+      base->init_req(0, _cfg._root);
+      Block *startb = _cfg._bbs[C->top()->_idx];
+      startb->_nodes.insert(startb->find_node(C->top()), base );
+      _cfg._bbs.map( base->_idx, startb );
+      assert (n2lidx(base) == 0, "should not have LRG yet");
+    }
+    if (n2lidx(base) == 0) {
+      new_lrg(base, maxlrg++);
+    }
+    assert(base->in(0) == _cfg._root &&
+           _cfg._bbs[base->_idx] == _cfg._bbs[C->top()->_idx], "base NULL should be shared");
     derived_base_map[derived->_idx] = base;
     return base;
   }
@@ -1459,9 +1476,13 @@
   }
 
   // Now we see we need a base-Phi here to merge the bases
-  base = new (C, derived->req()) PhiNode( derived->in(0), base->bottom_type() );
-  for( i = 1; i < derived->req(); i++ )
+  const Type *t = base->bottom_type();
+  base = new (C, derived->req()) PhiNode( derived->in(0), t );
+  for( i = 1; i < derived->req(); i++ ) {
     base->init_req(i, find_base_for_derived(derived_base_map, derived->in(i), maxlrg));
+    t = t->meet(base->in(i)->bottom_type());
+  }
+  base->as_Phi()->set_type(t);
 
   // Search the current block for an existing base-Phi
   Block *b = _cfg._bbs[derived->_idx];
@@ -1559,6 +1580,8 @@
           // This works because we are still in SSA during this call.
           Node *derived = lrgs(neighbor)._def;
           const TypePtr *tj = derived->bottom_type()->isa_ptr();
+          assert(!derived->bottom_type()->isa_narrowoop() ||
+                  derived->bottom_type()->make_ptr()->is_ptr()->_offset == 0, "sanity");
           // If its an OOP with a non-zero offset, then it is derived.
           if( tj && tj->_offset != 0 && tj->isa_oop_ptr() ) {
             Node *base = find_base_for_derived( derived_base_map, derived, maxlrg );
--- a/src/share/vm/opto/chaitin.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/chaitin.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -327,7 +327,7 @@
   // True if lidx is used before any real register is def'd in the block
   bool prompt_use( Block *b, uint lidx );
   Node *get_spillcopy_wide( Node *def, Node *use, uint uidx );
-  // Insert the spill at chosen location.  Skip over any interveneing Proj's or
+  // Insert the spill at chosen location.  Skip over any intervening Proj's or
   // Phis.  Skip over a CatchNode and projs, inserting in the fall-through block
   // instead.  Update high-pressure indices.  Create a new live range.
   void insert_proj( Block *b, uint i, Node *spill, uint maxlrg );
@@ -338,6 +338,8 @@
 
   Block **_blks;                // Array of blocks sorted by frequency for coalescing
 
+  float _high_frequency_lrg;    // Frequency at which LRG will be spilled for debug info
+
 #ifndef PRODUCT
   bool _trace_spilling;
 #endif
@@ -360,6 +362,8 @@
 
   uint n2lidx( const Node *n ) const { return _names[n->_idx]; }
 
+  float high_frequency_lrg() const { return _high_frequency_lrg; }
+
 #ifndef PRODUCT
   bool trace_spilling() const { return _trace_spilling; }
 #endif
@@ -431,7 +435,7 @@
   void Simplify();
 
   // Select colors by re-inserting edges into the IFG.
-  // Return TRUE if any spills occured.
+  // Return TRUE if any spills occurred.
   uint Select( );
   // Helper function for select which allows biased coloring
   OptoReg::Name choose_color( LRG &lrg, int chunk );
@@ -491,6 +495,8 @@
   // Verify that base pointers and derived pointers are still sane
   void verify_base_ptrs( ResourceArea *a ) const;
 
+  void verify( ResourceArea *a, bool verify_ifg = false ) const;
+
   void dump_for_spill_split_recycle() const;
 
 public:
--- a/src/share/vm/opto/classes.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/classes.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,6 +104,10 @@
 macro(CosD)
 macro(CountedLoop)
 macro(CountedLoopEnd)
+macro(CountLeadingZerosI)
+macro(CountLeadingZerosL)
+macro(CountTrailingZerosI)
+macro(CountTrailingZerosL)
 macro(CreateEx)
 macro(DecodeN)
 macro(DivD)
@@ -129,11 +133,13 @@
 macro(LShiftI)
 macro(LShiftL)
 macro(LoadB)
-macro(LoadC)
+macro(LoadUB)
+macro(LoadUS)
 macro(LoadD)
 macro(LoadD_unaligned)
 macro(LoadF)
 macro(LoadI)
+macro(LoadUI2L)
 macro(LoadKlass)
 macro(LoadNKlass)
 macro(LoadL)
@@ -182,6 +188,8 @@
 macro(Parm)
 macro(PartialSubtypeCheck)
 macro(Phi)
+macro(PopCountI)
+macro(PopCountL)
 macro(PowD)
 macro(PrefetchRead)
 macro(PrefetchWrite)
@@ -214,6 +222,8 @@
 macro(StoreP)
 macro(StoreN)
 macro(StrComp)
+macro(StrEquals)
+macro(StrIndexOf)
 macro(SubD)
 macro(SubF)
 macro(SubI)
--- a/src/share/vm/opto/coalesce.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/coalesce.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -123,7 +123,7 @@
 }
 
 //------------------------------clone_projs------------------------------------
-// After cloning some rematierialized instruction, clone any MachProj's that
+// After cloning some rematerialized instruction, clone any MachProj's that
 // follow it.  Example: Intel zero is XOR, kills flags.  Sparc FP constants
 // use G3 as an address temp.
 int PhaseChaitin::clone_projs( Block *b, uint idx, Node *con, Node *copy, uint &maxlrg ) {
@@ -473,7 +473,7 @@
         } // End of is two-adr
 
         // Insert a copy at a debug use for a lrg which has high frequency
-        if( (b->_freq < OPTO_DEBUG_SPLIT_FREQ) && n->is_MachSafePoint() ) {
+        if( b->_freq < OPTO_DEBUG_SPLIT_FREQ || b->is_uncommon(_phc._cfg._bbs) ) {
           // Walk the debug inputs to the node and check for lrg freq
           JVMState* jvms = n->jvms();
           uint debug_start = jvms ? jvms->debug_start() : 999999;
@@ -487,7 +487,7 @@
             LRG &lrg = lrgs(nidx);
 
             // If this lrg has a high frequency use/def
-            if( lrg._maxfreq >= OPTO_LRG_HIGH_FREQ ) {
+            if( lrg._maxfreq >= _phc.high_frequency_lrg() ) {
               // If the live range is also live out of this block (like it
               // would be for a fast/slow idiom), the normal spill mechanism
               // does an excellent job.  If it is not live out of this block
@@ -694,8 +694,8 @@
           } // End of if not infinite-stack neighbor
         } // End of if actually inserted
       } // End of if live range overlaps
-    } // End of else collect intereferences for 1 node
-  } // End of while forever, scan back for intereferences
+    } // End of else collect interferences for 1 node
+  } // End of while forever, scan back for interferences
   return reg_degree;
 }
 
@@ -786,7 +786,7 @@
   if( rm_size == 0 ) return false;
 
   // Another early bail-out test is when we are double-coalescing and the
-  // 2 copies are seperated by some control flow.
+  // 2 copies are separated by some control flow.
   if( dst_copy != src_copy ) {
     Block *src_b = _phc._cfg._bbs[src_copy->_idx];
     Block *b2 = b;
--- a/src/share/vm/opto/compile.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/compile.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 @@
     }
   }
   // Lazily create intrinsics for intrinsic IDs well-known in the runtime.
-  if (m->intrinsic_id() != vmIntrinsics::_none) {
+  if (m->intrinsic_id() != vmIntrinsics::_none &&
+      m->intrinsic_id() <= vmIntrinsics::LAST_COMPILER_INLINE) {
     CallGenerator* cg = make_vm_intrinsic(m, is_virtual);
     if (cg != NULL) {
       // Save it for next time:
@@ -337,7 +338,7 @@
     tty->print_cr("*********************************************************");
   }
   if (env()->break_at_compile()) {
-    // Open the debugger when compiing this method.
+    // Open the debugger when compiling this method.
     tty->print("### Breaking when compiling: ");
     method()->print_short_name();
     tty->cr();
@@ -440,6 +441,8 @@
                   _orig_pc_slot_offset_in_bytes(0),
                   _node_bundling_limit(0),
                   _node_bundling_base(NULL),
+                  _java_calls(0),
+                  _inner_loops(0),
 #ifndef PRODUCT
                   _trace_opto_output(TraceOptoOutput || method()->has_option("TraceOptoOutput")),
                   _printer(IdealGraphPrinter::printer()),
@@ -710,6 +713,8 @@
     _code_buffer("Compile::Fill_buffer"),
     _node_bundling_limit(0),
     _node_bundling_base(NULL),
+    _java_calls(0),
+    _inner_loops(0),
 #ifndef PRODUCT
     _trace_opto_output(TraceOptoOutput),
     _printer(NULL),
@@ -1191,8 +1196,8 @@
     default: ShouldNotReachHere();
     }
     break;
-  case 2:                       // No collasping at level 2; keep all splits
-  case 3:                       // No collasping at level 3; keep all splits
+  case 2:                       // No collapsing at level 2; keep all splits
+  case 3:                       // No collapsing at level 3; keep all splits
     break;
   default:
     Unimplemented();
@@ -1850,22 +1855,26 @@
   int  _float_count;            // count float ops requiring 24-bit precision
   int  _double_count;           // count double ops requiring more precision
   int  _java_call_count;        // count non-inlined 'java' calls
+  int  _inner_loop_count;       // count loops which need alignment
   VectorSet _visited;           // Visitation flags
   Node_List _tests;             // Set of IfNodes & PCTableNodes
 
   Final_Reshape_Counts() :
-    _call_count(0), _float_count(0), _double_count(0), _java_call_count(0),
+    _call_count(0), _float_count(0), _double_count(0),
+    _java_call_count(0), _inner_loop_count(0),
     _visited( Thread::current()->resource_area() ) { }
 
   void inc_call_count  () { _call_count  ++; }
   void inc_float_count () { _float_count ++; }
   void inc_double_count() { _double_count++; }
   void inc_java_call_count() { _java_call_count++; }
+  void inc_inner_loop_count() { _inner_loop_count++; }
 
   int  get_call_count  () const { return _call_count  ; }
   int  get_float_count () const { return _float_count ; }
   int  get_double_count() const { return _double_count; }
   int  get_java_call_count() const { return _java_call_count; }
+  int  get_inner_loop_count() const { return _inner_loop_count; }
 };
 
 static bool oop_offset_is_sane(const TypeInstPtr* tp) {
@@ -1877,7 +1886,7 @@
 
 //------------------------------final_graph_reshaping_impl----------------------
 // Implement items 1-5 from final_graph_reshaping below.
-static void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &fpu ) {
+static void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc ) {
 
   if ( n->outcnt() == 0 ) return; // dead node
   uint nop = n->Opcode();
@@ -1919,13 +1928,13 @@
   case Op_CmpF:
   case Op_CmpF3:
   // case Op_ConvL2F: // longs are split into 32-bit halves
-    fpu.inc_float_count();
+    frc.inc_float_count();
     break;
 
   case Op_ConvF2D:
   case Op_ConvD2F:
-    fpu.inc_float_count();
-    fpu.inc_double_count();
+    frc.inc_float_count();
+    frc.inc_double_count();
     break;
 
   // Count all double operations that may use FPU
@@ -1942,7 +1951,7 @@
   case Op_ConD:
   case Op_CmpD:
   case Op_CmpD3:
-    fpu.inc_double_count();
+    frc.inc_double_count();
     break;
   case Op_Opaque1:              // Remove Opaque Nodes before matching
   case Op_Opaque2:              // Remove Opaque Nodes before matching
@@ -1951,7 +1960,7 @@
   case Op_CallStaticJava:
   case Op_CallJava:
   case Op_CallDynamicJava:
-    fpu.inc_java_call_count(); // Count java call site;
+    frc.inc_java_call_count(); // Count java call site;
   case Op_CallRuntime:
   case Op_CallLeaf:
   case Op_CallLeafNoFP: {
@@ -1962,7 +1971,7 @@
     // uncommon_trap, _complete_monitor_locking, _complete_monitor_unlocking,
     // _new_Java, _new_typeArray, _new_objArray, _rethrow_Java, ...
     if( !call->is_CallStaticJava() || !call->as_CallStaticJava()->_name ) {
-      fpu.inc_call_count();   // Count the call site
+      frc.inc_call_count();   // Count the call site
     } else {                  // See if uncommon argument is shared
       Node *n = call->in(TypeFunc::Parms);
       int nop = n->Opcode();
@@ -1983,11 +1992,11 @@
   case Op_StoreD:
   case Op_LoadD:
   case Op_LoadD_unaligned:
-    fpu.inc_double_count();
+    frc.inc_double_count();
     goto handle_mem;
   case Op_StoreF:
   case Op_LoadF:
-    fpu.inc_float_count();
+    frc.inc_float_count();
     goto handle_mem;
 
   case Op_StoreB:
@@ -2005,8 +2014,10 @@
   case Op_StoreP:
   case Op_StoreN:
   case Op_LoadB:
-  case Op_LoadC:
+  case Op_LoadUB:
+  case Op_LoadUS:
   case Op_LoadI:
+  case Op_LoadUI2L:
   case Op_LoadKlass:
   case Op_LoadNKlass:
   case Op_LoadL:
@@ -2079,7 +2090,7 @@
 
 #ifdef _LP64
   case Op_CastPP:
-    if (n->in(1)->is_DecodeN() && UseImplicitNullCheckForNarrowOop) {
+    if (n->in(1)->is_DecodeN() && Universe::narrow_oop_use_implicit_null_checks()) {
       Compile* C = Compile::current();
       Node* in1 = n->in(1);
       const Type* t = n->bottom_type();
@@ -2102,7 +2113,7 @@
         // [base_reg + offset]
         // NullCheck base_reg
         //
-        // Pin the new DecodeN node to non-null path on these patforms (Sparc)
+        // Pin the new DecodeN node to non-null path on these platform (Sparc)
         // to keep the information to which NULL check the new DecodeN node
         // corresponds to use it as value in implicit_null_check().
         //
@@ -2134,7 +2145,7 @@
         new_in2 = in2->in(1);
       } else if (in2->Opcode() == Op_ConP) {
         const Type* t = in2->bottom_type();
-        if (t == TypePtr::NULL_PTR && UseImplicitNullCheckForNarrowOop) {
+        if (t == TypePtr::NULL_PTR && Universe::narrow_oop_use_implicit_null_checks()) {
           new_in2 = ConNode::make(C, TypeNarrowOop::NULL_PTR);
           //
           // This transformation together with CastPP transformation above
@@ -2322,6 +2333,12 @@
       n->subsume_by(btp);
     }
     break;
+  case Op_Loop:
+  case Op_CountedLoop:
+    if (n->as_Loop()->is_inner_loop()) {
+      frc.inc_inner_loop_count();
+    }
+    break;
   default:
     assert( !n->is_Call(), "" );
     assert( !n->is_Mem(), "" );
@@ -2330,17 +2347,17 @@
 
   // Collect CFG split points
   if (n->is_MultiBranch())
-    fpu._tests.push(n);
+    frc._tests.push(n);
 }
 
 //------------------------------final_graph_reshaping_walk---------------------
 // Replacing Opaque nodes with their input in final_graph_reshaping_impl(),
 // requires that the walk visits a node's inputs before visiting the node.
-static void final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &fpu ) {
+static void final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &frc ) {
   ResourceArea *area = Thread::current()->resource_area();
   Unique_Node_List sfpt(area);
 
-  fpu._visited.set(root->_idx); // first, mark node as visited
+  frc._visited.set(root->_idx); // first, mark node as visited
   uint cnt = root->req();
   Node *n = root;
   uint  i = 0;
@@ -2349,7 +2366,7 @@
       // Place all non-visited non-null inputs onto stack
       Node* m = n->in(i);
       ++i;
-      if (m != NULL && !fpu._visited.test_set(m->_idx)) {
+      if (m != NULL && !frc._visited.test_set(m->_idx)) {
         if (m->is_SafePoint() && m->as_SafePoint()->jvms() != NULL)
           sfpt.push(m);
         cnt = m->req();
@@ -2359,7 +2376,7 @@
       }
     } else {
       // Now do post-visit work
-      final_graph_reshaping_impl( n, fpu );
+      final_graph_reshaping_impl( n, frc );
       if (nstack.is_empty())
         break;             // finished
       n = nstack.node();   // Get node from stack
@@ -2440,16 +2457,16 @@
     return true;
   }
 
-  Final_Reshape_Counts fpu;
+  Final_Reshape_Counts frc;
 
   // Visit everybody reachable!
   // Allocate stack of size C->unique()/2 to avoid frequent realloc
   Node_Stack nstack(unique() >> 1);
-  final_graph_reshaping_walk(nstack, root(), fpu);
+  final_graph_reshaping_walk(nstack, root(), frc);
 
   // Check for unreachable (from below) code (i.e., infinite loops).
-  for( uint i = 0; i < fpu._tests.size(); i++ ) {
-    MultiBranchNode *n = fpu._tests[i]->as_MultiBranch();
+  for( uint i = 0; i < frc._tests.size(); i++ ) {
+    MultiBranchNode *n = frc._tests[i]->as_MultiBranch();
     // Get number of CFG targets.
     // Note that PCTables include exception targets after calls.
     uint required_outcnt = n->required_outcnt();
@@ -2495,7 +2512,7 @@
     // Check that I actually visited all kids.  Unreached kids
     // must be infinite loops.
     for (DUIterator_Fast jmax, j = n->fast_outs(jmax); j < jmax; j++)
-      if (!fpu._visited.test(n->fast_out(j)->_idx)) {
+      if (!frc._visited.test(n->fast_out(j)->_idx)) {
         record_method_not_compilable("infinite loop");
         return true;            // Found unvisited kid; must be unreach
       }
@@ -2504,13 +2521,14 @@
   // If original bytecodes contained a mixture of floats and doubles
   // check if the optimizer has made it homogenous, item (3).
   if( Use24BitFPMode && Use24BitFP &&
-      fpu.get_float_count() > 32 &&
-      fpu.get_double_count() == 0 &&
-      (10 * fpu.get_call_count() < fpu.get_float_count()) ) {
+      frc.get_float_count() > 32 &&
+      frc.get_double_count() == 0 &&
+      (10 * frc.get_call_count() < frc.get_float_count()) ) {
     set_24_bit_selection_and_mode( false,  true );
   }
 
-  set_has_java_calls(fpu.get_java_call_count() > 0);
+  set_java_calls(frc.get_java_call_count());
+  set_inner_loops(frc.get_inner_loop_count());
 
   // No infinite loops, no reason to bail out.
   return false;
--- a/src/share/vm/opto/compile.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/compile.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -223,7 +223,8 @@
   PhaseCFG*             _cfg;                   // Results of CFG finding
   bool                  _select_24_bit_instr;   // We selected an instruction with a 24-bit result
   bool                  _in_24_bit_fp_mode;     // We are emitting instructions with 24-bit results
-  bool                  _has_java_calls;        // True if the method has java calls
+  int                   _java_calls;            // Number of java calls in the method
+  int                   _inner_loops;           // Number of inner loops in the method
   Matcher*              _matcher;               // Engine to map ideal to machine instructions
   PhaseRegAlloc*        _regalloc;              // Results of register allocation.
   int                   _frame_slots;           // Size of total frame in stack slots
@@ -505,7 +506,9 @@
   PhaseCFG*         cfg()                       { return _cfg; }
   bool              select_24_bit_instr() const { return _select_24_bit_instr; }
   bool              in_24_bit_fp_mode() const   { return _in_24_bit_fp_mode; }
-  bool              has_java_calls() const      { return _has_java_calls; }
+  bool              has_java_calls() const      { return _java_calls > 0; }
+  int               java_calls() const          { return _java_calls; }
+  int               inner_loops() const         { return _inner_loops; }
   Matcher*          matcher()                   { return _matcher; }
   PhaseRegAlloc*    regalloc()                  { return _regalloc; }
   int               frame_slots() const         { return _frame_slots; }
@@ -532,7 +535,8 @@
     _in_24_bit_fp_mode   = mode;
   }
 
-  void set_has_java_calls(bool z) { _has_java_calls = z; }
+  void  set_java_calls(int z) { _java_calls  = z; }
+  void set_inner_loops(int z) { _inner_loops = z; }
 
   // Instruction bits passed off to the VM
   int               code_size()                 { return _method_size; }
--- a/src/share/vm/opto/connode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/connode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -71,7 +71,7 @@
 to figure out which test post-dominates.  The real problem is that it doesn't
 matter which one you pick.  After you pick up, the dominating-test elider in
 IGVN can remove the test and allow you to hoist up to the dominating test on
-the choosen oop bypassing the test on the not-choosen oop.  Seen in testing.
+the chosen oop bypassing the test on the not-chosen oop.  Seen in testing.
 Oops.
 
 (3) Leave the CastPP's in.  This makes the graph more accurate in some sense;
@@ -128,6 +128,10 @@
       // Swapped Cmp is OK
       (phase->eqv(cmp->in(2),f) &&
        phase->eqv(cmp->in(1),t)) ) {
+    // Give up this identity check for floating points because it may choose incorrect
+    // value around 0.0 and -0.0
+    if ( cmp->Opcode()==Op_CmpF || cmp->Opcode()==Op_CmpD )
+      return NULL;
     // Check for "(t==f)?t:f;" and replace with "f"
     if( b->_test._test == BoolTest::eq )
       return f;
@@ -433,7 +437,7 @@
 // If not converting int->oop, throw away cast after constant propagation
 Node *CastPPNode::Ideal_DU_postCCP( PhaseCCP *ccp ) {
   const Type *t = ccp->type(in(1));
-  if (!t->isa_oop_ptr() || in(1)->is_DecodeN()) {
+  if (!t->isa_oop_ptr() || (in(1)->is_DecodeN() && Universe::narrow_oop_use_implicit_null_checks())) {
     return NULL; // do not transform raw pointers or narrow oops
   }
   return ConstraintCastNode::Ideal_DU_postCCP(ccp);
@@ -1251,3 +1255,93 @@
   v.set_jdouble(td->getd());
   return TypeLong::make( v.get_jlong() );
 }
+
+//------------------------------Value------------------------------------------
+const Type* CountLeadingZerosINode::Value(PhaseTransform* phase) const {
+  const Type* t = phase->type(in(1));
+  if (t == Type::TOP) return Type::TOP;
+  const TypeInt* ti = t->isa_int();
+  if (ti && ti->is_con()) {
+    jint i = ti->get_con();
+    // HD, Figure 5-6
+    if (i == 0)
+      return TypeInt::make(BitsPerInt);
+    int n = 1;
+    unsigned int x = i;
+    if (x >> 16 == 0) { n += 16; x <<= 16; }
+    if (x >> 24 == 0) { n +=  8; x <<=  8; }
+    if (x >> 28 == 0) { n +=  4; x <<=  4; }
+    if (x >> 30 == 0) { n +=  2; x <<=  2; }
+    n -= x >> 31;
+    return TypeInt::make(n);
+  }
+  return TypeInt::INT;
+}
+
+//------------------------------Value------------------------------------------
+const Type* CountLeadingZerosLNode::Value(PhaseTransform* phase) const {
+  const Type* t = phase->type(in(1));
+  if (t == Type::TOP) return Type::TOP;
+  const TypeLong* tl = t->isa_long();
+  if (tl && tl->is_con()) {
+    jlong l = tl->get_con();
+    // HD, Figure 5-6
+    if (l == 0)
+      return TypeInt::make(BitsPerLong);
+    int n = 1;
+    unsigned int x = (((julong) l) >> 32);
+    if (x == 0) { n += 32; x = (int) l; }
+    if (x >> 16 == 0) { n += 16; x <<= 16; }
+    if (x >> 24 == 0) { n +=  8; x <<=  8; }
+    if (x >> 28 == 0) { n +=  4; x <<=  4; }
+    if (x >> 30 == 0) { n +=  2; x <<=  2; }
+    n -= x >> 31;
+    return TypeInt::make(n);
+  }
+  return TypeInt::INT;
+}
+
+//------------------------------Value------------------------------------------
+const Type* CountTrailingZerosINode::Value(PhaseTransform* phase) const {
+  const Type* t = phase->type(in(1));
+  if (t == Type::TOP) return Type::TOP;
+  const TypeInt* ti = t->isa_int();
+  if (ti && ti->is_con()) {
+    jint i = ti->get_con();
+    // HD, Figure 5-14
+    int y;
+    if (i == 0)
+      return TypeInt::make(BitsPerInt);
+    int n = 31;
+    y = i << 16; if (y != 0) { n = n - 16; i = y; }
+    y = i <<  8; if (y != 0) { n = n -  8; i = y; }
+    y = i <<  4; if (y != 0) { n = n -  4; i = y; }
+    y = i <<  2; if (y != 0) { n = n -  2; i = y; }
+    y = i <<  1; if (y != 0) { n = n -  1; }
+    return TypeInt::make(n);
+  }
+  return TypeInt::INT;
+}
+
+//------------------------------Value------------------------------------------
+const Type* CountTrailingZerosLNode::Value(PhaseTransform* phase) const {
+  const Type* t = phase->type(in(1));
+  if (t == Type::TOP) return Type::TOP;
+  const TypeLong* tl = t->isa_long();
+  if (tl && tl->is_con()) {
+    jlong l = tl->get_con();
+    // HD, Figure 5-14
+    int x, y;
+    if (l == 0)
+      return TypeInt::make(BitsPerLong);
+    int n = 63;
+    y = (int) l; if (y != 0) { n = n - 32; x = y; } else x = (((julong) l) >> 32);
+    y = x << 16; if (y != 0) { n = n - 16; x = y; }
+    y = x <<  8; if (y != 0) { n = n -  8; x = y; }
+    y = x <<  4; if (y != 0) { n = n -  4; x = y; }
+    y = x <<  2; if (y != 0) { n = n -  2; x = y; }
+    y = x <<  1; if (y != 0) { n = n -  1; }
+    return TypeInt::make(n);
+  }
+  return TypeInt::INT;
+}
--- a/src/share/vm/opto/connode.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/connode.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -635,3 +635,63 @@
   virtual uint ideal_reg() const { return Op_RegL; }
   virtual const Type* Value( PhaseTransform *phase ) const;
 };
+
+//---------- CountBitsNode -----------------------------------------------------
+class CountBitsNode : public Node {
+public:
+  CountBitsNode(Node* in1) : Node(0, in1) {}
+  const Type* bottom_type() const { return TypeInt::INT; }
+  virtual uint ideal_reg() const { return Op_RegI; }
+};
+
+//---------- CountLeadingZerosINode --------------------------------------------
+// Count leading zeros (0-bit count starting from MSB) of an integer.
+class CountLeadingZerosINode : public CountBitsNode {
+public:
+  CountLeadingZerosINode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+  virtual const Type* Value(PhaseTransform* phase) const;
+};
+
+//---------- CountLeadingZerosLNode --------------------------------------------
+// Count leading zeros (0-bit count starting from MSB) of a long.
+class CountLeadingZerosLNode : public CountBitsNode {
+public:
+  CountLeadingZerosLNode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+  virtual const Type* Value(PhaseTransform* phase) const;
+};
+
+//---------- CountTrailingZerosINode -------------------------------------------
+// Count trailing zeros (0-bit count starting from LSB) of an integer.
+class CountTrailingZerosINode : public CountBitsNode {
+public:
+  CountTrailingZerosINode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+  virtual const Type* Value(PhaseTransform* phase) const;
+};
+
+//---------- CountTrailingZerosLNode -------------------------------------------
+// Count trailing zeros (0-bit count starting from LSB) of a long.
+class CountTrailingZerosLNode : public CountBitsNode {
+public:
+  CountTrailingZerosLNode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+  virtual const Type* Value(PhaseTransform* phase) const;
+};
+
+//---------- PopCountINode -----------------------------------------------------
+// Population count (bit count) of an integer.
+class PopCountINode : public CountBitsNode {
+public:
+  PopCountINode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+};
+
+//---------- PopCountLNode -----------------------------------------------------
+// Population count (bit count) of a long.
+class PopCountLNode : public CountBitsNode {
+public:
+  PopCountLNode(Node* in1) : CountBitsNode(in1) {}
+  virtual int Opcode() const;
+};
--- a/src/share/vm/opto/divnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/divnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // by constant into a multiply/shift/add series. Return false if calculations
 // fail.
 //
-// Borrowed almost verbatum from Hacker's Delight by Henry S. Warren, Jr. with
+// Borrowed almost verbatim from Hacker's Delight by Henry S. Warren, Jr. with
 // minor type name and parameter changes.
 static bool magic_int_divide_constants(jint d, jint &M, jint &s) {
   int32_t p;
@@ -202,7 +202,7 @@
 // by constant into a multiply/shift/add series. Return false if calculations
 // fail.
 //
-// Borrowed almost verbatum from Hacker's Delight by Henry S. Warren, Jr. with
+// Borrowed almost verbatim from Hacker's Delight by Henry S. Warren, Jr. with
 // minor type name and parameter changes.  Adjusted to 64 bit word width.
 static bool magic_long_divide_constants(jlong d, jlong &M, jint &s) {
   int64_t p;
@@ -244,42 +244,75 @@
 
 //---------------------long_by_long_mulhi--------------------------------------
 // Generate ideal node graph for upper half of a 64 bit x 64 bit multiplication
-static Node *long_by_long_mulhi( PhaseGVN *phase, Node *dividend, jlong magic_const) {
+static Node* long_by_long_mulhi(PhaseGVN* phase, Node* dividend, jlong magic_const) {
   // If the architecture supports a 64x64 mulhi, there is
   // no need to synthesize it in ideal nodes.
   if (Matcher::has_match_rule(Op_MulHiL)) {
-    Node *v = phase->longcon(magic_const);
+    Node* v = phase->longcon(magic_const);
     return new (phase->C, 3) MulHiLNode(dividend, v);
   }
 
+  // Taken from Hacker's Delight, Fig. 8-2. Multiply high signed.
+  // (http://www.hackersdelight.org/HDcode/mulhs.c)
+  //
+  // int mulhs(int u, int v) {
+  //    unsigned u0, v0, w0;
+  //    int u1, v1, w1, w2, t;
+  //
+  //    u0 = u & 0xFFFF;  u1 = u >> 16;
+  //    v0 = v & 0xFFFF;  v1 = v >> 16;
+  //    w0 = u0*v0;
+  //    t  = u1*v0 + (w0 >> 16);
+  //    w1 = t & 0xFFFF;
+  //    w2 = t >> 16;
+  //    w1 = u0*v1 + w1;
+  //    return u1*v1 + w2 + (w1 >> 16);
+  // }
+  //
+  // Note: The version above is for 32x32 multiplications, while the
+  // following inline comments are adapted to 64x64.
+
   const int N = 64;
 
-  Node *u_hi = phase->transform(new (phase->C, 3) RShiftLNode(dividend, phase->intcon(N / 2)));
-  Node *u_lo = phase->transform(new (phase->C, 3) AndLNode(dividend, phase->longcon(0xFFFFFFFF)));
+  // u0 = u & 0xFFFFFFFF;  u1 = u >> 32;
+  Node* u0 = phase->transform(new (phase->C, 3) AndLNode(dividend, phase->longcon(0xFFFFFFFF)));
+  Node* u1 = phase->transform(new (phase->C, 3) RShiftLNode(dividend, phase->intcon(N / 2)));
+
+  // v0 = v & 0xFFFFFFFF;  v1 = v >> 32;
+  Node* v0 = phase->longcon(magic_const & 0xFFFFFFFF);
+  Node* v1 = phase->longcon(magic_const >> (N / 2));
 
-  Node *v_hi = phase->longcon(magic_const >> N/2);
-  Node *v_lo = phase->longcon(magic_const & 0XFFFFFFFF);
+  // w0 = u0*v0;
+  Node* w0 = phase->transform(new (phase->C, 3) MulLNode(u0, v0));
 
-  Node *hihi_product = phase->transform(new (phase->C, 3) MulLNode(u_hi, v_hi));
-  Node *hilo_product = phase->transform(new (phase->C, 3) MulLNode(u_hi, v_lo));
-  Node *lohi_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_hi));
-  Node *lolo_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_lo));
+  // t = u1*v0 + (w0 >> 32);
+  Node* u1v0 = phase->transform(new (phase->C, 3) MulLNode(u1, v0));
+  Node* temp = phase->transform(new (phase->C, 3) URShiftLNode(w0, phase->intcon(N / 2)));
+  Node* t    = phase->transform(new (phase->C, 3) AddLNode(u1v0, temp));
+
+  // w1 = t & 0xFFFFFFFF;
+  Node* w1 = new (phase->C, 3) AndLNode(t, phase->longcon(0xFFFFFFFF));
 
-  Node *t1 = phase->transform(new (phase->C, 3) URShiftLNode(lolo_product, phase->intcon(N / 2)));
-  Node *t2 = phase->transform(new (phase->C, 3) AddLNode(hilo_product, t1));
+  // w2 = t >> 32;
+  Node* w2 = new (phase->C, 3) RShiftLNode(t, phase->intcon(N / 2));
+
+  // 6732154: Construct both w1 and w2 before transforming, so t
+  // doesn't go dead prematurely.
+  // 6837011: We need to transform w2 before w1 because the
+  // transformation of w1 could return t.
+  w2 = phase->transform(w2);
+  w1 = phase->transform(w1);
 
-  // Construct both t3 and t4 before transforming so t2 doesn't go dead
-  // prematurely.
-  Node *t3 = new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2));
-  Node *t4 = new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF));
-  t3 = phase->transform(t3);
-  t4 = phase->transform(t4);
+  // w1 = u0*v1 + w1;
+  Node* u0v1 = phase->transform(new (phase->C, 3) MulLNode(u0, v1));
+  w1         = phase->transform(new (phase->C, 3) AddLNode(u0v1, w1));
 
-  Node *t5 = phase->transform(new (phase->C, 3) AddLNode(t4, lohi_product));
-  Node *t6 = phase->transform(new (phase->C, 3) RShiftLNode(t5, phase->intcon(N / 2)));
-  Node *t7 = phase->transform(new (phase->C, 3) AddLNode(t3, hihi_product));
+  // return u1*v1 + w2 + (w1 >> 32);
+  Node* u1v1  = phase->transform(new (phase->C, 3) MulLNode(u1, v1));
+  Node* temp1 = phase->transform(new (phase->C, 3) AddLNode(u1v1, w2));
+  Node* temp2 = phase->transform(new (phase->C, 3) RShiftLNode(w1, phase->intcon(N / 2)));
 
-  return new (phase->C, 3) AddLNode(t7, t6);
+  return new (phase->C, 3) AddLNode(temp1, temp2);
 }
 
 
@@ -976,7 +1009,7 @@
 
   // Expand mod
   if( con >= 0 && con < max_jlong && is_power_of_2_long(con+1) ) {
-    uint k = log2_long(con);       // Extract k
+    uint k = exact_log2_long(con+1);  // Extract k
 
     // Basic algorithm by David Detlefs.  See fastmod_long.java for gory details.
     // Used to help a popular random number generator which does a long-mod
@@ -1038,7 +1071,7 @@
 
   int log2_con = -1;
 
-  // If this is a power of two, they maybe we can mask it
+  // If this is a power of two, then maybe we can mask it
   if( is_power_of_2_long(pos_con) ) {
     log2_con = log2_long(pos_con);
 
--- a/src/share/vm/opto/doCall.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/doCall.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -47,7 +47,7 @@
   CallGenerator* cg;
 
   // Dtrace currently doesn't work unless all calls are vanilla
-  if (DTraceMethodProbes) {
+  if (env()->dtrace_method_probes()) {
     allow_inline = false;
   }
 
@@ -248,6 +248,14 @@
                   holder_klass);
     return true;
   }
+  if (dest_method->is_method_handle_invoke()
+      && holder_klass->name() == ciSymbol::java_dyn_Dynamic()) {
+    // FIXME: NYI
+    uncommon_trap(Deoptimization::Reason_unhandled,
+                  Deoptimization::Action_none,
+                  holder_klass);
+    return true;
+  }
 
   assert(dest_method->will_link(method()->holder(), klass, bc()), "dest_method: typeflow responsibility");
   return false;
@@ -748,6 +756,7 @@
       case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_inlined_calls_addr()); break;
       case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break;
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break;
       default: fatal("unexpected call bytecode");
       }
@@ -756,6 +765,7 @@
       case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_normal_calls_addr()); break;
       case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break;
       case Bytecodes::_invokestatic:
+      case Bytecodes::_invokedynamic:
       case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_static_calls_addr()); break;
       default: fatal("unexpected call bytecode");
       }
--- a/src/share/vm/opto/domgraph.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/domgraph.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -183,7 +183,7 @@
       if (pre_order == 1)
         t->_parent = NULL;          // first block doesn't have parent
       else {
-        // Save parent (currernt top block on stack) in DFS
+        // Save parent (current top block on stack) in DFS
         t->_parent = &_tarjan[_stack_top->block->_pre_order];
       }
       // Now put this block on stack
--- a/src/share/vm/opto/escape.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/escape.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -515,7 +515,7 @@
   // cause the failure in add_offset() with narrow oops since TypeOopPtr()
   // constructor verifies correctness of the offset.
   //
-  // It could happend on subclass's branch (from the type profiling
+  // It could happened on subclass's branch (from the type profiling
   // inlining) which was not eliminated during parsing since the exactness
   // of the allocation type was not propagated to the subclass type check.
   //
@@ -578,11 +578,24 @@
   if (phi_alias_idx == alias_idx) {
     return orig_phi;
   }
-  // have we already created a Phi for this alias index?
+  // Have we recently created a Phi for this alias index?
   PhiNode *result = get_map_phi(orig_phi->_idx);
   if (result != NULL && C->get_alias_index(result->adr_type()) == alias_idx) {
     return result;
   }
+  // Previous check may fail when the same wide memory Phi was split into Phis
+  // for different memory slices. Search all Phis for this region.
+  if (result != NULL) {
+    Node* region = orig_phi->in(0);
+    for (DUIterator_Fast imax, i = region->fast_outs(imax); i < imax; i++) {
+      Node* phi = region->fast_out(i);
+      if (phi->is_Phi() &&
+          C->get_alias_index(phi->as_Phi()->adr_type()) == alias_idx) {
+        assert(phi->_idx >= nodes_size(), "only new Phi per instance memory slice");
+        return phi->as_Phi();
+      }
+    }
+  }
   if ((int)C->unique() + 2*NodeLimitFudgeFactor > MaxNodeLimit) {
     if (C->do_escape_analysis() == true && !C->failing()) {
       // Retry compilation without escape analysis.
@@ -595,6 +608,7 @@
   orig_phi_worklist.append_if_missing(orig_phi);
   const TypePtr *atype = C->get_adr_type(alias_idx);
   result = PhiNode::make(orig_phi->in(0), NULL, Type::MEMORY, atype);
+  C->copy_node_notes_to(result, orig_phi);
   set_map_phi(orig_phi->_idx, result);
   igvn->set_type(result, result->bottom_type());
   record_for_optimizer(result);
@@ -703,7 +717,7 @@
   while (prev != result) {
     prev = result;
     if (result == start_mem)
-      break;  // hit one of our sentinals
+      break;  // hit one of our sentinels
     if (result->is_Mem()) {
       const Type *at = phase->type(result->in(MemNode::Address));
       if (at != Type::TOP) {
@@ -720,7 +734,7 @@
     if (result->is_Proj() && result->as_Proj()->_con == TypeFunc::Memory) {
       Node *proj_in = result->in(0);
       if (proj_in->is_Allocate() && proj_in->_idx == (uint)tinst->instance_id()) {
-        break;  // hit one of our sentinals
+        break;  // hit one of our sentinels
       } else if (proj_in->is_Call()) {
         CallNode *call = proj_in->as_Call();
         if (!call->may_modify(tinst, phase)) {
@@ -756,6 +770,16 @@
       } else {
         break;
       }
+    } else if (result->Opcode() == Op_SCMemProj) {
+      assert(result->in(0)->is_LoadStore(), "sanity");
+      const Type *at = phase->type(result->in(0)->in(MemNode::Address));
+      if (at != Type::TOP) {
+        assert (at->isa_ptr() != NULL, "pointer type required.");
+        int idx = C->get_alias_index(at->is_ptr());
+        assert(idx != alias_idx, "Object is not scalar replaceable if a LoadStore node access its field");
+        break;
+      }
+      result = result->in(0)->in(MemNode::Memory);
     }
   }
   if (result->is_Phi()) {
@@ -794,7 +818,7 @@
 //  Phase 2:  Process MemNode's from memnode_worklist. compute new address type and
 //            search the Memory chain for a store with the appropriate type
 //            address type.  If a Phi is found, create a new version with
-//            the approriate memory slices from each of the Phi inputs.
+//            the appropriate memory slices from each of the Phi inputs.
 //            For stores, process the users as follows:
 //               MemNode:  push on memnode_worklist
 //               MergeMem: push on mergemem_worklist
@@ -895,15 +919,22 @@
       // see if it is unescaped.
       if (es != PointsToNode::NoEscape || !ptn->_scalar_replaceable)
         continue;
-      if (alloc->is_Allocate()) {
-        // Set the scalar_replaceable flag before the next check.
-        alloc->as_Allocate()->_is_scalar_replaceable = true;
+
+      // Find CheckCastPP for the allocate or for the return value of a call
+      n = alloc->result_cast();
+      if (n == NULL) {            // No uses except Initialize node
+        if (alloc->is_Allocate()) {
+          // Set the scalar_replaceable flag for allocation
+          // so it could be eliminated if it has no uses.
+          alloc->as_Allocate()->_is_scalar_replaceable = true;
+        }
+        continue;
       }
-      // find CheckCastPP of call return value
-      n = alloc->result_cast();
-      if (n == NULL ||          // No uses accept Initialize or
-          !n->is_CheckCastPP()) // not unique CheckCastPP.
+      if (!n->is_CheckCastPP()) { // not unique CheckCastPP.
+        assert(!alloc->is_Allocate(), "allocation should have unique type");
         continue;
+      }
+
       // The inline code for Object.clone() casts the allocation result to
       // java.lang.Object and then to the actual type of the allocated
       // object. Detect this case and use the second cast.
@@ -924,9 +955,17 @@
         if (cast2 != NULL) {
           n = cast2;
         } else {
+          // Non-scalar replaceable if the allocation type is unknown statically
+          // (reflection allocation), the object can't be restored during
+          // deoptimization without precise type.
           continue;
         }
       }
+      if (alloc->is_Allocate()) {
+        // Set the scalar_replaceable flag for allocation
+        // so it could be eliminated.
+        alloc->as_Allocate()->_is_scalar_replaceable = true;
+      }
       set_escape_state(n->_idx, es);
       // in order for an object to be scalar-replaceable, it must be:
       //   - a direct allocation (not a call returning an object)
@@ -1548,7 +1587,7 @@
       has_non_escaping_obj = true; // Non GlobalEscape
     Node* n = ptn->_node;
     if (n->is_Allocate() && ptn->_scalar_replaceable ) {
-      // Push scalar replaceable alocations on alloc_worklist
+      // Push scalar replaceable allocations on alloc_worklist
       // for processing in split_unique_types().
       alloc_worklist.append(n);
     }
--- a/src/share/vm/opto/gcm.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/gcm.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,9 @@
 #include "incls/_precompiled.incl"
 #include "incls/_gcm.cpp.incl"
 
+// To avoid float value underflow
+#define MIN_BLOCK_FREQUENCY 1.e-35f
+
 //----------------------------schedule_node_into_block-------------------------
 // Insert node n into block b. Look for projections of n and make sure they
 // are in b also.
@@ -54,6 +57,37 @@
   }
 }
 
+//----------------------------replace_block_proj_ctrl-------------------------
+// Nodes that have is_block_proj() nodes as their control need to use
+// the appropriate Region for their actual block as their control since
+// the projection will be in a predecessor block.
+void PhaseCFG::replace_block_proj_ctrl( Node *n ) {
+  const Node *in0 = n->in(0);
+  assert(in0 != NULL, "Only control-dependent");
+  const Node *p = in0->is_block_proj();
+  if (p != NULL && p != n) {    // Control from a block projection?
+    assert(!n->pinned() || n->is_SafePointScalarObject(), "only SafePointScalarObject pinned node is expected here");
+    // Find trailing Region
+    Block *pb = _bbs[in0->_idx]; // Block-projection already has basic block
+    uint j = 0;
+    if (pb->_num_succs != 1) {  // More then 1 successor?
+      // Search for successor
+      uint max = pb->_nodes.size();
+      assert( max > 1, "" );
+      uint start = max - pb->_num_succs;
+      // Find which output path belongs to projection
+      for (j = start; j < max; j++) {
+        if( pb->_nodes[j] == in0 )
+          break;
+      }
+      assert( j < max, "must find" );
+      // Change control to match head of successor basic block
+      j -= start;
+    }
+    n->set_req(0, pb->_succs[j]->head());
+  }
+}
+
 
 //------------------------------schedule_pinned_nodes--------------------------
 // Set the basic block for Nodes pinned into blocks
@@ -65,8 +99,10 @@
     Node *n = spstack.pop();
     if( !visited.test_set(n->_idx) ) { // Test node and flag it as visited
       if( n->pinned() && !_bbs.lookup(n->_idx) ) {  // Pinned?  Nail it down!
+        assert( n->in(0), "pinned Node must have Control" );
+        // Before setting block replace block_proj control edge
+        replace_block_proj_ctrl(n);
         Node *input = n->in(0);
-        assert( input, "pinned Node must have Control" );
         while( !input->is_block_start() )
           input = input->in(0);
         Block *b = _bbs[input->_idx];  // Basic block of controlling input
@@ -155,34 +191,12 @@
       uint  i = nstack_top_i;
 
       if (i == 0) {
-        // Special control input processing.
-        // While I am here, go ahead and look for Nodes which are taking control
-        // from a is_block_proj Node.  After I inserted RegionNodes to make proper
-        // blocks, the control at a is_block_proj more properly comes from the
-        // Region being controlled by the block_proj Node.
+        // Fixup some control.  Constants without control get attached
+        // to root and nodes that use is_block_proj() nodes should be attached
+        // to the region that starts their block.
         const Node *in0 = n->in(0);
         if (in0 != NULL) {              // Control-dependent?
-          const Node *p = in0->is_block_proj();
-          if (p != NULL && p != n) {    // Control from a block projection?
-            // Find trailing Region
-            Block *pb = _bbs[in0->_idx]; // Block-projection already has basic block
-            uint j = 0;
-            if (pb->_num_succs != 1) {  // More then 1 successor?
-              // Search for successor
-              uint max = pb->_nodes.size();
-              assert( max > 1, "" );
-              uint start = max - pb->_num_succs;
-              // Find which output path belongs to projection
-              for (j = start; j < max; j++) {
-                if( pb->_nodes[j] == in0 )
-                  break;
-              }
-              assert( j < max, "must find" );
-              // Change control to match head of successor basic block
-              j -= start;
-            }
-            n->set_req(0, pb->_succs[j]->head());
-          }
+          replace_block_proj_ctrl(n);
         } else {               // n->in(0) == NULL
           if (n->req() == 1) { // This guy is a constant with NO inputs?
             n->set_req(0, _root);
@@ -223,6 +237,8 @@
         if (!n->pinned()) {
           // Set earliest legal block.
           _bbs.map(n->_idx, find_deepest_input(n, _bbs));
+        } else {
+          assert(_bbs[n->_idx] == _bbs[n->in(0)->_idx], "Pinned Node should be at the same block as its control edge");
         }
 
         if (nstack.is_empty()) {
@@ -422,6 +438,12 @@
 #endif
   assert(load_alias_idx || (load->is_Mach() && load->as_Mach()->ideal_Opcode() == Op_StrComp),
          "String compare is only known 'load' that does not conflict with any stores");
+  assert(load_alias_idx || (load->is_Mach() && load->as_Mach()->ideal_Opcode() == Op_StrEquals),
+         "String equals is a 'load' that does not conflict with any stores");
+  assert(load_alias_idx || (load->is_Mach() && load->as_Mach()->ideal_Opcode() == Op_StrIndexOf),
+         "String indexOf is a 'load' that does not conflict with any stores");
+  assert(load_alias_idx || (load->is_Mach() && load->as_Mach()->ideal_Opcode() == Op_AryEq),
+         "Arrays equals is a 'load' that do not conflict with any stores");
 
   if (!C->alias_type(load_alias_idx)->is_rewritable()) {
     // It is impossible to spoil this load by putting stores before it,
@@ -590,11 +612,14 @@
           if (pred_block != early) {
             // If any predecessor of the Phi matches the load's "early block",
             // we do not need a precedence edge between the Phi and 'load'
-            // since the load will be forced into a block preceeding the Phi.
+            // since the load will be forced into a block preceding the Phi.
             pred_block->set_raise_LCA_mark(load_index);
             assert(!LCA_orig->dominates(pred_block) ||
                    early->dominates(pred_block), "early is high enough");
             must_raise_LCA = true;
+          } else {
+            // anti-dependent upon PHI pinned below 'early', no edge needed
+            LCA = early;             // but can not schedule below 'early'
           }
         }
       }
@@ -1105,6 +1130,9 @@
         Node *def = self->in(1);
         if (def != NULL && def->bottom_type()->base() == Type::RawPtr) {
           early->add_inst(self);
+#ifdef ASSERT
+          _raw_oops.push(def);
+#endif
           continue;
         }
         break;
@@ -1358,6 +1386,9 @@
   _root_loop->_freq = 1.0;
   _root_loop->scale_freq();
 
+  // Save outmost loop frequency for LRG frequency threshold
+  _outer_loop_freq = _root_loop->outer_loop_freq();
+
   // force paths ending at uncommon traps to be infrequent
   if (!C->do_freq_based_layout()) {
     Block_List worklist;
@@ -1380,6 +1411,13 @@
     }
   }
 
+#ifdef ASSERT
+  for (uint i = 0; i < _num_blocks; i++ ) {
+    Block *b = _blocks[i];
+    assert(b->_freq >= MIN_BLOCK_FREQUENCY, "Register Allocator requires meaningful block frequency");
+  }
+#endif
+
 #ifndef PRODUCT
   if (PrintCFGBlockFreq) {
     tty->print_cr("CFG Block Frequencies");
@@ -1629,7 +1667,7 @@
       // successor blocks.
       assert(_num_succs == 2, "expecting 2 successors of a null check");
       // If either successor has only one predecessor, then the
-      // probabiltity estimate can be derived using the
+      // probability estimate can be derived using the
       // relative frequency of the successor and this block.
       if (_succs[i]->num_preds() == 2) {
         return _succs[i]->_freq / _freq;
@@ -1831,7 +1869,7 @@
 }
 
 //------------------------------update_succ_freq-------------------------------
-// Update the appropriate frequency associated with block 'b', a succesor of
+// Update the appropriate frequency associated with block 'b', a successor of
 // a block in this loop.
 void CFGLoop::update_succ_freq(Block* b, float freq) {
   if (b->_loop == this) {
@@ -1875,9 +1913,13 @@
 // Do a top down traversal of loop tree (visit outer loops first.)
 void CFGLoop::scale_freq() {
   float loop_freq = _freq * trip_count();
+  _freq = loop_freq;
   for (int i = 0; i < _members.length(); i++) {
     CFGElement* s = _members.at(i);
-    s->_freq *= loop_freq;
+    float block_freq = s->_freq * loop_freq;
+    if (g_isnan(block_freq) || block_freq < MIN_BLOCK_FREQUENCY)
+      block_freq = MIN_BLOCK_FREQUENCY;
+    s->_freq = block_freq;
   }
   CFGLoop* ch = _child;
   while (ch != NULL) {
@@ -1886,6 +1928,14 @@
   }
 }
 
+// Frequency of outer loop
+float CFGLoop::outer_loop_freq() const {
+  if (_child != NULL) {
+    return _child->_freq;
+  }
+  return _freq;
+}
+
 #ifndef PRODUCT
 //------------------------------dump_tree--------------------------------------
 void CFGLoop::dump_tree() const {
--- a/src/share/vm/opto/graphKit.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/graphKit.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -459,7 +459,7 @@
 void GraphKit::builtin_throw(Deoptimization::DeoptReason reason, Node* arg) {
   bool must_throw = true;
 
-  if (JvmtiExport::can_post_exceptions()) {
+  if (env()->jvmti_can_post_exceptions()) {
     // Do not try anything fancy if we're notifying the VM on every throw.
     // Cf. case Bytecodes::_athrow in parse2.cpp.
     uncommon_trap(reason, Deoptimization::Action_none,
@@ -769,7 +769,7 @@
     }
   }
 
-  if (JvmtiExport::can_examine_or_deopt_anywhere()) {
+  if (env()->jvmti_can_examine_or_deopt_anywhere()) {
     // At any safepoint, this method can get breakpointed, which would
     // then require an immediate deoptimization.
     full_info = true;
@@ -947,6 +947,7 @@
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokeinterface:
     {
       bool is_static = (depth == 0);
@@ -1148,7 +1149,7 @@
   Node   *tst = _gvn.transform( btst );
 
   //-----------
-  // if peephole optimizations occured, a prior test existed.
+  // if peephole optimizations occurred, a prior test existed.
   // If a prior test existed, maybe it dominates as we can avoid this test.
   if (tst != btst && type == T_OBJECT) {
     // At this point we want to scan up the CFG to see if we can
@@ -1196,7 +1197,7 @@
   // Consider using 'Reason_class_check' instead?
 
   // To cause an implicit null check, we set the not-null probability
-  // to the maximum (PROB_MAX).  For an explicit check the probablity
+  // to the maximum (PROB_MAX).  For an explicit check the probability
   // is set to a smaller value.
   if (null_control != NULL || too_many_traps(reason)) {
     // probability is less likely
@@ -1372,19 +1373,20 @@
   return st;
 }
 
+
 void GraphKit::pre_barrier(Node* ctl,
                            Node* obj,
                            Node* adr,
-                           uint adr_idx,
-                           Node *val,
-                           const Type* val_type,
+                           uint  adr_idx,
+                           Node* val,
+                           const TypeOopPtr* val_type,
                            BasicType bt) {
   BarrierSet* bs = Universe::heap()->barrier_set();
   set_control(ctl);
   switch (bs->kind()) {
     case BarrierSet::G1SATBCT:
     case BarrierSet::G1SATBCTLogging:
-        g1_write_barrier_pre(obj, adr, adr_idx, val, val_type, bt);
+      g1_write_barrier_pre(obj, adr, adr_idx, val, val_type, bt);
       break;
 
     case BarrierSet::CardTableModRef:
@@ -1403,8 +1405,8 @@
                             Node* store,
                             Node* obj,
                             Node* adr,
-                            uint adr_idx,
-                            Node *val,
+                            uint  adr_idx,
+                            Node* val,
                             BasicType bt,
                             bool use_precise) {
   BarrierSet* bs = Universe::heap()->barrier_set();
@@ -1412,7 +1414,7 @@
   switch (bs->kind()) {
     case BarrierSet::G1SATBCT:
     case BarrierSet::G1SATBCTLogging:
-        g1_write_barrier_post(store, obj, adr, adr_idx, val, bt, use_precise);
+      g1_write_barrier_post(store, obj, adr, adr_idx, val, bt, use_precise);
       break;
 
     case BarrierSet::CardTableModRef:
@@ -1430,49 +1432,55 @@
   }
 }
 
-Node* GraphKit::store_oop_to_object(Node* ctl,
-                                    Node* obj,
-                                    Node* adr,
-                                    const TypePtr* adr_type,
-                                    Node *val,
-                                    const Type* val_type,
-                                    BasicType bt) {
+Node* GraphKit::store_oop(Node* ctl,
+                          Node* obj,
+                          Node* adr,
+                          const TypePtr* adr_type,
+                          Node* val,
+                          const TypeOopPtr* val_type,
+                          BasicType bt,
+                          bool use_precise) {
+
+  set_control(ctl);
+  if (stopped()) return top(); // Dead path ?
+
+  assert(bt == T_OBJECT, "sanity");
+  assert(val != NULL, "not dead path");
   uint adr_idx = C->get_alias_index(adr_type);
-  Node* store;
-  pre_barrier(ctl, obj, adr, adr_idx, val, val_type, bt);
-  store = store_to_memory(control(), adr, val, bt, adr_idx);
-  post_barrier(control(), store, obj, adr, adr_idx, val, bt, false);
+  assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory" );
+
+  pre_barrier(control(), obj, adr, adr_idx, val, val_type, bt);
+  Node* store = store_to_memory(control(), adr, val, bt, adr_idx);
+  post_barrier(control(), store, obj, adr, adr_idx, val, bt, use_precise);
   return store;
 }
 
-Node* GraphKit::store_oop_to_array(Node* ctl,
-                                   Node* obj,
-                                   Node* adr,
-                                   const TypePtr* adr_type,
-                                   Node *val,
-                                   const Type* val_type,
-                                   BasicType bt) {
-  uint adr_idx = C->get_alias_index(adr_type);
-  Node* store;
-  pre_barrier(ctl, obj, adr, adr_idx, val, val_type, bt);
-  store = store_to_memory(control(), adr, val, bt, adr_idx);
-  post_barrier(control(), store, obj, adr, adr_idx, val, bt, true);
-  return store;
-}
-
+// Could be an array or object we don't know at compile time (unsafe ref.)
 Node* GraphKit::store_oop_to_unknown(Node* ctl,
-                                     Node* obj,
-                                     Node* adr,
-                                     const TypePtr* adr_type,
-                                     Node *val,
-                                     const Type* val_type,
-                                     BasicType bt) {
-  uint adr_idx = C->get_alias_index(adr_type);
-  Node* store;
-  pre_barrier(ctl, obj, adr, adr_idx, val, val_type, bt);
-  store = store_to_memory(control(), adr, val, bt, adr_idx);
-  post_barrier(control(), store, obj, adr, adr_idx, val, bt, true);
-  return store;
+                             Node* obj,   // containing obj
+                             Node* adr,  // actual adress to store val at
+                             const TypePtr* adr_type,
+                             Node* val,
+                             BasicType bt) {
+  Compile::AliasType* at = C->alias_type(adr_type);
+  const TypeOopPtr* val_type = NULL;
+  if (adr_type->isa_instptr()) {
+    if (at->field() != NULL) {
+      // known field.  This code is a copy of the do_put_xxx logic.
+      ciField* field = at->field();
+      if (!field->type()->is_loaded()) {
+        val_type = TypeInstPtr::BOTTOM;
+      } else {
+        val_type = TypeOopPtr::make_from_klass(field->type()->as_klass());
+      }
+    }
+  } else if (adr_type->isa_aryptr()) {
+    val_type = adr_type->is_aryptr()->elem()->make_oopptr();
+  }
+  if (val_type == NULL) {
+    val_type = TypeInstPtr::BOTTOM;
+  }
+  return store_oop(ctl, obj, adr, adr_type, val, val_type, bt, true);
 }
 
 
@@ -1786,96 +1794,6 @@
 }
 
 
-//------------------------------store_barrier----------------------------------
-// Insert a write-barrier store.  This is to let generational GC work; we have
-// to flag all oop-stores before the next GC point.
-void GraphKit::write_barrier_post(Node* oop_store, Node* obj, Node* adr,
-                                  Node* val, bool use_precise) {
-  // No store check needed if we're storing a NULL or an old object
-  // (latter case is probably a string constant). The concurrent
-  // mark sweep garbage collector, however, needs to have all nonNull
-  // oop updates flagged via card-marks.
-  if (val != NULL && val->is_Con()) {
-    // must be either an oop or NULL
-    const Type* t = val->bottom_type();
-    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()
-      && obj == just_allocated_object(control())) {
-    // We can skip marks on a freshly-allocated object.
-    // Keep this code in sync with do_eager_card_mark in runtime.cpp.
-    // That routine eagerly marks the occasional object which is produced
-    // by the slow path, so that we don't have to do it here.
-    return;
-  }
-
-  if (!use_precise) {
-    // All card marks for a (non-array) instance are in one place:
-    adr = obj;
-  }
-  // (Else it's an array (or unknown), and we want more precise card marks.)
-  assert(adr != NULL, "");
-
-  // Get the alias_index for raw card-mark memory
-  int adr_type = Compile::AliasIdxRaw;
-  // Convert the pointer to an int prior to doing math on it
-  Node* cast = _gvn.transform(new (C, 2) CastP2XNode(control(), adr));
-  // Divide by card size
-  assert(Universe::heap()->barrier_set()->kind() == BarrierSet::CardTableModRef,
-         "Only one we handle so far.");
-  CardTableModRefBS* ct =
-    (CardTableModRefBS*)(Universe::heap()->barrier_set());
-  Node *b = _gvn.transform(new (C, 3) URShiftXNode( cast, _gvn.intcon(CardTableModRefBS::card_shift) ));
-  // We store into a byte array, so do not bother to left-shift by zero
-  // Get base of card map
-  assert(sizeof(*ct->byte_map_base) == sizeof(jbyte),
-         "adjust this code");
-  Node *c = makecon(TypeRawPtr::make((address)ct->byte_map_base));
-  // Combine
-  Node *sb_ctl = control();
-  Node *sb_adr = _gvn.transform(new (C, 4) AddPNode( top()/*no base ptr*/, c, b ));
-  Node *sb_val = _gvn.intcon(0);
-  // Smash zero into card
-  if( !UseConcMarkSweepGC ) {
-    BasicType bt = T_BYTE;
-    store_to_memory(sb_ctl, sb_adr, sb_val, bt, adr_type);
-  } else {
-    // Specialized path for CM store barrier
-    cms_card_mark( sb_ctl, sb_adr, sb_val, oop_store);
-  }
-}
-
-// Specialized path for CMS store barrier
-void GraphKit::cms_card_mark(Node* ctl, Node* adr, Node* val, Node *oop_store) {
-  BasicType bt = T_BYTE;
-  int adr_idx = Compile::AliasIdxRaw;
-  Node* mem = memory(adr_idx);
-
-  // The type input is NULL in PRODUCT builds
-  const TypePtr* type = NULL;
-  debug_only(type = C->get_adr_type(adr_idx));
-
-  // Add required edge to oop_store, optimizer does not support precedence edges.
-  // Convert required edge to precedence edge before allocation.
-  Node *store = _gvn.transform( new (C, 5) StoreCMNode(ctl, mem, adr, type, val, oop_store) );
-  set_memory(store, adr_idx);
-
-  // For CMS, back-to-back card-marks can only remove the first one
-  // and this requires DU info.  Push on worklist for optimizer.
-  if (mem->req() > MemNode::Address && adr == mem->in(MemNode::Address))
-    record_for_igvn(store);
-}
-
-
 void GraphKit::round_double_arguments(ciMethod* dest_method) {
   // (Note:  TypeFunc::make has a cache that makes this fast.)
   const TypeFunc* tf    = TypeFunc::make(dest_method);
@@ -2280,7 +2198,7 @@
   r_not_subtype->init_req(1, _gvn.transform( new (C, 1) IfTrueNode (iff2) ) );
   set_control(                _gvn.transform( new (C, 1) IfFalseNode(iff2) ) );
 
-  // Check for self.  Very rare to get here, but its taken 1/3 the time.
+  // Check for self.  Very rare to get here, but it is taken 1/3 the time.
   // No performance impact (too rare) but allows sharing of secondary arrays
   // which has some footprint reduction.
   Node *cmp3 = _gvn.transform( new (C, 3) CmpPNode( subklass, superklass ) );
@@ -2289,11 +2207,27 @@
   r_ok_subtype->init_req(2, _gvn.transform( new (C, 1) IfTrueNode ( iff3 ) ) );
   set_control(               _gvn.transform( new (C, 1) IfFalseNode( iff3 ) ) );
 
+  // -- Roads not taken here: --
+  // We could also have chosen to perform the self-check at the beginning
+  // of this code sequence, as the assembler does.  This would not pay off
+  // the same way, since the optimizer, unlike the assembler, can perform
+  // static type analysis to fold away many successful self-checks.
+  // Non-foldable self checks work better here in second position, because
+  // the initial primary superclass check subsumes a self-check for most
+  // types.  An exception would be a secondary type like array-of-interface,
+  // which does not appear in its own primary supertype display.
+  // Finally, we could have chosen to move the self-check into the
+  // PartialSubtypeCheckNode, and from there out-of-line in a platform
+  // dependent manner.  But it is worthwhile to have the check here,
+  // where it can be perhaps be optimized.  The cost in code space is
+  // small (register compare, branch).
+
   // Now do a linear scan of the secondary super-klass array.  Again, no real
   // performance impact (too rare) but it's gotta be done.
-  // (The stub also contains the self-check of subklass == superklass.
   // Since the code is rarely used, there is no penalty for moving it
-  // out of line, and it can only improve I-cache density.)
+  // out of line, and it can only improve I-cache density.
+  // The decision to inline or out-of-line this final check is platform
+  // dependent, and is found in the AD file definition of PartialSubtypeCheck.
   Node* psc = _gvn.transform(
     new (C, 3) PartialSubtypeCheckNode(control(), subklass, superklass) );
 
@@ -2945,16 +2879,10 @@
 
   // Now generate allocation code
 
-  // With escape analysis, the entire memory state is needed to be able to
-  // eliminate the allocation.  If the allocations cannot be eliminated, this
-  // will be optimized to the raw slice when the allocation is expanded.
-  Node *mem;
-  if (C->do_escape_analysis()) {
-    mem = reset_memory();
-    set_all_memory(mem);
-  } else {
-    mem = memory(Compile::AliasIdxRaw);
-  }
+  // The entire memory state is needed for slow path of the allocation
+  // since GC and deoptimization can happened.
+  Node *mem = reset_memory();
+  set_all_memory(mem); // Create new memory state
 
   AllocateNode* alloc
     = new (C, AllocateNode::ParmLimit)
@@ -2972,6 +2900,7 @@
 // See comments on new_instance for the meaning of the other arguments.
 Node* GraphKit::new_array(Node* klass_node,     // array klass (maybe variable)
                           Node* length,         // number of array elements
+                          int   nargs,          // number of arguments to push back for uncommon trap
                           bool raw_mem_only,    // affect only raw memory
                           Node* *return_size_val) {
   jint  layout_con = Klass::_lh_neutral_value;
@@ -2987,6 +2916,7 @@
     Node* cmp_lh = _gvn.transform( new(C, 3) CmpINode(layout_val, intcon(layout_con)) );
     Node* bol_lh = _gvn.transform( new(C, 2) BoolNode(cmp_lh, BoolTest::eq) );
     { BuildCutout unless(this, bol_lh, PROB_MAX);
+      _sp += nargs;
       uncommon_trap(Deoptimization::Reason_class_check,
                     Deoptimization::Action_maybe_recompile);
     }
@@ -3091,16 +3021,10 @@
 
   // Now generate allocation code
 
-  // With escape analysis, the entire memory state is needed to be able to
-  // eliminate the allocation.  If the allocations cannot be eliminated, this
-  // will be optimized to the raw slice when the allocation is expanded.
-  Node *mem;
-  if (C->do_escape_analysis()) {
-    mem = reset_memory();
-    set_all_memory(mem);
-  } else {
-    mem = memory(Compile::AliasIdxRaw);
-  }
+  // The entire memory state is needed for slow path of the allocation
+  // since GC and deoptimization can happened.
+  Node *mem = reset_memory();
+  set_all_memory(mem); // Create new memory state
 
   // Create the AllocateArrayNode and its result projections
   AllocateArrayNode* alloc
@@ -3194,17 +3118,88 @@
   return NULL;
 }
 
+//----------------------------- store barriers ----------------------------
+#define __ ideal.
+
+void GraphKit::sync_kit(IdealKit& ideal) {
+  // Final sync IdealKit and graphKit.
+  __ drain_delay_transform();
+  set_all_memory(__ merged_memory());
+  set_control(__ ctrl());
+}
+
+// vanilla/CMS post barrier
+// Insert a write-barrier store.  This is to let generational GC work; we have
+// to flag all oop-stores before the next GC point.
+void GraphKit::write_barrier_post(Node* oop_store,
+                                  Node* obj,
+                                  Node* adr,
+                                  Node* val,
+                                  bool use_precise) {
+  // No store check needed if we're storing a NULL or an old object
+  // (latter case is probably a string constant). The concurrent
+  // mark sweep garbage collector, however, needs to have all nonNull
+  // oop updates flagged via card-marks.
+  if (val != NULL && val->is_Con()) {
+    // must be either an oop or NULL
+    const Type* t = val->bottom_type();
+    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_precise) {
+    // All card marks for a (non-array) instance are in one place:
+    adr = obj;
+  }
+  // (Else it's an array (or unknown), and we want more precise card marks.)
+  assert(adr != NULL, "");
+
+  IdealKit ideal(gvn(), control(), merged_memory(), true);
+
+  // Convert the pointer to an int prior to doing math on it
+  Node* cast = __ CastPX(__ ctrl(), adr);
+
+  // Divide by card size
+  assert(Universe::heap()->barrier_set()->kind() == BarrierSet::CardTableModRef,
+         "Only one we handle so far.");
+  Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) );
+
+  // Combine card table base and card offset
+  Node* card_adr = __ AddP(__ top(), byte_map_base_node(), card_offset );
+
+  // Get the alias_index for raw card-mark memory
+  int adr_type = Compile::AliasIdxRaw;
+  // Smash zero into card
+  Node*   zero = __ ConI(0);
+  BasicType bt = T_BYTE;
+  if( !UseConcMarkSweepGC ) {
+    __ store(__ ctrl(), card_adr, zero, bt, adr_type);
+  } else {
+    // Specialized path for CM store barrier
+    __ storeCM(__ ctrl(), card_adr, zero, oop_store, bt, adr_type);
+  }
+
+  // Final sync IdealKit and GraphKit.
+  sync_kit(ideal);
+}
+
+// G1 pre/post barriers
 void GraphKit::g1_write_barrier_pre(Node* obj,
                                     Node* adr,
                                     uint alias_idx,
                                     Node* val,
-                                    const Type* val_type,
+                                    const TypeOopPtr* val_type,
                                     BasicType bt) {
   IdealKit ideal(gvn(), control(), merged_memory(), true);
-#define __ ideal.
-  __ declares_done();
-
-  Node* thread = __ thread();
+
+  Node* tls = __ thread(); // ThreadLocalStorage
 
   Node* no_ctrl = NULL;
   Node* no_base = __ top();
@@ -3227,18 +3222,17 @@
 
   // set_control( ctl);
 
-  Node* marking_adr = __ AddP(no_base, thread, __ ConX(marking_offset));
-  Node* buffer_adr  = __ AddP(no_base, thread, __ ConX(buffer_offset));
-  Node* index_adr   = __ AddP(no_base, thread, __ ConX(index_offset));
+  Node* marking_adr = __ AddP(no_base, tls, __ ConX(marking_offset));
+  Node* buffer_adr  = __ AddP(no_base, tls, __ ConX(buffer_offset));
+  Node* index_adr   = __ AddP(no_base, tls, __ ConX(index_offset));
 
   // Now some of the values
 
-  Node* marking = __ load(no_ctrl, marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
-  Node* index   = __ load(no_ctrl, index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
-  Node* buffer  = __ load(no_ctrl, buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
+  Node* marking = __ load(__ ctrl(), marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
 
   // if (!marking)
   __ if_then(marking, BoolTest::ne, zero); {
+    Node* index   = __ load(__ ctrl(), index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
 
     const Type* t1 = adr->bottom_type();
     const Type* t2 = val->bottom_type();
@@ -3246,6 +3240,7 @@
     Node* orig = __ load(no_ctrl, adr, val_type, bt, alias_idx);
     // if (orig != NULL)
     __ if_then(orig, BoolTest::ne, null()); {
+      Node* buffer  = __ load(__ ctrl(), buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
 
       // load original value
       // alias_idx correct??
@@ -3257,55 +3252,52 @@
         Node* next_index = __ SubI(index,  __ ConI(sizeof(intptr_t)));
         Node* next_indexX = next_index;
 #ifdef _LP64
-          // We could refine the type for what it's worth
-          // const TypeLong* lidxtype = TypeLong::make(CONST64(0), get_size_from_queue);
-          next_indexX = _gvn.transform( new (C, 2) ConvI2LNode(next_index, TypeLong::make(0, max_jlong, Type::WidenMax)) );
-#endif // _LP64
+        // We could refine the type for what it's worth
+        // const TypeLong* lidxtype = TypeLong::make(CONST64(0), get_size_from_queue);
+        next_indexX = _gvn.transform( new (C, 2) ConvI2LNode(next_index, TypeLong::make(0, max_jlong, Type::WidenMax)) );
+#endif
 
         // Now get the buffer location we will log the original value into and store it
-
         Node *log_addr = __ AddP(no_base, buffer, next_indexX);
-        // __ store(__ ctrl(), log_addr, orig, T_OBJECT, C->get_alias_index(TypeOopPtr::BOTTOM));
         __ store(__ ctrl(), log_addr, orig, T_OBJECT, Compile::AliasIdxRaw);
 
-
         // update the index
-        // __ store(__ ctrl(), index_adr, next_index, T_INT, Compile::AliasIdxRaw);
-        // This is a hack to force this store to occur before the oop store that is coming up
-        __ store(__ ctrl(), index_adr, next_index, T_INT, C->get_alias_index(TypeOopPtr::BOTTOM));
+        __ store(__ ctrl(), index_adr, next_index, T_INT, Compile::AliasIdxRaw);
 
       } __ else_(); {
 
         // logging buffer is full, call the runtime
         const TypeFunc *tf = OptoRuntime::g1_wb_pre_Type();
-        // __ make_leaf_call(tf, OptoRuntime::g1_wb_pre_Java(), "g1_wb_pre", orig, thread);
-        __ make_leaf_call(tf, CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), "g1_wb_pre", orig, thread);
-      } __ end_if();
-    } __ end_if();
-  } __ end_if();
-
-  __ drain_delay_transform();
-  set_control( __ ctrl());
-  set_all_memory( __ merged_memory());
-
-#undef __
+        __ make_leaf_call(tf, CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), "g1_wb_pre", orig, tls);
+      } __ end_if();  // (!index)
+    } __ end_if();  // (orig != NULL)
+  } __ end_if();  // (!marking)
+
+  // Final sync IdealKit and GraphKit.
+  sync_kit(ideal);
 }
 
 //
 // Update the card table and add card address to the queue
 //
-void GraphKit::g1_mark_card(IdealKit* ideal, Node* card_adr, Node* store,  Node* index, Node* index_adr, Node* buffer, const TypeFunc* tf) {
-#define __ ideal->
+void GraphKit::g1_mark_card(IdealKit& ideal,
+                            Node* card_adr,
+                            Node* oop_store,
+                            Node* index,
+                            Node* index_adr,
+                            Node* buffer,
+                            const TypeFunc* tf) {
+
   Node* zero = __ ConI(0);
   Node* no_base = __ top();
   BasicType card_bt = T_BYTE;
   // Smash zero into card. MUST BE ORDERED WRT TO STORE
-  __ storeCM(__ ctrl(), card_adr, zero, store, card_bt, Compile::AliasIdxRaw);
+  __ storeCM(__ ctrl(), card_adr, zero, oop_store, card_bt, Compile::AliasIdxRaw);
 
   //  Now do the queue work
   __ if_then(index, BoolTest::ne, zero); {
 
-    Node* next_index = __ SubI(index,  __ ConI(sizeof(intptr_t)));
+    Node* next_index = __ SubI(index, __ ConI(sizeof(intptr_t)));
     Node* next_indexX = next_index;
 #ifdef _LP64
     // We could refine the type for what it's worth
@@ -3320,10 +3312,10 @@
   } __ else_(); {
     __ make_leaf_call(tf, CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post), "g1_wb_post", card_adr, __ thread());
   } __ end_if();
-#undef __
+
 }
 
-void GraphKit::g1_write_barrier_post(Node* store,
+void GraphKit::g1_write_barrier_post(Node* oop_store,
                                      Node* obj,
                                      Node* adr,
                                      uint alias_idx,
@@ -3348,10 +3340,8 @@
   assert(adr != NULL, "");
 
   IdealKit ideal(gvn(), control(), merged_memory(), true);
-#define __ ideal.
-  __ declares_done();
-
-  Node* thread = __ thread();
+
+  Node* tls = __ thread(); // ThreadLocalStorage
 
   Node* no_ctrl = NULL;
   Node* no_base = __ top();
@@ -3365,14 +3355,6 @@
 
   const TypeFunc *tf = OptoRuntime::g1_wb_post_Type();
 
-  // Get the address of the card table
-  CardTableModRefBS* ct =
-    (CardTableModRefBS*)(Universe::heap()->barrier_set());
-  Node *card_table = __ makecon(TypeRawPtr::make((address)ct->byte_map_base));
-  // Get base of card map
-  assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
-
-
   // Offsets into the thread
   const int index_offset  = in_bytes(JavaThread::dirty_card_queue_offset() +
                                      PtrQueue::byte_offset_of_index());
@@ -3381,8 +3363,8 @@
 
   // Pointers into the thread
 
-  Node* buffer_adr = __ AddP(no_base, thread, __ ConX(buffer_offset));
-  Node* index_adr =  __ AddP(no_base, thread, __ ConX(index_offset));
+  Node* buffer_adr = __ AddP(no_base, tls, __ ConX(buffer_offset));
+  Node* index_adr =  __ AddP(no_base, tls, __ ConX(index_offset));
 
   // Now some values
 
@@ -3391,18 +3373,14 @@
 
 
   // Convert the store obj pointer to an int prior to doing math on it
-  // Use addr not obj gets accurate card marks
-
-  // Node* cast = __ CastPX(no_ctrl, adr /* obj */);
-
   // Must use ctrl to prevent "integerized oop" existing across safepoint
-  Node* cast =  __ CastPX(__ ctrl(), ( use_precise ? adr : obj ));
+  Node* cast =  __ CastPX(__ ctrl(), adr);
 
   // Divide pointer by card size
   Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) );
 
   // Combine card table base and card offset
-  Node *card_adr = __ AddP(no_base, card_table, card_offset );
+  Node* card_adr = __ AddP(no_base, byte_map_base_node(), card_offset );
 
   // If we know the value being stored does it cross regions?
 
@@ -3426,18 +3404,17 @@
         Node* card_val = __ load(__ ctrl(), card_adr, TypeInt::INT, T_BYTE, Compile::AliasIdxRaw);
 
         __ if_then(card_val, BoolTest::ne, zero); {
-          g1_mark_card(&ideal, card_adr, store, index, index_adr, buffer, tf);
+          g1_mark_card(ideal, card_adr, oop_store, index, index_adr, buffer, tf);
         } __ end_if();
       } __ end_if();
     } __ end_if();
   } else {
-    g1_mark_card(&ideal, card_adr, store, index, index_adr, buffer, tf);
+    // Object.clone() instrinsic uses this path.
+    g1_mark_card(ideal, card_adr, oop_store, index, index_adr, buffer, tf);
   }
 
-
-  __ drain_delay_transform();
-  set_control( __ ctrl());
-  set_all_memory( __ merged_memory());
+  // Final sync IdealKit and GraphKit.
+  sync_kit(ideal);
+}
 #undef __
 
-}
--- a/src/share/vm/opto/graphKit.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/graphKit.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,6 +83,18 @@
   Node* zerocon(BasicType bt)   const { return _gvn.zerocon(bt); }
   // (See also macro MakeConX in type.hpp, which uses intcon or longcon.)
 
+  // Helper for byte_map_base
+  Node* byte_map_base_node() {
+    // Get base of card map
+    CardTableModRefBS* ct = (CardTableModRefBS*)(Universe::heap()->barrier_set());
+    assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust users of this code");
+    if (ct->byte_map_base != NULL) {
+      return makecon(TypeRawPtr::make((address)ct->byte_map_base));
+    } else {
+      return null();
+    }
+  }
+
   jint  find_int_con(Node* n, jint value_if_unknown) {
     return _gvn.find_int_con(n, value_if_unknown);
   }
@@ -437,21 +449,34 @@
   //
   // If val==NULL, it is taken to be a completely unknown value. QQQ
 
+  Node* store_oop(Node* ctl,
+                  Node* obj,   // containing obj
+                  Node* adr,  // actual adress to store val at
+                  const TypePtr* adr_type,
+                  Node* val,
+                  const TypeOopPtr* val_type,
+                  BasicType bt,
+                  bool use_precise);
+
   Node* store_oop_to_object(Node* ctl,
                             Node* obj,   // containing obj
                             Node* adr,  // actual adress to store val at
                             const TypePtr* adr_type,
                             Node* val,
-                            const Type* val_type,
-                            BasicType bt);
+                            const TypeOopPtr* val_type,
+                            BasicType bt) {
+    return store_oop(ctl, obj, adr, adr_type, val, val_type, bt, false);
+  }
 
   Node* store_oop_to_array(Node* ctl,
                            Node* obj,   // containing obj
                            Node* adr,  // actual adress to store val at
                            const TypePtr* adr_type,
                            Node* val,
-                           const Type* val_type,
-                           BasicType bt);
+                           const TypeOopPtr* val_type,
+                           BasicType bt) {
+    return store_oop(ctl, obj, adr, adr_type, val, val_type, bt, true);
+  }
 
   // Could be an array or object we don't know at compile time (unsafe ref.)
   Node* store_oop_to_unknown(Node* ctl,
@@ -459,12 +484,11 @@
                              Node* adr,  // actual adress to store val at
                              const TypePtr* adr_type,
                              Node* val,
-                             const Type* val_type,
                              BasicType bt);
 
   // For the few case where the barriers need special help
   void pre_barrier(Node* ctl, Node* obj, Node* adr, uint adr_idx,
-                   Node* val, const Type* val_type, BasicType bt);
+                   Node* val, const TypeOopPtr* val_type, BasicType bt);
 
   void post_barrier(Node* ctl, Node* store, Node* obj, Node* adr, uint adr_idx,
                     Node* val, BasicType bt, bool use_precise);
@@ -477,9 +501,6 @@
   // Return a load of array element at idx.
   Node* load_array_element(Node* ctl, Node* ary, Node* idx, const TypeAryPtr* arytype);
 
-  // CMS card-marks have an input from the corresponding oop_store
-  void  cms_card_mark(Node* ctl, Node* adr, Node* val, Node* oop_store);
-
   //---------------- Dtrace support --------------------
   void make_dtrace_method_entry_exit(ciMethod* method, bool is_entry);
   void make_dtrace_method_entry(ciMethod* method) {
@@ -571,9 +592,6 @@
     return C->too_many_recompiles(method(), bci(), reason);
   }
 
-  // vanilla/CMS post barrier
-  void write_barrier_post(Node *store, Node* obj, Node* adr, Node* val, bool use_precise);
-
   // Returns the object (if any) which was created the moment before.
   Node* just_allocated_object(Node* current_control);
 
@@ -582,12 +600,17 @@
             && Universe::heap()->can_elide_tlab_store_barriers());
   }
 
+  void sync_kit(IdealKit& ideal);
+
+  // vanilla/CMS post barrier
+  void write_barrier_post(Node *store, Node* obj, Node* adr, Node* val, bool use_precise);
+
   // G1 pre/post barriers
   void g1_write_barrier_pre(Node* obj,
                             Node* adr,
                             uint alias_idx,
                             Node* val,
-                            const Type* val_type,
+                            const TypeOopPtr* val_type,
                             BasicType bt);
 
   void g1_write_barrier_post(Node* store,
@@ -599,7 +622,7 @@
                              bool use_precise);
   // Helper function for g1
   private:
-  void g1_mark_card(IdealKit* ideal, Node* card_adr, Node* store,  Node* index, Node* index_adr,
+  void g1_mark_card(IdealKit& ideal, Node* card_adr, Node* store,  Node* index, Node* index_adr,
                     Node* buffer, const TypeFunc* tf);
 
   public:
@@ -687,7 +710,7 @@
                      Node* slow_test = NULL,
                      bool raw_mem_only = false,
                      Node* *return_size_val = NULL);
-  Node* new_array(Node* klass_node, Node* count_val,
+  Node* new_array(Node* klass_node, Node* count_val, int nargs,
                   bool raw_mem_only = false, Node* *return_size_val = NULL);
 
   // Handy for making control flow
--- a/src/share/vm/opto/idealGraphPrinter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/idealGraphPrinter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -557,7 +557,7 @@
 
         // max. 2 chars allowed
         if (value >= -9 && value <= 99) {
-          sprintf(buffer, "%d", value);
+          sprintf(buffer, INT64_FORMAT, value);
           print_prop(short_name, buffer);
         } else {
           print_prop(short_name, "L");
--- a/src/share/vm/opto/idealKit.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/idealKit.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -34,7 +34,7 @@
 const uint IdealKit::first_var = TypeFunc::Parms + 1;
 
 //----------------------------IdealKit-----------------------------------------
-IdealKit::IdealKit(PhaseGVN &gvn, Node* control, Node* mem, bool delay_all_transforms) :
+IdealKit::IdealKit(PhaseGVN &gvn, Node* control, Node* mem, bool delay_all_transforms, bool has_declarations) :
   _gvn(gvn), C(gvn.C) {
   _initial_ctrl = control;
   _initial_memory = mem;
@@ -47,6 +47,9 @@
   _pending_cvstates = new (C->node_arena()) GrowableArray<Node*>(C->node_arena(), init_size, 0, 0);
   _delay_transform  = new (C->node_arena()) GrowableArray<Node*>(C->node_arena(), init_size, 0, 0);
   DEBUG_ONLY(_state = new (C->node_arena()) GrowableArray<int>(C->node_arena(), init_size, 0, 0));
+  if (!has_declarations) {
+     declarations_done();
+  }
 }
 
 //-------------------------------if_then-------------------------------------
@@ -97,7 +100,7 @@
 //-------------------------------end_if-------------------------------------
 // Merge the "then" and "else" cvstates.
 //
-// The if_then() pushed the current state for later use
+// The if_then() pushed a copy of the current state for later use
 // as the initial state for a future "else" clause.  The
 // current state then became the initial state for the
 // then clause.  If an "else" clause was encountered, it will
@@ -258,8 +261,8 @@
   return delay_transform(PhiNode::make(reg, n, ct));
 }
 
-//-----------------------------declares_done-----------------------------------
-void IdealKit::declares_done() {
+//-----------------------------declarations_done-------------------------------
+void IdealKit::declarations_done() {
   _cvstate = new_cvstate();   // initialize current cvstate
   set_ctrl(_initial_ctrl);    // initialize control in current cvstate
   set_all_memory(_initial_memory);// initialize memory in current cvstate
@@ -277,7 +280,9 @@
 
 //-----------------------------delay_transform-----------------------------------
 Node* IdealKit::delay_transform(Node* n) {
-  gvn().set_type(n, n->bottom_type());
+  if (!gvn().is_IterGVN() || !gvn().is_IterGVN()->delay_transform()) {
+    gvn().set_type(n, n->bottom_type());
+  }
   _delay_transform->push(n);
   return n;
 }
@@ -321,7 +326,9 @@
 Node* IdealKit::memory(uint alias_idx) {
   MergeMemNode* mem = merged_memory();
   Node* p = mem->memory_at(alias_idx);
-  _gvn.set_type(p, Type::MEMORY);  // must be mapped
+  if (!gvn().is_IterGVN() || !gvn().is_IterGVN()->delay_transform()) {
+    _gvn.set_type(p, Type::MEMORY);  // must be mapped
+  }
   return p;
 }
 
@@ -462,9 +469,6 @@
   const TypePtr* adr_type = TypeRawPtr::BOTTOM;
   uint adr_idx = C->get_alias_index(adr_type);
 
-  // Clone initial memory
-  MergeMemNode* cloned_mem =  MergeMemNode::make(C, merged_memory());
-
   // Slow-path leaf call
   int size = slow_call_type->domain()->cnt();
   CallNode *call =  (CallNode*)new (C, size) CallLeafNode( slow_call_type, slow_call, leaf_name, adr_type);
@@ -489,9 +493,6 @@
 
   set_ctrl(transform( new (C, 1) ProjNode(call,TypeFunc::Control) ));
 
-  // Set the incoming clone of memory as current memory
-  set_all_memory(cloned_mem);
-
   // Make memory for the call
   Node* mem = _gvn.transform( new (C, 1) ProjNode(call, TypeFunc::Memory) );
 
--- a/src/share/vm/opto/idealKit.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/idealKit.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -49,7 +49,7 @@
 // Example:
 //    Node* limit = ??
 //    IdealVariable i(kit), j(kit);
-//    declares_done();
+//    declarations_done();
 //    Node* exit = make_label(1); // 1 goto
 //    set(j, ConI(0));
 //    loop(i, ConI(0), BoolTest::lt, limit); {
@@ -101,10 +101,7 @@
   Node* new_cvstate();                     // Create a new cvstate
   Node* cvstate() { return _cvstate; }     // current cvstate
   Node* copy_cvstate();                    // copy current cvstate
-  void set_ctrl(Node* ctrl) { _cvstate->set_req(TypeFunc::Control, ctrl); }
 
-  // Should this assert this is a MergeMem???
-  void set_all_memory(Node* mem){ _cvstate->set_req(TypeFunc::Memory, mem); }
   void set_memory(Node* mem, uint alias_idx );
   void do_memory_merge(Node* merging, Node* join);
   void clear(Node* m);                     // clear a cvstate
@@ -132,15 +129,17 @@
   Node* memory(uint alias_idx);
 
  public:
-  IdealKit(PhaseGVN &gvn, Node* control, Node* memory, bool delay_all_transforms = false);
+  IdealKit(PhaseGVN &gvn, Node* control, Node* memory, bool delay_all_transforms = false, bool has_declarations = false);
   ~IdealKit() {
     stop();
     drain_delay_transform();
   }
   // Control
   Node* ctrl()                          { return _cvstate->in(TypeFunc::Control); }
+  void set_ctrl(Node* ctrl)             { _cvstate->set_req(TypeFunc::Control, ctrl); }
   Node* top()                           { return C->top(); }
   MergeMemNode* merged_memory()         { return _cvstate->in(TypeFunc::Memory)->as_MergeMem(); }
+  void set_all_memory(Node* mem)        { _cvstate->set_req(TypeFunc::Memory, mem); }
   void set(IdealVariable& v, Node* rhs) { _cvstate->set_req(first_var + v.id(), rhs); }
   Node* value(IdealVariable& v)         { return _cvstate->in(first_var + v.id()); }
   void dead(IdealVariable& v)           { set(v, (Node*)NULL); }
@@ -155,7 +154,7 @@
   Node* make_label(int goto_ct);
   void bind(Node* lab);
   void goto_(Node* lab, bool bind = false);
-  void declares_done();
+  void declarations_done();
   void drain_delay_transform();
 
   Node* IfTrue(IfNode* iff)  { return transform(new (C,1) IfTrueNode(iff)); }
--- a/src/share/vm/opto/ifg.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/ifg.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -292,7 +292,7 @@
 //------------------------------interfere_with_live----------------------------
 // Interfere this register with everything currently live.  Use the RegMasks
 // to trim the set of possible interferences. Return a count of register-only
-// inteferences as an estimate of register pressure.
+// interferences as an estimate of register pressure.
 void PhaseChaitin::interfere_with_live( uint r, IndexSet *liveout ) {
   uint retval = 0;
   // Interfere with everything live.
@@ -471,12 +471,28 @@
     // for the "collect_gc_info" phase later.
     IndexSet liveout(_live->live(b));
     uint last_inst = b->end_idx();
-    // Compute last phi index
-    uint last_phi;
-    for( last_phi = 1; last_phi < last_inst; last_phi++ )
-      if( !b->_nodes[last_phi]->is_Phi() )
+    // Compute first nonphi node index
+    uint first_inst;
+    for( first_inst = 1; first_inst < last_inst; first_inst++ )
+      if( !b->_nodes[first_inst]->is_Phi() )
         break;
 
+    // Spills could be inserted before CreateEx node which should be
+    // first instruction in block after Phis. Move CreateEx up.
+    for( uint insidx = first_inst; insidx < last_inst; insidx++ ) {
+      Node *ex = b->_nodes[insidx];
+      if( ex->is_SpillCopy() ) continue;
+      if( insidx > first_inst && ex->is_Mach() &&
+          ex->as_Mach()->ideal_Opcode() == Op_CreateEx ) {
+        // If the CreateEx isn't above all the MachSpillCopies
+        // then move it to the top.
+        b->_nodes.remove(insidx);
+        b->_nodes.insert(first_inst, ex);
+      }
+      // Stop once a CreateEx or any other node is found
+      break;
+    }
+
     // Reset block's register pressure values for each ifg construction
     uint pressure[2], hrp_index[2];
     pressure[0] = pressure[1] = 0;
@@ -485,7 +501,7 @@
     // Liveout things are presumed live for the whole block.  We accumulate
     // 'area' accordingly.  If they get killed in the block, we'll subtract
     // the unused part of the block from the area.
-    int inst_count = last_inst - last_phi;
+    int inst_count = last_inst - first_inst;
     double cost = (inst_count <= 0) ? 0.0 : b->_freq * double(inst_count);
     assert(!(cost < 0.0), "negative spill cost" );
     IndexSetIterator elements(&liveout);
--- a/src/share/vm/opto/ifnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/ifnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -81,7 +81,7 @@
   uint i4;
   for( i4 = 1; i4 < phi->req(); i4++ ) {
     con1 = phi->in(i4);
-    if( !con1 ) return NULL;    // Do not optimize partially collaped merges
+    if( !con1 ) return NULL;    // Do not optimize partially collapsed merges
     if( con1->is_Con() ) break; // Found a constant
     // Also allow null-vs-not-null checks
     const TypePtr *tp = igvn->type(con1)->isa_ptr();
@@ -204,7 +204,7 @@
   //      T  F                              T  F                  T  F
   // ..s..    ..t ..                   ..s..    ..t..        ..s..    ..t..
   //
-  // Split the paths coming into the merge point into 2 seperate groups of
+  // Split the paths coming into the merge point into 2 separate groups of
   // merges.  On the left will be all the paths feeding constants into the
   // Cmp's Phi.  On the right will be the remaining paths.  The Cmp's Phi
   // will fold up into a constant; this will let the Cmp fold up as well as
@@ -236,7 +236,7 @@
   }
 
   // Register the new RegionNodes but do not transform them.  Cannot
-  // transform until the entire Region/Phi conglerate has been hacked
+  // transform until the entire Region/Phi conglomerate has been hacked
   // as a single huge transform.
   igvn->register_new_node_with_optimizer( region_c );
   igvn->register_new_node_with_optimizer( region_x );
@@ -378,7 +378,18 @@
 
   // Force the original merge dead
   igvn->hash_delete(r);
-  r->set_req_X(0,NULL,igvn);
+  // First, remove region's dead users.
+  for (DUIterator_Last lmin, l = r->last_outs(lmin); l >= lmin;) {
+    Node* u = r->last_out(l);
+    if( u == r ) {
+      r->set_req(0, NULL);
+    } else {
+      assert(u->outcnt() == 0, "only dead users");
+      igvn->remove_dead_node(u);
+    }
+    l -= 1;
+  }
+  igvn->remove_dead_node(r);
 
   // Now remove the bogus extra edges used to keep things alive
   igvn->remove_dead_node( hook );
@@ -599,7 +610,7 @@
 
 //------------------------------fold_compares----------------------------
 // See if a pair of CmpIs can be converted into a CmpU.  In some cases
-// the direction of this if is determined by the preciding if so it
+// the direction of this if is determined by the preceding if so it
 // can be eliminate entirely.  Given an if testing (CmpI n c) check
 // for an immediately control dependent if that is testing (CmpI n c2)
 // and has one projection leading to this if and the other projection
@@ -811,7 +822,7 @@
     // Try to remove extra range checks.  All 'up_one_dom' gives up at merges
     // so all checks we inspect post-dominate the top-most check we find.
     // If we are going to fail the current check and we reach the top check
-    // then we are guarenteed to fail, so just start interpreting there.
+    // then we are guaranteed to fail, so just start interpreting there.
     // We 'expand' the top 2 range checks to include all post-dominating
     // checks.
 
--- a/src/share/vm/opto/lcm.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/lcm.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 +107,7 @@
     was_store = false;
     switch( mach->ideal_Opcode() ) {
     case Op_LoadB:
-    case Op_LoadC:
+    case Op_LoadUS:
     case Op_LoadD:
     case Op_LoadF:
     case Op_LoadI:
@@ -137,6 +137,8 @@
       if( mach->in(2) != val ) continue;
       break;                    // Found a memory op?
     case Op_StrComp:
+    case Op_StrEquals:
+    case Op_StrIndexOf:
     case Op_AryEq:
       // Not a legit memory op for implicit null check regardless of
       // embedded loads
@@ -158,7 +160,14 @@
           continue;             // Give up if offset is beyond page size
         // cannot reason about it; is probably not implicit null exception
       } else {
-        const TypePtr* tptr = base->bottom_type()->is_ptr();
+        const TypePtr* tptr;
+        if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
+          // 32-bits narrow oop can be the base of address expressions
+          tptr = base->bottom_type()->make_ptr();
+        } else {
+          // only regular oops are expected here
+          tptr = base->bottom_type()->is_ptr();
+        }
         // Give up if offset is not a compile-time constant
         if( offset == Type::OffsetBot || tptr->_offset == Type::OffsetBot )
           continue;
--- a/src/share/vm/opto/library_call.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/library_call.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -136,6 +136,7 @@
   bool inline_string_compareTo();
   bool inline_string_indexOf();
   Node* string_indexOf(Node* string_object, ciTypeArray* target_array, jint offset, jint cache_i, jint md2_i);
+  bool inline_string_equals();
   Node* pop_math_arg();
   bool runtime_math(const TypeFunc* call_type, address funcAddr, const char* funcName);
   bool inline_math_native(vmIntrinsics::ID id);
@@ -164,6 +165,7 @@
   bool inline_native_getLength();
   bool inline_array_copyOf(bool is_copyOfRange);
   bool inline_array_equals();
+  void copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark);
   bool inline_native_clone(bool is_virtual);
   bool inline_native_Reflection_getCallerClass();
   bool inline_native_AtomicLong_get();
@@ -180,7 +182,6 @@
                           Node* src,  Node* src_offset,
                           Node* dest, Node* dest_offset,
                           Node* copy_length,
-                          int nargs,  // arguments on stack for debug info
                           bool disjoint_bases = false,
                           bool length_never_negative = false,
                           RegionNode* slow_region = NULL);
@@ -201,17 +202,16 @@
   void generate_slow_arraycopy(const TypePtr* adr_type,
                                Node* src,  Node* src_offset,
                                Node* dest, Node* dest_offset,
-                               Node* copy_length,
-                               int nargs);
+                               Node* copy_length);
   Node* generate_checkcast_arraycopy(const TypePtr* adr_type,
                                      Node* dest_elem_klass,
                                      Node* src,  Node* src_offset,
                                      Node* dest, Node* dest_offset,
-                                     Node* copy_length, int nargs);
+                                     Node* copy_length);
   Node* generate_generic_arraycopy(const TypePtr* adr_type,
                                    Node* src,  Node* src_offset,
                                    Node* dest, Node* dest_offset,
-                                   Node* copy_length, int nargs);
+                                   Node* copy_length);
   void generate_unchecked_arraycopy(const TypePtr* adr_type,
                                     BasicType basic_elem_type,
                                     bool disjoint_bases,
@@ -221,6 +221,9 @@
   bool inline_unsafe_CAS(BasicType type);
   bool inline_unsafe_ordered_store(BasicType type);
   bool inline_fp_conversions(vmIntrinsics::ID id);
+  bool inline_numberOfLeadingZeros(vmIntrinsics::ID id);
+  bool inline_numberOfTrailingZeros(vmIntrinsics::ID id);
+  bool inline_bitCount(vmIntrinsics::ID id);
   bool inline_reverseBytes(vmIntrinsics::ID id);
 };
 
@@ -260,6 +263,7 @@
     switch (id) {
     case vmIntrinsics::_indexOf:
     case vmIntrinsics::_compareTo:
+    case vmIntrinsics::_equals:
     case vmIntrinsics::_equalsC:
       break;  // InlineNatives does not control String.compareTo
     default:
@@ -274,6 +278,9 @@
   case vmIntrinsics::_indexOf:
     if (!SpecialStringIndexOf)  return NULL;
     break;
+  case vmIntrinsics::_equals:
+    if (!SpecialStringEquals)  return NULL;
+    break;
   case vmIntrinsics::_equalsC:
     if (!SpecialArraysEquals)  return NULL;
     break;
@@ -303,18 +310,20 @@
     if (!InlineAtomicLong)  return NULL;
     break;
 
-  case vmIntrinsics::_Object_init:
-  case vmIntrinsics::_invoke:
-    // We do not intrinsify these; they are marked for other purposes.
-    return NULL;
-
   case vmIntrinsics::_getCallerClass:
     if (!UseNewReflection)  return NULL;
     if (!InlineReflectionGetCallerClass)  return NULL;
     if (!JDK_Version::is_gte_jdk14x_version())  return NULL;
     break;
 
+  case vmIntrinsics::_bitCount_i:
+  case vmIntrinsics::_bitCount_l:
+    if (!UsePopCountInstruction)  return NULL;
+    break;
+
  default:
+    assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
+    assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
     break;
   }
 
@@ -382,18 +391,11 @@
   }
 
   if (PrintIntrinsics) {
-    switch (intrinsic_id()) {
-    case vmIntrinsics::_invoke:
-    case vmIntrinsics::_Object_init:
-      // We do not expect to inline these, so do not produce any noise about them.
-      break;
-    default:
-      tty->print("Did not inline intrinsic %s%s at bci:%d in",
-                 vmIntrinsics::name_at(intrinsic_id()),
-                 (is_virtual() ? " (virtual)" : ""), kit.bci());
-      kit.caller()->print_short_name(tty);
-      tty->print_cr(" (%d bytes)", kit.caller()->code_size());
-    }
+    tty->print("Did not inline intrinsic %s%s at bci:%d in",
+               vmIntrinsics::name_at(intrinsic_id()),
+               (is_virtual() ? " (virtual)" : ""), kit.bci());
+    kit.caller()->print_short_name(tty);
+    tty->print_cr(" (%d bytes)", kit.caller()->code_size());
   }
   C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_failed);
   return NULL;
@@ -436,6 +438,8 @@
     return inline_string_compareTo();
   case vmIntrinsics::_indexOf:
     return inline_string_indexOf();
+  case vmIntrinsics::_equals:
+    return inline_string_equals();
 
   case vmIntrinsics::_getObject:
     return inline_unsafe_access(!is_native_ptr, !is_store, T_OBJECT, false);
@@ -617,6 +621,18 @@
   case vmIntrinsics::_longBitsToDouble:
     return inline_fp_conversions(intrinsic_id());
 
+  case vmIntrinsics::_numberOfLeadingZeros_i:
+  case vmIntrinsics::_numberOfLeadingZeros_l:
+    return inline_numberOfLeadingZeros(intrinsic_id());
+
+  case vmIntrinsics::_numberOfTrailingZeros_i:
+  case vmIntrinsics::_numberOfTrailingZeros_l:
+    return inline_numberOfTrailingZeros(intrinsic_id());
+
+  case vmIntrinsics::_bitCount_i:
+  case vmIntrinsics::_bitCount_l:
+    return inline_bitCount(intrinsic_id());
+
   case vmIntrinsics::_reverseBytes_i:
   case vmIntrinsics::_reverseBytes_l:
     return inline_reverseBytes((vmIntrinsics::ID) intrinsic_id());
@@ -783,6 +799,8 @@
 //------------------------------inline_string_compareTo------------------------
 bool LibraryCallKit::inline_string_compareTo() {
 
+  if (!Matcher::has_match_rule(Op_StrComp)) return false;
+
   const int value_offset = java_lang_String::value_offset_in_bytes();
   const int count_offset = java_lang_String::count_offset_in_bytes();
   const int offset_offset = java_lang_String::offset_offset_in_bytes();
@@ -820,6 +838,82 @@
   return true;
 }
 
+//------------------------------inline_string_equals------------------------
+bool LibraryCallKit::inline_string_equals() {
+
+  if (!Matcher::has_match_rule(Op_StrEquals)) return false;
+
+  const int value_offset = java_lang_String::value_offset_in_bytes();
+  const int count_offset = java_lang_String::count_offset_in_bytes();
+  const int offset_offset = java_lang_String::offset_offset_in_bytes();
+
+  _sp += 2;
+  Node* argument = pop();  // pop non-receiver first:  it was pushed second
+  Node* receiver = pop();
+
+  // Null check on self without removing any arguments.  The argument
+  // null check technically happens in the wrong place, which can lead to
+  // invalid stack traces when string compare is inlined into a method
+  // which handles NullPointerExceptions.
+  _sp += 2;
+  receiver = do_null_check(receiver, T_OBJECT);
+  //should not do null check for argument for String.equals(), because spec
+  //allows to specify NULL as argument.
+  _sp -= 2;
+
+  if (stopped()) {
+    return true;
+  }
+
+  // get String klass for instanceOf
+  ciInstanceKlass* klass = env()->String_klass();
+
+  // two paths (plus control) merge
+  RegionNode* region = new (C, 3) RegionNode(3);
+  Node* phi = new (C, 3) PhiNode(region, TypeInt::BOOL);
+
+  Node* inst = gen_instanceof(argument, makecon(TypeKlassPtr::make(klass)));
+  Node* cmp  = _gvn.transform(new (C, 3) CmpINode(inst, intcon(1)));
+  Node* bol  = _gvn.transform(new (C, 2) BoolNode(cmp, BoolTest::eq));
+
+  IfNode* iff = create_and_map_if(control(), bol, PROB_MAX, COUNT_UNKNOWN);
+
+  Node* if_true  = _gvn.transform(new (C, 1) IfTrueNode(iff));
+  set_control(if_true);
+
+  const TypeInstPtr* string_type =
+    TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0);
+
+  // instanceOf == true
+  Node* equals =
+    _gvn.transform(new (C, 7) StrEqualsNode(
+                        control(),
+                        memory(TypeAryPtr::CHARS),
+                        memory(string_type->add_offset(value_offset)),
+                        memory(string_type->add_offset(count_offset)),
+                        memory(string_type->add_offset(offset_offset)),
+                        receiver,
+                        argument));
+
+  phi->init_req(1, _gvn.transform(equals));
+  region->init_req(1, if_true);
+
+  //instanceOf == false, fallthrough
+  Node* if_false = _gvn.transform(new (C, 1) IfFalseNode(iff));
+  set_control(if_false);
+
+  phi->init_req(2, _gvn.transform(intcon(0)));
+  region->init_req(2, if_false);
+
+  // post merge
+  set_control(_gvn.transform(region));
+  record_for_igvn(region);
+
+  push(_gvn.transform(phi));
+
+  return true;
+}
+
 //------------------------------inline_array_equals----------------------------
 bool LibraryCallKit::inline_array_equals() {
 
@@ -926,7 +1020,7 @@
   const TypeAry* target_array_type = TypeAry::make(TypeInt::CHAR, TypeInt::make(0, target_length, Type::WidenMin));
   const TypeAryPtr* target_type = TypeAryPtr::make(TypePtr::BotPTR, target_array_type, target_array->klass(), true, Type::OffsetBot);
 
-  IdealKit kit(gvn(), control(), merged_memory());
+  IdealKit kit(gvn(), control(), merged_memory(), false, true);
 #define __ kit.
   Node* zero             = __ ConI(0);
   Node* one              = __ ConI(1);
@@ -938,7 +1032,7 @@
   Node* targetOffset     = __ ConI(targetOffset_i);
   Node* sourceEnd        = __ SubI(__ AddI(sourceOffset, sourceCount), targetCountLess1);
 
-  IdealVariable rtn(kit), i(kit), j(kit); __ declares_done();
+  IdealVariable rtn(kit), i(kit), j(kit); __ declarations_done();
   Node* outer_loop = __ make_label(2 /* goto */);
   Node* return_    = __ make_label(1);
 
@@ -975,89 +1069,124 @@
        __ bind(outer_loop);
   }__ end_loop(); __ dead(i);
   __ bind(return_);
-  __ drain_delay_transform();
-
-  set_control(__ ctrl());
+
+  // Final sync IdealKit and GraphKit.
+  sync_kit(kit);
   Node* result = __ value(rtn);
 #undef __
   C->set_has_loops(true);
   return result;
 }
 
-
 //------------------------------inline_string_indexOf------------------------
 bool LibraryCallKit::inline_string_indexOf() {
 
-  _sp += 2;
-  Node *argument = pop();  // pop non-receiver first:  it was pushed second
-  Node *receiver = pop();
-
-  // don't intrinsify is argument isn't a constant string.
-  if (!argument->is_Con()) {
-    return false;
-  }
-  const TypeOopPtr* str_type = _gvn.type(argument)->isa_oopptr();
-  if (str_type == NULL) {
-    return false;
-  }
-  ciInstanceKlass* klass = env()->String_klass();
-  ciObject* str_const = str_type->const_oop();
-  if (str_const == NULL || str_const->klass() != klass) {
-    return false;
-  }
-  ciInstance* str = str_const->as_instance();
-  assert(str != NULL, "must be instance");
-
   const int value_offset  = java_lang_String::value_offset_in_bytes();
   const int count_offset  = java_lang_String::count_offset_in_bytes();
   const int offset_offset = java_lang_String::offset_offset_in_bytes();
 
-  ciObject* v = str->field_value_by_offset(value_offset).as_object();
-  int       o = str->field_value_by_offset(offset_offset).as_int();
-  int       c = str->field_value_by_offset(count_offset).as_int();
-  ciTypeArray* pat = v->as_type_array(); // pattern (argument) character array
-
-  // constant strings have no offset and count == length which
-  // simplifies the resulting code somewhat so lets optimize for that.
-  if (o != 0 || c != pat->length()) {
-    return false;
-  }
-
-  // Null check on self without removing any arguments.  The argument
-  // null check technically happens in the wrong place, which can lead to
-  // invalid stack traces when string compare is inlined into a method
-  // which handles NullPointerExceptions.
   _sp += 2;
-  receiver = do_null_check(receiver, T_OBJECT);
-  // No null check on the argument is needed since it's a constant String oop.
-  _sp -= 2;
-  if (stopped()) {
-    return true;
+  Node *argument = pop();  // pop non-receiver first:  it was pushed second
+  Node *receiver = pop();
+
+  Node* result;
+  if (Matcher::has_match_rule(Op_StrIndexOf) &&
+      UseSSE42Intrinsics) {
+    // Generate SSE4.2 version of indexOf
+    // We currently only have match rules that use SSE4.2
+
+    // Null check on self without removing any arguments.  The argument
+    // null check technically happens in the wrong place, which can lead to
+    // invalid stack traces when string compare is inlined into a method
+    // which handles NullPointerExceptions.
+    _sp += 2;
+    receiver = do_null_check(receiver, T_OBJECT);
+    argument = do_null_check(argument, T_OBJECT);
+    _sp -= 2;
+
+    if (stopped()) {
+      return true;
+    }
+
+    ciInstanceKlass* klass = env()->String_klass();
+    const TypeInstPtr* string_type =
+      TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0);
+
+    result =
+      _gvn.transform(new (C, 7)
+                     StrIndexOfNode(control(),
+                                    memory(TypeAryPtr::CHARS),
+                                    memory(string_type->add_offset(value_offset)),
+                                    memory(string_type->add_offset(count_offset)),
+                                    memory(string_type->add_offset(offset_offset)),
+                                    receiver,
+                                    argument));
+  } else { //Use LibraryCallKit::string_indexOf
+    // don't intrinsify is argument isn't a constant string.
+    if (!argument->is_Con()) {
+     return false;
+    }
+    const TypeOopPtr* str_type = _gvn.type(argument)->isa_oopptr();
+    if (str_type == NULL) {
+      return false;
+    }
+    ciInstanceKlass* klass = env()->String_klass();
+    ciObject* str_const = str_type->const_oop();
+    if (str_const == NULL || str_const->klass() != klass) {
+      return false;
+    }
+    ciInstance* str = str_const->as_instance();
+    assert(str != NULL, "must be instance");
+
+    ciObject* v = str->field_value_by_offset(value_offset).as_object();
+    int       o = str->field_value_by_offset(offset_offset).as_int();
+    int       c = str->field_value_by_offset(count_offset).as_int();
+    ciTypeArray* pat = v->as_type_array(); // pattern (argument) character array
+
+    // constant strings have no offset and count == length which
+    // simplifies the resulting code somewhat so lets optimize for that.
+    if (o != 0 || c != pat->length()) {
+     return false;
+    }
+
+    // Null check on self without removing any arguments.  The argument
+    // null check technically happens in the wrong place, which can lead to
+    // invalid stack traces when string compare is inlined into a method
+    // which handles NullPointerExceptions.
+    _sp += 2;
+    receiver = do_null_check(receiver, T_OBJECT);
+    // No null check on the argument is needed since it's a constant String oop.
+    _sp -= 2;
+    if (stopped()) {
+     return true;
+    }
+
+    // The null string as a pattern always returns 0 (match at beginning of string)
+    if (c == 0) {
+      push(intcon(0));
+      return true;
+    }
+
+    // Generate default indexOf
+    jchar lastChar = pat->char_at(o + (c - 1));
+    int cache = 0;
+    int i;
+    for (i = 0; i < c - 1; i++) {
+      assert(i < pat->length(), "out of range");
+      cache |= (1 << (pat->char_at(o + i) & (sizeof(cache) * BitsPerByte - 1)));
+    }
+
+    int md2 = c;
+    for (i = 0; i < c - 1; i++) {
+      assert(i < pat->length(), "out of range");
+      if (pat->char_at(o + i) == lastChar) {
+        md2 = (c - 1) - i;
+      }
+    }
+
+    result = string_indexOf(receiver, pat, o, cache, md2);
   }
 
-  // The null string as a pattern always returns 0 (match at beginning of string)
-  if (c == 0) {
-    push(intcon(0));
-    return true;
-  }
-
-  jchar lastChar = pat->char_at(o + (c - 1));
-  int cache = 0;
-  int i;
-  for (i = 0; i < c - 1; i++) {
-    assert(i < pat->length(), "out of range");
-    cache |= (1 << (pat->char_at(o + i) & (sizeof(cache) * BitsPerByte - 1)));
-  }
-
-  int md2 = c;
-  for (i = 0; i < c - 1; i++) {
-    assert(i < pat->length(), "out of range");
-    if (pat->char_at(o + i) == lastChar) {
-      md2 = (c - 1) - i;
-    }
-  }
-
-  Node* result = string_indexOf(receiver, pat, o, cache, md2);
   push(result);
   return true;
 }
@@ -1267,7 +1396,7 @@
   //   result = DPow(x,y);
   // }
   // if (result != result)?  {
-  //   ucommon_trap();
+  //   uncommon_trap();
   // }
   // return result;
 
@@ -1324,7 +1453,7 @@
     // Check if (y isn't int) then go to slow path
 
     Node *bol2 = _gvn.transform( new (C, 2) BoolNode( cmpinty, BoolTest::ne ) );
-    // Branch eith way
+    // Branch either way
     IfNode *if2 = create_and_xform_if(complex_path,bol2, PROB_STATIC_INFREQUENT, COUNT_UNKNOWN);
     Node *slow_path = opt_iff(r,if2); // Set region path 2
 
@@ -1714,9 +1843,72 @@
   }
 }
 
+//-------------------inline_numberOfLeadingZeros_int/long-----------------------
+// inline int Integer.numberOfLeadingZeros(int)
+// inline int Long.numberOfLeadingZeros(long)
+bool LibraryCallKit::inline_numberOfLeadingZeros(vmIntrinsics::ID id) {
+  assert(id == vmIntrinsics::_numberOfLeadingZeros_i || id == vmIntrinsics::_numberOfLeadingZeros_l, "not numberOfLeadingZeros");
+  if (id == vmIntrinsics::_numberOfLeadingZeros_i && !Matcher::match_rule_supported(Op_CountLeadingZerosI)) return false;
+  if (id == vmIntrinsics::_numberOfLeadingZeros_l && !Matcher::match_rule_supported(Op_CountLeadingZerosL)) return false;
+  _sp += arg_size();  // restore stack pointer
+  switch (id) {
+  case vmIntrinsics::_numberOfLeadingZeros_i:
+    push(_gvn.transform(new (C, 2) CountLeadingZerosINode(pop())));
+    break;
+  case vmIntrinsics::_numberOfLeadingZeros_l:
+    push(_gvn.transform(new (C, 2) CountLeadingZerosLNode(pop_pair())));
+    break;
+  default:
+    ShouldNotReachHere();
+  }
+  return true;
+}
+
+//-------------------inline_numberOfTrailingZeros_int/long----------------------
+// inline int Integer.numberOfTrailingZeros(int)
+// inline int Long.numberOfTrailingZeros(long)
+bool LibraryCallKit::inline_numberOfTrailingZeros(vmIntrinsics::ID id) {
+  assert(id == vmIntrinsics::_numberOfTrailingZeros_i || id == vmIntrinsics::_numberOfTrailingZeros_l, "not numberOfTrailingZeros");
+  if (id == vmIntrinsics::_numberOfTrailingZeros_i && !Matcher::match_rule_supported(Op_CountTrailingZerosI)) return false;
+  if (id == vmIntrinsics::_numberOfTrailingZeros_l && !Matcher::match_rule_supported(Op_CountTrailingZerosL)) return false;
+  _sp += arg_size();  // restore stack pointer
+  switch (id) {
+  case vmIntrinsics::_numberOfTrailingZeros_i:
+    push(_gvn.transform(new (C, 2) CountTrailingZerosINode(pop())));
+    break;
+  case vmIntrinsics::_numberOfTrailingZeros_l:
+    push(_gvn.transform(new (C, 2) CountTrailingZerosLNode(pop_pair())));
+    break;
+  default:
+    ShouldNotReachHere();
+  }
+  return true;
+}
+
+//----------------------------inline_bitCount_int/long-----------------------
+// inline int Integer.bitCount(int)
+// inline int Long.bitCount(long)
+bool LibraryCallKit::inline_bitCount(vmIntrinsics::ID id) {
+  assert(id == vmIntrinsics::_bitCount_i || id == vmIntrinsics::_bitCount_l, "not bitCount");
+  if (id == vmIntrinsics::_bitCount_i && !Matcher::has_match_rule(Op_PopCountI)) return false;
+  if (id == vmIntrinsics::_bitCount_l && !Matcher::has_match_rule(Op_PopCountL)) return false;
+  _sp += arg_size();  // restore stack pointer
+  switch (id) {
+  case vmIntrinsics::_bitCount_i:
+    push(_gvn.transform(new (C, 2) PopCountINode(pop())));
+    break;
+  case vmIntrinsics::_bitCount_l:
+    push(_gvn.transform(new (C, 2) PopCountLNode(pop_pair())));
+    break;
+  default:
+    ShouldNotReachHere();
+  }
+  return true;
+}
+
 //----------------------------inline_reverseBytes_int/long-------------------
-// inline Int.reverseBytes(int)
-// inline Long.reverseByes(long)
+// inline Integer.reverseBytes(int)
+// inline Long.reverseBytes(long)
 bool LibraryCallKit::inline_reverseBytes(vmIntrinsics::ID id) {
   assert(id == vmIntrinsics::_reverseBytes_i || id == vmIntrinsics::_reverseBytes_l, "not reverse Bytes");
   if (id == vmIntrinsics::_reverseBytes_i && !Matcher::has_match_rule(Op_ReverseBytesI)) return false;
@@ -1915,7 +2107,7 @@
     // addition to memory membars when is_volatile. This is a little
     // too strong, but avoids the need to insert per-alias-type
     // volatile membars (for stores; compare Parse::do_put_xxx), which
-    // we cannot do effctively here because we probably only have a
+    // we cannot do effectively here because we probably only have a
     // rough approximation of type.
     need_mem_bar = true;
     // For Stores, place a memory ordering barrier now.
@@ -1975,21 +2167,29 @@
       // Possibly an oop being stored to Java heap or native memory
       if (!TypePtr::NULL_PTR->higher_equal(_gvn.type(heap_base_oop))) {
         // oop to Java heap.
-        (void) store_oop_to_unknown(control(), heap_base_oop, adr, adr_type, val, val->bottom_type(), type);
+        (void) store_oop_to_unknown(control(), heap_base_oop, adr, adr_type, val, type);
       } else {
-
         // We can't tell at compile time if we are storing in the Java heap or outside
         // of it. So we need to emit code to conditionally do the proper type of
         // store.
 
-        IdealKit kit(gvn(), control(),  merged_memory());
-        kit.declares_done();
+        IdealKit ideal(gvn(), control(),  merged_memory());
+#define __ ideal.
         // QQQ who knows what probability is here??
-        kit.if_then(heap_base_oop, BoolTest::ne, null(), PROB_UNLIKELY(0.999)); {
-          (void) store_oop_to_unknown(control(), heap_base_oop, adr, adr_type, val, val->bottom_type(), type);
-        } kit.else_(); {
-          (void) store_to_memory(control(), adr, val, type, adr_type, is_volatile);
-        } kit.end_if();
+        __ if_then(heap_base_oop, BoolTest::ne, null(), PROB_UNLIKELY(0.999)); {
+          // Sync IdealKit and graphKit.
+          set_all_memory( __ merged_memory());
+          set_control(__ ctrl());
+          Node* st = store_oop_to_unknown(control(), heap_base_oop, adr, adr_type, val, type);
+          // Update IdealKit memory.
+          __ set_all_memory(merged_memory());
+          __ set_ctrl(control());
+        } __ else_(); {
+          __ store(__ ctrl(), adr, val, type, alias_type->index(), is_volatile);
+        } __ end_if();
+        // Final sync IdealKit and GraphKit.
+        sync_kit(ideal);
+#undef __
       }
     }
   }
@@ -2099,7 +2299,7 @@
   // overly confusing.  (This is a true fact! I originally combined
   // them, but even I was confused by it!) As much code/comments as
   // possible are retained from inline_unsafe_access though to make
-  // the correspondances clearer. - dl
+  // the correspondences clearer. - dl
 
   if (callee()->is_static())  return false;  // caller must have the capability!
 
@@ -2166,7 +2366,7 @@
   int alias_idx = C->get_alias_index(adr_type);
 
   // Memory-model-wise, a CAS acts like a little synchronized block,
-  // so needs barriers on each side.  These don't't translate into
+  // so needs barriers on each side.  These don't translate into
   // actual barriers on most machines, but we still need rest of
   // compiler to respect ordering.
 
@@ -2191,7 +2391,7 @@
   case T_OBJECT:
      // reference stores need a store barrier.
     // (They don't if CAS fails, but it isn't worth checking.)
-    pre_barrier(control(), base, adr, alias_idx, newval, value_type, T_OBJECT);
+    pre_barrier(control(), base, adr, alias_idx, newval, value_type->make_oopptr(), T_OBJECT);
 #ifdef _LP64
     if (adr->bottom_type()->is_ptr_to_narrowoop()) {
       Node *newval_enc = _gvn.transform(new (C, 2) EncodePNode(newval, newval->bottom_type()->make_narrowoop()));
@@ -2286,7 +2486,7 @@
   bool require_atomic_access = true;
   Node* store;
   if (type == T_OBJECT) // reference stores need a store barrier.
-    store = store_oop_to_unknown(control(), base, adr, adr_type, val, value_type, type);
+    store = store_oop_to_unknown(control(), base, adr, adr_type, val, type);
   else {
     store = store_to_memory(control(), adr, val, type, adr_type, require_atomic_access);
   }
@@ -2390,7 +2590,8 @@
   Node* p = basic_plus_adr(top()/*!oop*/, tls_ptr, in_bytes(JavaThread::osthread_offset()));
   Node* osthread = make_load(NULL, p, TypeRawPtr::NOTNULL, T_ADDRESS);
   p = basic_plus_adr(top()/*!oop*/, osthread, in_bytes(OSThread::interrupted_offset()));
-  Node* int_bit = make_load(NULL, p, TypeInt::BOOL, T_INT);
+  // Set the control input on the field _interrupted read to prevent it floating up.
+  Node* int_bit = make_load(control(), p, TypeInt::BOOL, T_INT);
   Node* cmp_bit = _gvn.transform( new (C, 3) CmpINode(int_bit, intcon(0)) );
   Node* bol_bit = _gvn.transform( new (C, 2) BoolNode(cmp_bit, BoolTest::ne) );
 
@@ -2904,9 +3105,7 @@
     // Normal case:  The array type has been cached in the java.lang.Class.
     // The following call works fine even if the array type is polymorphic.
     // It could be a dynamic mix of int[], boolean[], Object[], etc.
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* obj = new_array(klass_node, count_val);
-    _sp -= nargs;
+    Node* obj = new_array(klass_node, count_val, nargs);
     result_reg->init_req(_normal_path, control());
     result_val->init_req(_normal_path, obj);
     result_io ->init_req(_normal_path, i_o());
@@ -3028,9 +3227,8 @@
     Node* orig_tail = _gvn.transform( new(C, 3) SubINode(orig_length, start) );
     Node* moved = generate_min_max(vmIntrinsics::_min, orig_tail, length);
 
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* newcopy = new_array(klass_node, length);
-    _sp -= nargs;
+    const bool raw_mem_only = true;
+    Node* newcopy = new_array(klass_node, length, nargs, raw_mem_only);
 
     // Generate a direct call to the right arraycopy function(s).
     // We know the copy is disjoint but we might not know if the
@@ -3041,7 +3239,7 @@
     bool length_never_negative = true;
     generate_arraycopy(TypeAryPtr::OOPS, T_OBJECT,
                        original, start, newcopy, intcon(0), moved,
-                       nargs, disjoint_bases, length_never_negative);
+                       disjoint_bases, length_never_negative);
 
     push(newcopy);
   }
@@ -3208,7 +3406,7 @@
   Node *hash_shift     = _gvn.intcon(markOopDesc::hash_shift);
   Node *hshifted_header= _gvn.transform( new (C, 3) URShiftXNode(header, hash_shift) );
   // This hack lets the hash bits live anywhere in the mark object now, as long
-  // as the shift drops the relevent bits into the low 32 bits.  Note that
+  // as the shift drops the relevant bits into the low 32 bits.  Note that
   // Java spec says that HashCode is an int so there's no point in capturing
   // an 'X'-sized hashcode (32 in 32-bit build or 64 in 64-bit build).
   hshifted_header      = ConvX2I(hshifted_header);
@@ -3255,7 +3453,7 @@
 }
 
 //---------------------------inline_native_getClass----------------------------
-// Build special case code for calls to hashCode on an object.
+// Build special case code for calls to getClass on an object.
 bool LibraryCallKit::inline_native_getClass() {
   Node* obj = null_check_receiver(callee());
   if (stopped())  return true;
@@ -3683,6 +3881,98 @@
   return true;
 }
 
+//------------------------clone_coping-----------------------------------
+// Helper function for inline_native_clone.
+void LibraryCallKit::copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark) {
+  assert(obj_size != NULL, "");
+  Node* raw_obj = alloc_obj->in(1);
+  assert(alloc_obj->is_CheckCastPP() && raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), "");
+
+  if (ReduceBulkZeroing) {
+    // We will be completely responsible for initializing this object -
+    // mark Initialize node as complete.
+    AllocateNode* alloc = AllocateNode::Ideal_allocation(alloc_obj, &_gvn);
+    // The object was just allocated - there should be no any stores!
+    guarantee(alloc != NULL && alloc->maybe_set_complete(&_gvn), "");
+  }
+
+  // Cast to Object for arraycopy.
+  // We can't use the original CheckCastPP since it should be moved
+  // after the arraycopy to prevent stores flowing above it.
+  Node* new_obj = new(C, 2) CheckCastPPNode(alloc_obj->in(0), raw_obj,
+                                            TypeInstPtr::NOTNULL);
+  new_obj = _gvn.transform(new_obj);
+  // Substitute in the locally valid dest_oop.
+  replace_in_map(alloc_obj, new_obj);
+
+  // Copy the fastest available way.
+  // TODO: generate fields copies for small objects instead.
+  Node* src  = obj;
+  Node* dest = new_obj;
+  Node* size = _gvn.transform(obj_size);
+
+  // Exclude the header but include array length to copy by 8 bytes words.
+  // Can't use base_offset_in_bytes(bt) since basic type is unknown.
+  int base_off = is_array ? arrayOopDesc::length_offset_in_bytes() :
+                            instanceOopDesc::base_offset_in_bytes();
+  // base_off:
+  // 8  - 32-bit VM
+  // 12 - 64-bit VM, compressed oops
+  // 16 - 64-bit VM, normal oops
+  if (base_off % BytesPerLong != 0) {
+    assert(UseCompressedOops, "");
+    if (is_array) {
+      // Exclude length to copy by 8 bytes words.
+      base_off += sizeof(int);
+    } else {
+      // Include klass to copy by 8 bytes words.
+      base_off = instanceOopDesc::klass_offset_in_bytes();
+    }
+    assert(base_off % BytesPerLong == 0, "expect 8 bytes alignment");
+  }
+  src  = basic_plus_adr(src,  base_off);
+  dest = basic_plus_adr(dest, base_off);
+
+  // Compute the length also, if needed:
+  Node* countx = size;
+  countx = _gvn.transform( new (C, 3) SubXNode(countx, MakeConX(base_off)) );
+  countx = _gvn.transform( new (C, 3) URShiftXNode(countx, intcon(LogBytesPerLong) ));
+
+  const TypePtr* raw_adr_type = TypeRawPtr::BOTTOM;
+  bool disjoint_bases = true;
+  generate_unchecked_arraycopy(raw_adr_type, T_LONG, disjoint_bases,
+                               src, NULL, dest, NULL, countx);
+
+  // If necessary, emit some card marks afterwards.  (Non-arrays only.)
+  if (card_mark) {
+    assert(!is_array, "");
+    // Put in store barrier for any and all oops we are sticking
+    // into this object.  (We could avoid this if we could prove
+    // that the object type contains no oop fields at all.)
+    Node* no_particular_value = NULL;
+    Node* no_particular_field = NULL;
+    int raw_adr_idx = Compile::AliasIdxRaw;
+    post_barrier(control(),
+                 memory(raw_adr_type),
+                 new_obj,
+                 no_particular_field,
+                 raw_adr_idx,
+                 no_particular_value,
+                 T_OBJECT,
+                 false);
+  }
+
+  // Move the original CheckCastPP after arraycopy.
+  _gvn.hash_delete(alloc_obj);
+  alloc_obj->set_req(0, control());
+  // Replace raw memory edge with new CheckCastPP to have a live oop
+  // at safepoints instead of raw value.
+  assert(new_obj->is_CheckCastPP() && new_obj->in(1) == alloc_obj->in(1), "sanity");
+  alloc_obj->set_req(1, new_obj);    // cast to the original type
+  _gvn.hash_find_insert(alloc_obj);  // put back into GVN table
+  // Restore in the locally valid dest_oop.
+  replace_in_map(new_obj, alloc_obj);
+}
 
 //------------------------inline_native_clone----------------------------
 // Here are the simple edge cases:
@@ -3717,8 +4007,9 @@
   // paths into result_reg:
   enum {
     _slow_path = 1,     // out-of-line call to clone method (virtual or not)
-    _objArray_path,     // plain allocation, plus arrayof_oop_arraycopy
-    _fast_path,         // plain allocation, plus a CopyArray operation
+    _objArray_path,     // plain array allocation, plus arrayof_oop_arraycopy
+    _array_path,        // plain array allocation, plus arrayof_long_arraycopy
+    _instance_path,     // plain instance allocation, plus arrayof_long_arraycopy
     PATH_LIMIT
   };
   RegionNode* result_reg = new(C, PATH_LIMIT) RegionNode(PATH_LIMIT);
@@ -3733,18 +4024,6 @@
   int raw_adr_idx = Compile::AliasIdxRaw;
   const bool raw_mem_only = true;
 
-  // paths into alloc_reg (on the fast path, just before the CopyArray):
-  enum { _typeArray_alloc = 1, _instance_alloc, ALLOC_LIMIT };
-  RegionNode* alloc_reg = new(C, ALLOC_LIMIT) RegionNode(ALLOC_LIMIT);
-  PhiNode*    alloc_val = new(C, ALLOC_LIMIT) PhiNode(alloc_reg, raw_adr_type);
-  PhiNode*    alloc_siz = new(C, ALLOC_LIMIT) PhiNode(alloc_reg, TypeX_X);
-  PhiNode*    alloc_i_o = new(C, ALLOC_LIMIT) PhiNode(alloc_reg, Type::ABIO);
-  PhiNode*    alloc_mem = new(C, ALLOC_LIMIT) PhiNode(alloc_reg, Type::MEMORY,
-                                                      raw_adr_type);
-  record_for_igvn(alloc_reg);
-
-  bool card_mark = false;  // (see below)
-
   Node* array_ctl = generate_array_guard(obj_klass, (RegionNode*)NULL);
   if (array_ctl != NULL) {
     // It's an array.
@@ -3752,20 +4031,8 @@
     set_control(array_ctl);
     Node* obj_length = load_array_length(obj);
     Node* obj_size = NULL;
-    _sp += nargs;  // set original stack for use by uncommon_trap
-    Node* alloc_obj = new_array(obj_klass, obj_length,
+    Node* alloc_obj = new_array(obj_klass, obj_length, nargs,
                                 raw_mem_only, &obj_size);
-    _sp -= nargs;
-    assert(obj_size != NULL, "");
-    Node* raw_obj = alloc_obj->in(1);
-    assert(raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), "");
-    if (ReduceBulkZeroing) {
-      AllocateNode* alloc = AllocateNode::Ideal_allocation(alloc_obj, &_gvn);
-      if (alloc != NULL) {
-        // We will be completely responsible for initializing this object.
-        alloc->maybe_set_complete(&_gvn);
-      }
-    }
 
     if (!use_ReduceInitialCardMarks()) {
       // If it is an oop array, it requires very special treatment,
@@ -3779,7 +4046,7 @@
         bool length_never_negative = true;
         generate_arraycopy(TypeAryPtr::OOPS, T_OBJECT,
                            obj, intcon(0), alloc_obj, intcon(0),
-                           obj_length, nargs,
+                           obj_length,
                            disjoint_bases, length_never_negative);
         result_reg->init_req(_objArray_path, control());
         result_val->init_req(_objArray_path, alloc_obj);
@@ -3794,19 +4061,24 @@
     // the object.
 
     // Otherwise, there are no card marks to worry about.
-    alloc_val->init_req(_typeArray_alloc, raw_obj);
-    alloc_siz->init_req(_typeArray_alloc, obj_size);
-    alloc_reg->init_req(_typeArray_alloc, control());
-    alloc_i_o->init_req(_typeArray_alloc, i_o());
-    alloc_mem->init_req(_typeArray_alloc, memory(raw_adr_type));
+
+    if (!stopped()) {
+      copy_to_clone(obj, alloc_obj, obj_size, true, false);
+
+      // Present the results of the copy.
+      result_reg->init_req(_array_path, control());
+      result_val->init_req(_array_path, alloc_obj);
+      result_i_o ->set_req(_array_path, i_o());
+      result_mem ->set_req(_array_path, reset_memory());
+    }
   }
 
-  // We only go to the fast case code if we pass a number of guards.
+  // We only go to the instance fast case code if we pass a number of guards.
   // The paths which do not pass are accumulated in the slow_region.
   RegionNode* slow_region = new (C, 1) RegionNode(1);
   record_for_igvn(slow_region);
   if (!stopped()) {
-    // It's an instance.  Make the slow-path tests.
+    // It's an instance (we did array above).  Make the slow-path tests.
     // If this is a virtual call, we generate a funny guard.  We grab
     // the vtable entry corresponding to clone() from the target object.
     // If the target method which we are calling happens to be the
@@ -3833,25 +4105,14 @@
     PreserveJVMState pjvms(this);
     Node* obj_size = NULL;
     Node* alloc_obj = new_instance(obj_klass, NULL, raw_mem_only, &obj_size);
-    assert(obj_size != NULL, "");
-    Node* raw_obj = alloc_obj->in(1);
-    assert(raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), "");
-    if (ReduceBulkZeroing) {
-      AllocateNode* alloc = AllocateNode::Ideal_allocation(alloc_obj, &_gvn);
-      if (alloc != NULL && !alloc->maybe_set_complete(&_gvn))
-        alloc = NULL;
-    }
-    if (!use_ReduceInitialCardMarks()) {
-      // Put in store barrier for any and all oops we are sticking
-      // into this object.  (We could avoid this if we could prove
-      // that the object type contains no oop fields at all.)
-      card_mark = true;
-    }
-    alloc_val->init_req(_instance_alloc, raw_obj);
-    alloc_siz->init_req(_instance_alloc, obj_size);
-    alloc_reg->init_req(_instance_alloc, control());
-    alloc_i_o->init_req(_instance_alloc, i_o());
-    alloc_mem->init_req(_instance_alloc, memory(raw_adr_type));
+
+    copy_to_clone(obj, alloc_obj, obj_size, false, !use_ReduceInitialCardMarks());
+
+    // Present the results of the slow call.
+    result_reg->init_req(_instance_path, control());
+    result_val->init_req(_instance_path, alloc_obj);
+    result_i_o ->set_req(_instance_path, i_o());
+    result_mem ->set_req(_instance_path, reset_memory());
   }
 
   // Generate code for the slow case.  We make a call to clone().
@@ -3867,82 +4128,12 @@
     result_mem ->set_req(_slow_path, reset_memory());
   }
 
-  // The object is allocated, as an array and/or an instance.  Now copy it.
-  set_control( _gvn.transform(alloc_reg) );
-  set_i_o(     _gvn.transform(alloc_i_o) );
-  set_memory(  _gvn.transform(alloc_mem), raw_adr_type );
-  Node* raw_obj  = _gvn.transform(alloc_val);
-
-  if (!stopped()) {
-    // Copy the fastest available way.
-    // (No need for PreserveJVMState, since we're using it all up now.)
-    // TODO: generate fields/elements copies for small objects instead.
-    Node* src  = obj;
-    Node* dest = raw_obj;
-    Node* size = _gvn.transform(alloc_siz);
-
-    // Exclude the header.
-    int base_off = instanceOopDesc::base_offset_in_bytes();
-    if (UseCompressedOops) {
-      assert(base_off % BytesPerLong != 0, "base with compressed oops");
-      // With compressed oops base_offset_in_bytes is 12 which creates
-      // the gap since countx is rounded by 8 bytes below.
-      // Copy klass and the gap.
-      base_off = instanceOopDesc::klass_offset_in_bytes();
-    }
-    src  = basic_plus_adr(src,  base_off);
-    dest = basic_plus_adr(dest, base_off);
-
-    // Compute the length also, if needed:
-    Node* countx = size;
-    countx = _gvn.transform( new (C, 3) SubXNode(countx, MakeConX(base_off)) );
-    countx = _gvn.transform( new (C, 3) URShiftXNode(countx, intcon(LogBytesPerLong) ));
-
-    // Select an appropriate instruction to initialize the range.
-    // The CopyArray instruction (if supported) can be optimized
-    // into a discrete set of scalar loads and stores.
-    bool disjoint_bases = true;
-    generate_unchecked_arraycopy(raw_adr_type, T_LONG, disjoint_bases,
-                                 src, NULL, dest, NULL, countx);
-
-    // Now that the object is properly initialized, type it as an oop.
-    // Use a secondary InitializeNode memory barrier.
-    InitializeNode* init = insert_mem_bar_volatile(Op_Initialize, raw_adr_idx,
-                                                   raw_obj)->as_Initialize();
-    init->set_complete(&_gvn);  // (there is no corresponding AllocateNode)
-    Node* new_obj = new(C, 2) CheckCastPPNode(control(), raw_obj,
-                                              TypeInstPtr::NOTNULL);
-    new_obj = _gvn.transform(new_obj);
-
-    // If necessary, emit some card marks afterwards.  (Non-arrays only.)
-    if (card_mark) {
-      Node* no_particular_value = NULL;
-      Node* no_particular_field = NULL;
-      post_barrier(control(),
-                   memory(raw_adr_type),
-                   new_obj,
-                   no_particular_field,
-                   raw_adr_idx,
-                   no_particular_value,
-                   T_OBJECT,
-                   false);
-    }
-    // Present the results of the slow call.
-    result_reg->init_req(_fast_path, control());
-    result_val->init_req(_fast_path, new_obj);
-    result_i_o ->set_req(_fast_path, i_o());
-    result_mem ->set_req(_fast_path, reset_memory());
-  }
-
   // Return the combined state.
   set_control(    _gvn.transform(result_reg) );
   set_i_o(        _gvn.transform(result_i_o) );
   set_all_memory( _gvn.transform(result_mem) );
 
-  // Cast the result to a sharper type, since we know what clone does.
-  Node* new_obj = _gvn.transform(result_val);
-  Node* cast    = new (C, 2) CheckCastPPNode(control(), new_obj, toop);
-  push(_gvn.transform(cast));
+  push(_gvn.transform(result_val));
 
   return true;
 }
@@ -4081,8 +4272,7 @@
 
     // Call StubRoutines::generic_arraycopy stub.
     generate_arraycopy(TypeRawPtr::BOTTOM, T_CONFLICT,
-                       src, src_offset, dest, dest_offset, length,
-                       nargs);
+                       src, src_offset, dest, dest_offset, length);
 
     // Do not let reads from the destination float above the arraycopy.
     // Since we cannot type the arrays, we don't know which slices
@@ -4105,8 +4295,7 @@
     // The component types are not the same or are not recognized.  Punt.
     // (But, avoid the native method wrapper to JVM_ArrayCopy.)
     generate_slow_arraycopy(TypePtr::BOTTOM,
-                            src, src_offset, dest, dest_offset, length,
-                            nargs);
+                            src, src_offset, dest, dest_offset, length);
     return true;
   }
 
@@ -4163,7 +4352,7 @@
   const TypePtr* adr_type = TypeAryPtr::get_array_body_type(dest_elem);
   generate_arraycopy(adr_type, dest_elem,
                      src, src_offset, dest, dest_offset, length,
-                     nargs, false, false, slow_region);
+                     false, false, slow_region);
 
   return true;
 }
@@ -4208,7 +4397,6 @@
                                    Node* src,  Node* src_offset,
                                    Node* dest, Node* dest_offset,
                                    Node* copy_length,
-                                   int nargs,
                                    bool disjoint_bases,
                                    bool length_never_negative,
                                    RegionNode* slow_region) {
@@ -4220,7 +4408,6 @@
 
   Node* original_dest      = dest;
   AllocateArrayNode* alloc = NULL;  // used for zeroing, if needed
-  Node* raw_dest           = NULL;  // used before zeroing, if needed
   bool  must_clear_dest    = false;
 
   // See if this is the initialization of a newly-allocated array.
@@ -4239,15 +4426,18 @@
     // "You break it, you buy it."
     InitializeNode* init = alloc->initialization();
     assert(init->is_complete(), "we just did this");
-    assert(dest->Opcode() == Op_CheckCastPP, "sanity");
+    assert(dest->is_CheckCastPP(), "sanity");
     assert(dest->in(0)->in(0) == init, "dest pinned");
-    raw_dest = dest->in(1);  // grab the raw pointer!
-    original_dest = dest;
-    dest = raw_dest;
+
+    // Cast to Object for arraycopy.
+    // We can't use the original CheckCastPP since it should be moved
+    // after the arraycopy to prevent stores flowing above it.
+    Node* new_obj = new(C, 2) CheckCastPPNode(dest->in(0), dest->in(1),
+                                              TypeInstPtr::NOTNULL);
+    dest = _gvn.transform(new_obj);
+    // Substitute in the locally valid dest_oop.
+    replace_in_map(original_dest, dest);
     adr_type = TypeRawPtr::BOTTOM;  // all initializations are into raw memory
-    // Decouple the original InitializeNode, turning it into a simple membar.
-    // We will build a new one at the end of this routine.
-    init->set_req(InitializeNode::RawAddress, top());
     // From this point on, every exit path is responsible for
     // initializing any non-copied parts of the object to zero.
     must_clear_dest = true;
@@ -4290,7 +4480,7 @@
     assert(!must_clear_dest, "");
     Node* cv = generate_generic_arraycopy(adr_type,
                                           src, src_offset, dest, dest_offset,
-                                          copy_length, nargs);
+                                          copy_length);
     if (cv == NULL)  cv = intcon(-1);  // failure (no stub available)
     checked_control = control();
     checked_i_o     = i_o();
@@ -4309,16 +4499,24 @@
       generate_negative_guard(copy_length, slow_region);
     }
 
+    // copy_length is 0.
     if (!stopped() && must_clear_dest) {
       Node* dest_length = alloc->in(AllocateNode::ALength);
       if (_gvn.eqv_uncast(copy_length, dest_length)
           || _gvn.find_int_con(dest_length, 1) <= 0) {
-        // There is no zeroing to do.
+        // There is no zeroing to do. No need for a secondary raw memory barrier.
       } else {
         // Clear the whole thing since there are no source elements to copy.
         generate_clear_array(adr_type, dest, basic_elem_type,
                              intcon(0), NULL,
                              alloc->in(AllocateNode::AllocSize));
+        // Use a secondary InitializeNode as raw memory barrier.
+        // Currently it is needed only on this path since other
+        // paths have stub or runtime calls as raw memory barriers.
+        InitializeNode* init = insert_mem_bar_volatile(Op_Initialize,
+                                                       Compile::AliasIdxRaw,
+                                                       top())->as_Initialize();
+        init->set_complete(&_gvn);  // (there is no corresponding AllocateNode)
       }
     }
 
@@ -4440,8 +4638,7 @@
       Node* cv = generate_checkcast_arraycopy(adr_type,
                                               dest_elem_klass,
                                               src, src_offset, dest, dest_offset,
-                                              copy_length,
-                                              nargs);
+                                              copy_length);
       if (cv == NULL)  cv = intcon(-1);  // failure (no stub available)
       checked_control = control();
       checked_i_o     = i_o();
@@ -4503,8 +4700,8 @@
     slow_i_o2  ->init_req(1, slow_i_o);
     slow_mem2  ->init_req(1, slow_mem);
     slow_reg2  ->init_req(2, control());
-    slow_i_o2  ->init_req(2, i_o());
-    slow_mem2  ->init_req(2, memory(adr_type));
+    slow_i_o2  ->init_req(2, checked_i_o);
+    slow_mem2  ->init_req(2, checked_mem);
 
     slow_control = _gvn.transform(slow_reg2);
     slow_i_o     = _gvn.transform(slow_i_o2);
@@ -4549,21 +4746,9 @@
                            alloc->in(AllocateNode::AllocSize));
     }
 
-    if (dest != original_dest) {
-      // Promote from rawptr to oop, so it looks right in the call's GC map.
-      dest = _gvn.transform( new(C,2) CheckCastPPNode(control(), dest,
-                                                      TypeInstPtr::NOTNULL) );
-
-      // Edit the call's debug-info to avoid referring to original_dest.
-      // (The problem with original_dest is that it isn't ready until
-      // after the InitializeNode completes, but this stuff is before.)
-      // Substitute in the locally valid dest_oop.
-      replace_in_map(original_dest, dest);
-    }
-
     generate_slow_arraycopy(adr_type,
                             src, src_offset, dest, dest_offset,
-                            copy_length, nargs);
+                            copy_length);
 
     result_region->init_req(slow_call_path, control());
     result_i_o   ->init_req(slow_call_path, i_o());
@@ -4583,18 +4768,18 @@
 
   if (dest != original_dest) {
     // Pin the "finished" array node after the arraycopy/zeroing operations.
-    // Use a secondary InitializeNode memory barrier.
-    InitializeNode* init = insert_mem_bar_volatile(Op_Initialize,
-                                                   Compile::AliasIdxRaw,
-                                                   raw_dest)->as_Initialize();
-    init->set_complete(&_gvn);  // (there is no corresponding AllocateNode)
     _gvn.hash_delete(original_dest);
     original_dest->set_req(0, control());
+    // Replace raw memory edge with new CheckCastPP to have a live oop
+    // at safepoints instead of raw value.
+    assert(dest->is_CheckCastPP() && dest->in(1) == original_dest->in(1), "sanity");
+    original_dest->set_req(1, dest);       // cast to the original type
     _gvn.hash_find_insert(original_dest);  // put back into GVN table
+    // Restore in the locally valid dest_oop.
+    replace_in_map(dest, original_dest);
   }
-
   // The memory edges above are precise in order to model effects around
-  // array copyies accurately to allow value numbering of field loads around
+  // array copies accurately to allow value numbering of field loads around
   // arraycopy.  Such field loads, both before and after, are common in Java
   // collections and similar classes involving header/array data structures.
   //
@@ -4876,16 +5061,13 @@
 LibraryCallKit::generate_slow_arraycopy(const TypePtr* adr_type,
                                         Node* src,  Node* src_offset,
                                         Node* dest, Node* dest_offset,
-                                        Node* copy_length,
-                                        int nargs) {
-  _sp += nargs; // any deopt will start just before call to enclosing method
+                                        Node* copy_length) {
   Node* call = make_runtime_call(RC_NO_LEAF | RC_UNCOMMON,
                                  OptoRuntime::slow_arraycopy_Type(),
                                  OptoRuntime::slow_arraycopy_Java(),
                                  "slow_arraycopy", adr_type,
                                  src, src_offset, dest, dest_offset,
                                  copy_length);
-  _sp -= nargs;
 
   // Handle exceptions thrown by this fellow:
   make_slow_call_ex(call, env()->Throwable_klass(), false);
@@ -4897,8 +5079,7 @@
                                              Node* dest_elem_klass,
                                              Node* src,  Node* src_offset,
                                              Node* dest, Node* dest_offset,
-                                             Node* copy_length,
-                                             int nargs) {
+                                             Node* copy_length) {
   if (stopped())  return NULL;
 
   address copyfunc_addr = StubRoutines::checkcast_arraycopy();
@@ -4939,8 +5120,7 @@
 LibraryCallKit::generate_generic_arraycopy(const TypePtr* adr_type,
                                            Node* src,  Node* src_offset,
                                            Node* dest, Node* dest_offset,
-                                           Node* copy_length,
-                                           int nargs) {
+                                           Node* copy_length) {
   if (stopped())  return NULL;
 
   address copyfunc_addr = StubRoutines::generic_arraycopy();
--- a/src/share/vm/opto/live.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/live.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 // Leftover bits become the new live-in for the predecessor block, and the pred
 // block is put on the worklist.
 //   The locally live-in stuff is computed once and added to predecessor
-// live-out sets.  This seperate compilation is done in the outer loop below.
+// live-out sets.  This separate compilation is done in the outer loop below.
 PhaseLive::PhaseLive( const PhaseCFG &cfg, LRG_List &names, Arena *arena ) : Phase(LIVE), _cfg(cfg), _names(names), _arena(arena), _live(0) {
 }
 
@@ -271,9 +271,9 @@
 
 //------------------------------verify_base_ptrs-------------------------------
 // Verify that base pointers and derived pointers are still sane.
-// Basically, if a derived pointer is live at a safepoint, then its
-// base pointer must be live also.
 void PhaseChaitin::verify_base_ptrs( ResourceArea *a ) const {
+#ifdef ASSERT
+  Unique_Node_List worklist(a);
   for( uint i = 0; i < _cfg._num_blocks; i++ ) {
     Block *b = _cfg._blocks[i];
     for( uint j = b->end_idx() + 1; j > 1; j-- ) {
@@ -287,28 +287,81 @@
           // Now scan for a live derived pointer
           if (jvms->oopoff() < sfpt->req()) {
             // Check each derived/base pair
-            for (uint idx = jvms->oopoff(); idx < sfpt->req(); idx += 2) {
+            for (uint idx = jvms->oopoff(); idx < sfpt->req(); idx++) {
               Node *check = sfpt->in(idx);
-              uint j = 0;
+              bool is_derived = ((idx - jvms->oopoff()) & 1) == 0;
               // search upwards through spills and spill phis for AddP
-              while(true) {
-                if( !check ) break;
-                int idx = check->is_Copy();
-                if( idx ) {
-                  check = check->in(idx);
-                } else if( check->is_Phi() && check->_idx >= _oldphi ) {
-                  check = check->in(1);
-                } else
-                  break;
-                j++;
-                assert(j < 100000,"Derived pointer checking in infinite loop");
+              worklist.clear();
+              worklist.push(check);
+              uint k = 0;
+              while( k < worklist.size() ) {
+                check = worklist.at(k);
+                assert(check,"Bad base or derived pointer");
+                // See PhaseChaitin::find_base_for_derived() for all cases.
+                int isc = check->is_Copy();
+                if( isc ) {
+                  worklist.push(check->in(isc));
+                } else if( check->is_Phi() ) {
+                  for (uint m = 1; m < check->req(); m++)
+                    worklist.push(check->in(m));
+                } else if( check->is_Con() ) {
+                  if (is_derived) {
+                    // Derived is NULL+offset
+                    assert(!is_derived || check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad derived pointer");
+                  } else {
+                    assert(check->bottom_type()->is_ptr()->_offset == 0,"Bad base pointer");
+                    // Base either ConP(NULL) or loadConP
+                    if (check->is_Mach()) {
+                      assert(check->as_Mach()->ideal_Opcode() == Op_ConP,"Bad base pointer");
+                    } else {
+                      assert(check->Opcode() == Op_ConP &&
+                             check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad base pointer");
+                    }
+                  }
+                } else if( check->bottom_type()->is_ptr()->_offset == 0 ) {
+                  if(check->is_Proj() || check->is_Mach() &&
+                     (check->as_Mach()->ideal_Opcode() == Op_CreateEx ||
+                      check->as_Mach()->ideal_Opcode() == Op_ThreadLocal ||
+                      check->as_Mach()->ideal_Opcode() == Op_CMoveP ||
+                      check->as_Mach()->ideal_Opcode() == Op_CheckCastPP ||
+#ifdef _LP64
+                      UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_CastPP ||
+                      UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_DecodeN ||
+#endif
+                      check->as_Mach()->ideal_Opcode() == Op_LoadP ||
+                      check->as_Mach()->ideal_Opcode() == Op_LoadKlass)) {
+                    // Valid nodes
+                  } else {
+                    check->dump();
+                    assert(false,"Bad base or derived pointer");
+                  }
+                } else {
+                  assert(is_derived,"Bad base pointer");
+                  assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer");
+                }
+                k++;
+                assert(k < 100000,"Derived pointer checking in infinite loop");
               } // End while
-              assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer")
             }
           } // End of check for derived pointers
         } // End of Kcheck for debug info
       } // End of if found a safepoint
     } // End of forall instructions in block
   } // End of forall blocks
+#endif
 }
+
+//------------------------------verify-------------------------------------
+// Verify that graphs and base pointers are still sane.
+void PhaseChaitin::verify( ResourceArea *a, bool verify_ifg ) const {
+#ifdef ASSERT
+  if( VerifyOpto || VerifyRegisterAllocator ) {
+    _cfg.verify();
+    verify_base_ptrs(a);
+    if(verify_ifg)
+      _ifg->verify(this);
+  }
 #endif
+}
+
+#endif
--- a/src/share/vm/opto/locknode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/locknode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -121,7 +121,7 @@
   kill_dead_locals();
 
   pop();                        // Pop oop to unlock
-  // Because monitors are guarenteed paired (else we bail out), we know
+  // Because monitors are guaranteed paired (else we bail out), we know
   // the matching Lock for this Unlock.  Hence we know there is no need
   // for a null check on Unlock.
   shared_unlock(map()->peek_monitor_box(), map()->peek_monitor_obj());
--- a/src/share/vm/opto/loopTransform.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/loopTransform.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -119,7 +119,7 @@
 
 //---------------------is_invariant_addition-----------------------------
 // Return nonzero index of invariant operand for an Add or Sub
-// of (nonconstant) invariant and variant values. Helper for reassoicate_invariants.
+// of (nonconstant) invariant and variant values. Helper for reassociate_invariants.
 int IdealLoopTree::is_invariant_addition(Node* n, PhaseIdealLoop *phase) {
   int op = n->Opcode();
   if (op == Op_AddI || op == Op_SubI) {
@@ -520,7 +520,7 @@
 //------------------------------policy_align-----------------------------------
 // Return TRUE or FALSE if the loop should be cache-line aligned.  Gather the
 // expression that does the alignment.  Note that only one array base can be
-// aligned in a loop (unless the VM guarentees mutual alignment).  Note that
+// aligned in a loop (unless the VM guarantees mutual alignment).  Note that
 // if we vectorize short memory ops into longer memory ops, we may want to
 // increase alignment.
 bool IdealLoopTree::policy_align( PhaseIdealLoop *phase ) const {
@@ -1630,6 +1630,10 @@
   // Before attempting fancy unrolling, RCE or alignment, see if we want
   // to completely unroll this loop or do loop unswitching.
   if( cl->is_normal_loop() ) {
+    if (should_unswitch) {
+      phase->do_unswitching(this, old_new);
+      return true;
+    }
     bool should_maximally_unroll =  policy_maximally_unroll(phase);
     if( should_maximally_unroll ) {
       // Here we did some unrolling and peeling.  Eventually we will
@@ -1637,10 +1641,6 @@
       phase->do_maximally_unroll(this,old_new);
       return true;
     }
-    if (should_unswitch) {
-      phase->do_unswitching(this, old_new);
-      return true;
-    }
   }
 
 
--- a/src/share/vm/opto/loopUnswitch.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/loopUnswitch.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -131,7 +131,7 @@
 
   ProjNode* proj_false = invar_iff->proj_out(0)->as_Proj();
 
-  // Hoist invariant casts out of each loop to the appropiate
+  // Hoist invariant casts out of each loop to the appropriate
   // control projection.
 
   Node_List worklist;
--- a/src/share/vm/opto/loopnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/loopnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -274,7 +274,7 @@
   //
   // Canonicalize the condition on the test.  If we can exactly determine
   // the trip-counter exit value, then set limit to that value and use
-  // a '!=' test.  Otherwise use conditon '<' for count-up loops and
+  // a '!=' test.  Otherwise use condition '<' for count-up loops and
   // '>' for count-down loops.  If the condition is inverted and we will
   // be rolling through MININT to MAXINT, then bail out.
 
@@ -290,7 +290,7 @@
 
   // If compare points to incr, we are ok.  Otherwise the compare
   // can directly point to the phi; in this case adjust the compare so that
-  // it points to the incr by adusting the limit.
+  // it points to the incr by adjusting the limit.
   if( cmp->in(1) == phi || cmp->in(2) == phi )
     limit = gvn->transform(new (C, 3) AddINode(limit,stride));
 
@@ -471,7 +471,7 @@
   lazy_replace( x, l );
   set_idom(l, init_control, dom_depth(x));
 
-  // Check for immediately preceeding SafePoint and remove
+  // Check for immediately preceding SafePoint and remove
   Node *sfpt2 = le->in(0);
   if( sfpt2->Opcode() == Op_SafePoint && is_deleteable_safept(sfpt2))
     lazy_replace( sfpt2, sfpt2->in(TypeFunc::Control));
@@ -1506,7 +1506,7 @@
 
   // Build Dominators for elision of NULL checks & loop finding.
   // Since nodes do not have a slot for immediate dominator, make
-  // a persistant side array for that info indexed on node->_idx.
+  // a persistent side array for that info indexed on node->_idx.
   _idom_size = C->unique();
   _idom      = NEW_RESOURCE_ARRAY( Node*, _idom_size );
   _dom_depth = NEW_RESOURCE_ARRAY( uint,  _idom_size );
@@ -1529,7 +1529,7 @@
 
   // Given dominators, try to find inner loops with calls that must
   // always be executed (call dominates loop tail).  These loops do
-  // not need a seperate safepoint.
+  // not need a separate safepoint.
   Node_List cisstack(a);
   _ltree_root->check_safepts(visited, cisstack);
 
@@ -2332,7 +2332,7 @@
       if (done) {
         // All of n's inputs have been processed, complete post-processing.
 
-        // Compute earilest point this Node can go.
+        // Compute earliest point this Node can go.
         // CFG, Phi, pinned nodes already know their controlling input.
         if (!has_node(n)) {
           // Record earliest legal location
@@ -2654,7 +2654,7 @@
     case Op_ModF:
     case Op_ModD:
     case Op_LoadB:              // Same with Loads; they can sink
-    case Op_LoadC:              // during loop optimizations.
+    case Op_LoadUS:             // during loop optimizations.
     case Op_LoadD:
     case Op_LoadF:
     case Op_LoadI:
@@ -2668,13 +2668,15 @@
     case Op_LoadD_unaligned:
     case Op_LoadL_unaligned:
     case Op_StrComp:            // Does a bunch of load-like effects
+    case Op_StrEquals:
+    case Op_StrIndexOf:
     case Op_AryEq:
       pinned = false;
     }
     if( pinned ) {
-      IdealLoopTree *choosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
-      if( !choosen_loop->_child )       // Inner loop?
-        choosen_loop->_body.push(n); // Collect inner loops
+      IdealLoopTree *chosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
+      if( !chosen_loop->_child )       // Inner loop?
+        chosen_loop->_body.push(n); // Collect inner loops
       return;
     }
   } else {                      // No slot zero
@@ -2746,9 +2748,9 @@
   set_ctrl(n, least);
 
   // Collect inner loop bodies
-  IdealLoopTree *choosen_loop = get_loop(least);
-  if( !choosen_loop->_child )   // Inner loop?
-    choosen_loop->_body.push(n);// Collect inner loops
+  IdealLoopTree *chosen_loop = get_loop(least);
+  if( !chosen_loop->_child )   // Inner loop?
+    chosen_loop->_body.push(n);// Collect inner loops
 }
 
 #ifndef PRODUCT
--- a/src/share/vm/opto/loopnode.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/loopnode.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -390,7 +390,7 @@
 
   // Return TRUE or FALSE if the loop should be cache-line aligned.
   // Gather the expression that does the alignment.  Note that only
-  // one array base can be aligned in a loop (unless the VM guarentees
+  // one array base can be aligned in a loop (unless the VM guarantees
   // mutual alignment).  Note that if we vectorize short memory ops
   // into longer memory ops, we may want to increase alignment.
   bool policy_align( PhaseIdealLoop *phase ) const;
@@ -403,7 +403,7 @@
   // Reassociate invariant add and subtract expressions.
   Node* reassociate_add_sub(Node* n1, PhaseIdealLoop *phase);
   // Return nonzero index of invariant operand if invariant and variant
-  // are combined with an Add or Sub. Helper for reassoicate_invariants.
+  // are combined with an Add or Sub. Helper for reassociate_invariants.
   int is_invariant_addition(Node* n, PhaseIdealLoop *phase);
 
   // Return true if n is invariant
--- a/src/share/vm/opto/loopopts.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/loopopts.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -97,7 +97,7 @@
       // (Note: This tweaking with igvn only works because x is a new node.)
       _igvn.set_type(x, t);
       // If x is a TypeNode, capture any more-precise type permanently into Node
-      // othewise it will be not updated during igvn->transform since
+      // otherwise it will be not updated during igvn->transform since
       // igvn->type(x) is set to x->Value() already.
       x->raise_bottom_type(t);
       Node *y = x->Identity(&_igvn);
@@ -346,7 +346,10 @@
 
     // Yes!  Reshape address expression!
     Node *inv_scale = new (C, 3) LShiftINode( add_invar, scale );
-    register_new_node( inv_scale, add_invar_ctrl );
+    Node *inv_scale_ctrl =
+      dom_depth(add_invar_ctrl) > dom_depth(scale_ctrl) ?
+      add_invar_ctrl : scale_ctrl;
+    register_new_node( inv_scale, inv_scale_ctrl );
     Node *var_scale = new (C, 3) LShiftINode( add_var, scale );
     register_new_node( var_scale, n_ctrl );
     Node *var_add = new (C, 3) AddINode( var_scale, inv_scale );
@@ -667,7 +670,6 @@
   }
 }
 
-#ifdef _LP64
 static bool merge_point_safe(Node* region) {
   // 4799512: Stop split_if_with_blocks from splitting a block with a ConvI2LNode
   // having a PhiNode input. This sidesteps the dangerous case where the split
@@ -676,20 +678,25 @@
   // uses.
   // A better fix for this problem can be found in the BugTraq entry, but
   // expediency for Mantis demands this hack.
+  // 6855164: If the merge point has a FastLockNode with a PhiNode input, we stop
+  // split_if_with_blocks from splitting a block because we could not move around
+  // the FastLockNode.
   for (DUIterator_Fast imax, i = region->fast_outs(imax); i < imax; i++) {
     Node* n = region->fast_out(i);
     if (n->is_Phi()) {
       for (DUIterator_Fast jmax, j = n->fast_outs(jmax); j < jmax; j++) {
         Node* m = n->fast_out(j);
-        if (m->Opcode() == Op_ConvI2L) {
+        if (m->is_FastLock())
           return false;
-        }
+#ifdef _LP64
+        if (m->Opcode() == Op_ConvI2L)
+          return false;
+#endif
       }
     }
   }
   return true;
 }
-#endif
 
 
 //------------------------------place_near_use---------------------------------
@@ -771,12 +778,10 @@
       if( get_loop(n_ctrl->in(j)) != n_loop )
         return;
 
-#ifdef _LP64
     // Check for safety of the merge point.
     if( !merge_point_safe(n_ctrl) ) {
       return;
     }
-#endif
 
     // Split compare 'n' through the merge point if it is profitable
     Node *phi = split_thru_phi( n, n_ctrl, policy );
@@ -879,7 +884,7 @@
             Node *x_ctrl = NULL;
             if( u->is_Phi() ) {
               // Replace all uses of normal nodes.  Replace Phi uses
-              // individually, so the seperate Nodes can sink down
+              // individually, so the separate Nodes can sink down
               // different paths.
               uint k = 1;
               while( u->in(k) != n ) k++;
--- a/src/share/vm/opto/machnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/machnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -136,7 +136,7 @@
 // Size of instruction in bytes
 uint MachNode::size(PhaseRegAlloc *ra_) const {
   // If a virtual was not defined for this specific instruction,
-  // Call the helper which finds the size by emiting the bits.
+  // Call the helper which finds the size by emitting the bits.
   return MachNode::emit_size(ra_);
 }
 
@@ -300,6 +300,12 @@
           }
         }
         adr_type = t_disp->add_offset(offset);
+      } else if( base == NULL && offset != 0 && offset != Type::OffsetBot ) {
+        // Use ideal type if it is oop ptr.
+        const TypePtr *tp = oper->type()->isa_ptr();
+        if( tp != NULL) {
+          adr_type = tp;
+        }
       }
     }
 
@@ -340,6 +346,10 @@
   if (base == NodeSentinel)  return TypePtr::BOTTOM;
 
   const Type* t = base->bottom_type();
+  if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
+    // 32-bit unscaled narrow oop can be the base of any address expression
+    t = t->make_ptr();
+  }
   if (t->isa_intptr_t() && offset != 0 && offset != Type::OffsetBot) {
     // We cannot assert that the offset does not look oop-ish here.
     // Depending on the heap layout the cardmark base could land
@@ -353,6 +363,7 @@
 
   // be conservative if we do not recognize the type
   if (tp == NULL) {
+    assert(false, "this path may produce not optimal code");
     return TypePtr::BOTTOM;
   }
   assert(tp->base() != Type::AnyPtr, "not a bare pointer");
--- a/src/share/vm/opto/macro.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/macro.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +64,7 @@
       uint old_unique = C->unique();
       Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
       if (old_unique != C->unique()) {
+        new_in->set_req(0, newcall->in(0)); // reset control edge
         new_in = transform_later(new_in); // Register new node.
       }
       old_in = new_in;
@@ -197,14 +198,79 @@
 }
 
 // Eliminate a card mark sequence.  p2x is a ConvP2XNode
-void PhaseMacroExpand::eliminate_card_mark(Node *p2x) {
+void PhaseMacroExpand::eliminate_card_mark(Node* p2x) {
   assert(p2x->Opcode() == Op_CastP2X, "ConvP2XNode required");
-  Node *shift = p2x->unique_out();
-  Node *addp = shift->unique_out();
-  for (DUIterator_Last jmin, j = addp->last_outs(jmin); j >= jmin; --j) {
-    Node *st = addp->last_out(j);
-    assert(st->is_Store(), "store required");
-    _igvn.replace_node(st, st->in(MemNode::Memory));
+  if (!UseG1GC) {
+    // vanilla/CMS post barrier
+    Node *shift = p2x->unique_out();
+    Node *addp = shift->unique_out();
+    for (DUIterator_Last jmin, j = addp->last_outs(jmin); j >= jmin; --j) {
+      Node *st = addp->last_out(j);
+      assert(st->is_Store(), "store required");
+      _igvn.replace_node(st, st->in(MemNode::Memory));
+    }
+  } else {
+    // G1 pre/post barriers
+    assert(p2x->outcnt() == 2, "expects 2 users: Xor and URShift nodes");
+    // It could be only one user, URShift node, in Object.clone() instrinsic
+    // but the new allocation is passed to arraycopy stub and it could not
+    // be scalar replaced. So we don't check the case.
+
+    // Remove G1 post barrier.
+
+    // Search for CastP2X->Xor->URShift->Cmp path which
+    // checks if the store done to a different from the value's region.
+    // And replace Cmp with #0 (false) to collapse G1 post barrier.
+    Node* xorx = NULL;
+    for (DUIterator_Fast imax, i = p2x->fast_outs(imax); i < imax; i++) {
+      Node* u = p2x->fast_out(i);
+      if (u->Opcode() == Op_XorX) {
+        xorx = u;
+        break;
+      }
+    }
+    assert(xorx != NULL, "missing G1 post barrier");
+    Node* shift = xorx->unique_out();
+    Node* cmpx = shift->unique_out();
+    assert(cmpx->is_Cmp() && cmpx->unique_out()->is_Bool() &&
+    cmpx->unique_out()->as_Bool()->_test._test == BoolTest::ne,
+    "missing region check in G1 post barrier");
+    _igvn.replace_node(cmpx, makecon(TypeInt::CC_EQ));
+
+    // Remove G1 pre barrier.
+
+    // Search "if (marking != 0)" check and set it to "false".
+    Node* this_region = p2x->in(0);
+    assert(this_region != NULL, "");
+    // There is no G1 pre barrier if previous stored value is NULL
+    // (for example, after initialization).
+    if (this_region->is_Region() && this_region->req() == 3) {
+      int ind = 1;
+      if (!this_region->in(ind)->is_IfFalse()) {
+        ind = 2;
+      }
+      if (this_region->in(ind)->is_IfFalse()) {
+        Node* bol = this_region->in(ind)->in(0)->in(1);
+        assert(bol->is_Bool(), "");
+        cmpx = bol->in(1);
+        if (bol->as_Bool()->_test._test == BoolTest::ne &&
+            cmpx->is_Cmp() && cmpx->in(2) == intcon(0) &&
+            cmpx->in(1)->is_Load()) {
+          Node* adr = cmpx->in(1)->as_Load()->in(MemNode::Address);
+          const int marking_offset = in_bytes(JavaThread::satb_mark_queue_offset() +
+                                              PtrQueue::byte_offset_of_active());
+          if (adr->is_AddP() && adr->in(AddPNode::Base) == top() &&
+              adr->in(AddPNode::Address)->Opcode() == Op_ThreadLocal &&
+              adr->in(AddPNode::Offset) == MakeConX(marking_offset)) {
+            _igvn.replace_node(cmpx, makecon(TypeInt::CC_EQ));
+          }
+        }
+      }
+    }
+    // Now CastP2X can be removed since it is used only on dead path
+    // which currently still alive until igvn optimize it.
+    assert(p2x->unique_out()->Opcode() == Op_URShiftX, "");
+    _igvn.replace_node(p2x, top());
   }
 }
 
@@ -215,7 +281,7 @@
   const TypeOopPtr *tinst = phase->C->get_adr_type(alias_idx)->isa_oopptr();
   while (true) {
     if (mem == alloc_mem || mem == start_mem ) {
-      return mem;  // hit one of our sentinals
+      return mem;  // hit one of our sentinels
     } else if (mem->is_MergeMem()) {
       mem = mem->as_MergeMem()->memory_at(alias_idx);
     } else if (mem->is_Proj() && mem->as_Proj()->_con == TypeFunc::Memory) {
@@ -250,6 +316,15 @@
         assert(adr_idx == Compile::AliasIdxRaw, "address must match or be raw");
       }
       mem = mem->in(MemNode::Memory);
+    } else if (mem->Opcode() == Op_SCMemProj) {
+      assert(mem->in(0)->is_LoadStore(), "sanity");
+      const TypePtr* atype = mem->in(0)->in(MemNode::Address)->bottom_type()->is_ptr();
+      int adr_idx = Compile::current()->get_alias_index(atype);
+      if (adr_idx == alias_idx) {
+        assert(false, "Object is not scalar replaceable if a LoadStore node access its field");
+        return NULL;
+      }
+      mem = mem->in(0)->in(MemNode::Memory);
     } else {
       return mem;
     }
@@ -329,8 +404,15 @@
           return NULL;
         }
         values.at_put(j, val);
+      } else if (val->Opcode() == Op_SCMemProj) {
+        assert(val->in(0)->is_LoadStore(), "sanity");
+        assert(false, "Object is not scalar replaceable if a LoadStore node access its field");
+        return NULL;
       } else {
+#ifdef ASSERT
+        val->dump();
         assert(false, "unknown node on this path");
+#endif
         return NULL;  // unknown node on this path
       }
     }
@@ -743,14 +825,11 @@
           if (n->is_Store()) {
             _igvn.replace_node(n, n->in(MemNode::Memory));
           } else {
-            assert( n->Opcode() == Op_CastP2X, "CastP2X required");
             eliminate_card_mark(n);
           }
           k -= (oc2 - use->outcnt());
         }
       } else {
-        assert( !use->is_SafePoint(), "safepoint uses must have been already elimiated");
-        assert( use->Opcode() == Op_CastP2X, "CastP2X required");
         eliminate_card_mark(use);
       }
       j -= (oc1 - res->outcnt());
@@ -789,8 +868,7 @@
         }
       } else if (use->is_AddP()) {
         // raw memory addresses used only by the initialization
-        _igvn.hash_delete(use);
-        _igvn.subsume_node(use, C->top());
+        _igvn.replace_node(use, C->top());
       } else  {
         assert(false, "only Initialize or AddP expected");
       }
@@ -952,13 +1030,6 @@
   Node* klass_node        = alloc->in(AllocateNode::KlassNode);
   Node* initial_slow_test = alloc->in(AllocateNode::InitialTest);
 
-  // With escape analysis, the entire memory state was needed to be able to
-  // eliminate the allocation.  Since the allocations cannot be eliminated,
-  // optimize it to the raw slice.
-  if (mem->is_MergeMem()) {
-    mem = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
-  }
-
   assert(ctrl != NULL, "must have control");
   // We need a Region and corresponding Phi's to merge the slow-path and fast-path results.
   // they will not be used if "always_slow" is set
@@ -979,7 +1050,7 @@
     initial_slow_test = BoolNode::make_predicate(initial_slow_test, &_igvn);
   }
 
-  if (DTraceAllocProbes ||
+  if (C->env()->dtrace_alloc_probes() ||
       !UseTLAB && (!Universe::heap()->supports_inline_contig_alloc() ||
                    (UseConcMarkSweepGC && CMSIncrementalMode))) {
     // Force slow-path allocation
@@ -1016,6 +1087,11 @@
   Node *slow_mem = mem;  // save the current memory state for slow path
   // generate the fast allocation code unless we know that the initial test will always go slow
   if (!always_slow) {
+    // Fast path modifies only raw memory.
+    if (mem->is_MergeMem()) {
+      mem = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
+    }
+
     Node* eden_top_adr;
     Node* eden_end_adr;
 
@@ -1136,7 +1212,7 @@
                                         fast_oop_ctrl, fast_oop_rawmem, fast_oop,
                                         klass_node, length, size_in_bytes);
 
-    if (ExtendedDTraceProbes) {
+    if (C->env()->dtrace_extended_probes()) {
       // Slow-path call
       int size = TypeFunc::Parms + 2;
       CallLeafNode *call = new (C, size) CallLeafNode(OptoRuntime::dtrace_object_alloc_Type(),
@@ -1239,8 +1315,6 @@
     }
   }
 
-  mem = result_phi_rawmem;
-
   // An allocate node has separate i_o projections for the uses on the control and i_o paths
   // Replace uses of the control i_o projection with result_phi_i_o (unless we are only generating a slow call)
   if (_ioproj_fallthrough == NULL) {
@@ -1278,8 +1352,7 @@
   if (_fallthroughcatchproj != NULL) {
     ctrl = _fallthroughcatchproj->clone();
     transform_later(ctrl);
-    _igvn.hash_delete(_fallthroughcatchproj);
-    _igvn.subsume_node(_fallthroughcatchproj, result_region);
+    _igvn.replace_node(_fallthroughcatchproj, result_region);
   } else {
     ctrl = top();
   }
@@ -1290,8 +1363,7 @@
   } else {
     slow_result = _resproj->clone();
     transform_later(slow_result);
-    _igvn.hash_delete(_resproj);
-    _igvn.subsume_node(_resproj, result_phi_rawoop);
+    _igvn.replace_node(_resproj, result_phi_rawoop);
   }
 
   // Plug slow-path into result merge point
@@ -1600,18 +1672,15 @@
     assert(membar != NULL && membar->Opcode() == Op_MemBarAcquire, "");
     Node* ctrlproj = membar->proj_out(TypeFunc::Control);
     Node* memproj = membar->proj_out(TypeFunc::Memory);
-    _igvn.hash_delete(ctrlproj);
-    _igvn.subsume_node(ctrlproj, fallthroughproj);
-    _igvn.hash_delete(memproj);
-    _igvn.subsume_node(memproj, memproj_fallthrough);
+    _igvn.replace_node(ctrlproj, fallthroughproj);
+    _igvn.replace_node(memproj, memproj_fallthrough);
 
     // Delete FastLock node also if this Lock node is unique user
     // (a loop peeling may clone a Lock node).
     Node* flock = alock->as_Lock()->fastlock_node();
     if (flock->outcnt() == 1) {
       assert(flock->unique_out() == alock, "sanity");
-      _igvn.hash_delete(flock);
-      _igvn.subsume_node(flock, top());
+      _igvn.replace_node(flock, top());
     }
   }
 
@@ -1621,20 +1690,16 @@
     MemBarNode* membar = ctrl->in(0)->as_MemBar();
     assert(membar->Opcode() == Op_MemBarRelease &&
            mem->is_Proj() && membar == mem->in(0), "");
-    _igvn.hash_delete(fallthroughproj);
-    _igvn.subsume_node(fallthroughproj, ctrl);
-    _igvn.hash_delete(memproj_fallthrough);
-    _igvn.subsume_node(memproj_fallthrough, mem);
+    _igvn.replace_node(fallthroughproj, ctrl);
+    _igvn.replace_node(memproj_fallthrough, mem);
     fallthroughproj = ctrl;
     memproj_fallthrough = mem;
     ctrl = membar->in(TypeFunc::Control);
     mem  = membar->in(TypeFunc::Memory);
   }
 
-  _igvn.hash_delete(fallthroughproj);
-  _igvn.subsume_node(fallthroughproj, ctrl);
-  _igvn.hash_delete(memproj_fallthrough);
-  _igvn.subsume_node(memproj_fallthrough, mem);
+  _igvn.replace_node(fallthroughproj, ctrl);
+  _igvn.replace_node(memproj_fallthrough, mem);
   return true;
 }
 
@@ -1655,7 +1720,7 @@
 
   if (UseOptoBiasInlining) {
     /*
-     *  See the full descrition in MacroAssembler::biased_locking_enter().
+     *  See the full description in MacroAssembler::biased_locking_enter().
      *
      *  if( (mark_word & biased_lock_mask) == biased_lock_pattern ) {
      *    // The object is biased.
@@ -1866,13 +1931,12 @@
   region->init_req(1, slow_ctrl);
   // region inputs are now complete
   transform_later(region);
-  _igvn.subsume_node(_fallthroughproj, region);
+  _igvn.replace_node(_fallthroughproj, region);
 
   Node *memproj = transform_later( new(C, 1) ProjNode(call, TypeFunc::Memory) );
   mem_phi->init_req(1, memproj );
   transform_later(mem_phi);
-  _igvn.hash_delete(_memproj_fallthrough);
-  _igvn.subsume_node(_memproj_fallthrough, mem_phi);
+  _igvn.replace_node(_memproj_fallthrough, mem_phi);
 }
 
 //------------------------------expand_unlock_node----------------------
@@ -1891,7 +1955,7 @@
 
   if (UseOptoBiasInlining) {
     // Check for biased locking unlock case, which is a no-op.
-    // See the full descrition in MacroAssembler::biased_locking_exit().
+    // See the full description in MacroAssembler::biased_locking_exit().
     region  = new (C, 4) RegionNode(4);
     // create a Phi for the memory state
     mem_phi = new (C, 4) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
@@ -1930,14 +1994,13 @@
   region->init_req(1, slow_ctrl);
   // region inputs are now complete
   transform_later(region);
-  _igvn.subsume_node(_fallthroughproj, region);
+  _igvn.replace_node(_fallthroughproj, region);
 
   Node *memproj = transform_later( new(C, 1) ProjNode(call, TypeFunc::Memory) );
   mem_phi->init_req(1, memproj );
   mem_phi->init_req(2, mem);
   transform_later(mem_phi);
-  _igvn.hash_delete(_memproj_fallthrough);
-  _igvn.subsume_node(_memproj_fallthrough, mem_phi);
+  _igvn.replace_node(_memproj_fallthrough, mem_phi);
 }
 
 //------------------------------expand_macro_nodes----------------------
@@ -1956,9 +2019,7 @@
       if (n->is_AbstractLock()) {
         success = eliminate_locking_node(n->as_AbstractLock());
       } else if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) {
-        _igvn.add_users_to_worklist(n);
-        _igvn.hash_delete(n);
-        _igvn.subsume_node(n, n->in(1));
+        _igvn.replace_node(n, n->in(1));
         success = true;
       }
       assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
--- a/src/share/vm/opto/matcher.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/matcher.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +141,10 @@
 
 //---------------------------match---------------------------------------------
 void Matcher::match( ) {
+  if( MaxLabelRootDepth < 100 ) { // Too small?
+    assert(false, "invalid MaxLabelRootDepth, increase it to 100 minimum");
+    MaxLabelRootDepth = 100;
+  }
   // One-time initialization of some register masks.
   init_spill_mask( C->root()->in(1) );
   _return_addr_mask = return_addr();
@@ -275,6 +279,12 @@
 
   C->print_method("Before Matching");
 
+  // Create new ideal node ConP #NULL even if it does exist in old space
+  // to avoid false sharing if the corresponding mach node is not used.
+  // The corresponding mach node is only used in rare cases for derived
+  // pointers.
+  Node* new_ideal_null = ConNode::make(C, TypePtr::NULL_PTR);
+
   // Swap out to old-space; emptying new-space
   Arena *old = C->node_arena()->move_contents(C->old_arena());
 
@@ -316,7 +326,16 @@
         }
       }
 
+      // Generate new mach node for ConP #NULL
+      assert(new_ideal_null != NULL, "sanity");
+      _mach_null = match_tree(new_ideal_null);
+      // Don't set control, it will confuse GCM since there are no uses.
+      // The control will be set when this node is used first time
+      // in find_base_for_derived().
+      assert(_mach_null != NULL, "");
+
       C->set_root(xroot->is_Root() ? xroot->as_Root() : NULL);
+
 #ifdef ASSERT
       verify_new_nodes_only(xroot);
 #endif
@@ -746,6 +765,8 @@
   if (nidx == Compile::AliasIdxBot && midx == Compile::AliasIdxTop) {
     switch (n->Opcode()) {
     case Op_StrComp:
+    case Op_StrEquals:
+    case Op_StrIndexOf:
     case Op_AryEq:
     case Op_MemBarVolatile:
     case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type?
@@ -897,7 +918,7 @@
 #ifdef ASSERT
           _new2old_map.map(m->_idx, n);
 #endif
-          mstack.push(m, Post_Visit, n, i); // Don't neet to visit
+          mstack.push(m, Post_Visit, n, i); // Don't need to visit
           mstack.push(m->in(0), Visit, m, 0);
         } else {
           mstack.push(m, Visit, n, i);
@@ -1267,7 +1288,7 @@
     }
   }
 
-  // Not forceably cloning.  If shared, put it into a register.
+  // Not forceable cloning.  If shared, put it into a register.
   return shared;
 }
 
@@ -1468,8 +1489,7 @@
 #ifdef ASSERT
     // Verify adr type after matching memory operation
     const MachOper* oper = mach->memory_operand();
-    if (oper != NULL && oper != (MachOper*)-1 &&
-        mach->adr_type() != TypeRawPtr::BOTTOM) { // non-direct addressing mode
+    if (oper != NULL && oper != (MachOper*)-1) {
       // It has a unique memory operand.  Find corresponding ideal mem node.
       Node* m = NULL;
       if (leaf->is_Mem()) {
@@ -1481,8 +1501,13 @@
       const Type* mach_at = mach->adr_type();
       // DecodeN node consumed by an address may have different type
       // then its input. Don't compare types for such case.
-      if (m->adr_type() != mach_at && m->in(MemNode::Address)->is_AddP() &&
-          m->in(MemNode::Address)->in(AddPNode::Address)->is_DecodeN()) {
+      if (m->adr_type() != mach_at &&
+          (m->in(MemNode::Address)->is_DecodeN() ||
+           m->in(MemNode::Address)->is_AddP() &&
+           m->in(MemNode::Address)->in(AddPNode::Address)->is_DecodeN() ||
+           m->in(MemNode::Address)->is_AddP() &&
+           m->in(MemNode::Address)->in(AddPNode::Address)->is_AddP() &&
+           m->in(MemNode::Address)->in(AddPNode::Address)->in(AddPNode::Address)->is_DecodeN())) {
         mach_at = m->adr_type();
       }
       if (m->adr_type() != mach_at) {
@@ -1542,7 +1567,7 @@
   // This is what my child will give me.
   int opnd_class_instance = s->_rule[op];
   // Choose between operand class or not.
-  // This is what I will recieve.
+  // This is what I will receive.
   int catch_op = (FIRST_OPERAND_CLASS <= op && op < NUM_OPERANDS) ? opnd_class_instance : op;
   // New rule for child.  Chase operand classes to get the actual rule.
   int newrule = s->_rule[catch_op];
@@ -1707,11 +1732,18 @@
 void Matcher::find_shared( Node *n ) {
   // Allocate stack of size C->unique() * 2 to avoid frequent realloc
   MStack mstack(C->unique() * 2);
+  // Mark nodes as address_visited if they are inputs to an address expression
+  VectorSet address_visited(Thread::current()->resource_area());
   mstack.push(n, Visit);     // Don't need to pre-visit root node
   while (mstack.is_nonempty()) {
     n = mstack.node();       // Leave node on stack
     Node_State nstate = mstack.state();
+    uint nop = n->Opcode();
     if (nstate == Pre_Visit) {
+      if (address_visited.test(n->_idx)) { // Visited in address already?
+        // Flag as visited and shared now.
+        set_visited(n);
+      }
       if (is_visited(n)) {   // Visited already?
         // Node is shared and has no reason to clone.  Flag it as shared.
         // This causes it to match into a register for the sharing.
@@ -1726,7 +1758,7 @@
       set_visited(n);   // Flag as visited now
       bool mem_op = false;
 
-      switch( n->Opcode() ) {  // Handle some opcodes special
+      switch( nop ) {  // Handle some opcodes special
       case Op_Phi:             // Treat Phis as shared roots
       case Op_Parm:
       case Op_Proj:            // All handled specially during matching
@@ -1776,6 +1808,8 @@
         mstack.push(n->in(0), Pre_Visit);     // Visit Control input
         continue;                             // while (mstack.is_nonempty())
       case Op_StrComp:
+      case Op_StrEquals:
+      case Op_StrIndexOf:
       case Op_AryEq:
         set_shared(n); // Force result into register (it will be anyways)
         break;
@@ -1824,7 +1858,7 @@
         mem_op = true;
         break;
       case Op_LoadB:
-      case Op_LoadC:
+      case Op_LoadUS:
       case Op_LoadD:
       case Op_LoadF:
       case Op_LoadI:
@@ -1887,34 +1921,51 @@
             // to have a single use so force sharing here.
             set_shared(m->in(AddPNode::Base)->in(1));
           }
+
+          // Some inputs for address expression are not put on stack
+          // to avoid marking them as shared and forcing them into register
+          // if they are used only in address expressions.
+          // But they should be marked as shared if there are other uses
+          // besides address expressions.
+
           Node *off = m->in(AddPNode::Offset);
-          if( off->is_Con() ) {
-            set_visited(m);  // Flag as visited now
+          if( off->is_Con() &&
+              // When there are other uses besides address expressions
+              // put it on stack and mark as shared.
+              !is_visited(m) ) {
+            address_visited.test_set(m->_idx); // Flag as address_visited
             Node *adr = m->in(AddPNode::Address);
 
             // Intel, ARM and friends can handle 2 adds in addressing mode
             if( clone_shift_expressions && adr->is_AddP() &&
                 // AtomicAdd is not an addressing expression.
                 // Cheap to find it by looking for screwy base.
-                !adr->in(AddPNode::Base)->is_top() ) {
-              set_visited(adr);  // Flag as visited now
+                !adr->in(AddPNode::Base)->is_top() &&
+                // Are there other uses besides address expressions?
+                !is_visited(adr) ) {
+              address_visited.set(adr->_idx); // Flag as address_visited
               Node *shift = adr->in(AddPNode::Offset);
               // Check for shift by small constant as well
               if( shift->Opcode() == Op_LShiftX && shift->in(2)->is_Con() &&
-                  shift->in(2)->get_int() <= 3 ) {
-                set_visited(shift);  // Flag as visited now
+                  shift->in(2)->get_int() <= 3 &&
+                  // Are there other uses besides address expressions?
+                  !is_visited(shift) ) {
+                address_visited.set(shift->_idx); // Flag as address_visited
                 mstack.push(shift->in(2), Visit);
+                Node *conv = shift->in(1);
 #ifdef _LP64
                 // Allow Matcher to match the rule which bypass
                 // ConvI2L operation for an array index on LP64
                 // if the index value is positive.
-                if( shift->in(1)->Opcode() == Op_ConvI2L &&
-                    shift->in(1)->as_Type()->type()->is_long()->_lo >= 0 ) {
-                  set_visited(shift->in(1));  // Flag as visited now
-                  mstack.push(shift->in(1)->in(1), Pre_Visit);
+                if( conv->Opcode() == Op_ConvI2L &&
+                    conv->as_Type()->type()->is_long()->_lo >= 0 &&
+                    // Are there other uses besides address expressions?
+                    !is_visited(conv) ) {
+                  address_visited.set(conv->_idx); // Flag as address_visited
+                  mstack.push(conv->in(1), Pre_Visit);
                 } else
 #endif
-                mstack.push(shift->in(1), Pre_Visit);
+                mstack.push(conv, Pre_Visit);
               } else {
                 mstack.push(shift, Pre_Visit);
               }
@@ -1942,7 +1993,7 @@
       // BoolNode::match_edge always returns a zero.
 
       // We reorder the Op_If in a pre-order manner, so we can visit without
-      // accidently sharing the Cmp (the Bool and the If make 2 users).
+      // accidentally sharing the Cmp (the Bool and the If make 2 users).
       n->add_req( n->in(1)->in(1) ); // Add the Cmp next to the Bool
     }
     else if (nstate == Post_Visit) {
--- a/src/share/vm/opto/matcher.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/matcher.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -109,6 +109,9 @@
   Node* _mem_node;   // Ideal memory node consumed by mach node
 #endif
 
+  // Mach node for ConP #NULL
+  MachNode* _mach_null;
+
 public:
   int LabelRootDepth;
   static const int base2reg[];        // Map Types to machine register types
@@ -122,6 +125,8 @@
   static RegMask mreg2regmask[];
   static RegMask STACK_ONLY_mask;
 
+  MachNode* mach_null() const { return _mach_null; }
+
   bool    is_shared( Node *n ) { return _shared.test(n->_idx) != 0; }
   void   set_shared( Node *n ) {  _shared.set(n->_idx); }
   bool   is_visited( Node *n ) { return _visited.test(n->_idx) != 0; }
@@ -220,10 +225,16 @@
   OptoRegPair *_parm_regs;        // Array of machine registers per argument
   RegMask *_calling_convention_mask; // Array of RegMasks per argument
 
-  // Does matcher support this ideal node?
+  // Does matcher have a match rule for this ideal node?
   static const bool has_match_rule(int opcode);
   static const bool _hasMatchRule[_last_opcode];
 
+  // Does matcher have a match rule for this ideal node and is the
+  // predicate (if there is one) true?
+  // NOTE: If this function is used more commonly in the future, ADLC
+  // should generate this one.
+  static const bool match_rule_supported(int opcode);
+
   // Used to determine if we have fast l2f conversion
   // USII has it, USIII doesn't
   static const bool convL2FSupported(void);
--- a/src/share/vm/opto/memnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/memnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,12 +100,12 @@
   while (prev != result) {
     prev = result;
     if (result == start_mem)
-      break;  // hit one of our sentinals
+      break;  // hit one of our sentinels
     // skip over a call which does not affect this memory slice
     if (result->is_Proj() && result->as_Proj()->_con == TypeFunc::Memory) {
       Node *proj_in = result->in(0);
       if (proj_in->is_Allocate() && proj_in->_idx == instance_id) {
-        break;  // hit one of our sentinals
+        break;  // hit one of our sentinels
       } else if (proj_in->is_Call()) {
         CallNode *call = proj_in->as_Call();
         if (!call->may_modify(t_adr, phase)) {
@@ -198,7 +198,7 @@
     // If not, we can update the input infinitely along a MergeMem cycle
     // Equivalent code in PhiNode::Ideal
     Node* m  = phase->transform(mmem);
-    // If tranformed to a MergeMem, get the desired slice
+    // If transformed to a MergeMem, get the desired slice
     // Otherwise the returned node represents memory for every slice
     mem = (m->is_MergeMem())? m->as_MergeMem()->memory_at(alias_idx) : m;
     // Update input if it is progress over what we have now
@@ -218,6 +218,26 @@
   // Don't bother trying to transform a dead node
   if( ctl && ctl->is_top() )  return NodeSentinel;
 
+  PhaseIterGVN *igvn = phase->is_IterGVN();
+  // Wait if control on the worklist.
+  if (ctl && can_reshape && igvn != NULL) {
+    Node* bol = NULL;
+    Node* cmp = NULL;
+    if (ctl->in(0)->is_If()) {
+      assert(ctl->is_IfTrue() || ctl->is_IfFalse(), "sanity");
+      bol = ctl->in(0)->in(1);
+      if (bol->is_Bool())
+        cmp = ctl->in(0)->in(1)->in(1);
+    }
+    if (igvn->_worklist.member(ctl) ||
+        (bol != NULL && igvn->_worklist.member(bol)) ||
+        (cmp != NULL && igvn->_worklist.member(cmp)) ) {
+      // This control path may be dead.
+      // Delay this memory node transformation until the control is processed.
+      phase->is_IterGVN()->_worklist.push(this);
+      return NodeSentinel; // caller will return NULL
+    }
+  }
   // Ignore if memory is dead, or self-loop
   Node *mem = in(MemNode::Memory);
   if( phase->type( mem ) == Type::TOP ) return NodeSentinel; // caller will return NULL
@@ -227,14 +247,22 @@
   const Type *t_adr = phase->type( address );
   if( t_adr == Type::TOP )              return NodeSentinel; // caller will return NULL
 
-  PhaseIterGVN *igvn = phase->is_IterGVN();
-  if( can_reshape && igvn != NULL && igvn->_worklist.member(address) ) {
+  if( can_reshape && igvn != NULL &&
+      (igvn->_worklist.member(address) || phase->type(address) != adr_type()) ) {
     // The address's base and type may change when the address is processed.
     // Delay this mem node transformation until the address is processed.
     phase->is_IterGVN()->_worklist.push(this);
     return NodeSentinel; // caller will return NULL
   }
 
+#ifdef ASSERT
+  Node* base = NULL;
+  if (address->is_AddP())
+    base = address->in(AddPNode::Base);
+  assert(base == NULL || t_adr->isa_rawptr() ||
+        !phase->type(base)->higher_equal(TypePtr::NULL_PTR), "NULL+offs not RAW address?");
+#endif
+
   // Avoid independent memory operations
   Node* old_mem = mem;
 
@@ -778,15 +806,15 @@
            adr_type->offset() == arrayOopDesc::length_offset_in_bytes()),
          "use LoadRangeNode instead");
   switch (bt) {
-  case T_BOOLEAN:
-  case T_BYTE:    return new (C, 3) LoadBNode(ctl, mem, adr, adr_type, rt->is_int()    );
-  case T_INT:     return new (C, 3) LoadINode(ctl, mem, adr, adr_type, rt->is_int()    );
-  case T_CHAR:    return new (C, 3) LoadCNode(ctl, mem, adr, adr_type, rt->is_int()    );
-  case T_SHORT:   return new (C, 3) LoadSNode(ctl, mem, adr, adr_type, rt->is_int()    );
-  case T_LONG:    return new (C, 3) LoadLNode(ctl, mem, adr, adr_type, rt->is_long()   );
-  case T_FLOAT:   return new (C, 3) LoadFNode(ctl, mem, adr, adr_type, rt              );
-  case T_DOUBLE:  return new (C, 3) LoadDNode(ctl, mem, adr, adr_type, rt              );
-  case T_ADDRESS: return new (C, 3) LoadPNode(ctl, mem, adr, adr_type, rt->is_ptr()    );
+  case T_BOOLEAN: return new (C, 3) LoadUBNode(ctl, mem, adr, adr_type, rt->is_int()    );
+  case T_BYTE:    return new (C, 3) LoadBNode (ctl, mem, adr, adr_type, rt->is_int()    );
+  case T_INT:     return new (C, 3) LoadINode (ctl, mem, adr, adr_type, rt->is_int()    );
+  case T_CHAR:    return new (C, 3) LoadUSNode(ctl, mem, adr, adr_type, rt->is_int()    );
+  case T_SHORT:   return new (C, 3) LoadSNode (ctl, mem, adr, adr_type, rt->is_int()    );
+  case T_LONG:    return new (C, 3) LoadLNode (ctl, mem, adr, adr_type, rt->is_long()   );
+  case T_FLOAT:   return new (C, 3) LoadFNode (ctl, mem, adr, adr_type, rt              );
+  case T_DOUBLE:  return new (C, 3) LoadDNode (ctl, mem, adr, adr_type, rt              );
+  case T_ADDRESS: return new (C, 3) LoadPNode (ctl, mem, adr, adr_type, rt->is_ptr()    );
   case T_OBJECT:
 #ifdef _LP64
     if (adr->bottom_type()->is_ptr_to_narrowoop()) {
@@ -970,7 +998,7 @@
   }
 
   // Search for an existing data phi which was generated before for the same
-  // instance's field to avoid infinite genertion of phis in a loop.
+  // instance's field to avoid infinite generation of phis in a loop.
   Node *region = mem->in(0);
   if (is_instance_field_load_with_local_phi(region)) {
     const TypePtr *addr_t = in(MemNode::Address)->bottom_type()->isa_ptr();
@@ -1066,23 +1094,24 @@
         break;
       }
     }
-    LoadNode* load = NULL;
-    if (allocation != NULL && base->in(load_index)->is_Load()) {
-      load = base->in(load_index)->as_Load();
-    }
-    if (load != NULL && in(Memory)->is_Phi() && in(Memory)->in(0) == base->in(0)) {
+    bool has_load = ( allocation != NULL &&
+                      (base->in(load_index)->is_Load() ||
+                       base->in(load_index)->is_DecodeN() &&
+                       base->in(load_index)->in(1)->is_Load()) );
+    if (has_load && in(Memory)->is_Phi() && in(Memory)->in(0) == base->in(0)) {
       // Push the loads from the phi that comes from valueOf up
       // through it to allow elimination of the loads and the recovery
       // of the original value.
       Node* mem_phi = in(Memory);
       Node* offset = in(Address)->in(AddPNode::Offset);
+      Node* region = base->in(0);
 
       Node* in1 = clone();
       Node* in1_addr = in1->in(Address)->clone();
       in1_addr->set_req(AddPNode::Base, base->in(allocation_index));
       in1_addr->set_req(AddPNode::Address, base->in(allocation_index));
       in1_addr->set_req(AddPNode::Offset, offset);
-      in1->set_req(0, base->in(allocation_index));
+      in1->set_req(0, region->in(allocation_index));
       in1->set_req(Address, in1_addr);
       in1->set_req(Memory, mem_phi->in(allocation_index));
 
@@ -1091,7 +1120,7 @@
       in2_addr->set_req(AddPNode::Base, base->in(load_index));
       in2_addr->set_req(AddPNode::Address, base->in(load_index));
       in2_addr->set_req(AddPNode::Offset, offset);
-      in2->set_req(0, base->in(load_index));
+      in2->set_req(0, region->in(load_index));
       in2->set_req(Address, in2_addr);
       in2->set_req(Memory, mem_phi->in(load_index));
 
@@ -1100,16 +1129,25 @@
       in2_addr = phase->transform(in2_addr);
       in2 =      phase->transform(in2);
 
-      PhiNode* result = PhiNode::make_blank(base->in(0), this);
+      PhiNode* result = PhiNode::make_blank(region, this);
       result->set_req(allocation_index, in1);
       result->set_req(load_index, in2);
       return result;
     }
-  } else if (base->is_Load()) {
+  } else if (base->is_Load() ||
+             base->is_DecodeN() && base->in(1)->is_Load()) {
+    if (base->is_DecodeN()) {
+      // Get LoadN node which loads cached Integer object
+      base = base->in(1);
+    }
     // Eliminate the load of Integer.value for integers from the cache
     // array by deriving the value from the index into the array.
     // Capture the offset of the load and then reverse the computation.
     Node* load_base = base->in(Address)->in(AddPNode::Base);
+    if (load_base->is_DecodeN()) {
+      // Get LoadN node which loads IntegerCache.cache field
+      load_base = load_base->in(1);
+    }
     if (load_base != NULL) {
       Compile::AliasType* atp = phase->C->alias_type(load_base->adr_type());
       intptr_t cache_offset;
@@ -1244,7 +1282,7 @@
       // (This tweaking with igvn only works because x is a new node.)
       igvn->set_type(x, t);
       // If x is a TypeNode, capture any more-precise type permanently into Node
-      // othewise it will be not updated during igvn->transform since
+      // otherwise it will be not updated during igvn->transform since
       // igvn->type(x) is set to x->Value() already.
       x->raise_bottom_type(t);
       Node *y = x->Identity(igvn);
@@ -1297,21 +1335,20 @@
     set_req(MemNode::Control,ctrl);
   }
 
-  // Check for useless control edge in some common special cases
-  if (in(MemNode::Control) != NULL) {
-    intptr_t ignore = 0;
-    Node*    base   = AddPNode::Ideal_base_and_offset(address, phase, ignore);
-    if (base != NULL
+  intptr_t ignore = 0;
+  Node*    base   = AddPNode::Ideal_base_and_offset(address, phase, ignore);
+  if (base != NULL
+      && phase->C->get_alias_index(phase->type(address)->is_ptr()) != Compile::AliasIdxRaw) {
+    // Check for useless control edge in some common special cases
+    if (in(MemNode::Control) != NULL
         && phase->type(base)->higher_equal(TypePtr::NOTNULL)
         && all_controls_dominate(base, phase->C->start())) {
       // A method-invariant, non-null address (constant or 'this' argument).
       set_req(MemNode::Control, NULL);
     }
-  }
-
-  if (EliminateAutoBox && can_reshape && in(Address)->is_AddP()) {
-    Node* base = in(Address)->in(AddPNode::Base);
-    if (base != NULL) {
+
+    if (EliminateAutoBox && can_reshape) {
+      assert(!phase->type(base)->higher_equal(TypePtr::NULL_PTR), "the autobox pointer should be non-null");
       Compile::AliasType* atp = phase->C->alias_type(adr_type());
       if (is_autobox_object(atp)) {
         Node* result = eliminate_autobox(phase);
@@ -1356,7 +1393,7 @@
   // Steps (a), (b):  Walk past independent stores to find an exact match.
   if (prev_mem != NULL && prev_mem != in(MemNode::Memory)) {
     // (c) See if we can fold up on the spot, but don't fold up here.
-    // Fold-up might require truncation (for LoadB/LoadS/LoadC) or
+    // Fold-up might require truncation (for LoadB/LoadS/LoadUS) or
     // just return a prior value, which is done by Identity calls.
     if (can_see_stored_value(prev_mem, phase)) {
       // Make ready for step (d):
@@ -1444,10 +1481,11 @@
           jt = _type;
         }
 
-        if (EliminateAutoBox) {
+        if (EliminateAutoBox && adr->is_AddP()) {
           // The pointers in the autobox arrays are always non-null
-          Node* base = in(Address)->in(AddPNode::Base);
-          if (base != NULL) {
+          Node* base = adr->in(AddPNode::Base);
+          if (base != NULL &&
+              !phase->type(base)->higher_equal(TypePtr::NULL_PTR)) {
             Compile::AliasType* atp = phase->C->alias_type(base->adr_type());
             if (is_autobox_cache(atp)) {
               return jt->join(TypePtr::NOTNULL)->is_ptr();
@@ -1605,14 +1643,30 @@
   return LoadNode::Ideal(phase, can_reshape);
 }
 
-//--------------------------LoadCNode::Ideal--------------------------------------
+//--------------------------LoadUBNode::Ideal-------------------------------------
+//
+//  If the previous store is to the same address as this load,
+//  and the value stored was larger than a byte, replace this load
+//  with the value stored truncated to a byte.  If no truncation is
+//  needed, the replacement is done in LoadNode::Identity().
+//
+Node* LoadUBNode::Ideal(PhaseGVN* phase, bool can_reshape) {
+  Node* mem = in(MemNode::Memory);
+  Node* value = can_see_stored_value(mem, phase);
+  if (value && !phase->type(value)->higher_equal(_type))
+    return new (phase->C, 3) AndINode(value, phase->intcon(0xFF));
+  // Identity call will handle the case where truncation is not needed.
+  return LoadNode::Ideal(phase, can_reshape);
+}
+
+//--------------------------LoadUSNode::Ideal-------------------------------------
 //
 //  If the previous store is to the same address as this load,
 //  and the value stored was larger than a char, replace this load
 //  with the value stored truncated to a char.  If no truncation is
 //  needed, the replacement is done in LoadNode::Identity().
 //
-Node *LoadCNode::Ideal(PhaseGVN *phase, bool can_reshape) {
+Node *LoadUSNode::Ideal(PhaseGVN *phase, bool can_reshape) {
   Node* mem = in(MemNode::Memory);
   Node* value = can_see_stored_value(mem,phase);
   if( value && !phase->type(value)->higher_equal( _type ) )
@@ -2454,6 +2508,31 @@
   return remove_dead_region(phase, can_reshape) ? this : NULL;
 }
 
+// Do we match on this edge? No memory edges
+uint StrEqualsNode::match_edge(uint idx) const {
+  return idx == 5 || idx == 6;
+}
+
+//------------------------------Ideal------------------------------------------
+// Return a node which is more "ideal" than the current node.  Strip out
+// control copies
+Node *StrEqualsNode::Ideal(PhaseGVN *phase, bool can_reshape){
+  return remove_dead_region(phase, can_reshape) ? this : NULL;
+}
+
+//=============================================================================
+// Do we match on this edge? No memory edges
+uint StrIndexOfNode::match_edge(uint idx) const {
+  return idx == 5 || idx == 6;
+}
+
+//------------------------------Ideal------------------------------------------
+// Return a node which is more "ideal" than the current node.  Strip out
+// control copies
+Node *StrIndexOfNode::Ideal(PhaseGVN *phase, bool can_reshape){
+  return remove_dead_region(phase, can_reshape) ? this : NULL;
+}
+
 //------------------------------Ideal------------------------------------------
 // Return a node which is more "ideal" than the current node.  Strip out
 // control copies
@@ -2461,7 +2540,6 @@
   return remove_dead_region(phase, can_reshape) ? this : NULL;
 }
 
-
 //=============================================================================
 MemBarNode::MemBarNode(Compile* C, int alias_idx, Node* precedent)
   : MultiNode(TypeFunc::Parms + (precedent == NULL? 0: 1)),
@@ -2580,7 +2658,7 @@
 // capturing of nearby memory operations.
 //
 // During macro-expansion, all captured initializations which store
-// constant values of 32 bits or smaller are coalesced (if advantagous)
+// constant values of 32 bits or smaller are coalesced (if advantageous)
 // into larger 'tiles' 32 or 64 bits.  This allows an object to be
 // initialized in fewer memory operations.  Memory words which are
 // covered by neither tiles nor non-constant stores are pre-zeroed
@@ -3667,7 +3745,7 @@
     else if (old_mmem != NULL) {
       new_mem = old_mmem->memory_at(i);
     }
-    // else preceeding memory was not a MergeMem
+    // else preceding memory was not a MergeMem
 
     // replace equivalent phis (unfortunately, they do not GVN together)
     if (new_mem != NULL && new_mem != new_base &&
--- a/src/share/vm/opto/memnode.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/memnode.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -207,11 +207,24 @@
   virtual BasicType memory_type() const { return T_BYTE; }
 };
 
-//------------------------------LoadCNode--------------------------------------
-// Load a char (16bits unsigned) from memory
-class LoadCNode : public LoadNode {
+//------------------------------LoadUBNode-------------------------------------
+// Load a unsigned byte (8bits unsigned) from memory
+class LoadUBNode : public LoadNode {
 public:
-  LoadCNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR )
+  LoadUBNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt* ti = TypeInt::UBYTE )
+    : LoadNode(c, mem, adr, at, ti) {}
+  virtual int Opcode() const;
+  virtual uint ideal_reg() const { return Op_RegI; }
+  virtual Node* Ideal(PhaseGVN *phase, bool can_reshape);
+  virtual int store_Opcode() const { return Op_StoreB; }
+  virtual BasicType memory_type() const { return T_BYTE; }
+};
+
+//------------------------------LoadUSNode-------------------------------------
+// Load an unsigned short/char (16bits unsigned) from memory
+class LoadUSNode : public LoadNode {
+public:
+  LoadUSNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR )
     : LoadNode(c,mem,adr,at,ti) {}
   virtual int Opcode() const;
   virtual uint ideal_reg() const { return Op_RegI; }
@@ -232,6 +245,18 @@
   virtual BasicType memory_type() const { return T_INT; }
 };
 
+//------------------------------LoadUI2LNode-----------------------------------
+// Load an unsigned integer into long from memory
+class LoadUI2LNode : public LoadNode {
+public:
+  LoadUI2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeLong* t = TypeLong::UINT)
+    : LoadNode(c, mem, adr, at, t) {}
+  virtual int Opcode() const;
+  virtual uint ideal_reg() const { return Op_RegL; }
+  virtual int store_Opcode() const { return Op_StoreL; }
+  virtual BasicType memory_type() const { return T_LONG; }
+};
+
 //------------------------------LoadRangeNode----------------------------------
 // Load an array length from the array
 class LoadRangeNode : public LoadINode {
@@ -740,6 +765,54 @@
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
+//------------------------------StrEquals-------------------------------------
+class StrEqualsNode: public Node {
+public:
+  StrEqualsNode(Node *control,
+                Node* char_array_mem,
+                Node* value_mem,
+                Node* count_mem,
+                Node* offset_mem,
+                Node* s1, Node* s2): Node(control,
+                                          char_array_mem,
+                                          value_mem,
+                                          count_mem,
+                                          offset_mem,
+                                          s1, s2) {};
+  virtual int Opcode() const;
+  virtual bool depends_only_on_test() const { return false; }
+  virtual const Type* bottom_type() const { return TypeInt::BOOL; }
+  // a StrEqualsNode (conservatively) aliases with everything:
+  virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
+  virtual uint match_edge(uint idx) const;
+  virtual uint ideal_reg() const { return Op_RegI; }
+  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
+};
+
+//------------------------------StrIndexOf-------------------------------------
+class StrIndexOfNode: public Node {
+public:
+  StrIndexOfNode(Node *control,
+                 Node* char_array_mem,
+                 Node* value_mem,
+                 Node* count_mem,
+                 Node* offset_mem,
+                 Node* s1, Node* s2): Node(control,
+                                           char_array_mem,
+                                           value_mem,
+                                           count_mem,
+                                           offset_mem,
+                                           s1, s2) {};
+  virtual int Opcode() const;
+  virtual bool depends_only_on_test() const { return false; }
+  virtual const Type* bottom_type() const { return TypeInt::INT; }
+  // a StrIndexOfNode (conservatively) aliases with everything:
+  virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
+  virtual uint match_edge(uint idx) const;
+  virtual uint ideal_reg() const { return Op_RegI; }
+  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
+};
+
 //------------------------------AryEq---------------------------------------
 class AryEqNode: public Node {
 public:
@@ -757,10 +830,10 @@
 // Model.  Monitor-enter and volatile-load act as Aquires: no following ref
 // can be moved to before them.  We insert a MemBar-Acquire after a FastLock or
 // volatile-load.  Monitor-exit and volatile-store act as Release: no
-// preceeding ref can be moved to after them.  We insert a MemBar-Release
+// preceding ref can be moved to after them.  We insert a MemBar-Release
 // before a FastUnlock or volatile-store.  All volatiles need to be
 // serialized, so we follow all volatile-stores with a MemBar-Volatile to
-// seperate it from any following volatile-load.
+// separate it from any following volatile-load.
 class MemBarNode: public MultiNode {
   virtual uint hash() const ;                  // { return NO_HASH; }
   virtual uint cmp( const Node &n ) const ;    // Always fail, except on self
--- a/src/share/vm/opto/mulnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/mulnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -430,30 +430,28 @@
   // x & x => x
   if (phase->eqv(in(1), in(2))) return in(1);
 
-  Node *load = in(1);
-  const TypeInt *t2 = phase->type( in(2) )->isa_int();
-  if( t2 && t2->is_con() ) {
+  Node* in1 = in(1);
+  uint op = in1->Opcode();
+  const TypeInt* t2 = phase->type(in(2))->isa_int();
+  if (t2 && t2->is_con()) {
     int con = t2->get_con();
     // Masking off high bits which are always zero is useless.
     const TypeInt* t1 = phase->type( in(1) )->isa_int();
     if (t1 != NULL && t1->_lo >= 0) {
-      jint t1_support = ((jint)1 << (1 + log2_intptr(t1->_hi))) - 1;
+      jint t1_support = right_n_bits(1 + log2_intptr(t1->_hi));
       if ((t1_support & con) == t1_support)
-        return load;
+        return in1;
     }
-    uint lop = load->Opcode();
-    if( lop == Op_LoadC &&
-        con == 0x0000FFFF )     // Already zero-extended
-      return load;
     // Masking off the high bits of a unsigned-shift-right is not
     // needed either.
-    if( lop == Op_URShiftI ) {
-      const TypeInt *t12 = phase->type( load->in(2) )->isa_int();
-      if( t12 && t12->is_con() ) {
-        int shift_con = t12->get_con();
-        int mask = max_juint >> shift_con;
-        if( (mask&con) == mask )  // If AND is useless, skip it
-          return load;
+    if (op == Op_URShiftI) {
+      const TypeInt* t12 = phase->type(in1->in(2))->isa_int();
+      if (t12 && t12->is_con()) {  // Shift is by a constant
+        int shift = t12->get_con();
+        shift &= BitsPerJavaInteger - 1;  // semantics of Java shifts
+        int mask = max_juint >> shift;
+        if ((mask & con) == mask)  // If AND is useless, skip it
+          return in1;
       }
     }
   }
@@ -470,35 +468,29 @@
   uint lop = load->Opcode();
 
   // Masking bits off of a Character?  Hi bits are already zero.
-  if( lop == Op_LoadC &&
+  if( lop == Op_LoadUS &&
       (mask & 0xFFFF0000) )     // Can we make a smaller mask?
     return new (phase->C, 3) AndINode(load,phase->intcon(mask&0xFFFF));
 
   // Masking bits off of a Short?  Loading a Character does some masking
-  if( lop == Op_LoadS &&
-      (mask & 0xFFFF0000) == 0 ) {
-    Node *ldc = new (phase->C, 3) LoadCNode(load->in(MemNode::Control),
-                                  load->in(MemNode::Memory),
-                                  load->in(MemNode::Address),
-                                  load->adr_type());
-    ldc = phase->transform(ldc);
-    return new (phase->C, 3) AndINode(ldc,phase->intcon(mask&0xFFFF));
+  if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
+    Node *ldus = new (phase->C, 3) LoadUSNode(load->in(MemNode::Control),
+                                              load->in(MemNode::Memory),
+                                              load->in(MemNode::Address),
+                                              load->adr_type());
+    ldus = phase->transform(ldus);
+    return new (phase->C, 3) AndINode(ldus, phase->intcon(mask & 0xFFFF));
   }
 
-  // Masking sign bits off of a Byte?  Let the matcher use an unsigned load
-  if( lop == Op_LoadB &&
-      (!in(0) && load->in(0)) &&
-      (mask == 0x000000FF) ) {
-    // Associate this node with the LoadB, so the matcher can see them together.
-    // If we don't do this, it is common for the LoadB to have one control
-    // edge, and the store or call containing this AndI to have a different
-    // control edge.  This will cause Label_Root to group the AndI with
-    // the encoding store or call, so the matcher has no chance to match
-    // this AndI together with the LoadB.  Setting the control edge here
-    // prevents Label_Root from grouping the AndI with the store or call,
-    // if it has a control edge that is inconsistent with the LoadB.
-    set_req(0, load->in(0));
-    return this;
+  // Masking sign bits off of a Byte?  Do an unsigned byte load plus
+  // an and.
+  if (lop == Op_LoadB && (mask & 0xFFFFFF00) == 0) {
+    Node* ldub = new (phase->C, 3) LoadUBNode(load->in(MemNode::Control),
+                                              load->in(MemNode::Memory),
+                                              load->in(MemNode::Address),
+                                              load->adr_type());
+    ldub = phase->transform(ldub);
+    return new (phase->C, 3) AndINode(ldub, phase->intcon(mask));
   }
 
   // Masking off sign bits?  Dont make them!
@@ -579,9 +571,10 @@
     // needed either.
     if( lop == Op_URShiftL ) {
       const TypeInt *t12 = phase->type( usr->in(2) )->isa_int();
-      if( t12 && t12->is_con() ) {
-        int shift_con = t12->get_con();
-        jlong mask = max_julong >> shift_con;
+      if( t12 && t12->is_con() ) {  // Shift is by a constant
+        int shift = t12->get_con();
+        shift &= BitsPerJavaLong - 1;  // semantics of Java shifts
+        jlong mask = max_julong >> shift;
         if( (mask&con) == mask )  // If AND is useless, skip it
           return usr;
       }
@@ -597,22 +590,49 @@
   if( !t2 || !t2->is_con() ) return MulNode::Ideal(phase, can_reshape);
   const jlong mask = t2->get_con();
 
-  Node *rsh = in(1);
-  uint rop = rsh->Opcode();
+  Node* in1 = in(1);
+  uint op = in1->Opcode();
+
+  // Masking sign bits off of an integer?  Do an unsigned integer to
+  // long load.
+  // NOTE: This check must be *before* we try to convert the AndLNode
+  // to an AndINode and commute it with ConvI2LNode because
+  // 0xFFFFFFFFL masks the whole integer and we get a sign extension,
+  // which is wrong.
+  if (op == Op_ConvI2L && in1->in(1)->Opcode() == Op_LoadI && mask == CONST64(0x00000000FFFFFFFF)) {
+    Node* load = in1->in(1);
+    return new (phase->C, 3) LoadUI2LNode(load->in(MemNode::Control),
+                                          load->in(MemNode::Memory),
+                                          load->in(MemNode::Address),
+                                          load->adr_type());
+  }
+
+  // Are we masking a long that was converted from an int with a mask
+  // that fits in 32-bits?  Commute them and use an AndINode.
+  if (op == Op_ConvI2L && (mask & CONST64(0xFFFFFFFF00000000)) == 0) {
+    // If we are doing an UI2L conversion (i.e. the mask is
+    // 0x00000000FFFFFFFF) we cannot convert the AndL to an AndI
+    // because the AndI would be optimized away later in Identity.
+    if (mask != CONST64(0x00000000FFFFFFFF)) {
+      Node* andi = new (phase->C, 3) AndINode(in1->in(1), phase->intcon(mask));
+      andi = phase->transform(andi);
+      return new (phase->C, 2) ConvI2LNode(andi);
+    }
+  }
 
   // Masking off sign bits?  Dont make them!
-  if( rop == Op_RShiftL ) {
-    const TypeInt *t12 = phase->type(rsh->in(2))->isa_int();
+  if (op == Op_RShiftL) {
+    const TypeInt* t12 = phase->type(in1->in(2))->isa_int();
     if( t12 && t12->is_con() ) { // Shift is by a constant
       int shift = t12->get_con();
-      shift &= (BitsPerJavaInteger*2)-1;  // semantics of Java shifts
-      const jlong sign_bits_mask = ~(((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - shift)) -1);
+      shift &= BitsPerJavaLong - 1;  // semantics of Java shifts
+      const jlong sign_bits_mask = ~(((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - shift)) -1);
       // If the AND'ing of the 2 masks has no bits, then only original shifted
       // bits survive.  NO sign-extension bits survive the maskings.
       if( (sign_bits_mask & mask) == 0 ) {
         // Use zero-fill shift instead
-        Node *zshift = phase->transform(new (phase->C, 3) URShiftLNode(rsh->in(1),rsh->in(2)));
-        return new (phase->C, 3) AndLNode( zshift, in(2) );
+        Node *zshift = phase->transform(new (phase->C, 3) URShiftLNode(in1->in(1), in1->in(2)));
+        return new (phase->C, 3) AndLNode(zshift, in(2));
       }
     }
   }
@@ -786,7 +806,7 @@
 
   // Check for ((x & ((CONST64(1)<<(64-c0))-1)) << c0) which ANDs off high bits
   // before shifting them away.
-  const jlong bits_mask = ((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - con)) - CONST64(1);
+  const jlong bits_mask = ((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - con)) - CONST64(1);
   if( add1_op == Op_AndL &&
       phase->type(add1->in(2)) == TypeLong::make( bits_mask ) )
     return new (phase->C, 3) LShiftLNode( add1->in(1), in(2) );
@@ -820,7 +840,7 @@
     return TypeLong::LONG;
 
   uint shift = r2->get_con();
-  shift &= (BitsPerJavaInteger*2)-1;  // semantics of Java shifts
+  shift &= BitsPerJavaLong - 1;  // semantics of Java shifts
   // Shift by a multiple of 64 does nothing:
   if (shift == 0)  return t1;
 
@@ -913,7 +933,7 @@
       set_req(2, phase->intcon(0));
       return this;
     }
-    else if( ld->Opcode() == Op_LoadC )
+    else if( ld->Opcode() == Op_LoadUS )
       // Replace zero-extension-load with sign-extension-load
       return new (phase->C, 3) LoadSNode( ld->in(MemNode::Control),
                                 ld->in(MemNode::Memory),
@@ -1235,7 +1255,7 @@
   if ( con == 0 ) return NULL;  // let Identity() handle a 0 shift count
                               // note: mask computation below does not work for 0 shift count
   // We'll be wanting the right-shift amount as a mask of that many bits
-  const jlong mask = (((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - con)) -1);
+  const jlong mask = (((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - con)) -1);
 
   // Check for ((x << z) + Y) >>> z.  Replace with x + con>>>z
   // The idiom for rounding to a power of 2 is "(Q+(2^z-1)) >>> z".
@@ -1302,7 +1322,7 @@
 
   if (r2->is_con()) {
     uint shift = r2->get_con();
-    shift &= (2*BitsPerJavaInteger)-1;  // semantics of Java shifts
+    shift &= BitsPerJavaLong - 1;  // semantics of Java shifts
     // Shift by a multiple of 64 does nothing:
     if (shift == 0)  return t1;
     // Calculate reasonably aggressive bounds for the result.
@@ -1325,7 +1345,7 @@
     const TypeLong* tl = TypeLong::make(lo, hi, MAX2(r1->_widen,r2->_widen));
     #ifdef ASSERT
     // Make sure we get the sign-capture idiom correct.
-    if (shift == (2*BitsPerJavaInteger)-1) {
+    if (shift == BitsPerJavaLong - 1) {
       if (r1->_lo >= 0) assert(tl == TypeLong::ZERO, ">>>63 of + is 0");
       if (r1->_hi < 0)  assert(tl == TypeLong::ONE,  ">>>63 of - is +1");
     }
--- a/src/share/vm/opto/node.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/node.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -968,22 +968,23 @@
 // Example: when reshape "(X+3)+4" into "X+7" you must leave the Node for
 // "X+3" unchanged in case it is shared.
 //
-// If you modify the 'this' pointer's inputs, you must use 'set_req' with
-// def-use info.  If you are making a new Node (either as the new root or
-// some new internal piece) you must NOT use set_req with def-use info.
-// You can make a new Node with either 'new' or 'clone'.  In either case,
-// def-use info is (correctly) not generated.
+// If you modify the 'this' pointer's inputs, you should use
+// 'set_req'.  If you are making a new Node (either as the new root or
+// some new internal piece) you may use 'init_req' to set the initial
+// value.  You can make a new Node with either 'new' or 'clone'.  In
+// either case, def-use info is correctly maintained.
+//
 // Example: reshape "(X+3)+4" into "X+7":
-//    set_req(1,in(1)->in(1) /* grab X */, du /* must use DU on 'this' */);
-//    set_req(2,phase->intcon(7),du);
+//    set_req(1, in(1)->in(1));
+//    set_req(2, phase->intcon(7));
 //    return this;
-// Example: reshape "X*4" into "X<<1"
-//    return new (C,3) LShiftINode( in(1), phase->intcon(1) );
+// Example: reshape "X*4" into "X<<2"
+//    return new (C,3) LShiftINode(in(1), phase->intcon(2));
 //
 // You must call 'phase->transform(X)' on any new Nodes X you make, except
-// for the returned root node.  Example: reshape "X*31" with "(X<<5)-1".
+// for the returned root node.  Example: reshape "X*31" with "(X<<5)-X".
 //    Node *shift=phase->transform(new(C,3)LShiftINode(in(1),phase->intcon(5)));
-//    return new (C,3) AddINode(shift, phase->intcon(-1));
+//    return new (C,3) AddINode(shift, in(1));
 //
 // When making a Node for a constant use 'phase->makecon' or 'phase->intcon'.
 // These forms are faster than 'phase->transform(new (C,1) ConNode())' and Do
@@ -1679,7 +1680,7 @@
   if (visited.member(this))  return;
   visited.push(this);
 
-  // Walk over all input edges, checking for correspondance
+  // Walk over all input edges, checking for correspondence
   for( i = 0; i < len(); i++ ) {
     n = in(i);
     if (n != NULL && !n->is_top()) {
@@ -1723,7 +1724,7 @@
   // Contained in new_space or old_space?
   VectorSet *v = C->node_arena()->contains(n) ? &new_space : &old_space;
   // Check for visited in the proper space.  Numberings are not unique
-  // across spaces so we need a seperate VectorSet for each space.
+  // across spaces so we need a separate VectorSet for each space.
   if( v->test_set(n->_idx) ) return;
 
   if (n->is_Con() && n->bottom_type() == Type::TOP) {
--- a/src/share/vm/opto/node.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/node.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -257,7 +257,7 @@
   Node **_in;                   // Array of use-def references to Nodes
   Node **_out;                  // Array of def-use references to Nodes
 
-  // Input edges are split into two catagories.  Required edges are required
+  // Input edges are split into two categories.  Required edges are required
   // for semantic correctness; order is important and NULLs are allowed.
   // Precedence edges are used to help determine execution order and are
   // added, e.g., for scheduling purposes.  They are unordered and not
@@ -854,7 +854,7 @@
 
   // If the hash function returns the special sentinel value NO_HASH,
   // the node is guaranteed never to compare equal to any other node.
-  // If we accidently generate a hash with value NO_HASH the node
+  // If we accidentally generate a hash with value NO_HASH the node
   // won't go into the table and we'll lose a little optimization.
   enum { NO_HASH = 0 };
   virtual uint hash() const;
--- a/src/share/vm/opto/output.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/output.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -50,6 +50,13 @@
   init_scratch_buffer_blob();
   if (failing())  return; // Out of memory
 
+  // The number of new nodes (mostly MachNop) is proportional to
+  // the number of java calls and inner loops which are aligned.
+  if ( C->check_node_count((NodeLimitFudgeFactor + C->java_calls()*3 +
+                            C->inner_loops()*(OptoLoopAlignment-1)),
+                           "out of nodes before code generation" ) ) {
+    return;
+  }
   // Make sure I can find the Start Node
   Block_Array& bbs = _cfg->_bbs;
   Block *entry = _cfg->_blocks[1];
@@ -1105,7 +1112,7 @@
   uint *call_returns = NEW_RESOURCE_ARRAY(uint, _cfg->_num_blocks+1);
 
   uint  return_offset = 0;
-  MachNode *nop = new (this) MachNopNode();
+  int nop_size = (new (this) MachNopNode())->size(_regalloc);
 
   int previous_offset = 0;
   int current_offset  = 0;
@@ -1171,7 +1178,7 @@
         cb->flush_bundle(false);
 
       // The following logic is duplicated in the code ifdeffed for
-      // ENABLE_ZAP_DEAD_LOCALS which apppears above in this file.  It
+      // ENABLE_ZAP_DEAD_LOCALS which appears above in this file.  It
       // should be factored out.  Or maybe dispersed to the nodes?
 
       // Special handling for SafePoint/Call Nodes
@@ -1188,7 +1195,6 @@
         }
 
         // align the instruction if necessary
-        int nop_size = nop->size(_regalloc);
         int padding = mach->compute_padding(current_offset);
         // Make sure safepoint node for polling is distinct from a call's
         // return by adding a nop if needed.
@@ -1275,7 +1281,7 @@
         }
 
 #ifdef ASSERT
-        // Check that oop-store preceeds the card-mark
+        // Check that oop-store precedes the card-mark
         else if( mach->ideal_Opcode() == Op_StoreCM ) {
           uint storeCM_idx = j;
           Node *oop_store = mach->in(mach->_cnt);  // First precedence edge
@@ -1291,7 +1297,7 @@
 #endif
 
         else if( !n->is_Proj() ) {
-          // Remember the begining of the previous instruction, in case
+          // Remember the beginning of the previous instruction, in case
           // it's followed by a flag-kill and a null-check.  Happens on
           // Intel all the time, with add-to-memory kind of opcodes.
           previous_offset = current_offset;
@@ -1372,7 +1378,6 @@
 
     // If the next block is the top of a loop, pad this block out to align
     // the loop top a little. Helps prevent pipe stalls at loop back branches.
-    int nop_size = (new (this) MachNopNode())->size(_regalloc);
     if( i<_cfg->_num_blocks-1 ) {
       Block *nb = _cfg->_blocks[i+1];
       uint padding = nb->alignment_padding(current_offset);
@@ -1567,7 +1572,7 @@
 
   compile.set_node_bundling_limit(_node_bundling_limit);
 
-  // This one is persistant within the Compile class
+  // This one is persistent within the Compile class
   _node_bundling_base = NEW_ARENA_ARRAY(compile.comp_arena(), Bundle, node_max);
 
   // Allocate space for fixed-size arrays
@@ -1666,7 +1671,7 @@
 // Compute the latency of all the instructions.  This is fairly simple,
 // because we already have a legal ordering.  Walk over the instructions
 // from first to last, and compute the latency of the instruction based
-// on the latency of the preceeding instruction(s).
+// on the latency of the preceding instruction(s).
 void Scheduling::ComputeLocalLatenciesForward(const Block *bb) {
 #ifndef PRODUCT
   if (_cfg->C->trace_opto_output())
@@ -1931,7 +1936,7 @@
     uint siz = _available.size();
 
     // Conditional branches can support an instruction that
-    // is unconditionally executed and not dependant by the
+    // is unconditionally executed and not dependent by the
     // branch, OR a conditionally executed instruction if
     // the branch is taken.  In practice, this means that
     // the first instruction at the branch target is
@@ -1947,7 +1952,7 @@
 #endif
 
       // At least 1 instruction is on the available list
-      // that is not dependant on the branch
+      // that is not dependent on the branch
       for (uint i = 0; i < siz; i++) {
         Node *d = _available[i];
         const Pipeline *avail_pipeline = d->pipeline();
@@ -2256,7 +2261,8 @@
     // bother scheduling them.
     Node *last = bb->_nodes[_bb_end];
     if( last->is_Catch() ||
-       (last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) {
+       // Exclude unreachable path case when Halt node is in a separate block.
+       (_bb_end > 1 && last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) {
       // There must be a prior call.  Skip it.
       while( !bb->_nodes[--_bb_end]->is_Call() ) {
         assert( bb->_nodes[_bb_end]->is_Proj(), "skipping projections after expected call" );
--- a/src/share/vm/opto/parse.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/parse.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -78,7 +78,7 @@
   };
 
   // See if it is OK to inline.
-  // The reciever is the inline tree for the caller.
+  // The receiver is the inline tree for the caller.
   //
   // The result is a temperature indication.  If it is hot or cold,
   // inlining is immediate or undesirable.  Otherwise, the info block
@@ -476,7 +476,7 @@
   void do_newarray(BasicType elemtype);
   void do_anewarray();
   void do_multianewarray();
-  Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions);
+  Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs);
 
   // implementation of jsr/ret
   void do_jsr();
--- a/src/share/vm/opto/parse1.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/parse1.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -95,7 +95,7 @@
   switch( bt ) {                // Signature is flattened
   case T_INT:     l = new (C, 3) LoadINode( 0, mem, adr, TypeRawPtr::BOTTOM ); break;
   case T_FLOAT:   l = new (C, 3) LoadFNode( 0, mem, adr, TypeRawPtr::BOTTOM ); break;
-  case T_ADDRESS:
+  case T_ADDRESS: l = new (C, 3) LoadPNode( 0, mem, adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM  ); break;
   case T_OBJECT:  l = new (C, 3) LoadPNode( 0, mem, adr, TypeRawPtr::BOTTOM, TypeInstPtr::BOTTOM ); break;
   case T_LONG:
   case T_DOUBLE: {
@@ -439,7 +439,7 @@
   // Always register dependence if JVMTI is enabled, because
   // either breakpoint setting or hotswapping of methods may
   // cause deoptimization.
-  if (JvmtiExport::can_hotswap_or_post_breakpoint()) {
+  if (C->env()->jvmti_can_hotswap_or_post_breakpoint()) {
     C->dependencies()->assert_evol_method(method());
   }
 
@@ -607,7 +607,7 @@
       if (control()->is_Region() && !block->is_loop_head() && !has_irreducible && !block->is_handler()) {
         // In the absence of irreducible loops, the Region and Phis
         // associated with a merge that doesn't involve a backedge can
-        // be simplfied now since the RPO parsing order guarantees
+        // be simplified now since the RPO parsing order guarantees
         // that any path which was supposed to reach here has already
         // been parsed or must be dead.
         Node* c = control();
@@ -828,6 +828,7 @@
     break;
 
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokeinterface:
@@ -952,7 +953,7 @@
   bool do_synch = method()->is_synchronized() && GenerateSynchronizationCode;
 
   // record exit from a method if compiled while Dtrace is turned on.
-  if (do_synch || DTraceMethodProbes) {
+  if (do_synch || C->env()->dtrace_method_probes()) {
     // First move the exception list out of _exits:
     GraphKit kit(_exits.transfer_exceptions_into_jvms());
     SafePointNode* normal_map = kit.map();  // keep this guy safe
@@ -974,7 +975,7 @@
         // Unlock!
         kit.shared_unlock(_synch_lock->box_node(), _synch_lock->obj_node());
       }
-      if (DTraceMethodProbes) {
+      if (C->env()->dtrace_method_probes()) {
         kit.make_dtrace_method_exit(method());
       }
       // Done with exception-path processing.
@@ -1073,7 +1074,7 @@
 
   NOT_PRODUCT( count_compiled_calls(true/*at_method_entry*/, false/*is_inline*/); )
 
-  if (DTraceMethodProbes) {
+  if (C->env()->dtrace_method_probes()) {
     make_dtrace_method_entry(method());
   }
 
@@ -1959,7 +1960,7 @@
   if (method()->is_synchronized() && GenerateSynchronizationCode) {
     shared_unlock(_synch_lock->box_node(), _synch_lock->obj_node());
   }
-  if (DTraceMethodProbes) {
+  if (C->env()->dtrace_method_probes()) {
     make_dtrace_method_exit(method());
   }
   SafePointNode* exit_return = _exits.map();
--- a/src/share/vm/opto/parse2.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/parse2.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -32,7 +32,7 @@
 void Parse::array_load(BasicType elem_type) {
   const Type* elem = Type::TOP;
   Node* adr = array_addressing(elem_type, 0, &elem);
-  if (stopped())  return;     // guarenteed null or range check
+  if (stopped())  return;     // guaranteed null or range check
   _sp -= 2;                   // Pop array and index
   const TypeAryPtr* adr_type = TypeAryPtr::get_array_body_type(elem_type);
   Node* ld = make_load(control(), adr, elem, elem_type, adr_type);
@@ -43,7 +43,7 @@
 //--------------------------------array_store----------------------------------
 void Parse::array_store(BasicType elem_type) {
   Node* adr = array_addressing(elem_type, 1);
-  if (stopped())  return;     // guarenteed null or range check
+  if (stopped())  return;     // guaranteed null or range check
   Node* val = pop();
   _sp -= 2;                   // Pop array and index
   const TypeAryPtr* adr_type = TypeAryPtr::get_array_body_type(elem_type);
@@ -1541,14 +1541,14 @@
   case Bytecodes::_aaload: array_load(T_OBJECT); break;
   case Bytecodes::_laload: {
     a = array_addressing(T_LONG, 0);
-    if (stopped())  return;     // guarenteed null or range check
+    if (stopped())  return;     // guaranteed null or range check
     _sp -= 2;                   // Pop array and index
     push_pair( make_load(control(), a, TypeLong::LONG, T_LONG, TypeAryPtr::LONGS));
     break;
   }
   case Bytecodes::_daload: {
     a = array_addressing(T_DOUBLE, 0);
-    if (stopped())  return;     // guarenteed null or range check
+    if (stopped())  return;     // guaranteed null or range check
     _sp -= 2;                   // Pop array and index
     push_pair( make_load(control(), a, Type::DOUBLE, T_DOUBLE, TypeAryPtr::DOUBLES));
     break;
@@ -1560,19 +1560,19 @@
   case Bytecodes::_fastore: array_store(T_FLOAT); break;
   case Bytecodes::_aastore: {
     d = array_addressing(T_OBJECT, 1);
-    if (stopped())  return;     // guarenteed null or range check
+    if (stopped())  return;     // guaranteed null or range check
     array_store_check();
     c = pop();                  // Oop to store
     b = pop();                  // index (already used)
     a = pop();                  // the array itself
-    const Type* elemtype  = _gvn.type(a)->is_aryptr()->elem();
+    const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->make_oopptr();
     const TypeAryPtr* adr_type = TypeAryPtr::OOPS;
     Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT);
     break;
   }
   case Bytecodes::_lastore: {
     a = array_addressing(T_LONG, 2);
-    if (stopped())  return;     // guarenteed null or range check
+    if (stopped())  return;     // guaranteed null or range check
     c = pop_pair();
     _sp -= 2;                   // Pop array and index
     store_to_memory(control(), a, c, T_LONG, TypeAryPtr::LONGS);
@@ -1580,7 +1580,7 @@
   }
   case Bytecodes::_dastore: {
     a = array_addressing(T_DOUBLE, 2);
-    if (stopped())  return;     // guarenteed null or range check
+    if (stopped())  return;     // guaranteed null or range check
     c = pop_pair();
     _sp -= 2;                   // Pop array and index
     c = dstore_rounding(c);
@@ -2052,7 +2052,7 @@
     // null exception oop throws NULL pointer exception
     do_null_check(peek(), T_OBJECT);
     if (stopped())  return;
-    if (JvmtiExport::can_post_exceptions()) {
+    if (env()->jvmti_can_post_exceptions()) {
       // "Full-speed throwing" is not necessary here,
       // since we're notifying the VM on every throw.
       uncommon_trap(Deoptimization::Reason_unhandled,
@@ -2156,6 +2156,7 @@
     break;
 
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
   case Bytecodes::_invokevirtual:
   case Bytecodes::_invokeinterface:
--- a/src/share/vm/opto/parse3.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/parse3.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -222,7 +222,7 @@
   // Store the value.
   Node* store;
   if (bt == T_OBJECT) {
-    const TypePtr* field_type;
+    const TypeOopPtr* field_type;
     if (!field->type()->is_loaded()) {
       field_type = TypeInstPtr::BOTTOM;
     } else {
@@ -335,7 +335,7 @@
 
   const TypeKlassPtr* array_klass_type = TypeKlassPtr::make(array_klass);
   Node* count_val = pop();
-  Node* obj = new_array(makecon(array_klass_type), count_val);
+  Node* obj = new_array(makecon(array_klass_type), count_val, 1);
   push(obj);
 }
 
@@ -345,26 +345,26 @@
 
   Node*   count_val = pop();
   const TypeKlassPtr* array_klass = TypeKlassPtr::make(ciTypeArrayKlass::make(elem_type));
-  Node*   obj = new_array(makecon(array_klass), count_val);
+  Node*   obj = new_array(makecon(array_klass), count_val, 1);
   // Push resultant oop onto stack
   push(obj);
 }
 
 // Expand simple expressions like new int[3][5] and new Object[2][nonConLen].
 // Also handle the degenerate 1-dimensional case of anewarray.
-Node* Parse::expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions) {
+Node* Parse::expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs) {
   Node* length = lengths[0];
   assert(length != NULL, "");
-  Node* array = new_array(makecon(TypeKlassPtr::make(array_klass)), length);
+  Node* array = new_array(makecon(TypeKlassPtr::make(array_klass)), length, nargs);
   if (ndimensions > 1) {
     jint length_con = find_int_con(length, -1);
     guarantee(length_con >= 0, "non-constant multianewarray");
     ciArrayKlass* array_klass_1 = array_klass->as_obj_array_klass()->element_klass()->as_array_klass();
     const TypePtr* adr_type = TypeAryPtr::OOPS;
-    const Type*    elemtype = _gvn.type(array)->is_aryptr()->elem();
+    const TypeOopPtr*    elemtype = _gvn.type(array)->is_aryptr()->elem()->make_oopptr();
     const intptr_t header   = arrayOopDesc::base_offset_in_bytes(T_OBJECT);
     for (jint i = 0; i < length_con; i++) {
-      Node*    elem   = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1);
+      Node*    elem   = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1, nargs);
       intptr_t offset = header + ((intptr_t)i << LogBytesPerHeapOop);
       Node*    eaddr  = basic_plus_adr(array, offset);
       store_oop_to_array(control(), array, eaddr, adr_type, elem, elemtype, T_OBJECT);
@@ -419,7 +419,7 @@
   // Can use multianewarray instead of [a]newarray if only one dimension,
   // or if all non-final dimensions are small constants.
   if (expand_count == 1 || (1 <= expand_count && expand_count <= expand_limit)) {
-    Node* obj = expand_multianewarray(array_klass, &length[0], ndimensions);
+    Node* obj = expand_multianewarray(array_klass, &length[0], ndimensions, ndimensions);
     push(obj);
     return;
   }
--- a/src/share/vm/opto/parseHelper.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/parseHelper.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -414,6 +414,7 @@
     profile_receiver_type(receiver);
     break;
   case Bytecodes::_invokestatic:
+  case Bytecodes::_invokedynamic:
   case Bytecodes::_invokespecial:
     break;
   default: fatal("unexpected call bytecode");
--- a/src/share/vm/opto/phase.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/phase.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -73,7 +73,7 @@
 
 //------------------------------Phase------------------------------------------
 Phase::Phase( PhaseNumber pnum ) : _pnum(pnum), C( pnum == Compiler ? NULL : Compile::current()) {
-  // Poll for requests from shutdown mechanism to quiesce comiler (4448539, 4448544).
+  // Poll for requests from shutdown mechanism to quiesce compiler (4448539, 4448544).
   // This is an effective place to poll, since the compiler is full of phases.
   // In particular, every inlining site uses a recursively created Parse phase.
   CompileBroker::maybe_block();
--- a/src/share/vm/opto/phaseX.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/phaseX.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -196,7 +196,7 @@
 }
 
 //------------------------------hash_delete------------------------------------
-// Replace in hash table with sentinal
+// Replace in hash table with sentinel
 bool NodeHash::hash_delete( const Node *n ) {
   Node *k;
   uint hash = n->hash();
@@ -207,7 +207,7 @@
   uint key = hash & (_max-1);
   uint stride = key | 0x01;
   debug_only( uint counter = 0; );
-  for( ; /* (k != NULL) && (k != _sentinal) */; ) {
+  for( ; /* (k != NULL) && (k != _sentinel) */; ) {
     debug_only( counter++ );
     debug_only( _delete_probes++ );
     k = _table[key];            // Get hashed value
@@ -715,7 +715,7 @@
 
 #ifdef ASSERT
 //------------------------------dead_loop_check--------------------------------
-// Check for a simple dead loop when a data node references itself direcly
+// Check for a simple dead loop when a data node references itself directly
 // or through an other data node excluding cons and phis.
 void PhaseGVN::dead_loop_check( Node *n ) {
   // Phi may reference itself in a loop
@@ -1359,7 +1359,7 @@
               worklist.push(p); // Propagate change to user
           }
         }
-        // If we changed the reciever type to a call, we need to revisit
+        // If we changed the receiver type to a call, we need to revisit
         // the Catch following the call.  It's looking for a non-NULL
         // receiver to know when to enable the regular fall-through path
         // in addition to the NullPtrException path
--- a/src/share/vm/opto/phaseX.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/phaseX.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -450,6 +450,8 @@
     subsume_node(old, nn);
   }
 
+  bool delay_transform() const { return _delay_transform; }
+
   void set_delay_transform(bool delay) {
     _delay_transform = delay;
   }
--- a/src/share/vm/opto/postaloc.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/postaloc.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -46,7 +46,7 @@
   // be splitting live ranges for callee save registers to such
   // an extent that in large methods the chains can be very long
   // (50+). The conservative answer is to return true if we don't
-  // know as this prevents optimizations from occuring.
+  // know as this prevents optimizations from occurring.
 
   const int limit = 60;
   int i;
@@ -286,7 +286,7 @@
     //
     // n will be replaced with the old value but n might have
     // kills projections associated with it so remove them now so that
-    // yank_if_dead will be able to elminate the copy once the uses
+    // yank_if_dead will be able to eliminate the copy once the uses
     // have been transferred to the old[value].
     for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
       Node* use = n->fast_out(i);
--- a/src/share/vm/opto/reg_split.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/reg_split.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 "incls/_reg_split.cpp.incl"
 
 //------------------------------Split--------------------------------------
-// Walk the graph in RPO and for each lrg which spills, propogate reaching
-// definitions.  During propogation, split the live range around regions of
+// Walk the graph in RPO and for each lrg which spills, propagate reaching
+// definitions.  During propagation, split the live range around regions of
 // High Register Pressure (HRP).  If a Def is in a region of Low Register
 // Pressure (LRP), it will not get spilled until we encounter a region of
 // HRP between it and one of its uses.  We will spill at the transition
@@ -88,7 +88,7 @@
 }
 
 //------------------------------insert_proj------------------------------------
-// Insert the spill at chosen location.  Skip over any interveneing Proj's or
+// Insert the spill at chosen location.  Skip over any intervening Proj's or
 // Phis.  Skip over a CatchNode and projs, inserting in the fall-through block
 // instead.  Update high-pressure indices.  Create a new live range.
 void PhaseChaitin::insert_proj( Block *b, uint i, Node *spill, uint maxlrg ) {
@@ -125,7 +125,7 @@
 }
 
 //------------------------------split_DEF--------------------------------------
-// There are four catagories of Split; UP/DOWN x DEF/USE
+// There are four categories of Split; UP/DOWN x DEF/USE
 // Only three of these really occur as DOWN/USE will always color
 // Any Split with a DEF cannot CISC-Spill now.  Thus we need
 // two helper routines, one for Split DEFS (insert after instruction),
@@ -726,7 +726,7 @@
       // ********** Handle Crossing HRP Boundry **********
       if( (insidx == b->_ihrp_index) || (insidx == b->_fhrp_index) ) {
         for( slidx = 0; slidx < spill_cnt; slidx++ ) {
-          // Check for need to split at HRP boundry - split if UP
+          // Check for need to split at HRP boundary - split if UP
           n1 = Reachblock[slidx];
           // bail out if no reaching DEF
           if( n1 == NULL ) continue;
--- a/src/share/vm/opto/runtime.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/runtime.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1196,7 +1196,7 @@
 
 // The following does not work because for one thing, the
 // thread state is wrong; it expects java, but it is native.
-// Also, the invarients in a native stub are different and
+// Also, the invariants in a native stub are different and
 // I'm not sure it is safe to have a MachCalRuntimeDirectNode
 // in there.
 // So for now, we do not zap in native stubs.
--- a/src/share/vm/opto/split_if.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/split_if.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -318,7 +318,7 @@
 
   if( use->is_Phi() ) {         // Phi uses in prior block
     // Grab the first Phi use; there may be many.
-    // Each will be handled as a seperate iteration of
+    // Each will be handled as a separate iteration of
     // the "while( phi->outcnt() )" loop.
     uint j;
     for( j = 1; j < use->req(); j++ )
--- a/src/share/vm/opto/subnode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/subnode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -639,8 +639,12 @@
     int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0);
     if (klass0 && klass1 &&
         kps != 1 &&             // both or neither are klass pointers
-        !klass0->is_interface() && // do not trust interfaces
-        !klass1->is_interface()) {
+        klass0->is_loaded() && !klass0->is_interface() && // do not trust interfaces
+        klass1->is_loaded() && !klass1->is_interface() &&
+        (!klass0->is_obj_array_klass() ||
+         !klass0->as_obj_array_klass()->base_element_klass()->is_interface()) &&
+        (!klass1->is_obj_array_klass() ||
+         !klass1->as_obj_array_klass()->base_element_klass()->is_interface())) {
       bool unrelated_classes = false;
       // See if neither subclasses the other, or if the class on top
       // is precise.  In either of these cases, the compare is known
--- a/src/share/vm/opto/superword.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/superword.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -454,9 +454,13 @@
           // or need to run igvn.optimize() again before SLP
         } else if (out->is_Phi() && out->bottom_type() == Type::MEMORY && !in_bb(out)) {
           // Ditto.  Not sure what else to check further.
-        } else if (out->Opcode() == Op_StoreCM && out->in(4) == n) {
+        } else if (out->Opcode() == Op_StoreCM && out->in(MemNode::OopStore) == n) {
           // StoreCM has an input edge used as a precedence edge.
           // Maybe an issue when oop stores are vectorized.
+        } else if( out->is_MergeMem() && prev &&
+                   prev->Opcode() == Op_StoreCM && out == prev->in(MemNode::OopStore)) {
+          // Oop store is a MergeMem! This should not happen. Temporarily remove the assertion
+          // for this case because it could not be superwordized anyway.
         } else {
           assert(out == prev || prev == NULL, "no branches off of store slice");
         }
@@ -470,7 +474,7 @@
 }
 
 //------------------------------stmts_can_pack---------------------------
-// Can s1 and s2 be in a pack with s1 immediately preceeding s2 and
+// Can s1 and s2 be in a pack with s1 immediately preceding s2 and
 // s1 aligned at "align"
 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) {
   if (isomorphic(s1, s2)) {
@@ -869,7 +873,7 @@
   for (uint i = start; i < end; i++) {
     if (!is_vector_use(p0, i)) {
       // For now, return false if not scalar promotion case (inputs are the same.)
-      // Later, implement PackNode and allow differring, non-vector inputs
+      // Later, implement PackNode and allow differing, non-vector inputs
       // (maybe just the ones from outside the block.)
       Node* p0_def = p0->in(i);
       for (uint j = 1; j < p->size(); j++) {
@@ -912,54 +916,175 @@
   }
 }
 
-//------------------------------co_locate_pack---------------------------
-// Within a pack, move stores down to the last executed store,
-// and move loads up to the first executed load.
+//-------------------------------remove_and_insert-------------------
+//remove "current" from its current position in the memory graph and insert
+//it after the appropriate insertion point (lip or uip)
+void SuperWord::remove_and_insert(MemNode *current, MemNode *prev, MemNode *lip,
+                                  Node *uip, Unique_Node_List &sched_before) {
+  Node* my_mem = current->in(MemNode::Memory);
+  _igvn.hash_delete(current);
+  _igvn.hash_delete(my_mem);
+
+  //remove current_store from its current position in the memmory graph
+  for (DUIterator i = current->outs(); current->has_out(i); i++) {
+    Node* use = current->out(i);
+    if (use->is_Mem()) {
+      assert(use->in(MemNode::Memory) == current, "must be");
+      _igvn.hash_delete(use);
+      if (use == prev) { // connect prev to my_mem
+        use->set_req(MemNode::Memory, my_mem);
+      } else if (sched_before.member(use)) {
+        _igvn.hash_delete(uip);
+        use->set_req(MemNode::Memory, uip);
+      } else {
+        _igvn.hash_delete(lip);
+        use->set_req(MemNode::Memory, lip);
+      }
+      _igvn._worklist.push(use);
+      --i; //deleted this edge; rescan position
+    }
+  }
+
+  bool sched_up = sched_before.member(current);
+  Node *insert_pt =  sched_up ?  uip : lip;
+  _igvn.hash_delete(insert_pt);
+
+  // all uses of insert_pt's memory state should use current's instead
+  for (DUIterator i = insert_pt->outs(); insert_pt->has_out(i); i++) {
+    Node* use = insert_pt->out(i);
+    if (use->is_Mem()) {
+      assert(use->in(MemNode::Memory) == insert_pt, "must be");
+      _igvn.hash_delete(use);
+      use->set_req(MemNode::Memory, current);
+      _igvn._worklist.push(use);
+      --i; //deleted this edge; rescan position
+    } else if (!sched_up && use->is_Phi() && use->bottom_type() == Type::MEMORY) {
+      uint pos; //lip (lower insert point) must be the last one in the memory slice
+      _igvn.hash_delete(use);
+      for (pos=1; pos < use->req(); pos++) {
+        if (use->in(pos) == insert_pt) break;
+      }
+      use->set_req(pos, current);
+      _igvn._worklist.push(use);
+      --i;
+    }
+  }
+
+  //connect current to insert_pt
+  current->set_req(MemNode::Memory, insert_pt);
+  _igvn._worklist.push(current);
+}
+
+//------------------------------co_locate_pack----------------------------------
+// To schedule a store pack, we need to move any sandwiched memory ops either before
+// or after the pack, based upon dependence information:
+// (1) If any store in the pack depends on the sandwiched memory op, the
+//     sandwiched memory op must be scheduled BEFORE the pack;
+// (2) If a sandwiched memory op depends on any store in the pack, the
+//     sandwiched memory op must be scheduled AFTER the pack;
+// (3) If a sandwiched memory op (say, memA) depends on another sandwiched
+//     memory op (say memB), memB must be scheduled before memA. So, if memA is
+//     scheduled before the pack, memB must also be scheduled before the pack;
+// (4) If there is no dependence restriction for a sandwiched memory op, we simply
+//     schedule this store AFTER the pack
+// (5) We know there is no dependence cycle, so there in no other case;
+// (6) Finally, all memory ops in another single pack should be moved in the same direction.
+//
+// To schedule a load pack: the memory edge of every loads in the pack must be
+// the same as the memory edge of the last executed load in the pack
 void SuperWord::co_locate_pack(Node_List* pk) {
   if (pk->at(0)->is_Store()) {
-    // Push Stores down towards last executed pack member
     MemNode* first     = executed_first(pk)->as_Mem();
     MemNode* last      = executed_last(pk)->as_Mem();
-    MemNode* insert_pt = last;
+    Unique_Node_List schedule_before_pack;
+    Unique_Node_List memops;
+
     MemNode* current   = last->in(MemNode::Memory)->as_Mem();
+    MemNode* previous  = last;
     while (true) {
       assert(in_bb(current), "stay in block");
+      memops.push(previous);
+      for (DUIterator i = current->outs(); current->has_out(i); i++) {
+        Node* use = current->out(i);
+        if (use->is_Mem() && use != previous)
+          memops.push(use);
+      }
+      if(current == first) break;
+      previous = current;
+      current  = current->in(MemNode::Memory)->as_Mem();
+    }
+
+    // determine which memory operations should be scheduled before the pack
+    for (uint i = 1; i < memops.size(); i++) {
+      Node *s1 = memops.at(i);
+      if (!in_pack(s1, pk) && !schedule_before_pack.member(s1)) {
+        for (uint j = 0; j< i; j++) {
+          Node *s2 = memops.at(j);
+          if (!independent(s1, s2)) {
+            if (in_pack(s2, pk) || schedule_before_pack.member(s2)) {
+              schedule_before_pack.push(s1); //s1 must be scheduled before
+              Node_List* mem_pk = my_pack(s1);
+              if (mem_pk != NULL) {
+                for (uint ii = 0; ii < mem_pk->size(); ii++) {
+                  Node* s = mem_pk->at(ii); // follow partner
+                  if (memops.member(s) && !schedule_before_pack.member(s))
+                    schedule_before_pack.push(s);
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+
+    MemNode* lower_insert_pt = last;
+    Node*    upper_insert_pt = first->in(MemNode::Memory);
+    previous                 = last; //previous store in pk
+    current                  = last->in(MemNode::Memory)->as_Mem();
+
+    //start scheduling from "last" to "first"
+    while (true) {
+      assert(in_bb(current), "stay in block");
+      assert(in_pack(previous, pk), "previous stays in pack");
       Node* my_mem = current->in(MemNode::Memory);
+
       if (in_pack(current, pk)) {
-        // Forward users of my memory state to my input memory state
+        // Forward users of my memory state (except "previous) to my input memory state
         _igvn.hash_delete(current);
-        _igvn.hash_delete(my_mem);
         for (DUIterator i = current->outs(); current->has_out(i); i++) {
           Node* use = current->out(i);
-          if (use->is_Mem()) {
+          if (use->is_Mem() && use != previous) {
             assert(use->in(MemNode::Memory) == current, "must be");
             _igvn.hash_delete(use);
-            use->set_req(MemNode::Memory, my_mem);
+            if (schedule_before_pack.member(use)) {
+              _igvn.hash_delete(upper_insert_pt);
+              use->set_req(MemNode::Memory, upper_insert_pt);
+            } else {
+              _igvn.hash_delete(lower_insert_pt);
+              use->set_req(MemNode::Memory, lower_insert_pt);
+            }
             _igvn._worklist.push(use);
             --i; // deleted this edge; rescan position
           }
         }
-        // put current immediately before insert_pt
-        current->set_req(MemNode::Memory, insert_pt->in(MemNode::Memory));
-        _igvn.hash_delete(insert_pt);
-        insert_pt->set_req(MemNode::Memory, current);
-        _igvn._worklist.push(insert_pt);
-        _igvn._worklist.push(current);
-        insert_pt = current;
+        previous = current;
+      } else { // !in_pack(current, pk) ==> a sandwiched store
+        remove_and_insert(current, previous, lower_insert_pt, upper_insert_pt, schedule_before_pack);
       }
+
       if (current == first) break;
       current = my_mem->as_Mem();
-    }
-  } else if (pk->at(0)->is_Load()) {
-    // Pull Loads up towards first executed pack member
-    LoadNode* first = executed_first(pk)->as_Load();
-    Node* first_mem = first->in(MemNode::Memory);
-    _igvn.hash_delete(first_mem);
-    // Give each load same memory state as first
+    } // end while
+  } else if (pk->at(0)->is_Load()) { //load
+    // all use the memory state that the last executed load uses
+    LoadNode* last_load  = executed_last(pk)->as_Load();
+    Node* last_mem       = last_load->in(MemNode::Memory);
+    _igvn.hash_delete(last_mem);
+    // Give each load same memory state as last
     for (uint i = 0; i < pk->size(); i++) {
       LoadNode* ld = pk->at(i)->as_Load();
       _igvn.hash_delete(ld);
-      ld->set_req(MemNode::Memory, first_mem);
+      ld->set_req(MemNode::Memory, last_mem);
       _igvn._worklist.push(ld);
     }
   }
@@ -1444,7 +1569,7 @@
 // (Start, end] half-open range defining which operands are vector
 void SuperWord::vector_opd_range(Node* n, uint* start, uint* end) {
   switch (n->Opcode()) {
-  case Op_LoadB:   case Op_LoadC:
+  case Op_LoadB:   case Op_LoadUS:
   case Op_LoadI:   case Op_LoadL:
   case Op_LoadF:   case Op_LoadD:
   case Op_LoadP:
--- a/src/share/vm/opto/superword.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/superword.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -308,7 +308,7 @@
   void dependence_graph();
   // Return a memory slice (node list) in predecessor order starting at "start"
   void mem_slice_preds(Node* start, Node* stop, GrowableArray<Node*> &preds);
-  // Can s1 and s2 be in a pack with s1 immediately preceeding s2 and  s1 aligned at "align"
+  // Can s1 and s2 be in a pack with s1 immediately preceding s2 and  s1 aligned at "align"
   bool stmts_can_pack(Node* s1, Node* s2, int align);
   // Does s exist in a pack at position pos?
   bool exists_at(Node* s, uint pos);
@@ -341,8 +341,11 @@
   void filter_packs();
   // Adjust the memory graph for the packed operations
   void schedule();
-  // Within a pack, move stores down to the last executed store,
-  // and move loads up to the first executed load.
+  // Remove "current" from its current position in the memory graph and insert
+  // it after the appropriate insert points (lip or uip);
+  void remove_and_insert(MemNode *current, MemNode *prev, MemNode *lip, Node *uip, Unique_Node_List &schd_before);
+  // Within a store pack, schedule stores together by moving out the sandwiched memory ops according
+  // to dependence info; and within a load pack, move loads down to the last executed load.
   void co_locate_pack(Node_List* p);
   // Convert packs into vector node operations
   void output();
--- a/src/share/vm/opto/type.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/type.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -226,6 +226,7 @@
   TypeInt::CC_LE   = TypeInt::make(-1, 0, WidenMin);
   TypeInt::CC_GE   = TypeInt::make( 0, 1, WidenMin);  // == TypeInt::BOOL
   TypeInt::BYTE    = TypeInt::make(-128,127,     WidenMin); // Bytes
+  TypeInt::UBYTE   = TypeInt::make(0, 255,       WidenMin); // Unsigned Bytes
   TypeInt::CHAR    = TypeInt::make(0,65535,      WidenMin); // Java chars
   TypeInt::SHORT   = TypeInt::make(-32768,32767, WidenMin); // Java shorts
   TypeInt::POS     = TypeInt::make(0,max_jint,   WidenMin); // Non-neg values
@@ -486,6 +487,23 @@
   return false;
 }
 
+//----------------------interface_vs_oop---------------------------------------
+#ifdef ASSERT
+bool Type::interface_vs_oop(const Type *t) const {
+  bool result = false;
+
+  const TypeInstPtr* this_inst = this->isa_instptr();
+  const TypeInstPtr*    t_inst =    t->isa_instptr();
+  if( this_inst && this_inst->is_loaded() && t_inst && t_inst->is_loaded() ) {
+    bool this_interface = this_inst->klass()->is_interface();
+    bool    t_interface =    t_inst->klass()->is_interface();
+    result = this_interface ^ t_interface;
+  }
+
+  return result;
+}
+#endif
+
 //------------------------------meet-------------------------------------------
 // Compute the MEET of two types.  NOT virtual.  It enforces that meet is
 // commutative and the lattice is symmetric.
@@ -506,16 +524,8 @@
   // Interface meet Oop is Not Symmetric:
   // Interface:AnyNull meet Oop:AnyNull == Interface:AnyNull
   // Interface:NotNull meet Oop:NotNull == java/lang/Object:NotNull
-  const TypeInstPtr* this_inst = this->isa_instptr();
-  const TypeInstPtr*    t_inst =    t->isa_instptr();
-  bool interface_vs_oop = false;
-  if( this_inst && this_inst->is_loaded() && t_inst && t_inst->is_loaded() ) {
-    bool this_interface = this_inst->klass()->is_interface();
-    bool    t_interface =    t_inst->klass()->is_interface();
-    interface_vs_oop = this_interface ^ t_interface;
-  }
-
-  if( !interface_vs_oop && (t2t != t->_dual || t2this != _dual) ) {
+
+  if( !interface_vs_oop(t) && (t2t != t->_dual || t2this != _dual) ) {
     tty->print_cr("=== Meet Not Symmetric ===");
     tty->print("t   =                   ");         t->dump(); tty->cr();
     tty->print("this=                   ");            dump(); tty->cr();
@@ -1022,6 +1032,7 @@
 const TypeInt *TypeInt::CC_LE;  // [-1,0]
 const TypeInt *TypeInt::CC_GE;  // [0,1] == BOOL (!)
 const TypeInt *TypeInt::BYTE;   // Bytes, -128 to 127
+const TypeInt *TypeInt::UBYTE;  // Unsigned Bytes, 0 to 255
 const TypeInt *TypeInt::CHAR;   // Java chars, 0-65535
 const TypeInt *TypeInt::SHORT;  // Java shorts, -32768-32767
 const TypeInt *TypeInt::POS;    // Positive 32-bit integers or zero
@@ -1798,6 +1809,17 @@
   return (intptr_t)_elem + (intptr_t)_size;
 }
 
+//----------------------interface_vs_oop---------------------------------------
+#ifdef ASSERT
+bool TypeAry::interface_vs_oop(const Type *t) const {
+  const TypeAry* t_ary = t->is_ary();
+  if (t_ary) {
+    return _elem->interface_vs_oop(t_ary->_elem);
+  }
+  return false;
+}
+#endif
+
 //------------------------------dump2------------------------------------------
 #ifndef PRODUCT
 void TypeAry::dump2( Dict &d, uint depth, outputStream *st ) const {
@@ -2455,7 +2477,7 @@
     // 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 occurrance.
+    // but this assertion here is to help prevent its occurence.
     tty->print_cr("Found oop constant with non-zero offset");
     ShouldNotReachHere();
   }
@@ -2471,6 +2493,8 @@
   const Type* ft = join(kills);
   const TypeInstPtr* ftip = ft->isa_instptr();
   const TypeInstPtr* ktip = kills->isa_instptr();
+  const TypeKlassPtr* ftkp = ft->isa_klassptr();
+  const TypeKlassPtr* ktkp = kills->isa_klassptr();
 
   if (ft->empty()) {
     // Check for evil case of 'this' being a class and 'kills' expecting an
@@ -2484,6 +2508,8 @@
     // uplift the type.
     if (!empty() && ktip != NULL && ktip->is_loaded() && ktip->klass()->is_interface())
       return kills;             // Uplift to interface
+    if (!empty() && ktkp != NULL && ktkp->klass()->is_loaded() && ktkp->klass()->is_interface())
+      return kills;             // Uplift to interface
 
     return Type::TOP;           // Canonical empty value
   }
@@ -2499,6 +2525,12 @@
     // Happens in a CTW of rt.jar, 320-341, no extra flags
     return ktip->cast_to_ptr_type(ftip->ptr());
   }
+  if (ftkp != NULL && ktkp != NULL &&
+      ftkp->is_loaded() &&  ftkp->klass()->is_interface() &&
+      ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
+    // Happens in a CTW of rt.jar, 320-341, no extra flags
+    return ktkp->cast_to_ptr_type(ftkp->ptr());
+  }
 
   return ft;
 }
@@ -2751,7 +2783,7 @@
       // LCA is object_klass, but if we subclass from the top we can do better
       if( above_centerline(_ptr) ) { // if( _ptr == TopPTR || _ptr == AnyNull )
         // If 'this' (InstPtr) is above the centerline and it is Object class
-        // then we can subclass in the Java class heirarchy.
+        // then we can subclass in the Java class hierarchy.
         if (klass()->equals(ciEnv::current()->Object_klass())) {
           // that is, tp's array type is a subtype of my klass
           return TypeAryPtr::make(ptr, tp->ary(), tp->klass(), tp->klass_is_exact(), offset, instance_id);
@@ -3012,7 +3044,7 @@
 
 //------------------------------xdual------------------------------------------
 // Dual: do NOT dual on klasses.  This means I do NOT understand the Java
-// inheritence mechanism.
+// inheritance mechanism.
 const Type *TypeInstPtr::xdual() const {
   return new TypeInstPtr( dual_ptr(), klass(), klass_is_exact(), const_oop(), dual_offset(), dual_instance_id()  );
 }
@@ -3166,7 +3198,7 @@
   bool chg = false;
   if (lo < min_lo) { lo = min_lo; chg = true; }
   if (hi > max_hi) { hi = max_hi; chg = true; }
-  // Negative length arrays will produce weird intermediate dead fath-path code
+  // Negative length arrays will produce weird intermediate dead fast-path code
   if (lo > hi)
     return TypeInt::ZERO;
   if (!chg)
@@ -3348,7 +3380,7 @@
       // LCA is object_klass, but if we subclass from the top we can do better
       if (above_centerline(tp->ptr())) {
         // If 'tp'  is above the centerline and it is Object class
-        // then we can subclass in the Java class heirarchy.
+        // then we can subclass in the Java class hierarchy.
         if( tp->klass()->equals(ciEnv::current()->Object_klass()) ) {
           // that is, my array type is a subtype of 'tp' klass
           return make( ptr, _ary, _klass, _klass_is_exact, offset, instance_id );
@@ -3377,6 +3409,17 @@
   return new TypeAryPtr( dual_ptr(), _const_oop, _ary->dual()->is_ary(),_klass, _klass_is_exact, dual_offset(), dual_instance_id() );
 }
 
+//----------------------interface_vs_oop---------------------------------------
+#ifdef ASSERT
+bool TypeAryPtr::interface_vs_oop(const Type *t) const {
+  const TypeAryPtr* t_aryptr = t->isa_aryptr();
+  if (t_aryptr) {
+    return _ary->interface_vs_oop(t_aryptr->_ary);
+  }
+  return false;
+}
+#endif
+
 //------------------------------dump2------------------------------------------
 #ifndef PRODUCT
 void TypeAryPtr::dump2( Dict &d, uint depth, outputStream *st ) const {
@@ -3441,27 +3484,27 @@
 //------------------------------hash-------------------------------------------
 // Type-specific hashing function.
 int TypeNarrowOop::hash(void) const {
-  return _ooptype->hash() + 7;
+  return _ptrtype->hash() + 7;
 }
 
 
 bool TypeNarrowOop::eq( const Type *t ) const {
   const TypeNarrowOop* tc = t->isa_narrowoop();
   if (tc != NULL) {
-    if (_ooptype->base() != tc->_ooptype->base()) {
+    if (_ptrtype->base() != tc->_ptrtype->base()) {
       return false;
     }
-    return tc->_ooptype->eq(_ooptype);
+    return tc->_ptrtype->eq(_ptrtype);
   }
   return false;
 }
 
 bool TypeNarrowOop::singleton(void) const {    // TRUE if type is a singleton
-  return _ooptype->singleton();
+  return _ptrtype->singleton();
 }
 
 bool TypeNarrowOop::empty(void) const {
-  return _ooptype->empty();
+  return _ptrtype->empty();
 }
 
 //------------------------------xmeet------------------------------------------
@@ -3495,7 +3538,7 @@
     return this;
 
   case NarrowOop: {
-    const Type* result = _ooptype->xmeet(t->make_ptr());
+    const Type* result = _ptrtype->xmeet(t->make_ptr());
     if (result->isa_ptr()) {
       return TypeNarrowOop::make(result->is_ptr());
     }
@@ -3511,13 +3554,13 @@
 }
 
 const Type *TypeNarrowOop::xdual() const {    // Compute dual right now.
-  const TypePtr* odual = _ooptype->dual()->is_ptr();
+  const TypePtr* odual = _ptrtype->dual()->is_ptr();
   return new TypeNarrowOop(odual);
 }
 
 const Type *TypeNarrowOop::filter( const Type *kills ) const {
   if (kills->isa_narrowoop()) {
-    const Type* ft =_ooptype->filter(kills->is_narrowoop()->_ooptype);
+    const Type* ft =_ptrtype->filter(kills->is_narrowoop()->_ptrtype);
     if (ft->empty())
       return Type::TOP;           // Canonical empty value
     if (ft->isa_ptr()) {
@@ -3525,7 +3568,7 @@
     }
     return ft;
   } else if (kills->isa_ptr()) {
-    const Type* ft = _ooptype->join(kills);
+    const Type* ft = _ptrtype->join(kills);
     if (ft->empty())
       return Type::TOP;           // Canonical empty value
     return ft;
@@ -3536,13 +3579,13 @@
 
 
 intptr_t TypeNarrowOop::get_con() const {
-  return _ooptype->get_con();
+  return _ptrtype->get_con();
 }
 
 #ifndef PRODUCT
 void TypeNarrowOop::dump2( Dict & d, uint depth, outputStream *st ) const {
   st->print("narrowoop: ");
-  _ooptype->dump2(d, depth, st);
+  _ptrtype->dump2(d, depth, st);
 }
 #endif
 
@@ -3657,7 +3700,7 @@
 
 //------------------------------cast_to_ptr_type-------------------------------
 const Type *TypeKlassPtr::cast_to_ptr_type(PTR ptr) const {
-  assert(_base == OopPtr, "subclass must override cast_to_ptr_type");
+  assert(_base == KlassPtr, "subclass must override cast_to_ptr_type");
   if( ptr == _ptr ) return this;
   return make(ptr, _klass, _offset);
 }
--- a/src/share/vm/opto/type.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/type.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -190,6 +190,11 @@
   // Currently, it also works around limitations involving interface types.
   virtual const Type *filter( const Type *kills ) const;
 
+#ifdef ASSERT
+  // One type is interface, the other is oop
+  virtual bool interface_vs_oop(const Type *t) const;
+#endif
+
   // Returns true if this pointer points at memory which contains a
   // compressed oop references.
   bool is_ptr_to_narrowoop() const;
@@ -227,6 +232,11 @@
 
   // Returns this ptr type or the equivalent ptr type for this compressed pointer.
   const TypePtr* make_ptr() const;
+
+  // Returns this oopptr type or the equivalent oopptr type for this compressed pointer.
+  // Asserts if the underlying type is not an oopptr or narrowoop.
+  const TypeOopPtr* make_oopptr() const;
+
   // Returns this compressed pointer or the equivalent compressed version
   // of this pointer type.
   const TypeNarrowOop* make_narrowoop() const;
@@ -415,6 +425,7 @@
   static const TypeInt *CC_LE;  // [-1,0]
   static const TypeInt *CC_GE;  // [0,1] == BOOL (!)
   static const TypeInt *BYTE;
+  static const TypeInt *UBYTE;
   static const TypeInt *CHAR;
   static const TypeInt *SHORT;
   static const TypeInt *POS;
@@ -545,6 +556,10 @@
   virtual const Type *xmeet( const Type *t ) const;
   virtual const Type *xdual() const;    // Compute dual right now.
   bool ary_must_be_exact() const;  // true if arrays of such are never generic
+#ifdef ASSERT
+  // One type is interface, the other is oop
+  virtual bool interface_vs_oop(const Type *t) const;
+#endif
 #ifndef PRODUCT
   virtual void dump2( Dict &d, uint, outputStream *st  ) const; // Specialized per-Type dumping
 #endif
@@ -866,6 +881,10 @@
   }
   static const TypeAryPtr *_array_body_type[T_CONFLICT+1];
   // sharpen the type of an int which is used as an array size
+#ifdef ASSERT
+  // One type is interface, the other is oop
+  virtual bool interface_vs_oop(const Type *t) const;
+#endif
 #ifndef PRODUCT
   virtual void dump2( Dict &d, uint depth, outputStream *st ) const; // Specialized per-Type dumping
 #endif
@@ -882,6 +901,8 @@
 public:
   ciSymbol* name()  const { return _klass->name(); }
 
+  bool  is_loaded() const { return _klass->is_loaded(); }
+
   // ptr to klass 'k'
   static const TypeKlassPtr *make( ciKlass* k ) { return make( TypePtr::Constant, k, 0); }
   // ptr to klass 'k' with offset
@@ -916,13 +937,13 @@
 // between the normal and the compressed form.
 class TypeNarrowOop : public Type {
 protected:
-  const TypePtr* _ooptype; // Could be TypePtr::NULL_PTR
+  const TypePtr* _ptrtype; // Could be TypePtr::NULL_PTR
 
-  TypeNarrowOop( const TypePtr* ooptype): Type(NarrowOop),
-    _ooptype(ooptype) {
-    assert(ooptype->offset() == 0 ||
-           ooptype->offset() == OffsetBot ||
-           ooptype->offset() == OffsetTop, "no real offsets");
+  TypeNarrowOop( const TypePtr* ptrtype): Type(NarrowOop),
+    _ptrtype(ptrtype) {
+    assert(ptrtype->offset() == 0 ||
+           ptrtype->offset() == OffsetBot ||
+           ptrtype->offset() == OffsetTop, "no real offsets");
   }
 public:
   virtual bool eq( const Type *t ) const;
@@ -946,8 +967,8 @@
   }
 
   // returns the equivalent ptr type for this compressed pointer
-  const TypePtr *make_oopptr() const {
-    return _ooptype;
+  const TypePtr *get_ptrtype() const {
+    return _ptrtype;
   }
 
   static const TypeNarrowOop *BOTTOM;
@@ -1134,10 +1155,14 @@
 }
 
 inline const TypePtr* Type::make_ptr() const {
-  return (_base == NarrowOop) ? is_narrowoop()->make_oopptr() :
+  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype() :
                                 (isa_ptr() ? is_ptr() : NULL);
 }
 
+inline const TypeOopPtr* Type::make_oopptr() const {
+  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype()->is_oopptr() : is_oopptr();
+}
+
 inline const TypeNarrowOop* Type::make_narrowoop() const {
   return (_base == NarrowOop) ? is_narrowoop() :
                                 (isa_ptr() ? TypeNarrowOop::make(is_ptr()) : NULL);
@@ -1191,6 +1216,8 @@
 #define Op_AndX      Op_AndL
 #define Op_AddX      Op_AddL
 #define Op_SubX      Op_SubL
+#define Op_XorX      Op_XorL
+#define Op_URShiftX  Op_URShiftL
 // conversions
 #define ConvI2X(x)   ConvI2L(x)
 #define ConvL2X(x)   (x)
@@ -1233,6 +1260,8 @@
 #define Op_AndX      Op_AndI
 #define Op_AddX      Op_AddI
 #define Op_SubX      Op_SubI
+#define Op_XorX      Op_XorI
+#define Op_URShiftX  Op_URShiftI
 // conversions
 #define ConvI2X(x)   (x)
 #define ConvL2X(x)   ConvL2I(x)
--- a/src/share/vm/opto/vectornode.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/opto/vectornode.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -239,7 +239,7 @@
     return Op_XorV;
 
   case Op_LoadB:
-  case Op_LoadC:
+  case Op_LoadUS:
   case Op_LoadS:
   case Op_LoadI:
   case Op_LoadL:
@@ -269,7 +269,7 @@
     case 16:       return Op_Load16B;
     }
     break;
-  case Op_LoadC:
+  case Op_LoadUS:
     switch (vlen) {
     case  2:       return Op_Load2C;
     case  4:       return Op_Load4C;
--- a/src/share/vm/prims/jni.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jni.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -301,6 +301,10 @@
   klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
                                                      Handle(), &st, CHECK_NULL);
 
+  if (TraceClassResolution && k != NULL) {
+    trace_class_resolution(k);
+  }
+
   cls = (jclass)JNIHandles::make_local(
     env, Klass::cast(k)->java_mirror());
   return cls;
@@ -365,6 +369,10 @@
   result = find_class_from_class_loader(env, sym, true, loader,
                                         protection_domain, true, thread);
 
+  if (TraceClassResolution && result != NULL) {
+    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
+  }
+
   // If we were the first invocation of jni_FindClass, we enable compilation again
   // rather than just allowing invocation counter to overflow and decay.
   // Controlled by flag DelayCompilationDuringStartup.
@@ -2646,7 +2654,12 @@
   Handle protection_domain; // null protection domain
 
   symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL);
-  return find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
+  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)));
+  }
+  return result;
 }
 
 // These lookups are done with the NULL (bootstrap) ClassLoader to
@@ -2691,8 +2704,13 @@
 
     directBufferSupportInitializeEnded = 1;
   } else {
-    ThreadInVMfromNative tivn(thread); // set state as yield_all can call os:sleep
     while (!directBufferSupportInitializeEnded && !directBufferSupportInitializeFailed) {
+      // Set state as yield_all can call os:sleep. On Solaris, yield_all calls
+      // os::sleep which requires the VM state transition. On other platforms, it
+      // is not necessary. The following call to change the VM state is purposely
+      // put inside the loop to avoid potential deadlock when multiple threads
+      // try to call this method. See 6791815 for more details.
+      ThreadInVMfromNative tivn(thread);
       os::yield_all();
     }
   }
--- a/src/share/vm/prims/jvm.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvm.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +64,7 @@
   ResourceMark rm;
   int line_number = -1;
   const char * source_file = NULL;
+  const char * trace = "explicit";
   klassOop caller = NULL;
   JavaThread* jthread = JavaThread::current();
   if (jthread->has_last_Java_frame()) {
@@ -107,12 +108,21 @@
                (last_caller->name() == vmSymbols::loadClassInternal_name() ||
                 last_caller->name() == vmSymbols::loadClass_name())) {
       found_it = true;
+    } else if (!vfst.at_end()) {
+      if (vfst.method()->is_native()) {
+        // JNI call
+        found_it = true;
+      }
     }
     if (found_it && !vfst.at_end()) {
       // found the caller
       caller = vfst.method()->method_holder();
       line_number = vfst.method()->line_number_from_bci(vfst.bci());
-      symbolOop s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name();
+      if (line_number == -1) {
+        // show method name if it's a native method
+        trace = vfst.method()->name_and_sig_as_C_string();
+      }
+      symbolOop s = instanceKlass::cast(caller)->source_file_name();
       if (s != NULL) {
         source_file = s->as_C_string();
       }
@@ -124,15 +134,15 @@
       const char * to = Klass::cast(to_class)->external_name();
       // print in a single call to reduce interleaving between threads
       if (source_file != NULL) {
-        tty->print("RESOLVE %s %s %s:%d (explicit)\n", from, to, source_file, line_number);
+        tty->print("RESOLVE %s %s %s:%d (%s)\n", from, to, source_file, line_number, trace);
       } else {
-        tty->print("RESOLVE %s %s (explicit)\n", from, to);
+        tty->print("RESOLVE %s %s (%s)\n", from, to, trace);
       }
     }
   }
 }
 
-static void trace_class_resolution(klassOop to_class) {
+void trace_class_resolution(klassOop to_class) {
   EXCEPTION_MARK;
   trace_class_resolution_impl(to_class, THREAD);
   if (HAS_PENDING_EXCEPTION) {
@@ -628,11 +638,54 @@
   if (PrintJVMWarnings) warning("JVM_ResolveClass not implemented");
 JVM_END
 
-// Common implementation for JVM_FindClassFromBootLoader and
-// JVM_FindClassFromLoader
-static jclass jvm_find_class_from_class_loader(JNIEnv* env, const char* name,
-                                  jboolean init, jobject loader,
-                                  jboolean throwError, TRAPS) {
+
+// Returns a class loaded by the bootstrap class loader; or null
+// if not found.  ClassNotFoundException is not thrown.
+//
+// Rationale behind JVM_FindClassFromBootLoader
+// a> JVM_FindClassFromClassLoader was never exported in the export tables.
+// b> because of (a) java.dll has a direct dependecy on the  unexported
+//    private symbol "_JVM_FindClassFromClassLoader@20".
+// c> the launcher cannot use the private symbol as it dynamically opens
+//    the entry point, so if something changes, the launcher will fail
+//    unexpectedly at runtime, it is safest for the launcher to dlopen a
+//    stable exported interface.
+// d> re-exporting JVM_FindClassFromClassLoader as public, will cause its
+//    signature to change from _JVM_FindClassFromClassLoader@20 to
+//    JVM_FindClassFromClassLoader and will not be backward compatible
+//    with older JDKs.
+// Thus a public/stable exported entry point is the right solution,
+// public here means public in linker semantics, and is exported only
+// to the JDK, and is not intended to be a public API.
+
+JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env,
+                                              const char* name))
+  JVMWrapper2("JVM_FindClassFromBootLoader %s", name);
+
+  // Java libraries should ensure that name is never null...
+  if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) {
+    // It's impossible to create this class;  the name cannot fit
+    // into the constant pool.
+    return NULL;
+  }
+
+  symbolHandle h_name = oopFactory::new_symbol_handle(name, CHECK_NULL);
+  klassOop k = SystemDictionary::resolve_or_null(h_name, CHECK_NULL);
+  if (k == NULL) {
+    return NULL;
+  }
+
+  if (TraceClassResolution) {
+    trace_class_resolution(k);
+  }
+  return (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror());
+JVM_END
+
+JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name,
+                                               jboolean init, jobject loader,
+                                               jboolean throwError))
+  JVMWrapper3("JVM_FindClassFromClassLoader %s throw %s", name,
+               throwError ? "error" : "exception");
   // Java libraries should ensure that name is never null...
   if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) {
     // It's impossible to create this class;  the name cannot fit
@@ -652,40 +705,6 @@
     trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
   }
   return result;
-}
-
-// Rationale behind JVM_FindClassFromBootLoader
-// a> JVM_FindClassFromClassLoader was never exported in the export tables.
-// b> because of (a) java.dll has a direct dependecy on the  unexported
-//    private symbol "_JVM_FindClassFromClassLoader@20".
-// c> the launcher cannot use the private symbol as it dynamically opens
-//    the entry point, so if something changes, the launcher will fail
-//    unexpectedly at runtime, it is safest for the launcher to dlopen a
-//    stable exported interface.
-// d> re-exporting JVM_FindClassFromClassLoader as public, will cause its
-//    signature to change from _JVM_FindClassFromClassLoader@20 to
-//    JVM_FindClassFromClassLoader and will not be backward compatible
-//    with older JDKs.
-// Thus a public/stable exported entry point is the right solution,
-// public here means public in linker semantics, and is exported only
-// to the JDK, and is not intended to be a public API.
-
-JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env,
-                                              const char* name,
-                                              jboolean throwError))
-  JVMWrapper3("JVM_FindClassFromBootLoader %s throw %s", name,
-              throwError ? "error" : "exception");
-  return jvm_find_class_from_class_loader(env, name, JNI_FALSE,
-                                          (jobject)NULL, throwError, THREAD);
-JVM_END
-
-JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name,
-                                               jboolean init, jobject loader,
-                                               jboolean throwError))
-  JVMWrapper3("JVM_FindClassFromClassLoader %s throw %s", name,
-               throwError ? "error" : "exception");
-  return jvm_find_class_from_class_loader(env, name, init, loader,
-                                          throwError, THREAD);
 JVM_END
 
 
@@ -746,6 +765,20 @@
 static jclass jvm_define_class_common(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source, TRAPS) {
   if (source == NULL)  source = "__JVM_DefineClass__";
 
+  assert(THREAD->is_Java_thread(), "must be a JavaThread");
+  JavaThread* jt = (JavaThread*) THREAD;
+
+  PerfClassTraceTime vmtimer(ClassLoader::perf_define_appclass_time(),
+                             ClassLoader::perf_define_appclass_selftime(),
+                             ClassLoader::perf_define_appclasses(),
+                             jt->get_thread_stat()->perf_recursion_counts_addr(),
+                             jt->get_thread_stat()->perf_timers_addr(),
+                             PerfClassTraceTime::DEFINE_CLASS);
+
+  if (UsePerfData) {
+    ClassLoader::perf_app_classfile_bytes_read()->inc(len);
+  }
+
   // Since exceptions can be thrown, class initialization can take place
   // if name is NULL no check for class name in .class stream has to be made.
   symbolHandle class_name;
@@ -1242,7 +1275,7 @@
 
            // Throws an exception if outer klass has not declared k as
            // an inner klass
-           Reflection::check_for_inner_class(k, inner_klass, CHECK_NULL);
+           Reflection::check_for_inner_class(k, inner_klass, true, CHECK_NULL);
 
            result->obj_at_put(members, inner_klass->java_mirror());
            members++;
@@ -1265,16 +1298,29 @@
 
 
 JVM_ENTRY(jclass, JVM_GetDeclaringClass(JNIEnv *env, jclass ofClass))
-  const int inner_class_info_index = 0;
-  const int outer_class_info_index = 1;
-
+{
   // 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()) {
     return NULL;
   }
 
-  instanceKlassHandle k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
+  symbolOop simple_name = NULL;
+  klassOop outer_klass
+    = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))
+                          )->compute_enclosing_class(simple_name, CHECK_NULL);
+  if (outer_klass == NULL)  return NULL;  // already a top-level class
+  if (simple_name == NULL)  return NULL;  // an anonymous class (inside a method)
+  return (jclass) JNIHandles::make_local(env, Klass::cast(outer_klass)->java_mirror());
+}
+JVM_END
+
+// should be in instanceKlass.cpp, but is here for historical reasons
+klassOop instanceKlass::compute_enclosing_class_impl(instanceKlassHandle k,
+                                                     symbolOop& simple_name_result, TRAPS) {
+  Thread* thread = THREAD;
+  const int inner_class_info_index = inner_class_inner_class_info_offset;
+  const int outer_class_info_index = inner_class_outer_class_info_offset;
 
   if (k->inner_classes()->length() == 0) {
     // No inner class info => no declaring class
@@ -1288,35 +1334,51 @@
   bool found = false;
   klassOop ok;
   instanceKlassHandle outer_klass;
+  bool inner_is_member = false;
+  int simple_name_index = 0;
 
   // Find inner_klass attribute
-  for(int i = 0; i < i_length && !found; i+= 4) {
+  for (int i = 0; i < i_length && !found; i += inner_class_next_offset) {
     int ioff = i_icls->ushort_at(i + inner_class_info_index);
     int ooff = i_icls->ushort_at(i + outer_class_info_index);
-
-    if (ioff != 0 && ooff != 0) {
+    int noff = i_icls->ushort_at(i + inner_class_inner_name_offset);
+    if (ioff != 0) {
       // 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);
-        if (k() == inner_klass) {
-          found = true;
+        found = (k() == inner_klass);
+        if (found && ooff != 0) {
           ok = i_cp->klass_at(ooff, CHECK_NULL);
           outer_klass = instanceKlassHandle(thread, ok);
+          simple_name_index = noff;
+          inner_is_member = true;
         }
       }
     }
   }
 
+  if (found && outer_klass.is_null()) {
+    // It may be anonymous; try for that.
+    int encl_method_class_idx = k->enclosing_method_class_index();
+    if (encl_method_class_idx != 0) {
+      ok = i_cp->klass_at(encl_method_class_idx, CHECK_NULL);
+      outer_klass = instanceKlassHandle(thread, ok);
+      inner_is_member = false;
+    }
+  }
+
   // If no inner class attribute found for this class.
-  if (!found) return NULL;
+  if (outer_klass.is_null())  return NULL;
 
   // Throws an exception if outer klass has not declared k as an inner klass
-  Reflection::check_for_inner_class(outer_klass, k, CHECK_NULL);
-
-  return (jclass)JNIHandles::make_local(env, outer_klass->java_mirror());
-JVM_END
-
+  // We need evidence that each klass knows about the other, or else
+  // the system could allow a spoof of an inner class to gain access rights.
+  Reflection::check_for_inner_class(outer_klass, k, inner_is_member, CHECK_NULL);
+
+  simple_name_result = (inner_is_member ? i_cp->symbol_at(simple_name_index) : symbolOop(NULL));
+  return outer_klass();
+}
 
 JVM_ENTRY(jstring, JVM_GetClassSignature(JNIEnv *env, jclass cls))
   assert (cls != NULL, "illegal class");
@@ -2183,6 +2245,9 @@
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
       return cp->uncached_name_ref_at(cp_index)->as_utf8();
+    case JVM_CONSTANT_NameAndType:
+      // for invokedynamic
+      return cp->nt_name_ref_at(cp_index)->as_utf8();
     default:
       fatal("JVM_GetCPMethodNameUTF: illegal constant");
   }
@@ -2200,6 +2265,9 @@
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
       return cp->uncached_signature_ref_at(cp_index)->as_utf8();
+    case JVM_CONSTANT_NameAndType:
+      // for invokedynamic
+      return cp->nt_signature_ref_at(cp_index)->as_utf8();
     default:
       fatal("JVM_GetCPMethodSignatureUTF: illegal constant");
   }
@@ -2475,7 +2543,8 @@
   if (Arguments::vfprintf_hook() != NULL) {
     jio_fprintf(defaultStream::output_stream(), "%s", s);
   } else {
-    ::write(defaultStream::output_fd(), s, (int)strlen(s));
+    // Make an unused local variable to avoid warning from gcc 4.x compiler.
+    size_t count = ::write(defaultStream::output_fd(), s, (int)strlen(s));
   }
 }
 
@@ -3212,8 +3281,12 @@
   }
   Handle h_loader(THREAD, loader);
   Handle h_prot  (THREAD, protection_domain);
-  return find_class_from_class_loader(env, name, true, h_loader, h_prot,
-                                      false, thread);
+  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)));
+  }
+  return result;
 JVM_END
 
 
@@ -3855,6 +3928,7 @@
   //   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);
+
   KlassHandle klass_handle(THREAD, klass);
   // Check if we should initialize the class
   if (init && klass_handle->oop_is_instance()) {
--- a/src/share/vm/prims/jvm.h	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvm.h	Tue Jul 28 13:50:07 2009 -0600
@@ -390,15 +390,10 @@
                              jobject loader, jboolean throwError);
 
 /*
- * Find a class from a boot class loader. Throw ClassNotFoundException
- * or NoClassDefFoundError depending on the value of the last
- * argument. This is the same as FindClassFromClassLoader but provided
- * as a convenience method exported correctly on all platforms for
- * JSR 277 launcher class loading.
+ * Find a class from a boot class loader. Returns NULL if class not found.
  */
 JNIEXPORT jclass JNICALL
-JVM_FindClassFromBootLoader(JNIEnv *env, const char *name,
-                            jboolean throwError);
+JVM_FindClassFromBootLoader(JNIEnv *env, const char *name);
 
 /*
  * Find a class from a given class.
--- a/src/share/vm/prims/jvm_misc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvm_misc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -27,6 +27,7 @@
 
 jclass find_class_from_class_loader(JNIEnv* env, symbolHandle name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS);
 
+void trace_class_resolution(klassOop to_class);
 
 /*
  * Support for Serialization and RMI. Currently used by HotSpot only.
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -659,15 +659,21 @@
       case Bytecodes::_invokevirtual   :  // fall through
       case Bytecodes::_invokespecial   :  // fall through
       case Bytecodes::_invokestatic    :  // fall through
+      case Bytecodes::_invokedynamic   :  // fall through
       case Bytecodes::_invokeinterface :
         assert(len == 3 || (code == Bytecodes::_invokeinterface && len ==5),
                "sanity check");
+        int cpci = Bytes::get_native_u2(bcp+1);
+        bool is_invokedynamic = (EnableInvokeDynamic && code == Bytecodes::_invokedynamic);
+        if (is_invokedynamic)
+          cpci = Bytes::get_native_u4(bcp+1);
         // cache cannot be pre-fetched since some classes won't have it yet
         ConstantPoolCacheEntry* entry =
-          mh->constants()->cache()->entry_at(Bytes::get_native_u2(bcp+1));
+          mh->constants()->cache()->main_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;
       }
     }
--- a/src/share/vm/prims/jvmtiEnv.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiEnv.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -99,6 +99,9 @@
     }
     // otherwise, create the state
     state = JvmtiThreadState::state_for(java_thread);
+    if (state == NULL) {
+      return JVMTI_ERROR_THREAD_NOT_ALIVE;
+    }
   }
   state->env_thread_state(this)->set_agent_thread_local_storage_data((void*)data);
   return JVMTI_ERROR_NONE;
@@ -1308,6 +1311,9 @@
 
   // retrieve or create JvmtiThreadState.
   JvmtiThreadState* state = JvmtiThreadState::state_for(java_thread);
+  if (state == NULL) {
+    return JVMTI_ERROR_THREAD_NOT_ALIVE;
+  }
   uint32_t debug_bits = 0;
   if (is_thread_fully_suspended(java_thread, true, &debug_bits)) {
     err = get_frame_count(state, count_ptr);
@@ -1329,6 +1335,12 @@
   HandleMark hm(current_thread);
   uint32_t debug_bits = 0;
 
+  // retrieve or create the state
+  JvmtiThreadState* state = JvmtiThreadState::state_for(java_thread);
+  if (state == NULL) {
+    return JVMTI_ERROR_THREAD_NOT_ALIVE;
+  }
+
   // Check if java_thread is fully suspended
   if (!is_thread_fully_suspended(java_thread, true /* wait for suspend completion */, &debug_bits)) {
     return JVMTI_ERROR_THREAD_NOT_SUSPENDED;
@@ -1399,9 +1411,6 @@
     // It's fine to update the thread state here because no JVMTI events
     // shall be posted for this PopFrame.
 
-    // retreive or create the state
-    JvmtiThreadState* state = JvmtiThreadState::state_for(java_thread);
-
     state->update_for_pop_top_frame();
     java_thread->set_popframe_condition(JavaThread::popframe_pending_bit);
     // Set pending step flag for this popframe and it is cleared when next
@@ -1445,6 +1454,11 @@
   ResourceMark rm;
   uint32_t debug_bits = 0;
 
+  JvmtiThreadState *state = JvmtiThreadState::state_for(java_thread);
+  if (state == NULL) {
+    return JVMTI_ERROR_THREAD_NOT_ALIVE;
+  }
+
   if (!JvmtiEnv::is_thread_fully_suspended(java_thread, true, &debug_bits)) {
       return JVMTI_ERROR_THREAD_NOT_SUSPENDED;
   }
@@ -1464,7 +1478,6 @@
 
   assert(vf->frame_pointer() != NULL, "frame pointer mustn't be NULL");
 
-  JvmtiThreadState *state = JvmtiThreadState::state_for(java_thread);
   int frame_number = state->count_frames() - depth;
   state->env_thread_state(this)->set_frame_pop(frame_number);
 
--- a/src/share/vm/prims/jvmtiEnvBase.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiEnvBase.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -94,6 +94,35 @@
 }
 
 
+bool
+JvmtiEnvBase::is_valid() {
+  jint value = 0;
+
+  // This object might not be a JvmtiEnvBase so we can't assume
+  // the _magic field is properly aligned. Get the value in a safe
+  // way and then check against JVMTI_MAGIC.
+
+  switch (sizeof(_magic)) {
+  case 2:
+    value = Bytes::get_native_u2((address)&_magic);
+    break;
+
+  case 4:
+    value = Bytes::get_native_u4((address)&_magic);
+    break;
+
+  case 8:
+    value = Bytes::get_native_u8((address)&_magic);
+    break;
+
+  default:
+    guarantee(false, "_magic field is an unexpected size");
+  }
+
+  return value == JVMTI_MAGIC;
+}
+
+
 JvmtiEnvBase::JvmtiEnvBase() : _env_event_enable() {
   _env_local_storage = NULL;
   _tag_map = NULL;
@@ -577,6 +606,7 @@
     if (!mons->is_empty()) {
       for (int i = 0; i < mons->length(); i++) {
         MonitorInfo *mi = mons->at(i);
+        if (mi->owner_is_scalar_replaced()) continue;
 
         // see if owner of the monitor is our object
         if (mi->owner() != NULL && mi->owner() == hobj()) {
@@ -697,6 +727,8 @@
   for (int i = 0; i < mons->length(); i++) {
     MonitorInfo *mi = mons->at(i);
 
+    if (mi->owner_is_scalar_replaced()) continue;
+
     oop obj = mi->owner();
     if (obj == NULL) {
       // this monitor doesn't have an owning object so skip it
@@ -1322,6 +1354,12 @@
   HandleMark   hm(current_thread);
   uint32_t debug_bits = 0;
 
+  // retrieve or create the state
+  JvmtiThreadState* state = JvmtiThreadState::state_for(java_thread);
+  if (state == NULL) {
+    return JVMTI_ERROR_THREAD_NOT_ALIVE;
+  }
+
   // Check if java_thread is fully suspended
   if (!is_thread_fully_suspended(java_thread,
                                  true /* wait for suspend completion */,
@@ -1329,9 +1367,6 @@
     return JVMTI_ERROR_THREAD_NOT_SUSPENDED;
   }
 
-  // retreive or create the state
-  JvmtiThreadState* state = JvmtiThreadState::state_for(java_thread);
-
   // Check to see if a ForceEarlyReturn was already in progress
   if (state->is_earlyret_pending()) {
     // Probably possible for JVMTI clients to trigger this, but the
--- a/src/share/vm/prims/jvmtiEnvBase.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiEnvBase.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -120,7 +120,7 @@
 
  public:
 
-  bool is_valid()                                  { return _magic == JVMTI_MAGIC; }
+  bool is_valid();
 
   bool is_retransformable()                        { return _is_retransformable; }
 
--- a/src/share/vm/prims/jvmtiEventController.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiEventController.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -478,6 +478,11 @@
 // set external state accordingly.  Only thread-filtered events are included.
 jlong
 JvmtiEventControllerPrivate::recompute_thread_enabled(JvmtiThreadState *state) {
+  if (state == NULL) {
+    // associated JavaThread is exiting
+    return (jlong)0;
+  }
+
   jlong was_any_env_enabled = state->thread_event_enable()->_event_enabled.get_bits();
   jlong any_env_enabled = 0;
 
@@ -553,6 +558,7 @@
     {
       MutexLocker mu(Threads_lock);   //hold the Threads_lock for the iteration
       for (JavaThread *tp = Threads::first(); tp != NULL; tp = tp->next()) {
+        // state_for_while_locked() makes tp->is_exiting() check
         JvmtiThreadState::state_for_while_locked(tp);  // create the thread state if missing
       }
     }// release Threads_lock
--- a/src/share/vm/prims/jvmtiExport.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiExport.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1872,6 +1872,9 @@
 {
   // register the stub with the current dynamic code event collector
   JvmtiThreadState* state = JvmtiThreadState::state_for(JavaThread::current());
+  // state can only be NULL if the current thread is exiting which
+  // should not happen since we're trying to post an event
+  guarantee(state != NULL, "attempt to register stub via an exiting thread");
   JvmtiDynamicCodeEventCollector* collector = state->get_dynamic_code_event_collector();
   guarantee(collector != NULL, "attempt to register stub without event collector");
   collector->register_stub(name, code_begin, code_end);
@@ -2253,6 +2256,9 @@
 void JvmtiEventCollector::setup_jvmti_thread_state() {
   // set this event collector to be the current one.
   JvmtiThreadState* state = JvmtiThreadState::state_for(JavaThread::current());
+  // state can only be NULL if the current thread is exiting which
+  // should not happen since we're trying to configure for event collection
+  guarantee(state != NULL, "exiting thread called setup_jvmti_thread_state");
   if (is_vm_object_alloc_event()) {
     _prev = state->get_vm_object_alloc_event_collector();
     state->set_vm_object_alloc_event_collector((JvmtiVMObjectAllocEventCollector *)this);
--- a/src/share/vm/prims/jvmtiImpl.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiImpl.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -238,6 +238,35 @@
 }
 
 
+bool
+JvmtiRawMonitor::is_valid() {
+  int value = 0;
+
+  // This object might not be a JvmtiRawMonitor so we can't assume
+  // the _magic field is properly aligned. Get the value in a safe
+  // way and then check against JVMTI_RM_MAGIC.
+
+  switch (sizeof(_magic)) {
+  case 2:
+    value = Bytes::get_native_u2((address)&_magic);
+    break;
+
+  case 4:
+    value = Bytes::get_native_u4((address)&_magic);
+    break;
+
+  case 8:
+    value = Bytes::get_native_u8((address)&_magic);
+    break;
+
+  default:
+    guarantee(false, "_magic field is an unexpected size");
+  }
+
+  return value == JVMTI_RM_MAGIC;
+}
+
+
 //
 // class JvmtiBreakpoint
 //
--- a/src/share/vm/prims/jvmtiImpl.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiImpl.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -349,7 +349,7 @@
   ~JvmtiRawMonitor();
   int            magic()   { return _magic;  }
   const char *get_name()   { return _name; }
-  bool        is_valid()   { return _magic == JVMTI_RM_MAGIC;  }
+  bool        is_valid();
 };
 
 // Onload pending raw monitors
--- a/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -831,6 +831,9 @@
   ResourceMark rm(THREAD);
 
   JvmtiThreadState *state = JvmtiThreadState::state_for(JavaThread::current());
+  // state can only be NULL if the current thread is exiting which
+  // 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++) {
     oop mirror = JNIHandles::resolve_non_null(_class_defs[i].klass);
     // classes for primitives cannot be redefined
@@ -1230,8 +1233,14 @@
 
   // 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 because, even if
+  // 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, THREAD));
+    oopFactory::new_constantPool(merge_cp_length,
+                                 methodOopDesc::IsUnsafeConc,
+                                 THREAD));
   int orig_length = old_cp->orig_length();
   if (orig_length == 0) {
     // This old_cp is an actual original constant pool. We save
@@ -1274,6 +1283,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
     } else if (old_cp->length() < scratch_cp->length()) {
       // The old constant pool has fewer entries than the new constant
@@ -1283,6 +1293,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
     } else {
       // The old constant pool has more entries than the new constant
@@ -1296,6 +1307,7 @@
       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();
     }
   } else {
@@ -1325,7 +1337,10 @@
     // GCed.
     set_new_constant_pool(scratch_class, merge_cp, merge_cp_length, true,
       THREAD);
+    merge_cp()->set_is_conc_safe(true);
   }
+  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()
@@ -1337,39 +1352,39 @@
 
   // rewrite constant pool references in the methods:
   if (!rewrite_cp_refs_in_methods(scratch_class, THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
   // rewrite constant pool references in the class_annotations:
   if (!rewrite_cp_refs_in_class_annotations(scratch_class, THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
   // rewrite constant pool references in the fields_annotations:
   if (!rewrite_cp_refs_in_fields_annotations(scratch_class, THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
   // rewrite constant pool references in the methods_annotations:
   if (!rewrite_cp_refs_in_methods_annotations(scratch_class, THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
   // rewrite constant pool references in the methods_parameter_annotations:
   if (!rewrite_cp_refs_in_methods_parameter_annotations(scratch_class,
          THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
   // rewrite constant pool references in the methods_default_annotations:
   if (!rewrite_cp_refs_in_methods_default_annotations(scratch_class,
          THREAD)) {
-    // propogate failure back to caller
+    // propagate failure back to caller
     return false;
   }
 
@@ -1588,7 +1603,7 @@
            byte_i_ref, THREAD)) {
       RC_TRACE_WITH_THREAD(0x02000000, THREAD,
         ("bad annotation_struct at %d", calc_num_annotations));
-      // propogate failure back to caller
+      // propagate failure back to caller
       return false;
     }
   }
@@ -1654,7 +1669,7 @@
            byte_i_ref, THREAD)) {
       RC_TRACE_WITH_THREAD(0x02000000, THREAD,
         ("bad element_value at %d", calc_num_element_value_pairs));
-      // propogate failure back to caller
+      // propagate failure back to caller
       return false;
     }
   } // end for each component
@@ -1803,7 +1818,7 @@
       // field. This is a nested annotation.
       if (!rewrite_cp_refs_in_annotation_struct(annotations_typeArray,
              byte_i_ref, THREAD)) {
-        // propogate failure back to caller
+        // propagate failure back to caller
         return false;
       }
       break;
@@ -1830,7 +1845,7 @@
                annotations_typeArray, byte_i_ref, THREAD)) {
           RC_TRACE_WITH_THREAD(0x02000000, THREAD,
             ("bad nested element_value at %d", calc_num_values));
-          // propogate failure back to caller
+          // propagate failure back to caller
           return false;
         }
       }
@@ -1874,7 +1889,7 @@
            THREAD)) {
       RC_TRACE_WITH_THREAD(0x02000000, THREAD,
         ("bad field_annotations at %d", i));
-      // propogate failure back to caller
+      // propagate failure back to caller
       return false;
     }
   }
@@ -1911,7 +1926,7 @@
            THREAD)) {
       RC_TRACE_WITH_THREAD(0x02000000, THREAD,
         ("bad method_annotations at %d", i));
-      // propogate failure back to caller
+      // propagate failure back to caller
       return false;
     }
   }
@@ -1979,7 +1994,7 @@
              method_parameter_annotations, byte_i, THREAD)) {
         RC_TRACE_WITH_THREAD(0x02000000, THREAD,
           ("bad method_parameter_annotations at %d", calc_num_parameters));
-        // propogate failure back to caller
+        // propagate failure back to caller
         return false;
       }
     }
@@ -2029,7 +2044,7 @@
            method_default_annotations, byte_i, THREAD)) {
       RC_TRACE_WITH_THREAD(0x02000000, THREAD,
         ("bad default element_value at %d", i));
-      // propogate failure back to caller
+      // propagate failure back to caller
       return false;
     }
   }
@@ -2314,13 +2329,16 @@
     // 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, THREAD));
+      oopFactory::new_constantPool(scratch_cp_length,
+                                   methodOopDesc::IsUnsafeConc,
+                                   THREAD));
     // preserve orig_length() value in the smaller copy
     int orig_length = scratch_cp->orig_length();
     assert(orig_length != 0, "sanity check");
     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
@@ -2516,6 +2534,7 @@
 
     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()
 
 
--- a/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -49,8 +49,8 @@
 //    0x00000400 |       1024 - previous class weak reference mgmt during
 //                              add previous ops (GC)
 //    0x00000800 |       2048 - previous class breakpoint mgmt
-//    0x00001000 |       4096 - unused
-//    0x00002000 |       8192 - unused
+//    0x00001000 |       4096 - detect calls to obsolete methods
+//    0x00002000 |       8192 - fail a guarantee() in addition to detection
 //    0x00004000 |      16384 - unused
 //    0x00008000 |      32768 - old/new method matching/add/delete
 //    0x00010000 |      65536 - impl details: CP size info
--- a/src/share/vm/prims/jvmtiTagMap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiTagMap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1320,6 +1320,9 @@
     }
 
     // do the iteration
+    // 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(_blk);
 
     // when sharing is enabled we must iterate over the shared spaces
--- a/src/share/vm/prims/jvmtiThreadState.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/jvmtiThreadState.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -314,17 +314,24 @@
   void update_for_pop_top_frame();
 
   // already holding JvmtiThreadState_lock - retrieve or create JvmtiThreadState
+  // Can return NULL if JavaThread is exiting.
   inline static JvmtiThreadState *state_for_while_locked(JavaThread *thread) {
     assert(JvmtiThreadState_lock->is_locked(), "sanity check");
 
     JvmtiThreadState *state = thread->jvmti_thread_state();
     if (state == NULL) {
+      if (thread->is_exiting()) {
+        // don't add a JvmtiThreadState to a thread that is exiting
+        return NULL;
+      }
+
       state = new JvmtiThreadState(thread);
     }
     return state;
   }
 
   // retrieve or create JvmtiThreadState
+  // Can return NULL if JavaThread is exiting.
   inline static JvmtiThreadState *state_for(JavaThread *thread) {
     JvmtiThreadState *state = thread->jvmti_thread_state();
     if (state == NULL) {
--- a/src/share/vm/prims/methodComparator.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/methodComparator.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -148,8 +148,8 @@
   case Bytecodes::_invokespecial   : // fall through
   case Bytecodes::_invokestatic    : // fall through
   case Bytecodes::_invokeinterface : {
-    u2 cpci_old = _s_old->get_index_big();
-    u2 cpci_new = _s_new->get_index_big();
+    u2 cpci_old = _s_old->get_index_int();
+    u2 cpci_new = _s_new->get_index_int();
     // 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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/prims/methodHandles.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,2383 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * JSR 292 reference implementation: method handles
+ */
+
+#include "incls/_precompiled.incl"
+#include "incls/_methodHandles.cpp.incl"
+
+bool MethodHandles::_enabled = false; // set true after successful native linkage
+
+MethodHandleEntry* MethodHandles::_entries[MethodHandles::_EK_LIMIT] = {NULL};
+const char*        MethodHandles::_entry_names[_EK_LIMIT+1] = {
+  "check_mtype",
+  "wrong_method_type",          // what happens when there is a type mismatch
+  "invokestatic",               // how a MH emulates invokestatic
+  "invokespecial",              // ditto for the other invokes...
+  "invokevirtual",
+  "invokeinterface",
+  "bound_ref",                  // these are for BMH...
+  "bound_int",
+  "bound_long",
+  "bound_ref_direct",           // (direct versions have a direct methodOop)
+  "bound_int_direct",
+  "bound_long_direct",
+
+  // starting at _adapter_mh_first:
+  "adapter_retype_only",       // these are for AMH...
+  "adapter_check_cast",
+  "adapter_prim_to_prim",
+  "adapter_ref_to_prim",
+  "adapter_prim_to_ref",
+  "adapter_swap_args",
+  "adapter_rot_args",
+  "adapter_dup_args",
+  "adapter_drop_args",
+  "adapter_collect_args",
+  "adapter_spread_args",
+  "adapter_flyby",
+  "adapter_ricochet",
+
+  // optimized adapter types:
+  "adapter_swap_args/1",
+  "adapter_swap_args/2",
+  "adapter_rot_args/1,up",
+  "adapter_rot_args/1,down",
+  "adapter_rot_args/2,up",
+  "adapter_rot_args/2,down",
+  "adapter_prim_to_prim/i2i",
+  "adapter_prim_to_prim/l2i",
+  "adapter_prim_to_prim/d2f",
+  "adapter_prim_to_prim/i2l",
+  "adapter_prim_to_prim/f2d",
+  "adapter_ref_to_prim/unboxi",
+  "adapter_ref_to_prim/unboxl",
+  "adapter_spread_args/0",
+  "adapter_spread_args/1",
+  "adapter_spread_args/more",
+
+  NULL
+};
+
+#ifdef ASSERT
+bool MethodHandles::spot_check_entry_names() {
+  assert(!strcmp(entry_name(_invokestatic_mh), "invokestatic"), "");
+  assert(!strcmp(entry_name(_bound_ref_mh), "bound_ref"), "");
+  assert(!strcmp(entry_name(_adapter_retype_only), "adapter_retype_only"), "");
+  assert(!strcmp(entry_name(_adapter_ricochet), "adapter_ricochet"), "");
+  assert(!strcmp(entry_name(_adapter_opt_unboxi), "adapter_ref_to_prim/unboxi"), "");
+  return true;
+}
+#endif
+
+void MethodHandles::set_enabled(bool z) {
+  if (_enabled != z) {
+    guarantee(z && EnableMethodHandles, "can only enable once, and only if -XX:+EnableMethodHandles");
+    _enabled = z;
+  }
+}
+
+// Note: A method which does not have a TRAPS argument cannot block in the GC
+// or throw exceptions.  Such methods are used in this file to do something quick
+// and local, like parse a data structure.  For speed, such methods work on plain
+// oops, not handles.  Trapping methods uniformly operate on handles.
+
+methodOop MethodHandles::decode_vmtarget(oop vmtarget, int vmindex, oop mtype,
+                                         klassOop& receiver_limit_result, int& decode_flags_result) {
+  if (vmtarget == NULL)  return NULL;
+  assert(methodOopDesc::nonvirtual_vtable_index < 0, "encoding");
+  if (vmindex < 0) {
+    // this DMH performs no dispatch; it is directly bound to a methodOop
+    // A MemberName may either be directly bound to a methodOop,
+    // or it may use the klass/index form; both forms mean the same thing.
+    methodOop m = decode_methodOop(methodOop(vmtarget), decode_flags_result);
+    if ((decode_flags_result & _dmf_has_receiver) != 0
+        && java_dyn_MethodType::is_instance(mtype)) {
+      // Extract receiver type restriction from mtype.ptypes[0].
+      objArrayOop ptypes = java_dyn_MethodType::ptypes(mtype);
+      oop ptype0 = (ptypes == NULL || ptypes->length() < 1) ? oop(NULL) : ptypes->obj_at(0);
+      if (java_lang_Class::is_instance(ptype0))
+        receiver_limit_result = java_lang_Class::as_klassOop(ptype0);
+    }
+    if (vmindex == methodOopDesc::nonvirtual_vtable_index) {
+      // this DMH can be an "invokespecial" version
+      decode_flags_result &= ~_dmf_does_dispatch;
+    } else {
+      assert(vmindex == methodOopDesc::invalid_vtable_index, "random vmindex?");
+    }
+    return m;
+  } else {
+    decode_flags_result |= MethodHandles::_dmf_does_dispatch;
+    assert(vmtarget->is_klass(), "must be class or interface");
+    receiver_limit_result = (klassOop)vmtarget;
+    Klass* tk = Klass::cast((klassOop)vmtarget);
+    if (tk->is_interface()) {
+      // an itable linkage is <interface, itable index>
+      decode_flags_result |= MethodHandles::_dmf_from_interface;
+      return klassItable::method_for_itable_index((klassOop)vmtarget, vmindex);
+    } else {
+      if (!tk->oop_is_instance())
+        tk = instanceKlass::cast(SystemDictionary::object_klass());
+      return ((instanceKlass*)tk)->method_at_vtable(vmindex);
+    }
+  }
+}
+
+// MemberName and DirectMethodHandle have the same linkage to the JVM internals.
+// (MemberName is the non-operational name used for queries and setup.)
+
+methodOop MethodHandles::decode_DirectMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result) {
+  oop vmtarget = sun_dyn_DirectMethodHandle::vmtarget(mh);
+  int vmindex  = sun_dyn_DirectMethodHandle::vmindex(mh);
+  oop mtype    = sun_dyn_DirectMethodHandle::type(mh);
+  return decode_vmtarget(vmtarget, vmindex, mtype, receiver_limit_result, decode_flags_result);
+}
+
+methodOop MethodHandles::decode_BoundMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result) {
+  assert(mh->klass() == SystemDictionary::BoundMethodHandle_klass(), "");
+  for (oop bmh = mh;;) {
+    // Bound MHs can be stacked to bind several arguments.
+    oop target = java_dyn_MethodHandle::vmtarget(bmh);
+    if (target == NULL)  return NULL;
+    decode_flags_result |= MethodHandles::_dmf_binds_argument;
+    klassOop tk = target->klass();
+    if (tk == SystemDictionary::BoundMethodHandle_klass()) {
+      bmh = target;
+      continue;
+    } else {
+      if (java_dyn_MethodHandle::is_subclass(tk)) {
+        //assert(tk == SystemDictionary::DirectMethodHandle_klass(), "end of BMH chain must be DMH");
+        return decode_MethodHandle(target, receiver_limit_result, decode_flags_result);
+      } else {
+        // Optimized case:  binding a receiver to a non-dispatched DMH
+        // short-circuits directly to the methodOop.
+        assert(target->is_method(), "must be a simple method");
+        methodOop m = (methodOop) target;
+        DEBUG_ONLY(int argslot = sun_dyn_BoundMethodHandle::vmargslot(bmh));
+        assert(argslot == m->size_of_parameters() - 1, "must be initial argument (receiver)");
+        decode_flags_result |= MethodHandles::_dmf_binds_method;
+        return m;
+      }
+    }
+  }
+}
+
+methodOop MethodHandles::decode_AdapterMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result) {
+  assert(mh->klass() == SystemDictionary::AdapterMethodHandle_klass(), "");
+  for (oop amh = mh;;) {
+    // Adapter MHs can be stacked to convert several arguments.
+    int conv_op = adapter_conversion_op(sun_dyn_AdapterMethodHandle::conversion(amh));
+    decode_flags_result |= (_dmf_adapter_lsb << conv_op) & _DMF_ADAPTER_MASK;
+    oop target = java_dyn_MethodHandle::vmtarget(amh);
+    if (target == NULL)  return NULL;
+    klassOop tk = target->klass();
+    if (tk == SystemDictionary::AdapterMethodHandle_klass()) {
+      amh = target;
+      continue;
+    } else {
+      // must be a BMH (which will bind some more arguments) or a DMH (for the final call)
+      return MethodHandles::decode_MethodHandle(target, receiver_limit_result, decode_flags_result);
+    }
+  }
+}
+
+methodOop MethodHandles::decode_MethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result) {
+  if (mh == NULL)  return NULL;
+  klassOop mhk = mh->klass();
+  assert(java_dyn_MethodHandle::is_subclass(mhk), "must be a MethodHandle");
+  if (mhk == SystemDictionary::DirectMethodHandle_klass()) {
+    return decode_DirectMethodHandle(mh, receiver_limit_result, decode_flags_result);
+  } else if (mhk == SystemDictionary::BoundMethodHandle_klass()) {
+    return decode_BoundMethodHandle(mh, receiver_limit_result, decode_flags_result);
+  } else if (mhk == SystemDictionary::AdapterMethodHandle_klass()) {
+    return decode_AdapterMethodHandle(mh, receiver_limit_result, decode_flags_result);
+  } else {
+    assert(false, "cannot parse this MH");
+    return NULL;              // random MH?
+  }
+}
+
+methodOop MethodHandles::decode_methodOop(methodOop m, int& decode_flags_result) {
+  assert(m->is_method(), "");
+  if (m->is_static()) {
+    // check that signature begins '(L' or '([' (not '(I', '()', etc.)
+    symbolOop sig = m->signature();
+    BasicType recv_bt = char2type(sig->byte_at(1));
+    // Note: recv_bt might be T_ILLEGAL if byte_at(2) is ')'
+    assert(sig->byte_at(0) == '(', "must be method sig");
+    if (recv_bt == T_OBJECT || recv_bt == T_ARRAY)
+      decode_flags_result |= _dmf_has_receiver;
+  } else {
+    // non-static method
+    decode_flags_result |= _dmf_has_receiver;
+    if (!m->can_be_statically_bound() && !m->is_initializer()) {
+      decode_flags_result |= _dmf_does_dispatch;
+      if (Klass::cast(m->method_holder())->is_interface())
+        decode_flags_result |= _dmf_from_interface;
+    }
+  }
+  return m;
+}
+
+
+// A trusted party is handing us a cookie to determine a method.
+// Let's boil it down to the method oop they really want.
+methodOop MethodHandles::decode_method(oop x, klassOop& receiver_limit_result, int& decode_flags_result) {
+  decode_flags_result = 0;
+  receiver_limit_result = NULL;
+  klassOop xk = x->klass();
+  if (xk == Universe::methodKlassObj()) {
+    return decode_methodOop((methodOop) x, decode_flags_result);
+  } else if (xk == SystemDictionary::MemberName_klass()) {
+    // Note: This only works if the MemberName has already been resolved.
+    return decode_MemberName(x, receiver_limit_result, decode_flags_result);
+  } else if (java_dyn_MethodHandle::is_subclass(xk)) {
+    return decode_MethodHandle(x, receiver_limit_result, decode_flags_result);
+  } else if (xk == SystemDictionary::reflect_method_klass()) {
+    oop clazz  = java_lang_reflect_Method::clazz(x);
+    int slot   = java_lang_reflect_Method::slot(x);
+    klassOop k = java_lang_Class::as_klassOop(clazz);
+    if (k != NULL && Klass::cast(k)->oop_is_instance())
+      return decode_methodOop(instanceKlass::cast(k)->method_with_idnum(slot),
+                              decode_flags_result);
+  } else if (xk == SystemDictionary::reflect_constructor_klass()) {
+    oop clazz  = java_lang_reflect_Constructor::clazz(x);
+    int slot   = java_lang_reflect_Constructor::slot(x);
+    klassOop k = java_lang_Class::as_klassOop(clazz);
+    if (k != NULL && Klass::cast(k)->oop_is_instance())
+      return decode_methodOop(instanceKlass::cast(k)->method_with_idnum(slot),
+                              decode_flags_result);
+  } else {
+    // unrecognized object
+    assert(!x->is_method(), "already checked");
+    assert(!sun_dyn_MemberName::is_instance(x), "already checked");
+  }
+  return NULL;
+}
+
+
+int MethodHandles::decode_MethodHandle_stack_pushes(oop mh) {
+  if (mh->klass() == SystemDictionary::DirectMethodHandle_klass())
+    return 0;                   // no push/pop
+  int this_vmslots = java_dyn_MethodHandle::vmslots(mh);
+  int last_vmslots = 0;
+  oop last_mh = mh;
+  for (;;) {
+    oop target = java_dyn_MethodHandle::vmtarget(last_mh);
+    if (target->klass() == SystemDictionary::DirectMethodHandle_klass()) {
+      last_vmslots = java_dyn_MethodHandle::vmslots(target);
+      break;
+    } else if (!java_dyn_MethodHandle::is_instance(target)) {
+      // might be klass or method
+      assert(target->is_method(), "must get here with a direct ref to method");
+      last_vmslots = methodOop(target)->size_of_parameters();
+      break;
+    }
+    last_mh = target;
+  }
+  // If I am called with fewer VM slots than my ultimate callee,
+  // it must be that I push the additionally needed slots.
+  // Likewise if am called with more VM slots, I will pop them.
+  return (last_vmslots - this_vmslots);
+}
+
+
+// MemberName support
+
+// import sun_dyn_MemberName.*
+enum {
+  IS_METHOD      = sun_dyn_MemberName::MN_IS_METHOD,
+  IS_CONSTRUCTOR = sun_dyn_MemberName::MN_IS_CONSTRUCTOR,
+  IS_FIELD       = sun_dyn_MemberName::MN_IS_FIELD,
+  IS_TYPE        = sun_dyn_MemberName::MN_IS_TYPE,
+  SEARCH_SUPERCLASSES = sun_dyn_MemberName::MN_SEARCH_SUPERCLASSES,
+  SEARCH_INTERFACES   = sun_dyn_MemberName::MN_SEARCH_INTERFACES,
+  ALL_KINDS      = IS_METHOD | IS_CONSTRUCTOR | IS_FIELD | IS_TYPE,
+  VM_INDEX_UNINITIALIZED = sun_dyn_MemberName::VM_INDEX_UNINITIALIZED
+};
+
+void MethodHandles::init_MemberName(oop mname_oop, oop target_oop) {
+  if (target_oop->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);
+    klassOop k = java_lang_Class::as_klassOop(clazz);
+    int offset = instanceKlass::cast(k)->offset_from_fields(slot);
+    init_MemberName(mname_oop, k, accessFlags_from(mods), offset);
+  } else {
+    int decode_flags = 0; klassOop receiver_limit = NULL;
+    methodOop m = MethodHandles::decode_method(target_oop,
+                                               receiver_limit, decode_flags);
+    bool do_dispatch = ((decode_flags & MethodHandles::_dmf_does_dispatch) != 0);
+    init_MemberName(mname_oop, m, do_dispatch);
+  }
+}
+
+void MethodHandles::init_MemberName(oop mname_oop, methodOop m, bool do_dispatch) {
+  int flags = ((m->is_initializer() ? IS_CONSTRUCTOR : IS_METHOD)
+               | (jushort)( m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS ));
+  oop vmtarget = m;
+  int vmindex  = methodOopDesc::invalid_vtable_index;  // implies no info yet
+  if (!do_dispatch || (flags & IS_CONSTRUCTOR) || m->can_be_statically_bound())
+    vmindex = methodOopDesc::nonvirtual_vtable_index; // implies never any dispatch
+  assert(vmindex != VM_INDEX_UNINITIALIZED, "Java sentinel value");
+  sun_dyn_MemberName::set_vmtarget(mname_oop, vmtarget);
+  sun_dyn_MemberName::set_vmindex(mname_oop,  vmindex);
+  sun_dyn_MemberName::set_flags(mname_oop,    flags);
+}
+
+void MethodHandles::init_MemberName(oop mname_oop, klassOop field_holder, AccessFlags mods, int offset) {
+  int flags = (IS_FIELD | (jushort)( mods.as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS ));
+  oop vmtarget = field_holder;
+  int vmindex  = offset;  // implies no info yet
+  assert(vmindex != VM_INDEX_UNINITIALIZED, "bad alias on vmindex");
+  sun_dyn_MemberName::set_vmtarget(mname_oop, vmtarget);
+  sun_dyn_MemberName::set_vmindex(mname_oop,  vmindex);
+  sun_dyn_MemberName::set_flags(mname_oop,    flags);
+}
+
+
+methodOop MethodHandles::decode_MemberName(oop mname, klassOop& receiver_limit_result, int& decode_flags_result) {
+  int flags  = sun_dyn_MemberName::flags(mname);
+  if ((flags & (IS_METHOD | IS_CONSTRUCTOR)) == 0)  return NULL;  // not invocable
+  oop vmtarget = sun_dyn_MemberName::vmtarget(mname);
+  int vmindex  = sun_dyn_MemberName::vmindex(mname);
+  if (vmindex == VM_INDEX_UNINITIALIZED)  return NULL; // not resolved
+  return decode_vmtarget(vmtarget, vmindex, NULL, receiver_limit_result, decode_flags_result);
+}
+
+// An unresolved member name is a mere symbolic reference.
+// Resolving it plants a vmtarget/vmindex in it,
+// which refers dirctly to JVM internals.
+void MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
+  assert(sun_dyn_MemberName::is_instance(mname()), "");
+#ifdef ASSERT
+  // If this assert throws, renegotiate the sentinel value used by the Java code,
+  // so that it is distinct from any valid vtable index value, and any special
+  // values defined in methodOopDesc::VtableIndexFlag.
+  // The point of the slop is to give the Java code and the JVM some room
+  // to independently specify sentinel values.
+  const int sentinel_slop  = 10;
+  const int sentinel_limit = methodOopDesc::highest_unused_vtable_index_value - sentinel_slop;
+  assert(VM_INDEX_UNINITIALIZED < sentinel_limit, "Java sentinel != JVM sentinels");
+#endif
+  if (sun_dyn_MemberName::vmindex(mname()) != VM_INDEX_UNINITIALIZED)
+    return;  // already resolved
+  oop defc_oop = sun_dyn_MemberName::clazz(mname());
+  oop name_str = sun_dyn_MemberName::name(mname());
+  oop type_str = sun_dyn_MemberName::type(mname());
+  int flags    = sun_dyn_MemberName::flags(mname());
+
+  if (defc_oop == NULL || name_str == NULL || type_str == NULL) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "nothing to resolve");
+  }
+  klassOop defc_klassOop = java_lang_Class::as_klassOop(defc_oop);
+  defc_oop = NULL;  // safety
+  if (defc_klassOop == NULL)  return;  // a primitive; no resolution possible
+  if (!Klass::cast(defc_klassOop)->oop_is_instance()) {
+    if (!Klass::cast(defc_klassOop)->oop_is_array())  return;
+    defc_klassOop = SystemDictionary::object_klass();
+  }
+  instanceKlassHandle defc(THREAD, defc_klassOop);
+  defc_klassOop = NULL;  // safety
+  if (defc.is_null()) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), "primitive class");
+  }
+  defc->link_class(CHECK);
+
+  // convert the external string name to an internal symbol
+  symbolHandle name(THREAD, java_lang_String::as_symbol_or_null(name_str));
+  if (name.is_null())  return;  // no such name
+  name_str = NULL;  // safety
+
+  // convert the external string or reflective type to an internal signature
+  bool force_signature = (name() == vmSymbols::invoke_name());
+  symbolHandle type; {
+    symbolOop type_sym = NULL;
+    if (java_dyn_MethodType::is_instance(type_str)) {
+      type_sym = java_dyn_MethodType::as_signature(type_str, force_signature, CHECK);
+    } else if (java_lang_Class::is_instance(type_str)) {
+      type_sym = java_lang_Class::as_signature(type_str, force_signature, CHECK);
+    } else if (java_lang_String::is_instance(type_str)) {
+      if (force_signature) {
+        type     = java_lang_String::as_symbol(type_str, CHECK);
+      } else {
+        type_sym = java_lang_String::as_symbol_or_null(type_str);
+      }
+    } else {
+      THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized type");
+    }
+    if (type_sym != NULL)
+      type = symbolHandle(THREAD, type_sym);
+  }
+  if (type.is_null())  return;  // no such signature exists in the VM
+  type_str = NULL; // safety
+
+  // Time to do the lookup.
+  switch (flags & ALL_KINDS) {
+  case IS_METHOD:
+    {
+      CallInfo result;
+      {
+        EXCEPTION_MARK;
+        if ((flags & JVM_ACC_STATIC) != 0) {
+          LinkResolver::resolve_static_call(result,
+                        defc, name, type, KlassHandle(), false, false, THREAD);
+        } else if (defc->is_interface()) {
+          LinkResolver::resolve_interface_call(result, Handle(), defc,
+                        defc, name, type, KlassHandle(), false, false, THREAD);
+        } else {
+          LinkResolver::resolve_virtual_call(result, Handle(), defc,
+                        defc, name, type, KlassHandle(), false, false, THREAD);
+        }
+        if (HAS_PENDING_EXCEPTION) {
+          CLEAR_PENDING_EXCEPTION;
+          return;
+        }
+      }
+      methodHandle m = result.resolved_method();
+      oop vmtarget = NULL;
+      int vmindex = methodOopDesc::nonvirtual_vtable_index;
+      if (defc->is_interface()) {
+        vmindex = klassItable::compute_itable_index(m());
+        assert(vmindex >= 0, "");
+      } else if (result.has_vtable_index()) {
+        vmindex = result.vtable_index();
+        assert(vmindex >= 0, "");
+      }
+      assert(vmindex != VM_INDEX_UNINITIALIZED, "");
+      if (vmindex < 0) {
+        assert(result.is_statically_bound(), "");
+        vmtarget = m();
+      } else {
+        vmtarget = result.resolved_klass()->as_klassOop();
+      }
+      int mods = (m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS);
+      sun_dyn_MemberName::set_vmtarget(mname(), vmtarget);
+      sun_dyn_MemberName::set_vmindex(mname(),  vmindex);
+      sun_dyn_MemberName::set_modifiers(mname(), mods);
+      DEBUG_ONLY(int junk; klassOop junk2);
+      assert(decode_MemberName(mname(), junk2, junk) == result.resolved_method()(),
+             "properly stored for later decoding");
+      return;
+    }
+  case IS_CONSTRUCTOR:
+    {
+      CallInfo result;
+      {
+        EXCEPTION_MARK;
+        if (name() == vmSymbols::object_initializer_name()) {
+          LinkResolver::resolve_special_call(result,
+                        defc, name, type, KlassHandle(), false, THREAD);
+        } else {
+          break;                // will throw after end of switch
+        }
+        if (HAS_PENDING_EXCEPTION) {
+          CLEAR_PENDING_EXCEPTION;
+          return;
+        }
+      }
+      assert(result.is_statically_bound(), "");
+      methodHandle m = result.resolved_method();
+      oop vmtarget = m();
+      int vmindex  = methodOopDesc::nonvirtual_vtable_index;
+      int mods     = (m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS);
+      sun_dyn_MemberName::set_vmtarget(mname(), vmtarget);
+      sun_dyn_MemberName::set_vmindex(mname(),  vmindex);
+      sun_dyn_MemberName::set_modifiers(mname(), mods);
+      DEBUG_ONLY(int junk; klassOop junk2);
+      assert(decode_MemberName(mname(), junk2, junk) == result.resolved_method()(),
+             "properly stored for later decoding");
+      return;
+    }
+  case IS_FIELD:
+    {
+      // 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));
+      // check if field exists; i.e., if a klass containing the field def has been selected
+      if (sel_klass.is_null())  return;
+      oop vmtarget = sel_klass->as_klassOop();
+      int vmindex  = fd.offset();
+      int mods     = (fd.access_flags().as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS);
+      if (vmindex == VM_INDEX_UNINITIALIZED)  break;  // should not happen
+      sun_dyn_MemberName::set_vmtarget(mname(),  vmtarget);
+      sun_dyn_MemberName::set_vmindex(mname(),   vmindex);
+      sun_dyn_MemberName::set_modifiers(mname(), mods);
+      return;
+    }
+  }
+  THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format");
+}
+
+// Conversely, a member name which is only initialized from JVM internals
+// may have null defc, name, and type fields.
+// Resolving it plants a vmtarget/vmindex in it,
+// which refers directly to JVM internals.
+void MethodHandles::expand_MemberName(Handle mname, int suppress, TRAPS) {
+  assert(sun_dyn_MemberName::is_instance(mname()), "");
+  oop vmtarget = sun_dyn_MemberName::vmtarget(mname());
+  int vmindex  = sun_dyn_MemberName::vmindex(mname());
+  if (vmtarget == NULL || vmindex == VM_INDEX_UNINITIALIZED) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "nothing to expand");
+  }
+
+  bool have_defc = (sun_dyn_MemberName::clazz(mname()) != NULL);
+  bool have_name = (sun_dyn_MemberName::name(mname()) != NULL);
+  bool have_type = (sun_dyn_MemberName::type(mname()) != NULL);
+  int flags      = sun_dyn_MemberName::flags(mname());
+
+  if (suppress != 0) {
+    if (suppress & _suppress_defc)  have_defc = true;
+    if (suppress & _suppress_name)  have_name = true;
+    if (suppress & _suppress_type)  have_type = true;
+  }
+
+  if (have_defc && have_name && have_type)  return;  // nothing needed
+
+  switch (flags & ALL_KINDS) {
+  case IS_METHOD:
+  case IS_CONSTRUCTOR:
+    {
+      klassOop receiver_limit = NULL;
+      int      decode_flags   = 0;
+      methodHandle m(THREAD, decode_vmtarget(vmtarget, vmindex, NULL,
+                                             receiver_limit, decode_flags));
+      if (m.is_null())  break;
+      if (!have_defc) {
+        klassOop defc = m->method_holder();
+        if (receiver_limit != NULL && receiver_limit != defc
+            && Klass::cast(receiver_limit)->is_subtype_of(defc))
+          defc = receiver_limit;
+        sun_dyn_MemberName::set_clazz(mname(), Klass::cast(defc)->java_mirror());
+      }
+      if (!have_name) {
+        //not java_lang_String::create_from_symbol; let's intern member names
+        Handle name = StringTable::intern(m->name(), CHECK);
+        sun_dyn_MemberName::set_name(mname(), name());
+      }
+      if (!have_type) {
+        Handle type = java_lang_String::create_from_symbol(m->signature(), CHECK);
+        sun_dyn_MemberName::set_type(mname(), type());
+      }
+      return;
+    }
+  case IS_FIELD:
+    {
+      // This is taken from LinkResolver::resolve_field, sans access checks.
+      if (!vmtarget->is_klass())  break;
+      if (!Klass::cast((klassOop) vmtarget)->oop_is_instance())  break;
+      instanceKlassHandle defc(THREAD, (klassOop) vmtarget);
+      bool is_static = ((flags & JVM_ACC_STATIC) != 0);
+      fieldDescriptor fd; // find_field initializes fd if found
+      if (!defc->find_field_from_offset(vmindex, is_static, &fd))
+        break;                  // cannot expand
+      if (!have_defc) {
+        sun_dyn_MemberName::set_clazz(mname(), defc->java_mirror());
+      }
+      if (!have_name) {
+        //not java_lang_String::create_from_symbol; let's intern member names
+        Handle name = StringTable::intern(fd.name(), CHECK);
+        sun_dyn_MemberName::set_name(mname(), name());
+      }
+      if (!have_type) {
+        Handle type = java_lang_String::create_from_symbol(fd.signature(), CHECK);
+        sun_dyn_MemberName::set_type(mname(), type());
+      }
+      return;
+    }
+  }
+  THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format");
+}
+
+int MethodHandles::find_MemberNames(klassOop k,
+                                    symbolOop name, symbolOop sig,
+                                    int mflags, klassOop caller,
+                                    int skip, objArrayOop results) {
+  DEBUG_ONLY(No_Safepoint_Verifier nsv);
+  // this code contains no safepoints!
+
+  // %%% take caller into account!
+
+  if (k == NULL || !Klass::cast(k)->oop_is_instance())  return -1;
+
+  int rfill = 0, rlimit = results->length(), rskip = skip;
+  // overflow measurement:
+  int overflow = 0, overflow_limit = MAX2(1000, rlimit);
+
+  int match_flags = mflags;
+  bool search_superc = ((match_flags & SEARCH_SUPERCLASSES) != 0);
+  bool search_intfc  = ((match_flags & SEARCH_INTERFACES)   != 0);
+  bool local_only = !(search_superc | search_intfc);
+  bool classes_only = false;
+
+  if (name != NULL) {
+    if (name->utf8_length() == 0)  return 0; // a match is not possible
+  }
+  if (sig != NULL) {
+    if (sig->utf8_length() == 0)  return 0; // a match is not possible
+    if (sig->byte_at(0) == '(')
+      match_flags &= ~(IS_FIELD | IS_TYPE);
+    else
+      match_flags &= ~(IS_CONSTRUCTOR | IS_METHOD);
+  }
+
+  if ((match_flags & IS_TYPE) != 0) {
+    // NYI, and Core Reflection works quite well for this query
+  }
+
+  if ((match_flags & IS_FIELD) != 0) {
+    for (FieldStream st(k, local_only, !search_intfc); !st.eos(); st.next()) {
+      if (name != NULL && st.name() != name)
+          continue;
+      if (sig != NULL && st.signature() != sig)
+        continue;
+      // passed the filters
+      if (rskip > 0) {
+        --rskip;
+      } else if (rfill < rlimit) {
+        oop result = results->obj_at(rfill++);
+        if (!sun_dyn_MemberName::is_instance(result))
+          return -99;  // caller bug!
+        MethodHandles::init_MemberName(result, st.klass()->as_klassOop(), st.access_flags(), st.offset());
+      } else if (++overflow >= overflow_limit) {
+        match_flags = 0; break; // got tired of looking at overflow
+      }
+    }
+  }
+
+  if ((match_flags & (IS_METHOD | IS_CONSTRUCTOR)) != 0) {
+    // watch out for these guys:
+    symbolOop init_name   = vmSymbols::object_initializer_name();
+    symbolOop clinit_name = vmSymbols::class_initializer_name();
+    if (name == clinit_name)  clinit_name = NULL; // hack for exposing <clinit>
+    bool negate_name_test = false;
+    // fix name so that it captures the intention of IS_CONSTRUCTOR
+    if (!(match_flags & IS_METHOD)) {
+      // constructors only
+      if (name == NULL) {
+        name = init_name;
+      } else if (name != init_name) {
+        return 0;               // no constructors of this method name
+      }
+    } else if (!(match_flags & IS_CONSTRUCTOR)) {
+      // methods only
+      if (name == NULL) {
+        name = init_name;
+        negate_name_test = true; // if we see the name, we *omit* the entry
+      } else if (name == init_name) {
+        return 0;               // no methods of this constructor name
+      }
+    } else {
+      // 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();
+      symbolOop m_name = m->name();
+      if (m_name == clinit_name)
+        continue;
+      if (name != NULL && ((m_name != name) ^ negate_name_test))
+          continue;
+      if (sig != NULL && m->signature() != sig)
+        continue;
+      // passed the filters
+      if (rskip > 0) {
+        --rskip;
+      } else if (rfill < rlimit) {
+        oop result = results->obj_at(rfill++);
+        if (!sun_dyn_MemberName::is_instance(result))
+          return -99;  // caller bug!
+        MethodHandles::init_MemberName(result, m, true);
+      } else if (++overflow >= overflow_limit) {
+        match_flags = 0; break; // got tired of looking at overflow
+      }
+    }
+  }
+
+  // return number of elements we at leasted wanted to initialize
+  return rfill + overflow;
+}
+
+
+
+
+// Decode the vmtarget field of a method handle.
+// Sanitize out methodOops, klassOops, and any other non-Java data.
+// This is for debugging and reflection.
+oop MethodHandles::encode_target(Handle mh, int format, TRAPS) {
+  assert(java_dyn_MethodHandle::is_instance(mh()), "must be a MH");
+  if (format == ETF_HANDLE_OR_METHOD_NAME) {
+    oop target = java_dyn_MethodHandle::vmtarget(mh());
+    if (target == NULL) {
+      return NULL;                // unformed MH
+    }
+    klassOop tklass = target->klass();
+    if (Klass::cast(tklass)->is_subclass_of(SystemDictionary::object_klass())) {
+      return target;              // target is another MH (or something else?)
+    }
+  }
+  if (format == ETF_DIRECT_HANDLE) {
+    oop target = mh();
+    for (;;) {
+      if (target->klass() == SystemDictionary::DirectMethodHandle_klass()) {
+        return target;
+      }
+      if (!java_dyn_MethodHandle::is_instance(target)){
+        return NULL;                // unformed MH
+      }
+      target = java_dyn_MethodHandle::vmtarget(target);
+    }
+  }
+  // cases of metadata in MH.vmtarget:
+  // - AMH can have methodOop for static invoke with bound receiver
+  // - DMH can have methodOop for static invoke (on variable receiver)
+  // - DMH can have klassOop for dispatched (non-static) invoke
+  klassOop receiver_limit = NULL;
+  int decode_flags = 0;
+  methodOop m = decode_MethodHandle(mh(), receiver_limit, decode_flags);
+  if (m == NULL)  return NULL;
+  switch (format) {
+  case ETF_REFLECT_METHOD:
+    // same as jni_ToReflectedMethod:
+    if (m->is_initializer()) {
+      return Reflection::new_constructor(m, THREAD);
+    } else {
+      return Reflection::new_method(m, UseNewReflection, false, THREAD);
+    }
+
+  case ETF_HANDLE_OR_METHOD_NAME:   // method, not handle
+  case ETF_METHOD_NAME:
+    {
+      if (SystemDictionary::MemberName_klass() == NULL)  break;
+      instanceKlassHandle mname_klass(THREAD, SystemDictionary::MemberName_klass());
+      mname_klass->initialize(CHECK_NULL);
+      Handle mname = mname_klass->allocate_instance_handle(CHECK_NULL);
+      sun_dyn_MemberName::set_vmindex(mname(), VM_INDEX_UNINITIALIZED);
+      bool do_dispatch = ((decode_flags & MethodHandles::_dmf_does_dispatch) != 0);
+      init_MemberName(mname(), m, do_dispatch);
+      expand_MemberName(mname, 0, CHECK_NULL);
+      return mname();
+    }
+  }
+
+  // Unknown format code.
+  char msg[50];
+  jio_snprintf(msg, sizeof(msg), "unknown getTarget format=%d", format);
+  THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(), msg);
+}
+
+bool MethodHandles::class_cast_needed(klassOop src, klassOop dst) {
+  if (src == dst || dst == SystemDictionary::object_klass())
+    return false;                               // quickest checks
+  Klass* srck = Klass::cast(src);
+  Klass* dstk = Klass::cast(dst);
+  if (dstk->is_interface()) {
+    // interface receivers can safely be viewed as untyped,
+    // because interface calls always include a dynamic check
+    //dstk = Klass::cast(SystemDictionary::object_klass());
+    return false;
+  }
+  if (srck->is_interface()) {
+    // interface arguments must be viewed as untyped
+    //srck = Klass::cast(SystemDictionary::object_klass());
+    return true;
+  }
+  return !srck->is_subclass_of(dstk->as_klassOop());
+}
+
+static oop object_java_mirror() {
+  return Klass::cast(SystemDictionary::object_klass())->java_mirror();
+}
+
+bool MethodHandles::same_basic_type_for_arguments(BasicType src,
+                                                  BasicType dst,
+                                                  bool for_return) {
+  // return values can always be forgotten:
+  if (for_return && dst == T_VOID)  return true;
+  assert(src != T_VOID && dst != T_VOID, "should not be here");
+  if (src == dst)  return true;
+  if (type2size[src] != type2size[dst])  return false;
+  // allow reinterpretation casts for integral widening
+  if (is_subword_type(src)) { // subwords can fit in int or other subwords
+    if (dst == T_INT)         // any subword fits in an int
+      return true;
+    if (src == T_BOOLEAN)     // boolean fits in any subword
+      return is_subword_type(dst);
+    if (src == T_BYTE && dst == T_SHORT)
+      return true;            // remaining case: byte fits in short
+  }
+  // allow float/fixed reinterpretation casts
+  if (src == T_FLOAT)   return dst == T_INT;
+  if (src == T_INT)     return dst == T_FLOAT;
+  if (src == T_DOUBLE)  return dst == T_LONG;
+  if (src == T_LONG)    return dst == T_DOUBLE;
+  return false;
+}
+
+const char* MethodHandles::check_method_receiver(methodOop m,
+                                                 klassOop passed_recv_type) {
+  assert(!m->is_static(), "caller resp.");
+  if (passed_recv_type == NULL)
+    return "receiver type is primitive";
+  if (class_cast_needed(passed_recv_type, m->method_holder())) {
+    Klass* formal = Klass::cast(m->method_holder());
+    return SharedRuntime::generate_class_cast_message("receiver type",
+                                                      formal->external_name());
+  }
+  return NULL;                  // checks passed
+}
+
+// Verify that m's signature can be called type-safely by a method handle
+// of the given method type 'mtype'.
+// It takes a TRAPS argument because it must perform symbol lookups.
+void MethodHandles::verify_method_signature(methodHandle m,
+                                            Handle mtype,
+                                            int first_ptype_pos,
+                                            KlassHandle insert_ptype,
+                                            TRAPS) {
+  objArrayHandle ptypes(THREAD, java_dyn_MethodType::ptypes(mtype()));
+  int pnum = first_ptype_pos;
+  int pmax = ptypes->length();
+  int mnum = 0;                 // method argument
+  const char* err = NULL;
+  for (SignatureStream ss(m->signature()); !ss.is_done(); ss.next()) {
+    oop ptype_oop = NULL;
+    if (ss.at_return_type()) {
+      if (pnum != pmax)
+        { err = "too many arguments"; break; }
+      ptype_oop = java_dyn_MethodType::rtype(mtype());
+    } else {
+      if (pnum >= pmax)
+        { err = "not enough arguments"; break; }
+      if (pnum >= 0)
+        ptype_oop = ptypes->obj_at(pnum);
+      else if (insert_ptype.is_null())
+        ptype_oop = NULL;
+      else
+        ptype_oop = insert_ptype->java_mirror();
+      pnum += 1;
+      mnum += 1;
+    }
+    klassOop  mklass = NULL;
+    BasicType mtype  = ss.type();
+    if (mtype == T_ARRAY)  mtype = T_OBJECT; // fold all refs to T_OBJECT
+    if (mtype == T_OBJECT) {
+      if (ptype_oop == NULL) {
+        // null matches any reference
+        continue;
+      }
+      // If we fail to resolve types at this point, we will throw an error.
+      symbolOop    name_oop = ss.as_symbol(CHECK);
+      symbolHandle name(THREAD, name_oop);
+      instanceKlass* mk = instanceKlass::cast(m->method_holder());
+      Handle loader(THREAD, mk->class_loader());
+      Handle domain(THREAD, mk->protection_domain());
+      mklass = SystemDictionary::resolve_or_fail(name, loader, domain,
+                                                 true, CHECK);
+    }
+    if (ptype_oop == NULL) {
+      // null does not match any non-reference; use Object to report the error
+      ptype_oop = object_java_mirror();
+    }
+    klassOop  pklass = NULL;
+    BasicType ptype  = java_lang_Class::as_BasicType(ptype_oop, &pklass);
+    if (!ss.at_return_type()) {
+      err = check_argument_type_change(ptype, pklass, mtype, mklass, mnum);
+    } else {
+      err = check_return_type_change(mtype, mklass, ptype, pklass); // note reversal!
+    }
+    if (err != NULL)  break;
+  }
+
+  if (err != NULL) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), err);
+  }
+}
+
+// Main routine for verifying the MethodHandle.type of a proposed
+// direct or bound-direct method handle.
+void MethodHandles::verify_method_type(methodHandle m,
+                                       Handle mtype,
+                                       bool has_bound_recv,
+                                       KlassHandle bound_recv_type,
+                                       TRAPS) {
+  bool m_needs_receiver = !m->is_static();
+
+  const char* err = NULL;
+
+  int first_ptype_pos = m_needs_receiver ? 1 : 0;
+  if (has_bound_recv && err == NULL) {
+    first_ptype_pos -= 1;
+    if (m_needs_receiver && bound_recv_type.is_null())
+      { err = "bound receiver is not an object"; goto die; }
+  }
+
+  if (m_needs_receiver && err == NULL) {
+    objArrayOop ptypes = java_dyn_MethodType::ptypes(mtype());
+    if (ptypes->length() < first_ptype_pos)
+      { err = "receiver argument is missing"; goto die; }
+    if (first_ptype_pos == -1)
+      err = check_method_receiver(m(), bound_recv_type->as_klassOop());
+    else
+      err = check_method_receiver(m(), java_lang_Class::as_klassOop(ptypes->obj_at(0)));
+    if (err != NULL)  goto die;
+  }
+
+  // Check the other arguments for mistypes.
+  verify_method_signature(m, mtype, first_ptype_pos, bound_recv_type, CHECK);
+  return;
+
+ die:
+  THROW_MSG(vmSymbols::java_lang_InternalError(), err);
+}
+
+void MethodHandles::verify_vmslots(Handle mh, TRAPS) {
+  // Verify vmslots.
+  int check_slots = argument_slot_count(java_dyn_MethodHandle::type(mh()));
+  if (java_dyn_MethodHandle::vmslots(mh()) != check_slots) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), "bad vmslots in BMH");
+  }
+}
+
+void MethodHandles::verify_vmargslot(Handle mh, int argnum, int argslot, TRAPS) {
+  // Verify that argslot points at the given argnum.
+  int check_slot = argument_slot(java_dyn_MethodHandle::type(mh()), argnum);
+  if (argslot != check_slot || argslot < 0) {
+    const char* fmt = "for argnum of %d, vmargslot is %d, should be %d";
+    size_t msglen = strlen(fmt) + 3*11 + 1;
+    char* msg = NEW_RESOURCE_ARRAY(char, msglen);
+    jio_snprintf(msg, msglen, fmt, argnum, argslot, check_slot);
+    THROW_MSG(vmSymbols::java_lang_InternalError(), msg);
+  }
+}
+
+// Verify the correspondence between two method types.
+// Apart from the advertised changes, caller method type X must
+// be able to invoke the callee method Y type with no violations
+// of type integrity.
+// Return NULL if all is well, else a short error message.
+const char* MethodHandles::check_method_type_change(oop src_mtype, int src_beg, int src_end,
+                                                    int insert_argnum, oop insert_type,
+                                                    int change_argnum, oop change_type,
+                                                    int delete_argnum,
+                                                    oop dst_mtype, int dst_beg, int dst_end) {
+  objArrayOop src_ptypes = java_dyn_MethodType::ptypes(src_mtype);
+  objArrayOop dst_ptypes = java_dyn_MethodType::ptypes(dst_mtype);
+
+  int src_max = src_ptypes->length();
+  int dst_max = dst_ptypes->length();
+
+  if (src_end == -1)  src_end = src_max;
+  if (dst_end == -1)  dst_end = dst_max;
+
+  assert(0 <= src_beg && src_beg <= src_end && src_end <= src_max, "oob");
+  assert(0 <= dst_beg && dst_beg <= dst_end && dst_end <= dst_max, "oob");
+
+  // pending actions; set to -1 when done:
+  int ins_idx = insert_argnum, chg_idx = change_argnum, del_idx = delete_argnum;
+
+  const char* err = NULL;
+
+  // Walk along each array of parameter types, including a virtual
+  // NULL end marker at the end of each.
+  for (int src_idx = src_beg, dst_idx = dst_beg;
+       (src_idx <= src_end && dst_idx <= dst_end);
+       src_idx++, dst_idx++) {
+    oop src_type = (src_idx == src_end) ? oop(NULL) : src_ptypes->obj_at(src_idx);
+    oop dst_type = (dst_idx == dst_end) ? oop(NULL) : dst_ptypes->obj_at(dst_idx);
+    bool fix_null_src_type = false;
+
+    // Perform requested edits.
+    if (ins_idx == src_idx) {
+      // note that the inserted guy is never affected by a change or deletion
+      ins_idx = -1;
+      src_type = insert_type;
+      fix_null_src_type = true;
+      --src_idx;                // back up to process src type on next loop
+      src_idx = src_end;
+    } else {
+      // note that the changed guy can be immediately deleted
+      if (chg_idx == src_idx) {
+        chg_idx = -1;
+        assert(src_idx < src_end, "oob");
+        src_type = change_type;
+        fix_null_src_type = true;
+      }
+      if (del_idx == src_idx) {
+        del_idx = -1;
+        assert(src_idx < src_end, "oob");
+        --dst_idx;
+        continue;               // rerun loop after skipping this position
+      }
+    }
+
+    if (src_type == NULL && fix_null_src_type)
+      // explicit null in this case matches any dest reference
+      src_type = (java_lang_Class::is_primitive(dst_type) ? object_java_mirror() : dst_type);
+
+    // Compare the two argument types.
+    if (src_type != dst_type) {
+      if (src_type == NULL)  return "not enough arguments";
+      if (dst_type == NULL)  return "too many arguments";
+      err = check_argument_type_change(src_type, dst_type, dst_idx);
+      if (err != NULL)  return err;
+    }
+  }
+
+  // Now compare return types also.
+  oop src_rtype = java_dyn_MethodType::rtype(src_mtype);
+  oop dst_rtype = java_dyn_MethodType::rtype(dst_mtype);
+  if (src_rtype != dst_rtype) {
+    err = check_return_type_change(dst_rtype, src_rtype); // note reversal!
+    if (err != NULL)  return err;
+  }
+
+  assert(err == NULL, "");
+  return NULL;  // all is well
+}
+
+
+const char* MethodHandles::check_argument_type_change(BasicType src_type,
+                                                     klassOop src_klass,
+                                                     BasicType dst_type,
+                                                     klassOop dst_klass,
+                                                     int argnum) {
+  const char* err = NULL;
+
+  // just in case:
+  if (src_type == T_ARRAY)  src_type = T_OBJECT;
+  if (dst_type == T_ARRAY)  dst_type = T_OBJECT;
+
+  // Produce some nice messages if VerifyMethodHandles is turned on:
+  if (!same_basic_type_for_arguments(src_type, dst_type, (argnum < 0))) {
+    if (src_type == T_OBJECT) {
+      err = ((argnum >= 0)
+             ? "type mismatch: passing a %s for method argument #%d, which expects primitive %s"
+             : "type mismatch: returning a %s, but caller expects primitive %s");
+    } else if (dst_type == T_OBJECT) {
+      err = ((argnum < 0)
+             ? "type mismatch: passing a primitive %s for method argument #%d, which expects %s"
+             : "type mismatch: returning a primitive %s, but caller expects %s");
+    } else {
+      err = ((argnum < 0)
+             ? "type mismatch: passing a %s for method argument #%d, which expects %s"
+             : "type mismatch: returning a %s, but caller expects %s");
+    }
+  } else if (src_type == T_OBJECT && class_cast_needed(src_klass, dst_klass)) {
+    if (!class_cast_needed(dst_klass, src_klass)) {
+      err = ((argnum < 0)
+             ? "cast required: passing a %s for method argument #%d, which expects %s"
+             : "cast required: returning a %s, but caller expects %s");
+    } else {
+      err = ((argnum < 0)
+             ? "reference mismatch: passing a %s for method argument #%d, which expects %s"
+             : "reference mismatch: returning a %s, but caller expects %s");
+    }
+  } else {
+    // passed the obstacle course
+    return NULL;
+  }
+
+  // format, format, format
+  const char* src_name = type2name(src_type);
+  const char* dst_name = type2name(dst_type);
+  if (src_type == T_OBJECT)  src_name = Klass::cast(src_klass)->external_name();
+  if (dst_type == T_OBJECT)  dst_name = Klass::cast(dst_klass)->external_name();
+  if (src_name == NULL)  src_name = "unknown type";
+  if (dst_name == NULL)  dst_name = "unknown type";
+
+  size_t msglen = strlen(err) + strlen(src_name) + strlen(dst_name) + (argnum < 10 ? 1 : 11);
+  char* msg = NEW_RESOURCE_ARRAY(char, msglen + 1);
+  if (argnum >= 0) {
+    assert(strstr(err, "%d") != NULL, "");
+    jio_snprintf(msg, msglen, err, src_name, argnum, dst_name);
+  } else {
+    assert(strstr(err, "%d") == NULL, "");
+    jio_snprintf(msg, msglen, err, src_name,         dst_name);
+  }
+  return msg;
+}
+
+// Compute the depth within the stack of the given argument, i.e.,
+// the combined size of arguments to the right of the given argument.
+// For the last argument (ptypes.length-1) this will be zero.
+// For the first argument (0) this will be the size of all
+// arguments but that one.  For the special number -1, this
+// will be the size of all arguments, including the first.
+// If the argument is neither -1 nor a valid argument index,
+// then return a negative number.  Otherwise, the result
+// is in the range [0..vmslots] inclusive.
+int MethodHandles::argument_slot(oop method_type, int arg) {
+  objArrayOop ptypes = java_dyn_MethodType::ptypes(method_type);
+  int argslot = 0;
+  int len = ptypes->length();
+  if (arg < -1 || arg >= len)  return -99;
+  for (int i = len-1; i > arg; i--) {
+    BasicType bt = java_lang_Class::as_BasicType(ptypes->obj_at(i));
+    argslot += type2size[bt];
+  }
+  assert(argument_slot_to_argnum(method_type, argslot) == arg, "inverse works");
+  return argslot;
+}
+
+// Given a slot number, return the argument number.
+int MethodHandles::argument_slot_to_argnum(oop method_type, int query_argslot) {
+  objArrayOop ptypes = java_dyn_MethodType::ptypes(method_type);
+  int argslot = 0;
+  int len = ptypes->length();
+  for (int i = len-1; i >= 0; i--) {
+    if (query_argslot == argslot)  return i;
+    BasicType bt = java_lang_Class::as_BasicType(ptypes->obj_at(i));
+    argslot += type2size[bt];
+  }
+  // return pseudo-arg deepest in stack:
+  if (query_argslot == argslot)  return -1;
+  return -99;                   // oob slot, or splitting a double-slot arg
+}
+
+methodHandle MethodHandles::dispatch_decoded_method(methodHandle m,
+                                                    KlassHandle receiver_limit,
+                                                    int decode_flags,
+                                                    KlassHandle receiver_klass,
+                                                    TRAPS) {
+  assert((decode_flags & ~_DMF_DIRECT_MASK) == 0, "must be direct method reference");
+  assert((decode_flags & _dmf_has_receiver) != 0, "must have a receiver or first reference argument");
+
+  if (!m->is_static() &&
+      (receiver_klass.is_null() || !receiver_klass->is_subtype_of(m->method_holder())))
+    // given type does not match class of method, or receiver is null!
+    // caller should have checked this, but let's be extra careful...
+    return methodHandle();
+
+  if (receiver_limit.not_null() &&
+      (receiver_klass.not_null() && !receiver_klass->is_subtype_of(receiver_limit())))
+    // given type is not limited to the receiver type
+    // note that a null receiver can match any reference value, for a static method
+    return methodHandle();
+
+  if (!(decode_flags & MethodHandles::_dmf_does_dispatch)) {
+    // pre-dispatched or static method (null receiver is OK for static)
+    return m;
+
+  } else if (receiver_klass.is_null()) {
+    // null receiver value; cannot dispatch
+    return methodHandle();
+
+  } else if (!(decode_flags & MethodHandles::_dmf_from_interface)) {
+    // perform virtual dispatch
+    int vtable_index = m->vtable_index();
+    guarantee(vtable_index >= 0, "valid vtable index");
+
+    // receiver_klass might be an arrayKlassOop but all vtables start at
+    // the same place. The cast is to avoid virtual call and assertion.
+    // See also LinkResolver::runtime_resolve_virtual_method.
+    instanceKlass* inst = (instanceKlass*)Klass::cast(receiver_klass());
+    DEBUG_ONLY(inst->verify_vtable_index(vtable_index));
+    methodOop m_oop = inst->method_at_vtable(vtable_index);
+    return methodHandle(THREAD, m_oop);
+
+  } else {
+    // perform interface dispatch
+    int itable_index = klassItable::compute_itable_index(m());
+    guarantee(itable_index >= 0, "valid itable index");
+    instanceKlass* inst = instanceKlass::cast(receiver_klass());
+    methodOop m_oop = inst->method_at_itable(m->method_holder(), itable_index, THREAD);
+    return methodHandle(THREAD, m_oop);
+  }
+}
+
+void MethodHandles::verify_DirectMethodHandle(Handle mh, methodHandle m, TRAPS) {
+  // Verify type.
+  Handle mtype(THREAD, java_dyn_MethodHandle::type(mh()));
+  verify_method_type(m, mtype, false, KlassHandle(), CHECK);
+
+  // Verify vmslots.
+  if (java_dyn_MethodHandle::vmslots(mh()) != m->size_of_parameters()) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), "bad vmslots in DMH");
+  }
+}
+
+void MethodHandles::init_DirectMethodHandle(Handle mh, methodHandle m, bool do_dispatch, TRAPS) {
+  // Check arguments.
+  if (mh.is_null() || m.is_null() ||
+      (!do_dispatch && m->is_abstract())) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+
+  java_dyn_MethodHandle::init_vmslots(mh());
+
+  if (VerifyMethodHandles) {
+    // The privileged code which invokes this routine should not make
+    // a mistake about types, but it's better to verify.
+    verify_DirectMethodHandle(mh, m, CHECK);
+  }
+
+  // Finally, after safety checks are done, link to the target method.
+  // We will follow the same path as the latter part of
+  // InterpreterRuntime::resolve_invoke(), which first finds the method
+  // and then decides how to populate the constant pool cache entry
+  // that links the interpreter calls to the method.  We need the same
+  // bits, and will use the same calling sequence code.
+
+  int vmindex = methodOopDesc::garbage_vtable_index;
+  oop vmtarget = NULL;
+
+  instanceKlass::cast(m->method_holder())->link_class(CHECK);
+
+  MethodHandleEntry* me = NULL;
+  if (do_dispatch && Klass::cast(m->method_holder())->is_interface()) {
+    // We are simulating an invokeinterface instruction.
+    // (We might also be simulating an invokevirtual on a miranda method,
+    // but it is safe to treat it as an invokeinterface.)
+    assert(!m->can_be_statically_bound(), "no final methods on interfaces");
+    vmindex = klassItable::compute_itable_index(m());
+    assert(vmindex >= 0, "(>=0) == do_dispatch");
+    // Set up same bits as ConstantPoolCacheEntry::set_interface_call().
+    vmtarget = m->method_holder(); // the interface
+    me = MethodHandles::entry(MethodHandles::_invokeinterface_mh);
+  } else if (!do_dispatch || m->can_be_statically_bound()) {
+    // We are simulating an invokestatic or invokespecial instruction.
+    // Set up the method pointer, just like ConstantPoolCacheEntry::set_method().
+    vmtarget = m();
+    // this does not help dispatch, but it will make it possible to parse this MH:
+    vmindex  = methodOopDesc::nonvirtual_vtable_index;
+    assert(vmindex < 0, "(>=0) == do_dispatch");
+    if (!m->is_static()) {
+      me = MethodHandles::entry(MethodHandles::_invokespecial_mh);
+    } else {
+      me = MethodHandles::entry(MethodHandles::_invokestatic_mh);
+      // Part of the semantics of a static call is an initialization barrier.
+      // For a DMH, it is done now, when the handle is created.
+      Klass* k = Klass::cast(m->method_holder());
+      if (k->should_be_initialized()) {
+        k->initialize(CHECK);
+      }
+    }
+  } else {
+    // We are simulating an invokevirtual instruction.
+    // Set up the vtable index, just like ConstantPoolCacheEntry::set_method().
+    // The key logic is LinkResolver::runtime_resolve_virtual_method.
+    vmindex  = m->vtable_index();
+    vmtarget = m->method_holder();
+    me = MethodHandles::entry(MethodHandles::_invokevirtual_mh);
+  }
+
+  if (me == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+
+  sun_dyn_DirectMethodHandle::set_vmtarget(mh(), vmtarget);
+  sun_dyn_DirectMethodHandle::set_vmindex(mh(),  vmindex);
+  DEBUG_ONLY(int flags; klassOop rlimit);
+  assert(MethodHandles::decode_method(mh(), rlimit, flags) == m(),
+         "properly stored for later decoding");
+  DEBUG_ONLY(bool actual_do_dispatch = ((flags & _dmf_does_dispatch) != 0));
+  assert(!(actual_do_dispatch && !do_dispatch),
+         "do not perform dispatch if !do_dispatch specified");
+  assert(actual_do_dispatch == (vmindex >= 0), "proper later decoding of do_dispatch");
+  assert(decode_MethodHandle_stack_pushes(mh()) == 0, "DMH does not move stack");
+
+  // Done!
+  java_dyn_MethodHandle::set_vmentry(mh(), me);
+}
+
+void MethodHandles::verify_BoundMethodHandle_with_receiver(Handle mh,
+                                                           methodHandle m,
+                                                           TRAPS) {
+  // Verify type.
+  oop receiver = sun_dyn_BoundMethodHandle::argument(mh());
+  Handle mtype(THREAD, java_dyn_MethodHandle::type(mh()));
+  KlassHandle bound_recv_type;
+  if (receiver != NULL)  bound_recv_type = KlassHandle(THREAD, receiver->klass());
+  verify_method_type(m, mtype, true, bound_recv_type, CHECK);
+
+  int receiver_pos = m->size_of_parameters() - 1;
+
+  // Verify MH.vmargslot, which should point at the bound receiver.
+  verify_vmargslot(mh, -1, sun_dyn_BoundMethodHandle::vmargslot(mh()), CHECK);
+  //verify_vmslots(mh, CHECK);
+
+  // Verify vmslots.
+  if (java_dyn_MethodHandle::vmslots(mh()) != receiver_pos) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), "bad vmslots in BMH (receiver)");
+  }
+}
+
+// Initialize a BMH with a receiver bound directly to a methodOop.
+void MethodHandles::init_BoundMethodHandle_with_receiver(Handle mh,
+                                                         methodHandle original_m,
+                                                         KlassHandle receiver_limit,
+                                                         int decode_flags,
+                                                         TRAPS) {
+  // Check arguments.
+  if (mh.is_null() || original_m.is_null()) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+
+  KlassHandle receiver_klass;
+  {
+    oop receiver_oop = sun_dyn_BoundMethodHandle::argument(mh());
+    if (receiver_oop != NULL)
+      receiver_klass = KlassHandle(THREAD, receiver_oop->klass());
+  }
+  methodHandle m = dispatch_decoded_method(original_m,
+                                           receiver_limit, decode_flags,
+                                           receiver_klass,
+                                           CHECK);
+  if (m.is_null())      { THROW(vmSymbols::java_lang_InternalError()); }
+  if (m->is_abstract()) { THROW(vmSymbols::java_lang_AbstractMethodError()); }
+
+  java_dyn_MethodHandle::init_vmslots(mh());
+
+  if (VerifyMethodHandles) {
+    verify_BoundMethodHandle_with_receiver(mh, m, CHECK);
+  }
+
+  sun_dyn_BoundMethodHandle::set_vmtarget(mh(), m());
+
+  DEBUG_ONLY(int junk; klassOop junk2);
+  assert(MethodHandles::decode_method(mh(), junk2, junk) == m(), "properly stored for later decoding");
+  assert(decode_MethodHandle_stack_pushes(mh()) == 1, "BMH pushes one stack slot");
+
+  // Done!
+  java_dyn_MethodHandle::set_vmentry(mh(), MethodHandles::entry(MethodHandles::_bound_ref_direct_mh));
+}
+
+void MethodHandles::verify_BoundMethodHandle(Handle mh, Handle target, int argnum,
+                                             bool direct_to_method, TRAPS) {
+  Handle ptype_handle(THREAD,
+                           java_dyn_MethodType::ptype(java_dyn_MethodHandle::type(target()), argnum));
+  KlassHandle ptype_klass;
+  BasicType ptype = java_lang_Class::as_BasicType(ptype_handle(), &ptype_klass);
+  int slots_pushed = type2size[ptype];
+
+  oop argument = sun_dyn_BoundMethodHandle::argument(mh());
+
+  const char* err = NULL;
+
+  switch (ptype) {
+  case T_OBJECT:
+    if (argument != NULL)
+      // we must implicitly convert from the arg type to the outgoing ptype
+      err = check_argument_type_change(T_OBJECT, argument->klass(), ptype, ptype_klass(), argnum);
+    break;
+
+  case T_ARRAY: case T_VOID:
+    assert(false, "array, void do not appear here");
+  default:
+    if (ptype != T_INT && !is_subword_type(ptype)) {
+      err = "unexpected parameter type";
+      break;
+    }
+    // check subrange of Integer.value, if necessary
+    if (argument == NULL || argument->klass() != SystemDictionary::int_klass()) {
+      err = "bound integer argument must be of type java.lang.Integer";
+      break;
+    }
+    if (ptype != T_INT) {
+      int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT);
+      jint value = argument->int_field(value_offset);
+      int vminfo = adapter_subword_vminfo(ptype);
+      jint subword = truncate_subword_from_vminfo(value, vminfo);
+      if (value != subword) {
+        err = "bound subword value does not fit into the subword type";
+        break;
+      }
+    }
+    break;
+  case T_FLOAT:
+  case T_DOUBLE:
+  case T_LONG:
+    {
+      // we must implicitly convert from the unboxed arg type to the outgoing ptype
+      BasicType argbox = java_lang_boxing_object::basic_type(argument);
+      if (argbox != ptype) {
+        err = check_argument_type_change(T_OBJECT, (argument == NULL
+                                                    ? SystemDictionary::object_klass()
+                                                    : argument->klass()),
+                                         ptype, ptype_klass(), argnum);
+        assert(err != NULL, "this must be an error");
+      }
+      break;
+    }
+  }
+
+  if (err == NULL) {
+    DEBUG_ONLY(int this_pushes = decode_MethodHandle_stack_pushes(mh()));
+    if (direct_to_method) {
+      assert(this_pushes == slots_pushed, "BMH pushes one or two stack slots");
+      assert(slots_pushed <= MethodHandlePushLimit, "");
+    } else {
+      int prev_pushes = decode_MethodHandle_stack_pushes(target());
+      assert(this_pushes == slots_pushed + prev_pushes, "BMH stack motion must be correct");
+      // do not blow the stack; use a Java-based adapter if this limit is exceeded
+      if (slots_pushed + prev_pushes > MethodHandlePushLimit)
+        err = "too many bound parameters";
+    }
+  }
+
+  if (err == NULL) {
+    // Verify the rest of the method type.
+    err = check_method_type_insertion(java_dyn_MethodHandle::type(mh()),
+                                      argnum, ptype_handle(),
+                                      java_dyn_MethodHandle::type(target()));
+  }
+
+  if (err != NULL) {
+    THROW_MSG(vmSymbols::java_lang_InternalError(), err);
+  }
+}
+
+void MethodHandles::init_BoundMethodHandle(Handle mh, Handle target, int argnum, TRAPS) {
+  // Check arguments.
+  if (mh.is_null() || target.is_null() || !java_dyn_MethodHandle::is_instance(target())) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+
+  java_dyn_MethodHandle::init_vmslots(mh());
+
+  if (VerifyMethodHandles) {
+    int insert_after = argnum - 1;
+    verify_vmargslot(mh, insert_after, sun_dyn_BoundMethodHandle::vmargslot(mh()), CHECK);
+    verify_vmslots(mh, CHECK);
+  }
+
+  // If (a) the target is a direct non-dispatched method handle,
+  // or (b) the target is a dispatched direct method handle and we
+  // are binding the receiver, cut out the middle-man.
+  // Do this by decoding the DMH and using its methodOop directly as vmtarget.
+  bool direct_to_method = false;
+  if (OptimizeMethodHandles &&
+      target->klass() == SystemDictionary::DirectMethodHandle_klass() &&
+      (argnum == 0 || sun_dyn_DirectMethodHandle::vmindex(target()) < 0)) {
+    int decode_flags = 0; klassOop receiver_limit_oop = NULL;
+    methodHandle m(THREAD, decode_method(target(), receiver_limit_oop, decode_flags));
+    if (m.is_null()) { THROW_MSG(vmSymbols::java_lang_InternalError(), "DMH failed to decode"); }
+    DEBUG_ONLY(int m_vmslots = m->size_of_parameters() - 1); // pos. of 1st arg.
+    assert(sun_dyn_BoundMethodHandle::vmslots(mh()) == m_vmslots, "type w/ m sig");
+    if (argnum == 0 && (decode_flags & _dmf_has_receiver) != 0) {
+      KlassHandle receiver_limit(THREAD, receiver_limit_oop);
+      init_BoundMethodHandle_with_receiver(mh, m,
+                                           receiver_limit, decode_flags,
+                                           CHECK);
+      return;
+    }
+
+    // Even if it is not a bound receiver, we still might be able
+    // to bind another argument and still invoke the methodOop directly.
+    if (!(decode_flags & _dmf_does_dispatch)) {
+      direct_to_method = true;
+      sun_dyn_BoundMethodHandle::set_vmtarget(mh(), m());
+    }
+  }
+  if (!direct_to_method)
+    sun_dyn_BoundMethodHandle::set_vmtarget(mh(), target());
+
+  if (VerifyMethodHandles) {
+    verify_BoundMethodHandle(mh, target, argnum, direct_to_method, CHECK);
+  }
+
+  // Next question:  Is this a ref, int, or long bound value?
+  oop ptype_oop = java_dyn_MethodType::ptype(java_dyn_MethodHandle::type(target()), argnum);
+  BasicType ptype = java_lang_Class::as_BasicType(ptype_oop);
+  int slots_pushed = type2size[ptype];
+
+  MethodHandleEntry* me = NULL;
+  if (ptype == T_OBJECT) {
+    if (direct_to_method)  me = MethodHandles::entry(_bound_ref_direct_mh);
+    else                   me = MethodHandles::entry(_bound_ref_mh);
+  } else if (slots_pushed == 2) {
+    if (direct_to_method)  me = MethodHandles::entry(_bound_long_direct_mh);
+    else                   me = MethodHandles::entry(_bound_long_mh);
+  } else if (slots_pushed == 1) {
+    if (direct_to_method)  me = MethodHandles::entry(_bound_int_direct_mh);
+    else                   me = MethodHandles::entry(_bound_int_mh);
+  } else {
+    assert(false, "");
+  }
+
+  // Done!
+  java_dyn_MethodHandle::set_vmentry(mh(), me);
+}
+
+static void throw_InternalError_for_bad_conversion(int conversion, const char* err, TRAPS) {
+  char msg[200];
+  jio_snprintf(msg, sizeof(msg), "bad adapter (conversion=0x%08x): %s", conversion, err);
+  THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), msg);
+}
+
+void MethodHandles::verify_AdapterMethodHandle(Handle mh, int argnum, TRAPS) {
+  jint conversion = sun_dyn_AdapterMethodHandle::conversion(mh());
+  int  argslot    = sun_dyn_AdapterMethodHandle::vmargslot(mh());
+
+  verify_vmargslot(mh, argnum, argslot, CHECK);
+  verify_vmslots(mh, CHECK);
+
+  jint conv_op    = adapter_conversion_op(conversion);
+  if (!conv_op_valid(conv_op)) {
+    throw_InternalError_for_bad_conversion(conversion, "unknown conversion op", THREAD);
+    return;
+  }
+  EntryKind ek = adapter_entry_kind(conv_op);
+
+  int stack_move = adapter_conversion_stack_move(conversion);
+  BasicType src  = adapter_conversion_src_type(conversion);
+  BasicType dest = adapter_conversion_dest_type(conversion);
+  int vminfo     = adapter_conversion_vminfo(conversion); // should be zero
+
+  Handle argument(THREAD,  sun_dyn_AdapterMethodHandle::argument(mh()));
+  Handle target(THREAD,    sun_dyn_AdapterMethodHandle::vmtarget(mh()));
+  Handle src_mtype(THREAD, java_dyn_MethodHandle::type(mh()));
+  Handle dst_mtype(THREAD, java_dyn_MethodHandle::type(target()));
+
+  const char* err = NULL;
+
+  if (err == NULL) {
+    // Check that the correct argument is supplied, but only if it is required.
+    switch (ek) {
+    case _adapter_check_cast:     // target type of cast
+    case _adapter_ref_to_prim:    // wrapper type from which to unbox
+    case _adapter_prim_to_ref:    // wrapper type to box into
+    case _adapter_collect_args:   // array type to collect into
+    case _adapter_spread_args:    // array type to spread from
+      if (!java_lang_Class::is_instance(argument())
+          || java_lang_Class::is_primitive(argument()))
+        { err = "adapter requires argument of type java.lang.Class"; break; }
+      if (ek == _adapter_collect_args ||
+          ek == _adapter_spread_args) {
+        // Make sure it is a suitable collection type.  (Array, for now.)
+        Klass* ak = Klass::cast(java_lang_Class::as_klassOop(argument()));
+        if (!ak->oop_is_objArray()) {
+          { err = "adapter requires argument of type java.lang.Class<Object[]>"; break; }
+        }
+      }
+      break;
+    case _adapter_flyby:
+    case _adapter_ricochet:
+      if (!java_dyn_MethodHandle::is_instance(argument()))
+        { err = "MethodHandle adapter argument required"; break; }
+      break;
+    default:
+      if (argument.not_null())
+        { err = "adapter has spurious argument"; break; }
+      break;
+    }
+  }
+
+  if (err == NULL) {
+    // Check that the src/dest types are supplied if needed.
+    switch (ek) {
+    case _adapter_prim_to_prim:
+      if (!is_java_primitive(src) || !is_java_primitive(dest) || src == dest) {
+        err = "adapter requires primitive src/dest conversion subfields"; break;
+      }
+      if ( (src == T_FLOAT || src == T_DOUBLE) && !(dest == T_FLOAT || dest == T_DOUBLE) ||
+          !(src == T_FLOAT || src == T_DOUBLE) &&  (dest == T_FLOAT || dest == T_DOUBLE)) {
+        err = "adapter cannot convert beween floating and fixed-point"; break;
+      }
+      break;
+    case _adapter_ref_to_prim:
+      if (src != T_OBJECT || !is_java_primitive(dest)
+          || argument() != Klass::cast(SystemDictionary::box_klass(dest))->java_mirror()) {
+        err = "adapter requires primitive dest conversion subfield"; break;
+      }
+      break;
+    case _adapter_prim_to_ref:
+      if (!is_java_primitive(src) || dest != T_OBJECT
+          || argument() != Klass::cast(SystemDictionary::box_klass(src))->java_mirror()) {
+        err = "adapter requires primitive src conversion subfield"; break;
+      }
+      break;
+    case _adapter_swap_args:
+    case _adapter_rot_args:
+      {
+        if (!src || src != dest) {
+          err = "adapter requires src/dest conversion subfields for swap"; break;
+        }
+        int swap_size = type2size[src];
+        oop src_mtype  = sun_dyn_AdapterMethodHandle::type(target());
+        oop dest_mtype = sun_dyn_AdapterMethodHandle::type(mh());
+        int slot_limit = sun_dyn_AdapterMethodHandle::vmslots(src_mtype);
+        int src_slot   = argslot;
+        int dest_slot  = vminfo;
+        bool rotate_up = (src_slot > dest_slot); // upward rotation
+        int src_arg    = argnum;
+        int dest_arg   = argument_slot_to_argnum(dest_mtype, dest_slot);
+        verify_vmargslot(mh, dest_arg, dest_slot, CHECK);
+        if (!(dest_slot >= src_slot + swap_size) &&
+            !(src_slot >= dest_slot + swap_size)) {
+          err = "source, destination slots must be distinct";
+        } else if (ek == _adapter_swap_args && !(src_slot > dest_slot)) {
+          err = "source of swap must be deeper in stack";
+        } else if (ek == _adapter_swap_args) {
+          err = check_argument_type_change(java_dyn_MethodType::ptype(src_mtype, dest_arg),
+                                           java_dyn_MethodType::ptype(dest_mtype, src_arg),
+                                           dest_arg);
+        } else if (ek == _adapter_rot_args) {
+          if (rotate_up) {
+            assert((src_slot > dest_slot) && (src_arg < dest_arg), "");
+            // rotate up: [dest_slot..src_slot-ss] --> [dest_slot+ss..src_slot]
+            // that is:   [src_arg+1..dest_arg] --> [src_arg..dest_arg-1]
+            for (int i = src_arg+1; i <= dest_arg && err == NULL; i++) {
+              err = check_argument_type_change(java_dyn_MethodType::ptype(src_mtype, i),
+                                               java_dyn_MethodType::ptype(dest_mtype, i-1),
+                                               i);
+            }
+          } else { // rotate down
+            assert((src_slot < dest_slot) && (src_arg > dest_arg), "");
+            // rotate down: [src_slot+ss..dest_slot] --> [src_slot..dest_slot-ss]
+            // that is:     [dest_arg..src_arg-1] --> [dst_arg+1..src_arg]
+            for (int i = dest_arg; i <= src_arg-1 && err == NULL; i++) {
+              err = check_argument_type_change(java_dyn_MethodType::ptype(src_mtype, i),
+                                               java_dyn_MethodType::ptype(dest_mtype, i+1),
+                                               i);
+            }
+          }
+        }
+        if (err == NULL)
+          err = check_argument_type_change(java_dyn_MethodType::ptype(src_mtype, src_arg),
+                                           java_dyn_MethodType::ptype(dest_mtype, dest_arg),
+                                           src_arg);
+      }
+      break;
+    case _adapter_collect_args:
+    case _adapter_spread_args:
+      {
+        BasicType coll_type = (ek == _adapter_collect_args) ? dest : src;
+        BasicType elem_type = (ek == _adapter_collect_args) ? src : dest;
+        if (coll_type != T_OBJECT || elem_type != T_OBJECT) {
+          err = "adapter requires src/dest subfields"; break;
+          // later:
+          // - consider making coll be a primitive array
+          // - consider making coll be a heterogeneous collection
+        }
+      }
+      break;
+    default:
+      if (src != 0 || dest != 0) {
+        err = "adapter has spurious src/dest conversion subfields"; break;
+      }
+      break;
+    }
+  }
+
+  if (err == NULL) {
+    // Check the stack_move subfield.
+    // It must always report the net change in stack size, positive or negative.
+    int slots_pushed = stack_move / stack_move_unit();
+    switch (ek) {
+    case _adapter_prim_to_prim:
+    case _adapter_ref_to_prim:
+    case _adapter_prim_to_ref:
+      if (slots_pushed != type2size[dest] - type2size[src]) {
+        err = "wrong stack motion for primitive conversion";
+      }
+      break;
+    case _adapter_dup_args:
+      if (slots_pushed <= 0) {
+        err = "adapter requires conversion subfield slots_pushed > 0";
+      }
+      break;
+    case _adapter_drop_args:
+      if (slots_pushed >= 0) {
+        err = "adapter requires conversion subfield slots_pushed < 0";
+      }
+      break;
+    case _adapter_collect_args:
+      if (slots_pushed > 1) {
+        err = "adapter requires conversion subfield slots_pushed <= 1";
+      }
+      break;
+    case _adapter_spread_args:
+      if (slots_pushed < -1) {
+        err = "adapter requires conversion subfield slots_pushed >= -1";
+      }
+      break;
+    default:
+      if (stack_move != 0) {
+        err = "adapter has spurious stack_move conversion subfield";
+      }
+      break;
+    }
+    if (err == NULL && stack_move != slots_pushed * stack_move_unit()) {
+      err = "stack_move conversion subfield must be multiple of stack_move_unit";
+    }
+  }
+
+  if (err == NULL) {
+    // Make sure this adapter does not push too deeply.
+    int slots_pushed = stack_move / stack_move_unit();
+    int this_vmslots = java_dyn_MethodHandle::vmslots(mh());
+    int prev_vmslots = java_dyn_MethodHandle::vmslots(target());
+    if (slots_pushed != (this_vmslots - prev_vmslots)) {
+      err = "stack_move inconsistent with previous and current MethodType vmslots";
+    } else if (slots_pushed > 0)  {
+      // verify stack_move against MethodHandlePushLimit
+      int prev_pushes = decode_MethodHandle_stack_pushes(target());
+      // do not blow the stack; use a Java-based adapter if this limit is exceeded
+      if (slots_pushed + prev_pushes > MethodHandlePushLimit) {
+        err = "adapter pushes too many parameters";
+      }
+    }
+
+    // While we're at it, check that the stack motion decoder works:
+    DEBUG_ONLY(int prev_pushes = decode_MethodHandle_stack_pushes(target()));
+    DEBUG_ONLY(int this_pushes = decode_MethodHandle_stack_pushes(mh()));
+    assert(this_pushes == slots_pushed + prev_pushes, "AMH stack motion must be correct");
+  }
+
+  if (err == NULL && vminfo != 0) {
+    switch (ek) {
+      case _adapter_swap_args:
+      case _adapter_rot_args:
+        break;                // OK
+    default:
+      err = "vminfo subfield is reserved to the JVM";
+    }
+  }
+
+  // Do additional ad hoc checks.
+  if (err == NULL) {
+    switch (ek) {
+    case _adapter_retype_only:
+      err = check_method_type_passthrough(src_mtype(), dst_mtype());
+      break;
+
+    case _adapter_check_cast:
+      {
+        // The actual value being checked must be a reference:
+        err = check_argument_type_change(java_dyn_MethodType::ptype(src_mtype(), argnum),
+                                         object_java_mirror(), argnum);
+        if (err != NULL)  break;
+
+        // The output of the cast must fit with the destination argument:
+        Handle cast_class = argument;
+        err = check_method_type_conversion(src_mtype(),
+                                           argnum, cast_class(),
+                                           dst_mtype());
+      }
+      break;
+
+      // %%% TO DO: continue in remaining cases to verify src/dst_mtype if VerifyMethodHandles
+    }
+  }
+
+  if (err != NULL) {
+    throw_InternalError_for_bad_conversion(conversion, err, THREAD);
+    return;
+  }
+
+}
+
+void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnum, TRAPS) {
+  oop  argument   = sun_dyn_AdapterMethodHandle::argument(mh());
+  int  argslot    = sun_dyn_AdapterMethodHandle::vmargslot(mh());
+  jint conversion = sun_dyn_AdapterMethodHandle::conversion(mh());
+  jint conv_op    = adapter_conversion_op(conversion);
+
+  // adjust the adapter code to the internal EntryKind enumeration:
+  EntryKind ek_orig = adapter_entry_kind(conv_op);
+  EntryKind ek_opt  = ek_orig;  // may be optimized
+
+  // Finalize the vmtarget field (Java initialized it to null).
+  if (!java_dyn_MethodHandle::is_instance(target())) {
+    throw_InternalError_for_bad_conversion(conversion, "bad target", THREAD);
+    return;
+  }
+  sun_dyn_AdapterMethodHandle::set_vmtarget(mh(), target());
+
+  if (VerifyMethodHandles) {
+    verify_AdapterMethodHandle(mh, argnum, CHECK);
+  }
+
+  int stack_move = adapter_conversion_stack_move(conversion);
+  BasicType src  = adapter_conversion_src_type(conversion);
+  BasicType dest = adapter_conversion_dest_type(conversion);
+  int vminfo     = adapter_conversion_vminfo(conversion); // should be zero
+
+  const char* err = NULL;
+
+  // Now it's time to finish the case analysis and pick a MethodHandleEntry.
+  switch (ek_orig) {
+  case _adapter_retype_only:
+  case _adapter_check_cast:
+  case _adapter_dup_args:
+  case _adapter_drop_args:
+    // these work fine via general case code
+    break;
+
+  case _adapter_prim_to_prim:
+    {
+      // Non-subword cases are {int,float,long,double} -> {int,float,long,double}.
+      // And, the {float,double} -> {int,long} cases must be handled by Java.
+      switch (type2size[src] *4+ type2size[dest]) {
+      case 1 *4+ 1:
+        assert(src == T_INT || is_subword_type(src), "source is not float");
+        // Subword-related cases are int -> {boolean,byte,char,short}.
+        ek_opt = _adapter_opt_i2i;
+        vminfo = adapter_subword_vminfo(dest);
+        break;
+      case 2 *4+ 1:
+        if (src == T_LONG && (dest == T_INT || is_subword_type(dest))) {
+          ek_opt = _adapter_opt_l2i;
+          vminfo = adapter_subword_vminfo(dest);
+        } else if (src == T_DOUBLE && dest == T_FLOAT) {
+          ek_opt = _adapter_opt_d2f;
+        } else {
+          assert(false, "");
+        }
+        break;
+      case 1 *4+ 2:
+        if (src == T_INT && dest == T_LONG) {
+          ek_opt = _adapter_opt_i2l;
+        } else if (src == T_FLOAT && dest == T_DOUBLE) {
+          ek_opt = _adapter_opt_f2d;
+        } else {
+          assert(false, "");
+        }
+        break;
+      default:
+        assert(false, "");
+        break;
+      }
+    }
+    break;
+
+  case _adapter_ref_to_prim:
+    {
+      switch (type2size[dest]) {
+      case 1:
+        ek_opt = _adapter_opt_unboxi;
+        vminfo = adapter_subword_vminfo(dest);
+        break;
+      case 2:
+        ek_opt = _adapter_opt_unboxl;
+        break;
+      default:
+        assert(false, "");
+        break;
+      }
+    }
+    break;
+
+  case _adapter_prim_to_ref:
+    goto throw_not_impl;        // allocates, hence could block
+
+  case _adapter_swap_args:
+  case _adapter_rot_args:
+    {
+      int swap_slots = type2size[src];
+      oop mtype      = sun_dyn_AdapterMethodHandle::type(mh());
+      int slot_limit = sun_dyn_AdapterMethodHandle::vmslots(mtype);
+      int src_slot   = argslot;
+      int dest_slot  = vminfo;
+      int rotate     = (ek_orig == _adapter_swap_args) ? 0 : (src_slot > dest_slot) ? 1 : -1;
+      switch (swap_slots) {
+      case 1:
+        ek_opt = (!rotate    ? _adapter_opt_swap_1 :
+                  rotate > 0 ? _adapter_opt_rot_1_up : _adapter_opt_rot_1_down);
+        break;
+      case 2:
+        ek_opt = (!rotate    ? _adapter_opt_swap_2 :
+                  rotate > 0 ? _adapter_opt_rot_2_up : _adapter_opt_rot_2_down);
+        break;
+      default:
+        assert(false, "");
+        break;
+      }
+    }
+    break;
+
+  case _adapter_collect_args:
+    goto throw_not_impl;        // allocates, hence could block
+
+  case _adapter_spread_args:
+    {
+      // vminfo will be the required length of the array
+      int slots_pushed = stack_move / stack_move_unit();
+      int array_size   = slots_pushed + 1;
+      assert(array_size >= 0, "");
+      vminfo = array_size;
+      switch (array_size) {
+      case 0:   ek_opt = _adapter_opt_spread_0;       break;
+      case 1:   ek_opt = _adapter_opt_spread_1;       break;
+      default:  ek_opt = _adapter_opt_spread_more;    break;
+      }
+      if ((vminfo & CONV_VMINFO_MASK) != vminfo)
+        goto throw_not_impl;    // overflow
+    }
+    break;
+
+  case _adapter_flyby:
+  case _adapter_ricochet:
+    goto throw_not_impl;        // runs Java code, hence could block
+
+  default:
+    // should have failed much earlier; must be a missing case here
+    assert(false, "incomplete switch");
+    // and fall through:
+
+  throw_not_impl:
+    // FIXME: these adapters are NYI
+    err = "adapter not yet implemented in the JVM";
+    break;
+  }
+
+  if (err != NULL) {
+    throw_InternalError_for_bad_conversion(conversion, err, THREAD);
+    return;
+  }
+
+  // Rebuild the conversion value; maybe parts of it were changed.
+  jint new_conversion = adapter_conversion(conv_op, src, dest, stack_move, vminfo);
+
+  // Finalize the conversion field.  (Note that it is final to Java code.)
+  sun_dyn_AdapterMethodHandle::set_conversion(mh(), new_conversion);
+
+  // Done!
+  java_dyn_MethodHandle::set_vmentry(mh(), entry(ek_opt));
+
+  // There should be enough memory barriers on exit from native methods
+  // to ensure that the MH is fully initialized to all threads before
+  // Java code can publish it in global data structures.
+}
+
+//
+// Here are the native methods on sun.dyn.MethodHandleImpl.
+// They are the private interface between this JVM and the HotSpot-specific
+// Java code that implements JSR 292 method handles.
+//
+// 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.
+//
+
+// direct method handles for invokestatic or invokespecial
+// void init(DirectMethodHandle self, MemberName ref, boolean doDispatch, Class<?> caller);
+JVM_ENTRY(void, MHI_init_DMH(JNIEnv *env, jobject igcls, jobject mh_jh,
+                             jobject target_jh, jboolean do_dispatch, jobject caller_jh)) {
+  ResourceMark rm;              // for error messages
+
+  // This is the guy we are initializing:
+  if (mh_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle mh(THREAD, JNIHandles::resolve_non_null(mh_jh));
+
+  // Early returns out of this method leave the DMH in an unfinished state.
+  assert(java_dyn_MethodHandle::vmentry(mh()) == NULL, "must be safely null");
+
+  // which method are we really talking about?
+  if (target_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  oop target_oop = JNIHandles::resolve_non_null(target_jh);
+  if (sun_dyn_MemberName::is_instance(target_oop) &&
+      sun_dyn_MemberName::vmindex(target_oop) == VM_INDEX_UNINITIALIZED) {
+    Handle mname(THREAD, target_oop);
+    MethodHandles::resolve_MemberName(mname, CHECK);
+    target_oop = mname(); // in case of GC
+  }
+
+  int decode_flags = 0; klassOop receiver_limit = NULL;
+  methodHandle m(THREAD,
+                 MethodHandles::decode_method(target_oop,
+                                              receiver_limit, decode_flags));
+  if (m.is_null()) { THROW_MSG(vmSymbols::java_lang_InternalError(), "no such method"); }
+
+  // The trusted Java code that calls this method should already have performed
+  // access checks on behalf of the given caller.  But, we can verify this.
+  if (VerifyMethodHandles && caller_jh != NULL) {
+    KlassHandle caller(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(caller_jh)));
+    // If this were a bytecode, the first access check would be against
+    // the "reference class" mentioned in the CONSTANT_Methodref.
+    // For that class, we use the defining class of m,
+    // or a more specific receiver limit if available.
+    klassOop reference_klass = m->method_holder();  // OK approximation
+    if (receiver_limit != NULL && receiver_limit != reference_klass) {
+      if (!Klass::cast(receiver_limit)->is_subtype_of(reference_klass))
+        THROW_MSG(vmSymbols::java_lang_InternalError(), "receiver limit out of bounds");  // Java code bug
+      reference_klass = receiver_limit;
+    }
+    // Emulate LinkResolver::check_klass_accessability.
+    if (!Reflection::verify_class_access(caller->as_klassOop(),
+                                         reference_klass,
+                                         true)) {
+      THROW_MSG(vmSymbols::java_lang_InternalError(), Klass::cast(m->method_holder())->external_name());
+    }
+    // If there were a bytecode, the next step would be to lookup the method
+    // in the reference class, then then check the method's access bits.
+    // Emulate LinkResolver::check_method_accessability.
+    klassOop resolved_klass = m->method_holder();
+    if (!Reflection::verify_field_access(caller->as_klassOop(),
+                                         resolved_klass, reference_klass,
+                                         m->access_flags(),
+                                         true)) {
+      // %%% following cutout belongs in Reflection::verify_field_access?
+      bool same_pm = Reflection::is_same_package_member(caller->as_klassOop(),
+                                                        reference_klass, THREAD);
+      if (!same_pm) {
+        THROW_MSG(vmSymbols::java_lang_InternalError(), m->name_and_sig_as_C_string());
+      }
+    }
+  }
+
+  MethodHandles::init_DirectMethodHandle(mh, m, (do_dispatch != JNI_FALSE), CHECK);
+}
+JVM_END
+
+// bound method handles
+JVM_ENTRY(void, MHI_init_BMH(JNIEnv *env, jobject igcls, jobject mh_jh,
+                             jobject target_jh, int argnum)) {
+  ResourceMark rm;              // for error messages
+
+  // This is the guy we are initializing:
+  if (mh_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle mh(THREAD, JNIHandles::resolve_non_null(mh_jh));
+
+  // Early returns out of this method leave the BMH in an unfinished state.
+  assert(java_dyn_MethodHandle::vmentry(mh()) == NULL, "must be safely null");
+
+  if (target_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle target(THREAD, JNIHandles::resolve_non_null(target_jh));
+
+  if (!java_dyn_MethodHandle::is_instance(target())) {
+    // Target object is a reflective method.  (%%% Do we need this alternate path?)
+    Untested("init_BMH of non-MH");
+    if (argnum != 0) { THROW(vmSymbols::java_lang_InternalError()); }
+    int decode_flags = 0; klassOop receiver_limit_oop = NULL;
+    methodHandle m(THREAD,
+                   MethodHandles::decode_method(target(),
+                                                receiver_limit_oop,
+                                                decode_flags));
+    KlassHandle receiver_limit(THREAD, receiver_limit_oop);
+    MethodHandles::init_BoundMethodHandle_with_receiver(mh, m,
+                                                       receiver_limit,
+                                                       decode_flags,
+                                                       CHECK);
+    return;
+  }
+
+  // Build a BMH on top of a DMH or another BMH:
+  MethodHandles::init_BoundMethodHandle(mh, target, argnum, CHECK);
+}
+JVM_END
+
+// adapter method handles
+JVM_ENTRY(void, MHI_init_AMH(JNIEnv *env, jobject igcls, jobject mh_jh,
+                             jobject target_jh, int argnum)) {
+  // This is the guy we are initializing:
+  if (mh_jh == NULL || target_jh == NULL) {
+    THROW(vmSymbols::java_lang_InternalError());
+  }
+  Handle mh(THREAD, JNIHandles::resolve_non_null(mh_jh));
+  Handle target(THREAD, JNIHandles::resolve_non_null(target_jh));
+
+  // Early returns out of this method leave the AMH in an unfinished state.
+  assert(java_dyn_MethodHandle::vmentry(mh()) == NULL, "must be safely null");
+
+  MethodHandles::init_AdapterMethodHandle(mh, target, argnum, CHECK);
+}
+JVM_END
+
+// method type forms
+JVM_ENTRY(void, MHI_init_MT(JNIEnv *env, jobject igcls, jobject erased_jh)) {
+  if (erased_jh == NULL)  return;
+  if (TraceMethodHandles) {
+    tty->print("creating MethodType form ");
+    if (WizardMode || Verbose) {   // Warning: this calls Java code on the MH!
+      // call Object.toString()
+      symbolOop name = vmSymbols::toString_name(), sig = vmSymbols::void_string_signature();
+      JavaCallArguments args(Handle(THREAD, JNIHandles::resolve_non_null(erased_jh)));
+      JavaValue result(T_OBJECT);
+      JavaCalls::call_virtual(&result, SystemDictionary::object_klass(), name, sig,
+                              &args, CHECK);
+      Handle str(THREAD, (oop)result.get_jobject());
+      java_lang_String::print(str, tty);
+    }
+    tty->cr();
+  }
+}
+JVM_END
+
+// debugging and reflection
+JVM_ENTRY(jobject, MHI_getTarget(JNIEnv *env, jobject igcls, jobject mh_jh, jint format)) {
+  Handle mh(THREAD, JNIHandles::resolve(mh_jh));
+  if (!java_dyn_MethodHandle::is_instance(mh())) {
+    THROW_NULL(vmSymbols::java_lang_IllegalArgumentException());
+  }
+  oop target = MethodHandles::encode_target(mh, format, CHECK_NULL);
+  return JNIHandles::make_local(THREAD, target);
+}
+JVM_END
+
+JVM_ENTRY(jint, MHI_getConstant(JNIEnv *env, jobject igcls, jint which)) {
+  switch (which) {
+  case MethodHandles::GC_JVM_PUSH_LIMIT:
+    guarantee(MethodHandlePushLimit >= 2 && MethodHandlePushLimit <= 0xFF,
+              "MethodHandlePushLimit parameter must be in valid range");
+    return MethodHandlePushLimit;
+  case MethodHandles::GC_JVM_STACK_MOVE_LIMIT:
+    // return number of words per slot, signed according to stack direction
+    return MethodHandles::stack_move_unit();
+  }
+  return 0;
+}
+JVM_END
+
+#ifndef PRODUCT
+#define EACH_NAMED_CON(template) \
+    template(MethodHandles,GC_JVM_PUSH_LIMIT) \
+    template(MethodHandles,GC_JVM_STACK_MOVE_LIMIT) \
+    template(MethodHandles,ETF_HANDLE_OR_METHOD_NAME) \
+    template(MethodHandles,ETF_DIRECT_HANDLE) \
+    template(MethodHandles,ETF_METHOD_NAME) \
+    template(MethodHandles,ETF_REFLECT_METHOD) \
+    template(sun_dyn_MemberName,MN_IS_METHOD) \
+    template(sun_dyn_MemberName,MN_IS_CONSTRUCTOR) \
+    template(sun_dyn_MemberName,MN_IS_FIELD) \
+    template(sun_dyn_MemberName,MN_IS_TYPE) \
+    template(sun_dyn_MemberName,MN_SEARCH_SUPERCLASSES) \
+    template(sun_dyn_MemberName,MN_SEARCH_INTERFACES) \
+    template(sun_dyn_MemberName,VM_INDEX_UNINITIALIZED) \
+    template(sun_dyn_AdapterMethodHandle,OP_RETYPE_ONLY) \
+    template(sun_dyn_AdapterMethodHandle,OP_CHECK_CAST) \
+    template(sun_dyn_AdapterMethodHandle,OP_PRIM_TO_PRIM) \
+    template(sun_dyn_AdapterMethodHandle,OP_REF_TO_PRIM) \
+    template(sun_dyn_AdapterMethodHandle,OP_PRIM_TO_REF) \
+    template(sun_dyn_AdapterMethodHandle,OP_SWAP_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_ROT_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_DUP_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_DROP_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_COLLECT_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_SPREAD_ARGS) \
+    template(sun_dyn_AdapterMethodHandle,OP_FLYBY) \
+    template(sun_dyn_AdapterMethodHandle,OP_RICOCHET) \
+    template(sun_dyn_AdapterMethodHandle,CONV_OP_LIMIT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_OP_MASK) \
+    template(sun_dyn_AdapterMethodHandle,CONV_VMINFO_MASK) \
+    template(sun_dyn_AdapterMethodHandle,CONV_VMINFO_SHIFT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_OP_SHIFT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_DEST_TYPE_SHIFT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_SRC_TYPE_SHIFT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_STACK_MOVE_SHIFT) \
+    template(sun_dyn_AdapterMethodHandle,CONV_STACK_MOVE_MASK) \
+    /*end*/
+
+#define ONE_PLUS(scope,value) 1+
+static const int con_value_count = EACH_NAMED_CON(ONE_PLUS) 0;
+#define VALUE_COMMA(scope,value) scope::value,
+static const int con_values[con_value_count+1] = { EACH_NAMED_CON(VALUE_COMMA) 0 };
+#define STRING_NULL(scope,value) #value "\0"
+static const char con_names[] = { EACH_NAMED_CON(STRING_NULL) };
+
+#undef ONE_PLUS
+#undef VALUE_COMMA
+#undef STRING_NULL
+#undef EACH_NAMED_CON
+#endif
+
+JVM_ENTRY(jint, MHI_getNamedCon(JNIEnv *env, jobject igcls, jint which, jobjectArray box_jh)) {
+#ifndef PRODUCT
+  if (which >= 0 && which < con_value_count) {
+    int con = con_values[which];
+    objArrayOop box = (objArrayOop) JNIHandles::resolve(box_jh);
+    if (box != NULL && box->klass() == Universe::objectArrayKlassObj() && box->length() > 0) {
+      const char* str = &con_names[0];
+      for (int i = 0; i < which; i++)
+        str += strlen(str) + 1;   // skip name and null
+      oop name = java_lang_String::create_oop_from_str(str, CHECK_0);
+      box->obj_at_put(0, name);
+    }
+    return con;
+  }
+#endif
+  return 0;
+}
+JVM_END
+
+// void init(MemberName self, AccessibleObject ref)
+JVM_ENTRY(void, MHI_init_Mem(JNIEnv *env, jobject igcls, jobject mname_jh, jobject target_jh)) {
+  if (mname_jh == NULL || target_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
+  oop target_oop = JNIHandles::resolve_non_null(target_jh);
+  MethodHandles::init_MemberName(mname(), target_oop);
+}
+JVM_END
+
+// void expand(MemberName self)
+JVM_ENTRY(void, MHI_expand_Mem(JNIEnv *env, jobject igcls, jobject mname_jh)) {
+  if (mname_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
+  MethodHandles::expand_MemberName(mname, 0, CHECK);
+}
+JVM_END
+
+// void resolve(MemberName self, Class<?> caller)
+JVM_ENTRY(void, MHI_resolve_Mem(JNIEnv *env, jobject igcls, jobject mname_jh, jclass caller_jh)) {
+  if (mname_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); }
+  Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
+  // %%% take caller into account!
+  MethodHandles::resolve_MemberName(mname, CHECK);
+}
+JVM_END
+
+//  static native int getMembers(Class<?> defc, String matchName, String matchSig,
+//          int matchFlags, Class<?> caller, int skip, MemberName[] results);
+JVM_ENTRY(jint, MHI_getMembers(JNIEnv *env, jobject igcls,
+                               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;
+  klassOop k_oop = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz_jh));
+
+  objArrayOop results = (objArrayOop) JNIHandles::resolve(results_jh);
+  if (results == NULL || !results->is_objArray())       return -1;
+
+  symbolOop name = NULL, sig = NULL;
+  if (name_jh != NULL) {
+    name = java_lang_String::as_symbol_or_null(JNIHandles::resolve_non_null(name_jh));
+    if (name == NULL)  return 0; // a match is not possible
+  }
+  if (sig_jh != NULL) {
+    sig = java_lang_String::as_symbol_or_null(JNIHandles::resolve_non_null(sig_jh));
+    if (sig == NULL)  return 0; // a match is not possible
+  }
+
+  klassOop caller = NULL;
+  if (caller_jh != NULL) {
+    oop caller_oop = JNIHandles::resolve_non_null(caller_jh);
+    if (!java_lang_Class::is_instance(caller_oop))  return -1;
+    caller = java_lang_Class::as_klassOop(caller_oop);
+  }
+
+  if (name != NULL && sig != NULL && results != NULL) {
+    // try a direct resolve
+    // %%% TO DO
+  }
+
+  int res = MethodHandles::find_MemberNames(k_oop, name, sig, mflags,
+                                            caller, skip, results);
+  // TO DO: expand at least some of the MemberNames, to avoid massive callbacks
+  return res;
+}
+JVM_END
+
+
+JVM_ENTRY(void, MH_linkCallSite(JNIEnv *env, jobject igcls, jobject site_jh, jobject target_jh)) {
+  // No special action required, yet.
+  oop site_oop = JNIHandles::resolve(site_jh);
+  if (site_oop == NULL || site_oop->klass() != SystemDictionary::CallSiteImpl_klass())
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "call site");
+  sun_dyn_CallSiteImpl::set_target(site_oop, JNIHandles::resolve(target_jh));
+}
+JVM_END
+
+
+/// JVM_RegisterMethodHandleMethods
+
+#define ADR "J"
+
+#define LANG "Ljava/lang/"
+#define JDYN "Ljava/dyn/"
+#define IDYN "Lsun/dyn/"
+
+#define OBJ   LANG"Object;"
+#define CLS   LANG"Class;"
+#define STRG  LANG"String;"
+#define MT    JDYN"MethodType;"
+#define MH    JDYN"MethodHandle;"
+#define MHI   IDYN"MethodHandleImpl;"
+#define MEM   IDYN"MemberName;"
+#define AMH   IDYN"AdapterMethodHandle;"
+#define BMH   IDYN"BoundMethodHandle;"
+#define DMH   IDYN"DirectMethodHandle;"
+#define CSTI  IDYN"CallSiteImpl;"
+
+#define CC (char*)  /*cast a literal from (const char*)*/
+#define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f)
+
+// These are the native methods on sun.dyn.MethodHandleNatives.
+static JNINativeMethod methods[] = {
+  // void init(MemberName self, AccessibleObject ref)
+  {CC"init",                    CC"("AMH""MH"I)V",              FN_PTR(MHI_init_AMH)},
+  {CC"init",                    CC"("BMH""OBJ"I)V",             FN_PTR(MHI_init_BMH)},
+  {CC"init",                    CC"("DMH""OBJ"Z"CLS")V",        FN_PTR(MHI_init_DMH)},
+  {CC"init",                    CC"("MT")V",                    FN_PTR(MHI_init_MT)},
+  {CC"init",                    CC"("MEM""OBJ")V",              FN_PTR(MHI_init_Mem)},
+  {CC"expand",                  CC"("MEM")V",                   FN_PTR(MHI_expand_Mem)},
+  {CC"resolve",                 CC"("MEM""CLS")V",              FN_PTR(MHI_resolve_Mem)},
+  {CC"getTarget",               CC"("MH"I)"OBJ,                 FN_PTR(MHI_getTarget)},
+  {CC"getConstant",             CC"(I)I",                       FN_PTR(MHI_getConstant)},
+  //  static native int getNamedCon(int which, Object[] name)
+  {CC"getNamedCon",             CC"(I["OBJ")I",                 FN_PTR(MHI_getNamedCon)},
+  //  static native int getMembers(Class<?> defc, String matchName, String matchSig,
+  //          int matchFlags, Class<?> caller, int skip, MemberName[] results);
+  {CC"getMembers",              CC"("CLS""STRG""STRG"I"CLS"I["MEM")I",  FN_PTR(MHI_getMembers)}
+};
+
+// More entry points specifically for EnableInvokeDynamic.
+static JNINativeMethod methods2[] = {
+  {CC"linkCallSite",            CC"("CSTI MH")V",               FN_PTR(MH_linkCallSite)}
+};
+
+
+// This one function is exported, used by NativeLookup.
+
+JVM_ENTRY(void, JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass MHN_class)) {
+  assert(MethodHandles::spot_check_entry_names(), "entry enum is OK");
+
+  // note: this explicit warning-producing stuff will be replaced by auto-detection of the JSR 292 classes
+
+  if (!EnableMethodHandles) {
+    warning("JSR 292 method handles are disabled in this JVM.  Use -XX:+EnableMethodHandles to enable.");
+    return;  // bind nothing
+  }
+
+  {
+    ThreadToNativeFromVM ttnfv(thread);
+
+    int status = env->RegisterNatives(MHN_class, methods, sizeof(methods)/sizeof(JNINativeMethod));
+    if (env->ExceptionOccurred()) {
+      MethodHandles::set_enabled(false);
+      warning("JSR 292 method handle code is mismatched to this JVM.  Disabling support.");
+      env->ExceptionClear();
+    } else {
+      MethodHandles::set_enabled(true);
+    }
+  }
+
+  if (!EnableInvokeDynamic) {
+    warning("JSR 292 invokedynamic is disabled in this JVM.  Use -XX:+EnableInvokeDynamic to enable.");
+    return;  // bind nothing
+  }
+
+  {
+    ThreadToNativeFromVM ttnfv(thread);
+
+    int status = env->RegisterNatives(MHN_class, methods2, sizeof(methods2)/sizeof(JNINativeMethod));
+    if (env->ExceptionOccurred()) {
+      MethodHandles::set_enabled(false);
+      warning("JSR 292 method handle code is mismatched to this JVM.  Disabling support.");
+      env->ExceptionClear();
+    } else {
+      MethodHandles::set_enabled(true);
+    }
+  }
+}
+JVM_END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/prims/methodHandles.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,435 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+class MacroAssembler;
+class Label;
+class MethodHandleEntry;
+
+class MethodHandles: AllStatic {
+  // JVM support for MethodHandle, MethodType, and related types
+  // in java.dyn and java.dyn.hotspot.
+  // See also  javaClasses for layouts java_dyn_Method{Handle,Type,Type::Form}.
+ public:
+  enum EntryKind {
+    _check_mtype,               // how a caller calls a MH
+    _wrong_method_type,         // what happens when there is a type mismatch
+    _invokestatic_mh,           // how a MH emulates invokestatic
+    _invokespecial_mh,          // ditto for the other invokes...
+    _invokevirtual_mh,
+    _invokeinterface_mh,
+    _bound_ref_mh,              // reference argument is bound
+    _bound_int_mh,              // int argument is bound (via an Integer or Float)
+    _bound_long_mh,             // long argument is bound (via a Long or Double)
+    _bound_ref_direct_mh,       // same as above, with direct linkage to methodOop
+    _bound_int_direct_mh,
+    _bound_long_direct_mh,
+
+    _adapter_mh_first,     // adapter sequence goes here...
+    _adapter_retype_only   = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_RETYPE_ONLY,
+    _adapter_check_cast    = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_CHECK_CAST,
+    _adapter_prim_to_prim  = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_PRIM_TO_PRIM,
+    _adapter_ref_to_prim   = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_REF_TO_PRIM,
+    _adapter_prim_to_ref   = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_PRIM_TO_REF,
+    _adapter_swap_args     = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_SWAP_ARGS,
+    _adapter_rot_args      = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_ROT_ARGS,
+    _adapter_dup_args      = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_DUP_ARGS,
+    _adapter_drop_args     = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_DROP_ARGS,
+    _adapter_collect_args  = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_COLLECT_ARGS,
+    _adapter_spread_args   = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_SPREAD_ARGS,
+    _adapter_flyby         = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_FLYBY,
+    _adapter_ricochet      = _adapter_mh_first + sun_dyn_AdapterMethodHandle::OP_RICOCHET,
+    _adapter_mh_last       = _adapter_mh_first + sun_dyn_AdapterMethodHandle::CONV_OP_LIMIT - 1,
+
+    // Optimized adapter types
+
+    // argument list reordering
+    _adapter_opt_swap_1,
+    _adapter_opt_swap_2,
+    _adapter_opt_rot_1_up,
+    _adapter_opt_rot_1_down,
+    _adapter_opt_rot_2_up,
+    _adapter_opt_rot_2_down,
+    // primitive single to single:
+    _adapter_opt_i2i,           // i2c, i2z, i2b, i2s
+    // primitive double to single:
+    _adapter_opt_l2i,
+    _adapter_opt_d2f,
+    // primitive single to double:
+    _adapter_opt_i2l,
+    _adapter_opt_f2d,
+    // conversion between floating point and integer type is handled by Java
+
+    // reference to primitive:
+    _adapter_opt_unboxi,
+    _adapter_opt_unboxl,
+
+    // spreading (array length cases 0, 1, >=2)
+    _adapter_opt_spread_0,
+    _adapter_opt_spread_1,
+    _adapter_opt_spread_more,
+
+    _EK_LIMIT,
+    _EK_FIRST = 0
+  };
+
+ public:
+  static bool enabled()                         { return _enabled; }
+  static void set_enabled(bool z);
+
+ private:
+  enum {  // import sun_dyn_AdapterMethodHandle::CONV_OP_*
+    CONV_OP_LIMIT         = sun_dyn_AdapterMethodHandle::CONV_OP_LIMIT,
+    CONV_OP_MASK          = sun_dyn_AdapterMethodHandle::CONV_OP_MASK,
+    CONV_VMINFO_MASK      = sun_dyn_AdapterMethodHandle::CONV_VMINFO_MASK,
+    CONV_VMINFO_SHIFT     = sun_dyn_AdapterMethodHandle::CONV_VMINFO_SHIFT,
+    CONV_OP_SHIFT         = sun_dyn_AdapterMethodHandle::CONV_OP_SHIFT,
+    CONV_DEST_TYPE_SHIFT  = sun_dyn_AdapterMethodHandle::CONV_DEST_TYPE_SHIFT,
+    CONV_SRC_TYPE_SHIFT   = sun_dyn_AdapterMethodHandle::CONV_SRC_TYPE_SHIFT,
+    CONV_STACK_MOVE_SHIFT = sun_dyn_AdapterMethodHandle::CONV_STACK_MOVE_SHIFT,
+    CONV_STACK_MOVE_MASK  = sun_dyn_AdapterMethodHandle::CONV_STACK_MOVE_MASK
+  };
+
+  static bool _enabled;
+  static MethodHandleEntry* _entries[_EK_LIMIT];
+  static const char*        _entry_names[_EK_LIMIT+1];
+  static bool ek_valid(EntryKind ek)            { return (uint)ek < (uint)_EK_LIMIT; }
+  static bool conv_op_valid(int op)             { return (uint)op < (uint)CONV_OP_LIMIT; }
+
+ public:
+  static bool    have_entry(EntryKind ek)       { return ek_valid(ek) && _entries[ek] != NULL; }
+  static MethodHandleEntry* entry(EntryKind ek) { assert(ek_valid(ek), "initialized");
+                                                  return _entries[ek]; }
+  static const char* entry_name(EntryKind ek)   { assert(ek_valid(ek), "oob");
+                                                  return _entry_names[ek]; }
+  static EntryKind adapter_entry_kind(int op)   { assert(conv_op_valid(op), "oob");
+                                                  return EntryKind(_adapter_mh_first + op); }
+
+  static void init_entry(EntryKind ek, MethodHandleEntry* me) {
+    assert(ek_valid(ek), "oob");
+    assert(_entries[ek] == NULL, "no double initialization");
+    _entries[ek] = me;
+  }
+
+  static jint adapter_conversion(int conv_op, BasicType src, BasicType dest,
+                                 int stack_move = 0, int vminfo = 0) {
+    assert(conv_op_valid(conv_op), "oob");
+    jint conv = ((conv_op      << CONV_OP_SHIFT)
+                 | (src        << CONV_SRC_TYPE_SHIFT)
+                 | (dest       << CONV_DEST_TYPE_SHIFT)
+                 | (stack_move << CONV_STACK_MOVE_SHIFT)
+                 | (vminfo     << CONV_VMINFO_SHIFT)
+                 );
+    assert(adapter_conversion_op(conv) == conv_op, "decode conv_op");
+    assert(adapter_conversion_src_type(conv) == src, "decode src");
+    assert(adapter_conversion_dest_type(conv) == dest, "decode dest");
+    assert(adapter_conversion_stack_move(conv) == stack_move, "decode stack_move");
+    assert(adapter_conversion_vminfo(conv) == vminfo, "decode vminfo");
+    return conv;
+  }
+  static int adapter_conversion_op(jint conv) {
+    return ((conv >> CONV_OP_SHIFT) & 0xF);
+  }
+  static BasicType adapter_conversion_src_type(jint conv) {
+    return (BasicType)((conv >> CONV_SRC_TYPE_SHIFT) & 0xF);
+  }
+  static BasicType adapter_conversion_dest_type(jint conv) {
+    return (BasicType)((conv >> CONV_DEST_TYPE_SHIFT) & 0xF);
+  }
+  static int adapter_conversion_stack_move(jint conv) {
+    return (conv >> CONV_STACK_MOVE_SHIFT);
+  }
+  static int adapter_conversion_vminfo(jint conv) {
+    return (conv >> CONV_VMINFO_SHIFT) & CONV_VMINFO_MASK;
+  }
+
+  // Offset in words that the interpreter stack pointer moves when an argument is pushed.
+  // The stack_move value must always be a multiple of this.
+  static int stack_move_unit() {
+    return frame::interpreter_frame_expression_stack_direction() * Interpreter::stackElementWords();
+  }
+
+  enum { CONV_VMINFO_SIGN_FLAG = 0x80 };
+  static int adapter_subword_vminfo(BasicType dest) {
+    if (dest == T_BOOLEAN) return (BitsPerInt -  1);
+    if (dest == T_CHAR)    return (BitsPerInt - 16);
+    if (dest == T_BYTE)    return (BitsPerInt -  8) | CONV_VMINFO_SIGN_FLAG;
+    if (dest == T_SHORT)   return (BitsPerInt - 16) | CONV_VMINFO_SIGN_FLAG;
+    return 0;                   // case T_INT
+  }
+  // Here is the transformation the i2i adapter must perform:
+  static int truncate_subword_from_vminfo(jint value, int vminfo) {
+    jint tem = value << vminfo;
+    if ((vminfo & CONV_VMINFO_SIGN_FLAG) != 0) {
+      return (jint)tem >> vminfo;
+    } else {
+      return (juint)tem >> vminfo;
+    }
+  }
+
+  static inline address from_compiled_entry(EntryKind ek);
+  static inline address from_interpreted_entry(EntryKind ek);
+
+  // helpers for decode_method.
+  static methodOop decode_methodOop(methodOop m, int& decode_flags_result);
+  static methodOop decode_vmtarget(oop vmtarget, int vmindex, oop mtype, klassOop& receiver_limit_result, int& decode_flags_result);
+  static methodOop decode_MemberName(oop mname, klassOop& receiver_limit_result, int& decode_flags_result);
+  static methodOop decode_MethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result);
+  static methodOop decode_DirectMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result);
+  static methodOop decode_BoundMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result);
+  static methodOop decode_AdapterMethodHandle(oop mh, klassOop& receiver_limit_result, int& decode_flags_result);
+
+  // Find out how many stack slots an mh pushes or pops.
+  // The result is *not* reported as a multiple of stack_move_unit();
+  // It is a signed net number of pushes (a difference in vmslots).
+  // To compare with a stack_move value, first multiply by stack_move_unit().
+  static int decode_MethodHandle_stack_pushes(oop mh);
+
+ public:
+  // working with member names
+  static void resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type
+  static void expand_MemberName(Handle mname, int suppress, TRAPS);  // expand defc/name/type if missing
+  static void init_MemberName(oop mname_oop, oop target); // compute vmtarget/vmindex from target
+  static void init_MemberName(oop mname_oop, methodOop m, bool do_dispatch);
+  static void init_MemberName(oop mname_oop, klassOop field_holder, AccessFlags mods, int offset);
+  static int find_MemberNames(klassOop k, symbolOop name, symbolOop sig,
+                              int mflags, klassOop caller,
+                              int skip, objArrayOop results);
+  // bit values for suppress argument to expand_MemberName:
+  enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
+
+  // called from InterpreterGenerator and StubGenerator
+  static address generate_method_handle_interpreter_entry(MacroAssembler* _masm);
+  static void generate_method_handle_stub(MacroAssembler* _masm, EntryKind ek);
+
+  // argument list parsing
+  static int argument_slot(oop method_type, int arg);
+  static int argument_slot_count(oop method_type) { return argument_slot(method_type, -1); }
+  static int argument_slot_to_argnum(oop method_type, int argslot);
+
+  // Runtime support
+  enum {                        // bit-encoded flags from decode_method or decode_vmref
+    _dmf_has_receiver   = 0x01, // target method has leading reference argument
+    _dmf_does_dispatch  = 0x02, // method handle performs virtual or interface dispatch
+    _dmf_from_interface = 0x04, // peforms interface dispatch
+    _DMF_DIRECT_MASK    = (_dmf_from_interface*2 - _dmf_has_receiver),
+    _dmf_binds_method   = 0x08,
+    _dmf_binds_argument = 0x10,
+    _DMF_BOUND_MASK     = (_dmf_binds_argument*2 - _dmf_binds_method),
+    _dmf_adapter_lsb    = 0x20,
+    _DMF_ADAPTER_MASK   = (_dmf_adapter_lsb << CONV_OP_LIMIT) - _dmf_adapter_lsb
+  };
+  static methodOop decode_method(oop x, klassOop& receiver_limit_result, int& decode_flags_result);
+  enum {
+    // format of query to getConstant:
+    GC_JVM_PUSH_LIMIT = 0,
+    GC_JVM_STACK_MOVE_LIMIT = 1,
+
+    // format of result from getTarget / encode_target:
+    ETF_HANDLE_OR_METHOD_NAME = 0, // all available data (immediate MH or method)
+    ETF_DIRECT_HANDLE         = 1, // ultimate method handle (will be a DMH, may be self)
+    ETF_METHOD_NAME           = 2, // ultimate method as MemberName
+    ETF_REFLECT_METHOD        = 3  // ultimate method as java.lang.reflect object (sans refClass)
+  };
+  static int get_named_constant(int which, Handle name_box, TRAPS);
+  static oop encode_target(Handle mh, int format, TRAPS); // report vmtarget (to Java code)
+  static bool class_cast_needed(klassOop src, klassOop dst);
+
+ private:
+  // These checkers operate on a pair of whole MethodTypes:
+  static const char* check_method_type_change(oop src_mtype, int src_beg, int src_end,
+                                              int insert_argnum, oop insert_type,
+                                              int change_argnum, oop change_type,
+                                              int delete_argnum,
+                                              oop dst_mtype, int dst_beg, int dst_end);
+  static const char* check_method_type_insertion(oop src_mtype,
+                                                 int insert_argnum, oop insert_type,
+                                                 oop dst_mtype) {
+    oop no_ref = NULL;
+    return check_method_type_change(src_mtype, 0, -1,
+                                    insert_argnum, insert_type,
+                                    -1, no_ref, -1, dst_mtype, 0, -1);
+  }
+  static const char* check_method_type_conversion(oop src_mtype,
+                                                  int change_argnum, oop change_type,
+                                                  oop dst_mtype) {
+    oop no_ref = NULL;
+    return check_method_type_change(src_mtype, 0, -1, -1, no_ref,
+                                    change_argnum, change_type,
+                                    -1, dst_mtype, 0, -1);
+  }
+  static const char* check_method_type_passthrough(oop src_mtype, oop dst_mtype) {
+    oop no_ref = NULL;
+    return check_method_type_change(src_mtype, 0, -1,
+                                    -1, no_ref, -1, no_ref, -1,
+                                    dst_mtype, 0, -1);
+  }
+
+  // These checkers operate on pairs of argument or return types:
+  static const char* check_argument_type_change(BasicType src_type, klassOop src_klass,
+                                                BasicType dst_type, klassOop dst_klass,
+                                                int argnum);
+
+  static const char* check_argument_type_change(oop src_type, oop dst_type,
+                                                int argnum) {
+    klassOop src_klass = NULL, dst_klass = NULL;
+    BasicType src_bt = java_lang_Class::as_BasicType(src_type, &src_klass);
+    BasicType dst_bt = java_lang_Class::as_BasicType(dst_type, &dst_klass);
+    return check_argument_type_change(src_bt, src_klass,
+                                      dst_bt, dst_klass, argnum);
+  }
+
+  static const char* check_return_type_change(oop src_type, oop dst_type) {
+    return check_argument_type_change(src_type, dst_type, -1);
+  }
+
+  static const char* check_return_type_change(BasicType src_type, klassOop src_klass,
+                                              BasicType dst_type, klassOop dst_klass) {
+    return check_argument_type_change(src_type, src_klass, dst_type, dst_klass, -1);
+  }
+
+  static const char* check_method_receiver(methodOop m, klassOop passed_recv_type);
+
+  // These verifiers can block, and will throw an error if the checking fails:
+  static void verify_vmslots(Handle mh, TRAPS);
+  static void verify_vmargslot(Handle mh, int argnum, int argslot, TRAPS);
+
+  static void verify_method_type(methodHandle m, Handle mtype,
+                                 bool has_bound_oop,
+                                 KlassHandle bound_oop_type,
+                                 TRAPS);
+
+  static void verify_method_signature(methodHandle m, Handle mtype,
+                                      int first_ptype_pos,
+                                      KlassHandle insert_ptype, TRAPS);
+
+  static void verify_DirectMethodHandle(Handle mh, methodHandle m, TRAPS);
+  static void verify_BoundMethodHandle(Handle mh, Handle target, int argnum,
+                                       bool direct_to_method, TRAPS);
+  static void verify_BoundMethodHandle_with_receiver(Handle mh, methodHandle m, TRAPS);
+  static void verify_AdapterMethodHandle(Handle mh, int argnum, TRAPS);
+
+ public:
+
+  // Fill in the fields of a DirectMethodHandle mh.  (MH.type must be pre-filled.)
+  static void init_DirectMethodHandle(Handle mh, methodHandle method, bool do_dispatch, TRAPS);
+
+  // Fill in the fields of a BoundMethodHandle mh.  (MH.type, BMH.argument must be pre-filled.)
+  static void init_BoundMethodHandle(Handle mh, Handle target, int argnum, TRAPS);
+  static void init_BoundMethodHandle_with_receiver(Handle mh,
+                                                   methodHandle original_m,
+                                                   KlassHandle receiver_limit,
+                                                   int decode_flags,
+                                                   TRAPS);
+
+  // Fill in the fields of an AdapterMethodHandle mh.  (MH.type must be pre-filled.)
+  static void init_AdapterMethodHandle(Handle mh, Handle target, int argnum, TRAPS);
+
+#ifdef ASSERT
+  static bool spot_check_entry_names();
+#endif
+
+ private:
+  static methodHandle dispatch_decoded_method(methodHandle m,
+                                              KlassHandle receiver_limit,
+                                              int decode_flags,
+                                              KlassHandle receiver_klass,
+                                              TRAPS);
+
+  static bool same_basic_type_for_arguments(BasicType src, BasicType dst,
+                                            bool for_return = false);
+  static bool same_basic_type_for_returns(BasicType src, BasicType dst) {
+    return same_basic_type_for_arguments(src, dst, true);
+  }
+
+  enum {                        // arg_mask values
+    _INSERT_NO_MASK   = -1,
+    _INSERT_REF_MASK  = 0,
+    _INSERT_INT_MASK  = 1,
+    _INSERT_LONG_MASK = 3
+  };
+  static void insert_arg_slots(MacroAssembler* _masm,
+                               RegisterOrConstant arg_slots,
+                               int arg_mask,
+                               Register rax_argslot,
+                               Register rbx_temp, Register rdx_temp);
+
+  static void remove_arg_slots(MacroAssembler* _masm,
+                               RegisterOrConstant arg_slots,
+                               Register rax_argslot,
+                               Register rbx_temp, Register rdx_temp);
+};
+
+
+// Access methods for the "entry" field of a java.dyn.MethodHandle.
+// The field is primarily a jump target for compiled calls.
+// However, we squirrel away some nice pointers for other uses,
+// just before the jump target.
+// Aspects of a method handle entry:
+//  - from_compiled_entry - stub used when compiled code calls the MH
+//  - from_interpreted_entry - stub used when the interpreter calls the MH
+//  - type_checking_entry - stub for runtime casting between MHForm siblings (NYI)
+class MethodHandleEntry {
+ public:
+  class Data {
+    friend class MethodHandleEntry;
+    size_t              _total_size; // size including Data and code stub
+    MethodHandleEntry*  _type_checking_entry;
+    address             _from_interpreted_entry;
+    MethodHandleEntry* method_entry() { return (MethodHandleEntry*)(this + 1); }
+  };
+
+  Data*     data()                              { return (Data*)this - 1; }
+
+  address   start_address()                     { return (address) data(); }
+  address   end_address()                       { return start_address() + data()->_total_size; }
+
+  address   from_compiled_entry()               { return (address) this; }
+
+  address   from_interpreted_entry()            { return data()->_from_interpreted_entry; }
+  void  set_from_interpreted_entry(address e)   { data()->_from_interpreted_entry = e; }
+
+  MethodHandleEntry* type_checking_entry()           { return data()->_type_checking_entry; }
+  void set_type_checking_entry(MethodHandleEntry* e) { data()->_type_checking_entry = e; }
+
+  void set_end_address(address end_addr) {
+    size_t total_size = end_addr - start_address();
+    assert(total_size > 0 && total_size < 0x1000, "reasonable end address");
+    data()->_total_size = total_size;
+  }
+
+  // Compiler support:
+  static int from_interpreted_entry_offset_in_bytes() {
+    return (int)( offset_of(Data, _from_interpreted_entry) - sizeof(Data) );
+  }
+  static int type_checking_entry_offset_in_bytes() {
+    return (int)( offset_of(Data, _from_interpreted_entry) - sizeof(Data) );
+  }
+
+  static address            start_compiled_entry(MacroAssembler* _masm,
+                                                 address interpreted_entry = NULL);
+  static MethodHandleEntry* finish_compiled_entry(MacroAssembler* masm, address start_addr);
+};
+
+address MethodHandles::from_compiled_entry(EntryKind ek) { return entry(ek)->from_compiled_entry(); }
+address MethodHandles::from_interpreted_entry(EntryKind ek) { return entry(ek)->from_interpreted_entry(); }
--- a/src/share/vm/prims/nativeLookup.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/nativeLookup.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +78,7 @@
 
 extern "C" {
   void JNICALL JVM_RegisterUnsafeMethods(JNIEnv *env, jclass unsafecls);
+  void JNICALL JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass unsafecls);
   void JNICALL JVM_RegisterPerfMethods(JNIEnv *env, jclass perfclass);
 }
 
@@ -97,6 +98,9 @@
   if (strstr(jni_name, "Java_sun_misc_Unsafe_registerNatives") != NULL) {
     return CAST_FROM_FN_PTR(address, JVM_RegisterUnsafeMethods);
   }
+  if (strstr(jni_name, "Java_sun_dyn_MethodHandleNatives_registerNatives") != NULL) {
+    return CAST_FROM_FN_PTR(address, JVM_RegisterMethodHandleMethods);
+  }
   if (strstr(jni_name, "Java_sun_misc_Perf_registerNatives") != NULL) {
     return CAST_FROM_FN_PTR(address, JVM_RegisterPerfMethods);
   }
--- a/src/share/vm/prims/unsafe.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/prims/unsafe.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1048,7 +1048,11 @@
   oop e = JNIHandles::resolve(e_h);
   oop p = JNIHandles::resolve(obj);
   HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset);
-  update_barrier_set_pre((void*)addr, e);
+  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);
   jboolean success  = (res == e);
   if (success)
--- a/src/share/vm/runtime/arguments.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/arguments.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +229,7 @@
 
   inline void set_base(const char* base);
   inline void add_prefix(const char* prefix);
+  inline void add_suffix_to_prefix(const char* suffix);
   inline void add_suffix(const char* suffix);
   inline void reset_path(const char* base);
 
@@ -290,6 +291,10 @@
   _items[_scp_prefix] = add_to_path(_items[_scp_prefix], prefix, true);
 }
 
+inline void SysClassPath::add_suffix_to_prefix(const char* suffix) {
+  _items[_scp_prefix] = add_to_path(_items[_scp_prefix], suffix, false);
+}
+
 inline void SysClassPath::add_suffix(const char* suffix) {
   _items[_scp_suffix] = add_to_path(_items[_scp_suffix], suffix, false);
 }
@@ -512,7 +517,6 @@
   return CommandLineFlags::boolAtPut(name, &value, origin);
 }
 
-
 static bool set_fp_numeric_flag(char* name, char* value, FlagValueOrigin origin) {
   double v;
   if (sscanf(value, "%lf", &v) != 1) {
@@ -525,7 +529,6 @@
   return false;
 }
 
-
 static bool set_numeric_flag(char* name, char* value, FlagValueOrigin origin) {
   julong v;
   intx intx_v;
@@ -555,7 +558,6 @@
   return false;
 }
 
-
 static bool set_string_flag(char* name, const char* value, FlagValueOrigin origin) {
   if (!CommandLineFlags::ccstrAtPut(name, &value, origin))  return false;
   // Contract:  CommandLineFlags always returns a pointer that needs freeing.
@@ -591,7 +593,6 @@
   return true;
 }
 
-
 bool Arguments::parse_argument(const char* arg, FlagValueOrigin origin) {
 
   // range of acceptable characters spelled out for portability reasons
@@ -652,7 +653,6 @@
   return false;
 }
 
-
 void Arguments::add_string(char*** bldarray, int* count, const char* arg) {
   assert(bldarray != NULL, "illegal argument");
 
@@ -756,7 +756,6 @@
   return true;
 }
 
-
 bool Arguments::process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized) {
   FILE* stream = fopen(file_name, "rb");
   if (stream == NULL) {
@@ -853,16 +852,13 @@
       FreeHeap(value);
     }
     return true;
-  }
-  else if (strcmp(key, "sun.java.command") == 0) {
-
+  } else if (strcmp(key, "sun.java.command") == 0) {
     _java_command = value;
 
     // don't add this property to the properties exposed to the java application
     FreeHeap(key);
     return true;
-  }
-  else if (strcmp(key, "sun.java.launcher.pid") == 0) {
+  } else if (strcmp(key, "sun.java.launcher.pid") == 0) {
     // launcher.pid property is private and is processed
     // in process_sun_java_launcher_properties();
     // the sun.java.launcher property is passed on to the java application
@@ -871,13 +867,14 @@
       FreeHeap(value);
     }
     return true;
-  }
-  else if (strcmp(key, "java.vendor.url.bug") == 0) {
+  } else if (strcmp(key, "java.vendor.url.bug") == 0) {
     // save it in _java_vendor_url_bug, so JVM fatal error handler can access
     // its value without going through the property list or making a Java call.
     _java_vendor_url_bug = value;
+  } else if (strcmp(key, "sun.boot.library.path") == 0) {
+    PropertyList_unique_add(&_system_properties, key, value, true);
+    return true;
   }
-
   // Create new property and add at the end of the list
   PropertyList_unique_add(&_system_properties, key, value);
   return true;
@@ -896,7 +893,7 @@
   // Ensure Agent_OnLoad has the correct initial values.
   // This may not be the final mode; mode may change later in onload phase.
   PropertyList_unique_add(&_system_properties, "java.vm.info",
-     (char*)Abstract_VM_Version::vm_info_string());
+                          (char*)Abstract_VM_Version::vm_info_string(), false);
 
   UseInterpreter             = true;
   UseCompiler                = true;
@@ -932,7 +929,6 @@
   }
 }
 
-
 // Conflict: required to use shared spaces (-Xshare:on), but
 // incompatible command line options were chosen.
 
@@ -946,7 +942,6 @@
   }
 }
 
-
 // If the user has chosen ParallelGCThreads > 0, we set UseParNewGC
 // if it's not explictly set or unset. If the user has chosen
 // UseParNewGC and not explicitly set ParallelGCThreads we
@@ -974,7 +969,7 @@
   } else {
     no_shared_spaces();
 
-    // By default YoungPLABSize and OldPLABSize are set to 4096 and 1024 correspondinly,
+    // 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.
     // See CR 6362902.
@@ -990,6 +985,16 @@
     if (AlwaysTenure) {
       FLAG_SET_CMDLINE(intx, MaxTenuringThreshold, 0);
     }
+    // When using compressed oops, we use local overflow stacks,
+    // rather than using a global overflow list chained through
+    // the klass word of the object's pre-image.
+    if (UseCompressedOops && !ParGCUseLocalOverflow) {
+      if (!FLAG_IS_DEFAULT(ParGCUseLocalOverflow)) {
+        warning("Forcing +ParGCUseLocalOverflow: needed if using compressed references");
+      }
+      FLAG_SET_DEFAULT(ParGCUseLocalOverflow, true);
+    }
+    assert(ParGCUseLocalOverflow || !UseCompressedOops, "Error");
   }
 }
 
@@ -1197,24 +1202,21 @@
   }
 
 #ifdef _LP64
-  // Compressed Headers do not work with CMS, which uses a bit in the klass
-  // field offset to determine free list chunk markers.
   // Check that UseCompressedOops can be set with the max heap size allocated
   // by ergonomics.
   if (MaxHeapSize <= max_heap_for_compressed_oops()) {
-    if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) {
+    if (FLAG_IS_DEFAULT(UseCompressedOops)) {
       // Turn off until bug is fixed.
       // the following line to return it to default status.
       // FLAG_SET_ERGO(bool, UseCompressedOops, true);
-    } else if (UseCompressedOops && UseG1GC) {
-      warning(" UseCompressedOops does not currently work with UseG1GC; switching off UseCompressedOops. ");
-      FLAG_SET_DEFAULT(UseCompressedOops, false);
     }
 #ifdef _WIN64
     if (UseLargePages && UseCompressedOops) {
       // Cannot allocate guard pages for implicit checks in indexed addressing
       // mode, when large pages are specified on windows.
-      FLAG_SET_DEFAULT(UseImplicitNullCheckForNarrowOop, false);
+      // This flag could be switched ON if narrow oop base address is set to 0,
+      // see code in Universe::initialize_heap().
+      Universe::set_narrow_oop_use_implicit_null_checks(false);
     }
 #endif //  _WIN64
   } else {
@@ -1281,10 +1283,14 @@
                      Abstract_VM_Version::parallel_worker_threads());
   if (ParallelGCThreads == 0) {
     FLAG_SET_DEFAULT(ParallelGCThreads,
-                     Abstract_VM_Version::parallel_worker_threads
-());
+                     Abstract_VM_Version::parallel_worker_threads());
   }
   no_shared_spaces();
+
+  // Set the maximum pause time goal to be a reasonable default.
+  if (FLAG_IS_DEFAULT(MaxGCPauseMillis)) {
+    FLAG_SET_DEFAULT(MaxGCPauseMillis, 200);
+  }
 }
 
 void Arguments::set_server_heap_size() {
@@ -1361,15 +1367,12 @@
 
     // Feed the cache size setting into the JDK
     char buffer[1024];
-    sprintf(buffer, "java.lang.Integer.IntegerCache.high=%d", AutoBoxCacheMax);
+    sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax);
     add_property(buffer);
   }
   if (AggressiveOpts && FLAG_IS_DEFAULT(DoEscapeAnalysis)) {
     FLAG_SET_DEFAULT(DoEscapeAnalysis, true);
   }
-  if (AggressiveOpts && FLAG_IS_DEFAULT(SpecialArraysEquals)) {
-    FLAG_SET_DEFAULT(SpecialArraysEquals, true);
-  }
   if (AggressiveOpts && FLAG_IS_DEFAULT(BiasedLockingStartupDelay)) {
     FLAG_SET_DEFAULT(BiasedLockingStartupDelay, 500);
   }
@@ -1446,6 +1449,7 @@
   if (UseSerialGC)                       i++;
   if (UseConcMarkSweepGC || UseParNewGC) i++;
   if (UseParallelGC || UseParallelOldGC) i++;
+  if (UseG1GC)                           i++;
   if (i > 1) {
     jio_fprintf(defaultStream::error_stream(),
                 "Conflicting collector combinations in option list; "
@@ -1714,6 +1718,21 @@
     return result;
   }
 
+  if (AggressiveOpts) {
+    // Insert alt-rt.jar between user-specified bootclasspath
+    // prefix and the default bootclasspath.  os::set_boot_path()
+    // uses meta_index_dir as the default bootclasspath directory.
+    const char* altclasses_jar = "alt-rt.jar";
+    size_t altclasses_path_len = strlen(get_meta_index_dir()) + 1 +
+                                 strlen(altclasses_jar);
+    char* altclasses_path = NEW_C_HEAP_ARRAY(char, altclasses_path_len);
+    strcpy(altclasses_path, get_meta_index_dir());
+    strcat(altclasses_path, altclasses_jar);
+    scp.add_suffix_to_prefix(altclasses_path);
+    scp_assembly_required = true;
+    FREE_C_HEAP_ARRAY(char, altclasses_path);
+  }
+
   // Parse _JAVA_OPTIONS environment variable (if present) (mimics classic VM)
   result = parse_java_options_environment_variable(&scp, &scp_assembly_required);
   if (result != JNI_OK) {
@@ -1729,7 +1748,6 @@
   return JNI_OK;
 }
 
-
 jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
                                        SysClassPath* scp_p,
                                        bool* scp_assembly_required_p,
@@ -1795,7 +1813,7 @@
       *scp_assembly_required_p = true;
     // -Xrun
     } else if (match_option(option, "-Xrun", &tail)) {
-      if(tail != NULL) {
+      if (tail != NULL) {
         const char* pos = strchr(tail, ':');
         size_t len = (pos == NULL) ? strlen(tail) : pos - tail;
         char* name = (char*)memcpy(NEW_C_HEAP_ARRAY(char, len + 1), tail, len);
@@ -2478,7 +2496,7 @@
     vm_args.version = JNI_VERSION_1_2;
     vm_args.options = options;
     vm_args.nOptions = i;
-    vm_args.ignoreUnrecognized = false;
+    vm_args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
 
     if (PrintVMOptions) {
       const char* tail;
@@ -2525,13 +2543,12 @@
 
   // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
   bool settings_file_specified = false;
+  const char* flags_file;
   int index;
   for (index = 0; index < args->nOptions; index++) {
     const JavaVMOption *option = args->options + index;
     if (match_option(option, "-XX:Flags=", &tail)) {
-      if (!process_settings_file(tail, true, args->ignoreUnrecognized)) {
-        return JNI_EINVAL;
-      }
+      flags_file = tail;
       settings_file_specified = true;
     }
     if (match_option(option, "-XX:+PrintVMOptions", &tail)) {
@@ -2540,6 +2557,24 @@
     if (match_option(option, "-XX:-PrintVMOptions", &tail)) {
       PrintVMOptions = false;
     }
+    if (match_option(option, "-XX:+IgnoreUnrecognizedVMOptions", &tail)) {
+      IgnoreUnrecognizedVMOptions = true;
+    }
+    if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) {
+      IgnoreUnrecognizedVMOptions = false;
+    }
+  }
+
+  if (IgnoreUnrecognizedVMOptions) {
+    // uncast const to modify the flag args->ignoreUnrecognized
+    *(jboolean*)(&args->ignoreUnrecognized) = true;
+  }
+
+  // Parse specified settings file
+  if (settings_file_specified) {
+    if (!process_settings_file(flags_file, true, args->ignoreUnrecognized)) {
+      return JNI_EINVAL;
+    }
   }
 
   // Parse default .hotspotrc settings file
@@ -2558,29 +2593,12 @@
     }
   }
 
-
   // Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
   jint result = parse_vm_init_args(args);
   if (result != JNI_OK) {
     return result;
   }
 
-  // These are hacks until G1 is fully supported and tested
-  // but lets you force -XX:+UseG1GC in PRT and get it where it (mostly) works
-  if (UseG1GC) {
-    if (UseConcMarkSweepGC || UseParNewGC || UseParallelGC || UseParallelOldGC || UseSerialGC) {
-#ifndef PRODUCT
-      tty->print_cr("-XX:+UseG1GC is incompatible with other collectors, using UseG1GC");
-#endif // PRODUCT
-      UseConcMarkSweepGC = false;
-      UseParNewGC        = false;
-      UseParallelGC      = false;
-      UseParallelOldGC   = false;
-      UseSerialGC        = false;
-    }
-    no_shared_spaces();
-  }
-
 #ifndef PRODUCT
   if (TraceBytecodesAt != 0) {
     TraceBytecodes = true;
@@ -2593,6 +2611,19 @@
   }
 #endif // PRODUCT
 
+  if (EnableInvokeDynamic && !EnableMethodHandles) {
+    if (!FLAG_IS_DEFAULT(EnableMethodHandles)) {
+      warning("forcing EnableMethodHandles true to allow EnableInvokeDynamic");
+    }
+    EnableMethodHandles = true;
+  }
+  if (EnableMethodHandles && !AnonymousClasses) {
+    if (!FLAG_IS_DEFAULT(AnonymousClasses)) {
+      warning("forcing AnonymousClasses true to enable EnableMethodHandles");
+    }
+    AnonymousClasses = true;
+  }
+
   if (PrintGCDetails) {
     // Turn on -verbose:gc options as well
     PrintGC = true;
@@ -2625,10 +2656,7 @@
   } else if (UseParNewGC) {
     // Set some flags for ParNew
     set_parnew_gc_flags();
-  }
-  // Temporary; make the "if" an "else-if" before
-  // we integrate G1. XXX
-  if (UseG1GC) {
+  } else if (UseG1GC) {
     // Set some flags for garbage-first, if needed.
     set_g1_gc_flags();
   }
@@ -2738,7 +2766,7 @@
 }
 
 // This add maintains unique property key in the list.
-void Arguments::PropertyList_unique_add(SystemProperty** plist, const char* k, char* v) {
+void Arguments::PropertyList_unique_add(SystemProperty** plist, const char* k, char* v, jboolean append) {
   if (plist == NULL)
     return;
 
@@ -2746,7 +2774,11 @@
   SystemProperty* prop;
   for (prop = *plist; prop != NULL; prop = prop->next()) {
     if (strcmp(k, prop->key()) == 0) {
-      prop->set_value(v);
+      if (append) {
+        prop->append_value(v);
+      } else {
+        prop->set_value(v);
+      }
       return;
     }
   }
--- a/src/share/vm/runtime/arguments.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/arguments.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -475,10 +475,13 @@
   // System properties
   static void init_system_properties();
 
-  // Proptery List manipulation
+  // Property List manipulation
   static void PropertyList_add(SystemProperty** plist, SystemProperty *element);
   static void PropertyList_add(SystemProperty** plist, const char* k, char* v);
-  static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v);
+  static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v) {
+    PropertyList_unique_add(plist, k, v, false);
+  }
+  static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v, jboolean append);
   static const char* PropertyList_get_value(SystemProperty* plist, const char* key);
   static int  PropertyList_count(SystemProperty* pl);
   static const char* PropertyList_get_key_at(SystemProperty* pl,int index);
--- a/src/share/vm/runtime/biasedLocking.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/biasedLocking.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -121,6 +121,7 @@
         // Walk monitors youngest to oldest
         for (int i = len - 1; i >= 0; i--) {
           MonitorInfo* mon_info = monitors->at(i);
+          if (mon_info->owner_is_scalar_replaced()) continue;
           oop owner = mon_info->owner();
           if (owner != NULL) {
             info->append(mon_info);
@@ -694,6 +695,7 @@
           // Walk monitors youngest to oldest
           for (int i = len - 1; i >= 0; i--) {
             MonitorInfo* mon_info = monitors->at(i);
+            if (mon_info->owner_is_scalar_replaced()) continue;
             oop owner = mon_info->owner();
             if (owner != NULL) {
               markOop mark = owner->mark();
--- a/src/share/vm/runtime/deoptimization.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/deoptimization.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -933,7 +933,7 @@
   GrowableArray<MonitorInfo*>* monitors = cvf->monitors();
   for (int i = 0; i < monitors->length(); i++) {
     MonitorInfo* mon_info = monitors->at(i);
-    if (mon_info->owner() != NULL && !mon_info->eliminated()) {
+    if (!mon_info->eliminated() && mon_info->owner() != NULL) {
       objects_to_revoke->append(Handle(mon_info->owner()));
     }
   }
--- a/src/share/vm/runtime/dtraceJSDT.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/dtraceJSDT.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -60,6 +60,11 @@
       methodHandle h_method =
         methodHandle(THREAD, JNIHandles::resolve_jmethod_id(probe->method));
       nmethod* nm = AdapterHandlerLibrary::create_dtrace_nmethod(h_method);
+      if (nm == NULL) {
+        delete probes;
+        THROW_MSG_0(vmSymbols::java_lang_RuntimeException(),
+          "Unable to register DTrace probes (CodeCache: no room for DTrace nmethods).");
+      }
       h_method()->set_not_compilable(CompLevel_highest_tier);
       h_method()->set_code(h_method, nm);
       probes->nmethod_at_put(count++, nm);
--- a/src/share/vm/runtime/extendedPC.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/extendedPC.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -23,7 +23,7 @@
  */
 
 // An ExtendedPC contains the _pc from a signal handler in a platform
-// independant way.
+// independent way.
 
 class ExtendedPC VALUE_OBJ_CLASS_SPEC {
  private:
--- a/src/share/vm/runtime/fieldDescriptor.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/fieldDescriptor.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,13 +107,14 @@
 void fieldDescriptor::print_on_for(outputStream* st, oop obj) {
   print_on(st);
   BasicType ft = field_type();
-  jint as_int;
+  jint as_int = 0;
   switch (ft) {
     case T_BYTE:
       as_int = (jint)obj->byte_field(offset());
       st->print(" %d", obj->byte_field(offset()));
       break;
     case T_CHAR:
+      as_int = (jint)obj->char_field(offset());
       {
         jchar c = obj->char_field(offset());
         as_int = c;
@@ -128,6 +129,7 @@
       st->print(" %f", obj->float_field(offset()));
       break;
     case T_INT:
+      as_int = obj->int_field(offset());
       st->print(" %d", obj->int_field(offset()));
       break;
     case T_LONG:
@@ -144,12 +146,12 @@
       break;
     case T_ARRAY:
       st->print(" ");
-      as_int = obj->int_field(offset());
+      NOT_LP64(as_int = obj->int_field(offset()));
       obj->obj_field(offset())->print_value_on(st);
       break;
     case T_OBJECT:
       st->print(" ");
-      as_int = obj->int_field(offset());
+      NOT_LP64(as_int = obj->int_field(offset()));
       obj->obj_field(offset())->print_value_on(st);
       break;
     default:
@@ -158,9 +160,9 @@
   }
   // Print a hint as to the underlying integer representation. This can be wrong for
   // pointers on an LP64 machine
-  if (ft == T_LONG || ft == T_DOUBLE) {
+  if (ft == T_LONG || ft == T_DOUBLE LP64_ONLY(|| !is_java_primitive(ft)) ) {
     st->print(" (%x %x)", obj->int_field(offset()), obj->int_field(offset()+sizeof(jint)));
-  } else {
+  } else if (as_int < 0 || as_int > 9) {
     st->print(" (%x)", as_int);
   }
 }
--- a/src/share/vm/runtime/fprofiler.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/fprofiler.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -988,7 +988,7 @@
 
 
 void ThreadProfiler::record_tick_for_running_frame(JavaThread* thread, frame fr) {
-  // The tick happend in real code -> non VM code
+  // The tick happened in real code -> non VM code
   if (fr.is_interpreted_frame()) {
     interval_data_ref()->inc_interpreted();
     record_interpreted_tick(thread, fr, tp_code, FlatProfiler::bytecode_ticks);
@@ -1019,7 +1019,7 @@
 }
 
 void ThreadProfiler::record_tick_for_calling_frame(JavaThread* thread, frame fr) {
-  // The tick happend in VM code
+  // The tick happened in VM code
   interval_data_ref()->inc_native();
   if (fr.is_interpreted_frame()) {
     record_interpreted_tick(thread, fr, tp_native, FlatProfiler::bytecode_ticks_stub);
--- a/src/share/vm/runtime/frame.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/frame.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -930,7 +930,7 @@
         // => process callee's arguments
         //
         // Note: The expression stack can be empty if an exception
-        //       occured during method resolution/execution. In all
+        //       occurred during method resolution/execution. In all
         //       cases we empty the expression stack completely be-
         //       fore handling the exception (the exception handling
         //       code in the interpreter calls a blocking runtime
--- a/src/share/vm/runtime/frame.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/frame.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -117,7 +117,7 @@
   bool can_be_deoptimized() const;
 
   // returns the frame size in stack slots
-  int frame_size() const;
+  int frame_size(RegisterMap* map) const;
 
   // returns the sending frame
   frame sender(RegisterMap* map) const;
--- a/src/share/vm/runtime/frame.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/frame.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,7 +22,7 @@
  *
  */
 
-// This file holds platform-independant bodies of inline functions for frames.
+// 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
--- a/src/share/vm/runtime/globals.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/globals.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -47,6 +47,7 @@
 define_pd_global(intx, OnStackReplacePercentage,     0);
 define_pd_global(bool, ResizeTLAB,                   false);
 define_pd_global(intx, FreqInlineSize,               0);
+define_pd_global(intx, InlineSmallCode,              0);
 define_pd_global(intx, NewSizeThreadIncrease,        4*K);
 define_pd_global(intx, NewRatio,                     4);
 define_pd_global(intx, InlineClassNatives,           true);
@@ -303,11 +304,14 @@
             "Use 32-bit object references in 64-bit VM. "                   \
             "lp64_product means flag is always constant in 32 bit VM")      \
                                                                             \
-  lp64_product(bool, CheckCompressedOops, trueInDebug,                      \
-            "generate checks in encoding/decoding code")                    \
-                                                                            \
-  product(bool, UseImplicitNullCheckForNarrowOop, true,                     \
-            "generate implicit null check in indexed addressing mode.")     \
+  notproduct(bool, CheckCompressedOops, true,                               \
+            "generate checks in encoding/decoding code in debug VM")        \
+                                                                            \
+  product_pd(uintx, HeapBaseMinAddress,                                     \
+            "OS specific low limit for heap base address")                  \
+                                                                            \
+  diagnostic(bool, PrintCompressedOopsMode, false,                          \
+            "Print compressed oops base address and encoding mode")         \
                                                                             \
   /* UseMembar is theoretically a temp flag used for memory barrier         \
    * removal testing.  It was supposed to be removed before FCS but has     \
@@ -487,9 +491,15 @@
   develop(bool, SpecialStringIndexOf, true,                                 \
           "special version of string indexOf")                              \
                                                                             \
-  product(bool, SpecialArraysEquals, false,                                 \
+  develop(bool, SpecialStringEquals, true,                                  \
+          "special version of string equals")                               \
+                                                                            \
+  develop(bool, SpecialArraysEquals, true,                                  \
           "special version of Arrays.equals(char[],char[])")                \
                                                                             \
+  product(bool, UseSSE42Intrinsics, false,                                  \
+          "SSE4.2 versions of intrinsics")                                  \
+                                                                            \
   develop(bool, TraceCallFixup, false,                                      \
           "traces all call fixups")                                         \
                                                                             \
@@ -662,6 +672,12 @@
   product(ccstrlist, OnOutOfMemoryError, "",                                \
           "Run user-defined commands on first java.lang.OutOfMemoryError")  \
                                                                             \
+  manageable(bool, HeapDumpBeforeFullGC, false,                             \
+          "Dump heap to file before any major stop-world GC")               \
+                                                                            \
+  manageable(bool, HeapDumpAfterFullGC, false,                              \
+          "Dump heap to file after any major stop-world GC")                \
+                                                                            \
   manageable(bool, HeapDumpOnOutOfMemoryError, false,                       \
           "Dump heap to file when java.lang.OutOfMemoryError is thrown")    \
                                                                             \
@@ -835,8 +851,21 @@
           "Prints the system dictionary at exit")                           \
                                                                             \
   diagnostic(bool, UnsyncloadClass, false,                                  \
-          "Unstable: VM calls loadClass unsynchronized. Custom classloader "\
-          "must call VM synchronized for findClass & defineClass")          \
+          "Unstable: VM calls loadClass unsynchronized. Custom "            \
+          "class loader  must call VM synchronized for findClass "          \
+          "and defineClass.")                                               \
+                                                                            \
+  product(bool, AlwaysLockClassLoader, false,                               \
+          "Require the VM to acquire the class loader lock before calling " \
+          "loadClass() even for class loaders registering "                 \
+          "as parallel capable. Default false. ")                           \
+                                                                            \
+  product(bool, AllowParallelDefineClass, false,                            \
+          "Allow parallel defineClass requests for class loaders "          \
+          "registering as parallel capable. Default false")                 \
+                                                                            \
+  product(bool, MustCallLoadClassInternal, false,                           \
+          "Call loadClassInternal() rather than loadClass().Default false") \
                                                                             \
   product_pd(bool, DontYieldALot,                                           \
           "Throw away obvious excess yield calls (for SOLARIS only)")       \
@@ -1297,7 +1326,20 @@
   product(intx, ParGCArrayScanChunk, 50,                                    \
           "Scan a subset and push remainder, if array is bigger than this") \
                                                                             \
-  product(intx, ParGCDesiredObjsFromOverflowList, 20,                       \
+  product(bool, ParGCUseLocalOverflow, false,                               \
+          "Instead of a global overflow list, use local overflow stacks")   \
+                                                                            \
+  product(bool, ParGCTrimOverflow, true,                                    \
+          "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \
+                                                                            \
+  notproduct(bool, ParGCWorkQueueOverflowALot, false,                       \
+          "Whether we should simulate work queue overflow in ParNew")       \
+                                                                            \
+  notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000,                   \
+          "An `interval' counter that determines how frequently"            \
+          " we simulate overflow; a smaller number increases frequency")    \
+                                                                            \
+  product(uintx, ParGCDesiredObjsFromOverflowList, 20,                      \
           "The desired number of objects to claim from the overflow list")  \
                                                                             \
   product(uintx, CMSParPromoteBlocksToClaim, 50,                            \
@@ -1409,18 +1451,18 @@
   develop(bool, CMSOverflowEarlyRestoration, false,                         \
           "Whether preserved marks should be restored early")               \
                                                                             \
-  product(uintx, CMSMarkStackSize, 32*K,                                    \
+  product(uintx, CMSMarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),           \
           "Size of CMS marking stack")                                      \
                                                                             \
-  product(uintx, CMSMarkStackSizeMax, 4*M,                                  \
+  product(uintx, CMSMarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),       \
           "Max size of CMS marking stack")                                  \
                                                                             \
   notproduct(bool, CMSMarkStackOverflowALot, false,                         \
           "Whether we should simulate frequent marking stack / work queue"  \
           " overflow")                                                      \
                                                                             \
-  notproduct(intx, CMSMarkStackOverflowInterval, 1000,                      \
-          "A per-thread `interval' counter that determines how frequently"  \
+  notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
+          "An `interval' counter that determines how frequently"            \
           " we simulate overflow; a smaller number increases frequency")    \
                                                                             \
   product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
@@ -1638,7 +1680,14 @@
   develop(uintx, WorkStealingYieldsBeforeSleep, 1000,                       \
           "Number of yields before a sleep is done during workstealing")    \
                                                                             \
-  product(uintx, PreserveMarkStackSize, 40,                                 \
+  develop(uintx, WorkStealingHardSpins, 4096,                               \
+          "Number of iterations in a spin loop between checks on "          \
+          "time out of hard spin")                                          \
+                                                                            \
+  develop(uintx, WorkStealingSpinToYieldRatio, 10,                          \
+          "Ratio of hard spins to calls to yield")                          \
+                                                                            \
+  product(uintx, PreserveMarkStackSize, 1024,                               \
            "Size for stack used in promotion failure handling")             \
                                                                             \
   product_pd(bool, UseTLAB, "Use thread-local object allocation")           \
@@ -1773,7 +1822,11 @@
           "Decay factor to TenuredGenerationSizeIncrement")                 \
                                                                             \
   product(uintx, MaxGCPauseMillis, max_uintx,                               \
-          "Adaptive size policy maximum GC pause time goal in msec")        \
+          "Adaptive size policy maximum GC pause time goal in msec, "       \
+          "or (G1 Only) the max. GC time per MMU time slice")               \
+                                                                            \
+  product(intx, GCPauseIntervalMillis, 500,                                 \
+          "Time slice for MMU specification")                               \
                                                                             \
   product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
           "Adaptive size policy maximum GC minor pause time goal in msec")  \
@@ -1944,9 +1997,19 @@
   product_rw(bool, PrintHeapAtGC, false,                                    \
           "Print heap layout before and after each GC")                     \
                                                                             \
+  product_rw(bool, PrintHeapAtGCExtended, false,                            \
+          "Prints extended information about the layout of the heap "       \
+          "when -XX:+PrintHeapAtGC is set")                                 \
+                                                                            \
   product(bool, PrintHeapAtSIGBREAK, true,                                  \
           "Print heap layout in response to SIGBREAK")                      \
                                                                             \
+  manageable(bool, PrintClassHistogramBeforeFullGC, false,                  \
+          "Print a class histogram before any major stop-world GC")         \
+                                                                            \
+  manageable(bool, PrintClassHistogramAfterFullGC, false,                   \
+          "Print a class histogram after any major stop-world GC")          \
+                                                                            \
   manageable(bool, PrintClassHistogram, false,                              \
           "Print a histogram of class instances")                           \
                                                                             \
@@ -2133,6 +2196,12 @@
   diagnostic(bool, PrintIntrinsics, false,                                  \
           "prints attempted and successful inlining of intrinsics")         \
                                                                             \
+  product(bool, UseCountLeadingZerosInstruction, false,                     \
+          "Use count leading zeros instruction")                            \
+                                                                            \
+  product(bool, UsePopCountInstruction, false,                              \
+          "Use population count instruction")                               \
+                                                                            \
   diagnostic(ccstrlist, DisableIntrinsic, "",                               \
           "do not expand intrinsics whose (internal) names appear here")    \
                                                                             \
@@ -2170,6 +2239,9 @@
   product(bool, PrintVMOptions, trueInDebug,                                \
          "print VM flag settings")                                          \
                                                                             \
+  product(bool, IgnoreUnrecognizedVMOptions, false,                         \
+         "Ignore unrecognized VM options")                                  \
+                                                                            \
   diagnostic(bool, SerializeVMOutput, true,                                 \
          "Use a mutex to serialize output to tty and hotspot.log")          \
                                                                             \
@@ -2571,7 +2643,7 @@
   develop(intx, MaxRecursiveInlineLevel, 1,                                 \
           "maximum number of nested recursive calls that are inlined")      \
                                                                             \
-  product(intx, InlineSmallCode, 1000,                                      \
+  product_pd(intx, InlineSmallCode,                                         \
           "Only inline already compiled methods if their code size is "     \
           "less than this")                                                 \
                                                                             \
@@ -3243,6 +3315,27 @@
   product(bool, AnonymousClasses, false,                                    \
           "support sun.misc.Unsafe.defineAnonymousClass")                   \
                                                                             \
+  product(bool, EnableMethodHandles, false,                                 \
+          "support method handles (true by default under JSR 292)")         \
+                                                                            \
+  diagnostic(intx, MethodHandlePushLimit, 3,                                \
+          "number of additional stack slots a method handle may push")      \
+                                                                            \
+  develop(bool, TraceMethodHandles, false,                                  \
+          "trace internal method handle operations")                        \
+                                                                            \
+  diagnostic(bool, VerifyMethodHandles, trueInDebug,                        \
+          "perform extra checks when constructing method handles")          \
+                                                                            \
+  diagnostic(bool, OptimizeMethodHandles, true,                             \
+          "when constructing method handles, try to improve them")          \
+                                                                            \
+  product(bool, EnableInvokeDynamic, false,                                 \
+          "recognize the invokedynamic instruction")                        \
+                                                                            \
+  develop(bool, TraceInvokeDynamic, false,                                  \
+          "trace internal invoke dynamic operations")                       \
+                                                                            \
   product(bool, TaggedStackInterpreter, false,                              \
           "Insert tags in interpreter execution stack for oopmap generaion")\
                                                                             \
--- a/src/share/vm/runtime/handles.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/handles.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -137,6 +137,14 @@
     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(); }
--- a/src/share/vm/runtime/hpi.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/hpi.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -90,7 +90,7 @@
   static inline struct protoent* get_proto_by_name(char* name);
 
   // HPI_LibraryInterface
-  static inline void   dll_build_name(char *buf, int buf_len, char* path,
+  static inline void   dll_build_name(char *buf, int buf_len, const char* path,
                                       const char *name);
   static inline void*  dll_load(const char *name, char *ebuf, int ebuflen);
   static inline void   dll_unload(void *lib);
@@ -137,7 +137,15 @@
     return result;                            \
   }
 
-
+#define VM_HPIDECL_VOID(name, names, func, arg_type, arg_print, arg)   \
+  inline void  hpi::name arg_type {           \
+    if (TraceHPI) {                           \
+      tty->print("hpi::" names "(");          \
+      tty->print arg_print;                   \
+      tty->print(") = ");                     \
+    }                                         \
+    func arg;                                 \
+  }
 
 #define HPIDECL_VOID(name, names, intf, func, arg_type, arg_print, arg) \
   inline void hpi::name arg_type {            \
@@ -197,11 +205,11 @@
         (fd, size));
 
 // HPI_LibraryInterface
-HPIDECL_VOID(dll_build_name, "dll_build_name", _library, BuildLibName,
-             (char *buf, int buf_len, char *path, const char *name),
-             ("buf = %p, buflen = %d, path = %s, name = %s",
-              buf, buf_len, path, name),
-             (buf, buf_len, path, name));
+VM_HPIDECL_VOID(dll_build_name, "dll_build_name", os::dll_build_name,
+               (char *buf, int buf_len, const char *path, const char *name),
+               ("buf = %p, buflen = %d, path = %s, name = %s",
+                buf, buf_len, path, name),
+               (buf, buf_len, path, name));
 
 VM_HPIDECL(dll_load, "dll_load", os::dll_load,
         void *, "(void *)%p",
--- a/src/share/vm/runtime/interfaceSupport.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/interfaceSupport.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -66,11 +66,14 @@
 
 void InterfaceSupport::gc_alot() {
   Thread *thread = Thread::current();
-  if (thread->is_VM_thread()) return; // Avoid concurrent calls
+  if (!thread->is_Java_thread()) return; // Avoid concurrent calls
   // Check for new, not quite initialized thread. A thread in new mode cannot initiate a GC.
   JavaThread *current_thread = (JavaThread *)thread;
   if (current_thread->active_handles() == NULL) return;
 
+  // Short-circuit any possible re-entrant gc-a-lot attempt
+  if (thread->skip_gcalot()) return;
+
   if (is_init_completed()) {
 
     if (++_fullgc_alot_invocation < FullGCALotStart) {
--- a/src/share/vm/runtime/javaCalls.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/javaCalls.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 +37,6 @@
   guarantee(!thread->is_Compiler_thread(), "cannot make java calls from the compiler");
   _result   = result;
 
-  // Make sure that that the value of the  higest_lock is at least the same as the current stackpointer,
-  // since, the Java code is highly likely to use locks.
-  // Use '(address)this' to guarantee that highest_lock address is conservative and inside our thread
-  thread->update_highest_lock((address)this);
-
   // Allocate handle block for Java code. This must be done before we change thread_state to _thread_in_Java_or_stub,
   // since it can potentially block.
   JNIHandleBlock* new_handles = JNIHandleBlock::allocate_block(thread);
--- a/src/share/vm/runtime/memprofiler.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/memprofiler.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,21 +104,22 @@
   }
 
   // Print trace line in log
-  fprintf(_log_fp, "%6.1f,%5d,%5d,%6ld,%6ld,%6ld,%6ld,",
-      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);
+  fprintf(_log_fp, "%6.1f,%5d,%5d," UINTX_FORMAT_W(6) "," UINTX_FORMAT_W(6) ","
+          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);
 
-  fprintf(_log_fp, "%6ld,", CodeCache::capacity() / K);
+  fprintf(_log_fp, UINTX_FORMAT_W(6) ",", CodeCache::capacity() / K);
 
-  fprintf(_log_fp, "%6ld,%6ld,%6ld\n",
-      handles_memory_usage / K,
-      resource_memory_usage / K,
-      OopMapCache::memory_usage() / K);
+  fprintf(_log_fp, UINTX_FORMAT_W(6) "," UINTX_FORMAT_W(6) ",%6ld\n",
+          handles_memory_usage / K,
+          resource_memory_usage / K,
+          OopMapCache::memory_usage() / K);
   fflush(_log_fp);
 }
 
--- a/src/share/vm/runtime/mutex.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/mutex.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -82,7 +82,7 @@
 // *in that order*.  If their implementations change such that these
 // assumptions are violated, a whole lot of code will break.
 
-// The default length of monitor name is choosen to be 64 to avoid false sharing.
+// The default length of monitor name is chosen to be 64 to avoid false sharing.
 static const int MONITOR_NAME_LEN = 64;
 
 class Monitor : public CHeapObj {
--- a/src/share/vm/runtime/mutexLocker.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/mutexLocker.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -70,7 +70,6 @@
 Monitor* CMark_lock                   = NULL;
 Monitor* ZF_mon                       = NULL;
 Monitor* Cleanup_mon                  = NULL;
-Monitor* G1ConcRefine_mon             = NULL;
 Mutex*   SATB_Q_FL_lock               = NULL;
 Monitor* SATB_Q_CBL_mon               = NULL;
 Mutex*   Shared_SATB_Q_lock           = NULL;
@@ -168,7 +167,6 @@
     def(CMark_lock                 , Monitor, nonleaf,     true ); // coordinate concurrent mark thread
     def(ZF_mon                     , Monitor, leaf,        true );
     def(Cleanup_mon                , Monitor, nonleaf,     true );
-    def(G1ConcRefine_mon           , Monitor, nonleaf,     true );
     def(SATB_Q_FL_lock             , Mutex  , special,     true );
     def(SATB_Q_CBL_mon             , Monitor, nonleaf,     true );
     def(Shared_SATB_Q_lock         , Mutex,   nonleaf,     true );
--- a/src/share/vm/runtime/mutexLocker.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/mutexLocker.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -63,9 +63,6 @@
 extern Monitor* CMark_lock;                      // used for concurrent mark thread coordination
 extern Monitor* ZF_mon;                          // used for G1 conc zero-fill.
 extern Monitor* Cleanup_mon;                     // used for G1 conc cleanup.
-extern Monitor* G1ConcRefine_mon;                // used for G1 conc-refine
-                                                 // coordination.
-
 extern Mutex*   SATB_Q_FL_lock;                  // Protects SATB Q
                                                  // buffer free list.
 extern Monitor* SATB_Q_CBL_mon;                  // Protects SATB Q
--- a/src/share/vm/runtime/orderAccess.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/orderAccess.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -26,3 +26,15 @@
 # include "incls/_orderAccess.cpp.incl"
 
 volatile intptr_t OrderAccess::dummy = 0;
+
+void OrderAccess::StubRoutines_fence() {
+  // Use a stub if it exists.  It may not exist during bootstrap so do
+  // nothing in that case but assert if no fence code exists after threads have been created
+  void (*func)() = CAST_TO_FN_PTR(void (*)(), StubRoutines::fence_entry());
+
+  if (func != NULL) {
+    (*func)();
+    return;
+  }
+  assert(Threads::number_of_threads() == 0, "for bootstrap only");
+}
--- a/src/share/vm/runtime/orderAccess.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/orderAccess.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -31,7 +31,7 @@
 // at runtime.
 //
 // In the following, the terms 'previous', 'subsequent', 'before',
-// 'after', 'preceeding' and 'succeeding' refer to program order.  The
+// 'after', 'preceding' and 'succeeding' refer to program order.  The
 // terms 'down' and 'below' refer to forward load or store motion
 // relative to program order, while 'up' and 'above' refer to backward
 // motion.
@@ -300,4 +300,10 @@
   // In order to force a memory access, implementations may
   // need a volatile externally visible dummy variable.
   static volatile intptr_t dummy;
+
+ private:
+  // This is a helper that invokes the StubRoutines::fence_entry()
+  // routine if it exists, It should only be used by platforms that
+  // don't another way to do the inline eassembly.
+  static void StubRoutines_fence();
 };
--- a/src/share/vm/runtime/os.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/os.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,11 @@
   const int milliseconds_after_second =
     milliseconds_since_19700101 % milliseconds_per_microsecond;
   // Convert the time value to a tm and timezone variable
-  const struct tm *time_struct_temp = localtime(&seconds_since_19700101);
-  if (time_struct_temp == NULL) {
-    assert(false, "Failed localtime");
+  struct tm time_struct;
+  if (localtime_pd(&seconds_since_19700101, &time_struct) == NULL) {
+    assert(false, "Failed localtime_pd");
     return NULL;
   }
-  // Save the results of localtime
-  const struct tm time_struct = *time_struct_temp;
   const time_t zone = timezone;
 
   // If daylight savings time is in effect,
@@ -93,10 +91,10 @@
     UTC_to_local = UTC_to_local - seconds_per_hour;
   }
   // Compute the time zone offset.
-  //    localtime(3C) sets timezone to the difference (in seconds)
+  //    localtime_pd() sets timezone to the difference (in seconds)
   //    between UTC and and local time.
   //    ISO 8601 says we need the difference between local time and UTC,
-  //    we change the sign of the localtime(3C) result.
+  //    we change the sign of the localtime_pd() result.
   const time_t local_to_UTC = -(UTC_to_local);
   // Then we have to figure out if if we are ahead (+) or behind (-) UTC.
   char sign_local_to_UTC = '+';
@@ -209,7 +207,8 @@
         VMThread::execute(&op1);
         Universe::print_heap_at_SIGBREAK();
         if (PrintClassHistogram) {
-          VM_GC_HeapInspection op1(gclog_or_tty, true /* force full GC before heap inspection */);
+          VM_GC_HeapInspection op1(gclog_or_tty, true /* force full GC before heap inspection */,
+                                   true /* need_prologue */);
           VMThread::execute(&op1);
         }
         if (JvmtiExport::should_post_data_dump()) {
@@ -864,7 +863,6 @@
 
 
 bool os::set_boot_path(char fileSep, char pathSep) {
-
     const char* home = Arguments::get_java_home();
     int home_len = (int)strlen(home);
 
@@ -894,6 +892,60 @@
     return true;
 }
 
+/*
+ * Splits a path, based on its separator, the number of
+ * elements is returned back in n.
+ * It is the callers responsibility to:
+ *   a> check the value of n, and n may be 0.
+ *   b> ignore any empty path elements
+ *   c> free up the data.
+ */
+char** os::split_path(const char* path, int* n) {
+  *n = 0;
+  if (path == NULL || strlen(path) == 0) {
+    return NULL;
+  }
+  const char psepchar = *os::path_separator();
+  char* inpath = (char*)NEW_C_HEAP_ARRAY(char, strlen(path) + 1);
+  if (inpath == NULL) {
+    return NULL;
+  }
+  strncpy(inpath, path, strlen(path));
+  int count = 1;
+  char* p = strchr(inpath, psepchar);
+  // Get a count of elements to allocate memory
+  while (p != NULL) {
+    count++;
+    p++;
+    p = strchr(p, psepchar);
+  }
+  char** opath = (char**) NEW_C_HEAP_ARRAY(char*, count);
+  if (opath == NULL) {
+    return NULL;
+  }
+
+  // do the actual splitting
+  p = inpath;
+  for (int i = 0 ; i < count ; i++) {
+    size_t len = strcspn(p, os::path_separator());
+    if (len > JVM_MAXPATHLEN) {
+      return NULL;
+    }
+    // allocate the string and add terminator storage
+    char* s  = (char*)NEW_C_HEAP_ARRAY(char, len + 1);
+    if (s == NULL) {
+      return NULL;
+    }
+    strncpy(s, p, len);
+    s[len] = '\0';
+    opath[i] = s;
+    p += len + 1;
+  }
+  FREE_C_HEAP_ARRAY(char, inpath);
+  *n = count;
+  return opath;
+}
+
 void os::set_memory_serialize_page(address page) {
   int count = log2_intptr(sizeof(class JavaThread)) - log2_intptr(64);
   _mem_serialize_page = (volatile int32_t *)page;
@@ -945,7 +997,7 @@
   assert(StackRedPages > 0 && StackYellowPages > 0,"Sanity check");
   address sp = current_stack_pointer();
   // Check if we have StackShadowPages above the yellow zone.  This parameter
-  // is dependant on the depth of the maximum VM call stack possible from
+  // is dependent on the depth of the maximum VM call stack possible from
   // the handler for stack overflow.  'instanceof' in the stack overflow
   // handler or a println uses at least 8k stack of VM and native code
   // respectively.
--- a/src/share/vm/runtime/os.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/os.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -120,7 +120,8 @@
   // Return current local time in a string (YYYY-MM-DD HH:MM:SS).
   // It is MT safe, but not async-safe, as reading time zone
   // information may require a lock on some platforms.
-  static char* local_time_string(char *buf, size_t buflen);
+  static char*      local_time_string(char *buf, size_t buflen);
+  static struct tm* localtime_pd     (const time_t* clock, struct tm*  res);
   // Fill in buffer with current local time as an ISO-8601 string.
   // E.g., YYYY-MM-DDThh:mm:ss.mmm+zzzz.
   // Returns buffer, or NULL if it failed.
@@ -201,8 +202,10 @@
   static char*  attempt_reserve_memory_at(size_t bytes, char* addr);
   static void   split_reserved_memory(char *base, size_t size,
                                       size_t split, bool realloc);
-  static bool   commit_memory(char* addr, size_t bytes);
-  static bool   commit_memory(char* addr, size_t size, size_t alignment_hint);
+  static bool   commit_memory(char* addr, size_t bytes,
+                              bool executable = false);
+  static bool   commit_memory(char* addr, size_t size, size_t alignment_hint,
+                              bool executable = false);
   static bool   uncommit_memory(char* addr, size_t bytes);
   static bool   release_memory(char* addr, size_t bytes);
 
@@ -242,7 +245,8 @@
 
   static char*  non_memory_address_word();
   // reserve, commit and pin the entire memory region
-  static char*  reserve_memory_special(size_t size);
+  static char*  reserve_memory_special(size_t size, char* addr = NULL,
+                bool executable = false);
   static bool   release_memory_special(char* addr, size_t bytes);
   static bool   large_page_init();
   static size_t large_page_size();
@@ -603,6 +607,7 @@
                                 char fileSep,
                                 char pathSep);
   static bool set_boot_path(char fileSep, char pathSep);
+  static char** split_path(const char* path, int* n);
 };
 
 // Note that "PAUSE" is almost always used with synchronization
--- a/src/share/vm/runtime/perfData.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/perfData.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -868,6 +868,10 @@
   {counter = PerfDataManager::create_counter(counter_ns, counter_name, \
                                              PerfData::U_Events,CHECK);}
 
+#define NEWPERFBYTECOUNTER(counter, counter_ns, counter_name)  \
+  {counter = PerfDataManager::create_counter(counter_ns, counter_name, \
+                                             PerfData::U_Bytes,CHECK);}
+
 // Utility Classes
 
 /*
--- a/src/share/vm/runtime/reflection.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/reflection.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -554,10 +554,18 @@
   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);
+}
+
 
 // Checks that the 'outer' klass has declared 'inner' as being an inner klass. If not,
 // throw an incompatible class change exception
-void Reflection::check_for_inner_class(instanceKlassHandle outer, instanceKlassHandle inner, TRAPS) {
+// If inner_is_member, require the inner to be a member of the outer.
+// If !inner_is_member, require the inner to be anonymous (a non-member).
+// Caller is responsible for figuring out in advance which case must be true.
+void Reflection::check_for_inner_class(instanceKlassHandle outer, instanceKlassHandle inner,
+                                       bool inner_is_member, TRAPS) {
   const int inner_class_info_index = 0;
   const int outer_class_info_index = 1;
 
@@ -567,7 +575,7 @@
      int ioff = icls->ushort_at(i + inner_class_info_index);
      int ooff = icls->ushort_at(i + outer_class_info_index);
 
-     if (ioff != 0 && ooff != 0) {
+     if (inner_is_member && ioff != 0 && ooff != 0) {
         klassOop o = cp->klass_at(ooff, CHECK);
         if (o == outer()) {
           klassOop i = cp->klass_at(ioff, CHECK);
@@ -576,6 +584,13 @@
           }
         }
      }
+     if (!inner_is_member && ioff != 0 && ooff == 0 &&
+         cp->klass_name_at_matches(inner, ioff)) {
+        klassOop i = cp->klass_at(ioff, CHECK);
+        if (i == inner()) {
+          return;
+        }
+     }
   }
 
   // 'inner' not declared as an inner klass in outer
--- a/src/share/vm/runtime/reflection.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/reflection.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -87,12 +87,18 @@
                                       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 can_relax_access_check_for(
     klassOop accessor, klassOop accesee, bool classloader_only);
 
   // inner class reflection
-  static void check_for_inner_class(instanceKlassHandle outer, instanceKlassHandle inner, TRAPS);
+  // raise an ICCE unless the required relationship can be proven to hold
+  // If inner_is_member, require the inner to be a member of the outer.
+  // If !inner_is_member, require the inner to be anonymous (a non-member).
+  // Caller is responsible for figuring out in advance which case must be true.
+  static void check_for_inner_class(instanceKlassHandle outer, instanceKlassHandle inner,
+                                    bool inner_is_member, TRAPS);
 
   //
   // Support for reflection based on dynamic bytecode generation (JDK 1.4)
--- a/src/share/vm/runtime/safepoint.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/safepoint.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,7 @@
     // In the future we should investigate whether CMS can use the
     // more-general mechanism below.  DLD (01/05).
     ConcurrentMarkSweepThread::synchronize(false);
-  } else {
+  } else if (UseG1GC) {
     ConcurrentGCThread::safepoint_synchronize();
   }
 #endif // SERIALGC
@@ -369,7 +369,7 @@
 
     // Start suspended threads
     for(JavaThread *current = Threads::first(); current; current = current->next()) {
-      // A problem occuring on Solaris is when attempting to restart threads
+      // A problem occurring on Solaris is when attempting to restart threads
       // the first #cpus - 1 go well, but then the VMThread is preempted when we get
       // to the next one (since it has been running the longest).  We then have
       // to wait for a cpu to become available before we can continue restarting
@@ -400,7 +400,7 @@
   // If there are any concurrent GC threads resume them.
   if (UseConcMarkSweepGC) {
     ConcurrentMarkSweepThread::desynchronize(false);
-  } else {
+  } else if (UseG1GC) {
     ConcurrentGCThread::safepoint_desynchronize();
   }
 #endif // SERIALGC
@@ -730,7 +730,7 @@
   if (DieOnSafepointTimeout) {
     char msg[1024];
     VM_Operation *op = VMThread::vm_operation();
-    sprintf(msg, "Safepoint sync time longer than %d ms detected when executing %s.",
+    sprintf(msg, "Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
             SafepointTimeoutDelay,
             op != NULL ? op->name() : "no vm operation");
     fatal(msg);
--- a/src/share/vm/runtime/sharedRuntime.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +119,7 @@
     assert(false, "should be optimized out");
     return;
   }
+  assert(orig->is_oop(true /* ignore mark word */), "Error");
   // store the original value that was in the field reference
   thread->satb_mark_queue().enqueue(orig);
 JRT_END
@@ -192,64 +193,46 @@
 
 
 JRT_LEAF(jint, SharedRuntime::f2i(jfloat  x))
-  if (g_isnan(x)) {return 0;}
-  jlong lltmp = (jlong)x;
-  jint ltmp   = (jint)lltmp;
-  if (ltmp == lltmp) {
-    return ltmp;
-  } else {
-    if (x < 0) {
-      return min_jint;
-    } else {
-      return max_jint;
-    }
-  }
+  if (g_isnan(x))
+    return 0;
+  if (x >= (jfloat) max_jint)
+    return max_jint;
+  if (x <= (jfloat) min_jint)
+    return min_jint;
+  return (jint) x;
 JRT_END
 
 
 JRT_LEAF(jlong, SharedRuntime::f2l(jfloat  x))
-  if (g_isnan(x)) {return 0;}
-  jlong lltmp = (jlong)x;
-  if (lltmp != min_jlong) {
-    return lltmp;
-  } else {
-    if (x < 0) {
-      return min_jlong;
-    } else {
-      return max_jlong;
-    }
-  }
+  if (g_isnan(x))
+    return 0;
+  if (x >= (jfloat) max_jlong)
+    return max_jlong;
+  if (x <= (jfloat) min_jlong)
+    return min_jlong;
+  return (jlong) x;
 JRT_END
 
 
 JRT_LEAF(jint, SharedRuntime::d2i(jdouble x))
-  if (g_isnan(x)) {return 0;}
-  jlong lltmp = (jlong)x;
-  jint ltmp   = (jint)lltmp;
-  if (ltmp == lltmp) {
-    return ltmp;
-  } else {
-    if (x < 0) {
-      return min_jint;
-    } else {
-      return max_jint;
-    }
-  }
+  if (g_isnan(x))
+    return 0;
+  if (x >= (jdouble) max_jint)
+    return max_jint;
+  if (x <= (jdouble) min_jint)
+    return min_jint;
+  return (jint) x;
 JRT_END
 
 
 JRT_LEAF(jlong, SharedRuntime::d2l(jdouble x))
-  if (g_isnan(x)) {return 0;}
-  jlong lltmp = (jlong)x;
-  if (lltmp != min_jlong) {
-    return lltmp;
-  } else {
-    if (x < 0) {
-      return min_jlong;
-    } else {
-      return max_jlong;
-    }
-  }
+  if (g_isnan(x))
+    return 0;
+  if (x >= (jdouble) max_jlong)
+    return max_jlong;
+  if (x <= (jdouble) min_jlong)
+    return min_jlong;
+  return (jlong) x;
 JRT_END
 
 
@@ -395,6 +378,32 @@
   throw_and_post_jvmti_exception(thread, h_exception);
 }
 
+// The interpreter code to call this tracing function is only
+// called/generated when TraceRedefineClasses has the right bits
+// set. Since obsolete methods are never compiled, we don't have
+// to modify the compilers to generate calls to this function.
+//
+JRT_LEAF(int, SharedRuntime::rc_trace_method_entry(
+    JavaThread* thread, methodOopDesc* 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.
+
+    // RC_TRACE macro has an embedded ResourceMark
+    RC_TRACE_WITH_THREAD(0x00001000, thread,
+                         ("calling obsolete method '%s'",
+                          method->name_and_sig_as_C_string()));
+    if (RC_TRACE_ENABLED(0x00002000)) {
+      // this option is provided to debug calls to obsolete methods
+      guarantee(false, "faulting at call to an obsolete method.");
+    }
+  }
+  return 0;
+JRT_END
+
 // ret_pc points into caller; we are returning caller's exception handler
 // for given exception
 address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc, Handle& exception,
@@ -667,48 +676,6 @@
 JRT_END
 
 
-// ---------------------------------------------------------------------------------------------------------
-// Non-product code
-#ifndef PRODUCT
-
-void SharedRuntime::verify_caller_frame(frame caller_frame, methodHandle callee_method) {
-  ResourceMark rm;
-  assert (caller_frame.is_interpreted_frame(), "sanity check");
-  assert (callee_method->has_compiled_code(), "callee must be compiled");
-  methodHandle caller_method (Thread::current(), caller_frame.interpreter_frame_method());
-  jint bci = caller_frame.interpreter_frame_bci();
-  methodHandle method = find_callee_method_inside_interpreter(caller_frame, caller_method, bci);
-  assert (callee_method == method, "incorrect method");
-}
-
-methodHandle SharedRuntime::find_callee_method_inside_interpreter(frame caller_frame, methodHandle caller_method, int bci) {
-  EXCEPTION_MARK;
-  Bytecode_invoke* bytecode = Bytecode_invoke_at(caller_method, bci);
-  methodHandle staticCallee = bytecode->static_target(CATCH); // Non-product code
-
-  bytecode = Bytecode_invoke_at(caller_method, bci);
-  int bytecode_index = bytecode->index();
-  Bytecodes::Code bc = bytecode->adjusted_invoke_code();
-
-  Handle receiver;
-  if (bc == Bytecodes::_invokeinterface ||
-      bc == Bytecodes::_invokevirtual ||
-      bc == Bytecodes::_invokespecial) {
-    symbolHandle signature (THREAD, staticCallee->signature());
-    receiver = Handle(THREAD, retrieve_receiver(signature, caller_frame));
-  } else {
-    receiver = Handle();
-  }
-  CallInfo result;
-  constantPoolHandle constants (THREAD, caller_method->constants());
-  LinkResolver::resolve_invoke(result, receiver, constants, bytecode_index, bc, CATCH); // Non-product code
-  methodHandle calleeMethod = result.selected_method();
-  return calleeMethod;
-}
-
-#endif  // PRODUCT
-
-
 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");
@@ -1505,9 +1472,73 @@
   return generate_class_cast_message(objName, targetKlass->external_name());
 }
 
+char* SharedRuntime::generate_wrong_method_type_message(JavaThread* thread,
+                                                        oopDesc* required,
+                                                        oopDesc* actual) {
+  assert(EnableMethodHandles, "");
+  oop singleKlass = wrong_method_type_is_for_single_argument(thread, required);
+  if (singleKlass != NULL) {
+    const char* objName = "argument or return value";
+    if (actual != NULL) {
+      // be flexible about the junk passed in:
+      klassOop ak = (actual->is_klass()
+                     ? (klassOop)actual
+                     : actual->klass());
+      objName = Klass::cast(ak)->external_name();
+    }
+    Klass* targetKlass = Klass::cast(required->is_klass()
+                                     ? (klassOop)required
+                                     : java_lang_Class::as_klassOop(required));
+    return generate_class_cast_message(objName, targetKlass->external_name());
+  } else {
+    // %%% need to get the MethodType string, without messing around too much
+    // Get a signature from the invoke instruction
+    const char* mhName = "method handle";
+    const char* targetType = "the required signature";
+    vframeStream vfst(thread, true);
+    if (!vfst.at_end()) {
+      Bytecode_invoke* call = Bytecode_invoke_at(vfst.method(), vfst.bci());
+      methodHandle target;
+      {
+        EXCEPTION_MARK;
+        target = call->static_target(THREAD);
+        if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; }
+      }
+      if (target.not_null()
+          && target->is_method_handle_invoke()
+          && required == target->method_handle_type()) {
+        targetType = target->signature()->as_C_string();
+      }
+    }
+    klassOop kignore; int fignore;
+    methodOop actual_method = MethodHandles::decode_method(actual,
+                                                          kignore, fignore);
+    if (actual_method != NULL) {
+      if (actual_method->name() == vmSymbols::invoke_name())
+        mhName = "$";
+      else
+        mhName = actual_method->signature()->as_C_string();
+      if (mhName[0] == '$')
+        mhName = actual_method->signature()->as_C_string();
+    }
+    return generate_class_cast_message(mhName, targetType,
+                                       " cannot be called as ");
+  }
+}
+
+oop SharedRuntime::wrong_method_type_is_for_single_argument(JavaThread* thr,
+                                                            oopDesc* required) {
+  if (required == NULL)  return NULL;
+  if (required->klass() == SystemDictionary::class_klass())
+    return required;
+  if (required->is_klass())
+    return Klass::cast(klassOop(required))->java_mirror();
+  return NULL;
+}
+
+
 char* SharedRuntime::generate_class_cast_message(
-    const char* objName, const char* targetKlassName) {
-  const char* desc = " cannot be cast to ";
+    const char* objName, const char* targetKlassName, const char* desc) {
   size_t msglen = strlen(objName) + strlen(desc) + strlen(targetKlassName) + 1;
 
   char* message = NEW_RESOURCE_ARRAY(char, msglen);
@@ -1746,7 +1777,14 @@
 GrowableArray<uint64_t>* AdapterHandlerLibrary::_fingerprints = NULL;
 GrowableArray<AdapterHandlerEntry* >* AdapterHandlerLibrary::_handlers = NULL;
 const int AdapterHandlerLibrary_size = 16*K;
-u_char                   AdapterHandlerLibrary::_buffer[AdapterHandlerLibrary_size + 32];
+BufferBlob* AdapterHandlerLibrary::_buffer = NULL;
+
+BufferBlob* AdapterHandlerLibrary::buffer_blob() {
+  // Should be called only when AdapterHandlerLibrary_lock is active.
+  if (_buffer == NULL) // Initialize lazily
+      _buffer = BufferBlob::create("adapters", AdapterHandlerLibrary_size);
+  return _buffer;
+}
 
 void AdapterHandlerLibrary::initialize() {
   if (_fingerprints != NULL) return;
@@ -1782,7 +1820,9 @@
   assert(ic_miss != NULL, "must have handler");
 
   int result;
+  NOT_PRODUCT(int code_size);
   BufferBlob *B = NULL;
+  AdapterHandlerEntry* entry = NULL;
   uint64_t fingerprint;
   {
     MutexLocker mu(AdapterHandlerLibrary_lock);
@@ -1820,42 +1860,45 @@
 
     // Create I2C & C2I handlers
     ResourceMark rm;
-    // Improve alignment slightly
-    u_char *buf = (u_char*)(((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
-    CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
-    short buffer_locs[20];
-    buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
-                                           sizeof(buffer_locs)/sizeof(relocInfo));
-    MacroAssembler _masm(&buffer);
 
-    // Fill in the signature array, for the calling-convention call.
-    int total_args_passed = method->size_of_parameters(); // All args on stack
+    BufferBlob*  buf = buffer_blob(); // the temporary code buffer in CodeCache
+    if (buf != NULL) {
+      CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
+      short buffer_locs[20];
+      buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
+                                             sizeof(buffer_locs)/sizeof(relocInfo));
+      MacroAssembler _masm(&buffer);
+
+      // Fill in the signature array, for the calling-convention call.
+      int total_args_passed = method->size_of_parameters(); // All args on stack
 
-    BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
-    VMRegPair  * regs   = NEW_RESOURCE_ARRAY(VMRegPair  ,total_args_passed);
-    int i=0;
-    if( !method->is_static() )  // Pass in receiver first
-      sig_bt[i++] = T_OBJECT;
-    for( SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) {
-      sig_bt[i++] = ss.type();  // Collect remaining bits of signature
-      if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
-        sig_bt[i++] = T_VOID;   // Longs & doubles take 2 Java slots
-    }
-    assert( i==total_args_passed, "" );
+      BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
+      VMRegPair  * regs   = NEW_RESOURCE_ARRAY(VMRegPair  ,total_args_passed);
+      int i=0;
+      if( !method->is_static() )  // Pass in receiver first
+        sig_bt[i++] = T_OBJECT;
+      for( SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) {
+        sig_bt[i++] = ss.type();  // Collect remaining bits of signature
+        if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
+          sig_bt[i++] = T_VOID;   // Longs & doubles take 2 Java slots
+      }
+      assert( i==total_args_passed, "" );
 
-    // Now get the re-packed compiled-Java layout.
-    int comp_args_on_stack;
+      // Now get the re-packed compiled-Java layout.
+      int comp_args_on_stack;
 
-    // Get a description of the compiled java calling convention and the largest used (VMReg) stack slot usage
-    comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
+      // Get a description of the compiled java calling convention and the largest used (VMReg) stack slot usage
+      comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
 
-    AdapterHandlerEntry* entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
-                                                                        total_args_passed,
-                                                                        comp_args_on_stack,
-                                                                        sig_bt,
-                                                                        regs);
+      entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
+                                                     total_args_passed,
+                                                     comp_args_on_stack,
+                                                     sig_bt,
+                                                     regs);
 
-    B = BufferBlob::create(AdapterHandlerEntry::name, &buffer);
+      B = BufferBlob::create(AdapterHandlerEntry::name, &buffer);
+      NOT_PRODUCT(code_size = buffer.code_size());
+    }
     if (B == NULL) {
       // CodeCache is full, disable compilation
       // Ought to log this but compile log is only per compile thread
@@ -1882,9 +1925,9 @@
       tty->cr();
       tty->print_cr("i2c argument handler #%d for: %s %s (fingerprint = 0x%llx, %d bytes generated)",
                     _handlers->length(), (method->is_static() ? "static" : "receiver"),
-                    method->signature()->as_C_string(), fingerprint, buffer.code_size() );
+                    method->signature()->as_C_string(), fingerprint, code_size );
       tty->print_cr("c2i argument handler starts at %p",entry->get_c2i_entry());
-      Disassembler::decode(entry->get_i2c_entry(), entry->get_i2c_entry() + buffer.code_size());
+      Disassembler::decode(entry->get_i2c_entry(), entry->get_i2c_entry() + code_size);
     }
 #endif
 
@@ -1952,42 +1995,44 @@
       return nm;
     }
 
-    // Improve alignment slightly
-    u_char* buf = (u_char*)(((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
-    CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
-    // Need a few relocation entries
-    double locs_buf[20];
-    buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
-    MacroAssembler _masm(&buffer);
+    ResourceMark rm;
 
-    // Fill in the signature array, for the calling-convention call.
-    int total_args_passed = method->size_of_parameters();
+    BufferBlob*  buf = buffer_blob(); // the temporary code buffer in CodeCache
+    if (buf != NULL) {
+      CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
+      double locs_buf[20];
+      buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
+      MacroAssembler _masm(&buffer);
+
+      // Fill in the signature array, for the calling-convention call.
+      int total_args_passed = method->size_of_parameters();
 
-    BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
-    VMRegPair  * regs   = NEW_RESOURCE_ARRAY(VMRegPair  ,total_args_passed);
-    int i=0;
-    if( !method->is_static() )  // Pass in receiver first
-      sig_bt[i++] = T_OBJECT;
-    SignatureStream ss(method->signature());
-    for( ; !ss.at_return_type(); ss.next()) {
-      sig_bt[i++] = ss.type();  // Collect remaining bits of signature
-      if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
-        sig_bt[i++] = T_VOID;   // Longs & doubles take 2 Java slots
+      BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
+      VMRegPair*   regs = NEW_RESOURCE_ARRAY(VMRegPair,total_args_passed);
+      int i=0;
+      if( !method->is_static() )  // Pass in receiver first
+        sig_bt[i++] = T_OBJECT;
+      SignatureStream ss(method->signature());
+      for( ; !ss.at_return_type(); ss.next()) {
+        sig_bt[i++] = ss.type();  // Collect remaining bits of signature
+        if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
+          sig_bt[i++] = T_VOID;   // Longs & doubles take 2 Java slots
+      }
+      assert( i==total_args_passed, "" );
+      BasicType ret_type = ss.type();
+
+      // Now get the compiled-Java layout as input arguments
+      int comp_args_on_stack;
+      comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
+
+      // Generate the compiled-to-native wrapper code
+      nm = SharedRuntime::generate_native_wrapper(&_masm,
+                                                  method,
+                                                  total_args_passed,
+                                                  comp_args_on_stack,
+                                                  sig_bt,regs,
+                                                  ret_type);
     }
-    assert( i==total_args_passed, "" );
-    BasicType ret_type = ss.type();
-
-    // Now get the compiled-Java layout as input arguments
-    int comp_args_on_stack;
-    comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
-
-    // Generate the compiled-to-native wrapper code
-    nm = SharedRuntime::generate_native_wrapper(&_masm,
-                                                method,
-                                                total_args_passed,
-                                                comp_args_on_stack,
-                                                sig_bt,regs,
-                                                ret_type);
   }
 
   // Must unlock before calling set_code
@@ -2047,18 +2092,20 @@
       return nm;
     }
 
-    // Improve alignment slightly
-    u_char* buf = (u_char*)
-        (((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
-    CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
-    // Need a few relocation entries
-    double locs_buf[20];
-    buffer.insts()->initialize_shared_locs(
+    ResourceMark rm;
+
+    BufferBlob*  buf = buffer_blob(); // the temporary code buffer in CodeCache
+    if (buf != NULL) {
+      CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
+      // Need a few relocation entries
+      double locs_buf[20];
+      buffer.insts()->initialize_shared_locs(
         (relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
-    MacroAssembler _masm(&buffer);
+      MacroAssembler _masm(&buffer);
 
-    // Generate the compiled-to-native wrapper code
-    nm = SharedRuntime::generate_dtrace_nmethod(&_masm, method);
+      // Generate the compiled-to-native wrapper code
+      nm = SharedRuntime::generate_dtrace_nmethod(&_masm, method);
+    }
   }
   return nm;
 }
--- a/src/share/vm/runtime/sharedRuntime.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/sharedRuntime.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,6 +166,9 @@
   static void throw_and_post_jvmti_exception(JavaThread *thread, Handle h_exception);
   static void throw_and_post_jvmti_exception(JavaThread *thread, symbolOop name, const char *message = NULL);
 
+  // RedefineClasses() tracing support for obsolete method entry
+  static int rc_trace_method_entry(JavaThread* thread, methodOopDesc* m);
+
   // To be used as the entry point for unresolved native methods.
   static address native_method_throw_unsatisfied_link_error_entry();
 
@@ -177,9 +180,6 @@
 
   static oop retrieve_receiver( symbolHandle sig, frame caller );
 
-  static void verify_caller_frame(frame caller_frame, methodHandle callee_method) PRODUCT_RETURN;
-  static methodHandle find_callee_method_inside_interpreter(frame caller_frame, methodHandle caller_method, int bci) PRODUCT_RETURN_(return methodHandle(););
-
   static void register_finalizer(JavaThread* thread, oopDesc* obj);
 
   // dtrace notifications
@@ -212,10 +212,32 @@
   static char* generate_class_cast_message(JavaThread* thr, const char* name);
 
   /**
+   * Fill in the message for a WrongMethodTypeException
+   *
+   * @param thr the current thread
+   * @param mtype (optional) expected method type (or argument class)
+   * @param mhandle (optional) actual method handle (or argument)
+   * @return the dynamically allocated exception message
+   *
+   * BCP for the frame on top of the stack must refer to an
+   * 'invokevirtual' op for a method handle, or an 'invokedyamic' op.
+   * The caller (or one of its callers) must use a ResourceMark
+   * in order to correctly free the result.
+   */
+  static char* generate_wrong_method_type_message(JavaThread* thr,
+                                                  oopDesc* mtype = NULL,
+                                                  oopDesc* mhandle = NULL);
+
+  /** Return non-null if the mtype is a klass or Class, not a MethodType. */
+  static oop wrong_method_type_is_for_single_argument(JavaThread* thr,
+                                                      oopDesc* mtype);
+
+  /**
    * Fill in the "X cannot be cast to a Y" message for ClassCastException
    *
    * @param name the name of the class of the object attempted to be cast
    * @param klass the name of the target klass attempt
+   * @param gripe the specific kind of problem being reported
    * @return the dynamically allocated exception message (must be freed
    * by the caller using a resource mark)
    *
@@ -224,7 +246,8 @@
    * The caller (or one of it's callers) must use a ResourceMark
    * in order to correctly free the result.
    */
-  static char* generate_class_cast_message(const char* name, const char* klass);
+  static char* generate_class_cast_message(const char* name, const char* klass,
+                                           const char* gripe = " cannot be cast to ");
 
   // Resolves a call site- may patch in the destination of the call into the
   // compiled code.
@@ -534,12 +557,13 @@
 
 class AdapterHandlerLibrary: public AllStatic {
  private:
-  static u_char                   _buffer[];  // the temporary code buffer
+  static BufferBlob* _buffer; // the temporary code buffer in CodeCache
   static GrowableArray<uint64_t>* _fingerprints; // the fingerprint collection
   static GrowableArray<AdapterHandlerEntry*> * _handlers; // the corresponding handlers
   enum {
     AbstractMethodHandler = 1 // special handler for abstract methods
   };
+  static BufferBlob* buffer_blob();
   static void initialize();
   static int get_create_adapter_index(methodHandle method);
   static address get_i2c_entry( int index ) {
--- a/src/share/vm/runtime/signature.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/signature.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -266,7 +266,7 @@
 class NativeSignatureIterator: public SignatureIterator {
  private:
   methodHandle _method;
-// We need seperate JNI and Java offset values because in 64 bit mode,
+// We need separate JNI and Java offset values because in 64 bit mode,
 // the argument offsets are not in sync with the Java stack.
 // For example a long takes up 1 "C" stack entry but 2 Java stack entries.
   int          _offset;                // The java stack offset
--- a/src/share/vm/runtime/stackValue.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/stackValue.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -104,7 +104,17 @@
     }
 #endif
     case Location::oop: {
-      Handle h(*(oop *)value_addr); // Wrap a handle around the oop
+      oop val = *(oop *)value_addr;
+#ifdef _LP64
+      if (Universe::is_narrow_oop_base(val)) {
+         // Compiled code may produce decoded oop = narrow_oop_base
+         // when a narrow oop implicit null check is used.
+         // The narrow_oop_base could be NULL or be the address
+         // of the page below heap. Use NULL value for both cases.
+         val = (oop)NULL;
+      }
+#endif
+      Handle h(val); // Wrap a handle around the oop
       return new StackValue(h);
     }
     case Location::addr: {
@@ -146,8 +156,9 @@
     value.jl = ((ConstantLongValue *)sv)->value();
     return new StackValue(value.p);
 #endif
-  } else if (sv->is_object()) {
-    return new StackValue(((ObjectValue *)sv)->value());
+  } else if (sv->is_object()) { // Scalar replaced object in compiled frame
+    Handle ov = ((ObjectValue *)sv)->value();
+    return new StackValue(ov, (ov.is_null()) ? 1 : 0);
   }
 
   // Unknown ScopeValue type
--- a/src/share/vm/runtime/stackValue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/stackValue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -34,9 +34,11 @@
     _i     = value;
   }
 
-  StackValue(Handle value) {
+  StackValue(Handle value, intptr_t scalar_replaced = 0) {
     _type    = T_OBJECT;
+    _i       = scalar_replaced;
     _o       = value;
+    assert(_i == 0 || _o.is_null(), "not null object should not be marked as scalar replaced");
   }
 
   StackValue() {
@@ -56,6 +58,11 @@
     return _o;
   }
 
+  bool obj_is_scalar_replaced() const {
+    assert(type() == T_OBJECT, "type check");
+    return _i != 0;
+  }
+
   void set_obj(Handle value) {
     assert(type() == T_OBJECT, "type check");
     _o = value;
--- a/src/share/vm/runtime/synchronizer.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/synchronizer.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -424,7 +424,7 @@
 // asserts is that error message -- often something about negative array
 // indices -- is opaque.
 
-#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%X\n", tag); }
+#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @" INTPTR_FORMAT "\n", (intptr_t)tag); }
 
 void ObjectMonitor::ctAsserts() {
   CTASSERT(offset_of (ObjectMonitor, _header) == 0);
@@ -1117,10 +1117,10 @@
 
           // Optimization: if the mark->locker stack address is associated
           // with this thread we could simply set m->_owner = Self and
-          // m->OwnerIsThread = 1.  Note that a thread can inflate an object
+          // m->OwnerIsThread = 1. Note that a thread can inflate an object
           // that it has stack-locked -- as might happen in wait() -- directly
           // with CAS.  That is, we can avoid the xchg-NULL .... ST idiom.
-          m->set_owner (mark->locker());
+          m->set_owner(mark->locker());
           m->set_object(object);
           // TODO-FIXME: assert BasicLock->dhw != 0.
 
@@ -1214,10 +1214,9 @@
       BiasedLocking::revoke_at_safepoint(obj);
     }
     assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  THREAD->update_highest_lock((address)lock);
-  slow_enter (obj, lock, THREAD) ;
+ }
+
+ slow_enter (obj, lock, THREAD) ;
 }
 
 void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) {
--- a/src/share/vm/runtime/thread.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/thread.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -127,8 +127,8 @@
   debug_only(_owned_locks = NULL;)
   debug_only(_allow_allocation_count = 0;)
   NOT_PRODUCT(_allow_safepoint_count = 0;)
+  NOT_PRODUCT(_skip_gcalot = false;)
   CHECK_UNHANDLED_OOPS_ONLY(_gc_locked_out_count = 0;)
-  _highest_lock = NULL;
   _jvmti_env_iteration_count = 0;
   _vm_operation_started_count = 0;
   _vm_operation_completed_count = 0;
@@ -785,24 +785,10 @@
       // We could enter a safepoint here and thus have a gc
       InterfaceSupport::check_gc_alot();
     }
-
 #endif
 }
 #endif
 
-bool Thread::lock_is_in_stack(address adr) const {
-  assert(Thread::current() == this, "lock_is_in_stack can only be called from current thread");
-  // High limit: highest_lock is set during thread execution
-  // Low  limit: address of the local variable dummy, rounded to 4K boundary.
-  // (The rounding helps finding threads in unsafe mode, even if the particular stack
-  // frame has been popped already.  Correct as long as stacks are at least 4K long and aligned.)
-  address end = os::current_stack_pointer();
-  if (_highest_lock >= adr && adr >= end) return true;
-
-  return false;
-}
-
-
 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();
@@ -818,8 +804,7 @@
 // should be revisited, and they should be removed if possible.
 
 bool Thread::is_lock_owned(address adr) const {
-  if (lock_is_in_stack(adr) ) return true;
-  return false;
+  return (_stack_base >= adr && adr >= (_stack_base - _stack_size));
 }
 
 bool Thread::set_as_starting_thread() {
@@ -1664,7 +1649,7 @@
 }
 
 bool JavaThread::is_lock_owned(address adr) const {
-  if (lock_is_in_stack(adr)) return true;
+  if (Thread::is_lock_owned(adr)) return true;
 
   for (MonitorChunk* chunk = monitor_chunks(); chunk != NULL; chunk = chunk->next()) {
     if (chunk->contains(adr)) return true;
@@ -2443,7 +2428,7 @@
   if (thread_oop != NULL && java_lang_Thread::is_daemon(thread_oop))  st->print("daemon ");
   Thread::print_on(st);
   // print guess for valid stack memory region (assume 4K pages); helps lock debugging
-  st->print_cr("[" INTPTR_FORMAT ".." INTPTR_FORMAT "]", (intptr_t)last_Java_sp() & ~right_n_bits(12), highest_lock());
+  st->print_cr("[" INTPTR_FORMAT "]", (intptr_t)last_Java_sp() & ~right_n_bits(12));
   if (thread_oop != NULL && JDK_Version::is_gte_jdk15x_version()) {
     st->print_cr("   java.lang.Thread.State: %s", java_lang_Thread::thread_status_name(thread_oop));
   }
@@ -3007,17 +2992,19 @@
       }
 
       if (UseStringCache) {
-        // Forcibly initialize java/lang/String and mutate the private
+        // 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(vmSymbolHandles::java_lang_String(), Handle(), Handle(), CHECK_0);
-        KlassHandle k = KlassHandle(THREAD, k_o);
-        guarantee(k.not_null(), "Must find java/lang/String");
-        instanceKlassHandle ik = instanceKlassHandle(THREAD, k());
-        ik->initialize(CHECK_0);
-        fieldDescriptor fd;
-        // Possible we might not find this field; if so, don't break
-        if (ik->find_local_field(vmSymbols::stringCacheEnabled_name(), vmSymbols::bool_signature(), &fd)) {
-          k()->bool_field_put(fd.offset(), true);
+        klassOop k_o = SystemDictionary::resolve_or_null(vmSymbolHandles::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);
+          instanceKlassHandle ik = instanceKlassHandle(THREAD, k());
+          ik->initialize(CHECK_0);
+          fieldDescriptor fd;
+          // Possible we might not find this field: if so, silently don't break
+          if (ik->find_local_field(vmSymbols::stringCacheEnabled_name(), vmSymbols::bool_signature(), &fd)) {
+            k()->bool_field_put(fd.offset(), true);
+          }
         }
       }
     }
@@ -3731,25 +3718,13 @@
   // heavyweight monitors, then the owner is the stack address of the
   // Lock Word in the owning Java thread's stack.
   //
-  // We can't use Thread::is_lock_owned() or Thread::lock_is_in_stack() because
-  // those routines rely on the "current" stack pointer. That would be our
-  // stack pointer which is not relevant to the question. Instead we use the
-  // highest lock ever entered by the thread and find the thread that is
-  // higher than and closest to our target stack address.
-  //
-  address    least_diff = 0;
-  bool       least_diff_initialized = false;
   JavaThread* the_owner = NULL;
   {
     MutexLockerEx ml(doLock ? Threads_lock : NULL);
     ALL_JAVA_THREADS(q) {
-      address addr = q->highest_lock();
-      if (addr == NULL || addr < owner) continue;  // thread has entered no monitors or is too low
-      address diff = (address)(addr - owner);
-      if (!least_diff_initialized || diff < least_diff) {
-        least_diff_initialized = true;
-        least_diff = diff;
+      if (q->is_lock_owned(owner)) {
         the_owner = q;
+        break;
       }
     }
   }
--- a/src/share/vm/runtime/thread.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/thread.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -191,6 +191,9 @@
   NOT_PRODUCT(int _allow_safepoint_count;)       // If 0, thread allow a safepoint to happen
   debug_only (int _allow_allocation_count;)      // If 0, the thread is allowed to allocate oops.
 
+  // Used by SkipGCALot class.
+  NOT_PRODUCT(bool _skip_gcalot;)                // Should we elide gc-a-lot?
+
   // Record when GC is locked out via the GC_locker mechanism
   CHECK_UNHANDLED_OOPS_ONLY(int _gc_locked_out_count;)
 
@@ -200,14 +203,6 @@
   friend class ThreadLocalStorage;
   friend class GC_locker;
 
-  // In order for all threads to be able to use fast locking, we need to know the highest stack
-  // address of where a lock is on the stack (stacks normally grow towards lower addresses). This
-  // variable is initially set to NULL, indicating no locks are used by the thread. During the thread's
-  // execution, it will be set whenever locking can happen, i.e., when we call out to Java code or use
-  // an ObjectLocker. The value is never decreased, hence, it will over the lifetime of a thread
-  // approximate the real stackbase.
-  address _highest_lock;                         // Highest stack address where a JavaLock exist
-
   ThreadLocalAllocBuffer _tlab;                  // Thread-local eden
 
   int   _vm_operation_started_count;             // VM_Operation support
@@ -316,6 +311,11 @@
   bool is_gc_locked_out() { return _gc_locked_out_count > 0; }
 #endif // CHECK_UNHANDLED_OOPS
 
+#ifndef PRODUCT
+  bool skip_gcalot()           { return _skip_gcalot; }
+  void set_skip_gcalot(bool v) { _skip_gcalot = v;    }
+#endif
+
  public:
   // Installs a pending exception to be inserted later
   static void send_async_exception(oop thread_oop, oop java_throwable);
@@ -400,18 +400,14 @@
   // Sweeper support
   void nmethods_do();
 
-  // Fast-locking support
-  address highest_lock() const                   { return _highest_lock; }
-  void update_highest_lock(address base)         { if (base > _highest_lock) _highest_lock = base; }
-
   // Tells if adr belong to this thread. This is used
   // for checking if a lock is owned by the running thread.
-  // Warning: the method can only be used on the running thread
-  // Fast lock support uses these methods
-  virtual bool lock_is_in_stack(address adr) const;
+
+  // Used by fast lock support
   virtual bool is_lock_owned(address adr) const;
 
   // Check if address is in the stack of the thread (not just for locks).
+  // Warning: the method can only be used on the running thread
   bool is_in_stack(address adr) const;
 
   // Sets this thread as starting thread. Returns failure if thread
@@ -1345,6 +1341,13 @@
  public:
   // Thread local information maintained by JVMTI.
   void set_jvmti_thread_state(JvmtiThreadState *value)                           { _jvmti_thread_state = value; }
+  // A JvmtiThreadState is lazily allocated. This jvmti_thread_state()
+  // getter is used to get this JavaThread's JvmtiThreadState if it has
+  // one which means NULL can be returned. JvmtiThreadState::state_for()
+  // is used to get the specified JavaThread's JvmtiThreadState if it has
+  // one or it allocates a new JvmtiThreadState for the JavaThread and
+  // returns it. JvmtiThreadState::state_for() will return NULL only if
+  // the specified JavaThread is exiting.
   JvmtiThreadState *jvmti_thread_state() const                                   { return _jvmti_thread_state; }
   static ByteSize jvmti_thread_state_offset()                                    { return byte_offset_of(JavaThread, _jvmti_thread_state); }
   void set_jvmti_get_loaded_classes_closure(JvmtiGetLoadedClassesClosure* value) { _jvmti_get_loaded_classes_closure = value; }
--- a/src/share/vm/runtime/threadCritical.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/threadCritical.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -29,7 +29,7 @@
 //
 // Due to race conditions during vm exit, some of the os level
 // synchronization primitives may not be deallocated at exit. It
-// is a good plan to implement the platform dependant sections of
+// is a good plan to implement the platform dependent sections of
 // code with resources that are recoverable during process
 // cleanup by the os. Calling the initialize method before use
 // is also problematic, it is best to use preinitialized primitives
--- a/src/share/vm/runtime/vframe.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vframe.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -106,6 +106,7 @@
 
   for (int index = (mons->length()-1); index >= 0; index--) {
     MonitorInfo* monitor = mons->at(index);
+    if (monitor->eliminated() && is_compiled_frame()) continue; // skip eliminated monitor
     oop obj = monitor->owner();
     if (obj == NULL) continue; // skip unowned monitor
     //
@@ -162,6 +163,18 @@
     bool found_first_monitor = false;
     for (int index = (mons->length()-1); index >= 0; index--) {
       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());
+          st->print("\t- eliminated <owner is scalar replaced> (a %s)", k->external_name());
+        } else {
+          oop obj = monitor->owner();
+          if (obj != NULL) {
+            print_locked_object_class_name(st, obj, "eliminated");
+          }
+        }
+        continue;
+      }
       if (monitor->owner() != NULL) {
 
         // First, assume we have the monitor locked. If we haven't found an
@@ -171,11 +184,11 @@
 
         const char *lock_state = "locked"; // assume we have the monitor locked
         if (!found_first_monitor && frame_count == 0) {
-         markOop mark = monitor->owner()->mark();
-         if (mark->has_monitor() &&
-             mark->monitor() == thread()->current_pending_monitor()) {
+          markOop mark = monitor->owner()->mark();
+          if (mark->has_monitor() &&
+              mark->monitor() == thread()->current_pending_monitor()) {
             lock_state = "waiting to lock";
-         }
+          }
         }
 
         found_first_monitor = true;
@@ -206,7 +219,7 @@
   for (BasicObjectLock* current = (fr().previous_monitor_in_interpreter_frame(fr().interpreter_frame_monitor_begin()));
        current >= fr().interpreter_frame_monitor_end();
        current = fr().previous_monitor_in_interpreter_frame(current)) {
-    result->push(new MonitorInfo(current->obj(), current->lock(), false));
+    result->push(new MonitorInfo(current->obj(), current->lock(), false, false));
   }
   return result;
 }
@@ -531,8 +544,18 @@
   tty->print_cr("\tmonitor list:");
   for (int index = (list->length()-1); index >= 0; index--) {
     MonitorInfo* monitor = list->at(index);
-    tty->print("\t  obj\t"); monitor->owner()->print_value();
-    tty->print("(" INTPTR_FORMAT ")", (address)monitor->owner());
+    tty->print("\t  obj\t");
+    if (monitor->owner_is_scalar_replaced()) {
+      Klass* k = Klass::cast(monitor->owner_klass());
+      tty->print("( is scalar replaced %s)", k->external_name());
+    } else if (monitor->owner() == NULL) {
+      tty->print("( null )");
+    } else {
+      monitor->owner()->print_value();
+      tty->print("(" INTPTR_FORMAT ")", (address)monitor->owner());
+    }
+    if (monitor->eliminated() && is_compiled_frame())
+      tty->print(" ( lock is eliminated )");
     tty->cr();
     tty->print("\t  ");
     monitor->lock()->print_on(tty);
@@ -559,7 +582,8 @@
   }
   // Check frame size and print warning if it looks suspiciously large
   if (fr().sp() != NULL) {
-    uint size = fr().frame_size();
+    RegisterMap map = *register_map();
+    uint size = fr().frame_size(&map);
 #ifdef _LP64
     if (size > 8*K) warning("SUSPICIOUSLY LARGE FRAME (%d)", size);
 #else
--- a/src/share/vm/runtime/vframe.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vframe.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -230,18 +230,36 @@
  private:
   oop        _owner; // the object owning the monitor
   BasicLock* _lock;
+  oop        _owner_klass; // klass if owner was scalar replaced
   bool       _eliminated;
+  bool       _owner_is_scalar_replaced;
  public:
   // Constructor
-  MonitorInfo(oop owner, BasicLock* lock, bool eliminated) {
-    _owner = owner;
+  MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced) {
+    if (!owner_is_scalar_replaced) {
+      _owner = owner;
+      _owner_klass = NULL;
+    } else {
+      assert(eliminated, "monitor should be eliminated for scalar replaced object");
+      _owner = NULL;
+      _owner_klass = owner;
+    }
     _lock  = lock;
     _eliminated = eliminated;
+    _owner_is_scalar_replaced = owner_is_scalar_replaced;
   }
   // Accessors
-  oop        owner() const { return _owner; }
+  oop        owner() const {
+    assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
+    return _owner;
+  }
+  klassOop   owner_klass() const {
+    assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
+    return (klassOop)_owner_klass;
+  }
   BasicLock* lock()  const { return _lock;  }
   bool eliminated()  const { return _eliminated; }
+  bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
 };
 
 class vframeStreamCommon : StackObj {
--- a/src/share/vm/runtime/vframeArray.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vframeArray.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -61,6 +61,7 @@
     // Migrate the BasicLocks from the stack to the monitor chunk
     for (index = 0; index < list->length(); index++) {
       MonitorInfo* monitor = list->at(index);
+      assert(!monitor->owner_is_scalar_replaced(), "object should be reallocated already");
       assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased");
       BasicObjectLock* dest = _monitors->at(index);
       dest->set_obj(monitor->owner());
@@ -89,6 +90,7 @@
     StackValue* value = locs->at(index);
     switch(value->type()) {
       case T_OBJECT:
+        assert(!value->obj_is_scalar_replaced(), "object should be reallocated already");
         // preserve object type
         _locals->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT ));
         break;
@@ -113,6 +115,7 @@
     StackValue* value = exprs->at(index);
     switch(value->type()) {
       case T_OBJECT:
+        assert(!value->obj_is_scalar_replaced(), "object should be reallocated already");
         // preserve object type
         _expressions->add( new StackValue((intptr_t) (value->get_obj()()), T_OBJECT ));
         break;
--- a/src/share/vm/runtime/vframe_hp.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vframe_hp.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -190,7 +190,7 @@
     // Casting away const
     frame& fr = (frame&) _fr;
     MonitorInfo* info = new MonitorInfo(fr.compiled_synchronized_native_monitor_owner(nm),
-                                        fr.compiled_synchronized_native_monitor(nm), false);
+                                        fr.compiled_synchronized_native_monitor(nm), false, false);
     monitors->push(info);
     return monitors;
   }
@@ -201,8 +201,20 @@
   GrowableArray<MonitorInfo*>* result = new GrowableArray<MonitorInfo*>(monitors->length());
   for (int index = 0; index < monitors->length(); index++) {
     MonitorValue* mv = monitors->at(index);
-    StackValue *owner_sv = create_stack_value(mv->owner()); // it is an oop
-    result->push(new MonitorInfo(owner_sv->get_obj()(), resolve_monitor_lock(mv->basic_lock()), mv->eliminated()));
+    ScopeValue*   ov = mv->owner();
+    StackValue *owner_sv = create_stack_value(ov); // it is an oop
+    if (ov->is_object() && owner_sv->obj_is_scalar_replaced()) { // The owner object was scalar replaced
+      assert(mv->eliminated(), "monitor should be eliminated for scalar replaced object");
+      // 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()),
+                                   mv->eliminated(), true));
+    } else {
+      result->push(new MonitorInfo(owner_sv->get_obj()(), resolve_monitor_lock(mv->basic_lock()),
+                                   mv->eliminated(), false));
+    }
   }
   return result;
 }
--- a/src/share/vm/runtime/virtualspace.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/virtualspace.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -28,7 +28,7 @@
 
 // ReservedSpace
 ReservedSpace::ReservedSpace(size_t size) {
-  initialize(size, 0, false, NULL, 0);
+  initialize(size, 0, false, NULL, 0, false);
 }
 
 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
@@ -36,7 +36,13 @@
                              char* requested_address,
                              const size_t noaccess_prefix) {
   initialize(size+noaccess_prefix, alignment, large, requested_address,
-             noaccess_prefix);
+             noaccess_prefix, false);
+}
+
+ReservedSpace::ReservedSpace(size_t size, size_t alignment,
+                             bool large,
+                             bool executable) {
+  initialize(size, alignment, large, NULL, 0, executable);
 }
 
 char *
@@ -109,6 +115,7 @@
                              const size_t prefix_align,
                              const size_t suffix_size,
                              const size_t suffix_align,
+                             char* requested_address,
                              const size_t noaccess_prefix)
 {
   assert(prefix_size != 0, "sanity");
@@ -131,7 +138,8 @@
   const bool try_reserve_special = UseLargePages &&
     prefix_align == os::large_page_size();
   if (!os::can_commit_large_page_memory() && try_reserve_special) {
-    initialize(size, prefix_align, true, NULL, noaccess_prefix);
+    initialize(size, prefix_align, true, requested_address, noaccess_prefix,
+               false);
     return;
   }
 
@@ -140,13 +148,20 @@
   _alignment = 0;
   _special = false;
   _noaccess_prefix = 0;
+  _executable = false;
 
   // 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");
 
   // Optimistically try to reserve the exact size needed.
-  char* addr = os::reserve_memory(size, NULL, prefix_align);
+  char* addr;
+  if (requested_address != 0) {
+    addr = os::attempt_reserve_memory_at(size,
+                                         requested_address-noaccess_prefix);
+  } else {
+    addr = os::reserve_memory(size, NULL, prefix_align);
+  }
   if (addr == NULL) return;
 
   // Check whether the result has the needed alignment (unlikely unless
@@ -182,7 +197,8 @@
 
 void ReservedSpace::initialize(size_t size, size_t alignment, bool large,
                                char* requested_address,
-                               const size_t noaccess_prefix) {
+                               const size_t noaccess_prefix,
+                               bool executable) {
   const size_t granularity = os::vm_allocation_granularity();
   assert((size & granularity - 1) == 0,
          "size not aligned to os::vm_allocation_granularity()");
@@ -194,6 +210,7 @@
   _base = NULL;
   _size = 0;
   _special = false;
+  _executable = executable;
   _alignment = 0;
   _noaccess_prefix = 0;
   if (size == 0) {
@@ -206,12 +223,8 @@
   char* base = NULL;
 
   if (special) {
-    // It's not hard to implement reserve_memory_special() such that it can
-    // allocate at fixed address, but there seems no use of this feature
-    // for now, so it's not implemented.
-    assert(requested_address == NULL, "not implemented");
 
-    base = os::reserve_memory_special(size);
+    base = os::reserve_memory_special(size, requested_address, executable);
 
     if (base != NULL) {
       // Check alignment constraints
@@ -281,7 +294,7 @@
 
 
 ReservedSpace::ReservedSpace(char* base, size_t size, size_t alignment,
-                             bool special) {
+                             bool special, bool executable) {
   assert((size % os::vm_allocation_granularity()) == 0,
          "size not allocation aligned");
   _base = base;
@@ -289,6 +302,7 @@
   _alignment = alignment;
   _noaccess_prefix = 0;
   _special = special;
+  _executable = executable;
 }
 
 
@@ -296,9 +310,10 @@
                                         bool split, bool realloc) {
   assert(partition_size <= size(), "partition failed");
   if (split) {
-    os::split_reserved_memory(_base, _size, partition_size, realloc);
+    os::split_reserved_memory(base(), size(), partition_size, realloc);
   }
-  ReservedSpace result(base(), partition_size, alignment, special());
+  ReservedSpace result(base(), partition_size, alignment, special(),
+                       executable());
   return result;
 }
 
@@ -307,7 +322,7 @@
 ReservedSpace::last_part(size_t partition_size, size_t alignment) {
   assert(partition_size <= size(), "partition failed");
   ReservedSpace result(base() + partition_size, size() - partition_size,
-                       alignment, special());
+                       alignment, special(), executable());
   return result;
 }
 
@@ -345,6 +360,7 @@
     _size = 0;
     _noaccess_prefix = 0;
     _special = false;
+    _executable = false;
   }
 }
 
@@ -372,7 +388,8 @@
                                      bool large, char* requested_address) :
   ReservedSpace(size, alignment, large,
                 requested_address,
-                UseCompressedOops && UseImplicitNullCheckForNarrowOop ?
+                (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
+                 Universe::narrow_oop_use_implicit_null_checks()) ?
                   lcm(os::vm_page_size(), alignment) : 0) {
   // Only reserved space for the java heap should have a noaccess_prefix
   // if using compressed oops.
@@ -382,13 +399,24 @@
 ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
                                      const size_t prefix_align,
                                      const size_t suffix_size,
-                                     const size_t suffix_align) :
+                                     const size_t suffix_align,
+                                     char* requested_address) :
   ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align,
-                UseCompressedOops && UseImplicitNullCheckForNarrowOop ?
+                requested_address,
+                (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
+                 Universe::narrow_oop_use_implicit_null_checks()) ?
                   lcm(os::vm_page_size(), prefix_align) : 0) {
   protect_noaccess_prefix(prefix_size+suffix_size);
 }
 
+// Reserve space for code segment.  Same as Java heap only we mark this as
+// executable.
+ReservedCodeSpace::ReservedCodeSpace(size_t r_size,
+                                     size_t rs_align,
+                                     bool large) :
+  ReservedSpace(r_size, rs_align, large, /*executable*/ true) {
+}
+
 // VirtualSpace
 
 VirtualSpace::VirtualSpace() {
@@ -406,6 +434,7 @@
   _middle_alignment       = 0;
   _upper_alignment        = 0;
   _special                = false;
+  _executable             = false;
 }
 
 
@@ -419,6 +448,7 @@
   _high = low();
 
   _special = rs.special();
+  _executable = rs.executable();
 
   // When a VirtualSpace begins life at a large size, make all future expansion
   // and shrinking occur aligned to a granularity of large pages.  This avoids
@@ -476,6 +506,7 @@
   _middle_alignment       = 0;
   _upper_alignment        = 0;
   _special                = false;
+  _executable             = false;
 }
 
 
@@ -585,7 +616,7 @@
     assert(low_boundary() <= lower_high() &&
            lower_high() + lower_needs <= lower_high_boundary(),
            "must not expand beyond region");
-    if (!os::commit_memory(lower_high(), lower_needs)) {
+    if (!os::commit_memory(lower_high(), lower_needs, _executable)) {
       debug_only(warning("os::commit_memory failed"));
       return false;
     } else {
@@ -596,7 +627,8 @@
     assert(lower_high_boundary() <= middle_high() &&
            middle_high() + middle_needs <= middle_high_boundary(),
            "must not expand beyond region");
-    if (!os::commit_memory(middle_high(), middle_needs, middle_alignment())) {
+    if (!os::commit_memory(middle_high(), middle_needs, middle_alignment(),
+                           _executable)) {
       debug_only(warning("os::commit_memory failed"));
       return false;
     }
@@ -606,7 +638,7 @@
     assert(middle_high_boundary() <= upper_high() &&
            upper_high() + upper_needs <= upper_high_boundary(),
            "must not expand beyond region");
-    if (!os::commit_memory(upper_high(), upper_needs)) {
+    if (!os::commit_memory(upper_high(), upper_needs, _executable)) {
       debug_only(warning("os::commit_memory failed"));
       return false;
     } else {
--- a/src/share/vm/runtime/virtualspace.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/virtualspace.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -32,12 +32,15 @@
   size_t _noaccess_prefix;
   size_t _alignment;
   bool   _special;
+  bool   _executable;
 
   // ReservedSpace
-  ReservedSpace(char* base, size_t size, size_t alignment, bool special);
+  ReservedSpace(char* base, size_t size, size_t alignment, bool special,
+                bool executable);
   void initialize(size_t size, size_t alignment, bool large,
                   char* requested_address,
-                  const size_t noaccess_prefix);
+                  const size_t noaccess_prefix,
+                  bool executable);
 
   // Release parts of an already-reserved memory region [addr, addr + len) to
   // get a new region that has "compound alignment."  Return the start of the
@@ -73,17 +76,18 @@
                 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,
-                const size_t noaccess_prefix);
+                char* requested_address,
+                const size_t noaccess_prefix = 0);
+  ReservedSpace(size_t size, size_t alignment, bool large, bool executable);
 
   // Accessors
-  char*  base()      const { return _base;      }
-  size_t size()      const { return _size;      }
-  size_t alignment() const { return _alignment; }
-  bool   special()   const { return _special;   }
-
-  size_t noaccess_prefix()   const { return _noaccess_prefix;   }
-
-  bool is_reserved() const { return _base != NULL; }
+  char*  base()            const { return _base;      }
+  size_t size()            const { return _size;      }
+  size_t alignment()       const { return _alignment; }
+  bool   special()         const { return _special;   }
+  bool   executable()      const { return _executable;   }
+  size_t noaccess_prefix() const { return _noaccess_prefix;   }
+  bool is_reserved()       const { return _base != NULL; }
   void release();
 
   // Splitting
@@ -121,7 +125,15 @@
   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);
+                    const size_t suffix_size, const size_t suffix_align,
+                    char* requested_address);
+};
+
+// Class encapsulating behavior specific memory space for Code
+class ReservedCodeSpace : public ReservedSpace {
+ public:
+  // Constructor
+  ReservedCodeSpace(size_t r_size, size_t rs_align, bool large);
 };
 
 // VirtualSpace is data structure for committing a previously reserved address range in smaller chunks.
@@ -141,6 +153,9 @@
   // os::commit_memory() or os::uncommit_memory().
   bool _special;
 
+  // Need to know if commit should be executable.
+  bool   _executable;
+
   // MPSS Support
   // Each virtualspace region has a lower, middle, and upper region.
   // Each region has an end boundary and a high pointer which is the
--- a/src/share/vm/runtime/vmStructs.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vmStructs.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -263,7 +263,9 @@
      static_field(Universe,                    _bootstrapping,                                bool)                                  \
      static_field(Universe,                    _fully_initialized,                            bool)                                  \
      static_field(Universe,                    _verify_count,                                 int)                                   \
-     static_field(Universe,                    _heap_base,                                    address)                                   \
+     static_field(Universe,                    _narrow_oop._base,                             address)                               \
+     static_field(Universe,                    _narrow_oop._shift,                            int)                                   \
+     static_field(Universe,                    _narrow_oop._use_implicit_null_checks,         bool)                                  \
                                                                                                                                      \
   /**********************************************************************************/                                               \
   /* Generation and Space hierarchies                                               */                                               \
@@ -654,7 +656,6 @@
                                                                                                                                      \
    volatile_nonstatic_field(Thread,            _suspend_flags,                                uint32_t)                              \
   nonstatic_field(Thread,                      _active_handles,                               JNIHandleBlock*)                       \
-  nonstatic_field(Thread,                      _highest_lock,                                 address)                               \
   nonstatic_field(Thread,                      _tlab,                                         ThreadLocalAllocBuffer)                \
   nonstatic_field(Thread,                      _current_pending_monitor,                      ObjectMonitor*)                        \
   nonstatic_field(Thread,                      _current_pending_monitor_is_from_java,         bool)                                  \
--- a/src/share/vm/runtime/vmThread.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vmThread.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -531,6 +531,7 @@
   Thread* t = Thread::current();
 
   if (!t->is_VM_thread()) {
+    SkipGCALot sgcalot(t);    // avoid re-entrant attempts to gc-a-lot
     // JavaThread or WatcherThread
     t->check_for_valid_safepoint_state(true);
 
--- a/src/share/vm/runtime/vm_operations.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vm_operations.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -59,7 +59,6 @@
   template(G1CollectFull)                         \
   template(G1CollectForAllocation)                \
   template(G1IncCollectionPause)                  \
-  template(G1PopRegionCollectionPause)            \
   template(EnableBiasedLocking)                   \
   template(RevokeBias)                            \
   template(BulkRevokeBias)                        \
--- a/src/share/vm/runtime/vm_version.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/runtime/vm_version.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -163,9 +163,11 @@
       #elif _MSC_VER == 1200
         #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0"
       #elif _MSC_VER == 1310
-        #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1"
+        #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1 (VS2003)"
       #elif _MSC_VER == 1400
-        #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0"
+        #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0 (VS2005)"
+      #elif _MSC_VER == 1500
+        #define HOTSPOT_BUILD_COMPILER "MS VC++ 9.0 (VS2008)"
       #else
         #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER)
       #endif
--- a/src/share/vm/services/attachListener.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/attachListener.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -194,7 +194,7 @@
     }
     live_objects_only = strcmp(arg0, "-live") == 0;
   }
-  VM_GC_HeapInspection heapop(out, live_objects_only /* request gc */);
+  VM_GC_HeapInspection heapop(out, live_objects_only /* request full gc */, true /* need_prologue */);
   VMThread::execute(&heapop);
   return JNI_OK;
 }
--- a/src/share/vm/services/heapDumper.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/heapDumper.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -347,7 +347,6 @@
   INITIAL_CLASS_COUNT = 200
 };
 
-
 // Supports I/O operations on a dump file
 
 class DumpWriter : public StackObj {
@@ -1303,7 +1302,9 @@
 // The VM operation that performs the heap dump
 class VM_HeapDumper : public VM_GC_Operation {
  private:
-  DumpWriter* _writer;
+  static VM_HeapDumper* _global_dumper;
+  static DumpWriter*    _global_writer;
+  DumpWriter*           _local_writer;
   bool _gc_before_heap_dump;
   bool _is_segmented_dump;
   jlong _dump_start;
@@ -1311,8 +1312,20 @@
   ThreadStackTrace** _stack_traces;
   int _num_threads;
 
-  // accessors
-  DumpWriter* writer() const                    { return _writer; }
+  // accessors and setters
+  static VM_HeapDumper* dumper()         {  assert(_global_dumper != NULL, "Error"); return _global_dumper; }
+  static DumpWriter* writer()            {  assert(_global_writer != NULL, "Error"); return _global_writer; }
+  void set_global_dumper() {
+    assert(_global_dumper == NULL, "Error");
+    _global_dumper = this;
+  }
+  void set_global_writer() {
+    assert(_global_writer == NULL, "Error");
+    _global_writer = _local_writer;
+  }
+  void clear_global_dumper() { _global_dumper = NULL; }
+  void clear_global_writer() { _global_writer = NULL; }
+
   bool is_segmented_dump() const                { return _is_segmented_dump; }
   void set_segmented_dump()                     { _is_segmented_dump = true; }
   jlong dump_start() const                      { return _dump_start; }
@@ -1357,7 +1370,7 @@
     VM_GC_Operation(0 /* total collections,      dummy, ignored */,
                     0 /* total full collections, dummy, ignored */,
                     gc_before_heap_dump) {
-    _writer = writer;
+    _local_writer = writer;
     _gc_before_heap_dump = gc_before_heap_dump;
     _is_segmented_dump = false;
     _dump_start = (jlong)-1;
@@ -1381,6 +1394,9 @@
   void doit();
 };
 
+VM_HeapDumper* VM_HeapDumper::_global_dumper = NULL;
+DumpWriter*    VM_HeapDumper::_global_writer = NULL;
+
 bool VM_HeapDumper::skip_operation() const {
   return false;
 }
@@ -1479,31 +1495,28 @@
 void VM_HeapDumper::do_load_class(klassOop k) {
   static u4 class_serial_num = 0;
 
-  VM_HeapDumper* dumper = ((VM_HeapDumper*)VMThread::vm_operation());
-  DumpWriter* writer = dumper->writer();
-
   // len of HPROF_LOAD_CLASS record
   u4 remaining = 2*oopSize + 2*sizeof(u4);
 
   // write a HPROF_LOAD_CLASS for the class and each array class
   do {
-    DumperSupport::write_header(writer, HPROF_LOAD_CLASS, remaining);
+    DumperSupport::write_header(writer(), HPROF_LOAD_CLASS, remaining);
 
     // class serial number is just a number
-    writer->write_u4(++class_serial_num);
+    writer()->write_u4(++class_serial_num);
 
     // class ID
     Klass* klass = Klass::cast(k);
-    writer->write_classID(klass);
+    writer()->write_classID(klass);
 
     // add the klassOop and class serial number pair
-    dumper->add_class_serial_number(klass, class_serial_num);
+    dumper()->add_class_serial_number(klass, class_serial_num);
 
-    writer->write_u4(STACK_TRACE_ID);
+    writer()->write_u4(STACK_TRACE_ID);
 
     // class name ID
     symbolOop name = klass->name();
-    writer->write_objectID(name);
+    writer()->write_objectID(name);
 
     // write a LOAD_CLASS record for the array type (if it exists)
     k = klass->array_klass_or_null();
@@ -1512,17 +1525,13 @@
 
 // writes a HPROF_GC_CLASS_DUMP record for the given class
 void VM_HeapDumper::do_class_dump(klassOop k) {
-  VM_HeapDumper* dumper = ((VM_HeapDumper*)VMThread::vm_operation());
-  DumpWriter* writer = dumper->writer();
-  DumperSupport::dump_class_and_array_classes(writer, 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) {
-  VM_HeapDumper* dumper = ((VM_HeapDumper*)VMThread::vm_operation());
-  DumpWriter* writer = dumper->writer();
-  DumperSupport::dump_basic_type_array_class(writer, k);
+  DumperSupport::dump_basic_type_array_class(writer(), k);
 }
 
 // Walk the stack of the given thread.
@@ -1658,6 +1667,11 @@
     ch->ensure_parsability(false);
   }
 
+  // At this point we should be the only dumper active, so
+  // the following should be safe.
+  set_global_dumper();
+  set_global_writer();
+
   // Write the file header - use 1.0.2 for large heaps, otherwise 1.0.1
   size_t used = ch->used();
   const char* header;
@@ -1667,6 +1681,7 @@
   } else {
     header = "JAVA PROFILE 1.0.1";
   }
+
   // header is few bytes long - no chance to overflow int
   writer()->write_raw((void*)header, (int)strlen(header));
   writer()->write_u1(0); // terminator
@@ -1700,7 +1715,7 @@
   // The HPROF_GC_CLASS_DUMP and HPROF_GC_INSTANCE_DUMP are the vast bulk
   // of the heap dump.
   HeapObjectDumper obj_dumper(this, writer());
-  Universe::heap()->object_iterate(&obj_dumper);
+  Universe::heap()->safe_object_iterate(&obj_dumper);
 
   // HPROF_GC_ROOT_THREAD_OBJ + frames + jni locals
   do_threads();
@@ -1723,6 +1738,10 @@
   // 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.
   end_of_dump();
+
+  // Now we clear the global variables, so that a future dumper might run.
+  clear_global_dumper();
+  clear_global_writer();
 }
 
 void VM_HeapDumper::dump_stack_traces() {
@@ -1790,7 +1809,12 @@
 
   // generate the dump
   VM_HeapDumper dumper(&writer, _gc_before_heap_dump);
-  VMThread::execute(&dumper);
+  if (Thread::current()->is_VM_thread()) {
+    assert(SafepointSynchronize::is_at_safepoint(), "Expected to be called at a safepoint");
+    dumper.doit();
+  } else {
+    VMThread::execute(&dumper);
+  }
 
   // close dump file and record any error that the writer may have encountered
   writer.close();
@@ -1845,49 +1869,68 @@
   }
 }
 
-
-// Called by error reporting
+// Called by error reporting by a single Java thread outside of a JVM safepoint,
+// or by heap dumping by the VM thread during a (GC) safepoint. Thus, these various
+// callers are strictly serialized and guaranteed not to interfere below. For more
+// general use, however, this method will need modification to prevent
+// inteference when updating the static variables base_path and dump_file_seq below.
 void HeapDumper::dump_heap() {
-  static char path[JVM_MAXPATHLEN];
+  static char base_path[JVM_MAXPATHLEN] = {'\0'};
+  static uint dump_file_seq = 0;
+  char   my_path[JVM_MAXPATHLEN] = {'\0'};
 
   // The dump file defaults to java_pid<pid>.hprof in the current working
   // directory. HeapDumpPath=<file> can be used to specify an alternative
   // dump file name or a directory where dump file is created.
-  bool use_default_filename = true;
-  if (HeapDumpPath == NULL || HeapDumpPath[0] == '\0') {
-    path[0] = '\0'; // HeapDumpPath=<file> not specified
-  } else {
-    assert(strlen(HeapDumpPath) < sizeof(path), "HeapDumpPath too long");
-    strcpy(path, HeapDumpPath);
-    // check if the path is a directory (must exist)
-    DIR* dir = os::opendir(path);
-    if (dir == NULL) {
-      use_default_filename = false;
+  if (dump_file_seq == 0) { // first time in, we initialize base_path
+    bool use_default_filename = true;
+    if (HeapDumpPath == NULL || HeapDumpPath[0] == '\0') {
+      // HeapDumpPath=<file> not specified
     } else {
-      // HeapDumpPath specified a directory. We append a file separator
-      // (if needed).
-      os::closedir(dir);
-      size_t fs_len = strlen(os::file_separator());
-      if (strlen(path) >= fs_len) {
-        char* end = path;
-        end += (strlen(path) - fs_len);
-        if (strcmp(end, os::file_separator()) != 0) {
-          assert(strlen(path) + strlen(os::file_separator()) < sizeof(path),
-            "HeapDumpPath too long");
-          strcat(path, os::file_separator());
+      assert(strlen(HeapDumpPath) < sizeof(base_path), "HeapDumpPath too long");
+      strcpy(base_path, HeapDumpPath);
+      // check if the path is a directory (must exist)
+      DIR* dir = os::opendir(base_path);
+      if (dir == NULL) {
+        use_default_filename = false;
+      } else {
+        // HeapDumpPath specified a directory. We append a file separator
+        // (if needed).
+        os::closedir(dir);
+        size_t fs_len = strlen(os::file_separator());
+        if (strlen(base_path) >= fs_len) {
+          char* end = base_path;
+          end += (strlen(base_path) - fs_len);
+          if (strcmp(end, os::file_separator()) != 0) {
+            assert(strlen(base_path) + strlen(os::file_separator()) < sizeof(base_path),
+              "HeapDumpPath too long");
+            strcat(base_path, os::file_separator());
+          }
         }
       }
     }
+    // If HeapDumpPath wasn't a file name then we append the default name
+    if (use_default_filename) {
+      char fn[32];
+      sprintf(fn, "java_pid%d", os::current_process_id());
+      assert(strlen(base_path) + strlen(fn) < sizeof(base_path), "HeapDumpPath too long");
+      strcat(base_path, fn);
+    }
+    assert(strlen(base_path) < sizeof(my_path), "Buffer too small");
+    strcpy(my_path, base_path);
+  } else {
+    // Append a sequence number id for dumps following the first
+    char fn[33];
+    sprintf(fn, ".%d", dump_file_seq);
+    assert(strlen(base_path) + strlen(fn) < sizeof(my_path), "HeapDumpPath too long");
+    strcpy(my_path, base_path);
+    strcat(my_path, fn);
   }
-  // If HeapDumpPath wasn't a file name then we append the default name
-  if (use_default_filename) {
-    char fn[32];
-    sprintf(fn, "java_pid%d.hprof", os::current_process_id());
-    assert(strlen(path) + strlen(fn) < sizeof(path), "HeapDumpPath too long");
-    strcat(path, fn);
-  }
+  dump_file_seq++;   // increment seq number for next time we dump
+  assert(strlen(".hprof") + strlen(my_path) < sizeof(my_path), "HeapDumpPath too long");
+  strcat(my_path, ".hprof");
 
   HeapDumper dumper(false /* no GC before heap dump */,
                     true  /* send to tty */);
-  dumper.dump(path);
+  dumper.dump(my_path);
 }
--- a/src/share/vm/services/heapDumper.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/heapDumper.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -53,7 +53,7 @@
 
  public:
   HeapDumper(bool gc_before_heap_dump) :
-    _gc_before_heap_dump(gc_before_heap_dump), _error(NULL), _print_to_tty(false)  { }
+    _gc_before_heap_dump(gc_before_heap_dump), _error(NULL), _print_to_tty(false) { }
   HeapDumper(bool gc_before_heap_dump, bool print_to_tty) :
     _gc_before_heap_dump(gc_before_heap_dump), _error(NULL), _print_to_tty(print_to_tty) { }
 
--- a/src/share/vm/services/management.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/management.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/services/threadService.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/threadService.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -688,10 +688,9 @@
   _contended_enter_count = 0;
   _monitor_wait_count = 0;
   _sleep_count = 0;
-  _class_init_recursion_count = 0;
-  _class_verify_recursion_count = 0;
   _count_pending_reset = false;
   _timer_pending_reset = false;
+  memset((void*) _perf_recursion_counts, 0, sizeof(_perf_recursion_counts));
 }
 
 ThreadSnapshot::ThreadSnapshot(JavaThread* thread) {
--- a/src/share/vm/services/threadService.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/services/threadService.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -120,9 +120,8 @@
   bool         _timer_pending_reset;
 
   // Keep accurate times for potentially recursive class operations
-  int          _class_init_recursion_count;
-  int          _class_verify_recursion_count;
-  int          _class_link_recursion_count;
+  int           _perf_recursion_counts[6];
+  elapsedTimer  _perf_timers[6];
 
   // utility functions
   void  check_and_reset_count()            {
@@ -165,9 +164,8 @@
   void reset_count_stat()                  { _count_pending_reset = true; }
   void reset_time_stat()                   { _timer_pending_reset = true; }
 
-  int* class_init_recursion_count_addr()   { return &_class_init_recursion_count; }
-  int* class_verify_recursion_count_addr() { return &_class_verify_recursion_count; }
-  int* class_link_recursion_count_addr()   { return &_class_link_recursion_count; }
+  int* perf_recursion_counts_addr()        { return _perf_recursion_counts; }
+  elapsedTimer* perf_timers_addr()         { return _perf_timers; }
 };
 
 // Thread snapshot to represent the thread state and statistics
--- a/src/share/vm/utilities/accessFlags.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/accessFlags.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,8 @@
   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_MH_INVOKE_BITS           // = 0x10001100      // MethodHandle.invoke quasi-native
+                                  = (JVM_ACC_NATIVE | JVM_ACC_SYNTHETIC | JVM_ACC_MONITOR_MATCH),
 
   // klassOop flags
   JVM_ACC_HAS_MIRANDA_METHODS     = 0x10000000,     // True if this class has miranda methods in it's vtable
@@ -72,6 +74,7 @@
 
                                                     // flags accepted by set_field_flags()
   JVM_ACC_FIELD_FLAGS                = 0x00008000 | JVM_ACC_WRITTEN_FLAGS
+
 };
 
 
@@ -114,6 +117,15 @@
   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }
 
+  // JSR 292:  A method of the form MethodHandle.invoke(A...)R method is
+  // neither bytecoded nor a JNI native, but rather a fast call through
+  // a lightweight method handle object.  Because it is not bytecoded,
+  // it has the native bit set, but the monitor-match bit is also set
+  // to distinguish it from a JNI native (which never has the match bit set).
+  // The synthetic bit is also present, because such a method is never
+  // explicitly defined in Java code.
+  bool is_method_handle_invoke () const { return (_flags & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS; }
+
   // klassOop 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; }
@@ -199,6 +211,14 @@
   jshort as_short()                    { return (jshort)_flags; }
   jint   as_int()                      { return _flags; }
 
+  inline friend AccessFlags accessFlags_from(jint flags);
+
   // Printing/debugging
   void print_on(outputStream* st) const PRODUCT_RETURN;
 };
+
+inline AccessFlags accessFlags_from(jint flags) {
+  AccessFlags af;
+  af._flags = flags;
+  return af;
+}
--- a/src/share/vm/utilities/bitMap.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/bitMap.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -41,19 +41,6 @@
   resize(size_in_bits, in_resource_area);
 }
 
-
-void BitMap::verify_index(idx_t index) const {
-    assert(index < _size, "BitMap index out of bounds");
-}
-
-void BitMap::verify_range(idx_t beg_index, idx_t end_index) const {
-#ifdef ASSERT
-    assert(beg_index <= end_index, "BitMap range error");
-    // Note that [0,0) and [size,size) are both valid ranges.
-    if (end_index != _size)  verify_index(end_index);
-#endif
-}
-
 void BitMap::resize(idx_t size_in_bits, bool in_resource_area) {
   assert(size_in_bits >= 0, "just checking");
   idx_t old_size_in_words = size_in_words();
--- a/src/share/vm/utilities/bitMap.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/bitMap.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -93,10 +93,12 @@
   // The index of the first full word in a range.
   idx_t word_index_round_up(idx_t bit) const;
 
-  // Verification, statistics.
-  void verify_index(idx_t index) const;
-  void verify_range(idx_t beg_index, idx_t end_index) const;
+  // Verification.
+  inline void verify_index(idx_t index) const NOT_DEBUG_RETURN;
+  inline void verify_range(idx_t beg_index, idx_t end_index) const
+    NOT_DEBUG_RETURN;
 
+  // Statistics.
   static idx_t* _pop_count_table;
   static void init_pop_count_table();
   static idx_t num_set_bits(bm_word_t w);
@@ -287,7 +289,6 @@
 #endif
 };
 
-
 // Convenience class wrapping BitMap which provides multiple bits per slot.
 class BitMap2D VALUE_OBJ_CLASS_SPEC {
  public:
--- a/src/share/vm/utilities/bitMap.inline.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/bitMap.inline.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -22,6 +22,17 @@
  *
  */
 
+#ifdef ASSERT
+inline void BitMap::verify_index(idx_t index) const {
+  assert(index < _size, "BitMap index out of bounds");
+}
+
+inline void BitMap::verify_range(idx_t beg_index, idx_t end_index) const {
+  assert(beg_index <= end_index, "BitMap range error");
+  // Note that [0,0) and [size,size) are both valid ranges.
+  if (end_index != _size) verify_index(end_index);
+}
+#endif // #ifdef ASSERT
 
 inline void BitMap::set_bit(idx_t bit) {
   verify_index(bit);
--- a/src/share/vm/utilities/exceptions.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/exceptions.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -237,6 +237,9 @@
 #define THROW_ARG_0(name, signature, arg)   THROW_ARG_(name, signature, arg, 0)
 #define THROW_MSG_CAUSE_0(name, message, cause) THROW_MSG_CAUSE_(name, message, cause, 0)
 
+#define THROW_NULL(name)                    THROW_(name, NULL)
+#define THROW_MSG_NULL(name, message)       THROW_MSG_(name, message, NULL)
+
 // The CATCH macro checks that no exception has been thrown by a function; it is used at
 // call sites about which is statically known that the callee cannot throw an exception
 // even though it is declared with TRAPS.
--- a/src/share/vm/utilities/globalDefinitions.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/globalDefinitions.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 extern int BitsPerHeapOop;
 
 const int BitsPerJavaInteger = 32;
+const int BitsPerJavaLong    = 64;
 const int BitsPerSize_t      = size_tSize * BitsPerByte;
 
 // Size of a char[] needed to represent a jint as a string in decimal.
@@ -407,6 +408,15 @@
   return T_BOOLEAN <= t && t <= T_LONG;
 }
 
+inline bool is_subword_type(BasicType t) {
+  // these guys are processed exactly like T_INT in calling sequences:
+  return (t == T_BOOLEAN || t == T_CHAR || t == T_BYTE || t == T_SHORT);
+}
+
+inline bool is_signed_subword_type(BasicType t) {
+  return (t == T_BYTE || t == T_SHORT);
+}
+
 // Convert a char from a classfile signature to a BasicType
 inline BasicType char2type(char c) {
   switch( c ) {
@@ -562,8 +572,8 @@
 
 enum TosState {         // describes the tos cache contents
   btos = 0,             // byte, bool tos cached
-  ctos = 1,             // short, char tos cached
-  stos = 2,             // short, char tos cached
+  ctos = 1,             // char tos cached
+  stos = 2,             // short tos cached
   itos = 3,             // int tos cached
   ltos = 4,             // long tos cached
   ftos = 5,             // float tos cached
@@ -578,7 +588,7 @@
 inline TosState as_TosState(BasicType type) {
   switch (type) {
     case T_BYTE   : return btos;
-    case T_BOOLEAN: return btos;
+    case T_BOOLEAN: return btos; // FIXME: Add ztos
     case T_CHAR   : return ctos;
     case T_SHORT  : return stos;
     case T_INT    : return itos;
@@ -592,6 +602,22 @@
   return ilgl;
 }
 
+inline BasicType as_BasicType(TosState state) {
+  switch (state) {
+    //case ztos: return T_BOOLEAN;//FIXME
+    case btos : return T_BYTE;
+    case ctos : return T_CHAR;
+    case stos : return T_SHORT;
+    case itos : return T_INT;
+    case ltos : return T_LONG;
+    case ftos : return T_FLOAT;
+    case dtos : return T_DOUBLE;
+    case atos : return T_OBJECT;
+    case vtos : return T_VOID;
+  }
+  return T_ILLEGAL;
+}
+
 
 // Helper function to convert BasicType info into TosState
 // Note: Cannot define here as it uses global constant at the time being.
@@ -880,7 +906,7 @@
     i++; p *= 2;
   }
   // p = 2^(i+1) && x < p (i.e., 2^i <= x < 2^(i+1))
-  // (if p = 0 then overflow occured and i = 31)
+  // (if p = 0 then overflow occurred and i = 31)
   return i;
 }
 
@@ -894,7 +920,7 @@
     i++; p *= 2;
   }
   // p = 2^(i+1) && x < p (i.e., 2^i <= x < 2^(i+1))
-  // (if p = 0 then overflow occured and i = 63)
+  // (if p = 0 then overflow occurred and i = 63)
   return i;
 }
 
@@ -906,6 +932,14 @@
   return log2_intptr(x);
 }
 
+//* the argument must be exactly a power of 2
+inline int exact_log2_long(jlong x) {
+  #ifdef ASSERT
+    if (!is_power_of_2_long(x)) basic_fatal("x must be a power of 2");
+  #endif
+  return log2_long(x);
+}
+
 
 // returns integer round-up to the nearest multiple of s (s must be a power of two)
 inline intptr_t round_to(intptr_t x, uintx s) {
@@ -1087,15 +1121,24 @@
 // Format macros that allow the field width to be specified.  The width must be
 // a string literal (e.g., "8") or a macro that evaluates to one.
 #ifdef _LP64
+#define UINTX_FORMAT_W(width)   UINT64_FORMAT_W(width)
 #define SSIZE_FORMAT_W(width)   INT64_FORMAT_W(width)
 #define SIZE_FORMAT_W(width)    UINT64_FORMAT_W(width)
 #else
+#define UINTX_FORMAT_W(width)   UINT32_FORMAT_W(width)
 #define SSIZE_FORMAT_W(width)   INT32_FORMAT_W(width)
 #define SIZE_FORMAT_W(width)    UINT32_FORMAT_W(width)
 #endif // _LP64
 
 // Format pointers and size_t (or size_t-like integer types) which change size
-// between 32- and 64-bit.
+// between 32- and 64-bit. The pointer format theoretically should be "%p",
+// however, it has different output on different platforms. On Windows, the data
+// will be padded with zeros automatically. On Solaris, we can use "%016p" &
+// "%08p" on 64 bit & 32 bit platforms to make the data padded with extra zeros.
+// On Linux, "%016p" or "%08p" is not be allowed, at least on the latest GCC
+// 4.3.2. So we have to use "%016x" or "%08x" to simulate the printing format.
+// GCC 4.3.2, however requires the data to be converted to "intptr_t" when
+// using "%x".
 #ifdef  _LP64
 #define PTR_FORMAT    PTR64_FORMAT
 #define UINTX_FORMAT  UINT64_FORMAT
--- a/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -116,7 +116,9 @@
   #ifdef _LP64
     #define NULL_WORD  0L
   #else
-    #define NULL_WORD  0
+    // Cast 0 to intptr_t rather than int32_t since they are not the same type
+    // on platforms such as Mac OS X.
+    #define NULL_WORD  ((intptr_t)0)
   #endif
 #else
   #define NULL_WORD  NULL
--- a/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -115,7 +115,9 @@
   #ifdef _LP64
     #define NULL_WORD  0L
   #else
-    #define NULL_WORD  0
+    // Cast 0 to intptr_t rather than int32_t since they are not the same type
+    // on some platforms.
+    #define NULL_WORD  ((intptr_t)0)
   #endif
 #else
   #define NULL_WORD  NULL
--- a/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -153,16 +153,8 @@
 //----------------------------------------------------------------------------------------------------
 // Miscellaneous
 
-inline int vsnprintf(char* buf, size_t count, const char* fmt, va_list argptr) {
-  // If number of characters written == count, Windows doesn't write a
-  // terminating NULL, so we do it ourselves.
-  int ret = _vsnprintf(buf, count, fmt, argptr);
-  if (count > 0) buf[count-1] = '\0';
-  return ret;
-}
-
 // Visual Studio 2005 deprecates POSIX names - use ISO C++ names instead
-#if _MSC_VER >= 1400 && !defined(_WIN64)
+#if _MSC_VER >= 1400
 #define open _open
 #define close _close
 #define read  _read
@@ -180,6 +172,17 @@
 #pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union (needed in windows.h)
 #pragma warning( disable : 4511 ) // copy constructor could not be generated
 #pragma warning( disable : 4291 ) // no matching operator delete found; memory will not be freed if initialization thows an exception
+#if _MSC_VER >= 1400
+#pragma warning( disable : 4996 ) // unsafe string functions. Same as define _CRT_SECURE_NO_WARNINGS/_CRT_SECURE_NO_DEPRICATE
+#endif
+
+inline int vsnprintf(char* buf, size_t count, const char* fmt, va_list argptr) {
+  // If number of characters written == count, Windows doesn't write a
+  // terminating NULL, so we do it ourselves.
+  int ret = _vsnprintf(buf, count, fmt, argptr);
+  if (count > 0) buf[count-1] = '\0';
+  return ret;
+}
 
 // Portability macros
 #define PRAGMA_INTERFACE
--- a/src/share/vm/utilities/growableArray.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/growableArray.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -43,11 +43,13 @@
 #endif
 
 void* GenericGrowableArray::raw_allocate(int elementSize) {
+  assert(_max >= 0, "integer overflow");
+  size_t byte_size = elementSize * (size_t) _max;
   if (on_stack()) {
-    return (void*)resource_allocate_bytes(elementSize * _max);
+    return (void*)resource_allocate_bytes(byte_size);
   } else if (on_C_heap()) {
-    return (void*)AllocateHeap(elementSize * _max, "GrET in " __FILE__);
+    return (void*)AllocateHeap(byte_size, "GrET in " __FILE__);
   } else {
-    return _arena->Amalloc(elementSize * _max);
+    return _arena->Amalloc(byte_size);
   }
 }
--- a/src/share/vm/utilities/macros.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/macros.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -106,11 +106,13 @@
 #ifdef ASSERT
 #define DEBUG_ONLY(code) code
 #define NOT_DEBUG(code)
+#define NOT_DEBUG_RETURN  /*next token must be ;*/
 // Historical.
 #define debug_only(code) code
 #else // ASSERT
 #define DEBUG_ONLY(code)
 #define NOT_DEBUG(code) code
+#define NOT_DEBUG_RETURN {}
 #define debug_only(code)
 #endif // ASSERT
 
--- a/src/share/vm/utilities/ostream.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/ostream.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,10 @@
 }
 
 void fileStream::write(const char* s, size_t len) {
-  if (_file != NULL)  fwrite(s, 1, len, _file);
+  if (_file != NULL)  {
+    // Make an unused local variable to avoid warning from gcc 4.x compiler.
+    size_t count = fwrite(s, 1, len, _file);
+  }
   update_position(s, len);
 }
 
@@ -328,7 +331,10 @@
 }
 
 void fdStream::write(const char* s, size_t len) {
-  if (_fd != -1) ::write(_fd, s, (int)len);
+  if (_fd != -1) {
+    // Make an unused local variable to avoid warning from gcc 4.x compiler.
+    size_t count = ::write(_fd, s, (int)len);
+  }
   update_position(s, len);
 }
 
--- a/src/share/vm/utilities/taskqueue.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/taskqueue.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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,12 @@
 # include "incls/_precompiled.incl"
 # include "incls/_taskqueue.cpp.incl"
 
+#ifdef TRACESPINNING
+uint ParallelTaskTerminator::_total_yields = 0;
+uint ParallelTaskTerminator::_total_spins = 0;
+uint ParallelTaskTerminator::_total_peeks = 0;
+#endif
+
 bool TaskQueueSuper::peek() {
   return _bottom != _age.top();
 }
@@ -58,26 +64,77 @@
 }
 
 void ParallelTaskTerminator::yield() {
+  assert(_offered_termination <= _n_threads, "Invariant");
   os::yield();
 }
 
 void ParallelTaskTerminator::sleep(uint millis) {
+  assert(_offered_termination <= _n_threads, "Invariant");
   os::sleep(Thread::current(), millis, false);
 }
 
 bool
 ParallelTaskTerminator::offer_termination(TerminatorTerminator* terminator) {
+  assert(_offered_termination < _n_threads, "Invariant");
   Atomic::inc(&_offered_termination);
 
-  juint yield_count = 0;
+  uint yield_count = 0;
+  // Number of hard spin loops done since last yield
+  uint hard_spin_count = 0;
+  // Number of iterations in the hard spin loop.
+  uint hard_spin_limit = WorkStealingHardSpins;
+
+  // If WorkStealingSpinToYieldRatio is 0, no hard spinning is done.
+  // If it is greater than 0, then start with a small number
+  // of spins and increase number with each turn at spinning until
+  // the count of hard spins exceeds WorkStealingSpinToYieldRatio.
+  // Then do a yield() call and start spinning afresh.
+  if (WorkStealingSpinToYieldRatio > 0) {
+    hard_spin_limit = WorkStealingHardSpins >> WorkStealingSpinToYieldRatio;
+    hard_spin_limit = MAX2(hard_spin_limit, 1U);
+  }
+  // Remember the initial spin limit.
+  uint hard_spin_start = hard_spin_limit;
+
+  // Loop waiting for all threads to offer termination or
+  // more work.
   while (true) {
+    assert(_offered_termination <= _n_threads, "Invariant");
+    // Are all threads offering termination?
     if (_offered_termination == _n_threads) {
-      //inner_termination_loop();
       return true;
     } else {
+      // Look for more work.
+      // Periodically sleep() instead of yield() to give threads
+      // waiting on the cores the chance to grab this code
       if (yield_count <= WorkStealingYieldsBeforeSleep) {
+        // Do a yield or hardspin.  For purposes of deciding whether
+        // to sleep, count this as a yield.
         yield_count++;
-        yield();
+
+        // Periodically call yield() instead spinning
+        // After WorkStealingSpinToYieldRatio spins, do a yield() call
+        // and reset the counts and starting limit.
+        if (hard_spin_count > WorkStealingSpinToYieldRatio) {
+          yield();
+          hard_spin_count = 0;
+          hard_spin_limit = hard_spin_start;
+#ifdef TRACESPINNING
+          _total_yields++;
+#endif
+        } else {
+          // Hard spin this time
+          // Increase the hard spinning period but only up to a limit.
+          hard_spin_limit = MIN2(2*hard_spin_limit,
+                                 (uint) WorkStealingHardSpins);
+          for (uint j = 0; j < hard_spin_limit; j++) {
+            SpinPause();
+          }
+          hard_spin_count++;
+#ifdef TRACESPINNING
+          _total_spins++;
+#endif
+        }
       } else {
         if (PrintGCDetails && Verbose) {
          gclog_or_tty->print_cr("ParallelTaskTerminator::offer_termination() "
@@ -92,15 +149,29 @@
         sleep(WorkStealingSleepMillis);
       }
 
+#ifdef TRACESPINNING
+      _total_peeks++;
+#endif
       if (peek_in_queue_set() ||
           (terminator != NULL && terminator->should_exit_termination())) {
         Atomic::dec(&_offered_termination);
+        assert(_offered_termination < _n_threads, "Invariant");
         return false;
       }
     }
   }
 }
 
+#ifdef TRACESPINNING
+void ParallelTaskTerminator::print_termination_counts() {
+  gclog_or_tty->print_cr("ParallelTaskTerminator Total yields: %lld  "
+    "Total spins: %lld  Total peeks: %lld",
+    total_yields(),
+    total_spins(),
+    total_peeks());
+}
+#endif
+
 void ParallelTaskTerminator::reset_for_reuse() {
   if (_offered_termination != 0) {
     assert(_offered_termination == _n_threads,
--- a/src/share/vm/utilities/taskqueue.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/taskqueue.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,67 +22,76 @@
  *
  */
 
+#ifdef LP64
+typedef juint TAG_TYPE;
+// for a taskqueue size of 4M
+#define LOG_TASKQ_SIZE 22
+#else
+typedef jushort TAG_TYPE;
+// for a taskqueue size of 16K
+#define LOG_TASKQ_SIZE 14
+#endif
+
 class TaskQueueSuper: public CHeapObj {
 protected:
   // The first free element after the last one pushed (mod _n).
-  // (For now we'll assume only 32-bit CAS).
-  volatile juint _bottom;
+  volatile uint _bottom;
 
   // log2 of the size of the queue.
   enum SomeProtectedConstants {
-    Log_n = 14
+    Log_n = LOG_TASKQ_SIZE
   };
+#undef LOG_TASKQ_SIZE
 
   // Size of the queue.
-  juint n() { return (1 << Log_n); }
+  uint n() { return (1 << Log_n); }
   // For computing "x mod n" efficiently.
-  juint n_mod_mask() { return n() - 1; }
+  uint n_mod_mask() { return n() - 1; }
 
   struct Age {
-    jushort _top;
-    jushort _tag;
+    TAG_TYPE _top;
+    TAG_TYPE _tag;
 
-    jushort tag() const { return _tag; }
-    jushort top() const { return _top; }
+    TAG_TYPE tag() const { return _tag; }
+    TAG_TYPE top() const { return _top; }
 
     Age() { _tag = 0; _top = 0; }
 
     friend bool operator ==(const Age& a1, const Age& a2) {
       return a1.tag() == a2.tag() && a1.top() == a2.top();
     }
-
   };
   Age _age;
   // These make sure we do single atomic reads and writes.
   Age get_age() {
-    jint res = *(volatile jint*)(&_age);
+    uint res = *(volatile uint*)(&_age);
     return *(Age*)(&res);
   }
   void set_age(Age a) {
-    *(volatile jint*)(&_age) = *(int*)(&a);
+    *(volatile uint*)(&_age) = *(uint*)(&a);
   }
 
-  jushort get_top() {
+  TAG_TYPE get_top() {
     return get_age().top();
   }
 
   // These both operate mod _n.
-  juint increment_index(juint ind) {
+  uint increment_index(uint ind) {
     return (ind + 1) & n_mod_mask();
   }
-  juint decrement_index(juint ind) {
+  uint decrement_index(uint ind) {
     return (ind - 1) & n_mod_mask();
   }
 
   // Returns a number in the range [0.._n).  If the result is "n-1", it
   // should be interpreted as 0.
-  juint dirty_size(juint bot, juint top) {
-    return ((jint)bot - (jint)top) & n_mod_mask();
+  uint dirty_size(uint bot, uint top) {
+    return ((int)bot - (int)top) & n_mod_mask();
   }
 
   // Returns the size corresponding to the given "bot" and "top".
-  juint size(juint bot, juint top) {
-    juint sz = dirty_size(bot, top);
+  uint size(uint bot, uint top) {
+    uint sz = dirty_size(bot, top);
     // Has the queue "wrapped", so that bottom is less than top?
     // There's a complicated special case here.  A pair of threads could
     // perform pop_local and pop_global operations concurrently, starting
@@ -94,7 +103,7 @@
     // owner performs pop_local's, and several concurrent threads
     // attempting to perform the pop_global will all perform the same CAS,
     // and only one can succeed.  Any stealing thread that reads after
-    // either the increment or decrement will seen an empty queue, and will
+    // either the increment or decrement will see an empty queue, and will
     // not join the competitors.  The "sz == -1 || sz == _n-1" state will
     // not be modified  by concurrent queues, so the owner thread can reset
     // the state to _bottom == top so subsequent pushes will be performed
@@ -112,11 +121,11 @@
   // Return an estimate of the number of elements in the queue.
   // The "careful" version admits the possibility of pop_local/pop_global
   // races.
-  juint size() {
+  uint size() {
     return size(_bottom, get_top());
   }
 
-  juint dirty_size() {
+  uint dirty_size() {
     return dirty_size(_bottom, get_top());
   }
 
@@ -127,15 +136,15 @@
 
   // Maximum number of elements allowed in the queue.  This is two less
   // than the actual queue size, for somewhat complicated reasons.
-  juint max_elems() { return n() - 2; }
+  uint max_elems() { return n() - 2; }
 
 };
 
 template<class E> class GenericTaskQueue: public TaskQueueSuper {
 private:
   // Slow paths for push, pop_local.  (pop_global has no fast path.)
-  bool push_slow(E t, juint dirty_n_elems);
-  bool pop_local_slow(juint localBot, Age oldAge);
+  bool push_slow(E t, uint dirty_n_elems);
+  bool pop_local_slow(uint localBot, Age oldAge);
 
 public:
   // Initializes the queue to empty.
@@ -170,7 +179,7 @@
 
 template<class E>
 GenericTaskQueue<E>::GenericTaskQueue():TaskQueueSuper() {
-  assert(sizeof(Age) == sizeof(jint), "Depends on this.");
+  assert(sizeof(Age) == sizeof(int), "Depends on this.");
 }
 
 template<class E>
@@ -182,9 +191,9 @@
 template<class E>
 void GenericTaskQueue<E>::oops_do(OopClosure* f) {
   // tty->print_cr("START OopTaskQueue::oops_do");
-  int iters = size();
-  juint index = _bottom;
-  for (int i = 0; i < iters; ++i) {
+  uint iters = size();
+  uint index = _bottom;
+  for (uint i = 0; i < iters; ++i) {
     index = decrement_index(index);
     // tty->print_cr("  doing entry %d," INTPTR_T " -> " INTPTR_T,
     //            index, &_elems[index], _elems[index]);
@@ -198,10 +207,10 @@
 
 
 template<class E>
-bool GenericTaskQueue<E>::push_slow(E t, juint dirty_n_elems) {
+bool GenericTaskQueue<E>::push_slow(E t, uint dirty_n_elems) {
   if (dirty_n_elems == n() - 1) {
     // Actually means 0, so do the push.
-    juint localBot = _bottom;
+    uint localBot = _bottom;
     _elems[localBot] = t;
     _bottom = increment_index(localBot);
     return true;
@@ -211,7 +220,7 @@
 
 template<class E>
 bool GenericTaskQueue<E>::
-pop_local_slow(juint localBot, Age oldAge) {
+pop_local_slow(uint localBot, Age oldAge) {
   // This queue was observed to contain exactly one element; either this
   // thread will claim it, or a competing "pop_global".  In either case,
   // the queue will be logically empty afterwards.  Create a new Age value
@@ -230,9 +239,8 @@
     Age tempAge;
     // No competing pop_global has yet incremented "top"; we'll try to
     // install new_age, thus claiming the element.
-    assert(sizeof(Age) == sizeof(jint) && sizeof(jint) == sizeof(juint),
-           "Assumption about CAS unit.");
-    *(jint*)&tempAge = Atomic::cmpxchg(*(jint*)&newAge, (volatile jint*)&_age, *(jint*)&oldAge);
+    assert(sizeof(Age) == sizeof(int), "Assumption about CAS unit.");
+    *(uint*)&tempAge = Atomic::cmpxchg(*(uint*)&newAge, (volatile uint*)&_age, *(uint*)&oldAge);
     if (tempAge == oldAge) {
       // We win.
       assert(dirty_size(localBot, get_top()) != n() - 1,
@@ -253,8 +261,8 @@
 bool GenericTaskQueue<E>::pop_global(E& t) {
   Age newAge;
   Age oldAge = get_age();
-  juint localBot = _bottom;
-  juint n_elems = size(localBot, oldAge.top());
+  uint localBot = _bottom;
+  uint n_elems = size(localBot, oldAge.top());
   if (n_elems == 0) {
     return false;
   }
@@ -263,7 +271,7 @@
   newAge._top = increment_index(newAge.top());
   if ( newAge._top == 0 ) newAge._tag++;
   Age resAge;
-  *(jint*)&resAge = Atomic::cmpxchg(*(jint*)&newAge, (volatile jint*)&_age, *(jint*)&oldAge);
+  *(uint*)&resAge = Atomic::cmpxchg(*(uint*)&newAge, (volatile uint*)&_age, *(uint*)&oldAge);
   // Note that using "_bottom" here might fail, since a pop_local might
   // have decremented it.
   assert(dirty_size(localBot, newAge._top) != n() - 1,
@@ -287,7 +295,7 @@
 
 template<class E> class GenericTaskQueueSet: public TaskQueueSetSuper {
 private:
-  int _n;
+  uint _n;
   GenericTaskQueue<E>** _queues;
 
 public:
@@ -300,51 +308,51 @@
     }
   }
 
-  bool steal_1_random(int queue_num, int* seed, E& t);
-  bool steal_best_of_2(int queue_num, int* seed, E& t);
-  bool steal_best_of_all(int queue_num, int* seed, E& t);
+  bool steal_1_random(uint queue_num, int* seed, E& t);
+  bool steal_best_of_2(uint queue_num, int* seed, E& t);
+  bool steal_best_of_all(uint queue_num, int* seed, E& t);
 
-  void register_queue(int i, GenericTaskQueue<E>* q);
+  void register_queue(uint i, GenericTaskQueue<E>* q);
 
-  GenericTaskQueue<E>* queue(int n);
+  GenericTaskQueue<E>* queue(uint n);
 
   // The thread with queue number "queue_num" (and whose random number seed
   // is at "seed") is trying to steal a task from some other queue.  (It
   // may try several queues, according to some configuration parameter.)
   // If some steal succeeds, returns "true" and sets "t" the stolen task,
   // otherwise returns false.
-  bool steal(int queue_num, int* seed, E& t);
+  bool steal(uint queue_num, int* seed, E& t);
 
   bool peek();
 };
 
 template<class E>
-void GenericTaskQueueSet<E>::register_queue(int i, GenericTaskQueue<E>* q) {
-  assert(0 <= i && i < _n, "index out of range.");
+void GenericTaskQueueSet<E>::register_queue(uint i, GenericTaskQueue<E>* q) {
+  assert(i < _n, "index out of range.");
   _queues[i] = q;
 }
 
 template<class E>
-GenericTaskQueue<E>* GenericTaskQueueSet<E>::queue(int i) {
+GenericTaskQueue<E>* GenericTaskQueueSet<E>::queue(uint i) {
   return _queues[i];
 }
 
 template<class E>
-bool GenericTaskQueueSet<E>::steal(int queue_num, int* seed, E& t) {
-  for (int i = 0; i < 2 * _n; i++)
+bool GenericTaskQueueSet<E>::steal(uint queue_num, int* seed, E& t) {
+  for (uint i = 0; i < 2 * _n; i++)
     if (steal_best_of_2(queue_num, seed, t))
       return true;
   return false;
 }
 
 template<class E>
-bool GenericTaskQueueSet<E>::steal_best_of_all(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_best_of_all(uint queue_num, int* seed, E& t) {
   if (_n > 2) {
     int best_k;
-    jint best_sz = 0;
-    for (int k = 0; k < _n; k++) {
+    uint best_sz = 0;
+    for (uint k = 0; k < _n; k++) {
       if (k == queue_num) continue;
-      jint sz = _queues[k]->size();
+      uint sz = _queues[k]->size();
       if (sz > best_sz) {
         best_sz = sz;
         best_k = k;
@@ -362,9 +370,9 @@
 }
 
 template<class E>
-bool GenericTaskQueueSet<E>::steal_1_random(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_1_random(uint queue_num, int* seed, E& t) {
   if (_n > 2) {
-    int k = queue_num;
+    uint k = queue_num;
     while (k == queue_num) k = randomParkAndMiller(seed) % _n;
     return _queues[2]->pop_global(t);
   } else if (_n == 2) {
@@ -378,20 +386,20 @@
 }
 
 template<class E>
-bool GenericTaskQueueSet<E>::steal_best_of_2(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_best_of_2(uint queue_num, int* seed, E& t) {
   if (_n > 2) {
-    int k1 = queue_num;
+    uint k1 = queue_num;
     while (k1 == queue_num) k1 = randomParkAndMiller(seed) % _n;
-    int k2 = queue_num;
+    uint k2 = queue_num;
     while (k2 == queue_num || k2 == k1) k2 = randomParkAndMiller(seed) % _n;
     // Sample both and try the larger.
-    juint sz1 = _queues[k1]->size();
-    juint sz2 = _queues[k2]->size();
+    uint sz1 = _queues[k1]->size();
+    uint sz2 = _queues[k2]->size();
     if (sz2 > sz1) return _queues[k2]->pop_global(t);
     else return _queues[k1]->pop_global(t);
   } else if (_n == 2) {
     // Just try the other one.
-    int k = (queue_num + 1) % 2;
+    uint k = (queue_num + 1) % 2;
     return _queues[k]->pop_global(t);
   } else {
     assert(_n == 1, "can't be zero.");
@@ -402,7 +410,7 @@
 template<class E>
 bool GenericTaskQueueSet<E>::peek() {
   // Try all the queues.
-  for (int j = 0; j < _n; j++) {
+  for (uint j = 0; j < _n; j++) {
     if (_queues[j]->peek())
       return true;
   }
@@ -418,11 +426,19 @@
 // A class to aid in the termination of a set of parallel tasks using
 // TaskQueueSet's for work stealing.
 
+#undef TRACESPINNING
+
 class ParallelTaskTerminator: public StackObj {
 private:
   int _n_threads;
   TaskQueueSetSuper* _queue_set;
-  jint _offered_termination;
+  int _offered_termination;
+
+#ifdef TRACESPINNING
+  static uint _total_yields;
+  static uint _total_spins;
+  static uint _total_peeks;
+#endif
 
   bool peek_in_queue_set();
 protected:
@@ -454,13 +470,19 @@
   // the terminator is finished.
   void reset_for_reuse();
 
+#ifdef TRACESPINNING
+  static uint total_yields() { return _total_yields; }
+  static uint total_spins() { return _total_spins; }
+  static uint total_peeks() { return _total_peeks; }
+  static void print_termination_counts();
+#endif
 };
 
 #define SIMPLE_STACK 0
 
 template<class E> inline bool GenericTaskQueue<E>::push(E t) {
 #if SIMPLE_STACK
-  juint localBot = _bottom;
+  uint localBot = _bottom;
   if (_bottom < max_elems()) {
     _elems[localBot] = t;
     _bottom = localBot + 1;
@@ -469,10 +491,10 @@
     return false;
   }
 #else
-  juint localBot = _bottom;
+  uint localBot = _bottom;
   assert((localBot >= 0) && (localBot < n()), "_bottom out of range.");
-  jushort top = get_top();
-  juint dirty_n_elems = dirty_size(localBot, top);
+  TAG_TYPE top = get_top();
+  uint dirty_n_elems = dirty_size(localBot, top);
   assert((dirty_n_elems >= 0) && (dirty_n_elems < n()),
          "n_elems out of range.");
   if (dirty_n_elems < max_elems()) {
@@ -487,19 +509,19 @@
 
 template<class E> inline bool GenericTaskQueue<E>::pop_local(E& t) {
 #if SIMPLE_STACK
-  juint localBot = _bottom;
+  uint localBot = _bottom;
   assert(localBot > 0, "precondition.");
   localBot--;
   t = _elems[localBot];
   _bottom = localBot;
   return true;
 #else
-  juint localBot = _bottom;
+  uint localBot = _bottom;
   // This value cannot be n-1.  That can only occur as a result of
   // the assignment to bottom in this method.  If it does, this method
   // resets the size( to 0 before the next call (which is sequential,
   // since this is pop_local.)
-  juint dirty_n_elems = dirty_size(localBot, get_top());
+  uint dirty_n_elems = dirty_size(localBot, get_top());
   assert(dirty_n_elems != n() - 1, "Shouldn't be possible...");
   if (dirty_n_elems == 0) return false;
   localBot = decrement_index(localBot);
@@ -512,7 +534,7 @@
   // If there's still at least one element in the queue, based on the
   // "_bottom" and "age" we've read, then there can be no interference with
   // a "pop_global" operation, and we're done.
-  juint tp = get_top();
+  TAG_TYPE tp = get_top();    // XXX
   if (size(localBot, tp) > 0) {
     assert(dirty_size(localBot, tp) != n() - 1,
            "Shouldn't be possible...");
@@ -538,8 +560,14 @@
 class StarTask {
   void*  _holder;        // either union oop* or narrowOop*
  public:
-  StarTask(narrowOop *p) { _holder = (void *)((uintptr_t)p | COMPRESSED_OOP_MASK); }
-  StarTask(oop *p)       { _holder = (void*)p; }
+  StarTask(narrowOop* p) {
+    assert(((uintptr_t)p & COMPRESSED_OOP_MASK) == 0, "Information loss!");
+    _holder = (void *)((uintptr_t)p | COMPRESSED_OOP_MASK);
+  }
+  StarTask(oop* p)       {
+    assert(((uintptr_t)p & COMPRESSED_OOP_MASK) == 0, "Information loss!");
+    _holder = (void*)p;
+  }
   StarTask()             { _holder = NULL; }
   operator oop*()        { return (oop*)_holder; }
   operator narrowOop*()  {
@@ -581,7 +609,7 @@
   bool is_empty();
   bool stealable_is_empty();
   bool overflow_is_empty();
-  juint stealable_size() { return _region_queue.size(); }
+  uint stealable_size() { return _region_queue.size(); }
   RegionTaskQueue* task_queue() { return &_region_queue; }
 };
 
--- a/src/share/vm/utilities/vmError.cpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/vmError.cpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -306,7 +306,7 @@
 
          strncpy(buf, file, buflen);
          if (len + 10 < buflen) {
-           sprintf(buf + len, ":" SIZE_FORMAT, _lineno);
+           sprintf(buf + len, ":%d", _lineno);
          }
          st->print(" (%s)", buf);
        } else {
@@ -420,7 +420,7 @@
 
        if (fr.sp()) {
          st->print(",  sp=" PTR_FORMAT, fr.sp());
-         st->print(",  free space=%dk",
+         st->print(",  free space=%" INTPTR_FORMAT "k",
                      ((intptr_t)fr.sp() - (intptr_t)stack_bottom) >> 10);
        }
 
@@ -674,6 +674,11 @@
     reset_signal_handlers();
 
   } else {
+    // If UseOsErrorReporting we call this for each level of the call stack
+    // while searching for the exception handler.  Only the first level needs
+    // to be reported.
+    if (UseOSErrorReporting && log_done) return;
+
     // This is not the first error, see if it happened in a different thread
     // or in the same thread during error reporting.
     if (first_error_tid != mytid) {
--- a/src/share/vm/utilities/vmError.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/vmError.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/workgroup.hpp	Tue Jul 28 13:35:00 2009 -0600
+++ b/src/share/vm/utilities/workgroup.hpp	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
 
 // An abstract task to be worked on by a gang.
 // You subclass this to supply your own work() method
-class AbstractGangTask: public CHeapObj {
+class AbstractGangTask VALUE_OBJ_CLASS_SPEC {
 public:
   // The abstract work method.
   // The argument tells you which member of the gang you are.
--- a/test/Makefile	Tue Jul 28 13:35:00 2009 -0600
+++ b/test/Makefile	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2009 Sun Microsystems, Inc.  All Rights Reserved.
 # 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,9 @@
 
 # Get OS/ARCH specifics
 OSNAME = $(shell uname -s)
-SLASH_JAVA = /java
 ifeq ($(OSNAME), SunOS)
   PLATFORM = solaris
+  SLASH_JAVA = /java
   ARCH = $(shell uname -p)
   ifeq ($(ARCH), i386)
     ARCH=i586
@@ -38,6 +38,7 @@
 endif
 ifeq ($(OSNAME), Linux)
   PLATFORM = linux
+  SLASH_JAVA = /java
   ARCH = $(shell uname -m)
   ifeq ($(ARCH), i386)
     ARCH = i586
@@ -62,6 +63,10 @@
   EXESUFFIX = .exe
 endif
 
+ifdef ALT_SLASH_JAVA
+  SLASH_JAVA = $(ALT_SLASH_JAVA)
+endif
+
 # Utilities used
 CD    = cd
 CP    = cp
@@ -167,6 +172,33 @@
 
 ################################################################
 
+# clienttest (make sure various basic java client options work)
+
+clienttest: prep $(PRODUCT_HOME)
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
+	$(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa
+	$(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes_g.jsa
+	$(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa
+	$(RM) $(PRODUCT_HOME)/jre/bin/client/classes_g.jsa
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump
+
+PHONY_LIST += clienttest
+
+################################################################
+
+# servertest (make sure various basic java server options work)
+
+servertest: prep $(PRODUCT_HOME)
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
+	$(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
+
+PHONY_LIST += servertest
+
+################################################################
+
 # packtest
 
 # Expect JPRT to set JPRT_PACKTEST_HOME.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/5057225/Test5057225.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 5057225
+ * @summary Remove useless I2L conversions
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test5057225.doload Test5057225
+ */
+
+import java.net.URLClassLoader;
+
+public class Test5057225 {
+    static byte[]  ba = new byte[]  { -1 };
+    static short[] sa = new short[] { -1 };
+    static int[]   ia = new int[]   { -1 };
+
+    static final long[] BYTE_MASKS = {
+         0x0FL,
+         0x7FL,  // 7-bit
+         0xFFL,
+    };
+
+    static final long[] SHORT_MASKS = {
+        0x000FL,
+        0x007FL,  // 7-bit
+        0x00FFL,
+        0x0FFFL,
+        0x3FFFL,  // 14-bit
+        0x7FFFL,  // 15-bit
+        0xFFFFL,
+    };
+
+    static final long[] INT_MASKS = {
+        0x0000000FL,
+        0x0000007FL,  // 7-bit
+        0x000000FFL,
+        0x00000FFFL,
+        0x00003FFFL,  // 14-bit
+        0x00007FFFL,  // 15-bit
+        0x0000FFFFL,
+        0x00FFFFFFL,
+        0x7FFFFFFFL,  // 31-bit
+        0xFFFFFFFFL,
+    };
+
+    public static void main(String[] args) throws Exception {
+        for (int i = 0; i < BYTE_MASKS.length; i++) {
+            System.setProperty("value", "" + BYTE_MASKS[i]);
+            loadAndRunClass("Test5057225$loadUB2L");
+        }
+
+        for (int i = 0; i < SHORT_MASKS.length; i++) {
+            System.setProperty("value", "" + SHORT_MASKS[i]);
+            loadAndRunClass("Test5057225$loadUS2L");
+        }
+
+        for (int i = 0; i < INT_MASKS.length; i++) {
+            System.setProperty("value", "" + INT_MASKS[i]);
+            loadAndRunClass("Test5057225$loadUI2L");
+        }
+    }
+
+    static void check(long result, long expected) {
+        if (result != expected)
+            throw new InternalError(result + " != " + expected);
+    }
+
+    static void loadAndRunClass(String classname) throws Exception {
+        Class cl = Class.forName(classname);
+        URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+        ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+        Class c = loader.loadClass(classname);
+        Runnable r = (Runnable) c.newInstance();
+        r.run();
+    }
+
+    public static class loadUB2L implements Runnable {
+        static final long MASK;
+        static {
+            long value = 0;
+            try {
+                value = Long.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            MASK = value;
+        }
+
+        public void run() { check(doload(ba), MASK); }
+        static long doload(byte[] ba) { return ba[0] & MASK; }
+    }
+
+    public static class loadUS2L implements Runnable {
+        static final long MASK;
+        static {
+            long value = 0;
+            try {
+                value = Long.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            MASK = value;
+        }
+
+        public void run() { check(doload(sa), MASK); }
+        static long doload(short[] sa) { return sa[0] & MASK; }
+    }
+
+    public static class loadUI2L implements Runnable {
+        static final long MASK;
+        static {
+            long value = 0;
+            try {
+                value = Long.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            MASK = value;
+        }
+
+        public void run() { check(doload(ia), MASK); }
+        static long doload(int[] ia) { return ia[0] & MASK; }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6378821/Test6378821.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6378821
+ * @summary where available, bitCount() should use POPC on SPARC processors and AMD+10h
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6378821.fcomp Test6378821
+ */
+
+public class Test6378821 {
+    static final int[]  ia = new int[]  { 0x12345678 };
+    static final long[] la = new long[] { 0x12345678abcdefL };
+
+    public static void main(String [] args) {
+        // Resolve the class and the method.
+        Integer.bitCount(1);
+        Long.bitCount(1);
+
+        sub(ia[0]);
+        sub(la[0]);
+        sub(ia);
+        sub(la);
+    }
+
+    static void check(int i, int expected, int result) {
+        if (result != expected) {
+            throw new InternalError("Wrong population count for " + i + ": " + result + " != " + expected);
+        }
+    }
+
+    static void check(long l, int expected, int result) {
+        if (result != expected) {
+            throw new InternalError("Wrong population count for " + l + ": " + result + " != " + expected);
+        }
+    }
+
+    static void sub(int i)     { check(i,     fint(i),  fcomp(i) ); }
+    static void sub(int[] ia)  { check(ia[0], fint(ia), fcomp(ia)); }
+    static void sub(long l)    { check(l,     fint(l),  fcomp(l) ); }
+    static void sub(long[] la) { check(la[0], fint(la), fcomp(la)); }
+
+    static int fint (int i)     { return Integer.bitCount(i); }
+    static int fcomp(int i)     { return Integer.bitCount(i); }
+
+    static int fint (int[] ia)  { return Integer.bitCount(ia[0]); }
+    static int fcomp(int[] ia)  { return Integer.bitCount(ia[0]); }
+
+    static int fint (long l)    { return Long.bitCount(l); }
+    static int fcomp(long l)    { return Long.bitCount(l); }
+
+    static int fint (long[] la) { return Long.bitCount(la[0]); }
+    static int fcomp(long[] la) { return Long.bitCount(la[0]); }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6539464/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6539464
+ * @summary Math.log() produces inconsistent results between successive runs.
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test.main Test
+ */
+
+public class Test {
+    static double log_value = 17197;
+    static double log_result = Math.log(log_value);
+
+    public static void main(String[] args) throws Exception {
+        for (int i = 0; i < 1000000; i++) {
+            double log_result2 = Math.log(log_value);
+            if (log_result2 != log_result) {
+                throw new InternalError("Math.log produces inconsistent results: " + log_result2 + " != " + log_result);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6589834/Test_ia32.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6589834
+ * @summary deoptimization problem with -XX:+DeoptimizeALot
+ *
+ * @run main/othervm -server Test_ia32
+ */
+
+/***************************************************************************************
+NOTE: The bug shows up (with several "Bug!" message) even without the
+      flag -XX:+DeoptimizeALot. In a debug build, you may want to try
+      the flags -XX:+VerifyStack and -XX:+DeoptimizeALot to get more information.
+****************************************************************************************/
+import java.lang.reflect.Constructor;
+
+public class Test_ia32 {
+
+    public static int NUM_THREADS = 100;
+
+    public static int CLONE_LENGTH = 1000;
+
+    public static void main(String[] args) throws InterruptedException, ClassNotFoundException {
+
+        Reflector[] threads = new Reflector[NUM_THREADS];
+        for (int i = 0; i < threads.length; i++) {
+            threads[i] = new Reflector();
+            threads[i].start();
+        }
+
+        System.out.println("Give Reflector.run() some time to compile...");
+        Thread.sleep(5000);
+
+        System.out.println("Load RMISecurityException causing run() deoptimization");
+        ClassLoader.getSystemClassLoader().loadClass("java.rmi.RMISecurityException");
+
+        for (Reflector thread : threads)
+            thread.requestStop();
+
+        for (Reflector thread : threads)
+            try {
+                thread.join();
+            } catch (InterruptedException e) {
+                System.out.println(e);
+            }
+
+    }
+
+}
+
+class Reflector extends Thread {
+
+    volatile boolean _doSpin = true;
+
+    Test_ia32[] _tests;
+
+    Reflector() {
+        _tests = new Test_ia32[Test_ia32.CLONE_LENGTH];
+        for (int i = 0; i < _tests.length; i++) {
+            _tests[i] = new Test_ia32();
+        }
+    }
+
+    static int g(int i1, int i2, Test_ia32[] arr, int i3, int i4) {
+
+        if (!(i1==1 && i2==2 && i3==3 && i4==4)) {
+            System.out.println("Bug!");
+        }
+
+        return arr.length;
+    }
+
+    static int f(Test_ia32[] arr) {
+        return g(1, 2, arr.clone(), 3, 4);
+    }
+
+    @Override
+    public void run() {
+        Constructor[] ctrs = null;
+        Class<Test_ia32> klass = Test_ia32.class;
+        try {
+            ctrs = klass.getConstructors();
+        } catch (SecurityException e) {
+            System.out.println(e);
+        }
+
+        try {
+            while (_doSpin) {
+                if (f(_tests) < 0)
+                    System.out.println("return value usage");
+            }
+        } catch (NullPointerException e) {
+            e.printStackTrace();
+        }
+
+        System.out.println(this + " - stopped.");
+    }
+
+    public void requestStop() {
+        System.out.println(this + " - stop requested.");
+        _doSpin = false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6603011/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6603011
+ * @summary long/int division by constant
+ *
+ * @run main/othervm -Xcomp -Xbatch -XX:-Inline Test
+ */
+
+//
+// -XX:-Inline is essential to this test so that verification functions
+//   divi, modi, divl and modl generate "plain" divides.
+// -Xcomp -Xbatch are also useful to ensure the full range of
+//   dividend and divisor combinations are tested
+//
+
+import java.net.*;
+
+class s {
+  static int  divi(int  dividend, int  divisor) { return dividend / divisor; }
+  static int  modi(int  dividend, int  divisor) { return dividend % divisor; }
+  static long divl(long dividend, long divisor) { return dividend / divisor; }
+  static long modl(long dividend, long divisor) { return dividend % divisor; }
+}
+
+public class Test implements Runnable {
+  // Report verbose messages on failure; turn off to suppress
+  // too much output with gross numbers of failures.
+  static final boolean VERBOSE = true;
+
+  // Initailize DIVISOR so that it is final in this class.
+  static final int DIVISOR;
+  static {
+    int value = 0;
+    try {
+      value = Integer.decode(System.getProperty("divisor"));
+    } catch (Throwable e) {
+    }
+    DIVISOR = value;
+  }
+
+  // The methods of interest. We want the JIT to compile these
+  // and convert the divide into a multiply.
+  public int divbyI (int dividend)   { return dividend / DIVISOR; }
+  public int modbyI (int dividend)   { return dividend % DIVISOR; }
+  public long divbyL (long dividend) { return dividend / DIVISOR; }
+  public long modbyL (long dividend) { return dividend % DIVISOR; }
+
+  public int divisor() { return DIVISOR; }
+
+  public boolean checkI (int dividend) {
+    int quo = divbyI(dividend);
+    int rem = modbyI(dividend);
+    int quo0 = s.divi(dividend, divisor());
+    int rem0 = s.modi(dividend, divisor());
+
+    if (quo != quo0 || rem != rem0) {
+      if (VERBOSE) {
+        System.out.println("Computed: " + dividend + " / " + divisor() + " = " +
+                           quo  + ", " + dividend + " % " + divisor() + " = " + rem );
+        System.out.println("expected: " + dividend + " / " + divisor() + " = " +
+                           quo0 + ", " + dividend + " % " + divisor() + " = " + rem0);
+        // Report sign of rem failure
+        if (rem != 0 && (rem ^ dividend) < 0) {
+          System.out.println("  rem & dividend have different signs");
+        }
+        // Report range of rem failure
+        if (java.lang.Math.abs(rem) >= java.lang.Math.abs(divisor())) {
+          System.out.println("  remainder out of range");
+        }
+        // Report quo/rem identity relationship failure
+        if ((quo * divisor()) + rem != dividend) {
+          System.out.println("  quotien/remainder invariant broken");
+        }
+      }
+      return false;
+    }
+    return true;
+  }
+
+  public boolean checkL (long dividend) {
+    long quo = divbyL(dividend);
+    long rem = modbyL(dividend);
+    long quo0 = s.divl(dividend, divisor());
+    long rem0 = s.modl(dividend, divisor());
+
+    if (quo != quo0 || rem != rem0) {
+      if (VERBOSE) {
+        System.out.println("  " + dividend + " / " + divisor() + " = " +
+                           quo + ", " + dividend + " % " + divisor() + " = " + rem);
+        // Report sign of rem failure
+        if (rem != 0 && (rem ^ dividend) < 0) {
+          System.out.println("  rem & dividend have different signs");
+        }
+        // Report range of rem failure
+        if (java.lang.Math.abs(rem) >= java.lang.Math.abs(divisor())) {
+          System.out.println("  remainder out of range");
+        }
+        // Report quo/rem identity relationship failure
+        if ((quo * divisor()) + rem != dividend) {
+          System.out.println(" (" + quo + " * " + divisor() + ") + " + rem + " != "
+                             + dividend);
+        }
+      }
+      return false;
+    }
+    return true;
+  }
+
+  public void run() {
+    // Don't try to divide by zero
+    if (divisor() == 0) return;
+
+    // Range of dividends to check. Try dividends from start to end
+    // inclusive, as well as variations on those values as shifted
+    // left.
+    int start = -1024;
+    int end = 1024;
+
+    // Test int division using a variety of dividends.
+    int wrong = 0;
+    int total = 0;
+
+    outerloop:
+    for (int i = start; i <= end; i++) {
+      for (int s = 0; s < 32; s += 4) {
+        total++;
+        int dividend = i << s;
+        if (!checkI(dividend)) {
+          wrong++;
+          // Stop on the first failure
+          // break outerloop;
+        }
+      }
+    }
+    if (wrong > 0) {
+      System.out.println("divisor " + divisor() + ": " +
+                         wrong + "/" + total + " wrong int divisions");
+    }
+
+    // Test long division using a variety of dividends.
+    wrong = 0;
+    total = 0;
+
+    outerloop:
+    for (int i = start; i <= end; i++) {
+      for (int s = 0; s < 64; s += 4) {
+        total++;
+        long dividend = i << s;
+        if (!checkL(dividend)) {
+          wrong++;
+          // Stop on the first failure
+          // break outerloop;
+        }
+      }
+    }
+    if (wrong > 0) {
+      System.out.println("divisor " + divisor() + ": " +
+                         wrong + "/" + total + " wrong long divisions");
+    }
+
+  }
+
+  // Reload this class with the "divisor" property set to the input parameter.
+  // This allows the JIT to see q.DIVISOR as a final constant, and change
+  // any divisions or mod operations into multiplies.
+  public static void test_divisor(int divisor,
+                                  URLClassLoader apploader) throws Exception {
+    System.setProperty("divisor", "" + divisor);
+    ClassLoader loader = new URLClassLoader(apploader.getURLs(),
+                                            apploader.getParent());
+    Class c = loader.loadClass("Test");
+    Runnable r = (Runnable)c.newInstance();
+    r.run();
+  }
+
+  public static void main(String[] args) throws Exception {
+    Class cl = Class.forName("Test");
+    URLClassLoader apploader = (URLClassLoader)cl.getClassLoader();
+
+
+    // Test every divisor between -100 and 100.
+    for (int i = -100; i <= 100; i++) {
+      test_divisor(i, apploader);
+    }
+
+    // Try a few divisors outside the typical range.
+    // The values below have been observed in rt.jar.
+    test_divisor(101, apploader);
+    test_divisor(400, apploader);
+    test_divisor(1000, apploader);
+    test_divisor(3600, apploader);
+    test_divisor(9973, apploader);
+    test_divisor(86400, apploader);
+    test_divisor(1000000, apploader);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6636138/Test1.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6636138
+ * @summary SuperWord::co_locate_pack(Node_List* p) generates memory graph that leads to memory order violation.
+ *
+ * @run main/othervm -server -Xbatch -XX:CompileOnly=Test1.init Test1
+ */
+
+public class Test1 {
+
+    public static void init(int src[], int [] dst, int[] ref) {
+        // initialize the arrays
+        for (int i =0; i<src.length; i++) {
+            src[i] =  i;
+            dst[i] = 2;      // yes, dst[i] needed(otherwise src[i] will be replaced with i)
+            ref[i] = src[i]; // src[i] depends on the store src[i]
+        }
+    }
+
+    public static void verify(int src[], int[] ref) {
+        // check whether src and ref are equal
+        for (int i = 0; i < src.length; i++) {
+            if (src[i] != ref[i]) {
+                System.out.println("Error: src and ref don't match at " + i);
+                System.exit(-1);
+            }
+        }
+    }
+
+    public static void test() {
+        int[] src = new int[34];
+        int[] dst = new int[34];
+        int[] ref = new int[34];
+
+        init(src, dst, ref);
+        verify(src, ref);
+    }
+
+    public static void main(String[] args) {
+        for (int i=0; i< 2000; i++) {
+            test();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6636138/Test2.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6636138
+ * @summary SuperWord::co_locate_pack(Node_List* p) generates memory graph that leads to memory order violation.
+ *
+ * @run main/othervm -server -Xbatch -XX:CompileOnly=Test2.shift Test2
+ */
+
+public class Test2 {
+
+    public static void init(int src[]) {
+        // Initialize the array
+        for (int i = 0; i < src.length; i++)
+            src[i] = i;
+    }
+
+   public static void shift(int src[]) {
+       //left-shift the array
+       for (int i = src.length-1; i > 0; i--){
+           int tmp  = src[i];
+           src[i]   = src[i-1];
+           src[i-1] = tmp;
+       }
+    }
+
+    public static void verify(int src[]) {
+        for (int i = 0; i < src.length; i++){
+            int value = (i-1 + src.length)%src.length; // correct value after shifting
+                if (src[i] != value) {
+                    System.out.println("Error: src["+i+"] should be "+ value + " instead of " + src[i]);
+                    System.exit(-1);
+                }
+        }
+    }
+
+    public static void test() {
+        int[] src = new int[10];
+        init(src);
+        shift(src);
+        verify(src);
+    }
+
+    public static void main(String[] args) {
+        for (int i=0; i< 2000; i++)
+            test();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6711117/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,849 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6711117
+ * @summary Assertion in 64bit server vm (flat != TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr")
+ * @run main/othervm -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:+AggressiveOpts -XX:+UseCompressedOops Test
+ */
+
+final class Test_Class_0 {
+    final static char var_1 = 'E';
+    short var_2 = 16213;
+    final static String var_3 = "jiiibmmsk";
+
+
+    public Test_Class_0()
+    {
+        var_2 ^= 'M';
+        final String var_18 = var_3;
+        var_2--;
+        var_2 |= (byte)('D' / (byte)var_2) - ((byte)1.6680514E38F << + ((byte)'O') & 7320241275829036032L);
+        func_2(((!false & false | false ? true : false) ? true : true | !true) ? var_2 : 834513107);
+        var_2 >>>= var_1;
+        "smiosoebk".codePointCount(true ^ (false ^ ! !false) ? (byte)- ((byte)430513598) : + ((byte)'_'), ~ (true ? (byte)']' : (byte)-2.8272547997066827E307));
+        var_2 -= true ? var_1 : var_1;
+        var_2 ^= var_1;
+        var_2 &= (var_2 |= ~ ((byte)(var_2 *= var_2)));
+        long var_19 = 0L;
+        short var_20 = var_2 += 'P';
+        while (var_19 < 1)
+        {
+            var_2 ^= true ? (byte)- +1.2219539475209E308 : (byte)1.2748408476894178E308;
+            var_19++;
+            var_2 = (byte)((1489358000 == (var_20 | 7816908224315289600L) ? var_1 : var_1) ^ var_19);
+            var_20--;
+        }
+        var_20 -= 'f';
+        var_20 <<= (((new Test_Class_0[(byte)var_20])[(byte)var_2]).var_2 *= false ? 'g' : 'x');
+    }
+
+
+
+
+    static float func_0()
+    {
+        ((new Test_Class_0[(byte)7.774490796987995E307])[(byte)'v']).var_2 <<= false ^ !false ? (short)'v' : "".codePointCount(594464985, 579036736);
+        ((new Test_Class_0[(byte)(((new Test_Class_0[(byte)1361657519])[(byte)2.3703713E38F]).var_2-- - (short)3.5589388134844986E307)])[((true ? !true : false) ^ (!false ? true : !true) ? !false : false) ? (byte)7.047289E37F : (byte)- ((byte)2.6620062118475144E307)]).var_2 *= 3273943364390983680L;
+        --((new Test_Class_0[false ? (byte)(short)1.4965069E36F : (byte)286322022])[(byte)- ((byte)2.742619E38F)]).var_2;
+        long var_4;
+        {
+            double var_5;
+        }
+        var_4 = (byte)1.3509231E38F;
+        ((new Test_Class_0[(byte)'_'])[('g' | 1427123046096105472L) < var_1 >> (byte)(int)(byte)7697616672011068416L ? (byte)var_1 : (byte)1251856579]).var_2--;
+        switch (--((new Test_Class_0[(byte)5.0656327E37F])[(byte)'e']).var_2 != ++((new Test_Class_0[(byte)(int)1.3728667270920175E308])[(byte)+ + -1.6338179407381788E308]).var_2 | !var_3.equalsIgnoreCase("iiwwwln") ? (false ? (byte)1.8291216E38F : (byte)4.778575546584698E307) : (byte)1048254181)
+        {
+            case 99:
+
+        }
+        {
+            byte var_6 = 13;
+        }
+        var_4 = --((new Test_Class_0[!var_3.endsWith("qaoioore") ^ false ? (byte)2.827362738392923E307 : (byte)~4890175967151316992L])[(byte)(short)var_1]).var_2;
+        ++((new Test_Class_0[(byte)(1.0075552E38F + (short)2083553541)])[(byte)(short)(byte)(short)1.6872205E38F]).var_2;
+        return ((new Test_Class_0[(byte)var_1])[(byte)+ +5760973323384750080L]).var_2 - (false ? (byte)'i' : (var_4 = (short)1.2458781351126844E308) + 2.131006E38F);
+    }
+
+    public static long func_1(String arg_0, Object arg_1, final long arg_2)
+    {
+        arg_0 = false ? arg_0 : "fgbrpgsq";
+        ((new Test_Class_0[(byte)- ((byte)']')])[false ? (byte)757239006 : (byte)1866002020]).var_2 ^= (short)(true ? (byte)(((new Test_Class_0[(byte)1416194866])[(byte)1.2309887362692395E308]).var_2 >>= (int)~ ~ ~arg_2) : (byte)5804970709284726784L);
+        final long var_7 = (long)(- + ((long)+ - + - -2.5396583E38F) - - +1.8770165E38F % 2472404173160781824L < --((new Test_Class_0[(byte)5.569360482341752E307])[(byte)(double)(byte)8131142397821553664L]).var_2 ^ true ? (false ? (byte)- -1.163275451591927E308 : (byte)var_1) : (false ? (byte)1843746036 : (byte)1.0209668642291047E308));
+        arg_0 = (arg_0 = arg_0.substring(699480935));
+        switch (((new Test_Class_0[(byte)(5415649243316856832L >> 861936806)])[true | true & !false ? (byte)(short)- -7.785169683394908E307 : (byte)+ ((byte)arg_2)]).var_2++)
+        {
+            case 42:
+
+            case 102:
+
+        }
+        arg_1 = (true || false ? false : true) ? (arg_0 = (arg_0 = "jbfaru")) : arg_0;
+        arg_1 = new byte[(byte)2.669957E38F];
+        boolean var_8 = ! ((false ? (short)1.4259420861834744E308 : (short)7.352115508157158E307) != 1.7635658130722812E308);
+        arg_1 = new Object[(byte)- ((byte)(short)1.8950693E38F)];
+        arg_0 = arg_0;
+        return (byte)1.4762239057269886E308 & 4923938844759802880L;
+    }
+
+    double[][] func_2(final int arg_0)
+    {
+        var_2 >>>= (var_2 >>= var_2++);
+        float var_9 = 0F;
+        var_2 %= var_2;
+        do
+        {
+            ++var_2;
+            var_9++;
+            var_2++;
+        } while (true && (var_9 < 1 && false));
+        double var_10 = 0;
+        final int var_11 = 11903395;
+        do
+        {
+            --var_2;
+            var_10++;
+            ++var_2;
+        } while ((false & true || false) && (var_10 < 2 && ~ ((byte)'[') == (byte)(1.1943192E38F % ('c' << var_1) % (byte)((var_2 |= var_2) + 591679039 / ~5932100696448264192L))));
+        String var_12 = "jkwnk";
+        var_12 = var_3;
+        var_12 = (var_12 = (var_12 = var_3));
+        var_12 = "qrhdwx";
+        var_12 = var_12;
+        short var_13 = (true && true) ^ true | ! (!true || 1646418779 <= (byte)var_1) ? var_2 : var_2;
+        return new double[(byte)var_1][true || false ^ !true ^ true ? (byte)arg_0 : (byte)var_10];
+    }
+
+    private final int func_3()
+    {
+        long var_14 = 's' * (~ ~6656240461354863616L * 3151744928387344384L) << ~ (((var_2 >>>= 6600935261424147456L) % 1798503219359364096L | - ~3832249967647077376L / - ((byte)~1529201870915276800L)) / var_2);
+        {
+            var_14 |= !false | (byte)1078230528 >= (byte)1.3972878565417081E308 | (true | !true & !true & !false) ? var_1 : '_';
+        }
+        long var_15 = 7589204885152164864L;
+        var_2 ^= (var_1 < (byte)'r' ? 475314139 : 'Z') <= 1943074698 ? 'h' : var_1;
+        return 'V' * (false ? (byte)5.498204E37F : (byte)1.0137001669765466E308);
+    }
+
+    protected static boolean func_4(boolean arg_0, byte arg_1, boolean arg_2)
+    {
+        arg_1++;
+        arg_1 &= (((((new Test_Class_0[arg_1][arg_1][arg_1])[arg_1])[arg_1])[arg_1]).var_2 |= arg_2 ? (short)~3038084056596854784L : (short)+ (arg_1 = arg_1));
+        arg_0 |= true;
+        arg_1 %= (arg_1 |= ((new Test_Class_0[arg_1])[arg_1]).var_2--);
+        if (false)
+        {
+            arg_0 |= arg_2;
+        }
+        else
+        {
+            ++(((new Test_Class_0[arg_1][arg_1][arg_1])[arg_1 += var_1])[(!arg_2 | (arg_0 &= false)) ^ (arg_0 | arg_0) ? arg_1 : (arg_1 <<= 3192041751921364992L)][arg_1 /= arg_1]).var_2;
+        }
+        arg_1 &= +(new byte[arg_1])[arg_1];
+        arg_1 <<= 3632133838014908416L;
+        byte[] var_16 = (new byte[arg_1][arg_1--])[arg_1];
+        long var_17;
+        arg_1 ^= ~ arg_1--;
+        arg_0 ^= (arg_2 ^= 1186877294 >= ((new Test_Class_0[arg_1][arg_1])[arg_1][arg_1]).var_2) & arg_2;
+        return var_3.startsWith(var_3);
+    }
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_0.var_2 = "; result += Test.Printer.print(var_2);
+        result += "\n";
+        result += "Test_Class_0.var_1 = "; result += Test.Printer.print(var_1);
+        result += "\n";
+        result += "Test_Class_0.var_3 = "; result += Test.Printer.print(var_3);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+
+class Test_Class_1 {
+    static int var_21 = 670918363;
+    final float var_22 = 8.650798E37F;
+    static int var_23 = 1774228457;
+    final int var_24 = 1282736974;
+    final byte var_25 = !false & false | true ? (byte)7.677121016144275E307 : (byte)'r';
+    static long var_26 = 2939310115459338240L;
+    final long var_27 = var_25 - 7555453173456381952L;
+    double var_28;
+    static String var_29;
+
+
+    public Test_Class_1()
+    {
+        var_29 = Test_Class_0.var_3;
+        ((false ? false || ! !true : ! (! !true & !true)) ? new Test_Class_0() : new Test_Class_0()).var_2++;
+        var_23 -= 2.963694E38F;
+    }
+
+
+
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_1.var_21 = "; result += Test.Printer.print(var_21);
+        result += "\n";
+        result += "Test_Class_1.var_23 = "; result += Test.Printer.print(var_23);
+        result += "\n";
+        result += "Test_Class_1.var_24 = "; result += Test.Printer.print(var_24);
+        result += "\n";
+        result += "Test_Class_1.var_26 = "; result += Test.Printer.print(var_26);
+        result += "\n";
+        result += "Test_Class_1.var_27 = "; result += Test.Printer.print(var_27);
+        result += "\n";
+        result += "Test_Class_1.var_28 = "; result += Test.Printer.print(var_28);
+        result += "\n";
+        result += "Test_Class_1.var_22 = "; result += Test.Printer.print(var_22);
+        result += "\n";
+        result += "Test_Class_1.var_25 = "; result += Test.Printer.print(var_25);
+        result += "\n";
+        result += "Test_Class_1.var_29 = "; result += Test.Printer.print(var_29);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+
+class Test_Class_2 {
+    double var_30;
+    static byte var_31;
+    static char var_32;
+    float var_33;
+    double var_34 = !false & (true ? true : ! !true && false) ? 'q' - 4789231433793305600L - (var_33 = -1.0677024E38F) : 2.65473560313378E307;
+    final double var_35 = ~Test_Class_1.var_26 == 5.145660681364723E307 | false ? 1.4134775E38F : 1.77223030708671E308;
+    final int var_36 = Test_Class_1.var_23 |= Test_Class_1.var_21++;
+
+
+    public Test_Class_2()
+    {
+        Test_Class_0.var_3.replace(Test_Class_0.var_1, 'Q');
+        var_32 = (var_32 = (var_32 = '_'));
+        Test_Class_1.var_26 |= Test_Class_0.var_1;
+        Test_Class_1.var_29 = (Test_Class_1.var_29 = Test_Class_0.var_3);
+        var_32 = Test_Class_0.var_1;
+        var_33 = ((new Test_Class_0[(byte)851412948463452160L])[var_31 = new Test_Class_1().var_25]).var_2;
+        var_33 = ! (((!false | false) & (false || !true) ? false : ! !false) | false) ? new Test_Class_1().var_25 : (var_31 = new Test_Class_1().var_25);
+        float var_38 = 0F;
+        var_34 /= 5336005797857974272L;
+        for ("ccnyq".endsWith((new String[(byte)Test_Class_1.var_26])[var_31 = (var_31 = (var_31 = (byte)4.7927775E37F))]); var_38 < 2; var_32 = '^' <= Test_Class_0.var_1 ^ true ? (var_32 = Test_Class_0.var_1) : (var_32 = 'V'))
+        {
+            var_32 = true ? 'a' : (var_32 = Test_Class_0.var_1);
+            var_38++;
+            var_33 = new Test_Class_1().var_24;
+            var_32 = ! (true || true ? !false : (short)3.2844383E37F < 2.1400662E38F) ? (char)1.2691096999143248E308 : (! !false ^ true ? 's' : 'q');
+        }
+        var_32 = 'B';
+        {
+            var_32 = Test_Class_0.var_1;
+        }
+        var_32 = Test_Class_0.var_1;
+        Test_Class_1.var_29 = "ov";
+        Test_Class_1.var_29 = "smtolghw";
+    }
+
+
+
+
+
+    protected final static String func_0(final long[][] arg_0, byte arg_1, char arg_2)
+    {
+        arg_1 <<= (((new Test_Class_2[arg_1])[arg_1]).var_34 > new Test_Class_0().var_2 | true ? new Test_Class_0() : (new Test_Class_0[arg_1][arg_1])[new Test_Class_1().var_25][new Test_Class_1().var_25]).var_2;
+        Test_Class_1.var_26 >>>= (!true | !true | (new boolean[arg_1])[arg_1] || true ? (new Test_Class_1[arg_1])[arg_1] : new Test_Class_1()).var_27;
+        float var_37 = 0F;
+        arg_2 >>= ((new Test_Class_1[arg_1][arg_1])[arg_1][arg_1]).var_25;
+        do
+        {
+            ((new Test_Class_2[arg_1 /= 2055714081])[arg_1]).var_34 = 'l';
+            var_37++;
+            Test_Class_1.var_29 = Test_Class_0.var_3;
+        } while ((false ? false : false) && var_37 < 7);
+        Test_Class_1.var_29 = Test_Class_0.var_3 + "";
+        ((new Test_Class_2[new Test_Class_1().var_25][new Test_Class_1().var_25])[new Test_Class_1().var_25][arg_1 |= new Test_Class_0().var_2]).var_34 += Test_Class_0.var_1;
+        return "esb";
+    }
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_2.var_32 = "; result += Test.Printer.print(var_32);
+        result += "\n";
+        result += "Test_Class_2.var_36 = "; result += Test.Printer.print(var_36);
+        result += "\n";
+        result += "Test_Class_2.var_30 = "; result += Test.Printer.print(var_30);
+        result += "\n";
+        result += "Test_Class_2.var_34 = "; result += Test.Printer.print(var_34);
+        result += "\n";
+        result += "Test_Class_2.var_35 = "; result += Test.Printer.print(var_35);
+        result += "\n";
+        result += "Test_Class_2.var_33 = "; result += Test.Printer.print(var_33);
+        result += "\n";
+        result += "Test_Class_2.var_31 = "; result += Test.Printer.print(var_31);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+
+final class Test_Class_3 extends Test_Class_2 {
+    byte var_39 = 23;
+    static boolean var_40 = false;
+
+
+    public Test_Class_3()
+    {
+        if (true)
+        {
+            Test_Class_1.var_21 |= new Test_Class_1().var_27;
+        }
+        else
+        {
+            final float var_46 = 7.9266674E37F;
+            ++Test_Class_1.var_26;
+        }
+        {
+            Test_Class_1.var_23++;
+        }
+        var_30 = ((new Test_Class_1[var_39][var_39])[var_39][var_39]).var_25;
+        if (var_40 &= (var_40 |= (var_40 |= var_40)))
+        {
+            Test_Class_0.var_3.indexOf(Test_Class_1.var_29 = "xfgyblg", 'X' >>> ((Test_Class_1)(new Object[var_39])[((new Test_Class_1[var_39])[var_39]).var_25]).var_27);
+        }
+        else
+        {
+            var_40 &= var_40 && var_40;
+        }
+        ((Test_Class_2)(((new boolean[var_39])[var_39++] ? (var_40 &= var_40) : (var_40 &= false)) ? (new Test_Class_2[var_39][var_39])[var_39][var_39] : (new Object[var_39][var_39])[var_39][var_39])).var_33 = (var_40 ? new Test_Class_1() : new Test_Class_1()).var_25;
+        switch (var_39)
+        {
+            case 24:
+
+        }
+        var_39 += (((var_40 ^= true) ? new Test_Class_0() : new Test_Class_0()).var_2 ^= var_40 & (var_40 | false) ? var_39-- : var_36);
+        new Test_Class_0().var_2 %= (new Test_Class_0().var_2 += (var_39 ^= Test_Class_1.var_26));
+    }
+
+
+
+
+    private static String func_0()
+    {
+        --Test_Class_1.var_26;
+        {
+            Test_Class_1.var_29 = var_40 ? Test_Class_0.var_3 : "rahqjhqf";
+        }
+        if (var_40 ^= var_40)
+        {
+            Test_Class_1.var_26 >>= (Test_Class_2.var_32 = Test_Class_0.var_1) / new Test_Class_0().var_2;
+        }
+        else
+        {
+            ++Test_Class_1.var_21;
+        }
+        ++Test_Class_1.var_26;
+        int var_41 = 0;
+        ++Test_Class_1.var_26;
+        do
+        {
+            var_40 = (var_40 = true);
+            var_41++;
+            Test_Class_0 var_42 = new Test_Class_0();
+        } while (var_41 < 1);
+        Test_Class_1.var_29 = "f";
+        Test_Class_1 var_43;
+        var_43 = (var_43 = new Test_Class_1());
+        Test_Class_2.var_32 = 'V';
+        long var_44 = 0L;
+        Test_Class_1.var_23--;
+        while (var_40 && (var_44 < 1 && var_40))
+        {
+            Test_Class_1.var_29 = "bsgewkmk";
+            var_44++;
+            Test_Class_1.var_29 = "ktegattny";
+            var_40 &= var_40 ^ (var_40 |= (short)4.4487427E37F < 'n') & true;
+        }
+        Test_Class_1.var_23 %= (((var_40 |= true & (var_40 &= var_40)) ^ true ? new Test_Class_0() : new Test_Class_0()).var_2 -= 1.6638270827800162E308);
+        float var_45;
+        var_32 = (Test_Class_2.var_32 = Test_Class_0.var_1);
+        return false ? "fluk" : "wt";
+    }
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_3.var_32 = "; result += Test.Printer.print(var_32);
+        result += "\n";
+        result += "Test_Class_3.var_36 = "; result += Test.Printer.print(var_36);
+        result += "\n";
+        result += "Test_Class_3.var_30 = "; result += Test.Printer.print(var_30);
+        result += "\n";
+        result += "Test_Class_3.var_34 = "; result += Test.Printer.print(var_34);
+        result += "\n";
+        result += "Test_Class_3.var_35 = "; result += Test.Printer.print(var_35);
+        result += "\n";
+        result += "Test_Class_3.var_33 = "; result += Test.Printer.print(var_33);
+        result += "\n";
+        result += "Test_Class_3.var_31 = "; result += Test.Printer.print(var_31);
+        result += "\n";
+        result += "Test_Class_3.var_39 = "; result += Test.Printer.print(var_39);
+        result += "\n";
+        result += "Test_Class_3.var_40 = "; result += Test.Printer.print(var_40);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+
+class Test_Class_4 {
+    final float var_47 = 1.9043434E38F;
+    final byte var_48 = 32;
+    final float var_49 = 2.8176504E38F;
+    final char var_50 = 'r';
+    final String var_51 = "uwgmnjpg";
+    static int var_52;
+    short[] var_53;
+    Test_Class_1 var_54;
+
+
+    public Test_Class_4()
+    {
+        final float var_55 = (3.1554042E38F == var_50 ^ (Test_Class_3.var_40 |= true) ? (Test_Class_3.var_40 ^= Test_Class_3.var_40) ^ true : Test_Class_3.var_40) ? new Test_Class_0().var_2 : 2.965321E38F;
+        new Test_Class_0().var_2 = (new Test_Class_0().var_2 >>= +new Test_Class_1().var_25);
+        ((Test_Class_1.var_29 = (Test_Class_1.var_29 = (Test_Class_1.var_29 = "l"))) + "").equalsIgnoreCase(Test_Class_1.var_29 = "garnio");
+        double var_56 = 0;
+        Test_Class_1.var_29 = var_51;
+        while (var_56 < 1)
+        {
+            ((Test_Class_3)(Test_Class_2)(new Object[var_48])[var_48]).var_33 = ++Test_Class_1.var_26;
+            var_56++;
+            Test_Class_1.var_29 = (Test_Class_1.var_29 = "fvyjrih");
+            float[] var_57;
+        }
+        {
+            ((new Test_Class_2[var_48])[((new Test_Class_3[var_48][var_48])[var_48][var_48]).var_39]).var_34 *= 2.2119221943262553E307;
+            Test_Class_2.var_32 = true ? 'q' : 't';
+            ((new Test_Class_3[--((Test_Class_3)new Test_Class_2()).var_39])[var_48]).var_33 = new Test_Class_0().var_2;
+            int var_58 = 'i' >> (var_48 << Test_Class_0.var_1);
+        }
+        Test_Class_3.var_40 &= true && var_51.equalsIgnoreCase(var_51) || new Test_Class_0().var_2 < --((new Test_Class_3[var_48])[var_48]).var_39;
+        ((Test_Class_3)(Test_Class_2)(new Object[var_48][var_48])[var_48][var_48]).var_34 += Test_Class_1.var_26--;
+        var_54 = new Test_Class_1();
+        Test_Class_3.var_40 |= (long)(!true ^ var_47 > ((Test_Class_2)(new Object[var_48])[var_48]).var_34 ? (Test_Class_2.var_31 = (Test_Class_3.var_31 = (Test_Class_3.var_31 = var_48))) : (var_54 = new Test_Class_1()).var_25) <= var_48;
+        (Test_Class_3.var_40 ? (true ? new Test_Class_0() : new Test_Class_0()) : new Test_Class_0()).var_2 &= var_48;
+        (Test_Class_3.var_40 ? (Test_Class_3)new Test_Class_2() : (new Test_Class_3[var_48][var_48])[var_48][var_48]).var_34 += Test_Class_1.var_21;
+        Test_Class_3 var_59;
+        Test_Class_2.var_32 = 'H';
+        --Test_Class_1.var_26;
+    }
+
+
+
+
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_4.var_50 = "; result += Test.Printer.print(var_50);
+        result += "\n";
+        result += "Test_Class_4.var_52 = "; result += Test.Printer.print(var_52);
+        result += "\n";
+        result += "Test_Class_4.var_53 = "; result += Test.Printer.print(var_53);
+        result += "\n";
+        result += "Test_Class_4.var_47 = "; result += Test.Printer.print(var_47);
+        result += "\n";
+        result += "Test_Class_4.var_49 = "; result += Test.Printer.print(var_49);
+        result += "\n";
+        result += "Test_Class_4.var_48 = "; result += Test.Printer.print(var_48);
+        result += "\n";
+        result += "Test_Class_4.var_51 = "; result += Test.Printer.print(var_51);
+        result += "\n";
+        result += "Test_Class_4.var_54 = "; result += Test.Printer.print(var_54);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+
+class Test_Class_5 extends Test_Class_4 {
+    char var_60 = '_';
+    final byte var_61 = 101;
+
+
+    public Test_Class_5()
+    {
+        Test_Class_0.var_3.indexOf(Test_Class_1.var_21, (Test_Class_3.var_40 |= Test_Class_3.var_40) ? new Test_Class_1().var_24 : 'i');
+    }
+
+
+
+
+    final char func_0(Test_Class_1 arg_0, final Test_Class_1 arg_1)
+    {
+        long var_62 = 0L;
+        "aoal".toLowerCase();
+        for (byte var_63 = arg_0.var_25; var_62 < 1 && "ji".startsWith("dikrs".endsWith("va") ? (Test_Class_1.var_29 = "mvp") : Test_Class_0.var_3, Test_Class_1.var_23); ((Test_Class_2)(new Object[arg_0.var_25])[var_63]).var_34 -= new Test_Class_2().var_36)
+        {
+            ((Test_Class_3.var_40 ? false : Test_Class_3.var_40) ? (Test_Class_0)(new Object[arg_1.var_25][arg_1.var_25])[arg_1.var_25][var_63] : (Test_Class_0)(new Object[var_48][var_48])[var_63][var_63]).var_2 += true ^ Test_Class_3.var_40 ^ (((new Test_Class_3[var_63][var_63])[var_63][var_61]).var_35 != 2.1423512E38F | ! !false) ? var_49 + ~var_48 : 3.1549515E38F;
+            var_62++;
+            (!false & ((Test_Class_3.var_40 |= (Test_Class_3.var_40 ^= true)) & true) ? (Test_Class_2)(new Object[var_63])[var_63] : (new Test_Class_2[var_63][var_61])[var_63][arg_0.var_25]).var_33 = (var_60 *= (var_60 *= ((new Test_Class_3[var_48][var_61])[var_61][var_63]).var_35));
+            float var_64;
+        }
+        Test_Class_1.var_29 = "xyenjknu";
+        Test_Class_3.var_40 ^= (Test_Class_3.var_40 = !false & true) ? Test_Class_3.var_40 : Test_Class_3.var_40;
+        ((new Test_Class_2[var_48][arg_1.var_25])[arg_0.var_25][var_48]).var_33 = var_61;
+        Test_Class_1.var_21 |= --(((new Test_Class_3[Test_Class_3.var_31 = arg_0.var_25][var_61])[var_61])[(((new Test_Class_3[var_48][var_61])[var_48])[((Test_Class_3)(new Test_Class_2[var_48][arg_0.var_25])[var_61][var_48]).var_39]).var_39 >>>= var_60]).var_39;
+        var_51.compareToIgnoreCase("hgcaybk");
+        Test_Class_0 var_65 = (Test_Class_1.var_29 = "t").codePointBefore(1602805584) >= (float)((new Test_Class_3[var_48][var_61])[var_48][Test_Class_2.var_31 = arg_1.var_25]).var_39 - 7.256386549028811E307 ? new Test_Class_0() : ((new Test_Class_0[arg_0.var_25][var_48][var_48])[arg_0.var_25])[arg_0.var_25][Test_Class_2.var_31 = arg_1.var_25];
+        return 'U';
+    }
+
+    protected static Test_Class_1 func_1(final short arg_0, long arg_1)
+    {
+        --new Test_Class_0().var_2;
+        "xb".length();
+        if ((Test_Class_3.var_40 ^= (Test_Class_2.var_32 = Test_Class_0.var_1) == 1.2609472E38F) ? (Test_Class_3.var_40 = (Test_Class_3.var_40 = Test_Class_3.var_40)) : true)
+        {
+            --Test_Class_1.var_26;
+        }
+        else
+        {
+            "ybbe".substring(209378562, var_52 = (Test_Class_1.var_21 |= (Test_Class_2.var_31 = (byte)'a')));
+        }
+        Test_Class_3.var_40 &= (Test_Class_3.var_40 &= true) && (Test_Class_1.var_29 = (Test_Class_1.var_29 = Test_Class_0.var_3)).endsWith(Test_Class_0.var_3);
+        (false ? new Test_Class_0() : new Test_Class_0()).var_2 >>= new Test_Class_1().var_25;
+        return 9.430116214455637E307 <= (true ? (Test_Class_3)new Test_Class_2() : (Test_Class_3)new Test_Class_2()).var_34 ? new Test_Class_1() : new Test_Class_1();
+    }
+
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test_Class_5.var_50 = "; result += Test.Printer.print(var_50);
+        result += "\n";
+        result += "Test_Class_5.var_60 = "; result += Test.Printer.print(var_60);
+        result += "\n";
+        result += "Test_Class_5.var_52 = "; result += Test.Printer.print(var_52);
+        result += "\n";
+        result += "Test_Class_5.var_53 = "; result += Test.Printer.print(var_53);
+        result += "\n";
+        result += "Test_Class_5.var_47 = "; result += Test.Printer.print(var_47);
+        result += "\n";
+        result += "Test_Class_5.var_49 = "; result += Test.Printer.print(var_49);
+        result += "\n";
+        result += "Test_Class_5.var_48 = "; result += Test.Printer.print(var_48);
+        result += "\n";
+        result += "Test_Class_5.var_61 = "; result += Test.Printer.print(var_61);
+        result += "\n";
+        result += "Test_Class_5.var_51 = "; result += Test.Printer.print(var_51);
+        result += "\n";
+        result += "Test_Class_5.var_54 = "; result += Test.Printer.print(var_54);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+}
+
+public class Test {
+    Test_Class_4 var_66;
+    Test_Class_3 var_67;
+    Test_Class_5 var_68;
+    Test_Class_2[] var_69;
+    long var_70 = ++Test_Class_1.var_26 & Test_Class_1.var_21++;
+    final static double var_71 = 3.566207721984698E307;
+    static boolean var_72;
+    final static String var_73 = "nmxx";
+
+
+    private final char func_0(Test_Class_3 arg_0, final boolean[] arg_1)
+    {
+        ((Test_Class_5)(arg_1[arg_0.var_39++] ? new Test_Class_2[(var_67 = arg_0).var_39] : (new Object[arg_0.var_39])[arg_0.var_39])).var_54 = new Test_Class_1();
+        new Test_Class_0();
+        (((new Test[arg_0.var_39][arg_0.var_39][arg_0.var_39])[++arg_0.var_39])[arg_0.var_39][arg_0.var_39]).var_66 = (var_68 = (new Test_Class_5[arg_0.var_39][arg_0.var_39])[arg_0.var_39][arg_0.var_39]);
+        ((new Test[arg_0.var_39])[(arg_0 = (var_67 = (arg_0 = arg_0))).var_39]).var_70 = ((new long[arg_0.var_39][arg_0.var_39])[arg_0.var_39])[arg_0.var_39 = ((var_67 = (arg_0 = arg_0)).var_39 -= new Test_Class_0().var_2)] << ']';
+        arg_0 = (new Test_Class_0().var_2 *= ((new Test_Class_2[arg_0.var_39])[arg_0.var_39]).var_34) >= arg_0.var_39 ? (var_67 = arg_0) : (arg_0 = arg_0);
+        Test_Class_1.var_26--;
+        Test_Class_4 var_74 = var_66 = (Test_Class_5)(new Test_Class_4[arg_0.var_39])[arg_0.var_39];
+        Test_Class_3.var_40 ^= ! (Test_Class_3.var_40 &= (Test_Class_3.var_40 ^= Test_Class_3.var_40) | (Test_Class_3.var_40 &= Test_Class_3.var_40));
+        var_72 = (arg_1[(var_67 = arg_0).var_39] | !Test_Class_3.var_40 & !Test_Class_3.var_40 ? (Test_Class_1.var_29 = var_73).endsWith((var_66 = var_74).var_51) && (Test_Class_3.var_40 ^= Test_Class_3.var_40) : (Test_Class_3.var_40 ^= Test_Class_3.var_40)) ^ !Test_Class_3.var_40;
+        Test_Class_3.var_40 &= (Test_Class_3.var_40 &= (Test_Class_3.var_40 = Test_Class_3.var_40) & Test_Class_3.var_40 ^ Test_Class_3.var_40);
+        arg_0.var_39 -= --var_70;
+        int var_75;
+        double var_76;
+        {
+            boolean var_77;
+            var_70 ^= new Test_Class_0().var_2++;
+        }
+        Test_Class_1.var_26 /= Test_Class_0.var_3.lastIndexOf(~new Test_Class_1().var_25, Test_Class_1.var_21);
+        Test_Class_1.var_26 |= Test_Class_1.var_21;
+        (((new Test_Class_3[arg_0.var_39][arg_0.var_39][var_74.var_48])[arg_0.var_39])[arg_0.var_39][arg_0.var_39]).var_34 %= (var_67 = arg_0).var_39;
+        Test_Class_1.var_21 &= arg_0.var_39;
+        var_68 = (var_68 = (Test_Class_5)var_74);
+        var_72 = false;
+        return new Test_Class_5().var_60 ^= 'v';
+    }
+
+    public static Test_Class_2 func_1(byte[][] arg_0, final int arg_1, Test_Class_1 arg_2, final Test_Class_1 arg_3)
+    {
+        ((new Test[arg_3.var_25])[((Test_Class_3)new Test_Class_2()).var_39 *= --Test_Class_1.var_26]).var_67 = (((new Test[arg_2.var_25])[(((new Test[arg_2.var_25][arg_2.var_25])[arg_3.var_25][arg_3.var_25]).var_67 = (new Test_Class_3[arg_2.var_25][arg_2.var_25])[arg_2.var_25][arg_3.var_25]).var_39 %= Test_Class_1.var_26]).var_67 = (((new Test[arg_3.var_25][arg_2.var_25])[arg_3.var_25][arg_2.var_25]).var_67 = (((new Test[arg_3.var_25])[arg_2.var_25]).var_67 = (Test_Class_3)new Test_Class_2())));
+        {
+            --Test_Class_1.var_26;
+        }
+        if (!Test_Class_3.var_40)
+        {
+            "jfqj".replaceAll("ac", Test_Class_0.var_3);
+        }
+        else
+        {
+            arg_2 = (((new Test_Class_5[arg_3.var_25][arg_2.var_25])[((new Test_Class_3[arg_2.var_25])[arg_3.var_25]).var_39][((Test_Class_3)(new Test_Class_2[arg_2.var_25])[arg_3.var_25]).var_39]).var_54 = arg_3);
+            new Test_Class_1();
+        }
+        if (true)
+        {
+            Test_Class_0.func_0();
+        }
+        else
+        {
+            Test_Class_1.var_23 /= Test_Class_1.var_26;
+        }
+        Test_Class_1.var_26--;
+        Test_Class_1.var_23 ^= Test_Class_0.var_1;
+        return new Test_Class_2();
+    }
+
+    public static String execute()
+    {
+        try {
+            Test t = new Test();
+            try { t.test(); }
+            catch(Throwable e) { }
+            try { return t.toString(); }
+            catch (Throwable e) { return "Error during result conversion to String"; }
+        } catch (Throwable e) { return "Error during test execution"; }
+    }
+
+    public static void main(String[] args)
+    {
+        try {
+            Test t = new Test();
+            try { t.test(); }
+            catch(Throwable e) { }
+            try { System.out.println(t); }
+            catch(Throwable e) { }
+        } catch (Throwable e) { }
+    }
+
+    private void test()
+    {
+        double var_78 = 0;
+        --Test_Class_1.var_26;
+        long var_79;
+        for (var_70 /= 8.089457748637276E307; var_78 < 162 && !true & (true ? Test_Class_3.var_40 : (Test_Class_3.var_40 ^= Test_Class_3.var_40)); Test_Class_1.var_26 -= 1.2513521E38F)
+        {
+            short var_80 = 10682;
+            Test_Class_1.var_21--;
+            var_78++;
+            var_72 = (Test_Class_3.var_40 |= (Test_Class_3.var_40 ^= false));
+            ++Test_Class_1.var_26;
+        }
+        Test_Class_2 var_81;
+        new Test_Class_4();
+        int var_82 = 0;
+        ++Test_Class_1.var_23;
+        do
+        {
+            --Test_Class_1.var_26;
+            var_82++;
+            ++Test_Class_1.var_21;
+        } while ((Test_Class_3.var_40 ^= false & false) && var_82 < 256);
+        Test_Class_1.var_23 |= (var_68 = (var_68 = (Test_Class_5)(var_66 = new Test_Class_4()))).var_48 + (Test_Class_1.var_26 >>> new Test_Class_0().var_2);
+        (true ? new Test_Class_5() : (var_68 = (var_68 = new Test_Class_5()))).var_60 *= Test_Class_0.var_1;
+    }
+    public String toString()
+    {
+        String result =  "[\n";
+        result += "Test.var_69 = "; result += Printer.print(var_69);
+        result += "\n";
+        result += "Test.var_70 = "; result += Printer.print(var_70);
+        result += "\n";
+        result += "Test.var_71 = "; result += Printer.print(var_71);
+        result += "\n";
+        result += "Test.var_73 = "; result += Printer.print(var_73);
+        result += "\n";
+        result += "Test.var_68 = "; result += Printer.print(var_68);
+        result += "\n";
+        result += "Test.var_66 = "; result += Printer.print(var_66);
+        result += "\n";
+        result += "Test.var_72 = "; result += Printer.print(var_72);
+        result += "\n";
+        result += "Test.var_67 = "; result += Printer.print(var_67);
+        result += "";
+        result += "\n]";
+        return result;
+    }
+    static class Printer
+    {
+        public static String print(boolean arg) { return String.valueOf(arg); }
+        public static String print(byte arg)    { return String.valueOf(arg); }
+        public static String print(short arg)   { return String.valueOf(arg); }
+        public static String print(char arg)    { return String.valueOf((int)arg); }
+        public static String print(int arg)     { return String.valueOf(arg); }
+        public static String print(long arg)    { return String.valueOf(arg); }
+        public static String print(float arg)   { return String.valueOf(arg); }
+        public static String print(double arg)  { return String.valueOf(arg); }
+
+
+        public static String print(Object arg)
+        {
+            return print_r(new java.util.Stack(), arg);
+        }
+
+        private static String print_r(java.util.Stack visitedObjects, Object arg)
+        {
+            String result = "";
+            if (arg == null)
+                result += "null";
+            else
+            if (arg.getClass().isArray())
+            {
+                for (int i = 0; i < visitedObjects.size(); i++)
+                    if (visitedObjects.elementAt(i) == arg) return "<recursive>";
+
+                visitedObjects.push(arg);
+
+                final String delimiter = ", ";
+                result += "[";
+
+                if (arg instanceof Object[])
+                {
+                    Object[] array = (Object[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print_r(visitedObjects, array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof boolean[])
+                {
+                    boolean[] array = (boolean[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof byte[])
+                {
+                    byte[] array = (byte[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof short[])
+                {
+                    short[] array = (short[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof char[])
+                {
+                    char[] array = (char[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof int[])
+                {
+                     int[] array = (int[]) arg;
+                     for (int i = 0; i < array.length; i++)
+                     {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                     }
+                }
+                else
+                if (arg instanceof long[])
+                {
+                    long[] array = (long[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof float[])
+                {
+                    float[] array = (float[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+                else
+                if (arg instanceof double[])
+                {
+                    double[] array = (double[]) arg;
+                    for (int i = 0; i < array.length; i++)
+                    {
+                        result += print(array[i]);
+                        if (i < array.length - 1) result += delimiter;
+                    }
+                }
+
+                result += "]";
+                visitedObjects.pop();
+
+            } else
+            {
+                result += arg.toString();
+            }
+
+            return result;
+        }
+    }
+}
+
--- a/test/compiler/6757316/Test6757316.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/test/compiler/6757316/Test6757316.java	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/test/compiler/6758234/Test6758234.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/test/compiler/6758234/Test6758234.java	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6772683/InterruptedTest.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6772683
+ * @summary Thread.isInterrupted() fails to return true on multiprocessor PC
+ * @run main/othervm InterruptedTest
+ */
+
+public class InterruptedTest {
+
+    public static void main(String[] args) throws Exception {
+        Thread workerThread = new Thread("worker") {
+            public void run() {
+                System.out.println("Worker thread: running...");
+                while (!Thread.currentThread().isInterrupted()) {
+                }
+                System.out.println("Worker thread: bye");
+            }
+        };
+        System.out.println("Main thread: starts a worker thread...");
+        workerThread.start();
+        System.out.println("Main thread: waits at most 5s for the worker thread to die...");
+        workerThread.join(5000); // Wait 5 sec to let run() method to be compiled
+        int ntries = 0;
+        while (workerThread.isAlive() && ntries < 5) {
+            System.out.println("Main thread: interrupts the worker thread...");
+            workerThread.interrupt();
+            if (workerThread.isInterrupted()) {
+                System.out.println("Main thread: worker thread is interrupted");
+            }
+            ntries++;
+            System.out.println("Main thread: waits for the worker thread to die...");
+            workerThread.join(1000); // Wait 1 sec and try again
+        }
+        if (ntries == 5) {
+          System.out.println("Main thread: the worker thread dod not die");
+          System.exit(97);
+        }
+        System.out.println("Main thread: bye");
+    }
+
+}
--- a/test/compiler/6775880/Test.java	Tue Jul 28 13:35:00 2009 -0600
+++ b/test/compiler/6775880/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 @@
  * @bug 6775880
  * @summary EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now")
  * @compile -source 1.4 -target 1.4 Test.java
- * @run main/othervm -server -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
  */
 
 public class Test {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6778657/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6778657
+ * @summary Casts in SharedRuntime::f2i, f2l, d2i and d2l rely on undefined C++ behaviour
+ */
+
+public class Test {
+  public static void check_f2i(int expect) {
+    float check = expect;
+    check *= 2;
+    int actual = (int) check;
+    if (actual != expect)
+      throw new RuntimeException("expecting " + expect + ", got " + actual);
+  }
+
+  public static void check_f2l(long expect) {
+    float check = expect;
+    check *= 2;
+    long actual = (long) check;
+    if (actual != expect)
+      throw new RuntimeException("expecting " + expect + ", got " + actual);
+  }
+
+  public static void check_d2i(int expect) {
+    double check = expect;
+    check *= 2;
+    int actual = (int) check;
+    if (actual != expect)
+      throw new RuntimeException("expecting " + expect + ", got " + actual);
+  }
+
+  public static void check_d2l(long expect) {
+    double check = expect;
+    check *= 2;
+    long actual = (long) check;
+    if (actual != expect)
+      throw new RuntimeException("expecting " + expect + ", got " + actual);
+  }
+
+  public static void main(String[] args) {
+    check_f2i(Integer.MAX_VALUE);
+    check_f2i(Integer.MIN_VALUE);
+    check_f2l(Long.MAX_VALUE);
+    check_f2l(Long.MIN_VALUE);
+    check_d2i(Integer.MAX_VALUE);
+    check_d2i(Integer.MIN_VALUE);
+    check_d2l(Long.MAX_VALUE);
+    check_d2l(Long.MIN_VALUE);
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6795161/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6795161
+ * @summary Escape analysis leads to data corruption
+ * @run main/othervm -server -Xcomp -XX:CompileOnly=Test -XX:+DoEscapeAnalysis Test
+ */
+
+class Test_Class_1 {
+    static String var_1;
+
+    static void badFunc(int size)
+    {
+        try {
+          for (int i = 0; i < 1; (new byte[size-i])[0] = 0, i++) {}
+        } catch (Exception e) {
+          // don't comment it out, it will lead to correct results ;)
+          //System.out.println("Got exception: " + e);
+        }
+    }
+}
+
+public class Test {
+    static String var_1_copy = Test_Class_1.var_1;
+
+    static byte var_check;
+
+    public static void main(String[] args)
+    {
+        var_check = 1;
+
+        Test_Class_1.badFunc(-1);
+
+        System.out.println("EATester.var_check = " + Test.var_check + " (expected 1)\n");
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6795362/Test6795362.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6795362
+ * @summary 32bit server compiler leads to wrong results on solaris-x86
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6795362.sub Test6795362
+ */
+
+public class Test6795362 {
+    public static void main(String[] args)
+    {
+        sub();
+
+        if (var_bad != 0)
+            throw new InternalError(var_bad + " != 0");
+    }
+
+    static long var_bad = -1L;
+
+    static void sub()
+    {
+        var_bad >>= 65;
+        var_bad /= 65;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6797305/Test6797305.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6797305
+ * @summary Add LoadUB and LoadUI opcode class
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6797305.loadB,Test6797305.loadB2L,Test6797305.loadUB,Test6797305.loadUBmask,Test6797305.loadUB2L,Test6797305.loadS,Test6797305.loadS2L,Test6797305.loadUS,Test6797305.loadUSmask,Test6797305.loadUS2L,Test6797305.loadI,Test6797305.loadI2L,Test6797305.loadUI2L,Test6797305.loadL Test6797305
+ */
+
+public class Test6797305 {
+    static final byte[]  ba = new byte[]  { -1 };
+    static final short[] sa = new short[] { -1 };
+    static final int[]   ia = new int[]   { -1 };
+    static final long[]  la = new long[]  { -1 };
+
+    public static void main(String[] args)
+    {
+        long b = loadB(ba);
+        if (b != -1)
+            throw new InternalError("loadB failed: " + b + " != " + -1);
+
+        long b2l = loadB2L(ba);
+        if (b2l != -1L)
+            throw new InternalError("loadB2L failed: " + b2l + " != " + -1L);
+
+        int ub = loadUB(ba);
+        if (ub != 0xFF)
+            throw new InternalError("loadUB failed: " + ub + " != " + 0xFF);
+
+        int ubmask = loadUBmask(ba);
+        if (ubmask != 0xFE)
+            throw new InternalError("loadUBmask failed: " + ubmask + " != " + 0xFE);
+
+        long ub2l = loadUB2L(ba);
+        if (ub2l != 0xFFL)
+            throw new InternalError("loadUB2L failed: " + ub2l + " != " + 0xFFL);
+
+        int s = loadS(sa);
+        if (s != -1)
+            throw new InternalError("loadS failed: " + s + " != " + -1);
+
+        long s2l = loadS2L(sa);
+        if (s2l != -1L)
+            throw new InternalError("loadS2L failed: " + s2l + " != " + -1L);
+
+        int us = loadUS(sa);
+        if (us != 0xFFFF)
+            throw new InternalError("loadUS failed: " + us + " != " + 0xFFFF);
+
+        int usmask = loadUSmask(sa);
+        if (usmask != 0xFFFE)
+            throw new InternalError("loadUBmask failed: " + ubmask + " != " + 0xFFFE);
+
+        long us2l = loadUS2L(sa);
+        if (us2l != 0xFFFFL)
+            throw new InternalError("loadUS2L failed: " + us2l + " != " + 0xFFFFL);
+
+        int i = loadI(ia);
+        if (i != -1)
+            throw new InternalError("loadI failed: " + i + " != " + -1);
+
+        long i2l = loadI2L(ia);
+        if (i2l != -1L)
+            throw new InternalError("loadI2L failed: " + i2l + " != " + -1L);
+
+        long ui2l = loadUI2L(ia);
+        if (ui2l != 0xFFFFFFFFL)
+            throw new InternalError("loadUI2L failed: " + ui2l + " != " + 0xFFFFFFFFL);
+
+        long l = loadL(la);
+        if (l != -1L)
+            throw new InternalError("loadL failed: " + l + " != " + -1L);
+    }
+
+    static int  loadB     (byte[] ba)  { return ba[0];               }
+    static long loadB2L   (byte[] ba)  { return ba[0];               }
+    static int  loadUB    (byte[] ba)  { return ba[0] & 0xFF;        }
+    static int  loadUBmask(byte[] ba)  { return ba[0] & 0xFE;        }
+    static long loadUB2L  (byte[] ba)  { return ba[0] & 0xFF;        }
+
+    static int  loadS     (short[] sa) { return sa[0];               }
+    static long loadS2L   (short[] sa) { return sa[0];               }
+    static int  loadUS    (short[] sa) { return sa[0] & 0xFFFF;      }
+    static int  loadUSmask(short[] sa) { return sa[0] & 0xFFFE;      }
+    static long loadUS2L  (short[] sa) { return sa[0] & 0xFFFF;      }
+
+    static int  loadI     (int[] ia)   { return ia[0];               }
+    static long loadI2L   (int[] ia)   { return ia[0];               }
+    static long loadUI2L  (int[] ia)   { return ia[0] & 0xFFFFFFFFL; }
+
+    static long loadL     (long[] la)  { return la[0];               }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6799693/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6799693
+ * @summary Server compiler leads to data corruption when expression throws an Exception
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test Test
+ */
+
+public class Test {
+   static int var_bad = 1;
+
+   public static void main(String[] args)
+   {
+      var_bad++;
+
+      try {
+         for (int i = 0; i < 10; i++) (new byte[((byte)-1 << i)])[0]  = 0;
+      }
+      catch (Exception e) { System.out.println("Got " + e); }
+
+      System.out.println("Test.var_bad = " +  var_bad + " (expected 2)\n");
+   }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6800154/Test6800154.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6800154
+ * @summary Add comments to long_by_long_mulhi() for better understandability
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6800154.divcomp Test6800154
+ */
+
+import java.net.URLClassLoader;
+
+public class Test6800154 implements Runnable {
+    static final long[] DIVIDENDS = {
+        0,
+        1,
+        2,
+        1423487,
+        4444441,
+        4918923241323L,
+        -1,
+        -24351,
+        0x3333,
+        0x0000000080000000L,
+        0x7fffffffffffffffL,
+        0x8000000000000000L
+    };
+
+    static final long[] DIVISORS = {
+        1,
+        2,
+        17,
+        12342,
+        24123,
+        143444,
+        123444442344L,
+        -1,
+        -2,
+        -4423423234231423L,
+        0x0000000080000000L,
+        0x7fffffffffffffffL,
+        0x8000000000000000L
+    };
+
+    // Initialize DIVISOR so that it is final in this class.
+    static final long DIVISOR;
+
+    static {
+        long value = 0;
+        try {
+            value = Long.decode(System.getProperty("divisor"));
+        } catch (Throwable e) {
+        }
+        DIVISOR = value;
+    }
+
+    public static void main(String[] args) throws Exception
+    {
+        Class cl = Class.forName("Test6800154");
+        URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+
+        // Iterate over all divisors.
+        for (int i = 0; i < DIVISORS.length; i++) {
+            System.setProperty("divisor", "" + DIVISORS[i]);
+            ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+            Class c = loader.loadClass("Test6800154");
+            Runnable r = (Runnable) c.newInstance();
+            r.run();
+        }
+    }
+
+    public void run()
+    {
+        // Iterate over all dividends.
+        for (int i = 0; i < DIVIDENDS.length; i++) {
+            long dividend = DIVIDENDS[i];
+
+            long expected = divint(dividend);
+            long result = divcomp(dividend);
+
+            if (result != expected)
+                throw new InternalError(dividend + " / " + DIVISOR + " failed: " + result + " != " + expected);
+        }
+    }
+
+    static long divint(long a)  { return a / DIVISOR; }
+    static long divcomp(long a) { return a / DIVISOR; }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6805724/Test6805724.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6805724
+ * @summary ModLNode::Ideal() generates functionally incorrect graph when divisor is any (2^k-1) constant.
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6805724.fcomp Test6805724
+ */
+
+import java.net.URLClassLoader;
+
+public class Test6805724 implements Runnable {
+    // Initialize DIVISOR so that it is final in this class.
+    static final long DIVISOR;  // 2^k-1 constant
+
+    static {
+        long value = 0;
+        try {
+            value = Long.decode(System.getProperty("divisor"));
+        } catch (Throwable t) {
+            // This one is required for the Class.forName() in main.
+        }
+        DIVISOR = value;
+    }
+
+    static long fint(long x) {
+        return x % DIVISOR;
+    }
+
+    static long fcomp(long x) {
+        return x % DIVISOR;
+    }
+
+    public void run() {
+        long a = 0x617981E1L;
+
+        long expected = fint(a);
+        long result = fcomp(a);
+
+        if (result != expected)
+            throw new InternalError(result + " != " + expected);
+    }
+
+    public static void main(String args[]) throws Exception {
+        Class cl = Class.forName("Test6805724");
+        URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+
+        // Iterate over all 2^k-1 divisors.
+        for (int k = 1; k < Long.SIZE; k++) {
+            long divisor = (1L << k) - 1;
+            System.setProperty("divisor", "" + divisor);
+            ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+            Class c = loader.loadClass("Test6805724");
+            Runnable r = (Runnable) c.newInstance();
+            r.run();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6814842/Test6814842.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6814842
+ * @summary Load shortening optimizations
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6814842.loadS2B,Test6814842.loadS2Bmask255,Test6814842.loadUS2B,Test6814842.loadUS2Bmask255,Test6814842.loadI2B,Test6814842.loadI2Bmask255,Test6814842.loadI2S,Test6814842.loadI2Smask255,Test6814842.loadI2Smask65535,Test6814842.loadI2US,Test6814842.loadI2USmask255,Test6814842.loadI2USmask65535 Test6814842
+ */
+
+public class Test6814842 {
+    static final short[] sa = new short[] { (short) 0xF1F2 };
+    static final char[]  ca = new char[]  { (char) 0xF3F4  };
+    static final int[]   ia = new int[]   { 0xF1F2F3F4     };
+
+    public static void main(String[] args)
+    {
+        byte s2b = loadS2B(sa);
+        if (s2b != (byte) 0xF2)
+            throw new InternalError("loadS2B failed: " + s2b + " != " + (byte) 0xF2);
+
+        byte s2bmask255 = loadS2Bmask255(sa);
+        if (s2bmask255 != (byte) 0xF2)
+            throw new InternalError("loadS2Bmask255 failed: " + s2bmask255 + " != " + (byte) 0xF2);
+
+        byte us2b = loadUS2B(ca);
+        if (us2b != (byte) 0xF4)
+            throw new InternalError("loadUS2B failed: " + us2b + " != " + (byte) 0xF4);
+
+        byte us2bmask255 = loadUS2Bmask255(ca);
+        if (us2bmask255 != (byte) 0xF4)
+            throw new InternalError("loadUS2Bmask255 failed: " + us2bmask255 + " != " + (byte) 0xF4);
+
+        byte i2b = loadI2B(ia);
+        if (i2b != (byte) 0xF4)
+            throw new InternalError("loadI2B failed: " + i2b + " != " + (byte) 0xF4);
+
+        byte i2bmask255 = loadI2Bmask255(ia);
+        if (i2bmask255 != (byte) 0xF4)
+            throw new InternalError("loadI2Bmask255 failed: " + i2bmask255 + " != " + (byte) 0xF4);
+
+        short i2s = loadI2S(ia);
+        if (i2s != (short) 0xF3F4)
+            throw new InternalError("loadI2S failed: " + i2s + " != " + (short) 0xF3F4);
+
+        short i2smask255 = loadI2Smask255(ia);
+        if (i2smask255 != (short) 0xF4)
+            throw new InternalError("loadI2Smask255 failed: " + i2smask255 + " != " + (short) 0xF4);
+
+        short i2smask65535 = loadI2Smask65535(ia);
+        if (i2smask65535 != (short) 0xF3F4)
+            throw new InternalError("loadI2Smask65535 failed: " + i2smask65535 + " != " + (short) 0xF3F4);
+
+        char i2us = loadI2US(ia);
+        if (i2us != (char) 0xF3F4)
+            throw new InternalError("loadI2US failed: " + (int) i2us + " != " + (char) 0xF3F4);
+
+        char i2usmask255 = loadI2USmask255(ia);
+        if (i2usmask255 != (char) 0xF4)
+            throw new InternalError("loadI2USmask255 failed: " + (int) i2usmask255 + " != " + (char) 0xF4);
+
+        char i2usmask65535 = loadI2USmask65535(ia);
+        if (i2usmask65535 != (char) 0xF3F4)
+            throw new InternalError("loadI2USmask65535 failed: " + (int) i2usmask65535 + " != " + (char) 0xF3F4);
+    }
+
+    static byte  loadS2B          (short[] sa) { return (byte)  (sa[0]         ); }
+    static byte  loadS2Bmask255   (short[] sa) { return (byte)  (sa[0] & 0xFF  ); }
+
+    static byte  loadUS2B         (char[]  ca) { return (byte)  (ca[0]         ); }
+    static byte  loadUS2Bmask255  (char[]  ca) { return (byte)  (ca[0] & 0xFF  ); }
+
+    static byte  loadI2B          (int[]   ia) { return (byte)  (ia[0]         ); }
+    static byte  loadI2Bmask255   (int[]   ia) { return (byte)  (ia[0] & 0xFF  ); }
+
+    static short loadI2S          (int[]   ia) { return (short) (ia[0]         ); }
+    static short loadI2Smask255   (int[]   ia) { return (short) (ia[0] & 0xFF  ); }
+    static short loadI2Smask65535 (int[]   ia) { return (short) (ia[0] & 0xFFFF); }
+
+    static char  loadI2US         (int[]   ia) { return (char)  (ia[0]         ); }
+    static char  loadI2USmask255  (int[]   ia) { return (char)  (ia[0] & 0xFF  ); }
+    static char  loadI2USmask65535(int[]   ia) { return (char)  (ia[0] & 0xFFFF); }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6823354/Test6823354.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,266 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6823354
+ * @summary These methods can be instrinsified by using bit scan, bit test, and population count instructions.
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6823354.lzcomp,Test6823354.tzcomp,.dolzcomp,.dotzcomp Test6823354
+ */
+
+import java.net.URLClassLoader;
+
+public class Test6823354 {
+    // Arrays of corner case values.
+    static final int[]  ia = new int[]  { 0,  1,  -1,  Integer.MIN_VALUE, Integer.MAX_VALUE };
+    static final long[] la = new long[] { 0L, 1L, -1L, Long.MIN_VALUE,    Long.MAX_VALUE    };
+
+    public static void main(String[] args) throws Exception {
+        // Load the classes and the methods.
+        Integer.numberOfLeadingZeros(0);
+        Integer.numberOfTrailingZeros(0);
+        Long.numberOfLeadingZeros(0);
+        Long.numberOfTrailingZeros(0);
+
+        lz();
+        tz();
+    }
+
+    static void lz() throws Exception {
+        // int
+
+        // Test corner cases.
+        for (int i = 0; i < ia.length; i++) {
+            int x = ia[i];
+            check(x, lzcomp(x), lzint(x));
+        }
+
+        // Test all possible return values.
+        for (int i = 0; i < Integer.SIZE; i++) {
+            int x = 1 << i;
+            check(x, lzcomp(x), lzint(x));
+        }
+
+        String classname = "Test6823354$lzconI";
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < ia.length; i++) {
+            testclass(classname, ia[i]);
+        }
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < Integer.SIZE; i++) {
+            int x = 1 << i;
+            testclass(classname, x);
+        }
+
+
+        // long
+
+        // Test corner cases.
+        for (int i = 0; i < ia.length; i++) {
+            long x = la[i];
+            check(x, lzcomp(x), lzint(x));
+        }
+
+        // Test all possible return values.
+        for (int i = 0; i < Long.SIZE; i++) {
+            long x = 1L << i;
+            check(x, lzcomp(x), lzint(x));
+        }
+
+        classname = "Test6823354$lzconL";
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < la.length; i++) {
+            testclass(classname, la[i]);
+        }
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < Long.SIZE; i++) {
+            long x = 1L << i;
+            testclass(classname, x);
+        }
+    }
+
+    static void tz() throws Exception {
+        // int
+
+        // Test corner cases.
+        for (int i = 0; i < ia.length; i++) {
+            int x = ia[i];
+            check(x, tzcomp(x), tzint(x));
+        }
+
+        // Test all possible return values.
+        for (int i = 0; i < Integer.SIZE; i++) {
+            int x = 1 << i;
+            check(x, tzcomp(x), tzint(x));
+        }
+
+        String classname = "Test6823354$tzconI";
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < ia.length; i++) {
+            testclass(classname, ia[i]);
+        }
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < Integer.SIZE; i++) {
+            int x = 1 << i;
+            testclass(classname, x);
+        }
+
+
+        // long
+
+        // Test corner cases.
+        for (int i = 0; i < la.length; i++) {
+            long x = la[i];
+            check(x, tzcomp(x), tzint(x));
+        }
+
+        // Test all possible return values.
+        for (int i = 0; i < Long.SIZE; i++) {
+            long x = 1L << i;
+            check(x, tzcomp(x), tzint(x));
+        }
+
+        classname = "Test6823354$tzconL";
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < la.length; i++) {
+            testclass(classname, la[i]);
+        }
+
+        // Test Ideal optimizations (constant values).
+        for (int i = 0; i < Long.SIZE; i++) {
+            long x = 1L << i;
+            testclass(classname, x);
+        }
+    }
+
+    static void check(int value, int result, int expected) {
+        //System.out.println(value + ": " + result + ", " + expected);
+        if (result != expected)
+            throw new InternalError(value + " failed: " + result + " != " + expected);
+    }
+
+    static void check(long value, long result, long expected) {
+        //System.out.println(value + ": " + result + ", " + expected);
+        if (result != expected)
+            throw new InternalError(value + " failed: " + result + " != " + expected);
+    }
+
+    static int lzint( int i)  { return Integer.numberOfLeadingZeros(i); }
+    static int lzcomp(int i)  { return Integer.numberOfLeadingZeros(i); }
+
+    static int lzint( long l) { return Long.numberOfLeadingZeros(l); }
+    static int lzcomp(long l) { return Long.numberOfLeadingZeros(l); }
+
+    static int tzint( int i)  { return Integer.numberOfTrailingZeros(i); }
+    static int tzcomp(int i)  { return Integer.numberOfTrailingZeros(i); }
+
+    static int tzint( long l) { return Long.numberOfTrailingZeros(l); }
+    static int tzcomp(long l) { return Long.numberOfTrailingZeros(l); }
+
+    static void testclass(String classname, int x) throws Exception {
+        System.setProperty("value", "" + x);
+        loadandrunclass(classname);
+    }
+
+    static void testclass(String classname, long x) throws Exception {
+        System.setProperty("value", "" + x);
+        loadandrunclass(classname);
+    }
+
+    static void loadandrunclass(String classname) throws Exception {
+        Class cl = Class.forName(classname);
+        URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+        ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+        Class c = loader.loadClass(classname);
+        Runnable r = (Runnable) c.newInstance();
+        r.run();
+    }
+
+    public static class lzconI implements Runnable {
+        static final int VALUE;
+
+        static {
+            int value = 0;
+            try {
+                value = Integer.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            VALUE = value;
+        }
+
+        public void run() { check(VALUE, lzint(VALUE), dolzcomp()); }
+        static int dolzcomp() { return lzcomp(VALUE); }
+    }
+
+    public static class lzconL implements Runnable {
+        static final long VALUE;
+
+        static {
+            long value = 0;
+            try {
+                value = Long.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            VALUE = value;
+        }
+
+        public void run() { check(VALUE, lzint(VALUE), dolzcomp()); }
+        static int dolzcomp() { return lzcomp(VALUE); }
+    }
+
+    public static class tzconI implements Runnable {
+        static final int VALUE;
+
+        static {
+            int value = 0;
+            try {
+                value = Integer.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            VALUE = value;
+        }
+
+        public void run() { check(VALUE, tzint(VALUE), dotzcomp()); }
+        static int dotzcomp() { return tzcomp(VALUE); }
+    }
+
+    public static class tzconL implements Runnable {
+        static final long VALUE;
+
+        static {
+            long value = 0;
+            try {
+                value = Long.decode(System.getProperty("value"));
+            } catch (Throwable e) {}
+            VALUE = value;
+        }
+
+        public void run() { check(VALUE, tzint(VALUE), dotzcomp()); }
+        static int dotzcomp() { return tzcomp(VALUE); }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6823453/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6823453
+ * @summary DeoptimizeALot causes fastdebug server jvm to fail with assert(false,"unscheduable graph")
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test -XX:+DeoptimizeALot Test
+ */
+
+public class Test {
+
+   static long vara_1 = 1L;
+
+   static void testa() {
+      short var_2 = (byte) 1.0E10;
+
+      for ( Object temp = new byte[(byte)1.0E10];  true ;
+            var_2 = "1".equals("0") ? ((byte) vara_1) : 1 ) {}
+   }
+
+   static void testb() {
+      long var_1 = -1L;
+
+      short var_2 = (byte) 1.0E10;
+
+      for ( Object temp = new byte[(byte)1.0E10];  true ;
+            var_2 = "1".equals("0") ? ((byte) var_1) : 1 ) {}
+   }
+
+   static void testc() {
+      long var_1 = -1L;
+      if (vara_1 > 0)  var_1 = 1L;
+
+      int var_2 = (byte)var_1 - 128;
+
+      for ( Object temp = new byte[var_2];  true ;
+            var_2 = "1".equals("0") ? 2 : 1 ) {}
+   }
+
+   static void testd() {
+      long var_1 = 0L;
+
+      int var_2 = (byte)var_1 + 1;
+      for (int i=0; i<2 ; i++)  var_2 = var_2 - 1;
+
+      for ( Object temp = new byte[var_2];  true ;
+            var_2 = "1".equals("0") ? 2 : 1 ) {}
+   }
+
+   public static void main(String[] args) throws Exception {
+      int nex = 0;
+
+      try {
+         testa();
+      }
+      catch (java.lang.NegativeArraySizeException ex) { nex++; }
+      try {
+         testb();
+      }
+      catch (java.lang.NegativeArraySizeException ex) { nex++; }
+      try {
+         testc();
+      }
+      catch (java.lang.NegativeArraySizeException ex) { nex++; }
+      try {
+         testd();
+      }
+      catch (java.lang.NegativeArraySizeException ex) { nex++; }
+
+      if (nex != 4)
+        System.exit(97);
+   }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6826736/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6826736
+ * @summary CMS: core dump with -XX:+UseCompressedOops
+ *
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:+ScavengeALot -XX:+UseCompressedOops -XX:HeapBaseMinAddress=32g -XX:CompileThreshold=100 -XX:CompileOnly=Test.test -XX:-BlockLayoutRotateLoops -XX:LoopUnrollLimit=0 Test
+ */
+
+public class Test {
+    int[] arr;
+    int[] arr2;
+    int test(int r) {
+        for (int i = 0; i < 100; i++) {
+            for (int j = i; j < 100; j++) {
+               int a = 0;
+               for (long k = 0; k < 100; k++) {
+                  a += k;
+               }
+               if (arr != null)
+                   a = arr[j];
+               r += a;
+            }
+        }
+        return r;
+    }
+
+    public static void main(String[] args) {
+        int r = 0;
+        Test t = new Test();
+        for (int i = 0; i < 100; i++) {
+            t.arr = new int[100];
+            r = t.test(r);
+        }
+        System.out.println("Warmup 1 is done.");
+        for (int i = 0; i < 100; i++) {
+            t.arr = null;
+            r = t.test(r);
+        }
+        System.out.println("Warmup 2 is done.");
+        for (int i = 0; i < 100; i++) {
+            t.arr = new int[100];
+            r = t.test(r);
+        }
+        System.out.println("Warmup is done.");
+        for (int i = 0; i < 100; i++) {
+            t.arr = new int[1000000];
+            t.arr = null;
+            r = t.test(r);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6832293/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6832293
+ * @summary JIT compiler got wrong result in type checking with -server
+ * @run main/othervm  -Xcomp -XX:CompileOnly=Test.run Test
+ */
+
+import java.io.PrintStream;
+
+interface SomeInterface {
+    int SEVENS = 777;
+}
+
+interface AnotherInterface {
+    int THIRDS = 33;
+}
+
+class SomeClass implements SomeInterface {
+    int i;
+
+    SomeClass(int i) {
+        this.i = i;
+    }
+}
+
+class ImmediateSubclass extends SomeClass implements SomeInterface {
+    float f;
+
+    ImmediateSubclass(int i, float f) {
+        super(i);
+        this.f = f;
+    }
+}
+
+final class FinalSubclass extends ImmediateSubclass implements AnotherInterface {
+    double d;
+
+     FinalSubclass(int i, float f, double d) {
+        super(i, f);
+        this.d = d;
+    }
+}
+
+public class Test {
+
+    public static void main(String args[]) throws Exception{
+        /* try to pre initialize */
+        SomeClass[] a=new SomeClass[10];
+        Class.forName("ImmediateSubclass");
+        Class.forName("FinalSubclass");
+        System.exit(run(args, System.out) + 95/*STATUS_TEMP*/);
+    }
+
+    static int errorStatus = 0/*STATUS_PASSED*/;
+
+    static void errorAlert(PrintStream out, int errorLevel) {
+        out.println("Test: failure #" + errorLevel);
+        errorStatus = 2/*STATUS_FAILED*/;
+    }
+
+    static SomeClass[] v2 = new FinalSubclass[4];
+
+    public static int run(String args[],PrintStream out) {
+        int i [], j [];
+        SomeInterface u [], v[] [];
+        AnotherInterface w [];
+        SomeClass x [] [];
+
+        i = new int [10];
+        i[0] = 777;
+        j = (int []) i;
+        if (j != i)
+            errorAlert(out, 2);
+        else if (j.length != 10)
+            errorAlert(out, 3);
+        else if (j[0] != 777)
+            errorAlert(out, 4);
+
+        v = new SomeClass [3] [];
+        x = (SomeClass [] []) v;
+        if (! (x instanceof SomeInterface [] []))
+            errorAlert(out, 5);
+        else if (! (x instanceof SomeClass [] []))
+            errorAlert(out, 6);
+        else if (x != v)
+            errorAlert(out, 7);
+
+        x[0] = (SomeClass []) new ImmediateSubclass [4];
+        if (! (x[0] instanceof ImmediateSubclass []))
+            errorAlert(out, 8);
+        else if (x[0].length != 4)
+            errorAlert(out, 9);
+
+        x[1] = (SomeClass []) v2;
+        if (! (x[1] instanceof FinalSubclass []))
+            errorAlert(out, 10);
+        else if (x[1].length != 4)
+            errorAlert(out, 11);
+
+        w = (AnotherInterface []) x[1];
+        if (! (w instanceof FinalSubclass []))
+            errorAlert(out, 12);
+        else if (w != x[1])
+            errorAlert(out, 13);
+        else if (w.length != 4)
+            errorAlert(out, 14);
+
+        return errorStatus;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6837011/Test6837011.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6837011
+ * @summary SIGSEGV in PhaseIdealLoop in 32bit jvm
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6837011.main Test6837011
+ */
+
+public class Test6837011 {
+    static boolean var_3 = true;
+
+    public static void main(String[] args) {
+        double var_5;
+        char var_7 = 1;
+        double var_11 = 0;
+
+        do {
+            var_11++;
+            var_5 = (var_7 /= ( var_3 ? ~1L : 3 ) );
+        } while (var_11 < 1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6837094/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2009 Google Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6837094
+ * @summary False positive for "meet not symmetric" failure
+ *
+ * @run main/othervm -Xbatch -XX:CompileOnly=Test.collectIs,Test$Factory$1.getArray,Test$Factory$2.getArray Test
+ */
+
+import java.util.Set;
+import java.util.HashSet;
+
+public class Test {
+
+  private interface Factory<M extends Interface> {
+    Factory<Child0> Zero = new Factory<Child0>() {
+      public Child0[] getArray() { return new Child0[1]; }
+    };
+
+    Factory<Child1> One = new Factory<Child1>() {
+      public Child1[] getArray() { return new Child1[1]; }
+    };
+
+    M[] getArray();
+  }
+
+  /**
+   * C2 asserts when compiling this method. Bimorphic inlining happens at
+   * getArray call site. A Phi in the catch block tries to join the meet type
+   * from he inline site (Parent[]) with the type expected by CI (Interface[]).
+   *
+   * C2 throws an assert when it doesn't need to.
+   */
+  private static <I extends Interface> void collectIs(
+      Factory<I> factory, Set<Interface> s) {
+    for (I i : factory.getArray()) {
+      try {
+        s.add(i);
+      } catch (Exception e) {
+      }
+    }
+  }
+
+  static public void main(String argv[]) {
+    Set<Interface> s = new HashSet();
+
+    for (int i = 0; i < 25000; i++) {
+      collectIs(Factory.Zero, s);
+      collectIs(Factory.One, s);
+    }
+  }
+}
+
+/**
+ * Establish necessary class hierarchy
+ */
+
+interface Interface {
+}
+
+class Parent {
+}
+
+class Child0 extends Parent implements Interface {
+}
+
+class Child1 extends Parent implements Interface {
+}
+
+class Child2 extends Parent implements Interface {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6843752/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6843752
+ * @summary missing code for an anti-dependent Phi in GCM
+ * @run main/othervm -Xbatch Test
+ */
+
+public class Test {
+
+    Item list;
+
+    static class Item {
+        public Item    next;
+        public Item    prev;
+        public boolean remove;
+
+        Item(boolean r) { remove = r; }
+    }
+
+    private void linkIn(Item item) {
+        Item head = list;
+        if (head == null) {
+            item.next = item;
+            item.prev = item;
+            list = item;
+        } else {
+            item.next = head;
+            item.prev = head.prev;
+            head.prev.next = item;
+            head.prev = item;
+        }
+    }
+
+    private void linkOut(Item item) {
+        Item head = list;
+        if (item.next == item) {
+            list = null;
+        } else {
+            item.prev.next = item.next;
+            item.next.prev = item.prev;
+            if (head == item) {
+                list = item.next;
+            }
+        }
+        item.next = null;
+        item.prev = null; // this is the null pointer we are seeing
+    }
+
+    private void removeItems(int numItems) {
+        Item item = list;
+        if (item == null) {
+            return;
+        }
+        Item last = item.prev;
+        boolean done = false;
+        while (!done && numItems > 1) {
+            // the original code "done = (item == last);" triggered an infinite loop
+            // and was changed slightly in order to produce an exception instead.
+            done = (item.next == last.next);
+            item = item.next;
+            if (item.prev.remove) {
+                linkOut(item.prev);
+            }
+        }
+    }
+
+    public void perform(int numItems) {
+        for (int i = 0; i < numItems; i++) {
+            linkIn(new Item(i == 0));
+        }
+        removeItems(numItems);
+        list = null;
+    }
+
+    static public void main(String[] args) {
+        int caseCnt = 0;
+        Test bj = new Test();
+        try {
+            for (; caseCnt < 500000;) {
+                int numItems = (++caseCnt % 2);
+                if ((caseCnt % 64) == 0) {
+                    numItems = 5;
+                }
+                bj.perform(numItems);
+                if ((caseCnt % 100000) == 0) {
+                    System.out.println("successfully performed " + caseCnt + " cases");
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("ERROR: crashed during case " + caseCnt);
+            e.printStackTrace(System.out);
+            System.exit(97);
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6849574/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6849574
+ * @summary VM crash using NonBlockingHashMap (high_scale_lib)
+ *
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+VerifyBeforeGC Test
+ */
+
+import java.util.concurrent.atomic.*;
+
+public class Test extends Thread {
+
+    public static void main(String[] args) {
+        AtomicReferenceArray a = new AtomicReferenceArray(10000);
+        for (int i = 0; i < 100000; i++) {
+            a.getAndSet(9999, new Object());
+            if (i > 99990) System.gc();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6851282/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6851282
+ * @summary JIT miscompilation results in null entry in array when using CompressedOops
+ *
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops Test
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Test {
+  void foo(A a, A[] as) {
+    for (A a1 : as) {
+      B[] filtered = a.c(a1);
+      for (B b : filtered) {
+        if (b == null) {
+          System.out.println("bug: b == null");
+          System.exit(97);
+        }
+      }
+    }
+  }
+
+  public static void main(String[] args) {
+    List<A> as = new ArrayList<A>();
+    for (int i = 0; i < 5000; i++) {
+      List<B> bs = new ArrayList<B>();
+      for (int j = i; j < i + 1000; j++)
+        bs.add(new B(j));
+      as.add(new A(bs.toArray(new B[0])));
+    }
+    new Test().foo(as.get(0), as.subList(1, as.size()).toArray(new A[0]));
+  }
+}
+
+class A {
+  final B[] bs;
+
+  public A(B[] bs) {
+    this.bs = bs;
+  }
+
+  final B[] c(final A a) {
+    return new BoxedArray<B>(bs).filter(new Function<B, Boolean>() {
+      public Boolean apply(B arg) {
+        for (B b : a.bs) {
+          if (b.d == arg.d)
+            return true;
+        }
+        return false;
+      }
+    });
+  }
+}
+
+class BoxedArray<T> {
+
+  private final T[] array;
+
+  BoxedArray(T[] array) {
+    this.array = array;
+  }
+
+  public T[] filter(Function<T, Boolean> function) {
+    boolean[] include = new boolean[array.length];
+    int len = 0;
+    int i = 0;
+    while (i < array.length) {
+      if (function.apply(array[i])) {
+        include[i] = true;
+        len += 1;
+      }
+      i += 1;
+    }
+    T[] result = (T[]) java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), len);
+    len = 0;
+    i = 0;
+    while (len < result.length) {
+      if (include[i]) {
+        result[len] = array[i];
+        len += 1;
+      }
+      i += 1;
+    }
+    return result;
+  }
+}
+
+interface Function<T, R> {
+  R apply(T arg);
+}
+
+class B {
+  final int d;
+  public B(int d) {
+    this.d = d;
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6855164/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6855164
+ * @summary SIGSEGV during compilation of method involving loop over CharSequence
+ * @run main/othervm -Xbatch Test
+ */
+
+public class Test{
+    public static void main(String[] args) throws Exception {
+        StringBuffer builder = new StringBuffer();
+
+        for(int i = 0; i < 100; i++)
+            builder.append("I am the very model of a modern major general\n");
+
+        for(int j = 0; j < builder.length(); j++){
+            previousSpaceIndex(builder, j);
+        }
+    }
+
+    private static final int previousSpaceIndex(CharSequence sb, int seek) {
+        seek--;
+        while (seek > 0) {
+            if (sb.charAt(seek) == ' ') {
+                while (seek > 0 && sb.charAt(seek - 1) == ' ')
+                    seek--;
+                return seek;
+            }
+            seek--;
+        }
+        return 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6857159/Test6857159.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6857159
+ * @summary local schedule failed with checkcast of Thread.currentThread()
+ *
+ * @run shell Test6857159.sh
+ */
+
+public class Test6857159 extends Thread {
+    static class ct0 extends Test6857159 {
+        public void message() {
+            // System.out.println("message");
+        }
+
+        public void run() {
+             message();
+             ct0 ct = (ct0) Thread.currentThread();
+             ct.message();
+        }
+    }
+    static class ct1 extends ct0 {
+        public void message() {
+            // System.out.println("message");
+        }
+    }
+    static class ct2 extends ct0 {
+        public void message() {
+            // System.out.println("message");
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        for (int i = 0; i < 100000; i++) {
+            Thread t = null;
+            switch (i % 3) {
+              case 0: t = new ct0(); break;
+              case 1: t = new ct1(); break;
+              case 2: t = new ct2(); break;
+            }
+            t.start();
+            t.join();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6857159/Test6857159.sh	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,65 @@
+#!/bin/sh
+# 
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+# 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.
+# 
+# 
+
+if [ "${TESTSRC}" = "" ]
+then
+  echo "TESTSRC not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+echo "TESTSRC=${TESTSRC}"
+if [ "${TESTJAVA}" = "" ]
+then
+  echo "TESTJAVA not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+echo "TESTJAVA=${TESTJAVA}"
+if [ "${TESTCLASSES}" = "" ]
+then
+  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+echo "TESTCLASSES=${TESTCLASSES}"
+echo "CLASSPATH=${CLASSPATH}"
+
+set -x
+
+cp ${TESTSRC}/Test6857159.java .
+cp ${TESTSRC}/Test6857159.sh .
+
+${TESTJAVA}/bin/javac -d . Test6857159.java
+
+${TESTJAVA}/bin/java  ${TESTVMOPTS} -Xbatch -XX:+PrintCompilation -XX:CompileOnly=Test6857159\$ct.run Test6857159 > test.out 2>&1
+
+grep "COMPILE SKIPPED" test.out
+
+result=$?
+if [ $result -eq 1 ]
+then
+  echo "Passed"
+  exit 0
+else
+  echo "Failed"
+  exit 1
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6859338/Test6859338.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6859338
+ * @summary Assertion failure in sharedRuntime.cpp
+ *
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions  -XX:-InlineObjectHash -Xbatch -XX:-ProfileInterpreter Test6859338
+ */
+
+public class Test6859338 {
+    static Object[] o = new Object[] { new Object(), null };
+    public static void main(String[] args) {
+        int total = 0;
+        try {
+            // Exercise the implicit null check in the unverified entry point
+            for (int i = 0; i < 40000; i++) {
+                int limit = o.length;
+                if (i < 20000) limit = 1;
+                for (int j = 0; j < limit; j++) {
+                    total += o[j].hashCode();
+                }
+            }
+
+        } catch (NullPointerException e) {
+            // this is expected.  A true failure causes a crash
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6860469/Test.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2009 Google Inc.  All Rights Reserved.
+ * 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6860469
+ * @summary remix_address_expressions reshapes address expression with bad control
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test.C Test
+ */
+
+public class Test {
+
+  private static final int H = 16;
+  private static final int F = 9;
+
+  static int[] fl = new int[1 << F];
+
+  static int C(int ll, int f) {
+    int max = -1;
+    int min = H + 1;
+
+    if (ll != 0) {
+      if (ll < min) {
+        min = ll;
+      }
+      if (ll > max) {
+        max = ll;
+      }
+    }
+
+    if (f > max) {
+      f = max;
+    }
+    if (min > f) {
+      min = f;
+    }
+
+    for (int mc = 1 >> max - f; mc <= 0; mc++) {
+      int i = mc << (32 - f);
+      fl[i] = max;
+    }
+
+    return min;
+  }
+
+  public static void main(String argv[]) {
+    C(0, 10);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/runtime/6819213/TestBootNativeLibraryPath.java	Tue Jul 28 13:50:07 2009 -0600
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * 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.
+ */
+
+/*
+ * @test TestBootNativeLibraryPath.java
+ * @bug 6819213
+ * @compile -XDignore.symbol.file TestBootNativeLibraryPath.java
+ * @summary verify sun.boot.native.library.path is expandable on 32 bit systems
+ * @run main TestBootNativeLibraryPath
+ * @author ksrini
+*/
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.tools.JavaCompiler;
+import javax.tools.ToolProvider;
+
+public class TestBootNativeLibraryPath {
+
+    private static final String TESTFILE = "Test6";
+
+    static void createTestClass() throws IOException {
+        FileOutputStream fos = new FileOutputStream(TESTFILE + ".java");
+        PrintStream ps = new PrintStream(fos);
+        ps.println("public class " + TESTFILE + "{");
+        ps.println("public static void main(String[] args) {\n");
+        ps.println("System.out.println(System.getProperty(\"sun.boot.library.path\"));\n");
+        ps.println("}}\n");
+        ps.close();
+        fos.close();
+
+        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
+        String javacOpts[] = {TESTFILE + ".java"};
+        if (javac.run(null, null, null,  javacOpts) != 0) {
+            throw new RuntimeException("compilation of " + TESTFILE + ".java Failed");
+        }
+    }
+
+    static List<String> doExec(String... args) {
+        String javaCmd = System.getProperty("java.home") + "/bin/java";
+        if (!new File(javaCmd).exists()) {
+            javaCmd = System.getProperty("java.home") + "/bin/java.exe";
+        }
+
+        ArrayList<String> cmds = new ArrayList<String>();
+        cmds.add(javaCmd);
+        for (String x : args) {
+            cmds.add(x);
+        }
+        System.out.println("cmds=" + cmds);
+        ProcessBuilder pb = new ProcessBuilder(cmds);
+
+        Map<String, String> env = pb.environment();
+        pb.directory(new File("."));
+
+        List<String> out = new ArrayList<String>();
+        try {
+            pb.redirectErrorStream(true);
+            Process p = pb.start();
+            BufferedReader rd = new BufferedReader(new InputStreamReader(p.getInputStream()),8192);
+            String in = rd.readLine();
+            while (in != null) {
+                out.add(in);
+                System.out.println(in);
+                in = rd.readLine();
+            }
+            int retval = p.waitFor();
+            p.destroy();
+            if (retval != 0) {
+                throw new RuntimeException("Error: test returned non-zero value");
+            }
+            return out;
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException(ex.getMessage());
+        }
+    }
+
+    public static void main(String[] args) {
+        try {
+            if (!System.getProperty("sun.arch.data.model").equals("32")) {
+                System.out.println("Warning: test skipped for 64-bit systems\n");
+                return;
+            }
+            String osname = System.getProperty("os.name");
+            if (osname.startsWith("Windows")) {
+                osname = "Windows";
+            }
+
+            createTestClass();
+
+            // Test a simple path
+            String libpath = File.pathSeparator + "tmp" + File.pathSeparator + "foobar";
+            List<String> processOut = null;
+            String sunbootlibrarypath = "-Dsun.boot.library.path=" + libpath;
+            processOut = doExec(sunbootlibrarypath, "-cp", ".", TESTFILE);
+            if (processOut == null || !processOut.get(0).endsWith(libpath)) {
+                throw new RuntimeException("Error: did not get expected error string");
+            }
+        } catch (IOException ex) {
+            throw new RuntimeException("Unexpected error " + ex);
+        }
+    }
+}