List of usage examples for org.objectweb.asm Opcodes INVOKESTATIC
int INVOKESTATIC
To view the source code for org.objectweb.asm Opcodes INVOKESTATIC.
Click Source Link
From source file:edu.umd.cs.findbugs.classfile.engine.SelfMethodCalls.java
License:Open Source License
public static <T> MultiMap<T, T> getSelfCalls(final ClassDescriptor classDescriptor, final Map<String, T> methods) { final MultiMap<T, T> map = new MultiMap<T, T>(HashSet.class); FBClassReader reader;/*w ww .j av a2s .c o m*/ try { reader = Global.getAnalysisCache().getClassAnalysis(FBClassReader.class, classDescriptor); } catch (CheckedAnalysisException e) { AnalysisContext.logError("Error finding self method calls for " + classDescriptor, e); return map; } reader.accept(new ClassVisitor(FindBugsASM.ASM_VERSION) { @Override public MethodVisitor visitMethod(final int access, final String name, final String desc, String signature, String[] exceptions) { return new MethodVisitor(FindBugsASM.ASM_VERSION) { @Override public void visitMethodInsn(int opcode, String owner, String name2, String desc2, boolean itf) { if (owner.equals(classDescriptor.getClassName()) && interestingSignature(desc2)) { T from = methods.get(name + desc + ((access & Opcodes.ACC_STATIC) != 0)); T to = methods.get(name2 + desc2 + (opcode == Opcodes.INVOKESTATIC)); map.add(from, to); } } }; } }, ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); return map; }
From source file:edu.umd.cs.guitar.testcase.plugin.edg.ClassDBVisitor.java
License:Open Source License
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc) { currentMethod.setEmpty(false);/*from www. j av a 2s . c o m*/ switch (opcode) { case Opcodes.INVOKEVIRTUAL: case Opcodes.INVOKESTATIC: case Opcodes.INVOKESPECIAL: Class c = getClass(owner); MethodDescriptor m = getMethod(c, name, desc); currentMethod.addInvokes(m); break; } }
From source file:erjang.EAtom.java
License:Apache License
@Override public org.objectweb.asm.Type emit_const(MethodVisitor fa) { Type type = EATOM_TYPE;//from ww w . j a v a 2 s.c o m fa.visitLdcInsn(value); fa.visitMethodInsn(Opcodes.INVOKESTATIC, type.getInternalName(), "intern", "(" + STRING_TYPE.getDescriptor() + ")" + type.getDescriptor()); return type; }
From source file:erjang.EBig.java
License:Apache License
@Override public org.objectweb.asm.Type emit_const(MethodVisitor fa) { Type type = EBIG_TYPE;// w w w . j a v a2 s . c om fa.visitLdcInsn(value.toString()); fa.visitMethodInsn(Opcodes.INVOKESTATIC, type.getInternalName(), "fromString", "(" + STRING_TYPE.getDescriptor() + ")" + type.getDescriptor()); return type; }
From source file:erjang.EBigString.java
License:Apache License
@Override public Type emit_const(MethodVisitor fa) { Type type = ESTRING_TYPE;//from w w w. ja va 2s . c o m fa.visitLdcInsn(this.stringValue()); fa.visitMethodInsn(Opcodes.INVOKESTATIC, type.getInternalName(), "fromString", "(" + STRING_TYPE.getDescriptor() + ")" + type.getDescriptor()); return type; }
From source file:erjang.EBinary.java
License:Apache License
@Override public Type emit_const(MethodVisitor fa) { char[] chs = new char[byteSize()]; for (int i = 0; i < byteSize(); i++) { chs[i] = (char) (0xff & octetAt(i)); }/*ww w. j a va 2 s. c o m*/ String str = new String(chs); fa.visitLdcInsn(str); fa.visitMethodInsn(Opcodes.INVOKESTATIC, EBINARY_NAME, "fromString", "(Ljava/lang/String;)L" + EBINARY_NAME + ";"); return EBINARY_TYPE; }
From source file:erjang.EBinList.java
License:Apache License
@Override public Type emit_const(MethodVisitor fa) { Type type = EBINLIST_TYPE;/*from ww w . java2s .co m*/ char[] ch = new char[len]; for (int i = 0; i < len; i++) { ch[i] = (char) (0xff & (int) data[off + i]); } fa.visitLdcInsn(new String(ch)); tail.emit_const(fa); fa.visitMethodInsn(Opcodes.INVOKESTATIC, type.getInternalName(), "fromString", "(" + STRING_TYPE.getDescriptor() + EOBJECT_DESC + ")" + type.getDescriptor()); return type; }
From source file:erjang.EBitString.java
License:Apache License
@Override public Type emit_const(MethodVisitor fa) { char[] chs = new char[dataByteSize()]; for (int byteIdx = 0; byteIdx < byteSize(); byteIdx += 1) { chs[byteIdx] = (char) (data[byteIdx] & 0xff); }/* w w w.j a va2s .c o m*/ if (extra_bits != 0) { int rest = intBitsAt(byteSize() * 8, extra_bits); rest <<= (8 - extra_bits); chs[byteSize()] = (char) rest; } String str = new String(chs); fa.visitLdcInsn(str); fa.visitLdcInsn(new Integer(extra_bits)); fa.visitMethodInsn(Opcodes.INVOKESTATIC, EBITSTRING_NAME, "make", "(Ljava/lang/String;I)L" + EBITSTRING_NAME + ";"); return EBITSTRING_TYPE; }
From source file:erjang.EFun.java
License:Apache License
static byte[] get_exported_fun_class_data(int arity) { /* Code template:// w ww.j a v a 2s . c om * public abstract class EFun{arity}Exported extends EFun{arity} { * protected final EAtom module_name, function_name; * protected EFun{arity}Exported(String m, String f) { * module_name = EAtom.intern(m); * function_name = EAtom.intern(f); * } * } */ ensure(arity); // Ensure presence of superclass. String super_type = EFUN_TYPE.getInternalName() + arity; String self_type = super_type + "Exported"; ClassWriter cw = new ClassWriter(true); cw.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT, self_type, null, super_type, null); cw.visitField(ACC_PROTECTED | ACC_FINAL, "module_name", EATOM_TYPE.getDescriptor(), null, null).visitEnd(); cw.visitField(ACC_PROTECTED | ACC_FINAL, "function_name", EATOM_TYPE.getDescriptor(), null, null) .visitEnd(); MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PROTECTED, "<init>", "(Ljava/lang/String;Ljava/lang/String;)V", null, null); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, super_type, "<init>", "()V"); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitVarInsn(Opcodes.ALOAD, 1); mv.visitMethodInsn(Opcodes.INVOKESTATIC, EATOM_TYPE.getInternalName(), "intern", "(Ljava/lang/String;)Lerjang/EAtom;"); mv.visitFieldInsn(Opcodes.PUTFIELD, self_type, "module_name", EATOM_DESC); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitVarInsn(Opcodes.ALOAD, 2); mv.visitMethodInsn(Opcodes.INVOKESTATIC, EATOM_TYPE.getInternalName(), "intern", "(Ljava/lang/String;)Lerjang/EAtom;"); mv.visitFieldInsn(Opcodes.PUTFIELD, self_type, "function_name", EATOM_DESC); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(3, 3); mv.visitEnd(); make_encode_method_for_exported(cw, self_type, arity); cw.visitEnd(); byte[] data = cw.toByteArray(); return data; }
From source file:erjang.EStringList.java
License:Apache License
@Override public Type emit_const(MethodVisitor fa) { Type type = ESTRINGLIST_TYPE; char[] ch = new char[len]; for (int i = 0; i < len; i++) { ch[i] = (char) (0xff & (int) bytes.data[off + i]); }/* www . j a v a 2s.c o m*/ fa.visitLdcInsn(new String(ch)); tail.emit_const(fa); fa.visitMethodInsn(Opcodes.INVOKESTATIC, type.getInternalName(), "fromString", "(" + STRING_TYPE.getDescriptor() + ESEQ_DESC + ")" + type.getDescriptor()); return type; }