diff options
| author | Mike Pall <mike> | 2009-12-30 02:38:40 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2009-12-30 02:38:40 +0100 |
| commit | 8fc9430d067e255202f6b89fae7065bc50e0c668 (patch) | |
| tree | d05aebc6f53894d8f07410ab00a8565c8954aae7 | |
| parent | 9de0f53a8db3a4d3fa1951ff08aaab392dc7a584 (diff) | |
| download | luajit-8fc9430d067e255202f6b89fae7065bc50e0c668.tar.gz luajit-8fc9430d067e255202f6b89fae7065bc50e0c668.tar.bz2 luajit-8fc9430d067e255202f6b89fae7065bc50e0c668.zip | |
Rename NRESULTS to MULTRES on the assembler side, too.
| -rw-r--r-- | src/buildvm_x86.dasc | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index 952fc9d6..b9dddd1f 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc | |||
| @@ -147,12 +147,12 @@ | |||
| 147 | |// FPARGx overlaps ARGx and ARG(x+1) on x86. | 147 | |// FPARGx overlaps ARGx and ARG(x+1) on x86. |
| 148 | |.define FPARG3, qword [esp+qword*1] | 148 | |.define FPARG3, qword [esp+qword*1] |
| 149 | |.define FPARG1, qword [esp] | 149 | |.define FPARG1, qword [esp] |
| 150 | |// TMPQ overlaps TMP1/TMP2. ARG5/NRESULTS overlap TMP1/TMP2 (and TMPQ). | 150 | |// TMPQ overlaps TMP1/TMP2. ARG5/MULTRES overlap TMP1/TMP2 (and TMPQ). |
| 151 | |.define TMPQ, qword [esp+aword*4] | 151 | |.define TMPQ, qword [esp+aword*4] |
| 152 | |.define TMP3, ARG4 | 152 | |.define TMP3, ARG4 |
| 153 | |.define ARG5, TMP1 | 153 | |.define ARG5, TMP1 |
| 154 | |.define TMPa, TMP1 | 154 | |.define TMPa, TMP1 |
| 155 | |.define NRESULTS, TMP2 | 155 | |.define MULTRES, TMP2 |
| 156 | | | 156 | | |
| 157 | |// Arguments for vm_call and vm_pcall. | 157 | |// Arguments for vm_call and vm_pcall. |
| 158 | |.define INARG_BASE, SAVE_CFRAME // Overwritten by SAVE_CFRAME! | 158 | |.define INARG_BASE, SAVE_CFRAME // Overwritten by SAVE_CFRAME! |
| @@ -201,9 +201,9 @@ | |||
| 201 | |.define CSAVE_1, aword [rsp] //<-- rsp while in interpreter. | 201 | |.define CSAVE_1, aword [rsp] //<-- rsp while in interpreter. |
| 202 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee | 202 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee |
| 203 | | | 203 | | |
| 204 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). | 204 | |// TMPQ overlaps TMP1/TMP2. MULTRES overlaps TMP2 (and TMPQ). |
| 205 | |.define TMPQ, qword [rsp+aword*14] | 205 | |.define TMPQ, qword [rsp+aword*14] |
| 206 | |.define NRESULTS, TMP2 | 206 | |.define MULTRES, TMP2 |
| 207 | |.define TMPa, ARG5 | 207 | |.define TMPa, ARG5 |
| 208 | |.define ARG5d, dword [rsp+aword*4] | 208 | |.define ARG5d, dword [rsp+aword*4] |
| 209 | |.define TMP3, ARG5d | 209 | |.define TMP3, ARG5d |
| @@ -240,10 +240,10 @@ | |||
| 240 | |.define TMP1, dword [rsp] //<-- rsp while in interpreter. | 240 | |.define TMP1, dword [rsp] //<-- rsp while in interpreter. |
| 241 | |//----- 16 byte aligned | 241 | |//----- 16 byte aligned |
| 242 | | | 242 | | |
| 243 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). | 243 | |// TMPQ overlaps TMP1/TMP2. MULTRES overlaps TMP2 (and TMPQ). |
| 244 | |.define TMPQ, qword [rsp] | 244 | |.define TMPQ, qword [rsp] |
| 245 | |.define TMP3, dword [rsp+aword*3] | 245 | |.define TMP3, dword [rsp+aword*3] |
| 246 | |.define NRESULTS, TMP2 | 246 | |.define MULTRES, TMP2 |
| 247 | | | 247 | | |
| 248 | |.endif | 248 | |.endif |
| 249 | | | 249 | | |
| @@ -504,7 +504,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 504 | | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8 | 504 | | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8 |
| 505 | |->vm_returnc: | 505 | |->vm_returnc: |
| 506 | | add RD, 1 // RD = nresults+1 | 506 | | add RD, 1 // RD = nresults+1 |
| 507 | | mov NRESULTS, RD | 507 | | mov MULTRES, RD |
| 508 | | test PC, FRAME_TYPE | 508 | | test PC, FRAME_TYPE |
| 509 | | jz ->BC_RET_Z // Handle regular return to Lua. | 509 | | jz ->BC_RET_Z // Handle regular return to Lua. |
| 510 | | jmp ->vm_return | 510 | | jmp ->vm_return |
| @@ -535,7 +535,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 535 | | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8 | 535 | | add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8 |
| 536 | |->vm_returnc: | 536 | |->vm_returnc: |
| 537 | | add RD, 1 // RD = nresults+1 | 537 | | add RD, 1 // RD = nresults+1 |
| 538 | | mov NRESULTS, RD | 538 | | mov MULTRES, RD |
| 539 | | test PC, FRAME_TYPE | 539 | | test PC, FRAME_TYPE |
| 540 | | jz ->BC_RET_Z // Handle regular return to Lua. | 540 | | jz ->BC_RET_Z // Handle regular return to Lua. |
| 541 | | // Fallthrough. | 541 | | // Fallthrough. |
| @@ -543,7 +543,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 543 | |//-- Return handling (non-inline) --------------------------------------- | 543 | |//-- Return handling (non-inline) --------------------------------------- |
| 544 | | | 544 | | |
| 545 | |->vm_return: | 545 | |->vm_return: |
| 546 | | // BASE = base, RA = resultofs, RD = nresults+1 (= NRESULTS), PC = return | 546 | | // BASE = base, RA = resultofs, RD = nresults+1 (= MULTRES), PC = return |
| 547 | | test PC, FRAME_C | 547 | | test PC, FRAME_C |
| 548 | | jz ->vm_returnp | 548 | | jz ->vm_returnp |
| 549 | | | 549 | | |
| @@ -567,7 +567,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 567 | | mov L:RB, SAVE_L | 567 | | mov L:RB, SAVE_L |
| 568 | | mov L:RB->base, PC | 568 | | mov L:RB->base, PC |
| 569 | |3: | 569 | |3: |
| 570 | | mov RD, NRESULTS | 570 | | mov RD, MULTRES |
| 571 | | mov RA, SAVE_NRES // RA = wanted nresults+1 | 571 | | mov RA, SAVE_NRES // RA = wanted nresults+1 |
| 572 | |4: | 572 | |4: |
| 573 | | cmp RA, RD | 573 | | cmp RA, RD |
| @@ -608,7 +608,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 608 | | // - The GC shrinks the stack in between. | 608 | | // - The GC shrinks the stack in between. |
| 609 | | // - A return back from a lua_call() with (high) nresults adjustment. | 609 | | // - A return back from a lua_call() with (high) nresults adjustment. |
| 610 | | mov L:RB->top, BASE // Save current top held in BASE (yes). | 610 | | mov L:RB->top, BASE // Save current top held in BASE (yes). |
| 611 | | mov NRESULTS, RD // Need to fill only remainder with nil. | 611 | | mov MULTRES, RD // Need to fill only remainder with nil. |
| 612 | | mov FCARG2, RA | 612 | | mov FCARG2, RA |
| 613 | | mov FCARG1, L:RB | 613 | | mov FCARG1, L:RB |
| 614 | | call extern lj_state_growstack@8 // (lua_State *L, int n) | 614 | | call extern lj_state_growstack@8 // (lua_State *L, int n) |
| @@ -649,7 +649,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 649 | | mov PC, [BASE-4] // Fetch PC of previous frame. | 649 | | mov PC, [BASE-4] // Fetch PC of previous frame. |
| 650 | | mov dword [BASE-4], LJ_TFALSE // Prepend false to error message. | 650 | | mov dword [BASE-4], LJ_TFALSE // Prepend false to error message. |
| 651 | | set_vmstate INTERP | 651 | | set_vmstate INTERP |
| 652 | | jmp ->vm_returnc // Increments RD/NRESULTS and returns. | 652 | | jmp ->vm_returnc // Increments RD/MULTRES and returns. |
| 653 | | | 653 | | |
| 654 | |->vm_returnp: | 654 | |->vm_returnp: |
| 655 | | test PC, FRAME_P | 655 | | test PC, FRAME_P |
| @@ -662,7 +662,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 662 | | mov PC, [BASE-4] // Fetch PC of previous frame. | 662 | | mov PC, [BASE-4] // Fetch PC of previous frame. |
| 663 | | // Prepending may overwrite the pcall frame, so do it at the end. | 663 | | // Prepending may overwrite the pcall frame, so do it at the end. |
| 664 | | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results. | 664 | | mov dword [BASE+RA+4], LJ_TTRUE // Prepend true to results. |
| 665 | | jmp ->vm_returnc // Increments RD/NRESULTS and returns. | 665 | | jmp ->vm_returnc // Increments RD/MULTRES and returns. |
| 666 | | | 666 | | |
| 667 | |//-- Grow stack on-demand ----------------------------------------------- | 667 | |//-- Grow stack on-demand ----------------------------------------------- |
| 668 | | | 668 | | |
| @@ -743,7 +743,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 743 | | add RD, 1 // RD = nresults+1 | 743 | | add RD, 1 // RD = nresults+1 |
| 744 | | sub RA, BASE // RA = resultofs | 744 | | sub RA, BASE // RA = resultofs |
| 745 | | mov PC, [BASE-4] | 745 | | mov PC, [BASE-4] |
| 746 | | mov NRESULTS, RD | 746 | | mov MULTRES, RD |
| 747 | | test PC, FRAME_TYPE | 747 | | test PC, FRAME_TYPE |
| 748 | | jz ->BC_RET_Z | 748 | | jz ->BC_RET_Z |
| 749 | | jmp ->vm_return | 749 | | jmp ->vm_return |
| @@ -855,7 +855,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 855 | |//-- Continuation dispatch ---------------------------------------------- | 855 | |//-- Continuation dispatch ---------------------------------------------- |
| 856 | | | 856 | | |
| 857 | |->cont_dispatch: | 857 | |->cont_dispatch: |
| 858 | | // BASE = meta base, RA = resultofs, RD = nresults+1 (also in NRESULTS) | 858 | | // BASE = meta base, RA = resultofs, RD = nresults+1 (also in MULTRES) |
| 859 | | add RA, BASE | 859 | | add RA, BASE |
| 860 | | and PC, -8 | 860 | | and PC, -8 |
| 861 | | mov RB, BASE | 861 | | mov RB, BASE |
| @@ -1356,7 +1356,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 1356 | |.ffunc_1 assert | 1356 | |.ffunc_1 assert |
| 1357 | | mov RB, [RA+4] | 1357 | | mov RB, [RA+4] |
| 1358 | | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback | 1358 | | cmp RB, LJ_TISTRUECOND; jae ->fff_fallback |
| 1359 | | mov NRESULTS, RD | 1359 | | mov MULTRES, RD |
| 1360 | | mov [RA-4], RB | 1360 | | mov [RA-4], RB |
| 1361 | | mov RB, [RA] | 1361 | | mov RB, [RA] |
| 1362 | | mov [RA-8], RB | 1362 | | mov [RA-8], RB |
| @@ -1373,7 +1373,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 1373 | | jnz <1 | 1373 | | jnz <1 |
| 1374 | | mov RA, TMP1 | 1374 | | mov RA, TMP1 |
| 1375 | |2: | 1375 | |2: |
| 1376 | | mov RD, NRESULTS | 1376 | | mov RD, MULTRES |
| 1377 | | jmp ->fff_res_ | 1377 | | jmp ->fff_res_ |
| 1378 | | | 1378 | | |
| 1379 | |.ffunc_1 type | 1379 | |.ffunc_1 type |
| @@ -1807,7 +1807,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 1807 | |.endif | 1807 | |.endif |
| 1808 | |7: | 1808 | |7: |
| 1809 | | mov PC, SAVE_PC | 1809 | | mov PC, SAVE_PC |
| 1810 | | mov NRESULTS, RD | 1810 | | mov MULTRES, RD |
| 1811 | |.if resume | 1811 | |.if resume |
| 1812 | | mov RAa, -8 | 1812 | | mov RAa, -8 |
| 1813 | |.else | 1813 | |.else |
| @@ -1891,7 +1891,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 1891 | |->fff_res1: | 1891 | |->fff_res1: |
| 1892 | | mov RD, 1+1 | 1892 | | mov RD, 1+1 |
| 1893 | |->fff_res: | 1893 | |->fff_res: |
| 1894 | | mov NRESULTS, RD | 1894 | | mov MULTRES, RD |
| 1895 | |->fff_res_: | 1895 | |->fff_res_: |
| 1896 | | test PC, FRAME_TYPE | 1896 | | test PC, FRAME_TYPE |
| 1897 | | jnz >7 | 1897 | | jnz >7 |
| @@ -2528,7 +2528,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 2528 | | mov ARG1, L:RB | 2528 | | mov ARG1, L:RB |
| 2529 | |.endif | 2529 | |.endif |
| 2530 | | call aword CFUNC:RC->f // (lua_State *L) | 2530 | | call aword CFUNC:RC->f // (lua_State *L) |
| 2531 | | // Either throws an error or recovers and returns 0 or NRESULTS (+1). | 2531 | | // Either throws an error or recovers and returns 0 or MULTRES (+1). |
| 2532 | | test RC, RC; jnz >3 | 2532 | | test RC, RC; jnz >3 |
| 2533 | |1: // Returned 0: retry fast path. | 2533 | |1: // Returned 0: retry fast path. |
| 2534 | | mov RA, L:RB->base | 2534 | | mov RA, L:RB->base |
| @@ -2547,7 +2547,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 2547 | | jne ->vmeta_call | 2547 | | jne ->vmeta_call |
| 2548 | | jmp aword LFUNC:RB->gate // Retry the call. | 2548 | | jmp aword LFUNC:RB->gate // Retry the call. |
| 2549 | | | 2549 | | |
| 2550 | |3: // Returned NRESULTS (already in RC/RD). | 2550 | |3: // Returned MULTRES (already in RC/RD). |
| 2551 | | mov RA, L:RB->base | 2551 | | mov RA, L:RB->base |
| 2552 | | mov BASE, TMP1 // Restore old BASE. | 2552 | | mov BASE, TMP1 // Restore old BASE. |
| 2553 | | add BASE, RA | 2553 | | add BASE, RA |
| @@ -2638,7 +2638,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
| 2638 | |->cont_hook: // Continue from hook yield. | 2638 | |->cont_hook: // Continue from hook yield. |
| 2639 | | add PC, 4 | 2639 | | add PC, 4 |
| 2640 | | mov RA, [RB-24] | 2640 | | mov RA, [RB-24] |
| 2641 | | mov NRESULTS, RA // Restore NRESULTS for *M ins. | 2641 | | mov MULTRES, RA // Restore MULTRES for *M ins. |
| 2642 | | jmp <4 | 2642 | | jmp <4 |
| 2643 | | | 2643 | | |
| 2644 | |->vm_hotloop: // Hot loop counter underflow. | 2644 | |->vm_hotloop: // Hot loop counter underflow. |
| @@ -4345,7 +4345,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4345 | | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table) | 4345 | | test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table) |
| 4346 | | jnz >7 | 4346 | | jnz >7 |
| 4347 | |2: | 4347 | |2: |
| 4348 | | mov RD, NRESULTS | 4348 | | mov RD, MULTRES |
| 4349 | if (sse) { | 4349 | if (sse) { |
| 4350 | | cvtsd2si KBASE, xmm0 // Const is guaranteed to be an int. | 4350 | | cvtsd2si KBASE, xmm0 // Const is guaranteed to be an int. |
| 4351 | } else { | 4351 | } else { |
| @@ -4404,7 +4404,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4404 | case BC_CALL: case BC_CALLM: | 4404 | case BC_CALL: case BC_CALLM: |
| 4405 | | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs | 4405 | | ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs |
| 4406 | if (op == BC_CALLM) { | 4406 | if (op == BC_CALLM) { |
| 4407 | | add NARGS:RC, NRESULTS | 4407 | | add NARGS:RC, MULTRES |
| 4408 | } | 4408 | } |
| 4409 | | lea RA, [BASE+RA*8+8] | 4409 | | lea RA, [BASE+RA*8+8] |
| 4410 | | mov LFUNC:RB, [RA-8] | 4410 | | mov LFUNC:RB, [RA-8] |
| @@ -4415,7 +4415,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4415 | 4415 | ||
| 4416 | case BC_CALLMT: | 4416 | case BC_CALLMT: |
| 4417 | | ins_AD // RA = base, RD = extra_nargs | 4417 | | ins_AD // RA = base, RD = extra_nargs |
| 4418 | | add NARGS:RD, NRESULTS | 4418 | | add NARGS:RD, MULTRES |
| 4419 | | // Fall through. Assumes BC_CALLMT follows and ins_AD is a no-op. | 4419 | | // Fall through. Assumes BC_CALLMT follows and ins_AD is a no-op. |
| 4420 | break; | 4420 | break; |
| 4421 | case BC_CALLT: | 4421 | case BC_CALLT: |
| @@ -4431,7 +4431,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4431 | | jnz >7 | 4431 | | jnz >7 |
| 4432 | |1: | 4432 | |1: |
| 4433 | | mov [BASE-8], LFUNC:RB // Copy function down, reloaded below. | 4433 | | mov [BASE-8], LFUNC:RB // Copy function down, reloaded below. |
| 4434 | | mov NRESULTS, NARGS:RD | 4434 | | mov MULTRES, NARGS:RD |
| 4435 | | sub NARGS:RD, 1 | 4435 | | sub NARGS:RD, 1 |
| 4436 | | jz >3 | 4436 | | jz >3 |
| 4437 | |2: | 4437 | |2: |
| @@ -4450,7 +4450,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4450 | | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function? | 4450 | | cmp byte LFUNC:RB->ffid, 1 // (> FF_C) Calling a fast function? |
| 4451 | | ja >5 | 4451 | | ja >5 |
| 4452 | |4: | 4452 | |4: |
| 4453 | | mov NARGS:RD, NRESULTS | 4453 | | mov NARGS:RD, MULTRES |
| 4454 | | jmp aword LFUNC:RB->gate | 4454 | | jmp aword LFUNC:RB->gate |
| 4455 | | | 4455 | | |
| 4456 | |5: // Tailcall to a fast function. | 4456 | |5: // Tailcall to a fast function. |
| @@ -4530,14 +4530,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4530 | | ins_next | 4530 | | ins_next |
| 4531 | | | 4531 | | |
| 4532 | |5: // Copy all varargs. | 4532 | |5: // Copy all varargs. |
| 4533 | | mov NRESULTS, 1 // NRESULTS = 0+1 | 4533 | | mov MULTRES, 1 // MULTRES = 0+1 |
| 4534 | | mov RC, BASE | 4534 | | mov RC, BASE |
| 4535 | | sub RC, KBASE | 4535 | | sub RC, KBASE |
| 4536 | | jbe <3 // No vararg slots? | 4536 | | jbe <3 // No vararg slots? |
| 4537 | | mov RB, RC | 4537 | | mov RB, RC |
| 4538 | | shr RB, 3 | 4538 | | shr RB, 3 |
| 4539 | | add RB, 1 | 4539 | | add RB, 1 |
| 4540 | | mov NRESULTS, RB // NRESULTS = #varargs+1 | 4540 | | mov MULTRES, RB // MULTRES = #varargs+1 |
| 4541 | | mov L:RB, SAVE_L | 4541 | | mov L:RB, SAVE_L |
| 4542 | | add RC, RA | 4542 | | add RC, RA |
| 4543 | | cmp RC, L:RB->maxstack | 4543 | | cmp RC, L:RB->maxstack |
| @@ -4558,7 +4558,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4558 | | mov L:RB->top, RA | 4558 | | mov L:RB->top, RA |
| 4559 | | mov SAVE_PC, PC | 4559 | | mov SAVE_PC, PC |
| 4560 | | sub KBASE, BASE // Need delta, because BASE may change. | 4560 | | sub KBASE, BASE // Need delta, because BASE may change. |
| 4561 | | mov FCARG2, NRESULTS | 4561 | | mov FCARG2, MULTRES |
| 4562 | | sub FCARG2, 1 | 4562 | | sub FCARG2, 1 |
| 4563 | | mov FCARG1, L:RB | 4563 | | mov FCARG1, L:RB |
| 4564 | | call extern lj_state_growstack@8 // (lua_State *L, int n) | 4564 | | call extern lj_state_growstack@8 // (lua_State *L, int n) |
| @@ -4572,7 +4572,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4572 | 4572 | ||
| 4573 | case BC_RETM: | 4573 | case BC_RETM: |
| 4574 | | ins_AD // RA = results, RD = extra_nresults | 4574 | | ins_AD // RA = results, RD = extra_nresults |
| 4575 | | add RD, NRESULTS // NRESULTS >=1, so RD >=1. | 4575 | | add RD, MULTRES // MULTRES >=1, so RD >=1. |
| 4576 | | // Fall through. Assumes BC_RET follows and ins_AD is a no-op. | 4576 | | // Fall through. Assumes BC_RET follows and ins_AD is a no-op. |
| 4577 | break; | 4577 | break; |
| 4578 | 4578 | ||
| @@ -4583,7 +4583,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4583 | } | 4583 | } |
| 4584 | |1: | 4584 | |1: |
| 4585 | | mov PC, [BASE-4] | 4585 | | mov PC, [BASE-4] |
| 4586 | | mov NRESULTS, RD // Save nresults+1. | 4586 | | mov MULTRES, RD // Save nresults+1. |
| 4587 | | test PC, FRAME_TYPE // Check frame type marker. | 4587 | | test PC, FRAME_TYPE // Check frame type marker. |
| 4588 | | jnz >7 // Not returning to a fixarg Lua func? | 4588 | | jnz >7 // Not returning to a fixarg Lua func? |
| 4589 | switch (op) { | 4589 | switch (op) { |
| @@ -4601,7 +4601,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
| 4601 | | sub RD, 1 | 4601 | | sub RD, 1 |
| 4602 | | jnz <2 | 4602 | | jnz <2 |
| 4603 | |3: | 4603 | |3: |
| 4604 | | mov RD, NRESULTS // Note: NRESULTS may be >255. | 4604 | | mov RD, MULTRES // Note: MULTRES may be >255. |
| 4605 | | movzx RB, PC_RB // So cannot compare with RDL! | 4605 | | movzx RB, PC_RB // So cannot compare with RDL! |
| 4606 | |5: | 4606 | |5: |
| 4607 | | cmp RB, RD // More results expected? | 4607 | | cmp RB, RD // More results expected? |
