We already have an abstraction layer around these calls.  We can
change names in V8Proxy / whatever these functions end up after
V8Proxy dissolves.

Adam


On Thu, Jul 9, 2009 at 1:55 PM, Aaron Boodman<a...@chromium.org> wrote:
> It could be that the current names make sense if you work on v8, but
> don't if you work on a browser. Perhaps this naming scheme could be
> chromium-specific?
>
> - a
>
> On Thu, Jul 9, 2009 at 1:50 PM, Mads Sig Ager<a...@chromium.org> wrote:
>> To me dynamic and lexical makes no sense, so I don't think we should
>> go there.  Since you 'enter' a context through the API and you alway
>> have a current context when executing code, I find the current
>> terminology consistent with what is going on and consistent with the
>> naming in the rest of the API.  If we are to change the names, we need
>> to make sure to keep the names consistent and meaningful.
>>
>> -- Mads
>>
>> On Thu, Jul 9, 2009 at 1:43 PM, Adam Barth<aba...@chromium.org> wrote:
>>> I support this.  It look me a while to get my mind wrapped around
>>> this, especially when reading JSC / V8 bindings code side-by-side.
>>> Aligning with the JSC names would be even better.
>>>
>>> Adam
>>>
>>>
>>> On Thu, Jul 9, 2009 at 1:39 PM, Aaron Boodman<a...@chromium.org> wrote:
>>>>
>>>> I have a proposal for a rename of these functions. GetCurrent() and
>>>> GetEntered() make sense when you understand the underlying V8
>>>> mechanism, but I think that the concept of a stack of contexts is more
>>>> readily understandable to some random engineer walking in off the
>>>> street.
>>>>
>>>> What if we renamed these things to eg:
>>>>
>>>> GetTopContext();  // Returns the top v8 context from the stack, eg the
>>>> context of the currently executing code
>>>> GetBottomContext()  // Returns the bottom v8 context from the stack,
>>>> eg the context where execution entered v8
>>>>
>>>> - a
>>>>
>>>> On Thu, Jul 9, 2009 at 1:34 PM, Mads Sig Ager<a...@chromium.org> wrote:
>>>>>
>>>>> Drew,
>>>>>
>>>>> quick answer:  When you use V8 you have to enter a context before
>>>>> giving V8 some code to execute.  GetEntered() returns the last context
>>>>> that you entered using the API.  When you call JavaScript functions,
>>>>> the JavaScript engine enters the context in which that function was
>>>>> defined.  When calling functions across frames, this context will be
>>>>> different from the context that you entered through the API.
>>>>> GetCurrent will always give you the context of the currently executing
>>>>> function (the context in which the currently executing function was
>>>>> declared).  GetCalling will get you the context of the function that
>>>>> called the function you are currently executing.
>>>>>
>>>>> Cheers,     -- Mads
>>>>>
>>>>> On Thu, Jul 9, 2009 at 1:04 PM, Drew Wilson<atwil...@chromium.org> wrote:
>>>>>> Hi all,
>>>>>> I've been poking around quite a bit recently in the WebKit JS
>>>>>> bindings/constructor code, trying to make some sense of their widespread 
>>>>>> use
>>>>>> of the lexicalGlobalObject() - basically, it seems like looking at the
>>>>>> lexicalGlobalObject() is seldom what they actually want, because it means
>>>>>> that if you call between frames you unexpectedly start pulling things 
>>>>>> from a
>>>>>> different context.
>>>>>> As a very simple example (bear with me, I'll get to the chrome-specific
>>>>>> question in a second) - imagine that you have a page containing a child
>>>>>> frame. In the parent page, you define this:
>>>>>> function getImage() {
>>>>>>   return new Image();
>>>>>> }
>>>>>> ...now down in your child frame, you have code that does this:
>>>>>> var image1 = new Image();
>>>>>> var image2 = parent.window.getImage();
>>>>>> assert(image1.__proto__ == image2.__proto__);  // Fails in WebKit 
>>>>>> currently,
>>>>>> because the Image constructor lookup uses the lexicalGlobalObject.
>>>>>>
>>>>>> JSC defines dynamicGlobalObject() and lexicalGlobalObject() - I suspect 
>>>>>> that
>>>>>> they generally want to be using dynamicGlobalObject instead of
>>>>>> lexicalGlobalObject when trying to access something from global scope. 
>>>>>> Or am
>>>>>> I missing some subtlety here?
>>>>>> That brings me to my Chromium/V8 question - there are 3 context-grabbing
>>>>>> functions in V8: GetEntered(), GetCalling(), GetCurrent(). When is it
>>>>>> appropriate to use one over the others (what are the effective 
>>>>>> differences)?
>>>>>> The descriptions are kind of terse, and I'm afraid I'm missing some of 
>>>>>> the
>>>>>> subtleties between "the context of the calling JavaScript code" vs "The
>>>>>> context on the top of the stack" vs "The last entered context" (for 
>>>>>> example,
>>>>>> I would have naively thought that the calling JavaScript code's context
>>>>>> would *inherently* be the last entered one, and hence would be on the 
>>>>>> top of
>>>>>> the stack, but clearly that's not true :)
>>>>>> -atw
>>>>>> >
>>>>>>
>>>>>
>>>>> >
>>>>>
>>>>
>>>> >>>>
>>>>
>>>
>>
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to