Package org.objectweb.asm.tree

Examples of org.objectweb.asm.tree.LabelNode


    public void replaceLabels(Map<LabelNode, LabelNode> labelMap) {
        replaceLabels(labelMap, Collections.EMPTY_SET);
    }

    public void replaceLabel(String s, LabelNode l) {
        LabelNode old = get(s);
        if (old != null)
            replaceLabels(ImmutableMap.of(old, l));
    }
View Full Code Here


            return this;

        //common labels, give them our nodes
        HashMap<LabelNode, LabelNode> labelMap = list.identityLabelMap();
        for(Entry<String, LabelNode> entry : other.labels.entrySet()) {
            LabelNode old = labels.get(entry.getKey());
            if(old != null)
                labelMap.put(old, entry.getValue());
        }
        HashSet<LabelNode> usedLabels = new HashSet<LabelNode>();
        for (AbstractInsnNode insn = other.list.list.getFirst(); insn != null; insn = insn.getNext())
View Full Code Here

        Label label = labels.get(name);
        if (label == null) {
            label = new Label();
            labels.put(name, label);
        }
        return new LabelNode(label);
    }
View Full Code Here

        return this;
    }

    public MethodDefinition switchStatement(String defaultCase, List<CaseStatement> cases)
    {
        LabelNode defaultLabel = getLabel(defaultCase);

        int[] keys = new int[cases.size()];
        LabelNode[] labels = new LabelNode[cases.size()];
        for (int i = 0; i < cases.size(); i++) {
            keys[i] = cases.get(i).getKey();
View Full Code Here

                        LookupSwitchInsnNode lsi = (LookupSwitchInsnNode) insnNode;
                        int jump = insns.indexOf(lsi.dflt);
                        merge(jump, current, subroutine);
                        newControlFlowEdge(insn, jump);
                        for (int j = 0; j < lsi.labels.size(); ++j) {
                            LabelNode label = (LabelNode) lsi.labels.get(j);
                            jump = insns.indexOf(label);
                            merge(jump, current, subroutine);
                            newControlFlowEdge(insn, jump);
                        }
                    } else if (insnNode instanceof TableSwitchInsnNode) {
                        TableSwitchInsnNode tsi = (TableSwitchInsnNode) insnNode;
                        int jump = insns.indexOf(tsi.dflt);
                        merge(jump, current, subroutine);
                        newControlFlowEdge(insn, jump);
                        for (int j = 0; j < tsi.labels.size(); ++j) {
                            LabelNode label = (LabelNode) tsi.labels.get(j);
                            jump = insns.indexOf(label);
                            merge(jump, current, subroutine);
                            newControlFlowEdge(insn, jump);
                        }
                    } else if (insnOpcode == RET) {
View Full Code Here

                }
            } else if (node instanceof TableSwitchInsnNode) {
                TableSwitchInsnNode tsnode = (TableSwitchInsnNode) node;
                findSubroutine(insns.indexOf(tsnode.dflt), sub, calls);
                for (int i = tsnode.labels.size() - 1; i >= 0; --i) {
                    LabelNode l = (LabelNode) tsnode.labels.get(i);
                    findSubroutine(insns.indexOf(l), sub, calls);
                }
            } else if (node instanceof LookupSwitchInsnNode) {
                LookupSwitchInsnNode lsnode = (LookupSwitchInsnNode) node;
                findSubroutine(insns.indexOf(lsnode.dflt), sub, calls);
                for (int i = lsnode.labels.size() - 1; i >= 0; --i) {
                    LabelNode l = (LabelNode) lsnode.labels.get(i);
                    findSubroutine(insns.indexOf(l), sub, calls);
                }
            }

            // calls findSubroutine recursively on exception handler successors
View Full Code Here

  }

  @Test
  public void testJumpInsn() {
    testInstructionBetweenFrames(new JumpInsnNode(Opcodes.GOTO,
        new LabelNode()));
  }
View Full Code Here

  }

  @Test
  public void testTableSwitchInsn() {
    testInstructionBetweenFrames(new TableSwitchInsnNode(0, 0,
        new LabelNode(), new LabelNode[0]));
  }
View Full Code Here

        new LabelNode(), new LabelNode[0]));
  }

  @Test
  public void testLookupSwitchInsn() {
    testInstructionBetweenFrames(new LookupSwitchInsnNode(new LabelNode(),
        new int[0], new LabelNode[0]));
  }
View Full Code Here

     * inlining.
     */
    @Override
    public void visitJumpInsn(final int opcode, final Label lbl) {
        super.visitJumpInsn(opcode, lbl);
        LabelNode ln = ((JumpInsnNode) instructions.getLast()).label;
        if (opcode == JSR && !subroutineHeads.containsKey(ln)) {
            subroutineHeads.put(ln, new BitSet());
        }
    }
View Full Code Here

TOP

Related Classes of org.objectweb.asm.tree.LabelNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.