Changeset 240650 in webkit for trunk/Source/JavaScriptCore


Ignore:
Timestamp:
Jan 29, 2019, 2:41:27 AM (6 years ago)
Author:
[email protected]
Message:

[ARM] Check for negative zero instead of just zero
https://bugs.webkit.org/show_bug.cgi?id=193689

Reviewed by Mark Lam.

ARM now performs a negative zero check in branchConvertDoubleToInt32 instead
of just bailing out for zero.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r240644 r240650  
     12019-01-29  Dominik Infuehr  <[email protected]>
     2
     3        [ARM] Check for negative zero instead of just zero
     4        https://bugs.webkit.org/show_bug.cgi?id=193689
     5
     6        Reviewed by Mark Lam.
     7
     8        ARM now performs a negative zero check in branchConvertDoubleToInt32 instead
     9        of just bailing out for zero.
     10
     11        * assembler/MacroAssemblerARMv7.h:
     12        (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
     13
    1142019-01-28  Devin Rousso  <[email protected]>
    215
  • trunk/Source/JavaScriptCore/assembler/ARMv7Assembler.h

    r237266 r240650  
    171171        ASSERT(reg < d16);
    172172        return (FPSingleRegisterID)(reg << 1);
     173    }
     174
     175    inline FPSingleRegisterID asSingleUpper(FPDoubleRegisterID reg)
     176    {
     177        ASSERT(reg < d16);
     178        return (FPSingleRegisterID)((reg << 1) + 1);
    173179    }
    174180
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h

    r238543 r240650  
    12531253        failureCases.append(branchDouble(DoubleNotEqualOrUnordered, src, fpTempRegister));
    12541254
    1255         // If the result is zero, it might have been -0.0, and the double comparison won't catch this!
    1256         if (negZeroCheck)
    1257             failureCases.append(branchTest32(Zero, dest));
     1255        // Test for negative zero.
     1256        if (negZeroCheck) {
     1257            Jump valueIsNonZero = branchTest32(NonZero, dest);
     1258            m_assembler.vmov(dataTempRegister, ARMRegisters::asSingleUpper(src));
     1259            failureCases.append(branch32(LessThan, dataTempRegister, TrustedImm32(0)));
     1260            valueIsNonZero.link(this);
     1261        }
    12581262    }
    12591263
Note: See TracChangeset for help on using the changeset viewer.