WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
ASSIGNED
178312
[JSC][LLInt] Implement Polymorphic Inline Caches on op_get_by_id
https://bugs.webkit.org/show_bug.cgi?id=178312
Summary
[JSC][LLInt] Implement Polymorphic Inline Caches on op_get_by_id
Caio Lima
Reported
2017-10-14 12:17:45 PDT
Polymorphic Inline Caching is being used by Baseline+ tiers in JSC for a long time. However, It is not implemented on LLInt, which means that any CLoop build won't be able to get this optimization. My idea is to introduce a "Pseudo-PIC" on LLInt, to get performance progressions in some benchmarks.
Attachments
WIP - It starts
(26.49 KB, patch)
2017-10-14 12:29 PDT
,
Caio Lima
no flags
Details
Formatted Diff
Diff
Patch
(33.22 KB, patch)
2017-10-16 20:09 PDT
,
Caio Lima
no flags
Details
Formatted Diff
Diff
Patch
(35.00 KB, patch)
2017-10-16 20:37 PDT
,
Caio Lima
buildbot
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from ews113 for mac-elcapitan
(2.19 MB, application/zip)
2017-10-16 21:49 PDT
,
Build Bot
no flags
Details
Proposed Patch
(34.84 KB, patch)
2017-10-18 15:59 PDT
,
Caio Lima
no flags
Details
Formatted Diff
Diff
WIP - Patch RFC
(40.13 KB, patch)
2017-12-12 15:25 PST
,
Caio Lima
no flags
Details
Formatted Diff
Diff
Benchmark
(97.40 KB, text/plain)
2017-12-12 15:52 PST
,
Caio Lima
no flags
Details
Show Obsolete
(5)
View All
Add attachment
proposed patch, testcase, etc.
Caio Lima
Comment 1
2017-10-14 12:29:36 PDT
Created
attachment 323816
[details]
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.
Build Bot
Comment 2
2017-10-14 12:31:55 PDT
Attachment 323816
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/StructureProfile.h:46: Missing space inside { }. [whitespace/braces] [5] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1311: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1312: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1313: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1314: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1315: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1316: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1317: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.cpp:445: One line control clauses should not use braces. [whitespace/braces] [4] Total errors found: 9 in 15 files If any of these errors are false positives, please file a bug against check-webkit-style.
Caio Lima
Comment 3
2017-10-16 20:09:28 PDT
Created
attachment 323977
[details]
Patch
Caio Lima
Comment 4
2017-10-16 20:37:53 PDT
Created
attachment 323981
[details]
Patch
Build Bot
Comment 5
2017-10-16 21:49:15 PDT
Comment on
attachment 323981
[details]
Patch
Attachment 323981
[details]
did not pass mac-debug-ews (mac): Output:
http://webkit-queues.webkit.org/results/4878634
Number of test failures exceeded the failure limit.
Build Bot
Comment 6
2017-10-16 21:49:17 PDT
Created
attachment 323994
[details]
Archive of layout-test-results from ews113 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews113 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Caio Lima
Comment 7
2017-10-18 15:59:19 PDT
Created
attachment 324177
[details]
Proposed Patch Patch fixing crashes on Bot
Caio Lima
Comment 8
2017-10-20 12:04:50 PDT
Ping review
Caio Lima
Comment 9
2017-12-12 15:25:03 PST
Created
attachment 329167
[details]
WIP - Patch RFC It's a WIP project. I'm testing some new approaches to avoid some regressions I've found into Octane benchmarks.
Caio Lima
Comment 10
2017-12-12 15:52:06 PST
Created
attachment 329170
[details]
Benchmark This is the report of running with JSC_useJIT=false. I could notice some regressions that need further investigation.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug