From 1a044d7dfe2df3630fa1e5f70ec9042df8372e91 Mon Sep 17 00:00:00 2001 From: "igor%mir2.org" Date: Sun, 17 Mar 2002 03:34:43 +0000 Subject: [PATCH] Activate support for getting token names if debugging interpreter icode, not only when debugging parsing trees. Not to depend in TokenStream on Interpreter, printICode debug flag is moved to Context, as with printTrees definition. Fixing debug printing of icode which are not defined in TokenStream git-svn-id: svn://10.0.0.236/trunk@116731 18797224-902f-48f8-a5cc-f745e15eee43 --- .../src/org/mozilla/javascript/Context.java | 1 + .../org/mozilla/javascript/Interpreter.java | 30 ++++++++++++++----- .../org/mozilla/javascript/TokenStream.java | 2 +- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Context.java b/mozilla/js/rhino/src/org/mozilla/javascript/Context.java index 441da594ae7..669389a69eb 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Context.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Context.java @@ -1839,6 +1839,7 @@ public class Context { // debug flags static final boolean printTrees = false; + static final boolean printICode = false; /** * Compile a script. diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java index 98a396780db..340c6d5af0f 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java @@ -46,8 +46,6 @@ import org.mozilla.javascript.debug.*; public class Interpreter extends LabelTable { - public static final boolean printICode = false; - // Additional interpreter-specific codes static final int // To indicating a line number change in icodes. @@ -148,7 +146,7 @@ public class Interpreter extends LabelTable { generateICodeFromTree(tree, varTable, activationNeeded, securityDomain); itsData.itsNestedFunctions = itsNestedFunctions; itsData.itsRegExpLiterals = regExpLiterals; - if (printICode) dumpICode(itsData); + if (Context.printICode) dumpICode(itsData); String[] argNames = itsVariableTable.getAllNames(); short argCount = (short)itsVariableTable.getParameterCount(); @@ -207,7 +205,7 @@ public class Interpreter extends LabelTable { itsData.itsSource = (String)theFunction.getProp(Node.SOURCE_PROP); itsData.itsNestedFunctions = itsNestedFunctions; itsData.itsRegExpLiterals = regExpLiterals; - if (printICode) dumpICode(itsData); + if (Context.printICode) dumpICode(itsData); String[] argNames = itsVariableTable.getAllNames(); short argCount = (short)itsVariableTable.getParameterCount(); @@ -1174,7 +1172,7 @@ public class Interpreter extends LabelTable { static PrintWriter out; static { - if (printICode) { + if (Context.printICode) { try { out = new PrintWriter(new FileOutputStream("icode.txt")); out.close(); @@ -1184,8 +1182,26 @@ public class Interpreter extends LabelTable { } } + private static String icodeToName(int icode) { + if (Context.printICode) { + if (icode <= TokenStream.LAST_TOKEN) { + return TokenStream.tokenToName(icode); + }else { + switch (icode) { + case LINE_ICODE: return "line"; + case SOURCEFILE_ICODE: return "sourcefile"; + case BREAKPOINT_ICODE: return "breakpoint"; + case SHORTNUMBER_ICODE: return "shortnumber"; + case INTNUMBER_ICODE: return "intnumber"; + } + } + return ""; + } + return ""; + } + private static void dumpICode(InterpreterData theData) { - if (printICode) { + if (Context.printICode) { try { int iCodeLength = theData.itsICodeTop; byte iCode[] = theData.itsICode; @@ -1199,7 +1215,7 @@ public class Interpreter extends LabelTable { for (int pc = 0; pc < iCodeLength; ) { out.print("[" + pc + "] "); int token = iCode[pc] & 0xff; - String tname = TokenStream.tokenToName(token); + String tname = icodeToName(token); ++pc; switch (token) { case TokenStream.SCOPE : diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/TokenStream.java b/mozilla/js/rhino/src/org/mozilla/javascript/TokenStream.java index fe8a86fe273..6e517d12f96 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/TokenStream.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/TokenStream.java @@ -254,7 +254,7 @@ public class TokenStream { public static String tokenToName(int token) { - if (Context.printTrees) { + if (Context.printTrees || Context.printICode) { switch (token) { case ERROR: return "error"; case EOF: return "eof";