summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-11-18 11:01:31 +0900
committerKoichi Sasada <ko1@atdot.net>2021-11-19 08:32:39 +0900
commit82ea2870188d66aa75a99f03b4e7fdd1750aa196 (patch)
tree6ae732893312619a03e8dee23418a52df784d1f8 /proc.c
parentbe71c95b88019a1ca7a030a757ce343b743d8aff (diff)
downloadruby-82ea2870188d66aa75a99f03b4e7fdd1750aa196.tar.gz
optimize `Struct` getter/setter
Introduce new optimized method type `OPTIMIZED_METHOD_TYPE_STRUCT_AREF/ASET` with index information.
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index 9c62abb0c6..13996b102a 100644
--- a/proc.c
+++ b/proc.c
@@ -2681,6 +2681,12 @@ rb_method_entry_min_max_arity(const rb_method_entry_t *me, int *max)
case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
*max = UNLIMITED_ARGUMENTS;
return 0;
+ case OPTIMIZED_METHOD_TYPE_STRUCT_AREF:
+ *max = 0;
+ return 0;
+ case OPTIMIZED_METHOD_TYPE_STRUCT_ASET:
+ *max = 1;
+ return 0;
default:
break;
}