debase-ruby_core_source 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
  {