PPC: Avoid pointless arg clearing in BC_IFUNCF. Remove dead code.

This commit is contained in:
Mike Pall 2012-01-23 19:15:52 +01:00
parent 9f485115ef
commit 7d2774e4c5
2 changed files with 537 additions and 580 deletions

View File

@ -1347,7 +1347,6 @@ static void build_subroutines(BuildCtx *ctx)
| cmplwi NARGS8:RC, 16 | cmplwi NARGS8:RC, 16
| lwz CARG4, 8(BASE) | lwz CARG4, 8(BASE)
| lfd FARG2, 8(BASE) | lfd FARG2, 8(BASE)
| lwz CARG3, 0(BASE)
| lfd FARG1, 0(BASE) | lfd FARG1, 0(BASE)
| blt ->fff_fallback | blt ->fff_fallback
| lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH)
@ -2619,7 +2618,6 @@ static void build_subroutines(BuildCtx *ctx)
| stwux sp, sp, TMP1 | stwux sp, sp, TMP1
| crnot 4*cr1+eq, 4*cr1+eq // For vararg calls. | crnot 4*cr1+eq, 4*cr1+eq // For vararg calls.
| stw r14, -4(TMP2) | stw r14, -4(TMP2)
| li TMP3, 0
| stw CCSTATE, -8(TMP2) | stw CCSTATE, -8(TMP2)
| mr r14, TMP2 | mr r14, TMP2
| la TMP1, CCSTATE->stack | la TMP1, CCSTATE->stack
@ -3840,14 +3838,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| barrierback TAB:RB, TMP3, TMP0 | barrierback TAB:RB, TMP3, TMP0
| b <2 | b <2
break; break;
|1:
| checkstr CARG1; bne >4
| cmpw TMP0, STR:RC; bne >4
| checknil CARG2; beq >5 // Key found, but nil value?
|3:
| stwux CARG2, RA, BASE
| stw TMP1, 4(RA)
| ins_next
case BC_TSETS: case BC_TSETS:
| // RA = src*8, RB = table*8, RC = str_const*8 (~) | // RA = src*8, RB = table*8, RC = str_const*8 (~)
| lwzux CARG1, RB, BASE | lwzux CARG1, RB, BASE
@ -3874,7 +3864,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| lwz CARG1, NODE:TMP2->key | lwz CARG1, NODE:TMP2->key
| lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2) | lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2)
| lwz CARG2, NODE:TMP2->val | lwz CARG2, NODE:TMP2->val
| lwz TMP1, 4+offsetof(Node, val)(NODE:TMP2) | lwz NODE:TMP1, NODE:TMP2->next
| checkstr CARG1; bne >5 | checkstr CARG1; bne >5
| cmpw TMP0, STR:RC; bne >5 | cmpw TMP0, STR:RC; bne >5
| checknil CARG2; beq >4 // Key found, but nil value? | checknil CARG2; beq >4 // Key found, but nil value?
@ -3895,8 +3885,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| b ->vmeta_tsets | b ->vmeta_tsets
| |
|5: // Follow hash chain. |5: // Follow hash chain.
| lwz NODE:TMP2, NODE:TMP2->next | cmplwi NODE:TMP1, 0
| cmplwi NODE:TMP2, 0 | mr NODE:TMP2, NODE:TMP1
| bne <1 | bne <1
| // End of hash chain: key not found, add a new one. | // End of hash chain: key not found, add a new one.
| |
@ -4470,7 +4460,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
} }
| lfd f1, FORL_IDX*8(RA) | lfd f1, FORL_IDX*8(RA)
| crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt
| lfd f3, FORL_STEP*8(RA)
| crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
| lfd f2, FORL_STOP*8(RA) | lfd f2, FORL_STOP*8(RA)
| bge ->vmeta_for | bge ->vmeta_for
@ -4625,7 +4614,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
} }
|2: |2:
| cmplw NARGS8:RC, TMP1 // Check for missing parameters. | cmplw NARGS8:RC, TMP1 // Check for missing parameters.
| ble >3 | blt >3
if (op == BC_JFUNCF) { if (op == BC_JFUNCF) {
| decode_RD8 RD, INS | decode_RD8 RD, INS
| b =>BC_JLOOP | b =>BC_JLOOP

File diff suppressed because it is too large Load Diff