Package org.trifort.rootbeer.deadmethods

Source Code of org.trifort.rootbeer.deadmethods.DeadMethods

/*
* Copyright 2012 Phil Pratt-Szeliga and other contributors
* http://chirrup.org/
*
* See the file LICENSE for copying permission.
*/

package org.trifort.rootbeer.deadmethods;

import java.util.List;
import java.util.Set;

import org.trifort.rootbeer.util.ReadFile;

public class DeadMethods {
 
  private List<Block> m_blocks;
  private Set<String> m_live;
 
  public void parseFile(String filename) {
    ReadFile reader = new ReadFile(filename);
    String contents = "";
    try {
      contents = reader.read();
    } catch(Exception ex){
      ex.printStackTrace(System.out);
    }
   
    parseString(contents);
  }
 
  public void parseString(String contents){
    SegmentParser segment_parser = new SegmentParser();
    List<Segment> segments = segment_parser.parse(contents);
    //for(Segment segment : segments){
    //  System.out.println(segment.toString());
    //}
   
    BlockParser block_parser = new BlockParser();
    List<Block> blocks = block_parser.parse(segments);
    //for(Block block : blocks){
    //  System.out.println("<block>");
    //  System.out.println(block.toString());
    //  System.out.println("</block>");
    //}
   
    MethodNameParser name_parser = new MethodNameParser();
    List<String> method_names = name_parser.parse(blocks);
    //for(Block block : blocks){
    //  if(block.isMethod()){
    //    Method method = block.getMethod();
    //    System.out.println(method.getName());
    //  }
    //}
   
    MethodAnnotator annotator = new MethodAnnotator();
    annotator.parse(blocks, method_names);
    //for(Block block : blocks){
    //  if(block.isMethod()){
    //    Method method = block.getMethod();
    //    System.out.println("name: "+method.getName());
    //    for(String invoked : method.getInvoked()){
    //      System.out.println("  invoked: "+invoked);
    //    }
    //  }
    //}
   
    m_blocks = blocks;
  }
 
  private String outputLive(List<Block> blocks, Set<String> live){
    StringBuilder ret = new StringBuilder();
    for(Block block : blocks){
      if(block.isMethod()){
        Method method = block.getMethod();
        String name = method.getName();
        if(live.contains(name) == false){
          continue;
        }
        ret.append(block.toString());
        ret.append("\n");
      } else {
        ret.append(block.toString());
        ret.append("\n");
      }
    }
    return ret.toString()
  }
 
  public String getResult(){
    if(m_live == null){
      LiveMethodDetector detector = new LiveMethodDetector();
      m_live = detector.parse(m_blocks);
    }
   
    return outputLive(m_blocks, m_live);
  }
 
  public String getCompressedResult(){
    if(m_live == null){
      LiveMethodDetector detector = new LiveMethodDetector();
      m_live = detector.parse(m_blocks);
    }
   
    MethodNameCompressor compressor = new MethodNameCompressor();
    List<Block> blocks = compressor.parse(m_blocks, m_live);
   
    return outputLive(blocks, m_live);
  }
 
  public static void main(String[] args){
    DeadMethods dead_methods = new DeadMethods();
    dead_methods.parseFile("/home/pcpratts/.rootbeer/generated_unix.cu");
    String ret = dead_methods.getResult();
    //System.out.println(ret);
  }
}
TOP

Related Classes of org.trifort.rootbeer.deadmethods.DeadMethods

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.