diff options
| author | Mike Pall <mike> | 2011-04-04 01:49:24 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2011-04-04 01:49:24 +0200 |
| commit | 0e7009ddc82c7c1e87041997de87143e6c9e46f6 (patch) | |
| tree | 1b60bb0de6e95eb4c6ed87c040563973817f42d2 /src | |
| parent | 81fa9e34cd5df0a4367f24a717cf6c428be56667 (diff) | |
| download | luajit-0e7009ddc82c7c1e87041997de87143e6c9e46f6.tar.gz luajit-0e7009ddc82c7c1e87041997de87143e6c9e46f6.tar.bz2 luajit-0e7009ddc82c7c1e87041997de87143e6c9e46f6.zip | |
ARM: Add table constructors.
Diffstat (limited to 'src')
| -rw-r--r-- | src/buildvm_arm.dasc | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc index 8b345f8f..3723eeb9 100644 --- a/src/buildvm_arm.dasc +++ b/src/buildvm_arm.dasc | |||
| @@ -1188,7 +1188,41 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
| 1188 | 1188 | ||
| 1189 | case BC_TNEW: | 1189 | case BC_TNEW: |
| 1190 | case BC_TDUP: | 1190 | case BC_TDUP: |
| 1191 | | NYI | 1191 | | // RA = dst*8, RC = (hbits|asize) | tab_const (~) |
| 1192 | if (op == BC_TDUP) { | ||
| 1193 | | mvn RC, RC | ||
| 1194 | } | ||
| 1195 | | ldr CARG3, [DISPATCH, #DISPATCH_GL(gc.total)] | ||
| 1196 | | ldr CARG4, [DISPATCH, #DISPATCH_GL(gc.threshold)] | ||
| 1197 | | str BASE, L->base | ||
| 1198 | | str PC, SAVE_PC | ||
| 1199 | | cmp CARG3, CARG4 | ||
| 1200 | | bhs >5 | ||
| 1201 | |1: | ||
| 1202 | | mov CARG1, L | ||
| 1203 | if (op == BC_TNEW) { | ||
| 1204 | | lsl CARG2, RC, #21 | ||
| 1205 | | lsr CARG3, RC, #11 | ||
| 1206 | | asr RC, CARG2, #21 | ||
| 1207 | | lsr CARG2, CARG2, #21 | ||
| 1208 | | cmn RC, #1 | ||
| 1209 | | addeq CARG2, CARG2, #2 | ||
| 1210 | | bl extern lj_tab_new // (lua_State *L, int32_t asize, uint32_t hbits) | ||
| 1211 | | // Returns GCtab *. | ||
| 1212 | } else { | ||
| 1213 | | ldr CARG2, [KBASE, RC, lsl #2] | ||
| 1214 | | bl extern lj_tab_dup // (lua_State *L, Table *kt) | ||
| 1215 | | // Returns GCtab *. | ||
| 1216 | } | ||
| 1217 | | ldr BASE, L->base | ||
| 1218 | | mvn CARG2, #~LJ_TTAB | ||
| 1219 | | ins_next1 | ||
| 1220 | | ins_next2 | ||
| 1221 | | strd CARG12, [BASE, RA] | ||
| 1222 | | ins_next3 | ||
| 1223 | |5: | ||
| 1224 | | bl extern lj_gc_step_fixtop // (lua_State *L) | ||
| 1225 | | b <1 | ||
| 1192 | break; | 1226 | break; |
| 1193 | 1227 | ||
| 1194 | case BC_GGET: | 1228 | case BC_GGET: |
