Index: include/v8.h |
=================================================================== |
--- include/v8.h (revision 13939) |
+++ include/v8.h (working copy) |
@@ -3585,6 +3585,24 @@ |
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. |
@@ -3694,21 +3712,30 @@ |
bool HasCaught() const; |
/** |
- * For certain types of exceptions, it makes no sense to continue |
- * execution. |
+ * 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. |
- * |
- * 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 |
@@ -3783,6 +3810,7 @@ |
bool can_continue_ : 1; |
bool capture_message_ : 1; |
bool rethrow_ : 1; |
+ bool has_terminated_ : 1; |
friend class v8::internal::Isolate; |
}; |