diff options
author | Lepton Wu <lepton@chromium.org> | 2019-10-21 20:22:18 -0700 |
---|---|---|
committer | Lepton Wu <lepton@chromium.org> | 2019-10-24 23:37:18 +0000 |
commit | e137b3a9b71a2711c1f68c8a8b9c0a7407fbcc4b (patch) | |
tree | 1a6f740be3757e844d2168d91a1e2203d55397fb /src/mapi | |
parent | a4fec4dd6a2ff2209047ea9931cbf50bb4521819 (diff) | |
download | mesa-e137b3a9b71a2711c1f68c8a8b9c0a7407fbcc4b.tar.gz |
mapi: Inline call x86_current_tls.
This saves one return and a simple benchmark which calls glGetString
repeatedly on my desktop shows it improves calls per second from 118M
to 128M.
Signed-off-by: Lepton Wu <lepton@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Diffstat (limited to 'src/mapi')
-rw-r--r-- | src/mapi/entry_x86_tls.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mapi/entry_x86_tls.h b/src/mapi/entry_x86_tls.h index 545b5a3c786..4b3d6bd02ad 100644 --- a/src/mapi/entry_x86_tls.h +++ b/src/mapi/entry_x86_tls.h @@ -56,9 +56,13 @@ __asm__(".balign 16\n" ".balign 16\n" \ func ":" -#define STUB_ASM_CODE(slot) \ - "call x86_current_tls\n\t" \ - "movl %gs:(%eax), %eax\n\t" \ +#define STUB_ASM_CODE(slot) \ + "call 1f\n" \ + "1:\n\t" \ + "popl %eax\n\t" \ + "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \ + "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" \ + "movl %gs:(%eax), %eax\n\t" \ "jmp *(4 * " slot ")(%eax)" #define MAPI_TMP_STUB_ASM_GCC |