Skip to content

Instantly share code, notes, and snippets.

@rwstauner
Created October 16, 2025 21:58
Show Gist options
  • Save rwstauner/927b63e114f7196da2f63997730a5eca to your computer and use it in GitHub Desktop.
Save rwstauner/927b63e114f7196da2f63997730a5eca to your computer and use it in GitHub Desktop.
Insn dump of ruby prelude
== disasm: #<ISeq:<internal:jit_hook>@<internal:jit_hook>:1 (1,0)-(13,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Module, <class:Module>, 0
0007 leave
== disasm: #<ISeq:<class:Module>@<internal:jit_hook>:1 (1,0)-(13,3)>
0000 putself ( 4)[LiCl]
0001 definemethod :with_jit, with_jit
0004 putobject :with_jit
0006 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0008 leave ( 13)[En]
== disasm: #<ISeq:with_jit@<internal:jit_hook>:4 (4,10)-(12,5)>
== catch table
| catch type: rescue st: 0001 ed: 0014 sp: 0000 cont: 0016
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
| catch type: rescue st: 0024 ed: 0037 sp: 0000 cont: 0039
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1])
[ 1] block@0<Block>
0000 putnil ( 6)[LiCa]
0001 putnil
0002 defined constant, :RubyVM, true
0006 branchunless 16
0008 opt_getconstant_path <ic:0 RubyVM>
0010 defined constant-from, :ZJIT, true
0014 swap
0015 pop
0016 branchunless 23
0018 opt_invokebuiltin_delegate <builtin!rb_zjit_option_enabled_p/0>, 0
0021 branchunless 23
0023 putnil ( 9)[Li]
0024 putnil
0025 defined constant, :RubyVM, true
0029 branchunless 39
0031 opt_getconstant_path <ic:1 RubyVM>
0033 defined constant-from, :YJIT, true
0037 swap
0038 pop
0039 branchunless 51
0041 opt_getconstant_path <ic:2 RubyVM::YJIT> ( 10)[Li]
0043 putobject :add_jit_hook
0045 getblockparam block@0, 0
0048 opt_send_without_block <calldata!mid:send, argc:2, ARGS_SIMPLE>
0050 leave ( 12)[Re]
0051 putnil ( 10)
0052 leave ( 12)[Re]
== disasm: #<ISeq:<internal:yjit>@<internal:yjit>:10 (10,0)-(550,3)>
0000 opt_getconstant_path <ic:0 RubyVM> ( 10)[Li]
0002 putnil
0003 defineclass :YJIT, <module:YJIT>, 10
0007 leave
== disasm: #<ISeq:<module:YJIT>@<internal:yjit>:10 (10,0)-(550,3)>
0000 putself ( 12)[LiCl]
0001 definesmethod :enabled?, enabled?
0004 putself ( 17)[Li]
0005 definesmethod :stats_enabled?, stats_enabled?
0008 putself ( 22)[Li]
0009 definesmethod :log_enabled?, log_enabled?
0012 putself ( 27)[Li]
0013 definesmethod :trace_exit_locations_enabled?, trace_exit_locations_enabled?
0016 putself ( 32)[Li]
0017 definesmethod :reset_stats!, reset_stats!
0020 putself ( 48)[Li]
0021 definesmethod :enable, enable
0024 putself ( 74)[Li]
0025 definesmethod :exit_locations, exit_locations
0028 putself ( 176)[Li]
0029 definesmethod :dump_exit_locations, dump_exit_locations
0032 putself ( 188)[Li]
0033 definesmethod :runtime_stats, runtime_stats
0036 putself ( 196)[Li]
0037 definesmethod :stats_string, stats_string
0040 putself ( 206)[Li]
0041 definesmethod :log, log
0044 putself ( 215)[Li]
0045 definesmethod :disasm, disasm
0048 putself ( 243)[Li]
0049 definesmethod :insns_compiled, insns_compiled
0052 putself ( 253)[Li]
0053 definesmethod :code_gc, code_gc
0056 putself ( 257)[Li]
0057 definesmethod :simulate_oom!, simulate_oom!
0060 opt_invokebuiltin_delegate <builtin!rb_yjit_stats_enabled_p/0>, 0( 262)[Li]
0063 branchunless 70
0065 putself ( 263)[Li]
0066 send <calldata!mid:at_exit, argc:0, FCALL>, block in <module:YJIT>
0069 pop
0070 newarray 0 ( 267)[Li]
0072 setinstancevariable :@jit_hooks, <is:0>
0075 putself ( 269)[Li]
0076 putnil
0077 defineclass :singletonclass, singleton class, 1
0081 leave ( 550)[En]
== disasm: #<ISeq:enabled?@<internal:yjit>:12 (12,2)-(14,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi13/0>, 0 ( 13)[LiCa]
0003 leave ( 14)[Re]
== disasm: #<ISeq:stats_enabled?@<internal:yjit>:17 (17,2)-(19,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_stats_enabled_p/0>, 0( 18)[LiCa]
0003 leave ( 19)[Re]
== disasm: #<ISeq:log_enabled?@<internal:yjit>:22 (22,2)-(24,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_log_enabled_p/0>, 0( 23)[LiCa]
0003 leave ( 24)[Re]
== disasm: #<ISeq:trace_exit_locations_enabled?@<internal:yjit>:27 (27,2)-(29,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_trace_exit_locations_enabled_p/0>, 0( 28)[LiCa]
0003 leave ( 29)[Re]
== disasm: #<ISeq:reset_stats!@<internal:yjit>:32 (32,2)-(34,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_reset_stats_bang/0>, 0( 33)[LiCa]
0003 leave ( 34)[Re]
== disasm: #<ISeq:enable@<internal:yjit>:48 (48,2)-(68,5)>
local table (size: 5, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 4@0, kwrest: -1])
[ 5] stats@0 [ 4] log@1 [ 3] mem_size@2 [ 2] call_threshold@3[ 1] ?@4
0000 putself ( 49)[LiCa]
0001 opt_send_without_block <calldata!mid:enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchunless 8
0005 putobject false
0007 leave [Re]
0008 opt_invokebuiltin_delegate <builtin!_bi51/0>, 0 ( 51)[Li]
0011 branchunless 22
0013 putself ( 52)[Li]
0014 putchilledstring "Only one JIT can be enabled at the same time."
0016 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>
0018 pop
0019 putobject false ( 53)[Li]
0021 leave [Re]
0022 getlocal_WC_0 mem_size@2 ( 56)[Li]
0024 branchunless 58
0026 getlocal_WC_0 mem_size@2 ( 57)[Li]
0028 opt_getconstant_path <ic:0 Integer>
0030 opt_send_without_block <calldata!mid:is_a?, argc:1, ARGS_SIMPLE>
0032 branchif 42
0034 putself
0035 opt_getconstant_path <ic:1 ArgumentError>
0037 putchilledstring "mem_size must be a Integer"
0039 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0041 pop
0042 putobject 1..2048 ( 58)[Li]
0044 getlocal_WC_0 mem_size@2
0046 opt_send_without_block <calldata!mid:include?, argc:1, ARGS_SIMPLE>
0048 branchif 58
0050 putself
0051 opt_getconstant_path <ic:2 ArgumentError>
0053 putchilledstring "mem_size must be between 1 and 2048 MB"
0055 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0057 pop
0058 getlocal_WC_0 call_threshold@3 ( 61)[Li]
0060 branchunless 92
0062 getlocal_WC_0 call_threshold@3 ( 62)[Li]
0064 opt_getconstant_path <ic:3 Integer>
0066 opt_send_without_block <calldata!mid:is_a?, argc:1, ARGS_SIMPLE>
0068 branchif 78
0070 putself
0071 opt_getconstant_path <ic:4 ArgumentError>
0073 putchilledstring "call_threshold must be a Integer"
0075 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0077 pop
0078 getlocal_WC_0 call_threshold@3 ( 63)[Li]
0080 opt_send_without_block <calldata!mid:positive?, argc:0, ARGS_SIMPLE>
0082 branchif 92
0084 putself
0085 opt_getconstant_path <ic:5 ArgumentError>
0087 putchilledstring "call_threshold must be a positive integer"
0089 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0091 pop
0092 getlocal_WC_0 stats@0 ( 66)[Li]
0094 branchunless 101
0096 putself
0097 send <calldata!mid:at_exit, argc:0, FCALL>, block in enable
0100 pop
0101 getlocal_WC_0 stats@0 ( 67)[Li]
0103 getlocal_WC_0 stats@0
0105 putobject :quiet
0107 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0110 getlocal_WC_0 log@1
0112 getlocal_WC_0 log@1
0114 putobject :quiet
0116 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0119 getlocal_WC_0 mem_size@2
0121 getlocal_WC_0 call_threshold@3
0123 invokebuiltin <builtin!rb_yjit_enable/6>
0125 leave ( 68)[Re]
== disasm: #<ISeq:block in enable@<internal:yjit>:66 (66,12)-(66,36)>
0000 putself ( 66)[LiBc]
0001 opt_send_without_block <calldata!mid:print_and_dump_stats, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 leave [Br]
== disasm: #<ISeq:exit_locations@<internal:yjit>:74 (74,2)-(148,5)>
local table (size: 11, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[11] results@0 [10] raw_samples@1[ 9] line_samples@2[ 8] frames@3 [ 7] samples_count@4[ 6] i@5 [ 5] stack_length@6[ 4] sample_count@7[ 3] prev_frame_id@8[ 2] top_frame_id@9[ 1] top_frame_line@10
0000 putself ( 75)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 opt_invokebuiltin_delegate <builtin!rb_yjit_get_exit_locations/0>, 0( 77)[Li]
0010 setlocal_WC_0 results@0
0012 getlocal_WC_0 results@0 ( 78)[Li]
0014 putobject :raw
0016 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0018 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0020 setlocal_WC_0 raw_samples@1
0022 getlocal_WC_0 results@0 ( 79)[Li]
0024 putobject :lines
0026 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0028 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0030 setlocal_WC_0 line_samples@2
0032 getlocal_WC_0 results@0 ( 80)[Li]
0034 putobject :frames
0036 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0038 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0040 setlocal_WC_0 frames@3
0042 putobject_INT2FIX_0_ ( 81)[Li]
0043 setlocal_WC_0 samples_count@4
0045 opt_getconstant_path <ic:0 RubyVM::INSTRUCTION_NAMES>( 86)[Li]
0047 send <calldata!mid:each_with_index, argc:0>, block in exit_locations
0050 pop
0051 putobject_INT2FIX_0_ ( 101)[Li]
0052 setlocal_WC_0 i@5
0054 jump 225 ( 102)[Li]
0056 putnil
0057 pop
0058 jump 225
0060 getlocal_WC_0 raw_samples@1 ( 103)[Li]
0062 getlocal_WC_0 i@5
0064 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0066 setlocal_WC_0 stack_length@6
0068 getlocal_WC_0 i@5 ( 104)[Li]
0070 putobject_INT2FIX_1_
0071 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0073 setlocal_WC_0 i@5
0075 getlocal_WC_0 raw_samples@1 ( 106)[Li]
0077 getlocal_WC_0 i@5
0079 getlocal_WC_0 stack_length@6
0081 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0083 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0085 setlocal_WC_0 sample_count@7
0087 putnil ( 108)[Li]
0088 setlocal_WC_0 prev_frame_id@8
0090 getlocal_WC_0 stack_length@6 ( 109)[Li]
0092 send <calldata!mid:times, argc:0>, block in exit_locations
0095 pop
0096 getlocal_WC_0 i@5 ( 128)[Li]
0098 getlocal_WC_0 stack_length@6
0100 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0102 setlocal_WC_0 i@5
0104 getlocal_WC_0 prev_frame_id@8 ( 130)[Li]
0106 setlocal_WC_0 top_frame_id@9
0108 putobject_INT2FIX_1_ ( 131)[Li]
0109 setlocal_WC_0 top_frame_line@10
0111 getlocal_WC_0 frames@3 ( 133)[Li]
0113 getlocal_WC_0 top_frame_id@9
0115 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0117 putobject :samples
0119 dupn 2
0121 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0123 getlocal_WC_0 sample_count@7
0125 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0127 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0129 pop
0130 getlocal_WC_0 frames@3 ( 134)[Li]
0132 getlocal_WC_0 top_frame_id@9
0134 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0136 putobject :lines
0138 dupn 2
0140 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0142 dup
0143 branchif 153
0145 pop
0146 newhash 0
0148 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0150 pop
0151 jump 155
0153 adjuststack 3
0155 getlocal_WC_0 frames@3 ( 135)[Li]
0157 getlocal_WC_0 top_frame_id@9
0159 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0161 putobject :lines
0163 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0165 getlocal_WC_0 top_frame_line@10
0167 dupn 2
0169 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0171 dup
0172 branchif 182
0174 pop
0175 duparray [0, 0]
0177 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0179 pop
0180 jump 184
0182 adjuststack 3
0184 getlocal_WC_0 frames@3 ( 136)[Li]
0186 getlocal_WC_0 top_frame_id@9
0188 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0190 putobject :lines
0192 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0194 getlocal_WC_0 top_frame_line@10
0196 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0198 putobject_INT2FIX_1_
0199 dupn 2
0201 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0203 getlocal_WC_0 sample_count@7
0205 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0207 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0209 pop
0210 getlocal_WC_0 samples_count@4 ( 138)[Li]
0212 getlocal_WC_0 sample_count@7
0214 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0216 setlocal_WC_0 samples_count@4
0218 getlocal_WC_0 i@5 ( 139)[Li]
0220 putobject_INT2FIX_1_
0221 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0223 setlocal_WC_0 i@5
0225 getlocal_WC_0 i@5 ( 102)
0227 getlocal_WC_0 raw_samples@1
0229 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0231 opt_lt <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
0233 branchif 60
0235 putnil
0236 pop
0237 getlocal_WC_0 results@0 ( 142)[Li]
0239 putobject :samples
0241 getlocal_WC_0 samples_count@4
0243 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0245 pop
0246 getlocal_WC_0 results@0 ( 145)[Li]
0248 putobject :missed_samples
0250 putobject_INT2FIX_0_
0251 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0253 pop
0254 getlocal_WC_0 results@0 ( 146)[Li]
0256 putobject :gc_samples
0258 putobject_INT2FIX_0_
0259 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0261 pop
0262 getlocal_WC_0 results@0 ( 147)[Li]
0264 leave ( 148)[Re]
== disasm: #<ISeq:block in exit_locations@<internal:yjit>:86 (86,46)-(90,7)>
local table (size: 3, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] name@0<Arg>[ 2] frame_id@1<Arg>[ 1] frame_hash@2
0000 duphash {samples: 0, total_samples: 0}( 87)[LiBc]
0002 putspecialobject 1
0004 swap
0005 putobject :edges
0007 newhash 0
0009 putobject :name
0011 getlocal_WC_0 name@0
0013 putobject :file
0015 putchilledstring "nonexistent.def"
0017 putobject :line
0019 putnil
0020 putobject :lines
0022 newhash 0
0024 opt_send_without_block <calldata!mid:core#hash_merge_ptr, argc:11, ARGS_SIMPLE>
0026 setlocal_WC_0 frame_hash@2
0028 getlocal_WC_1 results@0 ( 88)[Li]
0030 putobject :frames
0032 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0034 getlocal_WC_0 frame_id@1
0036 getlocal_WC_0 frame_hash@2
0038 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0040 pop
0041 putnil ( 89)[Li]
0042 getlocal_WC_1 frames@3
0044 getlocal_WC_0 frame_id@1
0046 getlocal_WC_0 frame_hash@2
0048 setn 3
0050 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0052 pop
0053 leave ( 90)[Br]
== disasm: #<ISeq:block in exit_locations@<internal:yjit>:109 (109,25)-(126,9)>
local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] idx@0<AmbiguousArg>[ 3] frame_id@1 [ 2] prev_frame@2[ 1] frame_info@3
0000 getlocal_WC_0 idx@0 ( 110)[LiBc]
0002 getlocal_WC_1 i@5
0004 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0006 setlocal_WC_0 idx@0
0008 getlocal_WC_1 raw_samples@1 ( 111)[Li]
0010 getlocal_WC_0 idx@0
0012 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0014 setlocal_WC_0 frame_id@1
0016 getlocal_WC_1 prev_frame_id@8 ( 113)[Li]
0018 branchunless 71
0020 getlocal_WC_1 frames@3 ( 114)[Li]
0022 getlocal_WC_1 prev_frame_id@8
0024 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0026 setlocal_WC_0 prev_frame@2
0028 getlocal_WC_0 prev_frame@2 ( 115)[Li]
0030 putobject :edges
0032 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0034 getlocal_WC_0 frame_id@1
0036 dupn 2
0038 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0040 dup
0041 branchif 50
0043 pop
0044 putobject_INT2FIX_0_
0045 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0047 pop
0048 jump 52
0050 adjuststack 3
0052 getlocal_WC_0 prev_frame@2 ( 116)[Li]
0054 putobject :edges
0056 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0058 getlocal_WC_0 frame_id@1
0060 dupn 2
0062 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0064 getlocal_WC_1 sample_count@7
0066 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0068 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0070 pop
0071 getlocal_WC_1 frames@3 ( 119)[Li]
0073 getlocal_WC_0 frame_id@1
0075 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0077 setlocal_WC_0 frame_info@3
0079 getlocal_WC_0 frame_info@3 ( 120)[Li]
0081 putobject :total_samples
0083 dupn 2
0085 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0087 getlocal_WC_1 sample_count@7
0089 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0091 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0093 pop
0094 getlocal_WC_0 frame_info@3 ( 122)[Li]
0096 putobject :lines
0098 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0100 getlocal_WC_1 line_samples@2
0102 getlocal_WC_0 idx@0
0104 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0106 dupn 2
0108 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0110 dup
0111 branchif 121
0113 pop
0114 duparray [0, 0]
0116 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0118 pop
0119 jump 123
0121 adjuststack 3
0123 getlocal_WC_0 frame_info@3 ( 123)[Li]
0125 putobject :lines
0127 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0129 getlocal_WC_1 line_samples@2
0131 getlocal_WC_0 idx@0
0133 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0135 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0137 putobject_INT2FIX_0_
0138 dupn 2
0140 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0142 getlocal_WC_1 sample_count@7
0144 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0146 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0148 pop
0149 getlocal_WC_0 frame_id@1 ( 125)[Li]
0151 dup
0152 setlocal_WC_1 prev_frame_id@8
0154 leave ( 126)[Br]
== disasm: #<ISeq:dump_exit_locations@<internal:yjit>:176 (176,2)-(182,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] filename@0<Arg>
0000 putself ( 177)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 13
0005 putself ( 178)[Li]
0006 opt_getconstant_path <ic:0 ArgumentError>
0008 putchilledstring "--yjit-trace-exits must be enabled to use dump_exit_locations."
0010 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0012 pop
0013 opt_getconstant_path <ic:1 File> ( 181)[Li]
0015 getlocal_WC_0 filename@0
0017 opt_getconstant_path <ic:2 Marshal>
0019 opt_getconstant_path <ic:3 RubyVM::YJIT>
0021 opt_send_without_block <calldata!mid:exit_locations, argc:0, ARGS_SIMPLE>
0023 opt_send_without_block <calldata!mid:dump, argc:1, ARGS_SIMPLE>
0025 opt_send_without_block <calldata!mid:binwrite, argc:2, ARGS_SIMPLE>
0027 leave ( 182)[Re]
== disasm: #<ISeq:runtime_stats@<internal:yjit>:188 (188,2)-(192,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] key@0<Opt=0>
0000 putnil ( 188)
0001 setlocal_WC_0 key@0
0003 getlocal_WC_0 key@0 ( 189)[LiCa]
0005 opt_nil_p <calldata!mid:nil?, argc:0, ARGS_SIMPLE>[CcCr]
0007 branchif 25
0009 opt_getconstant_path <ic:0 Symbol>
0011 getlocal_WC_0 key@0
0013 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0015 branchif 25
0017 putself
0018 opt_getconstant_path <ic:1 TypeError>
0020 putchilledstring "non-symbol given"
0022 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0024 pop
0025 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_get_stats/1>, 0( 191)[Li]
0028 leave ( 192)[Re]
== disasm: #<ISeq:stats_string@<internal:yjit>:196 (196,2)-(202,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] strio@0
0000 putself ( 198)[LiCa]
0001 putchilledstring "stringio"
0003 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0005 pop
0006 opt_getconstant_path <ic:0 StringIO> ( 199)[Li]
0008 putnil
0009 swap
0010 opt_new <calldata!mid:new, argc:0, ARGS_SIMPLE>, 17
0013 opt_send_without_block <calldata!mid:initialize, argc:0, FCALL|ARGS_SIMPLE>
0015 jump 20
0017 opt_send_without_block <calldata!mid:new, argc:0, ARGS_SIMPLE>
0019 swap
0020 pop
0021 setlocal_WC_0 strio@0
0023 putself ( 200)[Li]
0024 getlocal_WC_0 strio@0
0026 opt_send_without_block <calldata!mid:_print_stats, argc:1, kw:[#<Symbol:0x00000000006a410c>], FCALL|KWARG>
0028 pop
0029 getlocal_WC_0 strio@0 ( 201)[Li]
0031 opt_send_without_block <calldata!mid:string, argc:0, ARGS_SIMPLE>
0033 leave ( 202)[Re]
== disasm: #<ISeq:log@<internal:yjit>:206 (206,2)-(212,5)>
0000 putself ( 207)[LiCa]
0001 opt_send_without_block <calldata!mid:log_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 opt_invokebuiltin_delegate <builtin!rb_yjit_get_log/0>, 0( 209)[Li]
0010 send <calldata!mid:map, argc:0>, block in log
0013 leave ( 212)[Re]
== disasm: #<ISeq:block in log@<internal:yjit>:209 (209,34)-(211,7)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] timestamp@0<Arg>[ 1] path@1<Arg>
0000 opt_getconstant_path <ic:0 Time> ( 210)[LiBc]
0002 getlocal_WC_0 timestamp@0
0004 opt_send_without_block <calldata!mid:at, argc:1, ARGS_SIMPLE>
0006 getlocal_WC_0 path@1
0008 newarray 2
0010 leave ( 211)[Br]
== disasm: #<ISeq:disasm@<internal:yjit>:215 (215,2)-(240,5)>
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] iseq@0<Arg>[ 1] disasm_str@1
0000 opt_getconstant_path <ic:0 RubyVM::InstructionSequence>( 217)[LiCa]
0002 getlocal_WC_0 iseq@0
0004 opt_send_without_block <calldata!mid:of, argc:1, ARGS_SIMPLE>
0006 setlocal_WC_0 iseq@0
0008 putself ( 219)[Li]
0009 opt_send_without_block <calldata!mid:enabled?, argc:0, FCALL|ARGS_SIMPLE>
0011 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0013 branchunless 27
0015 putself ( 220)[Li]
0016 putchilledstring "YJIT needs to be enabled to produce disasm output, e.g.\n"( 221)
0018 putchilledstring "ruby --yjit-call-threshold=1 my_script.rb (see doc/yjit/yjit.md)"( 222)
0020 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>( 221)[CcCr]
0022 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>( 220)
0024 pop
0025 putnil ( 224)[Li]
0026 leave [Re]
0027 opt_invokebuiltin_delegate <builtin!rb_yjit_disasm_iseq/1>, 0( 227)[Li]
0030 setlocal_WC_0 disasm_str@1
0032 getlocal_WC_0 disasm_str@1 ( 229)[Li]
0034 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0036 branchunless 50
0038 putself ( 230)[Li]
0039 putchilledstring "YJIT disasm is only available when YJIT is built in dev mode, i.e.\n"( 231)
0041 putchilledstring "./configure --enable-yjit=dev (see doc/yjit/yjit.md)\n"( 232)
0043 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>( 231)[CcCr]
0045 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>( 230)
0047 pop
0048 putnil ( 234)[Li]
0049 leave [Re]
0050 getlocal_WC_0 iseq@0 ( 239)[Li]
0052 opt_send_without_block <calldata!mid:disasm, argc:0, ARGS_SIMPLE>
0054 putchilledstring "\n"
0056 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0058 getlocal_WC_0 disasm_str@1
0060 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0062 leave ( 240)[Re]
== disasm: #<ISeq:insns_compiled@<internal:yjit>:243 (243,2)-(249,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] iseq@0<Arg>
0000 putself ( 244)[LiCa]
0001 opt_send_without_block <calldata!mid:enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 opt_getconstant_path <ic:0 RubyVM::InstructionSequence>( 247)[Li]
0009 getlocal_WC_0 iseq@0
0011 opt_send_without_block <calldata!mid:of, argc:1, ARGS_SIMPLE>
0013 setlocal_WC_0 iseq@0
0015 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_insns_compiled/1>, 0( 248)[Li]
0018 leave ( 249)[Re]
== disasm: #<ISeq:code_gc@<internal:yjit>:253 (253,2)-(255,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_code_gc/0>, 0( 254)[LiCa]
0003 leave ( 255)[Re]
== disasm: #<ISeq:simulate_oom!@<internal:yjit>:257 (257,2)-(259,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_yjit_simulate_oom_bang/0>, 0( 258)[LiCa]
0003 leave ( 259)[Re]
== disasm: #<ISeq:block in <module:YJIT>@<internal:yjit>:263 (263,12)-(263,36)>
0000 putself ( 263)[LiBc]
0001 opt_send_without_block <calldata!mid:print_and_dump_stats, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 leave [Br]
== disasm: #<ISeq:singleton class@<internal:yjit>:269 (269,2)-(549,5)>
0000 putself ( 271)[Li]
0001 opt_send_without_block <calldata!mid:private, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 pop
0004 definemethod :add_jit_hook, add_jit_hook( 274)[Li]
0007 definemethod :call_jit_hooks, call_jit_hooks( 279)[Li]
0010 definemethod :print_and_dump_stats, print_and_dump_stats( 287)[Li]
0013 definemethod :_dump_locations, _dump_locations( 294)[Li]
0016 definemethod :_print_stats_reasons, _print_stats_reasons( 304)[Li]
0019 definemethod :_print_stats, _print_stats( 345)[Li]
0022 definemethod :print_sorted_method_calls, print_sorted_method_calls( 452)[Li]
0025 definemethod :print_sorted_exit_counts, print_sorted_exit_counts( 472)[Li]
0028 definemethod :print_counters, print_counters( 500)[Li]
0031 definemethod :format_number, format_number( 528)[Li]
0034 definemethod :format_number_pct, format_number_pct( 536)[Li]
0037 putobject :format_number_pct
0039 leave
== disasm: #<ISeq:add_jit_hook@<internal:yjit>:274 (274,4)-(276,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hook@0<Arg>
0000 getinstancevariable :@jit_hooks, <is:0> ( 275)[LiCa]
0003 getlocal_WC_0 hook@0
0005 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0007 leave ( 276)[Re]
== disasm: #<ISeq:call_jit_hooks@<internal:yjit>:279 (279,4)-(284,7)>
0000 opt_invokebuiltin_delegate <builtin!yjit_c_builtin_p/0>, 0( 281)[LiCa]
0003 branchunless 7
0005 putnil
0006 leave [Re]
0007 getinstancevariable :@jit_hooks, <is:0> ( 282)[Li]
0010 putobject :call
0012 send <calldata!mid:each, argc:0, ARGS_BLOCKARG>, nil
0015 pop
0016 getinstancevariable :@jit_hooks, <is:1> ( 283)[Li]
0019 opt_send_without_block <calldata!mid:clear, argc:0, ARGS_SIMPLE>
0021 leave ( 284)[Re]
== disasm: #<ISeq:print_and_dump_stats@<internal:yjit>:287 (287,4)-(292,7)>
0000 opt_invokebuiltin_delegate <builtin!rb_yjit_print_stats_p/0>, 0( 288)[LiCa]
0003 branchunless 9
0005 putself ( 289)[Li]
0006 opt_send_without_block <calldata!mid:_print_stats, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0008 pop
0009 putself ( 291)[Li]
0010 opt_send_without_block <calldata!mid:_dump_locations, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0012 leave ( 292)[Re]
== disasm: #<ISeq:_dump_locations@<internal:yjit>:294 (294,4)-(301,7)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] filename@0
0000 putself ( 295)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 putchilledstring "yjit_exit_locations.dump"( 297)[Li]
0009 setlocal_WC_0 filename@0
0011 putself ( 298)[Li]
0012 getlocal_WC_0 filename@0
0014 opt_send_without_block <calldata!mid:dump_exit_locations, argc:1, FCALL|ARGS_SIMPLE>
0016 pop
0017 getglobal :$stderr ( 300)[Li]
0019 putobject "YJIT exit locations dumped to `"
0021 getlocal_WC_0 filename@0
0023 dup
0024 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0026 anytostring
0027 putobject "`."
0029 concatstrings 3
0031 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0033 leave ( 301)[Re]
== disasm: #<ISeq:_print_stats_reasons@<internal:yjit>:304 (304,4)-(342,7)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] stats@0<Arg>[ 1] out@1<Arg>
0000 putself ( 305)[LiCa]
0001 getlocal_WC_0 stats@0
0003 getlocal_WC_0 out@1
0005 putchilledstring "send_"
0007 putchilledstring "method call fallback reasons: "
0009 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0011 pop
0012 putself ( 306)[Li]
0013 getlocal_WC_0 stats@0
0015 getlocal_WC_0 out@1
0017 putchilledstring "invokeblock_"
0019 putchilledstring "invokeblock fallback reasons: "
0021 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0023 pop
0024 putself ( 307)[Li]
0025 getlocal_WC_0 stats@0
0027 getlocal_WC_0 out@1
0029 putchilledstring "invokesuper_"
0031 putchilledstring "invokesuper fallback reasons: "
0033 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0035 pop
0036 putself ( 308)[Li]
0037 getlocal_WC_0 stats@0
0039 getlocal_WC_0 out@1
0041 putchilledstring "guard_send_"
0043 putchilledstring "method call exit reasons: "
0045 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0047 pop
0048 putself ( 309)[Li]
0049 getlocal_WC_0 stats@0
0051 getlocal_WC_0 out@1
0053 putchilledstring "guard_invokeblock_"
0055 putchilledstring "invokeblock exit reasons: "
0057 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0059 pop
0060 putself ( 310)[Li]
0061 getlocal_WC_0 stats@0
0063 getlocal_WC_0 out@1
0065 putchilledstring "guard_invokesuper_"
0067 putchilledstring "invokesuper exit reasons: "
0069 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0071 pop
0072 putself ( 311)[Li]
0073 getlocal_WC_0 stats@0
0075 getlocal_WC_0 out@1
0077 putchilledstring "gbpp_"
0079 putchilledstring "getblockparamproxy exit reasons: "
0081 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0083 pop
0084 putself ( 312)[Li]
0085 getlocal_WC_0 stats@0
0087 getlocal_WC_0 out@1
0089 putchilledstring "getivar_"
0091 putchilledstring "getinstancevariable exit reasons:"
0093 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0095 pop
0096 putself ( 313)[Li]
0097 getlocal_WC_0 stats@0
0099 getlocal_WC_0 out@1
0101 putchilledstring "setivar_"
0103 putchilledstring "setinstancevariable exit reasons:"
0105 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0107 pop
0108 putchilledstring "branchif" ( 315)[Li]
0110 putchilledstring "branchnil" ( 316)
0112 putchilledstring "branchunless" ( 317)
0114 putchilledstring "definedivar" ( 318)
0116 putchilledstring "expandarray" ( 319)
0118 putchilledstring "invokebuiltin" ( 320)
0120 putchilledstring "jump" ( 321)
0122 putchilledstring "leave" ( 322)
0124 putchilledstring "objtostring" ( 323)
0126 putchilledstring "opt_aref" ( 324)
0128 putchilledstring "opt_aset" ( 325)
0130 putchilledstring "opt_case_dispatch" ( 326)
0132 putchilledstring "opt_div" ( 327)
0134 putchilledstring "opt_getconstant_path" ( 328)
0136 putchilledstring "opt_minus" ( 329)
0138 putchilledstring "opt_mod" ( 330)
0140 putchilledstring "opt_mult" ( 331)
0142 putchilledstring "opt_plus" ( 332)
0144 putchilledstring "opt_succ" ( 333)
0146 putchilledstring "setlocal" ( 334)
0148 putchilledstring "splatkw" ( 335)
0150 newarray 21 ( 314)
0152 send <calldata!mid:each, argc:0>, block in _print_stats_reasons( 336)
0155 pop
0156 putself ( 339)[Li]
0157 getlocal_WC_0 stats@0
0159 getlocal_WC_0 out@1
0161 putchilledstring "lshift_"
0163 putchilledstring "left shift (opt_ltlt) exit reasons: "
0165 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0167 pop
0168 putself ( 340)[Li]
0169 getlocal_WC_0 stats@0
0171 getlocal_WC_0 out@1
0173 putchilledstring "rshift_"
0175 putchilledstring "right shift (>>) exit reasons: "
0177 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0179 pop
0180 putself ( 341)[Li]
0181 getlocal_WC_0 stats@0
0183 getlocal_WC_0 out@1
0185 putchilledstring "invalidate_"
0187 putchilledstring "invalidation reasons: "
0189 opt_send_without_block <calldata!mid:print_counters, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>], FCALL|KWARG>
0191 leave ( 342)[Re]
== disasm: #<ISeq:block in _print_stats_reasons@<internal:yjit>:336 (336,13)-(338,9)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] insn@0<AmbiguousArg>
0000 putself ( 337)[LiBc]
0001 getlocal_WC_1 stats@0
0003 getlocal_WC_1 out@1
0005 getlocal_WC_0 insn@0
0007 dup
0008 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0010 anytostring
0011 putobject "_"
0013 concatstrings 2
0015 getlocal_WC_0 insn@0
0017 dup
0018 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0020 anytostring
0021 putobject " exit reasons:"
0023 concatstrings 2
0025 putobject true
0027 opt_send_without_block <calldata!mid:print_counters, argc:5, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x00000000008b210c>], FCALL|KWARG>
0029 leave ( 338)[Br]
== disasm: #<ISeq:_print_stats@<internal:yjit>:345 (345,4)-(450,7)>
local table (size: 6, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 6] out@0 [ 5] ?@1 [ 4] stats@2 [ 3] compilation_failure@3[ 2] code_region_overhead@4[ 1] bytes_per_context@5
0000 checkkeyword 7, 0 ( 345)
0003 branchif 9
0005 getglobal :$stderr
0007 setlocal_WC_0 out@0
0009 putself ( 346)[LiCa]
0010 opt_send_without_block <calldata!mid:runtime_stats, argc:0, FCALL|ARGS_SIMPLE>
0012 setlocal_WC_0 stats@2
0014 opt_invokebuiltin_delegate <builtin!rb_yjit_stats_enabled_p/0>, 0( 347)[Li]
0017 branchif 21
0019 putnil
0020 leave [Re]
0021 getlocal_WC_0 out@0 ( 349)[Li]
0023 putchilledstring "***YJIT: Printing YJIT statistics on exit***"
0025 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0027 pop
0028 putself ( 351)[Li]
0029 getlocal_WC_0 stats@2
0031 getlocal_WC_0 out@0
0033 opt_send_without_block <calldata!mid:_print_stats_reasons, argc:2, FCALL|ARGS_SIMPLE>
0035 pop
0036 getlocal_WC_0 stats@2 ( 354)[Li]
0038 putobject :compilation_failure
0040 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0042 setlocal_WC_0 compilation_failure@3
0044 getlocal_WC_0 stats@2 ( 356)[Li]
0046 putobject :code_region_size
0048 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0050 getlocal_WC_0 stats@2
0052 putobject :inline_code_size
0054 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0056 getlocal_WC_0 stats@2
0058 putobject :outlined_code_size
0060 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0062 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0064 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0066 setlocal_WC_0 code_region_overhead@4
0068 getlocal_WC_0 out@0 ( 358)[Li]
0070 putchilledstring "num_send: "
0072 putself
0073 putobject 13
0075 getlocal_WC_0 stats@2
0077 putobject :num_send
0079 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0081 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0083 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0085 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0087 pop
0088 getlocal_WC_0 out@0 ( 359)[Li]
0090 putchilledstring "num_send_known_class: "
0092 putself
0093 putobject 13
0095 getlocal_WC_0 stats@2
0097 putobject :num_send_known_class
0099 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0101 getlocal_WC_0 stats@2
0103 putobject :num_send
0105 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0107 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0109 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0111 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0113 pop
0114 getlocal_WC_0 out@0 ( 360)[Li]
0116 putchilledstring "num_send_polymorphic: "
0118 putself
0119 putobject 13
0121 getlocal_WC_0 stats@2
0123 putobject :num_send_polymorphic
0125 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0127 getlocal_WC_0 stats@2
0129 putobject :num_send
0131 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0133 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0135 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0137 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0139 pop
0140 getlocal_WC_0 out@0 ( 361)[Li]
0142 putchilledstring "num_send_megamorphic: "
0144 putself
0145 putobject 13
0147 getlocal_WC_0 stats@2
0149 putobject :send_megamorphic
0151 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0153 getlocal_WC_0 stats@2
0155 putobject :num_send
0157 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0159 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0161 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0163 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0165 pop
0166 getlocal_WC_0 out@0 ( 362)[Li]
0168 putchilledstring "num_send_dynamic: "
0170 putself
0171 putobject 13
0173 getlocal_WC_0 stats@2
0175 putobject :num_send_dynamic
0177 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0179 getlocal_WC_0 stats@2
0181 putobject :num_send
0183 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0185 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0187 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0189 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0191 pop
0192 getlocal_WC_0 out@0 ( 363)[Li]
0194 putchilledstring "num_send_cfunc: "
0196 putself
0197 putobject 13
0199 getlocal_WC_0 stats@2
0201 putobject :num_send_cfunc
0203 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0205 getlocal_WC_0 stats@2
0207 putobject :num_send
0209 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0211 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0213 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0215 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0217 pop
0218 getlocal_WC_0 out@0 ( 364)[Li]
0220 putchilledstring "num_send_cfunc_inline: "
0222 putself
0223 putobject 13
0225 getlocal_WC_0 stats@2
0227 putobject :num_send_cfunc_inline
0229 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0231 getlocal_WC_0 stats@2
0233 putobject :num_send_cfunc
0235 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0237 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0239 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0241 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0243 pop
0244 getlocal_WC_0 out@0 ( 365)[Li]
0246 putchilledstring "num_send_iseq: "
0248 putself
0249 putobject 13
0251 getlocal_WC_0 stats@2
0253 putobject :num_send_iseq
0255 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0257 getlocal_WC_0 stats@2
0259 putobject :num_send
0261 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0263 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0265 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0267 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0269 pop
0270 getlocal_WC_0 out@0 ( 366)[Li]
0272 putchilledstring "num_send_iseq_leaf: "
0274 putself
0275 putobject 13
0277 getlocal_WC_0 stats@2
0279 putobject :num_send_iseq_leaf
0281 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0283 getlocal_WC_0 stats@2
0285 putobject :num_send_iseq
0287 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0289 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0291 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0293 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0295 pop
0296 getlocal_WC_0 out@0 ( 367)[Li]
0298 putchilledstring "num_send_iseq_inline: "
0300 putself
0301 putobject 13
0303 getlocal_WC_0 stats@2
0305 putobject :num_send_iseq_inline
0307 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0309 getlocal_WC_0 stats@2
0311 putobject :num_send_iseq
0313 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0315 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0317 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0319 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0321 pop
0322 getlocal_WC_0 stats@2 ( 368)[Li]
0324 putobject :num_send_x86_rel32
0326 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0328 putobject_INT2FIX_0_
0329 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0332 branchif 346
0334 getlocal_WC_0 stats@2
0336 putobject :num_send_x86_reg
0338 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0340 putobject_INT2FIX_0_
0341 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0344 branchunless 386
0346 getlocal_WC_0 out@0 ( 369)[Li]
0348 putchilledstring "num_send_x86_rel32: "
0350 putself
0351 putobject 13
0353 getlocal_WC_0 stats@2
0355 putobject :num_send_x86_rel32
0357 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0359 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0361 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0363 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0365 pop
0366 getlocal_WC_0 out@0 ( 370)[Li]
0368 putchilledstring "num_send_x86_reg: "
0370 putself
0371 putobject 13
0373 getlocal_WC_0 stats@2
0375 putobject :num_send_x86_reg
0377 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0379 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0381 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0383 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0385 pop
0386 getlocal_WC_0 out@0 ( 372)[Li]
0388 putchilledstring "num_getivar_megamorphic: "
0390 putself
0391 putobject 11
0393 getlocal_WC_0 stats@2
0395 putobject :num_getivar_megamorphic
0397 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0399 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0401 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0403 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0405 pop
0406 getlocal_WC_0 out@0 ( 373)[Li]
0408 putchilledstring "num_setivar_megamorphic: "
0410 putself
0411 putobject 11
0413 getlocal_WC_0 stats@2
0415 putobject :num_setivar_megamorphic
0417 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0419 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0421 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0423 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0425 pop
0426 getlocal_WC_0 out@0 ( 374)[Li]
0428 putchilledstring "num_opt_case_megamorphic: "
0430 putself
0431 putobject 10
0433 getlocal_WC_0 stats@2
0435 putobject :num_opt_case_dispatch_megamorphic
0437 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0439 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0441 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0443 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0445 pop
0446 getlocal_WC_0 out@0 ( 375)[Li]
0448 putchilledstring "num_throw: "
0450 putself
0451 putobject 13
0453 getlocal_WC_0 stats@2
0455 putobject :num_throw
0457 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0459 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0461 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0463 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0465 pop
0466 getlocal_WC_0 out@0 ( 376)[Li]
0468 putchilledstring "num_throw_break: "
0470 putself
0471 putobject 13
0473 getlocal_WC_0 stats@2
0475 putobject :num_throw_break
0477 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0479 getlocal_WC_0 stats@2
0481 putobject :num_throw
0483 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0485 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0487 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0489 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0491 pop
0492 getlocal_WC_0 out@0 ( 377)[Li]
0494 putchilledstring "num_throw_retry: "
0496 putself
0497 putobject 13
0499 getlocal_WC_0 stats@2
0501 putobject :num_throw_retry
0503 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0505 getlocal_WC_0 stats@2
0507 putobject :num_throw
0509 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0511 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0513 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0515 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0517 pop
0518 getlocal_WC_0 out@0 ( 378)[Li]
0520 putchilledstring "num_throw_return: "
0522 putself
0523 putobject 13
0525 getlocal_WC_0 stats@2
0527 putobject :num_throw_return
0529 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0531 getlocal_WC_0 stats@2
0533 putobject :num_throw
0535 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0537 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0539 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0541 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0543 pop
0544 getlocal_WC_0 out@0 ( 379)[Li]
0546 putchilledstring "num_lazy_frame_check: "
0548 putself
0549 putobject 13
0551 getlocal_WC_0 stats@2
0553 putobject :num_lazy_frame_check
0555 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0557 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0559 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0561 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0563 pop
0564 getlocal_WC_0 out@0 ( 380)[Li]
0566 putchilledstring "num_lazy_frame_push: "
0568 putself
0569 putobject 13
0571 getlocal_WC_0 stats@2
0573 putobject :num_lazy_frame_push
0575 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0577 getlocal_WC_0 stats@2
0579 putobject :num_lazy_frame_check
0581 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0583 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0585 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0587 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0589 pop
0590 getlocal_WC_0 out@0 ( 381)[Li]
0592 putchilledstring "lazy_frame_count: "
0594 putself
0595 putobject 13
0597 getlocal_WC_0 stats@2
0599 putobject :lazy_frame_count
0601 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0603 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0605 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0607 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0609 pop
0610 getlocal_WC_0 out@0 ( 382)[Li]
0612 putchilledstring "lazy_frame_failure: "
0614 putself
0615 putobject 13
0617 getlocal_WC_0 stats@2
0619 putobject :lazy_frame_failure
0621 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0623 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0625 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0627 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0629 pop
0630 getlocal_WC_0 out@0 ( 384)[Li]
0632 putchilledstring "iseq_stack_too_large: "
0634 putself
0635 putobject 13
0637 getlocal_WC_0 stats@2
0639 putobject :iseq_stack_too_large
0641 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0643 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0645 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0647 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0649 pop
0650 getlocal_WC_0 out@0 ( 385)[Li]
0652 putchilledstring "iseq_too_long: "
0654 putself
0655 putobject 13
0657 getlocal_WC_0 stats@2
0659 putobject :iseq_too_long
0661 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0663 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0665 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0667 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0669 pop
0670 getlocal_WC_0 out@0 ( 386)[Li]
0672 putchilledstring "temp_reg_opnd: "
0674 putself
0675 putobject 13
0677 getlocal_WC_0 stats@2
0679 putobject :temp_reg_opnd
0681 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0683 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0685 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0687 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0689 pop
0690 getlocal_WC_0 out@0 ( 387)[Li]
0692 putchilledstring "temp_mem_opnd: "
0694 putself
0695 putobject 13
0697 getlocal_WC_0 stats@2
0699 putobject :temp_mem_opnd
0701 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0703 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0705 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0707 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0709 pop
0710 getlocal_WC_0 out@0 ( 388)[Li]
0712 putchilledstring "temp_spill: "
0714 putself
0715 putobject 13
0717 getlocal_WC_0 stats@2
0719 putobject :temp_spill
0721 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0723 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0725 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0727 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0729 pop
0730 getlocal_WC_0 out@0 ( 389)[Li]
0732 putchilledstring "bindings_allocations: "
0734 putself
0735 putobject 13
0737 getlocal_WC_0 stats@2
0739 putobject :binding_allocations
0741 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0743 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0745 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0747 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0749 pop
0750 getlocal_WC_0 out@0 ( 390)[Li]
0752 putchilledstring "bindings_set: "
0754 putself
0755 putobject 13
0757 getlocal_WC_0 stats@2
0759 putobject :binding_set
0761 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0763 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0765 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0767 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0769 pop
0770 getlocal_WC_0 compilation_failure@3 ( 391)[Li]
0772 putobject_INT2FIX_0_
0773 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0776 branchunless 794
0778 getlocal_WC_0 out@0
0780 putchilledstring "compilation_failure: "
0782 putself
0783 putobject 13
0785 getlocal_WC_0 compilation_failure@3
0787 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0789 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0791 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0793 pop
0794 getlocal_WC_0 out@0 ( 392)[Li]
0796 putchilledstring "live_iseq_count: "
0798 putself
0799 putobject 13
0801 getlocal_WC_0 stats@2
0803 putobject :live_iseq_count
0805 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0807 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0809 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0811 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0813 pop
0814 getlocal_WC_0 out@0 ( 393)[Li]
0816 putchilledstring "iseq_alloc_count: "
0818 putself
0819 putobject 13
0821 getlocal_WC_0 stats@2
0823 putobject :iseq_alloc_count
0825 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0827 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0829 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0831 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0833 pop
0834 getlocal_WC_0 out@0 ( 394)[Li]
0836 putchilledstring "compiled_iseq_entry: "
0838 putself
0839 putobject 13
0841 getlocal_WC_0 stats@2
0843 putobject :compiled_iseq_entry
0845 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0847 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0849 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0851 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0853 pop
0854 getlocal_WC_0 out@0 ( 395)[Li]
0856 putchilledstring "cold_iseq_entry: "
0858 putself
0859 putobject 13
0861 getlocal_WC_0 stats@2
0863 putobject :cold_iseq_entry
0865 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0867 getlocal_WC_0 stats@2
0869 putobject :compiled_iseq_entry
0871 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0873 getlocal_WC_0 stats@2
0875 putobject :cold_iseq_entry
0877 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0879 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0881 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0883 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0885 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0887 pop
0888 getlocal_WC_0 out@0 ( 396)[Li]
0890 putchilledstring "compiled_iseq_count: "
0892 putself
0893 putobject 13
0895 getlocal_WC_0 stats@2
0897 putobject :compiled_iseq_count
0899 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0901 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0903 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0905 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0907 pop
0908 getlocal_WC_0 out@0 ( 397)[Li]
0910 putchilledstring "compiled_blockid_count:"
0912 putself
0913 putobject 13
0915 getlocal_WC_0 stats@2
0917 putobject :compiled_blockid_count
0919 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0921 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0923 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0925 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0927 pop
0928 getlocal_WC_0 out@0 ( 398)[Li]
0930 putchilledstring "compiled_block_count: "
0932 putself
0933 putobject 13
0935 getlocal_WC_0 stats@2
0937 putobject :compiled_block_count
0939 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0941 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0943 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0945 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0947 pop
0948 getlocal_WC_0 out@0 ( 399)[Li]
0950 putchilledstring "inline_block_count: "
0952 putself
0953 putobject 13
0955 getlocal_WC_0 stats@2
0957 putobject :inline_block_count
0959 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0961 getlocal_WC_0 stats@2
0963 putobject :compiled_block_count
0965 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0967 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0969 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0971 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0973 pop
0974 getlocal_WC_0 out@0 ( 400)[Li]
0976 putchilledstring "deleted_defer_block_count:"
0978 putself
0979 putobject 10
0981 getlocal_WC_0 stats@2
0983 putobject :deleted_defer_block_count
0985 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0987 getlocal_WC_0 stats@2
0989 putobject :compiled_block_count
0991 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0993 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0995 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0997 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0999 pop
1000 getlocal_WC_0 stats@2 ( 401)[Li]
1002 putobject :compiled_blockid_count
1004 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1006 putobject_INT2FIX_0_
1007 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
1010 branchunless 1044
1012 getlocal_WC_0 out@0 ( 402)[Li]
1014 putchilledstring "versions_per_block: "
1016 putself
1017 putobject 13
1019 putchilledstring "%4.3f"
1021 getlocal_WC_0 stats@2
1023 putobject :compiled_block_count
1025 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1027 getlocal_WC_0 stats@2
1029 putobject :compiled_blockid_count
1031 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1033 opt_send_without_block <calldata!mid:fdiv, argc:1, ARGS_SIMPLE>
1035 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
1037 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1039 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1041 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1043 pop
1044 getlocal_WC_0 out@0 ( 404)[Li]
1046 putchilledstring "max_inline_versions: "
1048 putself
1049 putobject 13
1051 getlocal_WC_0 stats@2
1053 putobject :max_inline_versions
1055 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1057 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1059 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1061 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1063 pop
1064 getlocal_WC_0 out@0 ( 405)[Li]
1066 putchilledstring "compiled_branch_count: "
1068 putself
1069 putobject 13
1071 getlocal_WC_0 stats@2
1073 putobject :compiled_branch_count
1075 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1077 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1079 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1081 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1083 pop
1084 getlocal_WC_0 out@0 ( 407)[Li]
1086 putchilledstring "yjit_active_ms: "
1088 putself
1089 putobject 13
1091 getlocal_WC_0 stats@2
1093 putobject :yjit_active_ns
1095 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1097 putobject 10
1099 putobject 6
1101 opt_send_without_block <calldata!mid:**, argc:1, ARGS_SIMPLE>
1103 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
1105 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1107 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1109 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1111 pop
1112 getlocal_WC_0 out@0 ( 408)[Li]
1114 putchilledstring "compile_time_ms: "
1116 putself
1117 putobject 13
1119 getlocal_WC_0 stats@2
1121 putobject :compile_time_ns
1123 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1125 putobject 10
1127 putobject 6
1129 opt_send_without_block <calldata!mid:**, argc:1, ARGS_SIMPLE>
1131 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
1133 getlocal_WC_0 stats@2
1135 putobject :yjit_active_ns
1137 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1139 putobject 10
1141 putobject 6
1143 opt_send_without_block <calldata!mid:**, argc:1, ARGS_SIMPLE>
1145 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
1147 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
1149 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1151 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1153 pop
1154 getlocal_WC_0 out@0 ( 409)[Li]
1156 putchilledstring "block_next_count: "
1158 putself
1159 putobject 13
1161 getlocal_WC_0 stats@2
1163 putobject :block_next_count
1165 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1167 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1169 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1171 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1173 pop
1174 getlocal_WC_0 out@0 ( 410)[Li]
1176 putchilledstring "defer_count: "
1178 putself
1179 putobject 13
1181 getlocal_WC_0 stats@2
1183 putobject :defer_count
1185 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1187 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1189 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1191 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1193 pop
1194 getlocal_WC_0 out@0 ( 411)[Li]
1196 putchilledstring "defer_empty_count: "
1198 putself
1199 putobject 13
1201 getlocal_WC_0 stats@2
1203 putobject :defer_empty_count
1205 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1207 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1209 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1211 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1213 pop
1214 getlocal_WC_0 out@0 ( 413)[Li]
1216 putchilledstring "branch_insn_count: "
1218 putself
1219 putobject 13
1221 getlocal_WC_0 stats@2
1223 putobject :branch_insn_count
1225 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1227 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1229 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1231 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1233 pop
1234 getlocal_WC_0 out@0 ( 414)[Li]
1236 putchilledstring "branch_known_count: "
1238 putself
1239 putobject 13
1241 getlocal_WC_0 stats@2
1243 putobject :branch_known_count
1245 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1247 getlocal_WC_0 stats@2
1249 putobject :branch_insn_count
1251 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1253 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
1255 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1257 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1259 pop
1260 getlocal_WC_0 out@0 ( 416)[Li]
1262 putchilledstring "freed_iseq_count: "
1264 putself
1265 putobject 13
1267 getlocal_WC_0 stats@2
1269 putobject :freed_iseq_count
1271 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1273 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1275 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1277 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1279 pop
1280 getlocal_WC_0 out@0 ( 417)[Li]
1282 putchilledstring "invalidation_count: "
1284 putself
1285 putobject 13
1287 getlocal_WC_0 stats@2
1289 putobject :invalidation_count
1291 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1293 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1295 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1297 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1299 pop
1300 getlocal_WC_0 out@0 ( 418)[Li]
1302 putchilledstring "inline_code_size: "
1304 putself
1305 putobject 13
1307 getlocal_WC_0 stats@2
1309 putobject :inline_code_size
1311 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1313 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1315 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1317 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1319 pop
1320 getlocal_WC_0 out@0 ( 419)[Li]
1322 putchilledstring "outlined_code_size: "
1324 putself
1325 putobject 13
1327 getlocal_WC_0 stats@2
1329 putobject :outlined_code_size
1331 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1333 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1335 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1337 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1339 pop
1340 getlocal_WC_0 out@0 ( 420)[Li]
1342 putchilledstring "code_region_size: "
1344 putself
1345 putobject 13
1347 getlocal_WC_0 stats@2
1349 putobject :code_region_size
1351 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1353 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1355 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1357 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1359 pop
1360 getlocal_WC_0 out@0 ( 421)[Li]
1362 putchilledstring "code_region_overhead: "
1364 putself
1365 putobject 13
1367 getlocal_WC_0 code_region_overhead@4
1369 getlocal_WC_0 stats@2
1371 putobject :code_region_size
1373 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1375 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
1377 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1379 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1381 pop
1382 getlocal_WC_0 out@0 ( 423)[Li]
1384 putchilledstring "freed_code_size: "
1386 putself
1387 putobject 13
1389 getlocal_WC_0 stats@2
1391 putobject :freed_code_size
1393 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1395 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1397 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1399 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1401 pop
1402 getlocal_WC_0 stats@2 ( 424)[Li]
1404 putobject :yjit_alloc_size
1406 opt_send_without_block <calldata!mid:key?, argc:1, ARGS_SIMPLE>
1408 branchunless 1430
1410 getlocal_WC_0 out@0
1412 putchilledstring "yjit_alloc_size: "
1414 putself
1415 putobject 13
1417 getlocal_WC_0 stats@2
1419 putobject :yjit_alloc_size
1421 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1423 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1425 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1427 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1429 pop
1430 getlocal_WC_0 stats@2 ( 426)[Li]
1432 putobject :context_data_bytes
1434 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1436 getlocal_WC_0 stats@2
1438 putobject :num_contexts_encoded
1440 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1442 opt_send_without_block <calldata!mid:fdiv, argc:1, ARGS_SIMPLE>
1444 setlocal_WC_0 bytes_per_context@5
1446 getlocal_WC_0 out@0 ( 427)[Li]
1448 putchilledstring "context_data_bytes: "
1450 putself
1451 putobject 13
1453 getlocal_WC_0 stats@2
1455 putobject :context_data_bytes
1457 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1459 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1461 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1463 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1465 pop
1466 getlocal_WC_0 out@0 ( 428)[Li]
1468 putchilledstring "context_cache_bytes: "
1470 putself
1471 putobject 13
1473 getlocal_WC_0 stats@2
1475 putobject :context_cache_bytes
1477 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1479 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1481 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1483 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1485 pop
1486 getlocal_WC_0 out@0 ( 429)[Li]
1488 putchilledstring "num_contexts_encoded: "
1490 putself
1491 putobject 13
1493 getlocal_WC_0 stats@2
1495 putobject :num_contexts_encoded
1497 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1499 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1501 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1503 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1505 pop
1506 getlocal_WC_0 out@0 ( 430)[Li]
1508 putchilledstring "bytes_per_context: "
1510 putchilledstring "%13.2f"
1512 getlocal_WC_0 bytes_per_context@5
1514 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
1516 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1518 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1520 pop
1521 getlocal_WC_0 out@0 ( 431)[Li]
1523 putchilledstring "context_cache_hit_rate:"
1525 putself
1526 putobject 13
1528 getlocal_WC_0 stats@2
1530 putobject :context_cache_hits
1532 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1534 getlocal_WC_0 stats@2
1536 putobject :num_contexts_encoded
1538 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1540 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
1542 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1544 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1546 pop
1547 getlocal_WC_0 out@0 ( 433)[Li]
1549 putchilledstring "live_page_count: "
1551 putself
1552 putobject 13
1554 getlocal_WC_0 stats@2
1556 putobject :live_page_count
1558 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1560 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1562 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1564 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1566 pop
1567 getlocal_WC_0 out@0 ( 434)[Li]
1569 putchilledstring "freed_page_count: "
1571 putself
1572 putobject 13
1574 getlocal_WC_0 stats@2
1576 putobject :freed_page_count
1578 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1580 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1582 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1584 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1586 pop
1587 getlocal_WC_0 out@0 ( 435)[Li]
1589 putchilledstring "code_gc_count: "
1591 putself
1592 putobject 13
1594 getlocal_WC_0 stats@2
1596 putobject :code_gc_count
1598 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1600 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1602 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1604 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1606 pop
1607 getlocal_WC_0 out@0 ( 436)[Li]
1609 putchilledstring "num_gc_obj_refs: "
1611 putself
1612 putobject 13
1614 getlocal_WC_0 stats@2
1616 putobject :num_gc_obj_refs
1618 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1620 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1622 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1624 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1626 pop
1627 getlocal_WC_0 out@0 ( 437)[Li]
1629 putchilledstring "object_shape_count: "
1631 putself
1632 putobject 13
1634 getlocal_WC_0 stats@2
1636 putobject :object_shape_count
1638 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1640 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1642 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1644 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1646 pop
1647 getlocal_WC_0 out@0 ( 438)[Li]
1649 putchilledstring "side_exit_count: "
1651 putself
1652 putobject 13
1654 getlocal_WC_0 stats@2
1656 putobject :side_exit_count
1658 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1660 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1662 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1664 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1666 pop
1667 getlocal_WC_0 out@0 ( 439)[Li]
1669 putchilledstring "total_exit_count: "
1671 putself
1672 putobject 13
1674 getlocal_WC_0 stats@2
1676 putobject :total_exit_count
1678 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1680 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1682 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1684 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1686 pop
1687 getlocal_WC_0 stats@2 ( 440)[Li]
1689 putobject :total_insns_count
1691 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1693 branchunless 1715
1695 getlocal_WC_0 out@0
1697 putchilledstring "total_insns_count: "
1699 putself
1700 putobject 13
1702 getlocal_WC_0 stats@2
1704 putobject :total_insns_count
1706 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1708 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1710 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1712 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1714 pop
1715 getlocal_WC_0 stats@2 ( 441)[Li]
1717 putobject :vm_insns_count
1719 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1721 branchunless 1743
1723 getlocal_WC_0 out@0
1725 putchilledstring "vm_insns_count: "
1727 putself
1728 putobject 13
1730 getlocal_WC_0 stats@2
1732 putobject :vm_insns_count
1734 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1736 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1738 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1740 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1742 pop
1743 getlocal_WC_0 out@0 ( 442)[Li]
1745 putchilledstring "yjit_insns_count: "
1747 putself
1748 putobject 13
1750 getlocal_WC_0 stats@2
1752 putobject :yjit_insns_count
1754 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1756 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
1758 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1760 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1762 pop
1763 getlocal_WC_0 stats@2 ( 443)[Li]
1765 putobject :ratio_in_yjit
1767 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1769 branchunless 1794
1771 getlocal_WC_0 out@0
1773 putchilledstring "ratio_in_yjit: "
1775 putchilledstring "%12.1f"
1777 getlocal_WC_0 stats@2
1779 putobject :ratio_in_yjit
1781 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1783 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
1785 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1787 putchilledstring "%"
1789 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1791 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1793 pop
1794 getlocal_WC_0 out@0 ( 444)[Li]
1796 putchilledstring "avg_len_in_yjit: "
1798 putchilledstring "%13.1f"
1800 getlocal_WC_0 stats@2
1802 putobject :avg_len_in_yjit
1804 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1806 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
1808 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
1810 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
1812 pop
1813 putself ( 446)[Li]
1814 getlocal_WC_0 stats@2
1816 getlocal_WC_0 out@0
1818 putchilledstring "exit_"
1820 opt_send_without_block <calldata!mid:print_sorted_exit_counts, argc:3, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000000008b010c>], FCALL|KWARG>
1822 pop
1823 putself ( 448)[Li]
1824 getlocal_WC_0 stats@2
1826 putobject :cfunc_calls
1828 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1830 getlocal_WC_0 stats@2
1832 putobject :num_send_cfunc
1834 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1836 getlocal_WC_0 out@0
1838 putchilledstring "C"
1840 opt_send_without_block <calldata!mid:print_sorted_method_calls, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000001043273d0>], FCALL|KWARG>
1842 pop
1843 putself ( 449)[Li]
1844 getlocal_WC_0 stats@2
1846 putobject :iseq_calls
1848 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1850 getlocal_WC_0 stats@2
1852 putobject :num_send_iseq
1854 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
1856 getlocal_WC_0 out@0
1858 putchilledstring "ISEQ"
1860 opt_send_without_block <calldata!mid:print_sorted_method_calls, argc:4, kw:[#<Symbol:0x00000000006a410c>,#<Symbol:0x00000001043273d0>], FCALL|KWARG>
1862 leave ( 450)[Re]
== disasm: #<ISeq:print_sorted_method_calls@<internal:yjit>:452 (452,4)-(470,7)>
local table (size: 11, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: 4@2, kwrest: -1])
[11] calls@0<Arg>[10] num_calls@1<Arg>[ 9] out@2 [ 8] type@3 [ 7] how_many@4 [ 6] left_pad@5 [ 5] ?@6 [ 4] pairs@7 [ 3] top_n_total@8[ 2] top_n_pct@9[ 1] count_width@10
0000 getlocal_WC_0 calls@0 ( 453)[LiCa]
0002 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0004 branchunless 8
0006 putnil
0007 leave [Re]
0008 getlocal_WC_0 calls@0 ( 456)[Li]
0010 send <calldata!mid:map, argc:0>, block in print_sorted_method_calls
0013 setlocal_WC_0 pairs@7
0015 getlocal_WC_0 pairs@7 ( 457)[Li]
0017 send <calldata!mid:sort_by!, argc:0>, block in print_sorted_method_calls
0020 pop
0021 getlocal_WC_0 pairs@7 ( 458)[Li]
0023 putobject_INT2FIX_0_
0024 getlocal_WC_0 how_many@4
0026 newrange 1
0028 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0030 setlocal_WC_0 pairs@7
0032 getlocal_WC_0 pairs@7 ( 460)[Li]
0034 send <calldata!mid:sum, argc:0>, block in print_sorted_method_calls
0037 setlocal_WC_0 top_n_total@8
0039 putobject 100.0 ( 461)[Li]
0041 getlocal_WC_0 top_n_total@8
0043 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0045 getlocal_WC_0 num_calls@1
0047 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0049 setlocal_WC_0 top_n_pct@9
0051 getlocal_WC_0 out@2 ( 463)[Li]
0053 putobject "Top-"
0055 getlocal_WC_0 pairs@7
0057 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0059 dup
0060 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0062 anytostring
0063 putobject " most frequent "
0065 getlocal_WC_0 type@3
0067 dup
0068 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0070 anytostring
0071 putobject " calls ("
0073 putchilledstring "%.1f"
0075 getlocal_WC_0 top_n_pct@9
0077 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0079 dup
0080 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0082 anytostring
0083 putobject "% of "
0085 getlocal_WC_0 type@3
0087 dup
0088 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0090 anytostring
0091 putobject " calls):"
0093 concatstrings 9
0095 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0097 pop
0098 putself ( 465)[Li]
0099 putobject_INT2FIX_0_
0100 getlocal_WC_0 pairs@7
0102 putobject_INT2FIX_0_
0103 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0105 putobject_INT2FIX_1_
0106 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0108 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0110 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0112 setlocal_WC_0 count_width@10
0114 getlocal_WC_0 pairs@7 ( 466)[Li]
0116 send <calldata!mid:each, argc:0>, block in print_sorted_method_calls
0119 leave ( 470)[Re]
== disasm: #<ISeq:block in print_sorted_method_calls@<internal:yjit>:456 (456,24)-(456,40)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] k@0<Arg> [ 1] v@1<Arg>
0000 getlocal_WC_0 k@0 ( 456)[LiBc]
0002 getlocal_WC_0 v@1
0004 newarray 2
0006 leave [Br]
== disasm: #<ISeq:block in print_sorted_method_calls@<internal:yjit>:457 (457,21)-(457,39)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] pair@0<AmbiguousArg>
0000 getlocal_WC_0 pair@0 ( 457)[LiBc]
0002 putobject_INT2FIX_1_
0003 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0005 opt_send_without_block <calldata!mid:-@, argc:0, ARGS_SIMPLE>
0007 leave [Br]
== disasm: #<ISeq:block in print_sorted_method_calls@<internal:yjit>:460 (460,30)-(460,53)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] name@0<Arg>[ 1] count@1<Arg>
0000 getlocal_WC_0 count@1 ( 460)[LiBc]
0002 leave [Br]
== disasm: #<ISeq:block in print_sorted_method_calls@<internal:yjit>:466 (466,17)-(469,9)>
local table (size: 3, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] name@0<Arg>[ 2] count@1<Arg>[ 1] padded_count@2
0000 putself ( 467)[LiBc]
0001 getlocal_WC_1 count_width@10
0003 getlocal_WC_0 count@1
0005 getlocal_WC_1 num_calls@1
0007 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0009 setlocal_WC_0 padded_count@2
0011 getlocal_WC_1 out@2 ( 468)[Li]
0013 putobject " "
0015 getlocal_WC_0 padded_count@2
0017 dup
0018 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0020 anytostring
0021 putobject ": "
0023 getlocal_WC_0 name@0
0025 dup
0026 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0028 anytostring
0029 concatstrings 4
0031 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0033 leave ( 469)[Br]
== disasm: #<ISeq:print_sorted_exit_counts@<internal:yjit>:472 (472,4)-(498,7)>
local table (size: 11, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 4@2, kwrest: -1])
[11] stats@0<Arg>[10] out@1 [ 9] prefix@2 [ 8] how_many@3 [ 7] left_pad@4 [ 6] ?@5 [ 5] total_exits@6[ 4] exits@7 [ 3] top_n_total@8[ 2] top_n_exit_pct@9[ 1] count_width@10
0000 getlocal_WC_0 stats@0 ( 473)[LiCa]
0002 putobject :side_exit_count
0004 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0006 setlocal_WC_0 total_exits@6
0008 getlocal_WC_0 total_exits@6 ( 475)[Li]
0010 putobject_INT2FIX_0_
0011 opt_gt <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
0013 branchunless 109
0015 newarray 0 ( 476)[Li]
0017 setlocal_WC_0 exits@7
0019 getlocal_WC_0 stats@0 ( 477)[Li]
0021 send <calldata!mid:each, argc:0>, block in print_sorted_exit_counts
0024 pop
0025 getlocal_WC_0 exits@7 ( 483)[Li]
0027 send <calldata!mid:select, argc:0>, block in print_sorted_exit_counts
0030 getlocal_WC_0 how_many@3
0032 send <calldata!mid:max_by, argc:1>, block in print_sorted_exit_counts
0035 setlocal_WC_0 exits@7
0037 getlocal_WC_0 exits@7 ( 485)[Li]
0039 send <calldata!mid:sum, argc:0>, block in print_sorted_exit_counts
0042 setlocal_WC_0 top_n_total@8
0044 putobject 100.0 ( 486)[Li]
0046 getlocal_WC_0 top_n_total@8
0048 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0050 getlocal_WC_0 total_exits@6
0052 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0054 setlocal_WC_0 top_n_exit_pct@9
0056 getlocal_WC_0 out@1 ( 488)[Li]
0058 putobject "Top-"
0060 getlocal_WC_0 exits@7
0062 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0064 dup
0065 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0067 anytostring
0068 putobject " most frequent exit ops ("
0070 putchilledstring "%.1f"
0072 getlocal_WC_0 top_n_exit_pct@9
0074 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0076 dup
0077 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0079 anytostring
0080 putobject "% of exits):"
0082 concatstrings 5
0084 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0086 pop
0087 putself ( 490)[Li]
0088 putobject_INT2FIX_0_
0089 getlocal_WC_0 exits@7
0091 putobject_INT2FIX_0_
0092 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0094 putobject_INT2FIX_1_
0095 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0097 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0099 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0101 setlocal_WC_0 count_width@10
0103 getlocal_WC_0 exits@7 ( 491)[Li]
0105 send <calldata!mid:each, argc:0>, block in print_sorted_exit_counts
0108 leave ( 498)[Re]
0109 getlocal_WC_0 out@1 ( 496)[Li]
0111 putchilledstring "total_exits: "
0113 putself
0114 putobject 13
0116 getlocal_WC_0 total_exits@6
0118 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0120 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0122 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0124 leave ( 498)[Re]
== disasm: #<ISeq:block in print_sorted_exit_counts@<internal:yjit>:477 (477,19)-(481,11)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] k@0<Arg> [ 1] v@1<Arg>
0000 getlocal_WC_0 k@0 ( 478)[LiBc]
0002 getlocal_WC_1 prefix@2
0004 opt_send_without_block <calldata!mid:start_with?, argc:1, ARGS_SIMPLE>
0006 branchunless 25
0008 getlocal_WC_1 exits@7 ( 479)[Li]
0010 getlocal_WC_0 k@0
0012 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0014 getlocal_WC_1 prefix@2
0016 opt_send_without_block <calldata!mid:delete_prefix, argc:1, ARGS_SIMPLE>
0018 getlocal_WC_0 v@1
0020 newarray 2
0022 opt_send_without_block <calldata!mid:push, argc:1, ARGS_SIMPLE>
0024 leave ( 481)[Br]
0025 putnil ( 479)
0026 leave ( 481)[Br]
== disasm: #<ISeq:block in print_sorted_exit_counts@<internal:yjit>:483 (483,29)-(483,57)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _name@0<Arg>[ 1] count@1<Arg>
0000 getlocal_WC_0 count@1 ( 483)[LiBc]
0002 putobject_INT2FIX_0_
0003 opt_gt <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
0005 leave [Br]
== disasm: #<ISeq:block in print_sorted_exit_counts@<internal:yjit>:483 (483,75)-(483,99)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _name@0<Arg>[ 1] count@1<Arg>
0000 getlocal_WC_0 count@1 ( 483)[LiBc]
0002 leave [Br]
== disasm: #<ISeq:block in print_sorted_exit_counts@<internal:yjit>:485 (485,32)-(485,55)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] name@0<Arg>[ 1] count@1<Arg>
0000 getlocal_WC_0 count@1 ( 485)[LiBc]
0002 leave [Br]
== disasm: #<ISeq:block in print_sorted_exit_counts@<internal:yjit>:491 (491,19)-(494,11)>
local table (size: 3, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] name@0<Arg>[ 2] count@1<Arg>[ 1] padded_count@2
0000 putself ( 492)[LiBc]
0001 getlocal_WC_1 count_width@10
0003 getlocal_WC_0 count@1
0005 getlocal_WC_1 total_exits@6
0007 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0009 setlocal_WC_0 padded_count@2
0011 getlocal_WC_1 out@1 ( 493)[Li]
0013 putobject " "
0015 getlocal_WC_0 padded_count@2
0017 dup
0018 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0020 anytostring
0021 putobject ": "
0023 getlocal_WC_0 name@0
0025 dup
0026 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0028 anytostring
0029 concatstrings 4
0031 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0033 leave ( 494)[Br]
== disasm: #<ISeq:print_counters@<internal:yjit>:500 (500,4)-(525,7)>
local table (size: 8, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 4@3, kwrest: -1])
[ 8] counters@0<Arg>[ 7] out@1 [ 6] prefix@2 [ 5] prompt@3 [ 4] optional@4 [ 3] ?@5 [ 2] longest_name_length@6[ 1] total@7
0000 getlocal_WC_0 counters@0 ( 501)[LiCa]
0002 send <calldata!mid:filter, argc:0>, block in print_counters
0005 setlocal_WC_0 counters@0
0007 getlocal_WC_0 counters@0 ( 502)[Li]
0009 send <calldata!mid:filter!, argc:0>, block in print_counters
0012 pop
0013 getlocal_WC_0 counters@0 ( 503)[Li]
0015 send <calldata!mid:transform_keys!, argc:0>, block in print_counters
0018 pop
0019 getlocal_WC_0 counters@0 ( 505)[Li]
0021 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0023 branchunless 47
0025 getlocal_WC_0 optional@4 ( 506)[Li]
0027 branchif 43
0029 getlocal_WC_0 out@1 ( 507)[Li]
0031 getlocal_WC_0 prompt@3
0033 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0035 pop
0036 getlocal_WC_0 out@1 ( 508)[Li]
0038 putchilledstring " (all relevant counters are zero)"
0040 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0042 pop
0043 putnil ( 510)[Li]
0044 leave [Re]
0045 jump 54 ( 505)
0047 getlocal_WC_0 out@1 ( 512)[Li]
0049 getlocal_WC_0 prompt@3
0051 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0053 pop
0054 getlocal_WC_0 counters@0 ( 515)[Li]
0056 opt_send_without_block <calldata!mid:to_a, argc:0, ARGS_SIMPLE>
0058 setlocal_WC_0 counters@0
0060 getlocal_WC_0 counters@0 ( 516)[Li]
0062 send <calldata!mid:sort_by!, argc:0>, block in print_counters
0065 pop
0066 getlocal_WC_0 counters@0 ( 517)[Li]
0068 send <calldata!mid:max_by, argc:0>, block in print_counters
0071 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0073 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0075 setlocal_WC_0 longest_name_length@6
0077 getlocal_WC_0 counters@0 ( 518)[Li]
0079 send <calldata!mid:sum, argc:0>, block in print_counters
0082 setlocal_WC_0 total@7
0084 getlocal_WC_0 counters@0 ( 520)[Li]
0086 send <calldata!mid:reverse_each, argc:0>, block in print_counters
0089 leave ( 525)[Re]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:501 (501,33)-(501,69)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] key@0<Arg> [ 1] _@1<Arg>
0000 getlocal_WC_0 key@0 ( 501)[LiBc]
0002 getlocal_WC_1 prefix@2
0004 opt_send_without_block <calldata!mid:start_with?, argc:1, ARGS_SIMPLE>
0006 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:502 (502,23)-(502,48)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _@0<Arg> [ 1] value@1<Arg>
0000 getlocal_WC_0 value@1 ( 502)[LiBc]
0002 putobject_INT2FIX_0_
0003 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0006 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:503 (503,31)-(503,71)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] key@0<AmbiguousArg>
0000 getlocal_WC_0 key@0 ( 503)[LiBc]
0002 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0004 getlocal_WC_1 prefix@2
0006 opt_send_without_block <calldata!mid:delete_prefix, argc:1, ARGS_SIMPLE>
0008 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:516 (516,24)-(516,62)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] ?@0<AmbiguousArg>[ 2] _@1 [ 1] counter_value@2
0000 getlocal_WC_0 ?@0 ( 516)
0002 expandarray 2, 0
0005 setlocal_WC_0 _@1
0007 setlocal_WC_0 counter_value@2
0009 nop [Bc]
0010 getlocal_WC_0 counter_value@2[Li]
0012 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:517 (517,44)-(517,71)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] ?@0<AmbiguousArg>[ 2] name@1 [ 1] _@2
0000 getlocal_WC_0 ?@0 ( 517)
0002 expandarray 2, 0
0005 setlocal_WC_0 name@1
0007 setlocal_WC_0 _@2
0009 nop [Bc]
0010 getlocal_WC_0 name@1[Li]
0012 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0014 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:518 (518,27)-(518,65)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] ?@0<AmbiguousArg>[ 2] _@1 [ 1] counter_value@2
0000 getlocal_WC_0 ?@0 ( 518)
0002 expandarray 2, 0
0005 setlocal_WC_0 _@1
0007 setlocal_WC_0 counter_value@2
0009 nop [Bc]
0010 getlocal_WC_0 counter_value@2[Li]
0012 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:yjit>:520 (520,28)-(524,9)>
local table (size: 5, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 5] ?@0<AmbiguousArg>[ 4] name@1 [ 3] value@2 [ 2] padded_name@3[ 1] padded_count@4
0000 getlocal_WC_0 ?@0 ( 520)
0002 expandarray 2, 0
0005 setlocal_WC_0 name@1
0007 setlocal_WC_0 value@2
0009 nop [Bc]
0010 getlocal_WC_0 name@1 ( 521)[Li]
0012 getlocal_WC_1 longest_name_length@6
0014 putchilledstring " "
0016 opt_send_without_block <calldata!mid:rjust, argc:2, ARGS_SIMPLE>
0018 setlocal_WC_0 padded_name@3
0020 putself ( 522)[Li]
0021 putobject 10
0023 getlocal_WC_0 value@2
0025 getlocal_WC_1 total@7
0027 opt_send_without_block <calldata!mid:format_number_pct, argc:3, FCALL|ARGS_SIMPLE>
0029 setlocal_WC_0 padded_count@4
0031 getlocal_WC_1 out@1 ( 523)[Li]
0033 putobject " "
0035 getlocal_WC_0 padded_name@3
0037 dup
0038 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0040 anytostring
0041 putobject ": "
0043 getlocal_WC_0 padded_count@4
0045 dup
0046 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0048 anytostring
0049 concatstrings 4
0051 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0053 leave ( 524)[Br]
== disasm: #<ISeq:format_number@<internal:yjit>:528 (528,4)-(533,7)>
local table (size: 4, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] pad@0<Arg> [ 3] number@1<Arg>[ 2] s@2 [ 1] i@3
0000 getlocal_WC_0 number@1 ( 529)[LiCa]
0002 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0004 setlocal_WC_0 s@2
0006 getlocal_WC_0 s@2 ( 530)[Li]
0008 putchilledstring "."
0010 opt_send_without_block <calldata!mid:index, argc:1, ARGS_SIMPLE>
0012 dup
0013 branchif 20
0015 pop
0016 getlocal_WC_0 s@2
0018 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0020 setlocal_WC_0 i@3
0022 jump 44 ( 531)[Li]
0024 putnil
0025 pop
0026 jump 44
0028 getlocal_WC_0 s@2
0030 getlocal_WC_0 i@3
0032 putobject 3
0034 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0036 dup
0037 setlocal_WC_0 i@3
0039 putchilledstring ","
0041 opt_send_without_block <calldata!mid:insert, argc:2, ARGS_SIMPLE>
0043 pop
0044 getlocal_WC_0 i@3
0046 putobject 3
0048 opt_gt <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
0050 branchif 28
0052 putnil
0053 pop
0054 getlocal_WC_0 s@2 ( 532)[Li]
0056 getlocal_WC_0 pad@0
0058 putchilledstring " "
0060 opt_send_without_block <calldata!mid:rjust, argc:2, ARGS_SIMPLE>
0062 leave ( 533)[Re]
== disasm: #<ISeq:format_number_pct@<internal:yjit>:536 (536,4)-(546,7)>
local table (size: 6, argc: 3 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 6] pad@0<Arg> [ 5] number@1<Arg>[ 4] total@2<Arg>[ 3] padded_count@3[ 2] percentage@4[ 1] formatted_pct@5
0000 putself ( 537)[LiCa]
0001 getlocal_WC_0 pad@0
0003 getlocal_WC_0 number@1
0005 opt_send_without_block <calldata!mid:format_number, argc:2, FCALL|ARGS_SIMPLE>
0007 setlocal_WC_0 padded_count@3
0009 getlocal_WC_0 total@2 ( 539)[Li]
0011 putobject_INT2FIX_0_
0012 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0015 branchunless 56
0017 getlocal_WC_0 number@1 ( 540)[Li]
0019 getlocal_WC_0 total@2
0021 opt_send_without_block <calldata!mid:fdiv, argc:1, ARGS_SIMPLE>
0023 putobject 100
0025 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0027 setlocal_WC_0 percentage@4
0029 putchilledstring "%4.1f%%" ( 541)[Li]
0031 getlocal_WC_0 percentage@4
0033 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0035 setlocal_WC_0 formatted_pct@5
0037 getlocal_WC_0 padded_count@3 ( 542)[Li]
0039 dup
0040 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0042 anytostring
0043 putobject " ("
0045 getlocal_WC_0 formatted_pct@5
0047 dup
0048 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0050 anytostring
0051 putobject ")"
0053 concatstrings 4
0055 leave ( 546)[Re]
0056 putobject "" ( 544)[Li]
0058 getlocal_WC_0 padded_count@3
0060 dup
0061 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0063 anytostring
0064 concatstrings 2
0066 leave ( 546)[Re]
== disasm: #<ISeq:<internal:zjit>@<internal:zjit>:9 (9,0)-(289,3)>
0000 opt_getconstant_path <ic:0 RubyVM> ( 9)[Li]
0002 putnil
0003 defineclass :ZJIT, <module:ZJIT>, 10
0007 pop
0008 opt_getconstant_path <ic:1 RubyVM::ZJIT> ( 19)[Li]
0010 putnil
0011 defineclass :singletonclass, singleton class, 1
0015 leave
== disasm: #<ISeq:<module:ZJIT>@<internal:zjit>:9 (9,0)-(17,3)>
0000 opt_invokebuiltin_delegate <builtin!rb_zjit_print_stats_p/0>, 0( 11)[LiCl]
0003 branchunless 10
0005 putself ( 12)[Li]
0006 send <calldata!mid:at_exit, argc:0, FCALL>, block in <module:ZJIT>
0009 pop
0010 opt_invokebuiltin_delegate <builtin!rb_zjit_trace_exit_locations_enabled_p/0>, 0( 14)[Li]
0013 branchunless 20
0015 putself ( 15)[Li]
0016 send <calldata!mid:at_exit, argc:0, FCALL>, block in <module:ZJIT>
0019 leave ( 17)[En]
0020 putnil ( 15)
0021 leave ( 17)[En]
== disasm: #<ISeq:block in <module:ZJIT>@<internal:zjit>:12 (12,12)-(12,27)>
0000 putself ( 12)[LiBc]
0001 opt_send_without_block <calldata!mid:print_stats, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 leave [Br]
== disasm: #<ISeq:block in <module:ZJIT>@<internal:zjit>:15 (15,12)-(15,30)>
0000 putself ( 15)[LiBc]
0001 opt_send_without_block <calldata!mid:dump_locations, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 leave [Br]
== disasm: #<ISeq:singleton class@<internal:zjit>:19 (19,0)-(289,3)>
0000 definemethod :enabled?, enabled? ( 21)[Li]
0003 definemethod :trace_exit_locations_enabled?, trace_exit_locations_enabled?( 26)[Li]
0006 definemethod :exit_locations, exit_locations( 34)[Li]
0009 definemethod :dump_exit_locations, dump_exit_locations( 126)[Li]
0012 definemethod :stats_enabled?, stats_enabled?( 138)[Li]
0015 definemethod :stats, stats ( 143)[Li]
0018 definemethod :reset_stats!, reset_stats!( 148)[Li]
0021 definemethod :stats_string, stats_string( 153)[Li]
0024 definemethod :assert_compiles, assert_compiles( 213)[Li]
0027 putself ( 218)[Li]
0028 opt_send_without_block <calldata!mid:private, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0030 pop
0031 definemethod :print_counters, print_counters( 220)[Li]
0034 definemethod :print_counters_with_prefix, print_counters_with_prefix( 247)[Li]
0037 definemethod :number_with_delimiter, number_with_delimiter( 269)[Li]
0040 definemethod :print_stats, print_stats ( 277)[Li]
0043 definemethod :dump_locations, dump_locations( 281)[Li]
0046 putobject :dump_locations
0048 leave
== disasm: #<ISeq:enabled?@<internal:zjit>:21 (21,2)-(23,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi22/0>, 0 ( 22)[LiCa]
0003 leave ( 23)[Re]
== disasm: #<ISeq:trace_exit_locations_enabled?@<internal:zjit>:26 (26,2)-(28,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_zjit_trace_exit_locations_enabled_p/0>, 0( 27)[LiCa]
0003 leave ( 28)[Re]
== disasm: #<ISeq:exit_locations@<internal:zjit>:34 (34,2)-(110,5)>
local table (size: 12, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[12] results@0 [11] raw_samples@1[10] line_samples@2[ 9] frames@3 [ 8] samples_count@4[ 7] frame_template@5[ 6] i@6 [ 5] stack_length@7[ 4] sample_count@8[ 3] prev_frame_id@9[ 2] top_frame_id@10[ 1] top_frame_line@11
0000 putself ( 35)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 opt_invokebuiltin_delegate <builtin!rb_zjit_get_exit_locations/0>, 0( 37)[Li]
0010 setlocal_WC_0 results@0
0012 getlocal_WC_0 results@0 ( 38)[Li]
0014 putobject :raw
0016 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0018 setlocal_WC_0 raw_samples@1
0020 getlocal_WC_0 results@0 ( 39)[Li]
0022 putobject :lines
0024 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0026 setlocal_WC_0 line_samples@2
0028 getlocal_WC_0 results@0 ( 40)[Li]
0030 putobject :frames
0032 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0034 setlocal_WC_0 frames@3
0036 putobject_INT2FIX_0_ ( 41)[Li]
0037 setlocal_WC_0 samples_count@4
0039 duphash {samples: 0, total_samples: 0}( 44)[Li]
0041 putspecialobject 1
0043 swap
0044 putobject :edges
0046 newhash 0
0048 putobject :name
0050 putself
0051 opt_send_without_block <calldata!mid:name, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0053 putobject :file
0055 putchilledstring "nonexistent.def"
0057 putobject :line
0059 putnil
0060 putobject :lines
0062 newhash 0
0064 opt_send_without_block <calldata!mid:core#hash_merge_ptr, argc:11, ARGS_SIMPLE>
0066 setlocal_WC_0 frame_template@5
0068 opt_getconstant_path <ic:0 RubyVM::INSTRUCTION_NAMES>( 47)[Li]
0070 send <calldata!mid:each_with_index, argc:0>, block in exit_locations
0073 pop
0074 putobject_INT2FIX_0_ ( 60)[Li]
0075 setlocal_WC_0 i@6
0077 jump 248 ( 61)[Li]
0079 putnil
0080 pop
0081 jump 248
0083 getlocal_WC_0 raw_samples@1 ( 62)[Li]
0085 getlocal_WC_0 i@6
0087 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0089 setlocal_WC_0 stack_length@7
0091 getlocal_WC_0 i@6 ( 63)[Li]
0093 putobject_INT2FIX_1_
0094 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0096 setlocal_WC_0 i@6
0098 getlocal_WC_0 raw_samples@1 ( 65)[Li]
0100 getlocal_WC_0 i@6
0102 getlocal_WC_0 stack_length@7
0104 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0106 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0108 setlocal_WC_0 sample_count@8
0110 putnil ( 67)[Li]
0111 setlocal_WC_0 prev_frame_id@9
0113 getlocal_WC_0 stack_length@7 ( 68)[Li]
0115 send <calldata!mid:times, argc:0>, block in exit_locations
0118 pop
0119 getlocal_WC_0 i@6 ( 87)[Li]
0121 getlocal_WC_0 stack_length@7
0123 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0125 setlocal_WC_0 i@6
0127 getlocal_WC_0 prev_frame_id@9 ( 89)[Li]
0129 setlocal_WC_0 top_frame_id@10
0131 putobject_INT2FIX_1_ ( 90)[Li]
0132 setlocal_WC_0 top_frame_line@11
0134 getlocal_WC_0 frames@3 ( 92)[Li]
0136 getlocal_WC_0 top_frame_id@10
0138 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0140 putobject :samples
0142 dupn 2
0144 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0146 getlocal_WC_0 sample_count@8
0148 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0150 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0152 pop
0153 getlocal_WC_0 frames@3 ( 93)[Li]
0155 getlocal_WC_0 top_frame_id@10
0157 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0159 putobject :lines
0161 dupn 2
0163 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0165 dup
0166 branchif 176
0168 pop
0169 newhash 0
0171 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0173 pop
0174 jump 178
0176 adjuststack 3
0178 getlocal_WC_0 frames@3 ( 94)[Li]
0180 getlocal_WC_0 top_frame_id@10
0182 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0184 putobject :lines
0186 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0188 getlocal_WC_0 top_frame_line@11
0190 dupn 2
0192 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0194 dup
0195 branchif 205
0197 pop
0198 duparray [0, 0]
0200 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0202 pop
0203 jump 207
0205 adjuststack 3
0207 getlocal_WC_0 frames@3 ( 95)[Li]
0209 getlocal_WC_0 top_frame_id@10
0211 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0213 putobject :lines
0215 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0217 getlocal_WC_0 top_frame_line@11
0219 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0221 putobject_INT2FIX_1_
0222 dupn 2
0224 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0226 getlocal_WC_0 sample_count@8
0228 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0230 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0232 pop
0233 getlocal_WC_0 samples_count@4 ( 97)[Li]
0235 getlocal_WC_0 sample_count@8
0237 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0239 setlocal_WC_0 samples_count@4
0241 getlocal_WC_0 i@6 ( 98)[Li]
0243 putobject_INT2FIX_1_
0244 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0246 setlocal_WC_0 i@6
0248 getlocal_WC_0 i@6 ( 61)
0250 getlocal_WC_0 raw_samples@1
0252 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0254 opt_lt <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
0256 branchif 83
0258 putnil
0259 pop
0260 getlocal_WC_0 results@0 ( 101)[Li]
0262 putobject :samples
0264 getlocal_WC_0 samples_count@4
0266 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0268 pop
0269 getlocal_WC_0 results@0 ( 104)[Li]
0271 putobject :missed_samples
0273 putobject_INT2FIX_0_
0274 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0276 pop
0277 getlocal_WC_0 results@0 ( 105)[Li]
0279 putobject :gc_samples
0281 putobject_INT2FIX_0_
0282 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0284 pop
0285 getlocal_WC_0 results@0 ( 107)[Li]
0287 putobject :frames
0289 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0291 send <calldata!mid:reject!, argc:0>, block in exit_locations
0294 pop
0295 getlocal_WC_0 results@0 ( 109)[Li]
0297 leave ( 110)[Re]
== disasm: #<ISeq:block in exit_locations@<internal:zjit>:47 (47,46)-(49,7)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] name@0<Arg>[ 1] frame_id@1<Arg>
0000 putnil ( 48)[LiBc]
0001 getlocal_WC_1 frames@3
0003 getlocal_WC_0 frame_id@1
0005 getlocal_WC_1 frame_template@5
0007 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0009 send <calldata!mid:tap, argc:0>, block (2 levels) in exit_locations
0012 setn 3
0014 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0016 pop
0017 leave ( 49)[Br]
== disasm: #<ISeq:block (2 levels) in exit_locations@<internal:zjit>:48 (48,48)-(48,71)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] h@0<AmbiguousArg>
0000 putnil ( 48)[LiBc]
0001 getlocal_WC_0 h@0
0003 putobject :name
0005 getlocal_WC_1 name@0
0007 setn 3
0009 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0011 pop
0012 leave [Br]
== disasm: #<ISeq:block in exit_locations@<internal:zjit>:68 (68,25)-(85,9)>
local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] idx@0<AmbiguousArg>[ 3] frame_id@1 [ 2] prev_frame@2[ 1] frame_info@3
0000 getlocal_WC_0 idx@0 ( 69)[LiBc]
0002 getlocal_WC_1 i@6
0004 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0006 setlocal_WC_0 idx@0
0008 getlocal_WC_1 raw_samples@1 ( 70)[Li]
0010 getlocal_WC_0 idx@0
0012 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0014 setlocal_WC_0 frame_id@1
0016 getlocal_WC_1 prev_frame_id@9 ( 72)[Li]
0018 branchunless 71
0020 getlocal_WC_1 frames@3 ( 73)[Li]
0022 getlocal_WC_1 prev_frame_id@9
0024 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0026 setlocal_WC_0 prev_frame@2
0028 getlocal_WC_0 prev_frame@2 ( 74)[Li]
0030 putobject :edges
0032 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0034 getlocal_WC_0 frame_id@1
0036 dupn 2
0038 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0040 dup
0041 branchif 50
0043 pop
0044 putobject_INT2FIX_0_
0045 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0047 pop
0048 jump 52
0050 adjuststack 3
0052 getlocal_WC_0 prev_frame@2 ( 75)[Li]
0054 putobject :edges
0056 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0058 getlocal_WC_0 frame_id@1
0060 dupn 2
0062 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0064 getlocal_WC_1 sample_count@8
0066 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0068 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0070 pop
0071 getlocal_WC_1 frames@3 ( 78)[Li]
0073 getlocal_WC_0 frame_id@1
0075 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0077 setlocal_WC_0 frame_info@3
0079 getlocal_WC_0 frame_info@3 ( 79)[Li]
0081 putobject :total_samples
0083 dupn 2
0085 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0087 getlocal_WC_1 sample_count@8
0089 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0091 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0093 pop
0094 getlocal_WC_0 frame_info@3 ( 81)[Li]
0096 putobject :lines
0098 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0100 getlocal_WC_1 line_samples@2
0102 getlocal_WC_0 idx@0
0104 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0106 dupn 2
0108 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0110 dup
0111 branchif 121
0113 pop
0114 duparray [0, 0]
0116 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0118 pop
0119 jump 123
0121 adjuststack 3
0123 getlocal_WC_0 frame_info@3 ( 82)[Li]
0125 putobject :lines
0127 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0129 getlocal_WC_1 line_samples@2
0131 getlocal_WC_0 idx@0
0133 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0135 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0137 putobject_INT2FIX_0_
0138 dupn 2
0140 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0142 getlocal_WC_1 sample_count@8
0144 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0146 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0148 pop
0149 getlocal_WC_0 frame_id@1 ( 84)[Li]
0151 dup
0152 setlocal_WC_1 prev_frame_id@9
0154 leave ( 85)[Br]
== disasm: #<ISeq:block in exit_locations@<internal:zjit>:107 (107,29)-(107,56)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] k@0<Arg> [ 1] v@1<Arg>
0000 getlocal_WC_0 v@1 ( 107)[LiBc]
0002 putobject :samples
0004 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0006 putobject_INT2FIX_0_
0007 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0009 leave [Br]
== disasm: #<ISeq:dump_exit_locations@<internal:zjit>:126 (126,2)-(135,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] filename@0<Arg>
0000 putself ( 127)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 13
0005 putself ( 128)[Li]
0006 opt_getconstant_path <ic:0 ArgumentError>
0008 putchilledstring "--zjit-trace-exits must be enabled to use dump_exit_locations."
0010 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0012 pop
0013 opt_getconstant_path <ic:1 File> ( 131)[Li]
0015 getlocal_WC_0 filename@0
0017 putchilledstring "wb"
0019 send <calldata!mid:open, argc:2>, block in dump_exit_locations
0022 leave ( 135)[Re]
== disasm: #<ISeq:block in dump_exit_locations@<internal:zjit>:131 (131,30)-(134,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] file@0<AmbiguousArg>
0000 opt_getconstant_path <ic:0 Marshal> ( 132)[LiBc]
0002 opt_getconstant_path <ic:1 RubyVM::ZJIT>
0004 opt_send_without_block <calldata!mid:exit_locations, argc:0, ARGS_SIMPLE>
0006 getlocal_WC_0 file@0
0008 opt_send_without_block <calldata!mid:dump, argc:2, ARGS_SIMPLE>
0010 pop
0011 getlocal_WC_0 file@0 ( 133)[Li]
0013 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0015 leave ( 134)[Br]
== disasm: #<ISeq:stats_enabled?@<internal:zjit>:138 (138,2)-(140,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_zjit_stats_enabled_p/0>, 0( 139)[LiCa]
0003 leave ( 140)[Re]
== disasm: #<ISeq:stats@<internal:zjit>:143 (143,2)-(145,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] target_key@0<Opt=0>
0000 putnil ( 143)
0001 setlocal_WC_0 target_key@0
0003 opt_invokebuiltin_delegate_leave <builtin!rb_zjit_stats/1>, 0( 144)[LiCa]
0006 leave ( 145)[Re]
== disasm: #<ISeq:reset_stats!@<internal:zjit>:148 (148,2)-(150,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_zjit_reset_stats_bang/0>, 0( 149)[LiCa]
0003 leave ( 150)[Re]
== disasm: #<ISeq:stats_string@<internal:zjit>:153 (153,2)-(210,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] buf@0 [ 1] stats@1
0000 putchilledstring "***ZJIT: Printing ZJIT statistics on exit***\n"( 154)[LiCa]
0002 opt_send_without_block <calldata!mid:+@, argc:0, ARGS_SIMPLE>
0004 setlocal_WC_0 buf@0
0006 putself ( 155)[Li]
0007 opt_send_without_block <calldata!mid:stats, argc:0, FCALL|ARGS_SIMPLE>
0009 setlocal_WC_0 stats@1
0011 putself ( 158)[Li]
0012 putchilledstring "not_inlined_cfuncs_"
0014 putchilledstring "not inlined C methods"
0016 getlocal_WC_0 buf@0
0018 getlocal_WC_0 stats@1
0020 putobject 20
0022 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0024 pop
0025 putself ( 159)[Li]
0026 putchilledstring "not_annotated_cfuncs_"
0028 putchilledstring "not annotated C methods"
0030 getlocal_WC_0 buf@0
0032 getlocal_WC_0 stats@1
0034 putobject 20
0036 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0038 pop
0039 putself ( 162)[Li]
0040 putchilledstring "unspecialized_send_def_type_"
0042 putchilledstring "not optimized method types for send"
0044 getlocal_WC_0 buf@0
0046 getlocal_WC_0 stats@1
0048 putobject 20
0050 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0052 pop
0053 putself ( 163)[Li]
0054 putchilledstring "unspecialized_send_without_block_def_type_"
0056 putchilledstring "not optimized method types for send_without_block"
0058 getlocal_WC_0 buf@0
0060 getlocal_WC_0 stats@1
0062 putobject 20
0064 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0066 pop
0067 putself ( 164)[Li]
0068 putchilledstring "not_optimized_yarv_insn_"
0070 putchilledstring "not optimized instructions"
0072 getlocal_WC_0 buf@0
0074 getlocal_WC_0 stats@1
0076 putobject 20
0078 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0080 pop
0081 putself ( 165)[Li]
0082 putchilledstring "send_fallback_"
0084 putchilledstring "send fallback reasons"
0086 getlocal_WC_0 buf@0
0088 getlocal_WC_0 stats@1
0090 putobject 20
0092 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0094 pop
0095 putself ( 168)[Li]
0096 putchilledstring "unhandled_yarv_insn_"
0098 putchilledstring "unhandled YARV insns"
0100 getlocal_WC_0 buf@0
0102 getlocal_WC_0 stats@1
0104 putobject 20
0106 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0108 pop
0109 putself ( 169)[Li]
0110 putchilledstring "compile_error_"
0112 putchilledstring "compile error reasons"
0114 getlocal_WC_0 buf@0
0116 getlocal_WC_0 stats@1
0118 putobject 20
0120 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0122 pop
0123 putself ( 170)[Li]
0124 putchilledstring "exit_"
0126 putchilledstring "side exit reasons"
0128 getlocal_WC_0 buf@0
0130 getlocal_WC_0 stats@1
0132 putobject 20
0134 opt_send_without_block <calldata!mid:print_counters_with_prefix, argc:5, kw:[#<Symbol:0x00000000008b010c>,#<Symbol:0x00000000008b110c>,#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000063610c>], FCALL|KWARG>
0136 pop
0137 putself ( 173)[Li]
0138 duparray [:send_count, :dynamic_send_count, :optimized_send_count, :iseq_optimized_send_count, :inline_cfunc_optimized_send_count, :non_variadic_cfunc_optimized_send_count, :variadic_cfunc_optimized_send_count]
0140 getlocal_WC_0 buf@0 ( 181)
0142 getlocal_WC_0 stats@1
0144 putobject true
0146 putobject :send_count
0148 opt_send_without_block <calldata!mid:print_counters, argc:5, kw:[#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>,#<Symbol:0x000000000092610c>,#<Symbol:0x000000000092710c>], FCALL|KWARG>( 173)
0150 pop
0151 putself ( 182)[Li]
0152 duparray [:dynamic_getivar_count, :dynamic_setivar_count, :compiled_iseq_count, :failed_iseq_count, :compile_time_ns, :profile_time_ns, :gc_time_ns, :invalidation_time_ns, :vm_write_pc_count, :vm_write_sp_count, :vm_write_locals_count, :vm_write_stack_count, :vm_write_to_parent_iseq_local_count, :vm_read_from_parent_iseq_local_count, :code_region_bytes, :side_exit_count, :total_insn_count, :vm_insn_count, :zjit_insn_count, :ratio_in_zjit]
0154 getlocal_WC_0 buf@0 ( 207)
0156 getlocal_WC_0 stats@1
0158 opt_send_without_block <calldata!mid:print_counters, argc:3, kw:[#<Symbol:0x000000000092510c>,#<Symbol:0x000000000088210c>], FCALL|KWARG>( 182)
0160 pop
0161 getlocal_WC_0 buf@0 ( 209)[Li]
0163 leave ( 210)[Re]
== disasm: #<ISeq:assert_compiles@<internal:zjit>:213 (213,2)-(215,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!rb_zjit_assert_compiles/0>, 0( 214)[LiCa]
0003 leave ( 215)[Re]
== disasm: #<ISeq:print_counters@<internal:zjit>:220 (220,2)-(245,5)>
local table (size: 9, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 4@2, kwrest: -1])
[ 9] keys@0<Arg>[ 8] buf@1 [ 7] stats@2 [ 6] right_align@3[ 5] base@4 [ 4] ?@5 [ 3] key_pad@6 [ 2] key_align@7[ 1] value_pad@8
0000 getlocal_WC_0 keys@0 ( 221)[LiCa]
0002 send <calldata!mid:map, argc:0>, block in print_counters
0005 opt_send_without_block <calldata!mid:max, argc:0, ARGS_SIMPLE>
0007 putobject_INT2FIX_1_
0008 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0010 setlocal_WC_0 key_pad@6
0012 getlocal_WC_0 right_align@3 ( 222)[Li]
0014 branchif 20
0016 putchilledstring "-"
0018 setlocal_WC_0 key_align@7
0020 getlocal_WC_0 keys@0 ( 223)[Li]
0022 send <calldata!mid:filter_map, argc:0>, block in print_counters
0025 send <calldata!mid:map, argc:0>, block in print_counters
0028 opt_send_without_block <calldata!mid:max, argc:0, ARGS_SIMPLE>
0030 setlocal_WC_0 value_pad@8
0032 getlocal_WC_0 keys@0 ( 225)[Li]
0034 send <calldata!mid:each, argc:0>, block in print_counters
0037 leave ( 245)[Re]
== disasm: #<ISeq:block in print_counters@<internal:zjit>:221 (221,23)-(221,73)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] key@0<AmbiguousArg>
0000 getlocal_WC_0 key@0 ( 221)[LiBc]
0002 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0004 putobject /_time_ns\z/
0006 putchilledstring "_time"
0008 opt_send_without_block <calldata!mid:sub, argc:2, ARGS_SIMPLE>
0010 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0012 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:zjit>:223 (223,32)-(223,52)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] key@0<AmbiguousArg>
0000 getlocal_WC_1 stats@2 ( 223)[LiBc]
0002 getlocal_WC_0 key@0
0004 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0006 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:zjit>:223 (223,57)-(223,102)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] value@0<AmbiguousArg>
0000 putself ( 223)[LiBc]
0001 getlocal_WC_0 value@0
0003 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0005 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0007 leave [Br]
== disasm: #<ISeq:block in print_counters@<internal:zjit>:225 (225,14)-(244,7)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] key@0<AmbiguousArg>[ 2] value@1 [ 1] ratio@2
0000 getlocal_WC_1 stats@2 ( 227)[LiBc]
0002 getlocal_WC_0 key@0
0004 opt_send_without_block <calldata!mid:key?, argc:1, ARGS_SIMPLE>
0006 branchif 10
0008 putnil
0009 leave ( 244)[Br]
0010 getlocal_WC_1 stats@2 ( 228)[Li]
0012 getlocal_WC_0 key@0
0014 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0016 setlocal_WC_0 value@1
0018 getlocal_WC_1 base@4 ( 229)[Li]
0020 branchunless 51
0022 getlocal_WC_0 key@0
0024 getlocal_WC_1 base@4
0026 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0029 branchunless 51
0031 putchilledstring " (%4.1f%%)" ( 230)[Li]
0033 putobject 100.0
0035 getlocal_WC_0 value@1
0037 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0039 getlocal_WC_1 stats@2
0041 getlocal_WC_1 base@4
0043 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0045 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0047 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0049 setlocal_WC_0 ratio@2
0051 getlocal_WC_0 key@0 ( 233)[Li]
0053 putobject :ratio_in_zjit ( 234)
0055 topn 1
0057 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0059 branchif 79
0061 putobject /_time_ns\z/ ( 236)
0063 topn 1
0065 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0067 branchif 90
0069 pop ( 240)
0070 putself [Li]
0071 getlocal_WC_0 value@1
0073 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0075 setlocal_WC_0 value@1
0077 jump 126
0079 pop ( 234)
0080 putchilledstring "%0.1f%%" ( 235)[Li]
0082 getlocal_WC_0 value@1
0084 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0086 setlocal_WC_0 value@1
0088 jump 126 ( 234)
0090 pop ( 236)
0091 getlocal_WC_0 key@0 ( 237)[Li]
0093 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0095 putobject /_time_ns\z/
0097 putchilledstring "_time"
0099 opt_send_without_block <calldata!mid:sub, argc:2, ARGS_SIMPLE>
0101 setlocal_WC_0 key@0
0103 putself ( 238)[Li]
0104 getlocal_WC_0 value@1
0106 putobject 10
0108 putobject 6
0110 opt_send_without_block <calldata!mid:**, argc:1, ARGS_SIMPLE>
0112 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0114 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0116 dup
0117 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0119 anytostring
0120 putobject "ms"
0122 concatstrings 2
0124 setlocal_WC_0 value@1
0126 getlocal_WC_1 buf@1 ( 243)[Li]
0128 putobject "%"
0130 getlocal_WC_1 key_align@7
0132 dup
0133 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0135 anytostring
0136 putobject "*s %*s%s\n"
0138 concatstrings 3
0140 getlocal_WC_1 key_pad@6
0142 getlocal_WC_0 key@0
0144 dup
0145 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0147 anytostring
0148 putobject ":"
0150 concatstrings 2
0152 getlocal_WC_1 value_pad@8
0154 getlocal_WC_0 value@1
0156 getlocal_WC_0 ratio@2
0158 newarray 5
0160 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0162 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0164 leave ( 244)[Br]
== disasm: #<ISeq:print_counters_with_prefix@<internal:zjit>:247 (247,2)-(267,5)>
local table (size: 10, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 5@4, kwrest: -1])
[10] buf@0 [ 9] stats@1 [ 8] prefix@2 [ 7] prompt@3 [ 6] limit@4 [ 5] ?@5 [ 4] counters@6 [ 3] key_pad@7 [ 2] value_pad@8[ 1] total@9
0000 getlocal_WC_0 stats@1 ( 248)[LiCa]
0002 send <calldata!mid:select, argc:0>, block in print_counters_with_prefix
0005 setlocal_WC_0 counters@6
0007 getlocal_WC_0 stats@1 ( 249)[Li]
0009 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0011 branchunless 15
0013 putnil
0014 leave [Re]
0015 getlocal_WC_0 counters@6 ( 251)[Li]
0017 send <calldata!mid:transform_keys!, argc:0>, block in print_counters_with_prefix
0020 pop
0021 getlocal_WC_0 counters@6 ( 252)[Li]
0023 opt_send_without_block <calldata!mid:keys, argc:0, ARGS_SIMPLE>
0025 putobject :size
0027 send <calldata!mid:map, argc:0, ARGS_BLOCKARG>, nil
0030 opt_send_without_block <calldata!mid:max, argc:0, ARGS_SIMPLE>
0032 setlocal_WC_0 key_pad@7
0034 getlocal_WC_0 counters@6 ( 253)[Li]
0036 opt_send_without_block <calldata!mid:values, argc:0, ARGS_SIMPLE>
0038 send <calldata!mid:map, argc:0>, block in print_counters_with_prefix
0041 opt_send_without_block <calldata!mid:max, argc:0, ARGS_SIMPLE>
0043 setlocal_WC_0 value_pad@8
0045 getlocal_WC_0 counters@6 ( 254)[Li]
0047 opt_send_without_block <calldata!mid:values, argc:0, ARGS_SIMPLE>
0049 opt_send_without_block <calldata!mid:sum, argc:0, ARGS_SIMPLE>
0051 setlocal_WC_0 total@9
0053 getlocal_WC_0 counters@6 ( 256)[Li]
0055 opt_send_without_block <calldata!mid:to_a, argc:0, ARGS_SIMPLE>
0057 setlocal_WC_0 counters@6
0059 getlocal_WC_0 counters@6 ( 257)[Li]
0061 send <calldata!mid:sort_by!, argc:0>, block in print_counters_with_prefix
0064 pop
0065 getlocal_WC_0 limit@4 ( 258)[Li]
0067 branchunless 77
0069 getlocal_WC_0 counters@6
0071 getlocal_WC_0 limit@4
0073 opt_send_without_block <calldata!mid:first, argc:1, ARGS_SIMPLE>
0075 setlocal_WC_0 counters@6
0077 getlocal_WC_0 limit@4 ( 260)[Li]
0079 branchunless 100
0081 getlocal_WC_0 buf@0
0083 putobject "Top-"
0085 getlocal_WC_0 counters@6
0087 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0089 dup
0090 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0092 anytostring
0093 putobject " "
0095 concatstrings 3
0097 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0099 pop
0100 getlocal_WC_0 buf@0 ( 261)[Li]
0102 putobject ""
0104 getlocal_WC_0 prompt@3
0106 dup
0107 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0109 anytostring
0110 concatstrings 2
0112 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0114 pop
0115 getlocal_WC_0 limit@4 ( 262)[Li]
0117 branchunless 158
0119 getlocal_WC_0 buf@0
0121 putobject " (%.1f%% of total "
0123 putself
0124 getlocal_WC_0 total@9
0126 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0128 dup
0129 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0131 anytostring
0132 putobject ")"
0134 concatstrings 3
0136 putobject 100.0
0138 getlocal_WC_0 counters@6
0140 putobject :last
0142 send <calldata!mid:map, argc:0, ARGS_BLOCKARG>, nil
0145 opt_send_without_block <calldata!mid:sum, argc:0, ARGS_SIMPLE>
0147 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0149 getlocal_WC_0 total@9
0151 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0153 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0155 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0157 pop
0158 getlocal_WC_0 buf@0 ( 263)[Li]
0160 putchilledstring ":\n"
0162 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0164 pop
0165 getlocal_WC_0 counters@6 ( 264)[Li]
0167 send <calldata!mid:each, argc:0>, block in print_counters_with_prefix
0170 leave ( 267)[Re]
== disasm: #<ISeq:block in print_counters_with_prefix@<internal:zjit>:248 (248,28)-(248,81)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] key@0<Arg> [ 1] value@1<Arg>
0000 getlocal_WC_0 key@0 ( 248)[LiBc]
0002 getlocal_WC_1 prefix@2
0004 opt_send_without_block <calldata!mid:start_with?, argc:1, ARGS_SIMPLE>
0006 dup
0007 branchunless 15
0009 pop
0010 getlocal_WC_0 value@1
0012 putobject_INT2FIX_0_
0013 opt_gt <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
0015 leave [Br]
== disasm: #<ISeq:block in print_counters_with_prefix@<internal:zjit>:251 (251,29)-(251,69)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] key@0<AmbiguousArg>
0000 getlocal_WC_0 key@0 ( 251)[LiBc]
0002 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0004 getlocal_WC_1 prefix@2
0006 opt_send_without_block <calldata!mid:delete_prefix, argc:1, ARGS_SIMPLE>
0008 leave [Br]
== disasm: #<ISeq:block in print_counters_with_prefix@<internal:zjit>:253 (253,36)-(253,81)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] value@0<AmbiguousArg>
0000 putself ( 253)[LiBc]
0001 getlocal_WC_0 value@0
0003 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0005 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0007 leave [Br]
== disasm: #<ISeq:block in print_counters_with_prefix@<internal:zjit>:257 (257,22)-(257,43)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _@0<Arg> [ 1] value@1<Arg>
0000 getlocal_WC_0 value@1 ( 257)[LiBc]
0002 opt_send_without_block <calldata!mid:-@, argc:0, ARGS_SIMPLE>
0004 leave [Br]
== disasm: #<ISeq:block in print_counters_with_prefix@<internal:zjit>:264 (264,18)-(266,7)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] key@0<Arg> [ 1] value@1<Arg>
0000 getlocal_WC_1 buf@0 ( 265)[LiBc]
0002 putchilledstring " %*s: %*s (%4.1f%%)\n"
0004 getlocal_WC_1 key_pad@7
0006 getlocal_WC_0 key@0
0008 getlocal_WC_1 value_pad@8
0010 putself
0011 getlocal_WC_0 value@1
0013 opt_send_without_block <calldata!mid:number_with_delimiter, argc:1, FCALL|ARGS_SIMPLE>
0015 putobject 100.0
0017 getlocal_WC_0 value@1
0019 opt_mult <calldata!mid:*, argc:1, ARGS_SIMPLE>[CcCr]
0021 getlocal_WC_1 total@9
0023 opt_div <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
0025 newarray 5
0027 opt_mod <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
0029 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0031 leave ( 266)[Br]
== disasm: #<ISeq:number_with_delimiter@<internal:zjit>:269 (269,2)-(274,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] number@0<Arg>[ 2] s@1 [ 1] i@2
0000 getlocal_WC_0 number@0 ( 270)[LiCa]
0002 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE>
0004 setlocal_WC_0 s@1
0006 getlocal_WC_0 s@1 ( 271)[Li]
0008 putchilledstring "."
0010 opt_send_without_block <calldata!mid:index, argc:1, ARGS_SIMPLE>
0012 dup
0013 branchif 20
0015 pop
0016 getlocal_WC_0 s@1
0018 opt_size <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
0020 setlocal_WC_0 i@2
0022 jump 44 ( 272)[Li]
0024 putnil
0025 pop
0026 jump 44
0028 getlocal_WC_0 s@1
0030 getlocal_WC_0 i@2
0032 putobject 3
0034 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0036 dup
0037 setlocal_WC_0 i@2
0039 putchilledstring ","
0041 opt_send_without_block <calldata!mid:insert, argc:2, ARGS_SIMPLE>
0043 pop
0044 getlocal_WC_0 i@2
0046 putobject 3
0048 opt_gt <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
0050 branchif 28
0052 putnil
0053 pop
0054 getlocal_WC_0 s@1 ( 273)[Li]
0056 leave ( 274)[Re]
== disasm: #<ISeq:print_stats@<internal:zjit>:277 (277,2)-(279,5)>
0000 getglobal :$stderr ( 278)[LiCa]
0002 putself
0003 opt_send_without_block <calldata!mid:stats_string, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0005 opt_send_without_block <calldata!mid:write, argc:1, ARGS_SIMPLE>
0007 leave ( 279)[Re]
== disasm: #<ISeq:dump_locations@<internal:zjit>:281 (281,2)-(288,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] filename@0 [ 1] n_bytes@1
0000 putself ( 282)[LiCa]
0001 opt_send_without_block <calldata!mid:trace_exit_locations_enabled?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 putobject "zjit_exits_" ( 284)[Li]
0009 opt_getconstant_path <ic:0 Process>
0011 opt_send_without_block <calldata!mid:pid, argc:0, ARGS_SIMPLE>
0013 dup
0014 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0016 anytostring
0017 putobject ".dump"
0019 concatstrings 3
0021 setlocal_WC_0 filename@0
0023 putself ( 285)[Li]
0024 getlocal_WC_0 filename@0
0026 opt_send_without_block <calldata!mid:dump_exit_locations, argc:1, FCALL|ARGS_SIMPLE>
0028 setlocal_WC_0 n_bytes@1
0030 getglobal :$stderr ( 287)[Li]
0032 getlocal_WC_0 n_bytes@1
0034 dup
0035 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0037 anytostring
0038 putobject " bytes written to "
0040 getlocal_WC_0 filename@0
0042 dup
0043 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0045 anytostring
0046 putobject "."
0048 concatstrings 4
0050 opt_send_without_block <calldata!mid:puts, argc:1, ARGS_SIMPLE>
0052 leave ( 288)[Re]
== disasm: #<ISeq:<internal:kernel>@<internal:kernel>:1 (1,0)-(293,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Kernel, <module:Kernel>, 2
0007 leave
== disasm: #<ISeq:<module:Kernel>@<internal:kernel>:1 (1,0)-(293,3)>
0000 definemethod :class, class ( 18)[LiCl]
0003 definemethod :clone, clone ( 47)[Li]
0006 definemethod :frozen?, frozen? ( 67)[Li]
0009 definemethod :tap, tap ( 89)[Li]
0012 definemethod :then, then ( 121)[Li]
0015 putspecialobject 1 ( 129)[Li]
0017 putspecialobject 2
0019 putobject :yield_self
0021 putobject :then
0023 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0025 pop
0026 putself ( 131)[Li]
0027 opt_send_without_block <calldata!mid:module_function, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0029 pop
0030 definemethod :loop, loop ( 160)[Li]
0033 definemethod :Float, Float ( 193)[Li]
0036 definemethod :Integer, Integer ( 286)[Li]
0039 putobject :Integer
0041 leave ( 293)[En]
== disasm: #<ISeq:class@<internal:kernel>:18 (18,2)-(21,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi20/0>, 0 ( 20)[LiCa]
0003 leave ( 21)[Re]
== disasm: #<ISeq:clone@<internal:kernel>:47 (47,2)-(49,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] freeze@0 [ 1] ?@1
0000 opt_invokebuiltin_delegate_leave <builtin!rb_obj_clone2/1>, 0( 48)[LiCa]
0003 leave ( 49)[Re]
== disasm: #<ISeq:frozen?@<internal:kernel>:67 (67,2)-(70,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi69/0>, 0 ( 69)[LiCa]
0003 leave ( 70)[Re]
== disasm: #<ISeq:tap@<internal:kernel>:89 (89,2)-(93,5)> INLINE_BLOCK
0000 putself ( 91)[LiCa]
0001 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0003 pop
0004 putself ( 92)[Li]
0005 leave ( 93)[Re]
== disasm: #<ISeq:then@<internal:kernel>:121 (121,2)-(127,5)> INLINE_BLOCK
0000 putnil ( 123)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi124/0>, 0 ( 124)[Li]
0010 leave [Re]
0011 putself ( 126)[Li]
0012 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0014 leave ( 127)[Re]
== disasm: #<ISeq:loop@<internal:kernel>:160 (160,2)-(173,5)> INLINE_BLOCK
== catch table
| catch type: break st: 0015 ed: 0021 sp: 0000 cont: 0021
| catch type: next st: 0015 ed: 0021 sp: 0000 cont: 0014
| catch type: redo st: 0015 ed: 0021 sp: 0000 cont: 0015
| catch type: rescue st: 0011 ed: 0021 sp: 0000 cont: 0022
| == disasm: #<ISeq:rescue in loop@<internal:kernel>:170 (170,4)-(171,14)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 170)
| 0002 opt_getconstant_path <ic:0 StopIteration>
| 0004 checkmatch 3
| 0006 branchunless 17
| 0008 getlocal_WC_0 "$!"@0[Rs]
| 0010 setlocal_WC_1 e@0
| 0012 getlocal_WC_1 e@0 ( 171)[Li]
| 0014 opt_send_without_block <calldata!mid:result, argc:0, ARGS_SIMPLE>
| 0016 leave ( 170)
| 0017 getlocal_WC_0 "$!"@0
| 0019 throw 0
| catch type: retry st: 0021 ed: 0022 sp: 0000 cont: 0011
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] e@0
0000 putnil ( 162)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi163/0>, 0 ( 163)[Li]
0010 leave [Re]
0011 jump 15 ( 167)[Li]
0013 putnil
0014 pop
0015 invokeblock <calldata!argc:0, ARGS_SIMPLE>( 168)[Li]
0017 pop
0018 jump 15 ( 167)
0020 putnil
0021 nop ( 166)
0022 leave ( 173)[Re]
== disasm: #<ISeq:Float@<internal:kernel>:193 (193,2)-(199,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] arg@0<Arg> [ 2] exception@1[ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!rb_f_float/2>, 0 ( 197)[LiCa]
0003 leave ( 199)[Re]
== disasm: #<ISeq:Integer@<internal:kernel>:286 (286,2)-(292,5)>
local table (size: 4, argc: 1 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] arg@0<Arg> [ 3] base@1<Opt=0>[ 2] exception@2[ 1] ?@3
0000 putobject_INT2FIX_0_ ( 286)
0001 setlocal_WC_0 base@1
0003 opt_invokebuiltin_delegate_leave <builtin!rb_f_integer/3>, 0( 290)[LiCa]
0006 leave ( 292)[Re]
== disasm: #<ISeq:<internal:gc>@<internal:gc>:8 (8,0)-(604,3)>
0000 putspecialobject 3 ( 8)[Li]
0002 putnil
0003 defineclass :GC, <module:GC>, 2
0007 pop
0008 putspecialobject 3 ( 597)[Li]
0010 putnil
0011 defineclass :ObjectSpace, <module:ObjectSpace>, 2
0015 leave
== disasm: #<ISeq:<module:GC>@<internal:gc>:8 (8,0)-(595,3)>
0000 putself ( 43)[LiCl]
0001 definesmethod :start, start
0004 definemethod :garbage_collect, garbage_collect( 48)[Li]
0007 putself ( 62)[Li]
0008 definesmethod :enable, enable
0011 putself ( 76)[Li]
0012 definesmethod :disable, disable
0015 putself ( 87)[Li]
0016 definesmethod :stress, stress
0019 putself ( 111)[Li]
0020 definesmethod :stress=, stress=
0023 putself ( 124)[Li]
0024 definesmethod :count, count
0027 putself ( 250)[Li]
0028 definesmethod :stat, stat
0031 putself ( 394)[Li]
0032 definesmethod :stat_heap, stat_heap
0035 putself ( 449)[Li]
0036 definesmethod :config, config
0039 putself ( 505)[Li]
0040 definesmethod :latest_gc_info, latest_gc_info
0043 putself ( 541)[Li]
0044 definesmethod :measure_total_time=, measure_total_time=
0047 putself ( 554)[Li]
0048 definesmethod :measure_total_time, measure_total_time
0051 putself ( 590)[Li]
0052 definesmethod :total_time, total_time
0055 putobject :total_time
0057 leave ( 595)[En]
== disasm: #<ISeq:start@<internal:gc>:43 (43,2)-(45,5)>
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 4] full_mark@0[ 3] immediate_mark@1[ 2] immediate_sweep@2[ 1] ?@3
0000 getlocal_WC_0 full_mark@0 ( 44)[LiCa]
0002 getlocal_WC_0 immediate_mark@1
0004 getlocal_WC_0 immediate_sweep@2
0006 putobject false
0008 invokebuiltin <builtin!gc_start_internal/4>
0010 leave ( 45)[Re]
== disasm: #<ISeq:garbage_collect@<internal:gc>:48 (48,2)-(50,5)>
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 4] full_mark@0[ 3] immediate_mark@1[ 2] immediate_sweep@2[ 1] ?@3
0000 getlocal_WC_0 full_mark@0 ( 49)[LiCa]
0002 getlocal_WC_0 immediate_mark@1
0004 getlocal_WC_0 immediate_sweep@2
0006 putobject false
0008 invokebuiltin <builtin!gc_start_internal/4>
0010 leave ( 50)[Re]
== disasm: #<ISeq:enable@<internal:gc>:62 (62,2)-(64,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!gc_enable/0>, 0 ( 63)[LiCa]
0003 leave ( 64)[Re]
== disasm: #<ISeq:disable@<internal:gc>:76 (76,2)-(78,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!gc_disable/0>, 0 ( 77)[LiCa]
0003 leave ( 78)[Re]
== disasm: #<ISeq:stress@<internal:gc>:87 (87,2)-(89,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!gc_stress_get/0>, 0( 88)[LiCa]
0003 leave ( 89)[Re]
== disasm: #<ISeq:stress=@<internal:gc>:111 (111,2)-(113,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] flag@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!gc_stress_set_m/1>, 0( 112)[LiCa]
0003 leave ( 113)[Re]
== disasm: #<ISeq:count@<internal:gc>:124 (124,2)-(126,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!gc_count/0>, 0 ( 125)[LiCa]
0003 leave ( 126)[Re]
== disasm: #<ISeq:stat@<internal:gc>:250 (250,2)-(252,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hash_or_key@0<Opt=0>
0000 putnil ( 250)
0001 setlocal_WC_0 hash_or_key@0
0003 opt_invokebuiltin_delegate_leave <builtin!gc_stat/1>, 0 ( 251)[LiCa]
0006 leave ( 252)[Re]
== disasm: #<ISeq:stat_heap@<internal:gc>:394 (394,2)-(396,5)>
local table (size: 2, argc: 0 [opts: 2, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] heap_name@0<Opt=0>[ 1] hash_or_key@1<Opt=3>
0000 putnil ( 394)
0001 setlocal_WC_0 heap_name@0
0003 putnil
0004 setlocal_WC_0 hash_or_key@1
0006 opt_invokebuiltin_delegate_leave <builtin!gc_stat_heap/2>, 0( 395)[LiCa]
0009 leave ( 396)[Re]
== disasm: #<ISeq:config@<internal:gc>:449 (449,2)-(461,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hash@0<Opt=0>
0000 putnil ( 449)
0001 setlocal_WC_0 hash@0
0003 opt_invokebuiltin_delegate <builtin!_bi450/0>, 0 ( 450)[LiCa]
0006 branchunless 30
0008 getlocal_WC_0 hash@0 ( 451)[Li]
0010 putobject :implementation
0012 opt_send_without_block <calldata!mid:include?, argc:1, ARGS_SIMPLE>
0014 branchunless 24
0016 putself ( 452)[Li]
0017 opt_getconstant_path <ic:0 ArgumentError>
0019 putchilledstring "Attempting to set read-only key \"Implementation\""
0021 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0023 pop
0024 opt_invokebuiltin_delegate <builtin!gc_config_set/1>, 0( 455)[Li]
0027 pop
0028 jump 44 ( 450)
0030 getlocal_WC_0 hash@0 ( 456)[Li]
0032 putnil
0033 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0036 branchunless 44
0038 putself ( 457)[Li]
0039 opt_getconstant_path <ic:1 ArgumentError>
0041 opt_send_without_block <calldata!mid:raise, argc:1, FCALL|ARGS_SIMPLE>
0043 pop
0044 opt_invokebuiltin_delegate_leave <builtin!gc_config_get/0>, 0( 460)[Li]
0047 leave ( 461)[Re]
== disasm: #<ISeq:latest_gc_info@<internal:gc>:505 (505,2)-(515,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hash_or_key@0<Opt=0>
0000 putnil ( 505)
0001 setlocal_WC_0 hash_or_key@0
0003 getlocal_WC_0 hash_or_key@0 ( 506)[LiCa]
0005 putnil
0006 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0008 branchunless 16
0010 newhash 0 ( 507)[Li]
0012 setlocal_WC_0 hash_or_key@0
0014 jump 29 ( 506)
0016 opt_invokebuiltin_delegate <builtin!_bi508/0>, 0 ( 508)[Li]
0019 branchunless 29
0021 putself ( 509)[Li]
0022 opt_getconstant_path <ic:0 TypeError>
0024 putchilledstring "non-hash or symbol given"
0026 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0028 pop
0029 opt_invokebuiltin_delegate_leave <builtin!_bi512/0>, 0 ( 512)[Li]
0032 leave ( 515)[Re]
== disasm: #<ISeq:measure_total_time=@<internal:gc>:541 (541,2)-(546,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] flag@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi542/0>, 0 ( 542)[LiCa]
0003 leave ( 546)[Re]
== disasm: #<ISeq:measure_total_time@<internal:gc>:554 (554,2)-(558,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi555/0>, 0 ( 555)[LiCa]
0003 leave ( 558)[Re]
== disasm: #<ISeq:total_time@<internal:gc>:590 (590,2)-(594,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi591/0>, 0 ( 591)[LiCa]
0003 leave ( 594)[Re]
== disasm: #<ISeq:<module:ObjectSpace>@<internal:gc>:597 (597,0)-(604,3)>
0000 definemethod :garbage_collect, garbage_collect( 599)[LiCl]
0003 putself ( 603)[Li]
0004 putobject :garbage_collect
0006 opt_send_without_block <calldata!mid:module_function, argc:1, FCALL|ARGS_SIMPLE>
0008 leave ( 604)[En]
== disasm: #<ISeq:garbage_collect@<internal:gc>:599 (599,2)-(601,5)>
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 4] full_mark@0[ 3] immediate_mark@1[ 2] immediate_sweep@2[ 1] ?@3
0000 getlocal_WC_0 full_mark@0 ( 600)[LiCa]
0002 getlocal_WC_0 immediate_mark@1
0004 getlocal_WC_0 immediate_sweep@2
0006 putobject false
0008 invokebuiltin <builtin!gc_start_internal/4>
0010 leave ( 601)[Re]
== disasm: #<ISeq:<internal:ractor>@<internal:ractor>:195 (195,0)-(804,3)>
0000 putspecialobject 3 ( 195)[Li]
0002 putnil
0003 defineclass :Ractor, <class:Ractor>, 0
0007 leave
== disasm: #<ISeq:<class:Ractor>@<internal:ractor>:195 (195,0)-(804,3)>
0000 putself ( 229)[LiCl]
0001 definesmethod :new, new
0004 putself ( 244)[Li]
0005 definesmethod :current, current
0008 putself ( 258)[Li]
0009 definesmethod :count, count
0012 putself ( 269)[Li]
0013 definesmethod :select, select
0016 putself ( 310)[Li]
0017 definesmethod :receive, receive
0020 putself ( 314)[Li]
0021 putnil
0022 defineclass :singletonclass, singleton class, 1
0026 pop
0027 putself ( 319)[Li]
0028 definemethod :receive, receive
0031 putobject :receive
0033 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0035 pop
0036 putspecialobject 1 ( 322)[Li]
0038 putspecialobject 2
0040 putobject :recv
0042 putobject :receive
0044 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0046 pop
0047 definemethod :send, send ( 329)[Li]
0050 putspecialobject 1 ( 333)[Li]
0052 putspecialobject 2
0054 putobject :<<
0056 putobject :send
0058 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0060 pop
0061 definemethod :inspect, inspect ( 335)[Li]
0064 putspecialobject 1 ( 345)[Li]
0066 putspecialobject 2
0068 putobject :to_s
0070 putobject :inspect
0072 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0074 pop
0075 definemethod :name, name ( 348)[Li]
0078 putspecialobject 3 ( 352)[Li]
0080 putnil
0081 defineclass :RemoteError, <class:RemoteError>, 0
0085 pop
0086 definemethod :close, close ( 364)[Li]
0089 putself ( 379)[Li]
0090 definesmethod :shareable?, shareable?
0093 putself ( 420)[Li]
0094 definesmethod :make_shareable, make_shareable
0097 definemethod :[], [] ( 434)[Li]
0100 definemethod :[]=, []= ( 443)[Li]
0103 putself ( 451)[Li]
0104 definesmethod :[], []
0107 putself ( 456)[Li]
0108 definesmethod :[]=, []=
0111 putself ( 474)[Li]
0112 definesmethod :store_if_absent, store_if_absent
0115 putself ( 479)[Li]
0116 definesmethod :main, main
0119 putself ( 486)[Li]
0120 definesmethod :main?, main?
0123 putself ( 493)[Li]
0124 definesmethod :_require, _require
0127 putself ( 501)[Li]
0128 putnil
0129 defineclass :singletonclass, singleton class, 1
0133 pop
0134 definemethod :default_port, default_port( 526)[Li]
0137 definemethod :join, join ( 545)[Li]
0140 definemethod :value, value ( 571)[Li]
0143 definemethod :monitor, monitor ( 593)[Li]
0146 definemethod :unmonitor, unmonitor ( 603)[Li]
0149 putself ( 626)[Li]
0150 definesmethod :shareable_proc, shareable_proc
0153 putself ( 640)[Li]
0154 definesmethod :shareable_lambda, shareable_lambda
0157 putspecialobject 3 ( 649)[Li]
0159 putnil
0160 defineclass :Port, <class:Port>, 0
0164 leave ( 804)[En]
== disasm: #<ISeq:new@<internal:ractor>:229 (229,2)-(239,5)>
local table (size: 6, argc: 0 [opts: 0, rest: 0, post: 0, block: 3, kw: 1@0, kwrest: -1])
[ 6] args@0<Rest>[ 5] name@1 [ 4] ?@2 [ 3] block@3<Block>[ 2] b@4 [ 1] loc@5
0000 getblockparam block@3, 0 ( 230)[LiCa]
0003 setlocal_WC_0 b@4
0005 getblockparamproxy block@3, 0 ( 231)[Li]
0008 branchif 18
0010 putself
0011 opt_getconstant_path <ic:0 ArgumentError>
0013 putchilledstring "must be called with a block"
0015 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0017 pop
0018 opt_invokebuiltin_delegate <builtin!_bi232/0>, 0 ( 232)[Li]
0021 branchunless 33
0023 opt_getconstant_path <ic:1 Kernel> ( 233)[Li]
0025 putchilledstring "Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues."
0027 putobject_INT2FIX_0_ ( 234)
0028 putobject :experimental
0030 opt_send_without_block <calldata!mid:warn, argc:3, kw:[#<Symbol:0x000000000095c10c>,#<Symbol:0x000000000023810c>], KWARG>( 233)
0032 pop
0033 putself ( 236)[Li]
0034 putobject_INT2FIX_1_
0035 putobject_INT2FIX_1_
0036 opt_send_without_block <calldata!mid:caller_locations, argc:2, FCALL|ARGS_SIMPLE>
0038 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0040 setlocal_WC_0 loc@5
0042 getlocal_WC_0 loc@5 ( 237)[Li]
0044 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0046 dup
0047 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0049 anytostring
0050 putobject ":"
0052 getlocal_WC_0 loc@5
0054 opt_send_without_block <calldata!mid:lineno, argc:0, ARGS_SIMPLE>
0056 dup
0057 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0059 anytostring
0060 concatstrings 3
0062 setlocal_WC_0 loc@5
0064 getlocal_WC_0 loc@5 ( 238)[Li]
0066 getlocal_WC_0 name@1
0068 getlocal_WC_0 args@0
0070 getlocal_WC_0 b@4
0072 invokebuiltin <builtin!ractor_create/4>
0074 leave ( 239)[Re]
== disasm: #<ISeq:current@<internal:ractor>:244 (244,2)-(248,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi245/0>, 0 ( 245)[LiCa]
0003 leave ( 248)[Re]
== disasm: #<ISeq:count@<internal:ractor>:258 (258,2)-(262,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi259/0>, 0 ( 259)[LiCa]
0003 leave ( 262)[Re]
== disasm: #<ISeq:select@<internal:ractor>:269 (269,2)-(303,5)>
== catch table
| catch type: ensure st: 0025 ed: 0062 sp: 0001 cont: 0068
| == disasm: #<ISeq:ensure in select@<internal:ractor>:298 (298,6)-(301,9)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_1 monitors@1 ( 298)[Li]
| 0002 send <calldata!mid:each, argc:0>, block in select
| 0005 pop
| 0006 getlocal_WC_0 "$!"@0 ( 296)
| 0008 throw 0
| == disasm: #<ISeq:block in select@<internal:ractor>:298 (298,20)-(301,9)>
| local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 2] port@0<Arg>| [ 1] r@1<Arg>
| 0000 getlocal_WC_0 r@1 ( 299)[LiBc]
| 0002 getlocal_WC_0 port@0
| 0004 opt_send_without_block <calldata!mid:unmonitor, argc:1, ARGS_SIMPLE>
| 0006 pop
| 0007 getlocal_WC_0 port@0 ( 300)[Li]
| 0009 opt_send_without_block <calldata!mid:close, argc:0, ARGS_SIMPLE>
| 0011 leave ( 301)[Br]
|------------------------------------------------------------------------
local table (size: 5, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 5] ports@0<Rest>[ 4] monitors@1 [ 3] result_port@2[ 2] obj@3 [ 1] r@4
0000 getlocal_WC_0 ports@0 ( 270)[LiCa]
0002 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0004 branchunless 14
0006 putself
0007 opt_getconstant_path <ic:0 ArgumentError>
0009 putchilledstring "specify at least one ractor or `yield_value`"
0011 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0013 pop
0014 newhash 0 ( 272)[Li]
0016 setlocal_WC_0 monitors@1
0018 getlocal_WC_0 ports@0 ( 274)[Li]
0020 send <calldata!mid:map, argc:0>, block in select
0023 setlocal_WC_0 ports@0
0025 opt_invokebuiltin_delegate <builtin!ractor_select_internal/1>, 0( 289)[Li]
0028 expandarray 2, 0
0031 setlocal_WC_0 result_port@2
0033 setlocal_WC_0 obj@3
0035 getlocal_WC_0 monitors@1 ( 291)[Li]
0037 getlocal_WC_0 result_port@2
0039 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0041 dup
0042 setlocal_WC_0 r@4
0044 branchunless 56
0046 getlocal_WC_0 r@4 ( 292)[Li]
0048 getlocal_WC_0 r@4
0050 opt_send_without_block <calldata!mid:value, argc:0, ARGS_SIMPLE>
0052 newarray 2
0054 jump 62 ( 291)
0056 getlocal_WC_0 result_port@2 ( 294)[Li]
0058 getlocal_WC_0 obj@3
0060 newarray 2
0062 getlocal_WC_0 monitors@1 ( 298)[Li]
0064 send <calldata!mid:each, argc:0>, block in select
0067 pop
0068 leave ( 303)[Re]
== disasm: #<ISeq:block in select@<internal:ractor>:274 (274,22)-(286,7)>
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] arg@0<AmbiguousArg>[ 1] port@1
0000 getlocal_WC_0 arg@0 ( 275)[LiBc]
0002 opt_getconstant_path <ic:0 Ractor> ( 276)
0004 topn 1
0006 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0008 branchif 27
0010 opt_getconstant_path <ic:1 Ractor::Port> ( 281)
0012 topn 1
0014 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0016 branchif 64
0018 pop ( 284)
0019 putself [Li]
0020 opt_getconstant_path <ic:2 ArgumentError>
0022 putchilledstring "should be Ractor::Port or Ractor"
0024 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0026 leave ( 286)[Br]
0027 pop ( 276)
0028 opt_getconstant_path <ic:3 Ractor::Port> ( 277)[Li]
0030 putnil
0031 swap
0032 opt_new <calldata!mid:new, argc:0, ARGS_SIMPLE>, 39
0035 opt_send_without_block <calldata!mid:initialize, argc:0, FCALL|ARGS_SIMPLE>
0037 jump 42
0039 opt_send_without_block <calldata!mid:new, argc:0, ARGS_SIMPLE>
0041 swap
0042 pop
0043 setlocal_WC_0 port@1
0045 getlocal_WC_1 monitors@1 ( 278)[Li]
0047 getlocal_WC_0 port@1
0049 getlocal_WC_0 arg@0
0051 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0053 pop
0054 getlocal_WC_0 arg@0 ( 279)[Li]
0056 getlocal_WC_0 port@1
0058 opt_send_without_block <calldata!mid:monitor, argc:1, ARGS_SIMPLE>
0060 pop
0061 getlocal_WC_0 port@1 ( 280)[Li]
0063 leave ( 286)[Br]
0064 pop ( 281)
0065 getlocal_WC_0 arg@0 ( 282)[Li]
0067 leave ( 286)[Br]
== disasm: #<ISeq:block in select@<internal:ractor>:298 (298,20)-(301,9)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] port@0<Arg>[ 1] r@1<Arg>
0000 getlocal_WC_0 r@1 ( 299)[LiBc]
0002 getlocal_WC_0 port@0
0004 opt_send_without_block <calldata!mid:unmonitor, argc:1, ARGS_SIMPLE>
0006 pop
0007 getlocal_WC_0 port@0 ( 300)[Li]
0009 opt_send_without_block <calldata!mid:close, argc:0, ARGS_SIMPLE>
0011 leave ( 301)[Br]
== disasm: #<ISeq:receive@<internal:ractor>:310 (310,2)-(312,5)>
0000 opt_getconstant_path <ic:0 Ractor> ( 311)[LiCa]
0002 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
0004 opt_send_without_block <calldata!mid:default_port, argc:0, ARGS_SIMPLE>
0006 opt_send_without_block <calldata!mid:receive, argc:0, ARGS_SIMPLE>
0008 leave ( 312)[Re]
== disasm: #<ISeq:singleton class@<internal:ractor>:314 (314,2)-(316,5)>
0000 putspecialobject 1 ( 315)[Li]
0002 putspecialobject 2
0004 putobject :recv
0006 putobject :receive
0008 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0010 leave
== disasm: #<ISeq:receive@<internal:ractor>:319 (319,10)-(321,5)>
0000 putself ( 320)[LiCa]
0001 opt_send_without_block <calldata!mid:default_port, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 opt_send_without_block <calldata!mid:receive, argc:0, ARGS_SIMPLE>
0005 leave ( 321)[Re]
== disasm: #<ISeq:send@<internal:ractor>:329 (329,2)-(332,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 330)[LiCa]
0001 opt_send_without_block <calldata!mid:default_port, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 getlocal_WC_0 "..."@0
0005 sendforward <calldata!mid:send, argc:0, FORWARDING>, nil
0008 pop
0009 putself ( 331)[Li]
0010 leave ( 332)[Re]
== disasm: #<ISeq:inspect@<internal:ractor>:335 (335,2)-(343,5)>
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] loc@0 [ 3] name@1 [ 2] id@2 [ 1] status@3
0000 opt_invokebuiltin_delegate <builtin!_bi336/0>, 0 ( 336)[LiCa]
0003 setlocal_WC_0 loc@0
0005 opt_invokebuiltin_delegate <builtin!_bi337/0>, 0 ( 337)[Li]
0008 setlocal_WC_0 name@1
0010 opt_invokebuiltin_delegate <builtin!_bi338/0>, 0 ( 338)[Li]
0013 setlocal_WC_0 id@2
0015 opt_invokebuiltin_delegate <builtin!_bi339/0>, 0 ( 339)[Li]
0018 setlocal_WC_0 status@3
0020 putobject "#<Ractor:#" ( 342)[Li]
0022 getlocal_WC_0 id@2
0024 dup
0025 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0027 anytostring
0028 getlocal_WC_0 name@1
0030 branchunless 40
0032 putchilledstring " "
0034 getlocal_WC_0 name@1
0036 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0038 jump 42
0040 putchilledstring ""
0042 dup
0043 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0045 anytostring
0046 getlocal_WC_0 loc@0
0048 branchunless 58
0050 putchilledstring " "
0052 getlocal_WC_0 loc@0
0054 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0056 jump 60
0058 putchilledstring ""
0060 dup
0061 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0063 anytostring
0064 putobject " "
0066 getlocal_WC_0 status@3
0068 dup
0069 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0071 anytostring
0072 putobject ">"
0074 concatstrings 7
0076 leave ( 343)[Re]
== disasm: #<ISeq:name@<internal:ractor>:348 (348,2)-(350,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi349/0>, 0 ( 349)[LiCa]
0003 leave ( 350)[Re]
== disasm: #<ISeq:<class:RemoteError>@<internal:ractor>:352 (352,2)-(355,5)>
0000 putself ( 354)[LiCl]
0001 putobject :ractor
0003 opt_send_without_block <calldata!mid:attr_reader, argc:1, FCALL|ARGS_SIMPLE>
0005 leave ( 355)[En]
== disasm: #<ISeq:close@<internal:ractor>:364 (364,2)-(366,5)>
0000 putself ( 365)[LiCa]
0001 opt_send_without_block <calldata!mid:default_port, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 opt_send_without_block <calldata!mid:close, argc:0, ARGS_SIMPLE>
0005 leave ( 366)[Re]
== disasm: #<ISeq:shareable?@<internal:ractor>:379 (379,2)-(383,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] obj@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi380/0>, 0 ( 380)[LiCa]
0003 leave ( 383)[Re]
== disasm: #<ISeq:make_shareable@<internal:ractor>:420 (420,2)-(430,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] obj@0<Arg> [ 2] copy@1 [ 1] ?@2
0000 getlocal_WC_0 copy@1 ( 421)[LiCa]
0002 branchunless 8
0004 opt_invokebuiltin_delegate <builtin!_bi422/0>, 0 ( 422)[Li]
0007 leave ( 430)[Re]
0008 opt_invokebuiltin_delegate_leave <builtin!_bi426/0>, 0 ( 426)[Li]
0011 leave ( 430)[Re]
== disasm: #<ISeq:[]@<internal:ractor>:434 (434,2)-(439,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] sym@0<Arg>
0000 putself ( 435)[LiCa]
0001 opt_getconstant_path <ic:0 Ractor>
0003 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
0005 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0008 branchunless 18
0010 putself ( 436)[Li]
0011 opt_getconstant_path <ic:1 RuntimeError>
0013 putchilledstring "Cannot get ractor local storage for non-current ractor"
0015 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0017 pop
0018 opt_invokebuiltin_delegate_leave <builtin!ractor_local_value/1>, 0( 438)[Li]
0021 leave ( 439)[Re]
== disasm: #<ISeq:[]=@<internal:ractor>:443 (443,2)-(448,5)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] sym@0<Arg> [ 1] val@1<Arg>
0000 putself ( 444)[LiCa]
0001 opt_getconstant_path <ic:0 Ractor>
0003 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
0005 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0008 branchunless 18
0010 putself ( 445)[Li]
0011 opt_getconstant_path <ic:1 RuntimeError>
0013 putchilledstring "Cannot set ractor local storage for non-current ractor"
0015 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0017 pop
0018 opt_invokebuiltin_delegate_leave <builtin!ractor_local_value_set/2>, 0( 447)[Li]
0021 leave ( 448)[Re]
== disasm: #<ISeq:[]@<internal:ractor>:451 (451,2)-(453,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] sym@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!ractor_local_value/1>, 0( 452)[LiCa]
0003 leave ( 453)[Re]
== disasm: #<ISeq:[]=@<internal:ractor>:456 (456,2)-(458,5)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] sym@0<Arg> [ 1] val@1<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!ractor_local_value_set/2>, 0( 457)[LiCa]
0003 leave ( 458)[Re]
== disasm: #<ISeq:store_if_absent@<internal:ractor>:474 (474,2)-(476,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] sym@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!ractor_local_value_store_if_absent/1>, 0( 475)[LiCa]
0003 leave ( 476)[Re]
== disasm: #<ISeq:main@<internal:ractor>:479 (479,2)-(483,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi480/0>, 0 ( 480)[LiCa]
0003 leave ( 483)[Re]
== disasm: #<ISeq:main?@<internal:ractor>:486 (486,2)-(490,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi487/0>, 0 ( 487)[LiCa]
0003 leave ( 490)[Re]
== disasm: #<ISeq:_require@<internal:ractor>:493 (493,2)-(499,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] feature@0<Arg>
0000 putself ( 494)[LiCa]
0001 opt_send_without_block <calldata!mid:main?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchunless 12
0005 putself ( 495)[Li]
0006 getlocal_WC_0 feature@0
0008 invokesuper <calldata!argc:1, FCALL|ARGS_SIMPLE|SUPER>, nil
0011 leave ( 499)[Re]
0012 opt_invokebuiltin_delegate_leave <builtin!ractor_require/1>, 0( 497)[Li]
0015 leave ( 499)[Re]
== disasm: #<ISeq:singleton class@<internal:ractor>:501 (501,2)-(518,5)>
0000 putself ( 502)[Li]
0001 opt_send_without_block <calldata!mid:private, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 pop
0004 definemethod :_activated, _activated ( 505)[Li]
0007 putobject :_activated
0009 leave
== disasm: #<ISeq:_activated@<internal:ractor>:505 (505,4)-(517,7)>
0000 opt_getconstant_path <ic:0 Kernel> ( 506)[LiCa]
0002 opt_getconstant_path <ic:1 Module>
0004 send <calldata!mid:new, argc:0>, block in _activated
0007 opt_send_without_block <calldata!mid:prepend, argc:1, ARGS_SIMPLE>
0009 leave ( 517)[Re]
== disasm: #<ISeq:block in _activated@<internal:ractor>:506 (506,31)-(516,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] m@0<AmbiguousArg>
0000 getlocal_WC_0 m@0 ( 507)[LiBc]
0002 putchilledstring "<RactorRequire>"
0004 opt_send_without_block <calldata!mid:set_temporary_name, argc:1, ARGS_SIMPLE>
0006 pop
0007 definemethod :require, require ( 509)[Li]
0010 putobject :require
0012 leave ( 516)[Br]
== disasm: #<ISeq:require@<internal:ractor>:509 (509,8)-(515,11)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] feature@0<Arg>
0000 opt_getconstant_path <ic:0 Ractor> ( 510)[LiCa]
0002 opt_send_without_block <calldata!mid:main?, argc:0, ARGS_SIMPLE>
0004 branchunless 13
0006 putself ( 511)[Li]
0007 getlocal_WC_0 feature@0
0009 invokesuper <calldata!argc:1, FCALL|ARGS_SIMPLE|SUPER|ZSUPER>, nil
0012 leave ( 515)[Re]
0013 opt_getconstant_path <ic:1 Ractor> ( 513)[Li]
0015 getlocal_WC_0 feature@0
0017 opt_send_without_block <calldata!mid:_require, argc:1, ARGS_SIMPLE>
0019 leave ( 515)[Re]
== disasm: #<ISeq:default_port@<internal:ractor>:526 (526,2)-(530,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi527/0>, 0 ( 527)[LiCa]
0003 leave ( 530)[Re]
== disasm: #<ISeq:join@<internal:ractor>:545 (545,2)-(556,5)>
== catch table
| catch type: ensure st: 0000 ed: 0038 sp: 0001 cont: 0043
| == disasm: #<ISeq:ensure in join@<internal:ractor>:555 (555,4)-(555,14)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_1 port@0 ( 555)[Li]
| 0002 opt_send_without_block <calldata!mid:close, argc:0, ARGS_SIMPLE>
| 0004 pop
| 0005 getlocal_WC_0 "$!"@0 ( 554)
| 0007 throw 0
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] port@0
0000 opt_getconstant_path <ic:0 Port> ( 546)[LiCa]
0002 putnil
0003 swap
0004 opt_new <calldata!mid:new, argc:0, ARGS_SIMPLE>, 11
0007 opt_send_without_block <calldata!mid:initialize, argc:0, FCALL|ARGS_SIMPLE>
0009 jump 14
0011 opt_send_without_block <calldata!mid:new, argc:0, ARGS_SIMPLE>
0013 swap
0014 pop
0015 setlocal_WC_0 port@0
0017 putself ( 548)[Li]
0018 getlocal_WC_0 port@0
0020 opt_send_without_block <calldata!mid:monitor, argc:1, FCALL|ARGS_SIMPLE>
0022 pop
0023 getlocal_WC_0 port@0 ( 549)[Li]
0025 opt_send_without_block <calldata!mid:receive, argc:0, ARGS_SIMPLE>
0027 putobject :aborted
0029 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0031 branchunless 37
0033 opt_invokebuiltin_delegate <builtin!ractor_value/0>, 0( 550)[Li]
0036 pop
0037 putself ( 553)[Li]
0038 getlocal_WC_0 port@0 ( 555)[Li]
0040 opt_send_without_block <calldata!mid:close, argc:0, ARGS_SIMPLE>
0042 pop
0043 leave ( 556)[Re]
== disasm: #<ISeq:value@<internal:ractor>:571 (571,2)-(574,5)>
0000 putself ( 572)[LiCa]
0001 opt_send_without_block <calldata!mid:join, argc:0, FCALL|ARGS_SIMPLE>
0003 pop
0004 opt_invokebuiltin_delegate_leave <builtin!ractor_value/0>, 0( 573)[Li]
0007 leave ( 574)[Re]
== disasm: #<ISeq:monitor@<internal:ractor>:593 (593,2)-(595,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] port@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!ractor_monitor/1>, 0( 594)[LiCa]
0003 leave ( 595)[Re]
== disasm: #<ISeq:unmonitor@<internal:ractor>:603 (603,2)-(605,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] port@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!ractor_unmonitor/1>, 0( 604)[LiCa]
0003 leave ( 605)[Re]
== disasm: #<ISeq:shareable_proc@<internal:ractor>:626 (626,2)-(632,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] self@0 [ 1] ?@1
0000 opt_invokebuiltin_delegate_leave <builtin!_bi629/0>, 0 ( 629)[LiCa]
0003 leave ( 632)[Re]
== disasm: #<ISeq:shareable_lambda@<internal:ractor>:640 (640,2)-(646,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] self@0 [ 1] ?@1
0000 opt_invokebuiltin_delegate_leave <builtin!_bi643/0>, 0 ( 643)[LiCa]
0003 leave ( 646)[Re]
== disasm: #<ISeq:<class:Port>@<internal:ractor>:649 (649,2)-(803,5)>
0000 definemethod :receive, receive ( 699)[LiCl]
0003 definemethod :send, send ( 742)[Li]
0006 putspecialobject 1 ( 748)[Li]
0008 putspecialobject 2
0010 putobject :<<
0012 putobject :send
0014 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0016 pop
0017 definemethod :close, close ( 776)[Li]
0020 definemethod :closed?, closed? ( 787)[Li]
0023 definemethod :inspect, inspect ( 796)[Li]
0026 putobject :inspect
0028 leave ( 803)[En]
== disasm: #<ISeq:receive@<internal:ractor>:699 (699,4)-(703,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi700/0>, 0 ( 700)[LiCa]
0003 leave ( 703)[Re]
== disasm: #<ISeq:send@<internal:ractor>:742 (742,4)-(746,7)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] obj@0<Arg> [ 2] move@1 [ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!_bi743/0>, 0 ( 743)[LiCa]
0003 leave ( 746)[Re]
== disasm: #<ISeq:close@<internal:ractor>:776 (776,4)-(780,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi777/0>, 0 ( 777)[LiCa]
0003 leave ( 780)[Re]
== disasm: #<ISeq:closed?@<internal:ractor>:787 (787,4)-(791,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!_bi788/0>, 0 ( 788)[LiCa]
0003 leave ( 791)[Re]
== disasm: #<ISeq:inspect@<internal:ractor>:796 (796,4)-(802,7)>
0000 putobject "#<Ractor::Port to:#" ( 797)[LiCa]
0002 opt_invokebuiltin_delegate <builtin!_bi798/0>, 0 ( 798)
0005 dup ( 797)
0006 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0008 anytostring
0009 putobject " id:" ( 799)
0011 opt_invokebuiltin_delegate <builtin!_bi800/0>, 0 ( 800)
0014 dup ( 799)
0015 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0017 anytostring
0018 putobject ">" ( 801)
0020 concatstrings 5 ( 797)
0022 leave ( 802)[Re]
== disasm: #<ISeq:<internal:numeric>@<internal:numeric>:1 (1,0)-(412,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Numeric, <class:Numeric>, 0
0007 pop
0008 putspecialobject 3 ( 94)[Li]
0010 putnil
0011 defineclass :Integer, <class:Integer>, 0
0015 pop
0016 putspecialobject 3 ( 349)[Li]
0018 putnil
0019 defineclass :Float, <class:Float>, 0
0023 leave
== disasm: #<ISeq:<class:Numeric>@<internal:numeric>:1 (1,0)-(92,3)>
0000 definemethod :dup, dup ( 9)[LiCl]
0003 definemethod :real?, real? ( 18)[Li]
0006 definemethod :real, real ( 27)[Li]
0009 definemethod :integer?, integer? ( 39)[Li]
0012 definemethod :finite?, finite? ( 48)[Li]
0015 definemethod :infinite?, infinite? ( 58)[Li]
0018 definemethod :imaginary, imaginary ( 67)[Li]
0021 putspecialobject 1 ( 71)[Li]
0023 putspecialobject 2
0025 putobject :imag
0027 putobject :imaginary
0029 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0031 pop
0032 definemethod :conjugate, conjugate ( 78)[Li]
0035 putspecialobject 1 ( 82)[Li]
0037 putspecialobject 2
0039 putobject :conj
0041 putobject :conjugate
0043 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0045 pop
0046 definemethod :+@, +@ ( 89)[Li]
0049 putobject :+@
0051 leave ( 92)[En]
== disasm: #<ISeq:dup@<internal:numeric>:9 (9,2)-(11,5)>
0000 putself ( 10)[LiCa]
0001 leave ( 11)[Re]
== disasm: #<ISeq:real?@<internal:numeric>:18 (18,2)-(20,5)>
0000 putobject true ( 19)[LiCa]
0002 leave ( 20)[Re]
== disasm: #<ISeq:real@<internal:numeric>:27 (27,2)-(29,5)>
0000 putself ( 28)[LiCa]
0001 leave ( 29)[Re]
== disasm: #<ISeq:integer?@<internal:numeric>:39 (39,2)-(41,5)>
0000 putobject false ( 40)[LiCa]
0002 leave ( 41)[Re]
== disasm: #<ISeq:finite?@<internal:numeric>:48 (48,2)-(50,5)>
0000 putobject true ( 49)[LiCa]
0002 leave ( 50)[Re]
== disasm: #<ISeq:infinite?@<internal:numeric>:58 (58,2)-(60,5)>
0000 putnil ( 59)[LiCa]
0001 leave ( 60)[Re]
== disasm: #<ISeq:imaginary@<internal:numeric>:67 (67,2)-(69,5)>
0000 putobject_INT2FIX_0_ ( 68)[LiCa]
0001 leave ( 69)[Re]
== disasm: #<ISeq:conjugate@<internal:numeric>:78 (78,2)-(80,5)>
0000 putself ( 79)[LiCa]
0001 leave ( 80)[Re]
== disasm: #<ISeq:+@@<internal:numeric>:89 (89,2)-(91,5)>
0000 putself ( 90)[LiCa]
0001 leave ( 91)[Re]
== disasm: #<ISeq:<class:Integer>@<internal:numeric>:94 (94,0)-(347,3)>
0000 definemethod :-@, -@ ( 99)[LiCl]
0003 definemethod :~, ~ ( 118)[Li]
0006 definemethod :abs, abs ( 132)[Li]
0009 definemethod :bit_length, bit_length ( 179)[Li]
0012 definemethod :even?, even? ( 188)[Li]
0015 definemethod :integer?, integer? ( 197)[Li]
0018 putspecialobject 1 ( 201)[Li]
0020 putspecialobject 2
0022 putobject :magnitude
0024 putobject :abs
0026 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0028 pop
0029 definemethod :odd?, odd? ( 207)[Li]
0032 definemethod :ord, ord ( 217)[Li]
0035 definemethod :size, size ( 234)[Li]
0038 definemethod :times, times ( 250)[Li]
0041 definemethod :to_i, to_i ( 267)[Li]
0044 definemethod :to_int, to_int ( 275)[Li]
0047 definemethod :zero?, zero? ( 283)[Li]
0050 definemethod :ceildiv, ceildiv ( 303)[Li]
0053 definemethod :numerator, numerator ( 313)[Li]
0056 definemethod :denominator, denominator ( 321)[Li]
0059 putself ( 325)[Li]
0060 send <calldata!mid:with_jit, argc:0, FCALL>, block in <class:Integer>
0063 leave ( 347)[En]
== disasm: #<ISeq:-@@<internal:numeric>:99 (99,2)-(102,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi101/0>, 0 ( 101)[LiCa]
0003 leave ( 102)[Re]
== disasm: #<ISeq:~@<internal:numeric>:118 (118,2)-(121,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi120/0>, 0 ( 120)[LiCa]
0003 leave ( 121)[Re]
== disasm: #<ISeq:abs@<internal:numeric>:132 (132,2)-(135,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi134/0>, 0 ( 134)[LiCa]
0003 leave ( 135)[Re]
== disasm: #<ISeq:bit_length@<internal:numeric>:179 (179,2)-(182,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi181/0>, 0 ( 181)[LiCa]
0003 leave ( 182)[Re]
== disasm: #<ISeq:even?@<internal:numeric>:188 (188,2)-(191,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi190/0>, 0 ( 190)[LiCa]
0003 leave ( 191)[Re]
== disasm: #<ISeq:integer?@<internal:numeric>:197 (197,2)-(199,5)>
0000 putobject true ( 198)[LiCa]
0002 leave ( 199)[Re]
== disasm: #<ISeq:odd?@<internal:numeric>:207 (207,2)-(210,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi209/0>, 0 ( 209)[LiCa]
0003 leave ( 210)[Re]
== disasm: #<ISeq:ord@<internal:numeric>:217 (217,2)-(219,5)>
0000 putself ( 218)[LiCa]
0001 leave ( 219)[Re]
== disasm: #<ISeq:size@<internal:numeric>:234 (234,2)-(237,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi236/0>, 0 ( 236)[LiCa]
0003 leave ( 237)[Re]
== disasm: #<ISeq:times@<internal:numeric>:250 (250,2)-(261,5)> INLINE_BLOCK
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] i@0
0000 putnil ( 252)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi253/0>, 0 ( 253)[Li]
0010 leave [Re]
0011 putobject_INT2FIX_0_ ( 255)[Li]
0012 setlocal_WC_0 i@0
0014 jump 31 ( 256)[Li]
0016 putnil
0017 pop
0018 jump 31
0020 getlocal_WC_0 i@0 ( 257)[Li]
0022 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0024 pop
0025 getlocal_WC_0 i@0 ( 258)[Li]
0027 opt_succ <calldata!mid:succ, argc:0, ARGS_SIMPLE>[CcCr]
0029 setlocal_WC_0 i@0
0031 getlocal_WC_0 i@0 ( 256)
0033 putself
0034 opt_lt <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
0036 branchif 20
0038 putnil
0039 pop
0040 putself ( 260)[Li]
0041 leave ( 261)[Re]
== disasm: #<ISeq:to_i@<internal:numeric>:267 (267,2)-(269,5)>
0000 putself ( 268)[LiCa]
0001 leave ( 269)[Re]
== disasm: #<ISeq:to_int@<internal:numeric>:275 (275,2)-(277,5)>
0000 putself ( 276)[LiCa]
0001 leave ( 277)[Re]
== disasm: #<ISeq:zero?@<internal:numeric>:283 (283,2)-(286,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi285/0>, 0 ( 285)[LiCa]
0003 leave ( 286)[Re]
== disasm: #<ISeq:ceildiv@<internal:numeric>:303 (303,2)-(305,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] other@0<Arg>
0000 putself ( 304)[LiCa]
0001 putobject_INT2FIX_0_
0002 getlocal_WC_0 other@0
0004 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0006 opt_send_without_block <calldata!mid:div, argc:1, FCALL|ARGS_SIMPLE>
0008 opt_send_without_block <calldata!mid:-@, argc:0, ARGS_SIMPLE>
0010 leave ( 305)[Re]
== disasm: #<ISeq:numerator@<internal:numeric>:313 (313,2)-(315,5)>
0000 putself ( 314)[LiCa]
0001 leave ( 315)[Re]
== disasm: #<ISeq:denominator@<internal:numeric>:321 (321,2)-(323,5)>
0000 putobject_INT2FIX_1_ ( 322)[LiCa]
0001 leave ( 323)[Re]
== disasm: #<ISeq:block in <class:Integer>@<internal:numeric>:325 (325,11)-(346,5)>
0000 putobject :downto ( 326)[LiBc]
0002 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0004 branchunless 21
0006 putspecialobject 1 ( 327)[Li]
0008 putspecialobject 2
0010 putobject :downto
0012 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0014 pop
0015 definemethod :downto, downto ( 329)[Li]
0018 putobject :downto
0020 leave ( 346)[Br]
0021 putnil ( 329)
0022 leave ( 346)[Br]
== disasm: #<ISeq:downto@<internal:numeric>:329 (329,6)-(344,9)> INLINE_BLOCK C_TRACE
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] to@0<Arg> [ 1] from@1
0000 putnil ( 334)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi335/0>, 0 ( 335)[Li]
0010 leave [Re]
0011 putself ( 338)[Li]
0012 setlocal_WC_0 from@1
0014 jump 31 ( 339)[Li]
0016 putnil
0017 pop
0018 jump 31
0020 getlocal_WC_0 from@1 ( 340)[Li]
0022 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0024 pop
0025 getlocal_WC_0 from@1 ( 341)[Li]
0027 opt_send_without_block <calldata!mid:pred, argc:0, ARGS_SIMPLE>
0029 setlocal_WC_0 from@1
0031 getlocal_WC_0 from@1 ( 339)
0033 getlocal_WC_0 to@0
0035 opt_ge <calldata!mid:>=, argc:1, ARGS_SIMPLE>[CcCr]
0037 branchif 20
0039 putnil
0040 pop
0041 putself ( 343)[Li]
0042 leave ( 344)[Re]
== disasm: #<ISeq:<class:Float>@<internal:numeric>:349 (349,0)-(412,3)>
0000 definemethod :to_f, to_f ( 355)[LiCl]
0003 definemethod :abs, abs ( 368)[Li]
0006 putspecialobject 1 ( 373)[Li]
0008 putspecialobject 2
0010 putobject :magnitude
0012 putobject :abs
0014 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0016 pop
0017 definemethod :-@, -@ ( 380)[Li]
0020 definemethod :zero?, zero? ( 389)[Li]
0023 definemethod :positive?, positive? ( 398)[Li]
0026 definemethod :negative?, negative? ( 407)[Li]
0029 putobject :negative?
0031 leave ( 412)[En]
== disasm: #<ISeq:to_f@<internal:numeric>:355 (355,2)-(357,5)>
0000 putself ( 356)[LiCa]
0001 leave ( 357)[Re]
== disasm: #<ISeq:abs@<internal:numeric>:368 (368,2)-(371,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi370/0>, 0 ( 370)[LiCa]
0003 leave ( 371)[Re]
== disasm: #<ISeq:-@@<internal:numeric>:380 (380,2)-(383,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi382/0>, 0 ( 382)[LiCa]
0003 leave ( 383)[Re]
== disasm: #<ISeq:zero?@<internal:numeric>:389 (389,2)-(392,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi391/0>, 0 ( 391)[LiCa]
0003 leave ( 392)[Re]
== disasm: #<ISeq:positive?@<internal:numeric>:398 (398,2)-(401,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi400/0>, 0 ( 400)[LiCa]
0003 leave ( 401)[Re]
== disasm: #<ISeq:negative?@<internal:numeric>:407 (407,2)-(410,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi409/0>, 0 ( 409)[LiCa]
0003 leave ( 410)[Re]
== disasm: #<ISeq:with_jit@<internal:jit_hook>:4 (4,10)-(12,5)>
== catch table
| catch type: rescue st: 0001 ed: 0014 sp: 0000 cont: 0016
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
| catch type: rescue st: 0024 ed: 0037 sp: 0000 cont: 0039
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1])
[ 1] block@0<Block>
0000 putnil ( 6)[LiCa]
0001 putnil
0002 defined constant, :RubyVM, true
0006 branchunless 16
0008 opt_getconstant_path <ic:0 RubyVM>
0010 defined constant-from, :ZJIT, true
0014 swap
0015 pop
0016 branchunless 23
0018 opt_invokebuiltin_delegate <builtin!rb_zjit_option_enabled_p/0>, 0
0021 branchunless 23
0023 putnil ( 9)[Li]
0024 putnil
0025 defined constant, :RubyVM, true
0029 branchunless 39
0031 opt_getconstant_path <ic:1 RubyVM>
0033 defined constant-from, :YJIT, true
0037 swap
0038 pop
0039 branchunless 51
0041 opt_getconstant_path <ic:2 RubyVM::YJIT> ( 10)[Li]
0043 putobject :add_jit_hook
0045 getblockparam block@0, 0
0048 opt_send_without_block <calldata!mid:send, argc:2, ARGS_SIMPLE>
0050 leave ( 12)[Re]
0051 putnil ( 10)
0052 leave ( 12)[Re]
== disasm: #<ISeq:add_jit_hook@<internal:yjit>:274 (274,4)-(276,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hook@0<Arg>
0000 getinstancevariable :@jit_hooks, <is:0> ( 275)[LiCa]
0003 getlocal_WC_0 hook@0
0005 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0007 leave ( 276)[Re]
== disasm: #<ISeq:<internal:io>@<internal:io>:1 (1,0)-(136,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :IO, <class:IO>, 0
0007 leave
== disasm: #<ISeq:<class:IO>@<internal:io>:1 (1,0)-(136,3)>
0000 definemethod :read_nonblock, read_nonblock( 62)[LiCl]
0003 definemethod :write_nonblock, write_nonblock( 120)[Li]
0006 definemethod :readline, readline ( 133)[Li]
0009 putobject :readline
0011 leave ( 136)[En]
== disasm: #<ISeq:read_nonblock@<internal:io>:62 (62,2)-(64,5)>
local table (size: 4, argc: 1 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] len@0<Arg> [ 3] buf@1<Opt=0>[ 2] exception@2[ 1] ?@3
0000 putnil ( 62)
0001 setlocal_WC_0 buf@1
0003 opt_invokebuiltin_delegate_leave <builtin!io_read_nonblock/3>, 0( 63)[LiCa]
0006 leave ( 64)[Re]
== disasm: #<ISeq:write_nonblock@<internal:io>:120 (120,2)-(122,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] buf@0<Arg> [ 2] exception@1[ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!io_write_nonblock/2>, 0( 121)[LiCa]
0003 leave ( 122)[Re]
== disasm: #<ISeq:readline@<internal:io>:133 (133,2)-(135,5)>
local table (size: 4, argc: 0 [opts: 2, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] sep@0<Opt=0>[ 3] limit@1<Opt=4>[ 2] chomp@2 [ 1] ?@3
0000 getglobal :$/ ( 133)
0002 setlocal_WC_0 sep@0
0004 putnil
0005 setlocal_WC_0 limit@1
0007 opt_invokebuiltin_delegate_leave <builtin!io_readline/3>, 0( 134)[LiCa]
0010 leave ( 135)[Re]
== disasm: #<ISeq:<internal:dir>@<internal:dir>:158 (158,0)-(506,12)>
0000 putspecialobject 3 ( 158)[Li]
0002 putnil
0003 defineclass :Dir, <class:Dir>, 0
0007 pop
0008 putnil ( 416)[Li]
0009 leave
== disasm: #<ISeq:<class:Dir>@<internal:dir>:158 (158,0)-(414,3)>
0000 putself ( 183)[LiCl]
0001 definesmethod :open, open
0004 definemethod :initialize, initialize ( 211)[Li]
0007 putself ( 222)[Li]
0008 definesmethod :[], []
0011 putself ( 410)[Li]
0012 definesmethod :glob, glob
0015 putobject :glob
0017 leave ( 414)[En]
== disasm: #<ISeq:open@<internal:dir>:183 (183,2)-(194,5)>
== catch table
| catch type: ensure st: 0010 ed: 0014 sp: 0001 cont: 0018
| == disasm: #<ISeq:ensure in open@<internal:dir>:189 (189,8)-(189,34)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_1 dir@4 ( 189)[Li]
| 0002 invokebuiltin <builtin!dir_s_close/1>
| 0004 pop
| 0005 getlocal_WC_0 "$!"@0 ( 188)
| 0007 throw 0
|------------------------------------------------------------------------
local table (size: 5, argc: 1 [opts: 0, rest: -1, post: 0, block: 3, kw: 1@0, kwrest: -1])
[ 5] name@0<Arg>[ 4] encoding@1 [ 3] ?@2 [ 2] block@3<Block>[ 1] dir@4
0000 opt_invokebuiltin_delegate <builtin!dir_s_open/2>, 0 ( 184)[LiCa]
0003 setlocal_WC_0 dir@4
0005 getblockparamproxy block@3, 0 ( 185)[Li]
0008 branchunless 19
0010 getlocal_WC_0 dir@4 ( 187)[Li]
0012 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0014 opt_invokebuiltin_delegate <builtin!dir_s_close/1>, 4( 189)[Li]
0017 pop
0018 leave ( 194)[Re]
0019 getlocal_WC_0 dir@4 ( 192)[Li]
0021 leave ( 194)[Re]
== disasm: #<ISeq:initialize@<internal:dir>:211 (211,2)-(213,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] name@0<Arg>[ 2] encoding@1 [ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!dir_initialize/2>, 0( 212)[LiCa]
0003 leave ( 213)[Re]
== disasm: #<ISeq:[]@<internal:dir>:222 (222,2)-(224,5)>
local table (size: 4, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: 2@0, kwrest: -1])
[ 4] args@0<Rest>[ 3] base@1 [ 2] sort@2 [ 1] ?@3
0000 opt_invokebuiltin_delegate_leave <builtin!dir_s_aref/3>, 0 ( 223)[LiCa]
0003 leave ( 224)[Re]
== disasm: #<ISeq:glob@<internal:dir>:410 (410,2)-(413,5)>
local table (size: 6, argc: 1 [opts: 1, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 6] pattern@0<Arg>[ 5] _flags@1<Opt=0>[ 4] flags@2 [ 3] base@3 [ 2] sort@4 [ 1] ?@5
0000 putobject_INT2FIX_0_ ( 410)
0001 setlocal_WC_0 _flags@1
0003 checkkeyword 3, 0
0006 branchif 12
0008 getlocal_WC_0 _flags@1
0010 setlocal_WC_0 flags@2
0012 getlocal_WC_0 pattern@0 ( 412)[LiCa]
0014 getlocal_WC_0 flags@2
0016 getlocal_WC_0 base@3
0018 getlocal_WC_0 sort@4
0020 invokebuiltin <builtin!dir_s_glob/4>
0022 leave ( 413)[Re]
== disasm: #<ISeq:<internal:ast>@<internal:ast>:19 (19,0)-(332,3)>
0000 opt_getconstant_path <ic:0 RubyVM> ( 19)[Li]
0002 putnil
0003 defineclass :AbstractSyntaxTree, <module:AbstractSyntaxTree>, 10
0007 leave
== disasm: #<ISeq:<module:AbstractSyntaxTree>@<internal:ast>:19 (19,0)-(332,3)>
0000 putself ( 57)[LiCl]
0001 definesmethod :parse, parse
0004 putself ( 74)[Li]
0005 definesmethod :parse_file, parse_file
0008 putself ( 95)[Li]
0009 definesmethod :of, of
0012 putself ( 110)[Li]
0013 definesmethod :node_id_for_backtrace_location, node_id_for_backtrace_location
0016 putspecialobject 3 ( 119)[Li]
0018 putnil
0019 defineclass :Node, <class:Node>, 0
0023 pop
0024 putspecialobject 3 ( 290)[Li]
0026 putnil
0027 defineclass :Location, <class:Location>, 0
0031 leave ( 332)[En]
== disasm: #<ISeq:parse@<internal:ast>:57 (57,2)-(59,5)>
local table (size: 5, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 5] string@0<Arg>[ 4] keep_script_lines@1[ 3] error_tolerant@2[ 2] keep_tokens@3[ 1] ?@4
0000 checkkeyword 3, 0 ( 57)
0003 branchif 11
0005 opt_getconstant_path <ic:0 RubyVM>
0007 opt_send_without_block <calldata!mid:keep_script_lines, argc:0, ARGS_SIMPLE>
0009 setlocal_WC_0 keep_script_lines@1
0011 opt_invokebuiltin_delegate_leave <builtin!ast_s_parse/4>, 0( 58)[LiCa]
0014 leave ( 59)[Re]
== disasm: #<ISeq:parse_file@<internal:ast>:74 (74,2)-(76,5)>
local table (size: 5, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 5] pathname@0<Arg>[ 4] keep_script_lines@1[ 3] error_tolerant@2[ 2] keep_tokens@3[ 1] ?@4
0000 checkkeyword 3, 0 ( 74)
0003 branchif 11
0005 opt_getconstant_path <ic:0 RubyVM>
0007 opt_send_without_block <calldata!mid:keep_script_lines, argc:0, ARGS_SIMPLE>
0009 setlocal_WC_0 keep_script_lines@1
0011 opt_invokebuiltin_delegate_leave <builtin!ast_s_parse_file/4>, 0( 75)[LiCa]
0014 leave ( 76)[Re]
== disasm: #<ISeq:of@<internal:ast>:95 (95,2)-(97,5)>
local table (size: 5, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 5] body@0<Arg>[ 4] keep_script_lines@1[ 3] error_tolerant@2[ 2] keep_tokens@3[ 1] ?@4
0000 checkkeyword 3, 0 ( 95)
0003 branchif 11
0005 opt_getconstant_path <ic:0 RubyVM>
0007 opt_send_without_block <calldata!mid:keep_script_lines, argc:0, ARGS_SIMPLE>
0009 setlocal_WC_0 keep_script_lines@1
0011 opt_invokebuiltin_delegate_leave <builtin!ast_s_of/4>, 0 ( 96)[LiCa]
0014 leave ( 97)[Re]
== disasm: #<ISeq:node_id_for_backtrace_location@<internal:ast>:110 (110,2)-(112,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] backtrace_location@0<Arg>
0000 opt_invokebuiltin_delegate_leave <builtin!node_id_for_backtrace_location/1>, 0( 111)[LiCa]
0003 leave ( 112)[Re]
== disasm: #<ISeq:<class:Node>@<internal:ast>:119 (119,2)-(283,5)>
0000 definemethod :type, type ( 132)[LiCl]
0003 definemethod :first_lineno, first_lineno( 140)[Li]
0006 definemethod :first_column, first_column( 148)[Li]
0009 definemethod :last_lineno, last_lineno ( 156)[Li]
0012 definemethod :last_column, last_column ( 164)[Li]
0015 definemethod :tokens, tokens ( 184)[Li]
0018 definemethod :all_tokens, all_tokens ( 205)[Li]
0021 definemethod :children, children ( 216)[Li]
0024 definemethod :inspect, inspect ( 224)[Li]
0027 definemethod :node_id, node_id ( 235)[Li]
0030 definemethod :script_lines, script_lines( 247)[Li]
0033 definemethod :source, source ( 263)[Li]
0036 definemethod :locations, locations ( 280)[Li]
0039 putobject :locations
0041 leave ( 283)[En]
== disasm: #<ISeq:type@<internal:ast>:132 (132,4)-(134,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_type/0>, 0( 133)[LiCa]
0003 leave ( 134)[Re]
== disasm: #<ISeq:first_lineno@<internal:ast>:140 (140,4)-(142,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_first_lineno/0>, 0( 141)[LiCa]
0003 leave ( 142)[Re]
== disasm: #<ISeq:first_column@<internal:ast>:148 (148,4)-(150,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_first_column/0>, 0( 149)[LiCa]
0003 leave ( 150)[Re]
== disasm: #<ISeq:last_lineno@<internal:ast>:156 (156,4)-(158,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_last_lineno/0>, 0( 157)[LiCa]
0003 leave ( 158)[Re]
== disasm: #<ISeq:last_column@<internal:ast>:164 (164,4)-(166,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_last_column/0>, 0( 165)[LiCa]
0003 leave ( 166)[Re]
== disasm: #<ISeq:tokens@<internal:ast>:184 (184,4)-(194,7)>
0000 putself ( 185)[LiCa]
0001 opt_send_without_block <calldata!mid:all_tokens, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 branchif 7
0005 putnil
0006 leave [Re]
0007 putself ( 187)[Li]
0008 opt_send_without_block <calldata!mid:all_tokens, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0010 newarray 0
0012 send <calldata!mid:each_with_object, argc:1>, block in tokens
0015 leave ( 194)[Re]
== disasm: #<ISeq:block in tokens@<internal:ast>:187 (187,38)-(193,9)>
local table (size: 3, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] token@0<Arg>[ 2] a@1<Arg> [ 1] loc@2
0000 getlocal_WC_0 token@0 ( 188)[LiBc]
0002 opt_send_without_block <calldata!mid:last, argc:0, ARGS_SIMPLE>
0004 setlocal_WC_0 loc@2
0006 putself ( 189)[Li]
0007 opt_send_without_block <calldata!mid:first_lineno, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 putself
0010 opt_send_without_block <calldata!mid:first_column, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0012 newarray 2
0014 getlocal_WC_0 loc@2
0016 putobject_INT2FIX_0_
0017 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0019 getlocal_WC_0 loc@2
0021 putobject_INT2FIX_1_
0022 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0024 newarray 2
0026 opt_send_without_block <calldata!mid:<=>, argc:1, ARGS_SIMPLE>
0028 putobject_INT2FIX_0_
0029 opt_le <calldata!mid:<=, argc:1, ARGS_SIMPLE>[CcCr]
0031 branchunless 69
0033 putself ( 190)[Li]
0034 opt_send_without_block <calldata!mid:last_lineno, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0036 putself
0037 opt_send_without_block <calldata!mid:last_column, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0039 newarray 2
0041 getlocal_WC_0 loc@2
0043 putobject 2
0045 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0047 getlocal_WC_0 loc@2
0049 putobject 3
0051 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0053 newarray 2
0055 opt_send_without_block <calldata!mid:<=>, argc:1, ARGS_SIMPLE>
0057 putobject_INT2FIX_0_
0058 opt_ge <calldata!mid:>=, argc:1, ARGS_SIMPLE>[CcCr]
0060 branchunless 69 ( 189)
0062 getlocal_WC_0 a@1 ( 191)[Li]
0064 getlocal_WC_0 token@0
0066 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0068 leave ( 193)[Br]
0069 putnil ( 191)
0070 leave ( 193)[Br]
== disasm: #<ISeq:all_tokens@<internal:ast>:205 (205,4)-(207,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_all_tokens/0>, 0( 206)[LiCa]
0003 leave ( 207)[Re]
== disasm: #<ISeq:children@<internal:ast>:216 (216,4)-(218,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_children/0>, 0( 217)[LiCa]
0003 leave ( 218)[Re]
== disasm: #<ISeq:inspect@<internal:ast>:224 (224,4)-(226,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_inspect/0>, 0( 225)[LiCa]
0003 leave ( 226)[Re]
== disasm: #<ISeq:node_id@<internal:ast>:235 (235,4)-(237,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_node_id/0>, 0( 236)[LiCa]
0003 leave ( 237)[Re]
== disasm: #<ISeq:script_lines@<internal:ast>:247 (247,4)-(249,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_script_lines/0>, 0( 248)[LiCa]
0003 leave ( 249)[Re]
== disasm: #<ISeq:source@<internal:ast>:263 (263,4)-(273,7)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] lines@0
0000 putself ( 264)[LiCa]
0001 opt_send_without_block <calldata!mid:script_lines, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 setlocal_WC_0 lines@0
0005 getlocal_WC_0 lines@0 ( 265)[Li]
0007 branchunless 75
0009 getlocal_WC_0 lines@0 ( 266)[Li]
0011 putself
0012 opt_send_without_block <calldata!mid:first_lineno, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0014 putobject_INT2FIX_1_
0015 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0017 putself
0018 opt_send_without_block <calldata!mid:last_lineno, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0020 putobject_INT2FIX_1_
0021 opt_minus <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
0023 newrange 0
0025 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0027 setlocal_WC_0 lines@0
0029 getlocal_WC_0 lines@0 ( 267)[Li]
0031 putobject -1
0033 getlocal_WC_0 lines@0
0035 putobject -1
0037 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0039 putobject_INT2FIX_0_
0040 putself
0041 opt_send_without_block <calldata!mid:last_column, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0043 newrange 1
0045 opt_send_without_block <calldata!mid:byteslice, argc:1, ARGS_SIMPLE>
0047 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0049 pop
0050 getlocal_WC_0 lines@0 ( 268)[Li]
0052 putobject_INT2FIX_0_
0053 getlocal_WC_0 lines@0
0055 putobject_INT2FIX_0_
0056 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0058 putself
0059 opt_send_without_block <calldata!mid:first_column, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0061 putobject -1
0063 newrange 0
0065 opt_send_without_block <calldata!mid:byteslice, argc:1, ARGS_SIMPLE>
0067 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
0069 pop
0070 getlocal_WC_0 lines@0 ( 269)[Li]
0072 opt_send_without_block <calldata!mid:join, argc:0, ARGS_SIMPLE>
0074 leave ( 273)[Re]
0075 putnil ( 271)[Li]
0076 leave ( 273)[Re]
== disasm: #<ISeq:locations@<internal:ast>:280 (280,4)-(282,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_node_locations/0>, 0( 281)[LiCa]
0003 leave ( 282)[Re]
== disasm: #<ISeq:<class:Location>@<internal:ast>:290 (290,2)-(331,5)>
0000 definemethod :first_lineno, first_lineno( 296)[LiCl]
0003 definemethod :first_column, first_column( 304)[Li]
0006 definemethod :last_lineno, last_lineno ( 312)[Li]
0009 definemethod :last_column, last_column ( 320)[Li]
0012 definemethod :inspect, inspect ( 328)[Li]
0015 putobject :inspect
0017 leave ( 331)[En]
== disasm: #<ISeq:first_lineno@<internal:ast>:296 (296,4)-(298,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_location_first_lineno/0>, 0( 297)[LiCa]
0003 leave ( 298)[Re]
== disasm: #<ISeq:first_column@<internal:ast>:304 (304,4)-(306,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_location_first_column/0>, 0( 305)[LiCa]
0003 leave ( 306)[Re]
== disasm: #<ISeq:last_lineno@<internal:ast>:312 (312,4)-(314,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_location_last_lineno/0>, 0( 313)[LiCa]
0003 leave ( 314)[Re]
== disasm: #<ISeq:last_column@<internal:ast>:320 (320,4)-(322,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_location_last_column/0>, 0( 321)[LiCa]
0003 leave ( 322)[Re]
== disasm: #<ISeq:inspect@<internal:ast>:328 (328,4)-(330,7)>
0000 opt_invokebuiltin_delegate_leave <builtin!ast_location_inspect/0>, 0( 329)[LiCa]
0003 leave ( 330)[Re]
== disasm: #<ISeq:<internal:trace_point>@<internal:trace_point>:49 (49,0)-(418,3)>
0000 putspecialobject 3 ( 49)[Li]
0002 putnil
0003 defineclass :TracePoint, <class:TracePoint>, 0
0007 leave
== disasm: #<ISeq:<class:TracePoint>@<internal:trace_point>:49 (49,0)-(418,3)>
0000 putself ( 94)[LiCl]
0001 definesmethod :new, new
0004 definemethod :inspect, inspect ( 104)[Li]
0007 putself ( 117)[Li]
0008 definesmethod :stat, stat
0011 putself ( 132)[Li]
0012 definesmethod :trace, trace
0015 putself ( 198)[Li]
0016 definesmethod :allow_reentry, allow_reentry
0019 definemethod :enable, enable ( 259)[Li]
0022 definemethod :disable, disable ( 295)[Li]
0025 definemethod :enabled?, enabled? ( 304)[Li]
0028 definemethod :event, event ( 311)[Li]
0031 definemethod :lineno, lineno ( 316)[Li]
0034 definemethod :path, path ( 321)[Li]
0037 definemethod :parameters, parameters ( 327)[Li]
0040 definemethod :method_id, method_id ( 332)[Li]
0043 definemethod :callee_id, callee_id ( 337)[Li]
0046 definemethod :defined_class, defined_class( 373)[Li]
0049 definemethod :binding, binding ( 381)[Li]
0052 definemethod :self, self ( 391)[Li]
0055 definemethod :return_value, return_value( 396)[Li]
0058 definemethod :raised_exception, raised_exception( 401)[Li]
0061 definemethod :eval_script, eval_script ( 407)[Li]
0064 definemethod :instruction_sequence, instruction_sequence( 415)[Li]
0067 putobject :instruction_sequence
0069 leave ( 418)[En]
== disasm: #<ISeq:new@<internal:trace_point>:94 (94,2)-(97,5)>
local table (size: 1, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] events@0<Rest>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_new_s/1>, 0( 96)[LiCa]
0003 leave ( 97)[Re]
== disasm: #<ISeq:inspect@<internal:trace_point>:104 (104,2)-(106,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_inspect/0>, 0( 105)[LiCa]
0003 leave ( 106)[Re]
== disasm: #<ISeq:stat@<internal:trace_point>:117 (117,2)-(119,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_stat_s/0>, 0( 118)[LiCa]
0003 leave ( 119)[Re]
== disasm: #<ISeq:trace@<internal:trace_point>:132 (132,2)-(135,5)>
local table (size: 1, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] events@0<Rest>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_trace_s/1>, 0( 134)[LiCa]
0003 leave ( 135)[Re]
== disasm: #<ISeq:allow_reentry@<internal:trace_point>:198 (198,2)-(201,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_allow_reentry/0>, 0( 200)[LiCa]
0003 leave ( 201)[Re]
== disasm: #<ISeq:enable@<internal:trace_point>:259 (259,2)-(262,5)>
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 3@0, kwrest: -1])
[ 4] target@0 [ 3] target_line@1[ 2] target_thread@2[ 1] ?@3
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_enable_m/3>, 0( 261)[LiCa]
0003 leave ( 262)[Re]
== disasm: #<ISeq:disable@<internal:trace_point>:295 (295,2)-(298,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_disable_m/0>, 0( 297)[LiCa]
0003 leave ( 298)[Re]
== disasm: #<ISeq:enabled?@<internal:trace_point>:304 (304,2)-(306,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_enabled_p/0>, 0( 305)[LiCa]
0003 leave ( 306)[Re]
== disasm: #<ISeq:event@<internal:trace_point>:311 (311,2)-(313,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_event/0>, 0( 312)[LiCa]
0003 leave ( 313)[Re]
== disasm: #<ISeq:lineno@<internal:trace_point>:316 (316,2)-(318,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_lineno/0>, 0( 317)[LiCa]
0003 leave ( 318)[Re]
== disasm: #<ISeq:path@<internal:trace_point>:321 (321,2)-(323,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_path/0>, 0( 322)[LiCa]
0003 leave ( 323)[Re]
== disasm: #<ISeq:parameters@<internal:trace_point>:327 (327,2)-(329,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_parameters/0>, 0( 328)[LiCa]
0003 leave ( 329)[Re]
== disasm: #<ISeq:method_id@<internal:trace_point>:332 (332,2)-(334,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_method_id/0>, 0( 333)[LiCa]
0003 leave ( 334)[Re]
== disasm: #<ISeq:callee_id@<internal:trace_point>:337 (337,2)-(339,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_callee_id/0>, 0( 338)[LiCa]
0003 leave ( 339)[Re]
== disasm: #<ISeq:defined_class@<internal:trace_point>:373 (373,2)-(375,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_defined_class/0>, 0( 374)[LiCa]
0003 leave ( 375)[Re]
== disasm: #<ISeq:binding@<internal:trace_point>:381 (381,2)-(383,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_binding/0>, 0( 382)[LiCa]
0003 leave ( 383)[Re]
== disasm: #<ISeq:self@<internal:trace_point>:391 (391,2)-(393,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_self/0>, 0( 392)[LiCa]
0003 leave ( 393)[Re]
== disasm: #<ISeq:return_value@<internal:trace_point>:396 (396,2)-(398,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_return_value/0>, 0( 397)[LiCa]
0003 leave ( 398)[Re]
== disasm: #<ISeq:raised_exception@<internal:trace_point>:401 (401,2)-(403,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_raised_exception/0>, 0( 402)[LiCa]
0003 leave ( 403)[Re]
== disasm: #<ISeq:eval_script@<internal:trace_point>:407 (407,2)-(409,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_eval_script/0>, 0( 408)[LiCa]
0003 leave ( 409)[Re]
== disasm: #<ISeq:instruction_sequence@<internal:trace_point>:415 (415,2)-(417,5)>
0000 opt_invokebuiltin_delegate_leave <builtin!tracepoint_attr_instruction_sequence/0>, 0( 416)[LiCa]
0003 leave ( 417)[Re]
== disasm: #<ISeq:<internal:pack>@<internal:pack>:1 (1,0)-(36,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Array, <class:Array>, 0
0007 pop
0008 putspecialobject 3 ( 12)[Li]
0010 putnil
0011 defineclass :String, <class:String>, 0
0015 leave
== disasm: #<ISeq:<class:Array>@<internal:pack>:1 (1,0)-(10,3)>
0000 definemethod :pack, pack ( 7)[LiCl]
0003 putobject :pack
0005 leave ( 10)[En]
== disasm: #<ISeq:pack@<internal:pack>:7 (7,2)-(9,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] fmt@0<Arg> [ 2] buffer@1 [ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!pack_pack/2>, 0 ( 8)[LiCa]
0003 leave ( 9)[Re]
== disasm: #<ISeq:<class:String>@<internal:pack>:12 (12,0)-(36,3)>
0000 definemethod :unpack, unpack ( 23)[LiCl]
0003 definemethod :unpack1, unpack1 ( 33)[Li]
0006 putobject :unpack1
0008 leave ( 36)[En]
== disasm: #<ISeq:unpack@<internal:pack>:23 (23,2)-(26,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] fmt@0<Arg> [ 2] offset@1 [ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!pack_unpack/2>, 0( 25)[LiCa]
0003 leave ( 26)[Re]
== disasm: #<ISeq:unpack1@<internal:pack>:33 (33,2)-(35,5)>
local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] fmt@0<Arg> [ 2] offset@1 [ 1] ?@2
0000 opt_invokebuiltin_delegate_leave <builtin!pack_unpack1/2>, 0( 34)[LiCa]
0003 leave ( 35)[Re]
== disasm: #<ISeq:<internal:pathname_builtin>@<internal:pathname_builtin>:191 (191,0)-(1175,3)>
0000 putspecialobject 3 ( 191)[Li]
0002 putnil
0003 defineclass :Pathname, <class:Pathname>, 0
0007 pop
0008 putspecialobject 3 ( 867)[Li]
0010 putnil
0011 defineclass :Pathname, <class:Pathname>, 0
0015 pop
0016 putspecialobject 3 (1010)[Li]
0018 putnil
0019 defineclass :Pathname, <class:Pathname>, 0
0023 pop
0024 putspecialobject 3 (1097)[Li]
0026 putnil
0027 defineclass :Pathname, <class:Pathname>, 0
0031 pop
0032 putspecialobject 3 (1153)[Li]
0034 putnil
0035 defineclass :Pathname, <class:Pathname>, 0
0039 pop
0040 putspecialobject 3 (1164)[Li]
0042 putnil
0043 defineclass :Pathname, <class:Pathname>, 0
0047 pop
0048 putspecialobject 3 (1168)[Li]
0050 putnil
0051 defineclass :Kernel, <module:Kernel>, 2
0055 leave
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:191 (191,0)-(865,3)>
0000 putchilledstring "0.4.0" ( 194)[LiCl]
0002 putspecialobject 3
0004 setconstant :VERSION
0006 putobject :to_path ( 199)[Li]
0008 putspecialobject 3
0010 setconstant :TO_PATH
0012 opt_getconstant_path <ic:0 File::FNM_SYSCASE> ( 201)[Li]
0014 opt_send_without_block <calldata!mid:nonzero?, argc:0, ARGS_SIMPLE>
0016 branchunless 24
0018 putself ( 203)[Li]
0019 send <calldata!mid:proc, argc:0, FCALL>, block in <class:Pathname>
0022 jump 28 ( 201)
0024 putself ( 205)[Li]
0025 send <calldata!mid:proc, argc:0, FCALL>, block in <class:Pathname>
0028 putspecialobject 3 ( 201)
0030 setconstant :SAME_PATHS
0032 putself ( 208)[Li]
0033 putobject :path
0035 opt_send_without_block <calldata!mid:attr_reader, argc:1, FCALL|ARGS_SIMPLE>
0037 pop
0038 putself ( 209)[Li]
0039 putobject :path
0041 opt_send_without_block <calldata!mid:protected, argc:1, FCALL|ARGS_SIMPLE>
0043 pop
0044 definemethod :initialize, initialize ( 217)[Li]
0047 definemethod :freeze, freeze ( 230)[Li]
0050 definemethod :==, == ( 241)[Li]
0053 putspecialobject 1 ( 245)[Li]
0055 putspecialobject 2
0057 putobject :===
0059 putobject :==
0061 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0063 pop
0064 putspecialobject 1 ( 246)[Li]
0066 putspecialobject 2
0068 putobject :eql?
0070 putobject :==
0072 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0074 pop
0075 putself ( 248)[Li]
0076 putobject :<=>
0078 putobject false
0080 opt_send_without_block <calldata!mid:method_defined?, argc:2, FCALL|ARGS_SIMPLE>
0082 branchif 87
0084 definemethod :<=>, <=> ( 250)[Li]
0087 definemethod :hash, hash ( 256)[Li]
0090 definemethod :to_s, to_s ( 261)[Li]
0093 putself ( 266)[Li]
0094 opt_getconstant_path <ic:1 TO_PATH>
0096 putobject :to_s
0098 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0100 pop
0101 definemethod :inspect, inspect ( 268)[Li]
0104 putself ( 272)[Li]
0105 putobject :sub
0107 putobject false
0109 opt_send_without_block <calldata!mid:method_defined?, argc:2, FCALL|ARGS_SIMPLE>
0111 branchif 116
0113 definemethod :sub, sub ( 274)[Li]
0116 definemethod :sub_ext, sub_ext ( 299)[Li]
0119 opt_getconstant_path <ic:2 File::ALT_SEPARATOR>( 313)[Li]
0121 branchunless 164
0123 opt_getconstant_path <ic:3 Regexp> ( 315)[Li]
0125 opt_getconstant_path <ic:4 File::ALT_SEPARATOR>
0127 dup
0128 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0130 anytostring
0131 opt_getconstant_path <ic:5 File::SEPARATOR>
0133 dup
0134 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0136 anytostring
0137 concatstrings 2
0139 opt_send_without_block <calldata!mid:quote, argc:1, ARGS_SIMPLE>
0141 putspecialobject 3
0143 setconstant :SEPARATOR_LIST
0145 putobject "[" ( 317)[Li]
0147 opt_getconstant_path <ic:6 SEPARATOR_LIST>
0149 dup
0150 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0152 anytostring
0153 putobject "]"
0155 toregexp 0, 3
0158 putspecialobject 3
0160 setconstant :SEPARATOR_PAT
0162 jump 189 ( 313)
0164 opt_getconstant_path <ic:7 Regexp> ( 319)[Li]
0166 opt_getconstant_path <ic:8 File::SEPARATOR>
0168 opt_send_without_block <calldata!mid:quote, argc:1, ARGS_SIMPLE>
0170 putspecialobject 3
0172 setconstant :SEPARATOR_LIST
0174 putobject "" ( 320)[Li]
0176 opt_getconstant_path <ic:9 SEPARATOR_LIST>
0178 dup
0179 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0181 anytostring
0182 toregexp 0, 2
0185 putspecialobject 3
0187 setconstant :SEPARATOR_PAT
0189 opt_getconstant_path <ic:10 File> ( 323)[Li]
0191 putchilledstring "A:"
0193 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0195 putchilledstring "A:."
0197 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0199 branchunless 220
0201 putobject "\\A(?:[A-Za-z]:|" ( 325)[Li]
0203 opt_getconstant_path <ic:11 SEPARATOR_PAT>
0205 dup
0206 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0208 anytostring
0209 putobject ")"
0211 toregexp 0, 3
0214 putspecialobject 3
0216 setconstant :ABSOLUTE_PATH
0218 jump 235 ( 323)
0220 putobject "\\A" ( 327)[Li]
0222 opt_getconstant_path <ic:12 SEPARATOR_PAT>
0224 dup
0225 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0227 anytostring
0228 toregexp 0, 2
0231 putspecialobject 3
0233 setconstant :ABSOLUTE_PATH
0235 putself ( 329)[Li]
0236 putobject :ABSOLUTE_PATH
0238 opt_send_without_block <calldata!mid:private_constant, argc:1, FCALL|ARGS_SIMPLE>
0240 pop
0241 definemethod :mkpath, mkpath ( 337)[Li]
0244 definemethod :chop_basename, chop_basename( 362)[Li]
0247 putself ( 370)[Li]
0248 putobject :chop_basename
0250 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0252 pop
0253 definemethod :split_names, split_names ( 373)[Li]
0256 putself ( 381)[Li]
0257 putobject :split_names
0259 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0261 pop
0262 definemethod :prepend_prefix, prepend_prefix( 383)[Li]
0265 putself ( 394)[Li]
0266 putobject :prepend_prefix
0268 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0270 pop
0271 definemethod :cleanpath, cleanpath ( 406)[Li]
0274 definemethod :cleanpath_aggressive, cleanpath_aggressive( 418)[Li]
0277 putself ( 442)[Li]
0278 putobject :cleanpath_aggressive
0280 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0282 pop
0283 definemethod :has_trailing_separator?, has_trailing_separator?( 445)[Li]
0286 putself ( 453)[Li]
0287 putobject :has_trailing_separator?
0289 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0291 pop
0292 definemethod :add_trailing_separator, add_trailing_separator( 456)[Li]
0295 putself ( 463)[Li]
0296 putobject :add_trailing_separator
0298 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0300 pop
0301 definemethod :del_trailing_separator, del_trailing_separator( 465)[Li]
0304 putself ( 475)[Li]
0305 putobject :del_trailing_separator
0307 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0309 pop
0310 definemethod :cleanpath_conservative, cleanpath_conservative( 477)[Li]
0313 putself ( 503)[Li]
0314 putobject :cleanpath_conservative
0316 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0318 pop
0319 definemethod :parent, parent ( 508)[Li]
0322 definemethod :mountpoint?, mountpoint? ( 513)[Li]
0325 definemethod :root?, root? ( 530)[Li]
0328 definemethod :absolute?, absolute? ( 545)[Li]
0331 definemethod :relative?, relative? ( 560)[Li]
0334 definemethod :each_filename, each_filename( 577)[Li]
0337 definemethod :descend, descend ( 609)[Li]
0340 definemethod :ascend, ascend ( 642)[Li]
0343 definemethod :+, + ( 668)[Li]
0346 putspecialobject 1 ( 672)[Li]
0348 putspecialobject 2
0350 putobject :/
0352 putobject :+
0354 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0356 pop
0357 definemethod :plus, plus ( 674)[Li]
0360 putself ( 714)[Li]
0361 putobject :plus
0363 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0365 pop
0366 definemethod :join, join ( 728)[Li]
0369 definemethod :children, children ( 761)[Li]
0372 definemethod :each_child, each_child ( 811)[Li]
0375 definemethod :relative_path_from, relative_path_from( 829)[Li]
0378 putobject :relative_path_from
0380 leave ( 865)[En]
== disasm: #<ISeq:block in <class:Pathname>@<internal:pathname_builtin>:203 (203,9)-(203,35)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] a@0<Arg> [ 1] b@1<Arg>
0000 getlocal_WC_0 a@0 ( 203)[LiBc]
0002 getlocal_WC_0 b@1
0004 opt_send_without_block <calldata!mid:casecmp, argc:1, ARGS_SIMPLE>
0006 putobject_INT2FIX_0_
0007 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0009 leave [Br]
== disasm: #<ISeq:block in <class:Pathname>@<internal:pathname_builtin>:205 (205,9)-(205,24)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] a@0<Arg> [ 1] b@1<Arg>
0000 getlocal_WC_0 a@0 ( 205)[LiBc]
0002 getlocal_WC_0 b@1
0004 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0006 leave [Br]
== disasm: #<ISeq:initialize@<internal:pathname_builtin>:217 (217,2)-(228,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] path@0<Arg>
0000 opt_getconstant_path <ic:1 String> ( 218)[LiCa]
0002 getlocal_WC_0 path@0
0004 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0006 branchif 36
0008 getlocal_WC_0 path@0 ( 219)[Li]
0010 putobject :to_path
0012 opt_send_without_block <calldata!mid:respond_to?, argc:1, ARGS_SIMPLE>
0014 branchunless 22
0016 getlocal_WC_0 path@0
0018 opt_send_without_block <calldata!mid:to_path, argc:0, ARGS_SIMPLE>
0020 setlocal_WC_0 path@0
0022 opt_getconstant_path <ic:2 String> ( 220)[Li]
0024 getlocal_WC_0 path@0
0026 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0028 branchif 36
0030 putself
0031 opt_getconstant_path <ic:3 TypeError>
0033 opt_send_without_block <calldata!mid:raise, argc:1, FCALL|ARGS_SIMPLE>
0035 pop
0036 getlocal_WC_0 path@0 ( 223)[Li]
0038 putchilledstring "\u0000"
0040 opt_send_without_block <calldata!mid:include?, argc:1, ARGS_SIMPLE>
0042 branchunless 62
0044 putself ( 224)[Li]
0045 opt_getconstant_path <ic:4 ArgumentError>
0047 putobject "pathname contains \\0: "
0049 getlocal_WC_0 path@0
0051 opt_send_without_block <calldata!mid:inspect, argc:0, ARGS_SIMPLE>
0053 dup
0054 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0056 anytostring
0057 concatstrings 2
0059 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0061 pop
0062 getlocal_WC_0 path@0 ( 227)[Li]
0064 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0066 dup
0067 setinstancevariable :@path, <is:0>
0070 leave ( 228)[Re]
== disasm: #<ISeq:freeze@<internal:pathname_builtin>:230 (230,2)-(234,5)>
0000 putself ( 231)[LiCa]
0001 invokesuper <calldata!argc:0, FCALL|ARGS_SIMPLE|SUPER|ZSUPER>, nil
0004 pop
0005 getinstancevariable :@path, <is:0> ( 232)[Li]
0008 opt_send_without_block <calldata!mid:freeze, argc:0, ARGS_SIMPLE>
0010 pop
0011 putself ( 233)[Li]
0012 leave ( 234)[Re]
== disasm: #<ISeq:==@<internal:pathname_builtin>:241 (241,2)-(244,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] other@0<Arg>
0000 opt_getconstant_path <ic:1 Pathname> ( 242)[LiCa]
0002 getlocal_WC_0 other@0
0004 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0006 branchif 11
0008 putobject false
0010 leave [Re]
0011 getlocal_WC_0 other@0 ( 243)[Li]
0013 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0015 getinstancevariable :@path, <is:0>
0018 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0020 leave ( 244)[Re]
== disasm: #<ISeq:<=>@<internal:pathname_builtin>:250 (250,4)-(253,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] other@0<Arg>
0000 opt_getconstant_path <ic:1 Pathname> ( 251)[LiCa]
0002 getlocal_WC_0 other@0
0004 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0006 branchif 10
0008 putnil
0009 leave [Re]
0010 getinstancevariable :@path, <is:0> ( 252)[Li]
0013 putchilledstring "/"
0015 putchilledstring "\u0000"
0017 opt_send_without_block <calldata!mid:tr, argc:2, ARGS_SIMPLE>
0019 getlocal_WC_0 other@0
0021 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0023 putchilledstring "/"
0025 putchilledstring "\u0000"
0027 opt_send_without_block <calldata!mid:tr, argc:2, ARGS_SIMPLE>
0029 opt_send_without_block <calldata!mid:<=>, argc:1, ARGS_SIMPLE>
0031 leave ( 253)[Re]
== disasm: #<ISeq:hash@<internal:pathname_builtin>:256 (256,2)-(258,5)>
0000 getinstancevariable :@path, <is:0> ( 257)[LiCa]
0003 opt_send_without_block <calldata!mid:hash, argc:0, ARGS_SIMPLE>
0005 leave ( 258)[Re]
== disasm: #<ISeq:to_s@<internal:pathname_builtin>:261 (261,2)-(263,5)>
0000 getinstancevariable :@path, <is:0> ( 262)[LiCa]
0003 opt_send_without_block <calldata!mid:dup, argc:0, ARGS_SIMPLE>
0005 leave ( 263)[Re]
== disasm: #<ISeq:inspect@<internal:pathname_builtin>:268 (268,2)-(270,5)>
0000 putobject "#<" ( 269)[LiCa]
0002 putself
0003 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0005 dup
0006 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0008 anytostring
0009 putobject ":"
0011 getinstancevariable :@path, <is:0>
0014 dup
0015 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0017 anytostring
0018 putobject ">"
0020 concatstrings 5
0022 leave ( 270)[Re]
== disasm: #<ISeq:sub@<internal:pathname_builtin>:274 (274,4)-(290,7)>
== catch table
| catch type: break st: 0005 ed: 0019 sp: 0000 cont: 0019
| == disasm: #<ISeq:block in sub@<internal:pathname_builtin>:276 (276,51)-(285,9)>
| == catch table
| | catch type: ensure st: 0000 ed: 0032 sp: 0000 cont: 0043
| | == disasm: #<ISeq:ensure in block in sub@<internal:pathname_builtin>:282 (282,12)-(282,57)>
| | local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| | [ 1] "$!"@0
| | 0000 opt_getconstant_path <ic:0 Thread> ( 282)[Li]
| | 0002 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
| | 0004 putobject :pathname_sub_matchdata
| | 0006 getlocal_WC_1 old@1
| | 0008 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
| | 0010 pop
| | 0011 getlocal_WC_0 "$!"@0 ( 281)
| | 0013 throw 0
| | catch type: redo st: 0000 ed: 0049 sp: 0000 cont: 0000
| | catch type: next st: 0000 ed: 0049 sp: 0000 cont: 0049
| |------------------------------------------------------------------------
| local table (size: 2, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 2] sub_args@0<Rest>| [ 1] old@1
| 0000 opt_getconstant_path <ic:0 Thread> ( 278)[LiBc]
| 0002 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
| 0004 putobject :pathname_sub_matchdata
| 0006 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
| 0008 setlocal_WC_0 old@1
| 0010 opt_getconstant_path <ic:1 Thread> ( 279)[Li]
| 0012 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
| 0014 putobject :pathname_sub_matchdata
| 0016 getglobal :$~
| 0018 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
| 0020 pop
| 0021 putself ( 280)[Li]
| 0022 putchilledstring "$~ = Thread.current[:pathname_sub_matchdata]"
| 0024 getblockparam block@3, 1
| 0027 opt_send_without_block <calldata!mid:binding, argc:0, ARGS_SIMPLE>
| 0029 opt_send_without_block <calldata!mid:eval, argc:2, FCALL|ARGS_SIMPLE>
| 0031 pop
| 0032 opt_getconstant_path <ic:2 Thread> ( 282)[Li]
| 0034 opt_send_without_block <calldata!mid:current, argc:0, ARGS_SIMPLE>
| 0036 putobject :pathname_sub_matchdata
| 0038 getlocal_WC_0 old@1
| 0040 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
| 0042 pop
| 0043 getlocal_WC_0 sub_args@0 ( 284)[Li]
| 0045 splatarray false
| 0047 invokeblock <calldata!argc:1, ARGS_SPLAT>
| 0049 leave ( 285)[Br]
|------------------------------------------------------------------------
local table (size: 5, argc: 1 [opts: 0, rest: 1, post: 0, block: 3, kw: -1@-1, kwrest: 2])
[ 5] pattern@0<Arg>[ 4] args@1<Rest>[ 3] kwargs@2<Kwrest>[ 2] block@3<Block>[ 1] path@4
0000 getblockparamproxy block@3, 0 ( 275)[LiCa]
0003 branchunless 23
0005 getinstancevariable :@path, <is:0> ( 276)[Li]
0008 getlocal_WC_0 pattern@0
0010 getlocal_WC_0 args@1
0012 splatarray false
0014 getlocal_WC_0 kwargs@2
0016 send <calldata!mid:sub, argc:3, ARGS_SPLAT|KW_SPLAT>, block in sub
0019 setlocal_WC_0 path@4
0021 jump 38 ( 275)
0023 getinstancevariable :@path, <is:1> ( 287)[Li]
0026 getlocal_WC_0 pattern@0
0028 getlocal_WC_0 args@1
0030 splatarray false
0032 getlocal_WC_0 kwargs@2
0034 opt_send_without_block <calldata!mid:sub, argc:3, ARGS_SPLAT|KW_SPLAT>
0036 setlocal_WC_0 path@4
0038 putself ( 289)[Li]
0039 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0041 putnil
0042 swap
0043 getlocal_WC_0 path@4
0045 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 52
0048 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0050 jump 55
0052 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0054 swap
0055 pop
0056 leave ( 290)[Re]
== disasm: #<ISeq:sub_ext@<internal:pathname_builtin>:299 (299,2)-(311,5)>
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] repl@0<Arg>[ 1] ext@1
0000 opt_getconstant_path <ic:5 File> ( 300)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:extname, argc:1, ARGS_SIMPLE>
0007 setlocal_WC_0 ext@1
0009 getinstancevariable :@path, <is:1> ( 306)[Li]
0012 getlocal_WC_0 ext@1
0014 opt_send_without_block <calldata!mid:end_with?, argc:1, ARGS_SIMPLE>
0016 branchif 35
0018 getinstancevariable :@path, <is:2> ( 307)[Li]
0021 getinstancevariable :@path, <is:3>
0024 getlocal_WC_0 ext@1
0026 opt_send_without_block <calldata!mid:rindex, argc:1, ARGS_SIMPLE>
0028 putnil
0029 newrange 0
0031 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0033 setlocal_WC_0 ext@1
0035 putself ( 310)[Li]
0036 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0038 putnil
0039 swap
0040 getinstancevariable :@path, <is:4>
0043 getlocal_WC_0 ext@1
0045 opt_send_without_block <calldata!mid:chomp, argc:1, ARGS_SIMPLE>
0047 getlocal_WC_0 repl@0
0049 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0051 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 58
0054 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0056 jump 61
0058 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0060 swap
0061 pop
0062 leave ( 311)[Re]
== disasm: #<ISeq:mkpath@<internal:pathname_builtin>:337 (337,2)-(359,5)>
== catch table
| catch type: break st: 0033 ed: 0069 sp: 0000 cont: 0069
| catch type: next st: 0033 ed: 0069 sp: 0000 cont: 0030
| catch type: redo st: 0033 ed: 0069 sp: 0000 cont: 0033
| catch type: break st: 0070 ed: 0075 sp: 0000 cont: 0075
| == disasm: #<ISeq:block in mkpath@<internal:pathname_builtin>:346 (346,23)-(356,7)>
| == catch table
| | catch type: rescue st: 0000 ed: 0049 sp: 0000 cont: 0050
| | == disasm: #<ISeq:rescue in block in mkpath@<internal:pathname_builtin>:354 (354,4)-(355,39)>
| | local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| | [ 1] "$!"@0
| | 0000 getlocal_WC_0 "$!"@0 ( 354)
| | 0002 opt_getconstant_path <ic:0 SystemCallError>
| | 0004 checkmatch 3
| | 0006 branchunless 22
| | 0008 opt_getconstant_path <ic:1 File> ( 355)[LiRs]
| | 0010 getlocal_WC_1 dir@0
| | 0012 opt_send_without_block <calldata!mid:directory?, argc:1, ARGS_SIMPLE>
| | 0014 branchunless 18
| | 0016 putnil
| | 0017 leave ( 354)
| | 0018 putself ( 355)
| | 0019 opt_send_without_block <calldata!mid:raise, argc:0, FCALL|VCALL|ARGS_SIMPLE>
| | 0021 leave ( 354)
| | 0022 getlocal_WC_0 "$!"@0
| | 0024 throw 0
| | catch type: retry st: 0049 ed: 0050 sp: 0000 cont: 0000
| | catch type: redo st: 0000 ed: 0050 sp: 0000 cont: 0000
| | catch type: next st: 0000 ed: 0050 sp: 0000 cont: 0050
| |------------------------------------------------------------------------
| local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] dir@0<AmbiguousArg>
| 0000 getlocal_WC_0 dir@0 ( 347)[LiBc]
| 0002 putchilledstring "/"
| 0004 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
| 0006 branchunless 12
| 0008 getlocal_WC_0 dir@0
| 0010 jump 18
| 0012 getlocal_WC_0 dir@0
| 0014 putchilledstring "/"
| 0016 opt_send_without_block <calldata!mid:chomp, argc:1, ARGS_SIMPLE>
| 0018 setlocal_WC_0 dir@0
| 0020 getlocal_WC_1 mode@0 ( 348)[Li]
| 0022 branchunless 43
| 0024 opt_getconstant_path <ic:0 Dir> ( 349)[Li]
| 0026 getlocal_WC_0 dir@0
| 0028 getlocal_WC_1 mode@0
| 0030 opt_send_without_block <calldata!mid:mkdir, argc:2, ARGS_SIMPLE>
| 0032 pop
| 0033 opt_getconstant_path <ic:1 File> ( 350)[Li]
| 0035 getlocal_WC_1 mode@0
| 0037 getlocal_WC_0 dir@0
| 0039 opt_send_without_block <calldata!mid:chmod, argc:2, ARGS_SIMPLE>
| 0041 jump 49 ( 348)
| 0043 opt_getconstant_path <ic:2 Dir> ( 352)[Li]
| 0045 getlocal_WC_0 dir@0
| 0047 opt_send_without_block <calldata!mid:mkdir, argc:1, ARGS_SIMPLE>
| 0049 nop ( 346)
| 0050 leave ( 356)[Br]
|------------------------------------------------------------------------
local table (size: 4, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] mode@0 [ 3] ?@1 [ 2] path@2 [ 1] stack@3
0000 getinstancevariable :@path, <is:0> ( 338)[LiCa]
0003 putchilledstring "/"
0005 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0007 branchunless 14
0009 getinstancevariable :@path, <is:1>
0012 jump 21
0014 getinstancevariable :@path, <is:2>
0017 putchilledstring "/"
0019 opt_send_without_block <calldata!mid:chomp, argc:1, ARGS_SIMPLE>
0021 setlocal_WC_0 path@2
0023 newarray 0 ( 340)[Li]
0025 setlocal_WC_0 stack@3
0027 jump 48 ( 341)[Li]
0029 putnil
0030 pop
0031 jump 48
0033 getlocal_WC_0 stack@3 ( 342)[Li]
0035 getlocal_WC_0 path@2
0037 opt_send_without_block <calldata!mid:push, argc:1, ARGS_SIMPLE>
0039 pop
0040 opt_getconstant_path <ic:3 File> ( 343)[Li]
0042 getlocal_WC_0 path@2
0044 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0046 setlocal_WC_0 path@2
0048 opt_getconstant_path <ic:4 File> ( 341)
0050 getlocal_WC_0 path@2
0052 opt_send_without_block <calldata!mid:directory?, argc:1, ARGS_SIMPLE>
0054 branchif 68
0056 opt_getconstant_path <ic:5 File>
0058 getlocal_WC_0 path@2
0060 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0062 getlocal_WC_0 path@2
0064 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0066 branchunless 33
0068 putnil
0069 pop
0070 getlocal_WC_0 stack@3 ( 346)[Li]
0072 send <calldata!mid:reverse_each, argc:0>, block in mkpath
0075 pop
0076 putself ( 358)[Li]
0077 leave ( 359)[Re]
== disasm: #<ISeq:chop_basename@<internal:pathname_builtin>:362 (362,2)-(369,5)>
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] path@0<Arg>[ 1] base@1
0000 opt_getconstant_path <ic:1 File> ( 363)[LiCa]
0002 getlocal_WC_0 path@0
0004 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0006 setlocal_WC_0 base@1
0008 once block in chop_basename, <is:0>( 364)[Li]
0011 getlocal_WC_0 base@1
0013 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0015 branchunless 21
0017 putnil ( 365)[Li]
0018 leave [Re]
0019 putnil
0020 leave ( 369)[Re]
0021 getlocal_WC_0 path@0 ( 367)[Li]
0023 putobject_INT2FIX_0_
0024 getlocal_WC_0 path@0
0026 getlocal_WC_0 base@1
0028 opt_send_without_block <calldata!mid:rindex, argc:1, ARGS_SIMPLE>
0030 opt_send_without_block <calldata!mid:[], argc:2, ARGS_SIMPLE>
0032 getlocal_WC_0 base@1
0034 newarray 2
0036 leave [Re]
0037 putnil
0038 leave ( 369)[Re]
== disasm: #<ISeq:block in chop_basename@<internal:pathname_builtin>:364 (364,7)-(364,31)>
0000 putobject "\\A" ( 364)
0002 opt_getconstant_path <ic:0 SEPARATOR_PAT>
0004 dup
0005 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0007 anytostring
0008 putobject "?\\z"
0010 toregexp 0, 3
0013 leave
== disasm: #<ISeq:split_names@<internal:pathname_builtin>:373 (373,2)-(380,5)>
local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] path@0<Arg>[ 3] names@1 [ 2] r@2 [ 1] basename@3
0000 newarray 0 ( 374)[LiCa]
0002 setlocal_WC_0 names@1
0004 jump 26 ( 375)[Li]
0006 putnil
0007 pop
0008 jump 26
0010 getlocal_WC_0 r@2 ( 376)[Li]
0012 expandarray 2, 0
0015 setlocal_WC_0 path@0
0017 setlocal_WC_0 basename@3
0019 getlocal_WC_0 names@1 ( 377)[Li]
0021 getlocal_WC_0 basename@3
0023 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0025 pop
0026 putself ( 375)
0027 getlocal_WC_0 path@0
0029 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0031 dup
0032 setlocal_WC_0 r@2
0034 branchif 10
0036 putnil
0037 pop
0038 getlocal_WC_0 path@0 ( 379)[Li]
0040 getlocal_WC_0 names@1
0042 newarray 2
0044 leave [Re]
0045 putnil
0046 leave ( 380)[Re]
== disasm: #<ISeq:prepend_prefix@<internal:pathname_builtin>:383 (383,2)-(393,5)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] prefix@0<Arg>[ 1] relpath@1<Arg>
0000 getlocal_WC_0 relpath@1 ( 384)[LiCa]
0002 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0004 branchunless 13
0006 opt_getconstant_path <ic:0 File> ( 385)[Li]
0008 getlocal_WC_0 prefix@0
0010 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0012 leave ( 393)[Re]
0013 opt_getconstant_path <ic:1 SEPARATOR_PAT> ( 386)[Li]
0015 getlocal_WC_0 prefix@0
0017 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0019 branchunless 63
0021 opt_getconstant_path <ic:2 File> ( 387)[Li]
0023 getlocal_WC_0 prefix@0
0025 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0027 setlocal_WC_0 prefix@0
0029 opt_getconstant_path <ic:3 File> ( 388)[Li]
0031 getlocal_WC_0 prefix@0
0033 putchilledstring "a"
0035 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0037 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0039 putchilledstring "a"
0041 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0044 branchunless 56
0046 opt_getconstant_path <ic:4 File>
0048 getlocal_WC_0 prefix@0
0050 putchilledstring ""
0052 opt_send_without_block <calldata!mid:join, argc:2, ARGS_SIMPLE>
0054 setlocal_WC_0 prefix@0
0056 getlocal_WC_0 prefix@0 ( 389)[Li]
0058 getlocal_WC_0 relpath@1
0060 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0062 leave ( 393)[Re]
0063 getlocal_WC_0 prefix@0 ( 391)[Li]
0065 getlocal_WC_0 relpath@1
0067 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0069 leave ( 393)[Re]
== disasm: #<ISeq:cleanpath@<internal:pathname_builtin>:406 (406,2)-(412,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] consider_symlink@0<Opt=0>
0000 putobject false ( 406)
0002 setlocal_WC_0 consider_symlink@0
0004 getlocal_WC_0 consider_symlink@0 ( 407)[LiCa]
0006 branchunless 12
0008 putself ( 408)[Li]
0009 opt_send_without_block <calldata!mid:cleanpath_conservative, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0011 leave ( 412)[Re]
0012 putself ( 410)[Li]
0013 opt_send_without_block <calldata!mid:cleanpath_aggressive, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0015 leave ( 412)[Re]
== disasm: #<ISeq:cleanpath_aggressive@<internal:pathname_builtin>:418 (418,2)-(441,5)>
local table (size: 5, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 5] path@0 [ 4] names@1 [ 3] pre@2 [ 2] r@3 [ 1] base@4
0000 getinstancevariable :@path, <is:0> ( 419)[LiCa]
0003 setlocal_WC_0 path@0
0005 newarray 0 ( 420)[Li]
0007 setlocal_WC_0 names@1
0009 getlocal_WC_0 path@0 ( 421)[Li]
0011 setlocal_WC_0 pre@2
0013 jump 89 ( 422)[Li]
0015 putnil
0016 pop
0017 jump 89
0019 getlocal_WC_0 r@3 ( 423)[Li]
0021 expandarray 2, 0
0024 setlocal_WC_0 pre@2
0026 setlocal_WC_0 base@4
0028 getlocal_WC_0 base@4 ( 424)[Li]
0030 dup
0031 opt_case_dispatch <cdhash>, 50
0034 putobject "." ( 425)
0036 topn 1
0038 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0040 branchif 78
0042 putobject ".." ( 426)
0044 topn 1
0046 opt_send_without_block <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
0048 branchif 81
0050 pop ( 429)
0051 getlocal_WC_0 names@1[Li]
0053 putobject_INT2FIX_0_
0054 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0056 putchilledstring ".."
0058 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0060 branchunless 69
0062 getlocal_WC_0 names@1 ( 430)[Li]
0064 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0066 pop
0067 jump 89 ( 429)
0069 getlocal_WC_0 names@1 ( 432)[Li]
0071 getlocal_WC_0 base@4
0073 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0075 pop
0076 jump 89 ( 429)
0078 pop ( 425)
0079 jump 89
0081 pop ( 426)
0082 getlocal_WC_0 names@1 ( 427)[Li]
0084 getlocal_WC_0 base@4
0086 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0088 pop
0089 putself ( 422)
0090 getlocal_WC_0 pre@2
0092 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0094 dup
0095 setlocal_WC_0 r@3
0097 branchif 19
0099 putnil
0100 pop
0101 opt_getconstant_path <ic:1 File::ALT_SEPARATOR>( 436)[Li]
0103 branchunless 114
0105 getlocal_WC_0 pre@2
0107 opt_getconstant_path <ic:2 File::ALT_SEPARATOR>
0109 opt_getconstant_path <ic:3 File::SEPARATOR>
0111 opt_send_without_block <calldata!mid:tr!, argc:2, ARGS_SIMPLE>
0113 pop
0114 opt_getconstant_path <ic:4 SEPARATOR_PAT> ( 437)[Li]
0116 opt_getconstant_path <ic:5 File>
0118 getlocal_WC_0 pre@2
0120 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0122 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0124 branchunless 150
0126 jump 137 ( 438)[Li]
0128 putnil
0129 pop
0130 jump 137
0132 getlocal_WC_0 names@1
0134 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0136 pop
0137 getlocal_WC_0 names@1
0139 putobject_INT2FIX_0_
0140 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0142 putchilledstring ".."
0144 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0146 branchif 132
0148 putnil
0149 pop
0150 putself ( 440)[Li]
0151 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0153 putnil
0154 swap
0155 putself
0156 getlocal_WC_0 pre@2
0158 opt_getconstant_path <ic:6 File>
0160 getlocal_WC_0 names@1
0162 splatarray false
0164 opt_send_without_block <calldata!mid:join, argc:1, ARGS_SPLAT>
0166 opt_send_without_block <calldata!mid:prepend_prefix, argc:2, FCALL|ARGS_SIMPLE>
0168 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 175
0171 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0173 jump 178
0175 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0177 swap
0178 pop
0179 leave ( 441)[Re]
== disasm: #<ISeq:has_trailing_separator?@<internal:pathname_builtin>:445 (445,2)-(452,5)>
local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] path@0<Arg>[ 3] r@1 [ 2] pre@2 [ 1] basename@3
0000 putself ( 446)[LiCa]
0001 getlocal_WC_0 path@0
0003 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0005 dup
0006 setlocal_WC_0 r@1
0008 branchunless 36
0010 getlocal_WC_0 r@1 ( 447)[Li]
0012 expandarray 2, 0
0015 setlocal_WC_0 pre@2
0017 setlocal_WC_0 basename@3
0019 getlocal_WC_0 pre@2 ( 448)[Li]
0021 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0023 getlocal_WC_0 basename@3
0025 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0027 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0029 getlocal_WC_0 path@0
0031 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0033 opt_lt <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
0035 leave ( 452)[Re]
0036 putobject false ( 450)[Li]
0038 leave ( 452)[Re]
== disasm: #<ISeq:add_trailing_separator@<internal:pathname_builtin>:456 (456,2)-(462,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] path@0<Arg>
0000 opt_getconstant_path <ic:0 File> ( 457)[LiCa]
0002 getlocal_WC_0 path@0
0004 putchilledstring "a"
0006 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0008 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0010 putchilledstring "a"
0012 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0014 branchunless 19
0016 getlocal_WC_0 path@0 ( 458)[Li]
0018 leave ( 462)[Re]
0019 opt_getconstant_path <ic:1 File> ( 460)[Li]
0021 getlocal_WC_0 path@0
0023 putchilledstring ""
0025 opt_send_without_block <calldata!mid:join, argc:2, ARGS_SIMPLE>
0027 leave ( 462)[Re]
== disasm: #<ISeq:del_trailing_separator@<internal:pathname_builtin>:465 (465,2)-(474,5)>
local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 4] path@0<Arg>[ 3] r@1 [ 2] pre@2 [ 1] basename@3
0000 putself ( 466)[LiCa]
0001 getlocal_WC_0 path@0
0003 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0005 dup
0006 setlocal_WC_0 r@1
0008 branchunless 26
0010 getlocal_WC_0 r@1 ( 467)[Li]
0012 expandarray 2, 0
0015 setlocal_WC_0 pre@2
0017 setlocal_WC_0 basename@3
0019 getlocal_WC_0 pre@2 ( 468)[Li]
0021 getlocal_WC_0 basename@3
0023 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0025 leave ( 474)[Re]
0026 once block in del_trailing_separator, <is:0>( 469)[Li]
0029 getlocal_WC_0 path@0
0031 opt_regexpmatch2 <calldata!mid:=~, argc:1, ARGS_SIMPLE>[CcCr]
0033 branchunless 52
0035 getspecial 1, 193 ( 470)[Li]
0038 opt_getconstant_path <ic:2 File>
0040 getlocal_WC_0 path@0
0042 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0044 once block in del_trailing_separator, <is:1>
0047 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0049 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0051 leave ( 474)[Re]
0052 getlocal_WC_0 path@0 ( 472)[Li]
0054 leave ( 474)[Re]
== disasm: #<ISeq:block in del_trailing_separator@<internal:pathname_builtin>:469 (469,10)-(469,32)>
0000 opt_getconstant_path <ic:0 SEPARATOR_PAT> ( 469)
0002 dup
0003 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0005 anytostring
0006 putobject "+\\z"
0008 toregexp 0, 2
0011 leave
== disasm: #<ISeq:block in del_trailing_separator@<internal:pathname_builtin>:470 (470,30)-(470,52)>
0000 opt_getconstant_path <ic:0 SEPARATOR_PAT> ( 470)
0002 dup
0003 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0005 anytostring
0006 putobject "*\\z"
0008 toregexp 0, 2
0011 leave
== disasm: #<ISeq:cleanpath_conservative@<internal:pathname_builtin>:477 (477,2)-(502,5)>
local table (size: 6, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 6] path@0 [ 5] names@1 [ 4] pre@2 [ 3] r@3 [ 2] base@4 [ 1] result@5
0000 getinstancevariable :@path, <is:0> ( 478)[LiCa]
0003 setlocal_WC_0 path@0
0005 newarray 0 ( 479)[Li]
0007 setlocal_WC_0 names@1
0009 getlocal_WC_0 path@0 ( 480)[Li]
0011 setlocal_WC_0 pre@2
0013 jump 44 ( 481)[Li]
0015 putnil
0016 pop
0017 jump 44
0019 getlocal_WC_0 r@3 ( 482)[Li]
0021 expandarray 2, 0
0024 setlocal_WC_0 pre@2
0026 setlocal_WC_0 base@4
0028 getlocal_WC_0 base@4 ( 483)[Li]
0030 putchilledstring "."
0032 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0035 branchunless 44
0037 getlocal_WC_0 names@1
0039 getlocal_WC_0 base@4
0041 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0043 pop
0044 putself ( 481)
0045 getlocal_WC_0 pre@2
0047 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0049 dup
0050 setlocal_WC_0 r@3
0052 branchif 19
0054 putnil
0055 pop
0056 opt_getconstant_path <ic:1 File::ALT_SEPARATOR>( 485)[Li]
0058 branchunless 69
0060 getlocal_WC_0 pre@2
0062 opt_getconstant_path <ic:2 File::ALT_SEPARATOR>
0064 opt_getconstant_path <ic:3 File::SEPARATOR>
0066 opt_send_without_block <calldata!mid:tr!, argc:2, ARGS_SIMPLE>
0068 pop
0069 opt_getconstant_path <ic:4 SEPARATOR_PAT> ( 486)[Li]
0071 opt_getconstant_path <ic:5 File>
0073 getlocal_WC_0 pre@2
0075 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0077 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0079 branchunless 105
0081 jump 92 ( 487)[Li]
0083 putnil
0084 pop
0085 jump 92
0087 getlocal_WC_0 names@1
0089 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0091 pop
0092 getlocal_WC_0 names@1
0094 putobject_INT2FIX_0_
0095 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0097 putchilledstring ".."
0099 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0101 branchif 87
0103 putnil
0104 pop
0105 getlocal_WC_0 names@1 ( 489)[Li]
0107 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0109 branchunless 134
0111 putself ( 490)[Li]
0112 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0114 putnil
0115 swap
0116 opt_getconstant_path <ic:6 File>
0118 getlocal_WC_0 pre@2
0120 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0122 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 129
0125 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0127 jump 132
0129 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0131 swap
0132 pop
0133 leave ( 502)[Re]
0134 getlocal_WC_0 names@1 ( 492)[Li]
0136 opt_send_without_block <calldata!mid:last, argc:0, ARGS_SIMPLE>
0138 putchilledstring ".."
0140 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0143 branchunless 164
0145 opt_getconstant_path <ic:7 File>
0147 getlocal_WC_0 path@0
0149 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0151 putchilledstring "."
0153 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0155 branchunless 164
0157 getlocal_WC_0 names@1 ( 493)[Li]
0159 putchilledstring "."
0161 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0163 pop
0164 putself ( 495)[Li]
0165 getlocal_WC_0 pre@2
0167 opt_getconstant_path <ic:8 File>
0169 getlocal_WC_0 names@1
0171 splatarray false
0173 opt_send_without_block <calldata!mid:join, argc:1, ARGS_SPLAT>
0175 opt_send_without_block <calldata!mid:prepend_prefix, argc:2, FCALL|ARGS_SIMPLE>
0177 setlocal_WC_0 result@5
0179 putobject /\A(?:\.|\.\.)\z/ ( 496)[Li]
0181 getlocal_WC_0 names@1
0183 opt_send_without_block <calldata!mid:last, argc:0, ARGS_SIMPLE>
0185 opt_send_without_block <calldata!mid:!~, argc:1, ARGS_SIMPLE>
0187 branchunless 218
0189 putself
0190 getlocal_WC_0 path@0
0192 opt_send_without_block <calldata!mid:has_trailing_separator?, argc:1, FCALL|ARGS_SIMPLE>
0194 branchunless 218
0196 putself ( 497)[Li]
0197 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0199 putnil
0200 swap
0201 putself
0202 getlocal_WC_0 result@5
0204 opt_send_without_block <calldata!mid:add_trailing_separator, argc:1, FCALL|ARGS_SIMPLE>
0206 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 213
0209 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0211 jump 216
0213 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0215 swap
0216 pop
0217 leave ( 502)[Re]
0218 putself ( 499)[Li]
0219 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0221 putnil
0222 swap
0223 getlocal_WC_0 result@5
0225 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 232
0228 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0230 jump 235
0232 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0234 swap
0235 pop
0236 leave ( 502)[Re]
== disasm: #<ISeq:parent@<internal:pathname_builtin>:508 (508,2)-(510,5)>
0000 putself ( 509)[LiCa]
0001 putchilledstring ".."
0003 opt_plus <calldata!mid:+, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0005 leave ( 510)[Re]
== disasm: #<ISeq:mountpoint?@<internal:pathname_builtin>:513 (513,2)-(521,5)>
== catch table
| catch type: rescue st: 0000 ed: 0037 sp: 0000 cont: 0038
| == disasm: #<ISeq:rescue in mountpoint?@<internal:pathname_builtin>:518 (518,4)-(519,11)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 518)
| 0002 opt_getconstant_path <ic:0 Errno::ENOENT>
| 0004 checkmatch 3
| 0006 branchunless 11
| 0008 putobject false ( 519)[LiRs]
| 0010 leave ( 518)
| 0011 getlocal_WC_0 "$!"@0
| 0013 throw 0
| catch type: retry st: 0037 ed: 0038 sp: 0000 cont: 0000
|------------------------------------------------------------------------
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] stat1@0 [ 1] stat2@1
0000 putself ( 515)[LiCa]
0001 opt_send_without_block <calldata!mid:lstat, argc:0, FCALL|ARGS_SIMPLE>
0003 setlocal_WC_0 stat1@0
0005 putself ( 516)[Li]
0006 opt_send_without_block <calldata!mid:parent, argc:0, FCALL|ARGS_SIMPLE>
0008 opt_send_without_block <calldata!mid:lstat, argc:0, ARGS_SIMPLE>
0010 setlocal_WC_0 stat2@1
0012 getlocal_WC_0 stat1@0 ( 517)[Li]
0014 opt_send_without_block <calldata!mid:dev, argc:0, ARGS_SIMPLE>
0016 getlocal_WC_0 stat2@1
0018 opt_send_without_block <calldata!mid:dev, argc:0, ARGS_SIMPLE>
0020 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0023 dup
0024 branchif 37
0026 pop
0027 getlocal_WC_0 stat1@0
0029 opt_send_without_block <calldata!mid:ino, argc:0, ARGS_SIMPLE>
0031 getlocal_WC_0 stat2@1
0033 opt_send_without_block <calldata!mid:ino, argc:0, ARGS_SIMPLE>
0035 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0037 nop ( 514)
0038 leave ( 521)[Re]
== disasm: #<ISeq:root?@<internal:pathname_builtin>:530 (530,2)-(532,5)>
0000 putself ( 531)[LiCa]
0001 getinstancevariable :@path, <is:0>
0004 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0006 putnil
0007 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0009 dup
0010 branchunless 20
0012 pop
0013 opt_getconstant_path <ic:2 SEPARATOR_PAT>
0015 getinstancevariable :@path, <is:1>
0018 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0020 leave ( 532)[Re]
== disasm: #<ISeq:absolute?@<internal:pathname_builtin>:545 (545,2)-(547,5)>
0000 opt_getconstant_path <ic:1 ABSOLUTE_PATH> ( 546)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0007 leave ( 547)[Re]
== disasm: #<ISeq:relative?@<internal:pathname_builtin>:560 (560,2)-(562,5)>
0000 putself ( 561)[LiCa]
0001 opt_send_without_block <calldata!mid:absolute?, argc:0, FCALL|ARGS_SIMPLE>
0003 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0005 leave ( 562)[Re]
== disasm: #<ISeq:each_filename@<internal:pathname_builtin>:577 (577,2)-(582,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _@0 [ 1] names@1
0000 putself ( 578)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 12
0005 putself
0006 putself
0007 opt_send_without_block <calldata!mid:__method__, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 opt_send_without_block <calldata!mid:to_enum, argc:1, FCALL|ARGS_SIMPLE>
0011 leave [Re]
0012 putself ( 579)[Li]
0013 getinstancevariable :@path, <is:0>
0016 opt_send_without_block <calldata!mid:split_names, argc:1, FCALL|ARGS_SIMPLE>
0018 expandarray 2, 0
0021 setlocal_WC_0 _@0
0023 setlocal_WC_0 names@1
0025 getlocal_WC_0 names@1 ( 580)[Li]
0027 send <calldata!mid:each, argc:0>, block in each_filename
0030 pop
0031 putnil ( 581)[Li]
0032 leave ( 582)[Re]
== disasm: #<ISeq:block in each_filename@<internal:pathname_builtin>:580 (580,15)-(580,43)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] filename@0<AmbiguousArg>
0000 getlocal_WC_0 filename@0 ( 580)[LiBc]
0002 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0004 leave [Br]
== disasm: #<ISeq:descend@<internal:pathname_builtin>:609 (609,2)-(615,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] vs@0
0000 putself ( 610)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 12
0005 putself
0006 putself
0007 opt_send_without_block <calldata!mid:__method__, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 opt_send_without_block <calldata!mid:to_enum, argc:1, FCALL|ARGS_SIMPLE>
0011 leave [Re]
0012 newarray 0 ( 611)[Li]
0014 setlocal_WC_0 vs@0
0016 putself ( 612)[Li]
0017 send <calldata!mid:ascend, argc:0, FCALL>, block in descend
0020 pop
0021 getlocal_WC_0 vs@0 ( 613)[Li]
0023 send <calldata!mid:reverse_each, argc:0>, block in descend
0026 pop
0027 putnil ( 614)[Li]
0028 leave ( 615)[Re]
== disasm: #<ISeq:block in descend@<internal:pathname_builtin>:612 (612,11)-(612,25)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] v@0<AmbiguousArg>
0000 getlocal_WC_1 vs@0 ( 612)[LiBc]
0002 getlocal_WC_0 v@0
0004 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0006 leave [Br]
== disasm: #<ISeq:block in descend@<internal:pathname_builtin>:613 (613,20)-(613,34)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] v@0<AmbiguousArg>
0000 getlocal_WC_0 v@0 ( 613)[LiBc]
0002 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0004 leave [Br]
== disasm: #<ISeq:ascend@<internal:pathname_builtin>:642 (642,2)-(651,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] path@0 [ 1] r@1
0000 putself ( 643)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 12
0005 putself
0006 putself
0007 opt_send_without_block <calldata!mid:__method__, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 opt_send_without_block <calldata!mid:to_enum, argc:1, FCALL|ARGS_SIMPLE>
0011 leave [Re]
0012 getinstancevariable :@path, <is:0> ( 644)[Li]
0015 setlocal_WC_0 path@0
0017 putself ( 645)[Li]
0018 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0020 pop
0021 jump 66 ( 646)[Li]
0023 putnil
0024 pop
0025 jump 66
0027 getlocal_WC_0 r@1 ( 647)[Li]
0029 expandarray 1, 0
0032 setlocal_WC_0 path@0
0034 getlocal_WC_0 path@0 ( 648)[Li]
0036 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0038 branchunless 42
0040 putnil
0041 leave ( 651)[Re]
0042 putself ( 649)[Li]
0043 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0045 putnil
0046 swap
0047 putself
0048 getlocal_WC_0 path@0
0050 opt_send_without_block <calldata!mid:del_trailing_separator, argc:1, FCALL|ARGS_SIMPLE>
0052 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 59
0055 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0057 jump 62
0059 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0061 swap
0062 pop
0063 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0065 pop
0066 putself ( 646)
0067 getlocal_WC_0 path@0
0069 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0071 dup
0072 setlocal_WC_0 r@1
0074 branchif 27
0076 putnil
0077 leave ( 651)[Re]
== disasm: #<ISeq:+@<internal:pathname_builtin>:668 (668,2)-(671,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] other@0<Arg>
0000 opt_getconstant_path <ic:1 Pathname> ( 669)[LiCa]
0002 getlocal_WC_0 other@0
0004 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0006 branchif 27
0008 opt_getconstant_path <ic:2 Pathname>
0010 putnil
0011 swap
0012 getlocal_WC_0 other@0
0014 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 21
0017 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0019 jump 24
0021 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0023 swap
0024 pop
0025 setlocal_WC_0 other@0
0027 opt_getconstant_path <ic:3 Pathname> ( 670)[Li]
0029 putnil
0030 swap
0031 putself
0032 getinstancevariable :@path, <is:0>
0035 getlocal_WC_0 other@0
0037 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0039 opt_send_without_block <calldata!mid:plus, argc:2, FCALL|ARGS_SIMPLE>
0041 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 48
0044 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0046 jump 51
0048 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0050 swap
0051 pop
0052 leave ( 671)[Re]
== disasm: #<ISeq:plus@<internal:pathname_builtin>:674 (674,2)-(713,5)>
local table (size: 11, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[11] path1@0<Arg>[10] path2@1<Arg>[ 9] prefix2@2 [ 8] index_list2@3[ 7] basename_list2@4[ 6] r2@5 [ 5] basename2@6[ 4] prefix1@7 [ 3] r1@8 [ 2] basename1@9[ 1] suffix2@10
0000 getlocal_WC_0 path2@1 ( 675)[LiCa]
0002 setlocal_WC_0 prefix2@2
0004 newarray 0 ( 676)[Li]
0006 setlocal_WC_0 index_list2@3
0008 newarray 0 ( 677)[Li]
0010 setlocal_WC_0 basename_list2@4
0012 jump 43 ( 678)[Li]
0014 putnil
0015 pop
0016 jump 43
0018 getlocal_WC_0 r2@5 ( 679)[Li]
0020 expandarray 2, 0
0023 setlocal_WC_0 prefix2@2
0025 setlocal_WC_0 basename2@6
0027 getlocal_WC_0 index_list2@3 ( 680)[Li]
0029 getlocal_WC_0 prefix2@2
0031 opt_length <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
0033 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0035 pop
0036 getlocal_WC_0 basename_list2@4 ( 681)[Li]
0038 getlocal_WC_0 basename2@6
0040 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0042 pop
0043 putself ( 678)
0044 getlocal_WC_0 prefix2@2
0046 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0048 dup
0049 setlocal_WC_0 r2@5
0051 branchif 18
0053 putnil
0054 pop
0055 getlocal_WC_0 prefix2@2 ( 683)[Li]
0057 putchilledstring ""
0059 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0062 branchunless 67
0064 getlocal_WC_0 path2@1
0066 leave [Re]
0067 getlocal_WC_0 path1@0 ( 684)[Li]
0069 setlocal_WC_0 prefix1@7
0071 jump 75 ( 685)[Li]
0073 putnil
0074 pop
0075 jump 91 ( 686)[Li]
0077 putnil
0078 pop
0079 jump 91
0081 getlocal_WC_0 index_list2@3 ( 687)[Li]
0083 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0085 pop
0086 getlocal_WC_0 basename_list2@4 ( 688)[Li]
0088 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0090 pop
0091 getlocal_WC_0 basename_list2@4 ( 686)
0093 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0095 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0097 branchunless 109
0099 getlocal_WC_0 basename_list2@4
0101 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0103 putchilledstring "."
0105 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0107 branchif 81
0109 putnil
0110 pop
0111 putself ( 690)[Li]
0112 getlocal_WC_0 prefix1@7
0114 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0116 dup
0117 setlocal_WC_0 r1@8
0119 branchif 124
0121 putnil
0122 jump 194
0124 getlocal_WC_0 r1@8 ( 691)[Li]
0126 expandarray 2, 0
0129 setlocal_WC_0 prefix1@7
0131 setlocal_WC_0 basename1@9
0133 getlocal_WC_0 basename1@9 ( 692)[Li]
0135 putchilledstring "."
0137 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0139 branchunless 145
0141 putnil
0142 pop
0143 jump 75
0145 getlocal_WC_0 basename1@9 ( 693)[Li]
0147 putchilledstring ".."
0149 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0151 branchif 170
0153 getlocal_WC_0 basename_list2@4
0155 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0157 branchif 170
0159 getlocal_WC_0 basename_list2@4
0161 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0163 putchilledstring ".."
0165 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0168 branchunless 181
0170 getlocal_WC_0 prefix1@7 ( 694)[Li]
0172 getlocal_WC_0 basename1@9
0174 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0176 setlocal_WC_0 prefix1@7
0178 putnil ( 695)[Li]
0179 jump 194
0181 getlocal_WC_0 index_list2@3 ( 697)[Li]
0183 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0185 pop
0186 getlocal_WC_0 basename_list2@4 ( 698)[Li]
0188 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0190 pop
0191 jump 75 ( 685)
0193 putnil
0194 pop
0195 putself ( 700)[Li]
0196 getlocal_WC_0 prefix1@7
0198 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0200 setlocal_WC_0 r1@8
0202 getlocal_WC_0 r1@8 ( 701)[Li]
0204 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0206 branchunless 259
0208 opt_getconstant_path <ic:0 SEPARATOR_PAT>
0210 opt_getconstant_path <ic:1 File>
0212 getlocal_WC_0 prefix1@7
0214 opt_send_without_block <calldata!mid:basename, argc:1, ARGS_SIMPLE>
0216 opt_send_without_block <calldata!mid:match?, argc:1, ARGS_SIMPLE>
0218 dup
0219 setlocal_WC_0 r1@8
0221 branchunless 259
0223 jump 239 ( 702)[Li]
0225 putnil
0226 pop
0227 jump 239
0229 getlocal_WC_0 index_list2@3 ( 703)[Li]
0231 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0233 pop
0234 getlocal_WC_0 basename_list2@4 ( 704)[Li]
0236 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0238 pop
0239 getlocal_WC_0 basename_list2@4 ( 702)
0241 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0243 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0245 branchunless 257
0247 getlocal_WC_0 basename_list2@4
0249 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0251 putchilledstring ".."
0253 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0255 branchif 229
0257 putnil
0258 pop
0259 getlocal_WC_0 basename_list2@4 ( 707)[Li]
0261 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0263 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0265 branchunless 301
0267 getlocal_WC_0 path2@1 ( 708)[Li]
0269 getlocal_WC_0 index_list2@3
0271 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0273 putobject -1
0275 newrange 0
0277 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0279 setlocal_WC_0 suffix2@10
0281 getlocal_WC_0 r1@8 ( 709)[Li]
0283 branchunless 294
0285 opt_getconstant_path <ic:2 File>
0287 getlocal_WC_0 prefix1@7
0289 getlocal_WC_0 suffix2@10
0291 opt_send_without_block <calldata!mid:join, argc:2, ARGS_SIMPLE>
0293 leave ( 713)[Re]
0294 getlocal_WC_0 prefix1@7 ( 709)
0296 getlocal_WC_0 suffix2@10
0298 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0300 leave ( 713)[Re]
0301 getlocal_WC_0 r1@8 ( 711)[Li]
0303 branchunless 308
0305 getlocal_WC_0 prefix1@7
0307 leave ( 713)[Re]
0308 opt_getconstant_path <ic:3 File> ( 711)
0310 getlocal_WC_0 prefix1@7
0312 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0314 leave ( 713)[Re]
== disasm: #<ISeq:join@<internal:pathname_builtin>:728 (728,2)-(739,5)>
== catch table
| catch type: break st: 0050 ed: 0055 sp: 0000 cont: 0055
| == disasm: #<ISeq:block in join@<internal:pathname_builtin>:733 (733,22)-(737,5)>
| == catch table
| | catch type: redo st: 0001 ed: 0048 sp: 0000 cont: 0001
| | catch type: next st: 0001 ed: 0048 sp: 0000 cont: 0048
| |------------------------------------------------------------------------
| local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] arg@0<AmbiguousArg>
| 0000 nop ( 733)[Bc]
| 0001 opt_getconstant_path <ic:0 Pathname> ( 734)[Li]
| 0003 getlocal_WC_0 arg@0
| 0005 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
| 0007 branchif 28
| 0009 opt_getconstant_path <ic:1 Pathname>
| 0011 putnil
| 0012 swap
| 0013 getlocal_WC_0 arg@0
| 0015 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 22
| 0018 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
| 0020 jump 25
| 0022 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
| 0024 swap
| 0025 pop
| 0026 setlocal_WC_0 arg@0
| 0028 getlocal_WC_0 arg@0 ( 735)[Li]
| 0030 getlocal_WC_1 result@1
| 0032 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
| 0034 setlocal_WC_1 result@1
| 0036 getlocal_WC_1 result@1 ( 736)[Li]
| 0038 opt_send_without_block <calldata!mid:absolute?, argc:0, ARGS_SIMPLE>
| 0040 branchunless 47
| 0042 getlocal_WC_1 result@1
| 0044 throw 1
| 0046 leave ( 737)[Br]
| 0047 putnil ( 736)
| 0048 leave ( 737)[Br]
|------------------------------------------------------------------------
local table (size: 2, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] args@0<Rest>[ 1] result@1
0000 getlocal_WC_0 args@0 ( 729)[LiCa]
0002 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0004 branchunless 8
0006 putself
0007 leave [Re]
0008 getlocal_WC_0 args@0 ( 730)[Li]
0010 opt_send_without_block <calldata!mid:pop, argc:0, ARGS_SIMPLE>
0012 setlocal_WC_0 result@1
0014 opt_getconstant_path <ic:0 Pathname> ( 731)[Li]
0016 getlocal_WC_0 result@1
0018 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0020 branchif 41
0022 opt_getconstant_path <ic:1 Pathname>
0024 putnil
0025 swap
0026 getlocal_WC_0 result@1
0028 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 35
0031 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0033 jump 38
0035 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0037 swap
0038 pop
0039 setlocal_WC_0 result@1
0041 getlocal_WC_0 result@1 ( 732)[Li]
0043 opt_send_without_block <calldata!mid:absolute?, argc:0, ARGS_SIMPLE>
0045 branchunless 50
0047 getlocal_WC_0 result@1
0049 leave [Re]
0050 getlocal_WC_0 args@0 ( 733)[Li]
0052 send <calldata!mid:reverse_each, argc:0>, block in join
0055 pop
0056 putself ( 738)[Li]
0057 getlocal_WC_0 result@1
0059 opt_plus <calldata!mid:+, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0061 leave ( 739)[Re]
== disasm: #<ISeq:children@<internal:pathname_builtin>:761 (761,2)-(773,5)>
local table (size: 2, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] with_directory@0<Opt=0>[ 1] result@1
0000 putobject true ( 761)
0002 setlocal_WC_0 with_directory@0
0004 getinstancevariable :@path, <is:0> ( 762)[LiCa]
0007 putchilledstring "."
0009 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0011 branchunless 17
0013 putobject false
0015 setlocal_WC_0 with_directory@0
0017 newarray 0 ( 763)[Li]
0019 setlocal_WC_0 result@1
0021 opt_getconstant_path <ic:2 Dir> ( 764)[Li]
0023 getinstancevariable :@path, <is:1>
0026 send <calldata!mid:foreach, argc:1>, block in children
0029 pop
0030 getlocal_WC_0 result@1 ( 772)[Li]
0032 leave ( 773)[Re]
== disasm: #<ISeq:block in children@<internal:pathname_builtin>:764 (764,23)-(771,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] e@0<AmbiguousArg>
0000 getlocal_WC_0 e@0 ( 765)[LiBc]
0002 putchilledstring "."
0004 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0006 branchif 16
0008 getlocal_WC_0 e@0
0010 putchilledstring ".."
0012 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
0014 branchunless 18
0016 putnil
0017 leave ( 771)[Br]
0018 getlocal_WC_1 with_directory@0 ( 766)[Li]
0020 branchunless 52
0022 getlocal_WC_1 result@1 ( 767)[Li]
0024 putself
0025 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0027 putnil
0028 swap
0029 opt_getconstant_path <ic:1 File>
0031 getinstancevariable :@path, <is:0>
0034 getlocal_WC_0 e@0
0036 opt_send_without_block <calldata!mid:join, argc:2, ARGS_SIMPLE>
0038 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 45
0041 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0043 jump 48
0045 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0047 swap
0048 pop
0049 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0051 leave ( 771)[Br]
0052 getlocal_WC_1 result@1 ( 769)[Li]
0054 putself
0055 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0057 putnil
0058 swap
0059 getlocal_WC_0 e@0
0061 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 68
0064 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0066 jump 71
0068 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0070 swap
0071 pop
0072 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0074 leave ( 771)[Br]
== disasm: #<ISeq:each_child@<internal:pathname_builtin>:811 (811,2)-(813,5)>
local table (size: 2, argc: 0 [opts: 1, rest: -1, post: 0, block: 1, kw: -1@-1, kwrest: -1])
[ 2] with_directory@0<Opt=0>[ 1] b@1<Block>
0000 putobject true ( 811)
0002 setlocal_WC_0 with_directory@0
0004 putself ( 812)[LiCa]
0005 getlocal_WC_0 with_directory@0
0007 opt_send_without_block <calldata!mid:children, argc:1, FCALL|ARGS_SIMPLE>
0009 getblockparamproxy b@1, 0
0012 send <calldata!mid:each, argc:0, ARGS_BLOCKARG>, nil
0015 leave ( 813)[Re]
== disasm: #<ISeq:relative_path_from@<internal:pathname_builtin>:829 (829,2)-(864,5)>
local table (size: 9, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 9] base_directory@0<Arg>[ 8] dest_directory@1[ 7] dest_prefix@2[ 6] dest_names@3[ 5] r@4 [ 4] basename@5 [ 3] base_prefix@6[ 2] base_names@7[ 1] relpath_names@8
0000 getlocal_WC_0 base_directory@0 ( 830)[LiCa]
0002 opt_getconstant_path <ic:0 Pathname>
0004 opt_send_without_block <calldata!mid:is_a?, argc:1, ARGS_SIMPLE>
0006 branchif 27
0008 opt_getconstant_path <ic:1 Pathname>
0010 putnil
0011 swap
0012 getlocal_WC_0 base_directory@0
0014 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 21
0017 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0019 jump 24
0021 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0023 swap
0024 pop
0025 setlocal_WC_0 base_directory@0
0027 putself ( 831)[Li]
0028 opt_send_without_block <calldata!mid:cleanpath, argc:0, FCALL|ARGS_SIMPLE>
0030 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0032 setlocal_WC_0 dest_directory@1
0034 getlocal_WC_0 base_directory@0 ( 832)[Li]
0036 opt_send_without_block <calldata!mid:cleanpath, argc:0, ARGS_SIMPLE>
0038 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
0040 setlocal_WC_0 base_directory@0
0042 getlocal_WC_0 dest_directory@1 ( 833)[Li]
0044 setlocal_WC_0 dest_prefix@2
0046 newarray 0 ( 834)[Li]
0048 setlocal_WC_0 dest_names@3
0050 jump 81 ( 835)[Li]
0052 putnil
0053 pop
0054 jump 81
0056 getlocal_WC_0 r@4 ( 836)[Li]
0058 expandarray 2, 0
0061 setlocal_WC_0 dest_prefix@2
0063 setlocal_WC_0 basename@5
0065 getlocal_WC_0 basename@5 ( 837)[Li]
0067 putchilledstring "."
0069 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0072 branchunless 81
0074 getlocal_WC_0 dest_names@3
0076 getlocal_WC_0 basename@5
0078 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0080 pop
0081 putself ( 835)
0082 getlocal_WC_0 dest_prefix@2
0084 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0086 dup
0087 setlocal_WC_0 r@4
0089 branchif 56
0091 putnil
0092 pop
0093 getlocal_WC_0 base_directory@0 ( 839)[Li]
0095 setlocal_WC_0 base_prefix@6
0097 newarray 0 ( 840)[Li]
0099 setlocal_WC_0 base_names@7
0101 jump 132 ( 841)[Li]
0103 putnil
0104 pop
0105 jump 132
0107 getlocal_WC_0 r@4 ( 842)[Li]
0109 expandarray 2, 0
0112 setlocal_WC_0 base_prefix@6
0114 setlocal_WC_0 basename@5
0116 getlocal_WC_0 basename@5 ( 843)[Li]
0118 putchilledstring "."
0120 opt_neq <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
0123 branchunless 132
0125 getlocal_WC_0 base_names@7
0127 getlocal_WC_0 basename@5
0129 opt_send_without_block <calldata!mid:unshift, argc:1, ARGS_SIMPLE>
0131 pop
0132 putself ( 841)
0133 getlocal_WC_0 base_prefix@6
0135 opt_send_without_block <calldata!mid:chop_basename, argc:1, FCALL|ARGS_SIMPLE>
0137 dup
0138 setlocal_WC_0 r@4
0140 branchif 107
0142 putnil
0143 pop
0144 opt_getconstant_path <ic:2 SAME_PATHS> ( 845)[Li]
0146 getlocal_WC_0 dest_prefix@2
0148 getlocal_WC_0 base_prefix@6
0150 opt_send_without_block <calldata!mid:[], argc:2, ARGS_SIMPLE>
0152 branchif 182
0154 putself ( 846)[Li]
0155 opt_getconstant_path <ic:3 ArgumentError>
0157 putobject "different prefix: "
0159 getlocal_WC_0 dest_prefix@2
0161 opt_send_without_block <calldata!mid:inspect, argc:0, ARGS_SIMPLE>
0163 dup
0164 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0166 anytostring
0167 putobject " and "
0169 getlocal_WC_0 base_directory@0
0171 opt_send_without_block <calldata!mid:inspect, argc:0, ARGS_SIMPLE>
0173 dup
0174 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0176 anytostring
0177 concatstrings 4
0179 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0181 pop
0182 jump 198 ( 848)[Li]
0184 putnil
0185 pop
0186 jump 198
0188 getlocal_WC_0 dest_names@3 ( 851)[Li]
0190 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0192 pop
0193 getlocal_WC_0 base_names@7 ( 852)[Li]
0195 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0197 pop
0198 getlocal_WC_0 dest_names@3 ( 848)
0200 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0202 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0204 branchunless 228
0206 getlocal_WC_0 base_names@7 ( 849)
0208 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0210 opt_not <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
0212 branchunless 228 ( 848)
0214 opt_getconstant_path <ic:4 SAME_PATHS> ( 850)
0216 getlocal_WC_0 dest_names@3
0218 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0220 getlocal_WC_0 base_names@7
0222 opt_send_without_block <calldata!mid:first, argc:0, ARGS_SIMPLE>
0224 opt_send_without_block <calldata!mid:[], argc:2, ARGS_SIMPLE>
0226 branchif 188 ( 848)
0228 putnil
0229 pop
0230 getlocal_WC_0 base_names@7 ( 854)[Li]
0232 putchilledstring ".."
0234 opt_send_without_block <calldata!mid:include?, argc:1, ARGS_SIMPLE>
0236 branchunless 256
0238 putself ( 855)[Li]
0239 opt_getconstant_path <ic:5 ArgumentError>
0241 putobject "base_directory has ..: "
0243 getlocal_WC_0 base_directory@0
0245 opt_send_without_block <calldata!mid:inspect, argc:0, ARGS_SIMPLE>
0247 dup
0248 objtostring <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
0250 anytostring
0251 concatstrings 2
0253 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0255 pop
0256 getlocal_WC_0 base_names@7 ( 857)[Li]
0258 putchilledstring ".."
0260 opt_send_without_block <calldata!mid:fill, argc:1, ARGS_SIMPLE>
0262 pop
0263 getlocal_WC_0 base_names@7 ( 858)[Li]
0265 getlocal_WC_0 dest_names@3
0267 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
0269 setlocal_WC_0 relpath_names@8
0271 getlocal_WC_0 relpath_names@8 ( 859)[Li]
0273 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0275 branchunless 295
0277 opt_getconstant_path <ic:6 Pathname> ( 860)[Li]
0279 putnil
0280 swap
0281 putchilledstring "."
0283 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 290
0286 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0288 jump 293
0290 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0292 swap
0293 pop
0294 leave ( 864)[Re]
0295 opt_getconstant_path <ic:7 Pathname> ( 862)[Li]
0297 putnil
0298 swap
0299 opt_getconstant_path <ic:8 File>
0301 getlocal_WC_0 relpath_names@8
0303 splatarray false
0305 opt_send_without_block <calldata!mid:join, argc:1, ARGS_SPLAT>
0307 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 314
0310 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0312 jump 317
0314 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0316 swap
0317 pop
0318 leave ( 864)[Re]
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:867 (867,0)-(1007,3)>
0000 definemethod :each_line, each_line ( 874)[LiCl]
0003 definemethod :read, read ( 880)[Li]
0006 definemethod :binread, binread ( 884)[Li]
0009 definemethod :readlines, readlines ( 887)[Li]
0012 definemethod :sysopen, sysopen ( 890)[Li]
0015 definemethod :write, write ( 893)[Li]
0018 definemethod :binwrite, binwrite ( 898)[Li]
0021 definemethod :atime, atime ( 901)[Li]
0024 definemethod :birthtime, birthtime ( 907)[Li]
0027 definemethod :ctime, ctime ( 910)[Li]
0030 definemethod :mtime, mtime ( 913)[Li]
0033 definemethod :chmod, chmod ( 916)[Li]
0036 definemethod :lchmod, lchmod ( 919)[Li]
0039 definemethod :chown, chown ( 922)[Li]
0042 definemethod :lchown, lchown ( 925)[Li]
0045 definemethod :fnmatch, fnmatch ( 929)[Li]
0048 definemethod :fnmatch?, fnmatch? ( 932)[Li]
0051 definemethod :ftype, ftype ( 936)[Li]
0054 definemethod :make_link, make_link ( 939)[Li]
0057 definemethod :open, open ( 942)[Li]
0060 definemethod :readlink, readlink ( 947)[Li]
0063 definemethod :rename, rename ( 950)[Li]
0066 definemethod :stat, stat ( 953)[Li]
0069 definemethod :lstat, lstat ( 956)[Li]
0072 definemethod :make_symlink, make_symlink( 959)[Li]
0075 definemethod :truncate, truncate ( 962)[Li]
0078 definemethod :utime, utime ( 965)[Li]
0081 definemethod :lutime, lutime ( 972)[Li]
0084 definemethod :basename, basename ( 975)[Li]
0087 definemethod :dirname, dirname ( 978)[Li]
0090 definemethod :extname, extname ( 981)[Li]
0093 definemethod :expand_path, expand_path ( 984)[Li]
0096 definemethod :split, split ( 988)[Li]
0099 definemethod :realpath, realpath ( 999)[Li]
0102 definemethod :realdirpath, realdirpath (1006)[Li]
0105 putobject :realdirpath
0107 leave (1007)[En]
== disasm: #<ISeq:each_line@<internal:pathname_builtin>:874 (874,2)-(876,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 875)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:foreach, argc:1, FORWARDING>, nil
0010 leave ( 876)[Re]
== disasm: #<ISeq:read@<internal:pathname_builtin>:880 (880,2)-(880,41)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 880)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:read, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:binread@<internal:pathname_builtin>:884 (884,2)-(884,47)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 884)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:binread, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:readlines@<internal:pathname_builtin>:887 (887,2)-(887,51)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 887)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:readlines, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:sysopen@<internal:pathname_builtin>:890 (890,2)-(890,47)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 890)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:sysopen, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:write@<internal:pathname_builtin>:893 (893,2)-(893,43)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 893)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:write, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:binwrite@<internal:pathname_builtin>:898 (898,2)-(898,49)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 898)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:binwrite, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:atime@<internal:pathname_builtin>:901 (901,2)-(901,35)>
0000 opt_getconstant_path <ic:1 File> ( 901)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:atime, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:birthtime@<internal:pathname_builtin>:907 (907,2)-(907,43)>
0000 opt_getconstant_path <ic:1 File> ( 907)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:birthtime, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:ctime@<internal:pathname_builtin>:910 (910,2)-(910,35)>
0000 opt_getconstant_path <ic:1 File> ( 910)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:ctime, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:mtime@<internal:pathname_builtin>:913 (913,2)-(913,35)>
0000 opt_getconstant_path <ic:1 File> ( 913)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:mtime, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:chmod@<internal:pathname_builtin>:916 (916,2)-(916,45)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] mode@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 916)[LiCa]
0002 getlocal_WC_0 mode@0
0004 getinstancevariable :@path, <is:0>
0007 opt_send_without_block <calldata!mid:chmod, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:lchmod@<internal:pathname_builtin>:919 (919,2)-(919,47)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] mode@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 919)[LiCa]
0002 getlocal_WC_0 mode@0
0004 getinstancevariable :@path, <is:0>
0007 opt_send_without_block <calldata!mid:lchmod, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:chown@<internal:pathname_builtin>:922 (922,2)-(922,61)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] owner@0<Arg>[ 1] group@1<Arg>
0000 opt_getconstant_path <ic:1 File> ( 922)[LiCa]
0002 getlocal_WC_0 owner@0
0004 getlocal_WC_0 group@1
0006 getinstancevariable :@path, <is:0>
0009 opt_send_without_block <calldata!mid:chown, argc:3, ARGS_SIMPLE>
0011 leave [Re]
== disasm: #<ISeq:lchown@<internal:pathname_builtin>:925 (925,2)-(925,63)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] owner@0<Arg>[ 1] group@1<Arg>
0000 opt_getconstant_path <ic:1 File> ( 925)[LiCa]
0002 getlocal_WC_0 owner@0
0004 getlocal_WC_0 group@1
0006 getinstancevariable :@path, <is:0>
0009 opt_send_without_block <calldata!mid:lchown, argc:3, ARGS_SIMPLE>
0011 leave [Re]
== disasm: #<ISeq:fnmatch@<internal:pathname_builtin>:929 (929,2)-(929,65)>
local table (size: 5, argc: 1 [opts: 0, rest: 1, post: 0, block: 3, kw: -1@-1, kwrest: 2])
[ 5] pattern@0<Arg>[ 4] "*"@1<AnonRest>[ 3] "**"@2<AnonKwrest>[ 2] "&"@3<Block>[ 1] "..."@4
0000 opt_getconstant_path <ic:1 File> ( 929)[LiCa]
0002 getlocal_WC_0 pattern@0
0004 getinstancevariable :@path, <is:0>
0007 getlocal_WC_0 "*"@1
0009 splatarray false
0011 getlocal_WC_0 "**"@2
0013 getblockparamproxy "&"@3, 0
0016 splatkw
0017 send <calldata!mid:fnmatch, argc:4, ARGS_SPLAT|ARGS_BLOCKARG|KW_SPLAT>, nil
0020 leave [Re]
== disasm: #<ISeq:fnmatch?@<internal:pathname_builtin>:932 (932,2)-(932,67)>
local table (size: 5, argc: 1 [opts: 0, rest: 1, post: 0, block: 3, kw: -1@-1, kwrest: 2])
[ 5] pattern@0<Arg>[ 4] "*"@1<AnonRest>[ 3] "**"@2<AnonKwrest>[ 2] "&"@3<Block>[ 1] "..."@4
0000 opt_getconstant_path <ic:1 File> ( 932)[LiCa]
0002 getlocal_WC_0 pattern@0
0004 getinstancevariable :@path, <is:0>
0007 getlocal_WC_0 "*"@1
0009 splatarray false
0011 getlocal_WC_0 "**"@2
0013 getblockparamproxy "&"@3, 0
0016 splatkw
0017 send <calldata!mid:fnmatch?, argc:4, ARGS_SPLAT|ARGS_BLOCKARG|KW_SPLAT>, nil
0020 leave [Re]
== disasm: #<ISeq:ftype@<internal:pathname_builtin>:936 (936,2)-(936,35)>
0000 opt_getconstant_path <ic:1 File> ( 936)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:ftype, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:make_link@<internal:pathname_builtin>:939 (939,2)-(939,46)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] old@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 939)[LiCa]
0002 getlocal_WC_0 old@0
0004 getinstancevariable :@path, <is:0>
0007 opt_send_without_block <calldata!mid:link, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:open@<internal:pathname_builtin>:942 (942,2)-(944,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 File> ( 943)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:open, argc:1, FORWARDING>, nil
0010 leave ( 944)[Re]
== disasm: #<ISeq:readlink@<internal:pathname_builtin>:947 (947,2)-(947,57)>
0000 putself ( 947)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 opt_send_without_block <calldata!mid:readlink, argc:1, ARGS_SIMPLE>
0012 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 19
0015 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0017 jump 22
0019 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0021 swap
0022 pop
0023 leave [Re]
== disasm: #<ISeq:rename@<internal:pathname_builtin>:950 (950,2)-(950,43)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] to@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 950)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 to@0
0007 opt_send_without_block <calldata!mid:rename, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:stat@<internal:pathname_builtin>:953 (953,2)-(953,33)>
0000 opt_getconstant_path <ic:1 File> ( 953)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:stat, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:lstat@<internal:pathname_builtin>:956 (956,2)-(956,35)>
0000 opt_getconstant_path <ic:1 File> ( 956)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:lstat, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:make_symlink@<internal:pathname_builtin>:959 (959,2)-(959,52)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] old@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 959)[LiCa]
0002 getlocal_WC_0 old@0
0004 getinstancevariable :@path, <is:0>
0007 opt_send_without_block <calldata!mid:symlink, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:truncate@<internal:pathname_builtin>:962 (962,2)-(962,55)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] length@0<Arg>
0000 opt_getconstant_path <ic:1 File> ( 962)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 length@0
0007 opt_send_without_block <calldata!mid:truncate, argc:2, ARGS_SIMPLE>
0009 leave [Re]
== disasm: #<ISeq:utime@<internal:pathname_builtin>:965 (965,2)-(965,61)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] atime@0<Arg>[ 1] mtime@1<Arg>
0000 opt_getconstant_path <ic:1 File> ( 965)[LiCa]
0002 getlocal_WC_0 atime@0
0004 getlocal_WC_0 mtime@1
0006 getinstancevariable :@path, <is:0>
0009 opt_send_without_block <calldata!mid:utime, argc:3, ARGS_SIMPLE>
0011 leave [Re]
== disasm: #<ISeq:lutime@<internal:pathname_builtin>:972 (972,2)-(972,63)>
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] atime@0<Arg>[ 1] mtime@1<Arg>
0000 opt_getconstant_path <ic:1 File> ( 972)[LiCa]
0002 getlocal_WC_0 atime@0
0004 getlocal_WC_0 mtime@1
0006 getinstancevariable :@path, <is:0>
0009 opt_send_without_block <calldata!mid:lutime, argc:3, ARGS_SIMPLE>
0011 leave [Re]
== disasm: #<ISeq:basename@<internal:pathname_builtin>:975 (975,2)-(975,65)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 975)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 getlocal_WC_0 "..."@0
0012 sendforward <calldata!mid:basename, argc:1, FORWARDING>, nil
0015 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 22
0018 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0020 jump 25
0022 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0024 swap
0025 pop
0026 leave [Re]
== disasm: #<ISeq:dirname@<internal:pathname_builtin>:978 (978,2)-(978,55)>
0000 putself ( 978)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 opt_send_without_block <calldata!mid:dirname, argc:1, ARGS_SIMPLE>
0012 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 19
0015 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0017 jump 22
0019 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0021 swap
0022 pop
0023 leave [Re]
== disasm: #<ISeq:extname@<internal:pathname_builtin>:981 (981,2)-(981,39)>
0000 opt_getconstant_path <ic:1 File> ( 981)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:extname, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:expand_path@<internal:pathname_builtin>:984 (984,2)-(984,71)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 984)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 getlocal_WC_0 "..."@0
0012 sendforward <calldata!mid:expand_path, argc:1, FORWARDING>, nil
0015 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 22
0018 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0020 jump 25
0022 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0024 swap
0025 pop
0026 leave [Re]
== disasm: #<ISeq:split@<internal:pathname_builtin>:988 (988,2)-(992,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] array@0
0000 opt_getconstant_path <ic:1 File> ( 989)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:split, argc:1, ARGS_SIMPLE>
0007 setlocal_WC_0 array@0
0009 opt_getconstant_path <ic:2 Array> ( 990)[Li]
0011 getlocal_WC_0 array@0
0013 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0015 branchif 25
0017 putself
0018 opt_getconstant_path <ic:3 TypeError>
0020 putchilledstring "wrong argument type nil (expected Array)"
0022 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0024 pop
0025 getlocal_WC_0 array@0 ( 991)[Li]
0027 send <calldata!mid:map, argc:0>, block in split
0030 leave ( 992)[Re]
== disasm: #<ISeq:block in split@<internal:pathname_builtin>:991 (991,14)-(991,38)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself ( 991)[LiBc]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 getlocal_WC_0 f@0
0007 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 14
0010 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0012 jump 17
0014 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0016 swap
0017 pop
0018 leave [Br]
== disasm: #<ISeq:realpath@<internal:pathname_builtin>:999 (999,2)-(999,65)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 999)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 getlocal_WC_0 "..."@0
0012 sendforward <calldata!mid:realpath, argc:1, FORWARDING>, nil
0015 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 22
0018 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0020 jump 25
0022 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0024 swap
0025 pop
0026 leave [Re]
== disasm: #<ISeq:realdirpath@<internal:pathname_builtin>:1006 (1006,2)-(1006,71)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself (1006)[LiCa]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 opt_getconstant_path <ic:1 File>
0007 getinstancevariable :@path, <is:0>
0010 getlocal_WC_0 "..."@0
0012 sendforward <calldata!mid:realdirpath, argc:1, FORWARDING>, nil
0015 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 22
0018 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0020 jump 25
0022 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0024 swap
0025 pop
0026 leave [Re]
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:1010 (1010,0)-(1094,3)>
0000 definemethod :blockdev?, blockdev? (1013)[LiCl]
0003 definemethod :chardev?, chardev? (1016)[Li]
0006 definemethod :empty?, empty? (1021)[Li]
0009 definemethod :executable?, executable? (1030)[Li]
0012 definemethod :executable_real?, executable_real?(1033)[Li]
0015 definemethod :exist?, exist? (1036)[Li]
0018 definemethod :grpowned?, grpowned? (1039)[Li]
0021 definemethod :directory?, directory? (1042)[Li]
0024 definemethod :file?, file? (1045)[Li]
0027 definemethod :pipe?, pipe? (1048)[Li]
0030 definemethod :socket?, socket? (1051)[Li]
0033 definemethod :owned?, owned? (1054)[Li]
0036 definemethod :readable?, readable? (1057)[Li]
0039 definemethod :world_readable?, world_readable?(1060)[Li]
0042 definemethod :readable_real?, readable_real?(1063)[Li]
0045 definemethod :setuid?, setuid? (1066)[Li]
0048 definemethod :setgid?, setgid? (1069)[Li]
0051 definemethod :size, size (1072)[Li]
0054 definemethod :size?, size? (1075)[Li]
0057 definemethod :sticky?, sticky? (1078)[Li]
0060 definemethod :symlink?, symlink? (1081)[Li]
0063 definemethod :writable?, writable? (1084)[Li]
0066 definemethod :world_writable?, world_writable?(1087)[Li]
0069 definemethod :writable_real?, writable_real?(1090)[Li]
0072 definemethod :zero?, zero? (1093)[Li]
0075 putobject :zero?
0077 leave (1094)[En]
== disasm: #<ISeq:blockdev?@<internal:pathname_builtin>:1013 (1013,2)-(1013,47)>
0000 opt_getconstant_path <ic:1 FileTest> (1013)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:blockdev?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:chardev?@<internal:pathname_builtin>:1016 (1016,2)-(1016,45)>
0000 opt_getconstant_path <ic:1 FileTest> (1016)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:chardev?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:empty?@<internal:pathname_builtin>:1021 (1021,2)-(1027,5)>
0000 opt_getconstant_path <ic:3 FileTest> (1022)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:directory?, argc:1, ARGS_SIMPLE>
0007 branchunless 17
0009 opt_getconstant_path <ic:4 Dir> (1023)[Li]
0011 getinstancevariable :@path, <is:1>
0014 opt_send_without_block <calldata!mid:empty?, argc:1, ARGS_SIMPLE>
0016 leave (1027)[Re]
0017 opt_getconstant_path <ic:5 File> (1025)[Li]
0019 getinstancevariable :@path, <is:2>
0022 opt_send_without_block <calldata!mid:empty?, argc:1, ARGS_SIMPLE>
0024 leave (1027)[Re]
== disasm: #<ISeq:executable?@<internal:pathname_builtin>:1030 (1030,2)-(1030,51)>
0000 opt_getconstant_path <ic:1 FileTest> (1030)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:executable?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:executable_real?@<internal:pathname_builtin>:1033 (1033,2)-(1033,61)>
0000 opt_getconstant_path <ic:1 FileTest> (1033)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:executable_real?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:exist?@<internal:pathname_builtin>:1036 (1036,2)-(1036,41)>
0000 opt_getconstant_path <ic:1 FileTest> (1036)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:exist?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:grpowned?@<internal:pathname_builtin>:1039 (1039,2)-(1039,47)>
0000 opt_getconstant_path <ic:1 FileTest> (1039)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:grpowned?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:directory?@<internal:pathname_builtin>:1042 (1042,2)-(1042,49)>
0000 opt_getconstant_path <ic:1 FileTest> (1042)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:directory?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:file?@<internal:pathname_builtin>:1045 (1045,2)-(1045,39)>
0000 opt_getconstant_path <ic:1 FileTest> (1045)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:file?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:pipe?@<internal:pathname_builtin>:1048 (1048,2)-(1048,39)>
0000 opt_getconstant_path <ic:1 FileTest> (1048)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:pipe?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:socket?@<internal:pathname_builtin>:1051 (1051,2)-(1051,43)>
0000 opt_getconstant_path <ic:1 FileTest> (1051)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:socket?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:owned?@<internal:pathname_builtin>:1054 (1054,2)-(1054,41)>
0000 opt_getconstant_path <ic:1 FileTest> (1054)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:owned?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:readable?@<internal:pathname_builtin>:1057 (1057,2)-(1057,47)>
0000 opt_getconstant_path <ic:1 FileTest> (1057)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:readable?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:world_readable?@<internal:pathname_builtin>:1060 (1060,2)-(1060,55)>
0000 opt_getconstant_path <ic:1 File> (1060)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:world_readable?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:readable_real?@<internal:pathname_builtin>:1063 (1063,2)-(1063,57)>
0000 opt_getconstant_path <ic:1 FileTest> (1063)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:readable_real?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:setuid?@<internal:pathname_builtin>:1066 (1066,2)-(1066,43)>
0000 opt_getconstant_path <ic:1 FileTest> (1066)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:setuid?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:setgid?@<internal:pathname_builtin>:1069 (1069,2)-(1069,43)>
0000 opt_getconstant_path <ic:1 FileTest> (1069)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:setgid?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:size@<internal:pathname_builtin>:1072 (1072,2)-(1072,37)>
0000 opt_getconstant_path <ic:1 FileTest> (1072)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:size, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:size?@<internal:pathname_builtin>:1075 (1075,2)-(1075,39)>
0000 opt_getconstant_path <ic:1 FileTest> (1075)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:size?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:sticky?@<internal:pathname_builtin>:1078 (1078,2)-(1078,43)>
0000 opt_getconstant_path <ic:1 FileTest> (1078)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:sticky?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:symlink?@<internal:pathname_builtin>:1081 (1081,2)-(1081,45)>
0000 opt_getconstant_path <ic:1 FileTest> (1081)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:symlink?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:writable?@<internal:pathname_builtin>:1084 (1084,2)-(1084,47)>
0000 opt_getconstant_path <ic:1 FileTest> (1084)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:writable?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:world_writable?@<internal:pathname_builtin>:1087 (1087,2)-(1087,55)>
0000 opt_getconstant_path <ic:1 File> (1087)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:world_writable?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:writable_real?@<internal:pathname_builtin>:1090 (1090,2)-(1090,57)>
0000 opt_getconstant_path <ic:1 FileTest> (1090)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:writable_real?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:zero?@<internal:pathname_builtin>:1093 (1093,2)-(1093,39)>
0000 opt_getconstant_path <ic:1 FileTest> (1093)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:zero?, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:1097 (1097,0)-(1151,3)>
0000 opt_getconstant_path <ic:0 Pathname> (1099)[LiCl]
0002 definesmethod :glob, glob
0005 definemethod :glob, glob (1114)[Li]
0008 opt_getconstant_path <ic:1 Pathname> (1123)[Li]
0010 definesmethod :getwd, getwd
0013 putself (1124)[Li]
0014 putnil
0015 defineclass :singletonclass, singleton class, 1
0019 pop
0020 definemethod :entries, entries (1130)[Li]
0023 definemethod :each_entry, each_entry (1136)[Li]
0026 definemethod :mkdir, mkdir (1142)[Li]
0029 definemethod :rmdir, rmdir (1145)[Li]
0032 definemethod :opendir, opendir (1148)[Li]
0035 putobject :opendir
0037 leave (1151)[En]
== disasm: #<ISeq:glob@<internal:pathname_builtin>:1099 (1099,2)-(1105,5)>
local table (size: 2, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: 1])
[ 2] args@0<Rest>[ 1] kwargs@1<Kwrest>
0000 putself (1100)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchunless 17
0005 opt_getconstant_path <ic:0 Dir> (1101)[Li]
0007 getlocal_WC_0 args@0
0009 splatarray false
0011 getlocal_WC_0 kwargs@1
0013 send <calldata!mid:glob, argc:2, ARGS_SPLAT|KW_SPLAT>, block in glob
0016 leave (1105)[Re]
0017 opt_getconstant_path <ic:1 Dir> (1103)[Li]
0019 getlocal_WC_0 args@0
0021 splatarray false
0023 getlocal_WC_0 kwargs@1
0025 opt_send_without_block <calldata!mid:glob, argc:2, ARGS_SPLAT|KW_SPLAT>
0027 send <calldata!mid:map, argc:0>, block in glob
0030 leave (1105)[Re]
== disasm: #<ISeq:block in glob@<internal:pathname_builtin>:1101 (1101,32)-(1101,56)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1101)[LiBc]
0001 putnil
0002 swap
0003 getlocal_WC_0 f@0
0005 opt_new <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>, 12
0008 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0010 jump 15
0012 opt_send_without_block <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>
0014 swap
0015 pop
0016 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0018 leave [Br]
== disasm: #<ISeq:block in glob@<internal:pathname_builtin>:1103 (1103,36)-(1103,54)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1103)[LiBc]
0001 putnil
0002 swap
0003 getlocal_WC_0 f@0
0005 opt_new <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>, 12
0008 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0010 jump 15
0012 opt_send_without_block <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>
0014 swap
0015 pop
0016 leave [Br]
== disasm: #<ISeq:glob@<internal:pathname_builtin>:1114 (1114,2)-(1120,5)>
local table (size: 2, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: 1])
[ 2] args@0<Rest>[ 1] kwargs@1<Kwrest>
0000 putself (1115)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchunless 33
0005 opt_getconstant_path <ic:2 Dir> (1116)[Li]
0007 getlocal_WC_0 args@0
0009 splatarray false
0011 putspecialobject 1
0013 newhash 0
0015 getlocal_WC_0 kwargs@1
0017 opt_send_without_block <calldata!mid:core#hash_merge_kwd, argc:2, ARGS_SIMPLE>
0019 putspecialobject 1
0021 swap
0022 putobject :base
0024 getinstancevariable :@path, <is:0>
0027 opt_send_without_block <calldata!mid:core#hash_merge_ptr, argc:3, ARGS_SIMPLE>
0029 send <calldata!mid:glob, argc:2, ARGS_SPLAT|KW_SPLAT|KW_SPLAT_MUT>, block in glob
0032 leave (1120)[Re]
0033 opt_getconstant_path <ic:3 Dir> (1118)[Li]
0035 getlocal_WC_0 args@0
0037 splatarray false
0039 putspecialobject 1
0041 newhash 0
0043 getlocal_WC_0 kwargs@1
0045 opt_send_without_block <calldata!mid:core#hash_merge_kwd, argc:2, ARGS_SIMPLE>
0047 putspecialobject 1
0049 swap
0050 putobject :base
0052 getinstancevariable :@path, <is:1>
0055 opt_send_without_block <calldata!mid:core#hash_merge_ptr, argc:3, ARGS_SIMPLE>
0057 opt_send_without_block <calldata!mid:glob, argc:2, ARGS_SPLAT|KW_SPLAT|KW_SPLAT_MUT>
0059 send <calldata!mid:map, argc:0>, block in glob
0062 leave (1120)[Re]
== disasm: #<ISeq:block in glob@<internal:pathname_builtin>:1116 (1116,45)-(1116,66)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1116)[LiBc]
0001 getlocal_WC_0 f@0
0003 opt_plus <calldata!mid:+, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0005 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0007 leave [Br]
== disasm: #<ISeq:block in glob@<internal:pathname_builtin>:1118 (1118,49)-(1118,64)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1118)[LiBc]
0001 getlocal_WC_0 f@0
0003 opt_plus <calldata!mid:+, argc:1, FCALL|ARGS_SIMPLE>[CcCr]
0005 leave [Br]
== disasm: #<ISeq:getwd@<internal:pathname_builtin>:1123 (1123,2)-(1123,46)>
0000 putself (1123)[LiCa]
0001 putnil
0002 swap
0003 opt_getconstant_path <ic:0 Dir>
0005 opt_send_without_block <calldata!mid:getwd, argc:0, ARGS_SIMPLE>
0007 opt_new <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>, 14
0010 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0012 jump 17
0014 opt_send_without_block <calldata!mid:new, argc:1, FCALL|ARGS_SIMPLE>
0016 swap
0017 pop
0018 leave [Re]
== disasm: #<ISeq:singleton class@<internal:pathname_builtin>:1124 (1124,2)-(1126,5)>
0000 putspecialobject 1 (1125)[Li]
0002 putspecialobject 2
0004 putobject :pwd
0006 putobject :getwd
0008 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0010 leave
== disasm: #<ISeq:entries@<internal:pathname_builtin>:1130 (1130,2)-(1130,67)>
0000 opt_getconstant_path <ic:1 Dir> (1130)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:entries, argc:1, ARGS_SIMPLE>
0007 send <calldata!mid:map, argc:0>, block in entries
0010 leave [Re]
== disasm: #<ISeq:block in entries@<internal:pathname_builtin>:1130 (1130,39)-(1130,63)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1130)[LiBc]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 getlocal_WC_0 f@0
0007 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 14
0010 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0012 jump 17
0014 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0016 swap
0017 pop
0018 leave [Br]
== disasm: #<ISeq:each_entry@<internal:pathname_builtin>:1136 (1136,2)-(1139,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1])
[ 1] block@0<Block>
0000 putself (1137)[LiCa]
0001 opt_send_without_block <calldata!mid:block_given?, argc:0, FCALL|ARGS_SIMPLE>
0003 branchif 12
0005 putself
0006 putself
0007 opt_send_without_block <calldata!mid:__method__, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 opt_send_without_block <calldata!mid:to_enum, argc:1, FCALL|ARGS_SIMPLE>
0011 leave [Re]
0012 opt_getconstant_path <ic:1 Dir> (1138)[Li]
0014 getinstancevariable :@path, <is:0>
0017 send <calldata!mid:foreach, argc:1>, block in each_entry
0020 leave (1139)[Re]
== disasm: #<ISeq:block in each_entry@<internal:pathname_builtin>:1138 (1138,23)-(1138,53)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] f@0<AmbiguousArg>
0000 putself (1138)[LiBc]
0001 opt_send_without_block <calldata!mid:class, argc:0, FCALL|ARGS_SIMPLE>
0003 putnil
0004 swap
0005 getlocal_WC_0 f@0
0007 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 14
0010 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0012 jump 17
0014 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0016 swap
0017 pop
0018 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0020 leave [Br]
== disasm: #<ISeq:mkdir@<internal:pathname_builtin>:1142 (1142,2)-(1142,42)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 opt_getconstant_path <ic:1 Dir> (1142)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getlocal_WC_0 "..."@0
0007 sendforward <calldata!mid:mkdir, argc:1, FORWARDING>, nil
0010 leave [Re]
== disasm: #<ISeq:rmdir@<internal:pathname_builtin>:1145 (1145,2)-(1145,34)>
0000 opt_getconstant_path <ic:1 Dir> (1145)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:rmdir, argc:1, ARGS_SIMPLE>
0007 leave [Re]
== disasm: #<ISeq:opendir@<internal:pathname_builtin>:1148 (1148,2)-(1150,5)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1])
[ 1] block@0<Block>
0000 opt_getconstant_path <ic:1 Dir> (1149)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 getblockparamproxy block@0, 0
0008 send <calldata!mid:open, argc:1, ARGS_BLOCKARG>, nil
0011 leave (1150)[Re]
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:1153 (1153,0)-(1162,3)>
0000 definemethod :unlink, unlink (1156)[LiCl]
0003 putspecialobject 1 (1161)[Li]
0005 putspecialobject 2
0007 putobject :delete
0009 putobject :unlink
0011 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0013 leave (1162)[En]
== disasm: #<ISeq:unlink@<internal:pathname_builtin>:1156 (1156,2)-(1160,5)>
== catch table
| catch type: rescue st: 0000 ed: 0007 sp: 0000 cont: 0008
| == disasm: #<ISeq:rescue in unlink@<internal:pathname_builtin>:1158 (1158,2)-(1159,21)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 (1158)
| 0002 opt_getconstant_path <ic:1 Errno::ENOTDIR>
| 0004 checkmatch 3
| 0006 branchunless 16
| 0008 opt_getconstant_path <ic:2 File> (1159)[LiRs]
| 0010 getinstancevariable :@path, <is:0>
| 0013 opt_send_without_block <calldata!mid:unlink, argc:1, ARGS_SIMPLE>
| 0015 leave (1158)
| 0016 getlocal_WC_0 "$!"@0
| 0018 throw 0
| catch type: retry st: 0007 ed: 0008 sp: 0000 cont: 0000
|------------------------------------------------------------------------
0000 opt_getconstant_path <ic:1 Dir> (1157)[LiCa]
0002 getinstancevariable :@path, <is:0>
0005 opt_send_without_block <calldata!mid:unlink, argc:1, ARGS_SIMPLE>
0007 nop (1156)
0008 leave (1160)[Re]
== disasm: #<ISeq:<class:Pathname>@<internal:pathname_builtin>:1164 (1164,0)-(1166,3)>
0000 opt_getconstant_path <ic:0 Kernel> (1165)[LiCl]
0002 putobject :=~
0004 opt_send_without_block <calldata!mid:method_defined?, argc:1, ARGS_SIMPLE>
0006 branchunless 17
0008 putspecialobject 1
0010 putspecialobject 2
0012 putobject :=~
0014 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0016 leave (1166)[En]
0017 putnil (1165)
0018 leave (1166)[En]
== disasm: #<ISeq:<module:Kernel>@<internal:pathname_builtin>:1168 (1168,0)-(1175,3)>
0000 definemethod :Pathname, Pathname (1170)[LiCl]
0003 putself (1174)[Li]
0004 putobject :Pathname
0006 opt_send_without_block <calldata!mid:module_function, argc:1, FCALL|ARGS_SIMPLE>
0008 leave (1175)[En]
== disasm: #<ISeq:Pathname@<internal:pathname_builtin>:1170 (1170,2)-(1173,5)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] path@0<Arg>
0000 opt_getconstant_path <ic:0 Pathname> (1171)[LiCa]
0002 getlocal_WC_0 path@0
0004 opt_send_without_block <calldata!mid:===, argc:1, ARGS_SIMPLE>
0006 branchunless 11
0008 getlocal_WC_0 path@0
0010 leave [Re]
0011 opt_getconstant_path <ic:1 Pathname> (1172)[Li]
0013 putnil
0014 swap
0015 getlocal_WC_0 path@0
0017 opt_new <calldata!mid:new, argc:1, ARGS_SIMPLE>, 24
0020 opt_send_without_block <calldata!mid:initialize, argc:1, FCALL|ARGS_SIMPLE>
0022 jump 27
0024 opt_send_without_block <calldata!mid:new, argc:1, ARGS_SIMPLE>
0026 swap
0027 pop
0028 leave (1173)[Re]
== disasm: #<ISeq:zero?@<internal:numeric>:283 (283,2)-(286,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi285/0>, 0 ( 285)[LiCa]
0003 leave ( 286)[Re]
== disasm: #<ISeq:<internal:warning>@<internal:warning>:4 (4,0)-(59,3)>
0000 putspecialobject 3 ( 4)[Li]
0002 putnil
0003 defineclass :Kernel, <module:Kernel>, 2
0007 leave
== disasm: #<ISeq:<module:Kernel>@<internal:warning>:4 (4,0)-(59,3)>
0000 putself ( 5)[LiCl]
0001 opt_send_without_block <calldata!mid:module_function, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 pop
0004 definemethod :warn, warn ( 52)[Li]
0007 putobject :warn
0009 leave ( 59)[En]
== disasm: #<ISeq:warn@<internal:warning>:52 (52,2)-(58,5)>
local table (size: 4, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: 2@0, kwrest: -1])
[ 4] msgs@0<Rest>[ 3] uplevel@1 [ 2] category@2 [ 1] ?@3
0000 opt_invokebuiltin_delegate <builtin!_bi53/0>, 0 ( 53)[LiCa]
0003 branchunless 13
0005 getlocal_WC_0 msgs@0 ( 54)[Li]
0007 getlocal_WC_0 uplevel@1
0009 putnil
0010 invokebuiltin <builtin!rb_warn_m/3>
0012 leave ( 58)[Re]
0013 opt_getconstant_path <ic:0 Warning> ( 55)[Li]
0015 opt_invokebuiltin_delegate <builtin!_bi55/0>, 0
0018 dup
0019 setlocal_WC_0 category@2
0021 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
0023 branchunless 29
0025 opt_invokebuiltin_delegate <builtin!rb_warn_m/3>, 0 ( 56)[Li]
0028 leave ( 58)[Re]
0029 putnil ( 56)
0030 leave ( 58)[Re]
== disasm: #<ISeq:<internal:array>@<internal:array>:1 (1,0)-(284,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Array, <class:Array>, 0
0007 leave
== disasm: #<ISeq:<class:Array>@<internal:array>:1 (1,0)-(284,3)>
0000 definemethod :shuffle!, shuffle! ( 22)[LiCl]
0003 definemethod :shuffle, shuffle ( 45)[Li]
0006 definemethod :sample, sample ( 95)[Li]
0009 definemethod :first, first ( 129)[Li]
0012 definemethod :last, last ( 166)[Li]
0015 definemethod :fetch_values, fetch_values( 210)[Li]
0018 putself ( 215)[Li]
0019 send <calldata!mid:with_jit, argc:0, FCALL>, block in <class:Array>
0022 leave ( 284)[En]
== disasm: #<ISeq:shuffle!@<internal:array>:22 (22,2)-(24,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] random@0 [ 1] ?@1
0000 checkkeyword 3, 0 ( 22)
0003 branchif 9
0005 opt_getconstant_path <ic:0 Random>
0007 setlocal_WC_0 random@0
0009 opt_invokebuiltin_delegate_leave <builtin!rb_ary_shuffle_bang/1>, 0( 23)[LiCa]
0012 leave ( 24)[Re]
== disasm: #<ISeq:shuffle@<internal:array>:45 (45,2)-(47,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] random@0 [ 1] ?@1
0000 checkkeyword 3, 0 ( 45)
0003 branchif 9
0005 opt_getconstant_path <ic:0 Random>
0007 setlocal_WC_0 random@0
0009 opt_invokebuiltin_delegate_leave <builtin!rb_ary_shuffle/1>, 0( 46)[LiCa]
0012 leave ( 47)[Re]
== disasm: #<ISeq:sample@<internal:array>:95 (95,2)-(103,5)>
local table (size: 4, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] n@0<Opt=0> [ 3] random@1 [ 2] ?@2 [ 1] ary@3
0000 putobject false ( 95)[Li]
0002 dup
0003 setlocal_WC_0 ary@3
0005 setlocal_WC_0 n@0
0007 checkkeyword 4, 0
0010 branchif 16
0012 opt_getconstant_path <ic:0 Random>
0014 setlocal_WC_0 random@1
0016 getlocal_WC_0 random@1 ( 101)[LiCa]
0018 getlocal_WC_0 n@0
0020 getlocal_WC_0 ary@3
0022 invokebuiltin <builtin!ary_sample/3>
0024 leave ( 103)[Re]
== disasm: #<ISeq:first@<internal:array>:129 (129,2)-(140,5)>
local table (size: 2, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] n@0<Opt=0> [ 1] unspecified@1
0000 putobject true ( 129)
0002 dup
0003 setlocal_WC_0 unspecified@1
0005 setlocal_WC_0 n@0
0007 getlocal_WC_0 unspecified@1 ( 134)[LiCa]
0009 branchunless 15
0011 opt_invokebuiltin_delegate <builtin!_bi135/0>, 0 ( 135)[Li]
0014 leave ( 140)[Re]
0015 opt_invokebuiltin_delegate_leave <builtin!_bi137/0>, 0 ( 137)[Li]
0018 leave ( 140)[Re]
== disasm: #<ISeq:last@<internal:array>:166 (166,2)-(177,5)>
local table (size: 2, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] n@0<Opt=0> [ 1] unspecified@1
0000 putobject true ( 166)
0002 dup
0003 setlocal_WC_0 unspecified@1
0005 setlocal_WC_0 n@0
0007 getlocal_WC_0 unspecified@1 ( 171)[LiCa]
0009 branchunless 15
0011 opt_invokebuiltin_delegate <builtin!_bi172/0>, 0 ( 172)[Li]
0014 leave ( 177)[Re]
0015 opt_invokebuiltin_delegate_leave <builtin!_bi174/0>, 0 ( 174)[Li]
0018 leave ( 177)[Re]
== disasm: #<ISeq:fetch_values@<internal:array>:210 (210,2)-(213,5)>
local table (size: 2, argc: 0 [opts: 0, rest: 0, post: 0, block: 1, kw: -1@-1, kwrest: -1])
[ 2] indexes@0<Rest>[ 1] block@1<Block>
0000 getlocal_WC_0 indexes@0 ( 211)[LiCa]
0002 send <calldata!mid:map!, argc:0>, block in fetch_values
0005 pop
0006 getlocal_WC_0 indexes@0 ( 212)[Li]
0008 leave ( 213)[Re]
== disasm: #<ISeq:block in fetch_values@<internal:array>:211 (211,17)-(211,41)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] i@0<AmbiguousArg>
0000 putself ( 211)[LiBc]
0001 getlocal_WC_0 i@0
0003 getblockparamproxy block@1, 1
0006 send <calldata!mid:fetch, argc:1, ARGS_BLOCKARG|FCALL>, nil
0009 leave [Br]
== disasm: #<ISeq:block in <class:Array>@<internal:array>:215 (215,11)-(283,5)>
0000 putobject :each ( 216)[LiBc]
0002 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0004 branchunless 18
0006 putspecialobject 1 ( 217)[Li]
0008 putspecialobject 2
0010 putobject :each
0012 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0014 pop
0015 definemethod :each, each ( 219)[Li]
0018 putobject :map ( 234)[Li]
0020 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0022 branchunless 62
0024 putspecialobject 1 ( 235)[Li]
0026 putspecialobject 2
0028 putobject :map
0030 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0032 pop
0033 definemethod :map, map ( 237)[Li]
0036 putobject :collect ( 253)[Li]
0038 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0040 branchunless 62
0042 putspecialobject 1 ( 254)[Li]
0044 putspecialobject 2
0046 putobject :collect
0048 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0050 pop
0051 putspecialobject 1 ( 255)[Li]
0053 putspecialobject 2
0055 putobject :collect
0057 putobject :map
0059 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0061 pop
0062 putobject :select ( 259)[Li]
0064 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0066 branchunless 108
0068 putspecialobject 1 ( 260)[Li]
0070 putspecialobject 2
0072 putobject :select
0074 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0076 pop
0077 definemethod :select, select ( 262)[Li]
0080 putobject :filter ( 278)[Li]
0082 invokebuiltin <builtin!rb_builtin_basic_definition_p/1>
0084 branchunless 106
0086 putspecialobject 1 ( 279)[Li]
0088 putspecialobject 2
0090 putobject :filter
0092 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0094 pop
0095 putspecialobject 1 ( 280)[Li]
0097 putspecialobject 2
0099 putobject :filter
0101 putobject :select
0103 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0105 leave ( 283)[Br]
0106 putnil ( 280)
0107 leave ( 283)[Br]
0108 putnil ( 280)
0109 leave ( 283)[Br]
== disasm: #<ISeq:each@<internal:array>:219 (219,6)-(231,9)> INLINE_BLOCK C_TRACE
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] _i@0 [ 1] value@1
0000 putnil ( 222)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi223/0>, 0 ( 223)[Li]
0010 leave [Re]
0011 putobject_INT2FIX_0_ ( 225)[Li]
0012 setlocal_WC_0 _i@0
0014 putnil ( 226)[Li]
0015 setlocal_WC_0 value@1
0017 jump 28 ( 227)[Li]
0019 putnil
0020 pop
0021 jump 28
0023 getlocal_WC_0 value@1 ( 228)[Li]
0025 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0027 pop
0028 opt_invokebuiltin_delegate <builtin!_bi227/0>, 0 ( 227)
0031 branchif 23
0033 putnil
0034 pop
0035 putself ( 230)[Li]
0036 leave ( 231)[Re]
== disasm: #<ISeq:map@<internal:array>:237 (237,6)-(251,9)> INLINE_BLOCK C_TRACE
local table (size: 3, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] _i@0 [ 2] value@1 [ 1] result@2
0000 putnil ( 240)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi241/0>, 0 ( 241)[Li]
0010 leave [Re]
0011 putobject_INT2FIX_0_ ( 244)[Li]
0012 setlocal_WC_0 _i@0
0014 putnil ( 245)[Li]
0015 setlocal_WC_0 value@1
0017 opt_invokebuiltin_delegate <builtin!ary_sized_alloc/0>, 0( 246)[Li]
0020 setlocal_WC_0 result@2
0022 jump 37 ( 247)[Li]
0024 putnil
0025 pop
0026 jump 37
0028 getlocal_WC_0 result@2 ( 248)[Li]
0030 getlocal_WC_0 value@1
0032 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0034 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0036 pop
0037 opt_invokebuiltin_delegate <builtin!_bi247/0>, 0 ( 247)
0040 branchif 28
0042 putnil
0043 pop
0044 getlocal_WC_0 result@2 ( 250)[Li]
0046 leave ( 251)[Re]
== disasm: #<ISeq:select@<internal:array>:262 (262,6)-(276,9)> INLINE_BLOCK C_TRACE
local table (size: 3, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] _i@0 [ 2] value@1 [ 1] result@2
0000 putnil ( 265)[LiCa]
0001 defined yield, false, true
0005 branchif 11
0007 opt_invokebuiltin_delegate_leave <builtin!_bi266/0>, 0 ( 266)[Li]
0010 leave [Re]
0011 putobject_INT2FIX_0_ ( 269)[Li]
0012 setlocal_WC_0 _i@0
0014 putnil ( 270)[Li]
0015 setlocal_WC_0 value@1
0017 opt_invokebuiltin_delegate <builtin!ary_sized_alloc/0>, 0( 271)[Li]
0020 setlocal_WC_0 result@2
0022 jump 41 ( 272)[Li]
0024 putnil
0025 pop
0026 jump 41
0028 getlocal_WC_0 value@1 ( 273)[Li]
0030 invokeblock <calldata!argc:1, ARGS_SIMPLE>
0032 branchunless 41
0034 getlocal_WC_0 result@2
0036 getlocal_WC_0 value@1
0038 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0040 pop
0041 opt_invokebuiltin_delegate <builtin!_bi272/0>, 0 ( 272)
0044 branchif 28
0046 putnil
0047 pop
0048 getlocal_WC_0 result@2 ( 275)[Li]
0050 leave ( 276)[Re]
== disasm: #<ISeq:with_jit@<internal:jit_hook>:4 (4,10)-(12,5)>
== catch table
| catch type: rescue st: 0001 ed: 0014 sp: 0000 cont: 0016
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
| catch type: rescue st: 0024 ed: 0037 sp: 0000 cont: 0039
| == disasm: #<ISeq:defined guard in with_jit@<internal:jit_hook>:0 (0,0)-(-1,-1)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 putnil
| 0001 leave
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1])
[ 1] block@0<Block>
0000 putnil ( 6)[LiCa]
0001 putnil
0002 defined constant, :RubyVM, true
0006 branchunless 16
0008 opt_getconstant_path <ic:0 RubyVM>
0010 defined constant-from, :ZJIT, true
0014 swap
0015 pop
0016 branchunless 23
0018 opt_invokebuiltin_delegate <builtin!rb_zjit_option_enabled_p/0>, 0
0021 branchunless 23
0023 putnil ( 9)[Li]
0024 putnil
0025 defined constant, :RubyVM, true
0029 branchunless 39
0031 opt_getconstant_path <ic:1 RubyVM>
0033 defined constant-from, :YJIT, true
0037 swap
0038 pop
0039 branchunless 51
0041 opt_getconstant_path <ic:2 RubyVM::YJIT> ( 10)[Li]
0043 putobject :add_jit_hook
0045 getblockparam block@0, 0
0048 opt_send_without_block <calldata!mid:send, argc:2, ARGS_SIMPLE>
0050 leave ( 12)[Re]
0051 putnil ( 10)
0052 leave ( 12)[Re]
== disasm: #<ISeq:add_jit_hook@<internal:yjit>:274 (274,4)-(276,7)>
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] hook@0<Arg>
0000 getinstancevariable :@jit_hooks, <is:0> ( 275)[LiCa]
0003 getlocal_WC_0 hook@0
0005 opt_ltlt <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
0007 leave ( 276)[Re]
== disasm: #<ISeq:<internal:hash>@<internal:hash>:1 (1,0)-(40,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Hash, <class:Hash>, 0
0007 leave
== disasm: #<ISeq:<class:Hash>@<internal:hash>:1 (1,0)-(40,3)>
0000 definemethod :initialize, initialize ( 37)[LiCl]
0003 putobject :initialize
0005 leave ( 40)[En]
== disasm: #<ISeq:initialize@<internal:hash>:37 (37,2)-(39,5)>
local table (size: 5, argc: 0 [opts: 1, rest: -1, post: 0, block: 3, kw: 1@0, kwrest: -1])
[ 5] ifnone@0<Opt=0>[ 4] capacity@1 [ 3] ?@2 [ 2] block@3<Block>[ 1] ifnone_unset@4
0000 putobject true ( 37)[Li]
0002 dup
0003 setlocal_WC_0 ifnone_unset@4
0005 setlocal_WC_0 ifnone@0
0007 getlocal_WC_0 capacity@1 ( 38)[LiCa]
0009 getlocal_WC_0 ifnone_unset@4
0011 getlocal_WC_0 ifnone@0
0013 getblockparam block@3, 0
0016 invokebuiltin <builtin!rb_hash_init/4>
0018 leave ( 39)[Re]
== disasm: #<ISeq:<internal:symbol>@<internal:symbol>:1 (1,0)-(42,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Symbol, <class:Symbol>, 0
0007 leave
== disasm: #<ISeq:<class:Symbol>@<internal:symbol>:1 (1,0)-(42,3)>
0000 definemethod :to_s, to_s ( 10)[LiCl]
0003 putspecialobject 1 ( 15)[Li]
0005 putspecialobject 2
0007 putobject :id2name
0009 putobject :to_s
0011 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0013 pop
0014 definemethod :name, name ( 26)[Li]
0017 definemethod :to_sym, to_sym ( 37)[Li]
0020 putspecialobject 1 ( 41)[Li]
0022 putspecialobject 2
0024 putobject :intern
0026 putobject :to_sym
0028 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0030 leave ( 42)[En]
== disasm: #<ISeq:to_s@<internal:symbol>:10 (10,2)-(13,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi12/0>, 0 ( 12)[LiCa]
0003 leave ( 13)[Re]
== disasm: #<ISeq:name@<internal:symbol>:26 (26,2)-(29,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi28/0>, 0 ( 28)[LiCa]
0003 leave ( 29)[Re]
== disasm: #<ISeq:to_sym@<internal:symbol>:37 (37,2)-(39,5)>
0000 putself ( 38)[LiCa]
0001 leave ( 39)[Re]
== disasm: #<ISeq:<internal:timev>@<internal:timev>:261 (261,0)-(460,3)>
0000 putspecialobject 3 ( 261)[Li]
0002 putnil
0003 defineclass :Time, <class:Time>, 0
0007 leave
== disasm: #<ISeq:<class:Time>@<internal:timev>:261 (261,0)-(460,3)>
0000 putself ( 270)[LiCl]
0001 definesmethod :now, now
0004 putself ( 329)[Li]
0005 definesmethod :at, at
0008 definemethod :initialize, initialize ( 440)[Li]
0011 putobject :initialize
0013 leave ( 460)[En]
== disasm: #<ISeq:now@<internal:timev>:270 (270,2)-(272,5)>
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 2] in@0 [ 1] ?@1
0000 opt_invokebuiltin_delegate_leave <builtin!time_s_now/1>, 0 ( 271)[LiCa]
0003 leave ( 272)[Re]
== disasm: #<ISeq:at@<internal:timev>:329 (329,2)-(335,5)>
local table (size: 5, argc: 1 [opts: 2, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 5] time@0<Arg>[ 4] subsec@1<Opt=0>[ 3] unit@2<Opt=4>[ 2] in@3 [ 1] ?@4
0000 putobject false ( 329)
0002 setlocal_WC_0 subsec@1
0004 putobject :microsecond
0006 setlocal_WC_0 unit@2
0008 opt_invokebuiltin_delegate_leave <builtin!time_s_at/4>, 0 ( 333)[LiCa]
0011 leave ( 335)[Re]
== disasm: #<ISeq:initialize@<internal:timev>:440 (440,2)-(459,5)>
local table (size: 12, argc: 0 [opts: 7, rest: -1, post: 0, block: -1, kw: 2@0, kwrest: -1])
[12] year@0<Opt=0>[11] mon@1<Opt=7>[10] mday@2<Opt=14>[ 9] hour@3<Opt=17>[ 8] min@4<Opt=20>[ 7] sec@5<Opt=23>[ 6] zone@6<Opt=26>[ 5] in@7 [ 4] precision@8[ 3] ?@9 [ 2] now@10 [ 1] str@11
0000 putobject true ( 440)[Li]
0002 dup
0003 setlocal_WC_0 now@10
0005 setlocal_WC_0 year@0
0007 getlocal_WC_0 year@0
0009 setlocal_WC_0 str@11
0011 putnil
0012 setlocal_WC_0 mon@1
0014 putnil
0015 setlocal_WC_0 mday@2
0017 putnil
0018 setlocal_WC_0 hour@3
0020 putnil
0021 setlocal_WC_0 min@4
0023 putnil
0024 setlocal_WC_0 sec@5
0026 putnil
0027 setlocal_WC_0 zone@6
0029 getlocal_WC_0 zone@6 ( 442)[LiCa]
0031 branchunless 47
0033 getlocal_WC_0 in@7 ( 443)[Li]
0035 branchunless 51
0037 putself ( 444)[Li]
0038 opt_getconstant_path <ic:0 ArgumentError>
0040 putchilledstring "timezone argument given as positional and keyword arguments"
0042 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0044 pop
0045 jump 51 ( 442)
0047 getlocal_WC_0 in@7 ( 447)[Li]
0049 setlocal_WC_0 zone@6
0051 getlocal_WC_0 now@10 ( 450)[Li]
0053 branchunless 59
0055 opt_invokebuiltin_delegate_leave <builtin!time_init_now/1>, 6( 451)[Li]
0058 leave [Re]
0059 getlocal_WC_0 str@11 ( 454)[Li]
0061 branchunless 75
0063 getlocal_WC_0 str@11
0065 getlocal_WC_0 zone@6
0067 getlocal_WC_0 precision@8
0069 invokebuiltin <builtin!time_init_parse/3>
0071 branchunless 75
0073 putself ( 455)[Li]
0074 leave [Re]
0075 opt_invokebuiltin_delegate_leave <builtin!time_init_args/7>, 0( 458)[Li]
0078 leave ( 459)[Re]
== disasm: #<ISeq:<internal:thread_sync>@<internal:thread_sync>:1 (1,0)-(68,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Thread, <class:Thread>, 0
0007 leave
== disasm: #<ISeq:<class:Thread>@<internal:thread_sync>:1 (1,0)-(68,3)>
0000 putspecialobject 3 ( 2)[LiCl]
0002 putnil
0003 defineclass :Queue, <class:Queue>, 0
0007 pop
0008 putspecialobject 3 ( 24)[Li]
0010 putnil
0011 defineclass :SizedQueue, <class:SizedQueue>, 0
0015 leave ( 68)[En]
== disasm: #<ISeq:<class:Queue>@<internal:thread_sync>:2 (2,2)-(22,5)>
0000 definemethod :pop, pop ( 14)[LiCl]
0003 putself ( 20)[Li]
0004 putobject :deq
0006 putobject :pop
0008 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0010 pop
0011 putself ( 21)[Li]
0012 putobject :shift
0014 putobject :pop
0016 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0018 leave ( 22)[En]
== disasm: #<ISeq:pop@<internal:thread_sync>:14 (14,4)-(19,7)>
local table (size: 3, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] non_block@0<Opt=0>[ 2] timeout@1 [ 1] ?@2
0000 putobject false ( 14)
0002 setlocal_WC_0 non_block@0
0004 getlocal_WC_0 non_block@0 ( 15)[LiCa]
0006 branchunless 20
0008 getlocal_WC_0 timeout@1
0010 branchunless 20
0012 putself ( 16)[Li]
0013 opt_getconstant_path <ic:0 ArgumentError>
0015 putchilledstring "can't set a timeout if non_block is enabled"
0017 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0019 pop
0020 opt_invokebuiltin_delegate_leave <builtin!rb_queue_pop/2>, 0( 18)[Li]
0023 leave ( 19)[Re]
== disasm: #<ISeq:<class:SizedQueue>@<internal:thread_sync>:24 (24,2)-(67,5)>
0000 definemethod :pop, pop ( 36)[LiCl]
0003 putself ( 42)[Li]
0004 putobject :deq
0006 putobject :pop
0008 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0010 pop
0011 putself ( 43)[Li]
0012 putobject :shift
0014 putobject :pop
0016 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0018 pop
0019 definemethod :push, push ( 59)[Li]
0022 putself ( 65)[Li]
0023 putobject :enq
0025 putobject :push
0027 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0029 pop
0030 putself ( 66)[Li]
0031 putobject :<<
0033 putobject :push
0035 opt_send_without_block <calldata!mid:alias_method, argc:2, FCALL|ARGS_SIMPLE>
0037 leave ( 67)[En]
== disasm: #<ISeq:pop@<internal:thread_sync>:36 (36,4)-(41,7)>
local table (size: 3, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 3] non_block@0<Opt=0>[ 2] timeout@1 [ 1] ?@2
0000 putobject false ( 36)
0002 setlocal_WC_0 non_block@0
0004 getlocal_WC_0 non_block@0 ( 37)[LiCa]
0006 branchunless 20
0008 getlocal_WC_0 timeout@1
0010 branchunless 20
0012 putself ( 38)[Li]
0013 opt_getconstant_path <ic:0 ArgumentError>
0015 putchilledstring "can't set a timeout if non_block is enabled"
0017 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0019 pop
0020 opt_invokebuiltin_delegate_leave <builtin!rb_szqueue_pop/2>, 0( 40)[Li]
0023 leave ( 41)[Re]
== disasm: #<ISeq:push@<internal:thread_sync>:59 (59,4)-(64,7)>
local table (size: 4, argc: 1 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] object@0<Arg>[ 3] non_block@1<Opt=0>[ 2] timeout@2 [ 1] ?@3
0000 putobject false ( 59)
0002 setlocal_WC_0 non_block@1
0004 getlocal_WC_0 non_block@1 ( 60)[LiCa]
0006 branchunless 20
0008 getlocal_WC_0 timeout@2
0010 branchunless 20
0012 putself ( 61)[Li]
0013 opt_getconstant_path <ic:0 ArgumentError>
0015 putchilledstring "can't set a timeout if non_block is enabled"
0017 opt_send_without_block <calldata!mid:raise, argc:2, FCALL|ARGS_SIMPLE>
0019 pop
0020 opt_invokebuiltin_delegate_leave <builtin!rb_szqueue_push/3>, 0( 63)[Li]
0023 leave ( 64)[Re]
== disasm: #<ISeq:<internal:nilclass>@<internal:nilclass>:1 (1,0)-(63,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :NilClass, <class:NilClass>, 0
0007 leave
== disasm: #<ISeq:<class:NilClass>@<internal:nilclass>:1 (1,0)-(63,3)>
0000 definemethod :rationalize, rationalize ( 12)[LiCl]
0003 definemethod :to_c, to_c ( 24)[Li]
0006 definemethod :to_i, to_i ( 36)[Li]
0009 definemethod :to_f, to_f ( 48)[Li]
0012 definemethod :to_r, to_r ( 60)[Li]
0015 putobject :to_r
0017 leave ( 63)[En]
== disasm: #<ISeq:rationalize@<internal:nilclass>:12 (12,2)-(14,5)>
local table (size: 1, argc: 0 [opts: 1, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] eps@0<Opt=0>
0000 putnil ( 12)
0001 setlocal_WC_0 eps@0
0003 putobject (0/1) ( 13)[LiCa]
0005 leave ( 14)[Re]
== disasm: #<ISeq:to_c@<internal:nilclass>:24 (24,2)-(26,5)>
0000 putobject (0+0i) ( 25)[LiCa]
0002 leave ( 26)[Re]
== disasm: #<ISeq:to_i@<internal:nilclass>:36 (36,2)-(38,5)>
0000 putobject_INT2FIX_0_ ( 37)[LiCa]
0001 leave [Re]
0002 putnil
0003 leave ( 38)[Re]
== disasm: #<ISeq:to_f@<internal:nilclass>:48 (48,2)-(50,5)>
0000 putobject 0.0 ( 49)[LiCa]
0002 leave [Re]
0003 putnil
0004 leave ( 50)[Re]
== disasm: #<ISeq:to_r@<internal:nilclass>:60 (60,2)-(62,5)>
0000 putobject (0/1) ( 61)[LiCa]
0002 leave ( 62)[Re]
== disasm: #<ISeq:<internal:marshal>@<internal:marshal>:1 (1,0)-(40,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Marshal, <module:Marshal>, 2
0007 leave
== disasm: #<ISeq:<module:Marshal>@<internal:marshal>:1 (1,0)-(40,3)>
0000 putself ( 33)[LiCl]
0001 definesmethod :load, load
0004 putself ( 37)[Li]
0005 putnil
0006 defineclass :singletonclass, singleton class, 1
0010 leave ( 40)[En]
== disasm: #<ISeq:load@<internal:marshal>:33 (33,2)-(35,5)>
local table (size: 4, argc: 1 [opts: 1, rest: -1, post: 0, block: -1, kw: 1@0, kwrest: -1])
[ 4] source@0<Arg>[ 3] proc@1<Opt=0>[ 2] freeze@2 [ 1] ?@3
0000 putnil ( 33)
0001 setlocal_WC_0 proc@1
0003 opt_invokebuiltin_delegate_leave <builtin!marshal_load/3>, 0( 34)[LiCa]
0006 leave ( 35)[Re]
== disasm: #<ISeq:singleton class@<internal:marshal>:37 (37,2)-(39,5)>
0000 putspecialobject 1 ( 38)[Li]
0002 putspecialobject 2
0004 putobject :restore
0006 putobject :load
0008 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0010 leave
== disasm: #<ISeq:<internal:jit_undef>@<internal:jit_undef>:2 (2,0)-(4,3)>
0000 putspecialobject 3 ( 2)[Li]
0002 putnil
0003 defineclass :Module, <class:Module>, 0
0007 leave
== disasm: #<ISeq:<class:Module>@<internal:jit_undef>:2 (2,0)-(4,3)>
0000 putspecialobject 1 ( 3)[LiCl]
0002 putspecialobject 2
0004 putobject :with_jit
0006 opt_send_without_block <calldata!mid:core#undef_method, argc:2, ARGS_SIMPLE>
0008 leave ( 4)[En]
== disasm: #<ISeq:to_s@<internal:symbol>:10 (10,2)-(13,5)> LEAF SINGLE_NOARG_LEAF
0000 opt_invokebuiltin_delegate_leave <builtin!_bi12/0>, 0 ( 12)[LiCa]
0003 leave ( 13)[Re]
== disasm: #<ISeq:<internal:prelude>@<internal:prelude>:1 (1,0)-(43,3)>
0000 putspecialobject 3 ( 1)[Li]
0002 putnil
0003 defineclass :Binding, <class:Binding>, 0
0007 pop
0008 putspecialobject 3 ( 17)[Li]
0010 putnil
0011 defineclass :Kernel, <module:Kernel>, 2
0015 pop
0016 putspecialobject 3 ( 31)[Li]
0018 putnil
0019 defineclass :Enumerable, <module:Enumerable>, 2
0023 leave
== disasm: #<ISeq:<class:Binding>@<internal:prelude>:1 (1,0)-(15,3)>
0000 definemethod :irb, irb ( 3)[LiCl]
0003 putspecialobject 1 ( 14)[Li]
0005 putspecialobject 2
0007 putobject :irb
0009 putobject :irb
0011 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0013 leave ( 15)[En]
== disasm: #<ISeq:irb@<internal:prelude>:3 (3,2)-(11,5)>
== catch table
| catch type: rescue st: 0000 ed: 0005 sp: 0000 cont: 0006
| == disasm: #<ISeq:rescue in irb@<internal:prelude>:6 (6,4)-(8,19)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 6)
| 0002 opt_getconstant_path <ic:0 LoadError>
| 0004 checkmatch 3
| 0006 branchif 16
| 0008 getlocal_WC_0 "$!"@0
| 0010 opt_getconstant_path <ic:1 Gem::LoadError>
| 0012 checkmatch 3
| 0014 branchunless 29
| 0016 opt_getconstant_path <ic:2 Gem::BUNDLED_GEMS> ( 7)[LiRs]
| 0018 putchilledstring "irb"
| 0020 opt_send_without_block <calldata!mid:force_activate, argc:1, ARGS_SIMPLE>
| 0022 pop
| 0023 putself ( 8)[Li]
| 0024 putchilledstring "irb"
| 0026 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
| 0028 leave ( 6)
| 0029 getlocal_WC_0 "$!"@0
| 0031 throw 0
| catch type: retry st: 0005 ed: 0006 sp: 0000 cont: 0000
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 5)[LiCa]
0001 putchilledstring "irb"
0003 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0005 nop ( 4)
0006 pop
0007 putself ( 10)[Li]
0008 getlocal_WC_0 "..."@0
0010 sendforward <calldata!mid:irb, argc:0, FCALL|FORWARDING>, nil
0013 leave ( 11)[Re]
== disasm: #<ISeq:<module:Kernel>@<internal:prelude>:17 (17,0)-(29,3)>
0000 definemethod :pp, pp ( 19)[LiCl]
0003 putspecialobject 1 ( 25)[Li]
0005 putspecialobject 2
0007 putobject :pp
0009 putobject :pp
0011 opt_send_without_block <calldata!mid:core#set_method_alias, argc:3, ARGS_SIMPLE>
0013 pop
0014 putself ( 27)[Li]
0015 putobject :pp
0017 opt_send_without_block <calldata!mid:private, argc:1, FCALL|ARGS_SIMPLE>
0019 leave ( 29)[En]
== disasm: #<ISeq:pp@<internal:prelude>:19 (19,2)-(22,5)>
local table (size: 1, argc: 0 [opts: 0, rest: 0, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] objs@0<Rest>
0000 putself ( 20)[LiCa]
0001 putchilledstring "pp"
0003 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0005 pop
0006 putself ( 21)[Li]
0007 getlocal_WC_0 objs@0
0009 splatarray false
0011 opt_send_without_block <calldata!mid:pp, argc:1, ARGS_SPLAT|FCALL>
0013 leave ( 22)[Re]
== disasm: #<ISeq:<module:Enumerable>@<internal:prelude>:31 (31,0)-(43,3)>
0000 definemethod :to_set, to_set ( 34)[LiCl]
0003 putobject :to_set
0005 leave ( 43)[En]
== disasm: #<ISeq:to_set@<internal:prelude>:34 (34,2)-(42,5)>
local table (size: 3, argc: 0 [opts: 0, rest: 0, post: 0, block: 1, kw: -1@-1, kwrest: -1])
[ 3] args@0<Rest>[ 2] block@1<Block>[ 1] klass@2
0000 getlocal_WC_0 args@0 ( 35)[LiCa]
0002 opt_empty_p <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
0004 branchunless 10
0006 opt_getconstant_path <ic:0 Set> ( 36)[Li]
0008 jump 21 ( 35)
0010 putself ( 38)[Li]
0011 putchilledstring "passing arguments to Enumerable#to_set is deprecated"
0013 putobject_INT2FIX_1_
0014 opt_send_without_block <calldata!mid:warn, argc:2, kw:[uplevel], FCALL|KWARG>
0016 pop
0017 getlocal_WC_0 args@0 ( 39)[Li]
0019 opt_send_without_block <calldata!mid:shift, argc:0, ARGS_SIMPLE>
0021 setlocal_WC_0 klass@2 ( 35)
0023 getlocal_WC_0 klass@2 ( 41)[Li]
0025 putself
0026 getlocal_WC_0 args@0
0028 splatarray false
0030 getblockparamproxy block@1, 0
0033 send <calldata!mid:new, argc:2, ARGS_SPLAT|ARGS_BLOCKARG>, nil
0036 leave ( 42)[Re]
== disasm: #<ISeq:<internal:gem_prelude>@<internal:gem_prelude>:1 (1,0)-(27,30)>
== catch table
| catch type: rescue st: 0007 ed: 0012 sp: 0000 cont: 0019
| == disasm: #<ISeq:rescue in <internal:gem_prelude>@<internal:gem_prelude>:3 (3,0)-(6,36)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 3)
| 0002 opt_getconstant_path <ic:0 LoadError>
| 0004 checkmatch 3
| 0006 branchunless 32
| 0008 getlocal_WC_0 "$!"@0[Rs]
| 0010 setlocal_WC_1 e@0
| 0012 getlocal_WC_1 e@0 ( 4)[Li]
| 0014 opt_send_without_block <calldata!mid:path, argc:0, ARGS_SIMPLE>
| 0016 putchilledstring "rubygems"
| 0018 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
| 0020 branchif 26
| 0022 putself
| 0023 opt_send_without_block <calldata!mid:raise, argc:0, FCALL|VCALL|ARGS_SIMPLE>
| 0025 pop
| 0026 putself ( 6)[Li]
| 0027 putchilledstring "`RubyGems' were not loaded."
| 0029 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>
| 0031 leave ( 3)
| 0032 getlocal_WC_0 "$!"@0
| 0034 throw 0
| catch type: retry st: 0012 ed: 0019 sp: 0000 cont: 0007
| catch type: rescue st: 0027 ed: 0032 sp: 0000 cont: 0033
| == disasm: #<ISeq:rescue in <internal:gem_prelude>@<internal:gem_prelude>:13 (13,0)-(14,42)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 13)
| 0002 opt_getconstant_path <ic:0 LoadError>
| 0004 checkmatch 3
| 0006 branchunless 14
| 0008 putself ( 14)[LiRs]
| 0009 putchilledstring "`error_highlight' was not loaded."
| 0011 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>
| 0013 leave ( 13)
| 0014 getlocal_WC_0 "$!"@0
| 0016 throw 0
| catch type: retry st: 0032 ed: 0033 sp: 0000 cont: 0027
| catch type: rescue st: 0041 ed: 0046 sp: 0000 cont: 0047
| == disasm: #<ISeq:rescue in <internal:gem_prelude>@<internal:gem_prelude>:19 (19,0)-(20,39)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 19)
| 0002 opt_getconstant_path <ic:0 LoadError>
| 0004 checkmatch 3
| 0006 branchunless 14
| 0008 putself ( 20)[LiRs]
| 0009 putchilledstring "`did_you_mean' was not loaded."
| 0011 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>
| 0013 leave ( 19)
| 0014 getlocal_WC_0 "$!"@0
| 0016 throw 0
| catch type: retry st: 0046 ed: 0047 sp: 0000 cont: 0041
| catch type: rescue st: 0055 ed: 0060 sp: 0000 cont: 0061
| == disasm: #<ISeq:rescue in <internal:gem_prelude>@<internal:gem_prelude>:25 (25,0)-(26,41)>
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] "$!"@0
| 0000 getlocal_WC_0 "$!"@0 ( 25)
| 0002 opt_getconstant_path <ic:0 LoadError>
| 0004 checkmatch 3
| 0006 branchunless 14
| 0008 putself ( 26)[LiRs]
| 0009 putchilledstring "`syntax_suggest' was not loaded."
| 0011 opt_send_without_block <calldata!mid:warn, argc:1, FCALL|ARGS_SIMPLE>
| 0013 leave ( 25)
| 0014 getlocal_WC_0 "$!"@0
| 0016 throw 0
| catch type: retry st: 0060 ed: 0061 sp: 0000 cont: 0055
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] e@0
0000 putnil ( 9)[Li]
0001 defined constant, :Gem, true
0005 branchunless 20
0007 putself ( 2)[Li]
0008 putchilledstring "rubygems"
0010 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0012 putself ( 8)[Li]
0013 putchilledstring "bundled_gems"
0015 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0017 pop
0018 nop ( 1)
0019 pop
0020 putnil ( 15)[Li]
0021 defined constant, :ErrorHighlight, true
0025 branchunless 34
0027 putself ( 12)[Li]
0028 putchilledstring "error_highlight"
0030 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0032 nop ( 11)
0033 pop
0034 putnil ( 21)[Li]
0035 defined constant, :DidYouMean, true
0039 branchunless 48
0041 putself ( 18)[Li]
0042 putchilledstring "did_you_mean"
0044 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0046 nop ( 17)
0047 pop
0048 putnil ( 27)[Li]
0049 defined constant, :SyntaxSuggest, true
0053 branchunless 62
0055 putself ( 24)[Li]
0056 putchilledstring "syntax_suggest/core_ext"
0058 opt_send_without_block <calldata!mid:require, argc:1, FCALL|ARGS_SIMPLE>
0060 nop ( 23)
0061 leave ( 24)
0062 putnil
0063 leave
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,12)>
0000 definemethod :x, x ( 1)[Li]
0003 putself
0004 opt_send_without_block <calldata!mid:x, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0006 leave
== disasm: #<ISeq:x@-e:1 (1,0)-(1,9)>
0000 putobject_INT2FIX_1_ ( 1)[Ca]
0001 leave [Re]
== disasm: #<ISeq:x@-e:1 (1,0)-(1,9)>
0000 putobject_INT2FIX_1_ ( 1)[Ca]
0001 leave [Re]
diff --git a/vm.c b/vm.c
index 3281fad018..5810c3a8db 100644
--- a/vm.c
+++ b/vm.c
@@ -495,6 +495,11 @@ jit_compile(rb_execution_context_t *ec)
const rb_iseq_t *iseq = ec->cfp->iseq;
struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
+ if(iseq && getenv("RUBY_DUMP_ALL")){
+ rb_io_write(rb_stdout, rb_iseq_disasm((const rb_iseq_t *)iseq));
+ rb_io_flush(rb_stdout);
+ }
+
#if USE_ZJIT
if (body->jit_entry == NULL && rb_zjit_enabled_p) {
body->jit_entry_calls++;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment