Closed Bug 557361 Opened 15 years ago Closed 15 years ago

JM: PICs for CALLPROP

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

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.
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.
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.
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.
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.