Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 0db7424eb26e79887434efc03101d875cbc7a16c..fb86f2e8de076e89a4a2b020f021b78525fdbbc2 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -4477,6 +4477,26 @@ void FullCodeGenerator::ExitFinallyBlock() { |
} |
+void FullCodeGenerator::SavePendingMessage() { |
+ ASSERT(!result_register().is(rdx)); |
+ // Store pending message while executing finally block upon exception. |
+ ExternalReference pending_message_obj = |
+ ExternalReference::address_of_pending_message_obj(isolate()); |
+ __ Load(rdx, pending_message_obj); |
+ __ push(rdx); |
+} |
+ |
+ |
+void FullCodeGenerator::RestorePendingMessage() { |
+ ASSERT(!result_register().is(rdx)); |
+ // Restore pending message if cleared by executing the finally block. |
+ __ pop(rdx); |
+ ExternalReference pending_message_obj = |
+ ExternalReference::address_of_pending_message_obj(isolate()); |
+ __ Store(pending_message_obj, rdx); |
+} |
+ |
+ |
#undef __ |
#define __ ACCESS_MASM(masm()) |