--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java 2017-11-03 23:56:38.986113265 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java 2017-11-03 23:56:38.658098586 -0700 @@ -28,8 +28,8 @@ import static org.graalvm.compiler.core.common.GraalOptions.OmitHotExceptionStacktrace; import static org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.OSR_MIGRATION_END; import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_KLASS_LOCATION; -import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_LOCATION; import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_HANDLE_LOCATION; +import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_LOCATION; import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.COMPRESSED_HUB_LOCATION; import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION; import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_LOCATION; @@ -41,6 +41,7 @@ import java.lang.ref.Reference; import org.graalvm.compiler.api.directives.GraalDirectives; +import org.graalvm.compiler.core.common.CompressEncoding; import org.graalvm.compiler.core.common.GraalOptions; import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor; import org.graalvm.compiler.core.common.spi.ForeignCallsProvider; @@ -90,10 +91,8 @@ import org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets; import org.graalvm.compiler.hotspot.replacements.aot.ResolveConstantSnippets; import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode; -import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode; +import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode; import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets; -import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode; -import org.graalvm.compiler.hotspot.replacements.arraycopy.UnsafeArrayCopySnippets; import org.graalvm.compiler.hotspot.replacements.profiling.ProfileSnippets; import org.graalvm.compiler.hotspot.word.KlassPointer; import org.graalvm.compiler.nodes.AbstractBeginNode; @@ -193,7 +192,7 @@ public DefaultHotSpotLoweringProvider(HotSpotGraalRuntimeProvider runtime, MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, HotSpotRegistersProvider registers, HotSpotConstantReflectionProvider constantReflection, TargetDescription target) { - super(metaAccess, foreignCalls, target); + super(metaAccess, foreignCalls, target, runtime.getVMConfig().useCompressedOops); this.runtime = runtime; this.registers = registers; this.constantReflection = constantReflection; @@ -216,7 +215,6 @@ hashCodeSnippets = new HashCodeSnippets.Templates(options, factories, providers, target); resolveConstantSnippets = new ResolveConstantSnippets.Templates(options, factories, providers, target); profileSnippets = new ProfileSnippets.Templates(options, factories, providers, target); - providers.getReplacements().registerSnippetTemplateCache(new UnsafeArrayCopySnippets.Templates(options, factories, providers, target)); } public MonitorSnippets.Templates getMonitorSnippets() { @@ -315,10 +313,8 @@ } } else if (n instanceof ArrayCopyNode) { arraycopySnippets.lower((ArrayCopyNode) n, tool); - } else if (n instanceof ArrayCopySlowPathNode) { - arraycopySnippets.lower((ArrayCopySlowPathNode) n, tool); - } else if (n instanceof ArrayCopyUnrollNode) { - arraycopySnippets.lower((ArrayCopyUnrollNode) n, tool); + } else if (n instanceof ArrayCopyWithSlowPathNode) { + arraycopySnippets.lower((ArrayCopyWithSlowPathNode) n, tool); } else if (n instanceof G1PreWriteBarrier) { writeBarrierSnippets.lower((G1PreWriteBarrier) n, registers, tool); } else if (n instanceof G1PostWriteBarrier) { @@ -495,20 +491,18 @@ } } + private CompressEncoding getOopEncoding() { + return runtime.getVMConfig().getOopEncoding(); + } + @Override - protected Stamp loadStamp(Stamp stamp, JavaKind kind, boolean compressible) { - if (kind == JavaKind.Object && compressible && runtime.getVMConfig().useCompressedOops) { - return HotSpotNarrowOopStamp.compressed((ObjectStamp) stamp, runtime.getVMConfig().getOopEncoding()); - } - return super.loadStamp(stamp, kind, compressible); + protected Stamp loadCompressedStamp(ObjectStamp stamp) { + return HotSpotNarrowOopStamp.compressed(stamp, getOopEncoding()); } @Override - protected ValueNode implicitLoadConvert(JavaKind kind, ValueNode value, boolean compressible) { - if (kind == JavaKind.Object && compressible && runtime.getVMConfig().useCompressedOops) { - return new HotSpotCompressionNode(CompressionOp.Uncompress, value, runtime.getVMConfig().getOopEncoding()); - } - return super.implicitLoadConvert(kind, value, compressible); + protected ValueNode newCompressionNode(CompressionOp op, ValueNode value) { + return new HotSpotCompressionNode(op, value, getOopEncoding()); } @Override @@ -519,14 +513,6 @@ } @Override - protected ValueNode implicitStoreConvert(JavaKind kind, ValueNode value, boolean compressible) { - if (kind == JavaKind.Object && compressible && runtime.getVMConfig().useCompressedOops) { - return new HotSpotCompressionNode(CompressionOp.Compress, value, runtime.getVMConfig().getOopEncoding()); - } - return super.implicitStoreConvert(kind, value, compressible); - } - - @Override protected ValueNode createReadArrayComponentHub(StructuredGraph graph, ValueNode arrayHub, FixedNode anchor) { /* * Anchor the read of the element klass to the cfg, because it is only valid when arrayClass @@ -800,4 +786,9 @@ public int arrayLengthOffset() { return runtime.getVMConfig().arrayOopDescLengthOffset(); } + + @Override + protected final JavaKind getStorageKind(ResolvedJavaField field) { + return field.getJavaKind(); + } }