Changeset 48581 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Sep 21, 2009, 8:38:53 AM (16 years ago)
Author:
Adam Roben
Message:

Fix JavaScriptCore/ChangeLog to match our preferred rollout procedure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r48580 r48581  
     12009-09-21  Adam Roben  <[email protected]>
     2
     3        Revert r48573, as it caused many assertion failures
     4
     5        * interpreter/Interpreter.cpp:
     6        * jit/JITStubs.cpp:
     7        * runtime/BatchedTransitionOptimizer.h:
     8        * runtime/JSObject.cpp:
     9        * runtime/Structure.cpp:
     10        * runtime/Structure.h:
     11        * runtime/StructureChain.cpp:
     12
    1132009-09-21  Gustavo Noronha Silva  <[email protected]>
    214
     
    1830        (JSC::JITThunks::JITThunks):
    1931        * jit/JITStubs.h:
     32
     332009-09-20  Oliver Hunt  <[email protected]>
     34
     35        Reviewed by Maciej Stachowiak.
     36
     37        SNES is too slow
     38        https://bugs.webkit.org/show_bug.cgi?id=29534
     39
     40        The problem was that the emulator used multiple classes with
     41        more properties than our dictionary cutoff allowed, this resulted
     42        in more or less all critical logic inside the emulator requiring
     43        uncached property access.
     44
     45        Rather than simply bumping the dictionary cutoff, this patch
     46        recognises that there are two ways to create a "dictionary"
     47        structure.  Either by adding a large number of properties, or
     48        by removing a property.  In the case of adding properties we
     49        know all the existing properties will maintain their existing
     50        offsets, so we could cache access to those properties, if we
     51        know they won't be removed.
     52
     53        To make this possible, this patch adds the logic required to
     54        distinguish a dictionary created by addition from one created
     55        by removal.  With this logic in place we can now cache access
     56        to objects with large numbers of properties.
     57
     58        SNES performance improved by more than 6x.
     59
     60        * interpreter/Interpreter.cpp:
     61        (JSC::Interpreter::resolveGlobal):
     62        (JSC::Interpreter::tryCachePutByID):
     63        (JSC::Interpreter::tryCacheGetByID):
     64        * jit/JITStubs.cpp:
     65        (JSC::JITThunks::tryCachePutByID):
     66        (JSC::JITThunks::tryCacheGetByID):
     67        (JSC::DEFINE_STUB_FUNCTION):
     68        * runtime/BatchedTransitionOptimizer.h:
     69        (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
     70        * runtime/JSObject.cpp:
     71        (JSC::JSObject::removeDirect):
     72        * runtime/Structure.cpp:
     73        (JSC::Structure::Structure):
     74        (JSC::Structure::getEnumerablePropertyNames):
     75        (JSC::Structure::despecifyDictionaryFunction):
     76        (JSC::Structure::addPropertyTransitionToExistingStructure):
     77        (JSC::Structure::addPropertyTransition):
     78        (JSC::Structure::removePropertyTransition):
     79        (JSC::Structure::toDictionaryTransition):
     80        (JSC::Structure::toCacheableDictionaryTransition):
     81        (JSC::Structure::toUncacheableDictionaryTransition):
     82        (JSC::Structure::fromDictionaryTransition):
     83        (JSC::Structure::removePropertyWithoutTransition):
     84        * runtime/Structure.h:
     85        (JSC::Structure::isDictionary):
     86        (JSC::Structure::isUncacheableDictionary):
     87        (JSC::Structure::):
     88        * runtime/StructureChain.cpp:
     89        (JSC::StructureChain::isCacheable):
    2090
    21912009-09-19  Oliver Hunt  <[email protected]>
Note: See TracChangeset for help on using the changeset viewer.