debase-ruby_core_source 0.9.10 → 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -18
  3. data/README.md +2 -2
  4. data/lib/debase/ruby_core_source.rb +1 -3
  5. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/addr2line.h +21 -0
  6. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ccan/build_assert/build_assert.h +40 -0
  7. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ccan/check_type/check_type.h +63 -0
  8. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ccan/container_of/container_of.h +142 -0
  9. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ccan/list/list.h +773 -0
  10. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ccan/str/str.h +16 -0
  11. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/constant.h +50 -0
  12. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/debug_counter.h +109 -0
  13. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/dln.h +51 -0
  14. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/encindex.h +67 -0
  15. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/eval_intern.h +341 -0
  16. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/gc.h +117 -0
  17. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/id.h +250 -0
  18. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/id_table.h +31 -0
  19. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/insns.inc +118 -0
  20. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/insns_info.inc +827 -0
  21. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/internal.h +1957 -0
  22. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/iseq.h +268 -0
  23. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/known_errors.inc +746 -0
  24. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/method.h +216 -0
  25. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/node.h +523 -0
  26. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/node_name.inc +212 -0
  27. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/opt_sc.inc +809 -0
  28. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/optinsn.inc +77 -0
  29. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/optunifs.inc +49 -0
  30. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/parse.h +191 -0
  31. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/probes_helper.h +43 -0
  32. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/regenc.h +254 -0
  33. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/regint.h +938 -0
  34. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/regparse.h +370 -0
  35. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/revision.h +1 -0
  36. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ruby_assert.h +54 -0
  37. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/ruby_atomic.h +233 -0
  38. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/siphash.h +48 -0
  39. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/symbol.h +108 -0
  40. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/thread_pthread.h +54 -0
  41. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/thread_win32.h +36 -0
  42. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/timev.h +42 -0
  43. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/transcode_data.h +139 -0
  44. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/version.h +73 -0
  45. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm.inc +2935 -0
  46. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_call_iseq_optimized.inc +212 -0
  47. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_core.h +1699 -0
  48. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_debug.h +37 -0
  49. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_exec.h +182 -0
  50. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_insnhelper.h +250 -0
  51. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_opts.h +57 -0
  52. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vmtc.inc +115 -0
  53. data/lib/debase/ruby_core_source/version.rb +1 -1
  54. metadata +50 -2
@@ -0,0 +1,827 @@
1
+ /** -*-c-*-
2
+ This file contains instruction information for yarv instruction sequence.
3
+
4
+ ----
5
+ This file is auto generated by insns2vm.rb
6
+ DO NOT TOUCH!
7
+
8
+ If you want to fix something, you must edit 'template/insns_info.inc.tmpl'
9
+ or tool/insns2vm.rb
10
+ */
11
+
12
+ #define TS_OFFSET 'O'
13
+ #define TS_NUM 'N'
14
+ #define TS_LINDEX 'L'
15
+ #define TS_VALUE 'V'
16
+ #define TS_ID 'I'
17
+ #define TS_GENTRY 'G'
18
+ #define TS_IC 'K'
19
+ #define TS_CALLINFO 'C'
20
+ #define TS_CALLCACHE 'E'
21
+ #define TS_CDHASH 'H'
22
+ #define TS_ISEQ 'S'
23
+ #define TS_VARIABLE '.'
24
+ #define TS_FUNCPTR 'F'
25
+
26
+ static const unsigned short insn_name_info_offset[] = {
27
+ 0,
28
+ 4,
29
+ 13,
30
+ 22,
31
+ 33,
32
+ 44,
33
+ 64,
34
+ 84,
35
+ 101,
36
+ 118,
37
+ 130,
38
+ 142,
39
+ 152,
40
+ 162,
41
+ 169,
42
+ 177,
43
+ 187,
44
+ 204,
45
+ 212,
46
+ 222,
47
+ 236,
48
+ 245,
49
+ 258,
50
+ 267,
51
+ 274,
52
+ 283,
53
+ 292,
54
+ 304,
55
+ 316,
56
+ 327,
57
+ 335,
58
+ 344,
59
+ 348,
60
+ 352,
61
+ 357,
62
+ 362,
63
+ 370,
64
+ 376,
65
+ 381,
66
+ 386,
67
+ 398,
68
+ 406,
69
+ 417,
70
+ 430,
71
+ 436,
72
+ 443,
73
+ 455,
74
+ 460,
75
+ 475,
76
+ 490,
77
+ 507,
78
+ 524,
79
+ 547,
80
+ 559,
81
+ 571,
82
+ 577,
83
+ 583,
84
+ 588,
85
+ 597,
86
+ 610,
87
+ 620,
88
+ 633,
89
+ 648,
90
+ 663,
91
+ 668,
92
+ 686,
93
+ 695,
94
+ 705,
95
+ 714,
96
+ 722,
97
+ 730,
98
+ 737,
99
+ 745,
100
+ 752,
101
+ 759,
102
+ 766,
103
+ 773,
104
+ 782,
105
+ 791,
106
+ 800,
107
+ 814,
108
+ 828,
109
+ 839,
110
+ 848,
111
+ 860,
112
+ 869,
113
+ 877,
114
+ 894,
115
+ 911,
116
+ 931,
117
+ 938,
118
+ 945,
119
+ 964,
120
+ 983,
121
+ 1002,
122
+ 1021,
123
+ 1049,
124
+ };
125
+
126
+ ASSERT_VM_INSTRUCTION_SIZE(insn_name_info_offset);
127
+
128
+ static const char insn_name_info_base[1077] = ""
129
+ "nop\0"
130
+ "getlocal\0"
131
+ "setlocal\0"
132
+ "getspecial\0"
133
+ "setspecial\0"
134
+ "getinstancevariable\0"
135
+ "setinstancevariable\0"
136
+ "getclassvariable\0"
137
+ "setclassvariable\0"
138
+ "getconstant\0"
139
+ "setconstant\0"
140
+ "getglobal\0"
141
+ "setglobal\0"
142
+ "putnil\0"
143
+ "putself\0"
144
+ "putobject\0"
145
+ "putspecialobject\0"
146
+ "putiseq\0"
147
+ "putstring\0"
148
+ "concatstrings\0"
149
+ "tostring\0"
150
+ "freezestring\0"
151
+ "toregexp\0"
152
+ "intern\0"
153
+ "newarray\0"
154
+ "duparray\0"
155
+ "expandarray\0"
156
+ "concatarray\0"
157
+ "splatarray\0"
158
+ "newhash\0"
159
+ "newrange\0"
160
+ "pop\0"
161
+ "dup\0"
162
+ "dupn\0"
163
+ "swap\0"
164
+ "reverse\0"
165
+ "reput\0"
166
+ "topn\0"
167
+ "setn\0"
168
+ "adjuststack\0"
169
+ "defined\0"
170
+ "checkmatch\0"
171
+ "checkkeyword\0"
172
+ "trace\0"
173
+ "trace2\0"
174
+ "defineclass\0"
175
+ "send\0"
176
+ "opt_str_freeze\0"
177
+ "opt_str_uminus\0"
178
+ "opt_newarray_max\0"
179
+ "opt_newarray_min\0"
180
+ "opt_send_without_block\0"
181
+ "invokesuper\0"
182
+ "invokeblock\0"
183
+ "leave\0"
184
+ "throw\0"
185
+ "jump\0"
186
+ "branchif\0"
187
+ "branchunless\0"
188
+ "branchnil\0"
189
+ "branchiftype\0"
190
+ "getinlinecache\0"
191
+ "setinlinecache\0"
192
+ "once\0"
193
+ "opt_case_dispatch\0"
194
+ "opt_plus\0"
195
+ "opt_minus\0"
196
+ "opt_mult\0"
197
+ "opt_div\0"
198
+ "opt_mod\0"
199
+ "opt_eq\0"
200
+ "opt_neq\0"
201
+ "opt_lt\0"
202
+ "opt_le\0"
203
+ "opt_gt\0"
204
+ "opt_ge\0"
205
+ "opt_ltlt\0"
206
+ "opt_aref\0"
207
+ "opt_aset\0"
208
+ "opt_aset_with\0"
209
+ "opt_aref_with\0"
210
+ "opt_length\0"
211
+ "opt_size\0"
212
+ "opt_empty_p\0"
213
+ "opt_succ\0"
214
+ "opt_not\0"
215
+ "opt_regexpmatch1\0"
216
+ "opt_regexpmatch2\0"
217
+ "opt_call_c_function\0"
218
+ "bitblt\0"
219
+ "answer\0"
220
+ "getlocal_OP__WC__0\0"
221
+ "getlocal_OP__WC__1\0"
222
+ "setlocal_OP__WC__0\0"
223
+ "setlocal_OP__WC__1\0"
224
+ "putobject_OP_INT2FIX_O_0_C_\0"
225
+ "putobject_OP_INT2FIX_O_1_C_\0"
226
+ ;
227
+
228
+ #define insn_name_info insn_name_info_base+insn_name_info_offset
229
+
230
+ static const char insn_operand_info[][8] = {
231
+ "\1""",
232
+ "\3""LN",
233
+ "\3""LN",
234
+ "\3""NN",
235
+ "\2""N",
236
+ "\3""IK",
237
+ "\3""IK",
238
+ "\2""I",
239
+ "\2""I",
240
+ "\2""I",
241
+ "\2""I",
242
+ "\2""G",
243
+ "\2""G",
244
+ "\1""",
245
+ "\1""",
246
+ "\2""V",
247
+ "\2""N",
248
+ "\2""S",
249
+ "\2""V",
250
+ "\2""N",
251
+ "\1""",
252
+ "\2""V",
253
+ "\3""NN",
254
+ "\1""",
255
+ "\2""N",
256
+ "\2""V",
257
+ "\3""NN",
258
+ "\1""",
259
+ "\2""V",
260
+ "\2""N",
261
+ "\2""N",
262
+ "\1""",
263
+ "\1""",
264
+ "\2""N",
265
+ "\1""",
266
+ "\2""N",
267
+ "\1""",
268
+ "\2""N",
269
+ "\2""N",
270
+ "\2""N",
271
+ "\4""NVV",
272
+ "\2""N",
273
+ "\3""LN",
274
+ "\2""N",
275
+ "\3""NV",
276
+ "\4""ISN",
277
+ "\4""CES",
278
+ "\2""V",
279
+ "\2""V",
280
+ "\2""N",
281
+ "\2""N",
282
+ "\3""CE",
283
+ "\4""CES",
284
+ "\2""C",
285
+ "\1""",
286
+ "\2""N",
287
+ "\2""O",
288
+ "\2""O",
289
+ "\2""O",
290
+ "\2""O",
291
+ "\3""NO",
292
+ "\3""OK",
293
+ "\2""K",
294
+ "\3""SK",
295
+ "\3""HO",
296
+ "\3""CE",
297
+ "\3""CE",
298
+ "\3""CE",
299
+ "\3""CE",
300
+ "\3""CE",
301
+ "\3""CE",
302
+ "\5""CECE",
303
+ "\3""CE",
304
+ "\3""CE",
305
+ "\3""CE",
306
+ "\3""CE",
307
+ "\3""CE",
308
+ "\3""CE",
309
+ "\3""CE",
310
+ "\4""CEV",
311
+ "\4""CEV",
312
+ "\3""CE",
313
+ "\3""CE",
314
+ "\3""CE",
315
+ "\3""CE",
316
+ "\3""CE",
317
+ "\2""V",
318
+ "\3""CE",
319
+ "\2""F",
320
+ "\1""",
321
+ "\1""",
322
+ "\2""L",
323
+ "\2""L",
324
+ "\2""L",
325
+ "\2""L",
326
+ "\1""",
327
+ "\1""",
328
+ };
329
+
330
+ ASSERT_VM_INSTRUCTION_SIZE(insn_operand_info);
331
+
332
+ #ifdef USE_INSN_RET_NUM
333
+ static const unsigned short insn_stack_push_num_info[] = {
334
+ 0,
335
+ 1,
336
+ 0,
337
+ 1,
338
+ 0,
339
+ 1,
340
+ 0,
341
+ 1,
342
+ 0,
343
+ 1,
344
+ 0,
345
+ 1,
346
+ 0,
347
+ 1,
348
+ 1,
349
+ 1,
350
+ 1,
351
+ 1,
352
+ 1,
353
+ 1,
354
+ 1,
355
+ 1,
356
+ 1,
357
+ 1,
358
+ 1,
359
+ 1,
360
+ 1,
361
+ 1,
362
+ 1,
363
+ 1,
364
+ 1,
365
+ 0,
366
+ 2,
367
+ 1,
368
+ 2,
369
+ 1,
370
+ 1,
371
+ 1,
372
+ 1,
373
+ 1,
374
+ 1,
375
+ 1,
376
+ 1,
377
+ 0,
378
+ 0,
379
+ 1,
380
+ 1,
381
+ 1,
382
+ 1,
383
+ 1,
384
+ 1,
385
+ 1,
386
+ 1,
387
+ 1,
388
+ 1,
389
+ 1,
390
+ 0,
391
+ 0,
392
+ 0,
393
+ 0,
394
+ 0,
395
+ 1,
396
+ 1,
397
+ 1,
398
+ 0,
399
+ 1,
400
+ 1,
401
+ 1,
402
+ 1,
403
+ 1,
404
+ 1,
405
+ 1,
406
+ 1,
407
+ 1,
408
+ 1,
409
+ 1,
410
+ 1,
411
+ 1,
412
+ 1,
413
+ 1,
414
+ 1,
415
+ 1,
416
+ 1,
417
+ 1,
418
+ 1,
419
+ 1,
420
+ 1,
421
+ 1,
422
+ 0,
423
+ 1,
424
+ 1,
425
+ 1,
426
+ 1,
427
+ 0,
428
+ 0,
429
+ 1,
430
+ 1,
431
+ };
432
+
433
+ ASSERT_VM_INSTRUCTION_SIZE(insn_stack_push_num_info);
434
+ #endif
435
+
436
+ #ifdef USE_INSN_STACK_INCREASE
437
+ static int
438
+ insn_stack_increase(int depth, int insn, VALUE *opes)
439
+ {
440
+ switch (insn) {
441
+ case BIN(nop): {
442
+ return depth + 0;
443
+ }
444
+ case BIN(getlocal): {
445
+ return depth + 1;
446
+ }
447
+ case BIN(setlocal): {
448
+ return depth + -1;
449
+ }
450
+ case BIN(getspecial): {
451
+ return depth + 1;
452
+ }
453
+ case BIN(setspecial): {
454
+ return depth + -1;
455
+ }
456
+ case BIN(getinstancevariable): {
457
+ return depth + 1;
458
+ }
459
+ case BIN(setinstancevariable): {
460
+ return depth + -1;
461
+ }
462
+ case BIN(getclassvariable): {
463
+ return depth + 1;
464
+ }
465
+ case BIN(setclassvariable): {
466
+ return depth + -1;
467
+ }
468
+ case BIN(getconstant): {
469
+ return depth + 0;
470
+ }
471
+ case BIN(setconstant): {
472
+ return depth + -2;
473
+ }
474
+ case BIN(getglobal): {
475
+ return depth + 1;
476
+ }
477
+ case BIN(setglobal): {
478
+ return depth + -1;
479
+ }
480
+ case BIN(putnil): {
481
+ return depth + 1;
482
+ }
483
+ case BIN(putself): {
484
+ return depth + 1;
485
+ }
486
+ case BIN(putobject): {
487
+ return depth + 1;
488
+ }
489
+ case BIN(putspecialobject): {
490
+ return depth + 1;
491
+ }
492
+ case BIN(putiseq): {
493
+ return depth + 1;
494
+ }
495
+ case BIN(putstring): {
496
+ return depth + 1;
497
+ }
498
+ case BIN(concatstrings): {
499
+ int inc = 0;
500
+ int num = FIX2INT(opes[0]);
501
+ inc += 1 - num;;
502
+ return depth + inc;
503
+ }
504
+ case BIN(tostring): {
505
+ return depth + -1;
506
+ }
507
+ case BIN(freezestring): {
508
+ return depth + 0;
509
+ }
510
+ case BIN(toregexp): {
511
+ int inc = 0;
512
+ int cnt = FIX2INT(opes[1]);
513
+ inc += 1 - cnt;;
514
+ return depth + inc;
515
+ }
516
+ case BIN(intern): {
517
+ return depth + 0;
518
+ }
519
+ case BIN(newarray): {
520
+ int inc = 0;
521
+ int num = FIX2INT(opes[0]);
522
+ inc += 1 - num;;
523
+ return depth + inc;
524
+ }
525
+ case BIN(duparray): {
526
+ return depth + 1;
527
+ }
528
+ case BIN(expandarray): {
529
+ int inc = 0;
530
+ int num = FIX2INT(opes[0]);
531
+ int flag = FIX2INT(opes[1]);
532
+ inc += num - 1 + (flag & 1 ? 1 : 0);;
533
+ return depth + inc;
534
+ }
535
+ case BIN(concatarray): {
536
+ return depth + -1;
537
+ }
538
+ case BIN(splatarray): {
539
+ return depth + 0;
540
+ }
541
+ case BIN(newhash): {
542
+ int inc = 0;
543
+ int num = FIX2INT(opes[0]);
544
+ inc += 1 - num;;
545
+ return depth + inc;
546
+ }
547
+ case BIN(newrange): {
548
+ return depth + -1;
549
+ }
550
+ case BIN(pop): {
551
+ return depth + -1;
552
+ }
553
+ case BIN(dup): {
554
+ return depth + 1;
555
+ }
556
+ case BIN(dupn): {
557
+ int inc = 0;
558
+ int n = FIX2INT(opes[0]);
559
+ inc += n;;
560
+ return depth + inc;
561
+ }
562
+ case BIN(swap): {
563
+ return depth + 0;
564
+ }
565
+ case BIN(reverse): {
566
+ int inc = 0;
567
+ inc += 0;;
568
+ return depth + inc;
569
+ }
570
+ case BIN(reput): {
571
+ int inc = 0;
572
+ inc += 0;;
573
+ return depth + inc;
574
+ }
575
+ case BIN(topn): {
576
+ int inc = 0;
577
+ inc += 1;;
578
+ return depth + inc;
579
+ }
580
+ case BIN(setn): {
581
+ int inc = 0;
582
+ inc += 0;
583
+ return depth + inc;
584
+ }
585
+ case BIN(adjuststack): {
586
+ int inc = 0;
587
+ int n = FIX2INT(opes[0]);
588
+ inc -= n;
589
+ return depth + inc;
590
+ }
591
+ case BIN(defined): {
592
+ return depth + 0;
593
+ }
594
+ case BIN(checkmatch): {
595
+ return depth + -1;
596
+ }
597
+ case BIN(checkkeyword): {
598
+ return depth + 1;
599
+ }
600
+ case BIN(trace): {
601
+ return depth + 0;
602
+ }
603
+ case BIN(trace2): {
604
+ return depth + 0;
605
+ }
606
+ case BIN(defineclass): {
607
+ return depth + -1;
608
+ }
609
+ case BIN(send): {
610
+ int inc = 0;
611
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
612
+ inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));;
613
+ return depth + inc;
614
+ }
615
+ case BIN(opt_str_freeze): {
616
+ return depth + 1;
617
+ }
618
+ case BIN(opt_str_uminus): {
619
+ return depth + 1;
620
+ }
621
+ case BIN(opt_newarray_max): {
622
+ int inc = 0;
623
+ int num = FIX2INT(opes[0]);
624
+ inc += 1 - num;;
625
+ return depth + inc;
626
+ }
627
+ case BIN(opt_newarray_min): {
628
+ int inc = 0;
629
+ int num = FIX2INT(opes[0]);
630
+ inc += 1 - num;;
631
+ return depth + inc;
632
+ }
633
+ case BIN(opt_send_without_block): {
634
+ int inc = 0;
635
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
636
+ inc += -ci->orig_argc;;
637
+ return depth + inc;
638
+ }
639
+ case BIN(invokesuper): {
640
+ int inc = 0;
641
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
642
+ inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));;
643
+ return depth + inc;
644
+ }
645
+ case BIN(invokeblock): {
646
+ int inc = 0;
647
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
648
+ inc += 1 - ci->orig_argc;;
649
+ return depth + inc;
650
+ }
651
+ case BIN(leave): {
652
+ return depth + 0;
653
+ }
654
+ case BIN(throw): {
655
+ return depth + 0;
656
+ }
657
+ case BIN(jump): {
658
+ return depth + 0;
659
+ }
660
+ case BIN(branchif): {
661
+ return depth + -1;
662
+ }
663
+ case BIN(branchunless): {
664
+ return depth + -1;
665
+ }
666
+ case BIN(branchnil): {
667
+ return depth + -1;
668
+ }
669
+ case BIN(branchiftype): {
670
+ return depth + -1;
671
+ }
672
+ case BIN(getinlinecache): {
673
+ return depth + 1;
674
+ }
675
+ case BIN(setinlinecache): {
676
+ return depth + 0;
677
+ }
678
+ case BIN(once): {
679
+ return depth + 1;
680
+ }
681
+ case BIN(opt_case_dispatch): {
682
+ int inc = 0;
683
+ inc += -1;;
684
+ return depth + inc;
685
+ }
686
+ case BIN(opt_plus): {
687
+ return depth + -1;
688
+ }
689
+ case BIN(opt_minus): {
690
+ return depth + -1;
691
+ }
692
+ case BIN(opt_mult): {
693
+ return depth + -1;
694
+ }
695
+ case BIN(opt_div): {
696
+ return depth + -1;
697
+ }
698
+ case BIN(opt_mod): {
699
+ return depth + -1;
700
+ }
701
+ case BIN(opt_eq): {
702
+ return depth + -1;
703
+ }
704
+ case BIN(opt_neq): {
705
+ return depth + -1;
706
+ }
707
+ case BIN(opt_lt): {
708
+ return depth + -1;
709
+ }
710
+ case BIN(opt_le): {
711
+ return depth + -1;
712
+ }
713
+ case BIN(opt_gt): {
714
+ return depth + -1;
715
+ }
716
+ case BIN(opt_ge): {
717
+ return depth + -1;
718
+ }
719
+ case BIN(opt_ltlt): {
720
+ return depth + -1;
721
+ }
722
+ case BIN(opt_aref): {
723
+ return depth + -1;
724
+ }
725
+ case BIN(opt_aset): {
726
+ return depth + -2;
727
+ }
728
+ case BIN(opt_aset_with): {
729
+ return depth + -1;
730
+ }
731
+ case BIN(opt_aref_with): {
732
+ return depth + 0;
733
+ }
734
+ case BIN(opt_length): {
735
+ return depth + 0;
736
+ }
737
+ case BIN(opt_size): {
738
+ return depth + 0;
739
+ }
740
+ case BIN(opt_empty_p): {
741
+ return depth + 0;
742
+ }
743
+ case BIN(opt_succ): {
744
+ return depth + 0;
745
+ }
746
+ case BIN(opt_not): {
747
+ return depth + 0;
748
+ }
749
+ case BIN(opt_regexpmatch1): {
750
+ return depth + 0;
751
+ }
752
+ case BIN(opt_regexpmatch2): {
753
+ return depth + -1;
754
+ }
755
+ case BIN(opt_call_c_function): {
756
+ return depth + 0;
757
+ }
758
+ case BIN(bitblt): {
759
+ return depth + 1;
760
+ }
761
+ case BIN(answer): {
762
+ return depth + 1;
763
+ }
764
+ case BIN(getlocal_OP__WC__0): {
765
+ return depth + 1;
766
+ }
767
+ case BIN(getlocal_OP__WC__1): {
768
+ return depth + 1;
769
+ }
770
+ case BIN(setlocal_OP__WC__0): {
771
+ return depth + -1;
772
+ }
773
+ case BIN(setlocal_OP__WC__1): {
774
+ return depth + -1;
775
+ }
776
+ case BIN(putobject_OP_INT2FIX_O_0_C_): {
777
+ return depth + 1;
778
+ }
779
+ case BIN(putobject_OP_INT2FIX_O_1_C_): {
780
+ return depth + 1;
781
+ }
782
+ default:
783
+ rb_bug("insn_sp_increase: unreachable");
784
+ }
785
+ return 0;
786
+ }
787
+ #endif
788
+
789
+ /* some utilities */
790
+
791
+ static int
792
+ insn_len(VALUE insn)
793
+ {
794
+ return (unsigned char)insn_operand_info[(int)insn][0];
795
+ }
796
+
797
+ static const char *
798
+ insn_name(VALUE insn)
799
+ {
800
+ return insn_name_info[(int)insn];
801
+ }
802
+
803
+ static const char *
804
+ insn_op_types(VALUE insn)
805
+ {
806
+ return insn_operand_info[(int)insn]+1;
807
+ }
808
+
809
+ static int
810
+ insn_op_type(VALUE insn, long pos)
811
+ {
812
+ int len = insn_len(insn) - 1;
813
+ if (pos < len) {
814
+ return insn_operand_info[(int)insn][pos+1];
815
+ }
816
+ else{
817
+ return 0;
818
+ }
819
+ }
820
+
821
+ #ifdef USE_INSN_RET_NUM
822
+ static int
823
+ insn_ret_num(VALUE insn)
824
+ {
825
+ return insn_stack_push_num_info[(int)insn];
826
+ }
827
+ #endif