@@ -823,11 +823,11 @@ mod hir_opt_tests {
823823 bb2(v8:BasicObject, v9:BasicObject):
824824 PatchPoint NoSingletonClass(C@0x1000)
825825 PatchPoint MethodRedefined(C@0x1000, fun_new_map@0x1008, cme:0x1010)
826- v23 :ArraySubclass[class_exact:C] = GuardType v9, ArraySubclass[class_exact:C]
827- v24 :BasicObject = CCallWithFrame v23, :C#fun_new_map@ 0x1038, block=0x1040
826+ v22 :ArraySubclass[class_exact:C] = GuardType v9, ArraySubclass[class_exact:C]
827+ v23 :BasicObject = SendDirect v22, 0x1038, :fun_new_map (0x1048)
828828 v15:BasicObject = GetLocal :o, l0, EP@3
829829 CheckInterrupts
830- Return v24
830+ Return v23
831831 " ) ;
832832 }
833833
@@ -6515,9 +6515,9 @@ mod hir_opt_tests {
65156515 v11:ArrayExact = ArrayDup v10
65166516 PatchPoint NoSingletonClass(Array@0x1008)
65176517 PatchPoint MethodRedefined(Array@0x1008, map@0x1010, cme:0x1018)
6518- v21 :BasicObject = CCallWithFrame v11, :Array#map@ 0x1040, block=0x1048
6518+ v20 :BasicObject = SendDirect v11, 0x1040, :map (0x1050)
65196519 CheckInterrupts
6520- Return v21
6520+ Return v20
65216521 " ) ;
65226522 }
65236523
@@ -12004,4 +12004,44 @@ mod hir_opt_tests {
1200412004 Return v99
1200512005 " ) ;
1200612006 }
12007+
12008+ #[ test]
12009+ fn test_array_each ( ) {
12010+ eval ( "[1, 2, 3].each { |x| x }" ) ;
12011+ assert_snapshot ! ( hir_string_proc( "Array.instance_method(:each)" ) , @r"
12012+ fn each@<internal:array>:
12013+ bb0():
12014+ EntryPoint interpreter
12015+ v1:BasicObject = LoadSelf
12016+ v2:NilClass = Const Value(nil)
12017+ Jump bb2(v1, v2)
12018+ bb1(v5:BasicObject):
12019+ EntryPoint JIT(0)
12020+ v6:NilClass = Const Value(nil)
12021+ Jump bb2(v5, v6)
12022+ bb2(v8:BasicObject, v9:NilClass):
12023+ v13:NilClass = Const Value(nil)
12024+ v15:TrueClass|NilClass = Defined yield, v13
12025+ v17:CBool = Test v15
12026+ IfFalse v17, bb3(v8, v9)
12027+ v35:Fixnum[0] = Const Value(0)
12028+ Jump bb7(v8, v35)
12029+ bb3(v23:BasicObject, v24:NilClass):
12030+ v28:BasicObject = InvokeBuiltin <inline_expr>, v23
12031+ CheckInterrupts
12032+ Return v28
12033+ bb7(v48:BasicObject, v49:BasicObject):
12034+ v52:BasicObject = InvokeBuiltin rb_jit_ary_at_end, v48, v49
12035+ v54:CBool = Test v52
12036+ IfFalse v54, bb6(v48, v49)
12037+ CheckInterrupts
12038+ Return v48
12039+ bb6(v67:BasicObject, v68:BasicObject):
12040+ v72:BasicObject = InvokeBuiltin rb_jit_ary_at, v67, v68
12041+ v74:BasicObject = InvokeBlock, v72 # SendFallbackReason: Uncategorized(invokeblock)
12042+ v78:BasicObject = InvokeBuiltin rb_jit_fixnum_inc, v67, v68
12043+ PatchPoint NoEPEscape(each)
12044+ Jump bb7(v67, v78)
12045+ " ) ;
12046+ }
1200712047}
0 commit comments