debase-ruby_core_source 0.10.7 → 0.10.12

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