You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.7 KiB
106 lines
3.7 KiB
/* GlobalOptions Copyright (C) 1999-2001 Jochen Hoenicke.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
package jode;
|
|
import java.io.PrintWriter;
|
|
import java.util.StringTokenizer;
|
|
|
|
public class GlobalOptions {
|
|
public final static String version = "@VERSION@";
|
|
public final static String email = "jochen@gnu.org";
|
|
public final static String copyright =
|
|
"Jode (c) 1998-2001 Jochen Hoenicke <"+email+">";
|
|
public final static String URL = "http://jode.sourceforge.net/";
|
|
|
|
public static PrintWriter err = new PrintWriter(System.err, true);
|
|
public static int verboseLevel = 0;
|
|
public static int debuggingFlags = 0;
|
|
|
|
public static final int DEBUG_BYTECODE = 0x001;
|
|
public static final int DEBUG_VERIFIER = 0x002;
|
|
public static final int DEBUG_TYPES = 0x004;
|
|
public static final int DEBUG_FLOW = 0x008;
|
|
public static final int DEBUG_INOUT = 0x010;
|
|
public static final int DEBUG_ANALYZE = 0x020;
|
|
public static final int DEBUG_LVT = 0x040;
|
|
public static final int DEBUG_CHECK = 0x080;
|
|
public static final int DEBUG_LOCALS = 0x100;
|
|
public static final int DEBUG_CONSTRS = 0x200;
|
|
public static final int DEBUG_INTERPRT = 0x400;
|
|
|
|
public static final String[] debuggingNames = {
|
|
"bytecode", "verifier", "types", "flow",
|
|
"inout", "analyze", "lvt", "check", "locals",
|
|
"constructors", "interpreter"
|
|
};
|
|
|
|
public static void usageDebugging() {
|
|
err.println("Debugging option: --debug=flag1,flag2,...");
|
|
err.println("possible flags:");
|
|
err.println(" bytecode " +
|
|
"show bytecode, as it is read from class file.");
|
|
err.println(" verifier " +
|
|
"show result of bytecode verification.");
|
|
err.println(" types " +
|
|
"show type intersections");
|
|
err.println(" flow " +
|
|
"show flow block merging.");
|
|
err.println(" analyze " +
|
|
"show T1/T2 analyzation of flow blocks.");
|
|
err.println(" inout " +
|
|
"show in/out set analysis.");
|
|
err.println(" lvt " +
|
|
"dump LocalVariableTable.");
|
|
err.println(" check " +
|
|
"do time consuming sanity checks.");
|
|
err.println(" locals " +
|
|
"dump local merging information.");
|
|
err.println(" constructors " +
|
|
"dump constructor simplification.");
|
|
err.println(" interpreter " +
|
|
"debug execution of interpreter.");
|
|
System.exit(0);
|
|
}
|
|
|
|
/**
|
|
* Parse the argument given to the debugging flag.
|
|
* @return true, if the argument parsed without problems.
|
|
*/
|
|
public static boolean setDebugging(String debuggingString) {
|
|
if (debuggingString.length() == 0 || debuggingString.equals("help")) {
|
|
usageDebugging();
|
|
return false;
|
|
}
|
|
|
|
StringTokenizer st = new StringTokenizer(debuggingString, ",");
|
|
next_token:
|
|
while (st.hasMoreTokens()) {
|
|
String token = st.nextToken().intern();
|
|
for (int i=0; i<debuggingNames.length; i++) {
|
|
if (token == debuggingNames[i]) {
|
|
debuggingFlags |= 1 << i;
|
|
continue next_token;
|
|
}
|
|
}
|
|
err.println("Illegal debugging flag: "+token);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|