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" 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";
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
double ruby_float_mod(double x, double y)
VALUE rb_cvar_get(VALUE, ID)
void rb_thread_schedule(void)
#define VM_CALL_ARGS_BLOCKARG_BIT
struct rb_global_entry * rb_global_entry(ID)
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)
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)
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)
VALUE rb_gvar_defined(struct rb_global_entry *)
#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)
union iseq_inline_cache_entry::@71 ic_value
#define USAGE_ANALYSIS_OPERAND(insn, n, op)
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)
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)