Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/src/wasm/wasm-result.cc b/src/wasm/wasm-result.cc
index 3de5812..30268ac 100644
--- a/src/wasm/wasm-result.cc
+++ b/src/wasm/wasm-result.cc
@@ -6,8 +6,7 @@
#include "src/factory.h"
#include "src/heap/heap.h"
-#include "src/isolate.h"
-#include "src/objects-inl.h" // TODO(mstarzinger): Temporary cycle breaker!
+#include "src/isolate-inl.h"
#include "src/objects.h"
#include "src/base/platform/platform.h"
@@ -29,10 +28,10 @@
}
void ErrorThrower::Error(const char* format, ...) {
- if (error_) return; // only report the first error.
- error_ = true;
- char buffer[256];
+ // Only report the first error.
+ if (error()) return;
+ char buffer[256];
va_list arguments;
va_start(arguments, format);
base::OS::VSNPrintF(buffer, 255, format, arguments);
@@ -44,8 +43,13 @@
}
str << buffer;
- isolate_->ScheduleThrow(
- *isolate_->factory()->NewStringFromAsciiChecked(str.str().c_str()));
+ message_ = isolate_->factory()->NewStringFromAsciiChecked(str.str().c_str());
+}
+
+ErrorThrower::~ErrorThrower() {
+ if (error() && !isolate_->has_pending_exception()) {
+ isolate_->ScheduleThrow(*message_);
+ }
}
} // namespace wasm
} // namespace internal