diff options
| author | 2012-08-22 10:49:42 -0700 | |
|---|---|---|
| committer | 2012-09-15 04:51:24 -0700 | |
| commit | 890ea89879ba555a08433146058d516575646c59 (patch) | |
| tree | b595aa1633451cb16bb8bf7576e110222e4f04b9 /src/compiler/codegen/MethodBitcode.cc | |
| parent | aa55887fd30484a77e7775dfbcddbee883ce6380 (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.cc | 4 |
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]); + } } } |