You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Aleksey Shipilev (JIRA)" <ji...@apache.org> on 2007/08/31 12:52:31 UTC
[jira] Updated: (HARMONY-4705) [drlvm][jni] JNI transition uses
ineffective TLS get
[ https://issues.apache.org/jira/browse/HARMONY-4705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aleksey Shipilev updated HARMONY-4705:
--------------------------------------
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
was:
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 there, eliminating up to 30 push/pops and 9 calls.
> [drlvm][jni] JNI transition uses ineffective TLS get
> ----------------------------------------------------
>
> Key: HARMONY-4705
> URL: https://issues.apache.org/jira/browse/HARMONY-4705
> Project: Harmony
> Issue Type: Improvement
> Components: DRLVM
> Reporter: Aleksey Shipilev
>
> 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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.