27 lines
605 B
Zig
27 lines
605 B
Zig
const std = @import("std");
|
|
const assert = std.debug.assert;
|
|
|
|
var new_stack_bytes: [1024]u8 = undefined;
|
|
|
|
test "calling a function with a new stack" {
|
|
const arg = 1234;
|
|
|
|
const a = @newStackCall(new_stack_bytes[0..512], targetFunction, arg);
|
|
const b = @newStackCall(new_stack_bytes[512..], targetFunction, arg);
|
|
_ = targetFunction(arg);
|
|
|
|
assert(arg == 1234);
|
|
assert(a < b);
|
|
}
|
|
|
|
fn targetFunction(x: i32) usize {
|
|
assert(x == 1234);
|
|
|
|
var local_variable: i32 = 42;
|
|
const ptr = &local_variable;
|
|
ptr.* += 1;
|
|
|
|
assert(local_variable == 43);
|
|
return @ptrToInt(ptr);
|
|
}
|