JSObject Makeover: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1: Line 1:
Spun out from [https://bugzilla.mozilla.org/show_bug.cgi?id=408416].
Spun out from [https://bugzilla.mozilla.org/show_bug.cgi?id=408416].
== JSObject background/notes ==
* at first the GC allocated only pairs (cons cells), all slots were dslots
* split dslots from fslots, then class into its own classword
** no point in scanning PRIVATE-tagged class fslot
** DELEGATE and SYSTEM bits fit in classword
* GC size class limitations eliminated for fslots split, but still few classes
* map -> scope is not needed for small objects
** optimization to avoid scope hashtable could be taken further: store lastProp in object instead of scope
== JSObjectOps background/notes ==
* came years after JSClass
** hence optional JSClass.getObjectOps, "upside-down" new object protocol
* leaky abstraction to let LiveConnect specialize object behavior not hooked via JSClass
* object (scope) locking if JS_THREADSAFE under the JSObjectOps layer (generally; again the layering broke down in a few places)
* reluctance to add more ops back in the ABI-matters-for-Netscape (servers as well as client) days


== Possible JSObject changes ==
== Possible JSObject changes ==
Confirmed users, Bureaucrats and Sysops emeriti
419

edits