From d84207b8b6b906f9ec6eb1861a9319fb574dd1f8 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 10 Aug 2011 21:54:03 +0200 Subject: [PATCH] PPC: Save/restore cr2, cr3 and cr4 when entering/leaving VM. --- src/buildvm_ppc.dasc | 50 +- src/buildvm_ppc.h | 2153 ++++++++++++++++++++++-------------------- src/lj_frame.h | 14 +- 3 files changed, 1138 insertions(+), 1079 deletions(-) diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 8fb77489..ad209ce6 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc @@ -62,26 +62,28 @@ |.define CRET2, r4 | |// Stack layout while in interpreter. Must match with lj_frame.h. -|.define SAVE_LR, 260(sp) -|.define CFRAME_SPACE, 256 // Delta for sp. -|// Back chain for sp: 256(sp) <-- sp entering interpreter -|.define SAVE_GPR_, 184 // .. 184+18*4: 32 bit GPR saves. -|.define SAVE_FPR_, 40 // .. 40+18*8: 64 bit FPR saves. -|.define TONUM_LO, 36(sp) -|.define TONUM_HI, 32(sp) -|.define SAVE_ERRF, 28(sp) // 32 bit C frame info. -|.define SAVE_NRES, 24(sp) -|.define SAVE_CFRAME, 20(sp) -|.define SAVE_L, 16(sp) -|.define SAVE_MULTRES, 12(sp) -|.define SAVE_PC, 8(sp) +|.define SAVE_LR, 276(sp) +|.define CFRAME_SPACE, 272 // Delta for sp. +|// Back chain for sp: 272(sp) <-- sp entering interpreter +|.define SAVE_FPR_, 128 // .. 128+18*8: 64 bit FPR saves. +|.define SAVE_GPR_, 56 // .. 56+18*4: 32 bit GPR saves. +|.define SAVE_CR, 52(sp) // 32 bit CR save. +|.define SAVE_ERRF, 48(sp) // 32 bit C frame info. +|.define SAVE_NRES, 44(sp) +|.define SAVE_CFRAME, 40(sp) +|.define SAVE_L, 36(sp) +|.define SAVE_PC, 32(sp) +|.define SAVE_MULTRES, 28(sp) +|.define UNUSED1, 24(sp) +|.define TMPD_LO, 20(sp) +|.define TMPD_HI, 16(sp) +|.define TONUM_LO, 12(sp) +|.define TONUM_HI, 8(sp) |// Next frame lr: 4(sp) |// Back chain for sp: 0(sp) <-- sp while in interpreter | -|.define TMPD_LO, SAVE_MULTRES -|.define TMPD_BLO, 15(sp) -|.define TMPD_HI, SAVE_PC -|.define TMPD, SAVE_PC +|.define TMPD_BLO, 23(sp) +|.define TMPD, TMPD_HI |.define TONUM_D, TONUM_HI | |.macro save_, reg @@ -96,16 +98,16 @@ |.macro saveregs | stwu sp, -CFRAME_SPACE(sp) | save_ 14; save_ 15; save_ 16; save_ 17; save_ 18; save_ 19 -| mflr r0 +| mflr r0; mfcr r12 | save_ 20; save_ 21; save_ 22; save_ 23; save_ 24; save_ 25 -| stw r0, SAVE_LR +| stw r0, SAVE_LR; stw r12, SAVE_CR | save_ 26; save_ 27; save_ 28; save_ 29; save_ 30; save_ 31 |.endmacro | |.macro restoreregs -| lwz r0, SAVE_LR +| lwz r0, SAVE_LR; lwz r12, SAVE_CR | rest_ 14; rest_ 15; rest_ 16; rest_ 17; rest_ 18; rest_ 19 -| mtlr r0 +| mtlr r0; mtcrf 0x38, r12 | rest_ 20; rest_ 21; rest_ 22; rest_ 23; rest_ 24; rest_ 25 | rest_ 26; rest_ 27; rest_ 28; rest_ 29; rest_ 30; rest_ 31 | addi sp, sp, CFRAME_SPACE @@ -4518,7 +4520,8 @@ static void emit_asm_debug(BuildCtx *ctx) "\t.long .Lbegin\n" "\t.long %d\n" "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", + "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" + "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", (int)ctx->codesz, CFRAME_SIZE); for (i = 14; i <= 31; i++) fprintf(ctx->fp, @@ -4555,7 +4558,8 @@ static void emit_asm_debug(BuildCtx *ctx) "\t.long %d\n" "\t.uleb128 0\n" /* augmentation length */ "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", + "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" + "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", (int)ctx->codesz, CFRAME_SIZE); for (i = 14; i <= 31; i++) fprintf(ctx->fp, diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h index 82f90aae..87a838fd 100644 --- a/src/buildvm_ppc.h +++ b/src/buildvm_ppc.h @@ -12,7 +12,7 @@ #define DASM_SECTION_CODE_OP 0 #define DASM_SECTION_CODE_SUB 1 #define DASM_MAXSECTION 2 -static const unsigned int build_actionlist[7218] = { +static const unsigned int build_actionlist[7267] = { 0x00010001, 0x00060014, 0x72000000, @@ -43,7 +43,7 @@ static const unsigned int build_actionlist[7218] = { 0x350cfff8, 0x91320000, 0x00098200, -0x81210018, +0x8121002c, 0x39cefff8, 0x90110000, 0x00098200, @@ -68,12 +68,13 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x00060019, 0x00000000, -0x80010014, +0x80010028, 0x38600000, 0x90120000, 0x00098200, 0x0006001a, -0x80010104, +0x80010114, +0x81810034, 0x81c10000, 0x00098200, 0xc9c10000, @@ -99,6 +100,7 @@ static const unsigned int build_actionlist[7218] = { 0xca610000, 0x00098200, 0x7c0803a6, +0x7d838120, 0x82810000, 0x00098200, 0xca810000, @@ -148,7 +150,7 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0xcbe10000, 0x00098200, -0x38210100, +0x38210110, 0x4e800020, 0x00060010, 0x40810000, @@ -180,7 +182,7 @@ static const unsigned int build_actionlist[7218] = { 0x7e439378, 0x48000001, 0x00030000, -0x81210018, +0x8121002c, 0x7eacab78, 0x55291800, 0x000900a1, @@ -192,7 +194,7 @@ static const unsigned int build_actionlist[7218] = { 0x7c611b78, 0x7c832378, 0x0006001c, -0x82410010, +0x82410024, 0x38000000, 0x00098200, 0x81120000, @@ -204,7 +206,7 @@ static const unsigned int build_actionlist[7218] = { 0x0006001d, 0x5461003a, 0x0006001e, -0x82410010, +0x82410024, 0x3ac00000, 0x00098200, 0x81d20000, @@ -213,7 +215,7 @@ static const unsigned int build_actionlist[7218] = { 0x82320000, 0x00098200, 0x3b000000, -0x90c10008, +0x90c10010, 0x39000000, 0x00098200, 0x60c60004, @@ -221,10 +223,10 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x38000000, 0x00098200, -0xc3c10008, +0xc3c10010, 0x820efff8, 0x3a8efff8, -0x90c10008, +0x90c10010, 0x3a310000, 0x00098200, 0x00000000, @@ -232,7 +234,7 @@ static const unsigned int build_actionlist[7218] = { 0x39800010, 0x90110000, 0x00098200, -0xc3e10008, +0xc3e10010, 0x48000000, 0x00050016, 0x0006001f, @@ -251,7 +253,7 @@ static const unsigned int build_actionlist[7218] = { 0x568400fe, 0x000900ab, 0x0006000c, -0x92010008, +0x92010020, 0x7e439378, 0x48000001, 0x00030000, @@ -272,7 +274,7 @@ static const unsigned int build_actionlist[7218] = { 0x7c0903a6, 0x4e800420, 0x00060021, -0x9421ff00, +0x9421fef0, 0x91c10000, 0x00098200, 0xd9c10000, @@ -299,6 +301,7 @@ static const unsigned int build_actionlist[7218] = { 0xda610000, 0x00098200, 0x7c0802a6, +0x7d800026, 0x92810000, 0x00098200, 0xda810000, @@ -323,7 +326,8 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0xdb210000, 0x00098200, -0x90010104, +0x90010114, +0x91810034, 0x93410000, 0x00098200, 0xdb410000, @@ -355,20 +359,20 @@ static const unsigned int build_actionlist[7218] = { 0x7c8e2378, 0x89120000, 0x00098200, -0x92410010, +0x92410024, 0x3a000000, 0x00098200, 0x38010000, 0x00098200, 0x3a310000, 0x00098200, -0x90a10018, +0x90a1002c, 0x28080000, -0x90a1001c, +0x90a10030, 0x90120000, 0x00098200, -0x90a10014, -0x90610008, +0x90a10028, +0x90610020, 0x41820000, 0x00050803, 0x7dd47378, @@ -383,20 +387,20 @@ static const unsigned int build_actionlist[7218] = { 0x7d8e4050, 0x98b20000, 0x00098200, -0x90c10008, +0x90c10010, 0x72000000, 0x00090200, 0x60c60004, -0xc3c10008, +0xc3c10010, 0x3b000000, -0x90c10008, +0x90c10010, 0x398c0008, 0x3c004338, 0x7d936378, -0x90010020, +0x90010008, 0x38000000, 0x00098200, -0xc3e10008, +0xc3e10010, 0x3ae00000, 0x00098200, 0x90110000, @@ -407,7 +411,7 @@ static const unsigned int build_actionlist[7218] = { 0x48000000, 0x00050018, 0x00060022, -0x9421ff00, +0x9421fef0, 0x91c10000, 0x00098200, 0xd9c10000, @@ -433,6 +437,7 @@ static const unsigned int build_actionlist[7218] = { 0xda610000, 0x00098200, 0x7c0802a6, +0x7d800026, 0x92810000, 0x00098200, 0xda810000, @@ -458,7 +463,8 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0xdb210000, 0x00098200, -0x90010104, +0x90010114, +0x91810034, 0x93410000, 0x00098200, 0xdb410000, @@ -485,11 +491,11 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x3a000000, 0x00098200, -0x90c1001c, +0x90c10030, 0x48000000, 0x00050001, 0x00060023, -0x9421ff00, +0x9421fef0, 0x91c10000, 0x00098200, 0xd9c10000, @@ -516,6 +522,7 @@ static const unsigned int build_actionlist[7218] = { 0xda610000, 0x00098200, 0x7c0802a6, +0x7d800026, 0x92810000, 0x00098200, 0xda810000, @@ -541,7 +548,8 @@ static const unsigned int build_actionlist[7218] = { 0xdb210000, 0x00098200, 0x00000000, -0x90010104, +0x90010114, +0x91810034, 0x93410000, 0x00098200, 0xdb410000, @@ -571,16 +579,16 @@ static const unsigned int build_actionlist[7218] = { 0x0006000b, 0x81030000, 0x00098200, -0x90a10018, +0x90a1002c, 0x7c721b78, -0x90610010, +0x90610024, 0x7c8e2378, 0x90320000, 0x00098200, 0x82320000, 0x00098200, -0x90610008, -0x91010014, +0x90610020, +0x91010028, 0x3a310000, 0x00098200, 0x0006000d, @@ -593,18 +601,18 @@ static const unsigned int build_actionlist[7218] = { 0x00000000, 0x3cc059c0, 0x7e107214, -0x90c10008, +0x90c10010, 0x3b000000, 0x60c60004, -0xc3c10008, +0xc3c10010, 0x7e098050, -0x90c10008, +0x90c10010, 0x3c004338, 0x7d6e4050, -0x90010020, +0x90010008, 0x38000000, 0x00098200, -0xc3e10008, +0xc3e10010, 0x3ae00000, 0x00098200, 0x90110000, @@ -629,7 +637,7 @@ static const unsigned int build_actionlist[7218] = { 0x7c0903a6, 0x4e800420, 0x00060027, -0x9421ff00, +0x9421fef0, 0x91c10000, 0x00098200, 0xd9c10000, @@ -655,6 +663,7 @@ static const unsigned int build_actionlist[7218] = { 0xda610000, 0x00098200, 0x7c0802a6, +0x7d800026, 0x92810000, 0x00098200, 0x00000000, @@ -680,7 +689,8 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0xdb210000, 0x00098200, -0x90010104, +0x90010114, +0x91810034, 0x93410000, 0x00098200, 0xdb410000, @@ -709,19 +719,19 @@ static const unsigned int build_actionlist[7218] = { 0x7c721b78, 0x80030000, 0x00098200, -0x90610010, +0x90610024, 0x81120000, 0x00098200, -0x90610008, +0x90610020, 0x7c080050, 0x81120000, 0x00098200, 0x90320000, 0x00098200, 0x39200000, -0x90010018, -0x9121001c, -0x91010014, +0x9001002c, +0x91210030, +0x91010028, 0x7cc903a6, 0x4e800421, 0x7c6e1b79, @@ -803,8 +813,8 @@ static const unsigned int build_actionlist[7218] = { 0x00050001, 0x0006002e, 0x00000000, -0x90010024, -0xc8010020, +0x9001000c, +0xc8010008, 0xfc00f028, 0x00000000, 0x54ea5d78, @@ -828,7 +838,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x48000001, 0x00030001, 0x28030000, @@ -839,12 +849,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000d, 0x210e0000, @@ -885,8 +895,8 @@ static const unsigned int build_actionlist[7218] = { 0x00050001, 0x00060032, 0x00000000, -0x90010024, -0xc8010020, +0x9001000c, +0xc8010008, 0xfc00f028, 0x00000000, 0x54ea5d78, @@ -910,7 +920,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x48000001, 0x00030002, 0x28030000, @@ -921,12 +931,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0xd8030000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000d, 0x210e0000, @@ -948,7 +958,7 @@ static const unsigned int build_actionlist[7218] = { 0x00000000, 0x7c8ea214, 0x00000000, -0x92010008, +0x92010020, 0x00000000, 0x7d856378, 0x00000000, @@ -976,12 +986,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00060036, 0x80f0fffc, @@ -1010,7 +1020,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x48000001, 0x00030004, 0x48000000, @@ -1022,7 +1032,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x48000001, 0x00030005, 0x48000000, @@ -1068,7 +1078,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x54e7063e, 0x48000001, 0x00030006, @@ -1093,7 +1103,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x48000001, 0x00030007, 0x00000000, @@ -1112,7 +1122,7 @@ static const unsigned int build_actionlist[7218] = { 0x91320000, 0x00098200, 0x388efff8, -0x92010008, +0x92010020, 0x7cae5a14, 0x7d755b78, 0x48000001, @@ -1135,7 +1145,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x3894fff8, -0x92010008, +0x92010020, 0x7cb45a14, 0x7d755b78, 0x48000001, @@ -1150,7 +1160,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e84a378, -0x92010008, +0x92010020, 0x7cf53b78, 0x48000001, 0x00030009, @@ -1389,7 +1399,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x4c413342, -0x92010008, +0x92010020, 0x41820000, 0x00050848, 0x00000000, @@ -1431,7 +1441,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x38ae0008, -0x92010008, +0x92010020, 0x48000001, 0x0003000d, 0x28030000, @@ -1502,16 +1512,16 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0x00000000, 0x3c003ff0, -0x9301000c, +0x93010014, 0x40820000, 0x00050848, -0x90010008, +0x90010010, 0x40840000, 0x00050848, -0xc8210008, +0xc8210010, 0xfc00101e, -0xd8010008, -0x8121000c, +0xd8010010, +0x81210014, 0x00000000, 0x80030000, 0x00098200, @@ -1675,7 +1685,7 @@ static const unsigned int build_actionlist[7218] = { 0x4f3e1102, 0x7c890040, 0x4f18cb82, -0x92010008, +0x92010020, 0x4f182b82, 0x91d20000, 0x00098200, @@ -1751,7 +1761,7 @@ static const unsigned int build_actionlist[7218] = { 0x910efff8, 0x398c0010, 0x00060011, -0x92010008, +0x92010020, 0x7d936378, 0x41820000, 0x00050817, @@ -1806,7 +1816,7 @@ static const unsigned int build_actionlist[7218] = { 0x4f3e1102, 0x7c890040, 0x4f18cb82, -0x92010008, +0x92010020, 0x4f182b82, 0x91d20000, 0x00098200, @@ -1876,7 +1886,7 @@ static const unsigned int build_actionlist[7218] = { 0x7dd47378, 0x398c0008, 0x00060011, -0x92010008, +0x92010020, 0x7d936378, 0x41820000, 0x00050817, @@ -1974,12 +1984,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7dc0a050, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00060010, 0x390cfff8, @@ -2424,8 +2434,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc40101e, -0xd8410008, -0x8061000c, +0xd8410010, +0x80610014, 0x00000000, 0x48000001, 0x00030022, @@ -2450,8 +2460,8 @@ static const unsigned int build_actionlist[7218] = { 0x3a8efff8, 0x00000000, 0x6d088000, -0x91010024, -0xc8410020, +0x9101000c, +0xc8410008, 0xfc42f828, 0x00000000, 0xd8340000, @@ -2518,8 +2528,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0x6c638000, -0x90610024, -0xc8210020, +0x9061000c, +0xc8210008, 0xfc21f828, 0xc8480000, 0x48000000, @@ -2548,8 +2558,8 @@ static const unsigned int build_actionlist[7218] = { 0x40820000, 0x00050848, 0x6c848000, -0x90810024, -0xc8410020, +0x9081000c, +0xc8410008, 0xfc42f828, 0x48000000, 0x00050010, @@ -2612,8 +2622,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0x6c638000, -0x90610024, -0xc8210020, +0x9061000c, +0xc8210008, 0xfc21f828, 0xc8480000, 0x48000000, @@ -2642,8 +2652,8 @@ static const unsigned int build_actionlist[7218] = { 0x40820000, 0x00050848, 0x6c848000, -0x90810024, -0xc8410020, +0x9081000c, +0xc8410008, 0xfc42f828, 0x48000000, 0x00050010, @@ -2716,9 +2726,9 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x30c0ffff, 0x7d860110, -0x91010024, +0x9101000c, 0x398c0001, -0xc8010020, +0xc8010008, 0x3a8efff8, 0x820efff8, 0xfc00f028, @@ -2754,9 +2764,9 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc20081e, -0xd8210008, -0x8001000c, -0x3881000f, +0xd8210010, +0x80010014, +0x38810017, 0x00000000, 0x38a00001, 0x280000ff, @@ -2766,7 +2776,7 @@ static const unsigned int build_actionlist[7218] = { 0x7e439378, 0x91d20000, 0x00098200, -0x92010008, +0x92010020, 0x48000001, 0x00030025, 0x81d20000, @@ -2815,8 +2825,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc00001e, -0xd8010008, -0x8121000c, +0xd8010010, +0x81210014, 0x0006000b, 0x7c04b040, 0x40800000, @@ -2828,8 +2838,8 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0x00000000, 0xfc20081e, -0xd8210008, -0x8101000c, +0xd8210010, +0x81010014, 0x00000000, 0x80030000, 0x00098200, @@ -2900,8 +2910,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc40101e, -0xd8410008, -0x80a1000c, +0xd8410010, +0x80a10014, 0x00000000, 0x80030000, 0x00098200, @@ -3103,8 +3113,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x390e0008, 0x7d2e5a14, @@ -3126,8 +3136,8 @@ static const unsigned int build_actionlist[7218] = { 0xfc21f02a, 0x40800000, 0x00050848, -0xd8210008, -0x8081000c, +0xd8210010, +0x80810014, 0x00000000, 0x7c632038, 0x39080008, @@ -3154,8 +3164,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x390e0008, 0x7d2e5a14, @@ -3177,8 +3187,8 @@ static const unsigned int build_actionlist[7218] = { 0xfc21f02a, 0x40800000, 0x00050848, -0xd8210008, -0x8081000c, +0xd8210010, +0x80810014, 0x00000000, 0x7c632378, 0x39080008, @@ -3205,8 +3215,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x390e0008, 0x7d2e5a14, @@ -3228,8 +3238,8 @@ static const unsigned int build_actionlist[7218] = { 0xfc21f02a, 0x40800000, 0x00050848, -0xd8210008, -0x8081000c, +0xd8210010, +0x80810014, 0x00000000, 0x7c632278, 0x39080008, @@ -3256,8 +3266,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x5460403e, 0x5060c00e, @@ -3286,8 +3296,8 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x7c6318f8, 0x48000000, @@ -3324,10 +3334,10 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0xfc21f02a, 0xfc42f02a, -0xd8210008, -0x8061000c, -0xd8410008, -0x8081000c, +0xd8210010, +0x80610014, +0xd8410010, +0x80810014, 0x00000000, 0x548406fe, 0x7c632030, @@ -3365,10 +3375,10 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0xfc21f02a, 0xfc42f02a, -0xd8210008, -0x8061000c, -0xd8410008, -0x8081000c, +0xd8210010, +0x80610014, +0xd8410010, +0x80810014, 0x00000000, 0x548406fe, 0x7c632430, @@ -3406,10 +3416,10 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0xfc21f02a, 0xfc42f02a, -0xd8210008, -0x8061000c, -0xd8410008, -0x8081000c, +0xd8210010, +0x80610014, +0xd8410010, +0x80810014, 0x00000000, 0x548406fe, 0x7c632630, @@ -3447,10 +3457,10 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0xfc21f02a, 0xfc42f02a, -0xd8210008, -0x8061000c, -0xd8410008, -0x8081000c, +0xd8210010, +0x80610014, +0xd8410010, +0x80810014, 0x00000000, 0x5c63203e, 0x48000000, @@ -3487,10 +3497,10 @@ static const unsigned int build_actionlist[7218] = { 0x00050848, 0xfc21f02a, 0xfc42f02a, -0xd8210008, -0x8061000c, -0xd8410008, -0x8081000c, +0xd8210010, +0x80610014, +0xd8410010, +0x80810014, 0x00000000, 0x7c8400d0, 0x5c63203e, @@ -3517,16 +3527,16 @@ static const unsigned int build_actionlist[7218] = { 0x40800000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x00000000, 0x48000000, 0x0005005d, 0x00000000, 0x0006005d, 0x6c638000, -0x90610024, -0xc8210020, +0x9061000c, +0xc8210008, 0xfc21f828, 0x00000000, 0x0006004b, @@ -3541,8 +3551,8 @@ static const unsigned int build_actionlist[7218] = { 0x41810000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8061000c, +0xd8210010, +0x80610014, 0x4e800020, 0x00000000, 0x00060084, @@ -3551,8 +3561,8 @@ static const unsigned int build_actionlist[7218] = { 0x41810000, 0x00050848, 0xfc21f02a, -0xd8210008, -0x8081000c, +0xd8210010, +0x80810014, 0x4e800020, 0x00000000, 0x00060048, @@ -3564,7 +3574,7 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x81320000, 0x00098200, -0x92010008, +0x92010020, 0x7c004840, 0x91d20000, 0x00098200, @@ -3628,7 +3638,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7c0e5a14, -0x92010008, +0x92010020, 0x90120000, 0x00098200, 0x7e439378, @@ -3682,7 +3692,7 @@ static const unsigned int build_actionlist[7218] = { 0x0005080f, 0x0006000b, 0x7e439378, -0x9261000c, +0x9261001c, 0x7e048378, 0x91d20000, 0x00098200, @@ -3725,7 +3735,7 @@ static const unsigned int build_actionlist[7218] = { 0x0006000b, 0x00000000, 0x7c0e5a14, -0x92010008, +0x92010020, 0x7e439378, 0x91d20000, 0x00098200, @@ -3738,7 +3748,7 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x80120000, 0x00098200, -0x93010008, +0x93010020, 0x7d6e0050, 0x7e8ea214, 0x814efffc, @@ -3970,12 +3980,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00060011, 0x41810000, @@ -3986,8 +3996,8 @@ static const unsigned int build_actionlist[7218] = { 0x41840000, 0x00050804, 0x6ca58000, -0x90a10024, -0xc8210020, +0x90a1000c, +0xc8210008, 0xfc21f828, 0x48000000, 0x00050005, @@ -3995,8 +4005,8 @@ static const unsigned int build_actionlist[7218] = { 0x41850000, 0x00050834, 0x6c848000, -0x90810024, -0xc8010020, +0x9081000c, +0xc8010008, 0xfc00f828, 0x0006000e, 0xc82c0000, @@ -4056,12 +4066,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c14706e, @@ -4112,12 +4122,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x0006000f, @@ -4167,12 +4177,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000c, 0x00000000, @@ -4232,12 +4242,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c14706e, @@ -4299,12 +4309,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x0006000d, @@ -4322,15 +4332,15 @@ static const unsigned int build_actionlist[7218] = { 0x41840000, 0x00050801, 0x6ca58000, -0x90a10024, -0xc8210020, +0x90a1000c, +0xc8210008, 0xfc21f828, 0x48000000, 0x00050002, 0x00060012, 0x6c848000, -0x90810024, -0xc8010020, +0x9081000c, +0xc8010008, 0xfc00f828, 0x0006000b, 0xc82c0000, @@ -4368,12 +4378,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c0e602e, @@ -4414,12 +4424,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x80f00000, @@ -4427,12 +4437,12 @@ static const unsigned int build_actionlist[7218] = { 0x7c0e64ae, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x80f00000, @@ -4443,12 +4453,12 @@ static const unsigned int build_actionlist[7218] = { 0x7c004114, 0x7c0ea12e, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0c706e, @@ -4467,12 +4477,12 @@ static const unsigned int build_actionlist[7218] = { 0x90140004, 0x0006000d, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x7c000400, @@ -4497,12 +4507,12 @@ static const unsigned int build_actionlist[7218] = { 0x0005000d, 0x00000000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c0c706e, @@ -4520,20 +4530,20 @@ static const unsigned int build_actionlist[7218] = { 0x7ed4716e, 0x90740004, 0x00000000, -0x90610024, -0xc8010020, +0x9061000c, +0xc8010008, 0xfc00f028, 0x80f00000, 0x3a100004, 0x7c0ea5ae, 0x00000000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000c, 0x2c000000, @@ -4583,9 +4593,10 @@ static const unsigned int build_actionlist[7218] = { 0x808b0004, 0x00000000, 0x7c89b040, -0x4c423202, 0x40820000, 0x00050805, +0x40860000, +0x00050805, 0x7c632615, 0x41830000, 0x00050804, @@ -4596,12 +4607,12 @@ static const unsigned int build_actionlist[7218] = { 0x90740004, 0x0006000c, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x7c000400, @@ -4692,12 +4703,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0a706e, @@ -4719,9 +4730,10 @@ static const unsigned int build_actionlist[7218] = { 0x808b0004, 0x00000000, 0x7c89b040, -0x4c423202, 0x40820000, 0x00050805, +0x40860000, +0x00050805, 0x7c641c51, 0x41830000, 0x00050804, @@ -4732,12 +4744,12 @@ static const unsigned int build_actionlist[7218] = { 0x90740004, 0x0006000c, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x7c000400, @@ -4828,12 +4840,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0a706e, @@ -4855,9 +4867,10 @@ static const unsigned int build_actionlist[7218] = { 0x808b0004, 0x00000000, 0x7c89b040, -0x4c423202, 0x40820000, 0x00050805, +0x40860000, +0x00050805, 0x7c6325d7, 0x41830000, 0x00050804, @@ -4868,12 +4881,12 @@ static const unsigned int build_actionlist[7218] = { 0x90740004, 0x0006000c, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x7c000400, @@ -4964,12 +4977,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0e502e, @@ -5021,12 +5034,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0a706e, @@ -5048,10 +5061,10 @@ static const unsigned int build_actionlist[7218] = { 0x808b0004, 0x00000000, 0x7c89b040, -0x4c423202, 0x40820000, 0x00050805, -0x000600a2, +0x40860000, +0x00050805, 0x48000001, 0x0005009b, 0x41830000, @@ -5063,12 +5076,12 @@ static const unsigned int build_actionlist[7218] = { 0x90740004, 0x0006000c, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x7c000400, @@ -5104,8 +5117,6 @@ static const unsigned int build_actionlist[7218] = { 0x00050841, 0x00000000, 0x000600a2, -0x00000000, -0x000600a3, 0xfc2e7824, 0x48000001, 0x00030010, @@ -5162,8 +5173,6 @@ static const unsigned int build_actionlist[7218] = { 0x0005083f, 0x00000000, 0x000600a2, -0x00000000, -0x000600a3, 0xfc2e7824, 0x48000001, 0x00030010, @@ -5173,12 +5182,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7d0a706e, @@ -5200,11 +5209,42 @@ static const unsigned int build_actionlist[7218] = { 0x808b0004, 0x00000000, 0x7c89b040, -0x4c423202, 0x40820000, 0x00050805, +0x40860000, +0x00050805, +0x48000001, +0x0005009b, +0x41830000, +0x00050804, +0x0006000b, +0x80f00000, +0x3a100004, +0x7ed4716e, +0x90740004, +0x0006000c, +0x54e815ba, +0x7c11402e, +0x7c0903a6, +0x54ea5d78, +0x54ec9b78, +0x54f4dd78, +0x54eb9d78, +0x4e800420, +0x0006000e, +0x7c000400, +0x40810000, +0x0005080b, +0x00000000, 0x48000000, -0x000500a2, +0x00050040, +0x00000000, +0x48000000, +0x0005003c, +0x00000000, +0x48000000, +0x00050041, +0x00000000, 0x0006000f, 0x00000000, 0xc9ea0000, @@ -5225,7 +5265,7 @@ static const unsigned int build_actionlist[7218] = { 0x00050841, 0x00000000, 0x48000000, -0x000500a3, +0x000500a2, 0x00000000, 0x7d0e502e, 0x00000000, @@ -5272,7 +5312,7 @@ static const unsigned int build_actionlist[7218] = { 0x0005083f, 0x00000000, 0x48000000, -0x000500a3, +0x000500a2, 0x00000000, 0x7d0e502e, 0x7c2e54ae, @@ -5285,16 +5325,16 @@ static const unsigned int build_actionlist[7218] = { 0x0005083f, 0x48000001, 0x0003001f, -0x7c2ea5ae, 0x80f00000, 0x3a100004, +0x7c2ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7caa5850, @@ -5303,7 +5343,7 @@ static const unsigned int build_actionlist[7218] = { 0x7c8e5a14, 0x7d555378, 0x0006002a, -0x92010008, +0x92010020, 0x7e439378, 0x54a500fe, 0x000900ab, @@ -5314,55 +5354,55 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x40820000, 0x00050835, +0x80f00000, +0x3a100004, 0x7c0eacae, 0x7c0ea5ae, -0x80f00000, -0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x5588007e, 0x000900ab, 0x2108fffc, +0x80f00000, +0x3a100004, 0x7c0f402e, 0x39200000, 0x00098200, -0x80f00000, -0x3a100004, 0x7d34716e, 0x90140004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x5588007e, 0x000900ab, 0x2108fffc, +0x80f00000, +0x3a100004, 0x7c0f402e, 0x39200000, 0x00098200, -0x80f00000, -0x3a100004, 0x7d34716e, 0x90140004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x558c6800, @@ -5373,44 +5413,53 @@ static const unsigned int build_actionlist[7218] = { 0x7ed4716e, 0x91940004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x558c6800, 0x000900a1, -0x7d8c8670, -0x6d8c8000, -0x91810024, -0xc8010020, -0xfc00f828, +0x7d88fe70, +0x7d096278, +0x7d284850, +0x7d260034, +0x2106040d, +0x7d293030, +0x20cc0000, +0x5508a000, +0x000900a1, +0x512ca87e, +0x7c000110, +0x7d8c4214, +0x7d8c0038, 0x80f00000, 0x3a100004, -0x7c0ea5ae, +0x7d94716e, +0x93140004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, -0x7c0f64ae, 0x80f00000, 0x3a100004, +0x7c0f64ae, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x558800fe, @@ -5420,12 +5469,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea12e, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7eeea12e, @@ -5439,33 +5488,33 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, -0x80f00000, -0x3a100004, 0x814efffc, 0x558c007e, 0x000900ab, 0x398c0000, 0x00098200, 0x7d4a602e, +0x80f00000, +0x3a100004, 0x810a0000, 0x00098200, 0xc8080000, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x814efffc, @@ -5475,6 +5524,8 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x7c0c74ee, 0x7d4aa02e, +0x80f00000, +0x3a100004, 0x88ca0000, 0x00098200, 0x808a0000, @@ -5493,15 +5544,13 @@ static const unsigned int build_actionlist[7218] = { 0x40820000, 0x00050802, 0x0006000b, -0x80f00000, -0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000c, 0x28090000, @@ -5521,8 +5570,6 @@ static const unsigned int build_actionlist[7218] = { 0x48000000, 0x0005000b, 0x00000000, -0x80f00000, -0x3a100004, 0x814efffc, 0x5588007e, 0x000900ab, @@ -5533,6 +5580,8 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x7d0f402e, 0x7d4aa02e, +0x80f00000, +0x3a100004, 0x88ca0000, 0x00098200, 0x808a0000, @@ -5551,12 +5600,12 @@ static const unsigned int build_actionlist[7218] = { 0x00050802, 0x0006000b, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000c, 0x70c60000, @@ -5572,8 +5621,6 @@ static const unsigned int build_actionlist[7218] = { 0x48000000, 0x0005000b, 0x00000000, -0x80f00000, -0x3a100004, 0x814efffc, 0x5694007e, 0x000900ab, @@ -5581,48 +5628,50 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x7c0f64ae, 0x7d4aa02e, +0x80f00000, +0x3a100004, 0x810a0000, 0x00098200, 0xd8080000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, -0x80f00000, -0x3a100004, 0x814efffc, 0x5694007e, 0x000900ab, -0x3a940000, -0x00098200, 0x558000fe, 0x000900ab, -0x7d4aa02e, +0x3a940000, +0x00098200, 0x7c0000f8, +0x7d4aa02e, +0x80f00000, +0x3a100004, 0x810a0000, 0x00098200, 0x90080000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x81120000, 0x00098200, 0x5580007e, 0x000900ab, -0x7e100214, 0x3e100000, 0x00098200, +0x7e100214, 0x91d20000, 0x00098200, 0x28080000, @@ -5638,12 +5687,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x5588007e, @@ -5651,7 +5700,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x2108fffc, -0x92010008, +0x92010020, 0x7c8f402e, 0x7e439378, 0x80aefffc, @@ -5666,12 +5715,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x80110000, @@ -5682,7 +5731,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7c004040, -0x92010008, +0x92010020, 0x40800000, 0x00050805, 0x0006000b, @@ -5712,12 +5761,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x0006000d, @@ -5743,10 +5792,10 @@ static const unsigned int build_actionlist[7218] = { 0x7d6f402e, 0x00000000, 0x48000000, -0x000500a4, +0x000500a3, 0x00000000, 0x48000000, -0x000500a5, +0x000500a4, 0x00000000, 0x7c6a706e, 0x7c8b706e, @@ -5776,11 +5825,11 @@ static const unsigned int build_actionlist[7218] = { 0x00050805, 0xfc20001e, 0xfc40f02a, -0xd8210008, +0xd8210010, 0x800a0000, 0x00098200, 0xfc42f028, -0x8121000c, +0x81210014, 0x810a0000, 0x00098200, 0xfc801000, @@ -5802,12 +5851,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7dcea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000c, 0x812a0000, @@ -5832,7 +5881,7 @@ static const unsigned int build_actionlist[7218] = { 0x816b0004, 0x00000000, 0x48000000, -0x000500a4, +0x000500a3, 0x00000000, 0x7c6a706e, 0x5568007e, @@ -5844,7 +5893,7 @@ static const unsigned int build_actionlist[7218] = { 0x7d6f402e, 0x40820000, 0x0005082c, -0x000600a4, +0x000600a3, 0x800a0000, 0x00098200, 0x810b0000, @@ -5884,12 +5933,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x81290000, @@ -5916,9 +5965,9 @@ static const unsigned int build_actionlist[7218] = { 0x0005002d, 0x00000000, 0x7c6a706e, -0x814a0004, 0x556000fe, 0x000900ab, +0x814a0004, 0x2c030000, 0x00098200, 0x40820000, @@ -5941,12 +5990,12 @@ static const unsigned int build_actionlist[7218] = { 0x3a100004, 0x7c0ea5ae, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x812a0000, @@ -5991,11 +6040,11 @@ static const unsigned int build_actionlist[7218] = { 0x00050805, 0xfc20001e, 0xfc40f02a, -0xd8210008, +0xd8210010, 0x800a0000, 0x00098200, 0xfc42f028, -0x8121000c, +0x81210014, 0x810a0000, 0x00098200, 0xfc801000, @@ -6024,12 +6073,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000d, 0x812a0000, @@ -6054,7 +6103,7 @@ static const unsigned int build_actionlist[7218] = { 0x816b0004, 0x00000000, 0x48000000, -0x000500a5, +0x000500a4, 0x00060011, 0x80110000, 0x00098200, @@ -6086,12 +6135,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c6a706e, @@ -6104,7 +6153,7 @@ static const unsigned int build_actionlist[7218] = { 0x7d6f402e, 0x40820000, 0x00050830, -0x000600a5, +0x000600a4, 0x800a0000, 0x00098200, 0x810b0000, @@ -6155,12 +6204,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x810a0000, @@ -6186,7 +6235,7 @@ static const unsigned int build_actionlist[7218] = { 0x00098200, 0x38b10000, 0x00098200, -0x92010008, +0x92010020, 0x7e439378, 0x28080000, 0x91d20000, @@ -6227,9 +6276,9 @@ static const unsigned int build_actionlist[7218] = { 0x0005000d, 0x00000000, 0x7c6a706e, -0x814a0004, 0x556000fe, 0x000900ab, +0x814a0004, 0x2c030000, 0x00098200, 0x40820000, @@ -6259,12 +6308,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x810a0000, @@ -6334,18 +6383,18 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x91d20000, 0x00098200, 0x7e439378, -0x92010008, +0x92010020, 0x7d956378, 0x48000001, 0x00030033, @@ -6516,8 +6565,8 @@ static const unsigned int build_actionlist[7218] = { 0x91740004, 0x92d40000, 0x00000000, -0x91610024, -0xc8210020, +0x9161000c, +0xc8210008, 0xfc21f028, 0x00000000, 0x396b0001, @@ -6534,12 +6583,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x396b0001, @@ -6617,12 +6666,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x38000000, @@ -6672,12 +6721,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x80120000, @@ -6708,7 +6757,7 @@ static const unsigned int build_actionlist[7218] = { 0x91d20000, 0x00098200, 0x7e8ea050, -0x92010008, +0x92010020, 0x550400fe, 0x000900ab, 0x48000001, @@ -6733,7 +6782,7 @@ static const unsigned int build_actionlist[7218] = { 0x6a080000, 0x00090200, 0x40820000, -0x000508a6, +0x000508a5, 0x00060017, 0x80f0fffc, 0x2c0c0008, @@ -6771,12 +6820,12 @@ static const unsigned int build_actionlist[7218] = { 0x81e80000, 0x00098200, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00060010, 0x390cfff8, @@ -6784,7 +6833,7 @@ static const unsigned int build_actionlist[7218] = { 0x7ee9412e, 0x48000000, 0x0005000f, -0x000600a6, +0x000600a5, 0x71090000, 0x00090200, 0x40820000, @@ -6802,7 +6851,7 @@ static const unsigned int build_actionlist[7218] = { 0x6a080000, 0x00090200, 0x40820000, -0x000508a6, +0x000508a5, 0x80f0fffc, 0x392efff8, 0x54ea5d78, @@ -6824,12 +6873,12 @@ static const unsigned int build_actionlist[7218] = { 0x81e80000, 0x00098200, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00060010, 0x390cfff8, @@ -6910,12 +6959,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000f, 0x7c041800, @@ -7008,12 +7057,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x0006000f, @@ -7046,9 +7095,9 @@ static const unsigned int build_actionlist[7218] = { 0x00000000, 0x5580007e, 0x000900ab, -0x7e100214, 0x3e100000, 0x00098200, +0x7e100214, 0x9114fff8, 0x9134fffc, 0x00000000, @@ -7056,12 +7105,12 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c810808, @@ -7069,30 +7118,30 @@ static const unsigned int build_actionlist[7218] = { 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c810808, 0x00000000, 0x5580007e, 0x000900ab, -0x7e100214, 0x3e100000, 0x00098200, +0x7e100214, 0x80f00000, 0x3a100004, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x7c810808, @@ -7118,12 +7167,12 @@ static const unsigned int build_actionlist[7218] = { 0x7c810808, 0x00000000, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x00000000, 0x0006000d, @@ -7174,12 +7223,12 @@ static const unsigned int build_actionlist[7218] = { 0x0005080b, 0x0006000d, 0x54e815ba, +0x7c11402e, +0x7c0903a6, 0x54ea5d78, 0x54ec9b78, -0x7c11402e, 0x54f4dd78, 0x54eb9d78, -0x7c0903a6, 0x4e800420, 0x0006000e, 0x38000000, @@ -7215,11 +7264,11 @@ static const unsigned int build_actionlist[7218] = { 0x90110000, 0x00098200, 0x4e800421, -0x81120000, +0x81d20000, 0x00098200, 0x546c1800, 0x000900a1, -0x81d20000, +0x81120000, 0x00098200, 0x38000000, 0x00098200, @@ -7376,7 +7425,6 @@ enum { GLOB_vm_ffi_call, GLOB_BC_ISEQN_Z, GLOB_BC_ISNEN_Z, - GLOB_BC_MODVNI_Z, GLOB_BC_MODVN_Z, GLOB_BC_TGETS_Z, GLOB_BC_TSETS_Z, @@ -7526,7 +7574,6 @@ static const char *const globnames[] = { "vm_ffi_call", "BC_ISEQN_Z", "BC_ISNEN_Z", - "BC_MODVNI_Z", "BC_MODVN_Z", "BC_TGETS_Z", "BC_TSETS_Z", @@ -7611,389 +7658,389 @@ static void build_subroutines(BuildCtx *ctx) { dasm_put(Dst, 0); dasm_put(Dst, 1, FRAME_P, LJ_TTRUE, FRAME_TYPE, FRAME_C, ~LJ_VMST_C, Dt1(->base), DISPATCH_GL(vmstate), 31-3, Dt1(->top)); - dasm_put(Dst, 55, Dt1(->cframe), 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8); - dasm_put(Dst, 103, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4, 40+(31-14)*8, Dt1(->maxstack)); - dasm_put(Dst, 152, Dt1(->top), 31-3, Dt1(->top), ~LJ_VMST_C, Dt1(->glref), Dt2(->vmstate), LJ_TISNUM, Dt1(->base), Dt1(->glref), LJ_TFALSE, LJ_TNIL, ~LJ_VMST_INTERP, GG_G2DISP); - dasm_put(Dst, 215, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), 32-3, Dt1(->base), Dt1(->top), Dt7(->pc), 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4); - dasm_put(Dst, 275, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4); - dasm_put(Dst, 322, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4, 40+(31-14)*8, Dt1(->glref), Dt1(->status), FRAME_CP, CFRAME_RESUME, GG_G2DISP, Dt1(->cframe), Dt1(->base), LJ_TISNUM, Dt1(->top), Dt1(->status), FRAME_TYPE, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate)); - dasm_put(Dst, 389, 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4); - dasm_put(Dst, 435, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4, 40+(31-14)*8, FRAME_CP, 184+(14-14)*4, 40+(14-14)*8); - dasm_put(Dst, 482, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8); - dasm_put(Dst, 528, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4, 40+(31-14)*8, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, Dt1(->base), LJ_TISNUM, Dt1(->top)); - dasm_put(Dst, 578, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_TFUNC, Dt7(->pc), 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4); - dasm_put(Dst, 645, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4); - dasm_put(Dst, 691, 40+(31-14)*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(tmptv)); - dasm_put(Dst, 765, LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); + dasm_put(Dst, 55, Dt1(->cframe), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8); + dasm_put(Dst, 105, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt1(->maxstack)); + dasm_put(Dst, 154, Dt1(->top), 31-3, Dt1(->top), ~LJ_VMST_C, Dt1(->glref), Dt2(->vmstate), LJ_TISNUM, Dt1(->base), Dt1(->glref), LJ_TFALSE, LJ_TNIL, ~LJ_VMST_INTERP, GG_G2DISP); + dasm_put(Dst, 217, DISPATCH_GL(vmstate), LUA_MINSTACK, Dt1(->base), Dt1(->top), 32-3, Dt1(->base), Dt1(->top), Dt7(->pc), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4); + dasm_put(Dst, 277, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4); + dasm_put(Dst, 326, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt1(->glref), Dt1(->status), FRAME_CP, CFRAME_RESUME, GG_G2DISP, Dt1(->cframe), Dt1(->base), LJ_TISNUM, Dt1(->top), Dt1(->status), FRAME_TYPE, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate)); + dasm_put(Dst, 393, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4); + dasm_put(Dst, 440, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, FRAME_CP, 56+(14-14)*4, 128+(14-14)*8); + dasm_put(Dst, 488, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8); + dasm_put(Dst, 535, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, Dt1(->base), LJ_TISNUM, Dt1(->top)); + dasm_put(Dst, 586, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_TFUNC, Dt7(->pc), 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4); + dasm_put(Dst, 654, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4); + dasm_put(Dst, 701, 128+(31-14)*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(tmptv)); + dasm_put(Dst, 775, LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); if (!LJ_DUALNUM) { - dasm_put(Dst, 790); + dasm_put(Dst, 800); } - dasm_put(Dst, 794, DISPATCH_GL(tmptv)); + dasm_put(Dst, 804, DISPATCH_GL(tmptv)); if (LJ_DUALNUM) { - dasm_put(Dst, 799); + dasm_put(Dst, 809); } else { - dasm_put(Dst, 802); + dasm_put(Dst, 812); } - dasm_put(Dst, 804, Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv), LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); + dasm_put(Dst, 814, Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv), LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR); if (!LJ_DUALNUM) { - dasm_put(Dst, 872); + dasm_put(Dst, 882); } - dasm_put(Dst, 876, DISPATCH_GL(tmptv)); + dasm_put(Dst, 886, DISPATCH_GL(tmptv)); if (LJ_DUALNUM) { - dasm_put(Dst, 881); + dasm_put(Dst, 891); } else { - dasm_put(Dst, 884); + dasm_put(Dst, 894); } - dasm_put(Dst, 886, Dt1(->base), FRAME_CONT, Dt1(->top)); + dasm_put(Dst, 896, Dt1(->base), FRAME_CONT, Dt1(->top)); if (LJ_DUALNUM) { - dasm_put(Dst, 931); + dasm_put(Dst, 941); } else { - dasm_put(Dst, 933); + dasm_put(Dst, 943); } - dasm_put(Dst, 935); + dasm_put(Dst, 945); if (LJ_DUALNUM) { - dasm_put(Dst, 937); + dasm_put(Dst, 947); } else { - dasm_put(Dst, 939); + dasm_put(Dst, 949); } - dasm_put(Dst, 941, Dt1(->base), -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TTRUE, Dt1(->base)); + dasm_put(Dst, 951, Dt1(->base), -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TTRUE, Dt1(->base)); #if LJ_HASFFI - dasm_put(Dst, 1004, Dt1(->base)); + dasm_put(Dst, 1014, Dt1(->base)); #endif - dasm_put(Dst, 1015); + dasm_put(Dst, 1025); if (LJ_DUALNUM) { - dasm_put(Dst, 1022); + dasm_put(Dst, 1032); } - dasm_put(Dst, 1027); + dasm_put(Dst, 1037); if (LJ_DUALNUM) { - dasm_put(Dst, 1041); + dasm_put(Dst, 1051); } - dasm_put(Dst, 1044); + dasm_put(Dst, 1054); if (LJ_DUALNUM) { - dasm_put(Dst, 1047); + dasm_put(Dst, 1057); } - dasm_put(Dst, 1050, Dt1(->base), FRAME_CONT); -#ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1074); -#endif - dasm_put(Dst, 1076, Dt1(->base)); + dasm_put(Dst, 1060, Dt1(->base), FRAME_CONT); #ifdef LUAJIT_ENABLE_LUA52COMPAT dasm_put(Dst, 1084); -#else - dasm_put(Dst, 1091); #endif - dasm_put(Dst, 1094, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base)); -#if LJ_HASJIT - dasm_put(Dst, 1142); -#endif - dasm_put(Dst, 1144); -#if LJ_HASJIT - dasm_put(Dst, 1146, BC_JFORI); -#endif - dasm_put(Dst, 1149); -#if LJ_HASJIT - dasm_put(Dst, 1151, BC_JFORI); -#endif - dasm_put(Dst, 1154, BC_FORI, LJ_TFALSE, ~LJ_TISNUM+1, 31-3, Dt8(->upvalue), LJ_TTAB, Dt6(->metatable)); - dasm_put(Dst, 1217, LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, DtB(->next)); - dasm_put(Dst, 1265, LJ_TNIL, LJ_TUDATA, ~LJ_TISNUM+1, 31-2, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 1320, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_TTAB, LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base)); - dasm_put(Dst, 1380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); - if (LJ_DUALNUM) { - dasm_put(Dst, 1390); - } else { - dasm_put(Dst, 1393); - } - dasm_put(Dst, 1396, LJ_TSTR, LJ_TTAB, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_TTAB); + dasm_put(Dst, 1086, Dt1(->base)); #ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1447, Dt6(->metatable), Dt8(->upvalue[0])); + dasm_put(Dst, 1094); #else - dasm_put(Dst, 1456, Dt8(->upvalue[0])); + dasm_put(Dst, 1101); #endif - dasm_put(Dst, 1460, (3+1)*8); + dasm_put(Dst, 1104, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base)); +#if LJ_HASJIT + dasm_put(Dst, 1152); +#endif + dasm_put(Dst, 1154); +#if LJ_HASJIT + dasm_put(Dst, 1156, BC_JFORI); +#endif + dasm_put(Dst, 1159); +#if LJ_HASJIT + dasm_put(Dst, 1161, BC_JFORI); +#endif + dasm_put(Dst, 1164, BC_FORI, LJ_TFALSE, ~LJ_TISNUM+1, 31-3, Dt8(->upvalue), LJ_TTAB, Dt6(->metatable)); + dasm_put(Dst, 1227, LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, DtB(->next)); + dasm_put(Dst, 1275, LJ_TNIL, LJ_TUDATA, ~LJ_TISNUM+1, 31-2, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 1330, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_TTAB, LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base)); + dasm_put(Dst, 1390, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); if (LJ_DUALNUM) { - dasm_put(Dst, 1472); + dasm_put(Dst, 1400); } else { - dasm_put(Dst, 1474); + dasm_put(Dst, 1403); } - dasm_put(Dst, 1476, LJ_TTAB); - if (LJ_DUALNUM) { - dasm_put(Dst, 1483); - } else { - dasm_put(Dst, 1488); - } - dasm_put(Dst, 1500, Dt6(->asize), Dt6(->array)); - if (!LJ_DUALNUM) { - dasm_put(Dst, 1505); - } - dasm_put(Dst, 1507); - if (LJ_DUALNUM) { - dasm_put(Dst, 1511, 31-3); - } else { - dasm_put(Dst, 1516, 31-3); - } - dasm_put(Dst, 1520, LJ_TNIL, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8, (0+1)*8, LJ_TTAB); + dasm_put(Dst, 1406, LJ_TSTR, LJ_TTAB, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_TTAB); #ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 1568, Dt6(->metatable), Dt8(->upvalue[0])); + dasm_put(Dst, 1457, Dt6(->metatable), Dt8(->upvalue[0])); #else - dasm_put(Dst, 1577, Dt8(->upvalue[0])); + dasm_put(Dst, 1466, Dt8(->upvalue[0])); +#endif + dasm_put(Dst, 1470, (3+1)*8); + if (LJ_DUALNUM) { + dasm_put(Dst, 1482); + } else { + dasm_put(Dst, 1484); + } + dasm_put(Dst, 1486, LJ_TTAB); + if (LJ_DUALNUM) { + dasm_put(Dst, 1493); + } else { + dasm_put(Dst, 1498); + } + dasm_put(Dst, 1510, Dt6(->asize), Dt6(->array)); + if (!LJ_DUALNUM) { + dasm_put(Dst, 1515); + } + dasm_put(Dst, 1517); + if (LJ_DUALNUM) { + dasm_put(Dst, 1521, 31-3); + } else { + dasm_put(Dst, 1526, 31-3); + } + dasm_put(Dst, 1530, LJ_TNIL, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8, (0+1)*8, LJ_TTAB); +#ifdef LUAJIT_ENABLE_LUA52COMPAT + dasm_put(Dst, 1578, Dt6(->metatable), Dt8(->upvalue[0])); +#else + dasm_put(Dst, 1587, Dt8(->upvalue[0])); #endif if (LJ_DUALNUM) { - dasm_put(Dst, 1581); + dasm_put(Dst, 1591); } else { - dasm_put(Dst, 1583); + dasm_put(Dst, 1593); } - dasm_put(Dst, 1585, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), LJ_TFUNC, 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe)); - dasm_put(Dst, 1646, Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate)); - dasm_put(Dst, 1708, Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3); - dasm_put(Dst, 1771, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP); - dasm_put(Dst, 1830, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe)); - dasm_put(Dst, 1887, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status)); + dasm_put(Dst, 1595, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), LJ_TFUNC, 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe)); + dasm_put(Dst, 1656, Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate)); + dasm_put(Dst, 1718, Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3); + dasm_put(Dst, 1781, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP); + dasm_put(Dst, 1840, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe)); + dasm_put(Dst, 1897, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status)); if (LJ_DUALNUM) { - dasm_put(Dst, 1912); + dasm_put(Dst, 1922); } - dasm_put(Dst, 1933, (1+1)*8, FRAME_TYPE); + dasm_put(Dst, 1943, (1+1)*8, FRAME_TYPE); if (LJ_DUALNUM) { - dasm_put(Dst, 1975, 31-11, 32-21, 31-11); - dasm_put(Dst, 2057, 31-11, 32-21, 31-11); + dasm_put(Dst, 1985, 31-11, 32-21, 31-11); + dasm_put(Dst, 2067, 31-11, 32-21, 31-11); } else { - dasm_put(Dst, 2111); + dasm_put(Dst, 2121); } - dasm_put(Dst, 2138); - dasm_put(Dst, 2197); - dasm_put(Dst, 2255); - dasm_put(Dst, 2311, Dt8(->upvalue[0])); - dasm_put(Dst, 2377); + dasm_put(Dst, 2148); + dasm_put(Dst, 2207); + dasm_put(Dst, 2265); + dasm_put(Dst, 2321, Dt8(->upvalue[0])); + dasm_put(Dst, 2387); if (LJ_DUALNUM) { - dasm_put(Dst, 2381); + dasm_put(Dst, 2391); } else { - dasm_put(Dst, 2396); + dasm_put(Dst, 2406); } - dasm_put(Dst, 2414, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv)); + dasm_put(Dst, 2424, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv)); if (!LJ_DUALNUM) { - dasm_put(Dst, 2436); + dasm_put(Dst, 2446); } - dasm_put(Dst, 2441, (2+1)*8); + dasm_put(Dst, 2451, (2+1)*8); if (LJ_DUALNUM) { - dasm_put(Dst, 2445); + dasm_put(Dst, 2455); } else { - dasm_put(Dst, 2448); + dasm_put(Dst, 2458); } - dasm_put(Dst, 2450, (2+1)*8); + dasm_put(Dst, 2460, (2+1)*8); if (LJ_DUALNUM) { - dasm_put(Dst, 2472); + dasm_put(Dst, 2482); } else { - dasm_put(Dst, 2541); + dasm_put(Dst, 2551); } if (LJ_DUALNUM) { - dasm_put(Dst, 2566); + dasm_put(Dst, 2576); } else { - dasm_put(Dst, 2635); + dasm_put(Dst, 2645); } - dasm_put(Dst, 2660, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len)); + dasm_put(Dst, 2670, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len)); if (LJ_DUALNUM) { - dasm_put(Dst, 2687, Dt5([1]), (0+1)*8); + dasm_put(Dst, 2697, Dt5([1]), (0+1)*8); } else { - dasm_put(Dst, 2699, Dt5([1]), 31-3); + dasm_put(Dst, 2709, Dt5([1]), 31-3); } - dasm_put(Dst, 2715, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2725, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); if (LJ_DUALNUM) { - dasm_put(Dst, 2726); + dasm_put(Dst, 2736); } else { - dasm_put(Dst, 2734); + dasm_put(Dst, 2744); } - dasm_put(Dst, 2745, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2755, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); if (!LJ_DUALNUM) { - dasm_put(Dst, 2773); - } - dasm_put(Dst, 2775); - if (LJ_DUALNUM) { - dasm_put(Dst, 2781); - } else { dasm_put(Dst, 2783); } dasm_put(Dst, 2785); if (LJ_DUALNUM) { - dasm_put(Dst, 2789); + dasm_put(Dst, 2791); } else { - dasm_put(Dst, 2798); + dasm_put(Dst, 2793); } - dasm_put(Dst, 2809, LJ_TSTR); + dasm_put(Dst, 2795); + if (LJ_DUALNUM) { + dasm_put(Dst, 2799); + } else { + dasm_put(Dst, 2808); + } + dasm_put(Dst, 2819, LJ_TSTR); if (!LJ_DUALNUM) { - dasm_put(Dst, 2814); + dasm_put(Dst, 2824); } - dasm_put(Dst, 2818, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); + dasm_put(Dst, 2828, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); if (LJ_DUALNUM) { - dasm_put(Dst, 2868); + dasm_put(Dst, 2878); } else { - dasm_put(Dst, 2870); + dasm_put(Dst, 2880); } - dasm_put(Dst, 2872, LJ_TSTR); + dasm_put(Dst, 2882, LJ_TSTR); if (LJ_DUALNUM) { - dasm_put(Dst, 2879); + dasm_put(Dst, 2889); } else { - dasm_put(Dst, 2883); + dasm_put(Dst, 2893); } - dasm_put(Dst, 2890, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz)); - dasm_put(Dst, 2943, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); - dasm_put(Dst, 3001, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB); + dasm_put(Dst, 2900, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz)); + dasm_put(Dst, 2953, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); + dasm_put(Dst, 3011, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB); if (LJ_DUALNUM) { - dasm_put(Dst, 3070); - } else { dasm_put(Dst, 3080); - } - dasm_put(Dst, 3093); - if (LJ_DUALNUM) { - dasm_put(Dst, 3099); } else { - dasm_put(Dst, 3101); + dasm_put(Dst, 3090); } dasm_put(Dst, 3103); if (LJ_DUALNUM) { - dasm_put(Dst, 3107); + dasm_put(Dst, 3109); } else { - dasm_put(Dst, 3110); + dasm_put(Dst, 3111); } - dasm_put(Dst, 3116); + dasm_put(Dst, 3113); if (LJ_DUALNUM) { - dasm_put(Dst, 3121); + dasm_put(Dst, 3117); } else { + dasm_put(Dst, 3120); + } + dasm_put(Dst, 3126); + if (LJ_DUALNUM) { dasm_put(Dst, 3131); - } - dasm_put(Dst, 3144); - if (LJ_DUALNUM) { - dasm_put(Dst, 3150); } else { - dasm_put(Dst, 3152); + dasm_put(Dst, 3141); } dasm_put(Dst, 3154); if (LJ_DUALNUM) { - dasm_put(Dst, 3158); + dasm_put(Dst, 3160); } else { - dasm_put(Dst, 3161); + dasm_put(Dst, 3162); } - dasm_put(Dst, 3167); + dasm_put(Dst, 3164); if (LJ_DUALNUM) { - dasm_put(Dst, 3172); + dasm_put(Dst, 3168); } else { + dasm_put(Dst, 3171); + } + dasm_put(Dst, 3177); + if (LJ_DUALNUM) { dasm_put(Dst, 3182); - } - dasm_put(Dst, 3195); - if (LJ_DUALNUM) { - dasm_put(Dst, 3201); } else { - dasm_put(Dst, 3203); + dasm_put(Dst, 3192); } dasm_put(Dst, 3205); if (LJ_DUALNUM) { - dasm_put(Dst, 3209); + dasm_put(Dst, 3211); } else { - dasm_put(Dst, 3212); + dasm_put(Dst, 3213); } - dasm_put(Dst, 3218); + dasm_put(Dst, 3215); if (LJ_DUALNUM) { - dasm_put(Dst, 3223); + dasm_put(Dst, 3219); } else { + dasm_put(Dst, 3222); + } + dasm_put(Dst, 3228); + if (LJ_DUALNUM) { dasm_put(Dst, 3233); - } - dasm_put(Dst, 3246); - if (LJ_DUALNUM) { - dasm_put(Dst, 3253); } else { + dasm_put(Dst, 3243); + } + dasm_put(Dst, 3256); + if (LJ_DUALNUM) { dasm_put(Dst, 3263); - } - dasm_put(Dst, 3276); - if (LJ_DUALNUM) { - dasm_put(Dst, 3280); } else { - dasm_put(Dst, 3295); + dasm_put(Dst, 3273); } - dasm_put(Dst, 3316); + dasm_put(Dst, 3286); if (LJ_DUALNUM) { - dasm_put(Dst, 3321); + dasm_put(Dst, 3290); } else { - dasm_put(Dst, 3336); + dasm_put(Dst, 3305); } - dasm_put(Dst, 3357); + dasm_put(Dst, 3326); if (LJ_DUALNUM) { - dasm_put(Dst, 3362); + dasm_put(Dst, 3331); } else { - dasm_put(Dst, 3377); + dasm_put(Dst, 3346); } - dasm_put(Dst, 3398); + dasm_put(Dst, 3367); if (LJ_DUALNUM) { - dasm_put(Dst, 3403); + dasm_put(Dst, 3372); } else { - dasm_put(Dst, 3418); + dasm_put(Dst, 3387); } - dasm_put(Dst, 3439); + dasm_put(Dst, 3408); if (LJ_DUALNUM) { - dasm_put(Dst, 3443); + dasm_put(Dst, 3413); } else { - dasm_put(Dst, 3458); + dasm_put(Dst, 3428); } - dasm_put(Dst, 3479); + dasm_put(Dst, 3449); if (LJ_DUALNUM) { - dasm_put(Dst, 3484); + dasm_put(Dst, 3453); } else { + dasm_put(Dst, 3468); + } + dasm_put(Dst, 3489); + if (LJ_DUALNUM) { dasm_put(Dst, 3494); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 3507); } else { - dasm_put(Dst, 3510); + dasm_put(Dst, 3504); } - dasm_put(Dst, 3516); if (LJ_DUALNUM) { - dasm_put(Dst, 3524); + dasm_put(Dst, 3517); + } else { + dasm_put(Dst, 3520); } - dasm_put(Dst, 3532); + dasm_put(Dst, 3526); if (LJ_DUALNUM) { dasm_put(Dst, 3534); } - dasm_put(Dst, 3542, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); - dasm_put(Dst, 3605, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 3542); + if (LJ_DUALNUM) { + dasm_put(Dst, 3544); + } + 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); + dasm_put(Dst, 3615, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); #if LJ_HASJIT - dasm_put(Dst, 3631); + dasm_put(Dst, 3641); #endif - dasm_put(Dst, 3633, 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)); - dasm_put(Dst, 3680, GG_DISP2STATIC); -#if LJ_HASJIT - dasm_put(Dst, 3698); -#endif - dasm_put(Dst, 3700); -#if LJ_HASJIT - dasm_put(Dst, 3703); -#endif - dasm_put(Dst, 3706); + 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)); + dasm_put(Dst, 3690, GG_DISP2STATIC); #if LJ_HASJIT dasm_put(Dst, 3708); #endif - dasm_put(Dst, 3711, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 3710); #if LJ_HASJIT - dasm_put(Dst, 3733); + dasm_put(Dst, 3713); #endif - dasm_put(Dst, 3735); + dasm_put(Dst, 3716); #if LJ_HASJIT - dasm_put(Dst, 3737); + dasm_put(Dst, 3718); #endif - dasm_put(Dst, 3739); + dasm_put(Dst, 3721, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); +#if LJ_HASJIT + dasm_put(Dst, 3743); +#endif + dasm_put(Dst, 3745); #if LJ_HASJIT dasm_put(Dst, 3747); #endif - dasm_put(Dst, 3750); + dasm_put(Dst, 3749); #if LJ_HASJIT - dasm_put(Dst, 3763); + dasm_put(Dst, 3757); #endif - dasm_put(Dst, 3765); + dasm_put(Dst, 3760); #if LJ_HASJIT - dasm_put(Dst, 3767); + dasm_put(Dst, 3773); #endif - dasm_put(Dst, 3769); + dasm_put(Dst, 3775); +#if LJ_HASJIT + dasm_put(Dst, 3777); +#endif + dasm_put(Dst, 3779); #if LJ_HASFFI #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 3833, 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])); - dasm_put(Dst, 3889, 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])); + 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])); + 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])); #endif } @@ -8001,7 +8048,7 @@ static void build_subroutines(BuildCtx *ctx) static void build_ins(BuildCtx *ctx, BCOp op, int defop) { int vk = 0; - dasm_put(Dst, 3920, defop); + dasm_put(Dst, 3930, defop); switch (op) { @@ -8011,224 +8058,224 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: if (LJ_DUALNUM) { - dasm_put(Dst, 3922, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 3932, -(BCBIAS_J*4 >> 16)); if (op == BC_ISLT) { - dasm_put(Dst, 3939); + dasm_put(Dst, 3949); } else if (op == BC_ISGE) { - dasm_put(Dst, 3942); + dasm_put(Dst, 3952); } else if (op == BC_ISLE) { - dasm_put(Dst, 3945); + dasm_put(Dst, 3955); } else { - dasm_put(Dst, 3948); + dasm_put(Dst, 3958); } - dasm_put(Dst, 3951); + dasm_put(Dst, 3961); if (op == BC_ISLT) { - dasm_put(Dst, 3990); - } else if (op == BC_ISGE) { - dasm_put(Dst, 3993); - } else if (op == BC_ISLE) { - dasm_put(Dst, 3996); - } else { dasm_put(Dst, 4000); - } - dasm_put(Dst, 4004); - } else { - dasm_put(Dst, 4007, -(BCBIAS_J*4 >> 16)); - if (op == BC_ISLT) { - dasm_put(Dst, 4024); } else if (op == BC_ISGE) { - dasm_put(Dst, 4027); + dasm_put(Dst, 4003); } else if (op == BC_ISLE) { - dasm_put(Dst, 4030); + dasm_put(Dst, 4006); } else { - dasm_put(Dst, 4034); + dasm_put(Dst, 4010); } - dasm_put(Dst, 4038); + dasm_put(Dst, 4014); + } else { + dasm_put(Dst, 4017, -(BCBIAS_J*4 >> 16)); + if (op == BC_ISLT) { + dasm_put(Dst, 4034); + } else if (op == BC_ISGE) { + dasm_put(Dst, 4037); + } else if (op == BC_ISLE) { + dasm_put(Dst, 4040); + } else { + dasm_put(Dst, 4044); + } + dasm_put(Dst, 4048); } break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; if (LJ_DUALNUM) { - dasm_put(Dst, 4051, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4061, -(BCBIAS_J*4 >> 16)); if (vk) { - dasm_put(Dst, 4064); + dasm_put(Dst, 4074); } else { - dasm_put(Dst, 4067); + dasm_put(Dst, 4077); } } else { - dasm_put(Dst, 4070, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4080, -(BCBIAS_J*4 >> 16)); if (vk) { - dasm_put(Dst, 4087); + dasm_put(Dst, 4097); } else { - dasm_put(Dst, 4091); + dasm_put(Dst, 4101); } - dasm_put(Dst, 4095); + dasm_put(Dst, 4105); } - dasm_put(Dst, 4107); + dasm_put(Dst, 4117); if (!LJ_DUALNUM) { - dasm_put(Dst, 4109); + dasm_put(Dst, 4119); } if (LJ_HASFFI) { - dasm_put(Dst, 4112, LJ_TCDATA, LJ_TCDATA); + dasm_put(Dst, 4122, LJ_TCDATA, LJ_TCDATA); } - dasm_put(Dst, 4117, ~LJ_TISPRI); + dasm_put(Dst, 4127, ~LJ_TISPRI); if (LJ_HASFFI) { - dasm_put(Dst, 4122); + dasm_put(Dst, 4132); } - dasm_put(Dst, 4124, ~LJ_TISTABUD); + dasm_put(Dst, 4134, ~LJ_TISTABUD); if (LJ_HASFFI) { - dasm_put(Dst, 4127); + dasm_put(Dst, 4137); } - dasm_put(Dst, 4130); + dasm_put(Dst, 4140); if (vk) { - dasm_put(Dst, 4138); - } else { - dasm_put(Dst, 4143); - } - if (LJ_DUALNUM) { dasm_put(Dst, 4148); } else { - dasm_put(Dst, 4163); + dasm_put(Dst, 4153); } - dasm_put(Dst, 4166, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<metatable), 1-vk, Dt6(->nomm), 1<> 16)); + dasm_put(Dst, 4213, -(BCBIAS_J*4 >> 16)); if (vk) { - dasm_put(Dst, 4211); + dasm_put(Dst, 4221); } else { - dasm_put(Dst, 4213); + dasm_put(Dst, 4223); } - dasm_put(Dst, 4215); + dasm_put(Dst, 4225); break; case BC_ISEQN: case BC_ISNEN: vk = op == BC_ISEQN; if (LJ_DUALNUM) { - dasm_put(Dst, 4227, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4237, -(BCBIAS_J*4 >> 16)); if (vk) { - dasm_put(Dst, 4239); + dasm_put(Dst, 4249); } else { - dasm_put(Dst, 4241); + dasm_put(Dst, 4251); } - dasm_put(Dst, 4243); + dasm_put(Dst, 4253); } else { if (vk) { - dasm_put(Dst, 4250); + dasm_put(Dst, 4260); } else { - dasm_put(Dst, 4252); + dasm_put(Dst, 4262); } - dasm_put(Dst, 4254, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4264, -(BCBIAS_J*4 >> 16)); } if (vk) { - dasm_put(Dst, 4267); + dasm_put(Dst, 4277); if (!LJ_HASFFI) { - dasm_put(Dst, 4272); + dasm_put(Dst, 4282); } } else { - dasm_put(Dst, 4274); + dasm_put(Dst, 4284); if (!LJ_HASFFI) { - dasm_put(Dst, 4278); + dasm_put(Dst, 4288); } - dasm_put(Dst, 4280); + dasm_put(Dst, 4290); } - dasm_put(Dst, 4283); + dasm_put(Dst, 4293); if (LJ_HASFFI) { - dasm_put(Dst, 4294, LJ_TCDATA); + dasm_put(Dst, 4304, LJ_TCDATA); } if (LJ_DUALNUM) { - dasm_put(Dst, 4302); + dasm_put(Dst, 4312); } break; case BC_ISEQP: case BC_ISNEP: vk = op == BC_ISEQP; - dasm_put(Dst, 4326, 32-3); + dasm_put(Dst, 4336, 32-3); if (LJ_HASFFI) { - dasm_put(Dst, 4333, LJ_TCDATA); + dasm_put(Dst, 4343, LJ_TCDATA); } - dasm_put(Dst, 4336); + dasm_put(Dst, 4346); if (LJ_HASFFI) { - dasm_put(Dst, 4338); + dasm_put(Dst, 4348); } - dasm_put(Dst, 4341, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4351, -(BCBIAS_J*4 >> 16)); if (vk) { - dasm_put(Dst, 4347); + dasm_put(Dst, 4357); } else { - dasm_put(Dst, 4349); + dasm_put(Dst, 4359); } - dasm_put(Dst, 4351); + dasm_put(Dst, 4361); break; /* -- Unary test and copy ops ------------------------------------------- */ case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: - dasm_put(Dst, 4363); + dasm_put(Dst, 4373); if (op == BC_IST || op == BC_ISF) { - dasm_put(Dst, 4367, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4377, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); if (op == BC_IST) { - dasm_put(Dst, 4374); + dasm_put(Dst, 4384); } else { - dasm_put(Dst, 4376); + dasm_put(Dst, 4386); } - dasm_put(Dst, 4378); + dasm_put(Dst, 4388); } else { - dasm_put(Dst, 4380, LJ_TFALSE); + dasm_put(Dst, 4390, LJ_TFALSE); if (op == BC_ISTC) { - dasm_put(Dst, 4385); + dasm_put(Dst, 4395); } else { - dasm_put(Dst, 4388); + dasm_put(Dst, 4398); } - dasm_put(Dst, 4391, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 4401, -(BCBIAS_J*4 >> 16)); } - dasm_put(Dst, 4398); + dasm_put(Dst, 4408); break; /* -- Unary ops --------------------------------------------------------- */ case BC_MOV: - dasm_put(Dst, 4409); + dasm_put(Dst, 4419); break; case BC_NOT: - dasm_put(Dst, 4422, LJ_TTRUE); + dasm_put(Dst, 4432, LJ_TTRUE); break; case BC_UNM: - dasm_put(Dst, 4438); + dasm_put(Dst, 4448); if (LJ_DUALNUM) { - dasm_put(Dst, 4442); + dasm_put(Dst, 4452); } - dasm_put(Dst, 4470); + dasm_put(Dst, 4480); if (LJ_DUALNUM) { - dasm_put(Dst, 4480); + dasm_put(Dst, 4490); } else { - dasm_put(Dst, 4483); + dasm_put(Dst, 4493); } break; case BC_LEN: - dasm_put(Dst, 4492, LJ_TSTR, Dt5(->len)); + dasm_put(Dst, 4502, LJ_TSTR, Dt5(->len)); if (LJ_DUALNUM) { - dasm_put(Dst, 4502); + dasm_put(Dst, 4512); } else { - dasm_put(Dst, 4507); + dasm_put(Dst, 4517); } - dasm_put(Dst, 4514, LJ_TTAB); + dasm_put(Dst, 4524, LJ_TTAB); #ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 4528, Dt6(->metatable)); + dasm_put(Dst, 4538, Dt6(->metatable)); #endif - dasm_put(Dst, 4535); + dasm_put(Dst, 4545); #ifdef LUAJIT_ENABLE_LUA52COMPAT - dasm_put(Dst, 4541, Dt6(->nomm), 1<nomm), 1<base), 32-3, Dt1(->base)); + dasm_put(Dst, 5324, Dt1(->base), 32-3, Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 5314, 32-1, LJ_TSTR); + dasm_put(Dst, 5354, 32-1, LJ_TSTR); break; case BC_KCDATA: #if LJ_HASFFI - dasm_put(Dst, 5333, 32-1, LJ_TCDATA); + dasm_put(Dst, 5373, 32-1, LJ_TCDATA); #endif break; case BC_KSHORT: if (LJ_DUALNUM) { - dasm_put(Dst, 5352, 31-13); + dasm_put(Dst, 5392, 31-13); } else { - dasm_put(Dst, 5368, 31-13); + dasm_put(Dst, 5408, 31-13, 31-20); } break; case BC_KNUM: - dasm_put(Dst, 5387); + dasm_put(Dst, 5436); break; case BC_KPRI: - dasm_put(Dst, 5400, 32-3); + dasm_put(Dst, 5449, 32-3); break; case BC_KNIL: - dasm_put(Dst, 5415); + dasm_put(Dst, 5464); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 5434, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 5483, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: - dasm_put(Dst, 5455, 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); + 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); break; case BC_USETS: - dasm_put(Dst, 5508, 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); + 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); break; case BC_USETN: - dasm_put(Dst, 5559, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 5608, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETP: - dasm_put(Dst, 5580, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); + dasm_put(Dst, 5629, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 5603, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 5652, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 5633, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 5682, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: case BC_TDUP: - dasm_put(Dst, 5661, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); + dasm_put(Dst, 5710, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); if (op == BC_TNEW) { - dasm_put(Dst, 5674); + dasm_put(Dst, 5723); } else { - dasm_put(Dst, 5683, 32-1); + dasm_put(Dst, 5732, 32-1); } - dasm_put(Dst, 5690, Dt1(->base), LJ_TTAB); + dasm_put(Dst, 5739, Dt1(->base), LJ_TTAB); if (op == BC_TNEW) { - dasm_put(Dst, 5707); + dasm_put(Dst, 5756); } - dasm_put(Dst, 5712); + dasm_put(Dst, 5761); break; case BC_GGET: case BC_GSET: - dasm_put(Dst, 5721, 32-1, Dt7(->env)); + dasm_put(Dst, 5770, 32-1, Dt7(->env)); if (op == BC_GGET) { - dasm_put(Dst, 5729); + dasm_put(Dst, 5778); } else { - dasm_put(Dst, 5732); + dasm_put(Dst, 5781); } break; case BC_TGETV: - dasm_put(Dst, 5735); + dasm_put(Dst, 5784); if (LJ_DUALNUM) { - dasm_put(Dst, 5739); + dasm_put(Dst, 5788); } else { - dasm_put(Dst, 5741); + dasm_put(Dst, 5790); } - dasm_put(Dst, 5743, LJ_TTAB); + dasm_put(Dst, 5792, LJ_TTAB); if (LJ_DUALNUM) { - dasm_put(Dst, 5749, Dt6(->asize), Dt6(->array), 31-3); + dasm_put(Dst, 5798, Dt6(->asize), Dt6(->array), 31-3); } else { - dasm_put(Dst, 5759, Dt6(->asize), Dt6(->array), 31-3); + dasm_put(Dst, 5808, Dt6(->asize), Dt6(->array), 31-3); } - dasm_put(Dst, 5776, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<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)); - dasm_put(Dst, 5882, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<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)); + dasm_put(Dst, 5931, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), 31-3); + dasm_put(Dst, 6013, Dt6(->asize), Dt6(->array), 31-3); } else { - dasm_put(Dst, 5974, Dt6(->asize), Dt6(->array), 31-3); + dasm_put(Dst, 6023, Dt6(->asize), Dt6(->array), 31-3); } - dasm_put(Dst, 5991, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); + dasm_put(Dst, 6089, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); break; - dasm_put(Dst, 6055, LJ_TSTR, LJ_TNIL); + dasm_put(Dst, 6104, LJ_TSTR, LJ_TNIL); case BC_TSETS: - dasm_put(Dst, 6081, 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); - dasm_put(Dst, 6132, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); + 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); + dasm_put(Dst, 6181, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); break; case BC_TSETB: - dasm_put(Dst, 6213, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); + dasm_put(Dst, 6262, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<marked), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 6281, 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)); - dasm_put(Dst, 6350); + 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)); + dasm_put(Dst, 6399); break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALLM: - dasm_put(Dst, 6353); + dasm_put(Dst, 6402); break; case BC_CALL: - dasm_put(Dst, 6355, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 6404, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 6376); + dasm_put(Dst, 6425); break; case BC_CALLT: - dasm_put(Dst, 6378, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); - dasm_put(Dst, 6442, FRAME_TYPE); + dasm_put(Dst, 6427, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); + dasm_put(Dst, 6491, FRAME_TYPE); break; case BC_ITERC: - dasm_put(Dst, 6451, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 6500, LJ_TFUNC, Dt7(->pc)); break; case BC_ITERN: #if LJ_HASJIT #endif - dasm_put(Dst, 6478, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); + dasm_put(Dst, 6527, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); if (LJ_DUALNUM) { - dasm_put(Dst, 6500); + dasm_put(Dst, 6549); } else { - dasm_put(Dst, 6503); + dasm_put(Dst, 6552); } - dasm_put(Dst, 6507, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 6556, -(BCBIAS_J*4 >> 16)); if (!LJ_DUALNUM) { - dasm_put(Dst, 6515); + dasm_put(Dst, 6564); } - dasm_put(Dst, 6517, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 6566, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); break; case BC_ISNEXT: - dasm_put(Dst, 6573, 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)); + 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)); break; case BC_VARG: - dasm_put(Dst, 6623, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); - dasm_put(Dst, 6703); + dasm_put(Dst, 6672, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); + dasm_put(Dst, 6752); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 6709); + dasm_put(Dst, 6758); break; case BC_RET: - dasm_put(Dst, 6711, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); + dasm_put(Dst, 6760, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); break; case BC_RET0: case BC_RET1: - dasm_put(Dst, 6781, FRAME_TYPE, FRAME_VARG); + dasm_put(Dst, 6830, FRAME_TYPE, FRAME_VARG); if (op == BC_RET1) { - dasm_put(Dst, 6794); + dasm_put(Dst, 6843); } - dasm_put(Dst, 6797, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 6846, Dt7(->pc), PC2PROTO(k)); break; /* -- Loops and branches ------------------------------------------------ */ case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 6825); + dasm_put(Dst, 6874); #endif break; @@ -8883,93 +8936,93 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) case BC_IFORL: vk = (op == BC_IFORL || op == BC_JFORL); if (LJ_DUALNUM) { - dasm_put(Dst, 6827, FORL_IDX*8+4); + dasm_put(Dst, 6876, FORL_IDX*8+4); if (vk) { - dasm_put(Dst, 6832, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); + dasm_put(Dst, 6881, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); } else { - dasm_put(Dst, 6846, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); + dasm_put(Dst, 6895, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); } - dasm_put(Dst, 6862, FORL_EXT*8); + dasm_put(Dst, 6911, FORL_EXT*8); if (op != BC_JFORL) { - dasm_put(Dst, 6869, 32-1); + dasm_put(Dst, 6918, 32-1); } - dasm_put(Dst, 6872, FORL_EXT*8+4); + dasm_put(Dst, 6921, FORL_EXT*8+4); if (op != BC_JFORL) { - dasm_put(Dst, 6875); + dasm_put(Dst, 6924); } if (op == BC_FORI) { - dasm_put(Dst, 6877); + dasm_put(Dst, 6926); } else if (op == BC_JFORI) { - dasm_put(Dst, 6880, -(BCBIAS_J*4 >> 16), BC_JLOOP); + dasm_put(Dst, 6929, -(BCBIAS_J*4 >> 16), BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 6885, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 6934, -(BCBIAS_J*4 >> 16)); } else { - dasm_put(Dst, 6890, BC_JLOOP); + dasm_put(Dst, 6939, BC_JLOOP); } - dasm_put(Dst, 6893); + dasm_put(Dst, 6942); if (vk) { - dasm_put(Dst, 6909); + dasm_put(Dst, 6958); } } if (vk) { if (LJ_DUALNUM) { - dasm_put(Dst, 6916, FORL_IDX*8); + dasm_put(Dst, 6965, FORL_IDX*8); } else { - dasm_put(Dst, 6920); + dasm_put(Dst, 6969); } - dasm_put(Dst, 6922, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); + dasm_put(Dst, 6971, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); } else { if (LJ_DUALNUM) { - dasm_put(Dst, 6932); + dasm_put(Dst, 6981); } else { - dasm_put(Dst, 6934, FORL_STEP*8, FORL_STOP*8); + dasm_put(Dst, 6983, FORL_STEP*8, FORL_STOP*8); } - dasm_put(Dst, 6943, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); - } - dasm_put(Dst, 6954); - if (op != BC_JFORL) { - dasm_put(Dst, 6956, 32-1); - } - dasm_put(Dst, 6959, FORL_EXT*8); - if (op != BC_JFORL) { - dasm_put(Dst, 6962); - } - dasm_put(Dst, 6964); - if (op == BC_JFORI) { - dasm_put(Dst, 6966, -(BCBIAS_J*4 >> 16)); - } - dasm_put(Dst, 6969); - if (op == BC_FORI) { - dasm_put(Dst, 6972); - } else if (op == BC_IFORL) { - if (LJ_DUALNUM) { - dasm_put(Dst, 6975); - } else { - dasm_put(Dst, 6978); - } - dasm_put(Dst, 6981, -(BCBIAS_J*4 >> 16)); - } else { - dasm_put(Dst, 6985, BC_JLOOP); - } - if (LJ_DUALNUM) { - dasm_put(Dst, 6988); - } else { - dasm_put(Dst, 6991); + dasm_put(Dst, 6992, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); } dasm_put(Dst, 7003); - if (op == BC_FORI) { - dasm_put(Dst, 7005, -(BCBIAS_J*4 >> 16)); - } else if (op == BC_IFORL) { - dasm_put(Dst, 7011); - } else { - dasm_put(Dst, 7014, BC_JLOOP); + if (op != BC_JFORL) { + dasm_put(Dst, 7005, 32-1); } - dasm_put(Dst, 7017); + dasm_put(Dst, 7008, FORL_EXT*8); + if (op != BC_JFORL) { + dasm_put(Dst, 7011); + } + dasm_put(Dst, 7013); + if (op == BC_JFORI) { + dasm_put(Dst, 7015, -(BCBIAS_J*4 >> 16)); + } + dasm_put(Dst, 7018); + if (op == BC_FORI) { + dasm_put(Dst, 7021); + } else if (op == BC_IFORL) { + if (LJ_DUALNUM) { + dasm_put(Dst, 7024); + } else { + dasm_put(Dst, 7027); + } + dasm_put(Dst, 7030, -(BCBIAS_J*4 >> 16)); + } else { + dasm_put(Dst, 7034, BC_JLOOP); + } + if (LJ_DUALNUM) { + dasm_put(Dst, 7037); + } else { + dasm_put(Dst, 7040); + } + dasm_put(Dst, 7052); + if (op == BC_FORI) { + dasm_put(Dst, 7054, -(BCBIAS_J*4 >> 16)); + } else if (op == BC_IFORL) { + dasm_put(Dst, 7060); + } else { + dasm_put(Dst, 7063, BC_JLOOP); + } + dasm_put(Dst, 7066); break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 7020); + dasm_put(Dst, 7069); #endif break; @@ -8978,40 +9031,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) break; #endif case BC_IITERL: - dasm_put(Dst, 7022, LJ_TNIL); + dasm_put(Dst, 7071, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 7029); + dasm_put(Dst, 7078); } else { - dasm_put(Dst, 7031, 32-1, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 7080, 32-1, -(BCBIAS_J*4 >> 16)); } - dasm_put(Dst, 7039); + dasm_put(Dst, 7088); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 7051); + dasm_put(Dst, 7100); #endif break; case BC_ILOOP: - dasm_put(Dst, 7053); + dasm_put(Dst, 7102); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 7064); + dasm_put(Dst, 7113); #endif break; case BC_JMP: - dasm_put(Dst, 7066, 32-1, -(BCBIAS_J*4 >> 16)); + dasm_put(Dst, 7115, 32-1, -(BCBIAS_J*4 >> 16)); break; /* -- Function headers -------------------------------------------------- */ case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 7082); + dasm_put(Dst, 7131); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -9021,38 +9074,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) break; #endif case BC_IFUNCF: - dasm_put(Dst, 7084, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); + dasm_put(Dst, 7133, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); if (op == BC_JFUNCF) { - dasm_put(Dst, 7102); + dasm_put(Dst, 7151); } else { - dasm_put(Dst, 7104); + dasm_put(Dst, 7153); } - dasm_put(Dst, 7113); + dasm_put(Dst, 7162); break; case BC_JFUNCV: #if !LJ_HASJIT break; #endif - dasm_put(Dst, 7119); + dasm_put(Dst, 7168); break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 7121, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 7170, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: if (op == BC_FUNCC) { - dasm_put(Dst, 7174, Dt8(->f)); + dasm_put(Dst, 7223, Dt8(->f)); } else { - dasm_put(Dst, 7177, DISPATCH_GL(wrapf)); + dasm_put(Dst, 7226, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 7180, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); + dasm_put(Dst, 7229, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); if (op == BC_FUNCCW) { - dasm_put(Dst, 7193, Dt8(->f)); + dasm_put(Dst, 7242, Dt8(->f)); } - dasm_put(Dst, 7196, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); + dasm_put(Dst, 7245, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); break; /* ---------------------------------------------------------------------- */ @@ -9072,7 +9125,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx); - dasm_put(Dst, 7217); + dasm_put(Dst, 7266); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op); @@ -9107,7 +9160,8 @@ static void emit_asm_debug(BuildCtx *ctx) "\t.long .Lbegin\n" "\t.long %d\n" "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", + "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" + "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", (int)ctx->codesz, CFRAME_SIZE); for (i = 14; i <= 31; i++) fprintf(ctx->fp, @@ -9144,7 +9198,8 @@ static void emit_asm_debug(BuildCtx *ctx) "\t.long %d\n" "\t.uleb128 0\n" /* augmentation length */ "\t.byte 0xe\n\t.uleb128 %d\n" - "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", + "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" + "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", (int)ctx->codesz, CFRAME_SIZE); for (i = 14; i <= 31; i++) fprintf(ctx->fp, diff --git a/src/lj_frame.h b/src/lj_frame.h index 2baf44a8..b8b7a727 100644 --- a/src/lj_frame.h +++ b/src/lj_frame.h @@ -100,13 +100,13 @@ enum { #define CFRAME_SIZE 64 #define CFRAME_SHIFT_MULTRES 3 #elif LJ_TARGET_PPC -#define CFRAME_OFS_ERRF 28 -#define CFRAME_OFS_NRES 24 -#define CFRAME_OFS_PREV 20 -#define CFRAME_OFS_L 16 -#define CFRAME_OFS_PC 8 -#define CFRAME_OFS_MULTRES 12 -#define CFRAME_SIZE 256 +#define CFRAME_OFS_ERRF 48 +#define CFRAME_OFS_NRES 44 +#define CFRAME_OFS_PREV 40 +#define CFRAME_OFS_L 36 +#define CFRAME_OFS_PC 32 +#define CFRAME_OFS_MULTRES 28 +#define CFRAME_SIZE 272 #define CFRAME_SHIFT_MULTRES 3 #elif LJ_TARGET_PPCSPE #define CFRAME_OFS_ERRF 28