From bbeebc9258f11db188c34a9a24e64f03448667c3 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 6 Jun 2024 17:38:25 -0700 Subject: [PATCH] Only set shape id for CCs on attr_set + ivar Only ivar reader and writer methods should need the shape ID set on the inline cache. We shouldn't accidentally overwrite parts of the CC union when it's not necessary. --- vm_callinfo.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vm_callinfo.h b/vm_callinfo.h index bb4e46e758..d85261aaf9 100644 --- a/vm_callinfo.h +++ b/vm_callinfo.h @@ -348,7 +348,10 @@ vm_cc_new(VALUE klass, break; } - vm_cc_attr_index_initialize(cc, INVALID_SHAPE_ID); + if (cme->def->type == VM_METHOD_TYPE_ATTRSET || cme->def->type == VM_METHOD_TYPE_IVAR) { + vm_cc_attr_index_initialize(cc, INVALID_SHAPE_ID); + } + RB_DEBUG_COUNTER_INC(cc_new); return cc; }