Further fix a throw returning to a frame marked for lazy deopt.

Cf. e1a252a017

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2371323006 .
This commit is contained in:
Ryan Macnak 2016-09-30 10:49:56 -07:00
parent 685e4ff9e1
commit 76b2f18dd8
2 changed files with 5 additions and 5 deletions

View file

@ -522,7 +522,7 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
__ CallRuntime(kDeoptimizeMaterializeRuntimeEntry, 0);
// Result tells stub how many bytes to remove from the expression stack
// of the bottom-most frame. They were used as materialization arguments.
__ Pop(R1);
__ Pop(R2);
if (kind == kLazyDeoptFromReturn) {
__ Pop(R0); // Restore result.
} else if (kind == kLazyDeoptFromThrow) {
@ -531,7 +531,7 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
}
__ LeaveStubFrame();
// Remove materialization arguments.
__ add(SP, SP, Operand(R1, ASR, kSmiTagSize));
__ add(SP, SP, Operand(R2, ASR, kSmiTagSize));
__ Ret();
}

View file

@ -542,8 +542,8 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
__ CallRuntime(kDeoptimizeMaterializeRuntimeEntry, 0);
// Result tells stub how many bytes to remove from the expression stack
// of the bottom-most frame. They were used as materialization arguments.
__ Pop(R1);
__ SmiUntag(R1);
__ Pop(R2);
__ SmiUntag(R2);
if (kind == kLazyDeoptFromReturn) {
__ Pop(R0); // Restore result.
} else if (kind == kLazyDeoptFromThrow) {
@ -552,7 +552,7 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
}
__ LeaveStubFrame();
// Remove materialization arguments.
__ add(SP, SP, Operand(R1));
__ add(SP, SP, Operand(R2));
__ ret();
}