本文整理了Java中org.objectweb.asm.tree.InsnList.accept()
方法的一些代码示例,展示了InsnList.accept()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。InsnList.accept()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.InsnList
类名称:InsnList
方法名:accept
[英]Makes the given visitor visit all of the instructions in this list.
[中]使给定访问者访问此列表中的所有说明。
代码示例来源:origin: spring-projects/spring-loaded
protected String toStringMethod(byte[] classdata, String methodname, boolean quoted) {
OutputStream os = new SimpleOutputStream();
// ClassReader reader = new ClassReader(classdata);
MethodNode one = getMethod(classdata, methodname);
one.instructions.accept(new MethodPrinter(new PrintStream(os)));
String s = os.toString();
StringBuffer sb = new StringBuffer(s.replaceAll("\r", ""));
if (!quoted) {
return sb.toString();
}
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == '\n') {
sb.insert(i + 1, "\"");
sb.insert(i, "\\n\"+");
i += 4;
}
}
sb.insert(0, "Method is " + methodname + "\n\"");
sb.delete(sb.length() - 3, sb.length());
return sb.toString();
}
代码示例来源:origin: org.parboiled/parboiled-java
@Override
protected void generateMethod(InstructionGroup group, ClassWriter cw) {
MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "create", "()Ljava/lang/Object;", null, null);
convertXLoads(group);
group.getInstructions().accept(mv);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0); // trigger automatic computing
mv.visitEnd();
}
代码示例来源:origin: org.jacoco/org.jacoco.core
/**
* Marks all labels of the method with control flow information.
*
* @param method
* Method to mark labels
*/
public static void markLabels(final MethodNode method) {
// We do not use the accept() method as ASM resets labels after every
// call to accept()
final MethodVisitor lfa = new LabelFlowAnalyzer();
for (int i = method.tryCatchBlocks.size(); --i >= 0;) {
method.tryCatchBlocks.get(i).accept(lfa);
}
method.instructions.accept(lfa);
}
代码示例来源:origin: org.parboiled/parboiled-java
@Override
protected void generateMethod(InstructionGroup group, ClassWriter cw) {
MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "run", '(' + Types.CONTEXT_DESC + ")Z", null, null);
insertSetContextCalls(group, 1);
convertXLoads(group);
group.getInstructions().accept(mv);
mv.visitInsn(IRETURN);
mv.visitMaxs(0, 0); // trigger automatic computing
mv.visitEnd();
}
代码示例来源:origin: fge/grappa
@Override
protected void generateMethod(final InstructionGroup group,
final ClassWriter cw)
{
final MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "get",
CodegenUtils.sig(Object.class), null, null);
convertXLoads(group);
group.getInstructions().accept(mv);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0); // trigger automatic computing
}
}
代码示例来源:origin: fge/grappa
@Override
protected void generateMethod(final InstructionGroup group,
final ClassWriter cw)
{
final MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "run",
CodegenUtils.sig(boolean.class, Context.class), null, null);
insertSetContextCalls(group, 1);
convertXLoads(group);
group.getInstructions().accept(mv);
mv.visitInsn(IRETURN);
mv.visitMaxs(0, 0); // trigger automatic computing
}
}
代码示例来源:origin: Despector/Despector
mn.instructions.accept(mp);
代码示例来源:origin: fge/grappa
private String hashAndGetName()
{
group.getInstructions().accept(this);
for (final FieldNode node: group.getFields())
hasher.putObject(node, FieldNodeFunnel.INSTANCE);
final byte[] hash = new byte[10];
hasher.hash().writeBytesTo(hash, 0, 10);
final String prefix = group.getRoot().isActionRoot()
? "Action$" : "VarInit$";
return prefix + BASE_ENCODING.encode(hash);
}
代码示例来源:origin: CalebWhiting/java-asm-obfuscator
private void createStaticConstructor(ClassNode owner) throws UnsupportedEncodingException {
MethodNode original = BytecodeHelper.getMethod(owner, "<clinit>", "()V");
MethodVisitor mv = owner.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null);
// generate instructions
InstructionAdapter builder = new InstructionAdapter(mv);
builder.iconst(stringList.size());
builder.newarray(Type.getType(String.class));
for (int i = 0; i < stringList.size(); i++) {
builder.dup();
builder.iconst(i);
builder.aconst(Base64.getEncoder().encodeToString(stringList.get(i).getBytes("UTF-8")));
builder.astore(InstructionAdapter.OBJECT_TYPE);
}
builder.putstatic(unscrambleClass.name, FIELD_NAME, "[Ljava/lang/String;");
// merge with original if it exists
if (original != null) {
// original should already end with RETURN
owner.methods.remove(original);
original.instructions.accept(builder);
} else {
builder.areturn(Type.VOID_TYPE);
}
}
代码示例来源:origin: inesc-id-esw/jvstm
clInit.instructions.accept(atomicClInit);
} else {
atomicClInit.visitInsn(RETURN);
代码示例来源:origin: org.ow2.asm/asm-debug-all
instructions.accept(mv);
代码示例来源:origin: org.parboiled/parboiled-java
private synchronized void name(InstructionGroup group, ParserClassNode classNode) {
// generate an MD5 hash across the buffer, use only the first 96 bit
MD5Digester digester = new MD5Digester(classNode.name);
group.getInstructions().accept(digester);
for (FieldNode field: group.getFields()) digester.visitField(field);
byte[] hash = digester.getMD5Hash();
byte[] hash96 = new byte[12];
System.arraycopy(hash, 0, hash96, 0, 12);
// generate a name for the group based on the hash
String name = group.getRoot().isActionRoot() ? "Action$" : "VarInit$";
name += CUSTOM_BASE64.encodeToString(hash96, false);
group.setName(name);
}
代码示例来源:origin: org.ow2.asm/asm-tree
instructions.accept(methodVisitor);
代码示例来源:origin: fge/grappa
final Textifier textifier = new Textifier();
final PrintWriter pw = new PrintWriter(System.out);
list.accept(new TraceMethodVisitor(textifier));
textifier.print(pw);
pw.flush();
内容来源于网络,如有侵权,请联系作者删除!