aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-09-05 18:34:38 +0200
committerMike Pall <mike>2011-09-05 20:22:55 +0200
commitae3317b186f8782aa282a78e8a57c2130ddeb3f7 (patch)
tree84bc0d888755f54415f03287c9701fe1b47b0485 /src
parentbab2f0efaec441599837e82a9311b63831673faf (diff)
downloadluajit-ae3317b186f8782aa282a78e8a57c2130ddeb3f7.tar.gz
luajit-ae3317b186f8782aa282a78e8a57c2130ddeb3f7.tar.bz2
luajit-ae3317b186f8782aa282a78e8a57c2130ddeb3f7.zip
PPC: Interpreter/JIT integration.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc186
-rw-r--r--src/buildvm_ppc.h1262
2 files changed, 955 insertions, 493 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index bbe5c741..bc2382ac 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -16,7 +16,7 @@
16|//----------------------------------------------------------------------- 16|//-----------------------------------------------------------------------
17| 17|
18|// Fixed register assignments for the interpreter. 18|// Fixed register assignments for the interpreter.
19|// Don't use: r1 = sp, r2 and r13 = reserved and/or small data area ptr 19|// Don't use: r1 = sp, r2 and r13 = reserved (TOC, TLS or SDATA)
20| 20|
21|// The following must be C callee-save (but BASE is often refetched). 21|// The following must be C callee-save (but BASE is often refetched).
22|.define BASE, r14 // Base of current Lua stack frame. 22|.define BASE, r14 // Base of current Lua stack frame.
@@ -25,6 +25,8 @@
25|.define DISPATCH, r17 // Opcode dispatch table. 25|.define DISPATCH, r17 // Opcode dispatch table.
26|.define LREG, r18 // Register holding lua_State (also in SAVE_L). 26|.define LREG, r18 // Register holding lua_State (also in SAVE_L).
27|.define MULTRES, r19 // Size of multi-result: (nresults+1)*8. 27|.define MULTRES, r19 // Size of multi-result: (nresults+1)*8.
28|.define JGL, r30 // On-trace: global_State + 32768.
29|.define JTR, r31 // On-trace: trace number.
28| 30|
29|// Constants for type-comparisons, stores and conversions. C callee-save. 31|// Constants for type-comparisons, stores and conversions. C callee-save.
30|.define TISNUM, r22 32|.define TISNUM, r22
@@ -267,12 +269,21 @@
267| 269|
268#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto)) 270#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto))
269| 271|
272|.macro hotcheck, delta, target
273| rlwinm TMP1, PC, 31, 25, 30
274| addi TMP1, TMP1, GG_DISP2HOT
275| lhzx TMP2, DISPATCH, TMP1
276| addic. TMP2, TMP2, -delta
277| sthx TMP2, DISPATCH, TMP1
278| blt target
279|.endmacro
280|
270|.macro hotloop 281|.macro hotloop
271| NYI 282| hotcheck HOTCOUNT_LOOP, ->vm_hotloop
272|.endmacro 283|.endmacro
273| 284|
274|.macro hotcall 285|.macro hotcall
275| NYI 286| hotcheck HOTCOUNT_CALL, ->vm_hotcall
276|.endmacro 287|.endmacro
277| 288|
278|// Set current VM state. Uses TMP0. 289|// Set current VM state. Uses TMP0.
@@ -2202,7 +2213,18 @@ static void build_subroutines(BuildCtx *ctx)
2202 | 2213 |
2203 |->vm_record: // Dispatch target for recording phase. 2214 |->vm_record: // Dispatch target for recording phase.
2204#if LJ_HASJIT 2215#if LJ_HASJIT
2205 | NYI 2216 | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH)
2217 | andi. TMP0, TMP3, HOOK_VMEVENT // No recording while in vmevent.
2218 | bne >5
2219 | // Decrement the hookcount for consistency, but always do the call.
2220 | lwz TMP2, DISPATCH_GL(hookcount)(DISPATCH)
2221 | andi. TMP0, TMP3, HOOK_ACTIVE
2222 | bne >1
2223 | subi TMP2, TMP2, 1
2224 | andi. TMP0, TMP3, LUA_MASKLINE|LUA_MASKCOUNT
2225 | beqy >1
2226 | stw TMP2, DISPATCH_GL(hookcount)(DISPATCH)
2227 | b >1
2206#endif 2228#endif
2207 | 2229 |
2208 |->vm_rethook: // Dispatch target for return hooks. 2230 |->vm_rethook: // Dispatch target for return hooks.
@@ -2256,7 +2278,19 @@ static void build_subroutines(BuildCtx *ctx)
2256 | 2278 |
2257 |->vm_hotloop: // Hot loop counter underflow. 2279 |->vm_hotloop: // Hot loop counter underflow.
2258#if LJ_HASJIT 2280#if LJ_HASJIT
2259 | NYI 2281 | lwz LFUNC:TMP1, FRAME_FUNC(BASE)
2282 | addi CARG1, DISPATCH, GG_DISP2J
2283 | stw PC, SAVE_PC
2284 | lwz TMP1, LFUNC:TMP1->pc
2285 | mr CARG2, PC
2286 | stw L, DISPATCH_J(L)(DISPATCH)
2287 | lbz TMP1, PC2PROTO(framesize)(TMP1)
2288 | stw BASE, L->base
2289 | slwi TMP1, TMP1, 3
2290 | add TMP1, BASE, TMP1
2291 | stw TMP1, L->top
2292 | bl extern lj_trace_hot // (jit_State *J, const BCIns *pc)
2293 | b <3
2260#endif 2294#endif
2261 | 2295 |
2262 |->vm_callhook: // Dispatch target for call hooks. 2296 |->vm_callhook: // Dispatch target for call hooks.
@@ -2291,13 +2325,111 @@ static void build_subroutines(BuildCtx *ctx)
2291 |//-- Trace exit handler ------------------------------------------------- 2325 |//-- Trace exit handler -------------------------------------------------
2292 |//----------------------------------------------------------------------- 2326 |//-----------------------------------------------------------------------
2293 | 2327 |
2328 |.macro savex_, a, b, c, d
2329 | stfd f..a, 16+a*8(sp)
2330 | stfd f..b, 16+b*8(sp)
2331 | stfd f..c, 16+c*8(sp)
2332 | stfd f..d, 16+d*8(sp)
2333 |.endmacro
2334 |
2294 |->vm_exit_handler: 2335 |->vm_exit_handler:
2295#if LJ_HASJIT 2336#if LJ_HASJIT
2296 | NYI 2337 | addi sp, sp, -(16+32*8+32*4)
2338 | stmw r2, 16+32*8+2*4(sp)
2339 | addi DISPATCH, JGL, -GG_DISP2G-32768
2340 | li CARG2, ~LJ_VMST_EXIT
2341 | lwz CARG1, 16+32*8+32*4(sp) // Get stack chain.
2342 | stw CARG2, DISPATCH_GL(vmstate)(DISPATCH)
2343 | savex_ 0,1,2,3
2344 | stw CARG1, 0(sp) // Store extended stack chain.
2345 | mcrxr cr0 // Clear SO flag.
2346 | savex_ 4,5,6,7
2347 | addi CARG2, sp, 16+32*8+32*4 // Recompute original value of sp.
2348 | savex_ 8,9,10,11
2349 | stw CARG2, 16+32*8+1*4(sp) // Store sp in RID_SP.
2350 | savex_ 12,13,14,15
2351 | mflr CARG3
2352 | li TMP1, 0
2353 | savex_ 16,17,18,19
2354 | stw TMP1, 16+32*8+0*4(sp) // Clear RID_TMP.
2355 | savex_ 20,21,22,23
2356 | lwz CARG4, 0(CARG3) // Load exit stub group offset.
2357 | savex_ 24,25,26,27
2358 | lwz L, DISPATCH_GL(jit_L)(DISPATCH)
2359 | savex_ 28,29,30,31
2360 | sub CARG3, TMP0, CARG3 // Compute exit number.
2361 | lwz BASE, DISPATCH_GL(jit_base)(DISPATCH)
2362 | srwi CARG3, CARG3, 2
2363 | stw L, DISPATCH_J(L)(DISPATCH)
2364 | subi CARG3, CARG3, 2
2365 | stw TMP1, DISPATCH_GL(jit_L)(DISPATCH)
2366 | add CARG3, CARG4, CARG3
2367 | stw BASE, L->base
2368 | addi CARG1, DISPATCH, GG_DISP2J
2369 | stw CARG3, DISPATCH_J(exitno)(DISPATCH)
2370 | addi CARG2, sp, 16
2371 | stw JTR, DISPATCH_J(parent)(DISPATCH)
2372 | bl extern lj_trace_exit // (jit_State *J, ExitState *ex)
2373 | // Returns MULTRES (unscaled) or negated error code.
2374 | lwz TMP1, L->cframe
2375 | lwz TMP2, 0(sp)
2376 | lwz BASE, L->base
2377 | rlwinm sp, TMP1, 0, 0, 29
2378 | lwz PC, SAVE_PC // Get SAVE_PC.
2379 | stw TMP2, 0(sp)
2380 | stw L, SAVE_L // Set SAVE_L (on-trace resume/yield).
2381 | b >1
2297#endif 2382#endif
2298 |->vm_exit_interp: 2383 |->vm_exit_interp:
2299#if LJ_HASJIT 2384#if LJ_HASJIT
2300 | NYI 2385 | // CARG1 = MULTRES or negated error code, BASE, PC and JGL set.
2386 | lwz L, SAVE_L
2387 | addi DISPATCH, JGL, -GG_DISP2G-32768
2388 |1:
2389 | cmpwi CARG1, 0
2390 | blt >3 // Check for error from exit.
2391 | lwz LFUNC:TMP1, FRAME_FUNC(BASE)
2392 | slwi MULTRES, CARG1, 3
2393 | li TMP2, 0
2394 | stw MULTRES, SAVE_MULTRES
2395 | lwz TMP1, LFUNC:TMP1->pc
2396 | stw TMP2, DISPATCH_GL(jit_L)(DISPATCH)
2397 | lwz KBASE, PC2PROTO(k)(TMP1)
2398 | // Setup type comparison constants.
2399 | li TISNUM, LJ_TISNUM
2400 | lus TMP3, 0x59c0 // TOBIT = 2^52 + 2^51 (float).
2401 | stw TMP3, TMPD
2402 | li ZERO, 0
2403 | ori TMP3, TMP3, 0x0004 // TONUM = 2^52 + 2^51 + 2^31 (float).
2404 | lfs TOBIT, TMPD
2405 | stw TMP3, TMPD
2406 | lus TMP0, 0x4338 // Hiword of 2^52 + 2^51 (double)
2407 | li TISNIL, LJ_TNIL
2408 | stw TMP0, TONUM_HI
2409 | lfs TONUM, TMPD
2410 | // Modified copy of ins_next which handles function header dispatch, too.
2411 | lwz INS, 0(PC)
2412 | addi PC, PC, 4
2413 | // Assumes TISNIL == ~LJ_VMST_INTERP == -1.
2414 | stw TISNIL, DISPATCH_GL(vmstate)(DISPATCH)
2415 | decode_OP4 TMP1, INS
2416 | decode_RA8 RA, INS
2417 | lwzx TMP0, DISPATCH, TMP1
2418 | mtctr TMP0
2419 | cmpwi TMP1, BC_FUNCF*4 // Function header?
2420 | beq >2
2421 | decode_RB8 RB, INS
2422 | decode_RD8 RD, INS
2423 | decode_RC8 RC, INS
2424 | bctr
2425 |2:
2426 | add RA, RA, BASE
2427 | bctr
2428 |
2429 |3: // Rethrow error from the right C frame.
2430 | neg CARG2, CARG1
2431 | mr CARG1, L
2432 | bl extern lj_err_throw // (lua_State *L, int errcode)
2301#endif 2433#endif
2302 | 2434 |
2303 |//----------------------------------------------------------------------- 2435 |//-----------------------------------------------------------------------
@@ -2368,7 +2500,24 @@ static void build_subroutines(BuildCtx *ctx)
2368 |1: 2500 |1:
2369 | fabs FARG1, FARG1; blr 2501 | fabs FARG1, FARG1; blr
2370 |2: 2502 |2:
2503#if LJ_HASJIT
2504 | cmplwi CARG1, 9; beq >9; bgt >2
2505 | b extern atan2
2506 | // No support needed for IR_LDEXP.
2507 |2:
2508 | cmplwi CARG1, 11; bgt >9
2509 | fsub f0, FARG1, FARG2
2510 | beq >1
2511 | fsel FARG1, f0, FARG2, FARG1 // IR_MAX
2512 | blr
2513 |1:
2514 | fsel FARG1, f0, FARG1, FARG2 // IR_MIN
2515 | blr
2516 |9:
2517 | NYI // Bad op.
2518#else
2371 | NYI // Other operations only needed by JIT compiler. 2519 | NYI // Other operations only needed by JIT compiler.
2520#endif
2372 | 2521 |
2373 |//----------------------------------------------------------------------- 2522 |//-----------------------------------------------------------------------
2374 |//-- Miscellaneous functions -------------------------------------------- 2523 |//-- Miscellaneous functions --------------------------------------------
@@ -4309,7 +4458,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4309 | lwz TMP2, 4(RA) 4458 | lwz TMP2, 4(RA)
4310 | checknil TMP1; beq >1 // Stop if iterator returned nil. 4459 | checknil TMP1; beq >1 // Stop if iterator returned nil.
4311 if (op == BC_JITERL) { 4460 if (op == BC_JITERL) {
4312 | NYI 4461 | stw TMP1, -8(RA)
4462 | stw TMP2, -4(RA)
4463 | b =>BC_JLOOP
4313 } else { 4464 } else {
4314 | branch_RD // Otherwise save control var + branch. 4465 | branch_RD // Otherwise save control var + branch.
4315 | stw TMP1, -8(RA) 4466 | stw TMP1, -8(RA)
@@ -4336,7 +4487,17 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4336 4487
4337 case BC_JLOOP: 4488 case BC_JLOOP:
4338#if LJ_HASJIT 4489#if LJ_HASJIT
4339 | NYI 4490 | // RA = base*8 (ignored), RD = traceno*8
4491 | lwz TMP1, DISPATCH_J(trace)(DISPATCH)
4492 | srwi RD, RD, 1
4493 | lwzx TRACE:TMP2, TMP1, RD
4494 | mcrxr cr0 // Clear SO flag.
4495 | lwz TMP2, TRACE:TMP2->mcode
4496 | stw BASE, DISPATCH_GL(jit_base)(DISPATCH)
4497 | mtctr TMP2
4498 | stw L, DISPATCH_GL(jit_L)(DISPATCH)
4499 | addi JGL, DISPATCH, GG_DISP2G+32768
4500 | bctr
4340#endif 4501#endif
4341 break; 4502 break;
4342 4503
@@ -4368,12 +4529,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4368 | cmplw RA, TMP2 4529 | cmplw RA, TMP2
4369 | slwi TMP1, TMP1, 3 4530 | slwi TMP1, TMP1, 3
4370 | bgt ->vm_growstack_l 4531 | bgt ->vm_growstack_l
4371 | ins_next1 4532 if (op != BC_JFUNCF) {
4533 | ins_next1
4534 }
4372 |2: 4535 |2:
4373 | cmplw NARGS8:RC, TMP1 // Check for missing parameters. 4536 | cmplw NARGS8:RC, TMP1 // Check for missing parameters.
4374 | ble >3 4537 | ble >3
4375 if (op == BC_JFUNCF) { 4538 if (op == BC_JFUNCF) {
4376 | NYI 4539 | decode_RD8 RD, INS
4540 | b =>BC_JLOOP
4377 } else { 4541 } else {
4378 | ins_next2 4542 | ins_next2
4379 } 4543 }
diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h
index 87a838fd..af217215 100644
--- a/src/buildvm_ppc.h
+++ b/src/buildvm_ppc.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned int build_actionlist[7267] = { 15static const unsigned int build_actionlist[7562] = {
160x00010001, 160x00010001,
170x00060014, 170x00060014,
180x72000000, 180x72000000,
@@ -38,7 +38,7 @@ static const unsigned int build_actionlist[7267] = {
380x38000000, 380x38000000,
390x00098200, 390x00098200,
400x7d297050, 400x7d297050,
410x40820000, 410x40a20000,
420x00050814, 420x00050814,
430x350cfff8, 430x350cfff8,
440x91320000, 440x91320000,
@@ -57,7 +57,7 @@ static const unsigned int build_actionlist[7267] = {
570x3a940008, 570x3a940008,
580xd80e0000, 580xd80e0000,
590x39ce0008, 590x39ce0008,
600x40820000, 600x40a20000,
610x0005080b, 610x0005080b,
620x0006000c, 620x0006000c,
630x7c096000, 630x7c096000,
@@ -779,7 +779,7 @@ static const unsigned int build_actionlist[7267] = {
7790x7ca82050, 7790x7ca82050,
7800x54f4dd78, 7800x54f4dd78,
7810xd8040000, 7810xd8040000,
7820x40820000, 7820x40a20000,
7830x0005082a, 7830x0005082a,
7840x7c0ea5ae, 7840x7c0ea5ae,
7850x48000000, 7850x48000000,
@@ -1174,7 +1174,7 @@ static const unsigned int build_actionlist[7267] = {
11740x00000000, 11740x00000000,
11750x56ac9b78, 11750x56ac9b78,
11760x00000000, 11760x00000000,
11770x41820000, 11770x41a20000,
11780x00070800, 11780x00070800,
11790x00000000, 11790x00000000,
11800x48000000, 11800x48000000,
@@ -1204,7 +1204,7 @@ static const unsigned int build_actionlist[7267] = {
12040x7c0e44ae, 12040x7c0e44ae,
12050x7c1445ae, 12050x7c1445ae,
12060x39080008, 12060x39080008,
12070x40820000, 12070x40a20000,
12080x0005080b, 12080x0005080b,
12090x48000000, 12090x48000000,
12100x00050049, 12100x00050049,
@@ -1971,7 +1971,7 @@ static const unsigned int build_actionlist[7267] = {
19710x72000000, 19710x72000000,
19720x00090200, 19720x00090200,
19730x7d936378, 19730x7d936378,
19740x40820000, 19740x40a20000,
19750x00050818, 19750x00050818,
19760x80f0fffc, 19760x80f0fffc,
19770x54ea5d78, 19770x54ea5d78,
@@ -2005,7 +2005,7 @@ static const unsigned int build_actionlist[7267] = {
20050x41800000, 20050x41800000,
20060x00050848, 20060x00050848,
20070x7c05b040, 20070x7c05b040,
20080x41820000, 20080x41a20000,
20090x0005084d, 20090x0005084d,
20100x54a9657e, 20100x54a9657e,
20110x40800000, 20110x40800000,
@@ -2054,7 +2054,7 @@ static const unsigned int build_actionlist[7267] = {
20540x7d084b39, 20540x7d084b39,
20550x4c423202, 20550x4c423202,
20560x3c608000, 20560x3c608000,
20570x41820000, 20570x41a20000,
20580x0005085d, 20580x0005085d,
20590x0006000f, 20590x0006000f,
20600xc82e0000, 20600xc82e0000,
@@ -2069,7 +2069,7 @@ static const unsigned int build_actionlist[7267] = {
20690x41800000, 20690x41800000,
20700x00050848, 20700x00050848,
20710x7c05b040, 20710x7c05b040,
20720x41820000, 20720x41a20000,
20730x0005084d, 20730x0005084d,
20740x54a9657e, 20740x54a9657e,
20750x40800000, 20750x40800000,
@@ -2104,7 +2104,7 @@ static const unsigned int build_actionlist[7267] = {
21040x40830000, 21040x40830000,
21050x0005085d, 21050x0005085d,
21060x7c000400, 21060x7c000400,
21070x40810000, 21070x40a10000,
21080x0005085d, 21080x0005085d,
21090x3ca041e0, 21090x3ca041e0,
21100x38600000, 21100x38600000,
@@ -2125,7 +2125,7 @@ static const unsigned int build_actionlist[7267] = {
21250x7d084b39, 21250x7d084b39,
21260x4c423202, 21260x4c423202,
21270x3c608000, 21270x3c608000,
21280x41820000, 21280x41a20000,
21290x0005085d, 21290x0005085d,
21300x0006000f, 21300x0006000f,
21310xc82e0000, 21310xc82e0000,
@@ -2717,7 +2717,7 @@ static const unsigned int build_actionlist[7267] = {
27170x820efff8, 27170x820efff8,
27180x28000000, 27180x28000000,
27190x3a8efff8, 27190x3a8efff8,
27200x41820000, 27200x41a20000,
27210x00050849, 27210x00050849,
27220x48000000, 27220x48000000,
27230x0005005d, 27230x0005005d,
@@ -2982,7 +2982,7 @@ static const unsigned int build_actionlist[7267] = {
29820x0006000b, 29820x0006000b,
29830x2c060000, 29830x2c060000,
29840x7d0348ae, 29840x7d0348ae,
29850x41800000, 29850x41a00000,
29860x0005087b, 29860x0005087b,
29870x7d0431ae, 29870x7d0431ae,
29880x38c6ffff, 29880x38c6ffff,
@@ -3021,7 +3021,7 @@ static const unsigned int build_actionlist[7267] = {
30210x0006000b, 30210x0006000b,
30220x7c092840, 30220x7c092840,
30230x7d0348ae, 30230x7d0348ae,
30240x40800000, 30240x40a00000,
30250x0005087b, 30250x0005087b,
30260x00000000, 30260x00000000,
30270x3808ffbf, 30270x3808ffbf,
@@ -3066,7 +3066,7 @@ static const unsigned int build_actionlist[7267] = {
30660x0006000b, 30660x0006000b,
30670x7c092840, 30670x7c092840,
30680x7d0348ae, 30680x7d0348ae,
30690x40800000, 30690x40a00000,
30700x0005087b, 30700x0005087b,
30710x3808ff9f, 30710x3808ff9f,
30720x69060020, 30720x69060020,
@@ -3126,7 +3126,7 @@ static const unsigned int build_actionlist[7267] = {
31260x00000000, 31260x00000000,
31270xc8280000, 31270xc8280000,
31280x00000000, 31280x00000000,
31290x40840000, 31290x40a40000,
31300x0005085d, 31300x0005085d,
31310x7c06b040, 31310x7c06b040,
31320x00000000, 31320x00000000,
@@ -3177,7 +3177,7 @@ static const unsigned int build_actionlist[7267] = {
31770x00000000, 31770x00000000,
31780xc8280000, 31780xc8280000,
31790x00000000, 31790x00000000,
31800x40840000, 31800x40a40000,
31810x0005085d, 31810x0005085d,
31820x7c06b040, 31820x7c06b040,
31830x00000000, 31830x00000000,
@@ -3228,7 +3228,7 @@ static const unsigned int build_actionlist[7267] = {
32280x00000000, 32280x00000000,
32290xc8280000, 32290xc8280000,
32300x00000000, 32300x00000000,
32310x40840000, 32310x40a40000,
32320x0005085d, 32320x0005085d,
32330x7c06b040, 32330x7c06b040,
32340x00000000, 32340x00000000,
@@ -3654,7 +3654,27 @@ static const unsigned int build_actionlist[7267] = {
36540x4e800020, 36540x4e800020,
36550x0006008f, 36550x0006008f,
36560x00000000, 36560x00000000,
36570x7c810808, 36570x88d10000,
36580x00098200,
36590x70c00000,
36600x00090200,
36610x40820000,
36620x00050805,
36630x81310000,
36640x00098200,
36650x70c00000,
36660x00090200,
36670x40820000,
36680x00050801,
36690x3929ffff,
36700x70c00000,
36710x00090200,
36720x41a20000,
36730x00050801,
36740x91310000,
36750x00098200,
36760x48000000,
36770x00050001,
36580x00000000, 36780x00000000,
36590x00060090, 36790x00060090,
36600x88d10000, 36800x88d10000,
@@ -3721,7 +3741,28 @@ static const unsigned int build_actionlist[7267] = {
37210x0005000e, 37410x0005000e,
37220x00060093, 37420x00060093,
37230x00000000, 37430x00000000,
37240x7c810808, 37440x810efffc,
37450x38710000,
37460x00098200,
37470x92010020,
37480x81080000,
37490x00098200,
37500x7e048378,
37510x92510000,
37520x00098200,
37530x89080000,
37540x00098200,
37550x91d20000,
37560x00098200,
37570x55081800,
37580x000900a1,
37590x7d0e4214,
37600x91120000,
37610x00098200,
37620x48000001,
37630x00030029,
37640x48000000,
37650x0005000d,
37250x00000000, 37660x00000000,
37260x00060094, 37670x00060094,
37270x7e048378, 37680x7e048378,
@@ -3743,7 +3784,7 @@ static const unsigned int build_actionlist[7267] = {
37430x90120000, 37840x90120000,
37440x00098200, 37850x00098200,
37450x48000001, 37860x48000001,
37460x00030029, 37870x0003002a,
37470x81d20000, 37880x81d20000,
37480x00098200, 37890x00098200,
37490x80120000, 37900x80120000,
@@ -3756,11 +3797,188 @@ static const unsigned int build_actionlist[7267] = {
37560x4e800420, 37970x4e800420,
37570x00060096, 37980x00060096,
37580x00000000, 37990x00000000,
37590x7c810808, 38000x38210000,
38010x00098200,
38020xbc410000,
38030x00098200,
38040x3a3e0000,
38050x00098200,
38060x38800000,
38070x00098200,
38080x80610000,
38090x00098200,
38100x90910000,
38110x00098200,
38120xd8010000,
38130x00098200,
38140xd8210000,
38150x00098200,
38160xd8410000,
38170x00098200,
38180xd8610000,
38190x00098200,
38200x90610000,
38210x7c000400,
38220xd8810000,
38230x00098200,
38240xd8a10000,
38250x00098200,
38260xd8c10000,
38270x00098200,
38280xd8e10000,
38290x00098200,
38300x38810000,
38310x00098200,
38320xd9010000,
38330x00098200,
38340xd9210000,
38350x00098200,
38360xd9410000,
38370x00098200,
38380xd9610000,
38390x00098200,
38400x90810000,
38410x00098200,
38420xd9810000,
38430x00098200,
38440xd9a10000,
38450x00098200,
38460x00000000,
38470xd9c10000,
38480x00098200,
38490xd9e10000,
38500x00098200,
38510x7ca802a6,
38520x39000000,
38530xda010000,
38540x00098200,
38550xda210000,
38560x00098200,
38570xda410000,
38580x00098200,
38590xda610000,
38600x00098200,
38610x91010000,
38620x00098200,
38630xda810000,
38640x00098200,
38650xdaa10000,
38660x00098200,
38670xdac10000,
38680x00098200,
38690xdae10000,
38700x00098200,
38710x80c50000,
38720xdb010000,
38730x00098200,
38740xdb210000,
38750x00098200,
38760xdb410000,
38770x00098200,
38780xdb610000,
38790x00098200,
38800x82510000,
38810x00098200,
38820xdb810000,
38830x00098200,
38840xdba10000,
38850x00098200,
38860xdbc10000,
38870x00098200,
38880xdbe10000,
38890x00098200,
38900x7ca50050,
38910x81d10000,
38920x00098200,
38930x54a500be,
38940x000900ab,
38950x00000000,
38960x92510000,
38970x00098200,
38980x38a5fffe,
38990x91110000,
39000x00098200,
39010x7ca62a14,
39020x91d20000,
39030x00098200,
39040x38710000,
39050x00098200,
39060x90b10000,
39070x00098200,
39080x38810010,
39090x93f10000,
39100x00098200,
39110x48000001,
39120x0003002b,
39130x81120000,
39140x00098200,
39150x81210000,
39160x81d20000,
39170x00098200,
39180x5501003a,
39190x82010020,
39200x91210000,
39210x92410024,
39220x48000000,
39230x00050001,
37600x00000000, 39240x00000000,
37610x00060097, 39250x00060097,
37620x00000000, 39260x00000000,
37630x7c810808, 39270x82410024,
39280x3a3e0000,
39290x00098200,
39300x0006000b,
39310x2c030000,
39320x41800000,
39330x00050803,
39340x810efffc,
39350x54731800,
39360x000900a1,
39370x39200000,
39380x9261001c,
39390x81080000,
39400x00098200,
39410x91310000,
39420x00098200,
39430x81e80000,
39440x00098200,
39450x3ac00000,
39460x00098200,
39470x3cc059c0,
39480x90c10010,
39490x3b000000,
39500x60c60004,
39510xc3c10010,
39520x90c10010,
39530x3c004338,
39540x3ae00000,
39550x00098200,
39560x90010008,
39570xc3e10010,
39580x80f00000,
39590x3a100004,
39600x92f10000,
39610x00098200,
39620x54e815ba,
39630x54f4dd78,
39640x7c11402e,
39650x7c0903a6,
39660x2c080000,
39670x00098200,
39680x41820000,
39690x00050802,
39700x54ea5d78,
39710x54ec9b78,
39720x54eb9d78,
39730x4e800420,
39740x0006000c,
39750x7e947214,
39760x4e800420,
39770x0006000d,
39780x7c8300d0,
39790x7e439378,
39800x48000001,
39810x0003002c,
37640x00000000, 39820x00000000,
37650x00060098, 39830x00060098,
37660x48000000, 39840x48000000,
@@ -3771,11 +3989,12 @@ static const unsigned int build_actionlist[7267] = {
37710x0006009a, 39890x0006009a,
37720x00000000, 39900x00000000,
37730x48000000, 39910x48000000,
37740x0003002a, 39920x0003002d,
37750x00000000, 39930x00000000,
37760x0006009b, 39940x0006009b,
37770x7c0327d7, 39950x7c0327d7,
37780x4d830020, 39960x41830000,
39970x00050801,
37790x7c652279, 39980x7c652279,
37800x7c0021d6, 39990x7c0021d6,
37810x7c601850, 40000x7c601850,
@@ -3784,15 +4003,13 @@ static const unsigned int build_actionlist[7267] = {
37840x4d820020, 40030x4d820020,
37850x7c632214, 40040x7c632214,
37860x4e800020, 40050x4e800020,
40060x0006000b,
40070x2c040000,
40080x38600000,
40090x4d820020,
40100x7c000400,
40110x4e800020,
37870x0006009c, 40120x0006009c,
37880x00000000,
37890x7c810808,
37900x00000000,
37910x0006009d,
37920x00000000,
37930x7c810808,
37940x00000000,
37950x0006009e,
37960x28030001, 40130x28030001,
37970x41820000, 40140x41820000,
37980x00050801, 40150x00050801,
@@ -3853,8 +4070,32 @@ static const unsigned int build_actionlist[7267] = {
38530xfc200a10, 40700xfc200a10,
38540x4e800020, 40710x4e800020,
38550x0006000c, 40720x0006000c,
40730x00000000,
40740x28030009,
40750x41820000,
40760x00050809,
40770x41810000,
40780x00050802,
40790x48000000,
40800x00030020,
40810x0006000c,
40820x2803000b,
40830x41810000,
40840x00050809,
40850xfc011028,
40860x41820000,
40870x00050801,
40880xfc2008ae,
40890x4e800020,
40900x0006000b,
40910xfc20106e,
40920x4e800020,
40930x00060013,
38560x7c810808, 40940x7c810808,
38570x0006009f, 40950x00000000,
40960x7c810808,
40970x00000000,
40980x0006009d,
38580x00000000, 40990x00000000,
38590x81030000, 41000x81030000,
38600x00098200, 41010x00098200,
@@ -3876,7 +4117,7 @@ static const unsigned int build_actionlist[7267] = {
38760x00098200, 41170x00098200,
38770x54841000, 41180x54841000,
38780x000900a1, 41190x000900a1,
38790x41800000, 41200x41a00000,
38800x00050802, 41210x00050802,
38810x39210008, 41220x39210008,
38820x0006000b, 41230x0006000b,
@@ -3886,7 +4127,7 @@ static const unsigned int build_actionlist[7267] = {
38860x40800000, 41270x40800000,
38870x0005080b, 41280x0005080b,
38880x0006000c, 41290x0006000c,
38890x40860000, 41300x40a60000,
38900x00050803, 41310x00050803,
38910xc8230000, 41320xc8230000,
38920x00098200, 41330x00098200,
@@ -4088,10 +4329,10 @@ static const unsigned int build_actionlist[7267] = {
40880x00098200, 43290x00098200,
40890x00000000, 43300x00000000,
40900x409d0000, 43310x409d0000,
40910x000508a0, 43320x0005089e,
40920x00000000, 43330x00000000,
40930x409d0000, 43340x409d0000,
40940x000508a1, 43350x0005089f,
40950x00000000, 43360x00000000,
40960x7c14706e, 43370x7c14706e,
40970x81300000, 43380x81300000,
@@ -4262,9 +4503,9 @@ static const unsigned int build_actionlist[7267] = {
42620x3d290000, 45030x3d290000,
42630x00098200, 45040x00098200,
42640x00000000, 45050x00000000,
42650x000600a0, 45060x0006009e,
42660x00000000, 45070x00000000,
42670x000600a1, 45080x0006009f,
42680x00000000, 45090x00000000,
42690x40820000, 45100x40820000,
42700x00050807, 45110x00050807,
@@ -4273,9 +4514,9 @@ static const unsigned int build_actionlist[7267] = {
42730x7c042800, 45140x7c042800,
42740x0006000e, 45150x0006000e,
42750x00000000, 45160x00000000,
42760x000600a0, 45170x0006009e,
42770x00000000, 45180x00000000,
42780x000600a1, 45190x0006009f,
42790x00000000, 45200x00000000,
42800x7c0ea02e, 45210x7c0ea02e,
42810x3a100004, 45220x3a100004,
@@ -4486,7 +4727,7 @@ static const unsigned int build_actionlist[7267] = {
44860x4e800420, 47270x4e800420,
44870x0006000e, 47280x0006000e,
44880x7c000400, 47290x7c000400,
44890x40810000, 47300x40a10000,
44900x0005080b, 47310x0005080b,
44910x3d0041e0, 47320x3d0041e0,
44920x38000000, 47330x38000000,
@@ -4616,7 +4857,7 @@ static const unsigned int build_actionlist[7267] = {
46160x4e800420, 48570x4e800420,
46170x0006000e, 48580x0006000e,
46180x7c000400, 48590x7c000400,
46190x40810000, 48600x40a10000,
46200x0005080b, 48610x0005080b,
46210x00000000, 48620x00000000,
46220x48000000, 48630x48000000,
@@ -4753,7 +4994,7 @@ static const unsigned int build_actionlist[7267] = {
47530x4e800420, 49940x4e800420,
47540x0006000e, 49950x0006000e,
47550x7c000400, 49960x7c000400,
47560x40810000, 49970x40a10000,
47570x0005080b, 49980x0005080b,
47580x00000000, 49990x00000000,
47590x48000000, 50000x48000000,
@@ -4890,7 +5131,7 @@ static const unsigned int build_actionlist[7267] = {
48900x4e800420, 51310x4e800420,
48910x0006000e, 51320x0006000e,
48920x7c000400, 51330x7c000400,
48930x40810000, 51340x40a10000,
48940x0005080b, 51350x0005080b,
48950x00000000, 51360x00000000,
48960x48000000, 51370x48000000,
@@ -5085,7 +5326,7 @@ static const unsigned int build_actionlist[7267] = {
50850x4e800420, 53260x4e800420,
50860x0006000e, 53270x0006000e,
50870x7c000400, 53280x7c000400,
50880x40810000, 53290x40a10000,
50890x0005080b, 53300x0005080b,
50900x00000000, 53310x00000000,
50910x48000000, 53320x48000000,
@@ -5116,7 +5357,7 @@ static const unsigned int build_actionlist[7267] = {
51160x40800000, 53570x40800000,
51170x00050841, 53580x00050841,
51180x00000000, 53590x00000000,
51190x000600a2, 53600x000600a0,
51200xfc2e7824, 53610xfc2e7824,
51210x48000001, 53620x48000001,
51220x00030010, 53630x00030010,
@@ -5172,7 +5413,7 @@ static const unsigned int build_actionlist[7267] = {
51720x40800000, 54130x40800000,
51730x0005083f, 54140x0005083f,
51740x00000000, 54150x00000000,
51750x000600a2, 54160x000600a0,
51760xfc2e7824, 54170xfc2e7824,
51770x48000001, 54180x48000001,
51780x00030010, 54190x00030010,
@@ -5233,7 +5474,7 @@ static const unsigned int build_actionlist[7267] = {
52330x4e800420, 54740x4e800420,
52340x0006000e, 54750x0006000e,
52350x7c000400, 54760x7c000400,
52360x40810000, 54770x40a10000,
52370x0005080b, 54780x0005080b,
52380x00000000, 54790x00000000,
52390x48000000, 54800x48000000,
@@ -5265,7 +5506,7 @@ static const unsigned int build_actionlist[7267] = {
52650x00050841, 55060x00050841,
52660x00000000, 55070x00000000,
52670x48000000, 55080x48000000,
52680x000500a2, 55090x000500a0,
52690x00000000, 55100x00000000,
52700x7d0e502e, 55110x7d0e502e,
52710x00000000, 55120x00000000,
@@ -5312,7 +5553,7 @@ static const unsigned int build_actionlist[7267] = {
53120x0005083f, 55530x0005083f,
53130x00000000, 55540x00000000,
53140x48000000, 55550x48000000,
53150x000500a2, 55560x000500a0,
53160x00000000, 55570x00000000,
53170x7d0e502e, 55580x7d0e502e,
53180x7c2e54ae, 55590x7c2e54ae,
@@ -5348,7 +5589,7 @@ static const unsigned int build_actionlist[7267] = {
53480x54a500fe, 55890x54a500fe,
53490x000900ab, 55900x000900ab,
53500x48000001, 55910x48000001,
53510x0003002b, 55920x0003002e,
53520x28030000, 55930x28030000,
53530x81d20000, 55940x81d20000,
53540x00098200, 55950x00098200,
@@ -5566,7 +5807,7 @@ static const unsigned int build_actionlist[7267] = {
55660x41820000, 58070x41820000,
55670x0005080b, 58080x0005080b,
55680x48000001, 58090x48000001,
55690x0003002c, 58100x0003002f,
55700x48000000, 58110x48000000,
55710x0005000b, 58120x0005000b,
55720x00000000, 58130x00000000,
@@ -5617,7 +5858,7 @@ static const unsigned int build_actionlist[7267] = {
56170x41820000, 58580x41820000,
56180x0005080b, 58590x0005080b,
56190x48000001, 58600x48000001,
56200x0003002c, 58610x0003002f,
56210x48000000, 58620x48000000,
56220x0005000b, 58630x0005000b,
56230x00000000, 58640x00000000,
@@ -5680,7 +5921,7 @@ static const unsigned int build_actionlist[7267] = {
56800x00050801, 59210x00050801,
56810x7c8ea214, 59220x7c8ea214,
56820x48000001, 59230x48000001,
56830x0003002d, 59240x00030030,
56840x81d20000, 59250x81d20000,
56850x00098200, 59260x00098200,
56860x0006000b, 59270x0006000b,
@@ -5705,7 +5946,7 @@ static const unsigned int build_actionlist[7267] = {
57050x7e439378, 59460x7e439378,
57060x80aefffc, 59470x80aefffc,
57070x48000001, 59480x48000001,
57080x0003002e, 59490x00030031,
57090x81d20000, 59500x81d20000,
57100x00098200, 59510x00098200,
57110x38000000, 59520x38000000,
@@ -5743,14 +5984,14 @@ static const unsigned int build_actionlist[7267] = {
57430x00050803, 59840x00050803,
57440x0006000c, 59850x0006000c,
57450x48000001, 59860x48000001,
57460x0003002f, 59870x00030032,
57470x00000000, 59880x00000000,
57480x5588007e, 59890x5588007e,
57490x000900ab, 59900x000900ab,
57500x2108fffc, 59910x2108fffc,
57510x7c8f402e, 59920x7c8f402e,
57520x48000001, 59930x48000001,
57530x00030030, 59940x00030033,
57540x00000000, 59950x00000000,
57550x81d20000, 59960x81d20000,
57560x00098200, 59970x00098200,
@@ -5777,7 +6018,7 @@ static const unsigned int build_actionlist[7267] = {
57770x0006000f, 60180x0006000f,
57780x7d956378, 60190x7d956378,
57790x48000001, 60200x48000001,
57800x00030031, 60210x00030034,
57810x7eacab78, 60220x7eacab78,
57820x7e439378, 60230x7e439378,
57830x48000000, 60240x48000000,
@@ -5792,10 +6033,10 @@ static const unsigned int build_actionlist[7267] = {
57920x7d6f402e, 60330x7d6f402e,
57930x00000000, 60340x00000000,
57940x48000000, 60350x48000000,
57950x000500a3, 60360x000500a1,
57960x00000000, 60370x00000000,
57970x48000000, 60380x48000000,
57980x000500a4, 60390x000500a2,
57990x00000000, 60400x00000000,
58000x7c6a706e, 60410x7c6a706e,
58010x7c8b706e, 60420x7c8b706e,
@@ -5881,7 +6122,7 @@ static const unsigned int build_actionlist[7267] = {
58810x816b0004, 61220x816b0004,
58820x00000000, 61230x00000000,
58830x48000000, 61240x48000000,
58840x000500a3, 61250x000500a1,
58850x00000000, 61260x00000000,
58860x7c6a706e, 61270x7c6a706e,
58870x5568007e, 61280x5568007e,
@@ -5893,7 +6134,7 @@ static const unsigned int build_actionlist[7267] = {
58930x7d6f402e, 61340x7d6f402e,
58940x40820000, 61350x40820000,
58950x0005082c, 61360x0005082c,
58960x000600a3, 61370x000600a1,
58970x800a0000, 61380x800a0000,
58980x00098200, 61390x00098200,
58990x810b0000, 61400x810b0000,
@@ -6103,7 +6344,7 @@ static const unsigned int build_actionlist[7267] = {
61030x816b0004, 63440x816b0004,
61040x00000000, 63450x00000000,
61050x48000000, 63460x48000000,
61060x000500a4, 63470x000500a2,
61070x00060011, 63480x00060011,
61080x80110000, 63490x80110000,
61090x00098200, 63500x00098200,
@@ -6153,7 +6394,7 @@ static const unsigned int build_actionlist[7267] = {
61530x7d6f402e, 63940x7d6f402e,
61540x40820000, 63950x40820000,
61550x00050830, 63960x00050830,
61560x000600a4, 63970x000600a2,
61570x800a0000, 63980x800a0000,
61580x00098200, 63990x00098200,
61590x810b0000, 64000x810b0000,
@@ -6256,7 +6497,7 @@ static const unsigned int build_actionlist[7267] = {
62560x7d445378, 64970x7d445378,
62570x90050000, 64980x90050000,
62580x48000001, 64990x48000001,
62590x00030032, 65000x00030035,
62600x81d20000, 65010x81d20000,
62610x00098200, 65020x00098200,
62620xd9c30000, 65030xd9c30000,
@@ -6397,7 +6638,7 @@ static const unsigned int build_actionlist[7267] = {
63970x92010020, 66380x92010020,
63980x7d956378, 66390x7d956378,
63990x48000001, 66400x48000001,
64000x00030033, 66410x00030036,
64010x7eacab78, 66420x7eacab78,
64020x48000000, 66430x48000000,
64030x0005000b, 66440x0005000b,
@@ -6604,7 +6845,7 @@ static const unsigned int build_actionlist[7267] = {
66040x7c0b4040, 68450x7c0b4040,
66050x55662800, 68460x55662800,
66060x000900a1, 68470x000900a1,
66070x41810000, 68480x41a10000,
66080x0005080d, 68490x0005080d,
66090x556a1800, 68500x556a1800,
66100x000900a1, 68510x000900a1,
@@ -6732,7 +6973,7 @@ static const unsigned int build_actionlist[7267] = {
67320x80120000, 69730x80120000,
67330x00098200, 69740x00098200,
67340x3a600008, 69750x3a600008,
67350x40810000, 69760x40a10000,
67360x0005080d, 69770x0005080d,
67370x7d344214, 69780x7d344214,
67380x7c090040, 69790x7c090040,
@@ -6782,7 +7023,7 @@ static const unsigned int build_actionlist[7267] = {
67820x6a080000, 70230x6a080000,
67830x00090200, 70240x00090200,
67840x40820000, 70250x40820000,
67850x000508a5, 70260x000508a3,
67860x00060017, 70270x00060017,
67870x80f0fffc, 70280x80f0fffc,
67880x2c0c0008, 70290x2c0c0008,
@@ -6833,7 +7074,7 @@ static const unsigned int build_actionlist[7267] = {
68330x7ee9412e, 70740x7ee9412e,
68340x48000000, 70750x48000000,
68350x0005000f, 70760x0005000f,
68360x000600a5, 70770x000600a3,
68370x71090000, 70780x71090000,
68380x00090200, 70790x00090200,
68390x40820000, 70800x40820000,
@@ -6850,8 +7091,8 @@ static const unsigned int build_actionlist[7267] = {
68500x00090200, 70910x00090200,
68510x6a080000, 70920x6a080000,
68520x00090200, 70930x00090200,
68530x40820000, 70940x40a20000,
68540x000508a5, 70950x000508a3,
68550x80f0fffc, 70960x80f0fffc,
68560x392efff8, 70970x392efff8,
68570x54ea5d78, 70980x54ea5d78,
@@ -6887,7 +7128,15 @@ static const unsigned int build_actionlist[7267] = {
68870x48000000, 71280x48000000,
68880x0005000f, 71290x0005000f,
68890x00000000, 71300x00000000,
68900x7c810808, 71310x5608fe7c,
71320x39080000,
71330x00098200,
71340x7d31422e,
71350x35290000,
71360x00098200,
71370x7d31432e,
71380x41800000,
71390x00050893,
68910x00000000, 71400x00000000,
68920x7d14706e, 71410x7d14706e,
68930x80740000, 71420x80740000,
@@ -6973,7 +7222,7 @@ static const unsigned int build_actionlist[7267] = {
69730x00000000, 72220x00000000,
69740x00060010, 72230x00060010,
69750x7c000400, 72240x7c000400,
69760x40810000, 72250x40a10000,
69770x0005080e, 72260x0005080e,
69780x48000000, 72270x48000000,
69790x0005000c, 72280x0005000c,
@@ -7037,7 +7286,7 @@ static const unsigned int build_actionlist[7267] = {
70370x41810000, 72860x41810000,
70380x00050803, 72870x00050803,
70390x00000000, 72880x00000000,
70400x41810000, 72890x41a10000,
70410x0005080c, 72900x0005080c,
70420x00000000, 72910x00000000,
70430x41810000, 72920x41810000,
@@ -7073,7 +7322,7 @@ static const unsigned int build_actionlist[7267] = {
70730x3e0c0000, 73220x3e0c0000,
70740x00098200, 73230x00098200,
70750x00000000, 73240x00000000,
70760x40800000, 73250x40a00000,
70770x0005080b, 73260x0005080b,
70780x00000000, 73270x00000000,
70790x40800000, 73280x40800000,
@@ -7082,7 +7331,15 @@ static const unsigned int build_actionlist[7267] = {
70820x48000000, 73310x48000000,
70830x0005000c, 73320x0005000c,
70840x00000000, 73330x00000000,
70850x7c810808, 73340x5608fe7c,
73350x39080000,
73360x00098200,
73370x7d31422e,
73380x35290000,
73390x00098200,
73400x7d31432e,
73410x41800000,
73420x00050893,
70860x00000000, 73430x00000000,
70870x7d14706e, 73440x7d14706e,
70880x81340004, 73450x81340004,
@@ -7091,7 +7348,10 @@ static const unsigned int build_actionlist[7267] = {
70910x41820000, 73480x41820000,
70920x00050801, 73490x00050801,
70930x00000000, 73500x00000000,
70940x7c810808, 73510x9114fff8,
73520x9134fffc,
73530x48000000,
73540x00070000,
70950x00000000, 73550x00000000,
70960x5580007e, 73560x5580007e,
70970x000900ab, 73570x000900ab,
@@ -7113,7 +7373,15 @@ static const unsigned int build_actionlist[7267] = {
71130x54eb9d78, 73730x54eb9d78,
71140x4e800420, 73740x4e800420,
71150x00000000, 73750x00000000,
71160x7c810808, 73760x5608fe7c,
73770x39080000,
73780x00098200,
73790x7d31422e,
73800x35290000,
73810x00098200,
73820x7d31432e,
73830x41800000,
73840x00050893,
71170x00000000, 73850x00000000,
71180x80f00000, 73860x80f00000,
71190x3a100004, 73870x3a100004,
@@ -7126,7 +7394,22 @@ static const unsigned int build_actionlist[7267] = {
71260x54eb9d78, 73940x54eb9d78,
71270x4e800420, 73950x4e800420,
71280x00000000, 73960x00000000,
71290x7c810808, 73970x81110000,
73980x00098200,
73990x558c007e,
74000x000900ab,
74010x7d28602e,
74020x7c000400,
74030x81290000,
74040x00098200,
74050x91d10000,
74060x00098200,
74070x7d2903a6,
74080x92510000,
74090x00098200,
74100x3bd10000,
74110x00098200,
74120x4e800420,
71300x00000000, 74130x00000000,
71310x5580007e, 74140x5580007e,
71320x000900ab, 74150x000900ab,
@@ -7144,7 +7427,15 @@ static const unsigned int build_actionlist[7267] = {
71440x54eb9d78, 74270x54eb9d78,
71450x4e800420, 74280x4e800420,
71460x00000000, 74290x00000000,
71470x7c810808, 74300x5608fe7c,
74310x39080000,
74320x00098200,
74330x7d31422e,
74340x35290000,
74350x00098200,
74360x7d31432e,
74370x41800000,
74380x00050895,
71480x00000000, 74390x00000000,
71490x81320000, 74400x81320000,
71500x00098200, 74410x00098200,
@@ -7157,14 +7448,18 @@ static const unsigned int build_actionlist[7267] = {
71570x000900a1, 74480x000900a1,
71580x41810000, 74490x41810000,
71590x00050820, 74500x00050820,
74510x00000000,
71600x80f00000, 74520x80f00000,
71610x3a100004, 74530x3a100004,
74540x00000000,
71620x0006000c, 74550x0006000c,
71630x7c0b4040, 74560x7c0b4040,
71640x40810000, 74570x40810000,
71650x00050803, 74580x00050803,
71660x00000000, 74590x00000000,
71670x7c810808, 74600x54ec9b78,
74610x48000000,
74620x00070000,
71680x00000000, 74630x00000000,
71690x54e815ba, 74640x54e815ba,
71700x7c11402e, 74650x7c11402e,
@@ -7419,8 +7714,6 @@ enum {
7419 GLOB_vm_ceil, 7714 GLOB_vm_ceil,
7420 GLOB_vm_trunc, 7715 GLOB_vm_trunc,
7421 GLOB_vm_modi, 7716 GLOB_vm_modi,
7422 GLOB_vm_powi,
7423 GLOB_vm_foldfpm,
7424 GLOB_vm_foldarith, 7717 GLOB_vm_foldarith,
7425 GLOB_vm_ffi_call, 7718 GLOB_vm_ffi_call,
7426 GLOB_BC_ISEQN_Z, 7719 GLOB_BC_ISEQN_Z,
@@ -7568,8 +7861,6 @@ static const char *const globnames[] = {
7568 "vm_ceil", 7861 "vm_ceil",
7569 "vm_trunc", 7862 "vm_trunc",
7570 "vm_modi", 7863 "vm_modi",
7571 "vm_powi",
7572 "vm_foldfpm",
7573 "vm_foldarith", 7864 "vm_foldarith",
7574 "vm_ffi_call", 7865 "vm_ffi_call",
7575 "BC_ISEQN_Z", 7866 "BC_ISEQN_Z",
@@ -7622,7 +7913,10 @@ static const char *const extnames[] = {
7622 "lj_tab_len", 7913 "lj_tab_len",
7623 "lj_gc_step", 7914 "lj_gc_step",
7624 "lj_dispatch_ins", 7915 "lj_dispatch_ins",
7916 "lj_trace_hot",
7625 "lj_dispatch_call", 7917 "lj_dispatch_call",
7918 "lj_trace_exit",
7919 "lj_err_throw",
7626 "trunc", 7920 "trunc",
7627 "lj_meta_cat", 7921 "lj_meta_cat",
7628 "lj_gc_barrieruv", 7922 "lj_gc_barrieruv",
@@ -8001,46 +8295,46 @@ static void build_subroutines(BuildCtx *ctx)
8001 dasm_put(Dst, 3552, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); 8295 dasm_put(Dst, 3552, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK);
8002 dasm_put(Dst, 3615, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 8296 dasm_put(Dst, 3615, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
8003#if LJ_HASJIT 8297#if LJ_HASJIT
8004 dasm_put(Dst, 3641); 8298 dasm_put(Dst, 3641, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
8005#endif
8006 dasm_put(Dst, 3643, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base));
8007 dasm_put(Dst, 3690, GG_DISP2STATIC);
8008#if LJ_HASJIT
8009 dasm_put(Dst, 3708);
8010#endif 8299#endif
8011 dasm_put(Dst, 3710); 8300 dasm_put(Dst, 3663, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base));
8301 dasm_put(Dst, 3710, GG_DISP2STATIC);
8012#if LJ_HASJIT 8302#if LJ_HASJIT
8013 dasm_put(Dst, 3713); 8303 dasm_put(Dst, 3728, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top));
8014#endif 8304#endif
8015 dasm_put(Dst, 3716); 8305 dasm_put(Dst, 3751);
8016#if LJ_HASJIT 8306#if LJ_HASJIT
8017 dasm_put(Dst, 3718); 8307 dasm_put(Dst, 3754);
8018#endif 8308#endif
8019 dasm_put(Dst, 3721, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 8309 dasm_put(Dst, 3757);
8020#if LJ_HASJIT 8310#if LJ_HASJIT
8021 dasm_put(Dst, 3743); 8311 dasm_put(Dst, 3759);
8022#endif 8312#endif
8023 dasm_put(Dst, 3745); 8313 dasm_put(Dst, 3762, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
8024#if LJ_HASJIT 8314#if LJ_HASJIT
8025 dasm_put(Dst, 3747); 8315 dasm_put(Dst, 3784, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8);
8316 dasm_put(Dst, 3831, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2);
8317 dasm_put(Dst, 3880, DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), DISPATCH_J(parent), Dt1(->cframe), Dt1(->base));
8026#endif 8318#endif
8027 dasm_put(Dst, 3749); 8319 dasm_put(Dst, 3909);
8028#if LJ_HASJIT 8320#if LJ_HASJIT
8029 dasm_put(Dst, 3757); 8321 dasm_put(Dst, 3911, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4);
8030#endif 8322#endif
8031 dasm_put(Dst, 3760); 8323 dasm_put(Dst, 3967);
8032#if LJ_HASJIT 8324#if LJ_HASJIT
8033 dasm_put(Dst, 3773); 8325 dasm_put(Dst, 3975);
8034#endif 8326#endif
8035 dasm_put(Dst, 3775); 8327 dasm_put(Dst, 3978);
8036#if LJ_HASJIT 8328#if LJ_HASJIT
8037 dasm_put(Dst, 3777); 8329 dasm_put(Dst, 4058);
8330#else
8331 dasm_put(Dst, 4080);
8038#endif 8332#endif
8039 dasm_put(Dst, 3779); 8333 dasm_put(Dst, 4082);
8040#if LJ_HASFFI 8334#if LJ_HASFFI
8041#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 8335#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
8042 dasm_put(Dst, 3843, DtE(->spadj), DtE(->nsp), DtE(->nfpr), DtE(->stack), 31-2, DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[1]), DtE(->gpr[2])); 8336 dasm_put(Dst, 4084, DtE(->spadj), DtE(->nsp), DtE(->nfpr), DtE(->stack), 31-2, DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[1]), DtE(->gpr[2]));
8043 dasm_put(Dst, 3899, DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->gpr[6]), DtE(->gpr[7]), DtE(->gpr[0]), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3])); 8337 dasm_put(Dst, 4140, DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->gpr[6]), DtE(->gpr[7]), DtE(->gpr[0]), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]));
8044#endif 8338#endif
8045} 8339}
8046 8340
@@ -8048,7 +8342,7 @@ static void build_subroutines(BuildCtx *ctx)
8048static void build_ins(BuildCtx *ctx, BCOp op, int defop) 8342static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8049{ 8343{
8050 int vk = 0; 8344 int vk = 0;
8051 dasm_put(Dst, 3930, defop); 8345 dasm_put(Dst, 4171, defop);
8052 8346
8053 switch (op) { 8347 switch (op) {
8054 8348
@@ -8058,224 +8352,224 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8058 8352
8059 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 8353 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
8060 if (LJ_DUALNUM) { 8354 if (LJ_DUALNUM) {
8061 dasm_put(Dst, 3932, -(BCBIAS_J*4 >> 16)); 8355 dasm_put(Dst, 4173, -(BCBIAS_J*4 >> 16));
8062 if (op == BC_ISLT) { 8356 if (op == BC_ISLT) {
8063 dasm_put(Dst, 3949); 8357 dasm_put(Dst, 4190);
8064 } else if (op == BC_ISGE) { 8358 } else if (op == BC_ISGE) {
8065 dasm_put(Dst, 3952); 8359 dasm_put(Dst, 4193);
8066 } else if (op == BC_ISLE) { 8360 } else if (op == BC_ISLE) {
8067 dasm_put(Dst, 3955); 8361 dasm_put(Dst, 4196);
8068 } else { 8362 } else {
8069 dasm_put(Dst, 3958); 8363 dasm_put(Dst, 4199);
8070 } 8364 }
8071 dasm_put(Dst, 3961); 8365 dasm_put(Dst, 4202);
8072 if (op == BC_ISLT) { 8366 if (op == BC_ISLT) {
8073 dasm_put(Dst, 4000); 8367 dasm_put(Dst, 4241);
8074 } else if (op == BC_ISGE) { 8368 } else if (op == BC_ISGE) {
8075 dasm_put(Dst, 4003); 8369 dasm_put(Dst, 4244);
8076 } else if (op == BC_ISLE) { 8370 } else if (op == BC_ISLE) {
8077 dasm_put(Dst, 4006); 8371 dasm_put(Dst, 4247);
8078 } else { 8372 } else {
8079 dasm_put(Dst, 4010); 8373 dasm_put(Dst, 4251);
8080 } 8374 }
8081 dasm_put(Dst, 4014); 8375 dasm_put(Dst, 4255);
8082 } else { 8376 } else {
8083 dasm_put(Dst, 4017, -(BCBIAS_J*4 >> 16)); 8377 dasm_put(Dst, 4258, -(BCBIAS_J*4 >> 16));
8084 if (op == BC_ISLT) { 8378 if (op == BC_ISLT) {
8085 dasm_put(Dst, 4034); 8379 dasm_put(Dst, 4275);
8086 } else if (op == BC_ISGE) { 8380 } else if (op == BC_ISGE) {
8087 dasm_put(Dst, 4037); 8381 dasm_put(Dst, 4278);
8088 } else if (op == BC_ISLE) { 8382 } else if (op == BC_ISLE) {
8089 dasm_put(Dst, 4040); 8383 dasm_put(Dst, 4281);
8090 } else { 8384 } else {
8091 dasm_put(Dst, 4044); 8385 dasm_put(Dst, 4285);
8092 } 8386 }
8093 dasm_put(Dst, 4048); 8387 dasm_put(Dst, 4289);
8094 } 8388 }
8095 break; 8389 break;
8096 8390
8097 case BC_ISEQV: case BC_ISNEV: 8391 case BC_ISEQV: case BC_ISNEV:
8098 vk = op == BC_ISEQV; 8392 vk = op == BC_ISEQV;
8099 if (LJ_DUALNUM) { 8393 if (LJ_DUALNUM) {
8100 dasm_put(Dst, 4061, -(BCBIAS_J*4 >> 16)); 8394 dasm_put(Dst, 4302, -(BCBIAS_J*4 >> 16));
8101 if (vk) { 8395 if (vk) {
8102 dasm_put(Dst, 4074); 8396 dasm_put(Dst, 4315);
8103 } else { 8397 } else {
8104 dasm_put(Dst, 4077); 8398 dasm_put(Dst, 4318);
8105 } 8399 }
8106 } else { 8400 } else {
8107 dasm_put(Dst, 4080, -(BCBIAS_J*4 >> 16)); 8401 dasm_put(Dst, 4321, -(BCBIAS_J*4 >> 16));
8108 if (vk) { 8402 if (vk) {
8109 dasm_put(Dst, 4097); 8403 dasm_put(Dst, 4338);
8110 } else { 8404 } else {
8111 dasm_put(Dst, 4101); 8405 dasm_put(Dst, 4342);
8112 } 8406 }
8113 dasm_put(Dst, 4105); 8407 dasm_put(Dst, 4346);
8114 } 8408 }
8115 dasm_put(Dst, 4117); 8409 dasm_put(Dst, 4358);
8116 if (!LJ_DUALNUM) { 8410 if (!LJ_DUALNUM) {
8117 dasm_put(Dst, 4119); 8411 dasm_put(Dst, 4360);
8118 } 8412 }
8119 if (LJ_HASFFI) { 8413 if (LJ_HASFFI) {
8120 dasm_put(Dst, 4122, LJ_TCDATA, LJ_TCDATA); 8414 dasm_put(Dst, 4363, LJ_TCDATA, LJ_TCDATA);
8121 } 8415 }
8122 dasm_put(Dst, 4127, ~LJ_TISPRI); 8416 dasm_put(Dst, 4368, ~LJ_TISPRI);
8123 if (LJ_HASFFI) { 8417 if (LJ_HASFFI) {
8124 dasm_put(Dst, 4132); 8418 dasm_put(Dst, 4373);
8125 } 8419 }
8126 dasm_put(Dst, 4134, ~LJ_TISTABUD); 8420 dasm_put(Dst, 4375, ~LJ_TISTABUD);
8127 if (LJ_HASFFI) { 8421 if (LJ_HASFFI) {
8128 dasm_put(Dst, 4137); 8422 dasm_put(Dst, 4378);
8129 } 8423 }
8130 dasm_put(Dst, 4140); 8424 dasm_put(Dst, 4381);
8131 if (vk) { 8425 if (vk) {
8132 dasm_put(Dst, 4148); 8426 dasm_put(Dst, 4389);
8133 } else { 8427 } else {
8134 dasm_put(Dst, 4153); 8428 dasm_put(Dst, 4394);
8135 } 8429 }
8136 if (LJ_DUALNUM) { 8430 if (LJ_DUALNUM) {
8137 dasm_put(Dst, 4158); 8431 dasm_put(Dst, 4399);
8138 } else { 8432 } else {
8139 dasm_put(Dst, 4173); 8433 dasm_put(Dst, 4414);
8140 } 8434 }
8141 dasm_put(Dst, 4176, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); 8435 dasm_put(Dst, 4417, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
8142 break; 8436 break;
8143 8437
8144 case BC_ISEQS: case BC_ISNES: 8438 case BC_ISEQS: case BC_ISNES:
8145 vk = op == BC_ISEQS; 8439 vk = op == BC_ISEQS;
8146 dasm_put(Dst, 4195, 32-1); 8440 dasm_put(Dst, 4436, 32-1);
8147 if (LJ_HASFFI) { 8441 if (LJ_HASFFI) {
8148 dasm_put(Dst, 4203, LJ_TCDATA); 8442 dasm_put(Dst, 4444, LJ_TCDATA);
8149 } 8443 }
8150 dasm_put(Dst, 4206, LJ_TSTR); 8444 dasm_put(Dst, 4447, LJ_TSTR);
8151 if (LJ_HASFFI) { 8445 if (LJ_HASFFI) {
8152 dasm_put(Dst, 4210); 8446 dasm_put(Dst, 4451);
8153 } 8447 }
8154 dasm_put(Dst, 4213, -(BCBIAS_J*4 >> 16)); 8448 dasm_put(Dst, 4454, -(BCBIAS_J*4 >> 16));
8155 if (vk) { 8449 if (vk) {
8156 dasm_put(Dst, 4221); 8450 dasm_put(Dst, 4462);
8157 } else { 8451 } else {
8158 dasm_put(Dst, 4223); 8452 dasm_put(Dst, 4464);
8159 } 8453 }
8160 dasm_put(Dst, 4225); 8454 dasm_put(Dst, 4466);
8161 break; 8455 break;
8162 8456
8163 case BC_ISEQN: case BC_ISNEN: 8457 case BC_ISEQN: case BC_ISNEN:
8164 vk = op == BC_ISEQN; 8458 vk = op == BC_ISEQN;
8165 if (LJ_DUALNUM) { 8459 if (LJ_DUALNUM) {
8166 dasm_put(Dst, 4237, -(BCBIAS_J*4 >> 16)); 8460 dasm_put(Dst, 4478, -(BCBIAS_J*4 >> 16));
8167 if (vk) { 8461 if (vk) {
8168 dasm_put(Dst, 4249); 8462 dasm_put(Dst, 4490);
8169 } else { 8463 } else {
8170 dasm_put(Dst, 4251); 8464 dasm_put(Dst, 4492);
8171 } 8465 }
8172 dasm_put(Dst, 4253); 8466 dasm_put(Dst, 4494);
8173 } else { 8467 } else {
8174 if (vk) { 8468 if (vk) {
8175 dasm_put(Dst, 4260); 8469 dasm_put(Dst, 4501);
8176 } else { 8470 } else {
8177 dasm_put(Dst, 4262); 8471 dasm_put(Dst, 4503);
8178 } 8472 }
8179 dasm_put(Dst, 4264, -(BCBIAS_J*4 >> 16)); 8473 dasm_put(Dst, 4505, -(BCBIAS_J*4 >> 16));
8180 } 8474 }
8181 if (vk) { 8475 if (vk) {
8182 dasm_put(Dst, 4277); 8476 dasm_put(Dst, 4518);
8183 if (!LJ_HASFFI) { 8477 if (!LJ_HASFFI) {
8184 dasm_put(Dst, 4282); 8478 dasm_put(Dst, 4523);
8185 } 8479 }
8186 } else { 8480 } else {
8187 dasm_put(Dst, 4284); 8481 dasm_put(Dst, 4525);
8188 if (!LJ_HASFFI) { 8482 if (!LJ_HASFFI) {
8189 dasm_put(Dst, 4288); 8483 dasm_put(Dst, 4529);
8190 } 8484 }
8191 dasm_put(Dst, 4290); 8485 dasm_put(Dst, 4531);
8192 } 8486 }
8193 dasm_put(Dst, 4293); 8487 dasm_put(Dst, 4534);
8194 if (LJ_HASFFI) { 8488 if (LJ_HASFFI) {
8195 dasm_put(Dst, 4304, LJ_TCDATA); 8489 dasm_put(Dst, 4545, LJ_TCDATA);
8196 } 8490 }
8197 if (LJ_DUALNUM) { 8491 if (LJ_DUALNUM) {
8198 dasm_put(Dst, 4312); 8492 dasm_put(Dst, 4553);
8199 } 8493 }
8200 break; 8494 break;
8201 8495
8202 case BC_ISEQP: case BC_ISNEP: 8496 case BC_ISEQP: case BC_ISNEP:
8203 vk = op == BC_ISEQP; 8497 vk = op == BC_ISEQP;
8204 dasm_put(Dst, 4336, 32-3); 8498 dasm_put(Dst, 4577, 32-3);
8205 if (LJ_HASFFI) { 8499 if (LJ_HASFFI) {
8206 dasm_put(Dst, 4343, LJ_TCDATA); 8500 dasm_put(Dst, 4584, LJ_TCDATA);
8207 } 8501 }
8208 dasm_put(Dst, 4346); 8502 dasm_put(Dst, 4587);
8209 if (LJ_HASFFI) { 8503 if (LJ_HASFFI) {
8210 dasm_put(Dst, 4348); 8504 dasm_put(Dst, 4589);
8211 } 8505 }
8212 dasm_put(Dst, 4351, -(BCBIAS_J*4 >> 16)); 8506 dasm_put(Dst, 4592, -(BCBIAS_J*4 >> 16));
8213 if (vk) { 8507 if (vk) {
8214 dasm_put(Dst, 4357); 8508 dasm_put(Dst, 4598);
8215 } else { 8509 } else {
8216 dasm_put(Dst, 4359); 8510 dasm_put(Dst, 4600);
8217 } 8511 }
8218 dasm_put(Dst, 4361); 8512 dasm_put(Dst, 4602);
8219 break; 8513 break;
8220 8514
8221 /* -- Unary test and copy ops ------------------------------------------- */ 8515 /* -- Unary test and copy ops ------------------------------------------- */
8222 8516
8223 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 8517 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
8224 dasm_put(Dst, 4373); 8518 dasm_put(Dst, 4614);
8225 if (op == BC_IST || op == BC_ISF) { 8519 if (op == BC_IST || op == BC_ISF) {
8226 dasm_put(Dst, 4377, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); 8520 dasm_put(Dst, 4618, LJ_TTRUE, -(BCBIAS_J*4 >> 16));
8227 if (op == BC_IST) { 8521 if (op == BC_IST) {
8228 dasm_put(Dst, 4384); 8522 dasm_put(Dst, 4625);
8229 } else { 8523 } else {
8230 dasm_put(Dst, 4386); 8524 dasm_put(Dst, 4627);
8231 } 8525 }
8232 dasm_put(Dst, 4388); 8526 dasm_put(Dst, 4629);
8233 } else { 8527 } else {
8234 dasm_put(Dst, 4390, LJ_TFALSE); 8528 dasm_put(Dst, 4631, LJ_TFALSE);
8235 if (op == BC_ISTC) { 8529 if (op == BC_ISTC) {
8236 dasm_put(Dst, 4395); 8530 dasm_put(Dst, 4636);
8237 } else { 8531 } else {
8238 dasm_put(Dst, 4398); 8532 dasm_put(Dst, 4639);
8239 } 8533 }
8240 dasm_put(Dst, 4401, -(BCBIAS_J*4 >> 16)); 8534 dasm_put(Dst, 4642, -(BCBIAS_J*4 >> 16));
8241 } 8535 }
8242 dasm_put(Dst, 4408); 8536 dasm_put(Dst, 4649);
8243 break; 8537 break;
8244 8538
8245 /* -- Unary ops --------------------------------------------------------- */ 8539 /* -- Unary ops --------------------------------------------------------- */
8246 8540
8247 case BC_MOV: 8541 case BC_MOV:
8248 dasm_put(Dst, 4419); 8542 dasm_put(Dst, 4660);
8249 break; 8543 break;
8250 case BC_NOT: 8544 case BC_NOT:
8251 dasm_put(Dst, 4432, LJ_TTRUE); 8545 dasm_put(Dst, 4673, LJ_TTRUE);
8252 break; 8546 break;
8253 case BC_UNM: 8547 case BC_UNM:
8254 dasm_put(Dst, 4448); 8548 dasm_put(Dst, 4689);
8255 if (LJ_DUALNUM) { 8549 if (LJ_DUALNUM) {
8256 dasm_put(Dst, 4452); 8550 dasm_put(Dst, 4693);
8257 } 8551 }
8258 dasm_put(Dst, 4480); 8552 dasm_put(Dst, 4721);
8259 if (LJ_DUALNUM) { 8553 if (LJ_DUALNUM) {
8260 dasm_put(Dst, 4490); 8554 dasm_put(Dst, 4731);
8261 } else { 8555 } else {
8262 dasm_put(Dst, 4493); 8556 dasm_put(Dst, 4734);
8263 } 8557 }
8264 break; 8558 break;
8265 case BC_LEN: 8559 case BC_LEN:
8266 dasm_put(Dst, 4502, LJ_TSTR, Dt5(->len)); 8560 dasm_put(Dst, 4743, LJ_TSTR, Dt5(->len));
8267 if (LJ_DUALNUM) { 8561 if (LJ_DUALNUM) {
8268 dasm_put(Dst, 4512); 8562 dasm_put(Dst, 4753);
8269 } else { 8563 } else {
8270 dasm_put(Dst, 4517); 8564 dasm_put(Dst, 4758);
8271 } 8565 }
8272 dasm_put(Dst, 4524, LJ_TTAB); 8566 dasm_put(Dst, 4765, LJ_TTAB);
8273#ifdef LUAJIT_ENABLE_LUA52COMPAT 8567#ifdef LUAJIT_ENABLE_LUA52COMPAT
8274 dasm_put(Dst, 4538, Dt6(->metatable)); 8568 dasm_put(Dst, 4779, Dt6(->metatable));
8275#endif 8569#endif
8276 dasm_put(Dst, 4545); 8570 dasm_put(Dst, 4786);
8277#ifdef LUAJIT_ENABLE_LUA52COMPAT 8571#ifdef LUAJIT_ENABLE_LUA52COMPAT
8278 dasm_put(Dst, 4551, Dt6(->nomm), 1<<MM_len); 8572 dasm_put(Dst, 4792, Dt6(->nomm), 1<<MM_len);
8279#endif 8573#endif
8280 break; 8574 break;
8281 8575
@@ -8287,77 +8581,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8287 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8581 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8288 switch (vk) { 8582 switch (vk) {
8289 case 0: 8583 case 0:
8290 dasm_put(Dst, 4561); 8584 dasm_put(Dst, 4802);
8291 break; 8585 break;
8292 case 1: 8586 case 1:
8293 dasm_put(Dst, 4567); 8587 dasm_put(Dst, 4808);
8294 break; 8588 break;
8295 default: 8589 default:
8296 dasm_put(Dst, 4573); 8590 dasm_put(Dst, 4814);
8297 break; 8591 break;
8298 } 8592 }
8299 dasm_put(Dst, 4579); 8593 dasm_put(Dst, 4820);
8300 switch (vk) { 8594 switch (vk) {
8301 case 0: 8595 case 0:
8302 dasm_put(Dst, 4606); 8596 dasm_put(Dst, 4847);
8303 break; 8597 break;
8304 case 1: 8598 case 1:
8305 dasm_put(Dst, 4609); 8599 dasm_put(Dst, 4850);
8306 break; 8600 break;
8307 default: 8601 default:
8308 dasm_put(Dst, 4612); 8602 dasm_put(Dst, 4853);
8309 break; 8603 break;
8310 } 8604 }
8311 dasm_put(Dst, 4615); 8605 dasm_put(Dst, 4856);
8312 if (vk == 1) { 8606 if (vk == 1) {
8313 dasm_put(Dst, 4617); 8607 dasm_put(Dst, 4858);
8314 } else { 8608 } else {
8315 dasm_put(Dst, 4621); 8609 dasm_put(Dst, 4862);
8316 } 8610 }
8317 switch (vk) { 8611 switch (vk) {
8318 case 0: 8612 case 0:
8319 dasm_put(Dst, 4625); 8613 dasm_put(Dst, 4866);
8320 break; 8614 break;
8321 case 1: 8615 case 1:
8322 dasm_put(Dst, 4628); 8616 dasm_put(Dst, 4869);
8323 break; 8617 break;
8324 default: 8618 default:
8325 dasm_put(Dst, 4631); 8619 dasm_put(Dst, 4872);
8326 break; 8620 break;
8327 } 8621 }
8328 dasm_put(Dst, 4634); 8622 dasm_put(Dst, 4875);
8329 } else { 8623 } else {
8330 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8624 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8331 switch (vk) { 8625 switch (vk) {
8332 case 0: 8626 case 0:
8333 dasm_put(Dst, 4641); 8627 dasm_put(Dst, 4882);
8334 if (LJ_DUALNUM) { 8628 if (LJ_DUALNUM) {
8335 dasm_put(Dst, 4643); 8629 dasm_put(Dst, 4884);
8336 } 8630 }
8337 dasm_put(Dst, 4645); 8631 dasm_put(Dst, 4886);
8338 if (LJ_DUALNUM) { 8632 if (LJ_DUALNUM) {
8339 dasm_put(Dst, 4648); 8633 dasm_put(Dst, 4889);
8340 } else { 8634 } else {
8341 dasm_put(Dst, 4654); 8635 dasm_put(Dst, 4895);
8342 } 8636 }
8343 break; 8637 break;
8344 case 1: 8638 case 1:
8345 dasm_put(Dst, 4658); 8639 dasm_put(Dst, 4899);
8346 if (LJ_DUALNUM) { 8640 if (LJ_DUALNUM) {
8347 dasm_put(Dst, 4660); 8641 dasm_put(Dst, 4901);
8348 } 8642 }
8349 dasm_put(Dst, 4662); 8643 dasm_put(Dst, 4903);
8350 if (LJ_DUALNUM) { 8644 if (LJ_DUALNUM) {
8351 dasm_put(Dst, 4665); 8645 dasm_put(Dst, 4906);
8352 } else { 8646 } else {
8353 dasm_put(Dst, 4671); 8647 dasm_put(Dst, 4912);
8354 } 8648 }
8355 break; 8649 break;
8356 default: 8650 default:
8357 dasm_put(Dst, 4675); 8651 dasm_put(Dst, 4916);
8358 break; 8652 break;
8359 } 8653 }
8360 dasm_put(Dst, 4685); 8654 dasm_put(Dst, 4926);
8361 } 8655 }
8362 break; 8656 break;
8363 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 8657 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
@@ -8365,77 +8659,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8365 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8659 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8366 switch (vk) { 8660 switch (vk) {
8367 case 0: 8661 case 0:
8368 dasm_put(Dst, 4698); 8662 dasm_put(Dst, 4939);
8369 break; 8663 break;
8370 case 1: 8664 case 1:
8371 dasm_put(Dst, 4704); 8665 dasm_put(Dst, 4945);
8372 break; 8666 break;
8373 default: 8667 default:
8374 dasm_put(Dst, 4710); 8668 dasm_put(Dst, 4951);
8375 break; 8669 break;
8376 } 8670 }
8377 dasm_put(Dst, 4716); 8671 dasm_put(Dst, 4957);
8378 switch (vk) { 8672 switch (vk) {
8379 case 0: 8673 case 0:
8380 dasm_put(Dst, 4743); 8674 dasm_put(Dst, 4984);
8381 break; 8675 break;
8382 case 1: 8676 case 1:
8383 dasm_put(Dst, 4746); 8677 dasm_put(Dst, 4987);
8384 break; 8678 break;
8385 default: 8679 default:
8386 dasm_put(Dst, 4749); 8680 dasm_put(Dst, 4990);
8387 break; 8681 break;
8388 } 8682 }
8389 dasm_put(Dst, 4752); 8683 dasm_put(Dst, 4993);
8390 if (vk == 1) { 8684 if (vk == 1) {
8391 dasm_put(Dst, 4754); 8685 dasm_put(Dst, 4995);
8392 } else { 8686 } else {
8393 dasm_put(Dst, 4758); 8687 dasm_put(Dst, 4999);
8394 } 8688 }
8395 switch (vk) { 8689 switch (vk) {
8396 case 0: 8690 case 0:
8397 dasm_put(Dst, 4762); 8691 dasm_put(Dst, 5003);
8398 break; 8692 break;
8399 case 1: 8693 case 1:
8400 dasm_put(Dst, 4765); 8694 dasm_put(Dst, 5006);
8401 break; 8695 break;
8402 default: 8696 default:
8403 dasm_put(Dst, 4768); 8697 dasm_put(Dst, 5009);
8404 break; 8698 break;
8405 } 8699 }
8406 dasm_put(Dst, 4771); 8700 dasm_put(Dst, 5012);
8407 } else { 8701 } else {
8408 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8702 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8409 switch (vk) { 8703 switch (vk) {
8410 case 0: 8704 case 0:
8411 dasm_put(Dst, 4778); 8705 dasm_put(Dst, 5019);
8412 if (LJ_DUALNUM) { 8706 if (LJ_DUALNUM) {
8413 dasm_put(Dst, 4780); 8707 dasm_put(Dst, 5021);
8414 } 8708 }
8415 dasm_put(Dst, 4782); 8709 dasm_put(Dst, 5023);
8416 if (LJ_DUALNUM) { 8710 if (LJ_DUALNUM) {
8417 dasm_put(Dst, 4785); 8711 dasm_put(Dst, 5026);
8418 } else { 8712 } else {
8419 dasm_put(Dst, 4791); 8713 dasm_put(Dst, 5032);
8420 } 8714 }
8421 break; 8715 break;
8422 case 1: 8716 case 1:
8423 dasm_put(Dst, 4795); 8717 dasm_put(Dst, 5036);
8424 if (LJ_DUALNUM) { 8718 if (LJ_DUALNUM) {
8425 dasm_put(Dst, 4797); 8719 dasm_put(Dst, 5038);
8426 } 8720 }
8427 dasm_put(Dst, 4799); 8721 dasm_put(Dst, 5040);
8428 if (LJ_DUALNUM) { 8722 if (LJ_DUALNUM) {
8429 dasm_put(Dst, 4802); 8723 dasm_put(Dst, 5043);
8430 } else { 8724 } else {
8431 dasm_put(Dst, 4808); 8725 dasm_put(Dst, 5049);
8432 } 8726 }
8433 break; 8727 break;
8434 default: 8728 default:
8435 dasm_put(Dst, 4812); 8729 dasm_put(Dst, 5053);
8436 break; 8730 break;
8437 } 8731 }
8438 dasm_put(Dst, 4822); 8732 dasm_put(Dst, 5063);
8439 } 8733 }
8440 break; 8734 break;
8441 case BC_MULVN: case BC_MULNV: case BC_MULVV: 8735 case BC_MULVN: case BC_MULNV: case BC_MULVV:
@@ -8443,188 +8737,188 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8443 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8737 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8444 switch (vk) { 8738 switch (vk) {
8445 case 0: 8739 case 0:
8446 dasm_put(Dst, 4835); 8740 dasm_put(Dst, 5076);
8447 break; 8741 break;
8448 case 1: 8742 case 1:
8449 dasm_put(Dst, 4841); 8743 dasm_put(Dst, 5082);
8450 break; 8744 break;
8451 default: 8745 default:
8452 dasm_put(Dst, 4847); 8746 dasm_put(Dst, 5088);
8453 break; 8747 break;
8454 } 8748 }
8455 dasm_put(Dst, 4853); 8749 dasm_put(Dst, 5094);
8456 switch (vk) { 8750 switch (vk) {
8457 case 0: 8751 case 0:
8458 dasm_put(Dst, 4880); 8752 dasm_put(Dst, 5121);
8459 break; 8753 break;
8460 case 1: 8754 case 1:
8461 dasm_put(Dst, 4883); 8755 dasm_put(Dst, 5124);
8462 break; 8756 break;
8463 default: 8757 default:
8464 dasm_put(Dst, 4886); 8758 dasm_put(Dst, 5127);
8465 break; 8759 break;
8466 } 8760 }
8467 dasm_put(Dst, 4889); 8761 dasm_put(Dst, 5130);
8468 if (vk == 1) { 8762 if (vk == 1) {
8469 dasm_put(Dst, 4891); 8763 dasm_put(Dst, 5132);
8470 } else { 8764 } else {
8471 dasm_put(Dst, 4895); 8765 dasm_put(Dst, 5136);
8472 } 8766 }
8473 switch (vk) { 8767 switch (vk) {
8474 case 0: 8768 case 0:
8475 dasm_put(Dst, 4899); 8769 dasm_put(Dst, 5140);
8476 break; 8770 break;
8477 case 1: 8771 case 1:
8478 dasm_put(Dst, 4902); 8772 dasm_put(Dst, 5143);
8479 break; 8773 break;
8480 default: 8774 default:
8481 dasm_put(Dst, 4905); 8775 dasm_put(Dst, 5146);
8482 break; 8776 break;
8483 } 8777 }
8484 dasm_put(Dst, 4908); 8778 dasm_put(Dst, 5149);
8485 } else { 8779 } else {
8486 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8780 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8487 switch (vk) { 8781 switch (vk) {
8488 case 0: 8782 case 0:
8489 dasm_put(Dst, 4915); 8783 dasm_put(Dst, 5156);
8490 if (LJ_DUALNUM) { 8784 if (LJ_DUALNUM) {
8491 dasm_put(Dst, 4917); 8785 dasm_put(Dst, 5158);
8492 } 8786 }
8493 dasm_put(Dst, 4919); 8787 dasm_put(Dst, 5160);
8494 if (LJ_DUALNUM) { 8788 if (LJ_DUALNUM) {
8495 dasm_put(Dst, 4922); 8789 dasm_put(Dst, 5163);
8496 } else { 8790 } else {
8497 dasm_put(Dst, 4928); 8791 dasm_put(Dst, 5169);
8498 } 8792 }
8499 break; 8793 break;
8500 case 1: 8794 case 1:
8501 dasm_put(Dst, 4932); 8795 dasm_put(Dst, 5173);
8502 if (LJ_DUALNUM) { 8796 if (LJ_DUALNUM) {
8503 dasm_put(Dst, 4934); 8797 dasm_put(Dst, 5175);
8504 } 8798 }
8505 dasm_put(Dst, 4936); 8799 dasm_put(Dst, 5177);
8506 if (LJ_DUALNUM) { 8800 if (LJ_DUALNUM) {
8507 dasm_put(Dst, 4939); 8801 dasm_put(Dst, 5180);
8508 } else { 8802 } else {
8509 dasm_put(Dst, 4945); 8803 dasm_put(Dst, 5186);
8510 } 8804 }
8511 break; 8805 break;
8512 default: 8806 default:
8513 dasm_put(Dst, 4949); 8807 dasm_put(Dst, 5190);
8514 break; 8808 break;
8515 } 8809 }
8516 dasm_put(Dst, 4959); 8810 dasm_put(Dst, 5200);
8517 } 8811 }
8518 break; 8812 break;
8519 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 8813 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
8520 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8814 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8521 switch (vk) { 8815 switch (vk) {
8522 case 0: 8816 case 0:
8523 dasm_put(Dst, 4972); 8817 dasm_put(Dst, 5213);
8524 if (LJ_DUALNUM) { 8818 if (LJ_DUALNUM) {
8525 dasm_put(Dst, 4974); 8819 dasm_put(Dst, 5215);
8526 } 8820 }
8527 dasm_put(Dst, 4976); 8821 dasm_put(Dst, 5217);
8528 if (LJ_DUALNUM) { 8822 if (LJ_DUALNUM) {
8529 dasm_put(Dst, 4979); 8823 dasm_put(Dst, 5220);
8530 } else { 8824 } else {
8531 dasm_put(Dst, 4985); 8825 dasm_put(Dst, 5226);
8532 } 8826 }
8533 break; 8827 break;
8534 case 1: 8828 case 1:
8535 dasm_put(Dst, 4989); 8829 dasm_put(Dst, 5230);
8536 if (LJ_DUALNUM) { 8830 if (LJ_DUALNUM) {
8537 dasm_put(Dst, 4991); 8831 dasm_put(Dst, 5232);
8538 } 8832 }
8539 dasm_put(Dst, 4993); 8833 dasm_put(Dst, 5234);
8540 if (LJ_DUALNUM) { 8834 if (LJ_DUALNUM) {
8541 dasm_put(Dst, 4996); 8835 dasm_put(Dst, 5237);
8542 } else { 8836 } else {
8543 dasm_put(Dst, 5002); 8837 dasm_put(Dst, 5243);
8544 } 8838 }
8545 break; 8839 break;
8546 default: 8840 default:
8547 dasm_put(Dst, 5006); 8841 dasm_put(Dst, 5247);
8548 break; 8842 break;
8549 } 8843 }
8550 dasm_put(Dst, 5016); 8844 dasm_put(Dst, 5257);
8551 break; 8845 break;
8552 case BC_MODVN: 8846 case BC_MODVN:
8553 if (LJ_DUALNUM) { 8847 if (LJ_DUALNUM) {
8554 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8848 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8555 switch (vk) { 8849 switch (vk) {
8556 case 0: 8850 case 0:
8557 dasm_put(Dst, 5029); 8851 dasm_put(Dst, 5270);
8558 break; 8852 break;
8559 case 1: 8853 case 1:
8560 dasm_put(Dst, 5035); 8854 dasm_put(Dst, 5276);
8561 break; 8855 break;
8562 default: 8856 default:
8563 dasm_put(Dst, 5041); 8857 dasm_put(Dst, 5282);
8564 break; 8858 break;
8565 } 8859 }
8566 dasm_put(Dst, 5047); 8860 dasm_put(Dst, 5288);
8567 switch (vk) { 8861 switch (vk) {
8568 case 0: 8862 case 0:
8569 dasm_put(Dst, 5075); 8863 dasm_put(Dst, 5316);
8570 break; 8864 break;
8571 case 1: 8865 case 1:
8572 dasm_put(Dst, 5078); 8866 dasm_put(Dst, 5319);
8573 break; 8867 break;
8574 default: 8868 default:
8575 dasm_put(Dst, 5081); 8869 dasm_put(Dst, 5322);
8576 break; 8870 break;
8577 } 8871 }
8578 dasm_put(Dst, 5084); 8872 dasm_put(Dst, 5325);
8579 if (vk == 1) { 8873 if (vk == 1) {
8580 dasm_put(Dst, 5086); 8874 dasm_put(Dst, 5327);
8581 } else { 8875 } else {
8582 dasm_put(Dst, 5090); 8876 dasm_put(Dst, 5331);
8583 } 8877 }
8584 switch (vk) { 8878 switch (vk) {
8585 case 0: 8879 case 0:
8586 dasm_put(Dst, 5094); 8880 dasm_put(Dst, 5335);
8587 break; 8881 break;
8588 case 1: 8882 case 1:
8589 dasm_put(Dst, 5097); 8883 dasm_put(Dst, 5338);
8590 break; 8884 break;
8591 default: 8885 default:
8592 dasm_put(Dst, 5100); 8886 dasm_put(Dst, 5341);
8593 break; 8887 break;
8594 } 8888 }
8595 dasm_put(Dst, 5103); 8889 dasm_put(Dst, 5344);
8596 } else { 8890 } else {
8597 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8891 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8598 switch (vk) { 8892 switch (vk) {
8599 case 0: 8893 case 0:
8600 dasm_put(Dst, 5115); 8894 dasm_put(Dst, 5356);
8601 if (LJ_DUALNUM) { 8895 if (LJ_DUALNUM) {
8602 dasm_put(Dst, 5117); 8896 dasm_put(Dst, 5358);
8603 } 8897 }
8604 dasm_put(Dst, 5119); 8898 dasm_put(Dst, 5360);
8605 if (LJ_DUALNUM) { 8899 if (LJ_DUALNUM) {
8606 dasm_put(Dst, 5122); 8900 dasm_put(Dst, 5363);
8607 } else { 8901 } else {
8608 dasm_put(Dst, 5128); 8902 dasm_put(Dst, 5369);
8609 } 8903 }
8610 break; 8904 break;
8611 case 1: 8905 case 1:
8612 dasm_put(Dst, 5132); 8906 dasm_put(Dst, 5373);
8613 if (LJ_DUALNUM) { 8907 if (LJ_DUALNUM) {
8614 dasm_put(Dst, 5134); 8908 dasm_put(Dst, 5375);
8615 } 8909 }
8616 dasm_put(Dst, 5136); 8910 dasm_put(Dst, 5377);
8617 if (LJ_DUALNUM) { 8911 if (LJ_DUALNUM) {
8618 dasm_put(Dst, 5139); 8912 dasm_put(Dst, 5380);
8619 } else { 8913 } else {
8620 dasm_put(Dst, 5145); 8914 dasm_put(Dst, 5386);
8621 } 8915 }
8622 break; 8916 break;
8623 default: 8917 default:
8624 dasm_put(Dst, 5149); 8918 dasm_put(Dst, 5390);
8625 break; 8919 break;
8626 } 8920 }
8627 dasm_put(Dst, 5159); 8921 dasm_put(Dst, 5400);
8628 } 8922 }
8629 break; 8923 break;
8630 case BC_MODNV: case BC_MODVV: 8924 case BC_MODNV: case BC_MODVV:
@@ -8632,298 +8926,298 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8632 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8926 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8633 switch (vk) { 8927 switch (vk) {
8634 case 0: 8928 case 0:
8635 dasm_put(Dst, 5177); 8929 dasm_put(Dst, 5418);
8636 break; 8930 break;
8637 case 1: 8931 case 1:
8638 dasm_put(Dst, 5183); 8932 dasm_put(Dst, 5424);
8639 break; 8933 break;
8640 default: 8934 default:
8641 dasm_put(Dst, 5189); 8935 dasm_put(Dst, 5430);
8642 break; 8936 break;
8643 } 8937 }
8644 dasm_put(Dst, 5195); 8938 dasm_put(Dst, 5436);
8645 switch (vk) { 8939 switch (vk) {
8646 case 0: 8940 case 0:
8647 dasm_put(Dst, 5223); 8941 dasm_put(Dst, 5464);
8648 break; 8942 break;
8649 case 1: 8943 case 1:
8650 dasm_put(Dst, 5226); 8944 dasm_put(Dst, 5467);
8651 break; 8945 break;
8652 default: 8946 default:
8653 dasm_put(Dst, 5229); 8947 dasm_put(Dst, 5470);
8654 break; 8948 break;
8655 } 8949 }
8656 dasm_put(Dst, 5232); 8950 dasm_put(Dst, 5473);
8657 if (vk == 1) { 8951 if (vk == 1) {
8658 dasm_put(Dst, 5234); 8952 dasm_put(Dst, 5475);
8659 } else { 8953 } else {
8660 dasm_put(Dst, 5238); 8954 dasm_put(Dst, 5479);
8661 } 8955 }
8662 switch (vk) { 8956 switch (vk) {
8663 case 0: 8957 case 0:
8664 dasm_put(Dst, 5242); 8958 dasm_put(Dst, 5483);
8665 break; 8959 break;
8666 case 1: 8960 case 1:
8667 dasm_put(Dst, 5245); 8961 dasm_put(Dst, 5486);
8668 break; 8962 break;
8669 default: 8963 default:
8670 dasm_put(Dst, 5248); 8964 dasm_put(Dst, 5489);
8671 break; 8965 break;
8672 } 8966 }
8673 dasm_put(Dst, 5251); 8967 dasm_put(Dst, 5492);
8674 } else { 8968 } else {
8675 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8969 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8676 switch (vk) { 8970 switch (vk) {
8677 case 0: 8971 case 0:
8678 dasm_put(Dst, 5254); 8972 dasm_put(Dst, 5495);
8679 if (LJ_DUALNUM) { 8973 if (LJ_DUALNUM) {
8680 dasm_put(Dst, 5256); 8974 dasm_put(Dst, 5497);
8681 } 8975 }
8682 dasm_put(Dst, 5258); 8976 dasm_put(Dst, 5499);
8683 if (LJ_DUALNUM) { 8977 if (LJ_DUALNUM) {
8684 dasm_put(Dst, 5261); 8978 dasm_put(Dst, 5502);
8685 } else { 8979 } else {
8686 dasm_put(Dst, 5267); 8980 dasm_put(Dst, 5508);
8687 } 8981 }
8688 break; 8982 break;
8689 case 1: 8983 case 1:
8690 dasm_put(Dst, 5271); 8984 dasm_put(Dst, 5512);
8691 if (LJ_DUALNUM) { 8985 if (LJ_DUALNUM) {
8692 dasm_put(Dst, 5273); 8986 dasm_put(Dst, 5514);
8693 } 8987 }
8694 dasm_put(Dst, 5275); 8988 dasm_put(Dst, 5516);
8695 if (LJ_DUALNUM) { 8989 if (LJ_DUALNUM) {
8696 dasm_put(Dst, 5278); 8990 dasm_put(Dst, 5519);
8697 } else { 8991 } else {
8698 dasm_put(Dst, 5284); 8992 dasm_put(Dst, 5525);
8699 } 8993 }
8700 break; 8994 break;
8701 default: 8995 default:
8702 dasm_put(Dst, 5288); 8996 dasm_put(Dst, 5529);
8703 break; 8997 break;
8704 } 8998 }
8705 dasm_put(Dst, 5298); 8999 dasm_put(Dst, 5539);
8706 } 9000 }
8707 break; 9001 break;
8708 case BC_POW: 9002 case BC_POW:
8709 dasm_put(Dst, 5301); 9003 dasm_put(Dst, 5542);
8710 break; 9004 break;
8711 9005
8712 case BC_CAT: 9006 case BC_CAT:
8713 dasm_put(Dst, 5324, Dt1(->base), 32-3, Dt1(->base)); 9007 dasm_put(Dst, 5565, Dt1(->base), 32-3, Dt1(->base));
8714 break; 9008 break;
8715 9009
8716 /* -- Constant ops ------------------------------------------------------ */ 9010 /* -- Constant ops ------------------------------------------------------ */
8717 9011
8718 case BC_KSTR: 9012 case BC_KSTR:
8719 dasm_put(Dst, 5354, 32-1, LJ_TSTR); 9013 dasm_put(Dst, 5595, 32-1, LJ_TSTR);
8720 break; 9014 break;
8721 case BC_KCDATA: 9015 case BC_KCDATA:
8722#if LJ_HASFFI 9016#if LJ_HASFFI
8723 dasm_put(Dst, 5373, 32-1, LJ_TCDATA); 9017 dasm_put(Dst, 5614, 32-1, LJ_TCDATA);
8724#endif 9018#endif
8725 break; 9019 break;
8726 case BC_KSHORT: 9020 case BC_KSHORT:
8727 if (LJ_DUALNUM) { 9021 if (LJ_DUALNUM) {
8728 dasm_put(Dst, 5392, 31-13); 9022 dasm_put(Dst, 5633, 31-13);
8729 } else { 9023 } else {
8730 dasm_put(Dst, 5408, 31-13, 31-20); 9024 dasm_put(Dst, 5649, 31-13, 31-20);
8731 } 9025 }
8732 break; 9026 break;
8733 case BC_KNUM: 9027 case BC_KNUM:
8734 dasm_put(Dst, 5436); 9028 dasm_put(Dst, 5677);
8735 break; 9029 break;
8736 case BC_KPRI: 9030 case BC_KPRI:
8737 dasm_put(Dst, 5449, 32-3); 9031 dasm_put(Dst, 5690, 32-3);
8738 break; 9032 break;
8739 case BC_KNIL: 9033 case BC_KNIL:
8740 dasm_put(Dst, 5464); 9034 dasm_put(Dst, 5705);
8741 break; 9035 break;
8742 9036
8743 /* -- Upvalue and function ops ------------------------------------------ */ 9037 /* -- Upvalue and function ops ------------------------------------------ */
8744 9038
8745 case BC_UGET: 9039 case BC_UGET:
8746 dasm_put(Dst, 5483, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 9040 dasm_put(Dst, 5724, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
8747 break; 9041 break;
8748 case BC_USETV: 9042 case BC_USETV:
8749 dasm_put(Dst, 5504, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 9043 dasm_put(Dst, 5745, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
8750 break; 9044 break;
8751 case BC_USETS: 9045 case BC_USETS:
8752 dasm_put(Dst, 5557, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); 9046 dasm_put(Dst, 5798, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G);
8753 break; 9047 break;
8754 case BC_USETN: 9048 case BC_USETN:
8755 dasm_put(Dst, 5608, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 9049 dasm_put(Dst, 5849, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
8756 break; 9050 break;
8757 case BC_USETP: 9051 case BC_USETP:
8758 dasm_put(Dst, 5629, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); 9052 dasm_put(Dst, 5870, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v));
8759 break; 9053 break;
8760 9054
8761 case BC_UCLO: 9055 case BC_UCLO:
8762 dasm_put(Dst, 5652, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); 9056 dasm_put(Dst, 5893, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
8763 break; 9057 break;
8764 9058
8765 case BC_FNEW: 9059 case BC_FNEW:
8766 dasm_put(Dst, 5682, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); 9060 dasm_put(Dst, 5923, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC);
8767 break; 9061 break;
8768 9062
8769 /* -- Table ops --------------------------------------------------------- */ 9063 /* -- Table ops --------------------------------------------------------- */
8770 9064
8771 case BC_TNEW: 9065 case BC_TNEW:
8772 case BC_TDUP: 9066 case BC_TDUP:
8773 dasm_put(Dst, 5710, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 9067 dasm_put(Dst, 5951, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
8774 if (op == BC_TNEW) { 9068 if (op == BC_TNEW) {
8775 dasm_put(Dst, 5723); 9069 dasm_put(Dst, 5964);
8776 } else { 9070 } else {
8777 dasm_put(Dst, 5732, 32-1); 9071 dasm_put(Dst, 5973, 32-1);
8778 } 9072 }
8779 dasm_put(Dst, 5739, Dt1(->base), LJ_TTAB); 9073 dasm_put(Dst, 5980, Dt1(->base), LJ_TTAB);
8780 if (op == BC_TNEW) { 9074 if (op == BC_TNEW) {
8781 dasm_put(Dst, 5756); 9075 dasm_put(Dst, 5997);
8782 } 9076 }
8783 dasm_put(Dst, 5761); 9077 dasm_put(Dst, 6002);
8784 break; 9078 break;
8785 9079
8786 case BC_GGET: 9080 case BC_GGET:
8787 case BC_GSET: 9081 case BC_GSET:
8788 dasm_put(Dst, 5770, 32-1, Dt7(->env)); 9082 dasm_put(Dst, 6011, 32-1, Dt7(->env));
8789 if (op == BC_GGET) { 9083 if (op == BC_GGET) {
8790 dasm_put(Dst, 5778); 9084 dasm_put(Dst, 6019);
8791 } else { 9085 } else {
8792 dasm_put(Dst, 5781); 9086 dasm_put(Dst, 6022);
8793 } 9087 }
8794 break; 9088 break;
8795 9089
8796 case BC_TGETV: 9090 case BC_TGETV:
8797 dasm_put(Dst, 5784); 9091 dasm_put(Dst, 6025);
8798 if (LJ_DUALNUM) { 9092 if (LJ_DUALNUM) {
8799 dasm_put(Dst, 5788); 9093 dasm_put(Dst, 6029);
8800 } else { 9094 } else {
8801 dasm_put(Dst, 5790); 9095 dasm_put(Dst, 6031);
8802 } 9096 }
8803 dasm_put(Dst, 5792, LJ_TTAB); 9097 dasm_put(Dst, 6033, LJ_TTAB);
8804 if (LJ_DUALNUM) { 9098 if (LJ_DUALNUM) {
8805 dasm_put(Dst, 5798, Dt6(->asize), Dt6(->array), 31-3); 9099 dasm_put(Dst, 6039, Dt6(->asize), Dt6(->array), 31-3);
8806 } else { 9100 } else {
8807 dasm_put(Dst, 5808, Dt6(->asize), Dt6(->array), 31-3); 9101 dasm_put(Dst, 6049, Dt6(->asize), Dt6(->array), 31-3);
8808 } 9102 }
8809 dasm_put(Dst, 5825, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); 9103 dasm_put(Dst, 6066, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR);
8810 if (!LJ_DUALNUM) { 9104 if (!LJ_DUALNUM) {
8811 dasm_put(Dst, 5865); 9105 dasm_put(Dst, 6106);
8812 } 9106 }
8813 dasm_put(Dst, 5867); 9107 dasm_put(Dst, 6108);
8814 break; 9108 break;
8815 case BC_TGETS: 9109 case BC_TGETS:
8816 dasm_put(Dst, 5870, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); 9110 dasm_put(Dst, 6111, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next));
8817 dasm_put(Dst, 5931, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 9111 dasm_put(Dst, 6172, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
8818 break; 9112 break;
8819 case BC_TGETB: 9113 case BC_TGETB:
8820 dasm_put(Dst, 5951, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 9114 dasm_put(Dst, 6192, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
8821 break; 9115 break;
8822 9116
8823 case BC_TSETV: 9117 case BC_TSETV:
8824 dasm_put(Dst, 5999); 9118 dasm_put(Dst, 6240);
8825 if (LJ_DUALNUM) { 9119 if (LJ_DUALNUM) {
8826 dasm_put(Dst, 6003); 9120 dasm_put(Dst, 6244);
8827 } else { 9121 } else {
8828 dasm_put(Dst, 6005); 9122 dasm_put(Dst, 6246);
8829 } 9123 }
8830 dasm_put(Dst, 6007, LJ_TTAB); 9124 dasm_put(Dst, 6248, LJ_TTAB);
8831 if (LJ_DUALNUM) { 9125 if (LJ_DUALNUM) {
8832 dasm_put(Dst, 6013, Dt6(->asize), Dt6(->array), 31-3); 9126 dasm_put(Dst, 6254, Dt6(->asize), Dt6(->array), 31-3);
8833 } else { 9127 } else {
8834 dasm_put(Dst, 6023, Dt6(->asize), Dt6(->array), 31-3); 9128 dasm_put(Dst, 6264, Dt6(->asize), Dt6(->array), 31-3);
8835 } 9129 }
8836 dasm_put(Dst, 6040, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); 9130 dasm_put(Dst, 6281, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR);
8837 if (!LJ_DUALNUM) { 9131 if (!LJ_DUALNUM) {
8838 dasm_put(Dst, 6087); 9132 dasm_put(Dst, 6328);
8839 } 9133 }
8840 dasm_put(Dst, 6089, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9134 dasm_put(Dst, 6330, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
8841 break; 9135 break;
8842 dasm_put(Dst, 6104, LJ_TSTR, LJ_TNIL); 9136 dasm_put(Dst, 6345, LJ_TSTR, LJ_TNIL);
8843 case BC_TSETS: 9137 case BC_TSETS:
8844 dasm_put(Dst, 6130, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL); 9138 dasm_put(Dst, 6371, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL);
8845 dasm_put(Dst, 6181, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex); 9139 dasm_put(Dst, 6422, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex);
8846 dasm_put(Dst, 6237, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9140 dasm_put(Dst, 6478, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
8847 break; 9141 break;
8848 case BC_TSETB: 9142 case BC_TSETB:
8849 dasm_put(Dst, 6262, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); 9143 dasm_put(Dst, 6503, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain));
8850 dasm_put(Dst, 6320, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9144 dasm_put(Dst, 6561, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
8851 break; 9145 break;
8852 9146
8853 case BC_TSETM: 9147 case BC_TSETM:
8854 dasm_put(Dst, 6330, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9148 dasm_put(Dst, 6571, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
8855 dasm_put(Dst, 6399); 9149 dasm_put(Dst, 6640);
8856 break; 9150 break;
8857 9151
8858 /* -- Calls and vararg handling ----------------------------------------- */ 9152 /* -- Calls and vararg handling ----------------------------------------- */
8859 9153
8860 case BC_CALLM: 9154 case BC_CALLM:
8861 dasm_put(Dst, 6402); 9155 dasm_put(Dst, 6643);
8862 break; 9156 break;
8863 case BC_CALL: 9157 case BC_CALL:
8864 dasm_put(Dst, 6404, LJ_TFUNC, Dt7(->pc)); 9158 dasm_put(Dst, 6645, LJ_TFUNC, Dt7(->pc));
8865 break; 9159 break;
8866 9160
8867 case BC_CALLMT: 9161 case BC_CALLMT:
8868 dasm_put(Dst, 6425); 9162 dasm_put(Dst, 6666);
8869 break; 9163 break;
8870 case BC_CALLT: 9164 case BC_CALLT:
8871 dasm_put(Dst, 6427, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 9165 dasm_put(Dst, 6668, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
8872 dasm_put(Dst, 6491, FRAME_TYPE); 9166 dasm_put(Dst, 6732, FRAME_TYPE);
8873 break; 9167 break;
8874 9168
8875 case BC_ITERC: 9169 case BC_ITERC:
8876 dasm_put(Dst, 6500, LJ_TFUNC, Dt7(->pc)); 9170 dasm_put(Dst, 6741, LJ_TFUNC, Dt7(->pc));
8877 break; 9171 break;
8878 9172
8879 case BC_ITERN: 9173 case BC_ITERN:
8880#if LJ_HASJIT 9174#if LJ_HASJIT
8881#endif 9175#endif
8882 dasm_put(Dst, 6527, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); 9176 dasm_put(Dst, 6768, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL);
8883 if (LJ_DUALNUM) { 9177 if (LJ_DUALNUM) {
8884 dasm_put(Dst, 6549); 9178 dasm_put(Dst, 6790);
8885 } else { 9179 } else {
8886 dasm_put(Dst, 6552); 9180 dasm_put(Dst, 6793);
8887 } 9181 }
8888 dasm_put(Dst, 6556, -(BCBIAS_J*4 >> 16)); 9182 dasm_put(Dst, 6797, -(BCBIAS_J*4 >> 16));
8889 if (!LJ_DUALNUM) { 9183 if (!LJ_DUALNUM) {
8890 dasm_put(Dst, 6564); 9184 dasm_put(Dst, 6805);
8891 } 9185 }
8892 dasm_put(Dst, 6566, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); 9186 dasm_put(Dst, 6807, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16));
8893 break; 9187 break;
8894 9188
8895 case BC_ISNEXT: 9189 case BC_ISNEXT:
8896 dasm_put(Dst, 6622, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); 9190 dasm_put(Dst, 6863, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16));
8897 break; 9191 break;
8898 9192
8899 case BC_VARG: 9193 case BC_VARG:
8900 dasm_put(Dst, 6672, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); 9194 dasm_put(Dst, 6913, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
8901 dasm_put(Dst, 6752); 9195 dasm_put(Dst, 6993);
8902 break; 9196 break;
8903 9197
8904 /* -- Returns ----------------------------------------------------------- */ 9198 /* -- Returns ----------------------------------------------------------- */
8905 9199
8906 case BC_RETM: 9200 case BC_RETM:
8907 dasm_put(Dst, 6758); 9201 dasm_put(Dst, 6999);
8908 break; 9202 break;
8909 9203
8910 case BC_RET: 9204 case BC_RET:
8911 dasm_put(Dst, 6760, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 9205 dasm_put(Dst, 7001, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
8912 break; 9206 break;
8913 9207
8914 case BC_RET0: case BC_RET1: 9208 case BC_RET0: case BC_RET1:
8915 dasm_put(Dst, 6830, FRAME_TYPE, FRAME_VARG); 9209 dasm_put(Dst, 7071, FRAME_TYPE, FRAME_VARG);
8916 if (op == BC_RET1) { 9210 if (op == BC_RET1) {
8917 dasm_put(Dst, 6843); 9211 dasm_put(Dst, 7084);
8918 } 9212 }
8919 dasm_put(Dst, 6846, Dt7(->pc), PC2PROTO(k)); 9213 dasm_put(Dst, 7087, Dt7(->pc), PC2PROTO(k));
8920 break; 9214 break;
8921 9215
8922 /* -- Loops and branches ------------------------------------------------ */ 9216 /* -- Loops and branches ------------------------------------------------ */
8923 9217
8924 case BC_FORL: 9218 case BC_FORL:
8925#if LJ_HASJIT 9219#if LJ_HASJIT
8926 dasm_put(Dst, 6874); 9220 dasm_put(Dst, 7115, GG_DISP2HOT, -HOTCOUNT_LOOP);
8927#endif 9221#endif
8928 break; 9222 break;
8929 9223
@@ -8936,93 +9230,93 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8936 case BC_IFORL: 9230 case BC_IFORL:
8937 vk = (op == BC_IFORL || op == BC_JFORL); 9231 vk = (op == BC_IFORL || op == BC_JFORL);
8938 if (LJ_DUALNUM) { 9232 if (LJ_DUALNUM) {
8939 dasm_put(Dst, 6876, FORL_IDX*8+4); 9233 dasm_put(Dst, 7125, FORL_IDX*8+4);
8940 if (vk) { 9234 if (vk) {
8941 dasm_put(Dst, 6881, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); 9235 dasm_put(Dst, 7130, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4);
8942 } else { 9236 } else {
8943 dasm_put(Dst, 6895, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); 9237 dasm_put(Dst, 7144, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4);
8944 } 9238 }
8945 dasm_put(Dst, 6911, FORL_EXT*8); 9239 dasm_put(Dst, 7160, FORL_EXT*8);
8946 if (op != BC_JFORL) { 9240 if (op != BC_JFORL) {
8947 dasm_put(Dst, 6918, 32-1); 9241 dasm_put(Dst, 7167, 32-1);
8948 } 9242 }
8949 dasm_put(Dst, 6921, FORL_EXT*8+4); 9243 dasm_put(Dst, 7170, FORL_EXT*8+4);
8950 if (op != BC_JFORL) { 9244 if (op != BC_JFORL) {
8951 dasm_put(Dst, 6924); 9245 dasm_put(Dst, 7173);
8952 } 9246 }
8953 if (op == BC_FORI) { 9247 if (op == BC_FORI) {
8954 dasm_put(Dst, 6926); 9248 dasm_put(Dst, 7175);
8955 } else if (op == BC_JFORI) { 9249 } else if (op == BC_JFORI) {
8956 dasm_put(Dst, 6929, -(BCBIAS_J*4 >> 16), BC_JLOOP); 9250 dasm_put(Dst, 7178, -(BCBIAS_J*4 >> 16), BC_JLOOP);
8957 } else if (op == BC_IFORL) { 9251 } else if (op == BC_IFORL) {
8958 dasm_put(Dst, 6934, -(BCBIAS_J*4 >> 16)); 9252 dasm_put(Dst, 7183, -(BCBIAS_J*4 >> 16));
8959 } else { 9253 } else {
8960 dasm_put(Dst, 6939, BC_JLOOP); 9254 dasm_put(Dst, 7188, BC_JLOOP);
8961 } 9255 }
8962 dasm_put(Dst, 6942); 9256 dasm_put(Dst, 7191);
8963 if (vk) { 9257 if (vk) {
8964 dasm_put(Dst, 6958); 9258 dasm_put(Dst, 7207);
8965 } 9259 }
8966 } 9260 }
8967 if (vk) { 9261 if (vk) {
8968 if (LJ_DUALNUM) { 9262 if (LJ_DUALNUM) {
8969 dasm_put(Dst, 6965, FORL_IDX*8); 9263 dasm_put(Dst, 7214, FORL_IDX*8);
8970 } else { 9264 } else {
8971 dasm_put(Dst, 6969); 9265 dasm_put(Dst, 7218);
8972 } 9266 }
8973 dasm_put(Dst, 6971, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); 9267 dasm_put(Dst, 7220, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8);
8974 } else { 9268 } else {
8975 if (LJ_DUALNUM) { 9269 if (LJ_DUALNUM) {
8976 dasm_put(Dst, 6981); 9270 dasm_put(Dst, 7230);
8977 } else { 9271 } else {
8978 dasm_put(Dst, 6983, FORL_STEP*8, FORL_STOP*8); 9272 dasm_put(Dst, 7232, FORL_STEP*8, FORL_STOP*8);
8979 } 9273 }
8980 dasm_put(Dst, 6992, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); 9274 dasm_put(Dst, 7241, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
8981 } 9275 }
8982 dasm_put(Dst, 7003); 9276 dasm_put(Dst, 7252);
8983 if (op != BC_JFORL) { 9277 if (op != BC_JFORL) {
8984 dasm_put(Dst, 7005, 32-1); 9278 dasm_put(Dst, 7254, 32-1);
8985 } 9279 }
8986 dasm_put(Dst, 7008, FORL_EXT*8); 9280 dasm_put(Dst, 7257, FORL_EXT*8);
8987 if (op != BC_JFORL) { 9281 if (op != BC_JFORL) {
8988 dasm_put(Dst, 7011); 9282 dasm_put(Dst, 7260);
8989 } 9283 }
8990 dasm_put(Dst, 7013); 9284 dasm_put(Dst, 7262);
8991 if (op == BC_JFORI) { 9285 if (op == BC_JFORI) {
8992 dasm_put(Dst, 7015, -(BCBIAS_J*4 >> 16)); 9286 dasm_put(Dst, 7264, -(BCBIAS_J*4 >> 16));
8993 } 9287 }
8994 dasm_put(Dst, 7018); 9288 dasm_put(Dst, 7267);
8995 if (op == BC_FORI) { 9289 if (op == BC_FORI) {
8996 dasm_put(Dst, 7021); 9290 dasm_put(Dst, 7270);
8997 } else if (op == BC_IFORL) { 9291 } else if (op == BC_IFORL) {
8998 if (LJ_DUALNUM) { 9292 if (LJ_DUALNUM) {
8999 dasm_put(Dst, 7024); 9293 dasm_put(Dst, 7273);
9000 } else { 9294 } else {
9001 dasm_put(Dst, 7027); 9295 dasm_put(Dst, 7276);
9002 } 9296 }
9003 dasm_put(Dst, 7030, -(BCBIAS_J*4 >> 16)); 9297 dasm_put(Dst, 7279, -(BCBIAS_J*4 >> 16));
9004 } else { 9298 } else {
9005 dasm_put(Dst, 7034, BC_JLOOP); 9299 dasm_put(Dst, 7283, BC_JLOOP);
9006 } 9300 }
9007 if (LJ_DUALNUM) { 9301 if (LJ_DUALNUM) {
9008 dasm_put(Dst, 7037); 9302 dasm_put(Dst, 7286);
9009 } else { 9303 } else {
9010 dasm_put(Dst, 7040); 9304 dasm_put(Dst, 7289);
9011 } 9305 }
9012 dasm_put(Dst, 7052); 9306 dasm_put(Dst, 7301);
9013 if (op == BC_FORI) { 9307 if (op == BC_FORI) {
9014 dasm_put(Dst, 7054, -(BCBIAS_J*4 >> 16)); 9308 dasm_put(Dst, 7303, -(BCBIAS_J*4 >> 16));
9015 } else if (op == BC_IFORL) { 9309 } else if (op == BC_IFORL) {
9016 dasm_put(Dst, 7060); 9310 dasm_put(Dst, 7309);
9017 } else { 9311 } else {
9018 dasm_put(Dst, 7063, BC_JLOOP); 9312 dasm_put(Dst, 7312, BC_JLOOP);
9019 } 9313 }
9020 dasm_put(Dst, 7066); 9314 dasm_put(Dst, 7315);
9021 break; 9315 break;
9022 9316
9023 case BC_ITERL: 9317 case BC_ITERL:
9024#if LJ_HASJIT 9318#if LJ_HASJIT
9025 dasm_put(Dst, 7069); 9319 dasm_put(Dst, 7318, GG_DISP2HOT, -HOTCOUNT_LOOP);
9026#endif 9320#endif
9027 break; 9321 break;
9028 9322
@@ -9031,40 +9325,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9031 break; 9325 break;
9032#endif 9326#endif
9033 case BC_IITERL: 9327 case BC_IITERL:
9034 dasm_put(Dst, 7071, LJ_TNIL); 9328 dasm_put(Dst, 7328, LJ_TNIL);
9035 if (op == BC_JITERL) { 9329 if (op == BC_JITERL) {
9036 dasm_put(Dst, 7078); 9330 dasm_put(Dst, 7335, BC_JLOOP);
9037 } else { 9331 } else {
9038 dasm_put(Dst, 7080, 32-1, -(BCBIAS_J*4 >> 16)); 9332 dasm_put(Dst, 7340, 32-1, -(BCBIAS_J*4 >> 16));
9039 } 9333 }
9040 dasm_put(Dst, 7088); 9334 dasm_put(Dst, 7348);
9041 break; 9335 break;
9042 9336
9043 case BC_LOOP: 9337 case BC_LOOP:
9044#if LJ_HASJIT 9338#if LJ_HASJIT
9045 dasm_put(Dst, 7100); 9339 dasm_put(Dst, 7360, GG_DISP2HOT, -HOTCOUNT_LOOP);
9046#endif 9340#endif
9047 break; 9341 break;
9048 9342
9049 case BC_ILOOP: 9343 case BC_ILOOP:
9050 dasm_put(Dst, 7102); 9344 dasm_put(Dst, 7370);
9051 break; 9345 break;
9052 9346
9053 case BC_JLOOP: 9347 case BC_JLOOP:
9054#if LJ_HASJIT 9348#if LJ_HASJIT
9055 dasm_put(Dst, 7113); 9349 dasm_put(Dst, 7381, DISPATCH_J(trace), 32-1, DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768);
9056#endif 9350#endif
9057 break; 9351 break;
9058 9352
9059 case BC_JMP: 9353 case BC_JMP:
9060 dasm_put(Dst, 7115, 32-1, -(BCBIAS_J*4 >> 16)); 9354 dasm_put(Dst, 7398, 32-1, -(BCBIAS_J*4 >> 16));
9061 break; 9355 break;
9062 9356
9063 /* -- Function headers -------------------------------------------------- */ 9357 /* -- Function headers -------------------------------------------------- */
9064 9358
9065 case BC_FUNCF: 9359 case BC_FUNCF:
9066#if LJ_HASJIT 9360#if LJ_HASJIT
9067 dasm_put(Dst, 7131); 9361 dasm_put(Dst, 7414, GG_DISP2HOT, -HOTCOUNT_CALL);
9068#endif 9362#endif
9069 case BC_FUNCV: /* NYI: compiled vararg functions. */ 9363 case BC_FUNCV: /* NYI: compiled vararg functions. */
9070 break; 9364 break;
@@ -9074,38 +9368,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9074 break; 9368 break;
9075#endif 9369#endif
9076 case BC_IFUNCF: 9370 case BC_IFUNCF:
9077 dasm_put(Dst, 7133, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); 9371 dasm_put(Dst, 7424, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
9372 if (op != BC_JFUNCF) {
9373 dasm_put(Dst, 7436);
9374 }
9375 dasm_put(Dst, 7439);
9078 if (op == BC_JFUNCF) { 9376 if (op == BC_JFUNCF) {
9079 dasm_put(Dst, 7151); 9377 dasm_put(Dst, 7444, BC_JLOOP);
9080 } else { 9378 } else {
9081 dasm_put(Dst, 7153); 9379 dasm_put(Dst, 7448);
9082 } 9380 }
9083 dasm_put(Dst, 7162); 9381 dasm_put(Dst, 7457);
9084 break; 9382 break;
9085 9383
9086 case BC_JFUNCV: 9384 case BC_JFUNCV:
9087#if !LJ_HASJIT 9385#if !LJ_HASJIT
9088 break; 9386 break;
9089#endif 9387#endif
9090 dasm_put(Dst, 7168); 9388 dasm_put(Dst, 7463);
9091 break; /* NYI: compiled vararg functions. */ 9389 break; /* NYI: compiled vararg functions. */
9092 9390
9093 case BC_IFUNCV: 9391 case BC_IFUNCV:
9094 dasm_put(Dst, 7170, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); 9392 dasm_put(Dst, 7465, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL);
9095 break; 9393 break;
9096 9394
9097 case BC_FUNCC: 9395 case BC_FUNCC:
9098 case BC_FUNCCW: 9396 case BC_FUNCCW:
9099 if (op == BC_FUNCC) { 9397 if (op == BC_FUNCC) {
9100 dasm_put(Dst, 7223, Dt8(->f)); 9398 dasm_put(Dst, 7518, Dt8(->f));
9101 } else { 9399 } else {
9102 dasm_put(Dst, 7226, DISPATCH_GL(wrapf)); 9400 dasm_put(Dst, 7521, DISPATCH_GL(wrapf));
9103 } 9401 }
9104 dasm_put(Dst, 7229, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 9402 dasm_put(Dst, 7524, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
9105 if (op == BC_FUNCCW) { 9403 if (op == BC_FUNCCW) {
9106 dasm_put(Dst, 7242, Dt8(->f)); 9404 dasm_put(Dst, 7537, Dt8(->f));
9107 } 9405 }
9108 dasm_put(Dst, 7245, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); 9406 dasm_put(Dst, 7540, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
9109 break; 9407 break;
9110 9408
9111 /* ---------------------------------------------------------------------- */ 9409 /* ---------------------------------------------------------------------- */
@@ -9125,7 +9423,7 @@ static int build_backend(BuildCtx *ctx)
9125 9423
9126 build_subroutines(ctx); 9424 build_subroutines(ctx);
9127 9425
9128 dasm_put(Dst, 7266); 9426 dasm_put(Dst, 7561);
9129 for (op = 0; op < BC__MAX; op++) 9427 for (op = 0; op < BC__MAX; op++)
9130 build_ins(ctx, (BCOp)op, op); 9428 build_ins(ctx, (BCOp)op, op);
9131 9429