diff options
Diffstat (limited to 'users/tazjin')
-rw-r--r-- | users/tazjin/rlox/src/bytecode/chunk.rs | 7 | ||||
-rw-r--r-- | users/tazjin/rlox/src/bytecode/compiler/mod.rs | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/users/tazjin/rlox/src/bytecode/chunk.rs b/users/tazjin/rlox/src/bytecode/chunk.rs index 649aafcfd82c..b2a7c7b6a2c1 100644 --- a/users/tazjin/rlox/src/bytecode/chunk.rs +++ b/users/tazjin/rlox/src/bytecode/chunk.rs @@ -84,3 +84,10 @@ pub fn disassemble_instruction(chunk: &Chunk, offset: usize) { op => println!("{:?}", op), } } + +#[cfg(feature = "disassemble")] +pub fn disassemble_chunk(chunk: &Chunk) { + for (idx, _) in chunk.code.iter().enumerate() { + disassemble_instruction(chunk, idx); + } +} diff --git a/users/tazjin/rlox/src/bytecode/compiler/mod.rs b/users/tazjin/rlox/src/bytecode/compiler/mod.rs index 58a5c1b98a02..547c1ab18fd7 100644 --- a/users/tazjin/rlox/src/bytecode/compiler/mod.rs +++ b/users/tazjin/rlox/src/bytecode/compiler/mod.rs @@ -219,6 +219,10 @@ impl<T: Iterator<Item = Token>> Compiler<T> { fn end_compiler(&mut self) -> LoxResult<()> { self.emit_op(OpCode::OpReturn); + + #[cfg(feature = "disassemble")] + chunk::disassemble_chunk(&self.chunk); + Ok(()) } |