Skip to content

Commit e4b5b20

Browse files
committed
don't call reload_initiate if already initiated
1 parent 7ee3f30 commit e4b5b20

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

supervisor/shared/reload.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,19 @@ inline bool autoreload_is_enabled() {
8282
}
8383

8484
void autoreload_trigger() {
85-
if (autoreload_enabled & !autoreload_suspended) {
86-
last_autoreload_trigger = supervisor_ticks_ms32();
87-
// Guard against the rare time that ticks is 0;
88-
if (last_autoreload_trigger == 0) {
89-
last_autoreload_trigger += 1;
90-
}
91-
// Initiate a reload of the VM immediately. Later code will pause to
92-
// wait for the autoreload to become ready. Doing the VM exit
93-
// immediately is clearer for the user.
85+
if (!autoreload_enabled || autoreload_suspended != 0) {
86+
return;
87+
}
88+
bool reload_initiated = autoreload_pending();
89+
last_autoreload_trigger = supervisor_ticks_ms32();
90+
// Guard against the rare time that ticks is 0;
91+
if (last_autoreload_trigger == 0) {
92+
last_autoreload_trigger += 1;
93+
}
94+
// Initiate a reload of the VM immediately. Later code will pause to
95+
// wait for the autoreload to become ready. Doing the VM exit
96+
// immediately is clearer for the user.
97+
if (!reload_initiated) {
9498
reload_initiate(RUN_REASON_AUTO_RELOAD);
9599
}
96100
}
@@ -111,5 +115,5 @@ bool autoreload_ready() {
111115
}
112116

113117
bool autoreload_pending(void) {
114-
return last_autoreload_trigger != 0;
118+
return last_autoreload_trigger > 0;
115119
}

0 commit comments

Comments
 (0)