Index: src/ia32/full-codegen-ia32.cc |
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc |
index 9727ea01ec625886aa6a5833d602a65bc9dedbfb..2542b2d297d162ad2f252100e53bf4f8b44f33f1 100644 |
--- a/src/ia32/full-codegen-ia32.cc |
+++ b/src/ia32/full-codegen-ia32.cc |
@@ -4492,6 +4492,26 @@ void FullCodeGenerator::ExitFinallyBlock() { |
} |
+void FullCodeGenerator::SavePendingMessage() { |
+ ASSERT(!result_register().is(edx)); |
+ // Store pending message while executing finally block upon exception. |
+ ExternalReference pending_message_obj = |
+ ExternalReference::address_of_pending_message_obj(isolate()); |
+ __ mov(edx, Operand::StaticVariable(pending_message_obj)); |
+ __ push(edx); |
+} |
+ |
+ |
+void FullCodeGenerator::RestorePendingMessage() { |
+ ASSERT(!result_register().is(edx)); |
+ // Restore pending message if cleared by executing the finally block. |
+ __ pop(edx); |
+ ExternalReference pending_message_obj = |
+ ExternalReference::address_of_pending_message_obj(isolate()); |
+ __ mov(Operand::StaticVariable(pending_message_obj), edx); |
+} |
+ |
+ |
#undef __ |
#define __ ACCESS_MASM(masm()) |