diff --git a/src/definition.zig b/src/definition.zig index c78dcdc..211402c 100644 --- a/src/definition.zig +++ b/src/definition.zig @@ -284,13 +284,13 @@ pub const Limits = struct { // 0x06 n:u64 ⇒ i64, {min n, max ?}, 1 ;; from threads proposal // 0x07 n:u64 m:u64 ⇒ i64, {min n, max m}, 1 ;; from threads proposal - const k_max_bytes_i32 = k_max_pages_i32 * MemoryDefinition.k_page_size; - const k_max_pages_i32 = std.math.powi(usize, 2, 16) catch unreachable; + pub const k_max_bytes_i32 = k_max_pages_i32 * MemoryDefinition.k_page_size; + pub const k_max_pages_i32 = std.math.powi(usize, 2, 16) catch unreachable; // Technically the max bytes should be maxInt(u64), but that is wayyy more memory than PCs have available and // is just a waste of virtual address space in the implementation. Instead we'll set the upper limit to 128GB. - const k_max_bytes_i64 = (1024 * 1024 * 1024 * 128); - const k_max_pages_i64 = k_max_bytes_i64 / MemoryDefinition.k_page_size; + pub const k_max_bytes_i64 = (1024 * 1024 * 1024 * 128); + pub const k_max_pages_i64 = k_max_bytes_i64 / MemoryDefinition.k_page_size; fn decode(reader: anytype) !Limits { const limit_type: u8 = try reader.readByte(); diff --git a/src/tests.zig b/src/tests.zig index 5fd8b71..1901663 100644 --- a/src/tests.zig +++ b/src/tests.zig @@ -32,12 +32,26 @@ test "MemoryInstance.init" { const limits = Limits{ .min = 0, .max = null, - .limit_type = 0, + .limit_type = 0, // i32 index type + }; + var memory = MemoryInstance.init(limits, null); + defer memory.deinit(); + try expectEqual(memory.limits.min, 0); + try expectEqual(memory.limits.max, Limits.k_max_pages_i32); + try expectEqual(memory.size(), 0); + try expectEqual(memory.mem.Internal.items.len, 0); + } + + { + const limits = Limits{ + .min = 0, + .max = null, + .limit_type = 4, // i64 index type }; var memory = MemoryInstance.init(limits, null); defer memory.deinit(); try expectEqual(memory.limits.min, 0); - try expectEqual(memory.limits.max, MemoryInstance.k_max_pages); + try expectEqual(memory.limits.max, Limits.k_max_pages_i64); try expectEqual(memory.size(), 0); try expectEqual(memory.mem.Internal.items.len, 0); } @@ -70,8 +84,8 @@ test "MemoryInstance.Internal.grow" { try expectEqual(memory.size(), 1); try expectEqual(memory.grow(1), true); try expectEqual(memory.size(), 2); - try expectEqual(memory.grow(MemoryInstance.k_max_pages - memory.size()), true); - try expectEqual(memory.size(), MemoryInstance.k_max_pages); + try expectEqual(memory.grow(Limits.k_max_pages_i32 - memory.size()), true); + try expectEqual(memory.size(), Limits.k_max_pages_i32); } { @@ -104,8 +118,8 @@ test "MemoryInstance.Internal.growAbsolute" { try expectEqual(memory.size(), 1); try expectEqual(memory.growAbsolute(5), true); try expectEqual(memory.size(), 5); - try expectEqual(memory.growAbsolute(MemoryInstance.k_max_pages), true); - try expectEqual(memory.size(), MemoryInstance.k_max_pages); + try expectEqual(memory.growAbsolute(Limits.k_max_pages_i32), true); + try expectEqual(memory.size(), Limits.k_max_pages_i32); } {