authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-23 01:29:48-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-23 01:29:48-04:00
log036cc48a829ff4625394995fbe22b7a884370103
tree9776349a355575ffc75d7503ca7ebfe3469ba49c
parent5e58aa4884995476179f5e74014c16f771e61ba3
parent9153b17c922e3166a824d300781ca4e6da015787
signaturelock-open Commit is signed but in an unrecognized format.

Merge remote-tracking branch 'origin/master' into copy-elision-3


30 files changed, 65 insertions(+), 187 deletions(-)

CMakeLists.txt+7-9
......@@ -6,7 +6,7 @@ if(NOT CMAKE_BUILD_TYPE)
66endif()
77
88if(NOT CMAKE_INSTALL_PREFIX)
9 set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}" CACHE STRING
9 set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}" CACHE STRING
1010 "Directory to install zig to" FORCE)
1111endif()
1212
......@@ -6595,7 +6595,7 @@ set(ZIG_LIBCXX_FILES
65956595
65966596if(MSVC)
65976597 set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
6598 if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
6598 if(IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
65996599 set(ZIG_DIA_GUIDS_LIB "${MSVC_DIA_SDK_DIR}/lib/amd64/diaguids.lib")
66006600 string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_DIA_GUIDS_LIB_ESCAPED "${ZIG_DIA_GUIDS_LIB}")
66016601 endif()
......@@ -6634,20 +6634,18 @@ set(EXE_CFLAGS "-std=c++11")
66346634if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
66356635 if(MSVC)
66366636 set(EXE_CFLAGS "${EXE_CFLAGS} /w")
6637 elseif(MINGW)
6638 set(EXE_CFLAGS "${EXE_CFLAGS} -Wall -Werror -Wno-error=format= -Wno-error=format -Wno-error=format-extra-args")
66396637 else()
66406638 set(EXE_CFLAGS "${EXE_CFLAGS} -Werror -Wall")
66416639 endif()
66426640endif()
66436641
66446642if(MSVC)
6645 set(EXE_CFLAGS "${EXE_CFLAGS}")
6643 set(EXE_CFLAGS "${EXE_CFLAGS}")
66466644else()
6647 set(EXE_CFLAGS "${EXE_CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=strict-prototypes -Werror=old-style-definition -Werror=type-limits -Wno-missing-braces")
6648 if(MINGW)
6649 set(EXE_CFLAGS "${EXE_CFLAGS} -D__USE_MINGW_ANSI_STDIO -Wno-pedantic-ms-format")
6650 endif()
6645 set(EXE_CFLAGS "${EXE_CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=strict-prototypes -Werror=old-style-definition -Werror=type-limits -Wno-missing-braces")
6646 if(MINGW)
6647 set(EXE_CFLAGS "${EXE_CFLAGS} -Wno-format")
6648 endif()
66516649endif()
66526650
66536651set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
doc/docgen.zig+1-4
......@@ -16,10 +16,7 @@ const tmp_dir_name = "docgen_tmp";
1616const test_out_path = tmp_dir_name ++ fs.path.sep_str ++ "test" ++ exe_ext;
1717
1818pub fn main() !void {
19 var direct_allocator = std.heap.DirectAllocator.init();
20 defer direct_allocator.deinit();
21
22 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
19 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
2320 defer arena.deinit();
2421
2522 const allocator = &arena.allocator;
doc/langref.html.in+1-4
......@@ -8505,10 +8505,7 @@ fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 {
85058505const std = @import("std");
85068506
85078507pub fn main() !void {
8508 var direct_allocator = std.heap.DirectAllocator.init();
8509 defer direct_allocator.deinit();
8510
8511 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
8508 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
85128509 defer arena.deinit();
85138510
85148511 const allocator = &arena.allocator;
libc/process_headers.zig+1-2
......@@ -707,8 +707,7 @@ const TargetToHash = std.HashMap(DestTarget, []const u8, DestTarget.hash, DestTa
707707const PathTable = std.AutoHashMap([]const u8, *TargetToHash);
708708
709709pub fn main() !void {
710 var direct_allocator = std.heap.DirectAllocator.init();
711 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
710 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
712711 const allocator = &arena.allocator;
713712 const args = try std.os.argsAlloc(allocator);
714713 var search_paths = std.ArrayList([]const u8).init(allocator);
src-self-hosted/dep_tokenizer.zig+2-3
......@@ -837,12 +837,11 @@ test "error prereq - continuation expecting end-of-line" {
837837
838838// - tokenize input, emit textual representation, and compare to expect
839839fn depTokenizer(input: []const u8, expect: []const u8) !void {
840 var direct_allocator = std.heap.DirectAllocator.init();
841 var arena_allocator = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
840 var arena_allocator = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
842841 const arena = &arena_allocator.allocator;
843842 defer arena_allocator.deinit();
844843
845 var it = Tokenizer.init(&direct_allocator.allocator, input);
844 var it = Tokenizer.init(arena, input);
846845 var buffer = try std.Buffer.initSize(arena, 0);
847846 var i: usize = 0;
848847 while (true) {
src/os.cpp+1-1
......@@ -128,7 +128,7 @@ static void os_spawn_process_posix(ZigList<const char *> &args, Termination *ter
128128
129129static void os_windows_create_command_line(Buf *command_line, ZigList<const char *> &args) {
130130 buf_resize(command_line, 0);
131 char *prefix = "\"";
131 const char *prefix = "\"";
132132 for (size_t arg_i = 0; arg_i < args.length; arg_i += 1) {
133133 const char *arg = args.at(arg_i);
134134 buf_append_str(command_line, prefix);
std/atomic/queue.zig+2-5
......@@ -152,11 +152,8 @@ const puts_per_thread = 500;
152152const put_thread_count = 3;
153153
154154test "std.atomic.Queue" {
155 var direct_allocator = std.heap.DirectAllocator.init();
156 defer direct_allocator.deinit();
157
158 var plenty_of_memory = try direct_allocator.allocator.alloc(u8, 300 * 1024);
159 defer direct_allocator.allocator.free(plenty_of_memory);
155 var plenty_of_memory = try std.heap.direct_allocator.alloc(u8, 300 * 1024);
156 defer std.heap.direct_allocator.free(plenty_of_memory);
160157
161158 var fixed_buffer_allocator = std.heap.ThreadSafeFixedBufferAllocator.init(plenty_of_memory);
162159 var a = &fixed_buffer_allocator.allocator;
std/atomic/stack.zig+2-5
......@@ -86,11 +86,8 @@ const puts_per_thread = 500;
8686const put_thread_count = 3;
8787
8888test "std.atomic.stack" {
89 var direct_allocator = std.heap.DirectAllocator.init();
90 defer direct_allocator.deinit();
91
92 var plenty_of_memory = try direct_allocator.allocator.alloc(u8, 300 * 1024);
93 defer direct_allocator.allocator.free(plenty_of_memory);
89 var plenty_of_memory = try std.heap.direct_allocator.alloc(u8, 300 * 1024);
90 defer std.heap.direct_allocator.free(plenty_of_memory);
9491
9592 var fixed_buffer_allocator = std.heap.ThreadSafeFixedBufferAllocator.init(plenty_of_memory);
9693 var a = &fixed_buffer_allocator.allocator;
std/buf_map.zig+1-4
......@@ -83,10 +83,7 @@ pub const BufMap = struct {
8383};
8484
8585test "BufMap" {
86 var direct_allocator = std.heap.DirectAllocator.init();
87 defer direct_allocator.deinit();
88
89 var bufmap = BufMap.init(&direct_allocator.allocator);
86 var bufmap = BufMap.init(std.heap.direct_allocator);
9087 defer bufmap.deinit();
9188
9289 try bufmap.set("x", "1");
std/buf_set.zig+1-4
......@@ -65,10 +65,7 @@ pub const BufSet = struct {
6565};
6666
6767test "BufSet" {
68 var direct_allocator = std.heap.DirectAllocator.init();
69 defer direct_allocator.deinit();
70
71 var bufset = BufSet.init(&direct_allocator.allocator);
68 var bufset = BufSet.init(std.heap.direct_allocator);
7269 defer bufset.deinit();
7370
7471 try bufset.put("x");
std/debug.zig+1-3
......@@ -2283,13 +2283,11 @@ var global_allocator_mem: [100 * 1024]u8 = undefined;
22832283
22842284/// TODO multithreaded awareness
22852285var debug_info_allocator: ?*mem.Allocator = null;
2286var debug_info_direct_allocator: std.heap.DirectAllocator = undefined;
22872286var debug_info_arena_allocator: std.heap.ArenaAllocator = undefined;
22882287fn getDebugInfoAllocator() *mem.Allocator {
22892288 if (debug_info_allocator) |a| return a;
22902289
2291 debug_info_direct_allocator = std.heap.DirectAllocator.init();
2292 debug_info_arena_allocator = std.heap.ArenaAllocator.init(&debug_info_direct_allocator.allocator);
2290 debug_info_arena_allocator = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
22932291 debug_info_allocator = &debug_info_arena_allocator.allocator;
22942292 return &debug_info_arena_allocator.allocator;
22952293}
std/event/channel.zig+1-4
......@@ -324,10 +324,7 @@ test "std.event.Channel" {
324324 // https://github.com/ziglang/zig/issues/1908
325325 if (builtin.single_threaded) return error.SkipZigTest;
326326
327 var da = std.heap.DirectAllocator.init();
328 defer da.deinit();
329
330 const allocator = &da.allocator;
327 const allocator = std.heap.direct_allocator;
331328
332329 var loop: Loop = undefined;
333330 // TODO make a multi threaded test
std/event/fs.zig+1-4
......@@ -1310,10 +1310,7 @@ const test_tmp_dir = "std_event_fs_test";
13101310// TODO this test is disabled until the coroutine rewrite is finished.
13111311//test "write a file, watch it, write it again" {
13121312// return error.SkipZigTest;
1313// var da = std.heap.DirectAllocator.init();
1314// defer da.deinit();
1315//
1316// const allocator = &da.allocator;
1313// const allocator = std.heap.direct_allocator;
13171314//
13181315// // TODO move this into event loop too
13191316// try os.makePath(allocator, test_tmp_dir);
std/event/future.zig+1-4
......@@ -88,10 +88,7 @@ test "std.event.Future" {
8888 // https://github.com/ziglang/zig/issues/1908
8989 if (builtin.single_threaded or builtin.os != builtin.Os.linux) return error.SkipZigTest;
9090
91 var da = std.heap.DirectAllocator.init();
92 defer da.deinit();
93
94 const allocator = &da.allocator;
91 const allocator = std.heap.direct_allocator;
9592
9693 var loop: Loop = undefined;
9794 try loop.initMultiThreaded(allocator);
std/event/group.zig+1-4
......@@ -125,10 +125,7 @@ test "std.event.Group" {
125125 // https://github.com/ziglang/zig/issues/1908
126126 if (builtin.single_threaded) return error.SkipZigTest;
127127
128 var da = std.heap.DirectAllocator.init();
129 defer da.deinit();
130
131 const allocator = &da.allocator;
128 const allocator = std.heap.direct_allocator;
132129
133130 var loop: Loop = undefined;
134131 try loop.initMultiThreaded(allocator);
std/event/lock.zig+1-4
......@@ -126,10 +126,7 @@ test "std.event.Lock" {
126126 // https://github.com/ziglang/zig/issues/2377
127127 //if (true) return error.SkipZigTest;
128128
129 var da = std.heap.DirectAllocator.init();
130 defer da.deinit();
131
132 const allocator = &da.allocator;
129 const allocator = std.heap.direct_allocator;
133130
134131 var loop: Loop = undefined;
135132 try loop.initMultiThreaded(allocator);
std/event/loop.zig+2-8
......@@ -866,10 +866,7 @@ test "std.event.Loop - basic" {
866866 // https://github.com/ziglang/zig/issues/1908
867867 if (builtin.single_threaded or builtin.os != builtin.Os.linux) return error.SkipZigTest;
868868
869 var da = std.heap.DirectAllocator.init();
870 defer da.deinit();
871
872 const allocator = &da.allocator;
869 const allocator = std.heap.direct_allocator;
873870
874871 var loop: Loop = undefined;
875872 try loop.initMultiThreaded(allocator);
......@@ -882,10 +879,7 @@ test "std.event.Loop - call" {
882879 // https://github.com/ziglang/zig/issues/1908
883880 if (builtin.single_threaded or builtin.os != builtin.Os.linux) return error.SkipZigTest;
884881
885 var da = std.heap.DirectAllocator.init();
886 defer da.deinit();
887
888 const allocator = &da.allocator;
882 const allocator = std.heap.direct_allocator;
889883
890884 var loop: Loop = undefined;
891885 try loop.initMultiThreaded(allocator);
std/event/rwlock.zig+1-4
......@@ -215,10 +215,7 @@ test "std.event.RwLock" {
215215 // https://github.com/ziglang/zig/issues/2377
216216 if (true) return error.SkipZigTest;
217217
218 var da = std.heap.DirectAllocator.init();
219 defer da.deinit();
220
221 const allocator = &da.allocator;
218 const allocator = std.heap.direct_allocator;
222219
223220 var loop: Loop = undefined;
224221 try loop.initMultiThreaded(allocator);
std/hash_map.zig+3-12
......@@ -397,10 +397,7 @@ pub fn HashMap(comptime K: type, comptime V: type, comptime hash: fn (key: K) u3
397397}
398398
399399test "basic hash map usage" {
400 var direct_allocator = std.heap.DirectAllocator.init();
401 defer direct_allocator.deinit();
402
403 var map = AutoHashMap(i32, i32).init(&direct_allocator.allocator);
400 var map = AutoHashMap(i32, i32).init(std.heap.direct_allocator);
404401 defer map.deinit();
405402
406403 testing.expect((try map.put(1, 11)) == null);
......@@ -444,10 +441,7 @@ test "basic hash map usage" {
444441}
445442
446443test "iterator hash map" {
447 var direct_allocator = std.heap.DirectAllocator.init();
448 defer direct_allocator.deinit();
449
450 var reset_map = AutoHashMap(i32, i32).init(&direct_allocator.allocator);
444 var reset_map = AutoHashMap(i32, i32).init(std.heap.direct_allocator);
451445 defer reset_map.deinit();
452446
453447 try reset_map.putNoClobber(1, 11);
......@@ -491,10 +485,7 @@ test "iterator hash map" {
491485}
492486
493487test "ensure capacity" {
494 var direct_allocator = std.heap.DirectAllocator.init();
495 defer direct_allocator.deinit();
496
497 var map = AutoHashMap(i32, i32).init(&direct_allocator.allocator);
488 var map = AutoHashMap(i32, i32).init(std.heap.direct_allocator);
498489 defer map.deinit();
499490
500491 try map.ensureCapacity(20);
std/heap.zig+8-22
......@@ -31,22 +31,14 @@ fn cShrink(self: *Allocator, old_mem: []u8, old_align: u29, new_size: usize, new
3131
3232/// This allocator makes a syscall directly for every allocation and free.
3333/// Thread-safe and lock-free.
34pub const DirectAllocator = struct {
35 allocator: Allocator,
36
37 pub fn init() DirectAllocator {
38 return DirectAllocator{
39 .allocator = Allocator{
40 .reallocFn = realloc,
41 .shrinkFn = shrink,
42 },
43 };
44 }
45
46 pub fn deinit(self: *DirectAllocator) void {}
34pub const direct_allocator = &direct_allocator_state;
35var direct_allocator_state = Allocator{
36 .reallocFn = DirectAllocator.realloc,
37 .shrinkFn = DirectAllocator.shrink,
38};
4739
40const DirectAllocator = struct {
4841 fn alloc(allocator: *Allocator, n: usize, alignment: u29) error{OutOfMemory}![]u8 {
49 const self = @fieldParentPtr(DirectAllocator, "allocator", allocator);
5042 if (n == 0)
5143 return (([*]u8)(undefined))[0..0];
5244
......@@ -730,10 +722,7 @@ test "c_allocator" {
730722}
731723
732724test "DirectAllocator" {
733 var direct_allocator = DirectAllocator.init();
734 defer direct_allocator.deinit();
735
736 const allocator = &direct_allocator.allocator;
725 const allocator = direct_allocator;
737726 try testAllocator(allocator);
738727 try testAllocatorAligned(allocator, 16);
739728 try testAllocatorLargeAlignment(allocator);
......@@ -765,10 +754,7 @@ test "HeapAllocator" {
765754}
766755
767756test "ArenaAllocator" {
768 var direct_allocator = DirectAllocator.init();
769 defer direct_allocator.deinit();
770
771 var arena_allocator = ArenaAllocator.init(&direct_allocator.allocator);
757 var arena_allocator = ArenaAllocator.init(direct_allocator);
772758 defer arena_allocator.deinit();
773759
774760 try testAllocator(&arena_allocator.allocator);
std/mutex.zig+2-5
......@@ -130,11 +130,8 @@ const TestContext = struct {
130130};
131131
132132test "std.Mutex" {
133 var direct_allocator = std.heap.DirectAllocator.init();
134 defer direct_allocator.deinit();
135
136 var plenty_of_memory = try direct_allocator.allocator.alloc(u8, 300 * 1024);
137 defer direct_allocator.allocator.free(plenty_of_memory);
133 var plenty_of_memory = try std.heap.direct_allocator.alloc(u8, 300 * 1024);
134 defer std.heap.direct_allocator.free(plenty_of_memory);
138135
139136 var fixed_buffer_allocator = std.heap.ThreadSafeFixedBufferAllocator.init(plenty_of_memory);
140137 var a = &fixed_buffer_allocator.allocator;
std/packed_int_array.zig+5-8
......@@ -603,8 +603,7 @@ test "PackedInt(Array/Slice)Endian" {
603603}
604604
605605//@NOTE: Need to manually update this list as more posix os's get
606// added to DirectAllocator. Windows can be added too when DirectAllocator
607// switches to VirtualAlloc.
606// added to DirectAllocator.
608607
609608//These tests prove we aren't accidentally accessing memory past
610609// the end of the array/slice by placing it at the end of a page
......@@ -613,7 +612,7 @@ test "PackedInt(Array/Slice)Endian" {
613612// don't account for the bounds.
614613test "PackedIntArray at end of available memory" {
615614 switch (builtin.os) {
616 .linux, .macosx, .ios, .freebsd, .netbsd => {},
615 .linux, .macosx, .ios, .freebsd, .netbsd, .windows => {},
617616 else => return,
618617 }
619618 const PackedArray = PackedIntArray(u3, 8);
......@@ -623,8 +622,7 @@ test "PackedIntArray at end of available memory" {
623622 p: PackedArray,
624623 };
625624
626 var da = std.heap.DirectAllocator.init();
627 const allocator = &da.allocator;
625 const allocator = std.heap.direct_allocator;
628626
629627 var pad = try allocator.create(Padded);
630628 defer allocator.destroy(pad);
......@@ -633,13 +631,12 @@ test "PackedIntArray at end of available memory" {
633631
634632test "PackedIntSlice at end of available memory" {
635633 switch (builtin.os) {
636 .linux, .macosx, .ios, .freebsd, .netbsd => {},
634 .linux, .macosx, .ios, .freebsd, .netbsd, .windows => {},
637635 else => return,
638636 }
639637 const PackedSlice = PackedIntSlice(u11);
640638
641 var da = std.heap.DirectAllocator.init();
642 const allocator = &da.allocator;
639 const allocator = std.heap.direct_allocator;
643640
644641 var page = try allocator.alloc(u8, std.mem.page_size);
645642 defer allocator.free(page);
std/segmented_list.zig+1-3
......@@ -334,9 +334,7 @@ pub fn SegmentedList(comptime T: type, comptime prealloc_item_count: usize) type
334334}
335335
336336test "std.SegmentedList" {
337 var da = std.heap.DirectAllocator.init();
338 defer da.deinit();
339 var a = &da.allocator;
337 var a = std.heap.direct_allocator;
340338
341339 try testSegmentedList(0, a);
342340 try testSegmentedList(1, a);
std/special/build_runner.zig+1-4
......@@ -17,10 +17,7 @@ pub fn main() !void {
1717 // one shot program. We don't need to waste time freeing memory and finding places to squish
1818 // bytes into. So we free everything all at once at the very end.
1919
20 var direct_allocator = std.heap.DirectAllocator.init();
21 defer direct_allocator.deinit();
22
23 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
20 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
2421 defer arena.deinit();
2522
2623 const allocator = &arena.allocator;
std/statically_initialized_mutex.zig+2-5
......@@ -80,11 +80,8 @@ test "std.StaticallyInitializedMutex" {
8080 }
8181 };
8282
83 var direct_allocator = std.heap.DirectAllocator.init();
84 defer direct_allocator.deinit();
85
86 var plenty_of_memory = try direct_allocator.allocator.alloc(u8, 300 * 1024);
87 defer direct_allocator.allocator.free(plenty_of_memory);
83 var plenty_of_memory = try std.heap.direct_allocator.alloc(u8, 300 * 1024);
84 defer std.heap.direct_allocator.free(plenty_of_memory);
8885
8986 var fixed_buffer_allocator = std.heap.ThreadSafeFixedBufferAllocator.init(plenty_of_memory);
9087 var a = &fixed_buffer_allocator.allocator;
test/cli.zig+1-4
......@@ -8,10 +8,7 @@ const ChildProcess = std.ChildProcess;
88var a: *std.mem.Allocator = undefined;
99
1010pub fn main() !void {
11 var direct_allocator = std.heap.DirectAllocator.init();
12 defer direct_allocator.deinit();
13
14 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
11 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
1512 defer arena.deinit();
1613
1714 var arg_it = process.args();
test/stage1/behavior/cancel.zig+2-8
......@@ -5,10 +5,7 @@ var defer_f2: bool = false;
55var defer_f3: bool = false;
66
77test "cancel forwards" {
8 var da = std.heap.DirectAllocator.init();
9 defer da.deinit();
10
11 const p = async<&da.allocator> f1() catch unreachable;
8 const p = async<std.heap.direct_allocator> f1() catch unreachable;
129 cancel p;
1310 std.testing.expect(defer_f1);
1411 std.testing.expect(defer_f2);
......@@ -42,10 +39,7 @@ var defer_b3: bool = false;
4239var defer_b4: bool = false;
4340
4441test "cancel backwards" {
45 var da = std.heap.DirectAllocator.init();
46 defer da.deinit();
47
48 const p = async<&da.allocator> b1() catch unreachable;
42 const p = async<std.heap.direct_allocator> b1() catch unreachable;
4943 cancel p;
5044 std.testing.expect(defer_b1);
5145 std.testing.expect(defer_b2);
test/stage1/behavior/coroutine_await_struct.zig+1-4
......@@ -10,11 +10,8 @@ var await_a_promise: promise = undefined;
1010var await_final_result = Foo{ .x = 0 };
1111
1212test "coroutine await struct" {
13 var da = std.heap.DirectAllocator.init();
14 defer da.deinit();
15
1613 await_seq('a');
17 const p = async<&da.allocator> await_amain() catch unreachable;
14 const p = async<std.heap.direct_allocator> await_amain() catch unreachable;
1815 await_seq('f');
1916 resume await_a_promise;
2017 await_seq('i');
test/stage1/behavior/coroutines.zig+10-32
......@@ -1,14 +1,12 @@
11const std = @import("std");
22const builtin = @import("builtin");
33const expect = std.testing.expect;
4const allocator = std.heap.direct_allocator;
45
56var x: i32 = 1;
67
78test "create a coroutine and cancel it" {
8 var da = std.heap.DirectAllocator.init();
9 defer da.deinit();
10
11 const p = try async<&da.allocator> simpleAsyncFn();
9 const p = try async<allocator> simpleAsyncFn();
1210 comptime expect(@typeOf(p) == promise->void);
1311 cancel p;
1412 expect(x == 2);
......@@ -20,11 +18,8 @@ async fn simpleAsyncFn() void {
2018}
2119
2220test "coroutine suspend, resume, cancel" {
23 var da = std.heap.DirectAllocator.init();
24 defer da.deinit();
25
2621 seq('a');
27 const p = try async<&da.allocator> testAsyncSeq();
22 const p = try async<allocator> testAsyncSeq();
2823 seq('c');
2924 resume p;
3025 seq('f');
......@@ -49,10 +44,7 @@ fn seq(c: u8) void {
4944}
5045
5146test "coroutine suspend with block" {
52 var da = std.heap.DirectAllocator.init();
53 defer da.deinit();
54
55 const p = try async<&da.allocator> testSuspendBlock();
47 const p = try async<allocator> testSuspendBlock();
5648 std.testing.expect(!result);
5749 resume a_promise;
5850 std.testing.expect(result);
......@@ -78,11 +70,8 @@ var await_a_promise: promise = undefined;
7870var await_final_result: i32 = 0;
7971
8072test "coroutine await" {
81 var da = std.heap.DirectAllocator.init();
82 defer da.deinit();
83
8473 await_seq('a');
85 const p = async<&da.allocator> await_amain() catch unreachable;
74 const p = async<allocator> await_amain() catch unreachable;
8675 await_seq('f');
8776 resume await_a_promise;
8877 await_seq('i');
......@@ -117,11 +106,8 @@ fn await_seq(c: u8) void {
117106var early_final_result: i32 = 0;
118107
119108test "coroutine await early return" {
120 var da = std.heap.DirectAllocator.init();
121 defer da.deinit();
122
123109 early_seq('a');
124 const p = async<&da.allocator> early_amain() catch @panic("out of memory");
110 const p = async<allocator> early_amain() catch @panic("out of memory");
125111 early_seq('f');
126112 expect(early_final_result == 1234);
127113 expect(std.mem.eql(u8, early_points, "abcdef"));
......@@ -166,9 +152,7 @@ test "async function with dot syntax" {
166152 suspend;
167153 }
168154 };
169 var da = std.heap.DirectAllocator.init();
170 defer da.deinit();
171 const p = try async<&da.allocator> S.foo();
155 const p = try async<allocator> S.foo();
172156 cancel p;
173157 expect(S.y == 2);
174158}
......@@ -179,9 +163,7 @@ test "async fn pointer in a struct field" {
179163 bar: async<*std.mem.Allocator> fn (*i32) void,
180164 };
181165 var foo = Foo{ .bar = simpleAsyncFn2 };
182 var da = std.heap.DirectAllocator.init();
183 defer da.deinit();
184 const p = (async<&da.allocator> foo.bar(&data)) catch unreachable;
166 const p = (async<allocator> foo.bar(&data)) catch unreachable;
185167 expect(data == 2);
186168 cancel p;
187169 expect(data == 4);
......@@ -193,9 +175,7 @@ async<*std.mem.Allocator> fn simpleAsyncFn2(y: *i32) void {
193175}
194176
195177test "async fn with inferred error set" {
196 var da = std.heap.DirectAllocator.init();
197 defer da.deinit();
198 const p = (async<&da.allocator> failing()) catch unreachable;
178 const p = (async<allocator> failing()) catch unreachable;
199179 resume p;
200180 cancel p;
201181}
......@@ -208,9 +188,7 @@ async fn failing() !void {
208188test "error return trace across suspend points - early return" {
209189 const p = nonFailing();
210190 resume p;
211 var da = std.heap.DirectAllocator.init();
212 defer da.deinit();
213 const p2 = try async<&da.allocator> printTrace(p);
191 const p2 = try async<allocator> printTrace(p);
214192 cancel p2;
215193}
216194
test/standalone/brace_expansion/main.zig+1-4
......@@ -182,10 +182,7 @@ pub fn main() !void {
182182 var stdin_file = try io.getStdIn();
183183 var stdout_file = try io.getStdOut();
184184
185 var direct_allocator = std.heap.DirectAllocator.init();
186 defer direct_allocator.deinit();
187
188 var arena = std.heap.ArenaAllocator.init(&direct_allocator.allocator);
185 var arena = std.heap.ArenaAllocator.init(std.heap.direct_allocator);
189186 defer arena.deinit();
190187
191188 global_allocator = &arena.allocator;