# HG changeset patch # User Thomas Wuerthinger # Date 1361249718 28800 # Node ID 4e12784439415ec6ef67494afd83855b099a736b # Parent 04c8e05b8991835bb9994c9fb6868cb10c4bff77 Remove Kind.Jsr. diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlot.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlot.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlot.java Mon Feb 18 20:55:18 2013 -0800 @@ -165,7 +165,7 @@ private static StackSlot[][] makeCache(int cachePerKindSize, int sign, boolean addFrameSize) { StackSlot[][] cache = new StackSlot[Kind.values().length][]; - for (Kind kind : new Kind[]{Illegal, Int, Long, Float, Double, Object, Jsr}) { + for (Kind kind : new Kind[]{Illegal, Int, Long, Float, Double, Object}) { StackSlot[] slots = new StackSlot[cachePerKindSize]; for (int i = 0; i < cachePerKindSize; i++) { slots[i] = new StackSlot(kind, sign * i * CACHE_GRANULARITY, addFrameSize); diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java Mon Feb 18 20:55:18 2013 -0800 @@ -139,8 +139,6 @@ return 8; case Object: return wordSize; - case Jsr: - return 4; default: return 0; } diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ValueUtil.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ValueUtil.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ValueUtil.java Mon Feb 18 20:55:18 2013 -0800 @@ -89,7 +89,7 @@ } public static Register asIntReg(Value value) { - assert value.getKind() == Kind.Int || value.getKind() == Kind.Jsr; + assert value.getKind() == Kind.Int; return asRegister(value); } diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java Mon Feb 18 20:55:18 2013 -0800 @@ -134,8 +134,6 @@ return (short) primitive; case Char: return (char) primitive; - case Jsr: - return (int) primitive; case Int: return (int) primitive; case Long: @@ -163,12 +161,12 @@ /** * Returns the primitive int value this constant represents. The constant must have a - * {@link Kind#getStackKind()} of {@link Kind#Int}, or kind {@link Kind#Jsr}. + * {@link Kind#getStackKind()} of {@link Kind#Int}. * * @return the constant value */ public int asInt() { - assert getKind().getStackKind() == Kind.Int || getKind() == Kind.Jsr; + assert getKind().getStackKind() == Kind.Int; return (int) primitive; } @@ -185,13 +183,12 @@ /** * Returns the primitive long value this constant represents. The constant must have kind - * {@link Kind#Long}, a {@link Kind#getStackKind()} of {@link Kind#Int}, or kind - * {@link Kind#Jsr}. + * {@link Kind#Long}, a {@link Kind#getStackKind()} of {@link Kind#Int}. * * @return the constant value */ public long asLong() { - assert getKind() == Kind.Long || getKind().getStackKind() == Kind.Int || getKind() == Kind.Jsr; + assert getKind() == Kind.Long || getKind().getStackKind() == Kind.Int; return primitive; } @@ -365,16 +362,6 @@ } /** - * Creates a boxed address (jsr/ret address) constant. - * - * @param i the address value to box - * @return a boxed copy of {@code value} - */ - public static Constant forJsr(int i) { - return new Constant(Kind.Jsr, null, i); - } - - /** * Creates a boxed object constant. * * @param o the object value to box diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java Mon Feb 18 20:55:18 2013 -0800 @@ -60,9 +60,6 @@ /** The void float kind. */ Void('v', "void", false, java.lang.Void.TYPE, java.lang.Void.class), - /** Denote a bytecode address in a {@code JSR} bytecode. */ - Jsr('r', "jsr", false, null, null), - /** The non-type. */ Illegal('-', "illegal", false, null, null); @@ -318,7 +315,6 @@ return java.lang.Character.MIN_VALUE; case Short: return java.lang.Short.MIN_VALUE; - case Jsr: case Int: return java.lang.Integer.MIN_VALUE; case Long: @@ -343,7 +339,6 @@ return java.lang.Character.MAX_VALUE; case Short: return java.lang.Short.MAX_VALUE; - case Jsr: case Int: return java.lang.Integer.MAX_VALUE; case Long: @@ -367,7 +362,6 @@ case Char: case Short: return 16; - case Jsr: case Int: return 32; case Long: diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Mon Feb 18 20:55:18 2013 -0800 @@ -314,7 +314,6 @@ mirrored = false; } switch (left.getKind().getStackKind()) { - case Jsr: case Int: append(new CompareOp(ICMP, left, right)); break; diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Mon Feb 18 20:55:18 2013 -0800 @@ -151,7 +151,6 @@ public Variable newVariable(Kind kind) { Kind stackKind = kind.getStackKind(); switch (stackKind) { - case Jsr: case Int: case Long: case Object: diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Mon Feb 18 20:55:18 2013 -0800 @@ -211,8 +211,6 @@ break; case Int: return impl.typeInt; - case Jsr: - break; case Long: return impl.typeLong; case Object: diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java Mon Feb 18 20:55:18 2013 -0800 @@ -479,15 +479,6 @@ } /** - * Pushes a value onto the stack and checks that it is a JSR return address. - * - * @param x the instruction to push onto the stack - */ - public void jpush(ValueNode x) { - xpush(assertJsr(x)); - } - - /** * Pushes a value onto the stack and checks that it is a long. * * @param x the instruction to push onto the stack @@ -566,15 +557,6 @@ } /** - * Pops a value off of the stack and checks that it is a JSR return address. - * - * @return x the instruction popped off the stack - */ - public ValueNode jpop() { - return assertJsr(xpop()); - } - - /** * Pops a value off of the stack and checks that it is a long. * * @return x the instruction popped off the stack diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Feb 18 20:55:18 2013 -0800 @@ -1103,7 +1103,7 @@ if (successor.jsrScope.nextReturnAddress() != stream().nextBCI()) { throw new JsrNotSupportedBailout("unstructured control flow (internal limitation)"); } - frameState.push(Kind.Jsr, ConstantNode.forJsr(stream().nextBCI(), currentGraph)); + frameState.push(Kind.Int, ConstantNode.forInt(stream().nextBCI(), currentGraph)); appendGoto(createTarget(successor, frameState)); } @@ -1112,7 +1112,7 @@ ValueNode local = frameState.loadLocal(localIndex); JsrScope scope = currentBlock.jsrScope; int retAddress = scope.nextReturnAddress(); - append(currentGraph.add(new FixedGuardNode(currentGraph.unique(new IntegerEqualsNode(local, ConstantNode.forJsr(retAddress, currentGraph))), DeoptimizationReason.JavaSubroutineMismatch, + append(currentGraph.add(new FixedGuardNode(currentGraph.unique(new IntegerEqualsNode(local, ConstantNode.forInt(retAddress, currentGraph))), DeoptimizationReason.JavaSubroutineMismatch, DeoptimizationAction.InvalidateReprofile))); if (!successor.jsrScope.equals(scope.pop())) { throw new JsrNotSupportedBailout("unstructured control flow (ret leaves more than one scope)"); diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Compare.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Compare.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Compare.java Mon Feb 18 20:55:18 2013 -0800 @@ -54,7 +54,6 @@ protected void verify() { super.verify(); assert (name().startsWith("I") && x.getKind() == Kind.Int && y.getKind().getStackKind() == Kind.Int) - || (name().startsWith("I") && x.getKind() == Kind.Jsr && y.getKind() == Kind.Jsr) || (name().startsWith("L") && x.getKind() == Kind.Long && y.getKind() == Kind.Long) || (name().startsWith("A") && x.getKind() == Kind.Object && y.getKind() == Kind.Object) || (name().startsWith("F") && x.getKind() == Kind.Float && y.getKind() == Kind.Float) diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Mon Feb 18 20:55:18 2013 -0800 @@ -256,7 +256,6 @@ return; } switch (input.getKind()) { - case Jsr: case Int: masm.movl(asRegister(result), asRegister(input)); break; case Long: masm.movq(asRegister(result), asRegister(input)); break; case Float: masm.movflt(asFloatReg(result), asFloatReg(input)); break; @@ -268,7 +267,6 @@ private static void reg2stack(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Value input) { switch (input.getKind()) { - case Jsr: case Int: masm.movl(tasm.asAddress(result), asRegister(input)); break; case Long: masm.movq(tasm.asAddress(result), asRegister(input)); break; case Float: masm.movflt(tasm.asAddress(result), asFloatReg(input)); break; @@ -280,7 +278,6 @@ private static void stack2reg(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Value input) { switch (input.getKind()) { - case Jsr: case Int: masm.movl(asRegister(result), tasm.asAddress(input)); break; case Long: masm.movq(asRegister(result), tasm.asAddress(input)); break; case Float: masm.movflt(asFloatReg(result), tasm.asAddress(input)); break; @@ -295,7 +292,6 @@ // in all cases. For example, an object constant can be loaded to a long register when unsafe casts occurred (e.g., // for a write barrier where arithmetic operations are then performed on the pointer). switch (input.getKind().getStackKind()) { - case Jsr: case Int: if (tasm.runtime.needsDataPatch(input)) { tasm.recordDataReferenceInCode(input, 0, true); @@ -354,7 +350,6 @@ private static void const2stack(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Constant input) { assert !tasm.runtime.needsDataPatch(input); switch (input.getKind().getStackKind()) { - case Jsr: case Int: masm.movl(tasm.asAddress(result), input.asInt()); break; case Long: masm.movlong(tasm.asAddress(result), input.asLong()); break; case Float: masm.movl(tasm.asAddress(result), floatToRawIntBits(input.asFloat())); break; @@ -415,7 +410,6 @@ case Byte: masm.movb(storeAddr, c.asInt() & 0xFF); break; case Char: case Short: masm.movw(storeAddr, c.asInt() & 0xFFFF); break; - case Jsr: case Int: masm.movl(storeAddr, c.asInt()); break; case Long: if (NumUtil.isInt(c.asLong())) { diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java --- a/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java Mon Feb 18 20:55:18 2013 -0800 @@ -226,7 +226,6 @@ private static void const2reg(TargetMethodAssembler tasm, PTXAssembler masm, Value result, Constant input) { switch (input.getKind().getStackKind()) { - case Jsr: case Int: if (tasm.runtime.needsDataPatch(input)) { tasm.recordDataReferenceInCode(input, 0, true); diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java Mon Feb 18 20:55:18 2013 -0800 @@ -181,7 +181,7 @@ * including long constants that fit into the 32-bit range. */ public int asIntConst(Value value) { - assert (value.getKind().getStackKind() == Kind.Int || value.getKind() == Kind.Jsr || value.getKind() == Kind.Long) && isConstant(value); + assert (value.getKind().getStackKind() == Kind.Int || value.getKind() == Kind.Long) && isConstant(value); Constant constant = (Constant) value; assert !runtime.needsDataPatch(constant) : constant + " should be in a DataPatch"; long c = constant.asLong(); diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Feb 18 20:55:18 2013 -0800 @@ -165,17 +165,6 @@ } /** - * Returns a node for an address (jsr/ret address) constant. - * - * @param i the address value for which to create the instruction - * @param graph - * @return a node representing the address - */ - public static ConstantNode forJsr(int i, Graph graph) { - return graph.unique(new ConstantNode(Constant.forJsr(i))); - } - - /** * Returns a node for an object constant. * * @param o the object value for which to create the instruction diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java Mon Feb 18 20:55:18 2013 -0800 @@ -31,7 +31,7 @@ public class ValueNodeUtil { public static ValueNode assertKind(Kind kind, ValueNode x) { - assert x != null && ((x.kind() == kind) || (x.kind() == Kind.Jsr && kind == Kind.Object)) : "kind=" + kind + ", value=" + x + ((x == null) ? "" : ", value.kind=" + x.kind()); + assert x != null && x.kind() == kind : "kind=" + kind + ", value=" + x + ((x == null) ? "" : ", value.kind=" + x.kind()); return x; } @@ -48,11 +48,6 @@ return x; } - public static ValueNode assertJsr(ValueNode x) { - assert x != null && (x.kind() == Kind.Jsr); - return x; - } - public static ValueNode assertInt(ValueNode x) { assert x != null && (x.kind() == Kind.Int); return x; diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java Mon Feb 18 20:55:18 2013 -0800 @@ -342,7 +342,6 @@ case Byte: case Char: case Short: - case Jsr: case Int: { int x = lt.asInt(); int y = rt.asInt(); diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/IntegerStamp.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/IntegerStamp.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/IntegerStamp.java Mon Feb 18 20:55:18 2013 -0800 @@ -199,7 +199,6 @@ return 0xffffL; case Short: return 0xffffL; - case Jsr: case Int: return 0xffffffffL; case Long: diff -r 04c8e05b8991 -r 4e1278443941 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java Mon Feb 18 20:21:37 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java Mon Feb 18 20:55:18 2013 -0800 @@ -57,8 +57,6 @@ setCache(Kind.Float, new FloatStamp(Kind.Float)); setCache(Kind.Double, new FloatStamp(Kind.Double)); - setCache(Kind.Jsr, new IntegerStamp(Kind.Jsr)); - setCache(Kind.Object, objectStamp); setCache(Kind.Void, voidStamp); } diff -r 04c8e05b8991 -r 4e1278443941 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Mon Feb 18 20:21:37 2013 -0800 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Mon Feb 18 20:55:18 2013 -0800 @@ -208,7 +208,7 @@ return new ConstantOopWriteValue(JNIHandles::make_local(obj)); } } else if (type == T_ADDRESS) { - return new ConstantLongValue(prim); + ShouldNotReachHere(); } tty->print("%i", type); } else if (value->is_a(VirtualObject::klass())) {