• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java LineNumberNode类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.objectweb.asm.tree.LineNumberNode的典型用法代码示例。如果您正苦于以下问题:Java LineNumberNode类的具体用法?Java LineNumberNode怎么用?Java LineNumberNode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



LineNumberNode类属于org.objectweb.asm.tree包,在下文中一共展示了LineNumberNode类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: getImportantList

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
public static InsnList getImportantList(InsnList list) {
	if (list.size() == 0) {
		return list;
	}

	HashMap<LabelNode, LabelNode> labels = new HashMap<>();

	for (AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext()) {
		if (insn instanceof LabelNode) {
			labels.put((LabelNode) insn, (LabelNode) insn);
		}
	}

	InsnList importantNodeList = new InsnList();

	for (AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext()) {
		if (insn instanceof LabelNode || insn instanceof LineNumberNode) {
			continue;
		}

		importantNodeList.add(insn.clone(labels));
	}
	return importantNodeList;
}
 
开发者ID:roryclaasen,项目名称:RorysMod,代码行数:25,代码来源:InstructionComparator.java


示例2: run

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public void run() {
	try {
		ListIterator<AbstractInsnNode> iterator = mn.instructions.iterator();
		AbstractInsnNode next;
		//TODO: implement stream
		while (iterator.hasNext()) {
			next = iterator.next();

			if (next instanceof LineNumberNode)
				iterator.set (
					new LineNumberNode (
						rand.nextInt(),
						((LineNumberNode) next).start
					)
				);
		}
	} catch(Throwable t) {
	}
}
 
开发者ID:MoofMonkey,项目名称:NeonObf,代码行数:21,代码来源:LineNumberObfuscation.java


示例3: findLineNumber

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
/**
 * Finds the line number closest to the given node
 *
 * @param node the instruction node to get a line number for
 * @return the closest line number, or -1 if not known
 */
public static int findLineNumber(@NonNull AbstractInsnNode node) {
    AbstractInsnNode curr = node;

    // First search backwards
    while (curr != null) {
        if (curr.getType() == AbstractInsnNode.LINE) {
            return ((LineNumberNode) curr).line;
        }
        curr = curr.getPrevious();
    }

    // Then search forwards
    curr = node;
    while (curr != null) {
        if (curr.getType() == AbstractInsnNode.LINE) {
            return ((LineNumberNode) curr).line;
        }
        curr = curr.getNext();
    }

    return -1;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:29,代码来源:ClassContext.java


示例4: getImportantList

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
public static InsnList getImportantList(InsnList list) {
	if (list.size() == 0) {
		return list;
	}

	HashMap<LabelNode, LabelNode> labels = new HashMap<LabelNode, LabelNode>();
	for (AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext()) {
		if (insn instanceof LabelNode) {
			labels.put((LabelNode) insn, (LabelNode) insn);
		}
	}

	InsnList importantNodeList = new InsnList();
	for (AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext()) {
		if (insn instanceof LabelNode || insn instanceof LineNumberNode) {
			continue;
		}

		importantNodeList.add(insn.clone(labels));
	}
	return importantNodeList;
}
 
开发者ID:NOVA-Team,项目名称:NOVA-Core,代码行数:23,代码来源:InstructionComparator.java


示例5: visitEnd

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public void visitEnd() {
	MethodNode methodNode = (MethodNode) mv;
	Iterator<AbstractInsnNode> nodeIter = methodNode.instructions.iterator();
	while (nodeIter.hasNext()) {
		AbstractInsnNode insnNode = nodeIter.next();
		if (insnNode.getType() == AbstractInsnNode.LINE) {
			currentLine = ((LineNumberNode) insnNode).line;
			methodNode.instructions.insertBefore(insnNode, getLineNumberInstrumentation());
			continue;
		}
		if ((insnNode.getType() == AbstractInsnNode.VAR_INSN)
				|| (insnNode.getType() == AbstractInsnNode.FIELD_INSN)
				|| (insnNode.getType() == AbstractInsnNode.IINC_INSN)
				|| (insnNode.getType() == AbstractInsnNode.INT_INSN)
				|| (insnNode.getType() == AbstractInsnNode.INSN)) {
			methodNode.instructions.insert(insnNode, getInstrumentation(insnNode));
		}
	}
	methodNode.accept(next);
}
 
开发者ID:EvoSuite,项目名称:evosuite,代码行数:23,代码来源:TestRuntimeValuesDeterminer.java


示例6: findLineNumberForInstruction

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
/**
 * Find line number associated with an instruction.
 * @param insnList instruction list for method
 * @param insnNode instruction within method being searched against
 * @throws NullPointerException if any argument is {@code null} or contains {@code null}
 * @throws IllegalArgumentException if arguments aren't all from the same method
 * @return line number node associated with the instruction, or {@code null} if no line number exists
 */
public static LineNumberNode findLineNumberForInstruction(InsnList insnList, AbstractInsnNode insnNode) {
    Validate.notNull(insnList);
    Validate.notNull(insnNode);
    
    int idx = insnList.indexOf(insnNode);
    Validate.isTrue(idx != -1);
    
    // Get index of labels and insnNode within method
    ListIterator<AbstractInsnNode> insnIt = insnList.iterator(idx);
    while (insnIt.hasPrevious()) {
        AbstractInsnNode node = insnIt.previous();
        
        if (node instanceof LineNumberNode) {
            return (LineNumberNode) node;
        }
    }
    
    return null;
}
 
开发者ID:offbynull,项目名称:coroutines,代码行数:28,代码来源:SearchUtils.java


示例7: scanForElse

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
/**
 * <p>
 * This method scans the instructions for 'else' and returns the node
 * </p>
 * 
 * @param ifTargetIndex
 *            Index of the target instruction of 'if'
 * @param endIndex
 *            Index of the end instruction upto which scanner will work
 * @param nestingLevel
 *            nesting level
 * @return Node
 */
private AbstractInsnNode scanForElse(int ifTargetIndex, int endIndex) {
	boolean lineNumberFound = false;
	LabelNode ln = (LabelNode) this.insnArr[ifTargetIndex];
	for (int i = ifTargetIndex + 1; i <= endIndex; i++) {
		AbstractInsnNode ain = this.insnArr[i];
		if (ain instanceof JumpInsnNode
				&& InstrumentUtil.getJumpInsnOpcodesMap().containsKey(
						ain.getOpcode())) {
			if (!lineNumberFound) {
				return ain;
			}
		} else if (ain instanceof LineNumberNode) {
			LineNumberNode lnn = (LineNumberNode) ain;
			// if the line does not belong to the label
			if (lnn.start != ln) {
				lineNumberFound = true;
				return null;
			}
		}
	}
	return null;
}
 
开发者ID:Impetus,项目名称:jumbune,代码行数:36,代码来源:BlockLogMethodAdapter.java


示例8: getImportantList

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
public static InsnList getImportantList(InsnList list)
{
    if(list.size() == 0)
        return list;
    
    HashMap<LabelNode, LabelNode> labels = new HashMap<LabelNode, LabelNode>();
    for(AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext())
    {
        if(insn instanceof LabelNode)
            labels.put((LabelNode)insn, (LabelNode)insn);
    }        
    
    InsnList importantNodeList = new InsnList();
    for(AbstractInsnNode insn = list.getFirst(); insn != null; insn = insn.getNext())
    {
        if(insn instanceof LabelNode || insn instanceof LineNumberNode)
            continue;
        
        importantNodeList.add(insn.clone(labels));
    }
    return importantNodeList;
}
 
开发者ID:Chicken-Bones,项目名称:CCObfuscator,代码行数:23,代码来源:InstructionComparator.java


示例9: write

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public void write(DoStmtToken token) {
    expr.writeDefineVariables(token.getLocal());

    LabelNode start = expr.writeLabel(node, token.getMeta().getStartLine());
    LabelNode end = new LabelNode();

    method.pushJump(end, start);
    expr.write(token.getBody());
    method.popJump();

    expr.writeConditional(token.getCondition(), end);

    add(new JumpInsnNode(GOTO, start));
    add(end);
    add(new LineNumberNode(token.getMeta().getEndLine(), end));

    expr.writeUndefineVariables(token.getLocal());
}
 
开发者ID:jphp-compiler,项目名称:jphp,代码行数:20,代码来源:DoCompiler.java


示例10: writeBody

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
private void writeBody(IfStmtToken token) {
    LabelNode end = new LabelNode();
    LabelNode elseL = new LabelNode();

    expr.writePopBoolean();
    add(new JumpInsnNode(IFEQ, token.getElseBody() != null ? elseL : end));
    expr.stackPop();

    if (token.getBody() != null) {
        expr.write(token.getBody());
    }

    if (token.getElseBody() != null){
        add(new JumpInsnNode(GOTO, end));
        add(elseL);
        expr.write(token.getElseBody());
    }

    add(end);
    add(new LineNumberNode(token.getMeta().getEndLine(), end));
}
 
开发者ID:jphp-compiler,项目名称:jphp,代码行数:22,代码来源:IfElseCompiler.java


示例11: write

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public void write(WhileStmtToken token) {
    expr.writeDefineVariables(token.getLocal());

    LabelNode start = expr.writeLabel(node, token.getMeta().getStartLine());
    LabelNode end = new LabelNode();

    expr.writeConditional(token.getCondition(), end);

    method.pushJump(end, start);
    expr.write(BodyStmtToken.class, token.getBody());
    method.popJump();

    add(new JumpInsnNode(GOTO, start));
    add(end);
    add(new LineNumberNode(token.getMeta().getEndLine(), end));

    expr.writeUndefineVariables(token.getLocal());
}
 
开发者ID:jphp-compiler,项目名称:jphp,代码行数:20,代码来源:WhileCompiler.java


示例12: areNodesEqual

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
public static boolean areNodesEqual(AbstractInsnNode node, AbstractInsnNode node2) {
	if (node.getClass() == node2.getClass() && node.getOpcode() == node2.getOpcode()) {
		if (node instanceof MethodInsnNode) {
			return ((MethodInsnNode) node).name.equals(((MethodInsnNode) node2).name)
					&& ((MethodInsnNode) node).desc.equals(((MethodInsnNode) node2).desc)
					&& ((MethodInsnNode) node).owner.equals(((MethodInsnNode) node2).owner);
		} else if (node instanceof VarInsnNode) {
			return ((VarInsnNode) node).var == ((VarInsnNode) node2).var;
		} else if (node instanceof InsnNode) {
			return true;
		} else if (node instanceof TypeInsnNode) {
			return ((TypeInsnNode) node).desc.equals(((TypeInsnNode) node2).desc);
		} else if (node instanceof JumpInsnNode) {
			return ((JumpInsnNode) node).label == ((JumpInsnNode) node2).label;
		} else if (node instanceof LabelNode) {
			return node == node2;
		} else if (node instanceof LineNumberNode) {
			return ((LineNumberNode) node).line == ((LineNumberNode) node2).line;
		} else if (node instanceof FieldInsnNode) {
			return ((FieldInsnNode) node).name.equals(((FieldInsnNode) node2).name)
					&& ((FieldInsnNode) node).desc.equals(((FieldInsnNode) node2).desc)
					&& ((FieldInsnNode) node).owner.equals(((FieldInsnNode) node2).owner);
		} else if (node instanceof LdcInsnNode) {
			return ((LdcInsnNode) node).cst.equals(((LdcInsnNode) node2).cst);
		}
	}
	return false;
}
 
开发者ID:PorPit,项目名称:MineCamera,代码行数:29,代码来源:Transformer.java


示例13: getNext

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@SuppressWarnings("all")
private static AbstractInsnNode getNext(Iterator<AbstractInsnNode> it) {
	while (it.hasNext()) {
		final AbstractInsnNode in = it.next();
		if (!(in instanceof LineNumberNode)) {
			return in;
		}
	}
	return null;
}
 
开发者ID:evernat,项目名称:dead-code-detector,代码行数:11,代码来源:SelfAssignmentAnalyzer.java


示例14: findLineNumbers

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
private static List<Integer> findLineNumbers(InsnList insnList) {
    List<Integer> lineNumbers = new ArrayList<>();

    insnList.iterator().forEachRemaining(i -> {
        if (i instanceof LineNumberNode) {
            lineNumbers.add(((LineNumberNode) i).line);
        }
    });

    return lineNumbers;
}
 
开发者ID:UniquePassive,项目名称:osrs-exploits,代码行数:12,代码来源:GamepackMethodOriginalClassFinder.java


示例15: transform

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public boolean transform() throws Throwable {
    classNodes().forEach(classNode -> {
        classNode.methods.forEach(methodNode -> {
            Iterator<AbstractInsnNode> it = methodNode.instructions.iterator();
            while (it.hasNext()) {
                if (it.next() instanceof LineNumberNode) {
                    it.remove();
                }
            }
        });
    });

    return true;
}
 
开发者ID:java-deobfuscator,项目名称:deobfuscator,代码行数:16,代码来源:LineNumberRemover.java


示例16: getLineNumber

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
public int getLineNumber(int pos) {
	ListIterator<AbstractInsnNode> iterator;
	AbstractInsnNode prev;
	iterator = mn.instructions.iterator(pos);
	while(iterator.hasPrevious())
		if((prev = iterator.previous()) instanceof LineNumberNode)
			return ((LineNumberNode) prev).line;
	
	return -1;
}
 
开发者ID:MoofMonkey,项目名称:NeonObf,代码行数:11,代码来源:BasicTypesEncryption.java


示例17: filterBodyNoDebug

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
static List<AbstractInsnNode> filterBodyNoDebug(MethodNode mn) {
	Iterable<AbstractInsnNode> iterable = () -> mn.instructions.iterator();
	return StreamSupport.stream(iterable.spliterator(), false)
		.filter(i -> !(i instanceof LabelNode))
		.filter(i -> !(i instanceof LineNumberNode))
		.collect(Collectors.toList());
}
 
开发者ID:junkdog,项目名称:constexpr-java,代码行数:8,代码来源:ConstExprMethodWeaver.java


示例18: handle

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public void handle(AbstractInsnNode node) throws IncorrectNodeException {
	super.handle(node);
	LOG.debug(logNode(node));
	checkType(node, LineNumberNode.class);

	mState.setCurrentLine(((LineNumberNode)node).line);
}
 
开发者ID:JozefCeluch,项目名称:thesis-disassembler,代码行数:9,代码来源:LineNumberNodeHandler.java


示例19: getNextRelevant

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
private AbstractInsnNode getNextRelevant(Iterator<AbstractInsnNode> it) {
  AbstractInsnNode insn = null;
  while (it.hasNext()) {
    insn = it.next();
    if (insn != null && !(insn instanceof LineNumberNode)) {
      break;
    }
  }
  if (insn == null) {
    throw new RuntimeException();
  }
  return insn;
}
 
开发者ID:damorim,项目名称:compilers-cin,代码行数:14,代码来源:EntryExitTransformer.java


示例20: transform

import org.objectweb.asm.tree.LineNumberNode; //导入依赖的package包/类
@Override
public void transform(byte[] bytes, ClassNode cn) {
	////////////////////////////////////////////////////////////////
	MethodNode method = this.findMethod(cn, "sendClickBlockToController", "func_147115_a");
	InsnList code = method.instructions;

	code.clear();
	LabelNode l0 = new LabelNode();
	code.add(l0);

	code.add(new LineNumberNode(1460, l0));
	code.add(new VarInsnNode(Opcodes.ILOAD, 1));
	LabelNode l1 = new LabelNode();
	code.add(new JumpInsnNode(Opcodes.IFNE, l1));
	LabelNode l2 = new LabelNode();
	code.add(l2);

	code.add(new LineNumberNode(1462, l2));
	code.add(new VarInsnNode(Opcodes.ALOAD, 0));
	code.add(new InsnNode(Opcodes.ICONST_0));
	code.add(leftClickCounter.putField());
	code.add(l1);

	code.add(new LineNumberNode(1484, l1));
	code.add(new FrameNode(Opcodes.F_SAME, 0, null, 0, null));
	code.add(new InsnNode(Opcodes.RETURN));

	method.maxStack = 2;
	method.maxLocals = 2;
	////////////////////////////////////////////////////////////////
}
 
开发者ID:fewizz,项目名称:HardcoredMining,代码行数:32,代码来源:MinecraftTransformer.java



注:本文中的org.objectweb.asm.tree.LineNumberNode类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java NoHostAvailableException类代码示例发布时间:2022-05-21
下一篇:
Java JasperReportsContext类代码示例发布时间:2022-05-21
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap