1. 21 Jul, 2017 1 commit
    • Andreas Haas's avatar
      Add a not-NaN DCHECK to the Float32 constructor · e605a14e
      Andreas Haas authored
      The class Float32 stores the bit pattern of a float as uint32_t to
      guarantee that the exact bit pattern of the contained value is
      preserved. This is necessary because the bit pattern of a NaN may
      change, e.g. when it is passed as a parameter.
      
      For convenience the Float32 class provides a constructor with a float
      parameter. Since this constructor cannot guarantee that the right bit
      pattern will be stored for NaNs, this CL adds a DCHECK now to make
      sure that the constructor is never used with a NaN.
      
      R=mstarzinger@chromium.org
      
      Change-Id: Iba85a5a1bb2778d5f8bdc1aad97524ef8369b73d
      Reviewed-on: https://chromium-review.googlesource.com/579367
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46811}
      e605a14e
  2. 20 Jul, 2017 1 commit
  3. 07 Jul, 2017 1 commit
    • Andreas Haas's avatar
      [arm] Pass float immediates to vmov as uint32_t · 08688b39
      Andreas Haas authored
      This CL changes for floats what https://chromium-review.googlesource.com/c/558964/
      changed for doubles.
      
      Original message:
      On x86, signalling NaNs get converted to quiet NaNs when they get push
      on the stack and popped again. This happens in the code generation for
      arm, specifically for the vmov instruction with the immediate parameter.
      This CL replaces the vmov function in assembler-arm to take the
      immediate as a uint64_t instead of a double, to guarantee that the bit
      pattern does not change even if the parameter is a signalling NaN.
      
      New in this CL:
      Although src/double.h existed already, src/float.h did not exist yet.
      I created the file in this CL, and moved the classes Float32 and
      Float64 there, which already existed in src/deoptimizer.h.
      
      R=titzer@chromium.org, martyn.capewell@arm.com, v8-arm-ports@googlegroups.com
      
      BUG=v8:6564
      
      Change-Id: I6a3f1f154af9c8cd4bb8e7e856235d3eee5e9edd
      Reviewed-on: https://chromium-review.googlesource.com/561009
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46473}
      08688b39