diff options
| author | Mike Pall <mike> | 2020-10-12 15:43:18 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2020-10-12 15:43:18 +0200 |
| commit | 4bb2e4a547330c59adadf206451944921219c6ed (patch) | |
| tree | 780230382deae1647c0ff3f0e324b43fccf93196 /src | |
| parent | e9af1abec542e6f9851ff2368e7f196b6382a44c (diff) | |
| parent | de6b1a11dd1a3349179084578c5d533be1c30234 (diff) | |
| download | luajit-4bb2e4a547330c59adadf206451944921219c6ed.tar.gz luajit-4bb2e4a547330c59adadf206451944921219c6ed.tar.bz2 luajit-4bb2e4a547330c59adadf206451944921219c6ed.zip | |
Merge branch 'master' into v2.1
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm.c | 2 | ||||
| -rw-r--r-- | src/lj_ir.h | 8 | ||||
| -rw-r--r-- | src/lj_opt_dce.c | 5 | ||||
| -rw-r--r-- | src/lj_opt_mem.c | 25 |
4 files changed, 15 insertions, 25 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c index cc7841c0..aae7b5b9 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
| @@ -2342,7 +2342,7 @@ void lj_asm_trace(jit_State *J, GCtrace *T) | |||
| 2342 | /* Ensure an initialized instruction beyond the last one for HIOP checks. */ | 2342 | /* Ensure an initialized instruction beyond the last one for HIOP checks. */ |
| 2343 | /* This also allows one RENAME to be added without reallocating curfinal. */ | 2343 | /* This also allows one RENAME to be added without reallocating curfinal. */ |
| 2344 | as->orignins = lj_ir_nextins(J); | 2344 | as->orignins = lj_ir_nextins(J); |
| 2345 | J->cur.ir[as->orignins].o = IR_NOP; | 2345 | lj_ir_nop(&J->cur.ir[as->orignins]); |
| 2346 | 2346 | ||
| 2347 | /* Setup initial state. Copy some fields to reduce indirections. */ | 2347 | /* Setup initial state. Copy some fields to reduce indirections. */ |
| 2348 | as->J = J; | 2348 | as->J = J; |
diff --git a/src/lj_ir.h b/src/lj_ir.h index b9da1fc5..0340f3c2 100644 --- a/src/lj_ir.h +++ b/src/lj_ir.h | |||
| @@ -587,4 +587,12 @@ static LJ_AINLINE int ir_sideeff(IRIns *ir) | |||
| 587 | 587 | ||
| 588 | LJ_STATIC_ASSERT((int)IRT_GUARD == (int)IRM_W); | 588 | LJ_STATIC_ASSERT((int)IRT_GUARD == (int)IRM_W); |
| 589 | 589 | ||
| 590 | /* Replace IR instruction with NOP. */ | ||
| 591 | static LJ_AINLINE void lj_ir_nop(IRIns *ir) | ||
| 592 | { | ||
| 593 | ir->ot = IRT(IR_NOP, IRT_NIL); | ||
| 594 | ir->op1 = ir->op2 = 0; | ||
| 595 | ir->prev = 0; | ||
| 596 | } | ||
| 597 | |||
| 590 | #endif | 598 | #endif |
diff --git a/src/lj_opt_dce.c b/src/lj_opt_dce.c index a1df91dd..31e5badd 100644 --- a/src/lj_opt_dce.c +++ b/src/lj_opt_dce.c | |||
| @@ -47,10 +47,7 @@ static void dce_propagate(jit_State *J) | |||
| 47 | pchain[ir->o] = &ir->prev; | 47 | pchain[ir->o] = &ir->prev; |
| 48 | } else if (!ir_sideeff(ir)) { | 48 | } else if (!ir_sideeff(ir)) { |
| 49 | *pchain[ir->o] = ir->prev; /* Reroute original instruction chain. */ | 49 | *pchain[ir->o] = ir->prev; /* Reroute original instruction chain. */ |
| 50 | ir->t.irt = IRT_NIL; | 50 | lj_ir_nop(ir); |
| 51 | ir->o = IR_NOP; /* Replace instruction with NOP. */ | ||
| 52 | ir->op1 = ir->op2 = 0; | ||
| 53 | ir->prev = 0; | ||
| 54 | continue; | 51 | continue; |
| 55 | } | 52 | } |
| 56 | if (ir->op1 >= REF_FIRST) irt_setmark(IR(ir->op1)->t); | 53 | if (ir->op1 >= REF_FIRST) irt_setmark(IR(ir->op1)->t); |
diff --git a/src/lj_opt_mem.c b/src/lj_opt_mem.c index 80517f16..0d9837b1 100644 --- a/src/lj_opt_mem.c +++ b/src/lj_opt_mem.c | |||
| @@ -370,10 +370,7 @@ TRef LJ_FASTCALL lj_opt_dse_ahstore(jit_State *J) | |||
| 370 | goto doemit; /* No elimination possible. */ | 370 | goto doemit; /* No elimination possible. */ |
| 371 | /* Remove redundant store from chain and replace with NOP. */ | 371 | /* Remove redundant store from chain and replace with NOP. */ |
| 372 | *refp = store->prev; | 372 | *refp = store->prev; |
| 373 | store->o = IR_NOP; | 373 | lj_ir_nop(store); |
| 374 | store->t.irt = IRT_NIL; | ||
| 375 | store->op1 = store->op2 = 0; | ||
| 376 | store->prev = 0; | ||
| 377 | /* Now emit the new store instead. */ | 374 | /* Now emit the new store instead. */ |
| 378 | } | 375 | } |
| 379 | goto doemit; | 376 | goto doemit; |
| @@ -534,10 +531,7 @@ TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J) | |||
| 534 | goto doemit; /* No elimination possible. */ | 531 | goto doemit; /* No elimination possible. */ |
| 535 | /* Remove redundant store from chain and replace with NOP. */ | 532 | /* Remove redundant store from chain and replace with NOP. */ |
| 536 | *refp = store->prev; | 533 | *refp = store->prev; |
| 537 | store->o = IR_NOP; | 534 | lj_ir_nop(store); |
| 538 | store->t.irt = IRT_NIL; | ||
| 539 | store->op1 = store->op2 = 0; | ||
| 540 | store->prev = 0; | ||
| 541 | if (ref+1 < J->cur.nins && | 535 | if (ref+1 < J->cur.nins && |
| 542 | store[1].o == IR_OBAR && store[1].op1 == xref) { | 536 | store[1].o == IR_OBAR && store[1].op1 == xref) { |
| 543 | IRRef1 *bp = &J->chain[IR_OBAR]; | 537 | IRRef1 *bp = &J->chain[IR_OBAR]; |
| @@ -546,10 +540,7 @@ TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J) | |||
| 546 | bp = &obar->prev; | 540 | bp = &obar->prev; |
| 547 | /* Remove OBAR, too. */ | 541 | /* Remove OBAR, too. */ |
| 548 | *bp = obar->prev; | 542 | *bp = obar->prev; |
| 549 | obar->o = IR_NOP; | 543 | lj_ir_nop(obar); |
| 550 | obar->t.irt = IRT_NIL; | ||
| 551 | obar->op1 = obar->op2 = 0; | ||
| 552 | obar->prev = 0; | ||
| 553 | } | 544 | } |
| 554 | /* Now emit the new store instead. */ | 545 | /* Now emit the new store instead. */ |
| 555 | } | 546 | } |
| @@ -640,10 +631,7 @@ TRef LJ_FASTCALL lj_opt_dse_fstore(jit_State *J) | |||
| 640 | goto doemit; /* No elimination possible. */ | 631 | goto doemit; /* No elimination possible. */ |
| 641 | /* Remove redundant store from chain and replace with NOP. */ | 632 | /* Remove redundant store from chain and replace with NOP. */ |
| 642 | *refp = store->prev; | 633 | *refp = store->prev; |
| 643 | store->o = IR_NOP; | 634 | lj_ir_nop(store); |
| 644 | store->t.irt = IRT_NIL; | ||
| 645 | store->op1 = store->op2 = 0; | ||
| 646 | store->prev = 0; | ||
| 647 | /* Now emit the new store instead. */ | 635 | /* Now emit the new store instead. */ |
| 648 | } | 636 | } |
| 649 | goto doemit; | 637 | goto doemit; |
| @@ -894,10 +882,7 @@ TRef LJ_FASTCALL lj_opt_dse_xstore(jit_State *J) | |||
| 894 | goto doemit; /* No elimination possible. */ | 882 | goto doemit; /* No elimination possible. */ |
| 895 | /* Remove redundant store from chain and replace with NOP. */ | 883 | /* Remove redundant store from chain and replace with NOP. */ |
| 896 | *refp = store->prev; | 884 | *refp = store->prev; |
| 897 | store->o = IR_NOP; | 885 | lj_ir_nop(store); |
| 898 | store->t.irt = IRT_NIL; | ||
| 899 | store->op1 = store->op2 = 0; | ||
| 900 | store->prev = 0; | ||
| 901 | /* Now emit the new store instead. */ | 886 | /* Now emit the new store instead. */ |
| 902 | } | 887 | } |
| 903 | goto doemit; | 888 | goto doemit; |
