Fix the MIPS build:
1. LOG->ALOG conversion
2. Remove Jumbo opcodes support
Change-Id: Ifbd1eae2f5e7a1cab5828ebfbdba380ad499abfd
diff --git a/vm/compiler/codegen/mips/CodegenDriver.cpp b/vm/compiler/codegen/mips/CodegenDriver.cpp
index c7757fe..bbe631c 100644
--- a/vm/compiler/codegen/mips/CodegenDriver.cpp
+++ b/vm/compiler/codegen/mips/CodegenDriver.cpp
@@ -795,7 +795,7 @@
break;
}
default:
- LOGE("Invalid long arith op");
+ ALOGE("Invalid long arith op");
dvmCompilerAbort(cUnit);
}
if (!callOut) {
@@ -893,7 +893,7 @@
op = kOpLsr;
break;
default:
- LOGE("Invalid word arith op: %#x(%d)",
+ ALOGE("Invalid word arith op: %#x(%d)",
mir->dalvikInsn.opcode, mir->dalvikInsn.opcode);
dvmCompilerAbort(cUnit);
}
@@ -1079,9 +1079,6 @@
/*
* Protect the loadMultiple instruction from being reordered with other
* Dalvik stack accesses.
- *
- * This code is also shared by the invoke jumbo instructions, and this
- * does not need to be done if the invoke jumbo has no arguments.
*/
if (numArgs != 0) loadMultiple(cUnit, r4PC, regMask);
@@ -1548,7 +1545,7 @@
{
Opcode dalvikOpcode = mir->dalvikInsn.opcode;
if ((dalvikOpcode >= OP_UNUSED_3E) && (dalvikOpcode <= OP_UNUSED_43)) {
- LOGE("Codegen: got unused opcode %#x",dalvikOpcode);
+ ALOGE("Codegen: got unused opcode %#x",dalvikOpcode);
return true;
}
switch (dalvikOpcode) {
@@ -1561,7 +1558,8 @@
case OP_UNUSED_73:
case OP_UNUSED_79:
case OP_UNUSED_7A:
- LOGE("Codegen: got unused opcode %#x",dalvikOpcode);
+ case OP_UNUSED_FF:
+ ALOGE("Codegen: got unused opcode %#x",dalvikOpcode);
return true;
case OP_NOP:
break;
@@ -1635,14 +1633,14 @@
return false;
}
-static bool handleFmt20bc_Fmt40sc(CompilationUnit *cUnit, MIR *mir)
+static bool handleFmt20bc(CompilationUnit *cUnit, MIR *mir)
{
- /* For OP_THROW_VERIFICATION_ERROR & OP_THROW_VERIFICATION_ERROR_JUMBO */
+ /* For OP_THROW_VERIFICATION_ERROR */
genInterpSingleStep(cUnit, mir);
return false;
}
-static bool handleFmt21c_Fmt31c_Fmt41c(CompilationUnit *cUnit, MIR *mir)
+static bool handleFmt21c_Fmt31c(CompilationUnit *cUnit, MIR *mir)
{
RegLocation rlResult;
RegLocation rlDest;
@@ -1656,7 +1654,7 @@
if (strPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null string");
+ ALOGE("Unexpected null string");
dvmAbort();
}
@@ -1666,14 +1664,13 @@
storeValue(cUnit, rlDest, rlResult);
break;
}
- case OP_CONST_CLASS:
- case OP_CONST_CLASS_JUMBO: {
+ case OP_CONST_CLASS: {
void *classPtr = (void*)
(cUnit->method->clazz->pDvmDex->pResClasses[mir->dalvikInsn.vB]);
if (classPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null class");
+ ALOGE("Unexpected null class");
dvmAbort();
}
@@ -1685,20 +1682,12 @@
}
case OP_SGET:
case OP_SGET_VOLATILE:
- case OP_SGET_VOLATILE_JUMBO:
- case OP_SGET_JUMBO:
case OP_SGET_OBJECT:
case OP_SGET_OBJECT_VOLATILE:
- case OP_SGET_OBJECT_VOLATILE_JUMBO:
- case OP_SGET_OBJECT_JUMBO:
case OP_SGET_BOOLEAN:
- case OP_SGET_BOOLEAN_JUMBO:
case OP_SGET_CHAR:
- case OP_SGET_CHAR_JUMBO:
case OP_SGET_BYTE:
- case OP_SGET_BYTE_JUMBO:
- case OP_SGET_SHORT:
- case OP_SGET_SHORT_JUMBO: {
+ case OP_SGET_SHORT: {
int valOffset = OFFSETOF_MEMBER(StaticField, value);
int tReg = dvmCompilerAllocTemp(cUnit);
bool isVolatile;
@@ -1709,7 +1698,7 @@
if (fieldPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null static field");
+ ALOGE("Unexpected null static field");
dvmAbort();
}
@@ -1724,9 +1713,7 @@
#if ANDROID_SMP != 0
Opcode opcode = mir->dalvikInsn.opcode;
isVolatile = (opcode == OP_SGET_VOLATILE) ||
- (opcode == OP_SGET_VOLATILE_JUMBO) ||
- (opcode == OP_SGET_OBJECT_VOLATILE) ||
- (opcode == OP_SGET_OBJECT_VOLATILE_JUMBO);
+ (opcode == OP_SGET_OBJECT_VOLATILE);
assert(isVolatile == dvmIsVolatileField((Field *) fieldPtr));
#else
isVolatile = dvmIsVolatileField((Field *) fieldPtr);
@@ -1746,8 +1733,7 @@
storeValue(cUnit, rlDest, rlResult);
break;
}
- case OP_SGET_WIDE:
- case OP_SGET_WIDE_JUMBO: {
+ case OP_SGET_WIDE: {
int valOffset = OFFSETOF_MEMBER(StaticField, value);
const Method *method = (mir->OptimizationFlags & MIR_CALLEE) ?
mir->meta.calleeMethod : cUnit->method;
@@ -1756,7 +1742,7 @@
if (fieldPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null static field");
+ ALOGE("Unexpected null static field");
dvmAbort();
}
@@ -1774,20 +1760,12 @@
}
case OP_SPUT:
case OP_SPUT_VOLATILE:
- case OP_SPUT_VOLATILE_JUMBO:
- case OP_SPUT_JUMBO:
case OP_SPUT_OBJECT:
case OP_SPUT_OBJECT_VOLATILE:
- case OP_SPUT_OBJECT_VOLATILE_JUMBO:
- case OP_SPUT_OBJECT_JUMBO:
case OP_SPUT_BOOLEAN:
- case OP_SPUT_BOOLEAN_JUMBO:
case OP_SPUT_CHAR:
- case OP_SPUT_CHAR_JUMBO:
case OP_SPUT_BYTE:
- case OP_SPUT_BYTE_JUMBO:
- case OP_SPUT_SHORT:
- case OP_SPUT_SHORT_JUMBO: {
+ case OP_SPUT_SHORT: {
int valOffset = OFFSETOF_MEMBER(StaticField, value);
int tReg = dvmCompilerAllocTemp(cUnit);
int objHead = 0;
@@ -1801,24 +1779,20 @@
if (fieldPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null static field");
+ ALOGE("Unexpected null static field");
dvmAbort();
}
#if ANDROID_SMP != 0
isVolatile = (opcode == OP_SPUT_VOLATILE) ||
- (opcode == OP_SPUT_VOLATILE_JUMBO) ||
- (opcode == OP_SPUT_OBJECT_VOLATILE) ||
- (opcode == OP_SPUT_OBJECT_VOLATILE_JUMBO);
+ (opcode == OP_SPUT_OBJECT_VOLATILE);
assert(isVolatile == dvmIsVolatileField((Field *) fieldPtr));
#else
isVolatile = dvmIsVolatileField((Field *) fieldPtr);
#endif
isSputObject = (opcode == OP_SPUT_OBJECT) ||
- (opcode == OP_SPUT_OBJECT_JUMBO) ||
- (opcode == OP_SPUT_OBJECT_VOLATILE) ||
- (opcode == OP_SPUT_OBJECT_VOLATILE_JUMBO);
+ (opcode == OP_SPUT_OBJECT_VOLATILE);
rlSrc = dvmCompilerGetSrc(cUnit, mir, 0);
rlSrc = loadValue(cUnit, rlSrc, kAnyReg);
@@ -1845,8 +1819,7 @@
break;
}
- case OP_SPUT_WIDE:
- case OP_SPUT_WIDE_JUMBO: {
+ case OP_SPUT_WIDE: {
int tReg = dvmCompilerAllocTemp(cUnit);
int valOffset = OFFSETOF_MEMBER(StaticField, value);
const Method *method = (mir->OptimizationFlags & MIR_CALLEE) ?
@@ -1856,7 +1829,7 @@
if (fieldPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null static field");
+ ALOGE("Unexpected null static field");
dvmAbort();
}
@@ -1869,8 +1842,7 @@
HEAP_ACCESS_SHADOW(false);
break;
}
- case OP_NEW_INSTANCE:
- case OP_NEW_INSTANCE_JUMBO: {
+ case OP_NEW_INSTANCE: {
/*
* Obey the calling convention and don't mess with the register
* usage.
@@ -1880,7 +1852,7 @@
if (classPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null class");
+ ALOGE("Unexpected null class");
dvmAbort();
}
@@ -1916,8 +1888,7 @@
storeValue(cUnit, rlDest, rlResult);
break;
}
- case OP_CHECK_CAST:
- case OP_CHECK_CAST_JUMBO: {
+ case OP_CHECK_CAST: {
/*
* Obey the calling convention and don't mess with the register
* usage.
@@ -1971,9 +1942,7 @@
break;
}
case OP_SGET_WIDE_VOLATILE:
- case OP_SGET_WIDE_VOLATILE_JUMBO:
case OP_SPUT_WIDE_VOLATILE:
- case OP_SPUT_WIDE_VOLATILE_JUMBO:
genInterpSingleStep(cUnit, mir);
break;
default:
@@ -2212,7 +2181,7 @@
opc = kMipsBlez;
break;
default:
- LOGE("Unexpected opcode (%d) for Fmt21t", dalvikOpcode);
+ ALOGE("Unexpected opcode (%d) for Fmt21t", dalvikOpcode);
dvmCompilerAbort(cUnit);
}
genConditionalBranchMips(cUnit, opc, rlSrc.lowReg, rt, &labelList[bb->taken->id]);
@@ -2460,7 +2429,7 @@
return false;
}
-static bool handleFmt22c_Fmt52c(CompilationUnit *cUnit, MIR *mir)
+static bool handleFmt22c(CompilationUnit *cUnit, MIR *mir)
{
Opcode dalvikOpcode = mir->dalvikInsn.opcode;
int fieldOffset = -1;
@@ -2470,50 +2439,30 @@
* Wide volatiles currently handled via single step.
* Add them here if generating in-line code.
* case OP_IGET_WIDE_VOLATILE:
- * case OP_IGET_WIDE_VOLATILE_JUMBO:
* case OP_IPUT_WIDE_VOLATILE:
- * case OP_IPUT_WIDE_VOLATILE_JUMBO:
*/
case OP_IGET_VOLATILE:
- case OP_IGET_VOLATILE_JUMBO:
case OP_IGET_OBJECT_VOLATILE:
- case OP_IGET_OBJECT_VOLATILE_JUMBO:
case OP_IPUT_VOLATILE:
- case OP_IPUT_VOLATILE_JUMBO:
case OP_IPUT_OBJECT_VOLATILE:
- case OP_IPUT_OBJECT_VOLATILE_JUMBO:
#if ANDROID_SMP != 0
isVolatile = true;
// NOTE: intentional fallthrough
#endif
case OP_IGET:
- case OP_IGET_JUMBO:
case OP_IGET_WIDE:
- case OP_IGET_WIDE_JUMBO:
case OP_IGET_OBJECT:
- case OP_IGET_OBJECT_JUMBO:
case OP_IGET_BOOLEAN:
- case OP_IGET_BOOLEAN_JUMBO:
case OP_IGET_BYTE:
- case OP_IGET_BYTE_JUMBO:
case OP_IGET_CHAR:
- case OP_IGET_CHAR_JUMBO:
case OP_IGET_SHORT:
- case OP_IGET_SHORT_JUMBO:
case OP_IPUT:
- case OP_IPUT_JUMBO:
case OP_IPUT_WIDE:
- case OP_IPUT_WIDE_JUMBO:
case OP_IPUT_OBJECT:
- case OP_IPUT_OBJECT_JUMBO:
case OP_IPUT_BOOLEAN:
- case OP_IPUT_BOOLEAN_JUMBO:
case OP_IPUT_BYTE:
- case OP_IPUT_BYTE_JUMBO:
case OP_IPUT_CHAR:
- case OP_IPUT_CHAR_JUMBO:
- case OP_IPUT_SHORT:
- case OP_IPUT_SHORT_JUMBO: {
+ case OP_IPUT_SHORT: {
const Method *method = (mir->OptimizationFlags & MIR_CALLEE) ?
mir->meta.calleeMethod : cUnit->method;
Field *fieldPtr =
@@ -2521,7 +2470,7 @@
if (fieldPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null instance field");
+ ALOGE("Unexpected null instance field");
dvmAbort();
}
#if ANDROID_SMP != 0
@@ -2537,8 +2486,7 @@
}
switch (dalvikOpcode) {
- case OP_NEW_ARRAY:
- case OP_NEW_ARRAY_JUMBO: {
+ case OP_NEW_ARRAY: {
#if 0 /* 080 triggers assert in Interp.c:1290 for out of memory exception.
i think the assert is in error and should be disabled. With
asserts disabled, 080 passes. */
@@ -2554,7 +2502,7 @@
if (classPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGE("Unexpected null class");
+ ALOGE("Unexpected null class");
dvmAbort();
}
@@ -2589,8 +2537,7 @@
storeValue(cUnit, rlDest, rlResult);
break;
}
- case OP_INSTANCE_OF:
- case OP_INSTANCE_OF_JUMBO: {
+ case OP_INSTANCE_OF: {
// May generate a call - use explicit registers
RegLocation rlSrc = dvmCompilerGetSrc(cUnit, mir, 0);
RegLocation rlDest = dvmCompilerGetDest(cUnit, mir, 0);
@@ -2607,7 +2554,7 @@
*/
if (classPtr == NULL) {
BAIL_LOOP_COMPILATION();
- LOGD("null clazz in OP_INSTANCE_OF, single-stepping");
+ ALOGD("null clazz in OP_INSTANCE_OF, single-stepping");
genInterpSingleStep(cUnit, mir);
break;
}
@@ -2637,55 +2584,35 @@
break;
}
case OP_IGET_WIDE:
- case OP_IGET_WIDE_JUMBO:
genIGetWide(cUnit, mir, fieldOffset);
break;
case OP_IGET_VOLATILE:
- case OP_IGET_VOLATILE_JUMBO:
case OP_IGET_OBJECT_VOLATILE:
- case OP_IGET_OBJECT_VOLATILE_JUMBO:
case OP_IGET:
- case OP_IGET_JUMBO:
case OP_IGET_OBJECT:
- case OP_IGET_OBJECT_JUMBO:
case OP_IGET_BOOLEAN:
- case OP_IGET_BOOLEAN_JUMBO:
case OP_IGET_BYTE:
- case OP_IGET_BYTE_JUMBO:
case OP_IGET_CHAR:
- case OP_IGET_CHAR_JUMBO:
case OP_IGET_SHORT:
- case OP_IGET_SHORT_JUMBO:
genIGet(cUnit, mir, kWord, fieldOffset, isVolatile);
break;
case OP_IPUT_WIDE:
- case OP_IPUT_WIDE_JUMBO:
genIPutWide(cUnit, mir, fieldOffset);
break;
case OP_IPUT_VOLATILE:
- case OP_IPUT_VOLATILE_JUMBO:
case OP_IPUT:
- case OP_IPUT_JUMBO:
case OP_IPUT_BOOLEAN:
- case OP_IPUT_BOOLEAN_JUMBO:
case OP_IPUT_BYTE:
- case OP_IPUT_BYTE_JUMBO:
case OP_IPUT_CHAR:
- case OP_IPUT_CHAR_JUMBO:
case OP_IPUT_SHORT:
- case OP_IPUT_SHORT_JUMBO:
genIPut(cUnit, mir, kWord, fieldOffset, false, isVolatile);
break;
case OP_IPUT_OBJECT_VOLATILE:
- case OP_IPUT_OBJECT_VOLATILE_JUMBO:
case OP_IPUT_OBJECT:
- case OP_IPUT_OBJECT_JUMBO:
genIPut(cUnit, mir, kWord, fieldOffset, true, isVolatile);
break;
case OP_IGET_WIDE_VOLATILE:
- case OP_IGET_WIDE_VOLATILE_JUMBO:
case OP_IPUT_WIDE_VOLATILE:
- case OP_IPUT_WIDE_VOLATILE_JUMBO:
genInterpSingleStep(cUnit, mir);
break;
default:
@@ -2783,7 +2710,7 @@
break;
default:
cond = (MipsConditionCode)0;
- LOGE("Unexpected opcode (%d) for Fmt22t", dalvikOpcode);
+ ALOGE("Unexpected opcode (%d) for Fmt22t", dalvikOpcode);
dvmCompilerAbort(cUnit);
}
@@ -3145,7 +3072,7 @@
mir->meta.callsiteInfo->misPredBranchOver->target = (LIR *) target;
}
-static bool handleFmt35c_3rc_5rc(CompilationUnit *cUnit, MIR *mir,
+static bool handleFmt35c_3rc(CompilationUnit *cUnit, MIR *mir,
BasicBlock *bb, MipsLIR *labelList)
{
MipsLIR *retChainingCell = NULL;
@@ -3166,8 +3093,7 @@
* ]
*/
case OP_INVOKE_VIRTUAL:
- case OP_INVOKE_VIRTUAL_RANGE:
- case OP_INVOKE_VIRTUAL_JUMBO: {
+ case OP_INVOKE_VIRTUAL_RANGE: {
MipsLIR *predChainingCell = &labelList[bb->taken->id];
int methodIndex =
cUnit->method->clazz->pDvmDex->pResMethods[dInsn->vB]->
@@ -3198,8 +3124,7 @@
* ->pResMethods[BBBB]->methodIndex]
*/
case OP_INVOKE_SUPER:
- case OP_INVOKE_SUPER_RANGE:
- case OP_INVOKE_SUPER_JUMBO: {
+ case OP_INVOKE_SUPER_RANGE: {
/* Grab the method ptr directly from what the interpreter sees */
const Method *calleeMethod = mir->meta.callsiteInfo->method;
assert(calleeMethod == cUnit->method->clazz->super->vtable[
@@ -3228,8 +3153,7 @@
}
/* calleeMethod = method->clazz->pDvmDex->pResMethods[BBBB] */
case OP_INVOKE_DIRECT:
- case OP_INVOKE_DIRECT_RANGE:
- case OP_INVOKE_DIRECT_JUMBO: {
+ case OP_INVOKE_DIRECT_RANGE: {
/* Grab the method ptr directly from what the interpreter sees */
const Method *calleeMethod = mir->meta.callsiteInfo->method;
assert(calleeMethod ==
@@ -3249,8 +3173,7 @@
}
/* calleeMethod = method->clazz->pDvmDex->pResMethods[BBBB] */
case OP_INVOKE_STATIC:
- case OP_INVOKE_STATIC_RANGE:
- case OP_INVOKE_STATIC_JUMBO: {
+ case OP_INVOKE_STATIC_RANGE: {
/* Grab the method ptr directly from what the interpreter sees */
const Method *calleeMethod = mir->meta.callsiteInfo->method;
assert(calleeMethod ==
@@ -3381,8 +3304,7 @@
* -------- end of chaining cells (0x0190)
*/
case OP_INVOKE_INTERFACE:
- case OP_INVOKE_INTERFACE_RANGE:
- case OP_INVOKE_INTERFACE_JUMBO: {
+ case OP_INVOKE_INTERFACE_RANGE: {
MipsLIR *predChainingCell = &labelList[bb->taken->id];
/*
@@ -3539,11 +3461,9 @@
genTrap(cUnit, mir->offset, pcrLabel);
break;
}
- case OP_INVOKE_OBJECT_INIT_JUMBO:
case OP_INVOKE_OBJECT_INIT_RANGE:
case OP_FILLED_NEW_ARRAY:
- case OP_FILLED_NEW_ARRAY_RANGE:
- case OP_FILLED_NEW_ARRAY_JUMBO: {
+ case OP_FILLED_NEW_ARRAY_RANGE: {
/* Just let the interpreter deal with these */
genInterpSingleStep(cUnit, mir);
break;
@@ -4353,11 +4273,8 @@
case OP_MONITOR_ENTER:
case OP_MONITOR_EXIT:
case OP_NEW_INSTANCE:
- case OP_NEW_INSTANCE_JUMBO:
case OP_NEW_ARRAY:
- case OP_NEW_ARRAY_JUMBO:
case OP_CHECK_CAST:
- case OP_CHECK_CAST_JUMBO:
case OP_MOVE_EXCEPTION:
case OP_FILL_ARRAY_DATA:
case OP_EXECUTE_INLINE:
@@ -4596,13 +4513,11 @@
notHandled = handleFmt12x(cUnit, mir);
break;
case kFmt20bc:
- case kFmt40sc:
- notHandled = handleFmt20bc_Fmt40sc(cUnit, mir);
+ notHandled = handleFmt20bc(cUnit, mir);
break;
case kFmt21c:
case kFmt31c:
- case kFmt41c:
- notHandled = handleFmt21c_Fmt31c_Fmt41c(cUnit, mir);
+ notHandled = handleFmt21c_Fmt31c(cUnit, mir);
break;
case kFmt21h:
notHandled = handleFmt21h(cUnit, mir);
@@ -4619,8 +4534,7 @@
notHandled = handleFmt22b_Fmt22s(cUnit, mir);
break;
case kFmt22c:
- case kFmt52c:
- notHandled = handleFmt22c_Fmt52c(cUnit, mir);
+ notHandled = handleFmt22c(cUnit, mir);
break;
case kFmt22cs:
notHandled = handleFmt22cs(cUnit, mir);
@@ -4641,8 +4555,7 @@
break;
case kFmt3rc:
case kFmt35c:
- case kFmt5rc:
- notHandled = handleFmt35c_3rc_5rc(cUnit, mir, bb,
+ notHandled = handleFmt35c_3rc(cUnit, mir, bb,
labelList);
break;
case kFmt3rms:
@@ -4663,7 +4576,7 @@
}
}
if (notHandled) {
- LOGE("%#06x: Opcode %#x (%s) / Fmt %d not handled",
+ ALOGE("%#06x: Opcode %#x (%s) / Fmt %d not handled",
mir->offset,
dalvikOpcode, dexGetOpcodeName(dalvikOpcode),
dalvikFormat);
@@ -4747,7 +4660,7 @@
chainingBlock->startOffset);
break;
default:
- LOGE("Bad blocktype %d", chainingBlock->blockType);
+ ALOGE("Bad blocktype %d", chainingBlock->blockType);
dvmCompilerAbort(cUnit);
}
}
@@ -4818,7 +4731,7 @@
break;
default:
isCompile = false;
- LOGE("Jit: unknown work order type");
+ ALOGE("Jit: unknown work order type");
assert(0); // Bail if debug build, discard otherwise
}
if (!success)
@@ -4868,7 +4781,7 @@
}
}
if (strlen(buf)) {
- LOGD("dalvik.vm.jit.op = %s", buf);
+ ALOGD("dalvik.vm.jit.op = %s", buf);
}
}
@@ -4879,7 +4792,7 @@
for (i = 0; i < kMipsLast; i++) {
if (EncodingMap[i].opcode != i) {
- LOGE("Encoding order for %s is wrong: expecting %d, seeing %d",
+ ALOGE("Encoding order for %s is wrong: expecting %d, seeing %d",
EncodingMap[i].name, i, EncodingMap[i].opcode);
dvmAbort(); // OK to dvmAbort - build error
}