debase-ruby_core_source 0.10.13 → 0.10.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/debase-ruby_core_source.gemspec +1 -1
  3. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/addr2line.h +0 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/builtin.h +1 -0
  5. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/build_assert/build_assert.h +0 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/check_type/check_type.h +0 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/container_of/container_of.h +0 -0
  8. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/list/list.h +0 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/str/str.h +0 -0
  10. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/constant.h +0 -0
  11. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/darray.h +0 -0
  12. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/debug_counter.h +2 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/dln.h +0 -0
  14. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/encindex.h +0 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/eval_intern.h +32 -1
  16. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/gc.h +0 -1
  17. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/hrtime.h +0 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id.h +0 -0
  19. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id_table.h +0 -0
  20. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns.inc +4 -2
  21. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns_info.inc +309 -224
  22. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/array.h +0 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bignum.h +0 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bits.h +0 -0
  25. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/class.h +13 -5
  26. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compar.h +0 -0
  27. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compile.h +0 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compilers.h +0 -0
  29. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/complex.h +0 -0
  30. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/cont.h +0 -0
  31. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/dir.h +0 -0
  32. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enc.h +0 -0
  33. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/encoding.h +0 -0
  34. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enum.h +0 -0
  35. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enumerator.h +0 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/error.h +0 -0
  37. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/eval.h +0 -0
  38. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/file.h +0 -0
  39. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/fixnum.h +0 -0
  40. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/gc.h +12 -1
  41. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/hash.h +0 -0
  42. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/imemo.h +0 -0
  43. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/inits.h +0 -0
  44. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/io.h +0 -0
  45. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/load.h +0 -0
  46. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/loadpath.h +0 -0
  47. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/math.h +0 -0
  48. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/missing.h +0 -0
  49. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/numeric.h +0 -0
  50. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/object.h +0 -0
  51. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/parse.h +0 -0
  52. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/proc.h +0 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/process.h +0 -0
  54. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/random.h +0 -0
  55. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/range.h +0 -0
  56. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/rational.h +0 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/re.h +0 -0
  58. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/sanitizers.h +0 -0
  59. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/serial.h +0 -0
  60. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/signal.h +0 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/static_assert.h +0 -0
  62. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/string.h +0 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/struct.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/symbol.h +1 -0
  65. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/thread.h +0 -0
  66. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/time.h +0 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/transcode.h +0 -0
  68. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/util.h +0 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/variable.h +0 -0
  70. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/vm.h +2 -1
  71. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/warnings.h +0 -0
  72. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal.h +0 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/iseq.h +3 -1
  74. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/known_errors.inc +0 -0
  75. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/method.h +14 -6
  76. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit.h +0 -0
  77. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit_compile.inc +64 -7
  78. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node.h +28 -17
  79. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node_name.inc +0 -2
  80. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/opt_sc.inc +2 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optinsn.inc +0 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optunifs.inc +1 -1
  83. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/parse.h +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/probes_helper.h +0 -0
  85. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ractor_core.h +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regenc.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regint.h +0 -0
  88. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regparse.h +0 -0
  89. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/revision.h +2 -0
  90. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_assert.h +0 -0
  91. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_atomic.h +0 -0
  92. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/siphash.h +0 -0
  93. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/symbol.h +0 -0
  94. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_pthread.h +0 -0
  95. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_win32.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/timev.h +0 -0
  97. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transcode_data.h +0 -0
  98. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transient_heap.h +0 -0
  99. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/variable.h +0 -0
  100. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/version.h +4 -4
  101. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm.inc +338 -283
  102. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_call_iseq_optimized.inc +0 -0
  103. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_callinfo.h +41 -8
  104. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_core.h +6 -2
  105. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_debug.h +8 -3
  106. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_exec.h +0 -0
  107. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_insnhelper.h +0 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_opts.h +0 -0
  109. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_sync.h +1 -1
  110. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vmtc.inc +4 -2
  111. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit.h +11 -1
  112. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_asm.h +21 -5
  113. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_codegen.h +5 -1
  114. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_core.h +11 -6
  115. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_iface.h +0 -0
  116. data/lib/debase/ruby_core_source/version.rb +1 -1
  117. metadata +116 -116
  118. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +0 -2
@@ -47,7 +47,7 @@ INSN_ENTRY(nop)
47
47
 
48
48
  /* ### Declare and assign variables. ### */
49
49
  # define INSN_ATTR(x) attr_ ## x ## _nop()
50
- bool leaf = INSN_ATTR(leaf);
50
+ const bool leaf = INSN_ATTR(leaf);
51
51
 
52
52
  /* ### Instruction preambles. ### */
53
53
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -74,7 +74,7 @@ INSN_ENTRY(getlocal)
74
74
  lindex_t idx = (lindex_t)GET_OPERAND(1);
75
75
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
76
76
  # define INSN_ATTR(x) attr_ ## x ## _getlocal(idx, level)
77
- bool leaf = INSN_ATTR(leaf);
77
+ const bool leaf = INSN_ATTR(leaf);
78
78
  VALUE val;
79
79
 
80
80
  /* ### Instruction preambles. ### */
@@ -120,7 +120,7 @@ INSN_ENTRY(setlocal)
120
120
  lindex_t idx = (lindex_t)GET_OPERAND(1);
121
121
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
122
122
  # define INSN_ATTR(x) attr_ ## x ## _setlocal(idx, level)
123
- bool leaf = INSN_ATTR(leaf);
123
+ const bool leaf = INSN_ATTR(leaf);
124
124
  VALUE val = TOPN(0);
125
125
 
126
126
  /* ### Instruction preambles. ### */
@@ -163,7 +163,7 @@ INSN_ENTRY(getblockparam)
163
163
  lindex_t idx = (lindex_t)GET_OPERAND(1);
164
164
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
165
165
  # define INSN_ATTR(x) attr_ ## x ## _getblockparam(idx, level)
166
- bool leaf = INSN_ATTR(leaf);
166
+ const bool leaf = INSN_ATTR(leaf);
167
167
  VALUE val;
168
168
 
169
169
  /* ### Instruction preambles. ### */
@@ -219,7 +219,7 @@ INSN_ENTRY(setblockparam)
219
219
  lindex_t idx = (lindex_t)GET_OPERAND(1);
220
220
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
221
221
  # define INSN_ATTR(x) attr_ ## x ## _setblockparam(idx, level)
222
- bool leaf = INSN_ATTR(leaf);
222
+ const bool leaf = INSN_ATTR(leaf);
223
223
  VALUE val = TOPN(0);
224
224
 
225
225
  /* ### Instruction preambles. ### */
@@ -267,7 +267,7 @@ INSN_ENTRY(getblockparamproxy)
267
267
  lindex_t idx = (lindex_t)GET_OPERAND(1);
268
268
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
269
269
  # define INSN_ATTR(x) attr_ ## x ## _getblockparamproxy(idx, level)
270
- bool leaf = INSN_ATTR(leaf);
270
+ const bool leaf = INSN_ATTR(leaf);
271
271
  VALUE val;
272
272
 
273
273
  /* ### Instruction preambles. ### */
@@ -344,7 +344,7 @@ INSN_ENTRY(getspecial)
344
344
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
345
345
  rb_num_t type = (rb_num_t)GET_OPERAND(2);
346
346
  # define INSN_ATTR(x) attr_ ## x ## _getspecial(key, type)
347
- bool leaf = INSN_ATTR(leaf);
347
+ const bool leaf = INSN_ATTR(leaf);
348
348
  VALUE val;
349
349
 
350
350
  /* ### Instruction preambles. ### */
@@ -387,7 +387,7 @@ INSN_ENTRY(setspecial)
387
387
  /* ### Declare and assign variables. ### */
388
388
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
389
389
  # define INSN_ATTR(x) attr_ ## x ## _setspecial(key)
390
- bool leaf = INSN_ATTR(leaf);
390
+ const bool leaf = INSN_ATTR(leaf);
391
391
  VALUE obj = TOPN(0);
392
392
 
393
393
  /* ### Instruction preambles. ### */
@@ -427,7 +427,7 @@ INSN_ENTRY(getinstancevariable)
427
427
  ID id = (ID)GET_OPERAND(1);
428
428
  IVC ic = (IVC)GET_OPERAND(2);
429
429
  # define INSN_ATTR(x) attr_ ## x ## _getinstancevariable(id, ic)
430
- bool leaf = INSN_ATTR(leaf);
430
+ const bool leaf = INSN_ATTR(leaf);
431
431
  VALUE val;
432
432
 
433
433
  /* ### Instruction preambles. ### */
@@ -471,7 +471,7 @@ INSN_ENTRY(setinstancevariable)
471
471
  ID id = (ID)GET_OPERAND(1);
472
472
  IVC ic = (IVC)GET_OPERAND(2);
473
473
  # define INSN_ATTR(x) attr_ ## x ## _setinstancevariable(id, ic)
474
- bool leaf = INSN_ATTR(leaf);
474
+ const bool leaf = INSN_ATTR(leaf);
475
475
  VALUE val = TOPN(0);
476
476
 
477
477
  /* ### Instruction preambles. ### */
@@ -512,7 +512,7 @@ INSN_ENTRY(getclassvariable)
512
512
  ID id = (ID)GET_OPERAND(1);
513
513
  IVC ic = (IVC)GET_OPERAND(2);
514
514
  # define INSN_ATTR(x) attr_ ## x ## _getclassvariable(id, ic)
515
- bool leaf = INSN_ATTR(leaf);
515
+ const bool leaf = INSN_ATTR(leaf);
516
516
  VALUE val;
517
517
 
518
518
  /* ### Instruction preambles. ### */
@@ -526,11 +526,10 @@ INSN_ENTRY(getclassvariable)
526
526
  # define NAME_OF_CURRENT_INSN getclassvariable
527
527
  # line 238 "insns.def"
528
528
  {
529
- rb_cref_t * cref = vm_get_cref(GET_EP());
530
529
  rb_control_frame_t *cfp = GET_CFP();
531
- val = vm_getclassvariable(GET_ISEQ(), cref, cfp, id, (ICVARC)ic);
530
+ val = vm_getclassvariable(GET_ISEQ(), cfp, id, (ICVARC)ic);
532
531
  }
533
- # line 534 "vm.inc"
532
+ # line 533 "vm.inc"
534
533
  # undef NAME_OF_CURRENT_INSN
535
534
 
536
535
  /* ### Instruction trailers. ### */
@@ -558,7 +557,7 @@ INSN_ENTRY(setclassvariable)
558
557
  ID id = (ID)GET_OPERAND(1);
559
558
  IVC ic = (IVC)GET_OPERAND(2);
560
559
  # define INSN_ATTR(x) attr_ ## x ## _setclassvariable(id, ic)
561
- bool leaf = INSN_ATTR(leaf);
560
+ const bool leaf = INSN_ATTR(leaf);
562
561
  VALUE val = TOPN(0);
563
562
 
564
563
  /* ### Instruction preambles. ### */
@@ -570,12 +569,12 @@ INSN_ENTRY(setclassvariable)
570
569
 
571
570
  /* ### Here we do the instruction body. ### */
572
571
  # define NAME_OF_CURRENT_INSN setclassvariable
573
- # line 252 "insns.def"
572
+ # line 251 "insns.def"
574
573
  {
575
574
  vm_ensure_not_refinement_module(GET_SELF());
576
- vm_setclassvariable(GET_ISEQ(), vm_get_cref(GET_EP()), GET_CFP(), id, val, (ICVARC)ic);
575
+ vm_setclassvariable(GET_ISEQ(), GET_CFP(), id, val, (ICVARC)ic);
577
576
  }
578
- # line 579 "vm.inc"
577
+ # line 578 "vm.inc"
579
578
  # undef NAME_OF_CURRENT_INSN
580
579
 
581
580
  /* ### Instruction trailers. ### */
@@ -599,7 +598,7 @@ INSN_ENTRY(getconstant)
599
598
  /* ### Declare and assign variables. ### */
600
599
  ID id = (ID)GET_OPERAND(1);
601
600
  # define INSN_ATTR(x) attr_ ## x ## _getconstant(id)
602
- bool leaf = INSN_ATTR(leaf);
601
+ const bool leaf = INSN_ATTR(leaf);
603
602
  VALUE klass = TOPN(1);
604
603
  VALUE allow_nil = TOPN(0);
605
604
  VALUE val;
@@ -612,11 +611,11 @@ INSN_ENTRY(getconstant)
612
611
 
613
612
  /* ### Here we do the instruction body. ### */
614
613
  # define NAME_OF_CURRENT_INSN getconstant
615
- # line 268 "insns.def"
614
+ # line 267 "insns.def"
616
615
  {
617
616
  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
618
617
  }
619
- # line 620 "vm.inc"
618
+ # line 619 "vm.inc"
620
619
  # undef NAME_OF_CURRENT_INSN
621
620
 
622
621
  /* ### Instruction trailers. ### */
@@ -643,7 +642,7 @@ INSN_ENTRY(setconstant)
643
642
  /* ### Declare and assign variables. ### */
644
643
  ID id = (ID)GET_OPERAND(1);
645
644
  # define INSN_ATTR(x) attr_ ## x ## _setconstant(id)
646
- bool leaf = INSN_ATTR(leaf);
645
+ const bool leaf = INSN_ATTR(leaf);
647
646
  VALUE val = TOPN(1);
648
647
  VALUE cbase = TOPN(0);
649
648
 
@@ -655,13 +654,13 @@ INSN_ENTRY(setconstant)
655
654
 
656
655
  /* ### Here we do the instruction body. ### */
657
656
  # define NAME_OF_CURRENT_INSN setconstant
658
- # line 284 "insns.def"
657
+ # line 283 "insns.def"
659
658
  {
660
659
  vm_check_if_namespace(cbase);
661
660
  vm_ensure_not_refinement_module(GET_SELF());
662
661
  rb_const_set(cbase, id, val);
663
662
  }
664
- # line 665 "vm.inc"
663
+ # line 664 "vm.inc"
665
664
  # undef NAME_OF_CURRENT_INSN
666
665
 
667
666
  /* ### Instruction trailers. ### */
@@ -685,7 +684,7 @@ INSN_ENTRY(getglobal)
685
684
  /* ### Declare and assign variables. ### */
686
685
  ID gid = (ID)GET_OPERAND(1);
687
686
  # define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
688
- bool leaf = INSN_ATTR(leaf);
687
+ const bool leaf = INSN_ATTR(leaf);
689
688
  VALUE val;
690
689
 
691
690
  /* ### Instruction preambles. ### */
@@ -696,11 +695,11 @@ INSN_ENTRY(getglobal)
696
695
 
697
696
  /* ### Here we do the instruction body. ### */
698
697
  # define NAME_OF_CURRENT_INSN getglobal
699
- # line 297 "insns.def"
698
+ # line 296 "insns.def"
700
699
  {
701
700
  val = rb_gvar_get(gid);
702
701
  }
703
- # line 704 "vm.inc"
702
+ # line 703 "vm.inc"
704
703
  # undef NAME_OF_CURRENT_INSN
705
704
 
706
705
  /* ### Instruction trailers. ### */
@@ -727,7 +726,7 @@ INSN_ENTRY(setglobal)
727
726
  /* ### Declare and assign variables. ### */
728
727
  ID gid = (ID)GET_OPERAND(1);
729
728
  # define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
730
- bool leaf = INSN_ATTR(leaf);
729
+ const bool leaf = INSN_ATTR(leaf);
731
730
  VALUE val = TOPN(0);
732
731
 
733
732
  /* ### Instruction preambles. ### */
@@ -738,11 +737,11 @@ INSN_ENTRY(setglobal)
738
737
 
739
738
  /* ### Here we do the instruction body. ### */
740
739
  # define NAME_OF_CURRENT_INSN setglobal
741
- # line 308 "insns.def"
740
+ # line 307 "insns.def"
742
741
  {
743
742
  rb_gvar_set(gid, val);
744
743
  }
745
- # line 746 "vm.inc"
744
+ # line 745 "vm.inc"
746
745
  # undef NAME_OF_CURRENT_INSN
747
746
 
748
747
  /* ### Instruction trailers. ### */
@@ -765,7 +764,7 @@ INSN_ENTRY(putnil)
765
764
 
766
765
  /* ### Declare and assign variables. ### */
767
766
  # define INSN_ATTR(x) attr_ ## x ## _putnil()
768
- bool leaf = INSN_ATTR(leaf);
767
+ const bool leaf = INSN_ATTR(leaf);
769
768
  VALUE val;
770
769
 
771
770
  /* ### Instruction preambles. ### */
@@ -775,11 +774,11 @@ INSN_ENTRY(putnil)
775
774
 
776
775
  /* ### Here we do the instruction body. ### */
777
776
  # define NAME_OF_CURRENT_INSN putnil
778
- # line 322 "insns.def"
777
+ # line 321 "insns.def"
779
778
  {
780
779
  val = Qnil;
781
780
  }
782
- # line 783 "vm.inc"
781
+ # line 782 "vm.inc"
783
782
  # undef NAME_OF_CURRENT_INSN
784
783
 
785
784
  /* ### Instruction trailers. ### */
@@ -805,7 +804,7 @@ INSN_ENTRY(putself)
805
804
 
806
805
  /* ### Declare and assign variables. ### */
807
806
  # define INSN_ATTR(x) attr_ ## x ## _putself()
808
- bool leaf = INSN_ATTR(leaf);
807
+ const bool leaf = INSN_ATTR(leaf);
809
808
  VALUE val;
810
809
 
811
810
  /* ### Instruction preambles. ### */
@@ -815,11 +814,11 @@ INSN_ENTRY(putself)
815
814
 
816
815
  /* ### Here we do the instruction body. ### */
817
816
  # define NAME_OF_CURRENT_INSN putself
818
- # line 332 "insns.def"
817
+ # line 331 "insns.def"
819
818
  {
820
819
  val = GET_SELF();
821
820
  }
822
- # line 823 "vm.inc"
821
+ # line 822 "vm.inc"
823
822
  # undef NAME_OF_CURRENT_INSN
824
823
 
825
824
  /* ### Instruction trailers. ### */
@@ -846,7 +845,7 @@ INSN_ENTRY(putobject)
846
845
  /* ### Declare and assign variables. ### */
847
846
  VALUE val = (VALUE)GET_OPERAND(1);
848
847
  # define INSN_ATTR(x) attr_ ## x ## _putobject(val)
849
- bool leaf = INSN_ATTR(leaf);
848
+ const bool leaf = INSN_ATTR(leaf);
850
849
 
851
850
  /* ### Instruction preambles. ### */
852
851
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -876,7 +875,7 @@ INSN_ENTRY(putspecialobject)
876
875
  /* ### Declare and assign variables. ### */
877
876
  rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
878
877
  # define INSN_ATTR(x) attr_ ## x ## _putspecialobject(value_type)
879
- bool leaf = INSN_ATTR(leaf);
878
+ const bool leaf = INSN_ATTR(leaf);
880
879
  VALUE val;
881
880
 
882
881
  /* ### Instruction preambles. ### */
@@ -894,7 +893,7 @@ INSN_ENTRY(putspecialobject)
894
893
  type = (enum vm_special_object_type)value_type;
895
894
  val = vm_get_special_object(GET_EP(), type);
896
895
  }
897
- # line 898 "vm.inc"
896
+ # line 897 "vm.inc"
898
897
  # undef NAME_OF_CURRENT_INSN
899
898
 
900
899
  /* ### Instruction trailers. ### */
@@ -921,7 +920,7 @@ INSN_ENTRY(putstring)
921
920
  /* ### Declare and assign variables. ### */
922
921
  VALUE str = (VALUE)GET_OPERAND(1);
923
922
  # define INSN_ATTR(x) attr_ ## x ## _putstring(str)
924
- bool leaf = INSN_ATTR(leaf);
923
+ const bool leaf = INSN_ATTR(leaf);
925
924
  VALUE val;
926
925
 
927
926
  /* ### Instruction preambles. ### */
@@ -936,7 +935,7 @@ INSN_ENTRY(putstring)
936
935
  {
937
936
  val = rb_ec_str_resurrect(ec, str);
938
937
  }
939
- # line 940 "vm.inc"
938
+ # line 939 "vm.inc"
940
939
  # undef NAME_OF_CURRENT_INSN
941
940
 
942
941
  /* ### Instruction trailers. ### */
@@ -963,7 +962,7 @@ INSN_ENTRY(concatstrings)
963
962
  /* ### Declare and assign variables. ### */
964
963
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
965
964
  # define INSN_ATTR(x) attr_ ## x ## _concatstrings(num)
966
- bool leaf = INSN_ATTR(leaf);
965
+ const bool leaf = INSN_ATTR(leaf);
967
966
  VALUE val;
968
967
 
969
968
  /* ### Instruction preambles. ### */
@@ -978,7 +977,7 @@ INSN_ENTRY(concatstrings)
978
977
  {
979
978
  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
980
979
  }
981
- # line 982 "vm.inc"
980
+ # line 981 "vm.inc"
982
981
  # undef NAME_OF_CURRENT_INSN
983
982
 
984
983
  /* ### Instruction trailers. ### */
@@ -995,16 +994,16 @@ INSN_ENTRY(concatstrings)
995
994
  END_INSN(concatstrings);
996
995
  }
997
996
 
998
- /* insn tostring()(val, str)(val) */
999
- INSN_ENTRY(tostring)
997
+ /* insn anytostring()(val, str)(val) */
998
+ INSN_ENTRY(anytostring)
1000
999
  {
1001
1000
  /* ### Declare that we have just entered into an instruction. ### */
1002
- START_OF_ORIGINAL_INSN(tostring);
1003
- DEBUG_ENTER_INSN("tostring");
1001
+ START_OF_ORIGINAL_INSN(anytostring);
1002
+ DEBUG_ENTER_INSN("anytostring");
1004
1003
 
1005
1004
  /* ### Declare and assign variables. ### */
1006
- # define INSN_ATTR(x) attr_ ## x ## _tostring()
1007
- bool leaf = INSN_ATTR(leaf);
1005
+ # define INSN_ATTR(x) attr_ ## x ## _anytostring()
1006
+ const bool leaf = INSN_ATTR(leaf);
1008
1007
  VALUE val = TOPN(1);
1009
1008
  VALUE str = TOPN(0);
1010
1009
 
@@ -1014,12 +1013,12 @@ INSN_ENTRY(tostring)
1014
1013
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1015
1014
 
1016
1015
  /* ### Here we do the instruction body. ### */
1017
- # define NAME_OF_CURRENT_INSN tostring
1018
- # line 391 "insns.def"
1016
+ # define NAME_OF_CURRENT_INSN anytostring
1017
+ # line 392 "insns.def"
1019
1018
  {
1020
1019
  val = rb_obj_as_string_result(str, val);
1021
1020
  }
1022
- # line 1023 "vm.inc"
1021
+ # line 1022 "vm.inc"
1023
1022
  # undef NAME_OF_CURRENT_INSN
1024
1023
 
1025
1024
  /* ### Instruction trailers. ### */
@@ -1033,7 +1032,7 @@ INSN_ENTRY(tostring)
1033
1032
  # undef INSN_ATTR
1034
1033
 
1035
1034
  /* ### Leave the instruction. ### */
1036
- END_INSN(tostring);
1035
+ END_INSN(anytostring);
1037
1036
  }
1038
1037
 
1039
1038
  /* insn toregexp(opt, cnt)(...)(val) */
@@ -1047,7 +1046,7 @@ INSN_ENTRY(toregexp)
1047
1046
  rb_num_t opt = (rb_num_t)GET_OPERAND(1);
1048
1047
  rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
1049
1048
  # define INSN_ATTR(x) attr_ ## x ## _toregexp(opt, cnt)
1050
- bool leaf = INSN_ATTR(leaf);
1049
+ const bool leaf = INSN_ATTR(leaf);
1051
1050
  VALUE val;
1052
1051
 
1053
1052
  /* ### Instruction preambles. ### */
@@ -1059,13 +1058,13 @@ INSN_ENTRY(toregexp)
1059
1058
 
1060
1059
  /* ### Here we do the instruction body. ### */
1061
1060
  # define NAME_OF_CURRENT_INSN toregexp
1062
- # line 407 "insns.def"
1061
+ # line 408 "insns.def"
1063
1062
  {
1064
1063
  const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
1065
1064
  val = rb_reg_new_ary(ary, (int)opt);
1066
1065
  rb_ary_clear(ary);
1067
1066
  }
1068
- # line 1069 "vm.inc"
1067
+ # line 1068 "vm.inc"
1069
1068
  # undef NAME_OF_CURRENT_INSN
1070
1069
 
1071
1070
  /* ### Instruction trailers. ### */
@@ -1091,7 +1090,7 @@ INSN_ENTRY(intern)
1091
1090
 
1092
1091
  /* ### Declare and assign variables. ### */
1093
1092
  # define INSN_ATTR(x) attr_ ## x ## _intern()
1094
- bool leaf = INSN_ATTR(leaf);
1093
+ const bool leaf = INSN_ATTR(leaf);
1095
1094
  VALUE str = TOPN(0);
1096
1095
  VALUE sym;
1097
1096
 
@@ -1102,11 +1101,11 @@ INSN_ENTRY(intern)
1102
1101
 
1103
1102
  /* ### Here we do the instruction body. ### */
1104
1103
  # define NAME_OF_CURRENT_INSN intern
1105
- # line 419 "insns.def"
1104
+ # line 420 "insns.def"
1106
1105
  {
1107
1106
  sym = rb_str_intern(str);
1108
1107
  }
1109
- # line 1110 "vm.inc"
1108
+ # line 1109 "vm.inc"
1110
1109
  # undef NAME_OF_CURRENT_INSN
1111
1110
 
1112
1111
  /* ### Instruction trailers. ### */
@@ -1133,7 +1132,7 @@ INSN_ENTRY(newarray)
1133
1132
  /* ### Declare and assign variables. ### */
1134
1133
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1135
1134
  # define INSN_ATTR(x) attr_ ## x ## _newarray(num)
1136
- bool leaf = INSN_ATTR(leaf);
1135
+ const bool leaf = INSN_ATTR(leaf);
1137
1136
  VALUE val;
1138
1137
 
1139
1138
  /* ### Instruction preambles. ### */
@@ -1144,11 +1143,11 @@ INSN_ENTRY(newarray)
1144
1143
 
1145
1144
  /* ### Here we do the instruction body. ### */
1146
1145
  # define NAME_OF_CURRENT_INSN newarray
1147
- # line 430 "insns.def"
1146
+ # line 431 "insns.def"
1148
1147
  {
1149
1148
  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
1150
1149
  }
1151
- # line 1152 "vm.inc"
1150
+ # line 1151 "vm.inc"
1152
1151
  # undef NAME_OF_CURRENT_INSN
1153
1152
 
1154
1153
  /* ### Instruction trailers. ### */
@@ -1175,7 +1174,7 @@ INSN_ENTRY(newarraykwsplat)
1175
1174
  /* ### Declare and assign variables. ### */
1176
1175
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1177
1176
  # define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
1178
- bool leaf = INSN_ATTR(leaf);
1177
+ const bool leaf = INSN_ATTR(leaf);
1179
1178
  VALUE val;
1180
1179
 
1181
1180
  /* ### Instruction preambles. ### */
@@ -1186,7 +1185,7 @@ INSN_ENTRY(newarraykwsplat)
1186
1185
 
1187
1186
  /* ### Here we do the instruction body. ### */
1188
1187
  # define NAME_OF_CURRENT_INSN newarraykwsplat
1189
- # line 445 "insns.def"
1188
+ # line 446 "insns.def"
1190
1189
  {
1191
1190
  if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
1192
1191
  val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
@@ -1195,7 +1194,7 @@ INSN_ENTRY(newarraykwsplat)
1195
1194
  val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
1196
1195
  }
1197
1196
  }
1198
- # line 1199 "vm.inc"
1197
+ # line 1198 "vm.inc"
1199
1198
  # undef NAME_OF_CURRENT_INSN
1200
1199
 
1201
1200
  /* ### Instruction trailers. ### */
@@ -1222,7 +1221,7 @@ INSN_ENTRY(duparray)
1222
1221
  /* ### Declare and assign variables. ### */
1223
1222
  VALUE ary = (VALUE)GET_OPERAND(1);
1224
1223
  # define INSN_ATTR(x) attr_ ## x ## _duparray(ary)
1225
- bool leaf = INSN_ATTR(leaf);
1224
+ const bool leaf = INSN_ATTR(leaf);
1226
1225
  VALUE val;
1227
1226
 
1228
1227
  /* ### Instruction preambles. ### */
@@ -1233,12 +1232,12 @@ INSN_ENTRY(duparray)
1233
1232
 
1234
1233
  /* ### Here we do the instruction body. ### */
1235
1234
  # define NAME_OF_CURRENT_INSN duparray
1236
- # line 460 "insns.def"
1235
+ # line 461 "insns.def"
1237
1236
  {
1238
1237
  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
1239
1238
  val = rb_ary_resurrect(ary);
1240
1239
  }
1241
- # line 1242 "vm.inc"
1240
+ # line 1241 "vm.inc"
1242
1241
  # undef NAME_OF_CURRENT_INSN
1243
1242
 
1244
1243
  /* ### Instruction trailers. ### */
@@ -1265,7 +1264,7 @@ INSN_ENTRY(duphash)
1265
1264
  /* ### Declare and assign variables. ### */
1266
1265
  VALUE hash = (VALUE)GET_OPERAND(1);
1267
1266
  # define INSN_ATTR(x) attr_ ## x ## _duphash(hash)
1268
- bool leaf = INSN_ATTR(leaf);
1267
+ const bool leaf = INSN_ATTR(leaf);
1269
1268
  VALUE val;
1270
1269
 
1271
1270
  /* ### Instruction preambles. ### */
@@ -1276,12 +1275,12 @@ INSN_ENTRY(duphash)
1276
1275
 
1277
1276
  /* ### Here we do the instruction body. ### */
1278
1277
  # define NAME_OF_CURRENT_INSN duphash
1279
- # line 471 "insns.def"
1278
+ # line 472 "insns.def"
1280
1279
  {
1281
1280
  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
1282
1281
  val = rb_hash_resurrect(hash);
1283
1282
  }
1284
- # line 1285 "vm.inc"
1283
+ # line 1284 "vm.inc"
1285
1284
  # undef NAME_OF_CURRENT_INSN
1286
1285
 
1287
1286
  /* ### Instruction trailers. ### */
@@ -1309,7 +1308,7 @@ INSN_ENTRY(expandarray)
1309
1308
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1310
1309
  rb_num_t flag = (rb_num_t)GET_OPERAND(2);
1311
1310
  # define INSN_ATTR(x) attr_ ## x ## _expandarray(num, flag)
1312
- bool leaf = INSN_ATTR(leaf);
1311
+ const bool leaf = INSN_ATTR(leaf);
1313
1312
  VALUE ary = TOPN(0);
1314
1313
 
1315
1314
  /* ### Instruction preambles. ### */
@@ -1320,11 +1319,11 @@ INSN_ENTRY(expandarray)
1320
1319
 
1321
1320
  /* ### Here we do the instruction body. ### */
1322
1321
  # define NAME_OF_CURRENT_INSN expandarray
1323
- # line 492 "insns.def"
1322
+ # line 493 "insns.def"
1324
1323
  {
1325
1324
  vm_expandarray(GET_SP(), ary, num, (int)flag);
1326
1325
  }
1327
- # line 1328 "vm.inc"
1326
+ # line 1327 "vm.inc"
1328
1327
  # undef NAME_OF_CURRENT_INSN
1329
1328
 
1330
1329
  /* ### Instruction trailers. ### */
@@ -1346,7 +1345,7 @@ INSN_ENTRY(concatarray)
1346
1345
 
1347
1346
  /* ### Declare and assign variables. ### */
1348
1347
  # define INSN_ATTR(x) attr_ ## x ## _concatarray()
1349
- bool leaf = INSN_ATTR(leaf);
1348
+ const bool leaf = INSN_ATTR(leaf);
1350
1349
  VALUE ary1 = TOPN(1);
1351
1350
  VALUE ary2 = TOPN(0);
1352
1351
  VALUE ary;
@@ -1358,11 +1357,11 @@ INSN_ENTRY(concatarray)
1358
1357
 
1359
1358
  /* ### Here we do the instruction body. ### */
1360
1359
  # define NAME_OF_CURRENT_INSN concatarray
1361
- # line 503 "insns.def"
1360
+ # line 504 "insns.def"
1362
1361
  {
1363
1362
  ary = vm_concat_array(ary1, ary2);
1364
1363
  }
1365
- # line 1366 "vm.inc"
1364
+ # line 1365 "vm.inc"
1366
1365
  # undef NAME_OF_CURRENT_INSN
1367
1366
 
1368
1367
  /* ### Instruction trailers. ### */
@@ -1389,7 +1388,7 @@ INSN_ENTRY(splatarray)
1389
1388
  /* ### Declare and assign variables. ### */
1390
1389
  VALUE flag = (VALUE)GET_OPERAND(1);
1391
1390
  # define INSN_ATTR(x) attr_ ## x ## _splatarray(flag)
1392
- bool leaf = INSN_ATTR(leaf);
1391
+ const bool leaf = INSN_ATTR(leaf);
1393
1392
  VALUE ary = TOPN(0);
1394
1393
  VALUE obj;
1395
1394
 
@@ -1401,11 +1400,11 @@ INSN_ENTRY(splatarray)
1401
1400
 
1402
1401
  /* ### Here we do the instruction body. ### */
1403
1402
  # define NAME_OF_CURRENT_INSN splatarray
1404
- # line 514 "insns.def"
1403
+ # line 515 "insns.def"
1405
1404
  {
1406
1405
  obj = vm_splat_array(flag, ary);
1407
1406
  }
1408
- # line 1409 "vm.inc"
1407
+ # line 1408 "vm.inc"
1409
1408
  # undef NAME_OF_CURRENT_INSN
1410
1409
 
1411
1410
  /* ### Instruction trailers. ### */
@@ -1432,7 +1431,7 @@ INSN_ENTRY(newhash)
1432
1431
  /* ### Declare and assign variables. ### */
1433
1432
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1434
1433
  # define INSN_ATTR(x) attr_ ## x ## _newhash(num)
1435
- bool leaf = INSN_ATTR(leaf);
1434
+ const bool leaf = INSN_ATTR(leaf);
1436
1435
  VALUE val;
1437
1436
 
1438
1437
  /* ### Instruction preambles. ### */
@@ -1443,7 +1442,7 @@ INSN_ENTRY(newhash)
1443
1442
 
1444
1443
  /* ### Here we do the instruction body. ### */
1445
1444
  # define NAME_OF_CURRENT_INSN newhash
1446
- # line 526 "insns.def"
1445
+ # line 527 "insns.def"
1447
1446
  {
1448
1447
  RUBY_DTRACE_CREATE_HOOK(HASH, num);
1449
1448
 
@@ -1455,7 +1454,7 @@ INSN_ENTRY(newhash)
1455
1454
  val = rb_hash_new();
1456
1455
  }
1457
1456
  }
1458
- # line 1459 "vm.inc"
1457
+ # line 1458 "vm.inc"
1459
1458
  # undef NAME_OF_CURRENT_INSN
1460
1459
 
1461
1460
  /* ### Instruction trailers. ### */
@@ -1482,7 +1481,7 @@ INSN_ENTRY(newrange)
1482
1481
  /* ### Declare and assign variables. ### */
1483
1482
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1484
1483
  # define INSN_ATTR(x) attr_ ## x ## _newrange(flag)
1485
- bool leaf = INSN_ATTR(leaf);
1484
+ const bool leaf = INSN_ATTR(leaf);
1486
1485
  VALUE low = TOPN(1);
1487
1486
  VALUE high = TOPN(0);
1488
1487
  VALUE val;
@@ -1495,11 +1494,11 @@ INSN_ENTRY(newrange)
1495
1494
 
1496
1495
  /* ### Here we do the instruction body. ### */
1497
1496
  # define NAME_OF_CURRENT_INSN newrange
1498
- # line 546 "insns.def"
1497
+ # line 547 "insns.def"
1499
1498
  {
1500
1499
  val = rb_range_new(low, high, (int)flag);
1501
1500
  }
1502
- # line 1503 "vm.inc"
1501
+ # line 1502 "vm.inc"
1503
1502
  # undef NAME_OF_CURRENT_INSN
1504
1503
 
1505
1504
  /* ### Instruction trailers. ### */
@@ -1525,7 +1524,7 @@ INSN_ENTRY(pop)
1525
1524
 
1526
1525
  /* ### Declare and assign variables. ### */
1527
1526
  # define INSN_ATTR(x) attr_ ## x ## _pop()
1528
- bool leaf = INSN_ATTR(leaf);
1527
+ const bool leaf = INSN_ATTR(leaf);
1529
1528
  VALUE val = TOPN(0);
1530
1529
 
1531
1530
  /* ### Instruction preambles. ### */
@@ -1535,12 +1534,12 @@ INSN_ENTRY(pop)
1535
1534
 
1536
1535
  /* ### Here we do the instruction body. ### */
1537
1536
  # define NAME_OF_CURRENT_INSN pop
1538
- # line 560 "insns.def"
1537
+ # line 561 "insns.def"
1539
1538
  {
1540
1539
  (void)val;
1541
1540
  /* none */
1542
1541
  }
1543
- # line 1544 "vm.inc"
1542
+ # line 1543 "vm.inc"
1544
1543
  # undef NAME_OF_CURRENT_INSN
1545
1544
 
1546
1545
  /* ### Instruction trailers. ### */
@@ -1563,7 +1562,7 @@ INSN_ENTRY(dup)
1563
1562
 
1564
1563
  /* ### Declare and assign variables. ### */
1565
1564
  # define INSN_ATTR(x) attr_ ## x ## _dup()
1566
- bool leaf = INSN_ATTR(leaf);
1565
+ const bool leaf = INSN_ATTR(leaf);
1567
1566
  VALUE val = TOPN(0);
1568
1567
  VALUE val1;
1569
1568
  VALUE val2;
@@ -1575,11 +1574,11 @@ INSN_ENTRY(dup)
1575
1574
 
1576
1575
  /* ### Here we do the instruction body. ### */
1577
1576
  # define NAME_OF_CURRENT_INSN dup
1578
- # line 571 "insns.def"
1577
+ # line 572 "insns.def"
1579
1578
  {
1580
1579
  val1 = val2 = val;
1581
1580
  }
1582
- # line 1583 "vm.inc"
1581
+ # line 1582 "vm.inc"
1583
1582
  # undef NAME_OF_CURRENT_INSN
1584
1583
 
1585
1584
  /* ### Instruction trailers. ### */
@@ -1609,7 +1608,7 @@ INSN_ENTRY(dupn)
1609
1608
  /* ### Declare and assign variables. ### */
1610
1609
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1611
1610
  # define INSN_ATTR(x) attr_ ## x ## _dupn(n)
1612
- bool leaf = INSN_ATTR(leaf);
1611
+ const bool leaf = INSN_ATTR(leaf);
1613
1612
 
1614
1613
  /* ### Instruction preambles. ### */
1615
1614
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -1618,14 +1617,14 @@ INSN_ENTRY(dupn)
1618
1617
 
1619
1618
  /* ### Here we do the instruction body. ### */
1620
1619
  # define NAME_OF_CURRENT_INSN dupn
1621
- # line 582 "insns.def"
1620
+ # line 583 "insns.def"
1622
1621
  {
1623
1622
  void *dst = GET_SP();
1624
1623
  void *src = STACK_ADDR_FROM_TOP(n);
1625
1624
 
1626
1625
  MEMCPY(dst, src, VALUE, n);
1627
1626
  }
1628
- # line 1629 "vm.inc"
1627
+ # line 1628 "vm.inc"
1629
1628
  # undef NAME_OF_CURRENT_INSN
1630
1629
 
1631
1630
  /* ### Instruction trailers. ### */
@@ -1647,7 +1646,7 @@ INSN_ENTRY(swap)
1647
1646
 
1648
1647
  /* ### Declare and assign variables. ### */
1649
1648
  # define INSN_ATTR(x) attr_ ## x ## _swap()
1650
- bool leaf = INSN_ATTR(leaf);
1649
+ const bool leaf = INSN_ATTR(leaf);
1651
1650
  VALUE val = TOPN(1);
1652
1651
  VALUE obj = TOPN(0);
1653
1652
 
@@ -1681,7 +1680,7 @@ INSN_ENTRY(topn)
1681
1680
  /* ### Declare and assign variables. ### */
1682
1681
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1683
1682
  # define INSN_ATTR(x) attr_ ## x ## _topn(n)
1684
- bool leaf = INSN_ATTR(leaf);
1683
+ const bool leaf = INSN_ATTR(leaf);
1685
1684
  VALUE val;
1686
1685
 
1687
1686
  /* ### Instruction preambles. ### */
@@ -1692,11 +1691,11 @@ INSN_ENTRY(topn)
1692
1691
 
1693
1692
  /* ### Here we do the instruction body. ### */
1694
1693
  # define NAME_OF_CURRENT_INSN topn
1695
- # line 617 "insns.def"
1694
+ # line 618 "insns.def"
1696
1695
  {
1697
1696
  val = TOPN(n);
1698
1697
  }
1699
- # line 1700 "vm.inc"
1698
+ # line 1699 "vm.inc"
1700
1699
  # undef NAME_OF_CURRENT_INSN
1701
1700
 
1702
1701
  /* ### Instruction trailers. ### */
@@ -1723,7 +1722,7 @@ INSN_ENTRY(setn)
1723
1722
  /* ### Declare and assign variables. ### */
1724
1723
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1725
1724
  # define INSN_ATTR(x) attr_ ## x ## _setn(n)
1726
- bool leaf = INSN_ATTR(leaf);
1725
+ const bool leaf = INSN_ATTR(leaf);
1727
1726
  VALUE val = TOPN(0);
1728
1727
 
1729
1728
  /* ### Instruction preambles. ### */
@@ -1734,11 +1733,11 @@ INSN_ENTRY(setn)
1734
1733
 
1735
1734
  /* ### Here we do the instruction body. ### */
1736
1735
  # define NAME_OF_CURRENT_INSN setn
1737
- # line 628 "insns.def"
1736
+ # line 629 "insns.def"
1738
1737
  {
1739
1738
  TOPN(n) = val;
1740
1739
  }
1741
- # line 1742 "vm.inc"
1740
+ # line 1741 "vm.inc"
1742
1741
  # undef NAME_OF_CURRENT_INSN
1743
1742
 
1744
1743
  /* ### Instruction trailers. ### */
@@ -1765,7 +1764,7 @@ INSN_ENTRY(adjuststack)
1765
1764
  /* ### Declare and assign variables. ### */
1766
1765
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1767
1766
  # define INSN_ATTR(x) attr_ ## x ## _adjuststack(n)
1768
- bool leaf = INSN_ATTR(leaf);
1767
+ const bool leaf = INSN_ATTR(leaf);
1769
1768
 
1770
1769
  /* ### Instruction preambles. ### */
1771
1770
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -1794,7 +1793,7 @@ INSN_ENTRY(defined)
1794
1793
  VALUE obj = (VALUE)GET_OPERAND(2);
1795
1794
  VALUE pushval = (VALUE)GET_OPERAND(3);
1796
1795
  # define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj, pushval)
1797
- bool leaf = INSN_ATTR(leaf);
1796
+ const bool leaf = INSN_ATTR(leaf);
1798
1797
  VALUE v = TOPN(0);
1799
1798
  VALUE val;
1800
1799
 
@@ -1808,14 +1807,14 @@ INSN_ENTRY(defined)
1808
1807
 
1809
1808
  /* ### Here we do the instruction body. ### */
1810
1809
  # define NAME_OF_CURRENT_INSN defined
1811
- # line 654 "insns.def"
1810
+ # line 655 "insns.def"
1812
1811
  {
1813
1812
  val = Qnil;
1814
1813
  if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
1815
1814
  val = pushval;
1816
1815
  }
1817
1816
  }
1818
- # line 1819 "vm.inc"
1817
+ # line 1818 "vm.inc"
1819
1818
  # undef NAME_OF_CURRENT_INSN
1820
1819
 
1821
1820
  /* ### Instruction trailers. ### */
@@ -1842,7 +1841,7 @@ INSN_ENTRY(checkmatch)
1842
1841
  /* ### Declare and assign variables. ### */
1843
1842
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1844
1843
  # define INSN_ATTR(x) attr_ ## x ## _checkmatch(flag)
1845
- bool leaf = INSN_ATTR(leaf);
1844
+ const bool leaf = INSN_ATTR(leaf);
1846
1845
  VALUE target = TOPN(1);
1847
1846
  VALUE pattern = TOPN(0);
1848
1847
  VALUE result;
@@ -1855,11 +1854,11 @@ INSN_ENTRY(checkmatch)
1855
1854
 
1856
1855
  /* ### Here we do the instruction body. ### */
1857
1856
  # define NAME_OF_CURRENT_INSN checkmatch
1858
- # line 674 "insns.def"
1857
+ # line 675 "insns.def"
1859
1858
  {
1860
1859
  result = vm_check_match(ec, target, pattern, flag);
1861
1860
  }
1862
- # line 1863 "vm.inc"
1861
+ # line 1862 "vm.inc"
1863
1862
  # undef NAME_OF_CURRENT_INSN
1864
1863
 
1865
1864
  /* ### Instruction trailers. ### */
@@ -1887,7 +1886,7 @@ INSN_ENTRY(checkkeyword)
1887
1886
  lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
1888
1887
  lindex_t keyword_index = (lindex_t)GET_OPERAND(2);
1889
1888
  # define INSN_ATTR(x) attr_ ## x ## _checkkeyword(kw_bits_index, keyword_index)
1890
- bool leaf = INSN_ATTR(leaf);
1889
+ const bool leaf = INSN_ATTR(leaf);
1891
1890
  VALUE ret;
1892
1891
 
1893
1892
  /* ### Instruction preambles. ### */
@@ -1899,11 +1898,11 @@ INSN_ENTRY(checkkeyword)
1899
1898
 
1900
1899
  /* ### Here we do the instruction body. ### */
1901
1900
  # define NAME_OF_CURRENT_INSN checkkeyword
1902
- # line 684 "insns.def"
1901
+ # line 685 "insns.def"
1903
1902
  {
1904
1903
  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
1905
1904
  }
1906
- # line 1907 "vm.inc"
1905
+ # line 1906 "vm.inc"
1907
1906
  # undef NAME_OF_CURRENT_INSN
1908
1907
 
1909
1908
  /* ### Instruction trailers. ### */
@@ -1930,7 +1929,7 @@ INSN_ENTRY(checktype)
1930
1929
  /* ### Declare and assign variables. ### */
1931
1930
  rb_num_t type = (rb_num_t)GET_OPERAND(1);
1932
1931
  # define INSN_ATTR(x) attr_ ## x ## _checktype(type)
1933
- bool leaf = INSN_ATTR(leaf);
1932
+ const bool leaf = INSN_ATTR(leaf);
1934
1933
  VALUE val = TOPN(0);
1935
1934
  VALUE ret;
1936
1935
 
@@ -1942,11 +1941,11 @@ INSN_ENTRY(checktype)
1942
1941
 
1943
1942
  /* ### Here we do the instruction body. ### */
1944
1943
  # define NAME_OF_CURRENT_INSN checktype
1945
- # line 694 "insns.def"
1944
+ # line 695 "insns.def"
1946
1945
  {
1947
1946
  ret = (TYPE(val) == (int)type) ? Qtrue : Qfalse;
1948
1947
  }
1949
- # line 1950 "vm.inc"
1948
+ # line 1949 "vm.inc"
1950
1949
  # undef NAME_OF_CURRENT_INSN
1951
1950
 
1952
1951
  /* ### Instruction trailers. ### */
@@ -1975,7 +1974,7 @@ INSN_ENTRY(defineclass)
1975
1974
  ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
1976
1975
  rb_num_t flags = (rb_num_t)GET_OPERAND(3);
1977
1976
  # define INSN_ATTR(x) attr_ ## x ## _defineclass(id, class_iseq, flags)
1978
- bool leaf = INSN_ATTR(leaf);
1977
+ const bool leaf = INSN_ATTR(leaf);
1979
1978
  VALUE cbase = TOPN(1);
1980
1979
  VALUE super = TOPN(0);
1981
1980
  VALUE val;
@@ -1991,7 +1990,7 @@ INSN_ENTRY(defineclass)
1991
1990
 
1992
1991
  /* ### Here we do the instruction body. ### */
1993
1992
  # define NAME_OF_CURRENT_INSN defineclass
1994
- # line 710 "insns.def"
1993
+ # line 711 "insns.def"
1995
1994
  {
1996
1995
  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
1997
1996
 
@@ -2000,14 +1999,14 @@ INSN_ENTRY(defineclass)
2000
1999
  /* enter scope */
2001
2000
  vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
2002
2001
  GET_BLOCK_HANDLER(),
2003
- (VALUE)vm_cref_push(ec, klass, NULL, FALSE),
2002
+ (VALUE)vm_cref_push(ec, klass, NULL, FALSE, FALSE),
2004
2003
  class_iseq->body->iseq_encoded, GET_SP(),
2005
2004
  class_iseq->body->local_table_size,
2006
2005
  class_iseq->body->stack_max);
2007
2006
  RESTORE_REGS();
2008
2007
  NEXT_INSN();
2009
2008
  }
2010
- # line 2011 "vm.inc"
2009
+ # line 2010 "vm.inc"
2011
2010
  # undef NAME_OF_CURRENT_INSN
2012
2011
 
2013
2012
  /* ### Instruction trailers. ### */
@@ -2032,7 +2031,7 @@ INSN_ENTRY(definemethod)
2032
2031
  ID id = (ID)GET_OPERAND(1);
2033
2032
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2034
2033
  # define INSN_ATTR(x) attr_ ## x ## _definemethod(id, iseq)
2035
- bool leaf = INSN_ATTR(leaf);
2034
+ const bool leaf = INSN_ATTR(leaf);
2036
2035
 
2037
2036
  /* ### Instruction preambles. ### */
2038
2037
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -2044,11 +2043,11 @@ INSN_ENTRY(definemethod)
2044
2043
 
2045
2044
  /* ### Here we do the instruction body. ### */
2046
2045
  # define NAME_OF_CURRENT_INSN definemethod
2047
- # line 731 "insns.def"
2046
+ # line 732 "insns.def"
2048
2047
  {
2049
2048
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2050
2049
  }
2051
- # line 2052 "vm.inc"
2050
+ # line 2051 "vm.inc"
2052
2051
  # undef NAME_OF_CURRENT_INSN
2053
2052
 
2054
2053
  /* ### Instruction trailers. ### */
@@ -2072,7 +2071,7 @@ INSN_ENTRY(definesmethod)
2072
2071
  ID id = (ID)GET_OPERAND(1);
2073
2072
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2074
2073
  # define INSN_ATTR(x) attr_ ## x ## _definesmethod(id, iseq)
2075
- bool leaf = INSN_ATTR(leaf);
2074
+ const bool leaf = INSN_ATTR(leaf);
2076
2075
  VALUE obj = TOPN(0);
2077
2076
 
2078
2077
  /* ### Instruction preambles. ### */
@@ -2085,11 +2084,11 @@ INSN_ENTRY(definesmethod)
2085
2084
 
2086
2085
  /* ### Here we do the instruction body. ### */
2087
2086
  # define NAME_OF_CURRENT_INSN definesmethod
2088
- # line 740 "insns.def"
2087
+ # line 741 "insns.def"
2089
2088
  {
2090
2089
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2091
2090
  }
2092
- # line 2093 "vm.inc"
2091
+ # line 2092 "vm.inc"
2093
2092
  # undef NAME_OF_CURRENT_INSN
2094
2093
 
2095
2094
  /* ### Instruction trailers. ### */
@@ -2113,7 +2112,7 @@ INSN_ENTRY(send)
2113
2112
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2114
2113
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2115
2114
  # define INSN_ATTR(x) attr_ ## x ## _send(cd, blockiseq)
2116
- bool leaf = INSN_ATTR(leaf);
2115
+ const bool leaf = INSN_ATTR(leaf);
2117
2116
  VALUE val;
2118
2117
 
2119
2118
  /* ### Instruction preambles. ### */
@@ -2126,7 +2125,7 @@ INSN_ENTRY(send)
2126
2125
 
2127
2126
  /* ### Here we do the instruction body. ### */
2128
2127
  # define NAME_OF_CURRENT_INSN send
2129
- # line 756 "insns.def"
2128
+ # line 757 "insns.def"
2130
2129
  {
2131
2130
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
2132
2131
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2136,7 +2135,7 @@ INSN_ENTRY(send)
2136
2135
  NEXT_INSN();
2137
2136
  }
2138
2137
  }
2139
- # line 2140 "vm.inc"
2138
+ # line 2139 "vm.inc"
2140
2139
  # undef NAME_OF_CURRENT_INSN
2141
2140
 
2142
2141
  /* ### Instruction trailers. ### */
@@ -2160,7 +2159,7 @@ INSN_ENTRY(opt_send_without_block)
2160
2159
  /* ### Declare and assign variables. ### */
2161
2160
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2162
2161
  # define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(cd)
2163
- bool leaf = INSN_ATTR(leaf);
2162
+ const bool leaf = INSN_ATTR(leaf);
2164
2163
  VALUE val;
2165
2164
 
2166
2165
  /* ### Instruction preambles. ### */
@@ -2172,7 +2171,7 @@ INSN_ENTRY(opt_send_without_block)
2172
2171
 
2173
2172
  /* ### Here we do the instruction body. ### */
2174
2173
  # define NAME_OF_CURRENT_INSN opt_send_without_block
2175
- # line 775 "insns.def"
2174
+ # line 776 "insns.def"
2176
2175
  {
2177
2176
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2178
2177
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2182,7 +2181,7 @@ INSN_ENTRY(opt_send_without_block)
2182
2181
  NEXT_INSN();
2183
2182
  }
2184
2183
  }
2185
- # line 2186 "vm.inc"
2184
+ # line 2185 "vm.inc"
2186
2185
  # undef NAME_OF_CURRENT_INSN
2187
2186
 
2188
2187
  /* ### Instruction trailers. ### */
@@ -2196,6 +2195,53 @@ INSN_ENTRY(opt_send_without_block)
2196
2195
  END_INSN(opt_send_without_block);
2197
2196
  }
2198
2197
 
2198
+ /* insn objtostring(cd)(recv)(val) */
2199
+ INSN_ENTRY(objtostring)
2200
+ {
2201
+ /* ### Declare that we have just entered into an instruction. ### */
2202
+ START_OF_ORIGINAL_INSN(objtostring);
2203
+ DEBUG_ENTER_INSN("objtostring");
2204
+
2205
+ /* ### Declare and assign variables. ### */
2206
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2207
+ # define INSN_ATTR(x) attr_ ## x ## _objtostring(cd)
2208
+ const bool leaf = INSN_ATTR(leaf);
2209
+ VALUE recv = TOPN(0);
2210
+ VALUE val;
2211
+
2212
+ /* ### Instruction preambles. ### */
2213
+ if (! leaf) ADD_PC(INSN_ATTR(width));
2214
+ SETUP_CANARY(leaf);
2215
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2216
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2217
+
2218
+ /* ### Here we do the instruction body. ### */
2219
+ # define NAME_OF_CURRENT_INSN objtostring
2220
+ # line 793 "insns.def"
2221
+ {
2222
+ val = vm_objtostring(GET_ISEQ(), recv, cd);
2223
+
2224
+ if (val == Qundef) {
2225
+ CALL_SIMPLE_METHOD();
2226
+ }
2227
+ }
2228
+ # line 2229 "vm.inc"
2229
+ # undef NAME_OF_CURRENT_INSN
2230
+
2231
+ /* ### Instruction trailers. ### */
2232
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2233
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2234
+ INC_SP(INSN_ATTR(sp_inc));
2235
+ TOPN(0) = val;
2236
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2237
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2238
+ if (leaf) ADD_PC(INSN_ATTR(width));
2239
+ # undef INSN_ATTR
2240
+
2241
+ /* ### Leave the instruction. ### */
2242
+ END_INSN(objtostring);
2243
+ }
2244
+
2199
2245
  /* insn opt_str_freeze(str, cd)()(val) */
2200
2246
  INSN_ENTRY(opt_str_freeze)
2201
2247
  {
@@ -2207,7 +2253,7 @@ INSN_ENTRY(opt_str_freeze)
2207
2253
  VALUE str = (VALUE)GET_OPERAND(1);
2208
2254
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2209
2255
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, cd)
2210
- bool leaf = INSN_ATTR(leaf);
2256
+ const bool leaf = INSN_ATTR(leaf);
2211
2257
  VALUE val;
2212
2258
 
2213
2259
  /* ### Instruction preambles. ### */
@@ -2219,7 +2265,7 @@ INSN_ENTRY(opt_str_freeze)
2219
2265
 
2220
2266
  /* ### Here we do the instruction body. ### */
2221
2267
  # define NAME_OF_CURRENT_INSN opt_str_freeze
2222
- # line 790 "insns.def"
2268
+ # line 806 "insns.def"
2223
2269
  {
2224
2270
  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
2225
2271
 
@@ -2228,7 +2274,7 @@ INSN_ENTRY(opt_str_freeze)
2228
2274
  CALL_SIMPLE_METHOD();
2229
2275
  }
2230
2276
  }
2231
- # line 2232 "vm.inc"
2277
+ # line 2278 "vm.inc"
2232
2278
  # undef NAME_OF_CURRENT_INSN
2233
2279
 
2234
2280
  /* ### Instruction trailers. ### */
@@ -2255,7 +2301,7 @@ INSN_ENTRY(opt_nil_p)
2255
2301
  /* ### Declare and assign variables. ### */
2256
2302
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2257
2303
  # define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(cd)
2258
- bool leaf = INSN_ATTR(leaf);
2304
+ const bool leaf = INSN_ATTR(leaf);
2259
2305
  VALUE recv = TOPN(0);
2260
2306
  VALUE val;
2261
2307
 
@@ -2267,7 +2313,7 @@ INSN_ENTRY(opt_nil_p)
2267
2313
 
2268
2314
  /* ### Here we do the instruction body. ### */
2269
2315
  # define NAME_OF_CURRENT_INSN opt_nil_p
2270
- # line 805 "insns.def"
2316
+ # line 821 "insns.def"
2271
2317
  {
2272
2318
  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
2273
2319
 
@@ -2275,7 +2321,7 @@ INSN_ENTRY(opt_nil_p)
2275
2321
  CALL_SIMPLE_METHOD();
2276
2322
  }
2277
2323
  }
2278
- # line 2279 "vm.inc"
2324
+ # line 2325 "vm.inc"
2279
2325
  # undef NAME_OF_CURRENT_INSN
2280
2326
 
2281
2327
  /* ### Instruction trailers. ### */
@@ -2303,7 +2349,7 @@ INSN_ENTRY(opt_str_uminus)
2303
2349
  VALUE str = (VALUE)GET_OPERAND(1);
2304
2350
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2305
2351
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, cd)
2306
- bool leaf = INSN_ATTR(leaf);
2352
+ const bool leaf = INSN_ATTR(leaf);
2307
2353
  VALUE val;
2308
2354
 
2309
2355
  /* ### Instruction preambles. ### */
@@ -2315,7 +2361,7 @@ INSN_ENTRY(opt_str_uminus)
2315
2361
 
2316
2362
  /* ### Here we do the instruction body. ### */
2317
2363
  # define NAME_OF_CURRENT_INSN opt_str_uminus
2318
- # line 818 "insns.def"
2364
+ # line 834 "insns.def"
2319
2365
  {
2320
2366
  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
2321
2367
 
@@ -2324,7 +2370,7 @@ INSN_ENTRY(opt_str_uminus)
2324
2370
  CALL_SIMPLE_METHOD();
2325
2371
  }
2326
2372
  }
2327
- # line 2328 "vm.inc"
2373
+ # line 2374 "vm.inc"
2328
2374
  # undef NAME_OF_CURRENT_INSN
2329
2375
 
2330
2376
  /* ### Instruction trailers. ### */
@@ -2351,7 +2397,7 @@ INSN_ENTRY(opt_newarray_max)
2351
2397
  /* ### Declare and assign variables. ### */
2352
2398
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2353
2399
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_max(num)
2354
- bool leaf = INSN_ATTR(leaf);
2400
+ const bool leaf = INSN_ATTR(leaf);
2355
2401
  VALUE val;
2356
2402
 
2357
2403
  /* ### Instruction preambles. ### */
@@ -2362,11 +2408,11 @@ INSN_ENTRY(opt_newarray_max)
2362
2408
 
2363
2409
  /* ### Here we do the instruction body. ### */
2364
2410
  # define NAME_OF_CURRENT_INSN opt_newarray_max
2365
- # line 838 "insns.def"
2411
+ # line 854 "insns.def"
2366
2412
  {
2367
2413
  val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
2368
2414
  }
2369
- # line 2370 "vm.inc"
2415
+ # line 2416 "vm.inc"
2370
2416
  # undef NAME_OF_CURRENT_INSN
2371
2417
 
2372
2418
  /* ### Instruction trailers. ### */
@@ -2393,7 +2439,7 @@ INSN_ENTRY(opt_newarray_min)
2393
2439
  /* ### Declare and assign variables. ### */
2394
2440
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2395
2441
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_min(num)
2396
- bool leaf = INSN_ATTR(leaf);
2442
+ const bool leaf = INSN_ATTR(leaf);
2397
2443
  VALUE val;
2398
2444
 
2399
2445
  /* ### Instruction preambles. ### */
@@ -2404,11 +2450,11 @@ INSN_ENTRY(opt_newarray_min)
2404
2450
 
2405
2451
  /* ### Here we do the instruction body. ### */
2406
2452
  # define NAME_OF_CURRENT_INSN opt_newarray_min
2407
- # line 850 "insns.def"
2453
+ # line 866 "insns.def"
2408
2454
  {
2409
2455
  val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
2410
2456
  }
2411
- # line 2412 "vm.inc"
2457
+ # line 2458 "vm.inc"
2412
2458
  # undef NAME_OF_CURRENT_INSN
2413
2459
 
2414
2460
  /* ### Instruction trailers. ### */
@@ -2436,7 +2482,7 @@ INSN_ENTRY(invokesuper)
2436
2482
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2437
2483
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2438
2484
  # define INSN_ATTR(x) attr_ ## x ## _invokesuper(cd, blockiseq)
2439
- bool leaf = INSN_ATTR(leaf);
2485
+ const bool leaf = INSN_ATTR(leaf);
2440
2486
  VALUE val;
2441
2487
 
2442
2488
  /* ### Instruction preambles. ### */
@@ -2449,7 +2495,7 @@ INSN_ENTRY(invokesuper)
2449
2495
 
2450
2496
  /* ### Here we do the instruction body. ### */
2451
2497
  # define NAME_OF_CURRENT_INSN invokesuper
2452
- # line 862 "insns.def"
2498
+ # line 878 "insns.def"
2453
2499
  {
2454
2500
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
2455
2501
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
@@ -2459,7 +2505,7 @@ INSN_ENTRY(invokesuper)
2459
2505
  NEXT_INSN();
2460
2506
  }
2461
2507
  }
2462
- # line 2463 "vm.inc"
2508
+ # line 2509 "vm.inc"
2463
2509
  # undef NAME_OF_CURRENT_INSN
2464
2510
 
2465
2511
  /* ### Instruction trailers. ### */
@@ -2483,7 +2529,7 @@ INSN_ENTRY(invokeblock)
2483
2529
  /* ### Declare and assign variables. ### */
2484
2530
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2485
2531
  # define INSN_ATTR(x) attr_ ## x ## _invokeblock(cd)
2486
- bool leaf = INSN_ATTR(leaf);
2532
+ const bool leaf = INSN_ATTR(leaf);
2487
2533
  VALUE val;
2488
2534
 
2489
2535
  /* ### Instruction preambles. ### */
@@ -2495,7 +2541,7 @@ INSN_ENTRY(invokeblock)
2495
2541
 
2496
2542
  /* ### Here we do the instruction body. ### */
2497
2543
  # define NAME_OF_CURRENT_INSN invokeblock
2498
- # line 881 "insns.def"
2544
+ # line 897 "insns.def"
2499
2545
  {
2500
2546
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2501
2547
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
@@ -2505,7 +2551,7 @@ INSN_ENTRY(invokeblock)
2505
2551
  NEXT_INSN();
2506
2552
  }
2507
2553
  }
2508
- # line 2509 "vm.inc"
2554
+ # line 2555 "vm.inc"
2509
2555
  # undef NAME_OF_CURRENT_INSN
2510
2556
 
2511
2557
  /* ### Instruction trailers. ### */
@@ -2528,7 +2574,7 @@ INSN_ENTRY(leave)
2528
2574
 
2529
2575
  /* ### Declare and assign variables. ### */
2530
2576
  # define INSN_ATTR(x) attr_ ## x ## _leave()
2531
- bool leaf = INSN_ATTR(leaf);
2577
+ const bool leaf = INSN_ATTR(leaf);
2532
2578
  VALUE val = TOPN(0);
2533
2579
 
2534
2580
  /* ### Instruction preambles. ### */
@@ -2539,7 +2585,7 @@ INSN_ENTRY(leave)
2539
2585
 
2540
2586
  /* ### Here we do the instruction body. ### */
2541
2587
  # define NAME_OF_CURRENT_INSN leave
2542
- # line 902 "insns.def"
2588
+ # line 918 "insns.def"
2543
2589
  {
2544
2590
  if (OPT_CHECKED_RUN) {
2545
2591
  const VALUE *const bp = vm_base_ptr(GET_CFP());
@@ -2560,7 +2606,7 @@ INSN_ENTRY(leave)
2560
2606
  RESTORE_REGS();
2561
2607
  }
2562
2608
  }
2563
- # line 2564 "vm.inc"
2609
+ # line 2610 "vm.inc"
2564
2610
  # undef NAME_OF_CURRENT_INSN
2565
2611
 
2566
2612
  /* ### Instruction trailers. ### */
@@ -2584,7 +2630,7 @@ INSN_ENTRY(throw)
2584
2630
  /* ### Declare and assign variables. ### */
2585
2631
  rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
2586
2632
  # define INSN_ATTR(x) attr_ ## x ## _throw(throw_state)
2587
- bool leaf = INSN_ATTR(leaf);
2633
+ const bool leaf = INSN_ATTR(leaf);
2588
2634
  VALUE throwobj = TOPN(0);
2589
2635
  VALUE val;
2590
2636
 
@@ -2596,13 +2642,13 @@ INSN_ENTRY(throw)
2596
2642
 
2597
2643
  /* ### Here we do the instruction body. ### */
2598
2644
  # define NAME_OF_CURRENT_INSN throw
2599
- # line 935 "insns.def"
2645
+ # line 951 "insns.def"
2600
2646
  {
2601
2647
  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
2602
2648
  THROW_EXCEPTION(val);
2603
2649
  /* unreachable */
2604
2650
  }
2605
- # line 2606 "vm.inc"
2651
+ # line 2652 "vm.inc"
2606
2652
  # undef NAME_OF_CURRENT_INSN
2607
2653
 
2608
2654
  /* ### Instruction trailers. ### */
@@ -2629,7 +2675,7 @@ INSN_ENTRY(jump)
2629
2675
  /* ### Declare and assign variables. ### */
2630
2676
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2631
2677
  # define INSN_ATTR(x) attr_ ## x ## _jump(dst)
2632
- bool leaf = INSN_ATTR(leaf);
2678
+ const bool leaf = INSN_ATTR(leaf);
2633
2679
 
2634
2680
  /* ### Instruction preambles. ### */
2635
2681
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -2639,12 +2685,12 @@ INSN_ENTRY(jump)
2639
2685
 
2640
2686
  /* ### Here we do the instruction body. ### */
2641
2687
  # define NAME_OF_CURRENT_INSN jump
2642
- # line 953 "insns.def"
2688
+ # line 969 "insns.def"
2643
2689
  {
2644
2690
  RUBY_VM_CHECK_INTS(ec);
2645
2691
  JUMP(dst);
2646
2692
  }
2647
- # line 2648 "vm.inc"
2693
+ # line 2694 "vm.inc"
2648
2694
  # undef NAME_OF_CURRENT_INSN
2649
2695
 
2650
2696
  /* ### Instruction trailers. ### */
@@ -2668,7 +2714,7 @@ INSN_ENTRY(branchif)
2668
2714
  /* ### Declare and assign variables. ### */
2669
2715
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2670
2716
  # define INSN_ATTR(x) attr_ ## x ## _branchif(dst)
2671
- bool leaf = INSN_ATTR(leaf);
2717
+ const bool leaf = INSN_ATTR(leaf);
2672
2718
  VALUE val = TOPN(0);
2673
2719
 
2674
2720
  /* ### Instruction preambles. ### */
@@ -2679,14 +2725,14 @@ INSN_ENTRY(branchif)
2679
2725
 
2680
2726
  /* ### Here we do the instruction body. ### */
2681
2727
  # define NAME_OF_CURRENT_INSN branchif
2682
- # line 966 "insns.def"
2728
+ # line 982 "insns.def"
2683
2729
  {
2684
2730
  if (RTEST(val)) {
2685
2731
  RUBY_VM_CHECK_INTS(ec);
2686
2732
  JUMP(dst);
2687
2733
  }
2688
2734
  }
2689
- # line 2690 "vm.inc"
2735
+ # line 2736 "vm.inc"
2690
2736
  # undef NAME_OF_CURRENT_INSN
2691
2737
 
2692
2738
  /* ### Instruction trailers. ### */
@@ -2710,7 +2756,7 @@ INSN_ENTRY(branchunless)
2710
2756
  /* ### Declare and assign variables. ### */
2711
2757
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2712
2758
  # define INSN_ATTR(x) attr_ ## x ## _branchunless(dst)
2713
- bool leaf = INSN_ATTR(leaf);
2759
+ const bool leaf = INSN_ATTR(leaf);
2714
2760
  VALUE val = TOPN(0);
2715
2761
 
2716
2762
  /* ### Instruction preambles. ### */
@@ -2721,14 +2767,14 @@ INSN_ENTRY(branchunless)
2721
2767
 
2722
2768
  /* ### Here we do the instruction body. ### */
2723
2769
  # define NAME_OF_CURRENT_INSN branchunless
2724
- # line 981 "insns.def"
2770
+ # line 997 "insns.def"
2725
2771
  {
2726
2772
  if (!RTEST(val)) {
2727
2773
  RUBY_VM_CHECK_INTS(ec);
2728
2774
  JUMP(dst);
2729
2775
  }
2730
2776
  }
2731
- # line 2732 "vm.inc"
2777
+ # line 2778 "vm.inc"
2732
2778
  # undef NAME_OF_CURRENT_INSN
2733
2779
 
2734
2780
  /* ### Instruction trailers. ### */
@@ -2752,7 +2798,7 @@ INSN_ENTRY(branchnil)
2752
2798
  /* ### Declare and assign variables. ### */
2753
2799
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2754
2800
  # define INSN_ATTR(x) attr_ ## x ## _branchnil(dst)
2755
- bool leaf = INSN_ATTR(leaf);
2801
+ const bool leaf = INSN_ATTR(leaf);
2756
2802
  VALUE val = TOPN(0);
2757
2803
 
2758
2804
  /* ### Instruction preambles. ### */
@@ -2763,14 +2809,14 @@ INSN_ENTRY(branchnil)
2763
2809
 
2764
2810
  /* ### Here we do the instruction body. ### */
2765
2811
  # define NAME_OF_CURRENT_INSN branchnil
2766
- # line 996 "insns.def"
2812
+ # line 1012 "insns.def"
2767
2813
  {
2768
2814
  if (NIL_P(val)) {
2769
2815
  RUBY_VM_CHECK_INTS(ec);
2770
2816
  JUMP(dst);
2771
2817
  }
2772
2818
  }
2773
- # line 2774 "vm.inc"
2819
+ # line 2820 "vm.inc"
2774
2820
  # undef NAME_OF_CURRENT_INSN
2775
2821
 
2776
2822
  /* ### Instruction trailers. ### */
@@ -2795,7 +2841,7 @@ INSN_ENTRY(opt_getinlinecache)
2795
2841
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2796
2842
  IC ic = (IC)GET_OPERAND(2);
2797
2843
  # define INSN_ATTR(x) attr_ ## x ## _opt_getinlinecache(dst, ic)
2798
- bool leaf = INSN_ATTR(leaf);
2844
+ const bool leaf = INSN_ATTR(leaf);
2799
2845
  VALUE val;
2800
2846
 
2801
2847
  /* ### Instruction preambles. ### */
@@ -2807,7 +2853,7 @@ INSN_ENTRY(opt_getinlinecache)
2807
2853
 
2808
2854
  /* ### Here we do the instruction body. ### */
2809
2855
  # define NAME_OF_CURRENT_INSN opt_getinlinecache
2810
- # line 1013 "insns.def"
2856
+ # line 1029 "insns.def"
2811
2857
  {
2812
2858
  struct iseq_inline_constant_cache_entry *ice = ic->entry;
2813
2859
  if (ice && vm_ic_hit_p(ice, GET_EP())) {
@@ -2818,7 +2864,7 @@ INSN_ENTRY(opt_getinlinecache)
2818
2864
  val = Qnil;
2819
2865
  }
2820
2866
  }
2821
- # line 2822 "vm.inc"
2867
+ # line 2868 "vm.inc"
2822
2868
  # undef NAME_OF_CURRENT_INSN
2823
2869
 
2824
2870
  /* ### Instruction trailers. ### */
@@ -2845,7 +2891,7 @@ INSN_ENTRY(opt_setinlinecache)
2845
2891
  /* ### Declare and assign variables. ### */
2846
2892
  IC ic = (IC)GET_OPERAND(1);
2847
2893
  # define INSN_ATTR(x) attr_ ## x ## _opt_setinlinecache(ic)
2848
- bool leaf = INSN_ATTR(leaf);
2894
+ const bool leaf = INSN_ATTR(leaf);
2849
2895
  VALUE val = TOPN(0);
2850
2896
 
2851
2897
  /* ### Instruction preambles. ### */
@@ -2856,11 +2902,11 @@ INSN_ENTRY(opt_setinlinecache)
2856
2902
 
2857
2903
  /* ### Here we do the instruction body. ### */
2858
2904
  # define NAME_OF_CURRENT_INSN opt_setinlinecache
2859
- # line 1031 "insns.def"
2905
+ # line 1047 "insns.def"
2860
2906
  {
2861
2907
  vm_ic_update(GET_ISEQ(), ic, val, GET_EP());
2862
2908
  }
2863
- # line 2864 "vm.inc"
2909
+ # line 2910 "vm.inc"
2864
2910
  # undef NAME_OF_CURRENT_INSN
2865
2911
 
2866
2912
  /* ### Instruction trailers. ### */
@@ -2888,7 +2934,7 @@ INSN_ENTRY(once)
2888
2934
  ISEQ iseq = (ISEQ)GET_OPERAND(1);
2889
2935
  ISE ise = (ISE)GET_OPERAND(2);
2890
2936
  # define INSN_ATTR(x) attr_ ## x ## _once(iseq, ise)
2891
- bool leaf = INSN_ATTR(leaf);
2937
+ const bool leaf = INSN_ATTR(leaf);
2892
2938
  VALUE val;
2893
2939
 
2894
2940
  /* ### Instruction preambles. ### */
@@ -2901,11 +2947,11 @@ INSN_ENTRY(once)
2901
2947
 
2902
2948
  /* ### Here we do the instruction body. ### */
2903
2949
  # define NAME_OF_CURRENT_INSN once
2904
- # line 1041 "insns.def"
2950
+ # line 1057 "insns.def"
2905
2951
  {
2906
2952
  val = vm_once_dispatch(ec, iseq, ise);
2907
2953
  }
2908
- # line 2909 "vm.inc"
2954
+ # line 2955 "vm.inc"
2909
2955
  # undef NAME_OF_CURRENT_INSN
2910
2956
 
2911
2957
  /* ### Instruction trailers. ### */
@@ -2930,7 +2976,7 @@ INSN_ENTRY(opt_case_dispatch)
2930
2976
  CDHASH hash = (CDHASH)GET_OPERAND(1);
2931
2977
  OFFSET else_offset = (OFFSET)GET_OPERAND(2);
2932
2978
  # define INSN_ATTR(x) attr_ ## x ## _opt_case_dispatch(hash, else_offset)
2933
- bool leaf = INSN_ATTR(leaf);
2979
+ const bool leaf = INSN_ATTR(leaf);
2934
2980
  VALUE key = TOPN(0);
2935
2981
 
2936
2982
  /* ### Instruction preambles. ### */
@@ -2942,7 +2988,7 @@ INSN_ENTRY(opt_case_dispatch)
2942
2988
 
2943
2989
  /* ### Here we do the instruction body. ### */
2944
2990
  # define NAME_OF_CURRENT_INSN opt_case_dispatch
2945
- # line 1052 "insns.def"
2991
+ # line 1068 "insns.def"
2946
2992
  {
2947
2993
  OFFSET dst = vm_case_dispatch(hash, else_offset, key);
2948
2994
 
@@ -2950,7 +2996,7 @@ INSN_ENTRY(opt_case_dispatch)
2950
2996
  JUMP(dst);
2951
2997
  }
2952
2998
  }
2953
- # line 2954 "vm.inc"
2999
+ # line 3000 "vm.inc"
2954
3000
  # undef NAME_OF_CURRENT_INSN
2955
3001
 
2956
3002
  /* ### Instruction trailers. ### */
@@ -2974,7 +3020,7 @@ INSN_ENTRY(opt_plus)
2974
3020
  /* ### Declare and assign variables. ### */
2975
3021
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2976
3022
  # define INSN_ATTR(x) attr_ ## x ## _opt_plus(cd)
2977
- bool leaf = INSN_ATTR(leaf);
3023
+ const bool leaf = INSN_ATTR(leaf);
2978
3024
  VALUE recv = TOPN(1);
2979
3025
  VALUE obj = TOPN(0);
2980
3026
  VALUE val;
@@ -2987,7 +3033,7 @@ INSN_ENTRY(opt_plus)
2987
3033
 
2988
3034
  /* ### Here we do the instruction body. ### */
2989
3035
  # define NAME_OF_CURRENT_INSN opt_plus
2990
- # line 1068 "insns.def"
3036
+ # line 1084 "insns.def"
2991
3037
  {
2992
3038
  val = vm_opt_plus(recv, obj);
2993
3039
 
@@ -2995,7 +3041,7 @@ INSN_ENTRY(opt_plus)
2995
3041
  CALL_SIMPLE_METHOD();
2996
3042
  }
2997
3043
  }
2998
- # line 2999 "vm.inc"
3044
+ # line 3045 "vm.inc"
2999
3045
  # undef NAME_OF_CURRENT_INSN
3000
3046
 
3001
3047
  /* ### Instruction trailers. ### */
@@ -3022,7 +3068,7 @@ INSN_ENTRY(opt_minus)
3022
3068
  /* ### Declare and assign variables. ### */
3023
3069
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3024
3070
  # define INSN_ATTR(x) attr_ ## x ## _opt_minus(cd)
3025
- bool leaf = INSN_ATTR(leaf);
3071
+ const bool leaf = INSN_ATTR(leaf);
3026
3072
  VALUE recv = TOPN(1);
3027
3073
  VALUE obj = TOPN(0);
3028
3074
  VALUE val;
@@ -3035,7 +3081,7 @@ INSN_ENTRY(opt_minus)
3035
3081
 
3036
3082
  /* ### Here we do the instruction body. ### */
3037
3083
  # define NAME_OF_CURRENT_INSN opt_minus
3038
- # line 1082 "insns.def"
3084
+ # line 1098 "insns.def"
3039
3085
  {
3040
3086
  val = vm_opt_minus(recv, obj);
3041
3087
 
@@ -3043,7 +3089,7 @@ INSN_ENTRY(opt_minus)
3043
3089
  CALL_SIMPLE_METHOD();
3044
3090
  }
3045
3091
  }
3046
- # line 3047 "vm.inc"
3092
+ # line 3093 "vm.inc"
3047
3093
  # undef NAME_OF_CURRENT_INSN
3048
3094
 
3049
3095
  /* ### Instruction trailers. ### */
@@ -3070,7 +3116,7 @@ INSN_ENTRY(opt_mult)
3070
3116
  /* ### Declare and assign variables. ### */
3071
3117
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3072
3118
  # define INSN_ATTR(x) attr_ ## x ## _opt_mult(cd)
3073
- bool leaf = INSN_ATTR(leaf);
3119
+ const bool leaf = INSN_ATTR(leaf);
3074
3120
  VALUE recv = TOPN(1);
3075
3121
  VALUE obj = TOPN(0);
3076
3122
  VALUE val;
@@ -3083,7 +3129,7 @@ INSN_ENTRY(opt_mult)
3083
3129
 
3084
3130
  /* ### Here we do the instruction body. ### */
3085
3131
  # define NAME_OF_CURRENT_INSN opt_mult
3086
- # line 1096 "insns.def"
3132
+ # line 1112 "insns.def"
3087
3133
  {
3088
3134
  val = vm_opt_mult(recv, obj);
3089
3135
 
@@ -3091,7 +3137,7 @@ INSN_ENTRY(opt_mult)
3091
3137
  CALL_SIMPLE_METHOD();
3092
3138
  }
3093
3139
  }
3094
- # line 3095 "vm.inc"
3140
+ # line 3141 "vm.inc"
3095
3141
  # undef NAME_OF_CURRENT_INSN
3096
3142
 
3097
3143
  /* ### Instruction trailers. ### */
@@ -3118,7 +3164,7 @@ INSN_ENTRY(opt_div)
3118
3164
  /* ### Declare and assign variables. ### */
3119
3165
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3120
3166
  # define INSN_ATTR(x) attr_ ## x ## _opt_div(cd)
3121
- bool leaf = INSN_ATTR(leaf);
3167
+ const bool leaf = INSN_ATTR(leaf);
3122
3168
  VALUE recv = TOPN(1);
3123
3169
  VALUE obj = TOPN(0);
3124
3170
  VALUE val;
@@ -3131,7 +3177,7 @@ INSN_ENTRY(opt_div)
3131
3177
 
3132
3178
  /* ### Here we do the instruction body. ### */
3133
3179
  # define NAME_OF_CURRENT_INSN opt_div
3134
- # line 1113 "insns.def"
3180
+ # line 1129 "insns.def"
3135
3181
  {
3136
3182
  val = vm_opt_div(recv, obj);
3137
3183
 
@@ -3139,7 +3185,7 @@ INSN_ENTRY(opt_div)
3139
3185
  CALL_SIMPLE_METHOD();
3140
3186
  }
3141
3187
  }
3142
- # line 3143 "vm.inc"
3188
+ # line 3189 "vm.inc"
3143
3189
  # undef NAME_OF_CURRENT_INSN
3144
3190
 
3145
3191
  /* ### Instruction trailers. ### */
@@ -3166,7 +3212,7 @@ INSN_ENTRY(opt_mod)
3166
3212
  /* ### Declare and assign variables. ### */
3167
3213
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3168
3214
  # define INSN_ATTR(x) attr_ ## x ## _opt_mod(cd)
3169
- bool leaf = INSN_ATTR(leaf);
3215
+ const bool leaf = INSN_ATTR(leaf);
3170
3216
  VALUE recv = TOPN(1);
3171
3217
  VALUE obj = TOPN(0);
3172
3218
  VALUE val;
@@ -3179,7 +3225,7 @@ INSN_ENTRY(opt_mod)
3179
3225
 
3180
3226
  /* ### Here we do the instruction body. ### */
3181
3227
  # define NAME_OF_CURRENT_INSN opt_mod
3182
- # line 1129 "insns.def"
3228
+ # line 1145 "insns.def"
3183
3229
  {
3184
3230
  val = vm_opt_mod(recv, obj);
3185
3231
 
@@ -3187,7 +3233,7 @@ INSN_ENTRY(opt_mod)
3187
3233
  CALL_SIMPLE_METHOD();
3188
3234
  }
3189
3235
  }
3190
- # line 3191 "vm.inc"
3236
+ # line 3237 "vm.inc"
3191
3237
  # undef NAME_OF_CURRENT_INSN
3192
3238
 
3193
3239
  /* ### Instruction trailers. ### */
@@ -3214,7 +3260,7 @@ INSN_ENTRY(opt_eq)
3214
3260
  /* ### Declare and assign variables. ### */
3215
3261
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3216
3262
  # define INSN_ATTR(x) attr_ ## x ## _opt_eq(cd)
3217
- bool leaf = INSN_ATTR(leaf);
3263
+ const bool leaf = INSN_ATTR(leaf);
3218
3264
  VALUE recv = TOPN(1);
3219
3265
  VALUE obj = TOPN(0);
3220
3266
  VALUE val;
@@ -3227,7 +3273,7 @@ INSN_ENTRY(opt_eq)
3227
3273
 
3228
3274
  /* ### Here we do the instruction body. ### */
3229
3275
  # define NAME_OF_CURRENT_INSN opt_eq
3230
- # line 1143 "insns.def"
3276
+ # line 1159 "insns.def"
3231
3277
  {
3232
3278
  val = opt_equality(GET_ISEQ(), recv, obj, cd);
3233
3279
 
@@ -3235,7 +3281,7 @@ INSN_ENTRY(opt_eq)
3235
3281
  CALL_SIMPLE_METHOD();
3236
3282
  }
3237
3283
  }
3238
- # line 3239 "vm.inc"
3284
+ # line 3285 "vm.inc"
3239
3285
  # undef NAME_OF_CURRENT_INSN
3240
3286
 
3241
3287
  /* ### Instruction trailers. ### */
@@ -3263,7 +3309,7 @@ INSN_ENTRY(opt_neq)
3263
3309
  CALL_DATA cd_eq = (CALL_DATA)GET_OPERAND(1);
3264
3310
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3265
3311
  # define INSN_ATTR(x) attr_ ## x ## _opt_neq(cd_eq, cd)
3266
- bool leaf = INSN_ATTR(leaf);
3312
+ const bool leaf = INSN_ATTR(leaf);
3267
3313
  VALUE recv = TOPN(1);
3268
3314
  VALUE obj = TOPN(0);
3269
3315
  VALUE val;
@@ -3277,7 +3323,7 @@ INSN_ENTRY(opt_neq)
3277
3323
 
3278
3324
  /* ### Here we do the instruction body. ### */
3279
3325
  # define NAME_OF_CURRENT_INSN opt_neq
3280
- # line 1157 "insns.def"
3326
+ # line 1173 "insns.def"
3281
3327
  {
3282
3328
  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
3283
3329
 
@@ -3285,7 +3331,7 @@ INSN_ENTRY(opt_neq)
3285
3331
  CALL_SIMPLE_METHOD();
3286
3332
  }
3287
3333
  }
3288
- # line 3289 "vm.inc"
3334
+ # line 3335 "vm.inc"
3289
3335
  # undef NAME_OF_CURRENT_INSN
3290
3336
 
3291
3337
  /* ### Instruction trailers. ### */
@@ -3312,7 +3358,7 @@ INSN_ENTRY(opt_lt)
3312
3358
  /* ### Declare and assign variables. ### */
3313
3359
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3314
3360
  # define INSN_ATTR(x) attr_ ## x ## _opt_lt(cd)
3315
- bool leaf = INSN_ATTR(leaf);
3361
+ const bool leaf = INSN_ATTR(leaf);
3316
3362
  VALUE recv = TOPN(1);
3317
3363
  VALUE obj = TOPN(0);
3318
3364
  VALUE val;
@@ -3325,7 +3371,7 @@ INSN_ENTRY(opt_lt)
3325
3371
 
3326
3372
  /* ### Here we do the instruction body. ### */
3327
3373
  # define NAME_OF_CURRENT_INSN opt_lt
3328
- # line 1171 "insns.def"
3374
+ # line 1187 "insns.def"
3329
3375
  {
3330
3376
  val = vm_opt_lt(recv, obj);
3331
3377
 
@@ -3333,7 +3379,7 @@ INSN_ENTRY(opt_lt)
3333
3379
  CALL_SIMPLE_METHOD();
3334
3380
  }
3335
3381
  }
3336
- # line 3337 "vm.inc"
3382
+ # line 3383 "vm.inc"
3337
3383
  # undef NAME_OF_CURRENT_INSN
3338
3384
 
3339
3385
  /* ### Instruction trailers. ### */
@@ -3360,7 +3406,7 @@ INSN_ENTRY(opt_le)
3360
3406
  /* ### Declare and assign variables. ### */
3361
3407
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3362
3408
  # define INSN_ATTR(x) attr_ ## x ## _opt_le(cd)
3363
- bool leaf = INSN_ATTR(leaf);
3409
+ const bool leaf = INSN_ATTR(leaf);
3364
3410
  VALUE recv = TOPN(1);
3365
3411
  VALUE obj = TOPN(0);
3366
3412
  VALUE val;
@@ -3373,7 +3419,7 @@ INSN_ENTRY(opt_le)
3373
3419
 
3374
3420
  /* ### Here we do the instruction body. ### */
3375
3421
  # define NAME_OF_CURRENT_INSN opt_le
3376
- # line 1185 "insns.def"
3422
+ # line 1201 "insns.def"
3377
3423
  {
3378
3424
  val = vm_opt_le(recv, obj);
3379
3425
 
@@ -3381,7 +3427,7 @@ INSN_ENTRY(opt_le)
3381
3427
  CALL_SIMPLE_METHOD();
3382
3428
  }
3383
3429
  }
3384
- # line 3385 "vm.inc"
3430
+ # line 3431 "vm.inc"
3385
3431
  # undef NAME_OF_CURRENT_INSN
3386
3432
 
3387
3433
  /* ### Instruction trailers. ### */
@@ -3408,7 +3454,7 @@ INSN_ENTRY(opt_gt)
3408
3454
  /* ### Declare and assign variables. ### */
3409
3455
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3410
3456
  # define INSN_ATTR(x) attr_ ## x ## _opt_gt(cd)
3411
- bool leaf = INSN_ATTR(leaf);
3457
+ const bool leaf = INSN_ATTR(leaf);
3412
3458
  VALUE recv = TOPN(1);
3413
3459
  VALUE obj = TOPN(0);
3414
3460
  VALUE val;
@@ -3421,7 +3467,7 @@ INSN_ENTRY(opt_gt)
3421
3467
 
3422
3468
  /* ### Here we do the instruction body. ### */
3423
3469
  # define NAME_OF_CURRENT_INSN opt_gt
3424
- # line 1199 "insns.def"
3470
+ # line 1215 "insns.def"
3425
3471
  {
3426
3472
  val = vm_opt_gt(recv, obj);
3427
3473
 
@@ -3429,7 +3475,7 @@ INSN_ENTRY(opt_gt)
3429
3475
  CALL_SIMPLE_METHOD();
3430
3476
  }
3431
3477
  }
3432
- # line 3433 "vm.inc"
3478
+ # line 3479 "vm.inc"
3433
3479
  # undef NAME_OF_CURRENT_INSN
3434
3480
 
3435
3481
  /* ### Instruction trailers. ### */
@@ -3456,7 +3502,7 @@ INSN_ENTRY(opt_ge)
3456
3502
  /* ### Declare and assign variables. ### */
3457
3503
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3458
3504
  # define INSN_ATTR(x) attr_ ## x ## _opt_ge(cd)
3459
- bool leaf = INSN_ATTR(leaf);
3505
+ const bool leaf = INSN_ATTR(leaf);
3460
3506
  VALUE recv = TOPN(1);
3461
3507
  VALUE obj = TOPN(0);
3462
3508
  VALUE val;
@@ -3469,7 +3515,7 @@ INSN_ENTRY(opt_ge)
3469
3515
 
3470
3516
  /* ### Here we do the instruction body. ### */
3471
3517
  # define NAME_OF_CURRENT_INSN opt_ge
3472
- # line 1213 "insns.def"
3518
+ # line 1229 "insns.def"
3473
3519
  {
3474
3520
  val = vm_opt_ge(recv, obj);
3475
3521
 
@@ -3477,7 +3523,7 @@ INSN_ENTRY(opt_ge)
3477
3523
  CALL_SIMPLE_METHOD();
3478
3524
  }
3479
3525
  }
3480
- # line 3481 "vm.inc"
3526
+ # line 3527 "vm.inc"
3481
3527
  # undef NAME_OF_CURRENT_INSN
3482
3528
 
3483
3529
  /* ### Instruction trailers. ### */
@@ -3504,7 +3550,7 @@ INSN_ENTRY(opt_ltlt)
3504
3550
  /* ### Declare and assign variables. ### */
3505
3551
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3506
3552
  # define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(cd)
3507
- bool leaf = INSN_ATTR(leaf);
3553
+ const bool leaf = INSN_ATTR(leaf);
3508
3554
  VALUE recv = TOPN(1);
3509
3555
  VALUE obj = TOPN(0);
3510
3556
  VALUE val;
@@ -3517,7 +3563,7 @@ INSN_ENTRY(opt_ltlt)
3517
3563
 
3518
3564
  /* ### Here we do the instruction body. ### */
3519
3565
  # define NAME_OF_CURRENT_INSN opt_ltlt
3520
- # line 1231 "insns.def"
3566
+ # line 1247 "insns.def"
3521
3567
  {
3522
3568
  val = vm_opt_ltlt(recv, obj);
3523
3569
 
@@ -3525,7 +3571,7 @@ INSN_ENTRY(opt_ltlt)
3525
3571
  CALL_SIMPLE_METHOD();
3526
3572
  }
3527
3573
  }
3528
- # line 3529 "vm.inc"
3574
+ # line 3575 "vm.inc"
3529
3575
  # undef NAME_OF_CURRENT_INSN
3530
3576
 
3531
3577
  /* ### Instruction trailers. ### */
@@ -3552,7 +3598,7 @@ INSN_ENTRY(opt_and)
3552
3598
  /* ### Declare and assign variables. ### */
3553
3599
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3554
3600
  # define INSN_ATTR(x) attr_ ## x ## _opt_and(cd)
3555
- bool leaf = INSN_ATTR(leaf);
3601
+ const bool leaf = INSN_ATTR(leaf);
3556
3602
  VALUE recv = TOPN(1);
3557
3603
  VALUE obj = TOPN(0);
3558
3604
  VALUE val;
@@ -3565,7 +3611,7 @@ INSN_ENTRY(opt_and)
3565
3611
 
3566
3612
  /* ### Here we do the instruction body. ### */
3567
3613
  # define NAME_OF_CURRENT_INSN opt_and
3568
- # line 1245 "insns.def"
3614
+ # line 1261 "insns.def"
3569
3615
  {
3570
3616
  val = vm_opt_and(recv, obj);
3571
3617
 
@@ -3573,7 +3619,7 @@ INSN_ENTRY(opt_and)
3573
3619
  CALL_SIMPLE_METHOD();
3574
3620
  }
3575
3621
  }
3576
- # line 3577 "vm.inc"
3622
+ # line 3623 "vm.inc"
3577
3623
  # undef NAME_OF_CURRENT_INSN
3578
3624
 
3579
3625
  /* ### Instruction trailers. ### */
@@ -3600,7 +3646,7 @@ INSN_ENTRY(opt_or)
3600
3646
  /* ### Declare and assign variables. ### */
3601
3647
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3602
3648
  # define INSN_ATTR(x) attr_ ## x ## _opt_or(cd)
3603
- bool leaf = INSN_ATTR(leaf);
3649
+ const bool leaf = INSN_ATTR(leaf);
3604
3650
  VALUE recv = TOPN(1);
3605
3651
  VALUE obj = TOPN(0);
3606
3652
  VALUE val;
@@ -3613,7 +3659,7 @@ INSN_ENTRY(opt_or)
3613
3659
 
3614
3660
  /* ### Here we do the instruction body. ### */
3615
3661
  # define NAME_OF_CURRENT_INSN opt_or
3616
- # line 1259 "insns.def"
3662
+ # line 1275 "insns.def"
3617
3663
  {
3618
3664
  val = vm_opt_or(recv, obj);
3619
3665
 
@@ -3621,7 +3667,7 @@ INSN_ENTRY(opt_or)
3621
3667
  CALL_SIMPLE_METHOD();
3622
3668
  }
3623
3669
  }
3624
- # line 3625 "vm.inc"
3670
+ # line 3671 "vm.inc"
3625
3671
  # undef NAME_OF_CURRENT_INSN
3626
3672
 
3627
3673
  /* ### Instruction trailers. ### */
@@ -3648,7 +3694,7 @@ INSN_ENTRY(opt_aref)
3648
3694
  /* ### Declare and assign variables. ### */
3649
3695
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3650
3696
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref(cd)
3651
- bool leaf = INSN_ATTR(leaf);
3697
+ const bool leaf = INSN_ATTR(leaf);
3652
3698
  VALUE recv = TOPN(1);
3653
3699
  VALUE obj = TOPN(0);
3654
3700
  VALUE val;
@@ -3661,7 +3707,7 @@ INSN_ENTRY(opt_aref)
3661
3707
 
3662
3708
  /* ### Here we do the instruction body. ### */
3663
3709
  # define NAME_OF_CURRENT_INSN opt_aref
3664
- # line 1278 "insns.def"
3710
+ # line 1294 "insns.def"
3665
3711
  {
3666
3712
  val = vm_opt_aref(recv, obj);
3667
3713
 
@@ -3669,7 +3715,7 @@ INSN_ENTRY(opt_aref)
3669
3715
  CALL_SIMPLE_METHOD();
3670
3716
  }
3671
3717
  }
3672
- # line 3673 "vm.inc"
3718
+ # line 3719 "vm.inc"
3673
3719
  # undef NAME_OF_CURRENT_INSN
3674
3720
 
3675
3721
  /* ### Instruction trailers. ### */
@@ -3696,7 +3742,7 @@ INSN_ENTRY(opt_aset)
3696
3742
  /* ### Declare and assign variables. ### */
3697
3743
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3698
3744
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset(cd)
3699
- bool leaf = INSN_ATTR(leaf);
3745
+ const bool leaf = INSN_ATTR(leaf);
3700
3746
  VALUE recv = TOPN(2);
3701
3747
  VALUE obj = TOPN(1);
3702
3748
  VALUE set = TOPN(0);
@@ -3710,7 +3756,7 @@ INSN_ENTRY(opt_aset)
3710
3756
 
3711
3757
  /* ### Here we do the instruction body. ### */
3712
3758
  # define NAME_OF_CURRENT_INSN opt_aset
3713
- # line 1295 "insns.def"
3759
+ # line 1311 "insns.def"
3714
3760
  {
3715
3761
  val = vm_opt_aset(recv, obj, set);
3716
3762
 
@@ -3718,7 +3764,7 @@ INSN_ENTRY(opt_aset)
3718
3764
  CALL_SIMPLE_METHOD();
3719
3765
  }
3720
3766
  }
3721
- # line 3722 "vm.inc"
3767
+ # line 3768 "vm.inc"
3722
3768
  # undef NAME_OF_CURRENT_INSN
3723
3769
 
3724
3770
  /* ### Instruction trailers. ### */
@@ -3746,7 +3792,7 @@ INSN_ENTRY(opt_aset_with)
3746
3792
  VALUE key = (VALUE)GET_OPERAND(1);
3747
3793
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3748
3794
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
3749
- bool leaf = INSN_ATTR(leaf);
3795
+ const bool leaf = INSN_ATTR(leaf);
3750
3796
  VALUE recv = TOPN(1);
3751
3797
  VALUE val = TOPN(0);
3752
3798
 
@@ -3759,7 +3805,7 @@ INSN_ENTRY(opt_aset_with)
3759
3805
 
3760
3806
  /* ### Here we do the instruction body. ### */
3761
3807
  # define NAME_OF_CURRENT_INSN opt_aset_with
3762
- # line 1311 "insns.def"
3808
+ # line 1327 "insns.def"
3763
3809
  {
3764
3810
  VALUE tmp = vm_opt_aset_with(recv, key, val);
3765
3811
 
@@ -3774,7 +3820,7 @@ INSN_ENTRY(opt_aset_with)
3774
3820
  CALL_SIMPLE_METHOD();
3775
3821
  }
3776
3822
  }
3777
- # line 3778 "vm.inc"
3823
+ # line 3824 "vm.inc"
3778
3824
  # undef NAME_OF_CURRENT_INSN
3779
3825
 
3780
3826
  /* ### Instruction trailers. ### */
@@ -3802,7 +3848,7 @@ INSN_ENTRY(opt_aref_with)
3802
3848
  VALUE key = (VALUE)GET_OPERAND(1);
3803
3849
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3804
3850
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
3805
- bool leaf = INSN_ATTR(leaf);
3851
+ const bool leaf = INSN_ATTR(leaf);
3806
3852
  VALUE recv = TOPN(0);
3807
3853
  VALUE val;
3808
3854
 
@@ -3815,7 +3861,7 @@ INSN_ENTRY(opt_aref_with)
3815
3861
 
3816
3862
  /* ### Here we do the instruction body. ### */
3817
3863
  # define NAME_OF_CURRENT_INSN opt_aref_with
3818
- # line 1334 "insns.def"
3864
+ # line 1350 "insns.def"
3819
3865
  {
3820
3866
  val = vm_opt_aref_with(recv, key);
3821
3867
 
@@ -3826,7 +3872,7 @@ INSN_ENTRY(opt_aref_with)
3826
3872
  CALL_SIMPLE_METHOD();
3827
3873
  }
3828
3874
  }
3829
- # line 3830 "vm.inc"
3875
+ # line 3876 "vm.inc"
3830
3876
  # undef NAME_OF_CURRENT_INSN
3831
3877
 
3832
3878
  /* ### Instruction trailers. ### */
@@ -3853,7 +3899,7 @@ INSN_ENTRY(opt_length)
3853
3899
  /* ### Declare and assign variables. ### */
3854
3900
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3855
3901
  # define INSN_ATTR(x) attr_ ## x ## _opt_length(cd)
3856
- bool leaf = INSN_ATTR(leaf);
3902
+ const bool leaf = INSN_ATTR(leaf);
3857
3903
  VALUE recv = TOPN(0);
3858
3904
  VALUE val;
3859
3905
 
@@ -3865,7 +3911,7 @@ INSN_ENTRY(opt_length)
3865
3911
 
3866
3912
  /* ### Here we do the instruction body. ### */
3867
3913
  # define NAME_OF_CURRENT_INSN opt_length
3868
- # line 1351 "insns.def"
3914
+ # line 1367 "insns.def"
3869
3915
  {
3870
3916
  val = vm_opt_length(recv, BOP_LENGTH);
3871
3917
 
@@ -3873,7 +3919,7 @@ INSN_ENTRY(opt_length)
3873
3919
  CALL_SIMPLE_METHOD();
3874
3920
  }
3875
3921
  }
3876
- # line 3877 "vm.inc"
3922
+ # line 3923 "vm.inc"
3877
3923
  # undef NAME_OF_CURRENT_INSN
3878
3924
 
3879
3925
  /* ### Instruction trailers. ### */
@@ -3900,7 +3946,7 @@ INSN_ENTRY(opt_size)
3900
3946
  /* ### Declare and assign variables. ### */
3901
3947
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3902
3948
  # define INSN_ATTR(x) attr_ ## x ## _opt_size(cd)
3903
- bool leaf = INSN_ATTR(leaf);
3949
+ const bool leaf = INSN_ATTR(leaf);
3904
3950
  VALUE recv = TOPN(0);
3905
3951
  VALUE val;
3906
3952
 
@@ -3912,7 +3958,7 @@ INSN_ENTRY(opt_size)
3912
3958
 
3913
3959
  /* ### Here we do the instruction body. ### */
3914
3960
  # define NAME_OF_CURRENT_INSN opt_size
3915
- # line 1365 "insns.def"
3961
+ # line 1381 "insns.def"
3916
3962
  {
3917
3963
  val = vm_opt_length(recv, BOP_SIZE);
3918
3964
 
@@ -3920,7 +3966,7 @@ INSN_ENTRY(opt_size)
3920
3966
  CALL_SIMPLE_METHOD();
3921
3967
  }
3922
3968
  }
3923
- # line 3924 "vm.inc"
3969
+ # line 3970 "vm.inc"
3924
3970
  # undef NAME_OF_CURRENT_INSN
3925
3971
 
3926
3972
  /* ### Instruction trailers. ### */
@@ -3947,7 +3993,7 @@ INSN_ENTRY(opt_empty_p)
3947
3993
  /* ### Declare and assign variables. ### */
3948
3994
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3949
3995
  # define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(cd)
3950
- bool leaf = INSN_ATTR(leaf);
3996
+ const bool leaf = INSN_ATTR(leaf);
3951
3997
  VALUE recv = TOPN(0);
3952
3998
  VALUE val;
3953
3999
 
@@ -3959,7 +4005,7 @@ INSN_ENTRY(opt_empty_p)
3959
4005
 
3960
4006
  /* ### Here we do the instruction body. ### */
3961
4007
  # define NAME_OF_CURRENT_INSN opt_empty_p
3962
- # line 1379 "insns.def"
4008
+ # line 1395 "insns.def"
3963
4009
  {
3964
4010
  val = vm_opt_empty_p(recv);
3965
4011
 
@@ -3967,7 +4013,7 @@ INSN_ENTRY(opt_empty_p)
3967
4013
  CALL_SIMPLE_METHOD();
3968
4014
  }
3969
4015
  }
3970
- # line 3971 "vm.inc"
4016
+ # line 4017 "vm.inc"
3971
4017
  # undef NAME_OF_CURRENT_INSN
3972
4018
 
3973
4019
  /* ### Instruction trailers. ### */
@@ -3994,7 +4040,7 @@ INSN_ENTRY(opt_succ)
3994
4040
  /* ### Declare and assign variables. ### */
3995
4041
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3996
4042
  # define INSN_ATTR(x) attr_ ## x ## _opt_succ(cd)
3997
- bool leaf = INSN_ATTR(leaf);
4043
+ const bool leaf = INSN_ATTR(leaf);
3998
4044
  VALUE recv = TOPN(0);
3999
4045
  VALUE val;
4000
4046
 
@@ -4006,7 +4052,7 @@ INSN_ENTRY(opt_succ)
4006
4052
 
4007
4053
  /* ### Here we do the instruction body. ### */
4008
4054
  # define NAME_OF_CURRENT_INSN opt_succ
4009
- # line 1393 "insns.def"
4055
+ # line 1409 "insns.def"
4010
4056
  {
4011
4057
  val = vm_opt_succ(recv);
4012
4058
 
@@ -4014,7 +4060,7 @@ INSN_ENTRY(opt_succ)
4014
4060
  CALL_SIMPLE_METHOD();
4015
4061
  }
4016
4062
  }
4017
- # line 4018 "vm.inc"
4063
+ # line 4064 "vm.inc"
4018
4064
  # undef NAME_OF_CURRENT_INSN
4019
4065
 
4020
4066
  /* ### Instruction trailers. ### */
@@ -4041,7 +4087,7 @@ INSN_ENTRY(opt_not)
4041
4087
  /* ### Declare and assign variables. ### */
4042
4088
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4043
4089
  # define INSN_ATTR(x) attr_ ## x ## _opt_not(cd)
4044
- bool leaf = INSN_ATTR(leaf);
4090
+ const bool leaf = INSN_ATTR(leaf);
4045
4091
  VALUE recv = TOPN(0);
4046
4092
  VALUE val;
4047
4093
 
@@ -4053,7 +4099,7 @@ INSN_ENTRY(opt_not)
4053
4099
 
4054
4100
  /* ### Here we do the instruction body. ### */
4055
4101
  # define NAME_OF_CURRENT_INSN opt_not
4056
- # line 1407 "insns.def"
4102
+ # line 1423 "insns.def"
4057
4103
  {
4058
4104
  val = vm_opt_not(GET_ISEQ(), cd, recv);
4059
4105
 
@@ -4061,7 +4107,7 @@ INSN_ENTRY(opt_not)
4061
4107
  CALL_SIMPLE_METHOD();
4062
4108
  }
4063
4109
  }
4064
- # line 4065 "vm.inc"
4110
+ # line 4111 "vm.inc"
4065
4111
  # undef NAME_OF_CURRENT_INSN
4066
4112
 
4067
4113
  /* ### Instruction trailers. ### */
@@ -4088,7 +4134,7 @@ INSN_ENTRY(opt_regexpmatch2)
4088
4134
  /* ### Declare and assign variables. ### */
4089
4135
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4090
4136
  # define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(cd)
4091
- bool leaf = INSN_ATTR(leaf);
4137
+ const bool leaf = INSN_ATTR(leaf);
4092
4138
  VALUE obj2 = TOPN(1);
4093
4139
  VALUE obj1 = TOPN(0);
4094
4140
  VALUE val;
@@ -4101,7 +4147,7 @@ INSN_ENTRY(opt_regexpmatch2)
4101
4147
 
4102
4148
  /* ### Here we do the instruction body. ### */
4103
4149
  # define NAME_OF_CURRENT_INSN opt_regexpmatch2
4104
- # line 1422 "insns.def"
4150
+ # line 1438 "insns.def"
4105
4151
  {
4106
4152
  val = vm_opt_regexpmatch2(obj2, obj1);
4107
4153
 
@@ -4109,7 +4155,7 @@ INSN_ENTRY(opt_regexpmatch2)
4109
4155
  CALL_SIMPLE_METHOD();
4110
4156
  }
4111
4157
  }
4112
- # line 4113 "vm.inc"
4158
+ # line 4159 "vm.inc"
4113
4159
  # undef NAME_OF_CURRENT_INSN
4114
4160
 
4115
4161
  /* ### Instruction trailers. ### */
@@ -4136,7 +4182,7 @@ INSN_ENTRY(invokebuiltin)
4136
4182
  /* ### Declare and assign variables. ### */
4137
4183
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4138
4184
  # define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
4139
- bool leaf = INSN_ATTR(leaf);
4185
+ const bool leaf = INSN_ATTR(leaf);
4140
4186
  VALUE val;
4141
4187
 
4142
4188
  /* ### Instruction preambles. ### */
@@ -4147,11 +4193,11 @@ INSN_ENTRY(invokebuiltin)
4147
4193
 
4148
4194
  /* ### Here we do the instruction body. ### */
4149
4195
  # define NAME_OF_CURRENT_INSN invokebuiltin
4150
- # line 1459 "insns.def"
4196
+ # line 1475 "insns.def"
4151
4197
  {
4152
4198
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4153
4199
  }
4154
- # line 4155 "vm.inc"
4200
+ # line 4201 "vm.inc"
4155
4201
  # undef NAME_OF_CURRENT_INSN
4156
4202
 
4157
4203
  /* ### Instruction trailers. ### */
@@ -4179,7 +4225,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4179
4225
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4180
4226
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4181
4227
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
4182
- bool leaf = INSN_ATTR(leaf);
4228
+ const bool leaf = INSN_ATTR(leaf);
4183
4229
  VALUE val;
4184
4230
 
4185
4231
  /* ### Instruction preambles. ### */
@@ -4191,11 +4237,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4191
4237
 
4192
4238
  /* ### Here we do the instruction body. ### */
4193
4239
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
4194
- # line 1470 "insns.def"
4240
+ # line 1486 "insns.def"
4195
4241
  {
4196
4242
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4197
4243
  }
4198
- # line 4199 "vm.inc"
4244
+ # line 4245 "vm.inc"
4199
4245
  # undef NAME_OF_CURRENT_INSN
4200
4246
 
4201
4247
  /* ### Instruction trailers. ### */
@@ -4223,7 +4269,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4223
4269
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4224
4270
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4225
4271
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate_leave(bf, index)
4226
- bool leaf = INSN_ATTR(leaf);
4272
+ const bool leaf = INSN_ATTR(leaf);
4227
4273
  VALUE val;
4228
4274
 
4229
4275
  /* ### Instruction preambles. ### */
@@ -4235,7 +4281,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4235
4281
 
4236
4282
  /* ### Here we do the instruction body. ### */
4237
4283
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
4238
- # line 1481 "insns.def"
4284
+ # line 1497 "insns.def"
4239
4285
  {
4240
4286
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4241
4287
 
@@ -4253,7 +4299,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4253
4299
  RESTORE_REGS();
4254
4300
  }
4255
4301
  }
4256
- # line 4257 "vm.inc"
4302
+ # line 4303 "vm.inc"
4257
4303
  # undef NAME_OF_CURRENT_INSN
4258
4304
 
4259
4305
  /* ### Instruction trailers. ### */
@@ -4280,10 +4326,10 @@ INSN_ENTRY(getlocal_WC_0)
4280
4326
  /* ### Declare and assign variables. ### */
4281
4327
  #line 10 "defs/opt_operand.def"
4282
4328
  const rb_num_t level = 0;
4283
- #line 4284 "vm.inc"
4329
+ #line 4330 "vm.inc"
4284
4330
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4285
4331
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4286
- bool leaf = INSN_ATTR(leaf);
4332
+ const bool leaf = INSN_ATTR(leaf);
4287
4333
  VALUE val;
4288
4334
 
4289
4335
  /* ### Instruction preambles. ### */
@@ -4300,7 +4346,7 @@ INSN_ENTRY(getlocal_WC_0)
4300
4346
  RB_DEBUG_COUNTER_INC(lvar_get);
4301
4347
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4302
4348
  }
4303
- # line 4304 "vm.inc"
4349
+ # line 4350 "vm.inc"
4304
4350
  # undef NAME_OF_CURRENT_INSN
4305
4351
 
4306
4352
  /* ### Instruction trailers. ### */
@@ -4327,10 +4373,10 @@ INSN_ENTRY(getlocal_WC_1)
4327
4373
  /* ### Declare and assign variables. ### */
4328
4374
  #line 11 "defs/opt_operand.def"
4329
4375
  const rb_num_t level = 1;
4330
- #line 4331 "vm.inc"
4376
+ #line 4377 "vm.inc"
4331
4377
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4332
4378
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4333
- bool leaf = INSN_ATTR(leaf);
4379
+ const bool leaf = INSN_ATTR(leaf);
4334
4380
  VALUE val;
4335
4381
 
4336
4382
  /* ### Instruction preambles. ### */
@@ -4347,7 +4393,7 @@ INSN_ENTRY(getlocal_WC_1)
4347
4393
  RB_DEBUG_COUNTER_INC(lvar_get);
4348
4394
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4349
4395
  }
4350
- # line 4351 "vm.inc"
4396
+ # line 4397 "vm.inc"
4351
4397
  # undef NAME_OF_CURRENT_INSN
4352
4398
 
4353
4399
  /* ### Instruction trailers. ### */
@@ -4374,10 +4420,10 @@ INSN_ENTRY(setlocal_WC_0)
4374
4420
  /* ### Declare and assign variables. ### */
4375
4421
  #line 12 "defs/opt_operand.def"
4376
4422
  const rb_num_t level = 0;
4377
- #line 4378 "vm.inc"
4423
+ #line 4424 "vm.inc"
4378
4424
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4379
4425
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4380
- bool leaf = INSN_ATTR(leaf);
4426
+ const bool leaf = INSN_ATTR(leaf);
4381
4427
  VALUE val = TOPN(0);
4382
4428
 
4383
4429
  /* ### Instruction preambles. ### */
@@ -4394,7 +4440,7 @@ INSN_ENTRY(setlocal_WC_0)
4394
4440
  RB_DEBUG_COUNTER_INC(lvar_set);
4395
4441
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4396
4442
  }
4397
- # line 4398 "vm.inc"
4443
+ # line 4444 "vm.inc"
4398
4444
  # undef NAME_OF_CURRENT_INSN
4399
4445
 
4400
4446
  /* ### Instruction trailers. ### */
@@ -4418,10 +4464,10 @@ INSN_ENTRY(setlocal_WC_1)
4418
4464
  /* ### Declare and assign variables. ### */
4419
4465
  #line 13 "defs/opt_operand.def"
4420
4466
  const rb_num_t level = 1;
4421
- #line 4422 "vm.inc"
4467
+ #line 4468 "vm.inc"
4422
4468
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4423
4469
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4424
- bool leaf = INSN_ATTR(leaf);
4470
+ const bool leaf = INSN_ATTR(leaf);
4425
4471
  VALUE val = TOPN(0);
4426
4472
 
4427
4473
  /* ### Instruction preambles. ### */
@@ -4438,7 +4484,7 @@ INSN_ENTRY(setlocal_WC_1)
4438
4484
  RB_DEBUG_COUNTER_INC(lvar_set);
4439
4485
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4440
4486
  }
4441
- # line 4442 "vm.inc"
4487
+ # line 4488 "vm.inc"
4442
4488
  # undef NAME_OF_CURRENT_INSN
4443
4489
 
4444
4490
  /* ### Instruction trailers. ### */
@@ -4462,9 +4508,9 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4462
4508
  /* ### Declare and assign variables. ### */
4463
4509
  #line 15 "defs/opt_operand.def"
4464
4510
  const VALUE val = INT2FIX(0);
4465
- #line 4466 "vm.inc"
4511
+ #line 4512 "vm.inc"
4466
4512
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4467
- bool leaf = INSN_ATTR(leaf);
4513
+ const bool leaf = INSN_ATTR(leaf);
4468
4514
 
4469
4515
  /* ### Instruction preambles. ### */
4470
4516
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -4493,9 +4539,9 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4493
4539
  /* ### Declare and assign variables. ### */
4494
4540
  #line 16 "defs/opt_operand.def"
4495
4541
  const VALUE val = INT2FIX(1);
4496
- #line 4497 "vm.inc"
4542
+ #line 4543 "vm.inc"
4497
4543
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4498
- bool leaf = INSN_ATTR(leaf);
4544
+ const bool leaf = INSN_ATTR(leaf);
4499
4545
 
4500
4546
  /* ### Instruction preambles. ### */
4501
4547
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -4712,13 +4758,13 @@ INSN_ENTRY(trace_concatstrings)
4712
4758
  END_INSN(trace_concatstrings);
4713
4759
  }
4714
4760
 
4715
- /* insn trace_tostring(...)(...)(...) */
4716
- INSN_ENTRY(trace_tostring)
4761
+ /* insn trace_anytostring(...)(...)(...) */
4762
+ INSN_ENTRY(trace_anytostring)
4717
4763
  {
4718
4764
  vm_trace(ec, GET_CFP());
4719
4765
 
4720
- DISPATCH_ORIGINAL_INSN(tostring);
4721
- END_INSN(trace_tostring);
4766
+ DISPATCH_ORIGINAL_INSN(anytostring);
4767
+ END_INSN(trace_anytostring);
4722
4768
  }
4723
4769
 
4724
4770
  /* insn trace_toregexp(...)(...)(...) */
@@ -4964,6 +5010,15 @@ INSN_ENTRY(trace_opt_send_without_block)
4964
5010
  END_INSN(trace_opt_send_without_block);
4965
5011
  }
4966
5012
 
5013
+ /* insn trace_objtostring(...)(...)(...) */
5014
+ INSN_ENTRY(trace_objtostring)
5015
+ {
5016
+ vm_trace(ec, GET_CFP());
5017
+
5018
+ DISPATCH_ORIGINAL_INSN(objtostring);
5019
+ END_INSN(trace_objtostring);
5020
+ }
5021
+
4967
5022
  /* insn trace_opt_str_freeze(...)(...)(...) */
4968
5023
  INSN_ENTRY(trace_opt_str_freeze)
4969
5024
  {