diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-05-13 13:38:03 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-05-13 13:38:03 -0400 |
| commit | 86a352c45bb654951529660b2e6cbbfa72773170 (patch) | |
| tree | e7a4f5760918ec54bf247e9c23dc7e29d1d7c459 /test/cases/new_stack_call.zig | |
| parent | 4787127cf6418f7a819c9d6f07a9046d76e0de65 (diff) | |
| parent | 05ecb49bac30041459ae08764edd2aced23d10eb (diff) | |
| download | zig-86a352c45bb654951529660b2e6cbbfa72773170.tar.gz zig-86a352c45bb654951529660b2e6cbbfa72773170.zip | |
Merge branch 'master' into pointer-reform
Diffstat (limited to 'test/cases/new_stack_call.zig')
| -rw-r--r-- | test/cases/new_stack_call.zig | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/cases/new_stack_call.zig b/test/cases/new_stack_call.zig new file mode 100644 index 0000000000..5912550d54 --- /dev/null +++ b/test/cases/new_stack_call.zig @@ -0,0 +1,26 @@ +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); +} |
