Confirmed users, Bureaucrats and Sysops emeriti
419
edits
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 == |