aboutsummaryrefslogtreecommitdiff
path: root/test/cases/new_stack_call.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-05-13 13:38:03 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-05-13 13:38:03 -0400
commit86a352c45bb654951529660b2e6cbbfa72773170 (patch)
treee7a4f5760918ec54bf247e9c23dc7e29d1d7c459 /test/cases/new_stack_call.zig
parent4787127cf6418f7a819c9d6f07a9046d76e0de65 (diff)
parent05ecb49bac30041459ae08764edd2aced23d10eb (diff)
downloadzig-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.zig26
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);
+}