Mercurial > hg > graal-compiler
changeset 22595:dcfd57b9f2d3
Update jvmci import: Remove Value.getKind().
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Tue Sep 08 15:11:16 2015 +0200 @@ -167,9 +167,9 @@ } else if (isJavaConstant(src)) { return createMoveConstant(dst, asJavaConstant(src)); } else if (isRegister(src) || isStackSlotValue(dst)) { - return new MoveFromRegOp(dst.getKind(), dst, (AllocatableValue) src); + return new MoveFromRegOp((Kind) dst.getPlatformKind(), dst, (AllocatableValue) src); } else { - return new MoveToRegOp(dst.getKind(), dst, (AllocatableValue) src); + return new MoveToRegOp((Kind) dst.getPlatformKind(), dst, (AllocatableValue) src); } } @@ -178,14 +178,13 @@ } protected LIRInstruction createStackMove(AllocatableValue result, AllocatableValue input) { - Kind kind = result.getKind(); + PlatformKind kind = result.getPlatformKind(); OperandSize size; - switch (kind) { - case Long: - case Double: + switch (target().getSizeInBytes(kind)) { + case 8: size = QWORD; break; - case Short: + case 2: size = WORD; break; default: @@ -439,7 +438,7 @@ @Override public void emitNullCheck(Value address, LIRFrameState state) { - assert address.getKind() == Kind.Object || address.getKind() == Kind.Long : address + " - " + address.getKind() + " not a pointer!"; + assert address.getPlatformKind() == Kind.Object || address.getPlatformKind() == Kind.Long : address + " - " + address.getPlatformKind() + " not a pointer!"; append(new AMD64Move.NullCheckOp(asAddressValue(address), state)); } @@ -505,8 +504,8 @@ } private void emitIntegerTest(Value a, Value b) { - assert a.getKind().isNumericInteger(); - OperandSize size = a.getKind() == Kind.Long ? QWORD : DWORD; + assert ((Kind) a.getPlatformKind()).isNumericInteger(); + OperandSize size = (Kind) a.getPlatformKind() == Kind.Long ? QWORD : DWORD; if (isJavaConstant(b) && NumUtil.is32bit(asJavaConstant(b).asLong())) { append(new AMD64BinaryConsumer.ConstOp(AMD64MIOp.TEST, size, asAllocatable(a), (int) asJavaConstant(b).asLong())); } else if (isJavaConstant(a) && NumUtil.is32bit(asJavaConstant(a).asLong())) { @@ -649,7 +648,7 @@ public Variable emitNegate(Value inputVal) { AllocatableValue input = asAllocatable(inputVal); Variable result = newVariable(LIRKind.combine(input)); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Int: append(new AMD64Unary.MOp(NEG, DWORD, result, input)); break; @@ -672,7 +671,7 @@ public Variable emitNot(Value inputVal) { AllocatableValue input = asAllocatable(inputVal); Variable result = newVariable(LIRKind.combine(input)); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Int: append(new AMD64Unary.MOp(NOT, DWORD, result, input)); break; @@ -763,7 +762,7 @@ @Override public Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, ADD, DWORD, true, a, b, setFlags); case Long: @@ -779,7 +778,7 @@ @Override public Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, SUB, DWORD, false, a, b, setFlags); case Long: @@ -824,7 +823,7 @@ @Override public Variable emitMul(Value a, Value b, boolean setFlags) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitIMUL(DWORD, a, b); case Long: @@ -851,7 +850,7 @@ @Override public Value emitMulHigh(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitMulHigh(AMD64MOp.IMUL, DWORD, a, b); case Long: @@ -863,7 +862,7 @@ @Override public Value emitUMulHigh(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitMulHigh(AMD64MOp.MUL, DWORD, a, b); case Long: @@ -928,7 +927,7 @@ public Value[] emitIntegerDivRem(Value a, Value b, LIRFrameState state) { AMD64MulDivOp op; - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: op = emitIDIV(DWORD, a, b, state); break; @@ -943,7 +942,7 @@ @Override public Value emitDiv(Value a, Value b, LIRFrameState state) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: AMD64MulDivOp op = emitIDIV(DWORD, a, b, state); return emitMove(op.getQuotient()); @@ -961,7 +960,7 @@ @Override public Value emitRem(Value a, Value b, LIRFrameState state) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: AMD64MulDivOp op = emitIDIV(DWORD, a, b, state); return emitMove(op.getRemainder()); @@ -986,7 +985,7 @@ @Override public Variable emitUDiv(Value a, Value b, LIRFrameState state) { AMD64MulDivOp op; - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: op = emitDIV(DWORD, a, b, state); break; @@ -1002,7 +1001,7 @@ @Override public Variable emitURem(Value a, Value b, LIRFrameState state) { AMD64MulDivOp op; - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: op = emitDIV(DWORD, a, b, state); break; @@ -1018,7 +1017,7 @@ @Override public Variable emitAnd(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, AND, DWORD, true, a, b, false); case Long: @@ -1035,7 +1034,7 @@ @Override public Variable emitOr(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, OR, DWORD, true, a, b, false); case Long: @@ -1052,7 +1051,7 @@ @Override public Variable emitXor(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, XOR, DWORD, true, a, b, false); case Long: @@ -1089,7 +1088,7 @@ @Override public Variable emitShl(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(SHL, DWORD, a, b); case Long: @@ -1101,7 +1100,7 @@ @Override public Variable emitShr(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(SAR, DWORD, a, b); case Long: @@ -1113,7 +1112,7 @@ @Override public Variable emitUShr(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(SHR, DWORD, a, b); case Long: @@ -1124,7 +1123,7 @@ } public Variable emitRol(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(ROL, DWORD, a, b); case Long: @@ -1135,7 +1134,7 @@ } public Variable emitRor(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(ROR, DWORD, a, b); case Long: @@ -1228,7 +1227,7 @@ @Override public Value emitNarrow(Value inputVal, int bits) { - if (inputVal.getKind() == Kind.Long && bits <= 32) { + if (inputVal.getPlatformKind() == Kind.Long && bits <= 32) { // TODO make it possible to reinterpret Long as Int in LIR without move return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Int), AMD64RMOp.MOV, DWORD, inputVal); } else { @@ -1274,13 +1273,13 @@ if (fromBits == toBits) { return inputVal; } else if (fromBits > 32) { - assert inputVal.getKind() == Kind.Long; + assert inputVal.getPlatformKind() == Kind.Long; Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Long)); long mask = CodeUtil.mask(fromBits); append(new AMD64Binary.DataOp(AND.getRMOpcode(QWORD), QWORD, result, asAllocatable(inputVal), JavaConstant.forLong(mask))); return result; } else { - assert inputVal.getKind().getStackKind() == Kind.Int; + assert ((Kind) inputVal.getPlatformKind()).getStackKind() == Kind.Int; LIRKind resultKind = LIRKind.combine(inputVal); if (toBits > 32) { @@ -1340,10 +1339,10 @@ @Override public Variable emitBitCount(Value value) { Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int)); - if (value.getKind().getStackKind() == Kind.Int) { + if (value.getPlatformKind() == Kind.Long) { + append(new AMD64Unary.RMOp(POPCNT, QWORD, result, asAllocatable(value))); + } else { append(new AMD64Unary.RMOp(POPCNT, DWORD, result, asAllocatable(value))); - } else { - append(new AMD64Unary.RMOp(POPCNT, QWORD, result, asAllocatable(value))); } return result; } @@ -1358,30 +1357,30 @@ @Override public Variable emitBitScanReverse(Value value) { Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int)); - if (value.getKind().getStackKind() == Kind.Int) { + if (value.getPlatformKind() == Kind.Long) { + append(new AMD64Unary.RMOp(BSR, QWORD, result, asAllocatable(value))); + } else { append(new AMD64Unary.RMOp(BSR, DWORD, result, asAllocatable(value))); - } else { - append(new AMD64Unary.RMOp(BSR, QWORD, result, asAllocatable(value))); } return result; } public Value emitCountLeadingZeros(Value value) { Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int)); - if (value.getKind().getStackKind() == Kind.Int) { + if (value.getPlatformKind() == Kind.Long) { + append(new AMD64Unary.RMOp(LZCNT, QWORD, result, asAllocatable(value))); + } else { append(new AMD64Unary.RMOp(LZCNT, DWORD, result, asAllocatable(value))); - } else { - append(new AMD64Unary.RMOp(LZCNT, QWORD, result, asAllocatable(value))); } return result; } public Value emitCountTrailingZeros(Value value) { Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int)); - if (value.getKind().getStackKind() == Kind.Int) { + if (value.getPlatformKind() == Kind.Long) { + append(new AMD64Unary.RMOp(TZCNT, QWORD, result, asAllocatable(value))); + } else { append(new AMD64Unary.RMOp(TZCNT, DWORD, result, asAllocatable(value))); - } else { - append(new AMD64Unary.RMOp(TZCNT, QWORD, result, asAllocatable(value))); } return result; } @@ -1389,7 +1388,7 @@ @Override public Value emitMathAbs(Value input) { Variable result = newVariable(LIRKind.combine(input)); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Float: append(new AMD64Binary.DataOp(SSEOp.AND, PS, result, asAllocatable(input), JavaConstant.forFloat(Float.intBitsToFloat(0x7FFFFFFF)), 16)); break; @@ -1405,7 +1404,7 @@ @Override public Value emitMathSqrt(Value input) { Variable result = newVariable(LIRKind.combine(input)); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Float: append(new AMD64Unary.RMOp(SSEOp.SQRT, SS, result, asAllocatable(input))); break; @@ -1473,7 +1472,7 @@ @Override public void emitStrategySwitch(SwitchStrategy strategy, Variable key, LabelRef[] keyTargets, LabelRef defaultTarget) { // a temp is needed for loading object constants - boolean needsTemp = key.getKind() == Kind.Object; + boolean needsTemp = key.getPlatformKind() == Kind.Object; append(new StrategySwitchOp(strategy, keyTargets, defaultTarget, key, needsTemp ? newVariable(key.getLIRKind()) : Value.ILLEGAL)); }
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Tue Sep 08 15:11:16 2015 +0200 @@ -278,11 +278,11 @@ @Override public void emitIntegerTestBranch(Value left, Value right, LabelRef trueDestination, LabelRef falseDestination, double trueDestinationProbability) { emitIntegerTest(left, right); - append(new BranchOp(ConditionFlag.Equal, trueDestination, falseDestination, left.getKind().getStackKind(), trueDestinationProbability)); + append(new BranchOp(ConditionFlag.Equal, trueDestination, falseDestination, ((Kind) left.getPlatformKind()).getStackKind(), trueDestinationProbability)); } private void emitIntegerTest(Value a, Value b) { - assert a.getKind().isNumericInteger(); + assert ((Kind) a.getPlatformKind()).isNumericInteger(); if (LIRValueUtil.isVariable(b)) { append(new SPARCTestOp(load(b), loadNonConst(a))); } else { @@ -392,7 +392,7 @@ public Variable emitIntegerTestMove(Value left, Value right, Value trueValue, Value falseValue) { emitIntegerTest(left, right); Variable result = newVariable(trueValue.getLIRKind()); - Kind kind = left.getKind().getStackKind(); + Kind kind = ((Kind) left.getPlatformKind()).getStackKind(); CC conditionCode; switch (kind) { case Object: @@ -449,10 +449,10 @@ @Override public Variable emitBitCount(Value operand) { Variable result = newVariable(LIRKind.combine(operand).changeType(Kind.Int)); - if (operand.getKind().getStackKind() == Kind.Int) { + if (operand.getPlatformKind() == Kind.Long) { + append(new SPARCBitManipulationOp(LPOPCNT, result, asAllocatable(operand), this)); + } else { append(new SPARCBitManipulationOp(IPOPCNT, result, asAllocatable(operand), this)); - } else { - append(new SPARCBitManipulationOp(LPOPCNT, result, asAllocatable(operand), this)); } return result; } @@ -467,10 +467,10 @@ @Override public Variable emitBitScanReverse(Value operand) { Variable result = newVariable(LIRKind.combine(operand).changeType(Kind.Int)); - if (operand.getKind().getStackKind() == Kind.Int) { + if (operand.getPlatformKind() == Kind.Long) { + append(new SPARCBitManipulationOp(LBSR, result, asAllocatable(operand), this)); + } else { append(new SPARCBitManipulationOp(IBSR, result, asAllocatable(operand), this)); - } else { - append(new SPARCBitManipulationOp(LBSR, result, asAllocatable(operand), this)); } return result; } @@ -505,7 +505,7 @@ @Override public Value emitNegate(Value input) { - switch (input.getKind().getStackKind()) { + switch (((Kind) input.getPlatformKind()).getStackKind()) { case Long: return emitUnary(LNEG, input); case Int: @@ -521,7 +521,7 @@ @Override public Value emitNot(Value input) { - switch (input.getKind().getStackKind()) { + switch (((Kind) input.getPlatformKind()).getStackKind()) { case Int: return emitUnary(INOT, input); case Long: @@ -583,7 +583,7 @@ @Override public Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, setFlags ? IADDCC : IADD, true, a, b); case Long: @@ -599,7 +599,7 @@ @Override public Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, setFlags ? ISUBCC : ISUB, false, a, b); case Long: @@ -609,14 +609,14 @@ case Double: return emitBinary(resultKind, DSUB, false, a, b); default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } } @Override public Variable emitMul(Value a, Value b, boolean setFlags) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, setFlags ? IMULCC : IMUL, true, a, b); case Long: @@ -632,13 +632,13 @@ case Double: return emitBinary(resultKind, DMUL, true, a, b); default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } } @Override public Value emitMulHigh(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitMulHigh(IMUL, a, b); case Long: @@ -650,7 +650,7 @@ @Override public Value emitUMulHigh(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitMulHigh(IUMUL, a, b); case Long: @@ -670,7 +670,7 @@ @Override public Value emitDiv(Value a, Value b, LIRFrameState state) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, IDIV, false, a, b, state); case Long: @@ -680,7 +680,7 @@ case Double: return emitBinary(resultKind, DDIV, false, a, b, state); default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } } @@ -691,7 +691,7 @@ Variable q2; Variable q3; Variable q4; - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: append(new RemOp(IREM, result, load(a), loadNonConst(b), state, this)); break; @@ -721,7 +721,7 @@ append(new BinaryRegReg(DSUB, result, a, q4)); break; default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } return result; } @@ -729,7 +729,7 @@ @Override public Value emitURem(Value a, Value b, LIRFrameState state) { Variable result = newVariable(LIRKind.combine(a, b)); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: append(new RemOp(IUREM, result, load(a), load(b), state, this)); break; @@ -748,7 +748,7 @@ SPARCArithmetic op; Value actualA = a; Value actualB = b; - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: op = LUDIV; actualA = emitZeroExtend(actualA, 32, 64); @@ -766,34 +766,34 @@ @Override public Variable emitAnd(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, IAND, true, a, b); case Long: return emitBinary(resultKind, LAND, true, a, b); default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } } @Override public Variable emitOr(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, IOR, true, a, b); case Long: return emitBinary(resultKind, LOR, true, a, b); default: - throw JVMCIError.shouldNotReachHere("missing: " + a.getKind()); + throw JVMCIError.shouldNotReachHere("missing: " + a.getPlatformKind()); } } @Override public Variable emitXor(Value a, Value b) { LIRKind resultKind = LIRKind.combine(a, b); - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitBinary(resultKind, IXOR, true, a, b); case Long: @@ -815,7 +815,7 @@ @Override public Variable emitShl(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(ISHL, a, b); case Long: @@ -827,7 +827,7 @@ @Override public Variable emitShr(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(ISHR, a, b); case Long: @@ -839,7 +839,7 @@ @Override public Variable emitUShr(Value a, Value b) { - switch (a.getKind().getStackKind()) { + switch (((Kind) a.getPlatformKind()).getStackKind()) { case Int: return emitShift(IUSHR, a, b); case Long: @@ -952,7 +952,7 @@ @Override public Value emitNarrow(Value inputVal, int bits) { - if (inputVal.getKind() == Kind.Long && bits <= 32) { + if (inputVal.getPlatformKind() == Kind.Long && bits <= 32) { return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Int), L2I, asAllocatable(inputVal)); } else { return inputVal; @@ -997,13 +997,13 @@ if (fromBits == toBits) { return inputVal; } else if (fromBits > 32) { - assert inputVal.getKind() == Kind.Long; + assert inputVal.getPlatformKind() == Kind.Long; Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Long)); long mask = CodeUtil.mask(fromBits); append(new BinaryRegConst(SPARCArithmetic.LAND, result, asAllocatable(inputVal), JavaConstant.forLong(mask), null)); return result; } else { - assert inputVal.getKind() == Kind.Int || inputVal.getKind() == Kind.Short || inputVal.getKind() == Kind.Byte || inputVal.getKind() == Kind.Char : inputVal.getKind(); + assert inputVal.getPlatformKind() == Kind.Int || inputVal.getPlatformKind() == Kind.Short || inputVal.getPlatformKind() == Kind.Byte || inputVal.getPlatformKind() == Kind.Char : inputVal.getPlatformKind(); Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Int)); long mask = CodeUtil.mask(fromBits); JavaConstant constant = JavaConstant.forInt((int) mask); @@ -1028,7 +1028,7 @@ @Override public AllocatableValue emitReinterpret(LIRKind to, Value inputVal) { - Kind from = inputVal.getKind(); + Kind from = (Kind) inputVal.getPlatformKind(); AllocatableValue input = asAllocatable(inputVal); Variable result = newVariable(to); // These cases require a move between CPU and FPU registers:
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/BytecodeLIRBuilder.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/BytecodeLIRBuilder.java Tue Sep 08 15:11:16 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 @@ -41,7 +41,7 @@ Value[] params = new Value[incomingArguments.getArgumentCount()]; for (int i = 0; i < params.length; i++) { - params[i] = LIRGenerator.toStackKind(incomingArguments.getArgument(i)); + params[i] = incomingArguments.getArgument(i); if (ValueUtil.isStackSlot(params[i])) { StackSlot slot = ValueUtil.asStackSlot(params[i]); if (slot.isInCallerFrame() && !gen.getResult().getLIR().hasArgInCallerFrame()) { @@ -56,7 +56,7 @@ boolean isStatic = method.isStatic(); for (int i = 0; i < sig.getParameterCount(!isStatic); i++) { Value paramValue = params[i]; - assert paramValue.getKind() == sig.getParameterKind(i).getStackKind(); + assert paramValue.getLIRKind().equals(gen.target().getLIRKind(sig.getParameterKind(i).getStackKind())); parser.storeLocal(i, gen.emitMove(paramValue)); }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Tue Sep 08 15:11:16 2015 +0200 @@ -407,7 +407,7 @@ Value[] params = new Value[incomingArguments.getArgumentCount()]; for (int i = 0; i < params.length; i++) { - params[i] = LIRGenerator.toStackKind(incomingArguments.getArgument(i)); + params[i] = incomingArguments.getArgument(i); if (ValueUtil.isStackSlot(params[i])) { StackSlot slot = ValueUtil.asStackSlot(params[i]); if (slot.isInCallerFrame() && !gen.getResult().getLIR().hasArgInCallerFrame()) { @@ -592,7 +592,7 @@ int j = 0; for (ValueNode arg : arguments) { if (arg != null) { - AllocatableValue operand = LIRGenerator.toStackKind(invokeCc.getArgument(j)); + AllocatableValue operand = invokeCc.getArgument(j); gen.emitMove(operand, operand(arg)); result[j] = operand; j++; @@ -630,12 +630,14 @@ LabelRef[] keyTargets = new LabelRef[keyCount]; JavaConstant[] keyConstants = new JavaConstant[keyCount]; double[] keyProbabilities = new double[keyCount]; + Kind keyKind = x.keyAt(0).getKind(); for (int i = 0; i < keyCount; i++) { keyTargets[i] = getLIRBlock(x.keySuccessor(i)); keyConstants[i] = x.keyAt(i); keyProbabilities[i] = x.keyProbability(i); + assert keyConstants[i].getKind() == keyKind; } - if (value.getKind() != Kind.Int || !x.isSorted()) { + if (keyKind != Kind.Int || !x.isSorted()) { // hopefully only a few entries gen.emitStrategySwitch(new SwitchStrategy.SequentialStrategy(keyProbabilities, keyConstants), value, keyTargets, defaultTarget); } else {
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java Tue Sep 08 15:11:16 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 @@ -46,7 +46,7 @@ Value[] params = new Value[incomingArguments.getArgumentCount() + 1]; for (int i = 0; i < params.length - 1; i++) { - params[i] = LIRGenerator.toStackKind(incomingArguments.getArgument(i)); + params[i] = incomingArguments.getArgument(i); if (ValueUtil.isStackSlot(params[i])) { StackSlot slot = ValueUtil.asStackSlot(params[i]); if (slot.isInCallerFrame() && !gen.getResult().getLIR().hasArgInCallerFrame()) { @@ -64,7 +64,7 @@ boolean isStatic = method.isStatic(); for (int i = 0; i < sig.getParameterCount(!isStatic); i++) { Value paramValue = params[i]; - assert paramValue.getKind() == sig.getParameterKind(i).getStackKind(); + assert paramValue.getLIRKind().equals(gen.target().getLIRKind(sig.getParameterKind(i).getStackKind())); parser.storeLocal(i, gen.emitMove(paramValue)); } }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Tue Sep 08 15:11:16 2015 +0200 @@ -78,7 +78,7 @@ Value[] params = new Value[incomingArguments.getArgumentCount() + 1]; for (int i = 0; i < params.length - 1; i++) { - params[i] = LIRGenerator.toStackKind(incomingArguments.getArgument(i)); + params[i] = incomingArguments.getArgument(i); if (isStackSlot(params[i])) { StackSlot slot = ValueUtil.asStackSlot(params[i]); if (slot.isInCallerFrame() && !gen.getResult().getLIR().hasArgInCallerFrame()) { @@ -96,7 +96,7 @@ for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) { Value paramValue = params[param.index()]; - assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp())); + assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp())) : paramValue.getLIRKind() + " != " + param.stamp(); setResult(param, gen.emitMove(paramValue)); } } @@ -173,7 +173,7 @@ RegisterValue raxLocal = AMD64.rax.asValue(expected.getLIRKind()); gen.emitMove(raxLocal, expected); - append(new CompareAndSwapOp(expected.getKind(), raxLocal, getGen().asAddressValue(operand(x.getAddress())), raxLocal, newVal)); + append(new CompareAndSwapOp((Kind) expected.getPlatformKind(), raxLocal, getGen().asAddressValue(operand(x.getAddress())), raxLocal, newVal)); setResult(x, gen.emitMove(raxLocal)); }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -54,7 +54,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - Register addrRegister = asLongReg(address); + Register addrRegister = asRegister(address, Kind.Long); masm.jmp(addrRegister); masm.restoreWindow(); }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Tue Sep 08 15:11:16 2015 +0200 @@ -187,7 +187,7 @@ LIRKind wordKind = LIRKind.value(getProviders().getCodeCache().getTarget().wordKind); RegisterValue thread = getProviders().getRegisters().getThreadRegister().asValue(wordKind); SPARCAddressValue pendingDeoptAddress = new SPARCImmediateAddressValue(wordKind, thread, offset); - append(new StoreOp(v.getKind(), pendingDeoptAddress, load(v), null)); + append(new StoreOp(v.getPlatformKind(), pendingDeoptAddress, load(v), null)); } @Override
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -50,7 +50,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - Register addrRegister = asLongReg(address); + Register addrRegister = asRegister(address, Kind.Long); masm.sub(addrRegister, SPARCAssembler.PC_RETURN_OFFSET, i7); } }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Tue Sep 08 15:11:16 2015 +0200 @@ -197,7 +197,7 @@ protected StructuredGraph getGraph() { WordTypes wordTypes = providers.getWordTypes(); Class<?>[] args = linkage.getDescriptor().getArgumentTypes(); - boolean isObjectResult = linkage.getOutgoingCallingConvention().getReturn().getKind() == Kind.Object; + boolean isObjectResult = !linkage.getOutgoingCallingConvention().getReturn().getLIRKind().isValue(); StructuredGraph graph = new StructuredGraph(toString(), null, AllowAssumptions.NO); graph.disableInlinedMethodRecording();
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java Tue Sep 08 15:11:16 2015 +0200 @@ -94,8 +94,8 @@ @Override public void verify() { super.verify(); - assert (opcode.name().startsWith("F") && result.getKind() == Kind.Float && x.getKind() == Kind.Float && y.getKind() == Kind.Float) || - (opcode.name().startsWith("D") && result.getKind() == Kind.Double && x.getKind() == Kind.Double && y.getKind() == Kind.Double); + assert (opcode.name().startsWith("F") && result.getPlatformKind() == Kind.Float && x.getPlatformKind() == Kind.Float && y.getPlatformKind() == Kind.Float) || + (opcode.name().startsWith("D") && result.getPlatformKind() == Kind.Double && x.getPlatformKind() == Kind.Double && y.getPlatformKind() == Kind.Double); } } }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArrayEqualsOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArrayEqualsOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -154,8 +154,8 @@ private void emitSSE41Compare(CompilationResultBuilder crb, AMD64MacroAssembler masm, Register result, Register array1, Register array2, Register length, Label trueLabel, Label falseLabel) { assert supportsSSE41(crb.target); - Register vector1 = asDoubleReg(vectorTemp1); - Register vector2 = asDoubleReg(vectorTemp2); + Register vector1 = asRegister(vectorTemp1, Kind.Double); + Register vector2 = asRegister(vectorTemp2, Kind.Double); Label loop = new Label(); Label compareTail = new Label();
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ByteSwapOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ByteSwapOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -45,12 +45,12 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { AMD64Move.move(crb, masm, result, input); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Int: - masm.bswapl(ValueUtil.asIntReg(result)); + masm.bswapl(ValueUtil.asRegister(result, Kind.Int)); break; case Long: - masm.bswapq(ValueUtil.asLongReg(result)); + masm.bswapq(ValueUtil.asRegister(result, Kind.Long)); } } }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java Tue Sep 08 15:11:16 2015 +0200 @@ -144,7 +144,7 @@ this.scratch = scratch; assert keyConstants.length == keyTargets.length; assert keyConstants.length == strategy.keyProbabilities.length; - assert (scratch.getKind() == Kind.Illegal) == (key.getKind() == Kind.Int || key.getKind() == Kind.Long); + assert (scratch.getPlatformKind() == Kind.Illegal) == (key.getPlatformKind() == Kind.Int || key.getPlatformKind() == Kind.Long); } @Override @@ -154,7 +154,7 @@ BaseSwitchClosure closure = new BaseSwitchClosure(crb, masm, keyTargets, defaultTarget) { @Override protected void conditionalJump(int index, Condition condition, Label target) { - switch (key.getKind()) { + switch (keyConstants[index].getKind()) { case Int: if (crb.codeCache.needsDataPatch(keyConstants[index])) { crb.recordInlineDataInCode(keyConstants[index]); @@ -169,7 +169,7 @@ case Object: assert condition == Condition.EQ || condition == Condition.NE; AMD64Move.const2reg(crb, masm, scratch, keyConstants[index]); - masm.cmpptr(keyRegister, asObjectReg(scratch)); + masm.cmpptr(keyRegister, asRegister(scratch)); break; default: throw new JVMCIError("switch only supported for int, long and object"); @@ -202,9 +202,9 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { - Register indexReg = asIntReg(index); - Register idxScratchReg = asIntReg(idxScratch); - Register scratchReg = asLongReg(scratch); + Register indexReg = asRegister(index, Kind.Int); + Register idxScratchReg = asRegister(idxScratch, Kind.Int); + Register scratchReg = asRegister(scratch, Kind.Long); if (!indexReg.equals(idxScratchReg)) { masm.movl(idxScratchReg, indexReg); @@ -342,7 +342,7 @@ private static void cmove(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, ConditionFlag cond, Value other) { if (isRegister(other)) { assert !asRegister(other).equals(asRegister(result)) : "other already overwritten by previous move"; - switch (other.getKind()) { + switch ((Kind) other.getPlatformKind()) { case Boolean: case Byte: case Short: @@ -358,7 +358,7 @@ } } else { AMD64Address addr = (AMD64Address) crb.asAddress(other); - switch (other.getKind()) { + switch ((Kind) other.getPlatformKind()) { case Boolean: case Byte: case Short:
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64MathIntrinsicOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64MathIntrinsicOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -52,11 +52,11 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { switch (opcode) { - case LOG: masm.flog(asDoubleReg(result), asDoubleReg(input), false); break; - case LOG10: masm.flog(asDoubleReg(result), asDoubleReg(input), true); break; - case SIN: masm.fsin(asDoubleReg(result), asDoubleReg(input)); break; - case COS: masm.fcos(asDoubleReg(result), asDoubleReg(input)); break; - case TAN: masm.ftan(asDoubleReg(result), asDoubleReg(input)); break; + case LOG: masm.flog(asRegister(result, Kind.Double), asRegister(input, Kind.Double), false); break; + case LOG10: masm.flog(asRegister(result, Kind.Double), asRegister(input, Kind.Double), true); break; + case SIN: masm.fsin(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break; + case COS: masm.fcos(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break; + case TAN: masm.ftan(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere(); } }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Tue Sep 08 15:11:16 2015 +0200 @@ -185,12 +185,12 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { // backup scratch register - move(backupSlot.getKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind())); + move((Kind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind())); // move stack slot - move(getInput().getKind(), crb, masm, scratch.asValue(getInput().getLIRKind()), getInput()); - move(getResult().getKind(), crb, masm, getResult(), scratch.asValue(getResult().getLIRKind())); + move((Kind) getInput().getPlatformKind(), crb, masm, scratch.asValue(getInput().getLIRKind()), getInput()); + move((Kind) getResult().getPlatformKind(), crb, masm, getResult(), scratch.asValue(getResult().getLIRKind())); // restore scratch register - move(backupSlot.getKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot); + move((Kind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot); } } @@ -216,16 +216,16 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { // backup scratch register - move(backupSlot.getKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind())); + move((Kind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind())); for (int i = 0; i < results.length; i++) { Value input = inputs[i]; AllocatableValue result = results[i]; // move stack slot - move(input.getKind(), crb, masm, scratch.asValue(input.getLIRKind()), input); - move(result.getKind(), crb, masm, result, scratch.asValue(result.getLIRKind())); + move((Kind) input.getPlatformKind(), crb, masm, scratch.asValue(input.getLIRKind()), input); + move((Kind) result.getPlatformKind(), crb, masm, result, scratch.asValue(result.getLIRKind())); } // restore scratch register - move(backupSlot.getKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot); + move((Kind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot); } } @@ -276,7 +276,7 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { - masm.leaq(asLongReg(result), address.toAddress()); + masm.leaq(asRegister(result, Kind.Long), address.toAddress()); } } @@ -313,7 +313,7 @@ @Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { - masm.leaq(asLongReg(result), (AMD64Address) crb.asAddress(slot)); + masm.leaq(asRegister(result, Kind.Long), (AMD64Address) crb.asAddress(slot)); } } @@ -474,7 +474,7 @@ } public static void move(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) { - move(result.getKind(), crb, masm, result, input); + move((Kind) result.getPlatformKind(), crb, masm, result, input); } public static void move(Kind moveKind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) { @@ -517,16 +517,16 @@ masm.movq(asRegister(result), asRegister(input)); break; case Float: - masm.movflt(asFloatReg(result), asFloatReg(input)); + masm.movflt(asRegister(result, Kind.Float), asRegister(input, Kind.Float)); break; case Double: - masm.movdbl(asDoubleReg(result), asDoubleReg(input)); + masm.movdbl(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break; case Object: masm.movq(asRegister(result), asRegister(input)); break; default: - throw JVMCIError.shouldNotReachHere("kind=" + result.getKind()); + throw JVMCIError.shouldNotReachHere("kind=" + result.getPlatformKind()); } } @@ -548,10 +548,10 @@ masm.movq(dest, asRegister(input)); break; case Float: - masm.movflt(dest, asFloatReg(input)); + masm.movflt(dest, asRegister(input, Kind.Float)); break; case Double: - masm.movsd(dest, asDoubleReg(input)); + masm.movsd(dest, asRegister(input, Kind.Double)); break; case Object: masm.movq(dest, asRegister(input)); @@ -583,10 +583,10 @@ masm.movq(asRegister(result), src); break; case Float: - masm.movflt(asFloatReg(result), src); + masm.movflt(asRegister(result, Kind.Float), src); break; case Double: - masm.movdbl(asDoubleReg(result), src); + masm.movdbl(asRegister(result, Kind.Double), src); break; case Object: masm.movq(asRegister(result), src); @@ -641,18 +641,18 @@ // This is *not* the same as 'constant == 0.0f' in the case where constant is -0.0f if (Float.floatToRawIntBits(input.asFloat()) == Float.floatToRawIntBits(0.0f)) { assert !crb.codeCache.needsDataPatch(input); - masm.xorps(asFloatReg(result), asFloatReg(result)); + masm.xorps(asRegister(result, Kind.Float), asRegister(result, Kind.Float)); } else { - masm.movflt(asFloatReg(result), (AMD64Address) crb.asFloatConstRef(input)); + masm.movflt(asRegister(result, Kind.Float), (AMD64Address) crb.asFloatConstRef(input)); } break; case Double: // This is *not* the same as 'constant == 0.0d' in the case where constant is -0.0d if (Double.doubleToRawLongBits(input.asDouble()) == Double.doubleToRawLongBits(0.0d)) { assert !crb.codeCache.needsDataPatch(input); - masm.xorpd(asDoubleReg(result), asDoubleReg(result)); + masm.xorpd(asRegister(result, Kind.Double), asRegister(result, Kind.Double)); } else { - masm.movdbl(asDoubleReg(result), (AMD64Address) crb.asDoubleConstRef(input)); + masm.movdbl(asRegister(result, Kind.Double), (AMD64Address) crb.asDoubleConstRef(input)); } break; case Object: @@ -700,7 +700,7 @@ default: throw JVMCIError.shouldNotReachHere(); } - switch (result.getKind()) { + switch ((Kind) result.getPlatformKind()) { case Byte: assert NumUtil.isByte(imm) : "Is not in byte range: " + imm; AMD64MIOp.MOVB.emit(masm, OperandSize.BYTE, dest, (int) imm); @@ -724,7 +724,7 @@ masm.movlong(dest, imm); break; default: - throw JVMCIError.shouldNotReachHere("Unknown result Kind: " + result.getKind()); + throw JVMCIError.shouldNotReachHere("Unknown result Kind: " + result.getPlatformKind()); } } }
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Tue Sep 08 15:11:16 2015 +0200 @@ -135,7 +135,7 @@ @Override public void verify() { super.verify(); - verifyKind(opcode, result.getKind(), x.getKind(), y.getKind()); + verifyKind(opcode, result.getPlatformKind(), x.getPlatformKind(), y.getPlatformKind()); } @Override @@ -186,7 +186,7 @@ @Override public void verify() { super.verify(); - verifyKind(opcode, result.getKind(), x.getKind(), y.getKind()); + verifyKind(opcode, result.getPlatformKind(), x.getPlatformKind(), y.getKind()); } } @@ -224,7 +224,7 @@ @Override public void verify() { super.verify(); - verifyKind(opcode, result.getKind(), x.getKind(), y.getKind()); + verifyKind(opcode, result.getPlatformKind(), x.getPlatformKind(), y.getPlatformKind()); } } @@ -253,21 +253,21 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { Label noOverflow = new Label(); - masm.mulx(asLongReg(x), asLongReg(y), asLongReg(result)); + masm.mulx(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long)); // Calculate the upper 64 bit signed := (umulxhi product - (x{63}&y + y{63}&x)) - masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(scratch1)); - masm.srax(asLongReg(x), 63, asLongReg(scratch2)); - masm.and(asLongReg(scratch2), asLongReg(y), asLongReg(scratch2)); - masm.sub(asLongReg(scratch1), asLongReg(scratch2), asLongReg(scratch1)); + masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch1, Kind.Long)); + masm.srax(asRegister(x, Kind.Long), 63, asRegister(scratch2, Kind.Long)); + masm.and(asRegister(scratch2, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch2, Kind.Long)); + masm.sub(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(scratch1, Kind.Long)); - masm.srax(asLongReg(y), 63, asLongReg(scratch2)); - masm.and(asLongReg(scratch2), asLongReg(x), asLongReg(scratch2)); - masm.sub(asLongReg(scratch1), asLongReg(scratch2), asLongReg(scratch1)); + masm.srax(asRegister(y, Kind.Long), 63, asRegister(scratch2, Kind.Long)); + masm.and(asRegister(scratch2, Kind.Long), asRegister(x, Kind.Long), asRegister(scratch2, Kind.Long)); + masm.sub(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(scratch1, Kind.Long)); // Now construct the lower half and compare - masm.srax(asLongReg(result), 63, asLongReg(scratch2)); - masm.cmp(asLongReg(scratch1), asLongReg(scratch2)); + masm.srax(asRegister(result, Kind.Long), 63, asRegister(scratch2, Kind.Long)); + masm.cmp(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long)); masm.bpcc(Equal, NOT_ANNUL, noOverflow, Xcc, PREDICT_TAKEN); masm.nop(); masm.wrccr(g0, 1 << (CCR_XCC_SHIFT + CCR_V_SHIFT)); @@ -283,88 +283,88 @@ delaySlotLir.emitControlTransfer(crb, masm); switch (opcode) { case IADD: - masm.add(asIntReg(src1), constant, asIntReg(dst)); + masm.add(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IADDCC: - masm.addcc(asIntReg(src1), constant, asIntReg(dst)); + masm.addcc(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case ISUB: - masm.sub(asIntReg(src1), constant, asIntReg(dst)); + masm.sub(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case ISUBCC: - masm.subcc(asIntReg(src1), constant, asIntReg(dst)); + masm.subcc(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IMUL: - masm.mulx(asIntReg(src1), constant, asIntReg(dst)); + masm.mulx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IMULCC: throw JVMCIError.unimplemented(); case IDIV: masm.sra(asRegister(src1), 0, asRegister(src1)); - masm.sdivx(asIntReg(src1), constant, asIntReg(dst)); + masm.sdivx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IUDIV: masm.srl(asRegister(src1), 0, asRegister(src1)); - masm.udivx(asIntReg(src1), constant, asIntReg(dst)); + masm.udivx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IAND: - masm.and(asIntReg(src1), constant, asIntReg(dst)); + masm.and(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case ISHL: - masm.sll(asIntReg(src1), constant, asIntReg(dst)); + masm.sll(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case ISHR: - masm.sra(asIntReg(src1), constant, asIntReg(dst)); + masm.sra(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IUSHR: - masm.srl(asIntReg(src1), constant, asIntReg(dst)); + masm.srl(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IOR: - masm.or(asIntReg(src1), constant, asIntReg(dst)); + masm.or(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case IXOR: - masm.xor(asIntReg(src1), constant, asIntReg(dst)); + masm.xor(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int)); break; case LADD: - masm.add(asLongReg(src1), constant, asLongReg(dst)); + masm.add(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LADDCC: - masm.addcc(asLongReg(src1), constant, asLongReg(dst)); + masm.addcc(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LSUB: - masm.sub(asLongReg(src1), constant, asLongReg(dst)); + masm.sub(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LSUBCC: - masm.subcc(asLongReg(src1), constant, asLongReg(dst)); + masm.subcc(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LMUL: - masm.mulx(asLongReg(src1), constant, asLongReg(dst)); + masm.mulx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LDIV: exceptionOffset = masm.position(); - masm.sdivx(asLongReg(src1), constant, asLongReg(dst)); + masm.sdivx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LUDIV: exceptionOffset = masm.position(); - masm.udivx(asLongReg(src1), constant, asLongReg(dst)); + masm.udivx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LAND: - masm.and(asLongReg(src1), constant, asLongReg(dst)); + masm.and(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LOR: - masm.or(asLongReg(src1), constant, asLongReg(dst)); + masm.or(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LXOR: - masm.xor(asLongReg(src1), constant, asLongReg(dst)); + masm.xor(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LSHL: - masm.sllx(asLongReg(src1), constant, asLongReg(dst)); + masm.sllx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LSHR: - masm.srax(asLongReg(src1), constant, asLongReg(dst)); + masm.srax(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case LUSHR: - masm.srlx(asLongReg(src1), constant, asLongReg(dst)); + masm.srlx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long)); break; case DAND: // Has no constant implementation in SPARC case FADD: @@ -390,30 +390,30 @@ switch (opcode) { case IADD: delaySlotLir.emitControlTransfer(crb, masm); - masm.add(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.add(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IADDCC: delaySlotLir.emitControlTransfer(crb, masm); - masm.addcc(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.addcc(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case ISUB: delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.sub(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case ISUBCC: delaySlotLir.emitControlTransfer(crb, masm); - masm.subcc(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.subcc(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IMUL: delaySlotLir.emitControlTransfer(crb, masm); - masm.mulx(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.mulx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IMULCC: try (ScratchRegister tmpScratch = masm.getScratchRegister()) { Register tmp = tmpScratch.getRegister(); - masm.mulx(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.mulx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); Label noOverflow = new Label(); - masm.sra(asIntReg(dst), 0, tmp); + masm.sra(asRegister(dst, Kind.Int), 0, tmp); masm.xorcc(SPARC.g0, SPARC.g0, SPARC.g0); masm.compareBranch(tmp, asRegister(dst), Equal, Xcc, noOverflow, PREDICT_TAKEN, null); masm.wrccr(SPARC.g0, 1 << (SPARCAssembler.CCR_ICC_SHIFT + SPARCAssembler.CCR_V_SHIFT)); @@ -421,146 +421,146 @@ } break; case IDIV: - masm.signx(asIntReg(src1), asIntReg(src1)); - masm.signx(asIntReg(src2), asIntReg(src2)); + masm.signx(asRegister(src1, Kind.Int), asRegister(src1, Kind.Int)); + masm.signx(asRegister(src2, Kind.Int), asRegister(src2, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.sdivx(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.sdivx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IUDIV: - masm.srl(asIntReg(src1), 0, asIntReg(src1)); - masm.srl(asIntReg(src2), 0, asIntReg(src2)); + masm.srl(asRegister(src1, Kind.Int), 0, asRegister(src1, Kind.Int)); + masm.srl(asRegister(src2, Kind.Int), 0, asRegister(src2, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.udivx(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.udivx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IAND: delaySlotLir.emitControlTransfer(crb, masm); - masm.and(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.and(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IOR: delaySlotLir.emitControlTransfer(crb, masm); - masm.or(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.or(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IXOR: delaySlotLir.emitControlTransfer(crb, masm); - masm.xor(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.xor(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case ISHL: delaySlotLir.emitControlTransfer(crb, masm); - masm.sll(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.sll(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case ISHR: delaySlotLir.emitControlTransfer(crb, masm); - masm.sra(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.sra(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IUSHR: delaySlotLir.emitControlTransfer(crb, masm); - masm.srl(asIntReg(src1), asIntReg(src2), asIntReg(dst)); + masm.srl(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int)); break; case IREM: throw JVMCIError.unimplemented(); case LADD: delaySlotLir.emitControlTransfer(crb, masm); - masm.add(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.add(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LADDCC: delaySlotLir.emitControlTransfer(crb, masm); - masm.addcc(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.addcc(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LSUB: delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.sub(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LSUBCC: delaySlotLir.emitControlTransfer(crb, masm); - masm.subcc(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.subcc(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LMUL: delaySlotLir.emitControlTransfer(crb, masm); - masm.mulx(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.mulx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LMULCC: throw JVMCIError.unimplemented(); case LDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.sdivx(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.sdivx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LUDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.udivx(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.udivx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LAND: delaySlotLir.emitControlTransfer(crb, masm); - masm.and(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.and(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LOR: delaySlotLir.emitControlTransfer(crb, masm); - masm.or(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.or(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LXOR: delaySlotLir.emitControlTransfer(crb, masm); - masm.xor(asLongReg(src1), asLongReg(src2), asLongReg(dst)); + masm.xor(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long)); break; case LSHL: delaySlotLir.emitControlTransfer(crb, masm); - masm.sllx(asLongReg(src1), asIntReg(src2), asLongReg(dst)); + masm.sllx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long)); break; case LSHR: delaySlotLir.emitControlTransfer(crb, masm); - masm.srax(asLongReg(src1), asIntReg(src2), asLongReg(dst)); + masm.srax(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long)); break; case LUSHR: delaySlotLir.emitControlTransfer(crb, masm); - masm.srlx(asLongReg(src1), asIntReg(src2), asLongReg(dst)); + masm.srlx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long)); break; case FADD: delaySlotLir.emitControlTransfer(crb, masm); - masm.fadds(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); + masm.fadds(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float)); break; case FSUB: delaySlotLir.emitControlTransfer(crb, masm); - masm.fsubs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); + masm.fsubs(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float)); break; case FMUL: delaySlotLir.emitControlTransfer(crb, masm); if (dst.getPlatformKind() == Kind.Double) { - masm.fsmuld(asFloatReg(src1), asFloatReg(src2), asDoubleReg(dst)); + masm.fsmuld(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Double)); } else if (dst.getPlatformKind() == Kind.Float) { - masm.fmuls(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); + masm.fmuls(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float)); } break; case FDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.fdivs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); + masm.fdivs(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float)); break; case FREM: throw JVMCIError.unimplemented(); case DADD: delaySlotLir.emitControlTransfer(crb, masm); - masm.faddd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); + masm.faddd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double)); break; case DSUB: delaySlotLir.emitControlTransfer(crb, masm); - masm.fsubd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); + masm.fsubd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double)); break; case DMUL: delaySlotLir.emitControlTransfer(crb, masm); - masm.fmuld(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); + masm.fmuld(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double)); break; case DDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - masm.fdivd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); + masm.fdivd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double)); break; case DREM: throw JVMCIError.unimplemented(); case DAND: delaySlotLir.emitControlTransfer(crb, masm); - masm.fandd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); + masm.fandd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere(); @@ -581,26 +581,26 @@ assert !src2.equals(scratch1); switch (opcode) { case IREM: - masm.sra(asIntReg(src1), 0, asIntReg(dst)); + masm.sra(asRegister(src1, Kind.Int), 0, asRegister(dst, Kind.Int)); exceptionOffset = masm.position(); - masm.sdivx(asIntReg(dst), crb.asIntConst(src2), asIntReg(scratch1)); - masm.mulx(asIntReg(scratch1), crb.asIntConst(src2), asIntReg(scratch2)); + masm.sdivx(asRegister(dst, Kind.Int), crb.asIntConst(src2), asRegister(scratch1, Kind.Int)); + masm.mulx(asRegister(scratch1, Kind.Int), crb.asIntConst(src2), asRegister(scratch2, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asIntReg(dst), asIntReg(scratch2), asIntReg(dst)); + masm.sub(asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int)); break; case LREM: exceptionOffset = masm.position(); - masm.sdivx(asLongReg(src1), crb.asIntConst(src2), asLongReg(scratch1)); - masm.mulx(asLongReg(scratch1), crb.asIntConst(src2), asLongReg(scratch2)); + masm.sdivx(asRegister(src1, Kind.Long), crb.asIntConst(src2), asRegister(scratch1, Kind.Long)); + masm.mulx(asRegister(scratch1, Kind.Long), crb.asIntConst(src2), asRegister(scratch2, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asLongReg(src1), asLongReg(scratch2), asLongReg(dst)); + masm.sub(asRegister(src1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(dst, Kind.Long)); break; case LUREM: exceptionOffset = masm.position(); - masm.udivx(asLongReg(src1), crb.asIntConst(src2), asLongReg(scratch1)); - masm.mulx(asLongReg(scratch1), crb.asIntConst(src2), asLongReg(scratch2)); + masm.udivx(asRegister(src1, Kind.Long), crb.asIntConst(src2), asRegister(scratch1, Kind.Long)); + masm.mulx(asRegister(scratch1, Kind.Long), crb.asIntConst(src2), asRegister(scratch2, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asLongReg(src1), asLongReg(scratch2), asLongReg(dst)); + masm.sub(asRegister(src1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(dst, Kind.Long)); break; case IUREM: JVMCIError.unimplemented(); @@ -613,56 +613,56 @@ switch (opcode) { case LREM: if (isJavaConstant(src1)) { - new Setx(crb.asLongConst(src1), asLongReg(scratch2), false).emit(masm); + new Setx(crb.asLongConst(src1), asRegister(scratch2, Kind.Long), false).emit(masm); srcLeft = scratch2; } - assert !asLongReg(srcLeft).equals(asLongReg(scratch1)); - assert !asLongReg(src2).equals(asLongReg(scratch1)); + assert !asRegister(srcLeft, Kind.Long).equals(asRegister(scratch1, Kind.Long)); + assert !asRegister(src2, Kind.Long).equals(asRegister(scratch1, Kind.Long)); // But src2 can be scratch2 exceptionOffset = masm.position(); - masm.sdivx(asLongReg(srcLeft), asLongReg(src2), asLongReg(scratch1)); - masm.mulx(asLongReg(scratch1), asLongReg(src2), asLongReg(scratch1)); + masm.sdivx(asRegister(srcLeft, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long)); + masm.mulx(asRegister(scratch1, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asLongReg(srcLeft), asLongReg(scratch1), asLongReg(dst)); + masm.sub(asRegister(srcLeft, Kind.Long), asRegister(scratch1, Kind.Long), asRegister(dst, Kind.Long)); break; case LUREM: if (isJavaConstant(src1)) { - new Setx(crb.asLongConst(src1), asLongReg(scratch2), false).emit(masm); + new Setx(crb.asLongConst(src1), asRegister(scratch2, Kind.Long), false).emit(masm); srcLeft = scratch2; } - assert !asLongReg(srcLeft).equals(asLongReg(scratch1)); - assert !asLongReg(src2).equals(asLongReg(scratch1)); + assert !asRegister(srcLeft, Kind.Long).equals(asRegister(scratch1, Kind.Long)); + assert !asRegister(src2, Kind.Long).equals(asRegister(scratch1, Kind.Long)); exceptionOffset = masm.position(); - masm.udivx(asLongReg(srcLeft), asLongReg(src2), asLongReg(scratch1)); - masm.mulx(asLongReg(scratch1), asLongReg(src2), asLongReg(scratch1)); + masm.udivx(asRegister(srcLeft, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long)); + masm.mulx(asRegister(scratch1, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asLongReg(srcLeft), asLongReg(scratch1), asLongReg(dst)); + masm.sub(asRegister(srcLeft, Kind.Long), asRegister(scratch1, Kind.Long), asRegister(dst, Kind.Long)); break; case IREM: if (isJavaConstant(src1)) { - new Setx(crb.asIntConst(src1), asIntReg(scratch2), false).emit(masm); + new Setx(crb.asIntConst(src1), asRegister(scratch2, Kind.Int), false).emit(masm); srcLeft = scratch2; } - assert !asIntReg(srcLeft).equals(asIntReg(scratch1)); - assert !asIntReg(src2).equals(asIntReg(scratch1)); - masm.sra(asIntReg(src1), 0, asIntReg(scratch1)); - masm.sra(asIntReg(src2), 0, asIntReg(scratch2)); + assert !asRegister(srcLeft, Kind.Int).equals(asRegister(scratch1, Kind.Int)); + assert !asRegister(src2, Kind.Int).equals(asRegister(scratch1, Kind.Int)); + masm.sra(asRegister(src1, Kind.Int), 0, asRegister(scratch1, Kind.Int)); + masm.sra(asRegister(src2, Kind.Int), 0, asRegister(scratch2, Kind.Int)); exceptionOffset = masm.position(); - masm.sdivx(asIntReg(scratch1), asIntReg(scratch2), asIntReg(dst)); - masm.mulx(asIntReg(dst), asIntReg(scratch2), asIntReg(dst)); + masm.sdivx(asRegister(scratch1, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int)); + masm.mulx(asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asIntReg(scratch1), asIntReg(dst), asIntReg(dst)); + masm.sub(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int)); break; case IUREM: - assert !asIntReg(dst).equals(asIntReg(scratch1)); - assert !asIntReg(dst).equals(asIntReg(scratch2)); - masm.srl(asIntReg(src1), 0, asIntReg(scratch1)); - masm.srl(asIntReg(src2), 0, asIntReg(dst)); + assert !asRegister(dst, Kind.Int).equals(asRegister(scratch1, Kind.Int)); + assert !asRegister(dst, Kind.Int).equals(asRegister(scratch2, Kind.Int)); + masm.srl(asRegister(src1, Kind.Int), 0, asRegister(scratch1, Kind.Int)); + masm.srl(asRegister(src2, Kind.Int), 0, asRegister(dst, Kind.Int)); exceptionOffset = masm.position(); - masm.udivx(asIntReg(scratch1), asIntReg(dst), asIntReg(scratch2)); - masm.mulx(asIntReg(scratch2), asIntReg(dst), asIntReg(dst)); + masm.udivx(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int)); + masm.mulx(asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sub(asIntReg(scratch1), asIntReg(dst), asIntReg(dst)); + masm.sub(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int)); break; default: throw JVMCIError.shouldNotReachHere(); @@ -682,111 +682,111 @@ switch (opcode) { case INEG: delaySlotLir.emitControlTransfer(crb, masm); - masm.neg(asIntReg(src), asIntReg(dst)); + masm.neg(asRegister(src, Kind.Int), asRegister(dst, Kind.Int)); break; case LNEG: delaySlotLir.emitControlTransfer(crb, masm); - masm.neg(asLongReg(src), asLongReg(dst)); + masm.neg(asRegister(src, Kind.Long), asRegister(dst, Kind.Long)); break; case INOT: delaySlotLir.emitControlTransfer(crb, masm); - masm.not(asIntReg(src), asIntReg(dst)); + masm.not(asRegister(src, Kind.Int), asRegister(dst, Kind.Int)); break; case LNOT: delaySlotLir.emitControlTransfer(crb, masm); - masm.not(asLongReg(src), asLongReg(dst)); + masm.not(asRegister(src, Kind.Long), asRegister(dst, Kind.Long)); break; case D2F: delaySlotLir.emitControlTransfer(crb, masm); - masm.fdtos(asDoubleReg(src), asFloatReg(dst)); + masm.fdtos(asRegister(src, Kind.Double), asRegister(dst, Kind.Float)); break; case L2D: delaySlotLir.emitControlTransfer(crb, masm); - masm.fxtod(asDoubleReg(src), asDoubleReg(dst)); + masm.fxtod(asRegister(src, Kind.Double), asRegister(dst, Kind.Double)); break; case L2F: delaySlotLir.emitControlTransfer(crb, masm); - masm.fxtos(asDoubleReg(src), asFloatReg(dst)); + masm.fxtos(asRegister(src, Kind.Double), asRegister(dst, Kind.Float)); break; case I2D: delaySlotLir.emitControlTransfer(crb, masm); - masm.fitod(asFloatReg(src), asDoubleReg(dst)); + masm.fitod(asRegister(src, Kind.Float), asRegister(dst, Kind.Double)); break; case I2L: delaySlotLir.emitControlTransfer(crb, masm); - masm.signx(asIntReg(src), asLongReg(dst)); + masm.signx(asRegister(src, Kind.Int), asRegister(dst, Kind.Long)); break; case L2I: delaySlotLir.emitControlTransfer(crb, masm); - masm.signx(asLongReg(src), asIntReg(dst)); + masm.signx(asRegister(src, Kind.Long), asRegister(dst, Kind.Int)); break; case B2L: - masm.sll(asIntReg(src), 24, asLongReg(dst)); + masm.sll(asRegister(src, Kind.Int), 24, asRegister(dst, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sra(asLongReg(dst), 24, asLongReg(dst)); + masm.sra(asRegister(dst, Kind.Long), 24, asRegister(dst, Kind.Long)); break; case B2I: - masm.sll(asIntReg(src), 24, asIntReg(dst)); + masm.sll(asRegister(src, Kind.Int), 24, asRegister(dst, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sra(asIntReg(dst), 24, asIntReg(dst)); + masm.sra(asRegister(dst, Kind.Int), 24, asRegister(dst, Kind.Int)); break; case S2L: - masm.sll(asIntReg(src), 16, asLongReg(dst)); + masm.sll(asRegister(src, Kind.Int), 16, asRegister(dst, Kind.Long)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sra(asLongReg(dst), 16, asLongReg(dst)); + masm.sra(asRegister(dst, Kind.Long), 16, asRegister(dst, Kind.Long)); break; case S2I: - masm.sll(asIntReg(src), 16, asIntReg(dst)); + masm.sll(asRegister(src, Kind.Int), 16, asRegister(dst, Kind.Int)); delaySlotLir.emitControlTransfer(crb, masm); - masm.sra(asIntReg(dst), 16, asIntReg(dst)); + masm.sra(asRegister(dst, Kind.Int), 16, asRegister(dst, Kind.Int)); break; case I2F: delaySlotLir.emitControlTransfer(crb, masm); - masm.fitos(asFloatReg(src), asFloatReg(dst)); + masm.fitos(asRegister(src, Kind.Float), asRegister(dst, Kind.Float)); break; case F2D: delaySlotLir.emitControlTransfer(crb, masm); - masm.fstod(asFloatReg(src), asDoubleReg(dst)); + masm.fstod(asRegister(src, Kind.Float), asRegister(dst, Kind.Double)); break; case F2L: - masm.fcmp(Fcc0, Fcmps, asFloatReg(src), asFloatReg(src)); + masm.fcmp(Fcc0, Fcmps, asRegister(src, Kind.Float), asRegister(src, Kind.Float)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); - masm.fstox(asFloatReg(src), asDoubleReg(dst)); + masm.fstox(asRegister(src, Kind.Float), asRegister(dst, Kind.Double)); masm.fxtod(asRegister(dst), asRegister(dst)); - masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); + masm.fsubd(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double), asRegister(dst, Kind.Double)); masm.bind(notOrdered); break; case F2I: - masm.fcmp(Fcc0, Fcmps, asFloatReg(src), asFloatReg(src)); + masm.fcmp(Fcc0, Fcmps, asRegister(src, Kind.Float), asRegister(src, Kind.Float)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); - masm.fstoi(asFloatReg(src), asFloatReg(dst)); - masm.fitos(asFloatReg(dst), asFloatReg(dst)); - masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); + masm.fstoi(asRegister(src, Kind.Float), asRegister(dst, Kind.Float)); + masm.fitos(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float)); + masm.fsubs(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float), asRegister(dst, Kind.Float)); masm.bind(notOrdered); break; case D2L: - masm.fcmp(Fcc0, Fcmpd, asDoubleReg(src), asDoubleReg(src)); + masm.fcmp(Fcc0, Fcmpd, asRegister(src, Kind.Double), asRegister(src, Kind.Double)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); - masm.fdtox(asDoubleReg(src), asDoubleReg(dst)); - masm.fxtod(asDoubleReg(dst), asDoubleReg(dst)); - masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); + masm.fdtox(asRegister(src, Kind.Double), asRegister(dst, Kind.Double)); + masm.fxtod(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double)); + masm.fsubd(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double), asRegister(dst, Kind.Double)); masm.bind(notOrdered); break; case D2I: - masm.fcmp(Fcc0, Fcmpd, asDoubleReg(src), asDoubleReg(src)); + masm.fcmp(Fcc0, Fcmpd, asRegister(src, Kind.Double), asRegister(src, Kind.Double)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); - masm.fdtoi(asDoubleReg(src), asFloatReg(dst)); - masm.fitos(asFloatReg(dst), asFloatReg(dst)); - masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); + masm.fdtoi(asRegister(src, Kind.Double), asRegister(dst, Kind.Float)); + masm.fitos(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float)); + masm.fsubs(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float), asRegister(dst, Kind.Float)); masm.bind(notOrdered); break; case FNEG: delaySlotLir.emitControlTransfer(crb, masm); - masm.fnegs(asFloatReg(src), asFloatReg(dst)); + masm.fnegs(asRegister(src, Kind.Float), asRegister(dst, Kind.Float)); break; case DNEG: delaySlotLir.emitControlTransfer(crb, masm); - masm.fnegd(asDoubleReg(src), asDoubleReg(dst)); + masm.fnegd(asRegister(src, Kind.Double), asRegister(dst, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere("missing: " + opcode); @@ -797,7 +797,7 @@ } } - private static void verifyKind(SPARCArithmetic opcode, Kind result, Kind x, Kind y) { + private static void verifyKind(SPARCArithmetic opcode, PlatformKind result, PlatformKind x, PlatformKind y) { Kind rk; Kind xk; Kind yk; @@ -821,9 +821,9 @@ case IUSHR: case IUDIV: case IUREM: - rk = result.getStackKind(); - xsk = x.getStackKind(); - ysk = y.getStackKind(); + rk = ((Kind) result).getStackKind(); + xsk = ((Kind) x).getStackKind(); + ysk = ((Kind) y).getStackKind(); boolean valid = false; for (Kind k : new Kind[]{Kind.Int, Kind.Short, Kind.Byte, Kind.Char}) { valid |= rk == k && xsk == k && ysk == k; @@ -843,17 +843,17 @@ case LXOR: case LUDIV: case LUREM: - rk = result; - xk = x; - yk = y; + rk = (Kind) result; + xk = (Kind) x; + yk = (Kind) y; assert rk == Kind.Long && xk == Kind.Long && yk == Kind.Long; break; case LSHL: case LSHR: case LUSHR: - rk = result; - xk = x; - yk = y; + rk = (Kind) result; + xk = (Kind) x; + yk = (Kind) y; assert rk == Kind.Long && xk == Kind.Long && (yk == Kind.Int || yk == Kind.Long); break; case FADD: @@ -861,9 +861,9 @@ case FMUL: case FDIV: case FREM: - rk = result; - xk = x; - yk = y; + rk = (Kind) result; + xk = (Kind) x; + yk = (Kind) y; assert (rk == Kind.Float || rk == Kind.Double) && xk == Kind.Float && yk == Kind.Float; break; case DAND: @@ -872,9 +872,9 @@ case DMUL: case DDIV: case DREM: - rk = result; - xk = x; - yk = y; + rk = (Kind) result; + xk = (Kind) x; + yk = (Kind) y; assert rk == Kind.Double && xk == Kind.Double && yk == Kind.Double : "opcode=" + opcode + ", result kind=" + rk + ", x kind=" + xk + ", y kind=" + yk; break; default: @@ -908,30 +908,30 @@ case IMUL: masm.sra(asRegister(x), 0, asRegister(x)); masm.sra(asRegister(y), 0, asRegister(y)); - masm.mulx(asIntReg(x), asIntReg(y), asIntReg(result)); - masm.srax(asIntReg(result), 32, asIntReg(result)); + masm.mulx(asRegister(x, Kind.Int), asRegister(y, Kind.Int), asRegister(result, Kind.Int)); + masm.srax(asRegister(result, Kind.Int), 32, asRegister(result, Kind.Int)); break; case IUMUL: - assert !asIntReg(scratch).equals(asIntReg(result)); - masm.srl(asIntReg(x), 0, asIntReg(scratch)); - masm.srl(asIntReg(y), 0, asIntReg(result)); - masm.mulx(asIntReg(result), asIntReg(scratch), asIntReg(result)); - masm.srlx(asIntReg(result), 32, asIntReg(result)); + assert !asRegister(scratch, Kind.Int).equals(asRegister(result, Kind.Int)); + masm.srl(asRegister(x, Kind.Int), 0, asRegister(scratch, Kind.Int)); + masm.srl(asRegister(y, Kind.Int), 0, asRegister(result, Kind.Int)); + masm.mulx(asRegister(result, Kind.Int), asRegister(scratch, Kind.Int), asRegister(result, Kind.Int)); + masm.srlx(asRegister(result, Kind.Int), 32, asRegister(result, Kind.Int)); break; case LMUL: - assert !asLongReg(scratch).equals(asLongReg(result)); - masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)); + assert !asRegister(scratch, Kind.Long).equals(asRegister(result, Kind.Long)); + masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long)); - masm.srlx(asLongReg(x), 63, asLongReg(scratch)); - masm.mulx(asLongReg(scratch), asLongReg(y), asLongReg(scratch)); - masm.sub(asLongReg(result), asLongReg(scratch), asLongReg(result)); + masm.srlx(asRegister(x, Kind.Long), 63, asRegister(scratch, Kind.Long)); + masm.mulx(asRegister(scratch, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch, Kind.Long)); + masm.sub(asRegister(result, Kind.Long), asRegister(scratch, Kind.Long), asRegister(result, Kind.Long)); - masm.srlx(asLongReg(y), 63, asLongReg(scratch)); - masm.mulx(asLongReg(scratch), asLongReg(x), asLongReg(scratch)); - masm.sub(asLongReg(result), asLongReg(scratch), asLongReg(result)); + masm.srlx(asRegister(y, Kind.Long), 63, asRegister(scratch, Kind.Long)); + masm.mulx(asRegister(scratch, Kind.Long), asRegister(x, Kind.Long), asRegister(scratch, Kind.Long)); + masm.sub(asRegister(result, Kind.Long), asRegister(scratch, Kind.Long), asRegister(result, Kind.Long)); break; case LUMUL: - masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)); + masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long)); break; default: throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -99,11 +99,11 @@ Label done = new Label(); // Load array base addresses. - masm.add(asObjectReg(array1Value), arrayBaseOffset, array1); - masm.add(asObjectReg(array2Value), arrayBaseOffset, array2); + masm.add(asRegister(array1Value), arrayBaseOffset, array1); + masm.add(asRegister(array2Value), arrayBaseOffset, array2); // Get array length in bytes. - masm.mulx(asIntReg(lengthValue), arrayIndexScale, length); + masm.mulx(asRegister(lengthValue, Kind.Int), arrayIndexScale, length); masm.mov(length, result); // copy emit8ByteCompare(masm, result, array1, array2, length, trueLabel, falseLabel);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -68,7 +68,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - Register dst = asIntReg(result); + Register dst = asRegister(result, Kind.Int); if (isRegister(input)) { Register src = asRegister(input); switch (opcode) { @@ -81,7 +81,7 @@ masm.popc(src, dst); break; case BSF: - Kind tkind = input.getKind(); + PlatformKind tkind = input.getPlatformKind(); if (tkind == Kind.Int) { masm.sub(src, 1, dst); masm.andn(dst, src, dst); @@ -96,7 +96,7 @@ } break; case IBSR: { - Kind ikind = input.getKind(); + PlatformKind ikind = input.getPlatformKind(); assert ikind == Kind.Int; Register tmp = asRegister(scratch); assert !tmp.equals(dst); @@ -116,7 +116,7 @@ break; } case LBSR: { - Kind lkind = input.getKind(); + PlatformKind lkind = input.getPlatformKind(); assert lkind == Kind.Long; Register tmp = asRegister(scratch); assert !tmp.equals(dst);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -54,19 +54,19 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { SPARCAddress addr = (SPARCAddress) crb.asAddress(tmpSlot); - SPARCMove.emitStore(input, addr, result.getKind(), SPARCDelayedControlTransfer.DUMMY, null, crb, masm); + SPARCMove.emitStore(input, addr, result.getPlatformKind(), SPARCDelayedControlTransfer.DUMMY, null, crb, masm); if (addr.getIndex().equals(Register.None)) { - Register tempReg = ValueUtil.asLongReg(tempIndex); + Register tempReg = ValueUtil.asRegister(tempIndex, Kind.Long); new SPARCMacroAssembler.Setx(addr.getDisplacement(), tempReg, false).emit(masm); addr = new SPARCAddress(addr.getBase(), tempReg); } getDelayedControlTransfer().emitControlTransfer(crb, masm); - switch (input.getKind()) { + switch ((Kind) input.getPlatformKind()) { case Int: - masm.lduwa(addr.getBase(), addr.getIndex(), asIntReg(result), Asi.ASI_PRIMARY_LITTLE); + masm.lduwa(addr.getBase(), addr.getIndex(), asRegister(result, Kind.Int), Asi.ASI_PRIMARY_LITTLE); break; case Long: - masm.ldxa(addr.getBase(), addr.getIndex(), asLongReg(result), Asi.ASI_PRIMARY_LITTLE); + masm.ldxa(addr.getBase(), addr.getIndex(), asRegister(result, Kind.Long), Asi.ASI_PRIMARY_LITTLE); break; default: throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java Tue Sep 08 15:11:16 2015 +0200 @@ -66,15 +66,15 @@ @Override public void verify() { super.verify(); - assert CompareBranchOp.SUPPORTED_KINDS.contains(x.getKind()) : x.getKind(); - assert x.getKind().equals(y.getKind()) : x + " " + y; + assert CompareBranchOp.SUPPORTED_KINDS.contains(x.getPlatformKind()) : x.getPlatformKind(); + assert x.getPlatformKind().equals(y.getPlatformKind()) : x + " " + y; // @formatter:off assert - (name().startsWith("I") && x.getKind() == Kind.Int && y.getKind().getStackKind() == Kind.Int) || - (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) || - (name().startsWith("D") && x.getKind() == Kind.Double && y.getKind() == Kind.Double) + (name().startsWith("I") && x.getPlatformKind() == Kind.Int && ((Kind) y.getPlatformKind()).getStackKind() == Kind.Int) || + (name().startsWith("L") && x.getPlatformKind() == Kind.Long && y.getPlatformKind() == Kind.Long) || + (name().startsWith("A") && x.getPlatformKind() == Kind.Object && y.getPlatformKind() == Kind.Object) || + (name().startsWith("F") && x.getPlatformKind() == Kind.Float && y.getPlatformKind() == Kind.Float) || + (name().startsWith("D") && x.getPlatformKind() == Kind.Double && y.getPlatformKind() == Kind.Double) : "Name; " + name() + " x: " + x + " y: " + y; // @formatter:on } @@ -84,19 +84,19 @@ if (isRegister(y)) { switch (opcode) { case ICMP: - masm.cmp(asIntReg(x), asIntReg(y)); + masm.cmp(asRegister(x, Kind.Int), asRegister(y, Kind.Int)); break; case LCMP: - masm.cmp(asLongReg(x), asLongReg(y)); + masm.cmp(asRegister(x, Kind.Long), asRegister(y, Kind.Long)); break; case ACMP: - masm.cmp(asObjectReg(x), asObjectReg(y)); + masm.cmp(asRegister(x), asRegister(y)); break; case FCMP: - masm.fcmp(Fcc0, Fcmps, asFloatReg(x), asFloatReg(y)); + masm.fcmp(Fcc0, Fcmps, asRegister(x, Kind.Float), asRegister(y, Kind.Float)); break; case DCMP: - masm.fcmp(Fcc0, Fcmpd, asDoubleReg(x), asDoubleReg(y)); + masm.fcmp(Fcc0, Fcmpd, asRegister(x, Kind.Double), asRegister(y, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere(); @@ -106,24 +106,24 @@ switch (opcode) { case LCMP: assert isSimm13(crb.asLongConst(y)); - masm.cmp(asLongReg(x), (int) crb.asLongConst(y)); + masm.cmp(asRegister(x, Kind.Long), (int) crb.asLongConst(y)); break; case ICMP: assert isSimm13(crb.asIntConst(y)); - masm.cmp(asIntReg(x), crb.asIntConst(y)); + masm.cmp(asRegister(x, Kind.Int), crb.asIntConst(y)); break; case ACMP: if (asJavaConstant(y).isNull()) { - masm.cmp(asObjectReg(x), 0); + masm.cmp(asRegister(x), 0); break; } else { throw JVMCIError.shouldNotReachHere("Only null object constants are allowed in comparisons"); } case FCMP: - masm.fcmp(Fcc0, Fcmps, asFloatReg(x), asFloatReg(y)); + masm.fcmp(Fcc0, Fcmps, asRegister(x, Kind.Float), asRegister(y, Kind.Float)); break; case DCMP: - masm.fcmp(Fcc0, Fcmpd, asDoubleReg(x), asDoubleReg(y)); + masm.fcmp(Fcc0, Fcmpd, asRegister(x, Kind.Double), asRegister(y, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Tue Sep 08 15:11:16 2015 +0200 @@ -239,26 +239,26 @@ case Int: if (isJavaConstant(actualY)) { int constantY = asJavaConstant(actualY).asInt(); - CBCOND.emit(masm, conditionFlag, false, asIntReg(actualX), constantY, actualTrueTarget); + CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, Kind.Int), constantY, actualTrueTarget); } else { - CBCOND.emit(masm, conditionFlag, false, asIntReg(actualX), asIntReg(actualY), actualTrueTarget); + CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, Kind.Int), asRegister(actualY, Kind.Int), actualTrueTarget); } break; case Long: if (isJavaConstant(actualY)) { int constantY = (int) asJavaConstant(actualY).asLong(); - CBCOND.emit(masm, conditionFlag, true, asLongReg(actualX), constantY, actualTrueTarget); + CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, Kind.Long), constantY, actualTrueTarget); } else { - CBCOND.emit(masm, conditionFlag, true, asLongReg(actualX), asLongReg(actualY), actualTrueTarget); + CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, Kind.Long), asRegister(actualY, Kind.Long), actualTrueTarget); } break; case Object: if (isJavaConstant(actualY)) { // Object constant valid can only be null assert asJavaConstant(actualY).isNull(); - CBCOND.emit(masm, conditionFlag, true, asObjectReg(actualX), 0, actualTrueTarget); + CBCOND.emit(masm, conditionFlag, true, asRegister(actualX), 0, actualTrueTarget); } else { // this is already loaded - CBCOND.emit(masm, conditionFlag, true, asObjectReg(actualX), asObjectReg(actualY), actualTrueTarget); + CBCOND.emit(masm, conditionFlag, true, asRegister(actualX), asRegister(actualY), actualTrueTarget); } break; default: @@ -303,7 +303,7 @@ public void verify() { super.verify(); assert SUPPORTED_KINDS.contains(kind) : kind; - assert x.getKind().equals(kind) && y.getKind().equals(kind) : x + " " + y; + assert x.getPlatformKind().equals(kind) && y.getPlatformKind().equals(kind) : x + " " + y; } } @@ -454,7 +454,7 @@ JavaConstant constant = keyConstants[index]; CC conditionCode; Long bits; - switch (key.getKind()) { + switch (constant.getKind()) { case Char: case Byte: case Short: @@ -548,8 +548,8 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - Register value = asIntReg(index); - Register scratchReg = asLongReg(scratch); + Register value = asRegister(index, Kind.Int); + Register scratchReg = asRegister(scratch, Kind.Long); // Compare index against jump table bounds int highKey = lowKey + targets.length - 1; @@ -649,17 +649,17 @@ public SizeEstimate estimateSize() { int constantSize = 0; if (isJavaConstant(trueValue) && !SPARCAssembler.isSimm13(asJavaConstant(trueValue))) { - constantSize += trueValue.getKind().getByteCount(); + constantSize += trueValue.getPlatformKind().getSizeInBytes(); } if (isJavaConstant(falseValue) && !SPARCAssembler.isSimm13(asJavaConstant(falseValue))) { - constantSize += trueValue.getKind().getByteCount(); + constantSize += trueValue.getPlatformKind().getSizeInBytes(); } return SizeEstimate.create(3, constantSize); } } private static void cmove(SPARCMacroAssembler masm, CC cc, Value result, ConditionFlag cond, Value other) { - switch (other.getKind()) { + switch ((Kind) other.getPlatformKind()) { case Boolean: case Byte: case Short: @@ -692,10 +692,10 @@ } break; case Float: - masm.fmovscc(cond, cc, asFloatReg(other), asFloatReg(result)); + masm.fmovscc(cond, cc, asRegister(other, Kind.Float), asRegister(result, Kind.Float)); break; case Double: - masm.fmovdcc(cond, cc, asDoubleReg(other), asDoubleReg(result)); + masm.fmovdcc(cond, cc, asRegister(other, Kind.Double), asRegister(result, Kind.Double)); break; default: throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -58,10 +58,10 @@ case SQRT: switch (inputKind) { case Float: - masm.fsqrts(asFloatReg(input), asFloatReg(result)); + masm.fsqrts(asRegister(input, Kind.Float), asRegister(result, Kind.Float)); break; case Double: - masm.fsqrtd(asDoubleReg(input), asDoubleReg(result)); + masm.fsqrtd(asRegister(input, Kind.Double), asRegister(result, Kind.Double)); break; default: JVMCIError.shouldNotReachHere(); @@ -70,10 +70,10 @@ case ABS: switch (inputKind) { case Float: - masm.fabss(asFloatReg(input), asFloatReg(result)); + masm.fabss(asRegister(input, Kind.Float), asRegister(result, Kind.Float)); break; case Double: - masm.fabsd(asDoubleReg(input), asDoubleReg(result)); + masm.fabsd(asRegister(input, Kind.Double), asRegister(result, Kind.Double)); break; default: JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Tue Sep 08 15:11:16 2015 +0200 @@ -189,25 +189,25 @@ getDelayedControlTransfer().emitControlTransfer(crb, masm); if (resultKind == Float) { if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) { - masm.movwtos(asIntReg(input), asFloatReg(result)); + masm.movwtos(asRegister(input, Kind.Int), asRegister(result, Kind.Float)); } else { throw JVMCIError.shouldNotReachHere(); } } else if (resultKind == Double) { if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) { - masm.movxtod(asIntReg(input), asDoubleReg(result)); + masm.movxtod(asRegister(input, Kind.Int), asRegister(result, Kind.Double)); } else { - masm.movxtod(asLongReg(input), asDoubleReg(result)); + masm.movxtod(asRegister(input, Kind.Long), asRegister(result, Kind.Double)); } } else if (inputKind == Float) { if (resultKind == Int || resultKind == Short || resultKind == Byte) { - masm.movstosw(asFloatReg(input), asIntReg(result)); + masm.movstosw(asRegister(input, Kind.Float), asRegister(result, Kind.Int)); } else { - masm.movstouw(asFloatReg(input), asIntReg(result)); + masm.movstouw(asRegister(input, Kind.Float), asRegister(result, Kind.Int)); } } else if (inputKind == Double) { if (resultKind == Long) { - masm.movdtox(asDoubleReg(input), asLongReg(result)); + masm.movdtox(asRegister(input, Kind.Double), asRegister(result, Kind.Long)); } else { throw JVMCIError.shouldNotReachHere(); } @@ -297,7 +297,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { SPARCAddress address = addressValue.toAddress(); - loadEffectiveAddress(crb, masm, address, asLongReg(result), getDelayedControlTransfer()); + loadEffectiveAddress(crb, masm, address, asRegister(result, Kind.Long), getDelayedControlTransfer()); } } @@ -424,7 +424,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { SPARCAddress address = (SPARCAddress) crb.asAddress(slot); - loadEffectiveAddress(crb, masm, address, asLongReg(result), getDelayedControlTransfer()); + loadEffectiveAddress(crb, masm, address, asRegister(result, Kind.Long), getDelayedControlTransfer()); } } @@ -688,7 +688,7 @@ protected static void compareAndSwap(CompilationResultBuilder crb, SPARCMacroAssembler masm, AllocatableValue address, AllocatableValue cmpValue, AllocatableValue newValue, SPARCDelayedControlTransfer delay) { delay.emitControlTransfer(crb, masm); - switch (cmpValue.getKind()) { + switch ((Kind) cmpValue.getPlatformKind()) { case Int: masm.cas(asRegister(address), asRegister(cmpValue), asRegister(newValue)); break;
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTestOp.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTestOp.java Tue Sep 08 15:11:16 2015 +0200 @@ -49,31 +49,31 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { if (isRegister(y)) { - switch (x.getKind()) { + switch ((Kind) x.getPlatformKind()) { case Short: case Byte: case Char: case Boolean: case Int: - masm.andcc(asIntReg(x), asIntReg(y), g0); + masm.andcc(asRegister(x, Kind.Int), asRegister(y, Kind.Int), g0); break; case Long: - masm.andcc(asLongReg(x), asLongReg(y), g0); + masm.andcc(asRegister(x, Kind.Long), asRegister(y, Kind.Long), g0); break; default: throw JVMCIError.shouldNotReachHere(); } } else if (isJavaConstant(y)) { - switch (x.getKind()) { + switch ((Kind) x.getPlatformKind()) { case Short: case Byte: case Char: case Boolean: case Int: - masm.andcc(asIntReg(x), crb.asIntConst(y), g0); + masm.andcc(asRegister(x, Kind.Int), crb.asIntConst(y), g0); break; case Long: - masm.andcc(asLongReg(x), crb.asIntConst(y), g0); + masm.andcc(asRegister(x, Kind.Long), crb.asIntConst(y), g0); break; default: throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanIntervalDumper.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanIntervalDumper.java Tue Sep 08 15:11:16 2015 +0200 @@ -47,7 +47,7 @@ Value hint = interval.locationHint(false) != null ? interval.locationHint(false).operand : null; AllocatableValue operand = interval.operand; String type = isRegister(operand) ? "fixed" : operand.getLIRKind().getPlatformKind().toString(); - char typeChar = operand.getKind().getTypeChar(); + char typeChar = operand.getPlatformKind().getTypeChar(); visitor.visitIntervalStart(interval.splitParent().operand, operand, interval.location(), hint, type, typeChar); // print ranges
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanLifetimeAnalysisPhase.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanLifetimeAnalysisPhase.java Tue Sep 08 15:11:16 2015 +0200 @@ -316,7 +316,7 @@ /* * liveIn(block) is the union of liveGen(block) with (liveOut(block) & * !liveKill(block)). - * + * * Note: liveIn has to be computed only in first iteration or if liveOut * has changed! */ @@ -634,7 +634,7 @@ * Object method arguments that are passed on the stack are currently not optimized because * this requires that the runtime visits method arguments during stack walking. */ - return isStackSlot(value) && asStackSlot(value).isInCallerFrame() && value.getKind() != Kind.Object; + return isStackSlot(value) && asStackSlot(value).isInCallerFrame() && value.getLIRKind().isValue(); } /**
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceIntervalDumper.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceIntervalDumper.java Tue Sep 08 15:11:16 2015 +0200 @@ -53,7 +53,7 @@ Value hint = null; AllocatableValue operand = interval.operand; String type = "fixed"; - char typeChar = operand.getKind().getTypeChar(); + char typeChar = operand.getPlatformKind().getTypeChar(); visitor.visitIntervalStart(operand, operand, operand, hint, type, typeChar); // print ranges @@ -71,7 +71,7 @@ Value hint = interval.locationHint(false) != null ? interval.locationHint(false).location() : null; AllocatableValue operand = interval.operand; String type = isRegister(operand) ? "fixed" : operand.getLIRKind().getPlatformKind().toString(); - char typeChar = operand.getKind().getTypeChar(); + char typeChar = operand.getPlatformKind().getTypeChar(); visitor.visitIntervalStart(interval.splitParent().operand, operand, interval.location(), hint, type, typeChar); // print ranges
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Tue Sep 08 15:11:16 2015 +0200 @@ -347,7 +347,7 @@ /* * liveIn(block) is the union of liveGen(block) with (liveOut(block) & * !liveKill(block)). - * + * * Note: liveIn has to be computed only in first iteration or if liveOut * has changed! */ @@ -738,7 +738,7 @@ * Object method arguments that are passed on the stack are currently not optimized because * this requires that the runtime visits method arguments during stack walking. */ - return isStackSlot(value) && asStackSlot(value).isInCallerFrame() && value.getKind() != Kind.Object; + return isStackSlot(value) && asStackSlot(value).isInCallerFrame() && value.getLIRKind().isValue(); } /**
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java Tue Sep 08 15:11:16 2015 +0200 @@ -216,7 +216,7 @@ * including long constants that fit into the 32-bit range. */ public int asIntConst(Value value) { - assert (value.getKind().isNumericInteger()) && isJavaConstant(value); + assert isJavaConstant(value) && asJavaConstant(value).getKind().isNumericInteger(); JavaConstant constant = asJavaConstant(value); assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch"; long c = constant.asLong(); @@ -230,7 +230,7 @@ * Returns the float value of any constant that can be represented by a 32-bit float value. */ public float asFloatConst(Value value) { - assert (value.getKind().getStackKind() == Kind.Float && isJavaConstant(value)); + assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Float; JavaConstant constant = asJavaConstant(value); assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch"; return constant.asFloat(); @@ -240,7 +240,7 @@ * Returns the long value of any constant that can be represented by a 64-bit long value. */ public long asLongConst(Value value) { - assert (value.getKind().getStackKind() == Kind.Long && isJavaConstant(value)); + assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Long; JavaConstant constant = asJavaConstant(value); assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch"; return constant.asLong(); @@ -250,7 +250,7 @@ * Returns the double value of any constant that can be represented by a 64-bit float value. */ public double asDoubleConst(Value value) { - assert (value.getKind().getStackKind() == Kind.Double && isJavaConstant(value)); + assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Double; JavaConstant constant = asJavaConstant(value); assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch"; return constant.asDouble(); @@ -297,37 +297,32 @@ } public AbstractAddress asByteAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Byte.getByteCount(); + assert value.getPlatformKind().getSizeInBytes() >= Kind.Byte.getByteCount(); return asAddress(value); } public AbstractAddress asShortAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Short.getByteCount(); + assert value.getPlatformKind().getSizeInBytes() >= Kind.Short.getByteCount(); return asAddress(value); } public AbstractAddress asIntAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Int.getByteCount(); + assert value.getPlatformKind().getSizeInBytes() >= Kind.Int.getByteCount(); return asAddress(value); } public AbstractAddress asLongAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Long.getByteCount(); - return asAddress(value); - } - - public AbstractAddress asObjectAddr(Value value) { - assert value.getKind() == Kind.Object; + assert value.getPlatformKind().getSizeInBytes() >= Kind.Long.getByteCount(); return asAddress(value); } public AbstractAddress asFloatAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Float.getByteCount(); + assert value.getPlatformKind().getSizeInBytes() >= Kind.Float.getByteCount(); return asAddress(value); } public AbstractAddress asDoubleAddr(Value value) { - assert value.getKind().getByteCount() >= Kind.Double.getByteCount(); + assert value.getPlatformKind().getSizeInBytes() >= Kind.Double.getByteCount(); return asAddress(value); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java Tue Sep 08 15:11:16 2015 +0200 @@ -283,22 +283,6 @@ */ protected abstract void emitForeignCallOp(ForeignCallLinkage linkage, Value result, Value[] arguments, Value[] temps, LIRFrameState info); - public static AllocatableValue toStackKind(AllocatableValue value) { - if (value.getKind().getStackKind() != value.getKind()) { - // We only have stack-kinds in the LIR, so convert the operand kind for values from the - // calling convention. - LIRKind stackKind = value.getLIRKind().changeType(value.getKind().getStackKind()); - if (isRegister(value)) { - return asRegister(value).asValue(stackKind); - } else if (isStackSlot(value)) { - return StackSlot.get(stackKind, asStackSlot(value).getRawOffset(), asStackSlot(value).getRawAddFrameSize()); - } else { - throw JVMCIError.shouldNotReachHere(); - } - } - return value; - } - @Override public Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState frameState, Value... args) { LIRFrameState state = null; @@ -436,6 +420,10 @@ // automatic derived reference handling + protected boolean isNumericInteger(PlatformKind kind) { + return ((Kind) kind).isNumericInteger(); + } + protected abstract Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags); public final Variable emitAdd(Value aVal, Value bVal, boolean setFlags) { @@ -443,7 +431,7 @@ Value a = aVal; Value b = bVal; - if (a.getKind().isNumericInteger()) { + if (isNumericInteger(a.getPlatformKind())) { LIRKind aKind = a.getLIRKind(); LIRKind bKind = b.getLIRKind(); assert a.getPlatformKind() == b.getPlatformKind(); @@ -487,7 +475,7 @@ Value a = aVal; Value b = bVal; - if (a.getKind().isNumericInteger()) { + if (isNumericInteger(a.getPlatformKind())) { LIRKind aKind = a.getLIRKind(); LIRKind bKind = b.getLIRKind(); assert a.getPlatformKind() == b.getPlatformKind();
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackIntervalDumper.java Tue Sep 08 12:16:00 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackIntervalDumper.java Tue Sep 08 15:11:16 2015 +0200 @@ -46,7 +46,7 @@ Value hint = interval.locationHint() != null ? interval.locationHint().getOperand() : null; VirtualStackSlot operand = interval.getOperand(); String type = operand.getLIRKind().getPlatformKind().toString(); - char typeChar = operand.getKind().getTypeChar(); + char typeChar = operand.getPlatformKind().getTypeChar(); visitor.visitIntervalStart(operand, operand, interval.location(), hint, type, typeChar); // print ranges
--- a/mx.graal/suite.py Tue Sep 08 12:16:00 2015 +0200 +++ b/mx.graal/suite.py Tue Sep 08 15:11:16 2015 +0200 @@ -6,7 +6,7 @@ "suites": [ { "name" : "jvmci", - "version" : "952d4d634a4251e2c873bda403446ae051d50ad9", + "version" : "df053711614bbad30c2b885f7a49ee1d7f0c180d", "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"},