Description
For now, JNI transition uses ineffective scheme of TLS getting - it is done via several recursive calls, finally reaching hythread_self().
The idea is to inline helper for TLS get instead of calling get_thread_ptr_stub(). Disassembly shows that 10 push/pops and 3 calls are completely eliminated there, keeping in mind that TLS get occurs at least 3 times on each JNI transition this give us a huge boost, eliminating up to 30 push/pops and 9 calls.
JNI microtest (calling several millions of empty JNI methods) testifies this:
$ ../../Builds/Harmony-clean/bin/java -cp . -Xmx128m -Xms128m nalog.nalog
iteration: 0 millis:8763
iteration: 1 millis:8722
iteration: 2 millis:8833
$ ../../Builds/Harmony-fastTLS-1/bin/java -cp . -Xmx128m -Xms128m nalog.nalog
iteration: 0 millis:6780
iteration: 1 millis:6689
iteration: 2 millis:6870
Attachments
Attachments
Issue Links
- blocks
-
HARMONY-4704 [drlvm][jni] JNI improvements
- Open
- is blocked by
-
HARMONY-4723 [drlvm][thread] hythread_self_helper wastes edx register on Linux/ia32
- Closed