Add basic blocks and implementation of flattening thunks -> basic blocks

* Basic are a more linear way of representing code. Thunks beget basic
  blocks, which beget vectors of instructions.
* Basic blocks are also being flattened into a vector of instructions
  (hopefully, no tests done yet)
* OH yeah locals can be collected too (but currently are not being
  collected in the compiler, that should come soon)

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-09-16 17:18:31 -07:00
parent ef38680fe5
commit 582b3a4b73
14 changed files with 540 additions and 124 deletions

View File

@@ -81,8 +81,6 @@ impl<'c> Vm<'c> {
/// Set the next program counter value.
///
/// This may cause the running program to crash. Handle with care.
///
/// TODO : consider making this `unsafe`? Is that appropriate in this context?
pub fn set_pc(&mut self, pc: usize) {
self.pc = pc;
}