Commit 811caee0 authored by balazs.kilvady's avatar balazs.kilvady Committed by Commit bot

MIPS: Simplify pending message object handling.

Port d4696c48

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}
parent 4dfff4ab
...@@ -5329,26 +5329,12 @@ void FullCodeGenerator::EnterFinallyBlock() { ...@@ -5329,26 +5329,12 @@ void FullCodeGenerator::EnterFinallyBlock() {
__ li(at, Operand(pending_message_obj)); __ li(at, Operand(pending_message_obj));
__ lw(a1, MemOperand(at)); __ lw(a1, MemOperand(at));
__ push(a1); __ 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() { void FullCodeGenerator::ExitFinallyBlock() {
DCHECK(!result_register().is(a1)); DCHECK(!result_register().is(a1));
// Restore pending message from stack. // 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); __ pop(a1);
ExternalReference pending_message_obj = ExternalReference pending_message_obj =
ExternalReference::address_of_pending_message_obj(isolate()); ExternalReference::address_of_pending_message_obj(isolate());
......
...@@ -5331,26 +5331,12 @@ void FullCodeGenerator::EnterFinallyBlock() { ...@@ -5331,26 +5331,12 @@ void FullCodeGenerator::EnterFinallyBlock() {
__ li(at, Operand(pending_message_obj)); __ li(at, Operand(pending_message_obj));
__ ld(a1, MemOperand(at)); __ ld(a1, MemOperand(at));
__ push(a1); __ 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() { void FullCodeGenerator::ExitFinallyBlock() {
DCHECK(!result_register().is(a1)); DCHECK(!result_register().is(a1));
// Restore pending message from stack. // 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); __ pop(a1);
ExternalReference pending_message_obj = ExternalReference pending_message_obj =
ExternalReference::address_of_pending_message_obj(isolate()); ExternalReference::address_of_pending_message_obj(isolate());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment