diff options
author | Mike Pall <mike> | 2011-07-25 10:06:06 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-07-25 10:06:06 +0200 |
commit | 26106759d422438b1b3e974c43fd9f38ea055bdf (patch) | |
tree | 45bbc15d45908fc0c1658928b4eea69e6ecde300 /src | |
parent | 551f09cebd4c6e0e9722d52346ffd9b45d459d25 (diff) | |
download | luajit-26106759d422438b1b3e974c43fd9f38ea055bdf.tar.gz luajit-26106759d422438b1b3e974c43fd9f38ea055bdf.tar.bz2 luajit-26106759d422438b1b3e974c43fd9f38ea055bdf.zip |
PPC: Fix floor/ceil for dual-number mode.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_ppc.dasc | 1 | ||||
-rw-r--r-- | src/buildvm_ppc.h | 958 |
2 files changed, 481 insertions, 478 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 9130ee41..90163e9d 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -1608,6 +1608,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1608 | | lus CARG1, 0x8000 // -(2^31). | 1608 | | lus CARG1, 0x8000 // -(2^31). |
1609 | | beq ->fff_resi | 1609 | | beq ->fff_resi |
1610 | |5: | 1610 | |5: |
1611 | | lfd FARG1, 0(BASE) | ||
1611 | | bl extern func | 1612 | | bl extern func |
1612 | | b ->fff_resn | 1613 | | b ->fff_resn |
1613 | |.endmacro | 1614 | |.endmacro |
diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h index ba8d2862..fbe943ed 100644 --- a/src/buildvm_ppc.h +++ b/src/buildvm_ppc.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #define DASM_SECTION_CODE_OP 0 | 12 | #define DASM_SECTION_CODE_OP 0 |
13 | #define DASM_SECTION_CODE_SUB 1 | 13 | #define DASM_SECTION_CODE_SUB 1 |
14 | #define DASM_MAXSECTION 2 | 14 | #define DASM_MAXSECTION 2 |
15 | static const unsigned int build_actionlist[7101] = { | 15 | static const unsigned int build_actionlist[7103] = { |
16 | 0x00010001, | 16 | 0x00010001, |
17 | 0x00060014, | 17 | 0x00060014, |
18 | 0x72000000, | 18 | 0x72000000, |
@@ -2047,6 +2047,7 @@ static const unsigned int build_actionlist[7101] = { | |||
2047 | 0x41820000, | 2047 | 0x41820000, |
2048 | 0x0005085d, | 2048 | 0x0005085d, |
2049 | 0x0006000f, | 2049 | 0x0006000f, |
2050 | 0xc82e0000, | ||
2050 | 0x48000001, | 2051 | 0x48000001, |
2051 | 0x00030010, | 2052 | 0x00030010, |
2052 | 0x48000000, | 2053 | 0x48000000, |
@@ -2117,6 +2118,7 @@ static const unsigned int build_actionlist[7101] = { | |||
2117 | 0x41820000, | 2118 | 0x41820000, |
2118 | 0x0005085d, | 2119 | 0x0005085d, |
2119 | 0x0006000f, | 2120 | 0x0006000f, |
2121 | 0xc82e0000, | ||
2120 | 0x48000001, | 2122 | 0x48000001, |
2121 | 0x00030011, | 2123 | 0x00030011, |
2122 | 0x48000000, | 2124 | 0x48000000, |
@@ -7638,243 +7640,243 @@ static void build_subroutines(BuildCtx *ctx) | |||
7638 | dasm_put(Dst, 1933, (1+1)*8, FRAME_TYPE); | 7640 | dasm_put(Dst, 1933, (1+1)*8, FRAME_TYPE); |
7639 | if (LJ_DUALNUM) { | 7641 | if (LJ_DUALNUM) { |
7640 | dasm_put(Dst, 1975, 31-11, 32-21, 31-11); | 7642 | dasm_put(Dst, 1975, 31-11, 32-21, 31-11); |
7641 | dasm_put(Dst, 2056, 31-11, 32-21, 31-11); | 7643 | dasm_put(Dst, 2057, 31-11, 32-21, 31-11); |
7642 | } else { | 7644 | } else { |
7643 | dasm_put(Dst, 2109); | 7645 | dasm_put(Dst, 2111); |
7644 | } | 7646 | } |
7645 | dasm_put(Dst, 2136); | 7647 | dasm_put(Dst, 2138); |
7646 | dasm_put(Dst, 2195); | 7648 | dasm_put(Dst, 2197); |
7647 | dasm_put(Dst, 2253); | 7649 | dasm_put(Dst, 2255); |
7648 | dasm_put(Dst, 2309, Dt8(->upvalue[0])); | 7650 | dasm_put(Dst, 2311, Dt8(->upvalue[0])); |
7649 | dasm_put(Dst, 2375); | 7651 | dasm_put(Dst, 2377); |
7650 | if (LJ_DUALNUM) { | 7652 | if (LJ_DUALNUM) { |
7651 | dasm_put(Dst, 2379); | 7653 | dasm_put(Dst, 2381); |
7652 | } else { | 7654 | } else { |
7653 | dasm_put(Dst, 2394); | 7655 | dasm_put(Dst, 2396); |
7654 | } | 7656 | } |
7655 | dasm_put(Dst, 2412, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv)); | 7657 | dasm_put(Dst, 2414, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv)); |
7656 | if (!LJ_DUALNUM) { | 7658 | if (!LJ_DUALNUM) { |
7657 | dasm_put(Dst, 2434); | 7659 | dasm_put(Dst, 2436); |
7658 | } | 7660 | } |
7659 | dasm_put(Dst, 2439, (2+1)*8); | 7661 | dasm_put(Dst, 2441, (2+1)*8); |
7660 | if (LJ_DUALNUM) { | 7662 | if (LJ_DUALNUM) { |
7661 | dasm_put(Dst, 2443); | 7663 | dasm_put(Dst, 2445); |
7662 | } else { | 7664 | } else { |
7663 | dasm_put(Dst, 2446); | 7665 | dasm_put(Dst, 2448); |
7664 | } | 7666 | } |
7665 | dasm_put(Dst, 2448, (2+1)*8); | 7667 | dasm_put(Dst, 2450, (2+1)*8); |
7666 | if (LJ_DUALNUM) { | 7668 | if (LJ_DUALNUM) { |
7667 | dasm_put(Dst, 2470); | 7669 | dasm_put(Dst, 2472); |
7668 | } else { | 7670 | } else { |
7669 | dasm_put(Dst, 2539); | 7671 | dasm_put(Dst, 2541); |
7670 | } | 7672 | } |
7671 | if (LJ_DUALNUM) { | 7673 | if (LJ_DUALNUM) { |
7672 | dasm_put(Dst, 2564); | 7674 | dasm_put(Dst, 2566); |
7673 | } else { | 7675 | } else { |
7674 | dasm_put(Dst, 2633); | 7676 | dasm_put(Dst, 2635); |
7675 | } | 7677 | } |
7676 | dasm_put(Dst, 2658, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len)); | 7678 | dasm_put(Dst, 2660, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len)); |
7677 | if (LJ_DUALNUM) { | 7679 | if (LJ_DUALNUM) { |
7678 | dasm_put(Dst, 2685, Dt5([1]), (0+1)*8); | 7680 | dasm_put(Dst, 2687, Dt5([1]), (0+1)*8); |
7679 | } else { | 7681 | } else { |
7680 | dasm_put(Dst, 2697, Dt5([1]), 31-3); | 7682 | dasm_put(Dst, 2699, Dt5([1]), 31-3); |
7681 | } | 7683 | } |
7682 | dasm_put(Dst, 2713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 7684 | dasm_put(Dst, 2715, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); |
7683 | if (LJ_DUALNUM) { | 7685 | if (LJ_DUALNUM) { |
7684 | dasm_put(Dst, 2724); | 7686 | dasm_put(Dst, 2726); |
7685 | } else { | 7687 | } else { |
7686 | dasm_put(Dst, 2732); | 7688 | dasm_put(Dst, 2734); |
7687 | } | 7689 | } |
7688 | dasm_put(Dst, 2743, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 7690 | dasm_put(Dst, 2745, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); |
7689 | if (!LJ_DUALNUM) { | 7691 | if (!LJ_DUALNUM) { |
7690 | dasm_put(Dst, 2771); | 7692 | dasm_put(Dst, 2773); |
7691 | } | 7693 | } |
7692 | dasm_put(Dst, 2773); | 7694 | dasm_put(Dst, 2775); |
7693 | if (LJ_DUALNUM) { | 7695 | if (LJ_DUALNUM) { |
7694 | dasm_put(Dst, 2779); | ||
7695 | } else { | ||
7696 | dasm_put(Dst, 2781); | 7696 | dasm_put(Dst, 2781); |
7697 | } else { | ||
7698 | dasm_put(Dst, 2783); | ||
7697 | } | 7699 | } |
7698 | dasm_put(Dst, 2783); | 7700 | dasm_put(Dst, 2785); |
7699 | if (LJ_DUALNUM) { | 7701 | if (LJ_DUALNUM) { |
7700 | dasm_put(Dst, 2787); | 7702 | dasm_put(Dst, 2789); |
7701 | } else { | 7703 | } else { |
7702 | dasm_put(Dst, 2796); | 7704 | dasm_put(Dst, 2798); |
7703 | } | 7705 | } |
7704 | dasm_put(Dst, 2807, LJ_TSTR); | 7706 | dasm_put(Dst, 2809, LJ_TSTR); |
7705 | if (!LJ_DUALNUM) { | 7707 | if (!LJ_DUALNUM) { |
7706 | dasm_put(Dst, 2812); | 7708 | dasm_put(Dst, 2814); |
7707 | } | 7709 | } |
7708 | dasm_put(Dst, 2816, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 7710 | dasm_put(Dst, 2818, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); |
7709 | if (LJ_DUALNUM) { | 7711 | if (LJ_DUALNUM) { |
7710 | dasm_put(Dst, 2866); | ||
7711 | } else { | ||
7712 | dasm_put(Dst, 2868); | 7712 | dasm_put(Dst, 2868); |
7713 | } else { | ||
7714 | dasm_put(Dst, 2870); | ||
7713 | } | 7715 | } |
7714 | dasm_put(Dst, 2870, LJ_TSTR); | 7716 | dasm_put(Dst, 2872, LJ_TSTR); |
7715 | if (LJ_DUALNUM) { | 7717 | if (LJ_DUALNUM) { |
7716 | dasm_put(Dst, 2877); | 7718 | dasm_put(Dst, 2879); |
7717 | } else { | 7719 | } else { |
7718 | dasm_put(Dst, 2881); | 7720 | dasm_put(Dst, 2883); |
7719 | } | 7721 | } |
7720 | dasm_put(Dst, 2888, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz)); | 7722 | dasm_put(Dst, 2890, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz)); |
7721 | dasm_put(Dst, 2941, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); | 7723 | dasm_put(Dst, 2943, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); |
7722 | dasm_put(Dst, 2999, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB); | 7724 | dasm_put(Dst, 3001, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB); |
7723 | if (LJ_DUALNUM) { | 7725 | if (LJ_DUALNUM) { |
7724 | dasm_put(Dst, 3068); | 7726 | dasm_put(Dst, 3070); |
7725 | } else { | 7727 | } else { |
7726 | dasm_put(Dst, 3078); | 7728 | dasm_put(Dst, 3080); |
7727 | } | 7729 | } |
7728 | dasm_put(Dst, 3091); | 7730 | dasm_put(Dst, 3093); |
7729 | if (LJ_DUALNUM) { | 7731 | if (LJ_DUALNUM) { |
7730 | dasm_put(Dst, 3097); | ||
7731 | } else { | ||
7732 | dasm_put(Dst, 3099); | 7732 | dasm_put(Dst, 3099); |
7733 | } | 7733 | } else { |
7734 | dasm_put(Dst, 3101); | 7734 | dasm_put(Dst, 3101); |
7735 | } | ||
7736 | dasm_put(Dst, 3103); | ||
7735 | if (LJ_DUALNUM) { | 7737 | if (LJ_DUALNUM) { |
7736 | dasm_put(Dst, 3105); | 7738 | dasm_put(Dst, 3107); |
7737 | } else { | 7739 | } else { |
7738 | dasm_put(Dst, 3108); | 7740 | dasm_put(Dst, 3110); |
7739 | } | 7741 | } |
7740 | dasm_put(Dst, 3114); | 7742 | dasm_put(Dst, 3116); |
7741 | if (LJ_DUALNUM) { | 7743 | if (LJ_DUALNUM) { |
7742 | dasm_put(Dst, 3119); | 7744 | dasm_put(Dst, 3121); |
7743 | } else { | 7745 | } else { |
7744 | dasm_put(Dst, 3129); | 7746 | dasm_put(Dst, 3131); |
7745 | } | 7747 | } |
7746 | dasm_put(Dst, 3142); | 7748 | dasm_put(Dst, 3144); |
7747 | if (LJ_DUALNUM) { | 7749 | if (LJ_DUALNUM) { |
7748 | dasm_put(Dst, 3148); | ||
7749 | } else { | ||
7750 | dasm_put(Dst, 3150); | 7750 | dasm_put(Dst, 3150); |
7751 | } | 7751 | } else { |
7752 | dasm_put(Dst, 3152); | 7752 | dasm_put(Dst, 3152); |
7753 | } | ||
7754 | dasm_put(Dst, 3154); | ||
7753 | if (LJ_DUALNUM) { | 7755 | if (LJ_DUALNUM) { |
7754 | dasm_put(Dst, 3156); | 7756 | dasm_put(Dst, 3158); |
7755 | } else { | 7757 | } else { |
7756 | dasm_put(Dst, 3159); | 7758 | dasm_put(Dst, 3161); |
7757 | } | 7759 | } |
7758 | dasm_put(Dst, 3165); | 7760 | dasm_put(Dst, 3167); |
7759 | if (LJ_DUALNUM) { | 7761 | if (LJ_DUALNUM) { |
7760 | dasm_put(Dst, 3170); | 7762 | dasm_put(Dst, 3172); |
7761 | } else { | 7763 | } else { |
7762 | dasm_put(Dst, 3180); | 7764 | dasm_put(Dst, 3182); |
7763 | } | 7765 | } |
7764 | dasm_put(Dst, 3193); | 7766 | dasm_put(Dst, 3195); |
7765 | if (LJ_DUALNUM) { | 7767 | if (LJ_DUALNUM) { |
7766 | dasm_put(Dst, 3199); | ||
7767 | } else { | ||
7768 | dasm_put(Dst, 3201); | 7768 | dasm_put(Dst, 3201); |
7769 | } | 7769 | } else { |
7770 | dasm_put(Dst, 3203); | 7770 | dasm_put(Dst, 3203); |
7771 | } | ||
7772 | dasm_put(Dst, 3205); | ||
7771 | if (LJ_DUALNUM) { | 7773 | if (LJ_DUALNUM) { |
7772 | dasm_put(Dst, 3207); | 7774 | dasm_put(Dst, 3209); |
7773 | } else { | 7775 | } else { |
7774 | dasm_put(Dst, 3210); | 7776 | dasm_put(Dst, 3212); |
7775 | } | 7777 | } |
7776 | dasm_put(Dst, 3216); | 7778 | dasm_put(Dst, 3218); |
7777 | if (LJ_DUALNUM) { | 7779 | if (LJ_DUALNUM) { |
7778 | dasm_put(Dst, 3221); | 7780 | dasm_put(Dst, 3223); |
7779 | } else { | 7781 | } else { |
7780 | dasm_put(Dst, 3231); | 7782 | dasm_put(Dst, 3233); |
7781 | } | 7783 | } |
7782 | dasm_put(Dst, 3244); | 7784 | dasm_put(Dst, 3246); |
7783 | if (LJ_DUALNUM) { | 7785 | if (LJ_DUALNUM) { |
7784 | dasm_put(Dst, 3251); | 7786 | dasm_put(Dst, 3253); |
7785 | } else { | 7787 | } else { |
7786 | dasm_put(Dst, 3261); | 7788 | dasm_put(Dst, 3263); |
7787 | } | 7789 | } |
7788 | dasm_put(Dst, 3274); | 7790 | dasm_put(Dst, 3276); |
7789 | if (LJ_DUALNUM) { | 7791 | if (LJ_DUALNUM) { |
7790 | dasm_put(Dst, 3278); | 7792 | dasm_put(Dst, 3280); |
7791 | } else { | 7793 | } else { |
7792 | dasm_put(Dst, 3293); | 7794 | dasm_put(Dst, 3295); |
7793 | } | 7795 | } |
7794 | dasm_put(Dst, 3314); | 7796 | dasm_put(Dst, 3316); |
7795 | if (LJ_DUALNUM) { | 7797 | if (LJ_DUALNUM) { |
7796 | dasm_put(Dst, 3319); | 7798 | dasm_put(Dst, 3321); |
7797 | } else { | 7799 | } else { |
7798 | dasm_put(Dst, 3334); | 7800 | dasm_put(Dst, 3336); |
7799 | } | 7801 | } |
7800 | dasm_put(Dst, 3355); | 7802 | dasm_put(Dst, 3357); |
7801 | if (LJ_DUALNUM) { | 7803 | if (LJ_DUALNUM) { |
7802 | dasm_put(Dst, 3360); | 7804 | dasm_put(Dst, 3362); |
7803 | } else { | 7805 | } else { |
7804 | dasm_put(Dst, 3375); | 7806 | dasm_put(Dst, 3377); |
7805 | } | 7807 | } |
7806 | dasm_put(Dst, 3396); | 7808 | dasm_put(Dst, 3398); |
7807 | if (LJ_DUALNUM) { | 7809 | if (LJ_DUALNUM) { |
7808 | dasm_put(Dst, 3401); | 7810 | dasm_put(Dst, 3403); |
7809 | } else { | 7811 | } else { |
7810 | dasm_put(Dst, 3416); | 7812 | dasm_put(Dst, 3418); |
7811 | } | 7813 | } |
7812 | dasm_put(Dst, 3437); | 7814 | dasm_put(Dst, 3439); |
7813 | if (LJ_DUALNUM) { | 7815 | if (LJ_DUALNUM) { |
7814 | dasm_put(Dst, 3441); | 7816 | dasm_put(Dst, 3443); |
7815 | } else { | 7817 | } else { |
7816 | dasm_put(Dst, 3456); | 7818 | dasm_put(Dst, 3458); |
7817 | } | 7819 | } |
7818 | dasm_put(Dst, 3477); | 7820 | dasm_put(Dst, 3479); |
7819 | if (LJ_DUALNUM) { | 7821 | if (LJ_DUALNUM) { |
7820 | dasm_put(Dst, 3482); | 7822 | dasm_put(Dst, 3484); |
7821 | } else { | 7823 | } else { |
7822 | dasm_put(Dst, 3492); | 7824 | dasm_put(Dst, 3494); |
7823 | } | 7825 | } |
7824 | if (LJ_DUALNUM) { | 7826 | if (LJ_DUALNUM) { |
7825 | dasm_put(Dst, 3505); | 7827 | dasm_put(Dst, 3507); |
7826 | } else { | 7828 | } else { |
7827 | dasm_put(Dst, 3508); | 7829 | dasm_put(Dst, 3510); |
7828 | } | 7830 | } |
7829 | dasm_put(Dst, 3514); | 7831 | dasm_put(Dst, 3516); |
7830 | if (LJ_DUALNUM) { | 7832 | if (LJ_DUALNUM) { |
7831 | dasm_put(Dst, 3522); | 7833 | dasm_put(Dst, 3524); |
7832 | } | 7834 | } |
7833 | dasm_put(Dst, 3530); | 7835 | dasm_put(Dst, 3532); |
7834 | if (LJ_DUALNUM) { | 7836 | if (LJ_DUALNUM) { |
7835 | dasm_put(Dst, 3532); | 7837 | dasm_put(Dst, 3534); |
7836 | } | 7838 | } |
7837 | dasm_put(Dst, 3540, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); | 7839 | dasm_put(Dst, 3542, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); |
7838 | dasm_put(Dst, 3603, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 7840 | dasm_put(Dst, 3605, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
7839 | #if LJ_HASJIT | 7841 | #if LJ_HASJIT |
7840 | dasm_put(Dst, 3629); | 7842 | dasm_put(Dst, 3631); |
7841 | #endif | 7843 | #endif |
7842 | dasm_put(Dst, 3631, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); | 7844 | dasm_put(Dst, 3633, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); |
7843 | dasm_put(Dst, 3678, GG_DISP2STATIC); | 7845 | dasm_put(Dst, 3680, GG_DISP2STATIC); |
7844 | #if LJ_HASJIT | 7846 | #if LJ_HASJIT |
7845 | dasm_put(Dst, 3696); | ||
7846 | #endif | ||
7847 | dasm_put(Dst, 3698); | 7847 | dasm_put(Dst, 3698); |
7848 | #if LJ_HASJIT | ||
7849 | dasm_put(Dst, 3701); | ||
7850 | #endif | 7848 | #endif |
7851 | dasm_put(Dst, 3704); | 7849 | dasm_put(Dst, 3700); |
7852 | #if LJ_HASJIT | 7850 | #if LJ_HASJIT |
7853 | dasm_put(Dst, 3706); | 7851 | dasm_put(Dst, 3703); |
7854 | #endif | 7852 | #endif |
7855 | dasm_put(Dst, 3709, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 7853 | dasm_put(Dst, 3706); |
7856 | #if LJ_HASJIT | 7854 | #if LJ_HASJIT |
7857 | dasm_put(Dst, 3731); | 7855 | dasm_put(Dst, 3708); |
7858 | #endif | 7856 | #endif |
7859 | dasm_put(Dst, 3733); | 7857 | dasm_put(Dst, 3711, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
7860 | #if LJ_HASJIT | 7858 | #if LJ_HASJIT |
7861 | dasm_put(Dst, 3735); | 7859 | dasm_put(Dst, 3733); |
7862 | #endif | 7860 | #endif |
7863 | dasm_put(Dst, 3737); | 7861 | dasm_put(Dst, 3735); |
7864 | #if LJ_HASJIT | 7862 | #if LJ_HASJIT |
7865 | dasm_put(Dst, 3745); | 7863 | dasm_put(Dst, 3737); |
7866 | #endif | 7864 | #endif |
7867 | dasm_put(Dst, 3748); | 7865 | dasm_put(Dst, 3739); |
7868 | #if LJ_HASJIT | 7866 | #if LJ_HASJIT |
7869 | dasm_put(Dst, 3761); | 7867 | dasm_put(Dst, 3747); |
7870 | #endif | 7868 | #endif |
7871 | dasm_put(Dst, 3763); | 7869 | dasm_put(Dst, 3750); |
7872 | #if LJ_HASJIT | 7870 | #if LJ_HASJIT |
7873 | dasm_put(Dst, 3765); | 7871 | dasm_put(Dst, 3763); |
7874 | #endif | 7872 | #endif |
7873 | dasm_put(Dst, 3765); | ||
7874 | #if LJ_HASJIT | ||
7875 | dasm_put(Dst, 3767); | 7875 | dasm_put(Dst, 3767); |
7876 | #endif | ||
7877 | dasm_put(Dst, 3769); | ||
7876 | #if LJ_HASFFI | 7878 | #if LJ_HASFFI |
7877 | dasm_put(Dst, 3831); | 7879 | dasm_put(Dst, 3833); |
7878 | #endif | 7880 | #endif |
7879 | } | 7881 | } |
7880 | 7882 | ||
@@ -7882,7 +7884,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
7882 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) | 7884 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) |
7883 | { | 7885 | { |
7884 | int vk = 0; | 7886 | int vk = 0; |
7885 | dasm_put(Dst, 3833, defop); | 7887 | dasm_put(Dst, 3835, defop); |
7886 | 7888 | ||
7887 | switch (op) { | 7889 | switch (op) { |
7888 | 7890 | ||
@@ -7892,197 +7894,197 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7892 | 7894 | ||
7893 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: | 7895 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: |
7894 | if (LJ_DUALNUM) { | 7896 | if (LJ_DUALNUM) { |
7895 | dasm_put(Dst, 3835, -(BCBIAS_J*4 >> 16)); | 7897 | dasm_put(Dst, 3837, -(BCBIAS_J*4 >> 16)); |
7896 | if (op == BC_ISLT) { | 7898 | if (op == BC_ISLT) { |
7897 | dasm_put(Dst, 3852); | 7899 | dasm_put(Dst, 3854); |
7898 | } else if (op == BC_ISGE) { | 7900 | } else if (op == BC_ISGE) { |
7899 | dasm_put(Dst, 3855); | 7901 | dasm_put(Dst, 3857); |
7900 | } else if (op == BC_ISLE) { | 7902 | } else if (op == BC_ISLE) { |
7901 | dasm_put(Dst, 3858); | 7903 | dasm_put(Dst, 3860); |
7902 | } else { | 7904 | } else { |
7903 | dasm_put(Dst, 3861); | 7905 | dasm_put(Dst, 3863); |
7904 | } | 7906 | } |
7905 | dasm_put(Dst, 3864); | 7907 | dasm_put(Dst, 3866); |
7906 | if (op == BC_ISLT) { | 7908 | if (op == BC_ISLT) { |
7907 | dasm_put(Dst, 3901); | 7909 | dasm_put(Dst, 3903); |
7908 | } else if (op == BC_ISGE) { | 7910 | } else if (op == BC_ISGE) { |
7909 | dasm_put(Dst, 3904); | 7911 | dasm_put(Dst, 3906); |
7910 | } else if (op == BC_ISLE) { | 7912 | } else if (op == BC_ISLE) { |
7911 | dasm_put(Dst, 3907); | 7913 | dasm_put(Dst, 3909); |
7912 | } else { | 7914 | } else { |
7913 | dasm_put(Dst, 3911); | 7915 | dasm_put(Dst, 3913); |
7914 | } | 7916 | } |
7915 | dasm_put(Dst, 3915); | 7917 | dasm_put(Dst, 3917); |
7916 | } else { | 7918 | } else { |
7917 | dasm_put(Dst, 3918, -(BCBIAS_J*4 >> 16)); | 7919 | dasm_put(Dst, 3920, -(BCBIAS_J*4 >> 16)); |
7918 | if (op == BC_ISLT) { | 7920 | if (op == BC_ISLT) { |
7919 | dasm_put(Dst, 3935); | 7921 | dasm_put(Dst, 3937); |
7920 | } else if (op == BC_ISGE) { | 7922 | } else if (op == BC_ISGE) { |
7921 | dasm_put(Dst, 3938); | 7923 | dasm_put(Dst, 3940); |
7922 | } else if (op == BC_ISLE) { | 7924 | } else if (op == BC_ISLE) { |
7923 | dasm_put(Dst, 3941); | 7925 | dasm_put(Dst, 3943); |
7924 | } else { | 7926 | } else { |
7925 | dasm_put(Dst, 3945); | 7927 | dasm_put(Dst, 3947); |
7926 | } | 7928 | } |
7927 | dasm_put(Dst, 3949); | 7929 | dasm_put(Dst, 3951); |
7928 | } | 7930 | } |
7929 | break; | 7931 | break; |
7930 | 7932 | ||
7931 | case BC_ISEQV: case BC_ISNEV: | 7933 | case BC_ISEQV: case BC_ISNEV: |
7932 | vk = op == BC_ISEQV; | 7934 | vk = op == BC_ISEQV; |
7933 | if (LJ_DUALNUM) { | 7935 | if (LJ_DUALNUM) { |
7934 | dasm_put(Dst, 3962, -(BCBIAS_J*4 >> 16)); | 7936 | dasm_put(Dst, 3964, -(BCBIAS_J*4 >> 16)); |
7935 | if (vk) { | 7937 | if (vk) { |
7936 | dasm_put(Dst, 3975); | 7938 | dasm_put(Dst, 3977); |
7937 | } else { | 7939 | } else { |
7938 | dasm_put(Dst, 3978); | 7940 | dasm_put(Dst, 3980); |
7939 | } | 7941 | } |
7940 | } else { | 7942 | } else { |
7941 | dasm_put(Dst, 3981, -(BCBIAS_J*4 >> 16)); | 7943 | dasm_put(Dst, 3983, -(BCBIAS_J*4 >> 16)); |
7942 | if (vk) { | 7944 | if (vk) { |
7943 | dasm_put(Dst, 3998); | 7945 | dasm_put(Dst, 4000); |
7944 | } else { | 7946 | } else { |
7945 | dasm_put(Dst, 4002); | 7947 | dasm_put(Dst, 4004); |
7946 | } | 7948 | } |
7947 | dasm_put(Dst, 4006); | 7949 | dasm_put(Dst, 4008); |
7948 | } | 7950 | } |
7949 | dasm_put(Dst, 4018); | 7951 | dasm_put(Dst, 4020); |
7950 | if (!LJ_DUALNUM) { | 7952 | if (!LJ_DUALNUM) { |
7951 | dasm_put(Dst, 4020); | 7953 | dasm_put(Dst, 4022); |
7952 | } | 7954 | } |
7953 | dasm_put(Dst, 4023, ~LJ_TISPRI, ~LJ_TISTABUD); | 7955 | dasm_put(Dst, 4025, ~LJ_TISPRI, ~LJ_TISTABUD); |
7954 | if (vk) { | 7956 | if (vk) { |
7955 | dasm_put(Dst, 4037); | 7957 | dasm_put(Dst, 4039); |
7956 | } else { | 7958 | } else { |
7957 | dasm_put(Dst, 4042); | 7959 | dasm_put(Dst, 4044); |
7958 | } | 7960 | } |
7959 | if (LJ_DUALNUM) { | 7961 | if (LJ_DUALNUM) { |
7960 | dasm_put(Dst, 4047); | 7962 | dasm_put(Dst, 4049); |
7961 | } else { | 7963 | } else { |
7962 | dasm_put(Dst, 4062); | 7964 | dasm_put(Dst, 4064); |
7963 | } | 7965 | } |
7964 | dasm_put(Dst, 4065, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); | 7966 | dasm_put(Dst, 4067, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); |
7965 | break; | 7967 | break; |
7966 | 7968 | ||
7967 | case BC_ISEQS: case BC_ISNES: | 7969 | case BC_ISEQS: case BC_ISNES: |
7968 | vk = op == BC_ISEQS; | 7970 | vk = op == BC_ISEQS; |
7969 | dasm_put(Dst, 4084, 32-1, LJ_TSTR, -(BCBIAS_J*4 >> 16)); | 7971 | dasm_put(Dst, 4086, 32-1, LJ_TSTR, -(BCBIAS_J*4 >> 16)); |
7970 | if (vk) { | 7972 | if (vk) { |
7971 | dasm_put(Dst, 4102); | ||
7972 | } else { | ||
7973 | dasm_put(Dst, 4104); | 7973 | dasm_put(Dst, 4104); |
7974 | } else { | ||
7975 | dasm_put(Dst, 4106); | ||
7974 | } | 7976 | } |
7975 | dasm_put(Dst, 4106); | 7977 | dasm_put(Dst, 4108); |
7976 | break; | 7978 | break; |
7977 | 7979 | ||
7978 | case BC_ISEQN: case BC_ISNEN: | 7980 | case BC_ISEQN: case BC_ISNEN: |
7979 | vk = op == BC_ISEQN; | 7981 | vk = op == BC_ISEQN; |
7980 | if (LJ_DUALNUM) { | 7982 | if (LJ_DUALNUM) { |
7981 | dasm_put(Dst, 4118, -(BCBIAS_J*4 >> 16)); | 7983 | dasm_put(Dst, 4120, -(BCBIAS_J*4 >> 16)); |
7982 | if (vk) { | 7984 | if (vk) { |
7983 | dasm_put(Dst, 4130); | ||
7984 | } else { | ||
7985 | dasm_put(Dst, 4132); | 7985 | dasm_put(Dst, 4132); |
7986 | } else { | ||
7987 | dasm_put(Dst, 4134); | ||
7986 | } | 7988 | } |
7987 | dasm_put(Dst, 4134); | 7989 | dasm_put(Dst, 4136); |
7988 | } else { | 7990 | } else { |
7989 | if (vk) { | 7991 | if (vk) { |
7990 | dasm_put(Dst, 4141); | ||
7991 | } else { | ||
7992 | dasm_put(Dst, 4143); | 7992 | dasm_put(Dst, 4143); |
7993 | } else { | ||
7994 | dasm_put(Dst, 4145); | ||
7993 | } | 7995 | } |
7994 | dasm_put(Dst, 4145, -(BCBIAS_J*4 >> 16)); | 7996 | dasm_put(Dst, 4147, -(BCBIAS_J*4 >> 16)); |
7995 | } | 7997 | } |
7996 | if (vk) { | 7998 | if (vk) { |
7997 | dasm_put(Dst, 4158); | 7999 | dasm_put(Dst, 4160); |
7998 | if (!LJ_HASFFI) { | 8000 | if (!LJ_HASFFI) { |
7999 | dasm_put(Dst, 4163); | 8001 | dasm_put(Dst, 4165); |
8000 | } | 8002 | } |
8001 | } else { | 8003 | } else { |
8002 | dasm_put(Dst, 4165); | 8004 | dasm_put(Dst, 4167); |
8003 | if (!LJ_HASFFI) { | 8005 | if (!LJ_HASFFI) { |
8004 | dasm_put(Dst, 4169); | 8006 | dasm_put(Dst, 4171); |
8005 | } | 8007 | } |
8006 | dasm_put(Dst, 4171); | 8008 | dasm_put(Dst, 4173); |
8007 | } | 8009 | } |
8008 | dasm_put(Dst, 4174); | 8010 | dasm_put(Dst, 4176); |
8009 | if (LJ_HASFFI) { | 8011 | if (LJ_HASFFI) { |
8010 | dasm_put(Dst, 4185, LJ_TCDATA); | 8012 | dasm_put(Dst, 4187, LJ_TCDATA); |
8011 | } | 8013 | } |
8012 | if (LJ_DUALNUM) { | 8014 | if (LJ_DUALNUM) { |
8013 | dasm_put(Dst, 4193); | 8015 | dasm_put(Dst, 4195); |
8014 | } | 8016 | } |
8015 | break; | 8017 | break; |
8016 | 8018 | ||
8017 | case BC_ISEQP: case BC_ISNEP: | 8019 | case BC_ISEQP: case BC_ISNEP: |
8018 | vk = op == BC_ISEQP; | 8020 | vk = op == BC_ISEQP; |
8019 | dasm_put(Dst, 4217, 32-3, -(BCBIAS_J*4 >> 16)); | 8021 | dasm_put(Dst, 4219, 32-3, -(BCBIAS_J*4 >> 16)); |
8020 | if (vk) { | 8022 | if (vk) { |
8021 | dasm_put(Dst, 4230); | ||
8022 | } else { | ||
8023 | dasm_put(Dst, 4232); | 8023 | dasm_put(Dst, 4232); |
8024 | } else { | ||
8025 | dasm_put(Dst, 4234); | ||
8024 | } | 8026 | } |
8025 | dasm_put(Dst, 4234); | 8027 | dasm_put(Dst, 4236); |
8026 | break; | 8028 | break; |
8027 | 8029 | ||
8028 | /* -- Unary test and copy ops ------------------------------------------- */ | 8030 | /* -- Unary test and copy ops ------------------------------------------- */ |
8029 | 8031 | ||
8030 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: | 8032 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: |
8031 | dasm_put(Dst, 4246); | 8033 | dasm_put(Dst, 4248); |
8032 | if (op == BC_IST || op == BC_ISF) { | 8034 | if (op == BC_IST || op == BC_ISF) { |
8033 | dasm_put(Dst, 4250, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); | 8035 | dasm_put(Dst, 4252, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); |
8034 | if (op == BC_IST) { | 8036 | if (op == BC_IST) { |
8035 | dasm_put(Dst, 4257); | ||
8036 | } else { | ||
8037 | dasm_put(Dst, 4259); | 8037 | dasm_put(Dst, 4259); |
8038 | } else { | ||
8039 | dasm_put(Dst, 4261); | ||
8038 | } | 8040 | } |
8039 | dasm_put(Dst, 4261); | 8041 | dasm_put(Dst, 4263); |
8040 | } else { | 8042 | } else { |
8041 | dasm_put(Dst, 4263, LJ_TFALSE); | 8043 | dasm_put(Dst, 4265, LJ_TFALSE); |
8042 | if (op == BC_ISTC) { | 8044 | if (op == BC_ISTC) { |
8043 | dasm_put(Dst, 4268); | 8045 | dasm_put(Dst, 4270); |
8044 | } else { | 8046 | } else { |
8045 | dasm_put(Dst, 4271); | 8047 | dasm_put(Dst, 4273); |
8046 | } | 8048 | } |
8047 | dasm_put(Dst, 4274, -(BCBIAS_J*4 >> 16)); | 8049 | dasm_put(Dst, 4276, -(BCBIAS_J*4 >> 16)); |
8048 | } | 8050 | } |
8049 | dasm_put(Dst, 4281); | 8051 | dasm_put(Dst, 4283); |
8050 | break; | 8052 | break; |
8051 | 8053 | ||
8052 | /* -- Unary ops --------------------------------------------------------- */ | 8054 | /* -- Unary ops --------------------------------------------------------- */ |
8053 | 8055 | ||
8054 | case BC_MOV: | 8056 | case BC_MOV: |
8055 | dasm_put(Dst, 4292); | 8057 | dasm_put(Dst, 4294); |
8056 | break; | 8058 | break; |
8057 | case BC_NOT: | 8059 | case BC_NOT: |
8058 | dasm_put(Dst, 4305, LJ_TTRUE); | 8060 | dasm_put(Dst, 4307, LJ_TTRUE); |
8059 | break; | 8061 | break; |
8060 | case BC_UNM: | 8062 | case BC_UNM: |
8061 | dasm_put(Dst, 4321); | 8063 | dasm_put(Dst, 4323); |
8062 | if (LJ_DUALNUM) { | 8064 | if (LJ_DUALNUM) { |
8063 | dasm_put(Dst, 4325); | 8065 | dasm_put(Dst, 4327); |
8064 | } | 8066 | } |
8065 | dasm_put(Dst, 4353); | 8067 | dasm_put(Dst, 4355); |
8066 | if (LJ_DUALNUM) { | 8068 | if (LJ_DUALNUM) { |
8067 | dasm_put(Dst, 4363); | 8069 | dasm_put(Dst, 4365); |
8068 | } else { | 8070 | } else { |
8069 | dasm_put(Dst, 4366); | 8071 | dasm_put(Dst, 4368); |
8070 | } | 8072 | } |
8071 | break; | 8073 | break; |
8072 | case BC_LEN: | 8074 | case BC_LEN: |
8073 | dasm_put(Dst, 4375, LJ_TSTR, Dt5(->len)); | 8075 | dasm_put(Dst, 4377, LJ_TSTR, Dt5(->len)); |
8074 | if (LJ_DUALNUM) { | 8076 | if (LJ_DUALNUM) { |
8075 | dasm_put(Dst, 4385); | 8077 | dasm_put(Dst, 4387); |
8076 | } else { | 8078 | } else { |
8077 | dasm_put(Dst, 4390); | 8079 | dasm_put(Dst, 4392); |
8078 | } | 8080 | } |
8079 | dasm_put(Dst, 4397, LJ_TTAB); | 8081 | dasm_put(Dst, 4399, LJ_TTAB); |
8080 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 8082 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
8081 | dasm_put(Dst, 4411, Dt6(->metatable)); | 8083 | dasm_put(Dst, 4413, Dt6(->metatable)); |
8082 | #endif | 8084 | #endif |
8083 | dasm_put(Dst, 4418); | 8085 | dasm_put(Dst, 4420); |
8084 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 8086 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
8085 | dasm_put(Dst, 4424, Dt6(->nomm), 1<<MM_len); | 8087 | dasm_put(Dst, 4426, Dt6(->nomm), 1<<MM_len); |
8086 | #endif | 8088 | #endif |
8087 | break; | 8089 | break; |
8088 | 8090 | ||
@@ -8094,77 +8096,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8094 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8096 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8095 | switch (vk) { | 8097 | switch (vk) { |
8096 | case 0: | 8098 | case 0: |
8097 | dasm_put(Dst, 4434); | 8099 | dasm_put(Dst, 4436); |
8098 | break; | 8100 | break; |
8099 | case 1: | 8101 | case 1: |
8100 | dasm_put(Dst, 4440); | 8102 | dasm_put(Dst, 4442); |
8101 | break; | 8103 | break; |
8102 | default: | 8104 | default: |
8103 | dasm_put(Dst, 4446); | 8105 | dasm_put(Dst, 4448); |
8104 | break; | 8106 | break; |
8105 | } | 8107 | } |
8106 | dasm_put(Dst, 4452); | 8108 | dasm_put(Dst, 4454); |
8107 | switch (vk) { | 8109 | switch (vk) { |
8108 | case 0: | 8110 | case 0: |
8109 | dasm_put(Dst, 4478); | 8111 | dasm_put(Dst, 4480); |
8110 | break; | 8112 | break; |
8111 | case 1: | 8113 | case 1: |
8112 | dasm_put(Dst, 4481); | 8114 | dasm_put(Dst, 4483); |
8113 | break; | 8115 | break; |
8114 | default: | 8116 | default: |
8115 | dasm_put(Dst, 4484); | 8117 | dasm_put(Dst, 4486); |
8116 | break; | 8118 | break; |
8117 | } | 8119 | } |
8118 | dasm_put(Dst, 4487); | ||
8119 | if (vk == 1) { | ||
8120 | dasm_put(Dst, 4489); | 8120 | dasm_put(Dst, 4489); |
8121 | if (vk == 1) { | ||
8122 | dasm_put(Dst, 4491); | ||
8121 | } else { | 8123 | } else { |
8122 | dasm_put(Dst, 4493); | 8124 | dasm_put(Dst, 4495); |
8123 | } | 8125 | } |
8124 | switch (vk) { | 8126 | switch (vk) { |
8125 | case 0: | 8127 | case 0: |
8126 | dasm_put(Dst, 4497); | 8128 | dasm_put(Dst, 4499); |
8127 | break; | 8129 | break; |
8128 | case 1: | 8130 | case 1: |
8129 | dasm_put(Dst, 4500); | 8131 | dasm_put(Dst, 4502); |
8130 | break; | 8132 | break; |
8131 | default: | 8133 | default: |
8132 | dasm_put(Dst, 4503); | 8134 | dasm_put(Dst, 4505); |
8133 | break; | 8135 | break; |
8134 | } | 8136 | } |
8135 | dasm_put(Dst, 4506); | 8137 | dasm_put(Dst, 4508); |
8136 | } else { | 8138 | } else { |
8137 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8139 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8138 | switch (vk) { | 8140 | switch (vk) { |
8139 | case 0: | 8141 | case 0: |
8140 | dasm_put(Dst, 4513); | ||
8141 | if (LJ_DUALNUM) { | ||
8142 | dasm_put(Dst, 4515); | 8142 | dasm_put(Dst, 4515); |
8143 | } | 8143 | if (LJ_DUALNUM) { |
8144 | dasm_put(Dst, 4517); | 8144 | dasm_put(Dst, 4517); |
8145 | } | ||
8146 | dasm_put(Dst, 4519); | ||
8145 | if (LJ_DUALNUM) { | 8147 | if (LJ_DUALNUM) { |
8146 | dasm_put(Dst, 4520); | 8148 | dasm_put(Dst, 4522); |
8147 | } else { | 8149 | } else { |
8148 | dasm_put(Dst, 4526); | 8150 | dasm_put(Dst, 4528); |
8149 | } | 8151 | } |
8150 | break; | 8152 | break; |
8151 | case 1: | 8153 | case 1: |
8152 | dasm_put(Dst, 4530); | ||
8153 | if (LJ_DUALNUM) { | ||
8154 | dasm_put(Dst, 4532); | 8154 | dasm_put(Dst, 4532); |
8155 | } | 8155 | if (LJ_DUALNUM) { |
8156 | dasm_put(Dst, 4534); | 8156 | dasm_put(Dst, 4534); |
8157 | } | ||
8158 | dasm_put(Dst, 4536); | ||
8157 | if (LJ_DUALNUM) { | 8159 | if (LJ_DUALNUM) { |
8158 | dasm_put(Dst, 4537); | 8160 | dasm_put(Dst, 4539); |
8159 | } else { | 8161 | } else { |
8160 | dasm_put(Dst, 4543); | 8162 | dasm_put(Dst, 4545); |
8161 | } | 8163 | } |
8162 | break; | 8164 | break; |
8163 | default: | 8165 | default: |
8164 | dasm_put(Dst, 4547); | 8166 | dasm_put(Dst, 4549); |
8165 | break; | 8167 | break; |
8166 | } | 8168 | } |
8167 | dasm_put(Dst, 4557); | 8169 | dasm_put(Dst, 4559); |
8168 | } | 8170 | } |
8169 | break; | 8171 | break; |
8170 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: | 8172 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: |
@@ -8172,77 +8174,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8172 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8174 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8173 | switch (vk) { | 8175 | switch (vk) { |
8174 | case 0: | 8176 | case 0: |
8175 | dasm_put(Dst, 4570); | 8177 | dasm_put(Dst, 4572); |
8176 | break; | 8178 | break; |
8177 | case 1: | 8179 | case 1: |
8178 | dasm_put(Dst, 4576); | 8180 | dasm_put(Dst, 4578); |
8179 | break; | 8181 | break; |
8180 | default: | 8182 | default: |
8181 | dasm_put(Dst, 4582); | 8183 | dasm_put(Dst, 4584); |
8182 | break; | 8184 | break; |
8183 | } | 8185 | } |
8184 | dasm_put(Dst, 4588); | 8186 | dasm_put(Dst, 4590); |
8185 | switch (vk) { | 8187 | switch (vk) { |
8186 | case 0: | 8188 | case 0: |
8187 | dasm_put(Dst, 4614); | 8189 | dasm_put(Dst, 4616); |
8188 | break; | 8190 | break; |
8189 | case 1: | 8191 | case 1: |
8190 | dasm_put(Dst, 4617); | 8192 | dasm_put(Dst, 4619); |
8191 | break; | 8193 | break; |
8192 | default: | 8194 | default: |
8193 | dasm_put(Dst, 4620); | 8195 | dasm_put(Dst, 4622); |
8194 | break; | 8196 | break; |
8195 | } | 8197 | } |
8196 | dasm_put(Dst, 4623); | ||
8197 | if (vk == 1) { | ||
8198 | dasm_put(Dst, 4625); | 8198 | dasm_put(Dst, 4625); |
8199 | if (vk == 1) { | ||
8200 | dasm_put(Dst, 4627); | ||
8199 | } else { | 8201 | } else { |
8200 | dasm_put(Dst, 4629); | 8202 | dasm_put(Dst, 4631); |
8201 | } | 8203 | } |
8202 | switch (vk) { | 8204 | switch (vk) { |
8203 | case 0: | 8205 | case 0: |
8204 | dasm_put(Dst, 4633); | 8206 | dasm_put(Dst, 4635); |
8205 | break; | 8207 | break; |
8206 | case 1: | 8208 | case 1: |
8207 | dasm_put(Dst, 4636); | 8209 | dasm_put(Dst, 4638); |
8208 | break; | 8210 | break; |
8209 | default: | 8211 | default: |
8210 | dasm_put(Dst, 4639); | 8212 | dasm_put(Dst, 4641); |
8211 | break; | 8213 | break; |
8212 | } | 8214 | } |
8213 | dasm_put(Dst, 4642); | 8215 | dasm_put(Dst, 4644); |
8214 | } else { | 8216 | } else { |
8215 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8217 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8216 | switch (vk) { | 8218 | switch (vk) { |
8217 | case 0: | 8219 | case 0: |
8218 | dasm_put(Dst, 4649); | ||
8219 | if (LJ_DUALNUM) { | ||
8220 | dasm_put(Dst, 4651); | 8220 | dasm_put(Dst, 4651); |
8221 | } | 8221 | if (LJ_DUALNUM) { |
8222 | dasm_put(Dst, 4653); | 8222 | dasm_put(Dst, 4653); |
8223 | } | ||
8224 | dasm_put(Dst, 4655); | ||
8223 | if (LJ_DUALNUM) { | 8225 | if (LJ_DUALNUM) { |
8224 | dasm_put(Dst, 4656); | 8226 | dasm_put(Dst, 4658); |
8225 | } else { | 8227 | } else { |
8226 | dasm_put(Dst, 4662); | 8228 | dasm_put(Dst, 4664); |
8227 | } | 8229 | } |
8228 | break; | 8230 | break; |
8229 | case 1: | 8231 | case 1: |
8230 | dasm_put(Dst, 4666); | ||
8231 | if (LJ_DUALNUM) { | ||
8232 | dasm_put(Dst, 4668); | 8232 | dasm_put(Dst, 4668); |
8233 | } | 8233 | if (LJ_DUALNUM) { |
8234 | dasm_put(Dst, 4670); | 8234 | dasm_put(Dst, 4670); |
8235 | } | ||
8236 | dasm_put(Dst, 4672); | ||
8235 | if (LJ_DUALNUM) { | 8237 | if (LJ_DUALNUM) { |
8236 | dasm_put(Dst, 4673); | 8238 | dasm_put(Dst, 4675); |
8237 | } else { | 8239 | } else { |
8238 | dasm_put(Dst, 4679); | 8240 | dasm_put(Dst, 4681); |
8239 | } | 8241 | } |
8240 | break; | 8242 | break; |
8241 | default: | 8243 | default: |
8242 | dasm_put(Dst, 4683); | 8244 | dasm_put(Dst, 4685); |
8243 | break; | 8245 | break; |
8244 | } | 8246 | } |
8245 | dasm_put(Dst, 4693); | 8247 | dasm_put(Dst, 4695); |
8246 | } | 8248 | } |
8247 | break; | 8249 | break; |
8248 | case BC_MULVN: case BC_MULNV: case BC_MULVV: | 8250 | case BC_MULVN: case BC_MULNV: case BC_MULVV: |
@@ -8250,481 +8252,481 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8250 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8252 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8251 | switch (vk) { | 8253 | switch (vk) { |
8252 | case 0: | 8254 | case 0: |
8253 | dasm_put(Dst, 4706); | 8255 | dasm_put(Dst, 4708); |
8254 | break; | 8256 | break; |
8255 | case 1: | 8257 | case 1: |
8256 | dasm_put(Dst, 4712); | 8258 | dasm_put(Dst, 4714); |
8257 | break; | 8259 | break; |
8258 | default: | 8260 | default: |
8259 | dasm_put(Dst, 4718); | 8261 | dasm_put(Dst, 4720); |
8260 | break; | 8262 | break; |
8261 | } | 8263 | } |
8262 | dasm_put(Dst, 4724); | 8264 | dasm_put(Dst, 4726); |
8263 | switch (vk) { | 8265 | switch (vk) { |
8264 | case 0: | 8266 | case 0: |
8265 | dasm_put(Dst, 4750); | 8267 | dasm_put(Dst, 4752); |
8266 | break; | 8268 | break; |
8267 | case 1: | 8269 | case 1: |
8268 | dasm_put(Dst, 4753); | 8270 | dasm_put(Dst, 4755); |
8269 | break; | 8271 | break; |
8270 | default: | 8272 | default: |
8271 | dasm_put(Dst, 4756); | 8273 | dasm_put(Dst, 4758); |
8272 | break; | 8274 | break; |
8273 | } | 8275 | } |
8274 | dasm_put(Dst, 4759); | ||
8275 | if (vk == 1) { | ||
8276 | dasm_put(Dst, 4761); | 8276 | dasm_put(Dst, 4761); |
8277 | if (vk == 1) { | ||
8278 | dasm_put(Dst, 4763); | ||
8277 | } else { | 8279 | } else { |
8278 | dasm_put(Dst, 4765); | 8280 | dasm_put(Dst, 4767); |
8279 | } | 8281 | } |
8280 | switch (vk) { | 8282 | switch (vk) { |
8281 | case 0: | 8283 | case 0: |
8282 | dasm_put(Dst, 4769); | 8284 | dasm_put(Dst, 4771); |
8283 | break; | 8285 | break; |
8284 | case 1: | 8286 | case 1: |
8285 | dasm_put(Dst, 4772); | 8287 | dasm_put(Dst, 4774); |
8286 | break; | 8288 | break; |
8287 | default: | 8289 | default: |
8288 | dasm_put(Dst, 4775); | 8290 | dasm_put(Dst, 4777); |
8289 | break; | 8291 | break; |
8290 | } | 8292 | } |
8291 | dasm_put(Dst, 4778); | 8293 | dasm_put(Dst, 4780); |
8292 | } else { | 8294 | } else { |
8293 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8295 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8294 | switch (vk) { | 8296 | switch (vk) { |
8295 | case 0: | 8297 | case 0: |
8296 | dasm_put(Dst, 4785); | ||
8297 | if (LJ_DUALNUM) { | ||
8298 | dasm_put(Dst, 4787); | 8298 | dasm_put(Dst, 4787); |
8299 | } | 8299 | if (LJ_DUALNUM) { |
8300 | dasm_put(Dst, 4789); | 8300 | dasm_put(Dst, 4789); |
8301 | } | ||
8302 | dasm_put(Dst, 4791); | ||
8301 | if (LJ_DUALNUM) { | 8303 | if (LJ_DUALNUM) { |
8302 | dasm_put(Dst, 4792); | 8304 | dasm_put(Dst, 4794); |
8303 | } else { | 8305 | } else { |
8304 | dasm_put(Dst, 4798); | 8306 | dasm_put(Dst, 4800); |
8305 | } | 8307 | } |
8306 | break; | 8308 | break; |
8307 | case 1: | 8309 | case 1: |
8308 | dasm_put(Dst, 4802); | ||
8309 | if (LJ_DUALNUM) { | ||
8310 | dasm_put(Dst, 4804); | 8310 | dasm_put(Dst, 4804); |
8311 | } | 8311 | if (LJ_DUALNUM) { |
8312 | dasm_put(Dst, 4806); | 8312 | dasm_put(Dst, 4806); |
8313 | } | ||
8314 | dasm_put(Dst, 4808); | ||
8313 | if (LJ_DUALNUM) { | 8315 | if (LJ_DUALNUM) { |
8314 | dasm_put(Dst, 4809); | 8316 | dasm_put(Dst, 4811); |
8315 | } else { | 8317 | } else { |
8316 | dasm_put(Dst, 4815); | 8318 | dasm_put(Dst, 4817); |
8317 | } | 8319 | } |
8318 | break; | 8320 | break; |
8319 | default: | 8321 | default: |
8320 | dasm_put(Dst, 4819); | 8322 | dasm_put(Dst, 4821); |
8321 | break; | 8323 | break; |
8322 | } | 8324 | } |
8323 | dasm_put(Dst, 4829); | 8325 | dasm_put(Dst, 4831); |
8324 | } | 8326 | } |
8325 | break; | 8327 | break; |
8326 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: | 8328 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: |
8327 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8329 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8328 | switch (vk) { | 8330 | switch (vk) { |
8329 | case 0: | 8331 | case 0: |
8330 | dasm_put(Dst, 4842); | ||
8331 | if (LJ_DUALNUM) { | ||
8332 | dasm_put(Dst, 4844); | 8332 | dasm_put(Dst, 4844); |
8333 | } | 8333 | if (LJ_DUALNUM) { |
8334 | dasm_put(Dst, 4846); | 8334 | dasm_put(Dst, 4846); |
8335 | } | ||
8336 | dasm_put(Dst, 4848); | ||
8335 | if (LJ_DUALNUM) { | 8337 | if (LJ_DUALNUM) { |
8336 | dasm_put(Dst, 4849); | 8338 | dasm_put(Dst, 4851); |
8337 | } else { | 8339 | } else { |
8338 | dasm_put(Dst, 4855); | 8340 | dasm_put(Dst, 4857); |
8339 | } | 8341 | } |
8340 | break; | 8342 | break; |
8341 | case 1: | 8343 | case 1: |
8342 | dasm_put(Dst, 4859); | ||
8343 | if (LJ_DUALNUM) { | ||
8344 | dasm_put(Dst, 4861); | 8344 | dasm_put(Dst, 4861); |
8345 | } | 8345 | if (LJ_DUALNUM) { |
8346 | dasm_put(Dst, 4863); | 8346 | dasm_put(Dst, 4863); |
8347 | } | ||
8348 | dasm_put(Dst, 4865); | ||
8347 | if (LJ_DUALNUM) { | 8349 | if (LJ_DUALNUM) { |
8348 | dasm_put(Dst, 4866); | 8350 | dasm_put(Dst, 4868); |
8349 | } else { | 8351 | } else { |
8350 | dasm_put(Dst, 4872); | 8352 | dasm_put(Dst, 4874); |
8351 | } | 8353 | } |
8352 | break; | 8354 | break; |
8353 | default: | 8355 | default: |
8354 | dasm_put(Dst, 4876); | 8356 | dasm_put(Dst, 4878); |
8355 | break; | 8357 | break; |
8356 | } | 8358 | } |
8357 | dasm_put(Dst, 4886); | 8359 | dasm_put(Dst, 4888); |
8358 | break; | 8360 | break; |
8359 | case BC_MODVN: | 8361 | case BC_MODVN: |
8360 | if (LJ_DUALNUM) { | 8362 | if (LJ_DUALNUM) { |
8361 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8363 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8362 | switch (vk) { | 8364 | switch (vk) { |
8363 | case 0: | 8365 | case 0: |
8364 | dasm_put(Dst, 4899); | 8366 | dasm_put(Dst, 4901); |
8365 | break; | 8367 | break; |
8366 | case 1: | 8368 | case 1: |
8367 | dasm_put(Dst, 4905); | 8369 | dasm_put(Dst, 4907); |
8368 | break; | 8370 | break; |
8369 | default: | 8371 | default: |
8370 | dasm_put(Dst, 4911); | 8372 | dasm_put(Dst, 4913); |
8371 | break; | 8373 | break; |
8372 | } | 8374 | } |
8373 | dasm_put(Dst, 4917); | 8375 | dasm_put(Dst, 4919); |
8374 | switch (vk) { | 8376 | switch (vk) { |
8375 | case 0: | 8377 | case 0: |
8376 | dasm_put(Dst, 4945); | 8378 | dasm_put(Dst, 4947); |
8377 | break; | 8379 | break; |
8378 | case 1: | 8380 | case 1: |
8379 | dasm_put(Dst, 4948); | 8381 | dasm_put(Dst, 4950); |
8380 | break; | 8382 | break; |
8381 | default: | 8383 | default: |
8382 | dasm_put(Dst, 4951); | 8384 | dasm_put(Dst, 4953); |
8383 | break; | 8385 | break; |
8384 | } | 8386 | } |
8385 | dasm_put(Dst, 4954); | ||
8386 | if (vk == 1) { | ||
8387 | dasm_put(Dst, 4956); | 8387 | dasm_put(Dst, 4956); |
8388 | if (vk == 1) { | ||
8389 | dasm_put(Dst, 4958); | ||
8388 | } else { | 8390 | } else { |
8389 | dasm_put(Dst, 4960); | 8391 | dasm_put(Dst, 4962); |
8390 | } | 8392 | } |
8391 | switch (vk) { | 8393 | switch (vk) { |
8392 | case 0: | 8394 | case 0: |
8393 | dasm_put(Dst, 4964); | 8395 | dasm_put(Dst, 4966); |
8394 | break; | 8396 | break; |
8395 | case 1: | 8397 | case 1: |
8396 | dasm_put(Dst, 4967); | 8398 | dasm_put(Dst, 4969); |
8397 | break; | 8399 | break; |
8398 | default: | 8400 | default: |
8399 | dasm_put(Dst, 4970); | 8401 | dasm_put(Dst, 4972); |
8400 | break; | 8402 | break; |
8401 | } | 8403 | } |
8402 | if (!LJ_DUALNUM) { | 8404 | if (!LJ_DUALNUM) { |
8403 | dasm_put(Dst, 4973); | ||
8404 | } | ||
8405 | dasm_put(Dst, 4975); | 8405 | dasm_put(Dst, 4975); |
8406 | } | ||
8407 | dasm_put(Dst, 4977); | ||
8406 | } else { | 8408 | } else { |
8407 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8409 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8408 | switch (vk) { | 8410 | switch (vk) { |
8409 | case 0: | 8411 | case 0: |
8410 | dasm_put(Dst, 4987); | ||
8411 | if (LJ_DUALNUM) { | ||
8412 | dasm_put(Dst, 4989); | 8412 | dasm_put(Dst, 4989); |
8413 | } | 8413 | if (LJ_DUALNUM) { |
8414 | dasm_put(Dst, 4991); | 8414 | dasm_put(Dst, 4991); |
8415 | } | ||
8416 | dasm_put(Dst, 4993); | ||
8415 | if (LJ_DUALNUM) { | 8417 | if (LJ_DUALNUM) { |
8416 | dasm_put(Dst, 4994); | 8418 | dasm_put(Dst, 4996); |
8417 | } else { | 8419 | } else { |
8418 | dasm_put(Dst, 5000); | 8420 | dasm_put(Dst, 5002); |
8419 | } | 8421 | } |
8420 | break; | 8422 | break; |
8421 | case 1: | 8423 | case 1: |
8422 | dasm_put(Dst, 5004); | ||
8423 | if (LJ_DUALNUM) { | ||
8424 | dasm_put(Dst, 5006); | 8424 | dasm_put(Dst, 5006); |
8425 | } | 8425 | if (LJ_DUALNUM) { |
8426 | dasm_put(Dst, 5008); | 8426 | dasm_put(Dst, 5008); |
8427 | } | ||
8428 | dasm_put(Dst, 5010); | ||
8427 | if (LJ_DUALNUM) { | 8429 | if (LJ_DUALNUM) { |
8428 | dasm_put(Dst, 5011); | 8430 | dasm_put(Dst, 5013); |
8429 | } else { | 8431 | } else { |
8430 | dasm_put(Dst, 5017); | 8432 | dasm_put(Dst, 5019); |
8431 | } | 8433 | } |
8432 | break; | 8434 | break; |
8433 | default: | 8435 | default: |
8434 | dasm_put(Dst, 5021); | 8436 | dasm_put(Dst, 5023); |
8435 | break; | 8437 | break; |
8436 | } | 8438 | } |
8437 | if (!LJ_DUALNUM) { | 8439 | if (!LJ_DUALNUM) { |
8438 | dasm_put(Dst, 5031); | ||
8439 | } | ||
8440 | dasm_put(Dst, 5033); | 8440 | dasm_put(Dst, 5033); |
8441 | } | 8441 | } |
8442 | dasm_put(Dst, 5035); | ||
8443 | } | ||
8442 | break; | 8444 | break; |
8443 | case BC_MODNV: case BC_MODVV: | 8445 | case BC_MODNV: case BC_MODVV: |
8444 | if (LJ_DUALNUM) { | 8446 | if (LJ_DUALNUM) { |
8445 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8447 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8446 | switch (vk) { | 8448 | switch (vk) { |
8447 | case 0: | 8449 | case 0: |
8448 | dasm_put(Dst, 5051); | 8450 | dasm_put(Dst, 5053); |
8449 | break; | 8451 | break; |
8450 | case 1: | 8452 | case 1: |
8451 | dasm_put(Dst, 5057); | 8453 | dasm_put(Dst, 5059); |
8452 | break; | 8454 | break; |
8453 | default: | 8455 | default: |
8454 | dasm_put(Dst, 5063); | 8456 | dasm_put(Dst, 5065); |
8455 | break; | 8457 | break; |
8456 | } | 8458 | } |
8457 | dasm_put(Dst, 5069); | 8459 | dasm_put(Dst, 5071); |
8458 | if (vk == 1) { | 8460 | if (vk == 1) { |
8459 | dasm_put(Dst, 5077); | 8461 | dasm_put(Dst, 5079); |
8460 | } else { | 8462 | } else { |
8461 | dasm_put(Dst, 5081); | 8463 | dasm_put(Dst, 5083); |
8462 | } | 8464 | } |
8463 | switch (vk) { | 8465 | switch (vk) { |
8464 | case 0: | 8466 | case 0: |
8465 | dasm_put(Dst, 5085); | 8467 | dasm_put(Dst, 5087); |
8466 | break; | 8468 | break; |
8467 | case 1: | 8469 | case 1: |
8468 | dasm_put(Dst, 5088); | 8470 | dasm_put(Dst, 5090); |
8469 | break; | 8471 | break; |
8470 | default: | 8472 | default: |
8471 | dasm_put(Dst, 5091); | 8473 | dasm_put(Dst, 5093); |
8472 | break; | 8474 | break; |
8473 | } | 8475 | } |
8474 | dasm_put(Dst, 5094); | 8476 | dasm_put(Dst, 5096); |
8475 | } else { | 8477 | } else { |
8476 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8478 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8477 | switch (vk) { | 8479 | switch (vk) { |
8478 | case 0: | 8480 | case 0: |
8479 | dasm_put(Dst, 5097); | ||
8480 | if (LJ_DUALNUM) { | ||
8481 | dasm_put(Dst, 5099); | 8481 | dasm_put(Dst, 5099); |
8482 | } | 8482 | if (LJ_DUALNUM) { |
8483 | dasm_put(Dst, 5101); | 8483 | dasm_put(Dst, 5101); |
8484 | } | ||
8485 | dasm_put(Dst, 5103); | ||
8484 | if (LJ_DUALNUM) { | 8486 | if (LJ_DUALNUM) { |
8485 | dasm_put(Dst, 5104); | 8487 | dasm_put(Dst, 5106); |
8486 | } else { | 8488 | } else { |
8487 | dasm_put(Dst, 5110); | 8489 | dasm_put(Dst, 5112); |
8488 | } | 8490 | } |
8489 | break; | 8491 | break; |
8490 | case 1: | 8492 | case 1: |
8491 | dasm_put(Dst, 5114); | ||
8492 | if (LJ_DUALNUM) { | ||
8493 | dasm_put(Dst, 5116); | 8493 | dasm_put(Dst, 5116); |
8494 | } | 8494 | if (LJ_DUALNUM) { |
8495 | dasm_put(Dst, 5118); | 8495 | dasm_put(Dst, 5118); |
8496 | } | ||
8497 | dasm_put(Dst, 5120); | ||
8496 | if (LJ_DUALNUM) { | 8498 | if (LJ_DUALNUM) { |
8497 | dasm_put(Dst, 5121); | 8499 | dasm_put(Dst, 5123); |
8498 | } else { | 8500 | } else { |
8499 | dasm_put(Dst, 5127); | 8501 | dasm_put(Dst, 5129); |
8500 | } | 8502 | } |
8501 | break; | 8503 | break; |
8502 | default: | 8504 | default: |
8503 | dasm_put(Dst, 5131); | 8505 | dasm_put(Dst, 5133); |
8504 | break; | 8506 | break; |
8505 | } | 8507 | } |
8506 | dasm_put(Dst, 5141); | 8508 | dasm_put(Dst, 5143); |
8507 | } | 8509 | } |
8508 | break; | 8510 | break; |
8509 | case BC_POW: | 8511 | case BC_POW: |
8510 | dasm_put(Dst, 5144); | 8512 | dasm_put(Dst, 5146); |
8511 | break; | 8513 | break; |
8512 | 8514 | ||
8513 | case BC_CAT: | 8515 | case BC_CAT: |
8514 | dasm_put(Dst, 5167, Dt1(->base), 32-3, Dt1(->base)); | 8516 | dasm_put(Dst, 5169, Dt1(->base), 32-3, Dt1(->base)); |
8515 | break; | 8517 | break; |
8516 | 8518 | ||
8517 | /* -- Constant ops ------------------------------------------------------ */ | 8519 | /* -- Constant ops ------------------------------------------------------ */ |
8518 | 8520 | ||
8519 | case BC_KSTR: | 8521 | case BC_KSTR: |
8520 | dasm_put(Dst, 5197, 32-1, LJ_TSTR); | 8522 | dasm_put(Dst, 5199, 32-1, LJ_TSTR); |
8521 | break; | 8523 | break; |
8522 | case BC_KCDATA: | 8524 | case BC_KCDATA: |
8523 | #if LJ_HASFFI | 8525 | #if LJ_HASFFI |
8524 | dasm_put(Dst, 5216, 32-1, LJ_TCDATA); | 8526 | dasm_put(Dst, 5218, 32-1, LJ_TCDATA); |
8525 | #endif | 8527 | #endif |
8526 | break; | 8528 | break; |
8527 | case BC_KSHORT: | 8529 | case BC_KSHORT: |
8528 | if (LJ_DUALNUM) { | 8530 | if (LJ_DUALNUM) { |
8529 | dasm_put(Dst, 5235, 31-13); | 8531 | dasm_put(Dst, 5237, 31-13); |
8530 | } else { | 8532 | } else { |
8531 | dasm_put(Dst, 5251, 31-13); | 8533 | dasm_put(Dst, 5253, 31-13); |
8532 | } | 8534 | } |
8533 | break; | 8535 | break; |
8534 | case BC_KNUM: | 8536 | case BC_KNUM: |
8535 | dasm_put(Dst, 5270); | 8537 | dasm_put(Dst, 5272); |
8536 | break; | 8538 | break; |
8537 | case BC_KPRI: | 8539 | case BC_KPRI: |
8538 | dasm_put(Dst, 5283, 32-3); | 8540 | dasm_put(Dst, 5285, 32-3); |
8539 | break; | 8541 | break; |
8540 | case BC_KNIL: | 8542 | case BC_KNIL: |
8541 | dasm_put(Dst, 5298); | 8543 | dasm_put(Dst, 5300); |
8542 | break; | 8544 | break; |
8543 | 8545 | ||
8544 | /* -- Upvalue and function ops ------------------------------------------ */ | 8546 | /* -- Upvalue and function ops ------------------------------------------ */ |
8545 | 8547 | ||
8546 | case BC_UGET: | 8548 | case BC_UGET: |
8547 | dasm_put(Dst, 5317, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); | 8549 | dasm_put(Dst, 5319, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); |
8548 | break; | 8550 | break; |
8549 | case BC_USETV: | 8551 | case BC_USETV: |
8550 | dasm_put(Dst, 5338, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); | 8552 | dasm_put(Dst, 5340, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); |
8551 | break; | 8553 | break; |
8552 | case BC_USETS: | 8554 | case BC_USETS: |
8553 | dasm_put(Dst, 5391, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); | 8555 | dasm_put(Dst, 5393, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); |
8554 | break; | 8556 | break; |
8555 | case BC_USETN: | 8557 | case BC_USETN: |
8556 | dasm_put(Dst, 5442, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); | 8558 | dasm_put(Dst, 5444, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); |
8557 | break; | 8559 | break; |
8558 | case BC_USETP: | 8560 | case BC_USETP: |
8559 | dasm_put(Dst, 5463, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); | 8561 | dasm_put(Dst, 5465, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); |
8560 | break; | 8562 | break; |
8561 | 8563 | ||
8562 | case BC_UCLO: | 8564 | case BC_UCLO: |
8563 | dasm_put(Dst, 5486, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); | 8565 | dasm_put(Dst, 5488, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); |
8564 | break; | 8566 | break; |
8565 | 8567 | ||
8566 | case BC_FNEW: | 8568 | case BC_FNEW: |
8567 | dasm_put(Dst, 5516, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); | 8569 | dasm_put(Dst, 5518, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); |
8568 | break; | 8570 | break; |
8569 | 8571 | ||
8570 | /* -- Table ops --------------------------------------------------------- */ | 8572 | /* -- Table ops --------------------------------------------------------- */ |
8571 | 8573 | ||
8572 | case BC_TNEW: | 8574 | case BC_TNEW: |
8573 | case BC_TDUP: | 8575 | case BC_TDUP: |
8574 | dasm_put(Dst, 5544, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); | 8576 | dasm_put(Dst, 5546, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); |
8575 | if (op == BC_TNEW) { | 8577 | if (op == BC_TNEW) { |
8576 | dasm_put(Dst, 5557); | 8578 | dasm_put(Dst, 5559); |
8577 | } else { | 8579 | } else { |
8578 | dasm_put(Dst, 5566, 32-1); | 8580 | dasm_put(Dst, 5568, 32-1); |
8579 | } | 8581 | } |
8580 | dasm_put(Dst, 5573, Dt1(->base), LJ_TTAB); | 8582 | dasm_put(Dst, 5575, Dt1(->base), LJ_TTAB); |
8581 | if (op == BC_TNEW) { | 8583 | if (op == BC_TNEW) { |
8582 | dasm_put(Dst, 5590); | 8584 | dasm_put(Dst, 5592); |
8583 | } | 8585 | } |
8584 | dasm_put(Dst, 5595); | 8586 | dasm_put(Dst, 5597); |
8585 | break; | 8587 | break; |
8586 | 8588 | ||
8587 | case BC_GGET: | 8589 | case BC_GGET: |
8588 | case BC_GSET: | 8590 | case BC_GSET: |
8589 | dasm_put(Dst, 5604, 32-1, Dt7(->env)); | 8591 | dasm_put(Dst, 5606, 32-1, Dt7(->env)); |
8590 | if (op == BC_GGET) { | 8592 | if (op == BC_GGET) { |
8591 | dasm_put(Dst, 5612); | 8593 | dasm_put(Dst, 5614); |
8592 | } else { | 8594 | } else { |
8593 | dasm_put(Dst, 5615); | 8595 | dasm_put(Dst, 5617); |
8594 | } | 8596 | } |
8595 | break; | 8597 | break; |
8596 | 8598 | ||
8597 | case BC_TGETV: | 8599 | case BC_TGETV: |
8598 | dasm_put(Dst, 5618); | 8600 | dasm_put(Dst, 5620); |
8599 | if (LJ_DUALNUM) { | 8601 | if (LJ_DUALNUM) { |
8600 | dasm_put(Dst, 5622); | ||
8601 | } else { | ||
8602 | dasm_put(Dst, 5624); | 8602 | dasm_put(Dst, 5624); |
8603 | } else { | ||
8604 | dasm_put(Dst, 5626); | ||
8603 | } | 8605 | } |
8604 | dasm_put(Dst, 5626, LJ_TTAB); | 8606 | dasm_put(Dst, 5628, LJ_TTAB); |
8605 | if (LJ_DUALNUM) { | 8607 | if (LJ_DUALNUM) { |
8606 | dasm_put(Dst, 5632, Dt6(->asize), Dt6(->array), 31-3); | 8608 | dasm_put(Dst, 5634, Dt6(->asize), Dt6(->array), 31-3); |
8607 | } else { | 8609 | } else { |
8608 | dasm_put(Dst, 5642, Dt6(->asize), Dt6(->array), 31-3); | 8610 | dasm_put(Dst, 5644, Dt6(->asize), Dt6(->array), 31-3); |
8609 | } | 8611 | } |
8610 | dasm_put(Dst, 5659, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); | 8612 | dasm_put(Dst, 5661, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); |
8611 | if (!LJ_DUALNUM) { | 8613 | if (!LJ_DUALNUM) { |
8612 | dasm_put(Dst, 5699); | 8614 | dasm_put(Dst, 5701); |
8613 | } | 8615 | } |
8614 | dasm_put(Dst, 5701); | 8616 | dasm_put(Dst, 5703); |
8615 | break; | 8617 | break; |
8616 | case BC_TGETS: | 8618 | case BC_TGETS: |
8617 | dasm_put(Dst, 5704, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); | 8619 | dasm_put(Dst, 5706, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); |
8618 | dasm_put(Dst, 5765, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 8620 | dasm_put(Dst, 5767, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
8619 | break; | 8621 | break; |
8620 | case BC_TGETB: | 8622 | case BC_TGETB: |
8621 | dasm_put(Dst, 5785, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 8623 | dasm_put(Dst, 5787, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
8622 | break; | 8624 | break; |
8623 | 8625 | ||
8624 | case BC_TSETV: | 8626 | case BC_TSETV: |
8625 | dasm_put(Dst, 5833); | 8627 | dasm_put(Dst, 5835); |
8626 | if (LJ_DUALNUM) { | 8628 | if (LJ_DUALNUM) { |
8627 | dasm_put(Dst, 5837); | ||
8628 | } else { | ||
8629 | dasm_put(Dst, 5839); | 8629 | dasm_put(Dst, 5839); |
8630 | } else { | ||
8631 | dasm_put(Dst, 5841); | ||
8630 | } | 8632 | } |
8631 | dasm_put(Dst, 5841, LJ_TTAB); | 8633 | dasm_put(Dst, 5843, LJ_TTAB); |
8632 | if (LJ_DUALNUM) { | 8634 | if (LJ_DUALNUM) { |
8633 | dasm_put(Dst, 5847, Dt6(->asize), Dt6(->array), 31-3); | 8635 | dasm_put(Dst, 5849, Dt6(->asize), Dt6(->array), 31-3); |
8634 | } else { | 8636 | } else { |
8635 | dasm_put(Dst, 5857, Dt6(->asize), Dt6(->array), 31-3); | 8637 | dasm_put(Dst, 5859, Dt6(->asize), Dt6(->array), 31-3); |
8636 | } | 8638 | } |
8637 | dasm_put(Dst, 5874, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); | 8639 | dasm_put(Dst, 5876, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); |
8638 | if (!LJ_DUALNUM) { | 8640 | if (!LJ_DUALNUM) { |
8639 | dasm_put(Dst, 5921); | 8641 | dasm_put(Dst, 5923); |
8640 | } | 8642 | } |
8641 | dasm_put(Dst, 5923, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 8643 | dasm_put(Dst, 5925, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
8642 | break; | 8644 | break; |
8643 | dasm_put(Dst, 5938, LJ_TSTR, LJ_TNIL); | 8645 | dasm_put(Dst, 5940, LJ_TSTR, LJ_TNIL); |
8644 | case BC_TSETS: | 8646 | case BC_TSETS: |
8645 | dasm_put(Dst, 5964, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL); | 8647 | dasm_put(Dst, 5966, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL); |
8646 | dasm_put(Dst, 6015, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex); | 8648 | dasm_put(Dst, 6017, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex); |
8647 | dasm_put(Dst, 6071, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 8649 | dasm_put(Dst, 6073, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
8648 | break; | 8650 | break; |
8649 | case BC_TSETB: | 8651 | case BC_TSETB: |
8650 | dasm_put(Dst, 6096, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); | 8652 | dasm_put(Dst, 6098, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); |
8651 | dasm_put(Dst, 6154, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 8653 | dasm_put(Dst, 6156, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
8652 | break; | 8654 | break; |
8653 | 8655 | ||
8654 | case BC_TSETM: | 8656 | case BC_TSETM: |
8655 | dasm_put(Dst, 6164, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 8657 | dasm_put(Dst, 6166, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
8656 | dasm_put(Dst, 6233); | 8658 | dasm_put(Dst, 6235); |
8657 | break; | 8659 | break; |
8658 | 8660 | ||
8659 | /* -- Calls and vararg handling ----------------------------------------- */ | 8661 | /* -- Calls and vararg handling ----------------------------------------- */ |
8660 | 8662 | ||
8661 | case BC_CALLM: | 8663 | case BC_CALLM: |
8662 | dasm_put(Dst, 6236); | 8664 | dasm_put(Dst, 6238); |
8663 | break; | 8665 | break; |
8664 | case BC_CALL: | 8666 | case BC_CALL: |
8665 | dasm_put(Dst, 6238, LJ_TFUNC, Dt7(->pc)); | 8667 | dasm_put(Dst, 6240, LJ_TFUNC, Dt7(->pc)); |
8666 | break; | 8668 | break; |
8667 | 8669 | ||
8668 | case BC_CALLMT: | 8670 | case BC_CALLMT: |
8669 | dasm_put(Dst, 6259); | 8671 | dasm_put(Dst, 6261); |
8670 | break; | 8672 | break; |
8671 | case BC_CALLT: | 8673 | case BC_CALLT: |
8672 | dasm_put(Dst, 6261, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); | 8674 | dasm_put(Dst, 6263, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); |
8673 | dasm_put(Dst, 6325, FRAME_TYPE); | 8675 | dasm_put(Dst, 6327, FRAME_TYPE); |
8674 | break; | 8676 | break; |
8675 | 8677 | ||
8676 | case BC_ITERC: | 8678 | case BC_ITERC: |
8677 | dasm_put(Dst, 6334, LJ_TFUNC, Dt7(->pc)); | 8679 | dasm_put(Dst, 6336, LJ_TFUNC, Dt7(->pc)); |
8678 | break; | 8680 | break; |
8679 | 8681 | ||
8680 | case BC_ITERN: | 8682 | case BC_ITERN: |
8681 | #if LJ_HASJIT | 8683 | #if LJ_HASJIT |
8682 | #endif | 8684 | #endif |
8683 | dasm_put(Dst, 6361, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); | 8685 | dasm_put(Dst, 6363, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); |
8684 | if (LJ_DUALNUM) { | 8686 | if (LJ_DUALNUM) { |
8685 | dasm_put(Dst, 6383); | 8687 | dasm_put(Dst, 6385); |
8686 | } else { | 8688 | } else { |
8687 | dasm_put(Dst, 6386); | 8689 | dasm_put(Dst, 6388); |
8688 | } | 8690 | } |
8689 | dasm_put(Dst, 6390, -(BCBIAS_J*4 >> 16)); | 8691 | dasm_put(Dst, 6392, -(BCBIAS_J*4 >> 16)); |
8690 | if (!LJ_DUALNUM) { | 8692 | if (!LJ_DUALNUM) { |
8691 | dasm_put(Dst, 6398); | 8693 | dasm_put(Dst, 6400); |
8692 | } | 8694 | } |
8693 | dasm_put(Dst, 6400, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); | 8695 | dasm_put(Dst, 6402, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); |
8694 | break; | 8696 | break; |
8695 | 8697 | ||
8696 | case BC_ISNEXT: | 8698 | case BC_ISNEXT: |
8697 | dasm_put(Dst, 6456, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); | 8699 | dasm_put(Dst, 6458, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); |
8698 | break; | 8700 | break; |
8699 | 8701 | ||
8700 | case BC_VARG: | 8702 | case BC_VARG: |
8701 | dasm_put(Dst, 6506, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); | 8703 | dasm_put(Dst, 6508, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); |
8702 | dasm_put(Dst, 6586); | 8704 | dasm_put(Dst, 6588); |
8703 | break; | 8705 | break; |
8704 | 8706 | ||
8705 | /* -- Returns ----------------------------------------------------------- */ | 8707 | /* -- Returns ----------------------------------------------------------- */ |
8706 | 8708 | ||
8707 | case BC_RETM: | 8709 | case BC_RETM: |
8708 | dasm_put(Dst, 6592); | 8710 | dasm_put(Dst, 6594); |
8709 | break; | 8711 | break; |
8710 | 8712 | ||
8711 | case BC_RET: | 8713 | case BC_RET: |
8712 | dasm_put(Dst, 6594, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); | 8714 | dasm_put(Dst, 6596, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); |
8713 | break; | 8715 | break; |
8714 | 8716 | ||
8715 | case BC_RET0: case BC_RET1: | 8717 | case BC_RET0: case BC_RET1: |
8716 | dasm_put(Dst, 6664, FRAME_TYPE, FRAME_VARG); | 8718 | dasm_put(Dst, 6666, FRAME_TYPE, FRAME_VARG); |
8717 | if (op == BC_RET1) { | 8719 | if (op == BC_RET1) { |
8718 | dasm_put(Dst, 6677); | 8720 | dasm_put(Dst, 6679); |
8719 | } | 8721 | } |
8720 | dasm_put(Dst, 6680, Dt7(->pc), PC2PROTO(k)); | 8722 | dasm_put(Dst, 6682, Dt7(->pc), PC2PROTO(k)); |
8721 | break; | 8723 | break; |
8722 | 8724 | ||
8723 | /* -- Loops and branches ------------------------------------------------ */ | 8725 | /* -- Loops and branches ------------------------------------------------ */ |
8724 | 8726 | ||
8725 | case BC_FORL: | 8727 | case BC_FORL: |
8726 | #if LJ_HASJIT | 8728 | #if LJ_HASJIT |
8727 | dasm_put(Dst, 6708); | 8729 | dasm_put(Dst, 6710); |
8728 | #endif | 8730 | #endif |
8729 | break; | 8731 | break; |
8730 | 8732 | ||
@@ -8737,93 +8739,93 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8737 | case BC_IFORL: | 8739 | case BC_IFORL: |
8738 | vk = (op == BC_IFORL || op == BC_JFORL); | 8740 | vk = (op == BC_IFORL || op == BC_JFORL); |
8739 | if (LJ_DUALNUM) { | 8741 | if (LJ_DUALNUM) { |
8740 | dasm_put(Dst, 6710, FORL_IDX*8+4); | 8742 | dasm_put(Dst, 6712, FORL_IDX*8+4); |
8741 | if (vk) { | 8743 | if (vk) { |
8742 | dasm_put(Dst, 6715, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); | 8744 | dasm_put(Dst, 6717, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); |
8743 | } else { | 8745 | } else { |
8744 | dasm_put(Dst, 6729, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); | 8746 | dasm_put(Dst, 6731, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); |
8745 | } | 8747 | } |
8746 | dasm_put(Dst, 6745, FORL_EXT*8); | 8748 | dasm_put(Dst, 6747, FORL_EXT*8); |
8747 | if (op != BC_JFORL) { | 8749 | if (op != BC_JFORL) { |
8748 | dasm_put(Dst, 6752, 32-1); | 8750 | dasm_put(Dst, 6754, 32-1); |
8749 | } | 8751 | } |
8750 | dasm_put(Dst, 6755, FORL_EXT*8+4); | 8752 | dasm_put(Dst, 6757, FORL_EXT*8+4); |
8751 | if (op != BC_JFORL) { | 8753 | if (op != BC_JFORL) { |
8752 | dasm_put(Dst, 6758); | 8754 | dasm_put(Dst, 6760); |
8753 | } | 8755 | } |
8754 | if (op == BC_FORI) { | 8756 | if (op == BC_FORI) { |
8755 | dasm_put(Dst, 6760); | 8757 | dasm_put(Dst, 6762); |
8756 | } else if (op == BC_JFORI) { | 8758 | } else if (op == BC_JFORI) { |
8757 | dasm_put(Dst, 6763, -(BCBIAS_J*4 >> 16), BC_JLOOP); | 8759 | dasm_put(Dst, 6765, -(BCBIAS_J*4 >> 16), BC_JLOOP); |
8758 | } else if (op == BC_IFORL) { | 8760 | } else if (op == BC_IFORL) { |
8759 | dasm_put(Dst, 6768, -(BCBIAS_J*4 >> 16)); | 8761 | dasm_put(Dst, 6770, -(BCBIAS_J*4 >> 16)); |
8760 | } else { | 8762 | } else { |
8761 | dasm_put(Dst, 6773, BC_JLOOP); | 8763 | dasm_put(Dst, 6775, BC_JLOOP); |
8762 | } | 8764 | } |
8763 | dasm_put(Dst, 6776); | 8765 | dasm_put(Dst, 6778); |
8764 | if (vk) { | 8766 | if (vk) { |
8765 | dasm_put(Dst, 6792); | 8767 | dasm_put(Dst, 6794); |
8766 | } | 8768 | } |
8767 | } | 8769 | } |
8768 | if (vk) { | 8770 | if (vk) { |
8769 | if (LJ_DUALNUM) { | 8771 | if (LJ_DUALNUM) { |
8770 | dasm_put(Dst, 6799, FORL_IDX*8); | 8772 | dasm_put(Dst, 6801, FORL_IDX*8); |
8771 | } else { | 8773 | } else { |
8772 | dasm_put(Dst, 6803); | 8774 | dasm_put(Dst, 6805); |
8773 | } | 8775 | } |
8774 | dasm_put(Dst, 6805, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); | 8776 | dasm_put(Dst, 6807, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); |
8775 | } else { | 8777 | } else { |
8776 | if (LJ_DUALNUM) { | 8778 | if (LJ_DUALNUM) { |
8777 | dasm_put(Dst, 6815); | 8779 | dasm_put(Dst, 6817); |
8778 | } else { | 8780 | } else { |
8779 | dasm_put(Dst, 6817, FORL_STEP*8, FORL_STOP*8); | 8781 | dasm_put(Dst, 6819, FORL_STEP*8, FORL_STOP*8); |
8780 | } | 8782 | } |
8781 | dasm_put(Dst, 6826, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); | 8783 | dasm_put(Dst, 6828, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); |
8782 | } | 8784 | } |
8783 | dasm_put(Dst, 6837); | 8785 | dasm_put(Dst, 6839); |
8784 | if (op != BC_JFORL) { | 8786 | if (op != BC_JFORL) { |
8785 | dasm_put(Dst, 6839, 32-1); | 8787 | dasm_put(Dst, 6841, 32-1); |
8786 | } | 8788 | } |
8787 | dasm_put(Dst, 6842, FORL_EXT*8); | 8789 | dasm_put(Dst, 6844, FORL_EXT*8); |
8788 | if (op != BC_JFORL) { | 8790 | if (op != BC_JFORL) { |
8789 | dasm_put(Dst, 6845); | 8791 | dasm_put(Dst, 6847); |
8790 | } | 8792 | } |
8791 | dasm_put(Dst, 6847); | 8793 | dasm_put(Dst, 6849); |
8792 | if (op == BC_JFORI) { | 8794 | if (op == BC_JFORI) { |
8793 | dasm_put(Dst, 6849, -(BCBIAS_J*4 >> 16)); | 8795 | dasm_put(Dst, 6851, -(BCBIAS_J*4 >> 16)); |
8794 | } | 8796 | } |
8795 | dasm_put(Dst, 6852); | 8797 | dasm_put(Dst, 6854); |
8796 | if (op == BC_FORI) { | 8798 | if (op == BC_FORI) { |
8797 | dasm_put(Dst, 6855); | 8799 | dasm_put(Dst, 6857); |
8798 | } else if (op == BC_IFORL) { | 8800 | } else if (op == BC_IFORL) { |
8799 | if (LJ_DUALNUM) { | 8801 | if (LJ_DUALNUM) { |
8800 | dasm_put(Dst, 6858); | 8802 | dasm_put(Dst, 6860); |
8801 | } else { | 8803 | } else { |
8802 | dasm_put(Dst, 6861); | 8804 | dasm_put(Dst, 6863); |
8803 | } | 8805 | } |
8804 | dasm_put(Dst, 6864, -(BCBIAS_J*4 >> 16)); | 8806 | dasm_put(Dst, 6866, -(BCBIAS_J*4 >> 16)); |
8805 | } else { | 8807 | } else { |
8806 | dasm_put(Dst, 6868, BC_JLOOP); | 8808 | dasm_put(Dst, 6870, BC_JLOOP); |
8807 | } | 8809 | } |
8808 | if (LJ_DUALNUM) { | 8810 | if (LJ_DUALNUM) { |
8809 | dasm_put(Dst, 6871); | 8811 | dasm_put(Dst, 6873); |
8810 | } else { | 8812 | } else { |
8811 | dasm_put(Dst, 6874); | 8813 | dasm_put(Dst, 6876); |
8812 | } | 8814 | } |
8813 | dasm_put(Dst, 6886); | 8815 | dasm_put(Dst, 6888); |
8814 | if (op == BC_FORI) { | 8816 | if (op == BC_FORI) { |
8815 | dasm_put(Dst, 6888, -(BCBIAS_J*4 >> 16)); | 8817 | dasm_put(Dst, 6890, -(BCBIAS_J*4 >> 16)); |
8816 | } else if (op == BC_IFORL) { | 8818 | } else if (op == BC_IFORL) { |
8817 | dasm_put(Dst, 6894); | 8819 | dasm_put(Dst, 6896); |
8818 | } else { | 8820 | } else { |
8819 | dasm_put(Dst, 6897, BC_JLOOP); | 8821 | dasm_put(Dst, 6899, BC_JLOOP); |
8820 | } | 8822 | } |
8821 | dasm_put(Dst, 6900); | 8823 | dasm_put(Dst, 6902); |
8822 | break; | 8824 | break; |
8823 | 8825 | ||
8824 | case BC_ITERL: | 8826 | case BC_ITERL: |
8825 | #if LJ_HASJIT | 8827 | #if LJ_HASJIT |
8826 | dasm_put(Dst, 6903); | 8828 | dasm_put(Dst, 6905); |
8827 | #endif | 8829 | #endif |
8828 | break; | 8830 | break; |
8829 | 8831 | ||
@@ -8832,40 +8834,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8832 | break; | 8834 | break; |
8833 | #endif | 8835 | #endif |
8834 | case BC_IITERL: | 8836 | case BC_IITERL: |
8835 | dasm_put(Dst, 6905, LJ_TNIL); | 8837 | dasm_put(Dst, 6907, LJ_TNIL); |
8836 | if (op == BC_JITERL) { | 8838 | if (op == BC_JITERL) { |
8837 | dasm_put(Dst, 6912); | 8839 | dasm_put(Dst, 6914); |
8838 | } else { | 8840 | } else { |
8839 | dasm_put(Dst, 6914, 32-1, -(BCBIAS_J*4 >> 16)); | 8841 | dasm_put(Dst, 6916, 32-1, -(BCBIAS_J*4 >> 16)); |
8840 | } | 8842 | } |
8841 | dasm_put(Dst, 6922); | 8843 | dasm_put(Dst, 6924); |
8842 | break; | 8844 | break; |
8843 | 8845 | ||
8844 | case BC_LOOP: | 8846 | case BC_LOOP: |
8845 | #if LJ_HASJIT | 8847 | #if LJ_HASJIT |
8846 | dasm_put(Dst, 6934); | 8848 | dasm_put(Dst, 6936); |
8847 | #endif | 8849 | #endif |
8848 | break; | 8850 | break; |
8849 | 8851 | ||
8850 | case BC_ILOOP: | 8852 | case BC_ILOOP: |
8851 | dasm_put(Dst, 6936); | 8853 | dasm_put(Dst, 6938); |
8852 | break; | 8854 | break; |
8853 | 8855 | ||
8854 | case BC_JLOOP: | 8856 | case BC_JLOOP: |
8855 | #if LJ_HASJIT | 8857 | #if LJ_HASJIT |
8856 | dasm_put(Dst, 6947); | 8858 | dasm_put(Dst, 6949); |
8857 | #endif | 8859 | #endif |
8858 | break; | 8860 | break; |
8859 | 8861 | ||
8860 | case BC_JMP: | 8862 | case BC_JMP: |
8861 | dasm_put(Dst, 6949, 32-1, -(BCBIAS_J*4 >> 16)); | 8863 | dasm_put(Dst, 6951, 32-1, -(BCBIAS_J*4 >> 16)); |
8862 | break; | 8864 | break; |
8863 | 8865 | ||
8864 | /* -- Function headers -------------------------------------------------- */ | 8866 | /* -- Function headers -------------------------------------------------- */ |
8865 | 8867 | ||
8866 | case BC_FUNCF: | 8868 | case BC_FUNCF: |
8867 | #if LJ_HASJIT | 8869 | #if LJ_HASJIT |
8868 | dasm_put(Dst, 6965); | 8870 | dasm_put(Dst, 6967); |
8869 | #endif | 8871 | #endif |
8870 | case BC_FUNCV: /* NYI: compiled vararg functions. */ | 8872 | case BC_FUNCV: /* NYI: compiled vararg functions. */ |
8871 | break; | 8873 | break; |
@@ -8875,38 +8877,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8875 | break; | 8877 | break; |
8876 | #endif | 8878 | #endif |
8877 | case BC_IFUNCF: | 8879 | case BC_IFUNCF: |
8878 | dasm_put(Dst, 6967, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); | 8880 | dasm_put(Dst, 6969, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); |
8879 | if (op == BC_JFUNCF) { | 8881 | if (op == BC_JFUNCF) { |
8880 | dasm_put(Dst, 6985); | ||
8881 | } else { | ||
8882 | dasm_put(Dst, 6987); | 8882 | dasm_put(Dst, 6987); |
8883 | } else { | ||
8884 | dasm_put(Dst, 6989); | ||
8883 | } | 8885 | } |
8884 | dasm_put(Dst, 6996); | 8886 | dasm_put(Dst, 6998); |
8885 | break; | 8887 | break; |
8886 | 8888 | ||
8887 | case BC_JFUNCV: | 8889 | case BC_JFUNCV: |
8888 | #if !LJ_HASJIT | 8890 | #if !LJ_HASJIT |
8889 | break; | 8891 | break; |
8890 | #endif | 8892 | #endif |
8891 | dasm_put(Dst, 7002); | 8893 | dasm_put(Dst, 7004); |
8892 | break; /* NYI: compiled vararg functions. */ | 8894 | break; /* NYI: compiled vararg functions. */ |
8893 | 8895 | ||
8894 | case BC_IFUNCV: | 8896 | case BC_IFUNCV: |
8895 | dasm_put(Dst, 7004, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); | 8897 | dasm_put(Dst, 7006, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); |
8896 | break; | 8898 | break; |
8897 | 8899 | ||
8898 | case BC_FUNCC: | 8900 | case BC_FUNCC: |
8899 | case BC_FUNCCW: | 8901 | case BC_FUNCCW: |
8900 | if (op == BC_FUNCC) { | 8902 | if (op == BC_FUNCC) { |
8901 | dasm_put(Dst, 7057, Dt8(->f)); | 8903 | dasm_put(Dst, 7059, Dt8(->f)); |
8902 | } else { | 8904 | } else { |
8903 | dasm_put(Dst, 7060, DISPATCH_GL(wrapf)); | 8905 | dasm_put(Dst, 7062, DISPATCH_GL(wrapf)); |
8904 | } | 8906 | } |
8905 | dasm_put(Dst, 7063, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); | 8907 | dasm_put(Dst, 7065, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); |
8906 | if (op == BC_FUNCCW) { | 8908 | if (op == BC_FUNCCW) { |
8907 | dasm_put(Dst, 7076, Dt8(->f)); | 8909 | dasm_put(Dst, 7078, Dt8(->f)); |
8908 | } | 8910 | } |
8909 | dasm_put(Dst, 7079, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); | 8911 | dasm_put(Dst, 7081, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); |
8910 | break; | 8912 | break; |
8911 | 8913 | ||
8912 | /* ---------------------------------------------------------------------- */ | 8914 | /* ---------------------------------------------------------------------- */ |
@@ -8926,7 +8928,7 @@ static int build_backend(BuildCtx *ctx) | |||
8926 | 8928 | ||
8927 | build_subroutines(ctx); | 8929 | build_subroutines(ctx); |
8928 | 8930 | ||
8929 | dasm_put(Dst, 7100); | 8931 | dasm_put(Dst, 7102); |
8930 | for (op = 0; op < BC__MAX; op++) | 8932 | for (op = 0; op < BC__MAX; op++) |
8931 | build_ins(ctx, (BCOp)op, op); | 8933 | build_ins(ctx, (BCOp)op, op); |
8932 | 8934 | ||