RESOLVED FIXED 20821
Cache property transitions to speed up object initialization
https://bugs.webkit.org/show_bug.cgi?id=20821
Summary Cache property transitions to speed up object initialization
Maciej Stachowiak
Reported 2008-09-12 18:07:38 PDT
EarlyBoyer spends 16.6% of its time in cti_op_put_by_id_generic, much of it under StructureID::addPropertyTransition. A lot of this time could be removed by inline caching property transitions - the old structure ID, the new structureID, and the offset to write to (and a call to resize if needed). DeltaBlue is also somewhat affected (3.6% in put_by_id_generic) as is Raytrace, though in the case of RayTrace much of the badness could just be due to Arguments not being very clever. See bug 20813.
Attachments
patch mostly by oliver with some bug fixes by me (needs ChangeLog, cleanup) (27.20 KB, patch)
2008-09-13 02:03 PDT, Maciej Stachowiak
no flags
Fully implemented transition cache, now with a bonus feature: correctness (31.54 KB, patch)
2008-09-13 23:51 PDT, Oliver Hunt
zwarich: review+
Maciej Stachowiak
Comment 1 2008-09-13 02:03:29 PDT
Created attachment 23389 [details] patch mostly by oliver with some bug fixes by me (needs ChangeLog, cleanup)
Oliver Hunt
Comment 2 2008-09-13 23:51:11 PDT
Created attachment 23406 [details] Fully implemented transition cache, now with a bonus feature: correctness
Oliver Hunt
Comment 3 2008-09-14 00:30:59 PDT
Comment on attachment 23406 [details] Fully implemented transition cache, now with a bonus feature: correctness Removing review flag, this apparently breaks gmail :-(
Oliver Hunt
Comment 4 2008-09-14 00:46:19 PDT
Comment on attachment 23406 [details] Fully implemented transition cache, now with a bonus feature: correctness Cameron lied to me, it works fine!
Cameron Zwarich (cpst)
Comment 5 2008-09-14 01:08:11 PDT
Comment on attachment 23406 [details] Fully implemented transition cache, now with a bonus feature: correctness I think "failuresCases" would probably be better as "failureCases". You have some extra blank lines, like CTI.cpp:1900 and Machine.cpp:2474. Perhaps sIDC would be better as structureIDChain or chain? What do you think? Other than that, r=me.
Oliver Hunt
Comment 6 2008-09-14 01:19:15 PDT
M JavaScriptCore/ChangeLog M JavaScriptCore/VM/CTI.cpp M JavaScriptCore/VM/CTI.h M JavaScriptCore/VM/CodeBlock.cpp M JavaScriptCore/VM/CodeGenerator.cpp M JavaScriptCore/VM/Machine.cpp M JavaScriptCore/VM/Machine.h M JavaScriptCore/VM/Opcode.h M JavaScriptCore/kjs/JSObject.h M JavaScriptCore/kjs/PutPropertySlot.h M JavaScriptCore/kjs/StructureID.cpp M JavaScriptCore/kjs/StructureID.h M JavaScriptCore/masm/X86Assembler.h Committed r36401
Note You need to log in before you can comment on or make changes to this bug.