Mercurial > hg > graal-jvmci-8
changeset 9516:cf8104ed68ba
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 02 May 2013 14:12:24 +0200 |
parents | 9384ec90632b (diff) 106f0a0acafa (current diff) |
children | 51973e9ec004 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializeObjectNode.java |
diffstat | 27 files changed, 693 insertions(+), 693 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotInstalledCodeExecuteNode.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotInstalledCodeExecuteNode.java Thu May 02 14:12:24 2013 +0200 @@ -82,7 +82,7 @@ for (int i = 0; i < signature.length; i++) { signatureTypes[i] = tool.lookupJavaType(signature[i]); } - final int verifiedEntryPointOffset = HotSpotSnippetUtils.verifiedEntryPointOffset(); + final int verifiedEntryPointOffset = HotSpotReplacementsUtil.verifiedEntryPointOffset(); StructuredGraph g = (StructuredGraph) graph();
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import sun.misc.*; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.lang.reflect.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -24,7 +24,7 @@ import static com.oracle.graal.api.code.DeoptimizationAction.*; import static com.oracle.graal.api.meta.DeoptimizationReason.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.TypeCheckSnippetUtils.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; import static com.oracle.graal.replacements.SnippetTemplate.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import sun.misc.*; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; import java.lang.reflect.*;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Thu May 02 14:12:24 2013 +0200 @@ -0,0 +1,665 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.hotspot.replacements; + +import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; +import sun.misc.*; + +import com.oracle.graal.api.code.*; +import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.Node.ConstantNodeParameter; +import com.oracle.graal.graph.Node.NodeIntrinsic; +import com.oracle.graal.hotspot.*; +import com.oracle.graal.hotspot.meta.*; +import com.oracle.graal.hotspot.nodes.*; +import com.oracle.graal.nodes.extended.*; +import com.oracle.graal.replacements.Snippet.Fold; +import com.oracle.graal.replacements.nodes.*; +import com.oracle.graal.word.*; + +//JaCoCo Exclude + +/** + * A collection of methods used in HotSpot snippets, substitutions and stubs. + */ +public class HotSpotReplacementsUtil { + + public static final Object ANY_LOCATION = LocationNode.ANY_LOCATION; + public static final Object FINAL_LOCATION = LocationNode.FINAL_LOCATION; + + public static HotSpotVMConfig config() { + return graalRuntime().getConfig(); + } + + @Fold + public static boolean useTLAB() { + return config().useTLAB; + } + + @Fold + public static boolean verifyOops() { + return config().verifyOops; + } + + public static final Object EXCEPTION_OOP_LOCATION = LocationNode.createLocation("ExceptionOop"); + + @Fold + public static int threadExceptionOopOffset() { + return config().threadExceptionOopOffset; + } + + public static final Object EXCEPTION_PC_LOCATION = LocationNode.createLocation("ExceptionPc"); + + @Fold + public static int threadExceptionPcOffset() { + return config().threadExceptionPcOffset; + } + + public static final Object TLAB_TOP_LOCATION = LocationNode.createLocation("TlabTop"); + + @Fold + public static int threadTlabTopOffset() { + return config().threadTlabTopOffset; + } + + public static final Object TLAB_END_LOCATION = LocationNode.createLocation("TlabEnd"); + + @Fold + private static int threadTlabEndOffset() { + return config().threadTlabEndOffset; + } + + public static final Object TLAB_START_LOCATION = LocationNode.createLocation("TlabStart"); + + @Fold + private static int threadTlabStartOffset() { + return config().threadTlabStartOffset; + } + + public static final Object PENDING_EXCEPTION_LOCATION = LocationNode.createLocation("PendingException"); + + @Fold + private static int threadPendingExceptionOffset() { + return config().pendingExceptionOffset; + } + + public static final Object OBJECT_RESULT_LOCATION = LocationNode.createLocation("ObjectResult"); + + @Fold + private static int objectResultOffset() { + return config().threadObjectResultOffset; + } + + public static Object readExceptionOop(Word thread) { + return thread.readObject(threadExceptionOopOffset(), EXCEPTION_OOP_LOCATION); + } + + public static Word readExceptionPc(Word thread) { + return thread.readWord(threadExceptionOopOffset(), EXCEPTION_PC_LOCATION); + } + + public static void writeExceptionOop(Word thread, Object value) { + thread.writeObject(threadExceptionOopOffset(), value, EXCEPTION_OOP_LOCATION); + } + + public static void writeExceptionPc(Word thread, Word value) { + thread.writeWord(threadExceptionPcOffset(), value, EXCEPTION_PC_LOCATION); + } + + public static Word readTlabTop(Word thread) { + return thread.readWord(threadTlabTopOffset(), TLAB_TOP_LOCATION); + } + + public static Word readTlabEnd(Word thread) { + return thread.readWord(threadTlabEndOffset(), TLAB_END_LOCATION); + } + + public static Word readTlabStart(Word thread) { + return thread.readWord(threadTlabStartOffset(), TLAB_START_LOCATION); + } + + public static void writeTlabTop(Word thread, Word top) { + thread.writeWord(threadTlabTopOffset(), top, TLAB_TOP_LOCATION); + } + + public static void initializeTlab(Word thread, Word start, Word end) { + thread.writeWord(threadTlabStartOffset(), start, TLAB_START_LOCATION); + thread.writeWord(threadTlabTopOffset(), start, TLAB_TOP_LOCATION); + thread.writeWord(threadTlabEndOffset(), end, TLAB_END_LOCATION); + } + + /** + * Clears the pending exception for the given thread. + * + * @return {@code true} if there was a pending exception + */ + public static boolean clearPendingException(Word thread) { + boolean result = thread.readObject(threadPendingExceptionOffset(), PENDING_EXCEPTION_LOCATION) != null; + thread.writeObject(threadPendingExceptionOffset(), null); + return result; + } + + /** + * Gets and clears the object result from a runtime call stored in a thread local. + * + * @return the object that was in the thread local + */ + public static Object getAndClearObjectResult(Word thread) { + Object result = thread.readObject(objectResultOffset(), OBJECT_RESULT_LOCATION); + thread.writeObject(objectResultOffset(), null); + return result; + } + + @Fold + public static int threadObjectOffset() { + return config().threadObjectOffset; + } + + @Fold + public static int osThreadOffset() { + return config().osThreadOffset; + } + + @Fold + public static int osThreadInterruptedOffset() { + return config().osThreadInterruptedOffset; + } + + @Fold + public static Kind wordKind() { + return graalRuntime().getTarget().wordKind; + } + + @Fold + public static Register threadRegister() { + return graalRuntime().getRuntime().threadRegister(); + } + + @Fold + public static Register stackPointerRegister() { + return graalRuntime().getRuntime().stackPointerRegister(); + } + + @Fold + public static int wordSize() { + return graalRuntime().getTarget().wordSize; + } + + @Fold + public static int pageSize() { + return Unsafe.getUnsafe().pageSize(); + } + + public static final Object PROTOTYPE_MARK_WORD_LOCATION = LocationNode.createLocation("PrototypeMarkWord"); + + @Fold + public static int prototypeMarkWordOffset() { + return config().prototypeMarkWordOffset; + } + + @Fold + public static long arrayPrototypeMarkWord() { + return config().arrayPrototypeMarkWord; + } + + @Fold + public static int klassAccessFlagsOffset() { + return config().klassAccessFlagsOffset; + } + + @Fold + private static int klassLayoutHelperOffset() { + return config().klassLayoutHelperOffset; + } + + public static int readLayoutHelper(Word hub) { + return hub.readInt(klassLayoutHelperOffset(), FINAL_LOCATION); + } + + @Fold + public static int arrayKlassLayoutHelperIdentifier() { + return config().arrayKlassLayoutHelperIdentifier; + } + + @Fold + public static int arrayKlassComponentMirrorOffset() { + return config().arrayKlassComponentMirrorOffset; + } + + @Fold + public static int klassSuperKlassOffset() { + return config().klassSuperKlassOffset; + } + + public static final Object MARK_WORD_LOCATION = LocationNode.createLocation("MarkWord"); + + @Fold + public static int markOffset() { + return config().markOffset; + } + + public static final Object HUB_LOCATION = LocationNode.createLocation("Hub"); + + @Fold + private static int hubOffset() { + return config().hubOffset; + } + + public static void initializeObjectHeader(Word memory, Word markWord, Word hub) { + memory.writeWord(markOffset(), markWord, MARK_WORD_LOCATION); + memory.writeWord(hubOffset(), hub, HUB_LOCATION); + } + + @Fold + public static int unlockedMask() { + return config().unlockedMask; + } + + /** + * Mask for a biasable, locked or unlocked mark word. + * + * <pre> + * +----------------------------------+-+-+ + * | 1|1|1| + * +----------------------------------+-+-+ + * </pre> + * + */ + @Fold + public static int biasedLockMaskInPlace() { + return config().biasedLockMaskInPlace; + } + + @Fold + public static int epochMaskInPlace() { + return config().epochMaskInPlace; + } + + /** + * Pattern for a biasable, unlocked mark word. + * + * <pre> + * +----------------------------------+-+-+ + * | 1|0|1| + * +----------------------------------+-+-+ + * </pre> + * + */ + @Fold + public static int biasedLockPattern() { + return config().biasedLockPattern; + } + + @Fold + public static int ageMaskInPlace() { + return config().ageMaskInPlace; + } + + @Fold + public static int metaspaceArrayLengthOffset() { + return config().metaspaceArrayLengthOffset; + } + + @Fold + public static int metaspaceArrayBaseOffset() { + return config().metaspaceArrayBaseOffset; + } + + @Fold + public static int arrayLengthOffset() { + return config().arrayLengthOffset; + } + + @Fold + public static int arrayBaseOffset(Kind elementKind) { + return HotSpotRuntime.getArrayBaseOffset(elementKind); + } + + @Fold + public static int arrayIndexScale(Kind elementKind) { + return HotSpotRuntime.getArrayIndexScale(elementKind); + } + + @Fold + public static int cardTableShift() { + return config().cardtableShift; + } + + @Fold + public static long cardTableStart() { + return config().cardtableStartAddress; + } + + @Fold + public static int g1CardQueueIndexOffset() { + return config().g1CardQueueIndexOffset; + } + + @Fold + public static int g1CardQueueBufferOffset() { + return config().g1CardQueueBufferOffset; + } + + @Fold + public static int logOfHRGrainBytes() { + return config().logOfHRGrainBytes; + } + + @Fold + public static int g1SATBQueueMarkingOffset() { + return config().g1SATBQueueMarkingOffset; + } + + @Fold + public static int g1SATBQueueIndexOffset() { + return config().g1SATBQueueIndexOffset; + } + + @Fold + public static int g1SATBQueueBufferOffset() { + return config().g1SATBQueueBufferOffset; + } + + @Fold + public static int superCheckOffsetOffset() { + return config().superCheckOffsetOffset; + } + + public static final Object SECONDARY_SUPER_CACHE_LOCATION = LocationNode.createLocation("SecondarySuperCache"); + + @Fold + public static int secondarySuperCacheOffset() { + return config().secondarySuperCacheOffset; + } + + public static final Object SECONDARY_SUPERS_LOCATION = LocationNode.createLocation("SecondarySupers"); + + @Fold + public static int secondarySupersOffset() { + return config().secondarySupersOffset; + } + + public static final Object DISPLACED_MARK_WORD_LOCATION = LocationNode.createLocation("DisplacedMarkWord"); + + @Fold + public static int lockDisplacedMarkOffset() { + return config().basicLockDisplacedHeaderOffset; + } + + @Fold + public static boolean useBiasedLocking() { + return config().useBiasedLocking; + } + + @Fold + public static boolean useG1GC() { + return config().useG1GC; + } + + @Fold + static int uninitializedIdentityHashCodeValue() { + return config().uninitializedIdentityHashCodeValue; + } + + @Fold + static int identityHashCodeShift() { + return config().identityHashCodeShift; + } + + /** + * Loads the hub from a object, null checking it first. + */ + public static Word loadHub(Object object) { + return loadHubIntrinsic(object, wordKind()); + } + + public static Object verifyOop(Object object) { + if (verifyOops()) { + VerifyOopStubCall.call(object); + } + return object; + } + + /** + * Gets the value of the stack pointer register as a Word. + */ + public static Word stackPointer() { + return HotSpotReplacementsUtil.registerAsWord(stackPointerRegister(), true, false); + } + + /** + * Gets the value of the thread register as a Word. + */ + public static Word thread() { + return HotSpotReplacementsUtil.registerAsWord(threadRegister(), true, false); + } + + public static Word loadWordFromObject(Object object, int offset) { + return loadWordFromObjectIntrinsic(object, 0, offset, wordKind()); + } + + @NodeIntrinsic(value = ReadRegisterNode.class, setStampFromReturnType = true) + public static native Word registerAsWord(@ConstantNodeParameter Register register, @ConstantNodeParameter boolean directUse, @ConstantNodeParameter boolean incoming); + + @SuppressWarnings("unused") + @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true) + private static Word loadWordFromObjectIntrinsic(Object object, @ConstantNodeParameter int displacement, long offset, @ConstantNodeParameter Kind wordKind) { + return Word.box(unsafeReadWord(object, offset + displacement)); + } + + @SuppressWarnings("unused") + @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true) + static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word) { + return Word.box(unsafeReadWord(object, hubOffset())); + } + + @Fold + public static int log2WordSize() { + return CodeUtil.log2(wordSize()); + } + + public static final Object CLASS_STATE_LOCATION = LocationNode.createLocation("ClassState"); + + @Fold + public static int klassStateOffset() { + return config().klassStateOffset; + } + + @Fold + public static int klassStateFullyInitialized() { + return config().klassStateFullyInitialized; + } + + @Fold + public static int klassModifierFlagsOffset() { + return config().klassModifierFlagsOffset; + } + + @Fold + public static int klassOffset() { + return config().klassOffset; + } + + @Fold + public static int classMirrorOffset() { + return config().classMirrorOffset; + } + + @Fold + public static int klassInstanceSizeOffset() { + return config().klassInstanceSizeOffset; + } + + public static final Object HEAP_TOP_LOCATION = LocationNode.createLocation("HeapTop"); + + @Fold + public static long heapTopAddress() { + return config().heapTopAddress; + } + + public static final Object HEAP_END_LOCATION = LocationNode.createLocation("HeapEnd"); + + @Fold + public static long heapEndAddress() { + return config().heapEndAddress; + } + + @Fold + public static long tlabIntArrayMarkWord() { + return config().tlabIntArrayMarkWord; + } + + @Fold + public static boolean inlineContiguousAllocationSupported() { + return config().inlineContiguousAllocationSupported; + } + + @Fold + public static int tlabAlignmentReserveInHeapWords() { + return config().tlabAlignmentReserve; + } + + public static final Object TLAB_SIZE_LOCATION = LocationNode.createLocation("TlabSize"); + + @Fold + public static int threadTlabSizeOffset() { + return config().threadTlabSizeOffset; + } + + public static final Object TLAB_THREAD_ALLOCATED_BYTES_LOCATION = LocationNode.createLocation("TlabThreadAllocatedBytes"); + + @Fold + public static int threadAllocatedBytesOffset() { + return config().threadAllocatedBytesOffset; + } + + public static final Object TLAB_REFILL_WASTE_LIMIT_LOCATION = LocationNode.createLocation("RefillWasteLimit"); + + @Fold + public static int tlabRefillWasteLimitOffset() { + return config().tlabRefillWasteLimitOffset; + } + + public static final Object TLAB_NOF_REFILLS_LOCATION = LocationNode.createLocation("TlabNOfRefills"); + + @Fold + public static int tlabNumberOfRefillsOffset() { + return config().tlabNumberOfRefillsOffset; + } + + public static final Object TLAB_FAST_REFILL_WASTE_LOCATION = LocationNode.createLocation("TlabFastRefillWaste"); + + @Fold + public static int tlabFastRefillWasteOffset() { + return config().tlabFastRefillWasteOffset; + } + + public static final Object TLAB_SLOW_ALLOCATIONS_LOCATION = LocationNode.createLocation("TlabSlowAllocations"); + + @Fold + public static int tlabSlowAllocationsOffset() { + return config().tlabSlowAllocationsOffset; + } + + @Fold + public static int tlabRefillWasteIncrement() { + return config().tlabRefillWasteIncrement; + } + + @Fold + public static boolean tlabStats() { + return config().tlabStats; + } + + @Fold + public static int layoutHelperOffset() { + return config().layoutHelperOffset; + } + + @Fold + public static int layoutHelperHeaderSizeShift() { + return config().layoutHelperHeaderSizeShift; + } + + @Fold + public static int layoutHelperHeaderSizeMask() { + return config().layoutHelperHeaderSizeMask; + } + + @Fold + public static int layoutHelperLog2ElementSizeShift() { + return config().layoutHelperLog2ElementSizeShift; + } + + @Fold + public static int layoutHelperLog2ElementSizeMask() { + return config().layoutHelperLog2ElementSizeMask; + } + + @Fold + public static int layoutHelperElementTypeShift() { + return config().layoutHelperElementTypeShift; + } + + @Fold + public static int layoutHelperElementTypeMask() { + return config().layoutHelperElementTypeMask; + } + + @Fold + public static int layoutHelperElementTypePrimitiveInPlace() { + return config().layoutHelperElementTypePrimitiveInPlace; + } + + static { + assert arrayIndexScale(Kind.Byte) == 1; + assert arrayIndexScale(Kind.Boolean) == 1; + assert arrayIndexScale(Kind.Char) == 2; + assert arrayIndexScale(Kind.Short) == 2; + assert arrayIndexScale(Kind.Int) == 4; + assert arrayIndexScale(Kind.Long) == 8; + assert arrayIndexScale(Kind.Float) == 4; + assert arrayIndexScale(Kind.Double) == 8; + } + + static int computeHashCode(Object x) { + Word mark = loadWordFromObject(x, markOffset()); + + // this code is independent from biased locking (although it does not look that way) + final Word biasedLock = mark.and(biasedLockMaskInPlace()); + if (probability(FAST_PATH_PROBABILITY, biasedLock.equal(Word.unsigned(unlockedMask())))) { + int hash = (int) mark.unsignedShiftRight(identityHashCodeShift()).rawValue(); + if (probability(FAST_PATH_PROBABILITY, hash != uninitializedIdentityHashCodeValue())) { + return hash; + } + } + + return IdentityHashCodeStubCall.call(x); + } + + @Fold + public static int verifiedEntryPointOffset() { + return config().nmethodEntryOffset; + } +}
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSnippetUtils.java Tue Apr 30 17:29:33 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,665 +0,0 @@ -/* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.hotspot.replacements; - -import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; -import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; -import sun.misc.*; - -import com.oracle.graal.api.code.*; -import com.oracle.graal.api.meta.*; -import com.oracle.graal.graph.Node.ConstantNodeParameter; -import com.oracle.graal.graph.Node.NodeIntrinsic; -import com.oracle.graal.hotspot.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.hotspot.nodes.*; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.replacements.Snippet.Fold; -import com.oracle.graal.replacements.nodes.*; -import com.oracle.graal.word.*; - -//JaCoCo Exclude - -/** - * A collection of methods used in HotSpot snippets and substitutions. - */ -public class HotSpotSnippetUtils { - - public static final Object ANY_LOCATION = LocationNode.ANY_LOCATION; - public static final Object FINAL_LOCATION = LocationNode.FINAL_LOCATION; - - public static HotSpotVMConfig config() { - return graalRuntime().getConfig(); - } - - @Fold - public static boolean useTLAB() { - return config().useTLAB; - } - - @Fold - public static boolean verifyOops() { - return config().verifyOops; - } - - public static final Object EXCEPTION_OOP_LOCATION = LocationNode.createLocation("ExceptionOop"); - - @Fold - public static int threadExceptionOopOffset() { - return config().threadExceptionOopOffset; - } - - public static final Object EXCEPTION_PC_LOCATION = LocationNode.createLocation("ExceptionPc"); - - @Fold - public static int threadExceptionPcOffset() { - return config().threadExceptionPcOffset; - } - - public static final Object TLAB_TOP_LOCATION = LocationNode.createLocation("TlabTop"); - - @Fold - public static int threadTlabTopOffset() { - return config().threadTlabTopOffset; - } - - public static final Object TLAB_END_LOCATION = LocationNode.createLocation("TlabEnd"); - - @Fold - private static int threadTlabEndOffset() { - return config().threadTlabEndOffset; - } - - public static final Object TLAB_START_LOCATION = LocationNode.createLocation("TlabStart"); - - @Fold - private static int threadTlabStartOffset() { - return config().threadTlabStartOffset; - } - - public static final Object PENDING_EXCEPTION_LOCATION = LocationNode.createLocation("PendingException"); - - @Fold - private static int threadPendingExceptionOffset() { - return config().pendingExceptionOffset; - } - - public static final Object OBJECT_RESULT_LOCATION = LocationNode.createLocation("ObjectResult"); - - @Fold - private static int objectResultOffset() { - return config().threadObjectResultOffset; - } - - public static Object readExceptionOop(Word thread) { - return thread.readObject(threadExceptionOopOffset(), EXCEPTION_OOP_LOCATION); - } - - public static Word readExceptionPc(Word thread) { - return thread.readWord(threadExceptionOopOffset(), EXCEPTION_PC_LOCATION); - } - - public static void writeExceptionOop(Word thread, Object value) { - thread.writeObject(threadExceptionOopOffset(), value, EXCEPTION_OOP_LOCATION); - } - - public static void writeExceptionPc(Word thread, Word value) { - thread.writeWord(threadExceptionPcOffset(), value, EXCEPTION_PC_LOCATION); - } - - public static Word readTlabTop(Word thread) { - return thread.readWord(threadTlabTopOffset(), TLAB_TOP_LOCATION); - } - - public static Word readTlabEnd(Word thread) { - return thread.readWord(threadTlabEndOffset(), TLAB_END_LOCATION); - } - - public static Word readTlabStart(Word thread) { - return thread.readWord(threadTlabStartOffset(), TLAB_START_LOCATION); - } - - public static void writeTlabTop(Word thread, Word top) { - thread.writeWord(threadTlabTopOffset(), top, TLAB_TOP_LOCATION); - } - - public static void initializeTlab(Word thread, Word start, Word end) { - thread.writeWord(threadTlabStartOffset(), start, TLAB_START_LOCATION); - thread.writeWord(threadTlabTopOffset(), start, TLAB_TOP_LOCATION); - thread.writeWord(threadTlabEndOffset(), end, TLAB_END_LOCATION); - } - - /** - * Clears the pending exception for the given thread. - * - * @return {@code true} if there was a pending exception - */ - public static boolean clearPendingException(Word thread) { - boolean result = thread.readObject(threadPendingExceptionOffset(), PENDING_EXCEPTION_LOCATION) != null; - thread.writeObject(threadPendingExceptionOffset(), null); - return result; - } - - /** - * Gets and clears the object result from a runtime call stored in a thread local. - * - * @return the object that was in the thread local - */ - public static Object getAndClearObjectResult(Word thread) { - Object result = thread.readObject(objectResultOffset(), OBJECT_RESULT_LOCATION); - thread.writeObject(objectResultOffset(), null); - return result; - } - - @Fold - public static int threadObjectOffset() { - return config().threadObjectOffset; - } - - @Fold - public static int osThreadOffset() { - return config().osThreadOffset; - } - - @Fold - public static int osThreadInterruptedOffset() { - return config().osThreadInterruptedOffset; - } - - @Fold - public static Kind wordKind() { - return graalRuntime().getTarget().wordKind; - } - - @Fold - public static Register threadRegister() { - return graalRuntime().getRuntime().threadRegister(); - } - - @Fold - public static Register stackPointerRegister() { - return graalRuntime().getRuntime().stackPointerRegister(); - } - - @Fold - public static int wordSize() { - return graalRuntime().getTarget().wordSize; - } - - @Fold - public static int pageSize() { - return Unsafe.getUnsafe().pageSize(); - } - - public static final Object PROTOTYPE_MARK_WORD_LOCATION = LocationNode.createLocation("PrototypeMarkWord"); - - @Fold - public static int prototypeMarkWordOffset() { - return config().prototypeMarkWordOffset; - } - - @Fold - public static long arrayPrototypeMarkWord() { - return config().arrayPrototypeMarkWord; - } - - @Fold - public static int klassAccessFlagsOffset() { - return config().klassAccessFlagsOffset; - } - - @Fold - private static int klassLayoutHelperOffset() { - return config().klassLayoutHelperOffset; - } - - public static int readLayoutHelper(Word hub) { - return hub.readInt(klassLayoutHelperOffset(), FINAL_LOCATION); - } - - @Fold - public static int arrayKlassLayoutHelperIdentifier() { - return config().arrayKlassLayoutHelperIdentifier; - } - - @Fold - public static int arrayKlassComponentMirrorOffset() { - return config().arrayKlassComponentMirrorOffset; - } - - @Fold - public static int klassSuperKlassOffset() { - return config().klassSuperKlassOffset; - } - - public static final Object MARK_WORD_LOCATION = LocationNode.createLocation("MarkWord"); - - @Fold - public static int markOffset() { - return config().markOffset; - } - - public static final Object HUB_LOCATION = LocationNode.createLocation("Hub"); - - @Fold - private static int hubOffset() { - return config().hubOffset; - } - - public static void initializeObjectHeader(Word memory, Word markWord, Word hub) { - memory.writeWord(markOffset(), markWord, MARK_WORD_LOCATION); - memory.writeWord(hubOffset(), hub, HUB_LOCATION); - } - - @Fold - public static int unlockedMask() { - return config().unlockedMask; - } - - /** - * Mask for a biasable, locked or unlocked mark word. - * - * <pre> - * +----------------------------------+-+-+ - * | 1|1|1| - * +----------------------------------+-+-+ - * </pre> - * - */ - @Fold - public static int biasedLockMaskInPlace() { - return config().biasedLockMaskInPlace; - } - - @Fold - public static int epochMaskInPlace() { - return config().epochMaskInPlace; - } - - /** - * Pattern for a biasable, unlocked mark word. - * - * <pre> - * +----------------------------------+-+-+ - * | 1|0|1| - * +----------------------------------+-+-+ - * </pre> - * - */ - @Fold - public static int biasedLockPattern() { - return config().biasedLockPattern; - } - - @Fold - public static int ageMaskInPlace() { - return config().ageMaskInPlace; - } - - @Fold - public static int metaspaceArrayLengthOffset() { - return config().metaspaceArrayLengthOffset; - } - - @Fold - public static int metaspaceArrayBaseOffset() { - return config().metaspaceArrayBaseOffset; - } - - @Fold - public static int arrayLengthOffset() { - return config().arrayLengthOffset; - } - - @Fold - public static int arrayBaseOffset(Kind elementKind) { - return HotSpotRuntime.getArrayBaseOffset(elementKind); - } - - @Fold - public static int arrayIndexScale(Kind elementKind) { - return HotSpotRuntime.getArrayIndexScale(elementKind); - } - - @Fold - public static int cardTableShift() { - return config().cardtableShift; - } - - @Fold - public static long cardTableStart() { - return config().cardtableStartAddress; - } - - @Fold - public static int g1CardQueueIndexOffset() { - return config().g1CardQueueIndexOffset; - } - - @Fold - public static int g1CardQueueBufferOffset() { - return config().g1CardQueueBufferOffset; - } - - @Fold - public static int logOfHRGrainBytes() { - return config().logOfHRGrainBytes; - } - - @Fold - public static int g1SATBQueueMarkingOffset() { - return config().g1SATBQueueMarkingOffset; - } - - @Fold - public static int g1SATBQueueIndexOffset() { - return config().g1SATBQueueIndexOffset; - } - - @Fold - public static int g1SATBQueueBufferOffset() { - return config().g1SATBQueueBufferOffset; - } - - @Fold - public static int superCheckOffsetOffset() { - return config().superCheckOffsetOffset; - } - - public static final Object SECONDARY_SUPER_CACHE_LOCATION = LocationNode.createLocation("SecondarySuperCache"); - - @Fold - public static int secondarySuperCacheOffset() { - return config().secondarySuperCacheOffset; - } - - public static final Object SECONDARY_SUPERS_LOCATION = LocationNode.createLocation("SecondarySupers"); - - @Fold - public static int secondarySupersOffset() { - return config().secondarySupersOffset; - } - - public static final Object DISPLACED_MARK_WORD_LOCATION = LocationNode.createLocation("DisplacedMarkWord"); - - @Fold - public static int lockDisplacedMarkOffset() { - return config().basicLockDisplacedHeaderOffset; - } - - @Fold - public static boolean useBiasedLocking() { - return config().useBiasedLocking; - } - - @Fold - public static boolean useG1GC() { - return config().useG1GC; - } - - @Fold - static int uninitializedIdentityHashCodeValue() { - return config().uninitializedIdentityHashCodeValue; - } - - @Fold - static int identityHashCodeShift() { - return config().identityHashCodeShift; - } - - /** - * Loads the hub from a object, null checking it first. - */ - public static Word loadHub(Object object) { - return loadHubIntrinsic(object, wordKind()); - } - - public static Object verifyOop(Object object) { - if (verifyOops()) { - VerifyOopStubCall.call(object); - } - return object; - } - - /** - * Gets the value of the stack pointer register as a Word. - */ - public static Word stackPointer() { - return HotSpotSnippetUtils.registerAsWord(stackPointerRegister(), true, false); - } - - /** - * Gets the value of the thread register as a Word. - */ - public static Word thread() { - return HotSpotSnippetUtils.registerAsWord(threadRegister(), true, false); - } - - public static Word loadWordFromObject(Object object, int offset) { - return loadWordFromObjectIntrinsic(object, 0, offset, wordKind()); - } - - @NodeIntrinsic(value = ReadRegisterNode.class, setStampFromReturnType = true) - public static native Word registerAsWord(@ConstantNodeParameter Register register, @ConstantNodeParameter boolean directUse, @ConstantNodeParameter boolean incoming); - - @SuppressWarnings("unused") - @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true) - private static Word loadWordFromObjectIntrinsic(Object object, @ConstantNodeParameter int displacement, long offset, @ConstantNodeParameter Kind wordKind) { - return Word.box(unsafeReadWord(object, offset + displacement)); - } - - @SuppressWarnings("unused") - @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true) - static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word) { - return Word.box(unsafeReadWord(object, hubOffset())); - } - - @Fold - public static int log2WordSize() { - return CodeUtil.log2(wordSize()); - } - - public static final Object CLASS_STATE_LOCATION = LocationNode.createLocation("ClassState"); - - @Fold - public static int klassStateOffset() { - return config().klassStateOffset; - } - - @Fold - public static int klassStateFullyInitialized() { - return config().klassStateFullyInitialized; - } - - @Fold - public static int klassModifierFlagsOffset() { - return config().klassModifierFlagsOffset; - } - - @Fold - public static int klassOffset() { - return config().klassOffset; - } - - @Fold - public static int classMirrorOffset() { - return config().classMirrorOffset; - } - - @Fold - public static int klassInstanceSizeOffset() { - return config().klassInstanceSizeOffset; - } - - public static final Object HEAP_TOP_LOCATION = LocationNode.createLocation("HeapTop"); - - @Fold - public static long heapTopAddress() { - return config().heapTopAddress; - } - - public static final Object HEAP_END_LOCATION = LocationNode.createLocation("HeapEnd"); - - @Fold - public static long heapEndAddress() { - return config().heapEndAddress; - } - - @Fold - public static long tlabIntArrayMarkWord() { - return config().tlabIntArrayMarkWord; - } - - @Fold - public static boolean inlineContiguousAllocationSupported() { - return config().inlineContiguousAllocationSupported; - } - - @Fold - public static int tlabAlignmentReserveInHeapWords() { - return config().tlabAlignmentReserve; - } - - public static final Object TLAB_SIZE_LOCATION = LocationNode.createLocation("TlabSize"); - - @Fold - public static int threadTlabSizeOffset() { - return config().threadTlabSizeOffset; - } - - public static final Object TLAB_THREAD_ALLOCATED_BYTES_LOCATION = LocationNode.createLocation("TlabThreadAllocatedBytes"); - - @Fold - public static int threadAllocatedBytesOffset() { - return config().threadAllocatedBytesOffset; - } - - public static final Object TLAB_REFILL_WASTE_LIMIT_LOCATION = LocationNode.createLocation("RefillWasteLimit"); - - @Fold - public static int tlabRefillWasteLimitOffset() { - return config().tlabRefillWasteLimitOffset; - } - - public static final Object TLAB_NOF_REFILLS_LOCATION = LocationNode.createLocation("TlabNOfRefills"); - - @Fold - public static int tlabNumberOfRefillsOffset() { - return config().tlabNumberOfRefillsOffset; - } - - public static final Object TLAB_FAST_REFILL_WASTE_LOCATION = LocationNode.createLocation("TlabFastRefillWaste"); - - @Fold - public static int tlabFastRefillWasteOffset() { - return config().tlabFastRefillWasteOffset; - } - - public static final Object TLAB_SLOW_ALLOCATIONS_LOCATION = LocationNode.createLocation("TlabSlowAllocations"); - - @Fold - public static int tlabSlowAllocationsOffset() { - return config().tlabSlowAllocationsOffset; - } - - @Fold - public static int tlabRefillWasteIncrement() { - return config().tlabRefillWasteIncrement; - } - - @Fold - public static boolean tlabStats() { - return config().tlabStats; - } - - @Fold - public static int layoutHelperOffset() { - return config().layoutHelperOffset; - } - - @Fold - public static int layoutHelperHeaderSizeShift() { - return config().layoutHelperHeaderSizeShift; - } - - @Fold - public static int layoutHelperHeaderSizeMask() { - return config().layoutHelperHeaderSizeMask; - } - - @Fold - public static int layoutHelperLog2ElementSizeShift() { - return config().layoutHelperLog2ElementSizeShift; - } - - @Fold - public static int layoutHelperLog2ElementSizeMask() { - return config().layoutHelperLog2ElementSizeMask; - } - - @Fold - public static int layoutHelperElementTypeShift() { - return config().layoutHelperElementTypeShift; - } - - @Fold - public static int layoutHelperElementTypeMask() { - return config().layoutHelperElementTypeMask; - } - - @Fold - public static int layoutHelperElementTypePrimitiveInPlace() { - return config().layoutHelperElementTypePrimitiveInPlace; - } - - static { - assert arrayIndexScale(Kind.Byte) == 1; - assert arrayIndexScale(Kind.Boolean) == 1; - assert arrayIndexScale(Kind.Char) == 2; - assert arrayIndexScale(Kind.Short) == 2; - assert arrayIndexScale(Kind.Int) == 4; - assert arrayIndexScale(Kind.Long) == 8; - assert arrayIndexScale(Kind.Float) == 4; - assert arrayIndexScale(Kind.Double) == 8; - } - - static int computeHashCode(Object x) { - Word mark = loadWordFromObject(x, markOffset()); - - // this code is independent from biased locking (although it does not look that way) - final Word biasedLock = mark.and(biasedLockMaskInPlace()); - if (probability(FAST_PATH_PROBABILITY, biasedLock.equal(Word.unsigned(unlockedMask())))) { - int hash = (int) mark.unsignedShiftRight(identityHashCodeShift()).rawValue(); - if (probability(FAST_PATH_PROBABILITY, hash != uninitializedIdentityHashCodeValue())) { - return hash; - } - } - - return IdentityHashCodeStubCall.call(x); - } - - @Fold - public static int verifiedEntryPointOffset() { - return config().nmethodEntryOffset; - } -}
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.TypeCheckSnippetUtils.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; import static com.oracle.graal.replacements.SnippetTemplate.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -26,7 +26,7 @@ import static com.oracle.graal.hotspot.nodes.DirectCompareAndSwapNode.*; import static com.oracle.graal.hotspot.nodes.EndLockScopeNode.*; import static com.oracle.graal.hotspot.nodes.VMErrorNode.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.SnippetTemplate.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; @@ -150,7 +150,7 @@ Word biasedMark = unbiasedMark.or(thread); trace(trace, " unbiasedMark: 0x%016lx\n", unbiasedMark); trace(trace, " biasedMark: 0x%016lx\n", biasedMark); - if (probability(VERY_FAST_DEOPT_PATH_PROBABILITY, compareAndSwap(object, markOffset(), unbiasedMark, biasedMark, MARK_WORD_LOCATION).equal(unbiasedMark))) { + if (probability(VERY_FAST_PATH_PROBABILITY, compareAndSwap(object, markOffset(), unbiasedMark, biasedMark, MARK_WORD_LOCATION).equal(unbiasedMark))) { // Object is now biased to current thread -> done traceObject(trace, "+lock{bias:acquired}", object); return; @@ -170,7 +170,7 @@ // the bias from one thread to another directly in this situation. Word biasedMark = prototypeMarkWord.or(thread); trace(trace, " biasedMark: 0x%016lx\n", biasedMark); - if (probability(VERY_FAST_DEOPT_PATH_PROBABILITY, compareAndSwap(object, markOffset(), mark, biasedMark, MARK_WORD_LOCATION).equal(mark))) { + if (probability(VERY_FAST_PATH_PROBABILITY, compareAndSwap(object, markOffset(), mark, biasedMark, MARK_WORD_LOCATION).equal(mark))) { // Object is now biased to current thread -> done traceObject(trace, "+lock{bias:transfer}", object); return;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -23,7 +23,7 @@ package com.oracle.graal.hotspot.replacements; import static com.oracle.graal.api.code.UnsignedMath.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.UnsafeArrayCastNode.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; import static com.oracle.graal.replacements.SnippetTemplate.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.lang.reflect.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; import com.oracle.graal.api.replacements.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.replacements.*; import com.oracle.graal.hotspot.nodes.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.util.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.replacements.SnippetTemplate.*; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java Thu May 02 14:12:24 2013 +0200 @@ -23,7 +23,7 @@ package com.oracle.graal.hotspot.stubs; import static com.oracle.graal.hotspot.nodes.PatchReturnAddressNode.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/IdentityHashCodeStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/IdentityHashCodeStub.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.stubs; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java Thu May 02 14:12:24 2013 +0200 @@ -25,7 +25,7 @@ import static com.oracle.graal.api.code.DeoptimizationAction.*; import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.*; import static com.oracle.graal.hotspot.stubs.NewInstanceStub.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java Thu May 02 14:12:24 2013 +0200 @@ -26,7 +26,7 @@ import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; import static com.oracle.graal.hotspot.nodes.DirectCompareAndSwapNode.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewMultiArrayStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewMultiArrayStub.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.stubs; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/RegisterFinalizerStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/RegisterFinalizerStub.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.stubs; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/Stub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/Stub.java Thu May 02 14:12:24 2013 +0200 @@ -27,7 +27,7 @@ import static com.oracle.graal.api.meta.MetaUtil.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; import static com.oracle.graal.hotspot.nodes.CStringNode.*; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import java.lang.reflect.*; import java.util.*;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ThreadIsInterruptedStub.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ThreadIsInterruptedStub.java Thu May 02 14:12:24 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.stubs; -import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import com.oracle.graal.api.code.RuntimeCallTarget.Descriptor; import com.oracle.graal.api.code.*;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BranchProbabilityNode.java Tue Apr 30 17:29:33 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BranchProbabilityNode.java Thu May 02 14:12:24 2013 +0200 @@ -43,8 +43,8 @@ public static final double FAST_PATH_PROBABILITY = 0.99; public static final double SLOW_PATH_PROBABILITY = 1 - FAST_PATH_PROBABILITY; - public static final double VERY_FAST_DEOPT_PATH_PROBABILITY = 0.999; - public static final double VERY_SLOW_PATH_PROBABILITY = 1 - VERY_FAST_DEOPT_PATH_PROBABILITY; + public static final double VERY_FAST_PATH_PROBABILITY = 0.999; + public static final double VERY_SLOW_PATH_PROBABILITY = 1 - VERY_FAST_PATH_PROBABILITY; @Input private ValueNode probability; @Input private ValueNode condition;