[webkit-qt] A quick question regarding bindings of webcore and jsc
Balazs Kelemen
kb at inf.u-szeged.hu
Fri Aug 27 04:04:23 PDT 2010
I have no real knowledge in the DOM bindings of JSC. I think the
majority of that lives in WebCore/dom. Actually I replied to you in
private accidentally, so let's continue the discussion on the list :) .
On 08/25/2010 11:43 PM, Yuchen Zhou wrote:
> Hi Balazs,
>
> Thank you for your response! That helped a lot but I am still not very
> clear:
>
> Correct me if I am wrong, I understand that ExecState is defined in
> JSC and also it inherits from the Register class. Register class has a
> union variable which stores the runtime environment such as RegisterFile.
>
> However I assume if I declare a variable in javascript, such as "var a
> = 1;", it should not only be created in the JSC registerfile but also
> become a new node in the document tree in WebCore. As we know that
> this variable "a" is actually "window.a". In other cases, if I
> explicitly write "document.a = 1" it should certainly reflect in the
> DOM tree. I was looking at where the DOM tree is passed on to JSC and
> later modified in JSC.
>
> You just told me that all script objects (I assume including the DOM)
> are stored in execstate, however in ExecState class (defined in
> callframe.h) I cannot find anything related to WebCore::Document
> class, so I was a little confused about this.
>
> Many thanks in advance,
>
> Best,
>
> --Yuchen
>
> On Wed, Aug 25, 2010 at 12:51 PM, Balazs Kelemen <kb at inf.u-szeged.hu
> <mailto:kb at inf.u-szeged.hu>> wrote:
>
> On 08/25/2010 03:55 AM, yz8ra wrote:
>> Hi all,
>>
>> I am graduate student at University of Virginia, looking to
>> improve some security features of webkit and I am currently
>> looking at IsolatedWorld mechanism specifically. I wish to
>> broaden its usage to protect the webpages against embedded
>> third-party scripts.
>>
>> I have a question here:
>>
>> in Class DOMWrapperWorld (WebCore/bindings/js/DOMWrapperWorld.h),
>> there are two variables: JSC::JSGlobalData* m_globalData; and
>> HashSet<Document*> m_documentsWithWrapperCaches;
>>
>> Upon initialization of the script execution, the DOMWrapperWorld
>> is later used to create a JSDOMWindowShell, which contains two
>> variables: JSDOMWindow* m_window; and the world itself. Correct
>> me if I am wrong, this Windowshell is later used to create
>> ExecState variable and then passed on to JavascriptCore as script
>> runtime environment.
>>
>> I want to know where does the javascript document tree object of
>> the webpage resides in. Clearly the DOMWrapperWorld has a hashmap
>> variable of document class, however I don't see there is any code
>> touching that variable. In other words, when the browser
>> encounters a script like "var a = 10;", where does the browser
>> stores this variable? I assume it's gonna store it in one of the
>> abovementioned data structures...
>>
>> Many thanks in advance,
>>
>> Best,
>
> All script objects are stored in a slot of ExecState. For better
> understanding about what the ExecState is, see RegisterFile.cpp
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20100827/f4068c51/attachment.html>
More information about the webkit-qt
mailing list