aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-09 01:06:55 +0200
committerMike Pall <mike>2010-09-09 01:06:55 +0200
commitec8f2918ba594fdf6f13f9f01bf1721b8c3658a8 (patch)
treee2090bc5d65017fe5236ea571e04cade71b72137 /src
parentb2aa08c75c82e19e9522ba21438f8ed7632f524d (diff)
downloadluajit-ec8f2918ba594fdf6f13f9f01bf1721b8c3658a8.tar.gz
luajit-ec8f2918ba594fdf6f13f9f01bf1721b8c3658a8.tar.bz2
luajit-ec8f2918ba594fdf6f13f9f01bf1721b8c3658a8.zip
PPC: Add closure-related instructions.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index 9c5bc437..d0c66c1f 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -1389,12 +1389,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
1389 case BC_USETP: 1389 case BC_USETP:
1390 | NYI 1390 | NYI
1391 break; 1391 break;
1392
1392 case BC_UCLO: 1393 case BC_UCLO:
1393 | NYI 1394 | // RA = level*8, RD = target
1395 | lwz TMP1, L->openupval
1396 | branch_RD // Do this first since RD is not saved.
1397 | stw BASE, L->base
1398 | cmplwi TMP1, 0
1399 | mr CARG1, L
1400 | beq >1
1401 | add CARG2, BASE, RA
1402 | bl extern lj_func_closeuv // (lua_State *L, TValue *level)
1403 | lwz BASE, L->base
1404 |1:
1405 | ins_next
1394 break; 1406 break;
1395 1407
1396 case BC_FNEW: 1408 case BC_FNEW:
1397 | NYI 1409 | // RA = dst*8, RD = proto_const*8 (~) (holding function prototype)
1410 | srwi TMP1, RD, 1
1411 | stw BASE, L->base
1412 | subfic TMP1, TMP1, -4
1413 | stw PC, SAVE_PC
1414 | lwzx CARG2, KBASE, TMP1 // KBASE-4-tab_const*4
1415 | mr CARG1, L
1416 | lwz CARG3, FRAME_FUNC(BASE)
1417 | // (lua_State *L, GCproto *pt, GCfuncL *parent)
1418 | bl extern lj_func_newL_gc
1419 | // Returns GCfuncL *.
1420 | lwz BASE, L->base
1421 | evmergelo LFUNC:CRET1, TISFUNC, LFUNC:CRET1
1422 | evstddx LFUNC:CRET1, BASE, RA
1423 | ins_next
1398 break; 1424 break;
1399 1425
1400 /* -- Table ops --------------------------------------------------------- */ 1426 /* -- Table ops --------------------------------------------------------- */