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/