diff --git a/src/server/debug.ts b/src/server/debug.ts new file mode 100644 index 0000000..90f99c0 --- /dev/null +++ b/src/server/debug.ts @@ -0,0 +1,23 @@ +let heaps = []; +let stacks = []; + +export const appendHeap = heap => { + heaps.push(heap); +}; + +export const appendStack = stack => { + stacks.push(stack); +}; + +export const resetHeapsAndStacks = () => { + heaps = []; + stacks = []; +}; + +export const getHeaps = () => { + return heaps; +}; + +export const getStacks = () => { + return stacks; +}; diff --git a/src/server/runOogaLang.ts b/src/server/runOogaLang.ts index 3f79b7d..6d541a8 100644 --- a/src/server/runOogaLang.ts +++ b/src/server/runOogaLang.ts @@ -3,6 +3,7 @@ import { run } from '../vm/oogavm-machine.js'; import debug from 'debug'; import { readFileSync } from 'fs'; import { prepare_and_compile } from '../vm/oogavm-toolchain.js'; +import { getHeaps, getStacks, resetHeapsAndStacks } from './debug.js'; const log = debug('ooga:runOogaLang'); const standardSource = readFileSync('std/ooga-std.ooga', 'utf8'); @@ -27,8 +28,7 @@ export function runOogaLangCode( code: string ): Promise<{ capturedOutput: string; heaps: any[]; stacks: any[] }> { log(code); - heaps = []; - stacks = []; + resetHeapsAndStacks(); return new Promise((resolve, reject) => { // Redirect console.log to capture output const originalConsoleLog = console.log; @@ -48,8 +48,8 @@ export function runOogaLangCode( capturedOutput += 'Output: ' + value + '\n'; // Restore console.log console.log = originalConsoleLog; - console.log(heaps); - console.log(stacks); + const heaps = getHeaps(); + const stacks = getStacks(); // Resolve the promise with the captured output resolve({ capturedOutput, heaps, stacks }); } catch (error: any) { diff --git a/src/vm/oogavm-machine.ts b/src/vm/oogavm-machine.ts index 7f72f8e..53634db 100644 --- a/src/vm/oogavm-machine.ts +++ b/src/vm/oogavm-machine.ts @@ -74,9 +74,8 @@ import { Undefined, } from './oogavm-heap.js'; import { OogaError } from './oogavm-errors.js'; -import { stringify } from 'querystring'; import { unparse } from '../utils/utils.js'; -import { appendHeap, appendStack, heaps, stacks } from '../server/runOogaLang.js'; +import { appendHeap, appendStack } from '../server/debug.js'; const log = debug('ooga:vm');