22 #define CURRENT_INSN_nop 1
23 #define INSN_IS_SC() 0
24 #define INSN_LABEL(lab) LABEL_nop_##lab
25 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
32 #undef CURRENT_INSN_nop
45 #define CURRENT_INSN_getlocal 1
46 #define INSN_IS_SC() 0
47 #define INSN_LABEL(lab) LABEL_getlocal_##lab
48 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
58 #undef CURRENT_INSN_getlocal
71 #define CURRENT_INSN_setlocal 1
72 #define INSN_IS_SC() 0
73 #define INSN_LABEL(lab) LABEL_setlocal_##lab
74 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
82 #undef CURRENT_INSN_setlocal
96 #define CURRENT_INSN_getspecial 1
97 #define INSN_IS_SC() 0
98 #define INSN_LABEL(lab) LABEL_getspecial_##lab
99 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
110 #undef CURRENT_INSN_getspecial
123 #define CURRENT_INSN_setspecial 1
124 #define INSN_IS_SC() 0
125 #define INSN_LABEL(lab) LABEL_setspecial_##lab
126 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
130 #line 100 "insns.def"
134 #undef CURRENT_INSN_setspecial
148 #define CURRENT_INSN_getdynamic 1
149 #define INSN_IS_SC() 0
150 #define INSN_LABEL(lab) LABEL_getdynamic_##lab
151 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
156 #line 116 "insns.def"
159 for (i = 0; i < level; i++) {
167 #undef CURRENT_INSN_getdynamic
181 #define CURRENT_INSN_setdynamic 1
182 #define INSN_IS_SC() 0
183 #define INSN_LABEL(lab) LABEL_setdynamic_##lab
184 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
189 #line 137 "insns.def"
192 for (i = 0; i < level; i++) {
198 #undef CURRENT_INSN_setdynamic
212 #define CURRENT_INSN_getinstancevariable 1
213 #define INSN_IS_SC() 0
214 #define INSN_LABEL(lab) LABEL_getinstancevariable_##lab
215 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
220 #line 157 "insns.def"
226 #undef CURRENT_INSN_getinstancevariable
240 #define CURRENT_INSN_setinstancevariable 1
241 #define INSN_IS_SC() 0
242 #define INSN_LABEL(lab) LABEL_setinstancevariable_##lab
243 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
248 #line 172 "insns.def"
252 #undef CURRENT_INSN_setinstancevariable
265 #define CURRENT_INSN_getclassvariable 1
266 #define INSN_IS_SC() 0
267 #define INSN_LABEL(lab) LABEL_getclassvariable_##lab
268 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
272 #line 186 "insns.def"
279 #undef CURRENT_INSN_getclassvariable
292 #define CURRENT_INSN_setclassvariable 1
293 #define INSN_IS_SC() 0
294 #define INSN_LABEL(lab) LABEL_setclassvariable_##lab
295 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
299 #line 201 "insns.def"
304 #undef CURRENT_INSN_setclassvariable
318 #define CURRENT_INSN_getconstant 1
319 #define INSN_IS_SC() 0
320 #define INSN_LABEL(lab) LABEL_getconstant_##lab
321 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
325 #line 223 "insns.def"
331 #undef CURRENT_INSN_getconstant
345 #define CURRENT_INSN_setconstant 1
346 #define INSN_IS_SC() 0
347 #define INSN_LABEL(lab) LABEL_setconstant_##lab
348 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
352 #line 245 "insns.def"
358 #undef CURRENT_INSN_setconstant
371 #define CURRENT_INSN_getglobal 1
372 #define INSN_IS_SC() 0
373 #define INSN_LABEL(lab) LABEL_getglobal_##lab
374 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
378 #line 261 "insns.def"
384 #undef CURRENT_INSN_getglobal
397 #define CURRENT_INSN_setglobal 1
398 #define INSN_IS_SC() 0
399 #define INSN_LABEL(lab) LABEL_setglobal_##lab
400 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
404 #line 275 "insns.def"
408 #undef CURRENT_INSN_setglobal
421 #define CURRENT_INSN_putnil 1
422 #define INSN_IS_SC() 0
423 #define INSN_LABEL(lab) LABEL_putnil_##lab
424 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
427 #line 294 "insns.def"
433 #undef CURRENT_INSN_putnil
446 #define CURRENT_INSN_putself 1
447 #define INSN_IS_SC() 0
448 #define INSN_LABEL(lab) LABEL_putself_##lab
449 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
452 #line 308 "insns.def"
458 #undef CURRENT_INSN_putself
470 #define CURRENT_INSN_putobject 1
471 #define INSN_IS_SC() 0
472 #define INSN_LABEL(lab) LABEL_putobject_##lab
473 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
477 #line 324 "insns.def"
483 #undef CURRENT_INSN_putobject
496 #define CURRENT_INSN_putspecialobject 1
497 #define INSN_IS_SC() 0
498 #define INSN_LABEL(lab) LABEL_putspecialobject_##lab
499 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
503 #line 339 "insns.def"
517 rb_bug(
"putspecialobject insn: unknown value_type");
523 #undef CURRENT_INSN_putspecialobject
536 #define CURRENT_INSN_putiseq 1
537 #define INSN_IS_SC() 0
538 #define INSN_LABEL(lab) LABEL_putiseq_##lab
539 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
543 #line 367 "insns.def"
549 #undef CURRENT_INSN_putiseq
562 #define CURRENT_INSN_putstring 1
563 #define INSN_IS_SC() 0
564 #define INSN_LABEL(lab) LABEL_putstring_##lab
565 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
569 #line 381 "insns.def"
575 #undef CURRENT_INSN_putstring
588 #define CURRENT_INSN_concatstrings 1
589 #define INSN_IS_SC() 0
590 #define INSN_LABEL(lab) LABEL_concatstrings_##lab
591 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
595 #line 395 "insns.def"
608 #undef CURRENT_INSN_concatstrings
621 #define CURRENT_INSN_tostring 1
622 #define INSN_IS_SC() 0
623 #define INSN_LABEL(lab) LABEL_tostring_##lab
624 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
627 #line 416 "insns.def"
633 #undef CURRENT_INSN_tostring
647 #define CURRENT_INSN_toregexp 1
648 #define INSN_IS_SC() 0
649 #define INSN_LABEL(lab) LABEL_toregexp_##lab
650 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
655 #line 431 "insns.def"
659 for (i = 0; i <
cnt; i++) {
669 #undef CURRENT_INSN_toregexp
682 #define CURRENT_INSN_newarray 1
683 #define INSN_IS_SC() 0
684 #define INSN_LABEL(lab) LABEL_newarray_##lab
685 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
689 #line 453 "insns.def"
696 #undef CURRENT_INSN_newarray
709 #define CURRENT_INSN_duparray 1
710 #define INSN_IS_SC() 0
711 #define INSN_LABEL(lab) LABEL_duparray_##lab
712 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
716 #line 468 "insns.def"
722 #undef CURRENT_INSN_duparray
736 #define CURRENT_INSN_expandarray 1
737 #define INSN_IS_SC() 0
738 #define INSN_LABEL(lab) LABEL_expandarray_##lab
739 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
744 #line 489 "insns.def"
748 #undef CURRENT_INSN_expandarray
763 #define CURRENT_INSN_concatarray 1
764 #define INSN_IS_SC() 0
765 #define INSN_LABEL(lab) LABEL_concatarray_##lab
766 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
769 #line 503 "insns.def"
770 const VALUE ary2 = ary2st;
790 #undef CURRENT_INSN_concatarray
804 #define CURRENT_INSN_splatarray 1
805 #define INSN_IS_SC() 0
806 #define INSN_LABEL(lab) LABEL_splatarray_##lab
807 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
811 #line 532 "insns.def"
816 else if (
RTEST(flag)) {
824 #undef CURRENT_INSN_splatarray
839 #define CURRENT_INSN_checkincludearray 1
840 #define INSN_IS_SC() 0
841 #define INSN_LABEL(lab) LABEL_checkincludearray_##lab
842 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
846 #line 553 "insns.def"
869 obj = result =
Qtrue;
879 #undef CURRENT_INSN_checkincludearray
892 #define CURRENT_INSN_newhash 1
893 #define INSN_IS_SC() 0
894 #define INSN_LABEL(lab) LABEL_newhash_##lab
895 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
899 #line 594 "insns.def"
903 for (i = num; i > 0; i -= 2) {
913 #undef CURRENT_INSN_newhash
928 #define CURRENT_INSN_newrange 1
929 #define INSN_IS_SC() 0
930 #define INSN_LABEL(lab) LABEL_newrange_##lab
931 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
935 #line 616 "insns.def"
941 #undef CURRENT_INSN_newrange
954 #define CURRENT_INSN_pop 1
955 #define INSN_IS_SC() 0
956 #define INSN_LABEL(lab) LABEL_pop_##lab
957 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
960 #line 634 "insns.def"
965 #undef CURRENT_INSN_pop
980 #define CURRENT_INSN_dup 1
981 #define INSN_IS_SC() 0
982 #define INSN_LABEL(lab) LABEL_dup_##lab
983 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
986 #line 649 "insns.def"
993 #undef CURRENT_INSN_dup
1005 #define CURRENT_INSN_dupn 1
1006 #define INSN_IS_SC() 0
1007 #define INSN_LABEL(lab) LABEL_dupn_##lab
1008 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1012 #line 663 "insns.def"
1015 for (i = 0; i < n; i++) {
1021 #undef CURRENT_INSN_dupn
1035 #define CURRENT_INSN_swap 1
1036 #define INSN_IS_SC() 0
1037 #define INSN_LABEL(lab) LABEL_swap_##lab
1038 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1041 #line 683 "insns.def"
1048 #undef CURRENT_INSN_swap
1061 #define CURRENT_INSN_reput 1
1062 #define INSN_IS_SC() 0
1063 #define INSN_LABEL(lab) LABEL_reput_##lab
1064 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1067 #line 697 "insns.def"
1073 #undef CURRENT_INSN_reput
1086 #define CURRENT_INSN_topn 1
1087 #define INSN_IS_SC() 0
1088 #define INSN_LABEL(lab) LABEL_topn_##lab
1089 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1093 #line 711 "insns.def"
1099 #undef CURRENT_INSN_topn
1112 #define CURRENT_INSN_setn 1
1113 #define INSN_IS_SC() 0
1114 #define INSN_LABEL(lab) LABEL_setn_##lab
1115 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1119 #line 725 "insns.def"
1125 #undef CURRENT_INSN_setn
1137 #define CURRENT_INSN_adjuststack 1
1138 #define INSN_IS_SC() 0
1139 #define INSN_LABEL(lab) LABEL_adjuststack_##lab
1140 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1144 #line 739 "insns.def"
1148 #undef CURRENT_INSN_adjuststack
1164 #define CURRENT_INSN_defined 1
1165 #define INSN_IS_SC() 0
1166 #define INSN_LABEL(lab) LABEL_defined_##lab
1167 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1173 #line 758 "insns.def"
1175 const char *expr_type = 0;
1183 expr_type =
"instance-variable";
1191 expr_type =
"global-variable";
1199 expr_type =
"class variable";
1206 expr_type =
"constant";
1212 expr_type =
"method";
1224 expr_type =
"method";
1232 args[0] = obj; args[1] =
Qfalse;
1235 expr_type =
"method";
1241 expr_type =
"yield";
1255 expr_type =
"super";
1263 expr_type =
"global-variable";
1268 rb_bug(
"unimplemented defined? type (VM)");
1271 if (expr_type != 0) {
1283 #undef CURRENT_INSN_defined
1295 #define CURRENT_INSN_trace 1
1296 #define INSN_IS_SC() 0
1297 #define INSN_LABEL(lab) LABEL_trace_##lab
1298 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1302 #line 876 "insns.def"
1308 #undef CURRENT_INSN_trace
1325 #define CURRENT_INSN_defineclass 1
1326 #define INSN_IS_SC() 0
1327 #define INSN_LABEL(lab) LABEL_defineclass_##lab
1328 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1334 #line 900 "insns.def"
1337 switch ((
int)define_type) {
1342 if (super ==
Qnil) {
1403 rb_bug(
"unknown defineclass type: %d", (
int)define_type);
1421 #undef CURRENT_INSN_defineclass
1438 #define CURRENT_INSN_send 1
1439 #define INSN_IS_SC() 0
1440 #define INSN_LABEL(lab) LABEL_send_##lab
1441 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1449 #line 1006 "insns.def"
1453 VALUE flag = op_flag;
1467 #undef CURRENT_INSN_send
1482 #define CURRENT_INSN_invokesuper 1
1483 #define INSN_IS_SC() 0
1484 #define INSN_LABEL(lab) LABEL_invokesuper_##lab
1485 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1491 #line 1034 "insns.def"
1493 VALUE flag = op_flag;
1495 (
int)op_argc, blockiseq, &blockptr);
1507 rb_raise(
rb_eNotImpError,
"super from singleton method that is defined to multiple classes is not supported; this will be fixed in 1.9.3 or later");
1517 #undef CURRENT_INSN_invokesuper
1531 #define CURRENT_INSN_invokeblock 1
1532 #define INSN_IS_SC() 0
1533 #define INSN_LABEL(lab) LABEL_invokeblock_##lab
1534 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1539 #line 1069 "insns.def"
1549 #undef CURRENT_INSN_invokeblock
1562 #define CURRENT_INSN_leave 1
1563 #define INSN_IS_SC() 0
1564 #define INSN_LABEL(lab) LABEL_leave_##lab
1565 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1568 #line 1087 "insns.def"
1570 if (reg_cfp->sp != reg_cfp->bp) {
1583 #undef CURRENT_INSN_leave
1596 #define CURRENT_INSN_finish 1
1597 #define INSN_IS_SC() 0
1598 #define INSN_LABEL(lab) LABEL_finish_##lab
1599 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1602 #line 1110 "insns.def"
1603 #if OPT_CALL_THREADED_CODE
1604 rb_bug(
"unused instruction on OPT_CALL_THREADED_CODE");
1613 #undef CURRENT_INSN_finish
1627 #define CURRENT_INSN_throw 1
1628 #define INSN_IS_SC() 0
1629 #define INSN_LABEL(lab) LABEL_throw_##lab
1630 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1634 #line 1133 "insns.def"
1643 #undef CURRENT_INSN_throw
1655 #define CURRENT_INSN_jump 1
1656 #define INSN_IS_SC() 0
1657 #define INSN_LABEL(lab) LABEL_jump_##lab
1658 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1662 #line 1154 "insns.def"
1667 #undef CURRENT_INSN_jump
1680 #define CURRENT_INSN_branchif 1
1681 #define INSN_IS_SC() 0
1682 #define INSN_LABEL(lab) LABEL_branchif_##lab
1683 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1687 #line 1169 "insns.def"
1694 #undef CURRENT_INSN_branchif
1707 #define CURRENT_INSN_branchunless 1
1708 #define INSN_IS_SC() 0
1709 #define INSN_LABEL(lab) LABEL_branchunless_##lab
1710 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1714 #line 1186 "insns.def"
1721 #undef CURRENT_INSN_branchunless
1735 #define CURRENT_INSN_getinlinecache 1
1736 #define INSN_IS_SC() 0
1737 #define INSN_LABEL(lab) LABEL_getinlinecache_##lab
1738 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1743 #line 1208 "insns.def"
1756 #undef CURRENT_INSN_getinlinecache
1770 #define CURRENT_INSN_onceinlinecache 1
1771 #define INSN_IS_SC() 0
1772 #define INSN_LABEL(lab) LABEL_onceinlinecache_##lab
1773 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1778 #line 1229 "insns.def"
1799 #undef CURRENT_INSN_onceinlinecache
1812 #define CURRENT_INSN_setinlinecache 1
1813 #define INSN_IS_SC() 0
1814 #define INSN_LABEL(lab) LABEL_setinlinecache_##lab
1815 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1819 #line 1258 "insns.def"
1830 #undef CURRENT_INSN_setinlinecache
1844 #define CURRENT_INSN_opt_case_dispatch 1
1845 #define INSN_IS_SC() 0
1846 #define INSN_LABEL(lab) LABEL_opt_case_dispatch_##lab
1847 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1852 #line 1277 "insns.def"
1879 #undef CURRENT_INSN_opt_case_dispatch
1891 #define CURRENT_INSN_opt_checkenv 1
1892 #define INSN_IS_SC() 0
1893 #define INSN_LABEL(lab) LABEL_opt_checkenv_##lab
1894 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1897 #line 1314 "insns.def"
1906 #undef CURRENT_INSN_opt_checkenv
1921 #define CURRENT_INSN_opt_plus 1
1922 #define INSN_IS_SC() 0
1923 #define INSN_LABEL(lab) LABEL_opt_plus_##lab
1924 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1928 #line 1336 "insns.def"
1936 #ifndef LONG_LONG_VALUE
1937 val = (recv + (obj & (~1)));
1938 if ((~(recv ^ obj) & (recv ^ val)) &
1996 #undef CURRENT_INSN_opt_plus
2011 #define CURRENT_INSN_opt_minus 1
2012 #define INSN_IS_SC() 0
2013 #define INSN_LABEL(lab) LABEL_opt_minus_##lab
2014 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2018 #line 1412 "insns.def"
2059 #undef CURRENT_INSN_opt_minus
2074 #define CURRENT_INSN_opt_mult 1
2075 #define INSN_IS_SC() 0
2076 #define INSN_LABEL(lab) LABEL_opt_mult_##lab
2077 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2081 #line 1461 "insns.def"
2095 if (
FIXABLE(c) && c / a == b) {
2127 #undef CURRENT_INSN_opt_mult
2142 #define CURRENT_INSN_opt_div 1
2143 #define INSN_IS_SC() 0
2144 #define INSN_LABEL(lab) LABEL_opt_div_##lab
2145 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2149 #line 1515 "insns.def"
2174 if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) {
2205 #undef CURRENT_INSN_opt_div
2220 #define CURRENT_INSN_opt_mod 1
2221 #define INSN_IS_SC() 0
2222 #define INSN_LABEL(lab) LABEL_opt_mod_##lab
2223 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2227 #line 1579 "insns.def"
2253 if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) {
2282 #undef CURRENT_INSN_opt_mod
2297 #define CURRENT_INSN_opt_eq 1
2298 #define INSN_IS_SC() 0
2299 #define INSN_LABEL(lab) LABEL_opt_eq_##lab
2300 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2304 #line 1642 "insns.def"
2317 #undef CURRENT_INSN_opt_eq
2333 #define CURRENT_INSN_opt_neq 1
2334 #define INSN_IS_SC() 0
2335 #define INSN_LABEL(lab) LABEL_opt_neq_##lab
2336 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2341 #line 1663 "insns.def"
2364 #undef CURRENT_INSN_opt_neq
2379 #define CURRENT_INSN_opt_lt 1
2380 #define INSN_IS_SC() 0
2381 #define INSN_LABEL(lab) LABEL_opt_lt_##lab
2382 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2386 #line 1694 "insns.def"
2407 #if defined(_MSC_VER) && _MSC_VER < 1300
2428 #undef CURRENT_INSN_opt_lt
2443 #define CURRENT_INSN_opt_le 1
2444 #define INSN_IS_SC() 0
2445 #define INSN_LABEL(lab) LABEL_opt_le_##lab
2446 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2450 #line 1744 "insns.def"
2472 #undef CURRENT_INSN_opt_le
2487 #define CURRENT_INSN_opt_gt 1
2488 #define INSN_IS_SC() 0
2489 #define INSN_LABEL(lab) LABEL_opt_gt_##lab
2490 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2494 #line 1774 "insns.def"
2515 #if defined(_MSC_VER) && _MSC_VER < 1300
2536 #undef CURRENT_INSN_opt_gt
2551 #define CURRENT_INSN_opt_ge 1
2552 #define INSN_IS_SC() 0
2553 #define INSN_LABEL(lab) LABEL_opt_ge_##lab
2554 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2558 #line 1824 "insns.def"
2579 #undef CURRENT_INSN_opt_ge
2594 #define CURRENT_INSN_opt_ltlt 1
2595 #define INSN_IS_SC() 0
2596 #define INSN_LABEL(lab) LABEL_opt_ltlt_##lab
2597 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2601 #line 1853 "insns.def"
2627 #undef CURRENT_INSN_opt_ltlt
2642 #define CURRENT_INSN_opt_aref 1
2643 #define INSN_IS_SC() 0
2644 #define INSN_LABEL(lab) LABEL_opt_aref_##lab
2645 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2649 #line 1887 "insns.def"
2671 #undef CURRENT_INSN_opt_aref
2687 #define CURRENT_INSN_opt_aset 1
2688 #define INSN_IS_SC() 0
2689 #define INSN_LABEL(lab) LABEL_opt_aset_##lab
2690 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2694 #line 1917 "insns.def"
2720 #undef CURRENT_INSN_opt_aset
2734 #define CURRENT_INSN_opt_length 1
2735 #define INSN_IS_SC() 0
2736 #define INSN_LABEL(lab) LABEL_opt_length_##lab
2737 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2741 #line 1951 "insns.def"
2766 #undef CURRENT_INSN_opt_length
2780 #define CURRENT_INSN_opt_size 1
2781 #define INSN_IS_SC() 0
2782 #define INSN_LABEL(lab) LABEL_opt_size_##lab
2783 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2787 #line 1984 "insns.def"
2812 #undef CURRENT_INSN_opt_size
2826 #define CURRENT_INSN_opt_succ 1
2827 #define INSN_IS_SC() 0
2828 #define INSN_LABEL(lab) LABEL_opt_succ_##lab
2829 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2833 #line 2017 "insns.def"
2839 val = (recv + (obj & (~1)));
2840 if ((~(recv ^ obj) & (recv ^ val)) & ((
unsigned long)
LONG_MAX + 1)) {
2872 #undef CURRENT_INSN_opt_succ
2886 #define CURRENT_INSN_opt_not 1
2887 #define INSN_IS_SC() 0
2888 #define INSN_LABEL(lab) LABEL_opt_not_##lab
2889 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2893 #line 2064 "insns.def"
2908 #undef CURRENT_INSN_opt_not
2922 #define CURRENT_INSN_opt_regexpmatch1 1
2923 #define INSN_IS_SC() 0
2924 #define INSN_LABEL(lab) LABEL_opt_regexpmatch1_##lab
2925 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2929 #line 2088 "insns.def"
2935 #undef CURRENT_INSN_opt_regexpmatch1
2950 #define CURRENT_INSN_opt_regexpmatch2 1
2951 #define INSN_IS_SC() 0
2952 #define INSN_LABEL(lab) LABEL_opt_regexpmatch2_##lab
2953 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2956 #line 2102 "insns.def"
2967 #undef CURRENT_INSN_opt_regexpmatch2
2979 #define CURRENT_INSN_opt_call_c_function 1
2980 #define INSN_IS_SC() 0
2981 #define INSN_LABEL(lab) LABEL_opt_call_c_function_##lab
2982 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2986 #line 2121 "insns.def"
2987 reg_cfp = (funcptr)(th, reg_cfp);
2999 #undef CURRENT_INSN_opt_call_c_function
3012 #define CURRENT_INSN_bitblt 1
3013 #define INSN_IS_SC() 0
3014 #define INSN_LABEL(lab) LABEL_bitblt_##lab
3015 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
3018 #line 2144 "insns.def"
3019 ret =
rb_str_new2(
"a bit of bacon, lettuce and tomato");
3024 #undef CURRENT_INSN_bitblt
3037 #define CURRENT_INSN_answer 1
3038 #define INSN_IS_SC() 0
3039 #define INSN_LABEL(lab) LABEL_answer_##lab
3040 #define LABEL_IS_SC(lab) LABEL_##lab##_##t
3043 #line 2158 "insns.def"
3049 #undef CURRENT_INSN_answer
RUBY_EXTERN VALUE rb_cString
VALUE rb_cvar_get(VALUE, ID)
void rb_thread_schedule(void)
#define VM_CALL_ARGS_BLOCKARG_BIT
static VALUE vm_search_normal_superclass(VALUE klass, VALUE recv)
VALUE rb_ary_new4(long n, const VALUE *elts)
VALUE rb_str_length(VALUE)
VALUE rb_ary_entry(VALUE ary, long offset)
RUBY_EXTERN VALUE rb_cFloat
static void lfp_svar_set(rb_thread_t *th, VALUE *lfp, rb_num_t key, VALUE val)
void rb_bug(const char *fmt,...)
#define VM_CALL_SUPER_BIT
static NODE * vm_cref_push(rb_thread_t *th, VALUE klass, int noex, rb_block_t *blockptr)
VALUE ruby_vm_const_missing_count
static int caller_setup_args(const rb_thread_t *th, rb_control_frame_t *cfp, VALUE flag, int argc, rb_iseq_t *blockiseq, rb_block_t **block)
VALUE rb_range_new(VALUE, VALUE, int)
#define RFLOAT_VALUE(val)
VALUE rb_big_plus(VALUE x, VALUE y)
static void vm_expandarray(rb_control_frame_t *cfp, VALUE ary, rb_num_t num, int flag)
VALUE rb_reg_match(VALUE, VALUE)
VALUE rb_ary_push(VALUE ary, VALUE item)
void rb_cvar_set(VALUE, ID, VALUE)
VALUE rb_str_concat(VALUE, VALUE)
VALUE rb_str_plus(VALUE, VALUE)
VALUE rb_ary_tmp_new(long capa)
static const rb_method_entry_t * vm_method_search(VALUE id, VALUE klass, IC ic)
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_ary_clear(VALUE ary)
#define GET_PREV_DFP(dfp)
VALUE rb_obj_is_kind_of(VALUE, VALUE)
#define RARRAY_LEN(ARRAY)
#define GET_VM_STATE_VERSION()
VALUE rb_ary_new3(long n,...)
#define STACK_ADDR_FROM_TOP(n)
static void vm_search_superclass(rb_control_frame_t *reg_cfp, rb_iseq_t *iseq, VALUE recv, VALUE sigval, ID *idp, VALUE *klassp)
static VALUE vm_search_const_defined_class(const VALUE cbase, ID id)
#define CHECK_STACK_OVERFLOW(cfp, margin)
static VALUE vm_getspecial(rb_thread_t *th, VALUE *lfp, rb_num_t key, rb_num_t type)
VALUE rb_ivar_defined(VALUE, ID)
double ruby_float_mod(double x, double y)
static VALUE vm_get_cbase(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
static VALUE vm_getivar(VALUE obj, ID id, IC ic)
static void vm_check_if_namespace(VALUE klass)
static rb_control_frame_t * vm_push_frame(rb_thread_t *th, const rb_iseq_t *iseq, VALUE type, VALUE self, VALUE specval, const VALUE *pc, VALUE *sp, VALUE *lfp, int local_size)
VALUE rb_singleton_class(VALUE obj)
Returns the singleton class of obj.
VALUE rb_obj_not(VALUE obj)
#define RUBY_VM_CHECK_INTS()
VALUE rb_cvar_defined(VALUE, ID)
struct rb_global_entry * rb_global_entry(ID)
VALUE rb_class_inherited(VALUE super, VALUE klass)
Calls Class::inherited.
#define HEAP_CLASS_OF(obj)
#define VM_CALL_FCALL_BIT
VALUE rb_dbl2big(double d)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
RUBY_EXTERN VALUE rb_cObject
VALUE rb_reg_new_ary(VALUE ary, int opt)
VALUE rb_time_succ(VALUE)
VALUE rb_class_real(VALUE)
VALUE rb_obj_as_string(VALUE)
#define COPY_CREF(c1, c2)
static VALUE vm_throw(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_num_t throw_state, VALUE throwobj)
void rb_ary_store(VALUE ary, long idx, VALUE val)
VALUE rb_define_module_id(ID id)
rb_atomic_t cnt[RUBY_NSIG]
#define VM_FRAME_MAGIC_CLASS
static NODE * vm_get_cref(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
static VALUE vm_invoke_block(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_num_t num, rb_num_t flag)
unsigned int rb_event_flag_t
static int check_cfunc(const rb_method_entry_t *me, VALUE(*func)())
void rb_num_zerodiv(void)
#define USAGE_ANALYSIS_OPERAND(insn, n, op)
union iseq_inline_cache_entry::@74 ic_value
VALUE rb_str_resurrect(VALUE str)
#define VM_SP_CNT(th, sp)
VALUE rb_big_minus(VALUE x, VALUE y)
VALUE rb_check_funcall(VALUE, ID, int, VALUE *)
VALUE rb_funcall2(VALUE, ID, int, const VALUE *)
Calls a method.
#define THROW_EXCEPTION(exc)
#define GET_GLOBAL(entry)
static VALUE vm_get_const_base(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
#define DEBUG_ENTER_INSN(insn)
struct rb_iseq_struct * parent_iseq
static VALUE vm_get_cvar_base(NODE *cref)
void rb_const_set(VALUE, ID, VALUE)
static int options(unsigned char *cp)
VALUE rb_big_mul(VALUE x, VALUE y)
static void vm_pop_frame(rb_thread_t *th)
#define CALL_METHOD(num, blockptr, flag, id, me, recv)
#define RARRAY_PTR(ARRAY)
rb_method_entry_t * rb_method_entry(VALUE klass, ID id)
#define EXEC_EVENT_HOOK(th, flag, self, id, klass)
VALUE rb_mRubyVMFrozenCore
VALUE rb_check_convert_type(VALUE, int, const char *, const char *)
#define SET_GLOBAL(entry, val)
VALUE rb_ary_plus(VALUE x, VALUE y)
VALUE rb_hash_aref(VALUE hash, VALUE key)
rb_control_frame_t *FUNC_FASTCALL rb_insn_func_t(rb_thread_t *, rb_control_frame_t *)
enum ruby_value_type value_type
struct iseq_inline_cache_entry * IC
#define CALL_SIMPLE_METHOD(num, id, recv)
VALUE rb_ary_dup(VALUE ary)
VALUE rb_public_const_get_at(VALUE klass, ID id)
VALUE rb_ary_concat(VALUE x, VALUE y)
VALUE rb_int2big(SIGNED_VALUE n)
static unsigned int hash(const char *str, unsigned int len)
VALUE rb_const_get_at(VALUE, ID)
const char * rb_id2name(ID id)
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2)
VALUE rb_define_class_id(ID id, VALUE super)
Defines a new class.
static void vm_setivar(VALUE obj, ID id, VALUE val, IC ic)
#define USAGE_ANALYSIS_INSN(insn)
static VALUE vm_get_ev_const(rb_thread_t *th, const rb_iseq_t *iseq, VALUE orig_klass, ID id, int is_defined)
#define SPECIAL_CONST_P(x)
VALUE rb_ary_resurrect(VALUE ary)
VALUE rb_gvar_defined(struct rb_global_entry *)
int rb_method_boundp(VALUE, ID, int)
RUBY_EXTERN VALUE rb_cTime
#define INC_VM_STATE_VERSION()
VALUE rb_str_append(VALUE, VALUE)
VALUE rb_str_new2(const char *)
VALUE rb_autoload_load(VALUE, ID)
void rb_set_class_path_string(VALUE, VALUE, VALUE)
#define BASIC_OP_UNREDEFINED_P(op)
static VALUE opt_eq_func(VALUE recv, VALUE obj, IC ic)