diff options
Diffstat (limited to 'src/buildvm_x86.dasc')
-rw-r--r-- | src/buildvm_x86.dasc | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index d7c36d90..598fe087 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc | |||
@@ -4442,13 +4442,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
4442 | break; | 4442 | break; |
4443 | 4443 | ||
4444 | case BC_VARG: | 4444 | case BC_VARG: |
4445 | | ins_AB_ // RA = base, RB = nresults+1, (RC = 1) | 4445 | | ins_ABC // RA = base, RB = nresults+1, RC = numparams |
4446 | | mov LFUNC:RC, [BASE-8] | ||
4447 | | lea RA, [BASE+RA*8] | ||
4448 | | mov RC, LFUNC:RC->pc | ||
4449 | | movzx RC, byte [RC+PC2PROTO(numparams)] | ||
4450 | | mov TMP1, KBASE // Need one more free register. | 4446 | | mov TMP1, KBASE // Need one more free register. |
4451 | | lea KBASE, [BASE+RC*8+(8+FRAME_VARG)] | 4447 | | lea KBASE, [BASE+RC*8+(8+FRAME_VARG)] |
4448 | | lea RA, [BASE+RA*8] | ||
4452 | | sub KBASE, [BASE-4] | 4449 | | sub KBASE, [BASE-4] |
4453 | | // Note: KBASE may now be even _above_ BASE if nargs was < numparams. | 4450 | | // Note: KBASE may now be even _above_ BASE if nargs was < numparams. |
4454 | | test RB, RB | 4451 | | test RB, RB |