On Thu, Apr 4, 2013 at 12:47 PM, Olivier GEORGET
<[email protected]> wrote:
> Hi,
>
> I'm new to V8 and have only fiddled with it.
> Can someone please explain me the main difference between the Context access
> functions ? There is actually 3 of them :
>
> v8::Context::GetCurrent();
> v8::Context::GetEntered();
> v8::Context::GetCalling();
>
> Can see the purpose of GetCalling, but the 2 first ones sound the same to
> me, and the doc is very frugal about it :S
>
> In the following code, I would at first expect context == curCtxTest :
>
>>     v8::Handle<v8::Context> context = v8::Context::New(NULL, globalObj);
>>
>>     v8::Context::Scope context_scope(context);
>>     v8::Handle<v8::Context> curCtxTest = v8::Context::GetCurrent();
>
>
> Cheers,
> Olivier.

Say you have three functions:

 * a(), compiled in context A
 * b(), compiled in context B
 * c(), compiled in context C

Your native code looks like this:

  Persistent<Context> context_a = ...;
  Local<Function> function_a = ...;
  context_a->Enter();
  function_a->Call(context_a->Global(), 0, NULL);
  context_a->Exit();

If a() calls b() which in turn calls c(), then the following is true in c():

  Context::GetCurrent() == C
  Context::GetCalling() == B
  Context::GetEntered() == A

Why is that useful?  I suspect that the primary use case in Chromium
is the ability to look up the right security token, depending on the
context in which a native function is called.

-- 
-- 
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/groups/opt_out.


Reply via email to