This allows us to get rid of a lot of the additional overhead of pushing DOM attributes up into the prototype. By eagerly reifying the custom getters and setters into the actual JSObject we avoid having to override getOwnPropertySlot for all of the DOM prototypes, which is a lot of the overhead of doing property lookups on DOM wrappers.
Created attachment 232580 [details] Patch
Attachment 232580 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 232581 [details] Patch
Attachment 232581 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 232582 [details] Patch
Attachment 232582 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 36 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 232583 [details] Patch
Attachment 232583 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 37 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 232583 [details] Patch You'll need to do run-bindings-tests verify that the diffs look sane, then run-bindings-tests --reset-results otherwise yay!
This doesn't work for HTMLDListElement and HTMLOListElement. They crap out in InterfaceRequiresAttributesOnInstance because they have "List" in the name. If you change that line to something like this instead: return 1 if $interfaceName =~ /List$/; ..then this will go even faster, as the jslib test pages have a bunch of these elements. :) Other than that, truly awesome stuff.
Committed r169703: <http://trac.webkit.org/changeset/169703>
Followup fixes in http://trac.webkit.org/changeset/169705 and http://trac.webkit.org/changeset/169707
js/dom/global-constructors-attributes-dedicated-worker.html started to crash every time in debug builds after this. Mark is working on a fix. http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=js%2Fdom%2Fglobal-constructors-attributes-dedicated-worker.html
The regression was actually a pre-existing bug that this change revealed, so I filed bug 133661 to track it separately.
(In reply to comment #11) > Committed r169703: <http://trac.webkit.org/changeset/169703> This caused a regression of ~50% on memory usage (JSHeap) on all performance tests: https://bugs.webkit.org/show_bug.cgi?id=133876