Skip to content

Commit 3fddfb1

Browse files
committed
examples: implement memory2
1 parent f995d7f commit 3fddfb1

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

examples/memory2.zig

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
const std = @import("std");
2+
const wasmer = @import("wasmer");
3+
const assert = std.debug.assert;
4+
5+
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
6+
const allocator = gpa.allocator();
7+
8+
pub fn main() !void {
9+
std.log.info("Initializing...", .{});
10+
11+
const engine = try wasmer.Engine.init();
12+
defer engine.deinit();
13+
const store = try wasmer.Store.init(engine);
14+
defer store.deinit();
15+
16+
const memory_type_1 = try wasmer.MemoryType.init(.{ .min = 0, .max = 0x7FFFFFFF });
17+
defer memory_type_1.deinit();
18+
_ = wasmer.Memory.init(store, memory_type_1) catch {
19+
const err_msg = try wasmer.lastError(std.heap.c_allocator);
20+
defer std.heap.c_allocator.free(err_msg);
21+
22+
std.log.err("{s}", .{err_msg});
23+
};
24+
25+
const memory_type_2 = try wasmer.MemoryType.init(.{ .min = 15, .max = 25 });
26+
defer memory_type_2.deinit();
27+
const memory_2 = try wasmer.Memory.init(store, memory_type_2);
28+
defer memory_2.deinit();
29+
30+
const memory_type_3 = try wasmer.MemoryType.init(.{ .min = 15, .max = 0xFFFFFFFF });
31+
defer memory_type_3.deinit();
32+
const memory_3 = try wasmer.Memory.init(store, memory_type_3);
33+
defer memory_3.deinit();
34+
35+
std.log.info("Memory size: {any}", .{memory_3.size()});
36+
37+
// Error: the minimum requested memory is greater than the maximum allowed memory
38+
const memory_type_4 = try wasmer.MemoryType.init(.{ .min = 0x7FFFFFFF, .max = 0x7FFFFFFF });
39+
defer memory_type_4.deinit();
40+
_ = wasmer.Memory.init(store, memory_type_4) catch {
41+
const err_msg = try wasmer.lastError(std.heap.c_allocator);
42+
defer std.heap.c_allocator.free(err_msg);
43+
44+
std.log.err("{s}", .{err_msg});
45+
};
46+
47+
// Error: the minimum requested memory is greater than the maximum allowed memory
48+
const memory_type_5 = try wasmer.MemoryType.init(.{ .min = 0x7FFFFFFF, .max = 0x0FFFFFFF });
49+
defer memory_type_5.deinit();
50+
_ = wasmer.Memory.init(store, memory_type_5) catch {
51+
const err_msg = try wasmer.lastError(std.heap.c_allocator);
52+
defer std.heap.c_allocator.free(err_msg);
53+
54+
std.log.err("{s}", .{err_msg});
55+
};
56+
57+
// Error: the memory is invalid because the maximum is less than the minium
58+
const memory_type_6 = try wasmer.MemoryType.init(.{ .min = 15, .max = 10 });
59+
defer memory_type_6.deinit();
60+
_ = wasmer.Memory.init(store, memory_type_6) catch {
61+
const err_msg = try wasmer.lastError(std.heap.c_allocator);
62+
defer std.heap.c_allocator.free(err_msg);
63+
64+
std.log.err("{s}", .{err_msg});
65+
};
66+
67+
// Error: the minimum requested memory is greater than the maximum allowed memory
68+
const memory_type_7 = try wasmer.MemoryType.init(.{ .min = 0x7FFFFFFF, .max = 10 });
69+
defer memory_type_7.deinit();
70+
_ = wasmer.Memory.init(store, memory_type_7) catch {
71+
const err_msg = try wasmer.lastError(std.heap.c_allocator);
72+
defer std.heap.c_allocator.free(err_msg);
73+
74+
std.log.err("{s}", .{err_msg});
75+
};
76+
77+
std.log.info("Done.", .{});
78+
}

0 commit comments

Comments
 (0)