summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/MethodBitcode.cc
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-08-22 10:49:42 -0700
committer Shih-wei Liao <sliao@google.com> 2012-09-15 04:51:24 -0700
commit890ea89879ba555a08433146058d516575646c59 (patch)
treeb595aa1633451cb16bb8bf7576e110222e4f04b9 /src/compiler/codegen/MethodBitcode.cc
parentaa55887fd30484a77e7775dfbcddbee883ce6380 (diff)
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
Diffstat (limited to 'src/compiler/codegen/MethodBitcode.cc')
-rw-r--r--src/compiler/codegen/MethodBitcode.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index 055a99d0ec..6f2c52d97d 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -608,6 +608,10 @@ void convertInvoke(CompilationUnit* cUnit, BasicBlock* bb, MIR* mir,
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]);
+ }
}
}