aboutsummaryrefslogtreecommitdiff
path: root/src/vm_mips64.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm_mips64.dasc')
-rw-r--r--src/vm_mips64.dasc36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/vm_mips64.dasc b/src/vm_mips64.dasc
index 05395ffd..0d28326a 100644
--- a/src/vm_mips64.dasc
+++ b/src/vm_mips64.dasc
@@ -1322,27 +1322,24 @@ static void build_subroutines(BuildCtx *ctx)
1322 |//-- Base library: iterators ------------------------------------------- 1322 |//-- Base library: iterators -------------------------------------------
1323 | 1323 |
1324 |.ffunc_1 next 1324 |.ffunc_1 next
1325 | checktp CARG2, CARG1, -LJ_TTAB, ->fff_fallback 1325 | checktp CARG1, -LJ_TTAB, ->fff_fallback
1326 | daddu TMP2, BASE, NARGS8:RC 1326 | daddu TMP2, BASE, NARGS8:RC
1327 | sd TISNIL, 0(TMP2) // Set missing 2nd arg to nil. 1327 | sd TISNIL, 0(TMP2) // Set missing 2nd arg to nil.
1328 | ld PC, FRAME_PC(BASE)
1329 | load_got lj_tab_next 1328 | load_got lj_tab_next
1330 | sd BASE, L->base // Add frame since C call can throw. 1329 | ld PC, FRAME_PC(BASE)
1331 | sd BASE, L->top // Dummy frame length is ok. 1330 | daddiu CARG2, BASE, 8
1332 | daddiu CARG3, BASE, 8 1331 | call_intern lj_tab_next // (GCtab *t, cTValue *key, TValue *o)
1333 | sd PC, SAVE_PC 1332 |. daddiu CARG3, BASE, -16
1334 | call_intern lj_tab_next // (lua_State *L, GCtab *t, TValue *key) 1333 | // Returns 1=found, 0=end, -1=error.
1335 |. move CARG1, L 1334 | daddiu RA, BASE, -16
1336 | // Returns 0 at end of traversal. 1335 | bgtz CRET1, ->fff_res // Found key/value.
1336 |. li RD, (2+1)*8
1337 | beqz CRET1, ->fff_restv // End of traversal: return nil. 1337 | beqz CRET1, ->fff_restv // End of traversal: return nil.
1338 |. move CARG1, TISNIL 1338 |. move CARG1, TISNIL
1339 | ld TMP0, 8(BASE) 1339 | ld CFUNC:RB, FRAME_FUNC(BASE)
1340 | daddiu RA, BASE, -16 1340 | cleartp CFUNC:RB
1341 | ld TMP2, 16(BASE) 1341 | b ->fff_fallback // Invalid key.
1342 | sd TMP0, 0(RA) 1342 |. li RC, 2*8
1343 | sd TMP2, 8(RA)
1344 | b ->fff_res
1345 |. li RD, (2+1)*8
1346 | 1343 |
1347 |.ffunc_1 pairs 1344 |.ffunc_1 pairs
1348 | checktp TAB:TMP1, CARG1, -LJ_TTAB, ->fff_fallback 1345 | checktp TAB:TMP1, CARG1, -LJ_TTAB, ->fff_fallback
@@ -4727,11 +4724,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4727 |. addiu RC, RC, 1 4724 |. addiu RC, RC, 1
4728 | sd TMP2, 0(RA) 4725 | sd TMP2, 0(RA)
4729 | sd CARG1, 8(RA) 4726 | sd CARG1, 8(RA)
4730 | or TMP0, RC, CARG3
4731 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535) 4727 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535)
4732 | decode_RD4b RD 4728 | decode_RD4b RD
4733 | daddu RD, RD, TMP3 4729 | daddu RD, RD, TMP3
4734 | sw TMP0, -8+LO(RA) // Update control var. 4730 | sw RC, -8+LO(RA) // Update control var.
4735 | daddu PC, PC, RD 4731 | daddu PC, PC, RD
4736 |3: 4732 |3:
4737 | ins_next 4733 | ins_next
@@ -4781,9 +4777,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4781 | daddiu TMP1, TMP1, -FF_next_N 4777 | daddiu TMP1, TMP1, -FF_next_N
4782 | or AT, AT, TMP1 4778 | or AT, AT, TMP1
4783 | bnez AT, >5 4779 | bnez AT, >5
4784 |. lui TMP1, 0xfffe 4780 |. lui TMP1, (LJ_KEYINDEX >> 16)
4785 | daddu PC, TMP0, TMP2 4781 | daddu PC, TMP0, TMP2
4786 | ori TMP1, TMP1, 0x7fff 4782 | ori TMP1, TMP1, (LJ_KEYINDEX & 0xffff)
4787 | dsll TMP1, TMP1, 32 4783 | dsll TMP1, TMP1, 32
4788 | sd TMP1, -8(RA) 4784 | sd TMP1, -8(RA)
4789 |1: 4785 |1: