Add suspend by ourselves to improve performance.
Set shadow frame entry after invoke.
Some reference is not in the shadow frame because of invoke/move-result
fusing.
Change-Id: I157eaad5be85a4a7f0d4ce89a960d52863df29ad
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index 055a99d..6f2c52d 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -608,6 +608,10 @@
llvm::Value* res = cUnit->irb->CreateCall(intr, args);
if (info->result.location != kLocInvalid) {
defineValue(cUnit, res, info->result.origSReg);
+ if (info->result.ref) {
+ setShadowFrameEntry(cUnit, (llvm::Value*)
+ cUnit->llvmValues.elemList[info->result.origSReg]);
+ }
}
}