diff --git a/hotspot/make/CompileTools.gmk b/hotspot/make/CompileTools.gmk index c294c7c7e6c..309d9c9aaf6 100644 --- a/hotspot/make/CompileTools.gmk +++ b/hotspot/make/CompileTools.gmk @@ -47,7 +47,7 @@ ifeq ($(INCLUDE_GRAAL), true) $(eval $(call SetupJavaCompilation, BUILD_VM_COMPILER_MATCH_PROCESSOR, \ SETUP := GENERATE_OLDBYTECODE, \ SRC := \ - $(SRC_DIR)/org.graalvm.api.word/src \ + $(SRC_DIR)/org.graalvm.word/src \ $(SRC_DIR)/org.graalvm.compiler.core/src \ $(SRC_DIR)/org.graalvm.compiler.core.common/src \ $(SRC_DIR)/org.graalvm.compiler.core.match.processor/src \ @@ -115,7 +115,7 @@ ifeq ($(INCLUDE_GRAAL), true) $(eval $(call SetupJavaCompilation, BUILD_VM_COMPILER_REPLACEMENTS_VERIFIER, \ SETUP := GENERATE_OLDBYTECODE, \ SRC := \ - $(SRC_DIR)/org.graalvm.api.word/src \ + $(SRC_DIR)/org.graalvm.word/src \ $(SRC_DIR)/org.graalvm.compiler.replacements.verifier/src \ $(SRC_DIR)/org.graalvm.compiler.api.replacements/src \ $(SRC_DIR)/org.graalvm.compiler.code/src \ diff --git a/hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/GraalFilters.java b/hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/GraalFilters.java index 717c1777882..988ebf9c0a4 100644 --- a/hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/GraalFilters.java +++ b/hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/GraalFilters.java @@ -34,7 +34,6 @@ import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.ResolvedJavaType; -import org.graalvm.api.word.WordBase; import org.graalvm.compiler.api.directives.GraalDirectives; import org.graalvm.compiler.api.replacements.ClassSubstitution; import org.graalvm.compiler.api.replacements.MethodSubstitution; @@ -44,6 +43,7 @@ import org.graalvm.compiler.graph.Node.NodeIntrinsic; import org.graalvm.compiler.hotspot.replacements.HotSpotClassSubstitutions; import org.graalvm.compiler.hotspot.word.MetaspacePointer; import org.graalvm.compiler.replacements.Snippets; +import org.graalvm.word.WordBase; public class GraalFilters { private List specialClasses; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java index 8961c7149dc..a3f266dcdc0 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java @@ -42,7 +42,6 @@ module jdk.internal.vm.compiler { uses org.graalvm.compiler.options.OptionValuesAccess; uses org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory; - exports org.graalvm.api.word to jdk.aot; exports org.graalvm.compiler.api.directives to jdk.aot; exports org.graalvm.compiler.api.runtime to jdk.aot; exports org.graalvm.compiler.api.replacements to jdk.aot; @@ -71,4 +70,5 @@ module jdk.internal.vm.compiler { exports org.graalvm.compiler.runtime to jdk.aot; exports org.graalvm.compiler.replacements to jdk.aot; exports org.graalvm.compiler.word to jdk.aot; + exports org.graalvm.word to jdk.aot; } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java index 9a1f294fe7b..845dba7bbd6 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java @@ -94,6 +94,8 @@ import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.STR; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.STXR; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.SUB; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.SUBS; +import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.TBZ; +import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.TBNZ; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.UBFM; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.Instruction.UDIV; import static org.graalvm.compiler.asm.aarch64.AArch64Assembler.InstructionType.FP32; @@ -475,6 +477,8 @@ public abstract class AArch64Assembler extends Assembler { BCOND(0x54000000), CBNZ(0x01000000), CBZ(0x00000000), + TBZ(0x36000000), + TBNZ(0x37000000), B(0x00000000), BL(0x80000000), @@ -808,6 +812,82 @@ public abstract class AArch64Assembler extends Assembler { conditionalBranchInstruction(reg, imm21, generalFromSize(size), Instruction.CBZ, pos); } + /** + * Test a single bit and branch if the bit is nonzero. + * + * @param reg general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param imm16 signed 16 bit offset + */ + protected void tbnz(Register reg, int uimm6, int imm16) { + tbnz(reg, uimm6, imm16, -1); + } + + /** + * Test a single bit and branch if the bit is zero. + * + * @param reg general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param imm16 signed 16 bit offset + */ + protected void tbz(Register reg, int uimm6, int imm16) { + tbz(reg, uimm6, imm16, -1); + } + + /** + * Test a single bit and branch if the bit is nonzero. + * + * @param reg general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param imm16 signed 16 bit offset + * @param pos Position at which instruction is inserted into buffer. -1 means insert at end. + */ + protected void tbnz(Register reg, int uimm6, int imm16, int pos) { + assert reg.getRegisterCategory().equals(CPU); + assert NumUtil.isUnsignedNbit(6, uimm6); + assert NumUtil.isSignedNbit(18, imm16); + assert (imm16 & 3) == 0; + // size bit is overloaded as top bit of uimm6 bit index + int size = (((uimm6 >> 5) & 1) == 0 ? 32 : 64); + // remaining 5 bits are encoded lower down + int uimm5 = uimm6 >> 1; + int offset = (imm16 & NumUtil.getNbitNumberInt(16)) >> 2; + InstructionType type = generalFromSize(size); + int encoding = type.encoding | TBNZ.encoding | (uimm5 << 19) | (offset << 5) | rd(reg); + if (pos == -1) { + emitInt(encoding); + } else { + emitInt(encoding, pos); + } + } + + /** + * Test a single bit and branch if the bit is zero. + * + * @param reg general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param imm16 signed 16 bit offset + * @param pos Position at which instruction is inserted into buffer. -1 means insert at end. + */ + protected void tbz(Register reg, int uimm6, int imm16, int pos) { + assert reg.getRegisterCategory().equals(CPU); + assert NumUtil.isUnsignedNbit(6, uimm6); + assert NumUtil.isSignedNbit(18, imm16); + assert (imm16 & 3) == 0; + // size bit is overloaded as top bit of uimm6 bit index + int size = (((uimm6 >> 5) & 1) == 0 ? 32 : 64); + // remaining 5 bits are encoded lower down + int uimm5 = uimm6 >> 1; + int offset = (imm16 & NumUtil.getNbitNumberInt(16)) >> 2; + InstructionType type = generalFromSize(size); + int encoding = type.encoding | TBZ.encoding | (uimm5 << 19) | (offset << 5) | rd(reg); + if (pos == -1) { + emitInt(encoding); + } else { + emitInt(encoding, pos); + } + } + private void conditionalBranchInstruction(Register reg, int imm21, InstructionType type, Instruction instr, int pos) { assert reg.getRegisterCategory().equals(CPU); int instrEncoding = instr.encoding | CompareBranchOp; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java index d948f868771..cfe05572369 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java @@ -1216,8 +1216,10 @@ public class AArch64MacroAssembler extends AArch64Assembler { BRANCH_UNCONDITIONALLY(0x1), BRANCH_NONZERO(0x2), BRANCH_ZERO(0x3), - JUMP_ADDRESS(0x4), - ADR(0x5); + BRANCH_BIT_NONZERO(0x4), + BRANCH_BIT_ZERO(0x5), + JUMP_ADDRESS(0x6), + ADR(0x7); /** * Offset by which additional information for branch conditionally, branch zero and branch @@ -1294,6 +1296,46 @@ public class AArch64MacroAssembler extends AArch64Assembler { } } + /** + * Test a single bit and branch if the bit is nonzero. + * + * @param cmp general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param label Can only handle 21-bit word-aligned offsets for now. May be unbound. Non null. + */ + public void tbnz(Register cmp, int uimm6, Label label) { + assert NumUtil.isUnsignedNbit(6, uimm6); + if (label.isBound()) { + int offset = label.position() - position(); + super.tbnz(cmp, uimm6, offset); + } else { + label.addPatchAt(position()); + int indexEncoding = uimm6 << PatchLabelKind.INFORMATION_OFFSET; + int regEncoding = cmp.encoding << (PatchLabelKind.INFORMATION_OFFSET + 6); + emitInt(PatchLabelKind.BRANCH_BIT_NONZERO.encoding | indexEncoding | regEncoding); + } + } + + /** + * Test a single bit and branch if the bit is zero. + * + * @param cmp general purpose register. May not be null, zero-register or stackpointer. + * @param uimm6 Unsigned 6-bit bit index. + * @param label Can only handle 21-bit word-aligned offsets for now. May be unbound. Non null. + */ + public void tbz(Register cmp, int uimm6, Label label) { + assert NumUtil.isUnsignedNbit(6, uimm6); + if (label.isBound()) { + int offset = label.position() - position(); + super.tbz(cmp, uimm6, offset); + } else { + label.addPatchAt(position()); + int indexEncoding = uimm6 << PatchLabelKind.INFORMATION_OFFSET; + int regEncoding = cmp.encoding << (PatchLabelKind.INFORMATION_OFFSET + 6); + emitInt(PatchLabelKind.BRANCH_BIT_ZERO.encoding | indexEncoding | regEncoding); + } + } + /** * Branches to label if condition is true. * @@ -1474,6 +1516,22 @@ public class AArch64MacroAssembler extends AArch64Assembler { } break; } + case BRANCH_BIT_NONZERO: + case BRANCH_BIT_ZERO: { + int information = instruction >>> PatchLabelKind.INFORMATION_OFFSET; + int sizeEncoding = information & NumUtil.getNbitNumberInt(6); + int regEncoding = information >>> 6; + Register reg = AArch64.cpuRegisters.get(regEncoding); + switch (type) { + case BRANCH_BIT_NONZERO: + super.tbnz(reg, sizeEncoding, branchOffset, branch); + break; + case BRANCH_BIT_ZERO: + super.tbz(reg, sizeEncoding, branchOffset, branch); + break; + } + break; + } case ADR: { int information = instruction >>> PatchLabelKind.INFORMATION_OFFSET; int regEncoding = information; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java index 2c09ced0b80..56090fa7af3 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java @@ -3492,6 +3492,14 @@ public class AMD64Assembler extends Assembler { emitByte(0xC0 | encode); } + public final void btrq(Register src, int imm8) { + int encode = prefixqAndEncode(src.encoding); + emitByte(0x0F); + emitByte(0xBA); + emitByte(0xF0 | encode); + emitByte(imm8); + } + public final void xaddl(AMD64Address dst, Register src) { prefix(dst, src); emitByte(0x0F); diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.sparc/src/org/graalvm/compiler/asm/sparc/SPARCMacroAssembler.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.sparc/src/org/graalvm/compiler/asm/sparc/SPARCMacroAssembler.java index 47615118361..59ef7ff2c16 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.sparc/src/org/graalvm/compiler/asm/sparc/SPARCMacroAssembler.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.sparc/src/org/graalvm/compiler/asm/sparc/SPARCMacroAssembler.java @@ -81,6 +81,10 @@ public class SPARCMacroAssembler extends SPARCAssembler { nop(); // delay slot } + public void bz(Label l) { + BPCC.emit(this, Xcc, ConditionFlag.Zero, NOT_ANNUL, PREDICT_NOT_TAKEN, l); + } + @Override protected final void patchJumpTarget(int branch, int branchTarget) { final int disp = (branchTarget - branch) / 4; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.code/src/org/graalvm/compiler/code/CompilationResult.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.code/src/org/graalvm/compiler/code/CompilationResult.java index 57e476fc08e..4c7bfafaff9 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.code/src/org/graalvm/compiler/code/CompilationResult.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.code/src/org/graalvm/compiler/code/CompilationResult.java @@ -300,7 +300,6 @@ public class CompilationResult { * Sets the assumptions made during compilation. */ public void setAssumptions(Assumption[] assumptions) { - checkOpen(); this.assumptions = assumptions; } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64AddressNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64AddressNode.java index 919a9ca0133..3fddb853424 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64AddressNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64AddressNode.java @@ -76,7 +76,9 @@ public class AArch64AddressNode extends AddressNode implements LIRLowerable { AllocatableValue baseReference = LIRKind.derivedBaseFromValue(baseValue); AllocatableValue indexReference; - if (addressingMode.equals(AddressingMode.IMMEDIATE_UNSCALED)) { + if (index == null) { + indexReference = null; + } else if (addressingMode.equals(AddressingMode.IMMEDIATE_UNSCALED)) { indexReference = LIRKind.derivedBaseFromValue(indexValue); } else { if (LIRKind.isValue(indexValue.getValueKind())) { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressNode.java index 7d278ff43db..a3c7b5da3e1 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressNode.java @@ -73,7 +73,9 @@ public class AMD64AddressNode extends AddressNode implements LIRLowerable { AllocatableValue baseReference = LIRKind.derivedBaseFromValue(baseValue); AllocatableValue indexReference; - if (scale.equals(Scale.Times1)) { + if (index == null) { + indexReference = null; + } else if (scale.equals(Scale.Times1)) { indexReference = LIRKind.derivedBaseFromValue(indexValue); } else { if (LIRKind.isValue(indexValue)) { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/ForeignCallsProvider.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/ForeignCallsProvider.java index 36f742e2bfe..63f2bfb203f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/ForeignCallsProvider.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/ForeignCallsProvider.java @@ -22,8 +22,8 @@ */ package org.graalvm.compiler.core.common.spi; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.LIRKind; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.ValueKindFactory; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java index 476a29d6c02..d183f8694e2 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java @@ -41,7 +41,6 @@ import java.util.concurrent.TimeUnit; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter; import org.graalvm.compiler.api.replacements.Snippet.NonNullParameter; @@ -84,6 +83,7 @@ import org.graalvm.compiler.phases.verify.VerifyUpdateUsages; import org.graalvm.compiler.phases.verify.VerifyUsageWithEquals; import org.graalvm.compiler.phases.verify.VerifyVirtualizableUsage; import org.graalvm.compiler.runtime.RuntimeProvider; +import org.graalvm.word.LocationIdentity; import org.junit.Assert; import org.junit.Assume; import org.junit.Test; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java index 70adbda31f5..5e15418654f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java @@ -31,6 +31,8 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import java.lang.reflect.Constructor; +import java.lang.reflect.Executable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -655,7 +657,8 @@ public abstract class GraalCompilerTest extends GraalTest { } } - protected Object referenceInvoke(ResolvedJavaMethod method, Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + protected Object referenceInvoke(ResolvedJavaMethod method, Object receiver, Object... args) + throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException { return invoke(method, receiver, args); } @@ -1053,12 +1056,12 @@ public abstract class GraalCompilerTest extends GraalTest { return backend.createDefaultInstalledCode(method, compilationResult); } - private final Map methodMap = new HashMap<>(); + private final Map methodMap = new HashMap<>(); /** * Converts a reflection {@link Method} to a {@link ResolvedJavaMethod}. */ - protected ResolvedJavaMethod asResolvedJavaMethod(Method method) { + protected ResolvedJavaMethod asResolvedJavaMethod(Executable method) { ResolvedJavaMethod javaMethod = getMetaAccess().lookupJavaMethod(method); methodMap.put(javaMethod, method); return javaMethod; @@ -1080,17 +1083,21 @@ public abstract class GraalCompilerTest extends GraalTest { * Gets the reflection {@link Method} from which a given {@link ResolvedJavaMethod} was created * or null if {@code javaMethod} does not correspond to a reflection method. */ - protected Method lookupMethod(ResolvedJavaMethod javaMethod) { + protected Executable lookupMethod(ResolvedJavaMethod javaMethod) { return methodMap.get(javaMethod); } - protected Object invoke(ResolvedJavaMethod javaMethod, Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { - Method method = lookupMethod(javaMethod); + protected Object invoke(ResolvedJavaMethod javaMethod, Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException { + Executable method = lookupMethod(javaMethod); Assert.assertTrue(method != null); if (!method.isAccessible()) { method.setAccessible(true); } - return method.invoke(receiver, applyArgSuppliers(args)); + if (method instanceof Method) { + return ((Method) method).invoke(receiver, applyArgSuppliers(args)); + } + assert receiver == null : "no receiver for constructor invokes"; + return ((Constructor) method).newInstance(applyArgSuppliers(args)); } /** diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ReferenceGetLoopTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ReferenceGetLoopTest.java index 243a5403984..22b7b3f7676 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ReferenceGetLoopTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ReferenceGetLoopTest.java @@ -27,13 +27,13 @@ import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import org.junit.Test; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.loop.LoopEx; import org.graalvm.compiler.loop.LoopsData; import org.graalvm.compiler.nodes.FieldLocationIdentity; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.memory.Access; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.ResolvedJavaField; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/tutorial/GraalTutorial.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/tutorial/GraalTutorial.java index 91f2436c969..7e7c166e81e 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/tutorial/GraalTutorial.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/tutorial/GraalTutorial.java @@ -22,14 +22,12 @@ */ package org.graalvm.compiler.core.test.tutorial; -import org.junit.Assert; -import org.junit.Test; - +import java.lang.reflect.Method; import java.util.regex.Pattern; -import org.graalvm.compiler.bytecode.Bytecode; import org.graalvm.compiler.bytecode.BytecodeDisassembler; -import org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecode; +import org.junit.Assert; +import org.junit.Test; import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.code.InvalidInstalledCodeException; @@ -51,18 +49,31 @@ public class GraalTutorial extends InvokeGraal { */ @Test - public void testPrintBytecodes() { - ResolvedJavaMethod method = findMethod(String.class, "hashCode"); - Bytecode bytecode = new ResolvedJavaMethodBytecode(method); + public void testGetBytecodes() throws NoSuchMethodException { + Method reflectionMethod = String.class.getDeclaredMethod("hashCode"); + ResolvedJavaMethod method = metaAccess.lookupJavaMethod(reflectionMethod); - byte[] bytecodes = bytecode.getCode(); - Assert.assertNotNull(bytecodes); + /* + * ResolvedJavaMethod provides all information that you want about a method, for example, + * the bytecodes. + */ + byte[] bytecodes = method.getCode(); + /* + * BytecodeDisassembler shows you how to iterate bytecodes, how to access type information, + * and more. + */ + String disassembly = new BytecodeDisassembler().disassemble(method); + + /* + * We don't want test cases to print any output, so we check the validity of the output + * instead. + */ Pattern disassemblyLineRE = Pattern.compile(" *\\d+: [a-z][\\w_]+"); - String disassembly = new BytecodeDisassembler().disassemble(bytecode); for (String line : disassembly.split("\\n")) { Assert.assertTrue(line, disassemblyLineRE.matcher(line).find()); } + Assert.assertTrue(bytecodes.length > 0); } /* @@ -137,6 +148,21 @@ public class GraalTutorial extends InvokeGraal { * Tutorial example for snippets and lowering. */ + public static int identityHashCodeUsage(Object obj) { + return System.identityHashCode(obj); + } + + @Test + public void testIdentityHashCodeUsage() throws InvalidInstalledCodeException { + Object a = new Object(); + int expectedResult = identityHashCodeUsage(a); + + InstalledCode compiledMethod = compileAndInstallMethod(findMethod(GraalTutorial.class, "identityHashCodeUsage")); + + int result = (int) compiledMethod.executeVarargs(a); + Assert.assertEquals(expectedResult, result); + } + static class A { } @@ -179,17 +205,18 @@ public class GraalTutorial extends InvokeGraal { * Tutorial example for intrinsic methods. */ - public static double intrinsicUsage(double val) { - return Math.sin(val); + public static int intrinsicIntegerReverseBytes(int val) { + return Integer.reverseBytes(val); } @Test - public void testIntrinsicUsage() throws InvalidInstalledCodeException { - double expectedResult = intrinsicUsage(42d); + public void testIntrinsicIntegerReverseBytes() throws InvalidInstalledCodeException { + int input = 0x12345678; + int expected = intrinsicIntegerReverseBytes(input); - InstalledCode compiledMethod = compileAndInstallMethod(findMethod(GraalTutorial.class, "intrinsicUsage")); + InstalledCode compiledMethod = compileAndInstallMethod(findMethod(GraalTutorial.class, "intrinsicIntegerReverseBytes")); - double result = (double) compiledMethod.executeVarargs(42d); - Assert.assertEquals(expectedResult, result, 0); + int actual = (int) compiledMethod.executeVarargs(input); + Assert.assertEquals(expected, actual); } } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java index 59861f99f4d..68dc1187fde 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java @@ -60,18 +60,26 @@ import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.SpeculationLog; +import java.util.ArrayList; + /** * Represents a compiler backend for Graal. */ public abstract class Backend implements TargetProvider, ValueKindFactory { private final Providers providers; + private final ArrayList codeInstallationTaskFactories; public static final ForeignCallDescriptor ARITHMETIC_FREM = new ForeignCallDescriptor("arithmeticFrem", float.class, float.class, float.class); public static final ForeignCallDescriptor ARITHMETIC_DREM = new ForeignCallDescriptor("arithmeticDrem", double.class, double.class, double.class); protected Backend(Providers providers) { this.providers = providers; + this.codeInstallationTaskFactories = new ArrayList<>(); + } + + public synchronized void addCodeInstallationTask(CodeInstallationTaskFactory factory) { + this.codeInstallationTaskFactories.add(factory); } public Providers getProviders() { @@ -155,6 +163,16 @@ public abstract class Backend implements TargetProvider, ValueKindFactory[] c = Inner.class.getConstructors(); + if (c.length != 1) { + throw new InternalError("can't find single constructor"); + } + tester.parseDebug(tester.asResolvedJavaMethod(c[0]), AllowAssumptions.YES); + } + + public Inner(Object o) { + Inner.o = o; + } + } + + @Test + public void test() { + tester = this; + System.out.println(Inner.o); + } +} diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/FieldLocationIdentity.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/FieldLocationIdentity.java index 6b202f6c390..68d809e49d5 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/FieldLocationIdentity.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/FieldLocationIdentity.java @@ -24,7 +24,7 @@ package org.graalvm.compiler.nodes; import jdk.vm.ci.meta.JavaKind.FormatWithToString; -import org.graalvm.api.word.LocationIdentity; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.ResolvedJavaField; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeNode.java index 9e2efc69027..ba2cbf4a23e 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeNode.java @@ -23,7 +23,7 @@ package org.graalvm.compiler.nodes; import jdk.vm.ci.meta.JavaKind; -import org.graalvm.api.word.LocationIdentity; + import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -41,6 +41,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.nodes.spi.UncheckedInterfaceProvider; import org.graalvm.compiler.nodes.util.GraphUtil; +import org.graalvm.word.LocationIdentity; import java.util.Map; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeWithExceptionNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeWithExceptionNode.java index 14fc36e60b2..58a580a2606 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeWithExceptionNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/InvokeWithExceptionNode.java @@ -23,7 +23,7 @@ package org.graalvm.compiler.nodes; import jdk.vm.ci.meta.JavaKind; -import org.graalvm.api.word.LocationIdentity; + import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -37,6 +37,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.nodes.spi.UncheckedInterfaceProvider; import org.graalvm.compiler.nodes.util.GraphUtil; +import org.graalvm.word.LocationIdentity; import java.util.Map; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/KillingBeginNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/KillingBeginNode.java index 24b1775484a..bff55ca7589 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/KillingBeginNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/KillingBeginNode.java @@ -26,10 +26,10 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; +import org.graalvm.word.LocationIdentity; @NodeInfo(allowedUsageTypes = {Memory}, cycles = CYCLES_0, size = SIZE_0) public final class KillingBeginNode extends AbstractBeginNode implements MemoryCheckpoint.Single { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/NamedLocationIdentity.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/NamedLocationIdentity.java index 7c27f3f70d4..1c0c1da9e29 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/NamedLocationIdentity.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/NamedLocationIdentity.java @@ -25,7 +25,7 @@ package org.graalvm.compiler.nodes; import java.util.EnumMap; import org.graalvm.util.Equivalence; -import org.graalvm.api.word.LocationIdentity; +import org.graalvm.word.LocationIdentity; import org.graalvm.util.EconomicSet; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StartNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StartNode.java index 6cd520b27ee..edd89e638a1 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StartNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StartNode.java @@ -26,10 +26,10 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; +import org.graalvm.word.LocationIdentity; /** * The start node of a graph. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StructuredGraph.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StructuredGraph.java index 3b0cbd2e348..4697af44fbc 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StructuredGraph.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/StructuredGraph.java @@ -234,6 +234,7 @@ public final class StructuredGraph extends Graph implements JavaMethodContext { private final int entryBCI; private GuardsStage guardsStage = GuardsStage.FLOATING_GUARDS; private boolean isAfterFloatingReadPhase = false; + private boolean isAfterFixedReadPhase = false; private boolean hasValueProxies = true; private boolean isAfterExpandLogic = false; private final boolean useProfilingInfo; @@ -685,11 +686,20 @@ public final class StructuredGraph extends Graph implements JavaMethodContext { return isAfterFloatingReadPhase; } + public boolean isAfterFixedReadPhase() { + return isAfterFixedReadPhase; + } + public void setAfterFloatingReadPhase(boolean state) { assert state : "cannot 'unapply' floating read phase on graph"; isAfterFloatingReadPhase = state; } + public void setAfterFixReadPhase(boolean state) { + assert state : "cannot 'unapply' fix reads phase on graph"; + isAfterFixedReadPhase = state; + } + public boolean hasValueProxies() { return hasValueProxies; } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/Block.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/Block.java index 228d76f231a..48393eafd5f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/Block.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/Block.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.cfg; import java.util.ArrayList; import java.util.Iterator; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.AbstractBlockBase; import org.graalvm.compiler.core.common.cfg.AbstractControlFlowGraph; import org.graalvm.compiler.core.common.cfg.Loop; @@ -38,6 +37,7 @@ import org.graalvm.compiler.nodes.InvokeWithExceptionNode; import org.graalvm.compiler.nodes.LoopBeginNode; import org.graalvm.compiler.nodes.LoopEndNode; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; +import org.graalvm.word.LocationIdentity; public final class Block extends AbstractBlockBase { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/HIRLoop.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/HIRLoop.java index 4b4f84123d4..0fafc0c6c17 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/HIRLoop.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/HIRLoop.java @@ -22,9 +22,9 @@ */ package org.graalvm.compiler.nodes.cfg; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.nodes.LoopBeginNode; +import org.graalvm.word.LocationIdentity; public final class HIRLoop extends Loop { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/LocationSet.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/LocationSet.java index fdbb8cdbe69..c3fbd5fae38 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/LocationSet.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/LocationSet.java @@ -26,7 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.graalvm.api.word.LocationIdentity; +import org.graalvm.word.LocationIdentity; public class LocationSet { private LocationIdentity firstLocation; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/StringToBytesNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/StringToBytesNode.java index fa5bf09f566..c19d8c1d3f4 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/StringToBytesNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/StringToBytesNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.debug; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.InputType; @@ -35,6 +34,7 @@ import org.graalvm.compiler.nodes.NamedLocationIdentity; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BytecodeExceptionNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BytecodeExceptionNode.java index e58f3a38f25..2c1b8fe0309 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BytecodeExceptionNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BytecodeExceptionNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_8; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.core.common.type.TypeReference; @@ -38,6 +37,7 @@ import org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.MetaAccessProvider; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java index 0ea245c5c99..348b5aec4ff 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java @@ -29,7 +29,6 @@ import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_2; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor; import org.graalvm.compiler.core.common.spi.ForeignCallLinkage; import org.graalvm.compiler.core.common.spi.ForeignCallsProvider; @@ -47,6 +46,7 @@ import org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/GuardedUnsafeLoadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/GuardedUnsafeLoadNode.java index ed89c10d338..18d5c2244ce 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/GuardedUnsafeLoadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/GuardedUnsafeLoadNode.java @@ -24,10 +24,10 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.InputType.Guard; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ValueNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaReadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaReadNode.java index 4eddb9e3fba..a247a0b4409 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaReadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaReadNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.memory.ReadNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaWriteNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaWriteNode.java index 6b6c522af4a..c5d677fa14a 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaWriteNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/JavaWriteNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.nodes.extended; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.StateSplit; @@ -33,6 +32,7 @@ import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/MembarNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/MembarNode.java index c43ddfc3275..e1f94765ba2 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/MembarNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/MembarNode.java @@ -26,7 +26,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_2; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -34,6 +33,7 @@ import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; /** * Creates a memory barrier. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawLoadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawLoadNode.java index 829e40e9b60..2655035d3a7 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawLoadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawLoadNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.PrimitiveStamp; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.core.common.type.StampFactory; @@ -40,6 +39,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Assumptions; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java index 24392f58505..8d32594e217 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java @@ -26,7 +26,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.State; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -41,6 +40,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Assumptions; import jdk.vm.ci.meta.JavaConstant; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeAccessNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeAccessNode.java index d37b639ecc5..f45dc8f89e8 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeAccessNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeAccessNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -36,6 +35,7 @@ import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.NamedLocationIdentity; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.type.StampTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Assumptions; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeCopyNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeCopyNode.java index 0251d8c7dc7..af29cf1e595 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeCopyNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeCopyNode.java @@ -22,11 +22,11 @@ */ package org.graalvm.compiler.nodes.extended; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.Node.ConstantNodeParameter; import org.graalvm.compiler.graph.Node.NodeIntrinsic; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.ResolvedJavaMethod; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryLoadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryLoadNode.java index 7a9cc996adb..d7be0f7e6e4 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryLoadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryLoadNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -33,6 +32,7 @@ import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryStoreNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryStoreNode.java index 9b41df178f1..1dc6c885518 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryStoreNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/UnsafeMemoryStoreNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -34,6 +33,7 @@ import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AbstractCompareAndSwapNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AbstractCompareAndSwapNode.java index c9929cc516b..cff46027cdb 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AbstractCompareAndSwapNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AbstractCompareAndSwapNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.InputType.State; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.InputType; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.memory.FixedAccessNode; import org.graalvm.compiler.nodes.memory.LIRLowerableAccess; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; /** * Low-level atomic compare-and-swap operation. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AccessFieldNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AccessFieldNode.java index 4b91bd8be6e..877d8efe663 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AccessFieldNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AccessFieldNode.java @@ -63,7 +63,6 @@ public abstract class AccessFieldNode extends FixedWithNextNode implements Lower super(c, stamp); this.object = object; this.field = field; - assert object != null || field.getDeclaringClass().isInitialized(); } /** diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndAddNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndAddNode.java index 108a56b3c19..450ff24c8eb 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndAddNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndAddNode.java @@ -27,7 +27,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_2; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Value; import sun.misc.Unsafe; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndWriteNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndWriteNode.java index 1883c1d7e36..10ddb9d8520 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndWriteNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/AtomicReadAndWriteNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_2; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -34,6 +33,7 @@ import org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; import sun.misc.Unsafe; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ExceptionObjectNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ExceptionObjectNode.java index bf1da2f25c7..d97d138f211 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ExceptionObjectNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ExceptionObjectNode.java @@ -24,7 +24,7 @@ package org.graalvm.compiler.nodes.java; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.MetaAccessProvider; -import org.graalvm.api.word.LocationIdentity; + import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.core.common.type.TypeReference; import org.graalvm.compiler.graph.NodeClass; @@ -38,6 +38,7 @@ import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LogicCompareAndSwapNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LogicCompareAndSwapNode.java index 65377de972c..46e49c5f606 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LogicCompareAndSwapNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LogicCompareAndSwapNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_8; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.LIRKind; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; @@ -34,6 +33,7 @@ import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LoweredAtomicReadAndWriteNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LoweredAtomicReadAndWriteNode.java index d2bbd4d1746..dfd3c83419c 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LoweredAtomicReadAndWriteNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/LoweredAtomicReadAndWriteNode.java @@ -27,7 +27,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.State; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_2; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -39,6 +38,7 @@ import org.graalvm.compiler.nodes.memory.LIRLowerableAccess; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Value; import sun.misc.Unsafe; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorEnterNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorEnterNode.java index c4f76ce4edc..042bc93a5d2 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorEnterNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorEnterNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_64; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_64; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.IterableNodeType; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; /** * The {@code MonitorEnterNode} represents the acquisition of a monitor. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorExitNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorExitNode.java index de4fb56f482..b3eb8fcbb36 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorExitNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/MonitorExitNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_64; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_64; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.IterableNodeType; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; /** * The {@code MonitorExitNode} represents a monitor release. If it is the release of the monitor of diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/RawMonitorEnterNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/RawMonitorEnterNode.java index 783807faf5f..59d3d000ff8 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/RawMonitorEnterNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/RawMonitorEnterNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_64; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_64; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.ObjectStamp; import org.graalvm.compiler.graph.IterableNodeType; import org.graalvm.compiler.graph.NodeClass; @@ -38,6 +37,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; /** * The {@code RawMonitorEnterNode} represents the acquisition of a monitor. The object needs to diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/UnsafeCompareAndSwapNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/UnsafeCompareAndSwapNode.java index 6db01fa1ed7..951201be41f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/UnsafeCompareAndSwapNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/UnsafeCompareAndSwapNode.java @@ -27,7 +27,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.Value; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_8; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; @@ -36,6 +35,7 @@ import org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ValueCompareAndSwapNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ValueCompareAndSwapNode.java index d394a285fa8..8f8b9536b5b 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ValueCompareAndSwapNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/ValueCompareAndSwapNode.java @@ -25,13 +25,13 @@ package org.graalvm.compiler.nodes.java; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_8; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_8; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.lir.gen.LIRGeneratorTool; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; /** * A special purpose store node that differs from {@link LogicCompareAndSwapNode} in that it returns diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/AbstractWriteNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/AbstractWriteNode.java index 020e965ebe9..19569e021bc 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/AbstractWriteNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/AbstractWriteNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.nodes.memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.ValueNodeUtil; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; @NodeInfo(allowedUsageTypes = {InputType.Memory, InputType.Guard}, cycles = CYCLES_2, size = SIZE_1) public abstract class AbstractWriteNode extends FixedAccessNode implements StateSplit, MemoryCheckpoint.Single, MemoryAccess, GuardingNode { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/Access.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/Access.java index 72668621daa..c7aac9dcc52 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/Access.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/Access.java @@ -22,9 +22,9 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.nodes.extended.GuardedNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; public interface Access extends GuardedNode, HeapAccess { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FixedAccessNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FixedAccessNode.java index 54cd7f52977..06b3a7f5d2c 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FixedAccessNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FixedAccessNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.IterableNodeType; import org.graalvm.compiler.graph.NodeClass; @@ -32,6 +31,7 @@ import org.graalvm.compiler.nodes.DeoptimizingFixedWithNextNode; import org.graalvm.compiler.nodes.FrameState; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; /** * Accesses a value at an memory address specified by an {@linkplain #address address}. The access diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatableAccessNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatableAccessNode.java index 53dbac73c6f..70a13aa25f9 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatableAccessNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatableAccessNode.java @@ -22,13 +22,13 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.FrameState; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; /** * An {@link FixedAccessNode} that can be converted to a {@link FloatingAccessNode}. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingAccessNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingAccessNode.java index b3f73f8e896..894b6f62691 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingAccessNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingAccessNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.InputType; @@ -30,6 +29,7 @@ import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.FloatingGuardedNode; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; +import org.graalvm.word.LocationIdentity; @NodeInfo public abstract class FloatingAccessNode extends FloatingGuardedNode implements Access, MemoryAccess { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingReadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingReadNode.java index 22853b20337..1a42de553fe 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingReadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/FloatingReadNode.java @@ -26,7 +26,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.LIRKind; import org.graalvm.compiler.core.common.type.ObjectStamp; import org.graalvm.compiler.core.common.type.Stamp; @@ -41,6 +40,7 @@ import org.graalvm.compiler.nodes.ValuePhiNode; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; /** * A floating read of a value from memory specified in terms of an object base and an object diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryAccess.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryAccess.java index 21a1e7d8f8a..8b07251b5c1 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryAccess.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryAccess.java @@ -22,7 +22,7 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; +import org.graalvm.word.LocationIdentity; /** * This interface marks nodes that access some memory location, and that have an edge to the last diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryCheckpoint.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryCheckpoint.java index 131c0c9b2bd..b8dad8fd6a1 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryCheckpoint.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryCheckpoint.java @@ -22,10 +22,10 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.nodes.FixedNode; import org.graalvm.compiler.nodes.FixedNodeInterface; +import org.graalvm.word.LocationIdentity; /** * This interface marks subclasses of {@link FixedNode} that kill a set of memory locations diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMap.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMap.java index bb22e1d1eb1..95d7a16a2a8 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMap.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMap.java @@ -22,7 +22,7 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; +import org.graalvm.word.LocationIdentity; /** * Maps a {@linkplain LocationIdentity location} to the last node that (potentially) wrote to the diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMapNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMapNode.java index f363061b233..d6c30383f3e 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMapNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryMapNode.java @@ -22,17 +22,16 @@ */ package org.graalvm.compiler.nodes.memory; -import static org.graalvm.api.word.LocationIdentity.any; import static org.graalvm.compiler.nodeinfo.InputType.Extension; import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; +import static org.graalvm.word.LocationIdentity.any; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.NodeInputList; @@ -45,6 +44,7 @@ import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.util.Equivalence; import org.graalvm.util.EconomicMap; import org.graalvm.util.MapCursor; +import org.graalvm.word.LocationIdentity; @NodeInfo(allowedUsageTypes = {Extension, Memory}, cycles = CYCLES_0, size = SIZE_0) public final class MemoryMapNode extends FloatingNode implements MemoryMap, MemoryNode, LIRLowerable { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryPhiNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryPhiNode.java index a9ea84e4750..fadb2cad9a9 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryPhiNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/MemoryPhiNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.NodeInputList; @@ -31,6 +30,7 @@ import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.AbstractMergeNode; import org.graalvm.compiler.nodes.PhiNode; import org.graalvm.compiler.nodes.ValueNode; +import org.graalvm.word.LocationIdentity; /** * Memory {@code PhiNode}s merge memory dependencies at control flow merges. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/ReadNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/ReadNode.java index 20259d27ea6..aac2c80c812 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/ReadNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/ReadNode.java @@ -26,7 +26,6 @@ import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1; import static org.graalvm.compiler.nodes.NamedLocationIdentity.ARRAY_LENGTH_LOCATION; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.LIRKind; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.debug.DebugCloseable; @@ -48,6 +47,7 @@ import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.util.GraphUtil; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.Constant; import jdk.vm.ci.meta.MetaAccessProvider; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/WriteNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/WriteNode.java index 4f8e7550994..591294686b0 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/WriteNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/WriteNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.nodes.memory; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.LIRKind; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; @@ -30,6 +29,7 @@ import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; /** * Writes a given {@linkplain #value() value} a {@linkplain FixedAccessNode memory location}. diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/MemoryProxy.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/MemoryProxy.java index 94f3dd89b58..98aa49f19a6 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/MemoryProxy.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/MemoryProxy.java @@ -22,8 +22,8 @@ */ package org.graalvm.compiler.nodes.spi; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.nodes.memory.MemoryNode; +import org.graalvm.word.LocationIdentity; public interface MemoryProxy extends Proxy, MemoryNode { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/virtual/CommitAllocationNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/virtual/CommitAllocationNode.java index 705ed0c283c..0e6839c3120 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/virtual/CommitAllocationNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/virtual/CommitAllocationNode.java @@ -33,7 +33,6 @@ import java.util.Arrays; import java.util.List; import java.util.Map; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -54,6 +53,7 @@ import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.VirtualizableAllocation; import org.graalvm.compiler.nodes.spi.VirtualizerTool; +import org.graalvm.word.LocationIdentity; // @formatter:off @NodeInfo(nameTemplate = "Alloc {i#virtualObjects}", diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/AddressLoweringByUsePhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/AddressLoweringByUsePhase.java index acf21e40b3c..fcc8115481e 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/AddressLoweringByUsePhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/AddressLoweringByUsePhase.java @@ -94,8 +94,13 @@ public class AddressLoweringByUsePhase extends Phase { // the lowered address amy already be a replacement // in which case we want to use it not delete it! if (lowered != address) { - address.replaceAtUsages(lowered); - GraphUtil.killWithUnusedFloatingInputs(address); + // replace original with lowered at this usage only + // n.b. lowered is added unique so repeat lowerings will elide + node.replaceFirstInput(address, lowered); + // if that was the last reference we can kill the old (dead) node + if (address.hasNoUsages()) { + GraphUtil.killWithUnusedFloatingInputs(address); + } } } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java index 1fa729a9d97..79cdc9fab16 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java @@ -53,6 +53,7 @@ import org.graalvm.compiler.nodes.calc.BinaryNode; import org.graalvm.compiler.nodes.calc.ConditionalNode; import org.graalvm.compiler.nodes.calc.UnaryNode; import org.graalvm.compiler.nodes.cfg.Block; +import org.graalvm.compiler.nodes.cfg.ControlFlowGraph; import org.graalvm.compiler.nodes.cfg.ControlFlowGraph.RecursiveVisitor; import org.graalvm.compiler.nodes.extended.IntegerSwitchNode; import org.graalvm.compiler.nodes.memory.FixedAccessNode; @@ -64,7 +65,10 @@ import org.graalvm.compiler.nodes.util.GraphUtil; import org.graalvm.compiler.phases.BasePhase; import org.graalvm.compiler.phases.Phase; import org.graalvm.compiler.phases.graph.ScheduledNodeIterator; +import org.graalvm.compiler.phases.schedule.SchedulePhase; +import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy; import org.graalvm.compiler.phases.tiers.LowTierContext; +import org.graalvm.compiler.phases.tiers.PhaseContext; import org.graalvm.util.EconomicMap; import org.graalvm.util.MapCursor; @@ -85,8 +89,8 @@ public class FixReadsPhase extends BasePhase { private static final DebugCounter counterConstantInputReplacements = Debug.counter("FixReads_ConstantInputReplacement"); private static final DebugCounter counterBetterMergedStamps = Debug.counter("FixReads_BetterMergedStamp"); - private boolean replaceInputsWithConstants; - private Phase schedulePhase; + protected boolean replaceInputsWithConstants; + protected Phase schedulePhase; @Override public float codeSizeIncrease() { @@ -123,7 +127,7 @@ public class FixReadsPhase extends BasePhase { } - private static class RawConditionalEliminationVisitor implements RecursiveVisitor { + protected static class RawConditionalEliminationVisitor implements RecursiveVisitor { protected final NodeMap stampMap; protected final NodeStack undoOperations; @@ -134,7 +138,7 @@ public class FixReadsPhase extends BasePhase { private final BlockMap blockActionStart; private final EconomicMap> endMaps; - RawConditionalEliminationVisitor(StructuredGraph graph, ScheduleResult schedule, MetaAccessProvider metaAccess, boolean replaceInputsWithConstants) { + protected RawConditionalEliminationVisitor(StructuredGraph graph, ScheduleResult schedule, MetaAccessProvider metaAccess, boolean replaceInputsWithConstants) { this.graph = graph; this.schedule = schedule; this.metaAccess = metaAccess; @@ -145,39 +149,50 @@ public class FixReadsPhase extends BasePhase { replaceConstantInputs = replaceInputsWithConstants && GraalOptions.ReplaceInputsWithConstantsBasedOnStamps.getValue(graph.getOptions()); } - protected void processNode(Node node) { - assert node.isAlive(); + protected void replaceInput(Position p, Node oldInput, Node newConstantInput) { + p.set(oldInput, newConstantInput); + } - if (replaceConstantInputs) { - // Check if we can replace any of the inputs with a constant. - for (Position p : node.inputPositions()) { - Node input = p.get(node); - if (p.getInputType() == InputType.Value) { - if (input instanceof ValueNode) { - ValueNode valueNode = (ValueNode) input; - if (valueNode instanceof ConstantNode) { - // Input already is a constant. - } else { - Stamp bestStamp = getBestStamp(valueNode); - Constant constant = bestStamp.asConstant(); - if (constant != null) { - if (bestStamp instanceof FloatStamp) { - FloatStamp floatStamp = (FloatStamp) bestStamp; - if (floatStamp.contains(0.0d)) { - // Could also be -0.0d. - continue; - } + protected int replaceConstantInputs(Node node) { + int replacements = 0; + // Check if we can replace any of the inputs with a constant. + for (Position p : node.inputPositions()) { + Node input = p.get(node); + if (p.getInputType() == InputType.Value) { + if (input instanceof ValueNode) { + ValueNode valueNode = (ValueNode) input; + if (valueNode instanceof ConstantNode) { + // Input already is a constant. + } else { + Stamp bestStamp = getBestStamp(valueNode); + Constant constant = bestStamp.asConstant(); + if (constant != null) { + if (bestStamp instanceof FloatStamp) { + FloatStamp floatStamp = (FloatStamp) bestStamp; + if (floatStamp.contains(0.0d)) { + // Could also be -0.0d. + continue; } - counterConstantInputReplacements.increment(); - ConstantNode stampConstant = ConstantNode.forConstant(bestStamp, constant, metaAccess, graph); - assert stampConstant.stamp().isCompatible(valueNode.stamp()); - p.set(node, stampConstant); } + counterConstantInputReplacements.increment(); + ConstantNode stampConstant = ConstantNode.forConstant(bestStamp, constant, metaAccess, graph); + assert stampConstant.stamp().isCompatible(valueNode.stamp()); + replaceInput(p, node, stampConstant); + replacements++; } } } } } + return replacements; + } + + protected void processNode(Node node) { + assert node.isAlive(); + + if (replaceConstantInputs) { + replaceConstantInputs(node); + } if (node instanceof MergeNode) { registerCombinedStamps((MergeNode) node); @@ -200,7 +215,7 @@ public class FixReadsPhase extends BasePhase { } } - private void registerCombinedStamps(MergeNode node) { + protected void registerCombinedStamps(MergeNode node) { EconomicMap endMap = endMaps.get(node); MapCursor entries = endMap.getEntries(); while (entries.advance()) { @@ -210,7 +225,7 @@ public class FixReadsPhase extends BasePhase { } } - private void processEnd(EndNode node) { + protected void processEnd(EndNode node) { AbstractMergeNode abstractMerge = node.merge(); if (abstractMerge instanceof MergeNode) { MergeNode merge = (MergeNode) abstractMerge; @@ -294,14 +309,14 @@ public class FixReadsPhase extends BasePhase { return blockToNodeMap.get(node); } - private void processUnary(UnaryNode node) { + protected void processUnary(UnaryNode node) { Stamp newStamp = node.foldStamp(getBestStamp(node.getValue())); if (!checkReplaceWithConstant(newStamp, node)) { registerNewValueStamp(node, newStamp); } } - private boolean checkReplaceWithConstant(Stamp newStamp, ValueNode node) { + protected boolean checkReplaceWithConstant(Stamp newStamp, ValueNode node) { Constant constant = newStamp.asConstant(); if (constant != null && !(node instanceof ConstantNode)) { ConstantNode stampConstant = ConstantNode.forConstant(newStamp, constant, metaAccess, graph); @@ -314,7 +329,7 @@ public class FixReadsPhase extends BasePhase { return false; } - private void processBinary(BinaryNode node) { + protected void processBinary(BinaryNode node) { Stamp xStamp = getBestStamp(node.getX()); Stamp yStamp = getBestStamp(node.getY()); Stamp newStamp = node.foldStamp(xStamp, yStamp); @@ -323,7 +338,7 @@ public class FixReadsPhase extends BasePhase { } } - private void processIntegerSwitch(IntegerSwitchNode node) { + protected void processIntegerSwitch(IntegerSwitchNode node) { Stamp bestStamp = getBestStamp(node.value()); if (node.tryRemoveUnreachableKeys(null, bestStamp)) { Debug.log("\t Canonicalized integer switch %s for value %s and stamp %s", node, node.value(), bestStamp); @@ -331,7 +346,7 @@ public class FixReadsPhase extends BasePhase { } } - private void processIf(IfNode node) { + protected void processIf(IfNode node) { TriState result = tryProveCondition(node.condition()); if (result != TriState.UNKNOWN) { boolean isTrue = (result == TriState.TRUE); @@ -345,7 +360,7 @@ public class FixReadsPhase extends BasePhase { } } - private void processConditional(ConditionalNode node) { + protected void processConditional(ConditionalNode node) { TriState result = tryProveCondition(node.condition()); if (result != TriState.UNKNOWN) { boolean isTrue = (result == TriState.TRUE); @@ -358,7 +373,7 @@ public class FixReadsPhase extends BasePhase { } } - private TriState tryProveCondition(LogicNode condition) { + protected TriState tryProveCondition(LogicNode condition) { Stamp conditionStamp = this.getBestStamp(condition); if (conditionStamp == StampFactory.tautology()) { return TriState.TRUE; @@ -377,7 +392,7 @@ public class FixReadsPhase extends BasePhase { return TriState.UNKNOWN; } - private void processAbstractBegin(AbstractBeginNode beginNode) { + protected void processAbstractBegin(AbstractBeginNode beginNode) { Node predecessor = beginNode.predecessor(); if (predecessor instanceof IfNode) { IfNode ifNode = (IfNode) predecessor; @@ -484,8 +499,37 @@ public class FixReadsPhase extends BasePhase { fixReadsClosure.processNodes(block, schedule); } if (GraalOptions.RawConditionalElimination.getValue(graph.getOptions())) { - schedule.getCFG().visitDominatorTree(new RawConditionalEliminationVisitor(graph, schedule, context.getMetaAccess(), replaceInputsWithConstants), false); + schedule.getCFG().visitDominatorTree(createVisitor(graph, schedule, context), false); } + graph.setAfterFixReadPhase(true); + } + + public static class RawCEPhase extends BasePhase { + + private final boolean replaceInputsWithConstants; + + public RawCEPhase(boolean replaceInputsWithConstants) { + this.replaceInputsWithConstants = replaceInputsWithConstants; + } + + @Override + protected CharSequence getName() { + return "RawCEPhase"; + } + + @Override + protected void run(StructuredGraph graph, LowTierContext context) { + if (GraalOptions.RawConditionalElimination.getValue(graph.getOptions())) { + SchedulePhase schedulePhase = new SchedulePhase(SchedulingStrategy.LATEST, true); + schedulePhase.apply(graph); + ScheduleResult schedule = graph.getLastSchedule(); + schedule.getCFG().visitDominatorTree(new RawConditionalEliminationVisitor(graph, schedule, context.getMetaAccess(), replaceInputsWithConstants), false); + } + } + } + + protected ControlFlowGraph.RecursiveVisitor createVisitor(StructuredGraph graph, ScheduleResult schedule, PhaseContext context) { + return new RawConditionalEliminationVisitor(graph, schedule, context.getMetaAccess(), replaceInputsWithConstants); } protected static final class StampElement { @@ -517,4 +561,8 @@ public class FixReadsPhase extends BasePhase { return result.toString(); } } + + public void setReplaceInputsWithConstants(boolean replaceInputsWithConstants) { + this.replaceInputsWithConstants = replaceInputsWithConstants; + } } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FloatingReadPhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FloatingReadPhase.java index 051d72346a1..e35d0daff1e 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FloatingReadPhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FloatingReadPhase.java @@ -22,15 +22,14 @@ */ package org.graalvm.compiler.phases.common; -import static org.graalvm.api.word.LocationIdentity.any; import static org.graalvm.compiler.graph.Graph.NodeEvent.NODE_ADDED; import static org.graalvm.compiler.graph.Graph.NodeEvent.ZERO_USAGES; +import static org.graalvm.word.LocationIdentity.any; import java.util.EnumSet; import java.util.Iterator; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.debug.DebugCloseable; import org.graalvm.compiler.graph.Graph.NodeEventScope; @@ -72,6 +71,7 @@ import org.graalvm.util.Equivalence; import org.graalvm.util.EconomicMap; import org.graalvm.util.EconomicSet; import org.graalvm.util.UnmodifiableMapCursor; +import org.graalvm.word.LocationIdentity; public class FloatingReadPhase extends Phase { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/LoweringPhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/LoweringPhase.java index 6fe0bb5d06e..ea0c7b393ca 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/LoweringPhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/LoweringPhase.java @@ -35,7 +35,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.debug.DebugCloseable; @@ -76,6 +75,7 @@ import org.graalvm.compiler.phases.BasePhase; import org.graalvm.compiler.phases.Phase; import org.graalvm.compiler.phases.schedule.SchedulePhase; import org.graalvm.compiler.phases.tiers.PhaseContext; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.ConstantReflectionProvider; import jdk.vm.ci.meta.DeoptimizationAction; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/MemoryScheduleVerification.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/MemoryScheduleVerification.java index 543abfc81ba..f083ef316f7 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/MemoryScheduleVerification.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/MemoryScheduleVerification.java @@ -24,7 +24,6 @@ package org.graalvm.compiler.phases.schedule; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.BlockMap; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.debug.Debug; @@ -42,6 +41,7 @@ import org.graalvm.compiler.nodes.memory.MemoryPhiNode; import org.graalvm.compiler.phases.graph.ReentrantBlockIterator; import org.graalvm.compiler.phases.graph.ReentrantBlockIterator.BlockIteratorClosure; import org.graalvm.util.Equivalence; +import org.graalvm.word.LocationIdentity; import org.graalvm.util.EconomicSet; public final class MemoryScheduleVerification extends BlockIteratorClosure> { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/SchedulePhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/SchedulePhase.java index 3433d8478de..007e2a075f9 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/SchedulePhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases/src/org/graalvm/compiler/phases/schedule/SchedulePhase.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.phases.schedule; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.GraalOptions; import org.graalvm.compiler.core.common.SuppressFBWarnings; import org.graalvm.compiler.core.common.cfg.AbstractControlFlowGraph; @@ -68,6 +67,7 @@ import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; import org.graalvm.compiler.nodes.spi.ValueProxy; import org.graalvm.compiler.options.OptionValues; import org.graalvm.compiler.phases.Phase; +import org.graalvm.word.LocationIdentity; import java.util.ArrayList; import java.util.Arrays; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/BinaryGraphPrinter.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/BinaryGraphPrinter.java index 9f18d159ee4..d3e75dc261f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/BinaryGraphPrinter.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/BinaryGraphPrinter.java @@ -70,6 +70,7 @@ import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaField; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.Signature; +import org.graalvm.compiler.graph.NodeSourcePosition; public class BinaryGraphPrinter implements GraphPrinter { @@ -88,6 +89,7 @@ public class BinaryGraphPrinter implements GraphPrinter { private static final int POOL_NODE_CLASS = 0x06; private static final int POOL_FIELD = 0x07; private static final int POOL_SIGNATURE = 0x08; + private static final int POOL_NODE_SOURCE_POSITION = 0x09; private static final int PROPERTY_POOL = 0x00; private static final int PROPERTY_INT = 0x01; @@ -102,7 +104,7 @@ public class BinaryGraphPrinter implements GraphPrinter { private static final int KLASS = 0x00; private static final int ENUM_KLASS = 0x01; - static final int CURRENT_MAJOR_VERSION = 1; + static final int CURRENT_MAJOR_VERSION = 4; static final int CURRENT_MINOR_VERSION = 0; static final byte[] MAGIC_BYTES = {'B', 'I', 'G', 'V'}; @@ -341,6 +343,8 @@ public class BinaryGraphPrinter implements GraphPrinter { writeByte(POOL_FIELD); } else if (object instanceof Signature) { writeByte(POOL_SIGNATURE); + } else if (CURRENT_MAJOR_VERSION >= 4 && object instanceof NodeSourcePosition) { + writeByte(POOL_NODE_SOURCE_POSITION); } else { writeByte(POOL_STRING); } @@ -425,6 +429,21 @@ public class BinaryGraphPrinter implements GraphPrinter { writePoolObject(signature.getParameterType(i, null).getName()); } writePoolObject(signature.getReturnType(null).getName()); + } else if (CURRENT_MAJOR_VERSION >= 4 && object instanceof NodeSourcePosition) { + writeByte(POOL_NODE_SOURCE_POSITION); + NodeSourcePosition pos = (NodeSourcePosition) object; + ResolvedJavaMethod method = pos.getMethod(); + writePoolObject(method); + final int bci = pos.getBCI(); + writeInt(bci); + StackTraceElement ste = method.asStackTraceElement(bci); + if (ste != null) { + writePoolObject(ste.getFileName()); + writeInt(ste.getLineNumber()); + } else { + writePoolObject(null); + } + writePoolObject(pos.getCaller()); } else { writeByte(POOL_STRING); writeString(object.toString()); diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java index 2c4590df601..494019237e6 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java @@ -38,6 +38,7 @@ import org.graalvm.compiler.nodes.calc.SignedRemNode; import org.graalvm.compiler.nodes.calc.UnsignedDivNode; import org.graalvm.compiler.nodes.calc.UnsignedRemNode; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.options.OptionValues; import org.graalvm.compiler.phases.util.Providers; import org.graalvm.compiler.replacements.SnippetTemplate; @@ -205,6 +206,13 @@ public class AArch64IntegerArithmeticSnippets extends AbstractTemplates implemen protected SafeSignedDivNode(ValueNode x, ValueNode y) { super(TYPE, x, y); } + + @Override + public void generate(NodeLIRBuilderTool gen) { + // override to ensure we always pass a null frame state + // the parent method expects to create one from a non null before state + gen.setResult(this, gen.getLIRGeneratorTool().getArithmetic().emitDiv(gen.operand(getX()), gen.operand(getY()), null)); + } } @NodeInfo @@ -214,6 +222,13 @@ public class AArch64IntegerArithmeticSnippets extends AbstractTemplates implemen protected SafeSignedRemNode(ValueNode x, ValueNode y) { super(TYPE, x, y); } + + @Override + public void generate(NodeLIRBuilderTool gen) { + // override to ensure we always pass a null frame state + // the parent method expects to create one from a non null before state + gen.setResult(this, gen.getLIRGeneratorTool().getArithmetic().emitRem(gen.operand(getX()), gen.operand(getY()), null)); + } } @NodeInfo @@ -223,6 +238,13 @@ public class AArch64IntegerArithmeticSnippets extends AbstractTemplates implemen protected SafeUnsignedDivNode(ValueNode x, ValueNode y) { super(TYPE, x, y); } + + @Override + public void generate(NodeLIRBuilderTool gen) { + // override to ensure we always pass a null frame state + // the parent method expects to create one from a non null before state + gen.setResult(this, gen.getLIRGeneratorTool().getArithmetic().emitUDiv(gen.operand(getX()), gen.operand(getY()), null)); + } } @NodeInfo @@ -232,6 +254,13 @@ public class AArch64IntegerArithmeticSnippets extends AbstractTemplates implemen protected SafeUnsignedRemNode(ValueNode x, ValueNode y) { super(TYPE, x, y); } + + @Override + public void generate(NodeLIRBuilderTool gen) { + // override to ensure we always pass a null frame state + // the parent method expects to create one from a non null before state + gen.setResult(this, gen.getLIRGeneratorTool().getArithmetic().emitURem(gen.operand(getX()), gen.operand(getY()), null)); + } } } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64GraphBuilderPlugins.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64GraphBuilderPlugins.java index 2bcb4fec731..2ddb2196eb1 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64GraphBuilderPlugins.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64GraphBuilderPlugins.java @@ -31,7 +31,6 @@ import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.Una import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.TAN; import static org.graalvm.compiler.serviceprovider.JDK9Method.Java8OrEarlier; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.bytecode.BytecodeProvider; import org.graalvm.compiler.lir.amd64.AMD64ArithmeticLIRGeneratorTool.RoundingMode; import org.graalvm.compiler.nodes.ValueNode; @@ -54,6 +53,7 @@ import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode.BinaryOpe import org.graalvm.compiler.replacements.nodes.BitCountNode; import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode; import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.amd64.AMD64; import jdk.vm.ci.amd64.AMD64.CPUFeature; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringIndexOfNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringIndexOfNode.java index 9ca4f34504a..87dedbd92e8 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringIndexOfNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringIndexOfNode.java @@ -25,8 +25,6 @@ package org.graalvm.compiler.replacements.amd64; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_256; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_64; -import org.graalvm.api.word.LocationIdentity; -import org.graalvm.api.word.Pointer; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.NodeInputList; @@ -40,6 +38,8 @@ import org.graalvm.compiler.nodes.memory.MemoryAccess; import org.graalvm.compiler.nodes.memory.MemoryNode; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; +import org.graalvm.word.LocationIdentity; +import org.graalvm.word.Pointer; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.Value; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringSubstitutions.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringSubstitutions.java index da6918cb8ab..8dbb3ff0fa9 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringSubstitutions.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64StringSubstitutions.java @@ -22,11 +22,11 @@ */ package org.graalvm.compiler.replacements.amd64; -import org.graalvm.api.word.Pointer; import org.graalvm.compiler.api.replacements.ClassSubstitution; import org.graalvm.compiler.api.replacements.MethodSubstitution; import org.graalvm.compiler.graph.Node.ConstantNodeParameter; import org.graalvm.compiler.word.Word; +import org.graalvm.word.Pointer; import sun.misc.Unsafe; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DerivedOopTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DerivedOopTest.java index 806188eb416..b03769c08e5 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DerivedOopTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DerivedOopTest.java @@ -196,6 +196,7 @@ public class DerivedOopTest extends ReplacementsTest implements Snippets { internalPointer = getRawPointer(o2) + offsetB; SideEffect2 = internalPointer; } + GraalDirectives.controlFlowAnchor(); // make sure the internal pointer is computed before the safepoint GraalDirectives.blackhole(internalPointer); objResult.beforeGC.basePointer = getRawPointer(objResult); @@ -215,6 +216,7 @@ public class DerivedOopTest extends ReplacementsTest implements Snippets { internalPointer = getRawPointer(o2) + offsetB; SideEffect2 = internalPointer; } + GraalDirectives.controlFlowAnchor(); // make sure the internal pointer is computed before the safepoint GraalDirectives.blackhole(internalPointer); objResult.beforeGC.basePointer = getRawPointer(objResult); @@ -233,6 +235,7 @@ public class DerivedOopTest extends ReplacementsTest implements Snippets { internalPointer = getRawPointer(b) + offsetB; SideEffect2 = internalPointer; } + GraalDirectives.controlFlowAnchor(); // make sure the internal pointer is computed before the safepoint GraalDirectives.blackhole(internalPointer); objResult.beforeGC.basePointer = getRawPointer(objResult); diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MethodSubstitutionTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MethodSubstitutionTest.java index d2311c5a321..a5d14037d17 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MethodSubstitutionTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MethodSubstitutionTest.java @@ -132,7 +132,7 @@ public abstract class MethodSubstitutionTest extends GraalCompilerTest { protected Object invokeSafe(ResolvedJavaMethod method, Object receiver, Object... args) { try { return invoke(method, receiver, args); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException e) { throw new RuntimeException(e); } } diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/NewMultiArrayTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/NewMultiArrayTest.java index 957fd7d6751..e043e8f3293 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/NewMultiArrayTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/NewMultiArrayTest.java @@ -78,7 +78,8 @@ public class NewMultiArrayTest extends GraalCompilerTest { } @Override - protected Object referenceInvoke(ResolvedJavaMethod method, Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + protected Object referenceInvoke(ResolvedJavaMethod method, Object receiver, Object... args) + throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException { if (bottomType != null) { try { return Array.newInstance(bottomClass, dimensions); diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/ObjectAccessTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/ObjectAccessTest.java index c54022b671c..95e0f45c7e2 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/ObjectAccessTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/ObjectAccessTest.java @@ -22,9 +22,6 @@ */ package org.graalvm.compiler.replacements.test; -import org.graalvm.api.word.LocationIdentity; -import org.graalvm.api.word.Pointer; -import org.graalvm.api.word.WordFactory; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.nodes.NamedLocationIdentity; import org.graalvm.compiler.nodes.ReturnNode; @@ -35,6 +32,9 @@ import org.graalvm.compiler.nodes.extended.JavaReadNode; import org.graalvm.compiler.nodes.extended.JavaWriteNode; import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode; import org.graalvm.compiler.word.ObjectAccess; +import org.graalvm.word.LocationIdentity; +import org.graalvm.word.Pointer; +import org.graalvm.word.WordFactory; import org.junit.Assert; import org.junit.Test; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PEGraphDecoderTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PEGraphDecoderTest.java index 3dd5d2f889c..6acb99a893c 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PEGraphDecoderTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PEGraphDecoderTest.java @@ -24,7 +24,6 @@ package org.graalvm.compiler.replacements.test; import static org.graalvm.compiler.nodes.graphbuilderconf.InlineInvokePlugin.InlineInfo.createStandardInlineInfo; -import org.graalvm.api.word.LocationIdentity; import org.junit.Test; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.core.test.GraalCompilerTest; @@ -47,6 +46,7 @@ import org.graalvm.compiler.phases.OptimisticOptimizations; import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.tiers.PhaseContext; import org.graalvm.compiler.replacements.CachingPEGraphDecoder; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.ResolvedJavaMethod; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java index 2c53284bbb2..9ebfb868398 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java @@ -22,9 +22,6 @@ */ package org.graalvm.compiler.replacements.test; -import org.graalvm.api.word.LocationIdentity; -import org.graalvm.api.word.Pointer; -import org.graalvm.api.word.WordFactory; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.nodes.NamedLocationIdentity; import org.graalvm.compiler.nodes.ReturnNode; @@ -39,6 +36,9 @@ import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.tiers.HighTierContext; import org.graalvm.compiler.word.Word; import org.graalvm.compiler.word.WordCastNode; +import org.graalvm.word.LocationIdentity; +import org.graalvm.word.Pointer; +import org.graalvm.word.WordFactory; import org.junit.Assert; import org.junit.Test; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/WordTest.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/WordTest.java index 97ccb450620..32eadf9e82c 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/WordTest.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/WordTest.java @@ -22,16 +22,16 @@ */ package org.graalvm.compiler.replacements.test; -import org.graalvm.api.word.Pointer; -import org.graalvm.api.word.Unsigned; -import org.graalvm.api.word.WordBase; -import org.graalvm.api.word.WordFactory; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.core.common.CompilationIdentifier; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; import org.graalvm.compiler.options.OptionValues; import org.graalvm.compiler.word.Word; +import org.graalvm.word.Pointer; +import org.graalvm.word.Unsigned; +import org.graalvm.word.WordBase; +import org.graalvm.word.WordFactory; import org.junit.Test; import jdk.vm.ci.meta.ResolvedJavaMethod; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/DefaultJavaLoweringProvider.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/DefaultJavaLoweringProvider.java index adf8e0b8c9c..f04f9b41bbb 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/DefaultJavaLoweringProvider.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/DefaultJavaLoweringProvider.java @@ -37,7 +37,6 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.api.directives.GraalDirectives; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.api.replacements.SnippetReflectionProvider; @@ -125,6 +124,7 @@ import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode; import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode.BinaryOperation; import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode; import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.CodeUtil; import jdk.vm.ci.code.MemoryBarriers; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/GraphKit.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/GraphKit.java index 9cc554c2186..ad2ec1f9e16 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/GraphKit.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/GraphKit.java @@ -29,7 +29,6 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.core.common.type.StampPair; @@ -67,6 +66,7 @@ import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality; import org.graalvm.compiler.phases.common.inlining.InliningUtil; import org.graalvm.compiler.phases.util.Providers; import org.graalvm.compiler.word.WordTypes; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.meta.ConstantReflectionProvider; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetCounterNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetCounterNode.java index e4f0dd39362..c1efc2790b7 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetCounterNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetCounterNode.java @@ -29,7 +29,6 @@ import static org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER import java.lang.reflect.Field; import java.util.Arrays; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.api.replacements.Fold; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter; @@ -50,6 +49,7 @@ import org.graalvm.compiler.replacements.SnippetTemplate.AbstractTemplates; import org.graalvm.compiler.replacements.SnippetTemplate.Arguments; import org.graalvm.compiler.replacements.SnippetTemplate.SnippetInfo; import org.graalvm.compiler.word.ObjectAccess; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.TargetDescription; import sun.misc.Unsafe; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetLowerableMemoryNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetLowerableMemoryNode.java index 00d8a988998..a4499f5b1d0 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetLowerableMemoryNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetLowerableMemoryNode.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.replacements; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.NodeInputList; @@ -38,6 +37,7 @@ import org.graalvm.compiler.nodes.memory.MemoryAccess; import org.graalvm.compiler.nodes.memory.MemoryNode; import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; +import org.graalvm.word.LocationIdentity; @NodeInfo(cycles = CYCLES_IGNORED, size = SIZE_IGNORED) public class SnippetLowerableMemoryNode extends FixedWithNextNode implements Lowerable, MemoryAccess { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java index 2488c4c8659..3d13ee7a16d 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java @@ -23,13 +23,13 @@ package org.graalvm.compiler.replacements; import static java.util.FormattableFlags.ALTERNATE; -import static org.graalvm.api.word.LocationIdentity.any; import static org.graalvm.compiler.debug.Debug.applyFormattingFlagsAndWidth; import static org.graalvm.compiler.debug.GraalDebugConfig.Options.DebugStubsAndSnippets; import static org.graalvm.compiler.graph.iterators.NodePredicates.isNotA; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED; import static org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality.Required; +import static org.graalvm.word.LocationIdentity.any; import java.lang.reflect.Array; import java.lang.reflect.Method; @@ -45,8 +45,6 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Predicate; -import org.graalvm.api.word.LocationIdentity; -import org.graalvm.api.word.WordBase; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter; import org.graalvm.compiler.api.replacements.Snippet.NonNullParameter; @@ -129,6 +127,8 @@ import org.graalvm.util.EconomicMap; import org.graalvm.util.EconomicSet; import org.graalvm.util.Equivalence; import org.graalvm.util.UnmodifiableEconomicMap; +import org.graalvm.word.LocationIdentity; +import org.graalvm.word.WordBase; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.meta.Constant; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java index 67ebfb6d85b..2a4d4de7459 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java @@ -36,7 +36,6 @@ import java.lang.reflect.Array; import java.lang.reflect.Field; import java.util.Arrays; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.api.directives.GraalDirectives; import org.graalvm.compiler.api.replacements.SnippetReflectionProvider; import org.graalvm.compiler.bytecode.BytecodeProvider; @@ -101,6 +100,7 @@ import org.graalvm.compiler.replacements.nodes.VirtualizableInvokeMacroNode; import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerAddExactNode; import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerMulExactNode; import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerSubExactNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.DeoptimizationAction; import jdk.vm.ci.meta.DeoptimizationReason; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayEqualsNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayEqualsNode.java index f44b2e04f07..c8150e63d27 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayEqualsNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayEqualsNode.java @@ -26,7 +26,6 @@ import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_1024; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1024; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; @@ -46,6 +45,7 @@ import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.util.GraphUtil; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.ConstantReflectionProvider; import jdk.vm.ci.meta.JavaConstant; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicArrayCopyNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicArrayCopyNode.java index af2c14c9d76..d089a58e5e7 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicArrayCopyNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicArrayCopyNode.java @@ -22,13 +22,12 @@ */ package org.graalvm.compiler.replacements.nodes; -import static org.graalvm.api.word.LocationIdentity.any; import static org.graalvm.compiler.nodeinfo.InputType.Memory; import static org.graalvm.compiler.nodeinfo.InputType.State; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_256; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_64; +import static org.graalvm.word.LocationIdentity.any; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampFactory; import org.graalvm.compiler.debug.Debug; import org.graalvm.compiler.graph.NodeClass; @@ -51,6 +50,7 @@ import org.graalvm.compiler.nodes.spi.VirtualizerTool; import org.graalvm.compiler.nodes.type.StampTool; import org.graalvm.compiler.nodes.virtual.VirtualArrayNode; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.meta.JavaKind; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroStateSplitNode.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroStateSplitNode.java index 86677abebe9..ee3df767dcf 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroStateSplitNode.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroStateSplitNode.java @@ -22,7 +22,6 @@ */ package org.graalvm.compiler.replacements.nodes; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.type.StampPair; import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.graph.NodeClass; @@ -37,6 +36,7 @@ import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.java.MethodCallTargetNode; import org.graalvm.compiler.nodes.memory.MemoryCheckpoint; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.meta.ResolvedJavaMethod; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java index b267857d4e2..63704efd772 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java @@ -32,8 +32,16 @@ import org.graalvm.compiler.phases.tiers.PhaseContext; public class EarlyReadEliminationPhase extends EffectsPhase { + private final boolean considerGuards; + public EarlyReadEliminationPhase(CanonicalizerPhase canonicalizer) { super(1, canonicalizer, true); + this.considerGuards = true; + } + + public EarlyReadEliminationPhase(CanonicalizerPhase canonicalizer, boolean considerGuards) { + super(1, canonicalizer, true); + this.considerGuards = considerGuards; } @Override @@ -46,7 +54,7 @@ public class EarlyReadEliminationPhase extends EffectsPhase { @Override protected Closure createEffectsClosure(PhaseContext context, ScheduleResult schedule, ControlFlowGraph cfg) { assert schedule == null; - return new ReadEliminationClosure(cfg); + return new ReadEliminationClosure(cfg, considerGuards); } @Override diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EffectsClosure.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EffectsClosure.java index dff28c11fa7..3eff9b20a6f 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EffectsClosure.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EffectsClosure.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.virtual.phases.ea; import java.util.ArrayList; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.BlockMap; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.core.common.type.Stamp; @@ -61,6 +60,7 @@ import org.graalvm.compiler.phases.graph.ReentrantBlockIterator; import org.graalvm.compiler.phases.graph.ReentrantBlockIterator.BlockIteratorClosure; import org.graalvm.compiler.phases.graph.ReentrantBlockIterator.LoopInfo; import org.graalvm.util.Equivalence; +import org.graalvm.word.LocationIdentity; import org.graalvm.util.EconomicMap; import org.graalvm.util.EconomicSet; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationBlockState.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationBlockState.java index f292382b880..04102ecd218 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationBlockState.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationBlockState.java @@ -25,7 +25,6 @@ package org.graalvm.compiler.virtual.phases.ea; import java.util.Iterator; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.nodes.FieldLocationIdentity; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.virtual.AllocatedObjectNode; @@ -34,6 +33,7 @@ import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; import org.graalvm.compiler.options.OptionValues; import org.graalvm.util.EconomicMap; import org.graalvm.util.Equivalence; +import org.graalvm.word.LocationIdentity; public final class PEReadEliminationBlockState extends PartialEscapeBlockState { diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java index 30ed31adf79..de82a5cf223 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java @@ -29,7 +29,6 @@ import java.util.EnumMap; import java.util.Iterator; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; import org.graalvm.compiler.debug.Debug; @@ -66,6 +65,7 @@ import org.graalvm.util.EconomicSet; import org.graalvm.util.Equivalence; import org.graalvm.util.MapCursor; import org.graalvm.util.Pair; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.ConstantReflectionProvider; import jdk.vm.ci.meta.JavaConstant; diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationBlockState.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationBlockState.java index 917f996c671..8cf61c7d67c 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationBlockState.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationBlockState.java @@ -24,9 +24,9 @@ package org.graalvm.compiler.virtual.phases.ea; import java.util.Iterator; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.util.Equivalence; +import org.graalvm.word.LocationIdentity; import org.graalvm.util.EconomicMap; /** diff --git a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationClosure.java b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationClosure.java index 1c6c0119a71..ec444b1015b 100644 --- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationClosure.java +++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/ReadEliminationClosure.java @@ -22,13 +22,12 @@ */ package org.graalvm.compiler.virtual.phases.ea; -import static org.graalvm.api.word.LocationIdentity.any; import static org.graalvm.compiler.core.common.GraalOptions.ReadEliminationMaxLoopVisits; +import static org.graalvm.word.LocationIdentity.any; import java.util.Iterator; import java.util.List; -import org.graalvm.api.word.LocationIdentity; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.debug.Debug; @@ -63,6 +62,7 @@ import org.graalvm.util.Equivalence; import org.graalvm.util.EconomicMap; import org.graalvm.util.EconomicSet; import org.graalvm.util.MapCursor; +import org.graalvm.word.LocationIdentity; import jdk.vm.ci.meta.JavaKind; @@ -72,9 +72,11 @@ import jdk.vm.ci.meta.JavaKind; * overlap. */ public final class ReadEliminationClosure extends EffectsClosure { + private final boolean considerGuards; - public ReadEliminationClosure(ControlFlowGraph cfg) { + public ReadEliminationClosure(ControlFlowGraph cfg, boolean considerGuards) { super(null, cfg); + this.considerGuards = considerGuards; } @Override @@ -119,7 +121,7 @@ public final class ReadEliminationClosure extends EffectsClosure