1 30 31 35 36 package jbet.cmd; 37 import jbet.*; 38 39 public class print implements Command 40 { 41 public int helplevel() { return 1; } 42 public String shorthelp() { return "display info on a class, method, or field"; } 43 public String longhelp() { 44 return 45 "jbet print <class>\t\tShow pretty disassembly of class\n" + 46 "jbet print <class>.<method>\tShow pretty disassembly of method\n" + 47 "jbet print <class>.<field>\tDisplay field\n"; } 48 49 public void run (Lexer lexer) throws Exception { 50 boolean printlines = false; 52 boolean printlocals = false; 53 boolean printcounts = false; 54 boolean printcp = false; 55 56 loop: 57 while(true) { 58 switch (lexer.read().type) { 59 case 'l': printlines = true; break; 60 case 'L': printlines = false; break; 61 case 'v': printlocals = true; break; 62 case 'V': printlocals = false; break; 63 case 'i': printcounts = true; break; 64 case 'c': printcp = true; break; 65 case Token.END_OF_OPTS: break loop; 66 } 67 } 68 69 71 Object thing = lexer.getThing(Jbet.default_class); 72 lexer.term(); 73 74 if (thing instanceof ClassInfo) { 75 ClassInfo cr = (ClassInfo) thing; 76 if (cr.dirty) 77 cr.resolveConstants(); 78 cr.printout(Jbet.output, 2); 79 if (printcp) 80 cr.printcp(Jbet.output, 2); 81 cr.printMethods(Jbet.output, 2); 82 cr.printFields(Jbet.output, 2); 83 } 84 if (thing instanceof MethodInfo) { 85 MethodInfo mi = (MethodInfo) thing; 86 if (mi.cr.dirty) 87 mi.resolveConstants(); 88 mi.printout(Jbet.output, false, printlines, printlocals, printcounts); 89 } if (thing instanceof FieldInfo) { 90 FieldInfo fi = (FieldInfo) thing; 91 if (fi.cr.dirty) 92 fi.resolveConstants(); 93 Jbet.output.println( fi.recString() ); 94 } 95 } 96 } 97 | Popular Tags |