From ab7d7c155fb1bec5eed8f97462fbb656ea27dbb5 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 22 Oct 2021 11:24:09 +0200 Subject: Add VM structure and fix AdressSanitizer bugs --- src/bytecode/debug.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/bytecode/debug.h') diff --git a/src/bytecode/debug.h b/src/bytecode/debug.h index ceedfbf..c891b77 100644 --- a/src/bytecode/debug.h +++ b/src/bytecode/debug.h @@ -3,47 +3,47 @@ #include "chunk.h" -void disassemble_chunk(Chunk chunk, const char *name); -size_t disassemble_instruction(Chunk chunk, size_t offset); +void disassemble_chunk(Chunk *chunk, const char *name); +size_t disassemble_instruction(Chunk *chunk, size_t offset); void -disassemble_chunk(Chunk chunk, const char *name) { +disassemble_chunk(Chunk *chunk, const char *name) { printf("== %s ==\n", name); printf("code:\n"); size_t offset = 0; - while (offset < array_size(chunk.code)) { + while (offset < array_size(chunk->code)) { offset = disassemble_instruction(chunk, offset); } printf("\nconstants:\n"); offset = 0; - while (offset < array_size(chunk.constants)) { + while (offset < array_size(chunk->constants)) { printf("\t%04ld -> ", offset); - display(chunk.constants[offset]); + display(chunk->constants[offset]); printf("\n"); offset++; } } size_t -disassemble_instruction(Chunk chunk, size_t offset) { +disassemble_instruction(Chunk *chunk, size_t offset) { printf("\t%04ld ", offset); if (offset > 0 - && chunk.lines[offset].line == chunk.lines[offset - 1].line - && chunk.lines[offset].col == chunk.lines[offset - 1].col) { + && chunk->lines[offset].line == chunk->lines[offset - 1].line + && chunk->lines[offset].col == chunk->lines[offset - 1].col) { printf("%4s|%-4s ", " ", " "); } else { - printf("%4ld:%-4ld ", chunk.lines[offset].line, chunk.lines[offset].col); + printf("%4ld:%-4ld ", chunk->lines[offset].line, chunk->lines[offset].col); } - u8 instruction = chunk.code[offset]; + u8 instruction = chunk->code[offset]; switch (instruction) { case OP_RETURN: { printf("OP_RETURN\n"); return offset + 1; } break; case OP_CONSTANT: { - u8 constant = chunk.code[offset + 1]; + u8 constant = chunk->code[offset + 1]; printf("%-16s %4d (", "OP_CONSTANT", constant); - display(chunk.constants[constant]); + display(chunk->constants[constant]); printf(")\n"); return offset + 2; } break; -- cgit v1.2.1