Closed
Bug 557361
Opened 15 years ago
Closed 15 years ago
JM: PICs for CALLPROP
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
FIXED
People
(Reporter: dmandelin, Assigned: dmandelin)
References
Details
I think this is mostly the same as GETPROP, except that the identity of the object can be baked into the generated stub instead of just the slot.
Assignee | ||
Comment 1•15 years ago
|
||
I already pushed a small patch that just makes callprop take advantage of the existing getprop pics (note: more work is needed for the cases where the base value is not an object). It gets a speedup of 1.17x on a microbenchmark that calls a function with body 'return x'.
I tried making a new fast path that bakes in the object identity, and that gave no further speedup. That fast path probably saves 1M loads (in this particular benchmark), which, if hot, is negligible time on Intel. Given that, I think I might move forward assuming that we don't need to optimize for identity, and leave the identity optimization for later work. I would guess it's probably a small but ultimately worthwhile win on the bigger benchmarks, but we won't know until we try.
Assignee | ||
Comment 2•15 years ago
|
||
I tried out the teleporting access method, but it didn't yield a speedup on any benchmarks. In fact, it seemed to be 5-10% slower on deltablue. Given that, and the need to root stuff for the GC in order to do that, I'm leaving it out for now.
Assignee | ||
Comment 3•15 years ago
|
||
Basically done, except for things in bug 557351. Current V8 stats:
* without pic, jaeger only (not tracing)
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 11532.7ms +/- 4.7%
--------------------------------------------
v8: 11532.7ms +/- 4.7%
crypto: 2251.7ms +/- 3.6%
deltablue: 2184.0ms +/- 6.4%
earley-boyer: 1029.3ms +/- 3.7%
raytrace: 993.3ms +/- 4.5%
regexp: 801.3ms +/- 1.3%
richards: 3504.3ms +/- 12.0%
splay: 768.7ms +/- 2.1%
* with PIC, jaeger only
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 9330.3ms +/- 2.1%
--------------------------------------------
v8: 9330.3ms +/- 2.1%
crypto: 2210.3ms +/- 1.0%
deltablue: 1497.7ms +/- 7.7%
earley-boyer: 904.7ms +/- 4.3%
raytrace: 873.3ms +/- 4.4%
regexp: 808.0ms +/- 4.5%
richards: 2272.7ms +/- 4.9%
splay: 763.7ms +/- 7.2%
Thus, in jaeger-only mode, a speedup of 1.24x or 2200 ms.
* without PIC, with tracing
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 4914.7ms +/- 2.7%
--------------------------------------------
v8: 4914.7ms +/- 2.7%
crypto: 556.3ms +/- 34.3%
deltablue: 416.0ms +/- 5.7%
earley-boyer: 1435.3ms +/- 4.7%
raytrace: 509.3ms +/- 4.4%
regexp: 709.3ms +/- 2.3%
richards: 502.0ms +/- 2.0%
splay: 786.3ms +/- 0.7%
* with PIC, with tracing
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 4762.7ms +/- 4.3%
--------------------------------------------
v8: 4762.7ms +/- 4.3%
crypto: 530.7ms +/- 29.2%
deltablue: 400.3ms +/- 5.6%
earley-boyer: 1331.3ms +/- 1.7%
raytrace: 504.3ms +/- 4.5%
regexp: 709.7ms +/- 0.5%
richards: 506.3ms +/- 3.2%
splay: 780.0ms +/- 3.0%
We seem to trace this fairly well these days, so no big change here. But it's still worth 3% or 150 ms.
Assignee | ||
Updated•15 years ago
|
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•