RFR[s] 8179305 - Avoid repeated calls to JavaThread::last_frame in InterpreterRuntime
Ioi Lam
ioi.lam at oracle.com
Fri Apr 28 11:06:12 UTC 2017
https://bugs.openjdk.java.net/browse/JDK-8179305
http://cr.openjdk.java.net/~iklam/jdk10/8179305-avoid-last-frame.v01/
Summary:
JavaThread::last_frame() is an expensive call. We use the helper class
LastFrameAccessor holds the value of last_frame:
OLD:
methodHandle m (thread, method(thread));// calls
JavaThread::last_frame() internally
Bytecode_loadconstant ldc(m, bci(thread));// calls
JavaThread::last_frame() internally
NEW:
LastFrameAccessor last_frame(thread);
methodHandle m (thread, last_frame.method());
Bytecode_loadconstant ldc(m, last_frame.bci());
Testing:
Preliminary benchmarking shows significant VM start-up improvement:
java -version:
no CDS = 80.35 ms -> 79.14ms (-1.5%)
w/ CDS = 53.89ms -> 52.62ms (-2.36%)
clojure sample app:
no CDS = 1442.46ms -> 1436.11ms (-0.44%)
w/ CDS = 695.78ms -> 679.52ms (-2.34%)
Thanks
- Ioi
More information about the hotspot-runtime-dev
mailing list