use List to store constant strings instead of Set

This commit is contained in:
Haowei Wen 2022-04-30 18:38:50 +08:00
parent ab44075cbb
commit b6b6f01b08
2 changed files with 7 additions and 8 deletions

View file

@ -28,7 +28,6 @@ import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@ -87,7 +86,7 @@ public class ClassTransformer implements ClassFileTransformer {
}
@Override
public Set<String> getStringConstants() {
public List<String> getStringConstants() {
return TransformHandle.this.getStringConstants();
}
}
@ -96,7 +95,7 @@ public class ClassTransformer implements ClassFileTransformer {
private final ClassLoader classLoader;
private byte[] classBuffer;
private ClassReader cachedClassReader;
private Set<String> cachedConstants;
private List<String> cachedConstants;
private List<TransformUnit> appliedTransformers;
private int minVersion = -1;
@ -119,8 +118,8 @@ public class ClassTransformer implements ClassFileTransformer {
return (getClassReader().getAccess() & ACC_INTERFACE) != 0;
}
private static Set<String> extractStringConstants(ClassReader reader) {
Set<String> constants = new HashSet<>();
private static List<String> extractStringConstants(ClassReader reader) {
List<String> constants = new ArrayList<>();
int constantPoolSize = reader.getItemCount();
char[] buf = new char[reader.getMaxStringLength()];
for (int idx = 1; idx < constantPoolSize; idx++) {
@ -136,7 +135,7 @@ public class ClassTransformer implements ClassFileTransformer {
return constants;
}
private Set<String> getStringConstants() {
private List<String> getStringConstants() {
if (cachedConstants == null)
cachedConstants = extractStringConstants(getClassReader());
return cachedConstants;

View file

@ -16,7 +16,7 @@
*/
package moe.yushi.authlibinjector.transform;
import java.util.Set;
import java.util.List;
import org.objectweb.asm.Handle;
public interface TransformContext {
@ -29,5 +29,5 @@ public interface TransformContext {
Handle acquireCallbackMetafactory();
Set<String> getStringConstants();
List<String> getStringConstants();
}