Loading core/java/android/util/TypedValue.java +22 −0 Original line number Diff line number Diff line Loading @@ -815,6 +815,7 @@ public class TypedValue { assetCookie = other.assetCookie; resourceId = other.resourceId; density = other.density; usesFeatureFlags = other.usesFeatureFlags; } public String toString() Loading @@ -831,7 +832,28 @@ public class TypedValue { if (resourceId != 0) { sb.append(" r=0x").append(Integer.toHexString(resourceId)); } if (usesFeatureFlags) { sb.append(" flagged"); } sb.append("}"); return sb.toString(); } /** * A JNI interface so it can set all values in a single call, speeding up a * very common operation. * * @hide */ void setFields(int aType, int aAssetCookie, int aData, int aResourceId, int aChangingConfigurations, int aDensity, boolean aUsesFeatureFlags) { type = aType; assetCookie = aAssetCookie; data = aData; string = null; resourceId = aResourceId; changingConfigurations = aChangingConfigurations; density = aDensity; usesFeatureFlags = aUsesFeatureFlags; } } core/jni/android_util_AssetManager.cpp +7 −29 Original line number Diff line number Diff line Loading @@ -60,14 +60,7 @@ namespace android { // ---------------------------------------------------------------------------- static struct typedvalue_offsets_t { jfieldID mType; jfieldID mData; jfieldID mString; jfieldID mAssetCookie; jfieldID mResourceId; jfieldID mChangingConfigurations; jfieldID mDensity; jfieldID mUsesFeatureFlags; jmethodID setFields; } gTypedValueOffsets; // This is also used by asset_manager.cpp. Loading Loading @@ -130,16 +123,10 @@ constexpr inline static ApkAssetsCookie JavaCookieToApkAssetsCookie(jint cookie) static jint CopyValue(JNIEnv* env, const AssetManager2::SelectedValue& value, jobject out_typed_value) { env->SetIntField(out_typed_value, gTypedValueOffsets.mType, value.type); env->SetIntField(out_typed_value, gTypedValueOffsets.mAssetCookie, ApkAssetsCookieToJavaCookie(value.cookie)); env->SetIntField(out_typed_value, gTypedValueOffsets.mData, value.data); env->SetObjectField(out_typed_value, gTypedValueOffsets.mString, nullptr); env->SetIntField(out_typed_value, gTypedValueOffsets.mResourceId, value.resid); env->SetIntField(out_typed_value, gTypedValueOffsets.mChangingConfigurations, value.flags); env->SetIntField(out_typed_value, gTypedValueOffsets.mDensity, value.config.density); env->SetBooleanField(out_typed_value, gTypedValueOffsets.mUsesFeatureFlags, value.entry_flags & ResTable_entry::FLAG_USES_FEATURE_FLAGS); env->CallVoidMethod(out_typed_value, gTypedValueOffsets.setFields, value.type, ApkAssetsCookieToJavaCookie(value.cookie), value.data, value.resid, value.flags, value.config.density, (value.entry_flags & ResTable_entry::FLAG_USES_FEATURE_FLAGS) != 0); return static_cast<jint>(ApkAssetsCookieToJavaCookie(value.cookie)); } Loading Loading @@ -1658,16 +1645,7 @@ int register_android_content_AssetManager(JNIEnv* env) { gApkAssetsFields.native_ptr = GetFieldIDOrDie(env, apk_assets_class, "mNativePtr", "J"); jclass typedValue = FindClassOrDie(env, "android/util/TypedValue"); gTypedValueOffsets.mType = GetFieldIDOrDie(env, typedValue, "type", "I"); gTypedValueOffsets.mData = GetFieldIDOrDie(env, typedValue, "data", "I"); gTypedValueOffsets.mString = GetFieldIDOrDie(env, typedValue, "string", "Ljava/lang/CharSequence;"); gTypedValueOffsets.mAssetCookie = GetFieldIDOrDie(env, typedValue, "assetCookie", "I"); gTypedValueOffsets.mResourceId = GetFieldIDOrDie(env, typedValue, "resourceId", "I"); gTypedValueOffsets.mChangingConfigurations = GetFieldIDOrDie(env, typedValue, "changingConfigurations", "I"); gTypedValueOffsets.mDensity = GetFieldIDOrDie(env, typedValue, "density", "I"); gTypedValueOffsets.mUsesFeatureFlags = GetFieldIDOrDie(env, typedValue, "usesFeatureFlags", "Z"); gTypedValueOffsets.setFields = GetMethodIDOrDie(env, typedValue, "setFields", "(IIIIIIZ)V"); jclass assetManager = FindClassOrDie(env, "android/content/res/AssetManager"); gAssetManagerOffsets.mObject = GetFieldIDOrDie(env, assetManager, "mObject", "J"); Loading Loading
core/java/android/util/TypedValue.java +22 −0 Original line number Diff line number Diff line Loading @@ -815,6 +815,7 @@ public class TypedValue { assetCookie = other.assetCookie; resourceId = other.resourceId; density = other.density; usesFeatureFlags = other.usesFeatureFlags; } public String toString() Loading @@ -831,7 +832,28 @@ public class TypedValue { if (resourceId != 0) { sb.append(" r=0x").append(Integer.toHexString(resourceId)); } if (usesFeatureFlags) { sb.append(" flagged"); } sb.append("}"); return sb.toString(); } /** * A JNI interface so it can set all values in a single call, speeding up a * very common operation. * * @hide */ void setFields(int aType, int aAssetCookie, int aData, int aResourceId, int aChangingConfigurations, int aDensity, boolean aUsesFeatureFlags) { type = aType; assetCookie = aAssetCookie; data = aData; string = null; resourceId = aResourceId; changingConfigurations = aChangingConfigurations; density = aDensity; usesFeatureFlags = aUsesFeatureFlags; } }
core/jni/android_util_AssetManager.cpp +7 −29 Original line number Diff line number Diff line Loading @@ -60,14 +60,7 @@ namespace android { // ---------------------------------------------------------------------------- static struct typedvalue_offsets_t { jfieldID mType; jfieldID mData; jfieldID mString; jfieldID mAssetCookie; jfieldID mResourceId; jfieldID mChangingConfigurations; jfieldID mDensity; jfieldID mUsesFeatureFlags; jmethodID setFields; } gTypedValueOffsets; // This is also used by asset_manager.cpp. Loading Loading @@ -130,16 +123,10 @@ constexpr inline static ApkAssetsCookie JavaCookieToApkAssetsCookie(jint cookie) static jint CopyValue(JNIEnv* env, const AssetManager2::SelectedValue& value, jobject out_typed_value) { env->SetIntField(out_typed_value, gTypedValueOffsets.mType, value.type); env->SetIntField(out_typed_value, gTypedValueOffsets.mAssetCookie, ApkAssetsCookieToJavaCookie(value.cookie)); env->SetIntField(out_typed_value, gTypedValueOffsets.mData, value.data); env->SetObjectField(out_typed_value, gTypedValueOffsets.mString, nullptr); env->SetIntField(out_typed_value, gTypedValueOffsets.mResourceId, value.resid); env->SetIntField(out_typed_value, gTypedValueOffsets.mChangingConfigurations, value.flags); env->SetIntField(out_typed_value, gTypedValueOffsets.mDensity, value.config.density); env->SetBooleanField(out_typed_value, gTypedValueOffsets.mUsesFeatureFlags, value.entry_flags & ResTable_entry::FLAG_USES_FEATURE_FLAGS); env->CallVoidMethod(out_typed_value, gTypedValueOffsets.setFields, value.type, ApkAssetsCookieToJavaCookie(value.cookie), value.data, value.resid, value.flags, value.config.density, (value.entry_flags & ResTable_entry::FLAG_USES_FEATURE_FLAGS) != 0); return static_cast<jint>(ApkAssetsCookieToJavaCookie(value.cookie)); } Loading Loading @@ -1658,16 +1645,7 @@ int register_android_content_AssetManager(JNIEnv* env) { gApkAssetsFields.native_ptr = GetFieldIDOrDie(env, apk_assets_class, "mNativePtr", "J"); jclass typedValue = FindClassOrDie(env, "android/util/TypedValue"); gTypedValueOffsets.mType = GetFieldIDOrDie(env, typedValue, "type", "I"); gTypedValueOffsets.mData = GetFieldIDOrDie(env, typedValue, "data", "I"); gTypedValueOffsets.mString = GetFieldIDOrDie(env, typedValue, "string", "Ljava/lang/CharSequence;"); gTypedValueOffsets.mAssetCookie = GetFieldIDOrDie(env, typedValue, "assetCookie", "I"); gTypedValueOffsets.mResourceId = GetFieldIDOrDie(env, typedValue, "resourceId", "I"); gTypedValueOffsets.mChangingConfigurations = GetFieldIDOrDie(env, typedValue, "changingConfigurations", "I"); gTypedValueOffsets.mDensity = GetFieldIDOrDie(env, typedValue, "density", "I"); gTypedValueOffsets.mUsesFeatureFlags = GetFieldIDOrDie(env, typedValue, "usesFeatureFlags", "Z"); gTypedValueOffsets.setFields = GetMethodIDOrDie(env, typedValue, "setFields", "(IIIIIIZ)V"); jclass assetManager = FindClassOrDie(env, "android/content/res/AssetManager"); gAssetManagerOffsets.mObject = GetFieldIDOrDie(env, assetManager, "mObject", "J"); Loading