# HG changeset patch # User Stefan Anzinger # Date 1442308687 -7200 # Node ID b8e2704243ebea7912e5b5db0af701c44db5519f # Parent 5a410e01cd5ff8ad416f9c7414045fbb0d8febff Make static use of HotSpotJVMCIRuntimeProvider.getArrayIndexScale and friends diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Sep 15 11:18:07 2015 +0200 @@ -29,6 +29,7 @@ import static com.oracle.graal.debug.GraalDebugConfig.MethodFilter; import static com.oracle.graal.debug.GraalDebugConfig.Verify; import static com.oracle.graal.debug.GraalDebugConfig.areScopedMetricsOrTimersEnabled; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayIndexScale; import static jdk.internal.jvmci.inittimer.InitTimer.timer; import java.util.Collections; @@ -121,15 +122,15 @@ return jvmciRuntime; } - private boolean checkArrayIndexScaleInvariants() { - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Byte) == 1; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Boolean) == 1; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Char) == 2; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Short) == 2; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Int) == 4; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Long) == 8; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Float) == 4; - assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Double) == 8; + private static boolean checkArrayIndexScaleInvariants() { + assert getArrayIndexScale(JavaKind.Byte) == 1; + assert getArrayIndexScale(JavaKind.Boolean) == 1; + assert getArrayIndexScale(JavaKind.Char) == 2; + assert getArrayIndexScale(JavaKind.Short) == 2; + assert getArrayIndexScale(JavaKind.Int) == 4; + assert getArrayIndexScale(JavaKind.Long) == 8; + assert getArrayIndexScale(JavaKind.Float) == 4; + assert getArrayIndexScale(JavaKind.Double) == 8; return true; } diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Tue Sep 15 11:18:07 2015 +0200 @@ -26,6 +26,7 @@ import static com.oracle.graal.hotspot.meta.HotSpotForeignCallsProviderImpl.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.*; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; import static jdk.internal.jvmci.meta.LocationIdentity.*; import java.lang.ref.*; @@ -138,7 +139,7 @@ } } else if (n instanceof NewArrayNode) { if (graph.getGuardsStage().areFrameStatesAtDeopts()) { - newObjectSnippets.lower((NewArrayNode) n, registers, runtime, tool); + newObjectSnippets.lower((NewArrayNode) n, registers, tool); } } else if (n instanceof DynamicNewArrayNode) { if (graph.getGuardsStage().areFrameStatesAtDeopts()) { @@ -548,7 +549,7 @@ @Override protected int arrayBaseOffset(JavaKind kind) { - return runtime.getJVMCIRuntime().getArrayBaseOffset(kind); + return getArrayBaseOffset(kind); } @Override diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Tue Sep 15 11:18:07 2015 +0200 @@ -28,6 +28,8 @@ import static com.oracle.graal.hotspot.replacements.UnsafeAccess.UNSAFE; import static com.oracle.graal.nodes.extended.BranchProbabilityNode.FAST_PATH_PROBABILITY; import static com.oracle.graal.nodes.extended.BranchProbabilityNode.probability; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayIndexScale; import jdk.internal.jvmci.code.CodeUtil; import jdk.internal.jvmci.code.Register; import jdk.internal.jvmci.common.JVMCIError; @@ -540,12 +542,12 @@ @Fold public static int arrayBaseOffset(JavaKind elementKind) { - return runtime().getJVMCIRuntime().getArrayBaseOffset(elementKind); + return getArrayBaseOffset(elementKind); } @Fold public static int arrayIndexScale(JavaKind elementKind) { - return runtime().getJVMCIRuntime().getArrayIndexScale(elementKind); + return getArrayIndexScale(elementKind); } @Fold diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Tue Sep 15 11:18:07 2015 +0200 @@ -22,51 +22,107 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.replacements.ReplacementsUtil.*; -import static com.oracle.graal.compiler.common.GraalOptions.*; -import static com.oracle.graal.hotspot.nodes.CStringNode.*; -import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; -import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.Options.*; -import static com.oracle.graal.nodes.PiArrayNode.*; -import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*; -import static com.oracle.graal.replacements.SnippetTemplate.*; -import static com.oracle.graal.replacements.nodes.ExplodeLoopNode.*; -import static jdk.internal.jvmci.code.UnsignedMath.*; -import static jdk.internal.jvmci.hotspot.HotSpotMetaAccessProvider.*; -import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.common.*; +import static com.oracle.graal.compiler.common.GraalOptions.SnippetCounters; +import static com.oracle.graal.hotspot.nodes.CStringNode.cstring; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.CLASS_ARRAY_KLASS_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.HUB_WRITE_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.PROTOTYPE_MARK_WORD_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.TLAB_END_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.TLAB_TOP_LOCATION; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.arrayKlassOffset; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.arrayLengthOffset; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.config; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.initializeObjectHeader; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.instanceHeaderSize; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.isInstanceKlassFullyInitialized; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperHeaderSizeMask; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperHeaderSizeShift; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperLog2ElementSizeMask; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperLog2ElementSizeShift; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.loadKlassFromObject; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.prototypeMarkWordOffset; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.readTlabEnd; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.readTlabTop; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.useBiasedLocking; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.useTLAB; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.verifyOop; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.wordSize; +import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.writeTlabTop; +import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.Options.ProfileAllocations; +import static com.oracle.graal.nodes.PiArrayNode.piArrayCast; +import static com.oracle.graal.nodes.PiNode.piCast; +import static com.oracle.graal.nodes.extended.BranchProbabilityNode.FAST_PATH_PROBABILITY; +import static com.oracle.graal.nodes.extended.BranchProbabilityNode.FREQUENT_PROBABILITY; +import static com.oracle.graal.nodes.extended.BranchProbabilityNode.SLOW_PATH_PROBABILITY; +import static com.oracle.graal.nodes.extended.BranchProbabilityNode.probability; +import static com.oracle.graal.replacements.ReplacementsUtil.REPLACEMENTS_ASSERTIONS_ENABLED; +import static com.oracle.graal.replacements.ReplacementsUtil.staticAssert; +import static com.oracle.graal.replacements.SnippetTemplate.DEFAULT_REPLACER; +import static com.oracle.graal.replacements.nodes.ExplodeLoopNode.explodeLoop; +import static jdk.internal.jvmci.code.UnsignedMath.belowThan; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; +import static jdk.internal.jvmci.hotspot.HotSpotMetaAccessProvider.computeArrayAllocationSize; +import jdk.internal.jvmci.code.CodeUtil; +import jdk.internal.jvmci.code.Register; +import jdk.internal.jvmci.code.TargetDescription; +import jdk.internal.jvmci.common.JVMCIError; +import jdk.internal.jvmci.hotspot.HotSpotResolvedObjectType; +import jdk.internal.jvmci.meta.DeoptimizationAction; +import jdk.internal.jvmci.meta.DeoptimizationReason; +import jdk.internal.jvmci.meta.JavaKind; +import jdk.internal.jvmci.meta.LocationIdentity; +import jdk.internal.jvmci.meta.ResolvedJavaType; +import jdk.internal.jvmci.options.Option; +import jdk.internal.jvmci.options.OptionType; +import jdk.internal.jvmci.options.OptionValue; -import com.oracle.graal.debug.*; - -import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; -import jdk.internal.jvmci.options.*; - -import com.oracle.graal.api.replacements.*; -import com.oracle.graal.compiler.common.spi.*; -import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.api.replacements.Fold; +import com.oracle.graal.compiler.common.spi.ForeignCallDescriptor; +import com.oracle.graal.compiler.common.type.StampFactory; +import com.oracle.graal.debug.Debug; 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.hotspot.nodes.type.*; -import com.oracle.graal.hotspot.word.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.debug.*; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.nodes.java.*; -import com.oracle.graal.nodes.memory.address.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.nodes.util.*; -import com.oracle.graal.replacements.*; +import com.oracle.graal.hotspot.HotSpotBackend; +import com.oracle.graal.hotspot.HotSpotGraalRuntimeProvider; +import com.oracle.graal.hotspot.meta.HotSpotLoweringProvider; +import com.oracle.graal.hotspot.meta.HotSpotProviders; +import com.oracle.graal.hotspot.meta.HotSpotRegistersProvider; +import com.oracle.graal.hotspot.nodes.DimensionsNode; +import com.oracle.graal.hotspot.nodes.PrefetchAllocateNode; +import com.oracle.graal.hotspot.nodes.type.KlassPointerStamp; +import com.oracle.graal.hotspot.word.KlassPointer; +import com.oracle.graal.nodes.ConstantNode; +import com.oracle.graal.nodes.DeoptimizeNode; +import com.oracle.graal.nodes.NamedLocationIdentity; +import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.nodes.debug.DynamicCounterNode; +import com.oracle.graal.nodes.debug.VerifyHeapNode; +import com.oracle.graal.nodes.extended.BranchProbabilityNode; +import com.oracle.graal.nodes.extended.ForeignCallNode; +import com.oracle.graal.nodes.java.DynamicNewArrayNode; +import com.oracle.graal.nodes.java.DynamicNewInstanceNode; +import com.oracle.graal.nodes.java.NewArrayNode; +import com.oracle.graal.nodes.java.NewInstanceNode; +import com.oracle.graal.nodes.java.NewMultiArrayNode; +import com.oracle.graal.nodes.memory.address.OffsetAddressNode; +import com.oracle.graal.nodes.spi.LoweringTool; +import com.oracle.graal.nodes.util.GraphUtil; +import com.oracle.graal.replacements.ReplacementsUtil; +import com.oracle.graal.replacements.Snippet; import com.oracle.graal.replacements.Snippet.ConstantParameter; import com.oracle.graal.replacements.Snippet.VarargsParameter; +import com.oracle.graal.replacements.SnippetCounter; +import com.oracle.graal.replacements.SnippetTemplate; import com.oracle.graal.replacements.SnippetTemplate.AbstractTemplates; import com.oracle.graal.replacements.SnippetTemplate.Arguments; import com.oracle.graal.replacements.SnippetTemplate.SnippetInfo; -import com.oracle.graal.replacements.nodes.*; -import com.oracle.graal.word.*; +import com.oracle.graal.replacements.Snippets; +import com.oracle.graal.replacements.nodes.ExplodeLoopNode; +import com.oracle.graal.word.Word; /** * Snippets used for implementing NEW, ANEWARRAY and NEWARRAY. @@ -472,13 +528,13 @@ /** * Lowers a {@link NewArrayNode}. */ - public void lower(NewArrayNode newArrayNode, HotSpotRegistersProvider registers, HotSpotGraalRuntimeProvider runtime, LoweringTool tool) { + public void lower(NewArrayNode newArrayNode, HotSpotRegistersProvider registers, LoweringTool tool) { StructuredGraph graph = newArrayNode.graph(); ResolvedJavaType elementType = newArrayNode.elementType(); HotSpotResolvedObjectType arrayType = (HotSpotResolvedObjectType) elementType.getArrayClass(); JavaKind elementKind = elementType.getJavaKind(); ConstantNode hub = ConstantNode.forConstant(KlassPointerStamp.klassNonNull(), arrayType.klass(), providers.getMetaAccess(), graph); - final int headerSize = runtime.getJVMCIRuntime().getArrayBaseOffset(elementKind); + final int headerSize = getArrayBaseOffset(elementKind); HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) providers.getLowerer(); int log2ElementSize = CodeUtil.log2(lowerer.arrayScalingFactor(elementKind)); diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Tue Sep 15 11:18:07 2015 +0200 @@ -23,26 +23,44 @@ //JaCoCo Exclude package com.oracle.graal.hotspot.replacements.arraycopy; -import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayIndexScale; +import jdk.internal.jvmci.code.CodeUtil; +import jdk.internal.jvmci.meta.JavaConstant; +import jdk.internal.jvmci.meta.JavaKind; +import jdk.internal.jvmci.meta.LocationIdentity; +import jdk.internal.jvmci.meta.PrimitiveConstant; -import com.oracle.graal.api.runtime.*; -import com.oracle.graal.compiler.common.spi.*; -import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.graph.*; -import com.oracle.graal.graph.spi.*; -import com.oracle.graal.hotspot.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.hotspot.nodes.*; -import com.oracle.graal.nodeinfo.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.calc.*; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.nodes.memory.*; -import com.oracle.graal.nodes.memory.address.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.runtime.*; +import com.oracle.graal.api.runtime.Graal; +import com.oracle.graal.compiler.common.spi.ForeignCallDescriptor; +import com.oracle.graal.compiler.common.type.Stamp; +import com.oracle.graal.compiler.common.type.StampFactory; +import com.oracle.graal.graph.Node; +import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.graph.spi.Canonicalizable; +import com.oracle.graal.graph.spi.CanonicalizerTool; +import com.oracle.graal.hotspot.HotSpotGraalRuntimeProvider; +import com.oracle.graal.hotspot.meta.HotSpotHostForeignCallsProvider; +import com.oracle.graal.hotspot.nodes.GetObjectAddressNode; +import com.oracle.graal.nodeinfo.InputType; +import com.oracle.graal.nodeinfo.NodeInfo; +import com.oracle.graal.nodes.ConstantNode; +import com.oracle.graal.nodes.FixedWithNextNode; +import com.oracle.graal.nodes.NamedLocationIdentity; +import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.nodes.calc.AddNode; +import com.oracle.graal.nodes.calc.IntegerConvertNode; +import com.oracle.graal.nodes.calc.LeftShiftNode; +import com.oracle.graal.nodes.extended.ForeignCallNode; +import com.oracle.graal.nodes.memory.AbstractMemoryCheckpoint; +import com.oracle.graal.nodes.memory.MemoryAccess; +import com.oracle.graal.nodes.memory.MemoryCheckpoint; +import com.oracle.graal.nodes.memory.MemoryNode; +import com.oracle.graal.nodes.memory.address.OffsetAddressNode; +import com.oracle.graal.nodes.spi.Lowerable; +import com.oracle.graal.nodes.spi.LoweringTool; +import com.oracle.graal.runtime.RuntimeProvider; @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class ArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single, MemoryAccess, Canonicalizable { @@ -122,12 +140,11 @@ private ValueNode computeBase(ValueNode base, ValueNode pos) { FixedWithNextNode basePtr = graph().add(new GetObjectAddressNode(base)); graph().addBeforeFixed(this, basePtr); - HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime.getJVMCIRuntime(); Stamp wordStamp = StampFactory.forKind(runtime.getTarget().wordKind); ValueNode wordPos = IntegerConvertNode.convert(pos, wordStamp, graph()); - int shift = CodeUtil.log2(jvmciRuntime.getArrayIndexScale(elementKind)); + int shift = CodeUtil.log2(getArrayIndexScale(elementKind)); ValueNode scaledIndex = graph().unique(new LeftShiftNode(wordPos, ConstantNode.forInt(shift, graph()))); - ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forIntegerStamp(wordStamp, jvmciRuntime.getArrayBaseOffset(elementKind), graph()))); + ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forIntegerStamp(wordStamp, getArrayBaseOffset(elementKind), graph()))); return graph().unique(new OffsetAddressNode(basePtr, offset)); } @@ -202,8 +219,7 @@ } boolean isHeapWordAligned(JavaConstant value, JavaKind kind) { - HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime.getJVMCIRuntime(); - return (jvmciRuntime.getArrayBaseOffset(kind) + (long) value.asInt() * jvmciRuntime.getArrayIndexScale(kind)) % runtime.getConfig().heapWordSize == 0; + return (getArrayBaseOffset(kind) + (long) value.asInt() * getArrayIndexScale(kind)) % runtime.getConfig().heapWordSize == 0; } public void updateAlignedDisjoint() { diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Tue Sep 15 11:18:07 2015 +0200 @@ -23,24 +23,34 @@ //JaCoCo Exclude package com.oracle.graal.hotspot.replacements.arraycopy; -import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayIndexScale; +import jdk.internal.jvmci.code.CodeUtil; +import jdk.internal.jvmci.meta.JavaKind; +import jdk.internal.jvmci.meta.LocationIdentity; -import com.oracle.graal.compiler.common.spi.*; -import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.graph.*; -import com.oracle.graal.hotspot.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.hotspot.nodes.*; -import com.oracle.graal.nodeinfo.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.calc.*; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.nodes.memory.*; -import com.oracle.graal.nodes.memory.address.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.word.*; +import com.oracle.graal.compiler.common.spi.ForeignCallDescriptor; +import com.oracle.graal.compiler.common.type.StampFactory; +import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.hotspot.HotSpotGraalRuntimeProvider; +import com.oracle.graal.hotspot.meta.HotSpotHostForeignCallsProvider; +import com.oracle.graal.hotspot.nodes.GetObjectAddressNode; +import com.oracle.graal.nodeinfo.InputType; +import com.oracle.graal.nodeinfo.NodeInfo; +import com.oracle.graal.nodes.ConstantNode; +import com.oracle.graal.nodes.FixedWithNextNode; +import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.nodes.calc.AddNode; +import com.oracle.graal.nodes.calc.IntegerConvertNode; +import com.oracle.graal.nodes.calc.LeftShiftNode; +import com.oracle.graal.nodes.extended.ForeignCallNode; +import com.oracle.graal.nodes.memory.AbstractMemoryCheckpoint; +import com.oracle.graal.nodes.memory.MemoryCheckpoint; +import com.oracle.graal.nodes.memory.address.OffsetAddressNode; +import com.oracle.graal.nodes.spi.Lowerable; +import com.oracle.graal.nodes.spi.LoweringTool; +import com.oracle.graal.word.Word; @NodeInfo(allowedUsageTypes = {InputType.Memory, InputType.Value}) public final class CheckcastArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { @@ -100,10 +110,9 @@ FixedWithNextNode basePtr = graph().add(new GetObjectAddressNode(base)); graph().addBeforeFixed(this, basePtr); - HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime.getJVMCIRuntime(); - int shift = CodeUtil.log2(jvmciRuntime.getArrayIndexScale(JavaKind.Object)); + int shift = CodeUtil.log2(getArrayIndexScale(JavaKind.Object)); ValueNode scaledIndex = graph().unique(new LeftShiftNode(pos, ConstantNode.forInt(shift, graph()))); - ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forInt(jvmciRuntime.getArrayBaseOffset(JavaKind.Object), graph()))); + ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forInt(getArrayBaseOffset(JavaKind.Object), graph()))); return graph().unique(new OffsetAddressNode(basePtr, offset)); } diff -r 5a410e01cd5f -r b8e2704243eb graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java Mon Sep 14 18:31:09 2015 +0200 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java Tue Sep 15 11:18:07 2015 +0200 @@ -22,23 +22,36 @@ */ package com.oracle.graal.truffle.hotspot.nfi; -import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -import jdk.internal.jvmci.common.*; -import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; +import jdk.internal.jvmci.common.JVMCIError; +import jdk.internal.jvmci.meta.JavaConstant; +import jdk.internal.jvmci.meta.JavaKind; +import jdk.internal.jvmci.meta.ResolvedJavaField; +import jdk.internal.jvmci.meta.ResolvedJavaMethod; +import jdk.internal.jvmci.meta.ResolvedJavaType; -import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.nodes.*; +import com.oracle.graal.compiler.common.type.StampFactory; +import com.oracle.graal.hotspot.meta.HotSpotProviders; +import com.oracle.graal.nodes.ConstantNode; +import com.oracle.graal.nodes.FixedWithNextNode; +import com.oracle.graal.nodes.FrameState; +import com.oracle.graal.nodes.ParameterNode; +import com.oracle.graal.nodes.ReturnNode; +import com.oracle.graal.nodes.StructuredGraph; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; -import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.nodes.java.*; -import com.oracle.graal.nodes.memory.address.*; -import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.word.nodes.*; +import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.nodes.extended.BoxNode; +import com.oracle.graal.nodes.java.LoadFieldNode; +import com.oracle.graal.nodes.java.LoadIndexedNode; +import com.oracle.graal.nodes.memory.address.AddressNode; +import com.oracle.graal.nodes.memory.address.OffsetAddressNode; +import com.oracle.graal.nodes.virtual.EscapeObjectState; +import com.oracle.graal.word.nodes.WordCastNode; /** * Utility creating a graph for a stub used to call a native function. @@ -119,8 +132,7 @@ if (kind == JavaKind.Object) { // array value JavaKind arrayElementKind = getElementKind(type); - HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime().getJVMCIRuntime(); - int displacement = jvmciRuntime.getArrayBaseOffset(arrayElementKind); + int displacement = getArrayBaseOffset(arrayElementKind); AddressNode arrayAddress = g.unique(new OffsetAddressNode(boxedElement, ConstantNode.forLong(displacement, g))); WordCastNode cast = g.add(WordCastNode.addressToWord(arrayAddress, providers.getWordTypes().getWordKind())); last.setNext(cast);