# HG changeset patch # User dcubed # Date 1248810607 21600 # Node ID 16c930df1e9bcb1ca7375ea615aab221ae7f2701 # Parent 494244ae01716855ef53f4849afc8d4ad8298cf9# Parent 2b4230d1e5894436f05382766a63cf0a66cda3e1 Merge diff -r 2b4230d1e589 -r 16c930df1e9b .hgignore --- 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/ diff -r 2b4230d1e589 -r 16c930df1e9b .hgtags --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/os/linux/Makefile --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/os/linux/ps_core.c --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/os/solaris/proc/saproc.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java --- 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 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; } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/code/MonitorValue.java --- 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)"); + } } } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/code/ObjectValue.java --- /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 + + // 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); + } + } + +}; diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java --- 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 + 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<MonitorValue> */ + 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<ScopeValue> or null if no values were present */ @@ -161,4 +189,22 @@ } return res; } + + /** Returns a List<ObjectValue> 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; + } } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/code/ScopeValue.java --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java --- 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; } } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java --- 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++; } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java --- 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 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 diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/InterpretedVFrame.java --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThread.java --- 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 } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/MonitorInfo.java --- 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; } } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/StackValue.java --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java --- 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 */ diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java --- 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(); + } + } } }); } diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java --- 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 */ + diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaThread.java --- 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 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/README --- 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. - diff -r 2b4230d1e589 -r 16c930df1e9b make/hotspot_version --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/jprt.config --- 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 - diff -r 2b4230d1e589 -r 16c930df1e9b make/jprt.properties --- 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 + diff -r 2b4230d1e589 -r 16c930df1e9b make/linux/makefiles/adlc.make --- 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 = \ diff -r 2b4230d1e589 -r 16c930df1e9b make/linux/makefiles/gcc.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/linux/makefiles/jsig.make --- 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)" diff -r 2b4230d1e589 -r 16c930df1e9b make/linux/makefiles/saproc.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/adlc.make --- 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") diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/optimized.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_COMPILER1_i486 --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_COMPILER1_sparc --- 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_; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_COMPILER2_amd64 --- 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_; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_COMPILER2_sparcv9 --- 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_; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_TIERED_i486 --- 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_; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/reorder_TIERED_sparc --- 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_; diff -r 2b4230d1e589 -r 16c930df1e9b make/solaris/makefiles/sparcWorks.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/build_vm_def.sh --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/create.bat --- 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 ************************************************************** diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/get_msc_ver.sh --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/adlc.make --- 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" \ diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/compile.make --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/makedeps.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/rules.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/sa.make --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/sanity.make --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b make/windows/makefiles/vm.make --- 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)\"" diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/assembler_sparc.cpp --- 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 . +// 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 := + AddressLiteral addrlit(byte_map_base); + masm.set(addrlit, O1); // O1 := 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/assembler_sparc.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/assembler_sparc.inline.hpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp --- 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++) { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_FrameMap_sparc.cpp --- 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)); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp --- 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 } } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/c1_Runtime1_sparc.cpp --- 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 := + AddressLiteral rs(byte_map_base); + __ set(rs, cardtable); // cardtable := __ 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/cppInterpreter_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/dump_sparc.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/frame_sparc.inline.hpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/globals_sparc.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/icBuffer_sparc.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/interp_masm_sparc.cpp --- 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, ¬_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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/interpreterGenerator_sparc.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/interpreterRT_sparc.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/interpreter_sparc.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/jniFastGetField_sparc.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/jni_sparc.h --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/methodHandles_sparc.cpp --- /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 +} diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/nativeInst_sparc.cpp --- 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() ); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/nativeInst_sparc.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/register_definitions_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/relocInfo_sparc.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/runtime_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/sharedRuntime_sparc.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/sparc.ad --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/stubGenerator_sparc.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/templateInterpreter_sparc.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/templateTable_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/vm_version_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/vm_version_sparc.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/sparc/vm/vtableStubs_sparc.cpp --- 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 } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/assembler_x86.cpp --- 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 . +// 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/assembler_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/c1_LIRAssembler_x86.cpp --- 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))); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/c1_LIRGenerator_x86.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/c1_MacroAssembler_x86.cpp --- 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))); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/c1_Runtime1_x86.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/cppInterpreter_x86.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/frame_x86.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/frame_x86.inline.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/globals_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interp_masm_x86_32.cpp --- 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); + } } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interp_masm_x86_32.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interp_masm_x86_64.cpp --- 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); + } } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interp_masm_x86_64.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interpreterGenerator_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interpreterRT_x86_32.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interpreterRT_x86_64.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interpreter_x86_32.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/interpreter_x86_64.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/jni_x86.h --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/methodHandles_x86.cpp --- /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)); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/runtime_x86_32.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/sharedRuntime_x86_32.cpp --- 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())); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/sharedRuntime_x86_64.cpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/stubGenerator_x86_32.cpp --- 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); + } + } } diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/stubGenerator_x86_64.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/templateInterpreter_x86_32.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/templateInterpreter_x86_64.cpp --- 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? diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/templateTable_x86_32.cpp --- 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); } //---------------------------------------------------------------------------------------------------- diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/templateTable_x86_32.hpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/templateTable_x86_64.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86.cpp --- /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(); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86.hpp --- /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; + } +}; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86_32.cpp --- 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(); -} diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86_32.hpp --- 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; - } -}; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86_64.cpp --- 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(); -} diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vm_version_x86_64.hpp --- 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; - } -}; diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vtableStubs_x86_32.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/vtableStubs_x86_64.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/x86_32.ad --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/cpu/x86/vm/x86_64.ad --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os/linux/launcher/java.c --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/os/linux/launcher/java_md.h --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os/linux/vm/os_linux.cpp --- 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(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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/os/linux/vm/os_linux.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/os/linux/vm/perfMemory_linux.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/dtrace/generateJvmOffsets.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/dtrace/jhelper.d --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/dtrace/libjvm_db.c --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/launcher/java.c --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/launcher/java_md.h --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/vm/os_solaris.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/vm/os_solaris.hpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/os/solaris/vm/perfMemory_solaris.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/os/windows/vm/os_windows.cpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/os/windows/vm/perfMemory_windows.cpp --- 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)) { diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp --- 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() {} diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/linux_x86/vm/globals_linux_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp --- 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 } } diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/linux_x86/vm/os_linux_x86.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp --- 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); + + diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp --- 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() {} diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp --- 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 +# include # include +// 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp --- 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 } } diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/solaris_x86_32.il --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/solaris_x86/vm/solaris_x86_64.il --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/windows_x86/vm/globals_windows_x86.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/windows_x86/vm/os_windows_x86.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/windows_x86/vm/os_windows_x86.hpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/Makefile --- /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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/README --- /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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/manifest.mf --- /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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/BasicLogEvent.java --- /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); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java --- /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 calls; + + CallSite() { + } + + CallSite(int bci, Method m) { + this.bci = bci; + this.method = m; + } + + void add(CallSite site) { + if (getCalls() == null) { + setCalls(new ArrayList()); + } + 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 getCalls() { + return calls; + } + + public void setCalls(List calls) { + this.calls = calls; + } + + public static boolean isCompat() { + return compat; + } + + public static void setCompat(boolean aCompat) { + compat = aCompat; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Compilation.java --- /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 phases = new ArrayList(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 getPhases() { + return phases; + } + + public void setPhases(ArrayList 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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Constants.java --- /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 */ +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCleanupReader.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCompilation.java --- /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 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 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 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 phaseTime = new LinkedHashMap(7); + LinkedHashMap phaseNodes = new LinkedHashMap(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]); + } + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogEvent.java --- /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); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java --- /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 typeMap; + static { + typeMap = new HashMap(); + typeMap.put("[I", "int[]"); + typeMap.put("[C", "char[]"); + typeMap.put("[Z", "boolean[]"); + typeMap.put("[L", "Object[]"); + typeMap.put("[B", "byte[]"); + } + + static Comparator sortByStart = new Comparator() { + + 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 sortByNameAndStart = new Comparator() { + + 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 sortByElapsed = new Comparator() { + + 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 events = new ArrayList(); + + private HashMap types = new HashMap(); + private HashMap methods = new HashMap(); + private LinkedHashMap nmethods = new LinkedHashMap(); + private HashMap compiles = new HashMap(); + private String failureReason; + private int bci; + private Stack scopes = new Stack(); + private Compilation compile; + private CallSite site; + private Stack phaseStack = new Stack(); + 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 parse(String file, boolean cleanup) throws Exception { + return parse(new FileReader(file), cleanup); + } + + public static ArrayList 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")) { + // + 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(); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/MakeNotEntrantEvent.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Method.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/NMethod.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/Phase.java --- /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."); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/UncommonTrapEvent.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/MakeDeps/BuildConfig.java --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/MakeDeps/Database.java --- 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 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_ 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_ 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) \\"); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/MakeDeps/WinGammaPlatformVC7.java --- 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", " ")) } ); @@ -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("\"",""")); - addAttr(rv, "UsePrecompiledHeader", "3"); - addAttr(rv, "PrecompiledHeaderThrough", "incls"+Util.sep+"_precompiled.incl"); + addAttr(rv, "PreprocessorDefinitions", + Util.join(";", defines).replace("\"",""")); + 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/MakeDeps/WinGammaPlatformVC8.java --- /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; + } + + +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/MakeDeps/WinGammaPlatformVC9.java --- /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 { +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/hsdis/Makefile --- 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 $@ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/hsdis/README --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/hsdis/hsdis-demo.c --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/tools/hsdis/hsdis.c --- 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 #include #include +#include #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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/Doc/Syntax.doc --- 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: (){}%;,"/\ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/adlc.hpp --- 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)) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/adlparse.cpp --- 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), diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/adlparse.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/archDesc.cpp --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/dfa.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/dict2.cpp --- 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; } //============================================================================= diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/dict2.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/filebuff.cpp --- 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------------------------------------------ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/filebuff.hpp --- 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 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&); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/forms.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/forms.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/formsopt.cpp --- 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< _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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/formsopt.hpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/formssel.cpp --- 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 * ®_type) { +int MatchNode::cisc_spill_match(FormDict& globals, RegisterForm* registers, MatchNode* mRule2, const char* &operand, const char* ®_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 * ®_type) { +int MatchRule::matchrule_cisc_spill_match(FormDict& globals, RegisterForm* registers, + MatchRule* mRule2, const char* &operand, + const char* ®_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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/formssel.hpp --- 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 * ®_type); + int cisc_spill_match(FormDict& globals, RegisterForm* registers, + MatchNode* mRule2, const char* &operand, + const char* ®_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 * ®_type); + int matchrule_cisc_spill_match(FormDict &globals, RegisterForm* registers, + MatchRule* mRule2, const char* &operand, + const char* ®_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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/main.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/output_c.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/adlc/output_h.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/asm/assembler.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/asm/assembler.hpp --- 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); + // 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_.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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/asm/codeBuffer.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_Compilation.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_GraphBuilder.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_LIRGenerator.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_LinearScan.cpp --- 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()) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_Optimizer.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/c1/c1_Runtime1.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/bcEscapeAnalyzer.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciEnv.cpp --- 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()); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciEnv.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciMethod.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciMethod.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciMethodBlocks.cpp --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciStreams.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciStreams.hpp --- 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 + } }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/ci/ciTypeFlow.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/classFileParser.cpp --- 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* 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); } } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/classFileParser.hpp --- 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* _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* cp_patches, symbolHandle& parsed_name, TRAPS); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/classLoader.cpp --- 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(); } } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/classLoader.hpp --- 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(); + } +}; + diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/dictionary.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/dictionary.hpp --- 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(); +}; + diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/javaClasses.cpp --- 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(""); + 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/javaClasses.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/loaderConstraints.hpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/symbolTable.cpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/symbolTable.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/systemDictionary.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/systemDictionary.hpp --- 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 ? "" : @@ -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); +}; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/verifier.cpp --- 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, ¤t_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 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()) { // method verify_invoke_init(bcs, ref_class_type, current_frame, code_length, this_uninit, cp, CHECK_VERIFY(this)); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/classfile/vmSymbols.hpp --- 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, "") \ template(class_initializer_name, "") \ 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, "") \ \ + /* 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); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/code/nmethod.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/code/nmethod.hpp --- 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 }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/code/vtableStubs.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/compiler/compileBroker.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/compiler/oopMap.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/compiler/oopMap.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp --- 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 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 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 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/collectionSetChooser.cpp --- 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.", diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/collectionSetChooser.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp --- 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(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; -} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentMark.cpp --- 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 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 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 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 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(j)); + do_oop(aobj->obj_at_addr(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 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()) return false; + } else { + if (!_oop_cl.drain()) 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 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentMark.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/concurrentZFThread.hpp --- 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++; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- 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 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(¬_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 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 @@ // 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 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 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 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 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 -void G1ParCopyClosure::do_oop_work(oop* p) { - oop obj = *p; +template +template +void G1ParCopyClosure +::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::do_oop_work(oop* p); - -template 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::do_oop_work(oop* p); +template void G1ParCopyClosure::do_oop_work(narrowOop* p); + +template 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(obj, start, end); - oop* start_addr = start == 0 ? (oop*)obj : obj->obj_at_addr(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: *** diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- 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 RefToScanQueue; -typedef GenericTaskQueueSet RefToScanQueueSet; +typedef GenericTaskQueue RefToScanQueue; +typedef GenericTaskQueueSet 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 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 void immediate_rs_update(HeapRegion* from, T* p, int tid) { + if (!from->is_survivor()) { + _g1_rem->par_write_ref(from, p, tid); + } + } + + template 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 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 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 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); + } + } + } + } + } +}; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp --- 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), // @@ -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; // @@ -259,12 +244,12 @@ // - 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 @@ // - 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 @@ // _target_pause_time_ms = -1.0; - - // TODO: calculate tenuring threshold - _tenuring_threshold = MaxTenuringThreshold; } // @@ -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."); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp --- 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(); + // 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1MMUTracker.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1MarkSweep.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1OopClosures.hpp --- 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 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 inline bool has_partial_array_mask(T* ref) { + return ((uintptr_t)ref & G1_PARTIAL_ARRAY_MASK) == G1_PARTIAL_ARRAY_MASK; +} + +template 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 inline oop clear_partial_array_mask(T* ref) { + return oop((intptr_t)ref & ~G1_PARTIAL_ARRAY_MASK); +} class G1ParScanPartialArrayClosure : public G1ParClosureSuper { G1ParScanClosure _scanner; - template 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 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 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 +template class G1ParCopyClosure : public G1ParCopyHelper { G1ParScanClosure _scanner; - void do_oop_work(oop* p); - void do_oop_work(narrowOop* p) { guarantee(false, "NYI"); } + template 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 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 G1ParScanExtRootClosure; -typedef G1ParCopyClosure G1ParScanPermClosure; -typedef G1ParCopyClosure G1ParScanAndMarkExtRootClosure; -typedef G1ParCopyClosure G1ParScanAndMarkPermClosure; -typedef G1ParCopyClosure G1ParScanHeapRSClosure; -typedef G1ParCopyClosure G1ParScanAndMarkHeapRSClosure; -typedef G1ParCopyClosure G1ParScanHeapEvacClosure; - +typedef G1ParCopyClosure G1ParScanExtRootClosure; +typedef G1ParCopyClosure G1ParScanPermClosure; +typedef G1ParCopyClosure G1ParScanHeapRSClosure; +typedef G1ParCopyClosure G1ParScanAndMarkExtRootClosure; +typedef G1ParCopyClosure G1ParScanAndMarkPermClosure; +typedef G1ParCopyClosure 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 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 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 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 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 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 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp --- 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 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 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 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 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 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); -} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1RemSet.cpp --- 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 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 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*, ParallelGCThreads); + guarantee(n_workers() > 0, "There should be some workers"); + _new_refs = NEW_C_HEAP_ARRAY(GrowableArray*, n_workers()); + for (uint i = 0; i < n_workers(); i++) { + _new_refs[i] = new (ResourceObj::C_HEAP) GrowableArray(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*, _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 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(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 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 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 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"); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1RemSet.hpp --- 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** _new_refs; + void set_par_traversal(bool b) { _par_traversal_in_progress = b; } + GrowableArray** _new_refs; + template void new_refs_iterate_work(OopClosure* cl); + void new_refs_iterate(OopClosure* cl) { + if (UseCompressedOops) { + new_refs_iterate_work(cl); + } else { + new_refs_iterate_work(cl); + } + } + +protected: + template void write_ref_nv(HeapRegion* from, T* p); + template 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 void scanNewRefsRS_work(OopsInHeapRegionClosure* oc, int worker_i); + void scanNewRefsRS(OopsInHeapRegionClosure* oc, int worker_i) { + if (UseCompressedOops) { + scanNewRefsRS_work(oc, worker_i); + } else { + scanNewRefsRS_work(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 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; } +}; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp --- 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 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 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 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); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp --- 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 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 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) : diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp --- 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 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 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 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 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1_globals.hpp --- 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 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp --- 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 +template class G1ParCopyClosure; class G1ParScanClosure; -typedef G1ParCopyClosure G1ParScanHeapEvacClosure; +typedef G1ParCopyClosure 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." diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegion.cpp --- 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 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(); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegion.hpp --- 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; - // double _gc_efficiency; // @@ -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; - } - } - // 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegionSeq.cpp --- 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())))) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/heapRegionSeq.hpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/ptrQueue.cpp --- 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; +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/ptrQueue.hpp --- 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); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/satbQueue.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/satbQueue.hpp --- 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; }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/sparsePRT.cpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/sparsePRT.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/survRateGroup.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/survRateGroup.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/vm_operations_g1.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/g1/vm_operations_g1.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/includeDB_gc_g1 --- 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_.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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/includeDB_gc_parNew --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/includeDB_gc_parallelScavenge --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/includeDB_gc_shared --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parNew/parNewGeneration.cpp --- 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** 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* 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** 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** 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*, 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(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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parNew/parNewGeneration.hpp --- 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* _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** 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* 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** _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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/ageTable.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/ageTable.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/concurrentGCThread.cpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/concurrentGCThread.hpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp --- 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(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()); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp --- 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* 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/mutableSpace.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/mutableSpace.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/vmGCOperations.cpp --- 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 */); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_implementation/shared/vmGCOperations.hpp --- 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() {} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_interface/collectedHeap.cpp --- 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(); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_interface/collectedHeap.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_interface/collectedHeap.inline.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/gc_interface/gcCause.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_compiler1 --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_compiler2 --- 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_.hpp macros.hpp c2_init_.cpp compile.hpp +c2_init_.cpp node.hpp c2compiler.cpp ad_.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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_core --- 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_.inline.hpp arguments.cpp universe.inline.hpp -arguments.cpp vm_version_.hpp +arguments.cpp vm_version_.hpp arguments.hpp java.hpp arguments.hpp perfData.hpp @@ -241,7 +241,7 @@ assembler.hpp register_.hpp assembler.hpp relocInfo.hpp assembler.hpp top.hpp -assembler.hpp vm_version_.hpp +assembler.hpp vm_version_.hpp assembler.inline.hpp assembler.hpp assembler.inline.hpp codeBuffer.hpp @@ -254,6 +254,7 @@ assembler_.cpp collectedHeap.inline.hpp assembler_.cpp interfaceSupport.hpp assembler_.cpp interpreter.hpp +assembler_.cpp methodHandles.hpp assembler_.cpp objectMonitor.hpp assembler_.cpp os.hpp assembler_.cpp resourceArea.hpp @@ -280,7 +281,7 @@ atomic_.inline.hpp atomic.hpp atomic_.inline.hpp os.hpp -atomic_.inline.hpp vm_version_.hpp +atomic_.inline.hpp vm_version_.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_.cpp debug.hpp cppInterpreter_.cpp deoptimization.hpp cppInterpreter_.cpp frame.inline.hpp +cppInterpreter_.cpp interfaceSupport.hpp cppInterpreter_.cpp interpreterRuntime.hpp cppInterpreter_.cpp interpreter.hpp cppInterpreter_.cpp interpreterGenerator.hpp @@ -1625,7 +1627,6 @@ frame.cpp methodOop.hpp frame.cpp monitorChunk.hpp frame.cpp nativeInst_.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_.cpp interpreterRuntime.hpp interp_masm_.cpp interpreter.hpp interp_masm_.cpp jvmtiExport.hpp +interp_masm_.cpp jvmtiRedefineClassesTrace.hpp interp_masm_.cpp jvmtiThreadState.hpp interp_masm_.cpp markOop.hpp interp_masm_.cpp methodDataOop.hpp @@ -2175,7 +2176,7 @@ interpreterRuntime.cpp threadCritical.hpp interpreterRuntime.cpp universe.inline.hpp interpreterRuntime.cpp vmSymbols.hpp -interpreterRuntime.cpp vm_version_.hpp +interpreterRuntime.cpp vm_version_.hpp interpreterRuntime.hpp bytecode.hpp interpreterRuntime.hpp frame.inline.hpp @@ -2199,6 +2200,7 @@ interpreter_.cpp jvmtiExport.hpp interpreter_.cpp jvmtiThreadState.hpp interpreter_.cpp methodDataOop.hpp +interpreter_.cpp methodHandles.hpp interpreter_.cpp methodOop.hpp interpreter_.cpp oop.inline.hpp interpreter_.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_.hpp +java.cpp vm_version_.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_.cpp allocation.inline.hpp +methodHandles_.cpp interpreter.hpp +methodHandles_.cpp methodHandles.hpp + methodKlass.cpp collectedHeap.inline.hpp methodKlass.cpp constMethodKlass.hpp methodKlass.cpp gcLocker.hpp @@ -2921,7 +2942,7 @@ nativeInst_.cpp assembler_.inline.hpp nativeInst_.cpp handles.hpp nativeInst_.cpp nativeInst_.hpp -nativeInst_.cpp oop.hpp +nativeInst_.cpp oop.inline.hpp nativeInst_.cpp ostream.hpp nativeInst_.cpp resourceArea.hpp nativeInst_.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_.hpp oop.inline.hpp cardTableModRefBS.hpp oop.inline.hpp collectedHeap.inline.hpp oop.inline.hpp compactingPermGenGen.hpp @@ -3151,6 +3173,8 @@ oopsHierarchy.cpp thread_.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_.cpp register_.hpp register_.hpp register.hpp -register_.hpp vm_version_.hpp +register_.hpp vm_version_.hpp registerMap.hpp globalDefinitions.hpp registerMap.hpp register_.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_.hpp sharedRuntime.cpp nativeLookup.hpp sharedRuntime.cpp oop.inline.hpp @@ -3698,6 +3724,7 @@ sharedRuntime_.cpp debugInfoRec.hpp sharedRuntime_.cpp icBuffer.hpp sharedRuntime_.cpp interpreter.hpp +sharedRuntime_.cpp jvmtiRedefineClassesTrace.hpp sharedRuntime_.cpp sharedRuntime.hpp sharedRuntime_.cpp vframeArray.hpp sharedRuntime_.cpp vmreg_.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_.hpp +statSampler.cpp vm_version_.hpp statSampler.hpp perfData.hpp statSampler.hpp task.hpp @@ -3854,6 +3882,7 @@ stubGenerator_.cpp handles.inline.hpp stubGenerator_.cpp instanceOop.hpp stubGenerator_.cpp interpreter.hpp +stubGenerator_.cpp methodHandles.hpp stubGenerator_.cpp methodOop.hpp stubGenerator_.cpp nativeInst_.hpp stubGenerator_.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_.cpp interpreterRuntime.hpp templateTable_.cpp interpreter.hpp templateTable_.cpp methodDataOop.hpp +templateTable_.cpp methodHandles.hpp templateTable_.cpp objArrayKlass.hpp templateTable_.cpp oop.inline.hpp templateTable_.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_.hpp +vm_version.cpp vm_version_.hpp vm_version.hpp allocation.hpp vm_version.hpp ostream.hpp -vm_version_.cpp assembler_.inline.hpp -vm_version_.cpp java.hpp -vm_version_.cpp os_.inline.hpp -vm_version_.cpp resourceArea.hpp -vm_version_.cpp stubCodeGenerator.hpp -vm_version_.cpp vm_version_.hpp - -vm_version_.hpp globals_extension.hpp -vm_version_.hpp vm_version.hpp - -vm_version_.cpp vm_version_.hpp +vm_version_.cpp assembler_.inline.hpp +vm_version_.cpp java.hpp +vm_version_.cpp os_.inline.hpp +vm_version_.cpp resourceArea.hpp +vm_version_.cpp stubCodeGenerator.hpp +vm_version_.cpp vm_version_.hpp + +vm_version_.hpp globals_extension.hpp +vm_version_.hpp vm_version.hpp + +vm_version_.cpp os.hpp +vm_version_.cpp vm_version_.hpp vmreg.cpp assembler.hpp vmreg.cpp vmreg.hpp diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_features --- 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_.cpp assembler_.inline.hpp dump_.cpp compactingPermGenGen.hpp +dump_.cpp generation.inline.hpp +dump_.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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_gc --- 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_.inline.hpp +collectedHeap.cpp vmGCOperations.hpp collectedHeap.hpp allocation.hpp collectedHeap.hpp barrierSet.hpp diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_gc_parallel --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/includeDB_jvmti --- 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_.hpp jvmtiClassFileReconstituter.cpp jvmtiClassFileReconstituter.hpp jvmtiClassFileReconstituter.cpp symbolTable.hpp +jvmtiClassFileReconstituter.cpp signature.hpp jvmtiClassFileReconstituter.hpp jvmtiEnv.hpp diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/abstractInterpreter.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(); + } + } }; //------------------------------------------------------------------------------------------------------------------------ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecode.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecode.hpp --- 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() || diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodeInterpreter.cpp --- 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), diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodeInterpreter.hpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodeInterpreter.inline.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodeStream.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodeTracer.cpp --- 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(" ", 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodes.cpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/bytecodes.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/cppInterpreter.cpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/cppInterpreter.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/cppInterpreterGenerator.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/interpreter.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/interpreter.hpp --- 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. //------------------------------------------------------------------------------------------------------------------------ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/interpreterGenerator.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/interpreterRuntime.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/interpreterRuntime.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/invocationCounter.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/linkResolver.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/linkResolver.hpp --- 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); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/rewriter.cpp --- 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. 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:: 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/rewriter.hpp --- 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); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/templateInterpreter.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/templateInterpreter.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/templateInterpreterGenerator.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/templateTable.cpp --- 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 , _ ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/interpreter/templateTable.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/libadt/dict.cpp --- 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; } //============================================================================= diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/libadt/dict.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/libadt/port.hpp --- 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 #include #include -#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 // Access to the C++ class virtual function pointer // Put the class in the macro diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/barrierSet.cpp --- 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)); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/barrierSet.hpp --- 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 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/barrierSet.inline.hpp --- 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 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/blockOffsetTable.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/cardTableModRefBS.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/cardTableModRefBS.hpp --- 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 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 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/cardTableRS.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/dump.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/filemap.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/gcLocker.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/genCollectedHeap.cpp --- 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 "); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/genCollectedHeap.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/genOopClosures.hpp --- 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 void do_barrier(T* p); // Version for use by closures that may be called in parallel code. - void par_do_barrier(oop* p); + template void par_do_barrier(T* p); public: OopsInGenClosure() : OopClosure(NULL), diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/genOopClosures.inline.hpp --- 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 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 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/generation.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/generation.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/heap.cpp --- 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)) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/heapInspection.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/heapInspection.hpp --- 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* result) KERNEL_RETURN; }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/oopFactory.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/oopFactory.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/permGen.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/permGen.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/referenceProcessor.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/sharedHeap.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/sharedHeap.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/space.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/space.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/tenuredGeneration.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/threadLocalAllocBuffer.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/universe.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/memory/universe.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/arrayKlass.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/arrayOop.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constMethodKlass.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constMethodKlass.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constMethodOop.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constantPoolKlass.cpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constantPoolKlass.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constantPoolOop.cpp --- 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)); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/constantPoolOop.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/cpCacheKlass.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/cpCacheKlass.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/cpCacheOop.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/cpCacheOop.hpp --- 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)); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/generateOopMap.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/generateOopMap.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/instanceKlass.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/instanceKlass.hpp --- 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;} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/instanceKlassKlass.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/instanceRefKlass.cpp --- 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 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; \ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/klass.cpp --- 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 ) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/klass.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/klassVtable.cpp --- 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() : "", 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() : "", 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() : "", 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() : "", 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() : "", 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() : "", 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()) // 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 , 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/klassVtable.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/methodDataOop.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/methodKlass.cpp --- 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()); + } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/methodOop.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/methodOop.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/objArrayKlass.cpp --- 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 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/oop.cpp --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/oop.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/oop.inline.hpp --- 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 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 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 inline void oop_store_without_check(T* p, oop v) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/oopsHierarchy.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/typeArrayKlass.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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/oops/typeArrayKlass.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/addnode.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/block.cpp --- 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()) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/block.hpp --- 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 _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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/buildOopMap.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/bytecodeInfo.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/c2_globals.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/c2compiler.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/callnode.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/callnode.hpp --- 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() { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/cfgnode.cpp --- 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; iis_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; ireq() > 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/chaitin.cpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/chaitin.hpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/classes.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/coalesce.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/compile.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/compile.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/connode.cpp --- 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; +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/connode.hpp --- 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; +}; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/divnode.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/doCall.cpp --- 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"); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/domgraph.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/escape.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/gcm.cpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/graphKit.cpp --- 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 __ -} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/graphKit.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/idealGraphPrinter.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/idealKit.cpp --- 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(C->node_arena(), init_size, 0, 0); _delay_transform = new (C->node_arena()) GrowableArray(C->node_arena(), init_size, 0, 0); DEBUG_ONLY(_state = new (C->node_arena()) GrowableArray(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) ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/idealKit.hpp --- 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)); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/ifg.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/ifnode.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/lcm.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/library_call.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/live.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/locknode.cpp --- 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()); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/loopTransform.cpp --- 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; - } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/loopUnswitch.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/loopnode.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/loopnode.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/loopopts.cpp --- 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++; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/machnode.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/macro.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/matcher.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/matcher.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/memnode.cpp --- 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 && diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/memnode.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/mulnode.cpp --- 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"); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/node.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/node.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/output.cpp --- 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" ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/parse.hpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/parse1.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/parse2.cpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/parse3.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/parseHelper.cpp --- 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"); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/phase.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/phaseX.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/phaseX.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/postaloc.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/reg_split.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/runtime.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/split_if.cpp --- 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++ ) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/subnode.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/superword.cpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/superword.hpp --- 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 &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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/type.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/type.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/opto/vectornode.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jni.cpp --- 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(); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvm.cpp --- 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()) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvm.h --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvm_misc.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiClassFileReconstituter.cpp --- 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; } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiEnv.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiEnvBase.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiEnvBase.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiEventController.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiExport.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiImpl.cpp --- 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 // diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiImpl.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiRedefineClasses.cpp --- 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() diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiRedefineClassesTrace.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiTagMap.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/jvmtiThreadState.hpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/methodComparator.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/methodHandles.cpp --- /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 + 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 + 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"; 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/methodHandles.hpp --- /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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/nativeLookup.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/prims/unsafe.cpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/arguments.cpp --- 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; } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/arguments.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/biasedLocking.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/deoptimization.cpp --- 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* 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())); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/dtraceJSDT.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/extendedPC.hpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/fieldDescriptor.cpp --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/fprofiler.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/frame.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/frame.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/frame.inline.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/globals.hpp --- 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")\ \ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/handles.hpp --- 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(); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/hpi.hpp --- 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", diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/interfaceSupport.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/javaCalls.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/memprofiler.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/mutex.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/mutexLocker.cpp --- 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 ); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/mutexLocker.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/orderAccess.cpp --- 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"); +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/orderAccess.hpp --- 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(); }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/os.cpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/os.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/perfData.hpp --- 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 /* diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/reflection.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/reflection.hpp --- 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) diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/safepoint.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/sharedRuntime.cpp --- 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* AdapterHandlerLibrary::_fingerprints = NULL; GrowableArray* 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/sharedRuntime.hpp --- 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* _fingerprints; // the fingerprint collection static GrowableArray * _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 ) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/signature.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/stackValue.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/stackValue.hpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/synchronizer.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/thread.cpp --- 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; } } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/thread.hpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/threadCritical.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vframe.cpp --- 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 (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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vframe.hpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vframeArray.cpp --- 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; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vframe_hp.cpp --- 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* result = new GrowableArray(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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/virtualspace.cpp --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/virtualspace.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vmStructs.cpp --- 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) \ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vmThread.cpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vm_operations.hpp --- 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) \ diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/runtime/vm_version.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/attachListener.cpp --- 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; } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/heapDumper.cpp --- 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.hprof in the current working // directory. HeapDumpPath= 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= 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= 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/heapDumper.hpp --- 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) { } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/management.cpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/threadService.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/services/threadService.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/accessFlags.hpp --- 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; +} diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/bitMap.cpp --- 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(); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/bitMap.hpp --- 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: diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/bitMap.inline.hpp --- 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); diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/exceptions.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/globalDefinitions.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/globalDefinitions_gcc.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/globalDefinitions_sparcWorks.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/globalDefinitions_visCPP.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/growableArray.cpp --- 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); } } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/macros.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/ostream.cpp --- 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); } diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/taskqueue.cpp --- 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, diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/taskqueue.hpp --- 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 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 GenericTaskQueue::GenericTaskQueue():TaskQueueSuper() { - assert(sizeof(Age) == sizeof(jint), "Depends on this."); + assert(sizeof(Age) == sizeof(int), "Depends on this."); } template @@ -182,9 +191,9 @@ template void GenericTaskQueue::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 -bool GenericTaskQueue::push_slow(E t, juint dirty_n_elems) { +bool GenericTaskQueue::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 bool GenericTaskQueue:: -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::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 GenericTaskQueueSet: public TaskQueueSetSuper { private: - int _n; + uint _n; GenericTaskQueue** _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* q); + void register_queue(uint i, GenericTaskQueue* q); - GenericTaskQueue* queue(int n); + GenericTaskQueue* 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 -void GenericTaskQueueSet::register_queue(int i, GenericTaskQueue* q) { - assert(0 <= i && i < _n, "index out of range."); +void GenericTaskQueueSet::register_queue(uint i, GenericTaskQueue* q) { + assert(i < _n, "index out of range."); _queues[i] = q; } template -GenericTaskQueue* GenericTaskQueueSet::queue(int i) { +GenericTaskQueue* GenericTaskQueueSet::queue(uint i) { return _queues[i]; } template -bool GenericTaskQueueSet::steal(int queue_num, int* seed, E& t) { - for (int i = 0; i < 2 * _n; i++) +bool GenericTaskQueueSet::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 -bool GenericTaskQueueSet::steal_best_of_all(int queue_num, int* seed, E& t) { +bool GenericTaskQueueSet::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 -bool GenericTaskQueueSet::steal_1_random(int queue_num, int* seed, E& t) { +bool GenericTaskQueueSet::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 -bool GenericTaskQueueSet::steal_best_of_2(int queue_num, int* seed, E& t) { +bool GenericTaskQueueSet::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 bool GenericTaskQueueSet::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 inline bool GenericTaskQueue::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 inline bool GenericTaskQueue::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; } }; diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/vmError.cpp --- 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) { diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/vmError.hpp --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b src/share/vm/utilities/workgroup.hpp --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b test/Makefile --- 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. diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/5057225/Test5057225.java --- /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; } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6378821/Test6378821.java --- /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]); } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6539464/Test.java --- /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); + } + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6589834/Test_ia32.java --- /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 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; + } + +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6603011/Test.java --- /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); + } + +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6636138/Test1.java --- /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 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(); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6711117/Test.java --- /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 ""; + + 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; + } + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6757316/Test6757316.java --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6758234/Test6758234.java --- 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 diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6772683/InterruptedTest.java --- /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"); + } + +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6775880/Test.java --- 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 { diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6778657/Test.java --- /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); + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6795161/Test.java --- /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"); + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6795362/Test6795362.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6797305/Test6797305.java --- /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]; } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6799693/Test.java --- /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"); + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6800154/Test6800154.java --- /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; } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6805724/Test6805724.java --- /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(); + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6814842/Test6814842.java --- /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); } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6823354/Test6823354.java --- /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); } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6823453/Test.java --- /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); + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6826736/Test.java --- /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); + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6832293/Test.java --- /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; + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6837011/Test6837011.java --- /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); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6837094/Test.java --- /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 { + Factory Zero = new Factory() { + public Child0[] getArray() { return new Child0[1]; } + }; + + Factory One = new Factory() { + 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 void collectIs( + Factory factory, Set s) { + for (I i : factory.getArray()) { + try { + s.add(i); + } catch (Exception e) { + } + } + } + + static public void main(String argv[]) { + Set 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 { +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6843752/Test.java --- /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); + } + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6849574/Test.java --- /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(); + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6851282/Test.java --- /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 as = new ArrayList(); + for (int i = 0; i < 5000; i++) { + List bs = new ArrayList(); + 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(bs).filter(new Function() { + public Boolean apply(B arg) { + for (B b : a.bs) { + if (b.d == arg.d) + return true; + } + return false; + } + }); + } +} + +class BoxedArray { + + private final T[] array; + + BoxedArray(T[] array) { + this.array = array; + } + + public T[] filter(Function 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 { + R apply(T arg); +} + +class B { + final int d; + public B(int d) { + this.d = d; + } +} + diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6855164/Test.java --- /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; + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6857159/Test6857159.java --- /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(); + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6857159/Test6857159.sh --- /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 diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6859338/Test6859338.java --- /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 + } + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/compiler/6860469/Test.java --- /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); + } +} diff -r 2b4230d1e589 -r 16c930df1e9b test/runtime/6819213/TestBootNativeLibraryPath.java --- /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 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 cmds = new ArrayList(); + cmds.add(javaCmd); + for (String x : args) { + cmds.add(x); + } + System.out.println("cmds=" + cmds); + ProcessBuilder pb = new ProcessBuilder(cmds); + + Map env = pb.environment(); + pb.directory(new File(".")); + + List out = new ArrayList(); + 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 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); + } + } +}