MIPS: Simplify pending message object handling.
Port d4696c4841
Original commit message:
This moves the decision whether to report a message or not to when
the pending exception is propagated instead of trying to preserve the
decision in a ThreadLocalTop field.
BUG=
Review URL: https://codereview.chromium.org/1004623002
Cr-Commit-Position: refs/heads/master@{#27158}
This commit is contained in:
parent
4dfff4abbd
commit
811caee0e0
@ -5329,26 +5329,12 @@ void FullCodeGenerator::EnterFinallyBlock() {
|
||||
__ li(at, Operand(pending_message_obj));
|
||||
__ lw(a1, MemOperand(at));
|
||||
__ push(a1);
|
||||
|
||||
ExternalReference has_pending_message =
|
||||
ExternalReference::address_of_has_pending_message(isolate());
|
||||
__ li(at, Operand(has_pending_message));
|
||||
__ lw(a1, MemOperand(at));
|
||||
__ SmiTag(a1);
|
||||
__ push(a1);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::ExitFinallyBlock() {
|
||||
DCHECK(!result_register().is(a1));
|
||||
// Restore pending message from stack.
|
||||
__ pop(a1);
|
||||
__ SmiUntag(a1);
|
||||
ExternalReference has_pending_message =
|
||||
ExternalReference::address_of_has_pending_message(isolate());
|
||||
__ li(at, Operand(has_pending_message));
|
||||
__ sw(a1, MemOperand(at));
|
||||
|
||||
__ pop(a1);
|
||||
ExternalReference pending_message_obj =
|
||||
ExternalReference::address_of_pending_message_obj(isolate());
|
||||
|
@ -5331,26 +5331,12 @@ void FullCodeGenerator::EnterFinallyBlock() {
|
||||
__ li(at, Operand(pending_message_obj));
|
||||
__ ld(a1, MemOperand(at));
|
||||
__ push(a1);
|
||||
|
||||
ExternalReference has_pending_message =
|
||||
ExternalReference::address_of_has_pending_message(isolate());
|
||||
__ li(at, Operand(has_pending_message));
|
||||
__ ld(a1, MemOperand(at));
|
||||
__ SmiTag(a1);
|
||||
__ push(a1);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::ExitFinallyBlock() {
|
||||
DCHECK(!result_register().is(a1));
|
||||
// Restore pending message from stack.
|
||||
__ pop(a1);
|
||||
__ SmiUntag(a1);
|
||||
ExternalReference has_pending_message =
|
||||
ExternalReference::address_of_has_pending_message(isolate());
|
||||
__ li(at, Operand(has_pending_message));
|
||||
__ sd(a1, MemOperand(at));
|
||||
|
||||
__ pop(a1);
|
||||
ExternalReference pending_message_obj =
|
||||
ExternalReference::address_of_pending_message_obj(isolate());
|
||||
|
Loading…
Reference in New Issue
Block a user