# HG changeset patch # User Doug Simon # Date 1417306641 0 # Node ID 487c792de3dccfbed083f2347ab566290170bbd0 # Parent 351cc8ee5e3fc7681f20e32df35530a5dd9c2a43# Parent a65c1032f4005b3ff399df6f89cd5e8518fa8f31 Merge. diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java Sun Nov 30 00:17:21 2014 +0000 @@ -75,7 +75,7 @@ public static void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler asm, HotSpotVMConfig config, boolean atReturn, LIRFrameState state, Register scratch) { assert !atReturn || state == null : "state is unneeded at return"; if (ImmutableCode.getValue()) { - Kind hostWordKind = HotSpotGraalRuntime.getHostWordKind(); + Kind hostWordKind = Kind.Long; int alignment = hostWordKind.getBitCount() / Byte.SIZE; JavaConstant pollingPageAddress = JavaConstant.forIntegerKind(hostWordKind, config.safepointPollingAddress); // This move will be patched to load the safepoint page from a data segment diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java --- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java Sun Nov 30 00:17:21 2014 +0000 @@ -192,7 +192,7 @@ InvokeNode kernelStart = createInvoke(getClass(), "getKernelStart", ConstantNode.forConstant(kernel.asConstant(), providers.getMetaAccess(), getGraph())); - AllocaNode buf = append(AllocaNode.create(bufSize / wordSize, new BitSet())); + AllocaNode buf = append(AllocaNode.create(bufSize / wordSize, wordKind, new BitSet())); ValueNode objectParametersOffsets; ValueNode pinnedObjects; ConstantNode nullWord = ConstantNode.forIntegerKind(wordKind, 0L, getGraph()); @@ -202,9 +202,9 @@ } else { int intsPerWord = wordSize / intSize; int slots = roundUp(objectSlots.size(), intsPerWord); - objectParametersOffsets = append(AllocaNode.create(slots, new BitSet())); + objectParametersOffsets = append(AllocaNode.create(slots, wordKind, new BitSet())); // No refmap for pinned objects list since kernel execution is (currently) GC unsafe - pinnedObjects = append(AllocaNode.create(objectSlots.size(), new BitSet())); + pinnedObjects = append(AllocaNode.create(objectSlots.size(), wordKind, new BitSet())); // Initialize the object parameter offsets array int index = 0; diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java Sun Nov 30 00:17:21 2014 +0000 @@ -249,10 +249,12 @@ public JavaConstant readStableFieldValue(JavaField field, JavaConstant receiver, boolean isDefaultStable) { JavaConstant fieldValue = readNonStableFieldValue(field, receiver); - JavaType declaredType = field.getType(); - if (declaredType.getComponentType() != null) { - int stableDimension = getArrayDimension(declaredType); - return HotSpotObjectConstantImpl.forStableArray(((HotSpotObjectConstantImpl) fieldValue).object(), stableDimension, isDefaultStable); + if (fieldValue.isNonNull()) { + JavaType declaredType = field.getType(); + if (declaredType.getComponentType() != null) { + int stableDimension = getArrayDimension(declaredType); + return HotSpotObjectConstantImpl.forStableArray(((HotSpotObjectConstantImpl) fieldValue).object(), stableDimension, isDefaultStable); + } } return fieldValue; } diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Sun Nov 30 00:17:21 2014 +0000 @@ -28,6 +28,8 @@ import java.util.*; +import sun.misc.*; + import com.oracle.graal.api.meta.*; import com.oracle.graal.api.meta.JavaMethodProfile.ProfiledMethod; import com.oracle.graal.api.meta.JavaTypeProfile.ProfiledType; @@ -171,8 +173,7 @@ /** * Since the values are stored in cells (platform words) this method uses - * {@link HotSpotGraalRuntime#unsafeReadWord} to read the right value on both little and big - * endian machines. + * {@link Unsafe#getAddress} to read the right value on both little and big endian machines. */ private long readUnsignedInt(int position, int offsetInBytes) { long fullOffsetInBytes = computeFullOffset(position, offsetInBytes); @@ -186,8 +187,7 @@ /** * Since the values are stored in cells (platform words) this method uses - * {@link HotSpotGraalRuntime#unsafeReadWord} to read the right value on both little and big - * endian machines. + * {@link Unsafe#getAddress} to read the right value on both little and big endian machines. */ private int readInt(int position, int offsetInBytes) { long fullOffsetInBytes = computeFullOffset(position, offsetInBytes); diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Sun Nov 30 00:17:21 2014 +0000 @@ -27,7 +27,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -51,12 +50,12 @@ */ protected final BitSet objects; - public static AllocaNode create(int slots, BitSet objects) { - return new AllocaNode(slots, objects); + public static AllocaNode create(int slots, Kind wordKind, BitSet objects) { + return new AllocaNode(slots, wordKind, objects); } - protected AllocaNode(int slots, BitSet objects) { - super(StampFactory.forKind(HotSpotGraalRuntime.getHostWordKind())); + protected AllocaNode(int slots, Kind wordKind, BitSet objects) { + super(StampFactory.forKind(wordKind)); this.slots = slots; this.objects = objects; } diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Sun Nov 30 00:17:21 2014 +0000 @@ -44,8 +44,13 @@ public class AESCryptSubstitutions { public static class Guard implements SubstitutionGuard { + private HotSpotVMConfig config; + + public Guard(HotSpotVMConfig config) { + this.config = config; + } + public boolean execute() { - HotSpotVMConfig config = HotSpotGraalRuntime.runtime().getConfig(); if (config.useAESIntrinsics) { assert config.aescryptEncryptBlockStub != 0L; assert config.aescryptDecryptBlockStub != 0L; diff -r a65c1032f400 -r 487c792de3dc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Sat Nov 29 06:35:00 2014 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Sun Nov 30 00:17:21 2014 +0000 @@ -44,14 +44,14 @@ public static class Guard implements SubstitutionGuard { - private HotSpotGraalRuntimeProvider runtime; + private HotSpotVMConfig config; - public Guard(HotSpotGraalRuntimeProvider runtime) { - this.runtime = runtime; + public Guard(HotSpotVMConfig config) { + this.config = config; } public boolean execute() { - return runtime.getConfig().useCRC32Intrinsics; + return config.useCRC32Intrinsics; } }