mirror of
https://github.com/revanced/smali.git
synced 2025-05-08 18:34:32 +02:00
Use a pre-generated array of all AccessFlag enum values, instead of calling AccessFlags.values(), which always instantiates a new array
git-svn-id: https://smali.googlecode.com/svn/trunk@682 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
parent
6eae34831f
commit
483ebdf2cc
@ -60,11 +60,16 @@ public enum AccessFlags
|
|||||||
private boolean validForMethod;
|
private boolean validForMethod;
|
||||||
private boolean validForField;
|
private boolean validForField;
|
||||||
|
|
||||||
|
//cache the array of all AccessFlags, because .values() allocates a new array for every call
|
||||||
|
private final static AccessFlags[] allFlags;
|
||||||
|
|
||||||
private static HashMap<String, AccessFlags> accessFlagsByName;
|
private static HashMap<String, AccessFlags> accessFlagsByName;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
allFlags = AccessFlags.values();
|
||||||
|
|
||||||
accessFlagsByName = new HashMap<String, AccessFlags>();
|
accessFlagsByName = new HashMap<String, AccessFlags>();
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
accessFlagsByName.put(accessFlag.accessFlagName, accessFlag);
|
accessFlagsByName.put(accessFlag.accessFlagName, accessFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,7 +85,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
public static AccessFlags[] getAccessFlagsForClass(int accessFlagValue) {
|
public static AccessFlags[] getAccessFlagsForClass(int accessFlagValue) {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForClass && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForClass && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
@ -88,7 +93,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
AccessFlags[] accessFlags = new AccessFlags[size];
|
AccessFlags[] accessFlags = new AccessFlags[size];
|
||||||
int accessFlagsPosition = 0;
|
int accessFlagsPosition = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForClass && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForClass && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
accessFlags[accessFlagsPosition++] = accessFlag;
|
accessFlags[accessFlagsPosition++] = accessFlag;
|
||||||
}
|
}
|
||||||
@ -119,7 +124,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
public static AccessFlags[] getAccessFlagsForMethod(int accessFlagValue) {
|
public static AccessFlags[] getAccessFlagsForMethod(int accessFlagValue) {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForMethod && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForMethod && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
@ -127,7 +132,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
AccessFlags[] accessFlags = new AccessFlags[size];
|
AccessFlags[] accessFlags = new AccessFlags[size];
|
||||||
int accessFlagsPosition = 0;
|
int accessFlagsPosition = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForMethod && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForMethod && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
accessFlags[accessFlagsPosition++] = accessFlag;
|
accessFlags[accessFlagsPosition++] = accessFlag;
|
||||||
}
|
}
|
||||||
@ -141,7 +146,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
public static AccessFlags[] getAccessFlagsForField(int accessFlagValue) {
|
public static AccessFlags[] getAccessFlagsForField(int accessFlagValue) {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForField && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForField && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
@ -149,7 +154,7 @@ public enum AccessFlags
|
|||||||
|
|
||||||
AccessFlags[] accessFlags = new AccessFlags[size];
|
AccessFlags[] accessFlags = new AccessFlags[size];
|
||||||
int accessFlagsPosition = 0;
|
int accessFlagsPosition = 0;
|
||||||
for (AccessFlags accessFlag: AccessFlags.values()) {
|
for (AccessFlags accessFlag: allFlags) {
|
||||||
if (accessFlag.validForField && (accessFlagValue & accessFlag.value) != 0) {
|
if (accessFlag.validForField && (accessFlagValue & accessFlag.value) != 0) {
|
||||||
accessFlags[accessFlagsPosition++] = accessFlag;
|
accessFlags[accessFlagsPosition++] = accessFlag;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user