comparison graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java @ 21543:93c50cefb9e8

moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
author Doug Simon <doug.simon@oracle.com>
date Mon, 25 May 2015 23:30:34 +0200
parents fb2b27418347
children 48c1ebd24120
comparison
equal deleted inserted replaced
21542:543957c1c6a6 21543:93c50cefb9e8
41 import com.oracle.graal.asm.sparc.SPARCAssembler.BranchPredict; 41 import com.oracle.graal.asm.sparc.SPARCAssembler.BranchPredict;
42 import com.oracle.graal.asm.sparc.SPARCAssembler.CC; 42 import com.oracle.graal.asm.sparc.SPARCAssembler.CC;
43 import com.oracle.graal.asm.sparc.SPARCAssembler.ConditionFlag; 43 import com.oracle.graal.asm.sparc.SPARCAssembler.ConditionFlag;
44 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.ScratchRegister; 44 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.ScratchRegister;
45 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Setx; 45 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Setx;
46 import com.oracle.graal.compiler.common.*;
47 import com.oracle.graal.compiler.common.calc.*; 46 import com.oracle.graal.compiler.common.calc.*;
48 import com.oracle.graal.lir.*; 47 import com.oracle.graal.lir.*;
49 import com.oracle.graal.lir.StandardOp.BlockEndOp; 48 import com.oracle.graal.lir.StandardOp.BlockEndOp;
50 import com.oracle.graal.lir.SwitchStrategy.BaseSwitchClosure; 49 import com.oracle.graal.lir.SwitchStrategy.BaseSwitchClosure;
51 import com.oracle.graal.lir.asm.*; 50 import com.oracle.graal.lir.asm.*;
52 import com.oracle.graal.sparc.SPARC.CPUFeature; 51 import com.oracle.graal.sparc.SPARC.CPUFeature;
52 import com.oracle.jvmci.common.*;
53 53
54 public class SPARCControlFlow { 54 public class SPARCControlFlow {
55 55
56 public static final class ReturnOp extends SPARCLIRInstruction implements BlockEndOp { 56 public static final class ReturnOp extends SPARCLIRInstruction implements BlockEndOp {
57 public static final LIRInstructionClass<ReturnOp> TYPE = LIRInstructionClass.create(ReturnOp.class); 57 public static final LIRInstructionClass<ReturnOp> TYPE = LIRInstructionClass.create(ReturnOp.class);
258 } else { // this is already loaded 258 } else { // this is already loaded
259 masm.cbcondx(conditionFlag, asObjectReg(actualX), asObjectReg(actualY), actualTrueTarget); 259 masm.cbcondx(conditionFlag, asObjectReg(actualX), asObjectReg(actualY), actualTrueTarget);
260 } 260 }
261 break; 261 break;
262 default: 262 default:
263 GraalInternalError.shouldNotReachHere(); 263 JVMCIError.shouldNotReachHere();
264 } 264 }
265 } 265 }
266 266
267 private boolean canUseShortBranch(CompilationResultBuilder crb, SPARCAssembler asm, int position) { 267 private boolean canUseShortBranch(CompilationResultBuilder crb, SPARCAssembler asm, int position) {
268 if (!asm.hasFeature(CPUFeature.CBCOND)) { 268 if (!asm.hasFeature(CPUFeature.CBCOND)) {
437 conditionCode = CC.Ptrcc; 437 conditionCode = CC.Ptrcc;
438 scratchRegister = asObjectReg(scratch); 438 scratchRegister = asObjectReg(scratch);
439 break; 439 break;
440 } 440 }
441 default: 441 default:
442 throw new GraalInternalError("switch only supported for int, long and object"); 442 throw new JVMCIError("switch only supported for int, long and object");
443 } 443 }
444 ConditionFlag conditionFlag = ConditionFlag.fromCondtition(conditionCode, condition, false); 444 ConditionFlag conditionFlag = ConditionFlag.fromCondtition(conditionCode, condition, false);
445 masm.cmp(keyRegister, scratchRegister); 445 masm.cmp(keyRegister, scratchRegister);
446 masm.bpcc(conditionFlag, NOT_ANNUL, target, conditionCode, PREDICT_TAKEN); 446 masm.bpcc(conditionFlag, NOT_ANNUL, target, conditionCode, PREDICT_TAKEN);
447 masm.nop(); // delay slot 447 masm.nop(); // delay slot
598 break; 598 break;
599 case Double: 599 case Double:
600 masm.fmovdcc(cond, cc, asDoubleReg(other), asDoubleReg(result)); 600 masm.fmovdcc(cond, cc, asDoubleReg(other), asDoubleReg(result));
601 break; 601 break;
602 default: 602 default:
603 throw GraalInternalError.shouldNotReachHere(); 603 throw JVMCIError.shouldNotReachHere();
604 } 604 }
605 } 605 }
606 } 606 }