Compiler cleanup: remove some old JIT leftovers.
The JIT was designed to allow any code emitter (for any reason)
to decline to complete a codegen request. The outer driver
would then detect if a codegen request wasn't completed and
in that case generate bail-out code to the interpreter or
simply end the trace early.
This was quite useful for the JIT, but has no value in an
ahead-of-time compiler (with the exception of special inline
cases - those are still optional). Codegen requests must succeed or
die. This CL removes some of the bool success reporting from
inherited Gen routines.
Change-Id: I0237bbd82cc2d548f85dda8f7231126337976e8a
diff --git a/src/compiler/codegen/gen_common.cc b/src/compiler/codegen/gen_common.cc
index a4c8d0c..1ed6f9d 100644
--- a/src/compiler/codegen/gen_common.cc
+++ b/src/compiler/codegen/gen_common.cc
@@ -1119,10 +1119,10 @@
}
-bool Codegen::GenShiftOpLong(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
+void Codegen::GenShiftOpLong(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
RegLocation rl_src1, RegLocation rl_shift)
{
- int func_offset;
+ int func_offset = -1; // Make gcc happy
switch (opcode) {
case Instruction::SHL_LONG:
@@ -1139,17 +1139,15 @@
break;
default:
LOG(FATAL) << "Unexpected case";
- return true;
}
FlushAllRegs(cu); /* Send everything to home location */
CallRuntimeHelperRegLocationRegLocation(cu, func_offset, rl_src1, rl_shift, false);
RegLocation rl_result = GetReturnWide(cu, false);
StoreValueWide(cu, rl_dest, rl_result);
- return false;
}
-bool Codegen::GenArithOpInt(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
+void Codegen::GenArithOpInt(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
RegLocation rl_src1, RegLocation rl_src2)
{
OpKind op = kOpBkpt;
@@ -1277,7 +1275,6 @@
}
StoreValue(cu, rl_dest, rl_result);
}
- return false;
}
/*
@@ -1411,7 +1408,7 @@
return true;
}
-bool Codegen::GenArithOpIntLit(CompilationUnit* cu, Instruction::Code opcode,
+void Codegen::GenArithOpIntLit(CompilationUnit* cu, Instruction::Code opcode,
RegLocation rl_dest, RegLocation rl_src, int lit)
{
RegLocation rl_result;
@@ -1430,8 +1427,7 @@
rl_result = EvalLoc(cu, rl_dest, kCoreReg, true);
OpRegRegReg(cu, kOpSub, rl_result.low_reg, t_reg, rl_src.low_reg);
StoreValue(cu, rl_dest, rl_result);
- return false;
- break;
+ return;
}
case Instruction::SUB_INT:
@@ -1449,7 +1445,7 @@
case Instruction::MUL_INT_LIT8:
case Instruction::MUL_INT_LIT16: {
if (HandleEasyMultiply(cu, rl_src, rl_dest, lit)) {
- return false;
+ return;
}
op = kOpMul;
break;
@@ -1504,10 +1500,10 @@
case Instruction::REM_INT_LIT16: {
if (lit == 0) {
GenImmedCheck(cu, kCondAl, 0, 0, kThrowDivZero);
- return false;
+ return;
}
if (HandleEasyDivide(cu, opcode, rl_src, rl_dest, lit)) {
- return false;
+ return;
}
if ((opcode == Instruction::DIV_INT_LIT8) ||
(opcode == Instruction::DIV_INT) ||
@@ -1532,8 +1528,7 @@
rl_result = GetReturnAlt(cu);
}
StoreValue(cu, rl_dest, rl_result);
- return false;
- break;
+ return;
}
default:
LOG(FATAL) << "Unexpected opcode " << opcode;
@@ -1547,10 +1542,9 @@
OpRegRegImm(cu, op, rl_result.low_reg, rl_src.low_reg, lit);
}
StoreValue(cu, rl_dest, rl_result);
- return false;
}
-bool Codegen::GenArithOpLong(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
+void Codegen::GenArithOpLong(CompilationUnit* cu, Instruction::Code opcode, RegLocation rl_dest,
RegLocation rl_src1, RegLocation rl_src2)
{
RegLocation rl_result;
@@ -1577,12 +1571,12 @@
OpRegReg(cu, kOpMvn, rl_result.high_reg, rl_src2.high_reg);
}
StoreValueWide(cu, rl_dest, rl_result);
- return false;
- break;
+ return;
case Instruction::ADD_LONG:
case Instruction::ADD_LONG_2ADDR:
if (cu->instruction_set != kThumb2) {
- return GenAddLong(cu, rl_dest, rl_src1, rl_src2);
+ GenAddLong(cu, rl_dest, rl_src1, rl_src2);
+ return;
}
first_op = kOpAdd;
second_op = kOpAdc;
@@ -1590,7 +1584,8 @@
case Instruction::SUB_LONG:
case Instruction::SUB_LONG_2ADDR:
if (cu->instruction_set != kThumb2) {
- return GenSubLong(cu, rl_dest, rl_src1, rl_src2);
+ GenSubLong(cu, rl_dest, rl_src1, rl_src2);
+ return;
}
first_op = kOpSub;
second_op = kOpSbc;
@@ -1599,7 +1594,7 @@
case Instruction::MUL_LONG_2ADDR:
if (cu->instruction_set == kThumb2) {
GenMulLong(cu, rl_dest, rl_src1, rl_src2);
- return false;
+ return;
} else {
call_out = true;
ret_reg = TargetReg(kRet0);
@@ -1632,7 +1627,8 @@
case Instruction::OR_LONG:
case Instruction::OR_LONG_2ADDR:
if (cu->instruction_set == kX86) {
- return GenOrLong(cu, rl_dest, rl_src1, rl_src2);
+ GenOrLong(cu, rl_dest, rl_src1, rl_src2);
+ return;
}
first_op = kOpOr;
second_op = kOpOr;
@@ -1640,13 +1636,15 @@
case Instruction::XOR_LONG:
case Instruction::XOR_LONG_2ADDR:
if (cu->instruction_set == kX86) {
- return GenXorLong(cu, rl_dest, rl_src1, rl_src2);
+ GenXorLong(cu, rl_dest, rl_src1, rl_src2);
+ return;
}
first_op = kOpXor;
second_op = kOpXor;
break;
case Instruction::NEG_LONG: {
- return GenNegLong(cu, rl_dest, rl_src2);
+ GenNegLong(cu, rl_dest, rl_src2);
+ return;
}
default:
LOG(FATAL) << "Invalid long arith op";
@@ -1673,10 +1671,9 @@
rl_result = GetReturnWideAlt(cu);
StoreValueWide(cu, rl_dest, rl_result);
}
- return false;
}
-bool Codegen::GenConversionCall(CompilationUnit* cu, int func_offset,
+void Codegen::GenConversionCall(CompilationUnit* cu, int func_offset,
RegLocation rl_dest, RegLocation rl_src)
{
/*
@@ -1700,7 +1697,6 @@
rl_result = GetReturn(cu, rl_dest.fp);
StoreValue(cu, rl_dest, rl_result);
}
- return false;
}
/* Check if we need to check for pending suspend request */