Mercurial > hg > graal-compiler
changeset 22843:ae8a63a7aa9e
Update jvmci import: Move VirtualStackSlot from JVMCI to Graal and remove referenceMapIndex.
line wrap: on
line diff
--- a/graal/com.oracle.graal.code/src/com/oracle/graal/code/HexCodeFileDisassemblerProvider.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.code/src/com/oracle/graal/code/HexCodeFileDisassemblerProvider.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -77,7 +77,7 @@ HexCodeFile.addAnnotations(hcf, compResult.getAnnotations()); addExceptionHandlersComment(compResult, hcf); Register fp = regConfig.getFrameRegister(); - RefMapFormatter slotFormatter = new DefaultRefMapFormatter(target.arch, target.wordSize, fp, 0); + RefMapFormatter slotFormatter = new DefaultRefMapFormatter(target.wordSize, fp, 0); for (Infopoint infopoint : compResult.getInfopoints()) { if (infopoint instanceof Call) { Call call = (Call) infopoint;
--- a/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,13 +24,13 @@ import static org.junit.Assume.assumeTrue; import jdk.vm.ci.amd64.AMD64; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.PrimitiveConstant; import org.junit.Before; import org.junit.Test; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGeneratorTool; import com.oracle.graal.lir.jtt.LIRTest; @@ -54,7 +54,7 @@ FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder(); // create slots PrimitiveConstant constantValue = JavaConstant.forBoxedPrimitive(primitive); - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(gen.target().getLIRKind(constantValue.getJavaKind())); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(gen.target().getLIRKind(constantValue.getJavaKind())); // move stuff around gen.emitMoveConstant(s1, constantValue); gen.emitBlackhole(s1);
--- a/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java Fri Oct 16 13:54:56 2015 +0200 @@ -25,7 +25,6 @@ import static org.junit.Assume.assumeTrue; import jdk.vm.ci.amd64.AMD64; import jdk.vm.ci.amd64.AMD64Kind; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.LIRKind; import jdk.vm.ci.meta.Value; @@ -33,6 +32,7 @@ import org.junit.Before; import org.junit.Test; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGeneratorTool; import com.oracle.graal.lir.jtt.LIRTest; @@ -49,8 +49,8 @@ public void generate(LIRGeneratorTool gen, Value a) { FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder(); // create slots - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); - StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); + VirtualStackSlot s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); // move stuff around gen.emitMove(s1, a); gen.emitMoveConstant(s2, JavaConstant.forShort(Short.MIN_VALUE)); @@ -65,8 +65,8 @@ public void generate(LIRGeneratorTool gen, Value a) { FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder(); // create slots - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); - StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); + VirtualStackSlot s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); // move stuff around gen.emitMove(s1, a); Value v = gen.emitLoadConstant(LIRKind.value(AMD64Kind.WORD), JavaConstant.forShort(Short.MIN_VALUE)); @@ -82,8 +82,8 @@ public void generate(LIRGeneratorTool gen, Value a) { FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder(); // create slots - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); - StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind()); + VirtualStackSlot s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(AMD64Kind.WORD)); // move stuff around gen.emitMoveConstant(s2, JavaConstant.forShort(Short.MIN_VALUE)); gen.emitMove(s1, a);
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Fri Oct 16 13:54:56 2015 +0200 @@ -42,9 +42,9 @@ import static com.oracle.graal.lir.LIRValueUtil.asConstantValue; import static com.oracle.graal.lir.LIRValueUtil.asJavaConstant; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.code.ValueUtil.isAllocatableValue; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.HashMap; import java.util.Map; @@ -56,8 +56,6 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -86,6 +84,7 @@ import com.oracle.graal.lir.StandardOp.JumpOp; import com.oracle.graal.lir.SwitchStrategy; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.amd64.AMD64AddressValue; import com.oracle.graal.lir.amd64.AMD64ArrayEqualsOp; import com.oracle.graal.lir.amd64.AMD64BinaryConsumer; @@ -127,9 +126,9 @@ private static class RegisterBackupPair { public final Register register; - public final StackSlotValue backupSlot; + public final VirtualStackSlot backupSlot; - RegisterBackupPair(Register register, StackSlotValue backupSlot) { + RegisterBackupPair(Register register, VirtualStackSlot backupSlot) { this.register = register; this.backupSlot = backupSlot; } @@ -244,12 +243,12 @@ default: RegisterBackupPair backup = getScratchRegister(input.getPlatformKind()); Register scratchRegister = backup.register; - StackSlotValue backupSlot = backup.backupSlot; + VirtualStackSlot backupSlot = backup.backupSlot; return createStackMove(result, input, scratchRegister, backupSlot); } } - protected LIRInstruction createStackMove(AllocatableValue result, AllocatableValue input, Register scratchRegister, StackSlotValue backupSlot) { + protected LIRInstruction createStackMove(AllocatableValue result, AllocatableValue input, Register scratchRegister, AllocatableValue backupSlot) { return new AMD64StackMove(result, input, scratchRegister, backupSlot); } @@ -311,7 +310,7 @@ } @Override - public Variable emitAddress(StackSlotValue address) { + public Variable emitAddress(VirtualStackSlot address) { Variable result = newVariable(LIRKind.value(target().arch.getWordKind())); append(new StackLeaOp(result, address)); return result;
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Fri Oct 16 13:54:56 2015 +0200 @@ -32,11 +32,10 @@ import static com.oracle.graal.asm.sparc.SPARCAssembler.Opfs.Fcmps; import static com.oracle.graal.lir.LIRValueUtil.asJavaConstant; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.sparc.SPARCKind.XWORD; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.sparc.SPARCKind.SINGLE; +import static jdk.vm.ci.sparc.SPARCKind.XWORD; import jdk.vm.ci.code.CallingConvention; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -66,6 +65,7 @@ import com.oracle.graal.lir.StandardOp.NoOp; import com.oracle.graal.lir.SwitchStrategy; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGenerationResult; import com.oracle.graal.lir.gen.LIRGenerator; import com.oracle.graal.lir.gen.SpillMoveFactoryBase; @@ -257,7 +257,7 @@ } @Override - public Variable emitAddress(StackSlotValue address) { + public Variable emitAddress(VirtualStackSlot address) { Variable result = newVariable(LIRKind.value(target().arch.getWordKind())); append(new StackLoadAddressOp(result, address)); return result; @@ -501,7 +501,7 @@ append(new TableSwitchOp(lowKey, defaultTarget, targets, tmp, newVariable(LIRKind.value(target().arch.getWordKind())))); } - protected StackSlotValue getTempSlot(LIRKind kind) { + protected VirtualStackSlot getTempSlot(LIRKind kind) { return getResult().getFrameMapBuilder().allocateSpillSlot(kind); }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java Fri Oct 16 13:54:56 2015 +0200 @@ -35,6 +35,7 @@ import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.lir.LIR; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.LIRValueUtil; import com.oracle.graal.lir.StandardOp.ValueMoveOp; import com.oracle.graal.lir.ValueProcedure; import com.oracle.graal.nodes.StructuredGraph; @@ -95,7 +96,7 @@ if (ValueUtil.isRegister(use)) { regRegMoves++; } - } else if (ValueUtil.isStackSlotValue(def)) { + } else if (LIRValueUtil.isStackSlotValue(def)) { spillMoves++; } }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCounterOp.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCounterOp.java Fri Oct 16 13:54:56 2015 +0200 @@ -30,9 +30,9 @@ import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.common.JVMCIError.unimplemented; import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.hotspot.HotSpotVMConfig; +import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Value; import com.oracle.graal.asm.amd64.AMD64Address; @@ -41,20 +41,21 @@ import com.oracle.graal.hotspot.meta.HotSpotRegistersProvider; import com.oracle.graal.lir.LIRInstructionClass; import com.oracle.graal.lir.Opcode; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.asm.CompilationResultBuilder; @Opcode("BenchMarkCounter") public class AMD64HotSpotCounterOp extends HotSpotCounterOp { public static final LIRInstructionClass<AMD64HotSpotCounterOp> TYPE = LIRInstructionClass.create(AMD64HotSpotCounterOp.class); - @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private StackSlotValue backupSlot; + @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private AllocatableValue backupSlot; - public AMD64HotSpotCounterOp(String name, String group, Value increment, HotSpotRegistersProvider registers, HotSpotVMConfig config, StackSlotValue backupSlot) { + public AMD64HotSpotCounterOp(String name, String group, Value increment, HotSpotRegistersProvider registers, HotSpotVMConfig config, VirtualStackSlot backupSlot) { super(TYPE, name, group, increment, registers, config); this.backupSlot = backupSlot; } - public AMD64HotSpotCounterOp(String[] names, String[] groups, Value[] increments, HotSpotRegistersProvider registers, HotSpotVMConfig config, StackSlotValue backupSlot) { + public AMD64HotSpotCounterOp(String[] names, String[] groups, Value[] increments, HotSpotRegistersProvider registers, HotSpotVMConfig config, VirtualStackSlot backupSlot) { super(TYPE, names, groups, increments, registers, config); this.backupSlot = backupSlot; }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Fri Oct 16 13:54:56 2015 +0200 @@ -43,8 +43,6 @@ import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.hotspot.HotSpotCompressedNullConstant; import jdk.vm.ci.hotspot.HotSpotConstant; @@ -89,6 +87,7 @@ import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.lir.SwitchStrategy; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.amd64.AMD64AddressValue; import com.oracle.graal.lir.amd64.AMD64BinaryConsumer; import com.oracle.graal.lir.amd64.AMD64CCall; @@ -186,14 +185,14 @@ private static final class RescueSlotDummyOp extends LIRInstruction { public static final LIRInstructionClass<RescueSlotDummyOp> TYPE = LIRInstructionClass.create(RescueSlotDummyOp.class); - @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private StackSlotValue slot; + @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private AllocatableValue slot; public RescueSlotDummyOp(FrameMapBuilder frameMapBuilder, LIRKind kind) { super(TYPE); slot = frameMapBuilder.allocateSpillSlot(kind); } - public StackSlotValue getSlot() { + public AllocatableValue getSlot() { return slot; } @@ -204,9 +203,9 @@ private RescueSlotDummyOp rescueSlotOp; - private StackSlotValue getOrInitRescueSlot() { + private VirtualStackSlot getOrInitRescueSlot() { RescueSlotDummyOp op = getOrInitRescueSlotOp(); - return op.getSlot(); + return (VirtualStackSlot) op.getSlot(); } private RescueSlotDummyOp getOrInitRescueSlotOp() { @@ -232,7 +231,7 @@ } @Override - public StackSlotValue getLockSlot(int lockDepth) { + public VirtualStackSlot getLockSlot(int lockDepth) { return getLockStack().makeLockSlot(lockDepth); } @@ -333,7 +332,7 @@ * @param savedRegisterLocations the slots to which the registers are saved * @param supportsRemove determines if registers can be pruned */ - protected AMD64SaveRegistersOp emitSaveRegisters(Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove) { + protected AMD64SaveRegistersOp emitSaveRegisters(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { AMD64SaveRegistersOp save = new AMD64SaveRegistersOp(savedRegisters, savedRegisterLocations, supportsRemove); append(save); return save; @@ -342,7 +341,7 @@ /** * Allocate a stack slot for saving a register. */ - protected StackSlotValue allocateSaveRegisterLocation(Register register) { + protected VirtualStackSlot allocateSaveRegisterLocation(Register register) { PlatformKind kind = target().arch.getLargestStorableKind(register.getRegisterCategory()); if (kind.getVectorLength() > 1) { // we don't use vector registers, so there is no need to save them @@ -358,7 +357,7 @@ * @return the register save node */ private AMD64SaveRegistersOp emitSaveAllRegisters(Register[] savedRegisters, boolean supportsRemove) { - StackSlotValue[] savedRegisterLocations = new StackSlotValue[savedRegisters.length]; + AllocatableValue[] savedRegisterLocations = new AllocatableValue[savedRegisters.length]; for (int i = 0; i < savedRegisters.length; i++) { PlatformKind kind = target().arch.getLargestStorableKind(savedRegisters[i].getRegisterCategory()); VirtualStackSlot spillSlot = getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(kind));
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Fri Oct 16 13:54:56 2015 +0200 @@ -66,8 +66,8 @@ import static jdk.vm.ci.sparc.SPARC.g3; import static jdk.vm.ci.sparc.SPARC.g4; import static jdk.vm.ci.sparc.SPARC.g5; +import static jdk.vm.ci.sparc.SPARCKind.WORD; import static jdk.vm.ci.sparc.SPARCKind.XWORD; -import static jdk.vm.ci.sparc.SPARCKind.WORD; import java.util.Map; @@ -75,8 +75,6 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.hotspot.HotSpotCompressedNullConstant; import jdk.vm.ci.hotspot.HotSpotMetaspaceConstant; @@ -114,6 +112,7 @@ import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.lir.SwitchStrategy; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGenerationResult; import com.oracle.graal.lir.sparc.SPARCAddressValue; import com.oracle.graal.lir.sparc.SPARCControlFlow.StrategySwitchOp; @@ -162,7 +161,7 @@ private AllocatableValue safepointAddressValue; @Override - public StackSlotValue getLockSlot(int lockDepth) { + public VirtualStackSlot getLockSlot(int lockDepth) { return getLockStack().makeLockSlot(lockDepth); } @@ -428,7 +427,7 @@ * @param savedRegisterLocations the slots to which the registers are saved * @param supportsRemove determines if registers can be pruned */ - protected SPARCSaveRegistersOp emitSaveRegisters(Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove) { + protected SPARCSaveRegistersOp emitSaveRegisters(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { SPARCSaveRegistersOp save = new SPARCSaveRegistersOp(savedRegisters, savedRegisterLocations, supportsRemove); append(save); return save; @@ -451,7 +450,7 @@ d56, d58, d60, d62 }; // @formatter:on - StackSlotValue[] savedRegisterLocations = new StackSlotValue[savedRegisters.length]; + AllocatableValue[] savedRegisterLocations = new AllocatableValue[savedRegisters.length]; for (int i = 0; i < savedRegisters.length; i++) { PlatformKind kind = target().arch.getLargestStorableKind(savedRegisters[i].getRegisterCategory()); VirtualStackSlot spillSlot = getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(kind));
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Fri Oct 16 13:54:56 2015 +0200 @@ -25,12 +25,12 @@ import static jdk.vm.ci.code.BytecodeFrame.isPlaceholderBci; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.code.StackLockValue; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.VirtualObject; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.JavaValue; import com.oracle.graal.compiler.gen.DebugInfoBuilder; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.nodes.FrameState; import com.oracle.graal.nodes.ValueNode; import com.oracle.graal.nodes.spi.NodeValueMap; @@ -57,7 +57,7 @@ if (state.outerFrameState() != null) { lockDepth += state.outerFrameState().nestedLockDepth(); } - StackSlotValue slot = lockStack.makeLockSlot(lockDepth); + VirtualStackSlot slot = lockStack.makeLockSlot(lockDepth); ValueNode lock = state.lockAt(lockIndex); JavaValue object = toJavaValue(lock); boolean eliminated = object instanceof VirtualObject || state.monitorIdAt(lockIndex) == null;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLIRGenerator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLIRGenerator.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,7 +22,6 @@ */ package com.oracle.graal.hotspot; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.hotspot.HotSpotVMConfig.CompressEncoding; import jdk.vm.ci.meta.DeoptimizationAction; @@ -39,6 +38,7 @@ import com.oracle.graal.hotspot.nodes.SaveAllRegistersNode; import com.oracle.graal.hotspot.nodes.UncommonTrapCallNode; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGenerator; import com.oracle.graal.lir.gen.LIRGeneratorTool; @@ -149,7 +149,7 @@ /** * Gets a stack slot for a lock at a given lock nesting depth. */ - StackSlotValue getLockSlot(int lockDepth); + VirtualStackSlot getLockSlot(int lockDepth); HotSpotProviders getProviders();
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLockStack.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLockStack.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,11 +26,12 @@ import java.util.Arrays; -import jdk.vm.ci.code.StackSlotValue; +import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.LIRKind; import com.oracle.graal.lir.LIRInstruction; import com.oracle.graal.lir.LIRInstructionClass; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.asm.CompilationResultBuilder; import com.oracle.graal.lir.framemap.FrameMapBuilder; @@ -40,9 +41,9 @@ */ public class HotSpotLockStack extends LIRInstruction { public static final LIRInstructionClass<HotSpotLockStack> TYPE = LIRInstructionClass.create(HotSpotLockStack.class); - private static final StackSlotValue[] EMPTY = new StackSlotValue[0]; + private static final AllocatableValue[] EMPTY = new AllocatableValue[0]; - @Def({STACK}) private StackSlotValue[] locks; + @Def({STACK}) private AllocatableValue[] locks; private final FrameMapBuilder frameMapBuilder; private final LIRKind slotKind; @@ -56,16 +57,16 @@ /** * Gets a stack slot for a lock at a given lock nesting depth, allocating it first if necessary. */ - public StackSlotValue makeLockSlot(int lockDepth) { + public VirtualStackSlot makeLockSlot(int lockDepth) { if (locks == EMPTY) { - locks = new StackSlotValue[lockDepth + 1]; + locks = new AllocatableValue[lockDepth + 1]; } else if (locks.length < lockDepth + 1) { locks = Arrays.copyOf(locks, lockDepth + 1); } if (locks[lockDepth] == null) { locks[lockDepth] = frameMapBuilder.allocateSpillSlot(slotKind); } - return locks[lockDepth]; + return (VirtualStackSlot) locks[lockDepth]; } @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,12 +24,12 @@ import java.util.BitSet; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.type.StampFactory; import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.FixedWithNextNode; import com.oracle.graal.nodes.spi.LIRLowerable;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,13 +22,13 @@ */ package com.oracle.graal.hotspot.nodes; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.meta.LocationIdentity; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.type.StampFactory; import com.oracle.graal.graph.NodeClass; import com.oracle.graal.hotspot.HotSpotLIRGenerator; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.nodeinfo.InputType; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.extended.MonitorEnter; @@ -70,7 +70,7 @@ public void generate(NodeLIRBuilderTool gen) { assert lockDepth != -1; HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen.getLIRGeneratorTool(); - StackSlotValue slot = hsGen.getLockSlot(lockDepth); + VirtualStackSlot slot = hsGen.getLockSlot(lockDepth); Value result = gen.getLIRGeneratorTool().emitAddress(slot); gen.setResult(this, result); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,12 +22,12 @@ */ package com.oracle.graal.hotspot.nodes; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.type.StampFactory; import com.oracle.graal.graph.NodeClass; import com.oracle.graal.hotspot.HotSpotLIRGenerator; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.FixedWithNextNode; import com.oracle.graal.nodes.spi.LIRLowerable; @@ -53,7 +53,7 @@ public void generate(NodeLIRBuilderTool gen) { assert lockDepth != -1; HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen.getLIRGeneratorTool(); - StackSlotValue slot = hsGen.getLockSlot(lockDepth); + VirtualStackSlot slot = hsGen.getLockSlot(lockDepth); // The register allocator cannot handle stack -> register moves so we use an LEA here Value result = gen.getLIRGeneratorTool().emitAddress(slot); gen.setResult(this, result);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,11 +26,11 @@ import java.util.BitSet; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.type.StampFactory; import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGeneratorTool; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.FixedWithNextNode;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,11 +24,11 @@ import java.util.BitSet; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.type.StampFactory; import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.calc.FloatingNode; import com.oracle.graal.nodes.spi.LIRLowerable;
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Fri Oct 16 13:54:56 2015 +0200 @@ -34,11 +34,9 @@ import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import jdk.vm.ci.amd64.AMD64; import jdk.vm.ci.amd64.AMD64Kind; import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -57,6 +55,7 @@ import com.oracle.graal.lir.StandardOp.LoadConstantOp; import com.oracle.graal.lir.StandardOp.NullCheck; import com.oracle.graal.lir.StandardOp.ValueMoveOp; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.asm.CompilationResultBuilder; public class AMD64Move { @@ -163,11 +162,11 @@ @Def({STACK}) protected AllocatableValue result; @Use({STACK, HINT}) protected AllocatableValue input; - @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private StackSlotValue backupSlot; + @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private AllocatableValue backupSlot; private Register scratch; - public AMD64StackMove(AllocatableValue result, AllocatableValue input, Register scratch, StackSlotValue backupSlot) { + public AMD64StackMove(AllocatableValue result, AllocatableValue input, Register scratch, AllocatableValue backupSlot) { super(TYPE); this.result = result; this.input = input; @@ -189,7 +188,7 @@ return scratch; } - public StackSlotValue getBackupSlot() { + public AllocatableValue getBackupSlot() { return backupSlot; } @@ -217,11 +216,11 @@ @Def({STACK}) protected AllocatableValue[] results; @Use({STACK}) protected Value[] inputs; - @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private StackSlotValue backupSlot; + @Alive({OperandFlag.STACK, OperandFlag.UNINITIALIZED}) private AllocatableValue backupSlot; private Register scratch; - public AMD64MultiStackMove(AllocatableValue[] results, Value[] inputs, Register scratch, StackSlotValue backupSlot) { + public AMD64MultiStackMove(AllocatableValue[] results, Value[] inputs, Register scratch, AllocatableValue backupSlot) { super(TYPE); this.results = results; this.inputs = inputs; @@ -323,11 +322,10 @@ public static final LIRInstructionClass<StackLeaOp> TYPE = LIRInstructionClass.create(StackLeaOp.class); @Def({REG}) protected AllocatableValue result; - @Use({STACK, UNINITIALIZED}) protected StackSlotValue slot; + @Use({STACK, UNINITIALIZED}) protected AllocatableValue slot; - public StackLeaOp(AllocatableValue result, StackSlotValue slot) { + public StackLeaOp(AllocatableValue result, VirtualStackSlot slot) { super(TYPE); - assert isStackSlotValue(slot) : "Not a stack slot: " + slot; this.result = result; this.slot = slot; }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64RestoreRegistersOp.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64RestoreRegistersOp.java Fri Oct 16 13:54:56 2015 +0200 @@ -31,11 +31,11 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.ValueUtil; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.asm.amd64.AMD64MacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; +import com.oracle.graal.lir.LIRValueUtil; import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.asm.CompilationResultBuilder; @@ -49,20 +49,20 @@ /** * The slots from which the registers are restored. */ - @Use(STACK) protected final StackSlotValue[] slots; + @Use(STACK) protected final AllocatableValue[] slots; /** * The operation that saved the registers restored by this operation. */ private final AMD64SaveRegistersOp save; - public AMD64RestoreRegistersOp(StackSlotValue[] values, AMD64SaveRegistersOp save) { + public AMD64RestoreRegistersOp(AllocatableValue[] values, AMD64SaveRegistersOp save) { this(TYPE, values, save); } - protected AMD64RestoreRegistersOp(LIRInstructionClass<? extends AMD64RestoreRegistersOp> c, StackSlotValue[] values, AMD64SaveRegistersOp save) { + protected AMD64RestoreRegistersOp(LIRInstructionClass<? extends AMD64RestoreRegistersOp> c, AllocatableValue[] values, AMD64SaveRegistersOp save) { super(c); - assert Arrays.asList(values).stream().allMatch(ValueUtil::isVirtualStackSlot); + assert Arrays.asList(values).stream().allMatch(LIRValueUtil::isVirtualStackSlot); this.slots = values; this.save = save; }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64SaveRegistersOp.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64SaveRegistersOp.java Fri Oct 16 13:54:56 2015 +0200 @@ -33,11 +33,11 @@ import jdk.vm.ci.code.RegisterSaveLayout; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.ValueUtil; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.asm.amd64.AMD64MacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; +import com.oracle.graal.lir.LIRValueUtil; import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.lir.asm.CompilationResultBuilder; @@ -58,7 +58,7 @@ /** * The slots to which the registers are saved. */ - @Def(STACK) protected final StackSlotValue[] slots; + @Def(STACK) protected final AllocatableValue[] slots; /** * Specifies if {@link #remove(Set)} should have an effect. @@ -72,13 +72,13 @@ * @param savedRegisterLocations the slots to which the registers are saved * @param supportsRemove determines if registers can be {@linkplain #remove(Set) pruned} */ - public AMD64SaveRegistersOp(Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove) { + public AMD64SaveRegistersOp(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { this(TYPE, savedRegisters, savedRegisterLocations, supportsRemove); } - public AMD64SaveRegistersOp(LIRInstructionClass<? extends AMD64SaveRegistersOp> c, Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove) { + public AMD64SaveRegistersOp(LIRInstructionClass<? extends AMD64SaveRegistersOp> c, Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { super(c); - assert Arrays.asList(savedRegisterLocations).stream().allMatch(ValueUtil::isVirtualStackSlot); + assert Arrays.asList(savedRegisterLocations).stream().allMatch(LIRValueUtil::isVirtualStackSlot); this.savedRegisters = savedRegisters; this.slots = savedRegisterLocations; this.supportsRemove = supportsRemove; @@ -99,7 +99,7 @@ } } - public StackSlotValue[] getSlots() { + public AllocatableValue[] getSlots() { return slots; }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/phases/StackMoveOptimizationPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/phases/StackMoveOptimizationPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -29,7 +29,6 @@ import java.util.List; import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Value; @@ -83,7 +82,7 @@ private Register reg = null; private List<AllocatableValue> dst; private List<Value> src; - private StackSlotValue slot; + private AllocatableValue slot; private boolean removed = false; public void process(List<LIRInstruction> instructions) {
--- a/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/ConstantStackCastTest.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/ConstantStackCastTest.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,7 +24,6 @@ import static com.oracle.graal.lir.LIRValueUtil.asJavaConstant; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind; @@ -36,6 +35,7 @@ import org.junit.Test; import com.oracle.graal.lir.ConstantValue; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGeneratorTool; @@ -62,7 +62,7 @@ public void generate(LIRGeneratorTool gen, Value value) { FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder(); // create slots - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(dstKind); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(dstKind); // move stuff around Value srcValue; if (isJavaConstant(value)) {
--- a/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/StackMoveTest.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/StackMoveTest.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,7 +22,6 @@ */ package com.oracle.graal.lir.jtt; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.LIRKind; import jdk.vm.ci.meta.PlatformKind; @@ -32,6 +31,7 @@ import org.junit.Test; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGeneratorTool; @@ -52,8 +52,8 @@ LIRKind lirKind = getLIRKind(a); // create slots - StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(lirKind); - StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(lirKind); + VirtualStackSlot s1 = frameMapBuilder.allocateSpillSlot(lirKind); + VirtualStackSlot s2 = frameMapBuilder.allocateSpillSlot(lirKind); // start emit gen.emitMove(s1, a);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java Fri Oct 16 13:54:56 2015 +0200 @@ -27,12 +27,12 @@ import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK; import static com.oracle.graal.lir.LIRInstruction.OperandFlag.UNINITIALIZED; import static jdk.vm.ci.code.ValueUtil.asRegister; +import static jdk.vm.ci.sparc.SPARCKind.WORD; import static jdk.vm.ci.sparc.SPARCKind.XWORD; -import static jdk.vm.ci.sparc.SPARCKind.WORD; import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.ValueUtil; import jdk.vm.ci.common.JVMCIError; +import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.LIRKind; import jdk.vm.ci.meta.Value; import jdk.vm.ci.sparc.SPARCKind; @@ -52,7 +52,7 @@ @Def({REG, HINT}) protected Value result; @Use({REG}) protected Value input; @Temp({REG}) protected Value tempIndex; - @Use({STACK, UNINITIALIZED}) protected StackSlotValue tmpSlot; + @Use({STACK, UNINITIALIZED}) protected AllocatableValue tmpSlot; public SPARCByteSwapOp(LIRGeneratorTool tool, Value result, Value input) { super(TYPE, SIZE);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri Oct 16 13:54:56 2015 +0200 @@ -42,15 +42,14 @@ import static jdk.vm.ci.code.ValueUtil.isStackSlot; import static jdk.vm.ci.sparc.SPARC.g0; import static jdk.vm.ci.sparc.SPARCKind.DOUBLE; -import static jdk.vm.ci.sparc.SPARCKind.XWORD; import static jdk.vm.ci.sparc.SPARCKind.SINGLE; import static jdk.vm.ci.sparc.SPARCKind.WORD; +import static jdk.vm.ci.sparc.SPARCKind.XWORD; import java.util.Set; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -75,6 +74,7 @@ import com.oracle.graal.lir.StandardOp.LoadConstantOp; import com.oracle.graal.lir.StandardOp.NullCheck; import com.oracle.graal.lir.StandardOp.ValueMoveOp; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.asm.CompilationResultBuilder; public class SPARCMove { @@ -440,9 +440,9 @@ public static final SizeEstimate SIZE = SizeEstimate.create(2); @Def({REG}) protected AllocatableValue result; - @Use({STACK, UNINITIALIZED}) protected StackSlotValue slot; + @Use({STACK, UNINITIALIZED}) protected AllocatableValue slot; - public StackLoadAddressOp(AllocatableValue result, StackSlotValue address) { + public StackLoadAddressOp(AllocatableValue result, VirtualStackSlot address) { super(TYPE, SIZE); this.result = result; this.slot = address;
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCSaveRegistersOp.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCSaveRegistersOp.java Fri Oct 16 13:54:56 2015 +0200 @@ -34,13 +34,13 @@ import jdk.vm.ci.code.RegisterSaveLayout; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.ValueUtil; +import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.sparc.SPARC; import com.oracle.graal.asm.sparc.SPARCAddress; import com.oracle.graal.asm.sparc.SPARCMacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; +import com.oracle.graal.lir.LIRValueUtil; import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.lir.asm.CompilationResultBuilder; @@ -62,7 +62,7 @@ /** * The slots to which the registers are saved. */ - @Def(STACK) protected final StackSlotValue[] slots; + @Def(STACK) protected final AllocatableValue[] slots; /** * Specifies if {@link #remove(Set)} should have an effect. @@ -76,9 +76,9 @@ * @param savedRegisterLocations the slots to which the registers are saved * @param supportsRemove determines if registers can be {@linkplain #remove(Set) pruned} */ - public SPARCSaveRegistersOp(Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove) { + public SPARCSaveRegistersOp(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { super(TYPE, SIZE); - assert Arrays.asList(savedRegisterLocations).stream().allMatch(ValueUtil::isVirtualStackSlot); + assert Arrays.asList(savedRegisterLocations).stream().allMatch(LIRValueUtil::isVirtualStackSlot); this.savedRegisters = savedRegisters; this.slots = savedRegisterLocations; this.supportsRemove = supportsRemove; @@ -107,7 +107,7 @@ } } - public StackSlotValue[] getSlots() { + public AllocatableValue[] getSlots() { return slots; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRFrameState.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRFrameState.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,11 +22,11 @@ */ package com.oracle.graal.lir; -import static jdk.vm.ci.code.ValueUtil.asStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; +import static jdk.vm.ci.code.ValueUtil.asAllocatableValue; import static jdk.vm.ci.code.ValueUtil.isConstantJavaValue; import static jdk.vm.ci.code.ValueUtil.isIllegalJavaValue; import static jdk.vm.ci.code.ValueUtil.isVirtualObject; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.Arrays; import java.util.EnumSet; @@ -136,7 +136,7 @@ } Value slot = monitor.getSlot(); if (isVirtualStackSlot(slot)) { - monitor.setSlot(asStackSlotValue(proc.doValue(inst, slot, OperandMode.ALIVE, STATE_FLAGS))); + monitor.setSlot(asAllocatableValue(proc.doValue(inst, slot, OperandMode.ALIVE, STATE_FLAGS))); } } else { assert unprocessed(value);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRValueUtil.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRValueUtil.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.lir; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.meta.Constant; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.Value; @@ -59,4 +60,19 @@ public static JavaConstant asJavaConstant(Value value) { return asConstantValue(value).getJavaConstant(); } + + public static boolean isStackSlotValue(Value value) { + assert value != null; + return value instanceof StackSlot || value instanceof VirtualStackSlot; + } + + public static boolean isVirtualStackSlot(Value value) { + assert value != null; + return value instanceof VirtualStackSlot; + } + + public static VirtualStackSlot asVirtualStackSlot(Value value) { + assert value != null; + return (VirtualStackSlot) value; + } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,11 +24,11 @@ import static com.oracle.graal.lir.LIRValueUtil.asVariable; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.Arrays; import java.util.BitSet;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/VirtualStackSlot.java Fri Oct 16 13:54:56 2015 +0200 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.lir; + +import jdk.vm.ci.code.StackSlot; +import jdk.vm.ci.meta.AllocatableValue; +import jdk.vm.ci.meta.LIRKind; + +/** + * {@link VirtualStackSlot}s are stack slots that are not yet fixed to specific frame offset. They + * are replaced by real {@link StackSlot}s with a fixed position in the frame before code emission. + */ +public abstract class VirtualStackSlot extends AllocatableValue { + + private final int id; + + public VirtualStackSlot(int id, LIRKind lirKind) { + super(lirKind); + this.id = id; + } + + public int getId() { + return id; + } + + @Override + public String toString() { + return "vstack:" + id + getKindSuffix(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + id; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + VirtualStackSlot other = (VirtualStackSlot) obj; + if (id != other.id) { + return false; + } + return true; + } + +}
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/Interval.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/Interval.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,13 +23,13 @@ package com.oracle.graal.lir.alloc.lsra; import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.Collections; @@ -38,7 +38,6 @@ import jdk.vm.ci.code.BailoutException; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.JavaConstant; @@ -468,7 +467,7 @@ /** * The stack slot to which all splits of this interval are spilled if necessary. */ - private StackSlotValue spillSlot; + private AllocatableValue spillSlot; /** * The kind of this interval. @@ -631,11 +630,12 @@ /** * Gets the canonical spill slot for this interval. */ - public StackSlotValue spillSlot() { + public AllocatableValue spillSlot() { return splitParent().spillSlot; } - public void setSpillSlot(StackSlotValue slot) { + public void setSpillSlot(AllocatableValue slot) { + assert isStackSlotValue(slot); assert splitParent().spillSlot == null || (isVirtualStackSlot(splitParent().spillSlot) && isStackSlot(slot)) : "connot overwrite existing spill slot"; splitParent().spillSlot = slot; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,9 +40,7 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterAttributes; import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.LIRKind; @@ -64,6 +62,7 @@ import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.ValueConsumer; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.alloc.lsra.Interval.RegisterBinding; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGenerationResult; @@ -614,7 +613,7 @@ throw new BailoutException("LinearScan: interval is null"); } - static StackSlotValue canonicalSpillOpr(Interval interval) { + static AllocatableValue canonicalSpillOpr(Interval interval) { assert interval.spillSlot() != null : "canonical spill slot not set"; return interval.spillSlot(); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanAssignLocationsPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanAssignLocationsPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,10 +24,10 @@ import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isIllegal; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.Collections; import java.util.EnumSet;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanEliminateSpillMovePhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanEliminateSpillMovePhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,10 +23,10 @@ package com.oracle.graal.lir.alloc.lsra; import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; import static com.oracle.graal.lir.phases.LIRPhase.Options.LIROptimization; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanOptimizeSpillPositionPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanOptimizeSpillPositionPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,7 +24,7 @@ import static com.oracle.graal.compiler.common.cfg.AbstractControlFlowGraph.commonDominator; import static com.oracle.graal.compiler.common.cfg.AbstractControlFlowGraph.dominates; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import java.util.Iterator; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,11 +22,11 @@ */ package com.oracle.graal.lir.alloc.lsra; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; import static jdk.vm.ci.code.CodeUtil.isOdd; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.ArrayList; import java.util.Arrays;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/MoveResolver.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/MoveResolver.java Fri Oct 16 13:54:56 2015 +0200 @@ -30,7 +30,6 @@ import java.util.HashSet; import java.util.List; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -366,7 +365,7 @@ // do not allocate a new spill slot for temporary interval, but // use spill slot assigned to fromInterval. Otherwise moves from // one stack slot to another can happen (not allowed by LIRAssembler - StackSlotValue spillSlot = fromInterval.spillSlot(); + AllocatableValue spillSlot = fromInterval.spillSlot(); if (spillSlot == null) { spillSlot = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval.kind()); fromInterval.setSpillSlot(spillSlot); @@ -374,7 +373,7 @@ spillInterval(spillCandidate, fromInterval, spillSlot); } - protected void spillInterval(int spillCandidate, Interval fromInterval, StackSlotValue spillSlot) { + protected void spillInterval(int spillCandidate, Interval fromInterval, AllocatableValue spillSlot) { assert mappingFrom.get(spillCandidate).equals(fromInterval); Interval spillInterval = getAllocator().createDerivedInterval(fromInterval); spillInterval.setKind(fromInterval.kind());
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/OptimizingLinearScanWalker.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/OptimizingLinearScanWalker.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,9 +22,9 @@ */ package com.oracle.graal.lir.alloc.lsra; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import jdk.vm.ci.code.Register; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.options.Option;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinarScanResolveDataFlowPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinarScanResolveDataFlowPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,8 +24,8 @@ import static com.oracle.graal.lir.LIRValueUtil.asConstant; import static com.oracle.graal.lir.LIRValueUtil.isConstantValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,9 +23,9 @@ package com.oracle.graal.lir.alloc.lsra.ssa; import static com.oracle.graal.compiler.common.BackendOptions.LinearScanVariant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import com.oracle.graal.compiler.common.BackendOptions.LSRAVariant; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSAMoveResolver.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSAMoveResolver.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,23 +22,21 @@ */ package com.oracle.graal.lir.alloc.lsra.ssa; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.asStackSlot; -import static jdk.vm.ci.code.ValueUtil.asStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.Arrays; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Value; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.alloc.lsra.Interval; import com.oracle.graal.lir.alloc.lsra.LinearScan; import com.oracle.graal.lir.alloc.lsra.MoveResolver; @@ -93,14 +91,14 @@ return false; } - private int getStackArrayIndex(StackSlotValue stackSlotValue) { + private int getStackArrayIndex(Value stackSlotValue) { if (isStackSlot(stackSlotValue)) { return getStackArrayIndex(asStackSlot(stackSlotValue)); } if (isVirtualStackSlot(stackSlotValue)) { return getStackArrayIndex(asVirtualStackSlot(stackSlotValue)); } - throw JVMCIError.shouldNotReachHere("Unhandled StackSlotValue: " + stackSlotValue); + throw JVMCIError.shouldNotReachHere("value is not a stack slot: " + stackSlotValue); } private int getStackArrayIndex(StackSlot stackSlot) { @@ -125,7 +123,7 @@ protected void setValueBlocked(Value location, int direction) { assert direction == 1 || direction == -1 : "out of bounds"; if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments can be ignored return; @@ -142,7 +140,7 @@ @Override protected int valueBlocked(Value location) { if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments are always blocked (aka they can not be written) return 1; @@ -175,7 +173,7 @@ Interval fromInterval = getMappingFrom(stackSpillCandidate); assert isStackSlotValue(fromInterval.location()); // allocate new stack slot - StackSlotValue spillSlot = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval.kind()); + VirtualStackSlot spillSlot = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval.kind()); spillInterval(stackSpillCandidate, fromInterval, spillSlot); } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssi/SSILinearScanResolveDataFlowPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssi/SSILinearScanResolveDataFlowPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -25,9 +25,9 @@ import static com.oracle.graal.lir.LIRValueUtil.asConstant; import static com.oracle.graal.lir.LIRValueUtil.isConstantValue; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.HashMap;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/ShadowedRegisterValue.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/ShadowedRegisterValue.java Fri Oct 16 13:54:56 2015 +0200 @@ -28,7 +28,7 @@ import java.util.EnumSet; import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.code.StackSlotValue; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.lir.CompositeValue; import com.oracle.graal.lir.InstructionValueConsumer; @@ -45,9 +45,9 @@ private static final EnumSet<OperandFlag> stackslotFlags = EnumSet.of(STACK); @Component({REG}) protected RegisterValue register; - @Component({STACK}) protected StackSlotValue stackslot; + @Component({STACK}) protected AllocatableValue stackslot; - public ShadowedRegisterValue(RegisterValue register, StackSlotValue stackslot) { + public ShadowedRegisterValue(RegisterValue register, AllocatableValue stackslot) { super(register.getLIRKind()); assert (register.getLIRKind().equals(stackslot.getLIRKind())); this.register = register; @@ -58,14 +58,14 @@ return register; } - public StackSlotValue getStackSlot() { + public AllocatableValue getStackSlot() { return stackslot; } @Override public CompositeValue forEachComponent(LIRInstruction inst, OperandMode mode, InstructionValueProcedure proc) { RegisterValue newRegister = (RegisterValue) proc.doValue(inst, register, mode, registerFlags); - StackSlotValue newStackSlot = (StackSlotValue) proc.doValue(inst, stackslot, mode, stackslotFlags); + AllocatableValue newStackSlot = (AllocatableValue) proc.doValue(inst, stackslot, mode, stackslotFlags); if (register.equals(newRegister) || stackslot.equals(newStackSlot)) { return this; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolver.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolver.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,17 +22,17 @@ */ package com.oracle.graal.lir.alloc.trace; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static com.oracle.graal.lir.alloc.trace.TraceUtil.asShadowedRegisterValue; import static com.oracle.graal.lir.alloc.trace.TraceUtil.isShadowedRegisterValue; +import static jdk.vm.ci.code.ValueUtil.asAllocatableValue; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.asStackSlot; -import static jdk.vm.ci.code.ValueUtil.asStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.Arrays; @@ -42,8 +42,6 @@ import jdk.vm.ci.code.Architecture; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.LIRKind; @@ -53,6 +51,7 @@ import com.oracle.graal.debug.Indent; import com.oracle.graal.lir.LIRInsertionBuffer; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMap; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.framemap.FrameMapBuilderTool; @@ -78,7 +77,7 @@ private void setValueBlocked(Value location, int direction) { assert direction == 1 || direction == -1 : "out of bounds"; if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments can be ignored return; @@ -99,7 +98,7 @@ private int valueBlocked(Value location) { if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments are always blocked (aka they can not be written) return 1; @@ -182,7 +181,7 @@ for (i = 0; i < mappingTo.size(); i++) { Value to = mappingTo.get(i); - assert !isStackSlotValue(to) || getStackArrayIndex(asStackSlotValue(to)) != STACK_SLOT_IN_CALLER_FRAME_IDX : "Cannot move to in argument: " + to; + assert !isStackSlotValue(to) || getStackArrayIndex(to) != STACK_SLOT_IN_CALLER_FRAME_IDX : "Cannot move to in argument: " + to; } HashSet<Value> usedRegs = new HashSet<>(); @@ -302,7 +301,7 @@ */ private LIRInstruction createMove(Value fromOpr, AllocatableValue toOpr) { if (isStackSlotValue(toOpr) && isStackSlotValue(fromOpr)) { - return getSpillMoveFactory().createStackMove(toOpr, asStackSlotValue(fromOpr)); + return getSpillMoveFactory().createStackMove(toOpr, asAllocatableValue(fromOpr)); } return getSpillMoveFactory().createMove(toOpr, fromOpr); } @@ -367,7 +366,7 @@ // create a new spill interval and assign a stack slot to it Value from = mappingFrom.get(spillCandidate); try (Indent indent = Debug.logAndIndent("BreakCycle: %s", from)) { - StackSlotValue spillSlot = frameMapBuilder.allocateSpillSlot(from.getLIRKind()); + VirtualStackSlot spillSlot = frameMapBuilder.allocateSpillSlot(from.getLIRKind()); if (Debug.isLogEnabled()) { Debug.log("created new slot for spilling: %s", spillSlot); } @@ -413,14 +412,14 @@ appendInsertionBuffer(); } - private int getStackArrayIndex(StackSlotValue stackSlotValue) { + private int getStackArrayIndex(Value stackSlotValue) { if (isStackSlot(stackSlotValue)) { return getStackArrayIndex(asStackSlot(stackSlotValue)); } if (isVirtualStackSlot(stackSlotValue)) { return getStackArrayIndex(asVirtualStackSlot(stackSlotValue)); } - throw JVMCIError.shouldNotReachHere("Unhandled StackSlotValue: " + stackSlotValue); + throw JVMCIError.shouldNotReachHere("value is not a stack slot: " + stackSlotValue); } private int getStackArrayIndex(StackSlot stackSlot) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceInterval.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceInterval.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,13 +23,13 @@ package com.oracle.graal.lir.alloc.trace; import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.Collections; @@ -38,7 +38,6 @@ import jdk.vm.ci.code.BailoutException; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.JavaConstant; @@ -315,7 +314,7 @@ /** * The stack slot to which all splits of this interval are spilled if necessary. */ - private StackSlotValue spillSlot; + private AllocatableValue spillSlot; /** * The kind of this interval. @@ -483,11 +482,12 @@ /** * Gets the canonical spill slot for this interval. */ - public StackSlotValue spillSlot() { + public AllocatableValue spillSlot() { return splitParent().spillSlot; } - public void setSpillSlot(StackSlotValue slot) { + public void setSpillSlot(AllocatableValue slot) { + assert isStackSlotValue(slot); assert splitParent().spillSlot == null || (isVirtualStackSlot(splitParent().spillSlot) && isStackSlot(slot)) : "connot overwrite existing spill slot"; splitParent().spillSlot = slot; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScan.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScan.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,9 +40,7 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterAttributes; import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.LIRKind; @@ -61,6 +59,7 @@ import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.ValueConsumer; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.alloc.trace.TraceLinearScanAllocationPhase.TraceLinearScanAllocationContext; import com.oracle.graal.lir.framemap.FrameMapBuilder; import com.oracle.graal.lir.gen.LIRGenerationResult; @@ -691,7 +690,7 @@ throw new BailoutException("LinearScan: interval is null"); } - static StackSlotValue canonicalSpillOpr(TraceInterval interval) { + static AllocatableValue canonicalSpillOpr(TraceInterval interval) { assert interval.spillSlot() != null : "canonical spill slot not set"; return interval.spillSlot(); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,19 +24,19 @@ import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; import static com.oracle.graal.lir.LIRValueUtil.isConstantValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static com.oracle.graal.lir.alloc.trace.TraceRegisterAllocationPhase.Options.TraceRAshareSpillInformation; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.Collections; import java.util.EnumSet; import java.util.List; import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.code.StackSlotValue; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Value; @@ -63,7 +63,7 @@ /** * Specialization of {@link com.oracle.graal.lir.alloc.lsra.LinearScanAssignLocationsPhase} that * inserts {@link ShadowedRegisterValue}s to describe {@link RegisterValue}s that are also available - * on the {@link StackSlotValue stack}. + * on the {@link StackSlot stack}. */ final class TraceLinearScanAssignLocationsPhase extends TraceLinearScanAllocationPhase {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanEliminateSpillMovePhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanEliminateSpillMovePhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,8 +23,8 @@ package com.oracle.graal.lir.alloc.trace; import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -25,9 +25,9 @@ import static com.oracle.graal.compiler.common.GraalOptions.DetailedAsserts; import static com.oracle.graal.lir.LIRValueUtil.asConstant; import static com.oracle.graal.lir.LIRValueUtil.isConstantValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.BitSet; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanWalker.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanWalker.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,11 +22,11 @@ */ package com.oracle.graal.lir.alloc.trace; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static com.oracle.graal.lir.LIRValueUtil.isVariable; import static jdk.vm.ci.code.CodeUtil.isOdd; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.ArrayList; import java.util.Arrays;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLocalMoveResolver.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLocalMoveResolver.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,15 +22,14 @@ */ package com.oracle.graal.lir.alloc.trace; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.asStackSlot; -import static jdk.vm.ci.code.ValueUtil.asStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isIllegal; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.Arrays; @@ -38,8 +37,6 @@ import java.util.List; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.StackSlotValue; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Constant; @@ -51,6 +48,7 @@ import com.oracle.graal.debug.Indent; import com.oracle.graal.lir.LIRInsertionBuffer; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMap; import com.oracle.graal.lir.framemap.FrameMapBuilderTool; @@ -72,14 +70,14 @@ private int[] stackBlocked; private final int firstVirtualStackIndex; - private int getStackArrayIndex(StackSlotValue stackSlotValue) { + private int getStackArrayIndex(Value stackSlotValue) { if (isStackSlot(stackSlotValue)) { return getStackArrayIndex(asStackSlot(stackSlotValue)); } if (isVirtualStackSlot(stackSlotValue)) { return getStackArrayIndex(asVirtualStackSlot(stackSlotValue)); } - throw JVMCIError.shouldNotReachHere("Unhandled StackSlotValue: " + stackSlotValue); + throw JVMCIError.shouldNotReachHere("value is not a stack slot: " + stackSlotValue); } private int getStackArrayIndex(StackSlot stackSlot) { @@ -103,7 +101,7 @@ protected void setValueBlocked(Value location, int direction) { assert direction == 1 || direction == -1 : "out of bounds"; if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments can be ignored return; @@ -132,7 +130,7 @@ protected int valueBlocked(Value location) { if (isStackSlotValue(location)) { - int stackIdx = getStackArrayIndex(asStackSlotValue(location)); + int stackIdx = getStackArrayIndex(location); if (stackIdx == STACK_SLOT_IN_CALLER_FRAME_IDX) { // incoming stack arguments are always blocked (aka they can not be written) return 1; @@ -423,7 +421,7 @@ // do not allocate a new spill slot for temporary interval, but // use spill slot assigned to fromInterval. Otherwise moves from // one stack slot to another can happen (not allowed by LIRAssembler - StackSlotValue spillSlot1 = fromInterval1.spillSlot(); + AllocatableValue spillSlot1 = fromInterval1.spillSlot(); if (spillSlot1 == null) { spillSlot1 = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval1.kind()); fromInterval1.setSpillSlot(spillSlot1); @@ -437,11 +435,11 @@ TraceInterval fromInterval = getMappingFrom(stackSpillCandidate); assert isStackSlotValue(fromInterval.location()); // allocate new stack slot - StackSlotValue spillSlot = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval.kind()); + VirtualStackSlot spillSlot = getAllocator().getFrameMapBuilder().allocateSpillSlot(fromInterval.kind()); spillInterval(stackSpillCandidate, fromInterval, spillSlot); } - protected void spillInterval(int spillCandidate, TraceInterval fromInterval, StackSlotValue spillSlot) { + protected void spillInterval(int spillCandidate, TraceInterval fromInterval, AllocatableValue spillSlot) { assert mappingFrom.get(spillCandidate).equals(fromInterval); TraceInterval spillInterval = getAllocator().createDerivedInterval(fromInterval); spillInterval.setKind(fromInterval.kind());
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.lir.alloc.trace; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import java.util.List;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/RegStackValueSet.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/RegStackValueSet.java Fri Oct 16 13:54:56 2015 +0200 @@ -75,7 +75,7 @@ return; } if (isRegister(v)) { - int index = asRegister(v).getReferenceMapIndex(); + int index = asRegister(v).number; registers.put(index, v); } else if (isStackSlot(v)) { int index = frameMap.offsetForStackSlot(asStackSlot(v)); @@ -109,7 +109,7 @@ return; } if (isRegister(v)) { - int index = asRegister(v).getReferenceMapIndex(); + int index = asRegister(v).number; registers.put(index, null); } else if (isStackSlot(v)) { int index = frameMap.offsetForStackSlot(asStackSlot(v));
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilder.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilder.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,9 +28,9 @@ import jdk.vm.ci.code.CallingConvention; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.RegisterConfig; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.LIRKind; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGenerationResult; import com.oracle.graal.lir.stackslotalloc.StackSlotAllocator;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.lir.framemap; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.BitSet; @@ -32,7 +32,6 @@ import jdk.vm.ci.code.CallingConvention; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.RegisterConfig; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.LIRKind; @@ -44,6 +43,7 @@ import com.oracle.graal.lir.InstructionValueConsumer; import com.oracle.graal.lir.LIR; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.gen.LIRGenerationResult;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderTool.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderTool.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ import java.util.List; -import jdk.vm.ci.code.VirtualStackSlot; +import com.oracle.graal.lir.VirtualStackSlot; /** * A {@link FrameMapBuilder} that allows access to the underlying {@link FrameMap}.
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java Fri Oct 16 13:54:56 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,8 @@ */ package com.oracle.graal.lir.framemap; -import jdk.vm.ci.code.VirtualStackSlot; +import com.oracle.graal.lir.VirtualStackSlot; + import jdk.vm.ci.meta.LIRKind; /**
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,8 +24,9 @@ import java.util.BitSet; +import com.oracle.graal.lir.VirtualStackSlot; + import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.LIRKind; /**
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Fri Oct 16 13:54:56 2015 +0200 @@ -26,7 +26,6 @@ import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterAttributes; -import jdk.vm.ci.code.StackSlotValue; import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.AllocatableValue; @@ -49,6 +48,7 @@ import com.oracle.graal.lir.LabelRef; import com.oracle.graal.lir.SwitchStrategy; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; public interface LIRGeneratorTool extends BenchmarkCounterFactory { @@ -169,7 +169,7 @@ */ void emitData(AllocatableValue dst, byte[] data); - Variable emitAddress(StackSlotValue slot); + Variable emitAddress(VirtualStackSlot slot); void emitMembar(int barriers);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LIRSuites.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LIRSuites.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,10 +23,10 @@ package com.oracle.graal.lir.phases; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.VirtualStackSlot; import com.oracle.graal.lir.LIR; import com.oracle.graal.lir.Variable; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.gen.LIRGenerationResult; import com.oracle.graal.lir.gen.LIRGeneratorTool; import com.oracle.graal.lir.phases.AllocationPhase.AllocationContext;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAVerifier.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAVerifier.java Fri Oct 16 13:54:56 2015 +0200 @@ -24,8 +24,8 @@ package com.oracle.graal.lir.ssa; import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; import java.util.BitSet; import java.util.EnumSet;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,7 +23,7 @@ package com.oracle.graal.lir.ssi; import static com.oracle.graal.lir.LIRValueUtil.isVariable; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import java.util.ArrayDeque; import java.util.ArrayList;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIVerifier.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIVerifier.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,9 +23,9 @@ package com.oracle.graal.lir.ssi; import static com.oracle.graal.lir.LIRValueUtil.isConstantValue; +import static com.oracle.graal.lir.LIRValueUtil.isStackSlotValue; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.isRegister; -import static jdk.vm.ci.code.ValueUtil.isStackSlotValue; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.EnumSet; import java.util.HashMap;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/FixPointIntervalBuilder.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/FixPointIntervalBuilder.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,8 +22,8 @@ */ package com.oracle.graal.lir.stackslotalloc; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import java.util.ArrayDeque; import java.util.BitSet; @@ -33,7 +33,6 @@ import java.util.List; import java.util.Set; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; @@ -44,6 +43,7 @@ import com.oracle.graal.lir.InstructionValueConsumer; import com.oracle.graal.lir.LIR; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/LSStackSlotAllocator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/LSStackSlotAllocator.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,9 +22,9 @@ */ package com.oracle.graal.lir.stackslotalloc; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import static com.oracle.graal.lir.phases.LIRPhase.Options.LIROptimization; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; import java.util.ArrayDeque; import java.util.Arrays; @@ -38,7 +38,6 @@ import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.LIRKind; import jdk.vm.ci.meta.Value; import jdk.vm.ci.options.NestedBooleanOptionValue; @@ -54,6 +53,7 @@ import com.oracle.graal.debug.Indent; import com.oracle.graal.lir.LIR; import com.oracle.graal.lir.LIRInstruction; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.ValueProcedure;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/SimpleStackSlotAllocator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/SimpleStackSlotAllocator.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,14 +22,13 @@ */ package com.oracle.graal.lir.stackslotalloc; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import java.util.List; import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; @@ -39,6 +38,7 @@ import com.oracle.graal.debug.Indent; import com.oracle.graal.lir.LIRInstruction; import com.oracle.graal.lir.ValueProcedure; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilderTool; import com.oracle.graal.lir.framemap.SimpleVirtualStackSlot; import com.oracle.graal.lir.framemap.VirtualStackSlotRange;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackInterval.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackInterval.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,8 +22,9 @@ */ package com.oracle.graal.lir.stackslotalloc; +import com.oracle.graal.lir.VirtualStackSlot; + import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.LIRKind; public final class StackInterval {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackIntervalDumper.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackIntervalDumper.java Fri Oct 16 13:54:56 2015 +0200 @@ -22,9 +22,9 @@ */ package com.oracle.graal.lir.stackslotalloc; -import jdk.vm.ci.code.VirtualStackSlot; import jdk.vm.ci.meta.Value; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.debug.IntervalDumper; class StackIntervalDumper implements IntervalDumper {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackSlotAllocator.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackSlotAllocator.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,10 +23,10 @@ package com.oracle.graal.lir.stackslotalloc; import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.code.VirtualStackSlot; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.DebugMetric; +import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.framemap.FrameMapBuilderTool; import com.oracle.graal.lir.gen.LIRGenerationResult;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/util/VariableVirtualStackValueMap.java Thu Oct 15 15:33:37 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/util/VariableVirtualStackValueMap.java Fri Oct 16 13:54:56 2015 +0200 @@ -23,9 +23,9 @@ package com.oracle.graal.lir.util; import static com.oracle.graal.lir.LIRValueUtil.asVariable; +import static com.oracle.graal.lir.LIRValueUtil.asVirtualStackSlot; import static com.oracle.graal.lir.LIRValueUtil.isVariable; -import static jdk.vm.ci.code.ValueUtil.asVirtualStackSlot; -import static jdk.vm.ci.code.ValueUtil.isVirtualStackSlot; +import static com.oracle.graal.lir.LIRValueUtil.isVirtualStackSlot; import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.Value;
--- a/mx.graal/suite.py Thu Oct 15 15:33:37 2015 +0200 +++ b/mx.graal/suite.py Fri Oct 16 13:54:56 2015 +0200 @@ -6,7 +6,7 @@ "suites": [ { "name" : "jvmci", - "version" : "d43f6d932ad56c862decc160f19be413e2e03304", + "version" : "f48b657b550d349ef177454b0ddfc5c6946c7b78", "urls" : [ {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},