Gecko:Overview: Difference between revisions

(→‎Document rendering pipeline: another video, and reformat the existing one)
Line 707: Line 707:
* Compartments: A '''compartment''' is a subdivision of the JS heap.  The mapping from global objects to compartments is one-to-one; that is, every global object has a compartment associated with it, and no compartment is associated with more than one global object. (NB: There are compartments associated with no global object, but they aren't very interesting).  When JS code is running SpiderMonkey has a concept of a "current" compartment.  New objects that are created will be created in the "current" compartment and associated with the global object of that compartment.
* Compartments: A '''compartment''' is a subdivision of the JS heap.  The mapping from global objects to compartments is one-to-one; that is, every global object has a compartment associated with it, and no compartment is associated with more than one global object. (NB: There are compartments associated with no global object, but they aren't very interesting).  When JS code is running SpiderMonkey has a concept of a "current" compartment.  New objects that are created will be created in the "current" compartment and associated with the global object of that compartment.
* When objects in one compartment can see objects in another compartment (via e.g. iframe.contentWindow.foo) '''cross-compartment wrappers''' or '''CCWs''' mediate the interaction between the two compartments.  By default CCWs ensure that the current compartment is kept up-to-date when execution crosses a compartment boundary.  SpiderMonkey also allows embeddings to extend wrappers with custom behavior to implement security policies, which Gecko uses extensively (see the Security section for more information).
* When objects in one compartment can see objects in another compartment (via e.g. iframe.contentWindow.foo) '''cross-compartment wrappers''' or '''CCWs''' mediate the interaction between the two compartments.  By default CCWs ensure that the current compartment is kept up-to-date when execution crosses a compartment boundary.  SpiderMonkey also allows embeddings to extend wrappers with custom behavior to implement security policies, which Gecko uses extensively (see the Security section for more information).
Further documentation:
* Talk: [https://air.mozilla.org/kannan-vijayan-baseline-jit/ Baseline JIT] (Kannan Vijayan, 2014-10-14)


=== XPConnect ===
=== XPConnect ===
canmove, Confirmed users, Bureaucrats and Sysops emeriti
1,334

edits