summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-08-28 23:23:38 +0200
committerJean Boussier <jean.boussier@gmail.com>2025-08-29 00:02:29 +0200
commit4992d2c2980d150cdbfc9750f124c3a9ccc71945 (patch)
tree21a054987ba7095fee4340b0f57a9c3f8f86a983 /internal
parent3646596e5bd4c445b158be5fd3780e7685aa9b7f (diff)
YJIT: rb_ivar_get_at skip ractor checks
Using `assume_single_ractor_mode` we can skip all ractor safety checks if we're in single ractor mode. ``` compare-ruby: ruby 3.5.0dev (2025-08-27T14:58:58Z merge-vm-setivar-d.. 5b749d8e53) +YJIT +PRISM [arm64-darwin24] built-ruby: ruby 3.5.0dev (2025-08-28T21:23:38Z yjit-get-exivar 3cc21b76d4) +YJIT +PRISM [arm64-darwin24] | |compare-ruby|built-ruby| |:--------------------------|-----------:|---------:| |vm_ivar_get_on_obj | 975.981| 975.772| | | 1.00x| -| |vm_ivar_get_on_class | 136.214| 470.912| | | -| 3.46x| |vm_ivar_get_on_generic | 148.315| 299.122| | | -| 2.02x| ```
Diffstat (limited to 'internal')
-rw-r--r--internal/variable.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/internal/variable.h b/internal/variable.h
index d256330168..5e2bcceb61 100644
--- a/internal/variable.h
+++ b/internal/variable.h
@@ -54,6 +54,7 @@ void rb_ivar_set_internal(VALUE obj, ID id, VALUE val);
attr_index_t rb_ivar_set_index(VALUE obj, ID id, VALUE val);
attr_index_t rb_obj_field_set(VALUE obj, shape_id_t target_shape_id, ID field_name, VALUE val);
VALUE rb_ivar_get_at(VALUE obj, attr_index_t index, ID id);
+VALUE rb_ivar_get_at_no_ractor_check(VALUE obj, attr_index_t index);
RUBY_SYMBOL_EXPORT_BEGIN
/* variable.c (export) */