From a55a59a4f5102c54a08aae0e2e3d38a5095666e1 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Thu, 10 May 2018 15:00:13 +0100 Subject: [PATCH] Move registration of AssetManager.mObject to zygote. bug: 73865351 Test: m Change-Id: I9d0f0c8ae016b8823246e25bfdbff0d4fd8eaae1 --- core/jni/android_util_AssetManager.cpp | 5 ++--- .../android_util_AssetManager.h | 5 +++++ native/android/asset_manager.cpp | 22 ------------------- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 7fa224757fd2..fa9f44557d3f 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -75,9 +75,8 @@ static struct assetfiledescriptor_offsets_t { jfieldID mLength; } gAssetFileDescriptorOffsets; -static struct assetmanager_offsets_t { - jfieldID mObject; -} gAssetManagerOffsets; +// This is also used by asset_manager.cpp. +assetmanager_offsets_t gAssetManagerOffsets; static struct { jfieldID native_ptr; diff --git a/core/jni/include/android_runtime/android_util_AssetManager.h b/core/jni/include/android_runtime/android_util_AssetManager.h index 2c1e3579eb92..ac734a908bed 100644 --- a/core/jni/include/android_runtime/android_util_AssetManager.h +++ b/core/jni/include/android_runtime/android_util_AssetManager.h @@ -27,6 +27,11 @@ namespace android { extern AAssetManager* NdkAssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager); extern Guarded* AssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager); extern Guarded* AssetManagerForNdkAssetManager(AAssetManager* assetmanager); +struct assetmanager_offsets_t +{ + jfieldID mObject; +}; +extern assetmanager_offsets_t gAssetManagerOffsets; } // namespace android diff --git a/native/android/asset_manager.cpp b/native/android/asset_manager.cpp index e70d5ea0d566..69cf80477dde 100644 --- a/native/android/asset_manager.cpp +++ b/native/android/asset_manager.cpp @@ -55,33 +55,11 @@ struct AAsset { // -------------------- Public native C API -------------------- -/** - * Supporting information - */ - -static struct assetmanager_offsets_t -{ - jfieldID mObject; -} gAssetManagerOffsets; - -static volatile bool gJNIConfigured = false; -static Mutex gMutex; - /** * Asset Manager functionality */ AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager) { - { - Mutex::Autolock _l(gMutex); - - if (gJNIConfigured == false) { - jclass amClass = env->FindClass("android/content/res/AssetManager"); - gAssetManagerOffsets.mObject = env->GetFieldID(amClass, "mObject", "J"); - gJNIConfigured = true; - } - } - return (AAssetManager*) env->GetLongField(assetManager, gAssetManagerOffsets.mObject); }