feat(tazjin/rlox): Support trivial literals in bytecode compiler

Adds support for true, false & nil. These each come with a new
separate opcode and are pushed directly on the stack.

Change-Id: I405b5b09496dcf99d514d3411c083e0834377167
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2571
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2021-02-28 15:15:46 +02:00 committed by tazjin
parent 127ef98486
commit 47ffa80711
5 changed files with 52 additions and 6 deletions

View file

@ -72,6 +72,10 @@ impl VM {
self.push(c);
}
OpCode::OpNil => self.push(Value::Nil),
OpCode::OpTrue => self.push(Value::Bool(true)),
OpCode::OpFalse => self.push(Value::Bool(false)),
OpCode::OpNegate => {
let v = self.pop();
with_type!(