本文整理了Java中org.objectweb.asm.tree.AbstractInsnNode.accept()
方法的一些代码示例,展示了AbstractInsnNode.accept()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。AbstractInsnNode.accept()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.AbstractInsnNode
类名称:AbstractInsnNode
方法名:accept
[英]Makes the given code visitor visit this instruction.
[中]使给定的代码访问者访问此指令。
代码示例来源:origin: jooby-project/jooby
@Override public String toString() {
Printer printer = new ASMifier();
TraceMethodVisitor visitor = new TraceMethodVisitor(printer);
node.accept(visitor);
return printer.getText().toString();
}
代码示例来源:origin: pxb1988/dex2jar
String format = "%05d %-" + (method.maxStack + method.maxLocals + 6) + "s|%s";
for (int j = 0; j < method.instructions.size(); ++j) {
method.instructions.get(j).accept(mv);
代码示例来源:origin: pxb1988/dex2jar
in.accept(new MethodVisitor(ASM4) {
代码示例来源:origin: apache/groovy
Object insn = method.instructions.get(j);
if (insn instanceof AbstractInsnNode) {
((AbstractInsnNode) insn).accept(mv);
} else {
mv.visitLabel((Label) insn);
代码示例来源:origin: pxb1988/dex2jar
static void printAnalyzerResult(MethodNode method, Analyzer a, final PrintWriter pw)
throws IllegalArgumentException, IllegalAccessException {
Frame[] frames = a.getFrames();
Textifier t = new Textifier();
TraceMethodVisitor mv = new TraceMethodVisitor(t);
String format = "%05d %-" + (method.maxStack + method.maxLocals + 6) + "s|%s";
for (int j = 0; j < method.instructions.size(); ++j) {
method.instructions.get(j).accept(mv);
StringBuffer s = new StringBuffer();
Frame f = frames[j];
if (f == null) {
s.append('?');
} else {
for (int k = 0; k < f.getLocals(); ++k) {
s.append(getShortName(f.getLocal(k).toString()));
}
s.append(" : ");
for (int k = 0; k < f.getStackSize(); ++k) {
s.append(getShortName(f.getStack(k).toString()));
}
}
pw.printf(format, j, s, buf.get(t)); // mv.text.get(j));
}
for (int j = 0; j < method.tryCatchBlocks.size(); ++j) {
((TryCatchBlockNode) method.tryCatchBlocks.get(j)).accept(mv);
pw.print(" " + buf.get(t));
}
pw.println();
pw.flush();
}
代码示例来源:origin: kilim/kilim
bb.getInstruction(bb.startPos).accept(mv);
代码示例来源:origin: konsoletyper/teavm
instructions.get(index).accept(methodVisitor);
stackAfter[index] = stack;
flushInstructions();
代码示例来源:origin: kilim/kilim
private void transformIndyBootstrap(MethodVisitor mv, AbstractInsnNode ain) {
InvokeDynamicInsnNode indy = (InvokeDynamicInsnNode)ain;
Object[]bsmArgs = indy.bsmArgs;
// Is it a lambda conversion
if (indy.bsm.getOwner().equals("java/lang/invoke/LambdaMetafactory")) {
Handle lambdaBody = (Handle)bsmArgs[1];
String desc = lambdaBody.getDesc();
if (detector.isPausable(lambdaBody.getOwner(), lambdaBody.getName(), desc)) {
bsmArgs[0] = addFiberType((Type)bsmArgs[0]);
bsmArgs[1] = new Handle(lambdaBody.getTag(),
lambdaBody.getOwner(),
lambdaBody.getName(),
desc.replace(")", D_FIBER_LAST_ARG),
lambdaBody.isInterface());
bsmArgs[2] = addFiberType((Type)bsmArgs[2]);
}
}
ain.accept(mv);
}
代码示例来源:origin: kilim/kilim
transformIndyBootstrap(mv, ain);
} else {
ain.accept(mv);
代码示例来源:origin: org.ow2.asm/asm-tree
/**
* Makes the given visitor visit all the instructions in this list.
*
* @param methodVisitor the method visitor that must visit the instructions.
*/
public void accept(final MethodVisitor methodVisitor) {
AbstractInsnNode currentInsn = firstInsn;
while (currentInsn != null) {
currentInsn.accept(methodVisitor);
currentInsn = currentInsn.nextInsn;
}
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
/**
* Makes the given visitor visit all of the instructions in this list.
*
* @param mv
* the method visitor that must visit the instructions.
*/
public void accept(final MethodVisitor mv) {
AbstractInsnNode insn = first;
while (insn != null) {
insn.accept(mv);
insn = insn.next;
}
}
代码示例来源:origin: junkdog/artemis-odb
private void resetField(FieldDescriptor field) {
mv.visitVarInsn(ALOAD, 0);
field.reset.accept(mv);
mv.visitFieldInsn(PUTFIELD, meta.type.getInternalName(), field.name, field.desc);
}
}
代码示例来源:origin: net.onedaybeard.artemis/artemis-odb-weaver
private void resetField(FieldDescriptor field) {
mv.visitVarInsn(ALOAD, 0);
field.reset.accept(mv);
mv.visitFieldInsn(PUTFIELD, meta.type.getInternalName(), field.name, field.desc);
}
}
代码示例来源:origin: org.multiverse/multiverse-instrumentation
public static String toString(AbstractInsnNode insnNode) {
TraceMethodVisitor asmifier = new TraceMethodVisitor();
insnNode.accept(asmifier);
StringBuffer sb = new StringBuffer();
for (String line : (List<String>) asmifier.getText()) {
sb.append(line);
}
return sb.toString();
}
代码示例来源:origin: Glitchfiend/SereneSeasons
public static void printMethod(MethodNode methodNode, int startIndex, int count)
{
Iterator<AbstractInsnNode> it = methodNode.instructions.iterator(startIndex);
LOGGER.info("----- Printing " + methodNode.name + "... -----");
while (it.hasNext() && (count > 0 || count == -1))
{
it.next().accept(methodVisitor);
StringWriter stringWriter = new StringWriter();
printer.print(new PrintWriter(stringWriter));
printer.getText().clear();
LOGGER.info(stringWriter.toString().replace("\n", ""));
if (count != -1)
count--;
}
LOGGER.info("----- Finished! -----");
}
代码示例来源:origin: Vazkii/Quark
private static String getNodeString(AbstractInsnNode node) {
Printer printer = new Textifier();
TraceMethodVisitor visitor = new TraceMethodVisitor(printer);
node.accept(visitor);
StringWriter sw = new StringWriter();
printer.print(new PrintWriter(sw));
printer.getText().clear();
return sw.toString().replaceAll("\n", "").trim();
}
代码示例来源:origin: org.apache.drill.exec/drill-java-exec
@Override
public void accept(final MethodVisitor mv) {
currentInsn = inner.getFirst();
while (currentInsn != null) {
currentFrame = frames[index];
nextFrame = index + 1 < frames.length ? frames[index + 1] : null;
currentInsn.accept(mv);
currentInsn = currentInsn.getNext();
index++;
}
}
代码示例来源:origin: org.jacoco/org.jacoco.core
@Override
public void accept(final MethodNode methodNode,
final MethodVisitor methodVisitor) {
methodVisitor.visitCode();
for (final TryCatchBlockNode n : methodNode.tryCatchBlocks) {
n.accept(methodVisitor);
}
currentNode = methodNode.instructions.getFirst();
while (currentNode != null) {
currentNode.accept(methodVisitor);
currentNode = currentNode.getNext();
}
methodVisitor.visitEnd();
}
代码示例来源:origin: com.github.bingoohuang/blackcat-instrument
public static void viewByteCode(byte[] bytecode) {
ClassReader cr = new ClassReader(bytecode);
ClassNode cn = new ClassNode();
cr.accept(cn, 0);
final List<MethodNode> mns = cn.methods;
Printer printer = new Textifier();
TraceMethodVisitor mp = new TraceMethodVisitor(printer);
for (MethodNode mn : mns) {
InsnList inList = mn.instructions;
System.out.println(mn.name);
for (int i = 0; i < inList.size(); i++) {
inList.get(i).accept(mp);
StringWriter sw = new StringWriter();
printer.print(new PrintWriter(sw));
printer.getText().clear();
System.out.print(sw.toString());
}
}
}
}
代码示例来源:origin: co.paralleluniverse/quasar
private void emitNewAndDup(MethodVisitor mv, Frame frame, int stackIndex, MethodInsnNode min) {
int arguments = frame.getStackSize() - stackIndex - 1;
int neededLocals = 0;
for (int i = arguments; i >= 1; i--) {
BasicValue v = (BasicValue) frame.getStack(stackIndex + i);
mv.visitVarInsn(v.getType().getOpcode(Opcodes.ISTORE), lvarStack + 1 + neededLocals);
neededLocals += v.getSize();
}
db.log(LogLevel.DEBUG, "Inserting NEW & DUP for constructor call %s%s with %d arguments (%d locals)", min.owner, min.desc, arguments, neededLocals);
if (additionalLocals < neededLocals) {
additionalLocals = neededLocals;
}
((NewValue) frame.getStack(stackIndex - 1)).insn.accept(mv);
((NewValue) frame.getStack(stackIndex)).insn.accept(mv);
for (int i = 1; i <= arguments; i++) {
BasicValue v = (BasicValue) frame.getStack(stackIndex + i);
neededLocals -= v.getSize();
mv.visitVarInsn(v.getType().getOpcode(Opcodes.ILOAD), lvarStack + 1 + neededLocals);
}
}
内容来源于网络,如有侵权,请联系作者删除!