From 890ea89879ba555a08433146058d516575646c59 Mon Sep 17 00:00:00 2001 From: TDYa127 Date: Wed, 22 Aug 2012 10:49:42 -0700 Subject: 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 --- src/compiler/codegen/MethodBitcode.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/compiler/codegen/MethodBitcode.cc') 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]); + } } } -- cgit v1.2.3-59-g8ed1b