Changeset 189148 in webkit


Ignore:
Timestamp:
Aug 28, 2015 11:52:10 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r189136.
https://bugs.webkit.org/show_bug.cgi?id=148608

Made JSC tests flaky (Requested by ap on #webkit).

Reverted changeset:

"[JSC][x86] Improve the compare functions when comparing with
zero"
https://bugs.webkit.org/show_bug.cgi?id=148536
http://trac.webkit.org/changeset/189136

Location:
trunk/Source/JavaScriptCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r189138 r189148  
     12015-08-28  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r189136.
     4        https://bugs.webkit.org/show_bug.cgi?id=148608
     5
     6        Made JSC tests flaky (Requested by ap on #webkit).
     7
     8        Reverted changeset:
     9
     10        "[JSC][x86] Improve the compare functions when comparing with
     11        zero"
     12        https://bugs.webkit.org/show_bug.cgi?id=148536
     13        http://trac.webkit.org/changeset/189136
     14
    1152015-08-28  Benjamin Poulain  <bpoulain@apple.com>
    216
  • trunk/Source/JavaScriptCore/assembler/MacroAssembler.h

    r189136 r189148  
    113113    using MacroAssemblerBase::jump;
    114114    using MacroAssemblerBase::branch32;
    115     using MacroAssemblerBase::compare32;
    116115    using MacroAssemblerBase::move;
    117116    using MacroAssemblerBase::add32;
     
    331330    }
    332331
    333     void compare32(RelationalCondition cond, Imm32 left, RegisterID right, RegisterID dest)
    334     {
    335         compare32(commute(cond), right, left, dest);
    336     }
    337 
    338332    void branchTestPtr(ResultCondition cond, RegisterID reg, Label target)
    339333    {
     
    15161510    }
    15171511
    1518     void compare32(RelationalCondition cond, RegisterID left, Imm32 right, RegisterID dest)
    1519     {
    1520         if (shouldBlind(right)) {
    1521             if (haveScratchRegisterForBlinding()) {
    1522                 loadXorBlindedConstant(xorBlindConstant(right), scratchRegisterForBlinding());
    1523                 compare32(cond, left, scratchRegisterForBlinding(), dest);
    1524             }
    1525             // If we don't have a scratch register available for use, we'll just
    1526             // place a random number of nops.
    1527             uint32_t nopCount = random() & 3;
    1528             while (nopCount--)
    1529                 nop();
    1530             compare32(cond, left, right.asTrustedImm32(), dest);
    1531         }
    1532 
    1533         compare32(cond, left, right.asTrustedImm32(), dest);
    1534     }
    1535 
    15361512    Jump branchAdd32(ResultCondition cond, RegisterID src, Imm32 imm, RegisterID dest)
    15371513    {
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h

    r189136 r189148  
    13061306
    13071307    // Should we be using TEQ for equal/not-equal?
    1308     void compare32AndSetFlags(RegisterID left, TrustedImm32 right)
     1308    void compare32(RegisterID left, TrustedImm32 right)
    13091309    {
    13101310        int32_t imm = right.m_value;
     
    13641364    Jump branch32(RelationalCondition cond, RegisterID left, TrustedImm32 right)
    13651365    {
    1366         compare32AndSetFlags(left, right);
     1366        compare32(left, right);
    13671367        return Jump(makeBranch(cond));
    13681368    }
     
    14221422    Jump branch8(RelationalCondition cond, RegisterID left, TrustedImm32 right)
    14231423    {
    1424         compare32AndSetFlags(left, right);
     1424        compare32(left, right);
    14251425        return Jump(makeBranch(cond));
    14261426    }
     
    17221722    void compare32(RelationalCondition cond, RegisterID left, TrustedImm32 right, RegisterID dest)
    17231723    {
    1724         compare32AndSetFlags(left, right);
     1724        compare32(left, right);
    17251725        m_assembler.it(armV7Condition(cond), false);
    17261726        m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(1));
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h

    r189136 r189148  
    11251125    Jump branch32(RelationalCondition cond, RegisterID left, TrustedImm32 right)
    11261126    {
    1127         if (!right.m_value && (cond == Equal || cond == NotEqual || cond == LessThan || cond == GreaterThanOrEqual)) {
    1128             ResultCondition resultCondition;
    1129             switch (cond) {
    1130             case Equal:
    1131                 resultCondition = Zero;
    1132                 break;
    1133             case NotEqual:
    1134                 resultCondition = NonZero;
    1135                 break;
    1136             case LessThan:
    1137                 resultCondition = Signed;
    1138                 break;
    1139             case GreaterThanOrEqual:
    1140                 resultCondition = PositiveOrZero;
    1141                 break;
    1142             default:
    1143                 RELEASE_ASSERT_NOT_REACHED();
    1144             }
     1127        if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
    11451128            m_assembler.testl_rr(left, left);
    1146             return Jump(m_assembler.jCC(x86Condition(resultCondition)));
    1147         }
    1148         m_assembler.cmpl_ir(right.m_value, left);
     1129        else
     1130            m_assembler.cmpl_ir(right.m_value, left);
    11491131        return Jump(m_assembler.jCC(x86Condition(cond)));
    11501132    }
     
    14561438    void compare32(RelationalCondition cond, RegisterID left, TrustedImm32 right, RegisterID dest)
    14571439    {
    1458         if (!right.m_value && (cond == Equal || cond == NotEqual || cond == LessThan || cond == GreaterThanOrEqual)) {
    1459             ResultCondition resultCondition;
    1460             switch (cond) {
    1461             case Equal:
    1462                 resultCondition = Zero;
    1463                 break;
    1464             case NotEqual:
    1465                 resultCondition = NonZero;
    1466                 break;
    1467             case LessThan:
    1468                 resultCondition = Signed;
    1469                 break;
    1470             case GreaterThanOrEqual:
    1471                 resultCondition = PositiveOrZero;
    1472                 break;
    1473             default:
    1474                 RELEASE_ASSERT_NOT_REACHED();
    1475             }
     1440        if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
    14761441            m_assembler.testl_rr(left, left);
    1477             set32(x86Condition(resultCondition), dest);
    1478             return;
    1479         }
    1480         m_assembler.cmpl_ir(right.m_value, left);
     1442        else
     1443            m_assembler.cmpl_ir(right.m_value, left);
    14811444        set32(x86Condition(cond), dest);
    14821445    }
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r189136 r189148  
    12791279    }
    12801280
    1281     if (node->child1()->isInt32Constant()) {
    1282         int32_t imm = node->child1()->asInt32();
     1281    if (node->child1()->isBooleanConstant()) {
     1282        bool imm = node->child1()->asBoolean();
    12831283        SpeculateBooleanOperand op2(this, node->child2());
    1284         branch32(condition, JITCompiler::Imm32(imm), op2.gpr(), taken);
    1285     } else if (node->child2()->isInt32Constant()) {
     1284        branch32(condition, JITCompiler::Imm32(static_cast<int32_t>(JSValue::encode(jsBoolean(imm)))), op2.gpr(), taken);
     1285    } else if (node->child2()->isBooleanConstant()) {
    12861286        SpeculateBooleanOperand op1(this, node->child1());
    1287         int32_t imm = node->child2()->asInt32();
    1288         branch32(condition, op1.gpr(), JITCompiler::Imm32(imm), taken);
     1287        bool imm = node->child2()->asBoolean();
     1288        branch32(condition, op1.gpr(), JITCompiler::Imm32(static_cast<int32_t>(JSValue::encode(jsBoolean(imm)))), taken);
    12891289    } else {
    12901290        SpeculateBooleanOperand op1(this, node->child1());
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r189136 r189148  
    14711471void SpeculativeJIT::compileInt32Compare(Node* node, MacroAssembler::RelationalCondition condition)
    14721472{
    1473     if (node->child1()->isInt32Constant()) {
    1474         SpeculateInt32Operand op2(this, node->child2());
    1475         GPRTemporary result(this, Reuse, op2);
    1476         int32_t imm = node->child1()->asInt32();
    1477         m_jit.compare32(condition, JITCompiler::Imm32(imm), op2.gpr(), result.gpr());
    1478 
    1479         // If we add a DataFormatBool, we should use it here.
    1480         m_jit.or32(TrustedImm32(ValueFalse), result.gpr());
    1481         jsValueResult(result.gpr(), m_currentNode, DataFormatJSBoolean);
    1482     } else if (node->child2()->isInt32Constant()) {
    1483         SpeculateInt32Operand op1(this, node->child1());
    1484         GPRTemporary result(this, Reuse, op1);
    1485         int32_t imm = node->child2()->asInt32();
    1486         m_jit.compare32(condition, op1.gpr(), JITCompiler::Imm32(imm), result.gpr());
    1487 
    1488         // If we add a DataFormatBool, we should use it here.
    1489         m_jit.or32(TrustedImm32(ValueFalse), result.gpr());
    1490         jsValueResult(result.gpr(), m_currentNode, DataFormatJSBoolean);
    1491     } else {
    1492         SpeculateInt32Operand op1(this, node->child1());
    1493         SpeculateInt32Operand op2(this, node->child2());
    1494         GPRTemporary result(this, Reuse, op1, op2);
    1495         m_jit.compare32(condition, op1.gpr(), op2.gpr(), result.gpr());
    1496 
    1497         // If we add a DataFormatBool, we should use it here.
    1498         m_jit.or32(TrustedImm32(ValueFalse), result.gpr());
    1499         jsValueResult(result.gpr(), m_currentNode, DataFormatJSBoolean);
    1500     }
     1473    SpeculateInt32Operand op1(this, node->child1());
     1474    SpeculateInt32Operand op2(this, node->child2());
     1475    GPRTemporary result(this, Reuse, op1, op2);
     1476   
     1477    m_jit.compare32(condition, op1.gpr(), op2.gpr(), result.gpr());
     1478   
     1479    // If we add a DataFormatBool, we should use it here.
     1480    m_jit.or32(TrustedImm32(ValueFalse), result.gpr());
     1481    jsValueResult(result.gpr(), m_currentNode, DataFormatJSBoolean);
    15011482}
    15021483
Note: See TracChangeset for help on using the changeset viewer.