authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-29 22:16:43-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-29 22:16:43-07:00
log83617eac5902a9e66449e8c409dfa9e560bf9f12
treefe282b9e52d206f71a0cd32798eebd1ca305962f
parent9821a0c6f0caf3df4cc6000c000d9cc38baf27d8

std: avoid referencing event loop when io_mode is blocking

This prevents unwanted symbols from ending up in the output binary.

1 files changed, 8 insertions(+), 3 deletions(-)

lib/std/event/loop.zig+8-3
......@@ -103,12 +103,17 @@ pub const Loop = struct {
103103 };
104104 };
105105
106 var global_instance_state: Loop = undefined;
107 const default_instance: ?*Loop = switch (std.io.mode) {
106 const LoopOrVoid = switch (std.io.mode) {
107 .blocking => void,
108 .evented => Loop,
109 };
110
111 var global_instance_state: LoopOrVoid = undefined;
112 const default_instance: ?*LoopOrVoid = switch (std.io.mode) {
108113 .blocking => null,
109114 .evented => &global_instance_state,
110115 };
111 pub const instance: ?*Loop = if (@hasDecl(root, "event_loop")) root.event_loop else default_instance;
116 pub const instance: ?*LoopOrVoid = if (@hasDecl(root, "event_loop")) root.event_loop else default_instance;
112117
113118 /// TODO copy elision / named return values so that the threads referencing *Loop
114119 /// have the correct pointer value.