Mercurial > hg > truffle
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 } |