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

ruby-changes:66807

From: Samuel <ko1@a...>
Date: Fri, 16 Jul 2021 14:32:17 +0900 (JST)
Subject: [ruby-changes:66807] 6073a8bdc0 (master): Add debug assertion in `rb_funcall*` that the current thread has the gvl.

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

From 6073a8bdc01c7cfae9671faa4edf85abf6e28c29 Mon Sep 17 00:00:00 2001
From: Samuel Williams <samuel.williams@o...>
Date: Fri, 16 Jul 2021 15:43:57 +1200
Subject: Add debug assertion in `rb_funcall*` that the current thread has the
 gvl.

---
 common.mk | 1 +
 vm.c      | 1 +
 vm_eval.c | 4 ++++
 3 files changed, 6 insertions(+)

diff --git a/common.mk b/common.mk
index 39d32d1..506b432 100644
--- a/common.mk
+++ b/common.mk
@@ -15206,6 +15206,7 @@ vm.$(OBJEXT): $(top_srcdir)/internal/serial.h https://github.com/ruby/ruby/blob/trunk/common.mk#L15206
 vm.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
 vm.$(OBJEXT): $(top_srcdir)/internal/string.h
 vm.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+vm.$(OBJEXT): $(top_srcdir)/internal/thread.h
 vm.$(OBJEXT): $(top_srcdir)/internal/variable.h
 vm.$(OBJEXT): $(top_srcdir)/internal/vm.h
 vm.$(OBJEXT): $(top_srcdir)/internal/warnings.h
diff --git a/vm.c b/vm.c
index b120216..78aadb6 100644
--- a/vm.c
+++ b/vm.c
@@ -23,6 +23,7 @@ https://github.com/ruby/ruby/blob/trunk/vm.c#L23
 #include "internal/proc.h"
 #include "internal/re.h"
 #include "internal/symbol.h"
+#include "internal/thread.h"
 #include "internal/vm.h"
 #include "internal/sanitizers.h"
 #include "iseq.h"
diff --git a/vm_eval.c b/vm_eval.c
index 2fed400..bf5581c 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -1036,12 +1036,16 @@ rb_funcallv_scope(VALUE recv, ID mid, int argc, const VALUE *argv, call_type sco https://github.com/ruby/ruby/blob/trunk/vm_eval.c#L1036
 VALUE
 rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv)
 {
+    VM_ASSERT(ruby_thread_has_gvl_p());
+
     return rb_funcallv_scope(recv, mid, argc, argv, CALL_FCALL);
 }
 
 VALUE
 rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
 {
+    VM_ASSERT(ruby_thread_has_gvl_p());
+
     return rb_call(recv, mid, argc, argv, kw_splat ? CALL_FCALL_KW : CALL_FCALL);
 }
 
-- 
cgit v1.1


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

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