Ignore:
Timestamp:
Aug 20, 2009, 3:36:36 PM (16 years ago)
Author:
[email protected]
Message:

REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
https://bugs.webkit.org/show_bug.cgi?id=28332

Reviewed by Gavin Barraclough.

The method check optimisation made transitions aware of the value being
assigned when a transition was assigning a function. This had the side
effect of making every assignment of a function expression result in a
new transition, and thus a new Structure. The net result of this is that
the common JS idiom of

function MyObject() {

this.myFunction = function(...){...};

}
new MyObject();

Will produce a unique structure on every iteration, meaning that all
caching is defeated and there is a significant amount of structure churn.

The fix is to return the transition to its original form where it is
keyed off a property name + attributes tuple, but have each transition
support an optional transition on a specific value.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/JavaScriptCore.exp

    r47582 r47601  
    263263__ZN3JSC9MarkStack13allocateStackEm
    264264__ZN3JSC9MarkStack18initializePagesizeEv
     265__ZN3JSC9Structure13hasTransitionEPNS_7UString3RepEj
    265266__ZN3JSC9Structure17stopIgnoringLeaksEv
    266267__ZN3JSC9Structure18startIgnoringLeaksEv
Note: See TracChangeset for help on using the changeset viewer.