Examples of OpcodeNode


Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    this.methodAbsoluteName = methodAbsoluteName;
  }

  @Override
  public void visitCode() {
    startOpcodeNode = currentOpcodeNode = new OpcodeNode();
    opcodeByLabelMap = new HashMap<Label, OpcodeNode>();
    gotoMap = new HashMap<OpcodeNode, Set<Label>>();
    handlerEntrySet = new HashSet<Label>();
    currentAddress = 0;
    listener.beginVisit(methodAbsoluteName);
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

  @Override
  public void visitEnd() {
    listener.codeVisisted(methodAbsoluteName);
    try {
      for (Map.Entry<OpcodeNode, Set<Label>> entry : gotoMap.entrySet()) {
        final OpcodeNode opcodeNode = entry.getKey();
        for (Label label : entry.getValue()) {
          final OpcodeNode next = opcodeByLabelMap.get(label);
          if (next == null) {
            throw new RuntimeEnhanceException(new EnhanceException(
                "undefined label " + label.toString()
                    + " for goto of "
                    + opcodeNode.toString()));
          }
          opcodeNode.addNext(next);
        }
      }

      final List<OpcodeNode> nextOpcodeNodeList = startOpcodeNode
          .getNextOpcodeNodeList();
      for (OpcodeNode opcodeNode : nextOpcodeNodeList) {
        check(opcodeNode, null);
      }

      for (Label label : handlerEntrySet) {
        final OpcodeNode handlerOpcode = opcodeByLabelMap.get(label);
        if (handlerOpcode == null) {
          throw new EnhanceException("undefined label "
              + label.toString());
        }
        check(handlerOpcode, HANDLER_START_STACK_ELEMENT);
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

  private void check(final OpcodeNode startOpcodeNode,
      final StackElement startStackElement) throws EnhanceException {
    final Deque<OpcodeNode> toVisitQue = new LinkedList<OpcodeNode>();
    final Deque<StackElement> stackElementQue = new LinkedList<StackElement>();
    final Set<OpcodeNode> visited = new HashSet<OpcodeNode>();
    OpcodeNode currentOpcodeNode = startOpcodeNode;
    StackElement stackElement = startStackElement;
    visited.add(currentOpcodeNode);
    while (currentOpcodeNode != null) {
      listener.currentOpcode(currentOpcodeNode);
      currentOpcodeNode.setBeforeExecutionStackElement(stackElement);
      stackElement = currentOpcodeNode.interprete();
      if (currentOpcodeNode.isOwnedMethodCallOfOtherInstance()) {
        listener.addOwnedMethodCallOfOtherInstance((OpcodeNodeMethod) currentOpcodeNode);
      }
      if (currentOpcodeNode.isDirectAccess()) {
        notifyDirectAccess(currentOpcodeNode);
      }
      for (OpcodeNode next : currentOpcodeNode.getNextOpcodeNodeList()) {
        if (visited.add(next)) {
          toVisitQue.add(next);
          stackElementQue.add(stackElement);
        }
        // stack change accepted
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    if (opcode == ALOAD && var == 0) {
      // access to this
      currentOpcodeNode = new OpcodeNodeAloadThis(opcode,
          currentAddress++, currentLineNumber, currentOpcodeNode);
    } else {
      currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
          currentLineNumber, currentOpcodeNode);
    }
    opcodeByLabelUpdate();
    if (opcode == RET) {
      currentOpcodeNode = null; // NOPMD
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

          currentLineNumber, currentOpcodeNode, desc);
    } else if (opcode == PUTSTATIC || opcode == PUTFIELD) {
      currentOpcodeNode = new OpcodeNodePut(opcode, currentAddress++,
          currentLineNumber, currentOpcodeNode, desc);
    } else {
      currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
          currentLineNumber, currentOpcodeNode);
    }
    opcodeByLabelUpdate();
  }
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

          currentLineNumber, currentOpcodeNode);
    } else if (opcode == SWAP) {
      currentOpcodeNode = new OpcodeNodeSwap(opcode, currentAddress++,
          currentLineNumber, currentOpcodeNode);
    } else {
      currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
          currentLineNumber, currentOpcodeNode);
    }
    opcodeByLabelUpdate();
    if (opcode == IRETURN || opcode == LRETURN || opcode == FRETURN
        || opcode == DRETURN || opcode == ARETURN || opcode == RETURN
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    }
  }

  @Override
  public void visitIntInsn(final int opcode, final int operand) {
    currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
        currentLineNumber, currentOpcodeNode);
    opcodeByLabelUpdate();
  }
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    opcodeByLabelUpdate();
  }

  @Override
  public void visitTypeInsn(final int opcode, final String type) {
    currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
        currentLineNumber, currentOpcodeNode);
    opcodeByLabelUpdate();
  }
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    opcodeByLabelUpdate();
  }

  @Override
  public void visitJumpInsn(final int opcode, final Label label) {
    currentOpcodeNode = new OpcodeNode(opcode, currentAddress++,
        currentLineNumber, currentOpcodeNode);
    addGoto(currentOpcodeNode, label);
    opcodeByLabelUpdate();
    if (opcode == GOTO) {
      currentOpcodeNode = null;// NOPMD
View Full Code Here

Examples of net.sf.joafip.store.entity.proxy.OpcodeNode

    opcodeByLabelUpdate();
  }

  @Override
  public void visitIincInsn(final int var, final int increment) {
    currentOpcodeNode = new OpcodeNode(IINC, currentAddress++,
        currentLineNumber, currentOpcodeNode);
    opcodeByLabelUpdate();
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.