summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2021-07-16 15:43:57 +1200
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2021-07-16 17:32:02 +1200
commit6073a8bdc01c7cfae9671faa4edf85abf6e28c29 (patch)
tree48099452e185cc99393b0a0ec85d34dd452a10d9
parent55a79b648cabcd2a8b837f89c4d32c3c861d8b7a (diff)
downloadruby-6073a8bdc01c7cfae9671faa4edf85abf6e28c29.tar.gz
Add debug assertion in `rb_funcall*` that the current thread has the gvl.
-rw-r--r--common.mk1
-rw-r--r--vm.c1
-rw-r--r--vm_eval.c4
3 files changed, 6 insertions, 0 deletions
diff --git a/common.mk b/common.mk
index 39d32d1d2a..506b4324c6 100644
--- a/common.mk
+++ b/common.mk
@@ -15206,6 +15206,7 @@ vm.$(OBJEXT): $(top_srcdir)/internal/serial.h
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 b12021668c..78aadb6a41 100644
--- a/vm.c
+++ b/vm.c
@@ -23,6 +23,7 @@
#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 2fed4007de..bf5581cacf 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
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);
}