On Tue, Apr 23, 2013 at 5:49 PM, <[email protected]> wrote: > > On Tuesday, April 23, 2013 6:47:51 AM UTC-7, Ben Noordhuis wrote: >> >> 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. > > > Hopefully this helps the origina poster, but it confuses me. I understand > why > Context::GetEntered() == A > since we can read > context_a->Enter(); > but I can't figure out why the other facts are true. > > jjb
A function is tied to the context it was created in. That's why Context::GetCalling() == B in c() because b() calls c(). Likewise, Context::GetCurrent() == C in c() because that's the context it was created in (and belongs to.) -- -- 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.
