Fix run-test 030.
Change-Id: I87a819162d9705136c1dcad6424058ffbf033922
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index 5aebc06..9427dcc 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -539,7 +539,9 @@
break;
}
}
- DCHECK_NE(index, -1) << "Corrupt shadowMap";
+ if (index == -1) {
+ return;
+ }
greenland::IntrinsicHelper::IntrinsicId id =
greenland::IntrinsicHelper::SetShadowFrameEntry;
llvm::Function* func = cUnit->intrinsic_helper->GetIntrinsicFunction(id);
@@ -922,6 +924,9 @@
case Instruction::CONST:
case Instruction::CONST_4:
case Instruction::CONST_16: {
+ if (vB == 0) {
+ objectDefinition = true;
+ }
llvm::Constant* immValue = cUnit->irb->GetJInt(vB);
llvm::Value* res = emitConst(cUnit, immValue, rlDest);
defineValue(cUnit, res, rlDest.origSReg);
diff --git a/src/compiler_llvm/gbc_expander.cc b/src/compiler_llvm/gbc_expander.cc
index 3dcd793..471a125 100644
--- a/src/compiler_llvm/gbc_expander.cc
+++ b/src/compiler_llvm/gbc_expander.cc
@@ -1158,6 +1158,11 @@
};
llvm::Value* entry_addr = irb_.CreateGEP(shadow_frame_, gep_index);
+#if defined(ART_USE_QUICK_COMPILER)
+ if (obj->getType() != irb_.getJObjectTy()) {
+ obj = irb_.getJNull();
+ }
+#endif
irb_.CreateStore(obj, entry_addr, kTBAAShadowFrame);
return;
}