aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/event_loop.zig9
-rw-r--r--src/deps/uws.zig9
2 files changed, 12 insertions, 6 deletions
diff --git a/src/bun.js/event_loop.zig b/src/bun.js/event_loop.zig
index 53b6dcf1f..30cae84dd 100644
--- a/src/bun.js/event_loop.zig
+++ b/src/bun.js/event_loop.zig
@@ -308,10 +308,7 @@ pub const EventLoop = struct {
global_vm.drainMicrotasks();
}
- if (this.tasks.count == 0) {
- this.tasks.head = 0;
- }
-
+ this.tasks.head = if (this.tasks.count == 0) 0 else this.tasks.head;
return @truncate(u32, counter);
}
@@ -484,8 +481,8 @@ pub const EventLoop = struct {
if (this.virtual_machine.uws_event_loop == null) {
var actual = uws.Loop.get().?;
this.virtual_machine.uws_event_loop = actual;
- this.gc_timer = uws.Timer.create(actual, this);
- this.gc_repeating_timer = uws.Timer.create(actual, this);
+ this.gc_timer = uws.Timer.createFallthrough(actual, this);
+ this.gc_repeating_timer = uws.Timer.createFallthrough(actual, this);
var gc_timer_interval: i32 = 1000;
if (this.virtual_machine.bundler.env.map.get("BUN_GC_TIMER_INTERVAL")) |timer| {
diff --git a/src/deps/uws.zig b/src/deps/uws.zig
index 20640948a..6db662c00 100644
--- a/src/deps/uws.zig
+++ b/src/deps/uws.zig
@@ -351,6 +351,15 @@ pub const Timer = opaque {
return us_create_timer(loop, 0, @sizeOf(Type));
}
+ pub fn createFallthrough(loop: *Loop, ptr: anytype) *Timer {
+ const Type = @TypeOf(ptr);
+
+ // never fallthrough poll
+ // the problem is uSockets hardcodes it on the other end
+ // so we can never free non-fallthrough polls
+ return us_create_timer(loop, 1, @sizeOf(Type));
+ }
+
pub fn set(this: *Timer, ptr: anytype, cb: ?fn (*Timer) callconv(.C) void, ms: i32, repeat_ms: i32) void {
us_timer_set(this, cb, ms, repeat_ms);
var value_ptr = us_timer_ext(this);