本文整理了Java中org.objectweb.asm.tree.LabelNode.<init>()
方法的一些代码示例,展示了LabelNode.<init>()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LabelNode.<init>()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.LabelNode
类名称:LabelNode
方法名:<init>
暂无
代码示例来源:origin: jphp-group/jphp
public LabelNode getOrCreateGotoLabel(String name) {
name = name.toLowerCase();
if (gotoLabels == null)
gotoLabels = new HashMap<String, LabelNode>();
LabelNode label = gotoLabels.get(name);
if (label == null)
gotoLabels.put(name, label = new LabelNode());
return label;
}
代码示例来源:origin: jphp-group/jphp
public LabelNode makeLabel() {
LabelNode el;
code.add(el = new LabelNode());
return el;
}
代码示例来源:origin: jphp-group/jphp
public void writeUndefineVariables(Collection<VariableExprToken> values) {
LabelNode end = new LabelNode();
for (VariableExprToken value : values)
writeUndefineVariable(value, end);
}
代码示例来源:origin: kilim/kilim
LabelNode getOrCreateLabelAtPos(int pos) {
LabelNode ret = null;
if (pos < posToLabelMap.size()) {
ret = posToLabelMap.get(pos);
}
if (ret == null) {
ret = new LabelNode();
setLabel(pos, ret);
}
return ret;
}
代码示例来源:origin: jphp-group/jphp
public LabelNode writeLabel(MethodNode mv, int lineNumber){
LabelNode node = new LabelNode(new Label());
mv.instructions.add(node);
if (lineNumber != -1)
mv.instructions.add(new LineNumberNode(lineNumber, node));
return node;
}
代码示例来源:origin: kilim/kilim
void dupBBAndLabels(boolean deepCopy,
HashMap<BasicBlock, BasicBlock> bbCopyMap,
HashMap<LabelNode, LabelNode> labelCopyMap, BasicBlock returnToBB)
throws KilimException {
for (BasicBlock orig : getSubBlocks()) {
BasicBlock dup = new BasicBlock(flow, orig.startLabel);
bbCopyMap.put(orig, dup);
if (deepCopy) {
// copy labels for each instruction. This copy will be used
// in dupCopyContents
for (int i = orig.startPos; i <= orig.endPos; i++) {
LabelNode origLabel = flow.getLabelAt(i);
if (origLabel != null) {
LabelNode l = labelCopyMap.put(origLabel, new LabelNode());
assert l == null;
}
}
// dup.startLabel reset later in dupCopyContents
}
}
}
代码示例来源:origin: jphp-group/jphp
public void writeLineNumber(Token token) {
if (token.getMeta().getStartLine() > lastLineNumber) {
lastLineNumber = token.getMeta().getStartLine();
code.add(new LineNumberNode(lastLineNumber, new LabelNode()));
}
}
代码示例来源:origin: kilim/kilim
public CallWeaver(MethodWeaver mw, Detector d, BasicBlock aBB) {
detector = d;
methodWeaver = mw;
bb = aBB;
callLabel = bb.startLabel;
varUsage = new BitSet(2 * bb.flow.maxLocals);
resumeLabel = bb.flow.getLabelAt(bb.startPos + 1);
if (resumeLabel == null)
resumeLabel = new LabelNode();
assignRegisters();
stateClassName = createStateClass();
methodWeaver.ensureMaxStack(getNumBottom() + 3); //
}
代码示例来源:origin: jphp-group/jphp
@SuppressWarnings("unchecked")
void writeFooter(){
LabelNode endL = new LabelNode();
node.instructions.add(endL);
for(LocalVariable variable : localVariables.values()){
String description = Type.getDescriptor(variable.getClazz() == null ? Object.class : variable.getClazz());
if (variable.name.equals("~this")) {
//if (variable.getClazz() != Memory.class && !clazz.statement.isTrait()) {
description = "L" + clazz.entity.getCompiledInternalName() + ";";
//}
}
node.localVariables.add(new LocalVariableNode(
variable.name,
description,
null,
variable.label == null ? labelStart : variable.label,
variable.getEndLabel() == null ? endL : variable.getEndLabel(),
variable.index
));
}
//node.maxStack = this.stackMaxSize; !!! we don't need this, see: ClassWriter.COMPUTE_FRAMES
//node.maxLocals = this.localVariables.size();
}
代码示例来源:origin: kilim/kilim
loadVar(mv, TOBJECT, methodWeaver.getFiberVar());
mv.visitMethodInsn(INVOKEVIRTUAL, FIBER_CLASS, "up", "()I", false);
LabelNode restoreLabel = new LabelNode();
LabelNode saveLabel = new LabelNode();
LabelNode unwindLabel = new LabelNode();
LabelNode[] labels = new LabelNode[] { resumeLabel, restoreLabel, saveLabel,
unwindLabel };
代码示例来源:origin: kilim/kilim
LabelNode resumeLabel = new LabelNode();
VMType.loadVar(mv, VMType.TOBJECT, getFiberVar());
mv.visitMethodInsn(INVOKEVIRTUAL, FIBER_CLASS, "upEx", "()I", false);
int[] keys = new int[cwList.size()];
for (int i = 0; i < cwList.size(); i++) {
labels[i] = new LabelNode();
keys[i] = callWeavers.indexOf(cwList.get(i)) + 1;
代码示例来源:origin: jphp-group/jphp
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));
}
代码示例来源:origin: jphp-group/jphp
LabelNode iter = new LabelNode();
LabelNode end = new LabelNode();
代码示例来源:origin: jphp-group/jphp
expr.writeDefineVariables(token.getLocal());
LabelNode l = new LabelNode();
LabelNode end = new LabelNode();
int i = 0;
for(CaseStmtToken one : token.getCases()) {
jumps[i] = new LabelNode[]{ new LabelNode(), new LabelNode() }; // checkLabel, bodyLabel
if (i == jumps.length - 1)
jumps[i] = new LabelNode[]{ end, end };
代码示例来源:origin: jphp-group/jphp
methodCompiler.writeHeader();
LabelNode end = new LabelNode();
LabelNode l0 = writeLabel(destructor, statement.getMeta().getStartLine());
methodCompiler.addLocalVariable("~this", l0);
代码示例来源:origin: jphp-group/jphp
@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());
}
}
代码示例来源:origin: jphp-group/jphp
@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());
}
}
代码示例来源:origin: jphp-group/jphp
stackPop();
} else {
LabelNode endLabel = new LabelNode();
LabelNode elseLabel = new LabelNode();
代码示例来源:origin: jphp-group/jphp
writePopBoolean();
LabelNode end = new LabelNode();
LabelNode next = new LabelNode();
代码示例来源:origin: jphp-group/jphp
assert local != null;
LabelNode end = new LabelNode();
boolean isClosure = method.clazz.isClosure();
内容来源于网络,如有侵权,请联系作者删除!