debase-ruby_core_source 3.2.2 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/addr2line.h +3 -1
  4. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/list/list.h +4 -2
  5. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/dln.h +1 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/eval_intern.h +4 -2
  7. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/insns.inc +2 -0
  8. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/insns_info.inc +280 -198
  9. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/array.h +8 -1
  10. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/bits.h +6 -6
  11. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/class.h +53 -3
  12. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/cmdlineopt.h +2 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/cont.h +3 -0
  14. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/encoding.h +3 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/error.h +3 -0
  16. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/gc.h +3 -0
  17. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/hash.h +1 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/imemo.h +0 -1
  19. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/object.h +1 -0
  20. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/parse.h +7 -32
  21. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/random.h +1 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/string.h +0 -1
  23. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/symbol.h +3 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/thread.h +4 -0
  25. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/transcode.h +3 -0
  26. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/variable.h +5 -4
  27. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/vm.h +9 -2
  28. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/iseq.h +5 -1
  29. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/method.h +7 -7
  30. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/node.h +22 -19
  31. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/node_name.inc +4 -2
  32. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/optunifs.inc +1 -1
  33. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parse.h +16 -5
  34. data/lib/debase/ruby_core_source/ruby-3.3.0-p0/parser_node.h +32 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.0-p0/prism_compile.h +29 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ractor_core.h +7 -1
  37. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regint.h +8 -0
  38. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regparse.h +2 -1
  39. data/lib/debase/ruby_core_source/ruby-3.3.0-p0/revision.h +5 -0
  40. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/rjit.h +6 -8
  41. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/rjit_c.h +0 -1
  42. data/lib/debase/ruby_core_source/ruby-3.3.0-p0/rubyparser.h +1403 -0
  43. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/shape.h +32 -32
  44. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/symbol.h +1 -2
  45. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/thread_none.h +1 -0
  46. data/lib/debase/ruby_core_source/ruby-3.3.0-p0/thread_pthread.h +166 -0
  47. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/thread_win32.h +1 -1
  48. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/variable.h +11 -2
  49. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/version.h +8 -4
  50. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm.inc +225 -185
  51. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_callinfo.h +12 -1
  52. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_core.h +128 -16
  53. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_insnhelper.h +4 -14
  54. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vmtc.inc +2 -0
  55. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/yjit.h +10 -8
  56. data/lib/debase/ruby_core_source/version.rb +1 -1
  57. metadata +121 -120
  58. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +0 -133
  59. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +0 -5
  60. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +0 -628
  61. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/thread_pthread.h +0 -126
  62. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/builtin.h +0 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/build_assert/build_assert.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/check_type/check_type.h +0 -0
  65. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/container_of/container_of.h +0 -0
  66. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/str/str.h +0 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/constant.h +0 -0
  68. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/darray.h +0 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/debug_counter.h +0 -0
  70. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/encindex.h +0 -0
  71. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/hrtime.h +0 -0
  72. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/id.h +0 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/id_table.h +0 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/basic_operators.h +0 -0
  75. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/bignum.h +0 -0
  76. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compar.h +0 -0
  77. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compile.h +0 -0
  78. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compilers.h +0 -0
  79. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/complex.h +0 -0
  80. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/dir.h +0 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enc.h +0 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enum.h +0 -0
  83. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enumerator.h +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/eval.h +0 -0
  85. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/file.h +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/fixnum.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/inits.h +0 -0
  88. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/io.h +0 -0
  89. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/load.h +0 -0
  90. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/loadpath.h +0 -0
  91. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/math.h +0 -0
  92. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/missing.h +0 -0
  93. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/numeric.h +0 -0
  94. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/proc.h +0 -0
  95. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/process.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/ractor.h +0 -0
  97. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/range.h +0 -0
  98. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/rational.h +0 -0
  99. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/re.h +0 -0
  100. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/ruby_parser.h +2 -2
  101. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/sanitizers.h +0 -0
  102. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/serial.h +0 -0
  103. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/signal.h +0 -0
  104. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/static_assert.h +0 -0
  105. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/struct.h +0 -0
  106. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/time.h +0 -0
  107. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/util.h +0 -0
  108. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/warnings.h +0 -0
  109. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal.h +0 -0
  110. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/known_errors.inc +0 -0
  111. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/optinsn.inc +0 -0
  112. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_bits.h +0 -0
  113. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_st.h +0 -0
  114. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_value.h +0 -0
  115. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/probes_helper.h +0 -0
  116. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regenc.h +0 -0
  117. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ruby_assert.h +0 -0
  118. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ruby_atomic.h +0 -0
  119. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/siphash.h +0 -0
  120. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/timev.h +0 -0
  121. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/transcode_data.h +0 -0
  122. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_call_iseq_optimized.inc +0 -0
  123. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_debug.h +0 -0
  124. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_exec.h +0 -0
  125. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_opts.h +0 -0
  126. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_sync.h +0 -0
@@ -599,22 +599,9 @@ INSN_ENTRY(opt_getconstant_path)
599
599
  # define NAME_OF_CURRENT_INSN opt_getconstant_path
600
600
  # line 262 "insns.def"
601
601
  {
602
- const ID *segments = ic->segments;
603
- struct iseq_inline_constant_cache_entry *ice = ic->entry;
604
- if (ice && vm_ic_hit_p(ice, GET_EP())) {
605
- val = ice->value;
606
-
607
- VM_ASSERT(val == vm_get_ev_const_chain(ec, segments));
608
- } else {
609
- ruby_vm_constant_cache_misses++;
610
- val = vm_get_ev_const_chain(ec, segments);
611
- vm_ic_track_const_chain(GET_CFP(), ic, segments);
612
- // Because leaf=false, we need to undo the PC increment to get the address to this instruction
613
- // INSN_ATTR(width) == 2
614
- vm_ic_update(GET_ISEQ(), ic, val, GET_EP(), GET_PC() - 2);
615
- }
602
+ val = rb_vm_opt_getconstant_path(ec, GET_CFP(), ic);
616
603
  }
617
- # line 618 "vm.inc"
604
+ # line 605 "vm.inc"
618
605
  # undef NAME_OF_CURRENT_INSN
619
606
 
620
607
  /* ### Instruction trailers. ### */
@@ -653,11 +640,11 @@ INSN_ENTRY(getconstant)
653
640
 
654
641
  /* ### Here we do the instruction body. ### */
655
642
  # define NAME_OF_CURRENT_INSN getconstant
656
- # line 290 "insns.def"
643
+ # line 277 "insns.def"
657
644
  {
658
645
  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
659
646
  }
660
- # line 661 "vm.inc"
647
+ # line 648 "vm.inc"
661
648
  # undef NAME_OF_CURRENT_INSN
662
649
 
663
650
  /* ### Instruction trailers. ### */
@@ -695,13 +682,13 @@ INSN_ENTRY(setconstant)
695
682
 
696
683
  /* ### Here we do the instruction body. ### */
697
684
  # define NAME_OF_CURRENT_INSN setconstant
698
- # line 306 "insns.def"
685
+ # line 293 "insns.def"
699
686
  {
700
687
  vm_check_if_namespace(cbase);
701
688
  vm_ensure_not_refinement_module(GET_SELF());
702
689
  rb_const_set(cbase, id, val);
703
690
  }
704
- # line 705 "vm.inc"
691
+ # line 692 "vm.inc"
705
692
  # undef NAME_OF_CURRENT_INSN
706
693
 
707
694
  /* ### Instruction trailers. ### */
@@ -735,11 +722,11 @@ INSN_ENTRY(getglobal)
735
722
 
736
723
  /* ### Here we do the instruction body. ### */
737
724
  # define NAME_OF_CURRENT_INSN getglobal
738
- # line 319 "insns.def"
725
+ # line 306 "insns.def"
739
726
  {
740
727
  val = rb_gvar_get(gid);
741
728
  }
742
- # line 743 "vm.inc"
729
+ # line 730 "vm.inc"
743
730
  # undef NAME_OF_CURRENT_INSN
744
731
 
745
732
  /* ### Instruction trailers. ### */
@@ -776,11 +763,11 @@ INSN_ENTRY(setglobal)
776
763
 
777
764
  /* ### Here we do the instruction body. ### */
778
765
  # define NAME_OF_CURRENT_INSN setglobal
779
- # line 330 "insns.def"
766
+ # line 317 "insns.def"
780
767
  {
781
768
  rb_gvar_set(gid, val);
782
769
  }
783
- # line 784 "vm.inc"
770
+ # line 771 "vm.inc"
784
771
  # undef NAME_OF_CURRENT_INSN
785
772
 
786
773
  /* ### Instruction trailers. ### */
@@ -812,11 +799,11 @@ INSN_ENTRY(putnil)
812
799
 
813
800
  /* ### Here we do the instruction body. ### */
814
801
  # define NAME_OF_CURRENT_INSN putnil
815
- # line 344 "insns.def"
802
+ # line 331 "insns.def"
816
803
  {
817
804
  val = Qnil;
818
805
  }
819
- # line 820 "vm.inc"
806
+ # line 807 "vm.inc"
820
807
  # undef NAME_OF_CURRENT_INSN
821
808
 
822
809
  /* ### Instruction trailers. ### */
@@ -851,11 +838,11 @@ INSN_ENTRY(putself)
851
838
 
852
839
  /* ### Here we do the instruction body. ### */
853
840
  # define NAME_OF_CURRENT_INSN putself
854
- # line 354 "insns.def"
841
+ # line 341 "insns.def"
855
842
  {
856
843
  val = GET_SELF();
857
844
  }
858
- # line 859 "vm.inc"
845
+ # line 846 "vm.inc"
859
846
  # undef NAME_OF_CURRENT_INSN
860
847
 
861
848
  /* ### Instruction trailers. ### */
@@ -921,14 +908,14 @@ INSN_ENTRY(putspecialobject)
921
908
 
922
909
  /* ### Here we do the instruction body. ### */
923
910
  # define NAME_OF_CURRENT_INSN putspecialobject
924
- # line 377 "insns.def"
911
+ # line 364 "insns.def"
925
912
  {
926
913
  enum vm_special_object_type type;
927
914
 
928
915
  type = (enum vm_special_object_type)value_type;
929
916
  val = vm_get_special_object(GET_EP(), type);
930
917
  }
931
- # line 932 "vm.inc"
918
+ # line 919 "vm.inc"
932
919
  # undef NAME_OF_CURRENT_INSN
933
920
 
934
921
  /* ### Instruction trailers. ### */
@@ -965,11 +952,11 @@ INSN_ENTRY(putstring)
965
952
 
966
953
  /* ### Here we do the instruction body. ### */
967
954
  # define NAME_OF_CURRENT_INSN putstring
968
- # line 390 "insns.def"
955
+ # line 377 "insns.def"
969
956
  {
970
957
  val = rb_ec_str_resurrect(ec, str);
971
958
  }
972
- # line 973 "vm.inc"
959
+ # line 960 "vm.inc"
973
960
  # undef NAME_OF_CURRENT_INSN
974
961
 
975
962
  /* ### Instruction trailers. ### */
@@ -1006,11 +993,11 @@ INSN_ENTRY(concatstrings)
1006
993
 
1007
994
  /* ### Here we do the instruction body. ### */
1008
995
  # define NAME_OF_CURRENT_INSN concatstrings
1009
- # line 404 "insns.def"
996
+ # line 391 "insns.def"
1010
997
  {
1011
998
  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
1012
999
  }
1013
- # line 1014 "vm.inc"
1000
+ # line 1001 "vm.inc"
1014
1001
  # undef NAME_OF_CURRENT_INSN
1015
1002
 
1016
1003
  /* ### Instruction trailers. ### */
@@ -1046,11 +1033,11 @@ INSN_ENTRY(anytostring)
1046
1033
 
1047
1034
  /* ### Here we do the instruction body. ### */
1048
1035
  # define NAME_OF_CURRENT_INSN anytostring
1049
- # line 415 "insns.def"
1036
+ # line 402 "insns.def"
1050
1037
  {
1051
1038
  val = rb_obj_as_string_result(str, val);
1052
1039
  }
1053
- # line 1054 "vm.inc"
1040
+ # line 1041 "vm.inc"
1054
1041
  # undef NAME_OF_CURRENT_INSN
1055
1042
 
1056
1043
  /* ### Instruction trailers. ### */
@@ -1089,13 +1076,13 @@ INSN_ENTRY(toregexp)
1089
1076
 
1090
1077
  /* ### Here we do the instruction body. ### */
1091
1078
  # define NAME_OF_CURRENT_INSN toregexp
1092
- # line 431 "insns.def"
1079
+ # line 418 "insns.def"
1093
1080
  {
1094
1081
  const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
1095
1082
  val = rb_reg_new_ary(ary, (int)opt);
1096
1083
  rb_ary_clear(ary);
1097
1084
  }
1098
- # line 1099 "vm.inc"
1085
+ # line 1086 "vm.inc"
1099
1086
  # undef NAME_OF_CURRENT_INSN
1100
1087
 
1101
1088
  /* ### Instruction trailers. ### */
@@ -1131,11 +1118,11 @@ INSN_ENTRY(intern)
1131
1118
 
1132
1119
  /* ### Here we do the instruction body. ### */
1133
1120
  # define NAME_OF_CURRENT_INSN intern
1134
- # line 443 "insns.def"
1121
+ # line 430 "insns.def"
1135
1122
  {
1136
1123
  sym = rb_str_intern(str);
1137
1124
  }
1138
- # line 1139 "vm.inc"
1125
+ # line 1126 "vm.inc"
1139
1126
  # undef NAME_OF_CURRENT_INSN
1140
1127
 
1141
1128
  /* ### Instruction trailers. ### */
@@ -1172,11 +1159,11 @@ INSN_ENTRY(newarray)
1172
1159
 
1173
1160
  /* ### Here we do the instruction body. ### */
1174
1161
  # define NAME_OF_CURRENT_INSN newarray
1175
- # line 454 "insns.def"
1162
+ # line 441 "insns.def"
1176
1163
  {
1177
1164
  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
1178
1165
  }
1179
- # line 1180 "vm.inc"
1166
+ # line 1167 "vm.inc"
1180
1167
  # undef NAME_OF_CURRENT_INSN
1181
1168
 
1182
1169
  /* ### Instruction trailers. ### */
@@ -1213,7 +1200,7 @@ INSN_ENTRY(newarraykwsplat)
1213
1200
 
1214
1201
  /* ### Here we do the instruction body. ### */
1215
1202
  # define NAME_OF_CURRENT_INSN newarraykwsplat
1216
- # line 469 "insns.def"
1203
+ # line 456 "insns.def"
1217
1204
  {
1218
1205
  if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
1219
1206
  val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
@@ -1222,7 +1209,7 @@ INSN_ENTRY(newarraykwsplat)
1222
1209
  val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
1223
1210
  }
1224
1211
  }
1225
- # line 1226 "vm.inc"
1212
+ # line 1213 "vm.inc"
1226
1213
  # undef NAME_OF_CURRENT_INSN
1227
1214
 
1228
1215
  /* ### Instruction trailers. ### */
@@ -1259,12 +1246,12 @@ INSN_ENTRY(duparray)
1259
1246
 
1260
1247
  /* ### Here we do the instruction body. ### */
1261
1248
  # define NAME_OF_CURRENT_INSN duparray
1262
- # line 484 "insns.def"
1249
+ # line 471 "insns.def"
1263
1250
  {
1264
1251
  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
1265
1252
  val = rb_ary_resurrect(ary);
1266
1253
  }
1267
- # line 1268 "vm.inc"
1254
+ # line 1255 "vm.inc"
1268
1255
  # undef NAME_OF_CURRENT_INSN
1269
1256
 
1270
1257
  /* ### Instruction trailers. ### */
@@ -1301,12 +1288,12 @@ INSN_ENTRY(duphash)
1301
1288
 
1302
1289
  /* ### Here we do the instruction body. ### */
1303
1290
  # define NAME_OF_CURRENT_INSN duphash
1304
- # line 495 "insns.def"
1291
+ # line 482 "insns.def"
1305
1292
  {
1306
1293
  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
1307
1294
  val = rb_hash_resurrect(hash);
1308
1295
  }
1309
- # line 1310 "vm.inc"
1296
+ # line 1297 "vm.inc"
1310
1297
  # undef NAME_OF_CURRENT_INSN
1311
1298
 
1312
1299
  /* ### Instruction trailers. ### */
@@ -1338,22 +1325,22 @@ INSN_ENTRY(expandarray)
1338
1325
 
1339
1326
  /* ### Instruction preambles. ### */
1340
1327
  ADD_PC(INSN_ATTR(width));
1328
+ POPN(INSN_ATTR(popn));
1341
1329
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1342
1330
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
1343
1331
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, flag);
1344
1332
 
1345
1333
  /* ### Here we do the instruction body. ### */
1346
1334
  # define NAME_OF_CURRENT_INSN expandarray
1347
- # line 516 "insns.def"
1335
+ # line 504 "insns.def"
1348
1336
  {
1349
- vm_expandarray(GET_SP(), ary, num, (int)flag);
1337
+ vm_expandarray(GET_CFP(), ary, num, (int)flag);
1350
1338
  }
1351
- # line 1352 "vm.inc"
1339
+ # line 1340 "vm.inc"
1352
1340
  # undef NAME_OF_CURRENT_INSN
1353
1341
 
1354
1342
  /* ### Instruction trailers. ### */
1355
1343
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1356
- INC_SP(INSN_ATTR(sp_inc));
1357
1344
  # undef INSN_ATTR
1358
1345
 
1359
1346
  /* ### Leave the instruction. ### */
@@ -1381,11 +1368,11 @@ INSN_ENTRY(concatarray)
1381
1368
 
1382
1369
  /* ### Here we do the instruction body. ### */
1383
1370
  # define NAME_OF_CURRENT_INSN concatarray
1384
- # line 527 "insns.def"
1371
+ # line 515 "insns.def"
1385
1372
  {
1386
1373
  ary = vm_concat_array(ary1, ary2);
1387
1374
  }
1388
- # line 1389 "vm.inc"
1375
+ # line 1376 "vm.inc"
1389
1376
  # undef NAME_OF_CURRENT_INSN
1390
1377
 
1391
1378
  /* ### Instruction trailers. ### */
@@ -1423,11 +1410,11 @@ INSN_ENTRY(splatarray)
1423
1410
 
1424
1411
  /* ### Here we do the instruction body. ### */
1425
1412
  # define NAME_OF_CURRENT_INSN splatarray
1426
- # line 538 "insns.def"
1413
+ # line 526 "insns.def"
1427
1414
  {
1428
1415
  obj = vm_splat_array(flag, ary);
1429
1416
  }
1430
- # line 1431 "vm.inc"
1417
+ # line 1418 "vm.inc"
1431
1418
  # undef NAME_OF_CURRENT_INSN
1432
1419
 
1433
1420
  /* ### Instruction trailers. ### */
@@ -1443,6 +1430,50 @@ INSN_ENTRY(splatarray)
1443
1430
  END_INSN(splatarray);
1444
1431
  }
1445
1432
 
1433
+ /* insn splatkw()(hash, block)(obj, block) */
1434
+ INSN_ENTRY(splatkw)
1435
+ {
1436
+ /* ### Declare that we have just entered into an instruction. ### */
1437
+ START_OF_ORIGINAL_INSN(splatkw);
1438
+ DEBUG_ENTER_INSN("splatkw");
1439
+
1440
+ /* ### Declare and assign variables. ### */
1441
+ # define INSN_ATTR(x) attr_ ## x ## _splatkw()
1442
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1443
+ VALUE hash = TOPN(1);
1444
+ VALUE block = TOPN(0);
1445
+ VALUE obj;
1446
+
1447
+ /* ### Instruction preambles. ### */
1448
+ ADD_PC(INSN_ATTR(width));
1449
+ SETUP_CANARY(leaf);
1450
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
1451
+
1452
+ /* ### Here we do the instruction body. ### */
1453
+ # define NAME_OF_CURRENT_INSN splatkw
1454
+ # line 537 "insns.def"
1455
+ {
1456
+ obj = rb_to_hash_type(hash);
1457
+ }
1458
+ # line 1459 "vm.inc"
1459
+ # undef NAME_OF_CURRENT_INSN
1460
+
1461
+ /* ### Instruction trailers. ### */
1462
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1463
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
1464
+ INC_SP(INSN_ATTR(sp_inc));
1465
+ TOPN(0) = block;
1466
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1467
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1468
+ TOPN(1) = obj;
1469
+ VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
1470
+ VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
1471
+ # undef INSN_ATTR
1472
+
1473
+ /* ### Leave the instruction. ### */
1474
+ END_INSN(splatkw);
1475
+ }
1476
+
1446
1477
  /* insn newhash(num)(...)(val) */
1447
1478
  INSN_ENTRY(newhash)
1448
1479
  {
@@ -1464,7 +1495,7 @@ INSN_ENTRY(newhash)
1464
1495
 
1465
1496
  /* ### Here we do the instruction body. ### */
1466
1497
  # define NAME_OF_CURRENT_INSN newhash
1467
- # line 550 "insns.def"
1498
+ # line 549 "insns.def"
1468
1499
  {
1469
1500
  RUBY_DTRACE_CREATE_HOOK(HASH, num);
1470
1501
 
@@ -1476,7 +1507,7 @@ INSN_ENTRY(newhash)
1476
1507
  val = rb_hash_new();
1477
1508
  }
1478
1509
  }
1479
- # line 1480 "vm.inc"
1510
+ # line 1511 "vm.inc"
1480
1511
  # undef NAME_OF_CURRENT_INSN
1481
1512
 
1482
1513
  /* ### Instruction trailers. ### */
@@ -1515,11 +1546,11 @@ INSN_ENTRY(newrange)
1515
1546
 
1516
1547
  /* ### Here we do the instruction body. ### */
1517
1548
  # define NAME_OF_CURRENT_INSN newrange
1518
- # line 570 "insns.def"
1549
+ # line 569 "insns.def"
1519
1550
  {
1520
1551
  val = rb_range_new(low, high, (int)flag);
1521
1552
  }
1522
- # line 1523 "vm.inc"
1553
+ # line 1554 "vm.inc"
1523
1554
  # undef NAME_OF_CURRENT_INSN
1524
1555
 
1525
1556
  /* ### Instruction trailers. ### */
@@ -1554,12 +1585,12 @@ INSN_ENTRY(pop)
1554
1585
 
1555
1586
  /* ### Here we do the instruction body. ### */
1556
1587
  # define NAME_OF_CURRENT_INSN pop
1557
- # line 584 "insns.def"
1588
+ # line 583 "insns.def"
1558
1589
  {
1559
1590
  (void)val;
1560
1591
  /* none */
1561
1592
  }
1562
- # line 1563 "vm.inc"
1593
+ # line 1594 "vm.inc"
1563
1594
  # undef NAME_OF_CURRENT_INSN
1564
1595
 
1565
1596
  /* ### Instruction trailers. ### */
@@ -1593,11 +1624,11 @@ INSN_ENTRY(dup)
1593
1624
 
1594
1625
  /* ### Here we do the instruction body. ### */
1595
1626
  # define NAME_OF_CURRENT_INSN dup
1596
- # line 595 "insns.def"
1627
+ # line 594 "insns.def"
1597
1628
  {
1598
1629
  val1 = val2 = val;
1599
1630
  }
1600
- # line 1601 "vm.inc"
1631
+ # line 1632 "vm.inc"
1601
1632
  # undef NAME_OF_CURRENT_INSN
1602
1633
 
1603
1634
  /* ### Instruction trailers. ### */
@@ -1635,14 +1666,14 @@ INSN_ENTRY(dupn)
1635
1666
 
1636
1667
  /* ### Here we do the instruction body. ### */
1637
1668
  # define NAME_OF_CURRENT_INSN dupn
1638
- # line 606 "insns.def"
1669
+ # line 605 "insns.def"
1639
1670
  {
1640
1671
  void *dst = GET_SP();
1641
1672
  void *src = STACK_ADDR_FROM_TOP(n);
1642
1673
 
1643
1674
  MEMCPY(dst, src, VALUE, n);
1644
1675
  }
1645
- # line 1646 "vm.inc"
1676
+ # line 1677 "vm.inc"
1646
1677
  # undef NAME_OF_CURRENT_INSN
1647
1678
 
1648
1679
  /* ### Instruction trailers. ### */
@@ -1705,7 +1736,7 @@ INSN_ENTRY(opt_reverse)
1705
1736
 
1706
1737
  /* ### Here we do the instruction body. ### */
1707
1738
  # define NAME_OF_CURRENT_INSN opt_reverse
1708
- # line 630 "insns.def"
1739
+ # line 629 "insns.def"
1709
1740
  {
1710
1741
  rb_num_t i;
1711
1742
  VALUE *sp = STACK_ADDR_FROM_TOP(n);
@@ -1717,7 +1748,7 @@ INSN_ENTRY(opt_reverse)
1717
1748
  TOPN(i) = v0;
1718
1749
  }
1719
1750
  }
1720
- # line 1721 "vm.inc"
1751
+ # line 1752 "vm.inc"
1721
1752
  # undef NAME_OF_CURRENT_INSN
1722
1753
 
1723
1754
  /* ### Instruction trailers. ### */
@@ -1750,11 +1781,11 @@ INSN_ENTRY(topn)
1750
1781
 
1751
1782
  /* ### Here we do the instruction body. ### */
1752
1783
  # define NAME_OF_CURRENT_INSN topn
1753
- # line 660 "insns.def"
1784
+ # line 659 "insns.def"
1754
1785
  {
1755
1786
  val = TOPN(n);
1756
1787
  }
1757
- # line 1758 "vm.inc"
1788
+ # line 1789 "vm.inc"
1758
1789
  # undef NAME_OF_CURRENT_INSN
1759
1790
 
1760
1791
  /* ### Instruction trailers. ### */
@@ -1791,11 +1822,11 @@ INSN_ENTRY(setn)
1791
1822
 
1792
1823
  /* ### Here we do the instruction body. ### */
1793
1824
  # define NAME_OF_CURRENT_INSN setn
1794
- # line 671 "insns.def"
1825
+ # line 670 "insns.def"
1795
1826
  {
1796
1827
  TOPN(n) = val;
1797
1828
  }
1798
- # line 1799 "vm.inc"
1829
+ # line 1830 "vm.inc"
1799
1830
  # undef NAME_OF_CURRENT_INSN
1800
1831
 
1801
1832
  /* ### Instruction trailers. ### */
@@ -1863,14 +1894,14 @@ INSN_ENTRY(defined)
1863
1894
 
1864
1895
  /* ### Here we do the instruction body. ### */
1865
1896
  # define NAME_OF_CURRENT_INSN defined
1866
- # line 697 "insns.def"
1897
+ # line 696 "insns.def"
1867
1898
  {
1868
1899
  val = Qnil;
1869
1900
  if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
1870
1901
  val = pushval;
1871
1902
  }
1872
1903
  }
1873
- # line 1874 "vm.inc"
1904
+ # line 1905 "vm.inc"
1874
1905
  # undef NAME_OF_CURRENT_INSN
1875
1906
 
1876
1907
  /* ### Instruction trailers. ### */
@@ -1911,14 +1942,14 @@ INSN_ENTRY(definedivar)
1911
1942
 
1912
1943
  /* ### Here we do the instruction body. ### */
1913
1944
  # define NAME_OF_CURRENT_INSN definedivar
1914
- # line 711 "insns.def"
1945
+ # line 710 "insns.def"
1915
1946
  {
1916
1947
  val = Qnil;
1917
1948
  if (vm_getivar(GET_SELF(), id, GET_ISEQ(), ic, NULL, FALSE, Qundef) != Qundef) {
1918
1949
  val = pushval;
1919
1950
  }
1920
1951
  }
1921
- # line 1922 "vm.inc"
1952
+ # line 1953 "vm.inc"
1922
1953
  # undef NAME_OF_CURRENT_INSN
1923
1954
 
1924
1955
  /* ### Instruction trailers. ### */
@@ -1957,11 +1988,11 @@ INSN_ENTRY(checkmatch)
1957
1988
 
1958
1989
  /* ### Here we do the instruction body. ### */
1959
1990
  # define NAME_OF_CURRENT_INSN checkmatch
1960
- # line 731 "insns.def"
1991
+ # line 730 "insns.def"
1961
1992
  {
1962
1993
  result = vm_check_match(ec, target, pattern, flag);
1963
1994
  }
1964
- # line 1965 "vm.inc"
1995
+ # line 1996 "vm.inc"
1965
1996
  # undef NAME_OF_CURRENT_INSN
1966
1997
 
1967
1998
  /* ### Instruction trailers. ### */
@@ -2000,11 +2031,11 @@ INSN_ENTRY(checkkeyword)
2000
2031
 
2001
2032
  /* ### Here we do the instruction body. ### */
2002
2033
  # define NAME_OF_CURRENT_INSN checkkeyword
2003
- # line 741 "insns.def"
2034
+ # line 740 "insns.def"
2004
2035
  {
2005
2036
  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
2006
2037
  }
2007
- # line 2008 "vm.inc"
2038
+ # line 2039 "vm.inc"
2008
2039
  # undef NAME_OF_CURRENT_INSN
2009
2040
 
2010
2041
  /* ### Instruction trailers. ### */
@@ -2042,11 +2073,11 @@ INSN_ENTRY(checktype)
2042
2073
 
2043
2074
  /* ### Here we do the instruction body. ### */
2044
2075
  # define NAME_OF_CURRENT_INSN checktype
2045
- # line 751 "insns.def"
2076
+ # line 750 "insns.def"
2046
2077
  {
2047
2078
  ret = RBOOL(TYPE(val) == (int)type);
2048
2079
  }
2049
- # line 2050 "vm.inc"
2080
+ # line 2081 "vm.inc"
2050
2081
  # undef NAME_OF_CURRENT_INSN
2051
2082
 
2052
2083
  /* ### Instruction trailers. ### */
@@ -2090,7 +2121,7 @@ INSN_ENTRY(defineclass)
2090
2121
 
2091
2122
  /* ### Here we do the instruction body. ### */
2092
2123
  # define NAME_OF_CURRENT_INSN defineclass
2093
- # line 767 "insns.def"
2124
+ # line 766 "insns.def"
2094
2125
  {
2095
2126
  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
2096
2127
 
@@ -2106,7 +2137,7 @@ INSN_ENTRY(defineclass)
2106
2137
  RESTORE_REGS();
2107
2138
  NEXT_INSN();
2108
2139
  }
2109
- # line 2110 "vm.inc"
2140
+ # line 2141 "vm.inc"
2110
2141
  # undef NAME_OF_CURRENT_INSN
2111
2142
 
2112
2143
  /* ### Instruction trailers. ### */
@@ -2142,11 +2173,11 @@ INSN_ENTRY(definemethod)
2142
2173
 
2143
2174
  /* ### Here we do the instruction body. ### */
2144
2175
  # define NAME_OF_CURRENT_INSN definemethod
2145
- # line 788 "insns.def"
2176
+ # line 787 "insns.def"
2146
2177
  {
2147
2178
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2148
2179
  }
2149
- # line 2150 "vm.inc"
2180
+ # line 2181 "vm.inc"
2150
2181
  # undef NAME_OF_CURRENT_INSN
2151
2182
 
2152
2183
  /* ### Instruction trailers. ### */
@@ -2182,11 +2213,11 @@ INSN_ENTRY(definesmethod)
2182
2213
 
2183
2214
  /* ### Here we do the instruction body. ### */
2184
2215
  # define NAME_OF_CURRENT_INSN definesmethod
2185
- # line 797 "insns.def"
2216
+ # line 796 "insns.def"
2186
2217
  {
2187
2218
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2188
2219
  }
2189
- # line 2190 "vm.inc"
2220
+ # line 2221 "vm.inc"
2190
2221
  # undef NAME_OF_CURRENT_INSN
2191
2222
 
2192
2223
  /* ### Instruction trailers. ### */
@@ -2222,7 +2253,7 @@ INSN_ENTRY(send)
2222
2253
 
2223
2254
  /* ### Here we do the instruction body. ### */
2224
2255
  # define NAME_OF_CURRENT_INSN send
2225
- # line 813 "insns.def"
2256
+ # line 812 "insns.def"
2226
2257
  {
2227
2258
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
2228
2259
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2233,7 +2264,7 @@ INSN_ENTRY(send)
2233
2264
  NEXT_INSN();
2234
2265
  }
2235
2266
  }
2236
- # line 2237 "vm.inc"
2267
+ # line 2268 "vm.inc"
2237
2268
  # undef NAME_OF_CURRENT_INSN
2238
2269
 
2239
2270
  /* ### Instruction trailers. ### */
@@ -2268,7 +2299,7 @@ INSN_ENTRY(opt_send_without_block)
2268
2299
 
2269
2300
  /* ### Here we do the instruction body. ### */
2270
2301
  # define NAME_OF_CURRENT_INSN opt_send_without_block
2271
- # line 833 "insns.def"
2302
+ # line 832 "insns.def"
2272
2303
  {
2273
2304
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2274
2305
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2279,7 +2310,7 @@ INSN_ENTRY(opt_send_without_block)
2279
2310
  NEXT_INSN();
2280
2311
  }
2281
2312
  }
2282
- # line 2283 "vm.inc"
2313
+ # line 2314 "vm.inc"
2283
2314
  # undef NAME_OF_CURRENT_INSN
2284
2315
 
2285
2316
  /* ### Instruction trailers. ### */
@@ -2314,7 +2345,7 @@ INSN_ENTRY(objtostring)
2314
2345
 
2315
2346
  /* ### Here we do the instruction body. ### */
2316
2347
  # define NAME_OF_CURRENT_INSN objtostring
2317
- # line 851 "insns.def"
2348
+ # line 850 "insns.def"
2318
2349
  {
2319
2350
  val = vm_objtostring(GET_ISEQ(), recv, cd);
2320
2351
 
@@ -2322,7 +2353,7 @@ INSN_ENTRY(objtostring)
2322
2353
  CALL_SIMPLE_METHOD();
2323
2354
  }
2324
2355
  }
2325
- # line 2326 "vm.inc"
2356
+ # line 2357 "vm.inc"
2326
2357
  # undef NAME_OF_CURRENT_INSN
2327
2358
 
2328
2359
  /* ### Instruction trailers. ### */
@@ -2361,7 +2392,7 @@ INSN_ENTRY(opt_str_freeze)
2361
2392
 
2362
2393
  /* ### Here we do the instruction body. ### */
2363
2394
  # define NAME_OF_CURRENT_INSN opt_str_freeze
2364
- # line 864 "insns.def"
2395
+ # line 863 "insns.def"
2365
2396
  {
2366
2397
  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
2367
2398
 
@@ -2370,7 +2401,7 @@ INSN_ENTRY(opt_str_freeze)
2370
2401
  CALL_SIMPLE_METHOD();
2371
2402
  }
2372
2403
  }
2373
- # line 2374 "vm.inc"
2404
+ # line 2405 "vm.inc"
2374
2405
  # undef NAME_OF_CURRENT_INSN
2375
2406
 
2376
2407
  /* ### Instruction trailers. ### */
@@ -2408,7 +2439,7 @@ INSN_ENTRY(opt_nil_p)
2408
2439
 
2409
2440
  /* ### Here we do the instruction body. ### */
2410
2441
  # define NAME_OF_CURRENT_INSN opt_nil_p
2411
- # line 879 "insns.def"
2442
+ # line 878 "insns.def"
2412
2443
  {
2413
2444
  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
2414
2445
 
@@ -2416,7 +2447,7 @@ INSN_ENTRY(opt_nil_p)
2416
2447
  CALL_SIMPLE_METHOD();
2417
2448
  }
2418
2449
  }
2419
- # line 2420 "vm.inc"
2450
+ # line 2451 "vm.inc"
2420
2451
  # undef NAME_OF_CURRENT_INSN
2421
2452
 
2422
2453
  /* ### Instruction trailers. ### */
@@ -2455,7 +2486,7 @@ INSN_ENTRY(opt_str_uminus)
2455
2486
 
2456
2487
  /* ### Here we do the instruction body. ### */
2457
2488
  # define NAME_OF_CURRENT_INSN opt_str_uminus
2458
- # line 892 "insns.def"
2489
+ # line 891 "insns.def"
2459
2490
  {
2460
2491
  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
2461
2492
 
@@ -2464,7 +2495,7 @@ INSN_ENTRY(opt_str_uminus)
2464
2495
  CALL_SIMPLE_METHOD();
2465
2496
  }
2466
2497
  }
2467
- # line 2468 "vm.inc"
2498
+ # line 2499 "vm.inc"
2468
2499
  # undef NAME_OF_CURRENT_INSN
2469
2500
 
2470
2501
  /* ### Instruction trailers. ### */
@@ -2503,7 +2534,7 @@ INSN_ENTRY(opt_newarray_send)
2503
2534
 
2504
2535
  /* ### Here we do the instruction body. ### */
2505
2536
  # define NAME_OF_CURRENT_INSN opt_newarray_send
2506
- # line 913 "insns.def"
2537
+ # line 912 "insns.def"
2507
2538
  {
2508
2539
  switch(method) {
2509
2540
  case idHash:
@@ -2519,7 +2550,7 @@ INSN_ENTRY(opt_newarray_send)
2519
2550
  rb_bug("unreachable");
2520
2551
  }
2521
2552
  }
2522
- # line 2523 "vm.inc"
2553
+ # line 2554 "vm.inc"
2523
2554
  # undef NAME_OF_CURRENT_INSN
2524
2555
 
2525
2556
  /* ### Instruction trailers. ### */
@@ -2559,7 +2590,7 @@ INSN_ENTRY(invokesuper)
2559
2590
 
2560
2591
  /* ### Here we do the instruction body. ### */
2561
2592
  # define NAME_OF_CURRENT_INSN invokesuper
2562
- # line 937 "insns.def"
2593
+ # line 936 "insns.def"
2563
2594
  {
2564
2595
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
2565
2596
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
@@ -2570,7 +2601,7 @@ INSN_ENTRY(invokesuper)
2570
2601
  NEXT_INSN();
2571
2602
  }
2572
2603
  }
2573
- # line 2574 "vm.inc"
2604
+ # line 2605 "vm.inc"
2574
2605
  # undef NAME_OF_CURRENT_INSN
2575
2606
 
2576
2607
  /* ### Instruction trailers. ### */
@@ -2605,7 +2636,7 @@ INSN_ENTRY(invokeblock)
2605
2636
 
2606
2637
  /* ### Here we do the instruction body. ### */
2607
2638
  # define NAME_OF_CURRENT_INSN invokeblock
2608
- # line 957 "insns.def"
2639
+ # line 956 "insns.def"
2609
2640
  {
2610
2641
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2611
2642
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
@@ -2616,7 +2647,7 @@ INSN_ENTRY(invokeblock)
2616
2647
  NEXT_INSN();
2617
2648
  }
2618
2649
  }
2619
- # line 2620 "vm.inc"
2650
+ # line 2651 "vm.inc"
2620
2651
  # undef NAME_OF_CURRENT_INSN
2621
2652
 
2622
2653
  /* ### Instruction trailers. ### */
@@ -2649,7 +2680,7 @@ INSN_ENTRY(leave)
2649
2680
 
2650
2681
  /* ### Here we do the instruction body. ### */
2651
2682
  # define NAME_OF_CURRENT_INSN leave
2652
- # line 979 "insns.def"
2683
+ # line 978 "insns.def"
2653
2684
  {
2654
2685
  if (OPT_CHECKED_RUN) {
2655
2686
  const VALUE *const bp = vm_base_ptr(GET_CFP());
@@ -2670,7 +2701,7 @@ INSN_ENTRY(leave)
2670
2701
  RESTORE_REGS();
2671
2702
  }
2672
2703
  }
2673
- # line 2674 "vm.inc"
2704
+ # line 2705 "vm.inc"
2674
2705
  # undef NAME_OF_CURRENT_INSN
2675
2706
 
2676
2707
  /* ### Instruction trailers. ### */
@@ -2705,13 +2736,13 @@ INSN_ENTRY(throw)
2705
2736
 
2706
2737
  /* ### Here we do the instruction body. ### */
2707
2738
  # define NAME_OF_CURRENT_INSN throw
2708
- # line 1012 "insns.def"
2739
+ # line 1011 "insns.def"
2709
2740
  {
2710
2741
  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
2711
2742
  THROW_EXCEPTION(val);
2712
2743
  /* unreachable */
2713
2744
  }
2714
- # line 2715 "vm.inc"
2745
+ # line 2746 "vm.inc"
2715
2746
  # undef NAME_OF_CURRENT_INSN
2716
2747
 
2717
2748
  /* ### Instruction trailers. ### */
@@ -2747,12 +2778,12 @@ INSN_ENTRY(jump)
2747
2778
 
2748
2779
  /* ### Here we do the instruction body. ### */
2749
2780
  # define NAME_OF_CURRENT_INSN jump
2750
- # line 1030 "insns.def"
2781
+ # line 1029 "insns.def"
2751
2782
  {
2752
2783
  RUBY_VM_CHECK_INTS(ec);
2753
2784
  JUMP(dst);
2754
2785
  }
2755
- # line 2756 "vm.inc"
2786
+ # line 2787 "vm.inc"
2756
2787
  # undef NAME_OF_CURRENT_INSN
2757
2788
 
2758
2789
  /* ### Instruction trailers. ### */
@@ -2786,14 +2817,14 @@ INSN_ENTRY(branchif)
2786
2817
 
2787
2818
  /* ### Here we do the instruction body. ### */
2788
2819
  # define NAME_OF_CURRENT_INSN branchif
2789
- # line 1043 "insns.def"
2820
+ # line 1042 "insns.def"
2790
2821
  {
2791
2822
  if (RTEST(val)) {
2792
2823
  RUBY_VM_CHECK_INTS(ec);
2793
2824
  JUMP(dst);
2794
2825
  }
2795
2826
  }
2796
- # line 2797 "vm.inc"
2827
+ # line 2828 "vm.inc"
2797
2828
  # undef NAME_OF_CURRENT_INSN
2798
2829
 
2799
2830
  /* ### Instruction trailers. ### */
@@ -2827,14 +2858,14 @@ INSN_ENTRY(branchunless)
2827
2858
 
2828
2859
  /* ### Here we do the instruction body. ### */
2829
2860
  # define NAME_OF_CURRENT_INSN branchunless
2830
- # line 1058 "insns.def"
2861
+ # line 1057 "insns.def"
2831
2862
  {
2832
2863
  if (!RTEST(val)) {
2833
2864
  RUBY_VM_CHECK_INTS(ec);
2834
2865
  JUMP(dst);
2835
2866
  }
2836
2867
  }
2837
- # line 2838 "vm.inc"
2868
+ # line 2869 "vm.inc"
2838
2869
  # undef NAME_OF_CURRENT_INSN
2839
2870
 
2840
2871
  /* ### Instruction trailers. ### */
@@ -2868,14 +2899,14 @@ INSN_ENTRY(branchnil)
2868
2899
 
2869
2900
  /* ### Here we do the instruction body. ### */
2870
2901
  # define NAME_OF_CURRENT_INSN branchnil
2871
- # line 1073 "insns.def"
2902
+ # line 1072 "insns.def"
2872
2903
  {
2873
2904
  if (NIL_P(val)) {
2874
2905
  RUBY_VM_CHECK_INTS(ec);
2875
2906
  JUMP(dst);
2876
2907
  }
2877
2908
  }
2878
- # line 2879 "vm.inc"
2909
+ # line 2910 "vm.inc"
2879
2910
  # undef NAME_OF_CURRENT_INSN
2880
2911
 
2881
2912
  /* ### Instruction trailers. ### */
@@ -2912,11 +2943,11 @@ INSN_ENTRY(once)
2912
2943
 
2913
2944
  /* ### Here we do the instruction body. ### */
2914
2945
  # define NAME_OF_CURRENT_INSN once
2915
- # line 1090 "insns.def"
2946
+ # line 1089 "insns.def"
2916
2947
  {
2917
2948
  val = vm_once_dispatch(ec, iseq, ise);
2918
2949
  }
2919
- # line 2920 "vm.inc"
2950
+ # line 2951 "vm.inc"
2920
2951
  # undef NAME_OF_CURRENT_INSN
2921
2952
 
2922
2953
  /* ### Instruction trailers. ### */
@@ -2952,7 +2983,7 @@ INSN_ENTRY(opt_case_dispatch)
2952
2983
 
2953
2984
  /* ### Here we do the instruction body. ### */
2954
2985
  # define NAME_OF_CURRENT_INSN opt_case_dispatch
2955
- # line 1101 "insns.def"
2986
+ # line 1100 "insns.def"
2956
2987
  {
2957
2988
  OFFSET dst = vm_case_dispatch(hash, else_offset, key);
2958
2989
 
@@ -2960,7 +2991,7 @@ INSN_ENTRY(opt_case_dispatch)
2960
2991
  JUMP(dst);
2961
2992
  }
2962
2993
  }
2963
- # line 2964 "vm.inc"
2994
+ # line 2995 "vm.inc"
2964
2995
  # undef NAME_OF_CURRENT_INSN
2965
2996
 
2966
2997
  /* ### Instruction trailers. ### */
@@ -2996,7 +3027,7 @@ INSN_ENTRY(opt_plus)
2996
3027
 
2997
3028
  /* ### Here we do the instruction body. ### */
2998
3029
  # define NAME_OF_CURRENT_INSN opt_plus
2999
- # line 1117 "insns.def"
3030
+ # line 1116 "insns.def"
3000
3031
  {
3001
3032
  val = vm_opt_plus(recv, obj);
3002
3033
 
@@ -3004,7 +3035,7 @@ INSN_ENTRY(opt_plus)
3004
3035
  CALL_SIMPLE_METHOD();
3005
3036
  }
3006
3037
  }
3007
- # line 3008 "vm.inc"
3038
+ # line 3039 "vm.inc"
3008
3039
  # undef NAME_OF_CURRENT_INSN
3009
3040
 
3010
3041
  /* ### Instruction trailers. ### */
@@ -3043,7 +3074,7 @@ INSN_ENTRY(opt_minus)
3043
3074
 
3044
3075
  /* ### Here we do the instruction body. ### */
3045
3076
  # define NAME_OF_CURRENT_INSN opt_minus
3046
- # line 1131 "insns.def"
3077
+ # line 1130 "insns.def"
3047
3078
  {
3048
3079
  val = vm_opt_minus(recv, obj);
3049
3080
 
@@ -3051,7 +3082,7 @@ INSN_ENTRY(opt_minus)
3051
3082
  CALL_SIMPLE_METHOD();
3052
3083
  }
3053
3084
  }
3054
- # line 3055 "vm.inc"
3085
+ # line 3086 "vm.inc"
3055
3086
  # undef NAME_OF_CURRENT_INSN
3056
3087
 
3057
3088
  /* ### Instruction trailers. ### */
@@ -3090,7 +3121,7 @@ INSN_ENTRY(opt_mult)
3090
3121
 
3091
3122
  /* ### Here we do the instruction body. ### */
3092
3123
  # define NAME_OF_CURRENT_INSN opt_mult
3093
- # line 1145 "insns.def"
3124
+ # line 1144 "insns.def"
3094
3125
  {
3095
3126
  val = vm_opt_mult(recv, obj);
3096
3127
 
@@ -3098,7 +3129,7 @@ INSN_ENTRY(opt_mult)
3098
3129
  CALL_SIMPLE_METHOD();
3099
3130
  }
3100
3131
  }
3101
- # line 3102 "vm.inc"
3132
+ # line 3133 "vm.inc"
3102
3133
  # undef NAME_OF_CURRENT_INSN
3103
3134
 
3104
3135
  /* ### Instruction trailers. ### */
@@ -3137,7 +3168,7 @@ INSN_ENTRY(opt_div)
3137
3168
 
3138
3169
  /* ### Here we do the instruction body. ### */
3139
3170
  # define NAME_OF_CURRENT_INSN opt_div
3140
- # line 1162 "insns.def"
3171
+ # line 1161 "insns.def"
3141
3172
  {
3142
3173
  val = vm_opt_div(recv, obj);
3143
3174
 
@@ -3145,7 +3176,7 @@ INSN_ENTRY(opt_div)
3145
3176
  CALL_SIMPLE_METHOD();
3146
3177
  }
3147
3178
  }
3148
- # line 3149 "vm.inc"
3179
+ # line 3180 "vm.inc"
3149
3180
  # undef NAME_OF_CURRENT_INSN
3150
3181
 
3151
3182
  /* ### Instruction trailers. ### */
@@ -3184,7 +3215,7 @@ INSN_ENTRY(opt_mod)
3184
3215
 
3185
3216
  /* ### Here we do the instruction body. ### */
3186
3217
  # define NAME_OF_CURRENT_INSN opt_mod
3187
- # line 1178 "insns.def"
3218
+ # line 1177 "insns.def"
3188
3219
  {
3189
3220
  val = vm_opt_mod(recv, obj);
3190
3221
 
@@ -3192,7 +3223,7 @@ INSN_ENTRY(opt_mod)
3192
3223
  CALL_SIMPLE_METHOD();
3193
3224
  }
3194
3225
  }
3195
- # line 3196 "vm.inc"
3226
+ # line 3227 "vm.inc"
3196
3227
  # undef NAME_OF_CURRENT_INSN
3197
3228
 
3198
3229
  /* ### Instruction trailers. ### */
@@ -3231,7 +3262,7 @@ INSN_ENTRY(opt_eq)
3231
3262
 
3232
3263
  /* ### Here we do the instruction body. ### */
3233
3264
  # define NAME_OF_CURRENT_INSN opt_eq
3234
- # line 1192 "insns.def"
3265
+ # line 1191 "insns.def"
3235
3266
  {
3236
3267
  val = opt_equality(GET_ISEQ(), recv, obj, cd);
3237
3268
 
@@ -3239,7 +3270,7 @@ INSN_ENTRY(opt_eq)
3239
3270
  CALL_SIMPLE_METHOD();
3240
3271
  }
3241
3272
  }
3242
- # line 3243 "vm.inc"
3273
+ # line 3274 "vm.inc"
3243
3274
  # undef NAME_OF_CURRENT_INSN
3244
3275
 
3245
3276
  /* ### Instruction trailers. ### */
@@ -3280,7 +3311,7 @@ INSN_ENTRY(opt_neq)
3280
3311
 
3281
3312
  /* ### Here we do the instruction body. ### */
3282
3313
  # define NAME_OF_CURRENT_INSN opt_neq
3283
- # line 1206 "insns.def"
3314
+ # line 1205 "insns.def"
3284
3315
  {
3285
3316
  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
3286
3317
 
@@ -3288,7 +3319,7 @@ INSN_ENTRY(opt_neq)
3288
3319
  CALL_SIMPLE_METHOD();
3289
3320
  }
3290
3321
  }
3291
- # line 3292 "vm.inc"
3322
+ # line 3323 "vm.inc"
3292
3323
  # undef NAME_OF_CURRENT_INSN
3293
3324
 
3294
3325
  /* ### Instruction trailers. ### */
@@ -3327,7 +3358,7 @@ INSN_ENTRY(opt_lt)
3327
3358
 
3328
3359
  /* ### Here we do the instruction body. ### */
3329
3360
  # define NAME_OF_CURRENT_INSN opt_lt
3330
- # line 1220 "insns.def"
3361
+ # line 1219 "insns.def"
3331
3362
  {
3332
3363
  val = vm_opt_lt(recv, obj);
3333
3364
 
@@ -3335,7 +3366,7 @@ INSN_ENTRY(opt_lt)
3335
3366
  CALL_SIMPLE_METHOD();
3336
3367
  }
3337
3368
  }
3338
- # line 3339 "vm.inc"
3369
+ # line 3370 "vm.inc"
3339
3370
  # undef NAME_OF_CURRENT_INSN
3340
3371
 
3341
3372
  /* ### Instruction trailers. ### */
@@ -3374,7 +3405,7 @@ INSN_ENTRY(opt_le)
3374
3405
 
3375
3406
  /* ### Here we do the instruction body. ### */
3376
3407
  # define NAME_OF_CURRENT_INSN opt_le
3377
- # line 1234 "insns.def"
3408
+ # line 1233 "insns.def"
3378
3409
  {
3379
3410
  val = vm_opt_le(recv, obj);
3380
3411
 
@@ -3382,7 +3413,7 @@ INSN_ENTRY(opt_le)
3382
3413
  CALL_SIMPLE_METHOD();
3383
3414
  }
3384
3415
  }
3385
- # line 3386 "vm.inc"
3416
+ # line 3417 "vm.inc"
3386
3417
  # undef NAME_OF_CURRENT_INSN
3387
3418
 
3388
3419
  /* ### Instruction trailers. ### */
@@ -3421,7 +3452,7 @@ INSN_ENTRY(opt_gt)
3421
3452
 
3422
3453
  /* ### Here we do the instruction body. ### */
3423
3454
  # define NAME_OF_CURRENT_INSN opt_gt
3424
- # line 1248 "insns.def"
3455
+ # line 1247 "insns.def"
3425
3456
  {
3426
3457
  val = vm_opt_gt(recv, obj);
3427
3458
 
@@ -3429,7 +3460,7 @@ INSN_ENTRY(opt_gt)
3429
3460
  CALL_SIMPLE_METHOD();
3430
3461
  }
3431
3462
  }
3432
- # line 3433 "vm.inc"
3463
+ # line 3464 "vm.inc"
3433
3464
  # undef NAME_OF_CURRENT_INSN
3434
3465
 
3435
3466
  /* ### Instruction trailers. ### */
@@ -3468,7 +3499,7 @@ INSN_ENTRY(opt_ge)
3468
3499
 
3469
3500
  /* ### Here we do the instruction body. ### */
3470
3501
  # define NAME_OF_CURRENT_INSN opt_ge
3471
- # line 1262 "insns.def"
3502
+ # line 1261 "insns.def"
3472
3503
  {
3473
3504
  val = vm_opt_ge(recv, obj);
3474
3505
 
@@ -3476,7 +3507,7 @@ INSN_ENTRY(opt_ge)
3476
3507
  CALL_SIMPLE_METHOD();
3477
3508
  }
3478
3509
  }
3479
- # line 3480 "vm.inc"
3510
+ # line 3511 "vm.inc"
3480
3511
  # undef NAME_OF_CURRENT_INSN
3481
3512
 
3482
3513
  /* ### Instruction trailers. ### */
@@ -3515,7 +3546,7 @@ INSN_ENTRY(opt_ltlt)
3515
3546
 
3516
3547
  /* ### Here we do the instruction body. ### */
3517
3548
  # define NAME_OF_CURRENT_INSN opt_ltlt
3518
- # line 1280 "insns.def"
3549
+ # line 1279 "insns.def"
3519
3550
  {
3520
3551
  val = vm_opt_ltlt(recv, obj);
3521
3552
 
@@ -3523,7 +3554,7 @@ INSN_ENTRY(opt_ltlt)
3523
3554
  CALL_SIMPLE_METHOD();
3524
3555
  }
3525
3556
  }
3526
- # line 3527 "vm.inc"
3557
+ # line 3558 "vm.inc"
3527
3558
  # undef NAME_OF_CURRENT_INSN
3528
3559
 
3529
3560
  /* ### Instruction trailers. ### */
@@ -3562,7 +3593,7 @@ INSN_ENTRY(opt_and)
3562
3593
 
3563
3594
  /* ### Here we do the instruction body. ### */
3564
3595
  # define NAME_OF_CURRENT_INSN opt_and
3565
- # line 1294 "insns.def"
3596
+ # line 1293 "insns.def"
3566
3597
  {
3567
3598
  val = vm_opt_and(recv, obj);
3568
3599
 
@@ -3570,7 +3601,7 @@ INSN_ENTRY(opt_and)
3570
3601
  CALL_SIMPLE_METHOD();
3571
3602
  }
3572
3603
  }
3573
- # line 3574 "vm.inc"
3604
+ # line 3605 "vm.inc"
3574
3605
  # undef NAME_OF_CURRENT_INSN
3575
3606
 
3576
3607
  /* ### Instruction trailers. ### */
@@ -3609,7 +3640,7 @@ INSN_ENTRY(opt_or)
3609
3640
 
3610
3641
  /* ### Here we do the instruction body. ### */
3611
3642
  # define NAME_OF_CURRENT_INSN opt_or
3612
- # line 1308 "insns.def"
3643
+ # line 1307 "insns.def"
3613
3644
  {
3614
3645
  val = vm_opt_or(recv, obj);
3615
3646
 
@@ -3617,7 +3648,7 @@ INSN_ENTRY(opt_or)
3617
3648
  CALL_SIMPLE_METHOD();
3618
3649
  }
3619
3650
  }
3620
- # line 3621 "vm.inc"
3651
+ # line 3652 "vm.inc"
3621
3652
  # undef NAME_OF_CURRENT_INSN
3622
3653
 
3623
3654
  /* ### Instruction trailers. ### */
@@ -3656,7 +3687,7 @@ INSN_ENTRY(opt_aref)
3656
3687
 
3657
3688
  /* ### Here we do the instruction body. ### */
3658
3689
  # define NAME_OF_CURRENT_INSN opt_aref
3659
- # line 1327 "insns.def"
3690
+ # line 1326 "insns.def"
3660
3691
  {
3661
3692
  val = vm_opt_aref(recv, obj);
3662
3693
 
@@ -3664,7 +3695,7 @@ INSN_ENTRY(opt_aref)
3664
3695
  CALL_SIMPLE_METHOD();
3665
3696
  }
3666
3697
  }
3667
- # line 3668 "vm.inc"
3698
+ # line 3699 "vm.inc"
3668
3699
  # undef NAME_OF_CURRENT_INSN
3669
3700
 
3670
3701
  /* ### Instruction trailers. ### */
@@ -3704,7 +3735,7 @@ INSN_ENTRY(opt_aset)
3704
3735
 
3705
3736
  /* ### Here we do the instruction body. ### */
3706
3737
  # define NAME_OF_CURRENT_INSN opt_aset
3707
- # line 1344 "insns.def"
3738
+ # line 1343 "insns.def"
3708
3739
  {
3709
3740
  val = vm_opt_aset(recv, obj, set);
3710
3741
 
@@ -3712,7 +3743,7 @@ INSN_ENTRY(opt_aset)
3712
3743
  CALL_SIMPLE_METHOD();
3713
3744
  }
3714
3745
  }
3715
- # line 3716 "vm.inc"
3746
+ # line 3747 "vm.inc"
3716
3747
  # undef NAME_OF_CURRENT_INSN
3717
3748
 
3718
3749
  /* ### Instruction trailers. ### */
@@ -3752,7 +3783,7 @@ INSN_ENTRY(opt_aset_with)
3752
3783
 
3753
3784
  /* ### Here we do the instruction body. ### */
3754
3785
  # define NAME_OF_CURRENT_INSN opt_aset_with
3755
- # line 1360 "insns.def"
3786
+ # line 1359 "insns.def"
3756
3787
  {
3757
3788
  VALUE tmp = vm_opt_aset_with(recv, key, val);
3758
3789
 
@@ -3765,7 +3796,7 @@ INSN_ENTRY(opt_aset_with)
3765
3796
  CALL_SIMPLE_METHOD();
3766
3797
  }
3767
3798
  }
3768
- # line 3769 "vm.inc"
3799
+ # line 3800 "vm.inc"
3769
3800
  # undef NAME_OF_CURRENT_INSN
3770
3801
 
3771
3802
  /* ### Instruction trailers. ### */
@@ -3805,7 +3836,7 @@ INSN_ENTRY(opt_aref_with)
3805
3836
 
3806
3837
  /* ### Here we do the instruction body. ### */
3807
3838
  # define NAME_OF_CURRENT_INSN opt_aref_with
3808
- # line 1381 "insns.def"
3839
+ # line 1380 "insns.def"
3809
3840
  {
3810
3841
  val = vm_opt_aref_with(recv, key);
3811
3842
 
@@ -3814,7 +3845,7 @@ INSN_ENTRY(opt_aref_with)
3814
3845
  CALL_SIMPLE_METHOD();
3815
3846
  }
3816
3847
  }
3817
- # line 3818 "vm.inc"
3848
+ # line 3849 "vm.inc"
3818
3849
  # undef NAME_OF_CURRENT_INSN
3819
3850
 
3820
3851
  /* ### Instruction trailers. ### */
@@ -3852,7 +3883,7 @@ INSN_ENTRY(opt_length)
3852
3883
 
3853
3884
  /* ### Here we do the instruction body. ### */
3854
3885
  # define NAME_OF_CURRENT_INSN opt_length
3855
- # line 1396 "insns.def"
3886
+ # line 1395 "insns.def"
3856
3887
  {
3857
3888
  val = vm_opt_length(recv, BOP_LENGTH);
3858
3889
 
@@ -3860,7 +3891,7 @@ INSN_ENTRY(opt_length)
3860
3891
  CALL_SIMPLE_METHOD();
3861
3892
  }
3862
3893
  }
3863
- # line 3864 "vm.inc"
3894
+ # line 3895 "vm.inc"
3864
3895
  # undef NAME_OF_CURRENT_INSN
3865
3896
 
3866
3897
  /* ### Instruction trailers. ### */
@@ -3898,7 +3929,7 @@ INSN_ENTRY(opt_size)
3898
3929
 
3899
3930
  /* ### Here we do the instruction body. ### */
3900
3931
  # define NAME_OF_CURRENT_INSN opt_size
3901
- # line 1410 "insns.def"
3932
+ # line 1409 "insns.def"
3902
3933
  {
3903
3934
  val = vm_opt_length(recv, BOP_SIZE);
3904
3935
 
@@ -3906,7 +3937,7 @@ INSN_ENTRY(opt_size)
3906
3937
  CALL_SIMPLE_METHOD();
3907
3938
  }
3908
3939
  }
3909
- # line 3910 "vm.inc"
3940
+ # line 3941 "vm.inc"
3910
3941
  # undef NAME_OF_CURRENT_INSN
3911
3942
 
3912
3943
  /* ### Instruction trailers. ### */
@@ -3944,7 +3975,7 @@ INSN_ENTRY(opt_empty_p)
3944
3975
 
3945
3976
  /* ### Here we do the instruction body. ### */
3946
3977
  # define NAME_OF_CURRENT_INSN opt_empty_p
3947
- # line 1424 "insns.def"
3978
+ # line 1423 "insns.def"
3948
3979
  {
3949
3980
  val = vm_opt_empty_p(recv);
3950
3981
 
@@ -3952,7 +3983,7 @@ INSN_ENTRY(opt_empty_p)
3952
3983
  CALL_SIMPLE_METHOD();
3953
3984
  }
3954
3985
  }
3955
- # line 3956 "vm.inc"
3986
+ # line 3987 "vm.inc"
3956
3987
  # undef NAME_OF_CURRENT_INSN
3957
3988
 
3958
3989
  /* ### Instruction trailers. ### */
@@ -3990,7 +4021,7 @@ INSN_ENTRY(opt_succ)
3990
4021
 
3991
4022
  /* ### Here we do the instruction body. ### */
3992
4023
  # define NAME_OF_CURRENT_INSN opt_succ
3993
- # line 1438 "insns.def"
4024
+ # line 1437 "insns.def"
3994
4025
  {
3995
4026
  val = vm_opt_succ(recv);
3996
4027
 
@@ -3998,7 +4029,7 @@ INSN_ENTRY(opt_succ)
3998
4029
  CALL_SIMPLE_METHOD();
3999
4030
  }
4000
4031
  }
4001
- # line 4002 "vm.inc"
4032
+ # line 4033 "vm.inc"
4002
4033
  # undef NAME_OF_CURRENT_INSN
4003
4034
 
4004
4035
  /* ### Instruction trailers. ### */
@@ -4036,7 +4067,7 @@ INSN_ENTRY(opt_not)
4036
4067
 
4037
4068
  /* ### Here we do the instruction body. ### */
4038
4069
  # define NAME_OF_CURRENT_INSN opt_not
4039
- # line 1452 "insns.def"
4070
+ # line 1451 "insns.def"
4040
4071
  {
4041
4072
  val = vm_opt_not(GET_ISEQ(), cd, recv);
4042
4073
 
@@ -4044,7 +4075,7 @@ INSN_ENTRY(opt_not)
4044
4075
  CALL_SIMPLE_METHOD();
4045
4076
  }
4046
4077
  }
4047
- # line 4048 "vm.inc"
4078
+ # line 4079 "vm.inc"
4048
4079
  # undef NAME_OF_CURRENT_INSN
4049
4080
 
4050
4081
  /* ### Instruction trailers. ### */
@@ -4083,7 +4114,7 @@ INSN_ENTRY(opt_regexpmatch2)
4083
4114
 
4084
4115
  /* ### Here we do the instruction body. ### */
4085
4116
  # define NAME_OF_CURRENT_INSN opt_regexpmatch2
4086
- # line 1467 "insns.def"
4117
+ # line 1466 "insns.def"
4087
4118
  {
4088
4119
  val = vm_opt_regexpmatch2(obj2, obj1);
4089
4120
 
@@ -4091,7 +4122,7 @@ INSN_ENTRY(opt_regexpmatch2)
4091
4122
  CALL_SIMPLE_METHOD();
4092
4123
  }
4093
4124
  }
4094
- # line 4095 "vm.inc"
4125
+ # line 4126 "vm.inc"
4095
4126
  # undef NAME_OF_CURRENT_INSN
4096
4127
 
4097
4128
  /* ### Instruction trailers. ### */
@@ -4128,11 +4159,11 @@ INSN_ENTRY(invokebuiltin)
4128
4159
 
4129
4160
  /* ### Here we do the instruction body. ### */
4130
4161
  # define NAME_OF_CURRENT_INSN invokebuiltin
4131
- # line 1483 "insns.def"
4162
+ # line 1482 "insns.def"
4132
4163
  {
4133
4164
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4134
4165
  }
4135
- # line 4136 "vm.inc"
4166
+ # line 4167 "vm.inc"
4136
4167
  # undef NAME_OF_CURRENT_INSN
4137
4168
 
4138
4169
  /* ### Instruction trailers. ### */
@@ -4171,11 +4202,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4171
4202
 
4172
4203
  /* ### Here we do the instruction body. ### */
4173
4204
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
4174
- # line 1494 "insns.def"
4205
+ # line 1493 "insns.def"
4175
4206
  {
4176
4207
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4177
4208
  }
4178
- # line 4179 "vm.inc"
4209
+ # line 4210 "vm.inc"
4179
4210
  # undef NAME_OF_CURRENT_INSN
4180
4211
 
4181
4212
  /* ### Instruction trailers. ### */
@@ -4214,7 +4245,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4214
4245
 
4215
4246
  /* ### Here we do the instruction body. ### */
4216
4247
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
4217
- # line 1505 "insns.def"
4248
+ # line 1504 "insns.def"
4218
4249
  {
4219
4250
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4220
4251
 
@@ -4232,7 +4263,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4232
4263
  RESTORE_REGS();
4233
4264
  }
4234
4265
  }
4235
- # line 4236 "vm.inc"
4266
+ # line 4267 "vm.inc"
4236
4267
  # undef NAME_OF_CURRENT_INSN
4237
4268
 
4238
4269
  /* ### Instruction trailers. ### */
@@ -4258,7 +4289,7 @@ INSN_ENTRY(getlocal_WC_0)
4258
4289
  /* ### Declare and assign variables. ### */
4259
4290
  #line 10 "defs/opt_operand.def"
4260
4291
  const rb_num_t level = 0;
4261
- #line 4262 "vm.inc"
4292
+ #line 4293 "vm.inc"
4262
4293
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4263
4294
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4264
4295
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4278,7 +4309,7 @@ INSN_ENTRY(getlocal_WC_0)
4278
4309
  RB_DEBUG_COUNTER_INC(lvar_get);
4279
4310
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4280
4311
  }
4281
- # line 4282 "vm.inc"
4312
+ # line 4313 "vm.inc"
4282
4313
  # undef NAME_OF_CURRENT_INSN
4283
4314
 
4284
4315
  /* ### Instruction trailers. ### */
@@ -4304,7 +4335,7 @@ INSN_ENTRY(getlocal_WC_1)
4304
4335
  /* ### Declare and assign variables. ### */
4305
4336
  #line 11 "defs/opt_operand.def"
4306
4337
  const rb_num_t level = 1;
4307
- #line 4308 "vm.inc"
4338
+ #line 4339 "vm.inc"
4308
4339
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4309
4340
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4310
4341
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4324,7 +4355,7 @@ INSN_ENTRY(getlocal_WC_1)
4324
4355
  RB_DEBUG_COUNTER_INC(lvar_get);
4325
4356
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4326
4357
  }
4327
- # line 4328 "vm.inc"
4358
+ # line 4359 "vm.inc"
4328
4359
  # undef NAME_OF_CURRENT_INSN
4329
4360
 
4330
4361
  /* ### Instruction trailers. ### */
@@ -4350,7 +4381,7 @@ INSN_ENTRY(setlocal_WC_0)
4350
4381
  /* ### Declare and assign variables. ### */
4351
4382
  #line 12 "defs/opt_operand.def"
4352
4383
  const rb_num_t level = 0;
4353
- #line 4354 "vm.inc"
4384
+ #line 4385 "vm.inc"
4354
4385
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4355
4386
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4356
4387
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4370,7 +4401,7 @@ INSN_ENTRY(setlocal_WC_0)
4370
4401
  RB_DEBUG_COUNTER_INC(lvar_set);
4371
4402
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4372
4403
  }
4373
- # line 4374 "vm.inc"
4404
+ # line 4405 "vm.inc"
4374
4405
  # undef NAME_OF_CURRENT_INSN
4375
4406
 
4376
4407
  /* ### Instruction trailers. ### */
@@ -4393,7 +4424,7 @@ INSN_ENTRY(setlocal_WC_1)
4393
4424
  /* ### Declare and assign variables. ### */
4394
4425
  #line 13 "defs/opt_operand.def"
4395
4426
  const rb_num_t level = 1;
4396
- #line 4397 "vm.inc"
4427
+ #line 4428 "vm.inc"
4397
4428
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4398
4429
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4399
4430
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4413,7 +4444,7 @@ INSN_ENTRY(setlocal_WC_1)
4413
4444
  RB_DEBUG_COUNTER_INC(lvar_set);
4414
4445
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4415
4446
  }
4416
- # line 4417 "vm.inc"
4447
+ # line 4448 "vm.inc"
4417
4448
  # undef NAME_OF_CURRENT_INSN
4418
4449
 
4419
4450
  /* ### Instruction trailers. ### */
@@ -4436,7 +4467,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4436
4467
  /* ### Declare and assign variables. ### */
4437
4468
  #line 15 "defs/opt_operand.def"
4438
4469
  const VALUE val = INT2FIX(0);
4439
- #line 4440 "vm.inc"
4470
+ #line 4471 "vm.inc"
4440
4471
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4441
4472
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4442
4473
 
@@ -4466,7 +4497,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4466
4497
  /* ### Declare and assign variables. ### */
4467
4498
  #line 16 "defs/opt_operand.def"
4468
4499
  const VALUE val = INT2FIX(1);
4469
- #line 4470 "vm.inc"
4500
+ #line 4501 "vm.inc"
4470
4501
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4471
4502
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4472
4503
 
@@ -4783,6 +4814,15 @@ INSN_ENTRY(trace_splatarray)
4783
4814
  END_INSN(trace_splatarray);
4784
4815
  }
4785
4816
 
4817
+ /* insn trace_splatkw(...)(...)(...) */
4818
+ INSN_ENTRY(trace_splatkw)
4819
+ {
4820
+ vm_trace(ec, GET_CFP());
4821
+
4822
+ DISPATCH_ORIGINAL_INSN(splatkw);
4823
+ END_INSN(trace_splatkw);
4824
+ }
4825
+
4786
4826
  /* insn trace_newhash(...)(...)(...) */
4787
4827
  INSN_ENTRY(trace_newhash)
4788
4828
  {