[前][次][番号順一覧][スレッド一覧]

ruby-changes:66296

From: nagachika <ko1@a...>
Date: Sat, 22 May 2021 14:59:30 +0900 (JST)
Subject: [ruby-changes:66296] e175917f66 (ruby_3_0): merge revision(s) dfe21ef7a15a30fc33f3a5cc089e15d09e905eb4: [Backport #17874] [Backport #17876]

https://git.ruby-lang.org/ruby.git/commit/?id=e175917f66

From e175917f66f0b51638d9d9e143918d4109d489f4 Mon Sep 17 00:00:00 2001
From: nagachika <nagachika@r...>
Date: Sat, 22 May 2021 14:59:05 +0900
Subject: merge revision(s) dfe21ef7a15a30fc33f3a5cc089e15d09e905eb4: [Backport
 #17874] [Backport #17876]

	Do not block JIT with pending_stale_p

	Because we want to flush pending stale units before unloading units, the
	pending_stale_p check is implemented in this waiting loop.

	However, once all methods are called more than --jit-min-calls,
	mjit_worker_wakeup will not be signaled again. As a result, when
	mjit_recompile is called after that and pending_stale_p becomes true,
	MJIT stops processing methods in the unit queue even if the queue is
	very long and MJIT does nothing, waiting for the signal.

	There should be a better way to handle this, but as a fix to be
	backported to Ruby 3.0, let me make an obvious simple commit here.
	---
	 mjit_worker.c | 2 +-
	 1 file changed, 1 insertion(+), 1 deletion(-)
---
 mjit_worker.c | 2 +-
 version.h     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mjit_worker.c b/mjit_worker.c
index ba90cca..9157e3a 100644
--- a/mjit_worker.c
+++ b/mjit_worker.c
@@ -1380,7 +1380,7 @@ mjit_worker(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1380
 
         // Wait until a unit becomes available
         CRITICAL_SECTION_START(3, "in worker dequeue");
-        while ((pending_stale_p || list_empty(&unit_queue.head) || active_units.length >= mjit_opts.max_cache_size) && !stop_worker_p) {
+        while ((list_empty(&unit_queue.head) || active_units.length >= mjit_opts.max_cache_size) && !stop_worker_p) {
             rb_native_cond_wait(&mjit_worker_wakeup, &mjit_engine_mutex);
             verbose(3, "Getting wakeup from client");
 
diff --git a/version.h b/version.h
index 6eb5e0b..c45284d 100644
--- a/version.h
+++ b/version.h
@@ -12,7 +12,7 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L12
 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
 #define RUBY_VERSION_TEENY 2
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 76
+#define RUBY_PATCHLEVEL 77
 
 #define RUBY_RELEASE_YEAR 2021
 #define RUBY_RELEASE_MONTH 5
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]