diff options
| -rw-r--r-- | compiler.d | 4 | ||||
| -rw-r--r-- | dbg.d | 3 | ||||
| -rw-r--r-- | vm.d | 34 | 
3 files changed, 24 insertions, 17 deletions
| @@ -716,7 +716,9 @@ class Compiler {      Function finish() {          this.func.chunk.writeOp(OpCode.OP_RETURN, current.line); -        disassembleChunk(this.func.chunk, to!string(func)); +        if (DEBUG) { +            disassembleChunk(this.func.chunk, to!string(func)); +        }          return this.func;      } @@ -8,6 +8,9 @@ import parser;  //import dbg;  //import value; +bool DEBUG = true; + +  void printForm(Form f, string prefix = "") {      switch (f.type) {          case FormType.EOF: @@ -224,22 +224,25 @@ class VM {      InterpretResult run() {          writeln("== VM running ==");          while (true) { -            writeln("          Stacks:"); -            write("          A> "); -            for (int i = 0; i < aTop; i++) { -                writef("[ %s ]", printableValue(aStack[i])); +            if (DEBUG) { +                writeln("          Stacks:"); +                write("          A> "); +                for (int i = 0; i < aTop; i++) { +                    writef("[ %s ]", printableValue(aStack[i])); +                } +                write("\n          B> "); +                for (int i = 0; i < bTop; i++) { +                    //writef("[ %s ]", printableValue(bStack[i])); +                    writef("[ %s ]", printableValue(current.slots[i])); +                } + +                write("\n constants>  "); +                for (int i = 0; i < current.func.chunk.constants.length; i++) { +                    writef("[ %s ]", printableValue(current.func.chunk.constants[i])); +                } +                writeln("\n--"); +                disassemble(current.func.chunk, current.ip);              } -            write("\n          B> "); -            for (int i = 0; i < bTop; i++) { -                //writef("[ %s ]", printableValue(bStack[i])); -                writef("[ %s ]", printableValue(current.slots[i])); -            } - -            write("\n constants>  "); -            for (int i = 0; i < current.func.chunk.constants.length; i++) { -                writef("[ %s ]", printableValue(current.func.chunk.constants[i])); -            } -            writeln("\n--");              /*              write(" globals >"); @@ -250,7 +253,6 @@ class VM {              writeln("\n--");              */ -            disassemble(current.func.chunk, current.ip);              ubyte inst;              switch (inst = this.readByte()) {                  case OpCode.OP_DEF_GLOBAL: | 
