diff options
author | Koichi Sasada <ko1@atdot.net> | 2023-07-31 16:04:16 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2023-07-31 17:13:43 +0900 |
commit | 280419d0e0ba3e96e19551c70cba789fbedd80e1 (patch) | |
tree | b77175e523f51fb120bcd30a7c2624407bf7381e /vm_core.h | |
parent | e40f8bbd20eb65d14992f1f7dce12b4c5edf614e (diff) |
`calling->cd` instead of `calling->ci`
`struct rb_calling_info::cd` is introduced and `rb_calling_info::ci`
is replaced with it to manipulate the inline cache of iseq while
method invocation process. So that `ci` can be acessed with
`calling->cd->ci`. It adds one indirection but it can be justified
by the following points:
1) `vm_search_method_fastpath()` doesn't need `ci` and also
`vm_call_iseq_setup_normal()` doesn't need `ci`. It means
reducing `cd->ci` access in `vm_sendish()` can make it faster.
2) most of method types need to access `ci` once in theory
so that 1 additional indirection doesn't matter.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/8129
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -278,7 +278,7 @@ union iseq_inline_storage_entry { }; struct rb_calling_info { - const struct rb_callinfo *ci; + const struct rb_call_data *cd; const struct rb_callcache *cc; VALUE block_handler; VALUE recv; |