| Index: include/v8.h | 
| diff --git a/include/v8.h b/include/v8.h | 
| index e1c020310bcd08e2cb75cd54aab7da52ab499be2..a6b3ef674409c6d3611f9afc447ff855c4a45409 100644 | 
| --- a/include/v8.h | 
| +++ b/include/v8.h | 
| @@ -3676,6 +3676,24 @@ class V8EXPORT V8 { | 
| static bool IsExecutionTerminating(Isolate* isolate = NULL); | 
|  | 
| /** | 
| +   * Resume execution capability in the given isolate, whose execution | 
| +   * was previously forcefully terminated using TerminateExecution(). | 
| +   * | 
| +   * When execution is forcefully terminated using TerminateExecution(), | 
| +   * the isolate can not resume execution until all JavaScript frames | 
| +   * have propagated the uncatchable exception which is generated.  This | 
| +   * method allows the program embedding the engine to handle the | 
| +   * termination event and resume execution capability, even if | 
| +   * JavaScript frames remain on the stack. | 
| +   * | 
| +   * This method can be used by any thread even if that thread has not | 
| +   * acquired the V8 lock with a Locker object. | 
| +   * | 
| +   * \param isolate The isolate in which to resume execution capability. | 
| +   */ | 
| +  static void CancelTerminateExecution(Isolate* isolate); | 
| + | 
| +  /** | 
| * Releases any resources used by v8 and stops any utility threads | 
| * that may be running.  Note that disposing v8 is permanent, it | 
| * cannot be reinitialized. | 
| @@ -3785,21 +3803,30 @@ class V8EXPORT TryCatch { | 
| bool HasCaught() const; | 
|  | 
| /** | 
| -   * For certain types of exceptions, it makes no sense to continue | 
| -   * execution. | 
| -   * | 
| -   * Currently, the only type of exception that can be caught by a | 
| -   * TryCatch handler and for which it does not make sense to continue | 
| -   * is termination exception.  Such exceptions are thrown when the | 
| -   * TerminateExecution methods are called to terminate a long-running | 
| -   * script. | 
| +   * For certain types of exceptions, it makes no sense to continue execution. | 
| * | 
| -   * If CanContinue returns false, the correct action is to perform | 
| -   * any C++ cleanup needed and then return. | 
| +   * If CanContinue returns false, the correct action is to perform any C++ | 
| +   * cleanup needed and then return.  If CanContinue returns false and | 
| +   * HasTerminated returns true, it is possible to call | 
| +   * CancelTerminateExecution in order to continue calling into the engine. | 
| */ | 
| bool CanContinue() const; | 
|  | 
| /** | 
| +   * Returns true if an exception has been caught due to script execution | 
| +   * being terminated. | 
| +   * | 
| +   * There is no JavaScript representation of an execution termination | 
| +   * exception.  Such exceptions are thrown when the TerminateExecution | 
| +   * methods are called to terminate a long-running script. | 
| +   * | 
| +   * If such an exception has been thrown, HasTerminated will return true, | 
| +   * indicating that it is possible to call CancelTerminateExecution in order | 
| +   * to continue calling into the engine. | 
| +   */ | 
| +  bool HasTerminated() const; | 
| + | 
| +  /** | 
| * Throws the exception caught by this TryCatch in a way that avoids | 
| * it being caught again by this same TryCatch.  As with ThrowException | 
| * it is illegal to execute any JavaScript operations after calling | 
| @@ -3874,6 +3901,7 @@ class V8EXPORT TryCatch { | 
| bool can_continue_ : 1; | 
| bool capture_message_ : 1; | 
| bool rethrow_ : 1; | 
| +  bool has_terminated_ : 1; | 
|  | 
| friend class v8::internal::Isolate; | 
| }; | 
|  |