Index: Source/bindings/core/v8/V8Binding.h |
diff --git a/Source/bindings/core/v8/V8Binding.h b/Source/bindings/core/v8/V8Binding.h |
index 14cac2abf7a8479a83b545b4f787cd7f298cb3ff..cd03efc9e5d9b034d155efe03db82440efdef37f 100644 |
--- a/Source/bindings/core/v8/V8Binding.h |
+++ b/Source/bindings/core/v8/V8Binding.h |
@@ -952,27 +952,20 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(Executio |
class V8RethrowTryCatchScope FINAL { |
public: |
- explicit V8RethrowTryCatchScope(v8::TryCatch& block) : m_block(block) { } |
+ explicit V8RethrowTryCatchScope(v8::TryCatch& block) : m_block(block), m_isCanceled(false) { } |
+ void cancel() { m_isCanceled = true; } |
~V8RethrowTryCatchScope() |
{ |
- // ReThrow() is a no-op if no exception has been caught, so always call. |
- m_block.ReThrow(); |
- } |
- |
-private: |
- v8::TryCatch& m_block; |
-}; |
- |
-class V8ResetTryCatchScope FINAL { |
-public: |
- explicit V8ResetTryCatchScope(v8::TryCatch& block) : m_block(block) { } |
- ~V8ResetTryCatchScope() |
- { |
- m_block.Reset(); |
+ if (!m_isCanceled) { |
+ // ReThrow() is a no-op if no exception has been caught, so always |
+ // call. |
+ m_block.ReThrow(); |
+ } |
} |
private: |
v8::TryCatch& m_block; |
+ bool m_isCanceled; |
}; |
} // namespace blink |