This is much much better. Thank you for the tip! On Sunday, June 22, 2014 8:24:01 PM UTC+3, Ben Noordhuis wrote: > > On Sun, Jun 22, 2014 at 8:36 AM, Danny Dorfman <[email protected] > <javascript:>> wrote: > > I already tried that, but V8::IsExecutionTerminating() returned false. > > I don't know if it's a bug or a feature. > > I just remembered something from our code base: termination doesn't go > into effect until you enter the VM again. In our project, we force > that by executing a no-op script, see below. HTH. > > void ExitFunction(const v8::FunctionCallbackInfo<v8::Value>& info) { > v8::Isolate* isolate = info.GetIsolate(); > v8::HandleScope handle_scope(isolate); > // Sets a thread-local flag that is checked by the JS function prologue. > v8::V8::TerminateExecution(isolate); > // Which means it's not in effect yet. > CHECK_EQ(false, v8::V8::IsExecutionTerminating(isolate)); > // Now force the termination exception by entering the VM. > v8::Local<v8::String> script_source = v8::String::NewFromUtf8(isolate, > "0"); > v8::TryCatch try_catch; > v8::Script::Compile(script_source)->Run(); > CHECK_EQ(true, try_catch.HasCaught()); > CHECK_EQ(true, try_catch.HasTerminated()); > CHECK_EQ(true, v8::V8::IsExecutionTerminating(isolate)); > } >
-- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
