Examples of DecompilationContext


Examples of net.sf.rej.java.instruction.DecompilationContext

          methodOffsetMap = m.getOffsetMap();
          this.methodOffsets.put(m, methodOffsetMap);
        }
        Range range = methodOffsetMap.get(ca);
        int offset = this.offsets.get(m).getOffset() +  range.getOffset() + 14 + cr.getPosition();
        DecompilationContext dc = ca.getCode().createDecompilationContext();
        dc.setPosition(cr.getPosition());
        int size = cr.getInstruction().getSize(dc);
       
        this.hexEditor.getHexEditor().getSelectionModel().setSelectedInverval(offset, offset + size);         
      } else {
        this.hexEditor.getHexEditor().getSelectionModel().clearSelection();
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

            }

            sd.setOffset(0);

            Instruction inst = cr.getInstruction();
            DecompilationContext dc = cr.getDecompilationContext();
            LocalVariableTableAttribute lvs = dc.getLocalVariableTable();
            ConstantPool pool = dc.getConstantPool();
          sd.drawIndent();
          sd.drawIndent();
            sd.drawInstruction(inst.getMnemonic());
            Parameters params = inst.getParameters();
            for (int i = 0; i < params.getCount(); i++) {
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

      if (codeAttr.getAttributes() != null) {
        lnAttr = codeAttr.getAttributes().getLineNumberTable();
        lvs = codeAttr.getAttributes().getLocalVariableTable();
      }
      Code code = codeAttr.getCode();
      DecompilationContext dc = code.createDecompilationContext();
      List instructions = code.getInstructions();
      dc.setPosition(0);
      for (int j = 0; j < instructions.size(); j++) {
        Instruction instruction = (Instruction) instructions.get(j);

        if (instruction instanceof Label) {
          LabelRow lr = new LabelRow((Label) instruction, mdr);
          lr.setParentCode(code);
          list.add(lr);
          mdr.addCodeRow(lr);
        } else {
          int lineNumber = -1;

          if (lnAttr != null) {
            lineNumber = lnAttr.getLineNumber(dc.getPosition());
          }
          if (lvs != null) {
            List locals = lvs
                .getLocalVariable(dc.getPosition());
            for (int k = 0; k < locals.size(); k++) {
              LocalVariable lv = (LocalVariable) locals
                  .get(k);
              LocalVariableDefRow lvdr = new LocalVariableDefRow(
                  lv, mdr);
              list.add(lvdr);
              mdr.addLocalVariable(lvdr);
            }
          }

          CodeRow cd = new CodeRow(cf, mdr, instruction);
          cd.setPosition(dc.getPosition());
          cd.setDecompilationContext(dc);
          cd.setParentCode(code);

          if (lineNumber != -1) {
            cd.setLineNumber(lineNumber);
          }

          list.add(cd);
          mdr.addCodeRow(cd);

          dc.incrementPosition(instruction);
        }

      }

      list.add(new MethodDefRow(cf, method, false, true));
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

      }

      Code codeA = codeAttrA.getCode();
      Code codeB = codeAttrB.getCode();
     
      DecompilationContext dcA = codeA.createDecompilationContext();
      DecompilationContext dcB = codeB.createDecompilationContext();
     
      List<Instruction> instructionsA = codeA.getInstructions();
      List<Instruction> instructionsB = codeB.getInstructions();
      dcA.setPosition(0);
      dcB.setPosition(0);
     
      List<EditorRow> methodRowsA = getMethodRows(instructionsA, codeA, mdrA, lnAttrA, lvsA, dcA, cfA);
      List<EditorRow> methodRowsB = getMethodRows(instructionsB, codeB, mdrB, lnAttrB, lvsB, dcB, cfB);
     
      // find out the equal instructions at the beginning of the block
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

     * @param code
     */
    public void setCode(Code code) {
      this.code = code;
      this.instructionMappings.clear();
      DecompilationContext dc = code.createDecompilationContext();
      dc.setPosition(0);
      for (Instruction inst : code.getInstructions()) {
        Integer srcLine = this.mappings.get(dc.getPosition());
        if (srcLine != null) {
          this.instructionMappings.put(inst, srcLine);
        }
        dc.incrementPosition(inst);
      }
    }
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

    }
   
    private void validate() {
      // called by code when it is modified
      this.mappings.clear();
         DecompilationContext dc = code.createDecompilationContext();
         dc.setPosition(0);
         for (Instruction inst : code.getInstructions()) {
           Integer srcLine = this.instructionMappings.get(inst);
           if (srcLine != null) {
             this.mappings.put(dc.getPosition(), srcLine);
           }
           dc.incrementPosition(inst);
         }
        
         this.validated = true;
    }
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

          // method code
          Code code = null;
          if (ca != null)
            code = ca.getCode();
          if (code != null) {
            DecompilationContext dc = code
                .createDecompilationContext();
            ic.setDc(dc);
            dc.setPosition(0);
            List<Instruction> instructions = code.getInstructions();
            for (Instruction instruction : instructions) {
              agent.processInstruction(ic, instruction);
              dc.incrementPosition(instruction);
            }
          }

          processAttributes(ic, method.getAttributes(), agent);
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

     * propagated into the line number table.
     */
    private LineNumberTableAttribute lineNumbers = null;

    public Code(ByteParser parser, ConstantPool pool) {
        this.context = new DecompilationContext();
        this.context.setConstantPool(pool);
        InstructionSet set = InstructionSet.getInstance();
        this.context.setParser(parser);
        this.context.setPosition(0);
        DecompilationContext dc = createDecompilationContext();
        List<Label> labels = new ArrayList<Label>();
        while (parser.hasMore()) {
            int opcode = parser.peekByte();

            try {
                Instruction instruction = set.getInstruction(opcode);
                if (instruction == null) {
                    this.errors.add("Unknown opcode at position " + dc.getPosition() + " trying to recover.");
                    continue;
                }
                int size = instruction.getSize(dc);
                byte[] data = parser.getBytes(size);
                instruction.setData(data, dc);
                List<Label> al = instruction.getLabels();
                if (al != null && al.size() > 0) {
                    labels.addAll(al);
                }

                this.code.add(instruction);

                dc.incrementPosition(size);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

        insertLabels(labels);
    }

    public Code(ConstantPool pool) {
        this.context = new DecompilationContext();
        this.context.setConstantPool(pool);
    }
View Full Code Here

Examples of net.sf.rej.java.instruction.DecompilationContext

        labelloop:
        for (Label label : labels ) {
            if (this.code.contains(label)) continue;
           
            DecompilationContext dc = createDecompilationContext();
            for (int j = 0; j < this.code.size(); j++) {
                Instruction instruction = this.code.get(j);
                if (dc.getPosition() == label.getPosition()) {
                    this.code.add(j, label);
                    continue labelloop;
                }
                dc.incrementPosition(instruction);
            }
            // add to end
            if (dc.getPosition() == label.getPosition()) {
                this.code.add(label);
            }
        }
    }
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.