Thanks, Ben.

> Assuming your execution contexts don't interleave (context A can't
> call functions from context B), then all you have to do is place
> CancelTerminateExecution calls in the right spots.

Yes, we do not have contexts interleaving(but context switch due to
async calls).

As to the "right spots" could you please give me more details or
advice about it? Now I'm planning to `CancelTerminateExecution`
when the `v8::TryCatch` is `HasTerminated`, which is created before
entering js code, And mark the current execution environment as
terminated so that we can skip Resolve/Reject when async operations
are completed and thus ensure that no new microtask is generated
or ran(now we use the auto policy for microtask).

Besides the right spots, I'm also concerned that how the
per-isolate(shared by all contexts) data are processed when I call
'TerminateExecution'. Such as the microtask queue, will the queue be
cleared up by v8 automatically or I should do it manually?

-- 
-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/239e50dc-59d8-4cf9-8abb-1296fff03ee9n%40googlegroups.com.

Reply via email to