From 17e925b9917f4877f2da8c64316feb3ce1ca2932 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Fri, 28 Feb 2020 23:20:44 -0800 Subject: Avoid infinite loop on --jit-wait (cherry picked from commit a8dcab723316997d9e01c89d6df969edce75bdca) --- mjit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'mjit.c') diff --git a/mjit.c b/mjit.c index 33abfbe3e9..df0169e748 100644 --- a/mjit.c +++ b/mjit.c @@ -366,7 +366,14 @@ unload_units(void) remove_from_list(worst, &active_units); free_unit(worst); } - verbose(1, "Too many JIT code -- %d units unloaded", units_num - active_units.length); + + if (units_num == active_units.length && mjit_opts.wait) { + mjit_opts.max_cache_size++; // avoid infinite loop on `rb_mjit_wait_call`. Note that --jit-wait is just for testing. + verbose(1, "No units can be unloaded -- incremented max-cache-size to %d for --jit-wait", mjit_opts.max_cache_size); + } + else { + verbose(1, "Too many JIT code -- %d units unloaded", units_num - active_units.length); + } } static void -- cgit v1.2.3