diff options
| author | 2020-05-11 16:55:55 +0100 | |
|---|---|---|
| committer | 2020-06-19 08:26:46 +0000 | |
| commit | 86c8752f64629325026945cd4eabd1dcea224acb (patch) | |
| tree | 9dc2be978f9e784a3ce16fa29d46941a94ac1c94 /runtime/entrypoints/entrypoint_utils.h | |
| parent | f97a859e85f703644d897f0e3e1bc54315557aaa (diff) | |
Direct calls to @CriticalNative methods.
Emit direct calls from compiled managed code to the native
code registered with the method, avoiding the JNI stub.
Golem results:
art-opt-cc x86 x86-64 arm arm64
NativeDowncallStaticCritical +12.5% +62.5% +75.9% +41.7%
NativeDowncallStaticCritical6 +55.6% +87.5% +72.1% +35.3%
art-opt x86 x86-64 arm arm64
NativeDowncallStaticCritical +28.6% +85.6% +76.4% +38.4%
NativeDowncallStaticCritical6 +44.6% +44.6% +74.6% +32.2%
Test: Covered by 178-app-image-native-method.
Test: m test-art-host-gtest
Test: testrunner.py --host --debuggable --ndebuggable \
--optimizing --jit --jit-on-first-use
Test: run-gtests.sh
Test: testrunner.py --target --optimizing
Test: testrunner.py --target --debuggable --ndebuggable \
--optimizing --jit --jit-on-first-use -t 178
Test: aosp_cf_x86_phone-userdebug boots.
Test: aosp_cf_x86_phone-userdebug/jitzygote boots.
Bug: 112189621
Change-Id: I8b37da51e8fe0b7bc513bb81b127fe0416068866
Diffstat (limited to 'runtime/entrypoints/entrypoint_utils.h')
| -rw-r--r-- | runtime/entrypoints/entrypoint_utils.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/entrypoints/entrypoint_utils.h b/runtime/entrypoints/entrypoint_utils.h index 85082d389d..dfc1eddde3 100644 --- a/runtime/entrypoints/entrypoint_utils.h +++ b/runtime/entrypoints/entrypoint_utils.h @@ -44,6 +44,7 @@ class ArtField; class ArtMethod; class HandleScope; enum InvokeType : uint32_t; +class MethodReference; class OatQuickMethodHeader; class ScopedObjectAccessAlreadyRunnable; class Thread; @@ -218,6 +219,10 @@ constexpr size_t kJniCookieSize = sizeof(uint32_t); inline HandleScope* GetGenericJniHandleScope(ArtMethod** managed_sp, size_t num_handle_scope_references); +// Update .bss method entrypoint if the `callee_reference` has an associated oat file +// and that oat file has a .bss entry for the `callee_reference`. +void MaybeUpdateBssMethodEntry(ArtMethod* callee, MethodReference callee_reference); + } // namespace art #endif // ART_RUNTIME_ENTRYPOINTS_ENTRYPOINT_UTILS_H_ |