[Webkit-unassigned] [Bug 178312] [JSC][LLInt] Implement Polymorphic Inline Caches on op_get_by_id
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sat Oct 14 12:29:36 PDT 2017
https://bugs.webkit.org/show_bug.cgi?id=178312
Caio Lima <ticaiolima at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |ticaiolima at gmail.com
Assignee|webkit-unassigned at lists.web |ticaiolima at gmail.com
|kit.org |
Attachment #323816| |review?
Flags| |
--- Comment #1 from Caio Lima <ticaiolima at gmail.com> ---
Created attachment 323816
--> https://bugs.webkit.org/attachment.cgi?id=323816&action=review
WIP - It starts
This Patch starts the implementation. I'm interested in collecting feedback from you to keep working on it. My idea is to cache Structures using FIFO policy, to be able to catch different call-sites of a function and optimize for them (Probably I'm going to create a case for that). IMHO, this policy seems very simple, but even with it, I could measure some improvements on benchmarks:
PS.: I collected following results running benchmarks with "JSC_useJIT=false"
Benchmark report for V8Spider, Octane, and Kraken on Caios-MacBook-Pro (MacBookPro12,1).
VMs tested:
"baseline" at /Users/caiolima/open_projects/WebKit/WebKitBaselineBuild/Release/jsc
"changes" at /Users/caiolima/open_projects/WebKit/WebKitBuild/Release/jsc
Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
baseline changes
V8Spider:
crypto 683.1670+-19.2621 ? 835.8115+-431.9966 ? might be 1.2234x slower
deltablue 1362.3902+-27.2429 ? 1370.7209+-18.6387 ?
earley-boyer 659.4617+-399.6603 490.7356+-11.2124 might be 1.3438x faster
raytrace 264.5184+-19.7043 ? 266.9626+-16.2422 ?
regexp 148.3394+-3.1761 148.2460+-8.9221
richards 1456.1012+-30.0906 1454.5450+-40.0814
splay 231.0293+-8.9334 ^ 194.3757+-2.3684 ^ definitely 1.1886x faster
<geometric> 496.4563+-34.7263 480.6935+-38.1704 might be 1.0328x faster
baseline changes
Octane:
encrypt 4.29210+-0.08702 ? 4.32454+-0.08857 ?
decrypt 77.00315+-1.79384 ? 79.30127+-1.12004 ? might be 1.0298x slower
deltablue x2 9.31920+-0.18430 9.13937+-0.25287 might be 1.0197x faster
earley 7.89351+-2.62695 6.85874+-0.15562 might be 1.1509x faster
boyer 117.29007+-1.82930 115.10083+-0.65218 might be 1.0190x faster
navier-stokes x2 90.61067+-17.35486 80.68529+-2.79175 might be 1.1230x faster
raytrace x2 45.02483+-0.48965 43.93484+-0.63733 might be 1.0248x faster
richards x2 4.28244+-0.06543 4.25291+-0.08199
splay x2 3.04093+-0.05215 ^ 2.71874+-0.07910 ^ definitely 1.1185x faster
regexp x2 82.33913+-16.75664 71.77397+-5.44225 might be 1.1472x faster
pdfjs x2 217.93367+-28.88964 207.78765+-3.79388 might be 1.0488x faster
mandreel x2 2951.07356+-61.71802 2905.05659+-50.70337 might be 1.0158x faster
gbemu x2 623.67314+-30.73659 ? 656.00748+-23.37269 ? might be 1.0518x slower
closure 0.73940+-0.01035 ? 0.74472+-0.00569 ?
jquery 10.41921+-1.39356 9.88610+-0.63410 might be 1.0539x faster
box2d x2 163.96675+-8.26118 161.95834+-3.38487 might be 1.0124x faster
zlib x2 13847.71583+-227.59617 ^ 12545.11145+-496.99654 ^ definitely 1.1038x faster
typescript x2 3462.74837+-54.67934 3430.36820+-66.78332
<geometric> 89.44004+-1.44483 ^ 86.00409+-0.88517 ^ definitely 1.0400x faster
Since it isn't possible to re-patch code on Interpreter, I'm using a loop and a new "op_get_by_id_polymorphic" to handle cached cases and avoid slow paths on property lookups.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20171014/dbade909/attachment-0001.html>
More information about the webkit-unassigned
mailing list