Java 类org.objectweb.asm.FieldVisitor 实例源码
项目:DirectLeaks-AntiReleak-Remover
文件:ASMContentHandler.java
@Override
public void begin(final String name, final Attributes attrs) {
String desc = attrs.getValue("desc");
boolean visible = Boolean.valueOf(attrs.getValue("visible"))
.booleanValue();
int typeRef = Integer.parseInt(attrs.getValue("typeRef"));
TypePath typePath = TypePath.fromString(attrs.getValue("typePath"));
Object v = peek();
if (v instanceof ClassVisitor) {
push(((ClassVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
} else if (v instanceof FieldVisitor) {
push(((FieldVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
} else if (v instanceof MethodVisitor) {
push(((MethodVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
}
}
项目:DirectLeaks-AntiReleak-Remover
文件:SAXClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
StringBuilder sb = new StringBuilder();
appendAccess(access | ACCESS_FIELD, sb);
AttributesImpl att = new AttributesImpl();
att.addAttribute("", "access", "access", "", sb.toString());
att.addAttribute("", "name", "name", "", name);
att.addAttribute("", "desc", "desc", "", desc);
if (signature != null) {
att.addAttribute("", "signature", "signature", "",
encode(signature));
}
if (value != null) {
att.addAttribute("", "value", "value", "", encode(value.toString()));
}
return new SAXFieldAdapter(sa, att);
}
项目:DirectLeaks-AntiReleak-Remover
文件:CheckClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
checkState();
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
+ Opcodes.ACC_FINAL + Opcodes.ACC_VOLATILE
+ Opcodes.ACC_TRANSIENT + Opcodes.ACC_SYNTHETIC
+ Opcodes.ACC_ENUM + Opcodes.ACC_DEPRECATED + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
CheckMethodAdapter.checkUnqualifiedName(version, name, "field name");
CheckMethodAdapter.checkDesc(desc, false);
if (signature != null) {
checkFieldSignature(signature);
}
if (value != null) {
CheckMethodAdapter.checkConstant(value);
}
FieldVisitor av = super
.visitField(access, name, desc, signature, value);
return new CheckFieldAdapter(av);
}
项目:oscm
文件:CyclicReferencesTestTest.java
private void assertFiledTypes(final Class<?> type, String... expected)
throws IOException {
final ClassReader reader = new ClassReader(type.getName());
final Set<String> actual = new HashSet<String>();
reader.accept(new ClassVisitor(Opcodes.ASM5) {
@Override
public FieldVisitor visitField(int access, String name,
String desc, String signature, Object value) {
if ((access & Opcodes.ACC_SYNTHETIC) == 0) {
if (signature == null) {
signature = desc;
}
cyclicRefsTest.getTypesFromSignature(signature, actual);
}
return null;
}
}, 0);
assertEquals(new HashSet<String>(Arrays.asList(expected)), actual);
}
项目:Rubus
文件:ClassImporter.java
/**
* For each field, a representative State object is created and added to the
* class.
*
* @param access Modifers applied to the field (including STATICness).
* @param name Name of the field.
* @param descriptor Type description.
* @param signature Generic Signature (for debugging/reflection).
* @param value Default value (for static variables only).
* @return FieldVisitor (for annotations of the field) - null here.
*/
@Override
public FieldVisitor visitField(int access, String name, String descriptor,
String signature, Object value) {
// NOTE: signature: Generic Signature (for debugging/reflection).
// Get the field from the class.
Field f = classNode.getField(name, descriptor);
f.getModifiers().addAll(Modifier.getSet(access));
f.setDefaultValue(value);
// TODO: Anonymous inner class extension of EmptyVisitor that imports
// annotations.
return null;
}
项目:Shuriken
文件:ValidatorTester.java
public byte[] generate(){
String className = "eu.mikroskeem.test.shuriken.common.classtools.gen.GeneratedClass";
String classNameInternal = className.replaceAll("\\.", "/");
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES);
cw.visit(
V1_8,
ACC_PUBLIC + ACC_SUPER,
classNameInternal,
null,
Type.getInternalName(Object.class),
null);
FieldVisitor fv = cw.visitField(ACC_PRIVATE + ACC_STATIC, "test", Type.getDescriptor(String.class), null, "hey");
fv.visitEnd();
MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, Type.getInternalName(Object.class), "<init>", "()V", false);
mv.visitInsn(RETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
cw.visitEnd();
return cw.toByteArray();
}
项目:Shuriken
文件:ValidatorTester.java
public byte[] generate(){
String className = "eu.mikroskeem.test.shuriken.common.classtools.gen.InvalidGeneratedClass";
String classNameInternal = className.replaceAll("\\.", "/");
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES);
cw.visit(
V1_8,
ACC_PUBLIC + ACC_SUPER,
classNameInternal,
null,
Type.getInternalName(Object.class),
null);
FieldVisitor fv = cw.visitField(ACC_PRIVATE + ACC_STATIC, "test", Type.getDescriptor(String.class), null, "hey");
fv.visitEnd();
MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKESPECIAL, Type.getInternalName(Object.class), "<init>", "()V", false);
mv.visitInsn(RETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
cw.visitEnd();
return cw.toByteArray();
}
项目:jpeek
文件:Skeleton.java
@Override
public FieldVisitor visitField(final int access,
final String name, final String desc,
final String signature, final Object value) {
this.dirs.addIf("attributes")
.add("attribute")
.set(name)
.attr("type", desc.replaceAll(";$", ""))
.attr(
"public",
(access & Opcodes.ACC_PUBLIC) == Opcodes.ACC_PUBLIC
)
.attr(
"static",
(access & Opcodes.ACC_STATIC) == Opcodes.ACC_STATIC
)
.up().up();
return super.visitField(
access, name, desc, signature, value
);
}
项目:fastAOP
文件:ASMContentHandler.java
@Override
public void begin(final String name, final Attributes attrs) {
String desc = attrs.getValue("desc");
boolean visible = Boolean.valueOf(attrs.getValue("visible"))
.booleanValue();
int typeRef = Integer.parseInt(attrs.getValue("typeRef"));
TypePath typePath = TypePath.fromString(attrs.getValue("typePath"));
Object v = peek();
if (v instanceof ClassVisitor) {
push(((ClassVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
} else if (v instanceof FieldVisitor) {
push(((FieldVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
} else if (v instanceof MethodVisitor) {
push(((MethodVisitor) v).visitTypeAnnotation(typeRef, typePath,
desc, visible));
}
}
项目:fastAOP
文件:SAXClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
StringBuilder sb = new StringBuilder();
appendAccess(access | ACCESS_FIELD, sb);
AttributesImpl att = new AttributesImpl();
att.addAttribute("", "access", "access", "", sb.toString());
att.addAttribute("", "name", "name", "", name);
att.addAttribute("", "desc", "desc", "", desc);
if (signature != null) {
att.addAttribute("", "signature", "signature", "",
encode(signature));
}
if (value != null) {
att.addAttribute("", "value", "value", "", encode(value.toString()));
}
return new SAXFieldAdapter(sa, att);
}
项目:fastAOP
文件:CheckClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
checkState();
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
+ Opcodes.ACC_FINAL + Opcodes.ACC_VOLATILE
+ Opcodes.ACC_TRANSIENT + Opcodes.ACC_SYNTHETIC
+ Opcodes.ACC_ENUM + Opcodes.ACC_DEPRECATED + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
CheckMethodAdapter.checkUnqualifiedName(version, name, "field name");
CheckMethodAdapter.checkDesc(desc, false);
if (signature != null) {
checkFieldSignature(signature);
}
if (value != null) {
CheckMethodAdapter.checkConstant(value);
}
FieldVisitor av = super
.visitField(access, name, desc, signature, value);
return new CheckFieldAdapter(av);
}
项目:fastAOP
文件:ClassConstantsCollector.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
cp.newUTF8("Synthetic");
}
if ((access & Opcodes.ACC_DEPRECATED) != 0) {
cp.newUTF8("Deprecated");
}
cp.newUTF8(name);
cp.newUTF8(desc);
if (signature != null) {
cp.newUTF8("Signature");
cp.newUTF8(signature);
}
if (value != null) {
cp.newConst(value);
}
return new FieldConstantsCollector(cv.visitField(access, name, desc,
signature, value), cp);
}
项目:fastAOP
文件:MethodOptimizer.java
@Override
public void visitLdcInsn(Object cst) {
if (!(cst instanceof Type)) {
super.visitLdcInsn(cst);
return;
}
// transform Foo.class for 1.2 compatibility
String ldcName = ((Type) cst).getInternalName();
String fieldName = "class$" + ldcName.replace('/', '$');
if (!classOptimizer.syntheticClassFields.contains(ldcName)) {
classOptimizer.syntheticClassFields.add(ldcName);
FieldVisitor fv = classOptimizer.syntheticFieldVisitor(ACC_STATIC
| ACC_SYNTHETIC, fieldName, "Ljava/lang/Class;");
fv.visitEnd();
}
String clsName = classOptimizer.clsName;
mv.visitFieldInsn(GETSTATIC, clsName, fieldName, "Ljava/lang/Class;");
}
项目:fastAOP
文件:ClassOptimizer.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
String s = remapper.mapFieldName(className, name, desc);
if ("-".equals(s)) {
return null;
}
if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
if ((access & Opcodes.ACC_FINAL) != 0
&& (access & Opcodes.ACC_STATIC) != 0 && desc.length() == 1) {
return null;
}
if ("org/objectweb/asm".equals(pkgName) && s.equals(name)) {
System.out.println("INFO: " + clsName + "." + s
+ " could be renamed");
}
super.visitField(access, name, desc, null, value);
} else {
if (!s.equals(name)) {
throw new RuntimeException("The public or protected field "
+ className + '.' + name + " must not be renamed.");
}
super.visitField(access, name, desc, null, value);
}
return null; // remove debug info
}
项目:light
文件:ClassConstantsCollector.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
cp.newUTF8("Synthetic");
}
if ((access & Opcodes.ACC_DEPRECATED) != 0) {
cp.newUTF8("Deprecated");
}
cp.newUTF8(name);
cp.newUTF8(desc);
if (signature != null) {
cp.newUTF8("Signature");
cp.newUTF8(signature);
}
if (value != null) {
cp.newConst(value);
}
return new FieldConstantsCollector(cv.visitField(access, name, desc,
signature, value), cp);
}
项目:light
文件:MethodOptimizer.java
@Override
public void visitLdcInsn(Object cst) {
if (!(cst instanceof Type)) {
super.visitLdcInsn(cst);
return;
}
// transform Foo.class for 1.2 compatibility
String ldcName = ((Type) cst).getInternalName();
String fieldName = "class$" + ldcName.replace('/', '$');
if (!classOptimizer.syntheticClassFields.contains(ldcName)) {
classOptimizer.syntheticClassFields.add(ldcName);
FieldVisitor fv = classOptimizer.syntheticFieldVisitor(ACC_STATIC
| ACC_SYNTHETIC, fieldName, "Ljava/lang/Class;");
fv.visitEnd();
}
String clsName = classOptimizer.clsName;
mv.visitFieldInsn(GETSTATIC, clsName, fieldName, "Ljava/lang/Class;");
}
项目:light
文件:ClassOptimizer.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
String s = remapper.mapFieldName(className, name, desc);
if ("-".equals(s)) {
return null;
}
if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
if ((access & Opcodes.ACC_FINAL) != 0
&& (access & Opcodes.ACC_STATIC) != 0 && desc.length() == 1) {
return null;
}
if ("org/objectweb/asm".equals(pkgName) && s.equals(name)) {
System.out.println("INFO: " + clsName + "." + s
+ " could be renamed");
}
super.visitField(access, name, desc, null, value);
} else {
if (!s.equals(name)) {
throw new RuntimeException("The public or protected field "
+ className + '.' + name + " must not be renamed.");
}
super.visitField(access, name, desc, null, value);
}
return null; // remove debug info
}
项目:xtext-extras
文件:JvmDeclaredTypeBuilder.java
@Override
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
if ((access & ACC_SYNTHETIC) == 0) {
JvmFieldBuilder fieldBuilder = new JvmFieldBuilder(
result,
(access & ACC_STATIC) == 0 ? typeParameters : null,
proxies,
access,
name,
desc,
signature,
value);
return fieldBuilder;
}
return null;
}
项目:meghanada-server
文件:ClassAnalyzeVisitor.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String sig, Object o) {
if (this.classOnly) {
return super.visitField(access, name, desc, sig, o);
}
if (name.startsWith("$") || name.startsWith("this$")) {
return super.visitField(access, name, desc, sig, o);
}
if (includePrivate) {
return new FieldAnalyzeVisitor(this, access, name, desc, sig)
.setTypeMap(this.getTypeMap())
.parseSignature();
}
// log.debug("Field Name:{}", name);
if ((Opcodes.ACC_PRIVATE & access) == 0) {
return new FieldAnalyzeVisitor(this, access, name, desc, sig)
.setTypeMap(this.getTypeMap())
.parseSignature();
}
return super.visitField(access, name, desc, sig, o);
}
项目:JAADAS
文件:AbstractASMBackend.java
/**
* Emits the bytecode for all fields of the class
*/
protected void generateFields() {
for (SootField f : sc.getFields()) {
String name = f.getName();
String desc = toTypeDesc(f.getType());
String sig = null;
if (f.hasTag("SignatureTag")) {
SignatureTag genericSignature = (SignatureTag) f
.getTag("SignatureTag");
sig = genericSignature.getSignature();
}
Object value = getDefaultValue(f);
int access = getModifiers(f.getModifiers(), f);
FieldVisitor fv = cv.visitField(access, name, desc, sig, value);
if (fv != null) {
generateAnnotations(fv, f);
generateAttributes(fv, f);
fv.visitEnd();
}
}
}
项目:naum
文件:ClassProcessor.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
if ("$VALUES".equals(name) && classStack.peek().isEnum()) {
return null;
}
String signatureDesc = signature != null ? signature : desc;
SignatureReader r = new SignatureReader(signatureDesc);
CustomTraceSignatureVisitor sv = new CustomTraceSignatureVisitor(Opcodes.ACC_PUBLIC);
r.accept(sv);
FieldInfo field = FieldInfo.fieldInfo()
.name(name)
.modifiers(access)
.type(sv.getTypeOrSuperclass())
.value(value)
.build();
classStack.peek().addToFields(field);
return new FieldProcessor(field);
}
项目:javify
文件:CheckClassAdapter.java
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
checkState();
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
+ Opcodes.ACC_FINAL + Opcodes.ACC_VOLATILE
+ Opcodes.ACC_TRANSIENT + Opcodes.ACC_SYNTHETIC
+ Opcodes.ACC_ENUM + Opcodes.ACC_DEPRECATED);
CheckMethodAdapter.checkIdentifier(name, "field name");
CheckMethodAdapter.checkDesc(desc, false);
if (signature != null) {
// TODO
}
if (value != null) {
CheckMethodAdapter.checkConstant(value);
}
FieldVisitor av = cv.visitField(access, name, desc, signature, value);
return new CheckFieldAdapter(av);
}
项目:javify
文件:ASMifierClassVisitor.java
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
buf.setLength(0);
buf.append("{\n");
buf.append("fv = cw.visitField(");
appendAccess(access | ACCESS_FIELD);
buf.append(", ");
appendConstant(name);
buf.append(", ");
appendConstant(desc);
buf.append(", ");
appendConstant(signature);
buf.append(", ");
appendConstant(value);
buf.append(");\n");
text.add(buf.toString());
ASMifierFieldVisitor aav = new ASMifierFieldVisitor();
text.add(aav.getText());
text.add("}\n");
return aav;
}
项目:jvm-stm
文件:CheckClassAdapter.java
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
checkState();
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
+ Opcodes.ACC_FINAL + Opcodes.ACC_VOLATILE
+ Opcodes.ACC_TRANSIENT + Opcodes.ACC_SYNTHETIC
+ Opcodes.ACC_ENUM + Opcodes.ACC_DEPRECATED);
CheckMethodAdapter.checkIdentifier(name, "field name");
CheckMethodAdapter.checkDesc(desc, false);
if (signature != null) {
// TODO
}
if (value != null) {
CheckMethodAdapter.checkConstant(value);
}
FieldVisitor av = cv.visitField(access, name, desc, signature, value);
return new CheckFieldAdapter(av);
}
项目:jvm-stm
文件:ASMifierClassVisitor.java
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
buf.setLength(0);
buf.append("{\n");
buf.append("fv = cw.visitField(");
appendAccess(access | ACCESS_FIELD);
buf.append(", ");
appendConstant(name);
buf.append(", ");
appendConstant(desc);
buf.append(", ");
appendConstant(signature);
buf.append(", ");
appendConstant(value);
buf.append(");\n");
text.add(buf.toString());
ASMifierFieldVisitor aav = new ASMifierFieldVisitor();
text.add(aav.getText());
text.add("}\n");
return aav;
}
项目:LanternServer
文件:TypeGenerator.java
static void visitMethods(String className, ClassWriter cw, String methodName, @Nullable List<Method> methods) {
if (methods != null) {
final FieldVisitor fv = cw.visitField(ACC_PUBLIC + ACC_STATIC, KEYS, format("[%s", dKey), null, null);
fv.visitEnd();
for (int i = 0; i < methods.size(); i++) {
final Method method = methods.get(i);
final TypeToken<?> typeToken = TypeToken.of(method.getGenericReturnType());
final MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, method.getName(), Type.getMethodDescriptor(method),
format("()%s", getDescriptor(typeToken)), null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETSTATIC, className, KEYS, format("[%s", dKey));
visitIntInsn(mv, i);
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKEVIRTUAL, className, methodName,
format("(%s)Ljava/util/Optional;", dKey), false);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/Optional", "get", "()Ljava/lang/Object;", false);
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(method.getReturnType()));
mv.visitInsn(ARETURN);
mv.visitMaxs(3, 1);
mv.visitEnd();
}
}
}
项目:JReFrameworker
文件:PurgeAdapter.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
// purge based on FieldNode references
for (FieldNode fieldToPurge : fieldsToPurge) {
if (fieldToPurge.signature != null && signature != null) {
if (fieldToPurge.signature.equals(signature)) {
if (fieldToPurge.name.equals(name) && fieldToPurge.desc.equals(desc)) {
// return null in order to remove this field
Log.info("Purged Field: " + name);
return null;
}
}
} else {
// signature was null, fall back to name and description only
if (fieldToPurge.name.equals(name) && fieldToPurge.desc.equals(desc)) {
// return null in order to remove this field
Log.info("Purged Field: " + name);
return null;
}
}
}
// make the next visitor visit this field, in order to keep it
return super.visitField(access, name, desc, signature, value);
}
项目:Class2Json
文件:ClassJsonVisitor.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
if (isSynthetic(access))
return null;
VariableJson f = new VariableJson();
f.setName(name);
f.setType(new TypeJson(Type.getType(desc).getClassName()));
f.setAccess(access);
if (signature != null) {
SignatureReader sr = new SignatureReader(signature);
TypeSignatureNode sn = new TypeSignatureNode();
sr.acceptType(sn);
TypeJson type = new TypeJson();
sn.accept(type);
f.setType(type);
}
addField(f);
return new FieldJsonVisitor(f);
}
项目:scott
文件:StateTrackingTestClassVisitor.java
@Override
public void visitEnd() {
if (transformationParameters.isJUnit4RuleInjectionRequired) {
FieldVisitor fv = super.visitField(Opcodes.ACC_PUBLIC, "scottReportingRule", Type.getDescriptor(ScottReportingRule.class), null, null);
fv.visitAnnotation(Type.getDescriptor(Rule.class), true).visitEnd();
}
if (transformationParameters.isJUnit5ExtensionInjectionRequired) {
AnnotationVisitor av0 = super.visitAnnotation("Lorg/junit/jupiter/api/extension/ExtendWith;", true);
AnnotationVisitor av1 = av0.visitArray("value");
av1.visit(null, Type.getType("Lhu/advancedweb/scott/runtime/ScottJUnit5Extension;"));
av1.visitEnd();
av0.visitEnd();
}
super.visitEnd();
}
项目:JReFrameworker
文件:MethodOptimizer.java
@Override
public void visitLdcInsn(Object cst) {
if (!(cst instanceof Type)) {
super.visitLdcInsn(cst);
return;
}
// transform Foo.class for 1.2 compatibility
String ldcName = ((Type) cst).getInternalName();
String fieldName = "class$" + ldcName.replace('/', '$');
if (!classOptimizer.syntheticClassFields.contains(ldcName)) {
classOptimizer.syntheticClassFields.add(ldcName);
FieldVisitor fv = classOptimizer.syntheticFieldVisitor(ACC_STATIC
| ACC_SYNTHETIC, fieldName, "Ljava/lang/Class;");
fv.visitEnd();
}
String clsName = classOptimizer.clsName;
mv.visitFieldInsn(GETSTATIC, clsName, fieldName, "Ljava/lang/Class;");
}
项目:annotation-tools
文件:ASMifierClassVisitor.java
public FieldVisitor visitField(
final int access,
final String name,
final String desc,
final String signature,
final Object value)
{
buf.setLength(0);
buf.append("{\n");
buf.append("fv = cw.visitField(");
appendAccess(access | ACCESS_FIELD);
buf.append(", ");
appendConstant(name);
buf.append(", ");
appendConstant(desc);
buf.append(", ");
appendConstant(signature);
buf.append(", ");
appendConstant(value);
buf.append(");\n");
text.add(buf.toString());
ASMifierFieldVisitor aav = new ASMifierFieldVisitor();
text.add(aav.getText());
text.add("}\n");
return aav;
}
项目:JReFrameworker
文件:CheckClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
checkState();
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
+ Opcodes.ACC_FINAL + Opcodes.ACC_VOLATILE
+ Opcodes.ACC_TRANSIENT + Opcodes.ACC_SYNTHETIC
+ Opcodes.ACC_ENUM + Opcodes.ACC_DEPRECATED + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
CheckMethodAdapter.checkUnqualifiedName(version, name, "field name");
CheckMethodAdapter.checkDesc(desc, false);
if (signature != null) {
checkFieldSignature(signature);
}
if (value != null) {
CheckMethodAdapter.checkConstant(value);
}
FieldVisitor av = super
.visitField(access, name, desc, signature, value);
return new CheckFieldAdapter(av);
}
项目:BitPlus
文件:SAXClassAdapter.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
StringBuffer sb = new StringBuffer();
appendAccess(access | ACCESS_FIELD, sb);
AttributesImpl att = new AttributesImpl();
att.addAttribute("", "access", "access", "", sb.toString());
att.addAttribute("", "name", "name", "", name);
att.addAttribute("", "desc", "desc", "", desc);
if (signature != null) {
att.addAttribute("", "signature", "signature", "",
encode(signature));
}
if (value != null) {
att.addAttribute("", "value", "value", "", encode(value.toString()));
}
return new SAXFieldAdapter(sa, att);
}
项目:presto
文件:FieldDefinition.java
public void visit(ClassVisitor visitor)
{
FieldVisitor fieldVisitor = visitor.visitField(toAccessModifier(access),
name,
type.getType(),
type.getGenericSignature(),
null);
if (fieldVisitor == null) {
return;
}
for (AnnotationDefinition annotation : annotations) {
annotation.visitFieldAnnotation(fieldVisitor);
}
fieldVisitor.visitEnd();
}
项目:Reer
文件:ApiMemberSelector.java
@Override
public void visitEnd() {
super.visitEnd();
apiMemberAdapter.visit(
classMember.getVersion(), classMember.getAccess(), classMember.getName(), classMember.getSignature(),
classMember.getSuperName(), classMember.getInterfaces());
visitAnnotationMembers(classMember.getAnnotations());
for (MethodMember method : methods) {
MethodVisitor mv = apiMemberAdapter.visitMethod(
method.getAccess(), method.getName(), method.getTypeDesc(), method.getSignature(),
method.getExceptions().toArray(new String[0]));
visitAnnotationMembers(mv, method.getAnnotations());
visitAnnotationMembers(mv, method.getParameterAnnotations());
mv.visitEnd();
}
for (FieldMember field : fields) {
FieldVisitor fieldVisitor = apiMemberAdapter.visitField(
field.getAccess(), field.getName(), field.getTypeDesc(), field.getSignature(), null);
visitAnnotationMembers(fieldVisitor, field.getAnnotations());
fieldVisitor.visitEnd();
}
for (InnerClassMember innerClass : innerClasses) {
apiMemberAdapter.visitInnerClass(
innerClass.getName(), innerClass.getOuterName(), innerClass.getInnerName(), innerClass.getAccess());
}
apiMemberAdapter.visitEnd();
}
项目:Reer
文件:RuntimeShadedJarCreator.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
ImplementationDependencyRelocator.ClassLiteralRemapping remapping = null;
if (CLASS_DESC.equals(desc)) {
remapping = remapper.maybeRemap(name);
if (remapping != null) {
remappedClassLiterals.put(remapping.getLiteral(), remapping.getLiteralReplacement().replace("/", "."));
}
}
return super.visitField(access, remapping != null ? remapping.getFieldNameReplacement() : name, desc, signature, value);
}
项目:Reer
文件:ClassDependenciesVisitor.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
if (isConstant(access) && !isPrivate(access)) {
dependentToAll = true; //non-private const
}
return null;
}
项目:Reer
文件:MixInLegacyTypesClassLoader.java
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
if (((access & PUBLIC_STATIC_FINAL) == PUBLIC_STATIC_FINAL) && Type.getDescriptor(String.class).equals(desc)) {
missingStaticStringConstantGetters.put("get" + name, (String) value);
}
if (((access & Opcodes.ACC_PRIVATE) > 0) && !isStatic(access) && (Type.getDescriptor(boolean.class).equals(desc))) {
booleanFields.add(name);
}
return super.visitField(access, name, desc, signature, value);
}
项目:DirectLeaks-AntiReleak-Remover
文件:SerialVersionUIDAdder.java
@Override
public FieldVisitor visitField(final int access, final String name,
final String desc, final String signature, final Object value) {
if (computeSVUID) {
if ("serialVersionUID".equals(name)) {
// since the class already has SVUID, we won't be computing it.
computeSVUID = false;
hasSVUID = true;
}
/*
* Remember field for SVUID computation For field modifiers, only
* the ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC,
* ACC_FINAL, ACC_VOLATILE, and ACC_TRANSIENT flags are used when
* computing serialVersionUID values.
*/
if ((access & Opcodes.ACC_PRIVATE) == 0
|| (access & (Opcodes.ACC_STATIC | Opcodes.ACC_TRANSIENT)) == 0) {
int mods = access
& (Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE
| Opcodes.ACC_PROTECTED | Opcodes.ACC_STATIC
| Opcodes.ACC_FINAL | Opcodes.ACC_VOLATILE | Opcodes.ACC_TRANSIENT);
svuidFields.add(new Item(name, mods, desc));
}
}
return super.visitField(access, name, desc, signature, value);
}
项目:DirectLeaks-AntiReleak-Remover
文件:SerialVersionUIDAdder.java
protected void addSVUID(long svuid) {
FieldVisitor fv = super.visitField(Opcodes.ACC_FINAL
+ Opcodes.ACC_STATIC, "serialVersionUID", "J", null, svuid);
if (fv != null) {
fv.visitEnd();
}
}