debase-ruby_core_source 0.10.11 → 0.10.12

Sign up to get free protection for your applications and to get access to all the features.
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) */