debase-ruby_core_source 0.10.11 → 0.10.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/addr2line.h +0 -0
  3. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/builtin.h +0 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/build_assert/build_assert.h +0 -0
  5. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/check_type/check_type.h +0 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/container_of/container_of.h +0 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/list/list.h +0 -0
  8. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/str/str.h +0 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/constant.h +0 -0
  10. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/debug_counter.h +38 -4
  11. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/dln.h +0 -0
  12. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/encindex.h +0 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/eval_intern.h +16 -5
  14. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/gc.h +0 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/hrtime.h +0 -0
  16. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/id.h +0 -0
  17. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/id_table.h +0 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/insns.inc +0 -0
  19. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/insns_info.inc +93 -89
  20. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal.h +0 -0
  21. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/array.h +5 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/bignum.h +0 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/bits.h +0 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/class.h +7 -1
  25. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compar.h +0 -0
  26. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compile.h +0 -0
  27. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compilers.h +0 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/complex.h +0 -0
  29. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/cont.h +0 -0
  30. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/dir.h +0 -0
  31. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enc.h +0 -0
  32. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/encoding.h +0 -0
  33. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enum.h +0 -0
  34. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enumerator.h +0 -0
  35. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/error.h +0 -7
  36. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/eval.h +0 -0
  37. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/file.h +0 -0
  38. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/fixnum.h +1 -1
  39. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/gc.h +9 -2
  40. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/hash.h +2 -1
  41. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/imemo.h +0 -0
  42. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/inits.h +0 -0
  43. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/io.h +0 -0
  44. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/load.h +0 -0
  45. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/loadpath.h +0 -0
  46. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/math.h +0 -0
  47. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/missing.h +0 -0
  48. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/numeric.h +4 -1
  49. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/object.h +0 -0
  50. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/parse.h +0 -0
  51. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/proc.h +1 -0
  52. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/process.h +0 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/random.h +0 -0
  54. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/range.h +4 -0
  55. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/rational.h +2 -0
  56. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/re.h +0 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/sanitizers.h +0 -0
  58. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/scheduler.h +9 -0
  59. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/serial.h +0 -0
  60. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/signal.h +0 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/static_assert.h +0 -0
  62. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/string.h +5 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/struct.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/symbol.h +0 -0
  65. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/thread.h +0 -6
  66. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/time.h +0 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/transcode.h +0 -0
  68. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/util.h +0 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/variable.h +1 -0
  70. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/vm.h +7 -6
  71. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/warnings.h +0 -0
  72. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/iseq.h +1 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/known_errors.inc +0 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/method.h +0 -0
  75. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/mjit.h +37 -14
  76. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/mjit_compile.inc +715 -557
  77. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/node.h +2 -2
  78. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/node_name.inc +0 -0
  79. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
  80. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/optinsn.inc +0 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/optunifs.inc +0 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/parse.h +0 -0
  83. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/probes_helper.h +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1/ractor.h → ruby-3.0.0-p0/ractor_core.h} +97 -25
  85. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regenc.h +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regint.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regparse.h +0 -0
  88. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
  89. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ruby_assert.h +0 -0
  90. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
  91. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/siphash.h +0 -0
  92. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/symbol.h +0 -0
  93. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/thread_pthread.h +23 -14
  94. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/thread_win32.h +5 -10
  95. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/timev.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/transcode_data.h +0 -0
  97. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/transient_heap.h +4 -0
  98. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/variable.h +2 -1
  99. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/version.h +3 -3
  100. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm.inc +94 -99
  101. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_call_iseq_optimized.inc +48 -48
  102. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_callinfo.h +2 -3
  103. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_core.h +96 -25
  104. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_debug.h +0 -0
  105. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_exec.h +0 -0
  106. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_insnhelper.h +1 -4
  107. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_opts.h +0 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_sync.h +44 -5
  109. data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vmtc.inc +0 -0
  110. data/lib/debase/ruby_core_source/version.rb +1 -1
  111. metadata +111 -113
  112. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/mjit.h +0 -29
  113. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ractor_pub.h +0 -50
  114. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/revision.h +0 -2
  115. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ruby_atomic.h +0 -236
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ceae5c13303274dcc467ae3a1ac6126b74185770efdbb0eabd5f0ec7ebbc3c5
4
- data.tar.gz: 56dc422dc0e6298801d0b39aab1d4aa04e352d4ad22ef611a5b3639aabdf3a02
3
+ metadata.gz: 4cca7fe3e3467d72366c7475eb88f6dd01592f4838a9abd706c0339e972dd87a
4
+ data.tar.gz: 2edfd0a02f432ea51fd774cd7812a92e798fc2475b342b9146e776f6b8607958
5
5
  SHA512:
6
- metadata.gz: 7e659eca27f8fb48f22b8df543a18f6ded120b2b442a9657d626a03bc74b5417139150b2778eec084cfc66307652f7cb4f5e30c62110ea1b80ea86cdbf15fcba
7
- data.tar.gz: '08343a8697214c2b0c55c8c543b54b1c9d58e5a68c59cdfbf150813ecbb67897be090e649d42fa80efaf365f112796b353e1c8335dd758066467160b3adab46a'
6
+ metadata.gz: aefe2293ad096d7740a30b7629ac0bd8023c339acb715e646fee3c118ee7edf66931ece0fece016d5d41580141ad7b67a4f59c6533858ef5e8a856d330769b51
7
+ data.tar.gz: 6070714baf4cf6cf5702db61a88c1718fc291af3a407411dc5b11fff3987ef1279d5042d2ed4874e3e7ec8c169e01b3b62307c3c43df465d5c6c8abe3d2ff583
@@ -18,6 +18,12 @@
18
18
  RB_DEBUG_COUNTER(mc_inline_hit) // IMC hit
19
19
  RB_DEBUG_COUNTER(mc_inline_miss_klass) // IMC miss by different class
20
20
  RB_DEBUG_COUNTER(mc_inline_miss_invalidated) // IMC miss by invalidated ME
21
+ RB_DEBUG_COUNTER(mc_inline_miss_empty) // IMC miss because prev is empty slot
22
+ RB_DEBUG_COUNTER(mc_inline_miss_same_cc) // IMC miss, but same CC
23
+ RB_DEBUG_COUNTER(mc_inline_miss_same_cme) // IMC miss, but same CME
24
+ RB_DEBUG_COUNTER(mc_inline_miss_same_def) // IMC miss, but same definition
25
+ RB_DEBUG_COUNTER(mc_inline_miss_diff) // IMC miss, different methods
26
+
21
27
  RB_DEBUG_COUNTER(mc_cme_complement) // number of acquiring complement CME
22
28
  RB_DEBUG_COUNTER(mc_cme_complement_hit) // number of cache hit for complemented CME
23
29
 
@@ -34,7 +40,8 @@ RB_DEBUG_COUNTER(ci_runtime) // creating temporary CI
34
40
  // callcache
35
41
  RB_DEBUG_COUNTER(cc_new) // number of CC
36
42
  RB_DEBUG_COUNTER(cc_temp) // dummy CC (stack-allocated)
37
- RB_DEBUG_COUNTER(cc_found_ccs) // count for CC lookup success in CCS
43
+ RB_DEBUG_COUNTER(cc_found_in_ccs) // count for CC lookup success in CCS
44
+ RB_DEBUG_COUNTER(cc_not_found_in_ccs) // count for CC lookup success in CCS
38
45
 
39
46
  RB_DEBUG_COUNTER(cc_ent_invalidate) // count for invalidating cc (cc->klass = 0)
40
47
  RB_DEBUG_COUNTER(cc_cme_invalidate) // count for invalidating CME
@@ -45,10 +52,16 @@ RB_DEBUG_COUNTER(cc_invalidate_leaf_callable) // complime
45
52
  RB_DEBUG_COUNTER(cc_invalidate_tree) // count for invalidating klass if klass has sublcasses
46
53
  RB_DEBUG_COUNTER(cc_invalidate_tree_cme) // cme if cme is found in this class or superclasses
47
54
  RB_DEBUG_COUNTER(cc_invalidate_tree_callable) // complimented cache (subclasses)
55
+ RB_DEBUG_COUNTER(cc_invalidate_negative) // count for invalidating negative cache
48
56
 
49
57
  RB_DEBUG_COUNTER(ccs_free) // count for free'ing ccs
50
58
  RB_DEBUG_COUNTER(ccs_maxlen) // maximum length of ccs
51
- RB_DEBUG_COUNTER(ccs_found) // count for finding corresponding ccs on method lookup
59
+ RB_DEBUG_COUNTER(ccs_found) // count for finding corresponding ccs on method lookup
60
+ RB_DEBUG_COUNTER(ccs_not_found) // count for not found corresponding ccs on method lookup
61
+
62
+ // vm_eval.c
63
+ RB_DEBUG_COUNTER(call0_public)
64
+ RB_DEBUG_COUNTER(call0_other)
52
65
 
53
66
  // iseq
54
67
  RB_DEBUG_COUNTER(iseq_num) // number of total created iseq
@@ -123,7 +136,7 @@ RB_DEBUG_COUNTER(ivar_set_ic_hit)
123
136
  RB_DEBUG_COUNTER(ivar_set_ic_miss)
124
137
  RB_DEBUG_COUNTER(ivar_set_ic_miss_serial)
125
138
  RB_DEBUG_COUNTER(ivar_set_ic_miss_unset)
126
- RB_DEBUG_COUNTER(ivar_set_ic_miss_oorange)
139
+ RB_DEBUG_COUNTER(ivar_set_ic_miss_iv_hit)
127
140
  RB_DEBUG_COUNTER(ivar_set_ic_miss_noobject)
128
141
  RB_DEBUG_COUNTER(ivar_get_base)
129
142
  RB_DEBUG_COUNTER(ivar_set_base)
@@ -161,6 +174,12 @@ RB_DEBUG_COUNTER(gc_major_shady)
161
174
  RB_DEBUG_COUNTER(gc_major_force)
162
175
  RB_DEBUG_COUNTER(gc_major_oldmalloc)
163
176
 
177
+ RB_DEBUG_COUNTER(gc_enter_start)
178
+ RB_DEBUG_COUNTER(gc_enter_mark_continue)
179
+ RB_DEBUG_COUNTER(gc_enter_sweep_continue)
180
+ RB_DEBUG_COUNTER(gc_enter_rest)
181
+ RB_DEBUG_COUNTER(gc_enter_finalizer)
182
+
164
183
  RB_DEBUG_COUNTER(gc_isptr_trial)
165
184
  RB_DEBUG_COUNTER(gc_isptr_range)
166
185
  RB_DEBUG_COUNTER(gc_isptr_align)
@@ -309,6 +328,13 @@ RB_DEBUG_COUNTER(theap_alloc)
309
328
  RB_DEBUG_COUNTER(theap_alloc_fail)
310
329
  RB_DEBUG_COUNTER(theap_evacuate)
311
330
 
331
+ // VM sync
332
+ RB_DEBUG_COUNTER(vm_sync_lock)
333
+ RB_DEBUG_COUNTER(vm_sync_lock_enter)
334
+ RB_DEBUG_COUNTER(vm_sync_lock_enter_nb)
335
+ RB_DEBUG_COUNTER(vm_sync_lock_enter_cr)
336
+ RB_DEBUG_COUNTER(vm_sync_barrier)
337
+
312
338
  /* mjit_exec() counts */
313
339
  RB_DEBUG_COUNTER(mjit_exec)
314
340
  RB_DEBUG_COUNTER(mjit_exec_not_added)
@@ -371,12 +397,19 @@ enum rb_debug_counter_type {
371
397
 
372
398
  #if USE_DEBUG_COUNTER
373
399
  extern size_t rb_debug_counter[];
400
+ RUBY_EXTERN struct rb_ractor_struct *ruby_single_main_ractor;
401
+ RUBY_EXTERN void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
374
402
 
375
403
  inline static int
376
404
  rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
377
405
  {
378
406
  if (cond) {
379
- rb_debug_counter[(int)type] += add;
407
+ if (ruby_single_main_ractor != NULL) {
408
+ rb_debug_counter[(int)type] += add;
409
+ }
410
+ else {
411
+ rb_debug_counter_add_atomic(type, add);
412
+ }
380
413
  }
381
414
  return cond;
382
415
  }
@@ -384,6 +417,7 @@ rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
384
417
  inline static int
385
418
  rb_debug_counter_max(enum rb_debug_counter_type type, unsigned int num)
386
419
  {
420
+ // TODO: sync
387
421
  if (rb_debug_counter[(int)type] < num) {
388
422
  rb_debug_counter[(int)type] = num;
389
423
  return 1;
@@ -132,7 +132,8 @@ LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *);
132
132
  struct rb_vm_tag _tag; \
133
133
  _tag.state = TAG_NONE; \
134
134
  _tag.tag = Qundef; \
135
- _tag.prev = _ec->tag;
135
+ _tag.prev = _ec->tag; \
136
+ _tag.lock_rec = rb_ec_vm_lock_rec(_ec); \
136
137
 
137
138
  #define EC_POP_TAG() \
138
139
  _ec->tag = _tag.prev; \
@@ -157,12 +158,23 @@ LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *);
157
158
  # define VAR_NOCLOBBERED(var) var
158
159
  #endif
159
160
 
161
+ static inline void
162
+ rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec)
163
+ {
164
+ unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec);
165
+ if (current_lock_rec != recorded_lock_rec) {
166
+ rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec);
167
+ }
168
+ }
169
+
160
170
  /* clear ec->tag->state, and return the value */
161
171
  static inline int
162
172
  rb_ec_tag_state(const rb_execution_context_t *ec)
163
173
  {
164
- enum ruby_tag_type state = ec->tag->state;
165
- ec->tag->state = TAG_NONE;
174
+ struct rb_vm_tag *tag = ec->tag;
175
+ enum ruby_tag_type state = tag->state;
176
+ tag->state = TAG_NONE;
177
+ rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
166
178
  return state;
167
179
  }
168
180
 
@@ -281,13 +293,12 @@ rb_cref_t *rb_vm_cref(void);
281
293
  rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
282
294
  VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
283
295
  void rb_vm_set_progname(VALUE filename);
284
- void rb_thread_terminate_all(void);
285
296
  VALUE rb_vm_cbase(void);
286
297
 
287
298
  /* vm_backtrace.c */
288
299
  VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
289
300
  VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
290
- VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n);
301
+ VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, bool skip_internal);
291
302
 
292
303
  #ifndef CharNext /* defined as CharNext[AW] on Windows. */
293
304
  # ifdef HAVE_MBLEN
@@ -403,6 +403,10 @@ insn_op_type(VALUE i, long j)
403
403
 
404
404
  #include "iseq.h"
405
405
 
406
+ // This is used to tell MJIT that this insn would be leaf if CHECK_INTS didn't exist.
407
+ // It should be used only when RUBY_VM_CHECK_INTS is directly written in insns.def.
408
+ static bool leafness_of_check_ints = false;
409
+
406
410
  static bool
407
411
  leafness_of_defined(rb_num_t op_type)
408
412
  {
@@ -441,7 +445,7 @@ leafness_of_checkmatch(rb_num_t flag)
441
445
  return false;
442
446
  }
443
447
  }
444
- #line 445 "insns_info.inc"
448
+ #line 449 "insns_info.inc"
445
449
 
446
450
  #line 10 "tool/ruby_vm/views/_sp_inc_helpers.erb"
447
451
 
@@ -471,7 +475,7 @@ sp_inc_of_invokeblock(const struct rb_callinfo *ci)
471
475
  * instructions, except that it does not pop receiver. */
472
476
  return sp_inc_of_sendish(ci) + 1;
473
477
  }
474
- #line 475 "insns_info.inc"
478
+ #line 479 "insns_info.inc"
475
479
 
476
480
  #ifndef RUBY_VM_EXEC_H
477
481
  /* can't #include "vm_exec.h" here... */
@@ -1938,7 +1942,7 @@ attr_leaf_getspecial(
1938
1942
  return
1939
1943
  #line 192 "insns.def"
1940
1944
  (type == 0) ? true : false;
1941
- #line 1942 "insns_info.inc"
1945
+ #line 1946 "insns_info.inc"
1942
1946
  }
1943
1947
 
1944
1948
  /* attr const char* name @ getspecial(key, type)()(val) */
@@ -2094,7 +2098,7 @@ attr_leaf_getinstancevariable(
2094
2098
  return
2095
2099
  #line 214 "insns.def"
2096
2100
  false;
2097
- #line 2098 "insns_info.inc"
2101
+ #line 2102 "insns_info.inc"
2098
2102
  }
2099
2103
 
2100
2104
  /* attr const char* name @ getinstancevariable(id, ic)()(val) */
@@ -2187,7 +2191,7 @@ attr_leaf_setinstancevariable(
2187
2191
  return
2188
2192
  #line 225 "insns.def"
2189
2193
  false;
2190
- #line 2191 "insns_info.inc"
2194
+ #line 2195 "insns_info.inc"
2191
2195
  }
2192
2196
 
2193
2197
  /* attr const char* name @ setinstancevariable(id, ic)(val)() */
@@ -2271,7 +2275,7 @@ attr_leaf_getclassvariable(MAYBE_UNUSED(ID id))
2271
2275
  return
2272
2276
  #line 237 "insns.def"
2273
2277
  false;
2274
- #line 2275 "insns_info.inc"
2278
+ #line 2279 "insns_info.inc"
2275
2279
  }
2276
2280
 
2277
2281
  /* attr const char* name @ getclassvariable(id)()(val) */
@@ -2337,7 +2341,7 @@ attr_leaf_setclassvariable(MAYBE_UNUSED(ID id))
2337
2341
  return
2338
2342
  #line 249 "insns.def"
2339
2343
  false;
2340
- #line 2341 "insns_info.inc"
2344
+ #line 2345 "insns_info.inc"
2341
2345
  }
2342
2346
 
2343
2347
  /* attr const char* name @ setclassvariable(id)(val)() */
@@ -2403,7 +2407,7 @@ attr_leaf_getconstant(MAYBE_UNUSED(ID id))
2403
2407
  return
2404
2408
  #line 265 "insns.def"
2405
2409
  false;
2406
- #line 2407 "insns_info.inc"
2410
+ #line 2411 "insns_info.inc"
2407
2411
  }
2408
2412
 
2409
2413
  /* attr const char* name @ getconstant(id)(klass, allow_nil)(val) */
@@ -2469,7 +2473,7 @@ attr_leaf_setconstant(MAYBE_UNUSED(ID id))
2469
2473
  return
2470
2474
  #line 281 "insns.def"
2471
2475
  false;
2472
- #line 2473 "insns_info.inc"
2476
+ #line 2477 "insns_info.inc"
2473
2477
  }
2474
2478
 
2475
2479
  /* attr const char* name @ setconstant(id)(val, cbase)() */
@@ -2535,7 +2539,7 @@ attr_leaf_getglobal(MAYBE_UNUSED(ID gid))
2535
2539
  return
2536
2540
  #line 294 "insns.def"
2537
2541
  false;
2538
- #line 2539 "insns_info.inc"
2542
+ #line 2543 "insns_info.inc"
2539
2543
  }
2540
2544
 
2541
2545
  /* attr const char* name @ getglobal(gid)()(val) */
@@ -2601,7 +2605,7 @@ attr_leaf_setglobal(MAYBE_UNUSED(ID gid))
2601
2605
  return
2602
2606
  #line 305 "insns.def"
2603
2607
  false;
2604
- #line 2605 "insns_info.inc"
2608
+ #line 2609 "insns_info.inc"
2605
2609
  }
2606
2610
 
2607
2611
  /* attr const char* name @ setglobal(gid)(val)() */
@@ -2982,7 +2986,7 @@ attr_leaf_concatstrings(MAYBE_UNUSED(rb_num_t num))
2982
2986
  return
2983
2987
  #line 377 "insns.def"
2984
2988
  false;
2985
- #line 2986 "insns_info.inc"
2989
+ #line 2990 "insns_info.inc"
2986
2990
  }
2987
2991
 
2988
2992
  /* attr const char* name @ concatstrings(num)(...)(val) */
@@ -3020,7 +3024,7 @@ attr_sp_inc_concatstrings(MAYBE_UNUSED(rb_num_t num))
3020
3024
  return
3021
3025
  #line 378 "insns.def"
3022
3026
  1 - (rb_snum_t)num;
3023
- #line 3024 "insns_info.inc"
3027
+ #line 3028 "insns_info.inc"
3024
3028
  }
3025
3029
 
3026
3030
  /* attr rb_num_t width @ concatstrings(num)(...)(val) */
@@ -3123,7 +3127,7 @@ attr_leaf_toregexp(
3123
3127
  return
3124
3128
  #line 403 "insns.def"
3125
3129
  false;
3126
- #line 3127 "insns_info.inc"
3130
+ #line 3131 "insns_info.inc"
3127
3131
  }
3128
3132
 
3129
3133
  /* attr const char* name @ toregexp(opt, cnt)(...)(val) */
@@ -3176,7 +3180,7 @@ attr_sp_inc_toregexp(
3176
3180
  return
3177
3181
  #line 404 "insns.def"
3178
3182
  1 - (rb_snum_t)cnt;
3179
- #line 3180 "insns_info.inc"
3183
+ #line 3184 "insns_info.inc"
3180
3184
  }
3181
3185
 
3182
3186
  /* attr rb_num_t width @ toregexp(opt, cnt)(...)(val) */
@@ -3308,7 +3312,7 @@ attr_sp_inc_newarray(MAYBE_UNUSED(rb_num_t num))
3308
3312
  return
3309
3313
  #line 427 "insns.def"
3310
3314
  1 - (rb_snum_t)num;
3311
- #line 3312 "insns_info.inc"
3315
+ #line 3316 "insns_info.inc"
3312
3316
  }
3313
3317
 
3314
3318
  /* attr rb_num_t width @ newarray(num)(...)(val) */
@@ -3374,7 +3378,7 @@ attr_sp_inc_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3374
3378
  return
3375
3379
  #line 442 "insns.def"
3376
3380
  1 - (rb_snum_t)num;
3377
- #line 3378 "insns_info.inc"
3381
+ #line 3382 "insns_info.inc"
3378
3382
  }
3379
3383
 
3380
3384
  /* attr rb_num_t width @ newarraykwsplat(num)(...)(val) */
@@ -3540,7 +3544,7 @@ attr_leaf_expandarray(
3540
3544
  return
3541
3545
  #line 488 "insns.def"
3542
3546
  false;
3543
- #line 3544 "insns_info.inc"
3547
+ #line 3548 "insns_info.inc"
3544
3548
  }
3545
3549
 
3546
3550
  /* attr const char* name @ expandarray(num, flag)(..., ary)(...) */
@@ -3593,7 +3597,7 @@ attr_sp_inc_expandarray(
3593
3597
  return
3594
3598
  #line 489 "insns.def"
3595
3599
  (rb_snum_t)num - 1 + (flag & 1 ? 1 : 0);
3596
- #line 3597 "insns_info.inc"
3600
+ #line 3601 "insns_info.inc"
3597
3601
  }
3598
3602
 
3599
3603
  /* attr rb_num_t width @ expandarray(num, flag)(..., ary)(...) */
@@ -3627,7 +3631,7 @@ attr_leaf_concatarray(void)
3627
3631
  return
3628
3632
  #line 500 "insns.def"
3629
3633
  false;
3630
- #line 3631 "insns_info.inc"
3634
+ #line 3635 "insns_info.inc"
3631
3635
  }
3632
3636
 
3633
3637
  /* attr const char* name @ concatarray()(ary1, ary2)(ary) */
@@ -3693,7 +3697,7 @@ attr_leaf_splatarray(MAYBE_UNUSED(VALUE flag))
3693
3697
  return
3694
3698
  #line 511 "insns.def"
3695
3699
  false;
3696
- #line 3697 "insns_info.inc"
3700
+ #line 3701 "insns_info.inc"
3697
3701
  }
3698
3702
 
3699
3703
  /* attr const char* name @ splatarray(flag)(ary)(obj) */
@@ -3759,7 +3763,7 @@ attr_leaf_newhash(MAYBE_UNUSED(rb_num_t num))
3759
3763
  return
3760
3764
  #line 522 "insns.def"
3761
3765
  false;
3762
- #line 3763 "insns_info.inc"
3766
+ #line 3767 "insns_info.inc"
3763
3767
  }
3764
3768
 
3765
3769
  /* attr const char* name @ newhash(num)(...)(val) */
@@ -3797,7 +3801,7 @@ attr_sp_inc_newhash(MAYBE_UNUSED(rb_num_t num))
3797
3801
  return
3798
3802
  #line 523 "insns.def"
3799
3803
  1 - (rb_snum_t)num;
3800
- #line 3801 "insns_info.inc"
3804
+ #line 3805 "insns_info.inc"
3801
3805
  }
3802
3806
 
3803
3807
  /* attr rb_num_t width @ newhash(num)(...)(val) */
@@ -3828,7 +3832,7 @@ attr_leaf_newrange(MAYBE_UNUSED(rb_num_t flag))
3828
3832
  return
3829
3833
  #line 541 "insns.def"
3830
3834
  false;
3831
- #line 3832 "insns_info.inc"
3835
+ #line 3836 "insns_info.inc"
3832
3836
  }
3833
3837
 
3834
3838
  /* attr const char* name @ newrange(flag)(low, high)(val) */
@@ -4055,7 +4059,7 @@ attr_sp_inc_dupn(MAYBE_UNUSED(rb_num_t n))
4055
4059
  return
4056
4060
  #line 577 "insns.def"
4057
4061
  n;
4058
- #line 4059 "insns_info.inc"
4062
+ #line 4063 "insns_info.inc"
4059
4063
  }
4060
4064
 
4061
4065
  /* attr rb_num_t width @ dupn(n)(...)(...) */
@@ -4184,7 +4188,7 @@ attr_sp_inc_reverse(MAYBE_UNUSED(rb_num_t n))
4184
4188
  return
4185
4189
  #line 601 "insns.def"
4186
4190
  0;
4187
- #line 4188 "insns_info.inc"
4191
+ #line 4192 "insns_info.inc"
4188
4192
  }
4189
4193
 
4190
4194
  /* attr rb_num_t width @ reverse(n)(...)(...) */
@@ -4250,7 +4254,7 @@ attr_sp_inc_topn(MAYBE_UNUSED(rb_num_t n))
4250
4254
  return
4251
4255
  #line 631 "insns.def"
4252
4256
  1;
4253
- #line 4254 "insns_info.inc"
4257
+ #line 4258 "insns_info.inc"
4254
4258
  }
4255
4259
 
4256
4260
  /* attr rb_num_t width @ topn(n)(...)(val) */
@@ -4316,7 +4320,7 @@ attr_sp_inc_setn(MAYBE_UNUSED(rb_num_t n))
4316
4320
  return
4317
4321
  #line 642 "insns.def"
4318
4322
  0;
4319
- #line 4320 "insns_info.inc"
4323
+ #line 4324 "insns_info.inc"
4320
4324
  }
4321
4325
 
4322
4326
  /* attr rb_num_t width @ setn(n)(..., val)(val) */
@@ -4382,7 +4386,7 @@ attr_sp_inc_adjuststack(MAYBE_UNUSED(rb_num_t n))
4382
4386
  return
4383
4387
  #line 653 "insns.def"
4384
4388
  -(rb_snum_t)n;
4385
- #line 4386 "insns_info.inc"
4389
+ #line 4390 "insns_info.inc"
4386
4390
  }
4387
4391
 
4388
4392
  /* attr rb_num_t width @ adjuststack(n)(...)(...) */
@@ -4425,7 +4429,7 @@ attr_leaf_defined(
4425
4429
  return
4426
4430
  #line 668 "insns.def"
4427
4431
  leafness_of_defined(op_type);
4428
- #line 4429 "insns_info.inc"
4432
+ #line 4433 "insns_info.inc"
4429
4433
  }
4430
4434
 
4431
4435
  /* attr const char* name @ defined(op_type, obj, needstr)(v)(val) */
@@ -4515,7 +4519,7 @@ attr_leaf_checkmatch(MAYBE_UNUSED(rb_num_t flag))
4515
4519
  return
4516
4520
  #line 685 "insns.def"
4517
4521
  leafness_of_checkmatch(flag);
4518
- #line 4519 "insns_info.inc"
4522
+ #line 4523 "insns_info.inc"
4519
4523
  }
4520
4524
 
4521
4525
  /* attr const char* name @ checkmatch(flag)(target, pattern)(result) */
@@ -5012,7 +5016,7 @@ attr_comptime_sp_inc_send(
5012
5016
  return
5013
5017
  #line 767 "insns.def"
5014
5018
  sp_inc_of_sendish(ci);
5015
- #line 5016 "insns_info.inc"
5019
+ #line 5020 "insns_info.inc"
5016
5020
  }
5017
5021
 
5018
5022
  /* attr bool handles_sp @ send(cd, blockiseq)(...)(val) */
@@ -5085,7 +5089,7 @@ attr_sp_inc_send(
5085
5089
  return
5086
5090
  #line 766 "insns.def"
5087
5091
  sp_inc_of_sendish(cd->ci);
5088
- #line 5089 "insns_info.inc"
5092
+ #line 5093 "insns_info.inc"
5089
5093
  }
5090
5094
 
5091
5095
  /* attr rb_num_t width @ send(cd, blockiseq)(...)(val) */
@@ -5112,7 +5116,7 @@ attr_comptime_sp_inc_opt_send_without_block(MAYBE_UNUSED(CALL_INFO ci))
5112
5116
  return
5113
5117
  #line 786 "insns.def"
5114
5118
  sp_inc_of_sendish(ci);
5115
- #line 5116 "insns_info.inc"
5119
+ #line 5120 "insns_info.inc"
5116
5120
  }
5117
5121
 
5118
5122
  /* attr bool handles_sp @ opt_send_without_block(cd)(...)(val) */
@@ -5122,7 +5126,7 @@ attr_handles_sp_opt_send_without_block(MAYBE_UNUSED(CALL_DATA cd))
5122
5126
  return
5123
5127
  #line 784 "insns.def"
5124
5128
  true;
5125
- #line 5126 "insns_info.inc"
5129
+ #line 5130 "insns_info.inc"
5126
5130
  }
5127
5131
 
5128
5132
  /* attr bool leaf @ opt_send_without_block(cd)(...)(val) */
@@ -5167,7 +5171,7 @@ attr_sp_inc_opt_send_without_block(MAYBE_UNUSED(CALL_DATA cd))
5167
5171
  return
5168
5172
  #line 785 "insns.def"
5169
5173
  sp_inc_of_sendish(cd->ci);
5170
- #line 5171 "insns_info.inc"
5174
+ #line 5175 "insns_info.inc"
5171
5175
  }
5172
5176
 
5173
5177
  /* attr rb_num_t width @ opt_send_without_block(cd)(...)(val) */
@@ -5441,7 +5445,7 @@ attr_leaf_opt_newarray_max(MAYBE_UNUSED(rb_num_t num))
5441
5445
  return
5442
5446
  #line 848 "insns.def"
5443
5447
  false;
5444
- #line 5445 "insns_info.inc"
5448
+ #line 5449 "insns_info.inc"
5445
5449
  }
5446
5450
 
5447
5451
  /* attr const char* name @ opt_newarray_max(num)(...)(val) */
@@ -5479,7 +5483,7 @@ attr_sp_inc_opt_newarray_max(MAYBE_UNUSED(rb_num_t num))
5479
5483
  return
5480
5484
  #line 849 "insns.def"
5481
5485
  1 - (rb_snum_t)num;
5482
- #line 5483 "insns_info.inc"
5486
+ #line 5487 "insns_info.inc"
5483
5487
  }
5484
5488
 
5485
5489
  /* attr rb_num_t width @ opt_newarray_max(num)(...)(val) */
@@ -5510,7 +5514,7 @@ attr_leaf_opt_newarray_min(MAYBE_UNUSED(rb_num_t num))
5510
5514
  return
5511
5515
  #line 860 "insns.def"
5512
5516
  false;
5513
- #line 5514 "insns_info.inc"
5517
+ #line 5518 "insns_info.inc"
5514
5518
  }
5515
5519
 
5516
5520
  /* attr const char* name @ opt_newarray_min(num)(...)(val) */
@@ -5548,7 +5552,7 @@ attr_sp_inc_opt_newarray_min(MAYBE_UNUSED(rb_num_t num))
5548
5552
  return
5549
5553
  #line 861 "insns.def"
5550
5554
  1 - (rb_snum_t)num;
5551
- #line 5552 "insns_info.inc"
5555
+ #line 5556 "insns_info.inc"
5552
5556
  }
5553
5557
 
5554
5558
  /* attr rb_num_t width @ opt_newarray_min(num)(...)(val) */
@@ -5578,7 +5582,7 @@ attr_comptime_sp_inc_invokesuper(
5578
5582
  return
5579
5583
  #line 873 "insns.def"
5580
5584
  sp_inc_of_sendish(ci);
5581
- #line 5582 "insns_info.inc"
5585
+ #line 5586 "insns_info.inc"
5582
5586
  }
5583
5587
 
5584
5588
  /* attr bool handles_sp @ invokesuper(cd, blockiseq)(...)(val) */
@@ -5651,7 +5655,7 @@ attr_sp_inc_invokesuper(
5651
5655
  return
5652
5656
  #line 872 "insns.def"
5653
5657
  sp_inc_of_sendish(cd->ci);
5654
- #line 5655 "insns_info.inc"
5658
+ #line 5659 "insns_info.inc"
5655
5659
  }
5656
5660
 
5657
5661
  /* attr rb_num_t width @ invokesuper(cd, blockiseq)(...)(val) */
@@ -5678,7 +5682,7 @@ attr_comptime_sp_inc_invokeblock(MAYBE_UNUSED(CALL_INFO ci))
5678
5682
  return
5679
5683
  #line 892 "insns.def"
5680
5684
  sp_inc_of_invokeblock(ci);
5681
- #line 5682 "insns_info.inc"
5685
+ #line 5686 "insns_info.inc"
5682
5686
  }
5683
5687
 
5684
5688
  /* attr bool handles_sp @ invokeblock(cd)(...)(val) */
@@ -5688,7 +5692,7 @@ attr_handles_sp_invokeblock(MAYBE_UNUSED(CALL_DATA cd))
5688
5692
  return
5689
5693
  #line 890 "insns.def"
5690
5694
  true;
5691
- #line 5692 "insns_info.inc"
5695
+ #line 5696 "insns_info.inc"
5692
5696
  }
5693
5697
 
5694
5698
  /* attr bool leaf @ invokeblock(cd)(...)(val) */
@@ -5733,7 +5737,7 @@ attr_sp_inc_invokeblock(MAYBE_UNUSED(CALL_DATA cd))
5733
5737
  return
5734
5738
  #line 891 "insns.def"
5735
5739
  sp_inc_of_invokeblock(cd->ci);
5736
- #line 5737 "insns_info.inc"
5740
+ #line 5741 "insns_info.inc"
5737
5741
  }
5738
5742
 
5739
5743
  /* attr rb_num_t width @ invokeblock(cd)(...)(val) */
@@ -5755,9 +5759,9 @@ bool
5755
5759
  attr_handles_sp_leave(void)
5756
5760
  {
5757
5761
  return
5758
- #line 918 "insns.def"
5762
+ #line 913 "insns.def"
5759
5763
  true;
5760
- #line 5761 "insns_info.inc"
5764
+ #line 5765 "insns_info.inc"
5761
5765
  }
5762
5766
 
5763
5767
  /* attr bool leaf @ leave()(val)(val) */
@@ -5765,9 +5769,9 @@ bool
5765
5769
  attr_leaf_leave(void)
5766
5770
  {
5767
5771
  return
5768
- #line 917 "insns.def"
5772
+ #line 912 "insns.def"
5769
5773
  false;
5770
- #line 5771 "insns_info.inc"
5774
+ #line 5775 "insns_info.inc"
5771
5775
  }
5772
5776
 
5773
5777
  /* attr const char* name @ leave()(val)(val) */
@@ -5831,9 +5835,9 @@ bool
5831
5835
  attr_leaf_throw(MAYBE_UNUSED(rb_num_t throw_state))
5832
5836
  {
5833
5837
  return
5834
- #line 951 "insns.def"
5838
+ #line 946 "insns.def"
5835
5839
  false;
5836
- #line 5837 "insns_info.inc"
5840
+ #line 5841 "insns_info.inc"
5837
5841
  }
5838
5842
 
5839
5843
  /* attr const char* name @ throw(throw_state)(throwobj)(val) */
@@ -5897,9 +5901,9 @@ bool
5897
5901
  attr_leaf_jump(MAYBE_UNUSED(OFFSET dst))
5898
5902
  {
5899
5903
  return
5900
- #line 969 "insns.def"
5901
- false;
5902
- #line 5903 "insns_info.inc"
5904
+ #line 964 "insns.def"
5905
+ leafness_of_check_ints;
5906
+ #line 5907 "insns_info.inc"
5903
5907
  }
5904
5908
 
5905
5909
  /* attr const char* name @ jump(dst)()() */
@@ -5963,9 +5967,9 @@ bool
5963
5967
  attr_leaf_branchif(MAYBE_UNUSED(OFFSET dst))
5964
5968
  {
5965
5969
  return
5966
- #line 982 "insns.def"
5967
- false;
5968
- #line 5969 "insns_info.inc"
5970
+ #line 977 "insns.def"
5971
+ leafness_of_check_ints;
5972
+ #line 5973 "insns_info.inc"
5969
5973
  }
5970
5974
 
5971
5975
  /* attr const char* name @ branchif(dst)(val)() */
@@ -6029,9 +6033,9 @@ bool
6029
6033
  attr_leaf_branchunless(MAYBE_UNUSED(OFFSET dst))
6030
6034
  {
6031
6035
  return
6032
- #line 997 "insns.def"
6033
- false;
6034
- #line 6035 "insns_info.inc"
6036
+ #line 992 "insns.def"
6037
+ leafness_of_check_ints;
6038
+ #line 6039 "insns_info.inc"
6035
6039
  }
6036
6040
 
6037
6041
  /* attr const char* name @ branchunless(dst)(val)() */
@@ -6095,9 +6099,9 @@ bool
6095
6099
  attr_leaf_branchnil(MAYBE_UNUSED(OFFSET dst))
6096
6100
  {
6097
6101
  return
6098
- #line 1012 "insns.def"
6099
- false;
6100
- #line 6101 "insns_info.inc"
6102
+ #line 1007 "insns.def"
6103
+ leafness_of_check_ints;
6104
+ #line 6105 "insns_info.inc"
6101
6105
  }
6102
6106
 
6103
6107
  /* attr const char* name @ branchnil(dst)(val)() */
@@ -6463,9 +6467,9 @@ attr_sp_inc_opt_case_dispatch(
6463
6467
  )
6464
6468
  {
6465
6469
  return
6466
- #line 1066 "insns.def"
6470
+ #line 1061 "insns.def"
6467
6471
  -1;
6468
- #line 6469 "insns_info.inc"
6472
+ #line 6473 "insns_info.inc"
6469
6473
  }
6470
6474
 
6471
6475
  /* attr rb_num_t width @ opt_case_dispatch(hash, else_offset)(..., key)() */
@@ -6686,9 +6690,9 @@ bool
6686
6690
  attr_leaf_opt_div(MAYBE_UNUSED(CALL_DATA cd))
6687
6691
  {
6688
6692
  return
6689
- #line 1127 "insns.def"
6693
+ #line 1122 "insns.def"
6690
6694
  false;
6691
- #line 6692 "insns_info.inc"
6695
+ #line 6696 "insns_info.inc"
6692
6696
  }
6693
6697
 
6694
6698
  /* attr const char* name @ opt_div(cd)(recv, obj)(val) */
@@ -6752,9 +6756,9 @@ bool
6752
6756
  attr_leaf_opt_mod(MAYBE_UNUSED(CALL_DATA cd))
6753
6757
  {
6754
6758
  return
6755
- #line 1143 "insns.def"
6759
+ #line 1138 "insns.def"
6756
6760
  false;
6757
- #line 6758 "insns_info.inc"
6761
+ #line 6762 "insns_info.inc"
6758
6762
  }
6759
6763
 
6760
6764
  /* attr const char* name @ opt_mod(cd)(recv, obj)(val) */
@@ -7223,9 +7227,9 @@ bool
7223
7227
  attr_leaf_opt_ltlt(MAYBE_UNUSED(CALL_DATA cd))
7224
7228
  {
7225
7229
  return
7226
- #line 1245 "insns.def"
7230
+ #line 1240 "insns.def"
7227
7231
  false;
7228
- #line 7229 "insns_info.inc"
7232
+ #line 7233 "insns_info.inc"
7229
7233
  }
7230
7234
 
7231
7235
  /* attr const char* name @ opt_ltlt(cd)(recv, obj)(val) */
@@ -7415,9 +7419,9 @@ bool
7415
7419
  attr_leaf_opt_aref(MAYBE_UNUSED(CALL_DATA cd))
7416
7420
  {
7417
7421
  return
7418
- #line 1292 "insns.def"
7422
+ #line 1287 "insns.def"
7419
7423
  false;
7420
- #line 7421 "insns_info.inc"
7424
+ #line 7425 "insns_info.inc"
7421
7425
  }
7422
7426
 
7423
7427
  /* attr const char* name @ opt_aref(cd)(recv, obj)(val) */
@@ -7481,9 +7485,9 @@ bool
7481
7485
  attr_leaf_opt_aset(MAYBE_UNUSED(CALL_DATA cd))
7482
7486
  {
7483
7487
  return
7484
- #line 1309 "insns.def"
7488
+ #line 1304 "insns.def"
7485
7489
  false;
7486
- #line 7487 "insns_info.inc"
7490
+ #line 7491 "insns_info.inc"
7487
7491
  }
7488
7492
 
7489
7493
  /* attr const char* name @ opt_aset(cd)(recv, obj, set)(val) */
@@ -7556,9 +7560,9 @@ attr_leaf_opt_aset_with(
7556
7560
  )
7557
7561
  {
7558
7562
  return
7559
- #line 1325 "insns.def"
7563
+ #line 1320 "insns.def"
7560
7564
  false;
7561
- #line 7562 "insns_info.inc"
7565
+ #line 7566 "insns_info.inc"
7562
7566
  }
7563
7567
 
7564
7568
  /* attr const char* name @ opt_aset_with(key, cd)(recv, val)(val) */
@@ -7649,9 +7653,9 @@ attr_leaf_opt_aref_with(
7649
7653
  )
7650
7654
  {
7651
7655
  return
7652
- #line 1348 "insns.def"
7656
+ #line 1343 "insns.def"
7653
7657
  false;
7654
- #line 7655 "insns_info.inc"
7658
+ #line 7659 "insns_info.inc"
7655
7659
  }
7656
7660
 
7657
7661
  /* attr const char* name @ opt_aref_with(key, cd)(recv)(val) */
@@ -8048,9 +8052,9 @@ bool
8048
8052
  attr_leaf_opt_regexpmatch2(MAYBE_UNUSED(CALL_DATA cd))
8049
8053
  {
8050
8054
  return
8051
- #line 1436 "insns.def"
8055
+ #line 1431 "insns.def"
8052
8056
  false;
8053
- #line 8054 "insns_info.inc"
8057
+ #line 8058 "insns_info.inc"
8054
8058
  }
8055
8059
 
8056
8060
  /* attr const char* name @ opt_regexpmatch2(cd)(obj2, obj1)(val) */
@@ -8114,9 +8118,9 @@ bool
8114
8118
  attr_leaf_invokebuiltin(MAYBE_UNUSED(RB_BUILTIN bf))
8115
8119
  {
8116
8120
  return
8117
- #line 1472 "insns.def"
8121
+ #line 1467 "insns.def"
8118
8122
  false;
8119
- #line 8120 "insns_info.inc"
8123
+ #line 8124 "insns_info.inc"
8120
8124
  }
8121
8125
 
8122
8126
  /* attr const char* name @ invokebuiltin(bf)(...)(val) */
@@ -8152,9 +8156,9 @@ rb_snum_t
8152
8156
  attr_sp_inc_invokebuiltin(MAYBE_UNUSED(RB_BUILTIN bf))
8153
8157
  {
8154
8158
  return
8155
- #line 1473 "insns.def"
8159
+ #line 1468 "insns.def"
8156
8160
  1 - bf->argc;
8157
- #line 8158 "insns_info.inc"
8161
+ #line 8162 "insns_info.inc"
8158
8162
  }
8159
8163
 
8160
8164
  /* attr rb_num_t width @ invokebuiltin(bf)(...)(val) */
@@ -8192,9 +8196,9 @@ attr_leaf_opt_invokebuiltin_delegate(
8192
8196
  )
8193
8197
  {
8194
8198
  return
8195
- #line 1484 "insns.def"
8199
+ #line 1479 "insns.def"
8196
8200
  false;
8197
- #line 8198 "insns_info.inc"
8201
+ #line 8202 "insns_info.inc"
8198
8202
  }
8199
8203
 
8200
8204
  /* attr const char* name @ opt_invokebuiltin_delegate(bf, index)()(val) */
@@ -8285,9 +8289,9 @@ attr_leaf_opt_invokebuiltin_delegate_leave(
8285
8289
  )
8286
8290
  {
8287
8291
  return
8288
- #line 1495 "insns.def"
8292
+ #line 1490 "insns.def"
8289
8293
  false;
8290
- #line 8291 "insns_info.inc"
8294
+ #line 8295 "insns_info.inc"
8291
8295
  }
8292
8296
 
8293
8297
  /* attr const char* name @ opt_invokebuiltin_delegate_leave(bf, index)()(val) */