From c08e9c793b138da5b373d6cb66a2eb599ea77397 Mon Sep 17 00:00:00 2001 From: mryouse Date: Thu, 25 May 2023 00:30:03 +0000 Subject: make debug toggle-able --- compiler.d | 4 +++- dbg.d | 3 +++ vm.d | 34 ++++++++++++++++++---------------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/compiler.d b/compiler.d index 119414c..3b684d4 100644 --- a/compiler.d +++ b/compiler.d @@ -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; } diff --git a/dbg.d b/dbg.d index 5a98264..19e92b1 100644 --- a/dbg.d +++ b/dbg.d @@ -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: diff --git a/vm.d b/vm.d index d2968a3..7e91de1 100644 --- a/vm.d +++ b/vm.d @@ -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: -- cgit v1.2.3