diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2025-08-28 23:23:38 +0200 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2025-08-29 00:02:29 +0200 |
| commit | 4992d2c2980d150cdbfc9750f124c3a9ccc71945 (patch) | |
| tree | 21a054987ba7095fee4340b0f57a9c3f8f86a983 /internal | |
| parent | 3646596e5bd4c445b158be5fd3780e7685aa9b7f (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.h | 1 |
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) */ |
