diff options
author | Mike Pall <mike> | 2012-04-26 23:31:10 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-04-26 23:33:20 +0200 |
commit | 904cc1facb535b575d8d0c7b83732ce644f161fb (patch) | |
tree | 2a740dbb6bf0e4662dab3f9410460a286b5524b6 /src | |
parent | 543963146041b8383171fa267fab351acdf50d35 (diff) | |
download | luajit-904cc1facb535b575d8d0c7b83732ce644f161fb.tar.gz luajit-904cc1facb535b575d8d0c7b83732ce644f161fb.tar.bz2 luajit-904cc1facb535b575d8d0c7b83732ce644f161fb.zip |
ARM: Reorder type/value tests to silence Valgrind.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_arm.dasc | 12 | ||||
-rw-r--r-- | src/buildvm_arm.h | 12 | ||||
-rw-r--r-- | src/lj_asm_arm.h | 9 |
3 files changed, 16 insertions, 17 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc index 2e0914a1..dd4b7c89 100644 --- a/src/buildvm_arm.dasc +++ b/src/buildvm_arm.dasc | |||
@@ -935,8 +935,8 @@ static void build_subroutines(BuildCtx *ctx) | |||
935 | | ldrd CARG34, NODE:INS->key // STALL: early NODE:INS. | 935 | | ldrd CARG34, NODE:INS->key // STALL: early NODE:INS. |
936 | | ldrd CARG12, NODE:INS->val | 936 | | ldrd CARG12, NODE:INS->val |
937 | | ldr NODE:INS, NODE:INS->next | 937 | | ldr NODE:INS, NODE:INS->next |
938 | | cmp CARG3, STR:RC | 938 | | checktp CARG4, LJ_TSTR |
939 | | checktpeq CARG4, LJ_TSTR | 939 | | cmpeq CARG3, STR:RC |
940 | | beq >5 | 940 | | beq >5 |
941 | | cmp NODE:INS, #0 | 941 | | cmp NODE:INS, #0 |
942 | | bne <3 | 942 | | bne <3 |
@@ -3111,8 +3111,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3111 | | ldrd CARG12, NODE:INS->key // STALL: early NODE:INS. | 3111 | | ldrd CARG12, NODE:INS->key // STALL: early NODE:INS. |
3112 | | ldrd CARG34, NODE:INS->val | 3112 | | ldrd CARG34, NODE:INS->val |
3113 | | ldr NODE:INS, NODE:INS->next | 3113 | | ldr NODE:INS, NODE:INS->next |
3114 | | cmp CARG1, STR:RC | 3114 | | checktp CARG2, LJ_TSTR |
3115 | | checktpeq CARG2, LJ_TSTR | 3115 | | cmpeq CARG1, STR:RC |
3116 | | bne >4 | 3116 | | bne >4 |
3117 | | checktp CARG4, LJ_TNIL | 3117 | | checktp CARG4, LJ_TNIL |
3118 | | beq >5 | 3118 | | beq >5 |
@@ -3242,8 +3242,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3242 | | ldrd CARG12, NODE:INS->key | 3242 | | ldrd CARG12, NODE:INS->key |
3243 | | ldr CARG4, NODE:INS->val.it | 3243 | | ldr CARG4, NODE:INS->val.it |
3244 | | ldr NODE:CARG3, NODE:INS->next | 3244 | | ldr NODE:CARG3, NODE:INS->next |
3245 | | cmp CARG1, STR:RC | 3245 | | checktp CARG2, LJ_TSTR |
3246 | | checktpeq CARG2, LJ_TSTR | 3246 | | cmpeq CARG1, STR:RC |
3247 | | bne >5 | 3247 | | bne >5 |
3248 | | ldrb CARG2, TAB:RB->marked | 3248 | | ldrb CARG2, TAB:RB->marked |
3249 | | checktp CARG4, LJ_TNIL // Key found, but nil value? | 3249 | | checktp CARG4, LJ_TNIL // Key found, but nil value? |
diff --git a/src/buildvm_arm.h b/src/buildvm_arm.h index 2c97cee0..81229181 100644 --- a/src/buildvm_arm.h +++ b/src/buildvm_arm.h | |||
@@ -796,9 +796,9 @@ static const unsigned int build_actionlist[5777] = { | |||
796 | 0x000c8100, | 796 | 0x000c8100, |
797 | 0xe51ee000, | 797 | 0xe51ee000, |
798 | 0x000d8180, | 798 | 0x000d8180, |
799 | 0xe152000b, | 799 | 0xe3730000, |
800 | 0x03730000, | ||
801 | 0x000a0000, | 800 | 0x000a0000, |
801 | 0x0152000b, | ||
802 | 0x0a000000, | 802 | 0x0a000000, |
803 | 0x00050005, | 803 | 0x00050005, |
804 | 0xe35e0000, | 804 | 0xe35e0000, |
@@ -4613,9 +4613,9 @@ static const unsigned int build_actionlist[5777] = { | |||
4613 | 0x000c8100, | 4613 | 0x000c8100, |
4614 | 0xe51ee000, | 4614 | 0xe51ee000, |
4615 | 0x000d8180, | 4615 | 0x000d8180, |
4616 | 0xe150000b, | 4616 | 0xe3710000, |
4617 | 0x03710000, | ||
4618 | 0x000a0000, | 4617 | 0x000a0000, |
4618 | 0x0150000b, | ||
4619 | 0x1a000000, | 4619 | 0x1a000000, |
4620 | 0x00050004, | 4620 | 0x00050004, |
4621 | 0xe3730000, | 4621 | 0xe3730000, |
@@ -4807,9 +4807,9 @@ static const unsigned int build_actionlist[5777] = { | |||
4807 | 0x000d8180, | 4807 | 0x000d8180, |
4808 | 0xe51e2000, | 4808 | 0xe51e2000, |
4809 | 0x000d8180, | 4809 | 0x000d8180, |
4810 | 0xe150000b, | 4810 | 0xe3710000, |
4811 | 0x03710000, | ||
4812 | 0x000a0000, | 4811 | 0x000a0000, |
4812 | 0x0150000b, | ||
4813 | 0x1a000000, | 4813 | 0x1a000000, |
4814 | 0x00050005, | 4814 | 0x00050005, |
4815 | 0xe55c1000, | 4815 | 0xe55c1000, |
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h index a618c8a9..77751ca9 100644 --- a/src/lj_asm_arm.h +++ b/src/lj_asm_arm.h | |||
@@ -584,8 +584,8 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge) | |||
584 | else | 584 | else |
585 | emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end); | 585 | emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end); |
586 | if (!irt_ispri(kt)) { | 586 | if (!irt_ispri(kt)) { |
587 | emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^khi, tmp+1, keyhi); | 587 | emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^k, tmp, key); |
588 | emit_nm(as, ARMI_CMP^k, tmp, key); | 588 | emit_nm(as, ARMI_CMP^khi, tmp+1, keyhi); |
589 | emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key)); | 589 | emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key)); |
590 | } else { | 590 | } else { |
591 | emit_n(as, ARMI_CMP^khi, tmp); | 591 | emit_n(as, ARMI_CMP^khi, tmp); |
@@ -674,10 +674,9 @@ static void asm_hrefk(ASMState *as, IRIns *ir) | |||
674 | (int32_t)ir_knum(irkey)->u32.hi, allow); | 674 | (int32_t)ir_knum(irkey)->u32.hi, allow); |
675 | emit_opk(as, ARMI_CMP, 0, key, | 675 | emit_opk(as, ARMI_CMP, 0, key, |
676 | (int32_t)ir_knum(irkey)->u32.lo, allow); | 676 | (int32_t)ir_knum(irkey)->u32.lo, allow); |
677 | } else if (ra_hasreg(key)) { | ||
678 | emit_n(as, ARMF_CC(ARMI_CMN, CC_EQ)|ARMI_K12|-irt_toitype(irkey->t), type); | ||
679 | emit_opk(as, ARMI_CMP, 0, key, irkey->i, allow); | ||
680 | } else { | 677 | } else { |
678 | if (ra_hasreg(key)) | ||
679 | emit_opk(as, ARMF_CC(ARMI_CMP, CC_EQ), 0, key, irkey->i, allow); | ||
681 | emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type); | 680 | emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type); |
682 | } | 681 | } |
683 | emit_lso(as, ARMI_LDR, type, idx, kofs+4); | 682 | emit_lso(as, ARMI_LDR, type, idx, kofs+4); |