Changeset 48581 in webkit for trunk/JavaScriptCore
- Timestamp:
- Sep 21, 2009, 8:38:53 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r48580 r48581 1 2009-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 1 13 2009-09-21 Gustavo Noronha Silva <[email protected]> 2 14 … … 18 30 (JSC::JITThunks::JITThunks): 19 31 * jit/JITStubs.h: 32 33 2009-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): 20 90 21 91 2009-09-19 Oliver Hunt <[email protected]>
Note:
See TracChangeset
for help on using the changeset viewer.