debase-ruby_core_source 0.10.7 → 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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +1 -1
  4. data/Rakefile +6 -3
  5. data/debase-ruby_core_source.gemspec +2 -1
  6. data/lib/debase/ruby_core_source.rb +0 -1
  7. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/addr2line.h +0 -0
  8. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/builtin.h +78 -0
  9. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/build_assert/build_assert.h +0 -0
  10. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/check_type/check_type.h +0 -0
  11. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/container_of/container_of.h +0 -0
  12. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/list/list.h +0 -0
  13. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/str/str.h +0 -0
  14. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/constant.h +0 -4
  15. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/debug_counter.h +21 -9
  16. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/dln.h +0 -0
  17. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/encindex.h +0 -0
  18. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/eval_intern.h +1 -3
  19. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/gc.h +2 -0
  20. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/hrtime.h +0 -0
  21. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/id.h +1 -3
  22. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/id_table.h +0 -0
  23. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/insns.inc +6 -2
  24. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/insns_info.inc +1471 -1888
  25. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/internal.h +106 -91
  26. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/iseq.h +5 -5
  27. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/known_errors.inc +0 -0
  28. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/method.h +1 -4
  29. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/mjit.h +3 -5
  30. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/mjit_compile.inc +768 -872
  31. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/node.h +4 -11
  32. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/node_name.inc +0 -2
  33. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/opt_sc.inc +109 -0
  34. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/optinsn.inc +0 -0
  35. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/optunifs.inc +43 -0
  36. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/parse.h +1 -1
  37. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/probes_helper.h +0 -0
  38. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regenc.h +0 -0
  39. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regint.h +0 -0
  40. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regparse.h +0 -0
  41. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/revision.h +2 -0
  42. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ruby_assert.h +0 -0
  43. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ruby_atomic.h +0 -0
  44. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/siphash.h +0 -0
  45. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/symbol.h +0 -0
  46. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/thread_pthread.h +0 -0
  47. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/thread_win32.h +0 -0
  48. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/timev.h +0 -0
  49. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/transcode_data.h +0 -0
  50. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/transient_heap.h +0 -0
  51. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/variable.h +9 -0
  52. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/version.h +4 -4
  53. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm.inc +604 -407
  54. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_call_iseq_optimized.inc +49 -49
  55. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_core.h +42 -29
  56. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_debug.h +0 -0
  57. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_exec.h +0 -0
  58. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_insnhelper.h +16 -4
  59. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_opts.h +2 -0
  60. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vmtc.inc +6 -2
  61. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/addr2line.h +20 -0
  62. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/builtin.h +83 -0
  63. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/build_assert/build_assert.h +40 -0
  64. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/check_type/check_type.h +63 -0
  65. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/container_of/container_of.h +142 -0
  66. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/list/list.h +788 -0
  67. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/str/str.h +16 -0
  68. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/constant.h +55 -0
  69. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/debug_counter.h +457 -0
  70. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/dln.h +36 -0
  71. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/encindex.h +70 -0
  72. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/eval_intern.h +323 -0
  73. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/gc.h +140 -0
  74. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/hrtime.h +168 -0
  75. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/id.h +290 -0
  76. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/id_table.h +36 -0
  77. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/insns.inc +249 -0
  78. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/insns_info.inc +8983 -0
  79. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
  80. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
  81. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bignum.h +246 -0
  82. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bits.h +566 -0
  83. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
  84. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compar.h +50 -0
  85. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compile.h +32 -0
  86. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
  87. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/complex.h +29 -0
  88. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/cont.h +25 -0
  89. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/dir.h +17 -0
  90. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enc.h +20 -0
  91. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/encoding.h +28 -0
  92. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enum.h +19 -0
  93. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enumerator.h +22 -0
  94. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/error.h +124 -0
  95. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/eval.h +33 -0
  96. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/file.h +39 -0
  97. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/fixnum.h +185 -0
  98. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
  99. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/hash.h +241 -0
  100. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
  101. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/inits.h +51 -0
  102. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/io.h +35 -0
  103. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/load.h +19 -0
  104. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/loadpath.h +17 -0
  105. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/math.h +24 -0
  106. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/missing.h +19 -0
  107. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/numeric.h +255 -0
  108. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/object.h +83 -0
  109. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/parse.h +23 -0
  110. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/proc.h +33 -0
  111. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/process.h +136 -0
  112. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/random.h +17 -0
  113. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/range.h +41 -0
  114. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/rational.h +71 -0
  115. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/re.h +29 -0
  116. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/sanitizers.h +191 -0
  117. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/scheduler.h +44 -0
  118. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
  119. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/signal.h +22 -0
  120. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
  121. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/string.h +140 -0
  122. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/struct.h +154 -0
  123. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/symbol.h +41 -0
  124. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/thread.h +54 -0
  125. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/time.h +35 -0
  126. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/transcode.h +21 -0
  127. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/util.h +31 -0
  128. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/variable.h +84 -0
  129. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
  130. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
  131. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/iseq.h +305 -0
  132. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/known_errors.inc +791 -0
  133. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/method.h +245 -0
  134. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/mjit.h +220 -0
  135. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/mjit_compile.inc +8240 -0
  136. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/node.h +484 -0
  137. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/node_name.inc +210 -0
  138. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
  139. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/optinsn.inc +128 -0
  140. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optunifs.inc +0 -0
  141. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/parse.h +211 -0
  142. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/probes_helper.h +44 -0
  143. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
  144. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regenc.h +254 -0
  145. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regint.h +938 -0
  146. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regparse.h +370 -0
  147. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
  148. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_assert.h +15 -0
  149. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
  150. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/siphash.h +48 -0
  151. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/symbol.h +119 -0
  152. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/thread_pthread.h +115 -0
  153. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/thread_win32.h +61 -0
  154. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/timev.h +57 -0
  155. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/transcode_data.h +138 -0
  156. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/transient_heap.h +65 -0
  157. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/variable.h +22 -0
  158. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/version.h +89 -0
  159. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm.inc +5355 -0
  160. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_call_iseq_optimized.inc +244 -0
  161. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_callinfo.h +456 -0
  162. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_core.h +2023 -0
  163. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
  164. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_exec.h +196 -0
  165. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_insnhelper.h +257 -0
  166. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_opts.h +73 -0
  167. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_sync.h +136 -0
  168. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vmtc.inc +243 -0
  169. data/lib/debase/ruby_core_source/version.rb +1 -1
  170. metadata +181 -57
  171. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/revision.h +0 -2
@@ -7,171 +7,171 @@
7
7
  */
8
8
 
9
9
  static VALUE
10
- vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
10
+ vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11
11
  {
12
12
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
13
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 0);
13
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 0);
14
14
  }
15
15
 
16
16
  static VALUE
17
- vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
17
+ vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
18
18
  {
19
19
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
20
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 1);
20
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 1);
21
21
  }
22
22
 
23
23
  static VALUE
24
- vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
24
+ vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
25
25
  {
26
26
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
27
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 2);
27
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 2);
28
28
  }
29
29
 
30
30
  static VALUE
31
- vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
31
+ vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
32
32
  {
33
33
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
34
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 3);
34
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 3);
35
35
  }
36
36
 
37
37
  static VALUE
38
- vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
38
+ vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
39
39
  {
40
40
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
41
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 4);
41
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 4);
42
42
  }
43
43
 
44
44
  static VALUE
45
- vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
45
+ vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
46
46
  {
47
47
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
48
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 5);
48
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 5);
49
49
  }
50
50
 
51
51
  static VALUE
52
- vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
52
+ vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
53
53
  {
54
54
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
55
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 0);
55
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 0);
56
56
  }
57
57
 
58
58
  static VALUE
59
- vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
59
+ vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
60
60
  {
61
61
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
62
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 1);
62
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 1);
63
63
  }
64
64
 
65
65
  static VALUE
66
- vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
66
+ vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
67
67
  {
68
68
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
69
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 2);
69
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 2);
70
70
  }
71
71
 
72
72
  static VALUE
73
- vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
73
+ vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
74
74
  {
75
75
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
76
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 3);
76
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 3);
77
77
  }
78
78
 
79
79
  static VALUE
80
- vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
80
+ vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
81
81
  {
82
82
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
83
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 4);
83
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 4);
84
84
  }
85
85
 
86
86
  static VALUE
87
- vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
87
+ vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
88
88
  {
89
89
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
90
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 5);
90
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 5);
91
91
  }
92
92
 
93
93
  static VALUE
94
- vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
94
+ vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
95
95
  {
96
96
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
97
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 0);
97
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 0);
98
98
  }
99
99
 
100
100
  static VALUE
101
- vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
101
+ vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
102
102
  {
103
103
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
104
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 1);
104
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 1);
105
105
  }
106
106
 
107
107
  static VALUE
108
- vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
108
+ vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
109
109
  {
110
110
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
111
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 2);
111
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 2);
112
112
  }
113
113
 
114
114
  static VALUE
115
- vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
115
+ vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
116
116
  {
117
117
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
118
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 3);
118
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 3);
119
119
  }
120
120
 
121
121
  static VALUE
122
- vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
122
+ vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
123
123
  {
124
124
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
125
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 4);
125
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 4);
126
126
  }
127
127
 
128
128
  static VALUE
129
- vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
129
+ vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
130
130
  {
131
131
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
132
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 5);
132
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 5);
133
133
  }
134
134
 
135
135
  static VALUE
136
- vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
136
+ vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
137
137
  {
138
138
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
139
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 0);
139
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 0);
140
140
  }
141
141
 
142
142
  static VALUE
143
- vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
143
+ vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
144
144
  {
145
145
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
146
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 1);
146
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 1);
147
147
  }
148
148
 
149
149
  static VALUE
150
- vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
150
+ vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
151
151
  {
152
152
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
153
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 2);
153
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 2);
154
154
  }
155
155
 
156
156
  static VALUE
157
- vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
157
+ vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
158
158
  {
159
159
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
160
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 3);
160
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 3);
161
161
  }
162
162
 
163
163
  static VALUE
164
- vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
164
+ vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
165
165
  {
166
166
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
167
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 4);
167
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 4);
168
168
  }
169
169
 
170
170
  static VALUE
171
- vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
171
+ vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
172
172
  {
173
173
  RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
174
- return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 5);
174
+ return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 5);
175
175
  }
176
176
 
177
177
  /* vm_call_iseq_handlers[param][local] */
@@ -225,7 +225,7 @@ vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, con
225
225
 
226
226
 
227
227
  static inline vm_call_handler
228
- vm_call_iseq_setup_func(const struct rb_call_info *ci, struct rb_call_cache *cc)
228
+ vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
229
229
  {
230
230
  if (UNLIKELY(ci->flag & VM_CALL_TAILCALL)) {
231
231
  return &vm_call_iseq_setup_tailcall_0start;
@@ -220,10 +220,12 @@ typedef struct rb_compile_option_struct rb_compile_option_t;
220
220
  struct iseq_inline_cache_entry {
221
221
  rb_serial_t ic_serial;
222
222
  const rb_cref_t *ic_cref;
223
- union {
224
- size_t index;
225
- VALUE value;
226
- } ic_value;
223
+ VALUE value;
224
+ };
225
+
226
+ struct iseq_inline_iv_cache_entry {
227
+ rb_serial_t ic_serial;
228
+ size_t index;
227
229
  };
228
230
 
229
231
  union iseq_inline_storage_entry {
@@ -232,13 +234,7 @@ union iseq_inline_storage_entry {
232
234
  VALUE value;
233
235
  } once;
234
236
  struct iseq_inline_cache_entry cache;
235
- };
236
-
237
- struct rb_call_info {
238
- /* fixed at compile time */
239
- ID mid;
240
- unsigned int flag;
241
- int orig_argc;
237
+ struct iseq_inline_iv_cache_entry iv_cache;
242
238
  };
243
239
 
244
240
  struct rb_call_info_kw_arg {
@@ -258,8 +254,13 @@ struct rb_calling_info {
258
254
  int kw_splat;
259
255
  };
260
256
 
257
+ struct rb_kwarg_call_data {
258
+ struct rb_call_cache cc;
259
+ struct rb_call_info_with_kwarg ci_kw;
260
+ };
261
+
261
262
  struct rb_execution_context_struct;
262
- typedef VALUE (*vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
263
+ typedef VALUE (*vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
263
264
 
264
265
  #if 1
265
266
  #define CoreDataFromValue(obj, type) (type*)DATA_PTR(obj)
@@ -417,12 +418,12 @@ struct rb_iseq_constant_body {
417
418
  struct rb_iseq_struct *local_iseq; /* local_iseq->flip_cnt can be modified */
418
419
 
419
420
  union iseq_inline_storage_entry *is_entries;
420
- struct rb_call_info *ci_entries; /* struct rb_call_info ci_entries[ci_size];
421
- * struct rb_call_info_with_kwarg cikw_entries[ci_kw_size];
422
- * So that:
423
- * struct rb_call_info_with_kwarg *cikw_entries = &body->ci_entries[ci_size];
424
- */
425
- struct rb_call_cache *cc_entries; /* size is ci_size + ci_kw_size */
421
+ struct rb_call_data *call_data; /* A buffer for two arrays:
422
+ * struct rb_call_data calls[ci_size];
423
+ * struct rb_kwarg_call_data kw_calls[ci_kw_size];
424
+ * Such that:
425
+ * struct rb_kwarg_call_data *kw_calls = &body->call_data[ci_size];
426
+ */
426
427
 
427
428
  struct {
428
429
  rb_snum_t flip_count;
@@ -446,6 +447,8 @@ struct rb_iseq_constant_body {
446
447
  long unsigned total_calls; /* number of total calls with `mjit_exec()` */
447
448
  struct rb_mjit_unit *jit_unit;
448
449
  #endif
450
+
451
+ uintptr_t iseq_unique_id; /* -- Remove In 3.0 -- */
449
452
  };
450
453
 
451
454
  /* T_IMEMO/iseq */
@@ -493,6 +496,7 @@ rb_iseq_check(const rb_iseq_t *iseq)
493
496
  static inline const rb_iseq_t *
494
497
  def_iseq_ptr(rb_method_definition_t *def)
495
498
  {
499
+ //TODO: re-visit. to check the bug, enable this assertion.
496
500
  #if VM_CHECK_MODE > 0
497
501
  if (def->type != VM_METHOD_TYPE_ISEQ) rb_bug("def_iseq_ptr: not iseq (%d)", def->type);
498
502
  #endif
@@ -565,6 +569,10 @@ typedef struct rb_hook_list_struct {
565
569
  unsigned int running;
566
570
  } rb_hook_list_t;
567
571
 
572
+
573
+ // see builtin.h for definition
574
+ typedef const struct rb_builtin_function *RB_BUILTIN;
575
+
568
576
  typedef struct rb_vm_struct {
569
577
  VALUE self;
570
578
 
@@ -616,7 +624,6 @@ typedef struct rb_vm_struct {
616
624
  /* signal */
617
625
  struct {
618
626
  VALUE cmd[RUBY_NSIG];
619
- unsigned char safe[RUBY_NSIG];
620
627
  } trap_list;
621
628
 
622
629
  /* hook */
@@ -648,6 +655,9 @@ typedef struct rb_vm_struct {
648
655
  VALUE *defined_strings;
649
656
  st_table *frozen_strings;
650
657
 
658
+ const struct rb_builtin_function *builtin_function_table;
659
+ int builtin_inline_index;
660
+
651
661
  /* params */
652
662
  struct { /* size in byte */
653
663
  size_t thread_vm_stack_size;
@@ -753,7 +763,7 @@ typedef struct rb_control_frame_struct {
753
763
  const rb_iseq_t *iseq; /* cfp[2] */
754
764
  VALUE self; /* cfp[3] / block[0] */
755
765
  const VALUE *ep; /* cfp[4] / block[1] */
756
- const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc */
766
+ const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc or forwarded block handler */
757
767
  VALUE *__bp__; /* cfp[6] */ /* outside vm_push_frame, use vm_base_ptr instead. */
758
768
 
759
769
  #if VM_DEBUG_BP_CHECK
@@ -881,6 +891,9 @@ typedef struct rb_execution_context_struct {
881
891
  } machine;
882
892
  } rb_execution_context_t;
883
893
 
894
+ // for builtin.h
895
+ #define VM_CORE_H_EC_DEFINED 1
896
+
884
897
  // Set the vm_stack pointer in the execution context.
885
898
  void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
886
899
 
@@ -1019,10 +1032,6 @@ rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_call
1019
1032
  VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
1020
1033
  const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
1021
1034
 
1022
- /* src -> iseq */
1023
- rb_iseq_t *rb_iseq_compile(VALUE src, VALUE file, VALUE line);
1024
- rb_iseq_t *rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, VALUE opt);
1025
-
1026
1035
  VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
1027
1036
  int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
1028
1037
 
@@ -1118,11 +1127,11 @@ enum vm_svar_index {
1118
1127
 
1119
1128
  /* inline cache */
1120
1129
  typedef struct iseq_inline_cache_entry *IC;
1130
+ typedef struct iseq_inline_iv_cache_entry *IVC;
1121
1131
  typedef union iseq_inline_storage_entry *ISE;
1122
1132
  typedef struct rb_call_info *CALL_INFO;
1123
1133
  typedef struct rb_call_cache *CALL_CACHE;
1124
-
1125
- void rb_vm_change_state(void);
1134
+ typedef struct rb_call_data *CALL_DATA;
1126
1135
 
1127
1136
  typedef VALUE CDHASH;
1128
1137
 
@@ -1485,6 +1494,12 @@ vm_block_handler_verify(MAYBE_UNUSED(VALUE block_handler))
1485
1494
  (vm_block_handler_type(block_handler), 1));
1486
1495
  }
1487
1496
 
1497
+ static inline int
1498
+ vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
1499
+ {
1500
+ return ((VALUE) cfp->block_code) == block_handler;
1501
+ }
1502
+
1488
1503
  static inline enum rb_block_type
1489
1504
  vm_block_type(const struct rb_block *block)
1490
1505
  {
@@ -1662,8 +1677,6 @@ const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
1662
1677
  const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
1663
1678
  void rb_vm_inc_const_missing_count(void);
1664
1679
  void rb_vm_gvl_destroy(rb_vm_t *vm);
1665
- VALUE rb_vm_call(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
1666
- const VALUE *argv, const rb_callable_method_entry_t *me);
1667
1680
  VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
1668
1681
  const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
1669
1682
  MJIT_STATIC void rb_vm_pop_frame(rb_execution_context_t *ec);
@@ -1702,7 +1715,6 @@ typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
1702
1715
  rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
1703
1716
  rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
1704
1717
  int rb_vm_get_sourceline(const rb_control_frame_t *);
1705
- VALUE rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method);
1706
1718
  void rb_vm_stack_to_heap(rb_execution_context_t *ec);
1707
1719
  void ruby_thread_init_stack(rb_thread_t *th);
1708
1720
  int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
@@ -1840,6 +1852,7 @@ void rb_threadptr_interrupt(rb_thread_t *th);
1840
1852
  void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
1841
1853
  void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
1842
1854
  void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
1855
+ VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
1843
1856
  void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
1844
1857
  void rb_execution_context_update(const rb_execution_context_t *ec);
1845
1858
  void rb_execution_context_mark(const rb_execution_context_t *ec);
@@ -120,9 +120,20 @@ enum vm_regan_acttype {
120
120
  * because inline method cache does not care about receiver.
121
121
  */
122
122
 
123
- #define CC_SET_FASTPATH(cc, func, enabled) do { \
124
- if (LIKELY(enabled)) ((cc)->call = (func)); \
125
- } while (0)
123
+ static inline void
124
+ CC_SET_FASTPATH(CALL_CACHE cc, vm_call_handler func, bool enabled)
125
+ {
126
+ if (LIKELY(enabled)) {
127
+ cc->call = func;
128
+ }
129
+ }
130
+
131
+ static inline void
132
+ CC_SET_ME(CALL_CACHE cc, const rb_callable_method_entry_t *me)
133
+ {
134
+ cc->me = me;
135
+ cc->method_serial = me ? me->def->method_serial : 0;
136
+ }
126
137
 
127
138
  #define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
128
139
 
@@ -166,13 +177,14 @@ enum vm_regan_acttype {
166
177
  #ifndef MJIT_HEADER
167
178
  #define CALL_SIMPLE_METHOD() do { \
168
179
  rb_snum_t x = leaf ? INSN_ATTR(width) : 0; \
169
- rb_snum_t y = attr_width_opt_send_without_block(0, 0); \
180
+ rb_snum_t y = attr_width_opt_send_without_block(0); \
170
181
  rb_snum_t z = x - y; \
171
182
  ADD_PC(z); \
172
183
  DISPATCH_ORIGINAL_INSN(opt_send_without_block); \
173
184
  } while (0)
174
185
  #endif
175
186
 
187
+ #define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
176
188
  #define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
177
189
  #define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
178
190
  #define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)