cleaned up trap handling in Interpreter.java
[org.ibex.core.git] / src / org / ibex / js / JSFunction.java
index 4bf41e4..40a550d 100644 (file)
@@ -105,10 +105,12 @@ class JSFunction extends JS implements ByteCodes, Tokens, Task {
 
     public String toString() { return "JSFunction [" + sourceName + ":" + firstLine + "]"; }
 
-    public String dump() {
+    String dump() { return dump(""); }
+    private  String dump(String prefix) {
         StringBuffer sb = new StringBuffer(1024);
         sb.append("\n" + sourceName + ": " + firstLine + "\n");
         for (int i=0; i < size; i++) {
+            sb.append(prefix);
             sb.append(i).append(" (").append(line[i]).append(") :");
             if (op[i] < 0) sb.append(bytecodeToString[-op[i]]);
             else sb.append(codeToString[op[i]]);
@@ -120,6 +122,8 @@ class JSFunction extends JS implements ByteCodes, Tokens, Task {
                 int[] jmps = (int[]) arg[i];
                 sb.append(" catch: ").append(jmps[0] < 0 ? "No catch block" : ""+(i+jmps[0]));
                 sb.append(" finally: ").append(jmps[1] < 0 ? "No finally block" : ""+(i+jmps[1]));
+            } else if(op[i] == NEWFUNCTION) {
+                sb.append(((JSFunction) arg[i]).dump(prefix + "     "));
             }
             sb.append("\n");
         }