Modified: trunk/Source/_javascript_Core/ChangeLog (168460 => 168461)
--- trunk/Source/_javascript_Core/ChangeLog 2014-05-08 02:51:55 UTC (rev 168460)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-05-08 04:10:21 UTC (rev 168461)
@@ -1,3 +1,17 @@
+2014-05-07 Commit Queue <commit-qu...@webkit.org>
+
+ Unreviewed, rolling out r168451.
+ https://bugs.webkit.org/show_bug.cgi?id=132670
+
+ Not a speed-up, just do what other compilers do. (Requested by
+ kling on #webkit).
+
+ Reverted changeset:
+
+ "[X86] Emit BT instruction for single-bit tests."
+ https://bugs.webkit.org/show_bug.cgi?id=132650
+ http://trac.webkit.org/changeset/168451
+
2014-05-07 Filip Pizlo <fpi...@apple.com>
Make Executable::clearCode() actually clear all of the entrypoints, and
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (168460 => 168461)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2014-05-08 02:51:55 UTC (rev 168460)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2014-05-08 04:10:21 UTC (rev 168461)
@@ -1163,65 +1163,14 @@
return Jump(m_assembler.jCC(x86Condition(cond)));
}
- int singleBitIndex(unsigned mask)
- {
- switch (mask) {
- case 0x00000001: return 0;
- case 0x00000002: return 1;
- case 0x00000004: return 2;
- case 0x00000008: return 3;
- case 0x00000010: return 4;
- case 0x00000020: return 5;
- case 0x00000040: return 6;
- case 0x00000080: return 7;
- case 0x00000100: return 8;
- case 0x00000200: return 9;
- case 0x00000400: return 10;
- case 0x00000800: return 11;
- case 0x00001000: return 12;
- case 0x00002000: return 13;
- case 0x00004000: return 14;
- case 0x00008000: return 15;
- case 0x00010000: return 16;
- case 0x00020000: return 17;
- case 0x00040000: return 18;
- case 0x00080000: return 19;
- case 0x00100000: return 20;
- case 0x00200000: return 21;
- case 0x00400000: return 22;
- case 0x00800000: return 23;
- case 0x01000000: return 24;
- case 0x02000000: return 25;
- case 0x04000000: return 26;
- case 0x08000000: return 27;
- case 0x10000000: return 28;
- case 0x20000000: return 29;
- case 0x40000000: return 30;
- case 0x80000000: return 31;
- default: return -1;
- }
- }
-
Jump branchTest32(ResultCondition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1))
{
- int bitIndex = singleBitIndex(mask.m_value);
- if ((cond == Zero || cond == NonZero) && bitIndex != -1) {
- m_assembler.bt_i8r(bitIndex, reg);
- return Jump(m_assembler.jCC(cond == Zero ? X86Assembler::ConditionNC : X86Assembler::ConditionC));
- }
-
test32(cond, reg, mask);
return branch(cond);
}
Jump branchTest32(ResultCondition cond, Address address, TrustedImm32 mask = TrustedImm32(-1))
{
- int bitIndex = singleBitIndex(mask.m_value);
- if ((cond == Zero || cond == NonZero) && bitIndex != -1) {
- m_assembler.bt_i8m(bitIndex, address.offset, address.base);
- return Jump(m_assembler.jCC(cond == Zero ? X86Assembler::ConditionNC : X86Assembler::ConditionC));
- }
-
generateTest32(address, mask);
return Jump(m_assembler.jCC(x86Condition(cond)));
}
Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (168460 => 168461)
--- trunk/Source/_javascript_Core/assembler/X86Assembler.h 2014-05-08 02:51:55 UTC (rev 168460)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h 2014-05-08 04:10:21 UTC (rev 168461)
@@ -278,7 +278,6 @@
OP_SETCC = 0x90,
OP2_3BYTE_ESCAPE = 0xAE,
OP2_IMUL_GvEv = 0xAF,
- OP2_GROUP_BT = 0xBA,
OP2_MOVZX_GvEb = 0xB6,
OP2_MOVSX_GvEb = 0xBE,
OP2_MOVZX_GvEw = 0xB7,
@@ -337,8 +336,6 @@
GROUP14_OP_PSLLQ = 6,
GROUP14_OP_PSRLQ = 2,
- GROUP_BT_OP_BT = 4,
-
ESCAPE_DD_FSTP_doubleReal = 3,
} GroupOpcodeID;
@@ -1224,18 +1221,6 @@
m_formatter.immediate8(imm);
}
- void bt_i8r(int bitIndex, RegisterID src)
- {
- m_formatter.twoByteOp(OP2_GROUP_BT, GROUP_BT_OP_BT, src);
- m_formatter.immediate8(bitIndex);
- }
-
- void bt_i8m(int bitIndex, int offset, RegisterID base)
- {
- m_formatter.twoByteOp(OP2_GROUP_BT, GROUP_BT_OP_BT, base, offset);
- m_formatter.immediate8(bitIndex);
- }
-
void setCC_r(Condition cond, RegisterID dst)
{
m_formatter.twoByteOp8(setccOpcode(cond), (GroupOpcodeID)0, dst);