test: measure size of my Value compared to PUC Lua

(mine's bigger sadly, like 40 bytes)
main
_ 2023-09-26 14:00:11 -05:00
parent bc15781457
commit f29eaac1d0
1 changed files with 30 additions and 0 deletions

View File

@ -191,3 +191,33 @@ fn is_93 () {
assert_eq! (actual, expected);
}
}
#[test]
fn value_size () {
// Per https://www.lua.org/doc/jucs05.pdf,
// "The Implementation of Lua 5.0",
//
// Lua's tagged union values are 12-16 bytes on a 32-bit system
// with 64-bit floats
//
// It is very nice if LunarWaveVM is the same or better.
// There is some exploratory things in this test, too
use std::{
mem::size_of,
rc::Rc,
};
assert! (size_of::<Box <()>> () <= 8);
assert! (size_of::<std::rc::Rc <()>> () <= 8);
pub enum Value {
Nil,
Boolean (bool),
Float (f64),
String (Rc <String>),
}
assert_eq! (size_of::<Value> (), 16);
assert_eq! (size_of::<crate::state::Value> (), 16);
}