1. 29 Mar, 2016 9 commits
    • titzer's avatar
      [wasm] Fix arm64 frame alignment. · c9f59780
      titzer authored
          In JavaScript code and stubs, JSSP mirrors the CSP but may be unaligned.
          But in WASM code only CSP is used, like native code, and it must be
          aligned.
          Calls into WASM from JS need to carefully align the C stack
          pointer (csp) and restore the previous JSSP, while calls from WASM
          to JS need to compute a new JSSP and restore their CSP after the
          call.
      
      R=ahaas@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1811283003
      
      Cr-Commit-Position: refs/heads/master@{#35096}
      c9f59780
    • hpayer's avatar
      Enable black allocation. · 000d3389
      hpayer authored
      BUG=
      
      Review URL: https://codereview.chromium.org/1836213002
      
      Cr-Commit-Position: refs/heads/master@{#35095}
      000d3389
    • bmeurer's avatar
      [crankshaft] Address the deoptimization loops of Math.floor, Math.round and Math.ceil. · 978ad03b
      bmeurer authored
      Fix and re-enable the flexible representation for Math.floor (which is used to
      implement Math.ceil) and Math.round, which allows Math.floor and Math.round to
      return double results instead of int32, and therefore allows values outside
      the int32 range, especially -0 is now a valid result, which doesn't deopt.
      
      Also port this feature to x64 and ia32 when the CPU supports the SSE4.1
      extension.
      
      This addresses all the known deoptimization loops related to Math.round
      in the Kraken benchmark suite, and seems to also address most of the
      deoptimization loops related to Math.floor in the Oort Online benchmark.
      
      Drive-by-fix: Import the regression tests for the broken HMathFloorOfDiv
      optimization that caused the initial revert of the feature (for arm64 only
      back then).
      
      BUG=chromium:476477,v8:2890,v8:4059
      R=jarin@chromium.org
      LOG=n
      
      Review URL: https://codereview.chromium.org/1841513003
      
      Cr-Commit-Position: refs/heads/master@{#35094}
      978ad03b
    • hpayer's avatar
      Update eval_gc_time.sh with new external timers. · 816b4737
      hpayer authored
      BUG=
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1842523004
      
      Cr-Commit-Position: refs/heads/master@{#35093}
      816b4737
    • jarin's avatar
      Linux perf support - fix debug info. · e11b5f7a
      jarin authored
      This fixes support for debug info in perf. Thanks to Stephane Eranian for
      identifying the problem - debug info event has to be emitted before the
      code load event. It also seems that perf does not yet support the shorthand
      for repeated source files in the debug info entry ("\xff\0"), so I changed
      it to always write the script name.
      
      Review URL: https://codereview.chromium.org/1843563002
      
      Cr-Commit-Position: refs/heads/master@{#35092}
      e11b5f7a
    • jarin's avatar
      Linux perf integration with the new support for JIT. · 82e95f59
      jarin authored
      Difference from --perf-basic-prof:
      - correctly attributes samples when code space gets reused (when unused code object dies and a new code objects is allocated at the same place).
      - outputs compiled machine code for instruction-level profile.
      
      Just like --perf-basic-prof, the file writer is not synchronized (even worse, there is a per-isolate file handle), so we will run into trouble with multiple isolates. However, this patch is still an improvement on --perf-basic-prof, and it should be fine to replace ll-prof.
      
      The patch also introduces experimental support for debug info, but it does not seem to be picked by the perf tool.
      
      Usage:
      
      You need the perf tool from Linux kernel >4.5. Then run:
      
      $ perf record -k mono d8 --perf-prof <your JS file>
      $ perf inject -j -i perf.data -o perf.data.jitted
      $ perf report -i perf.data.jitted
      
      Some explanations:
      The "-k mono" switch from "perf record" tells the perf tool to use the monotonic clock for perf sample timestamping. The "perf inject -j" command injects the collected code events into the perf data file, writing the output into perf.data.jitted. The perf report command then creates the report.
      
      Review URL: https://codereview.chromium.org/1809203007
      
      Cr-Commit-Position: refs/heads/master@{#35091}
      82e95f59
    • bmeurer's avatar
      [turbofan] Introduce NumberFloor simplified operator. · 43216574
      bmeurer authored
      The NumberFloor operator matches exactly the semantics of the Math.floor
      builtin on Numbers. It uses hardware rounding instructions if available,
      but provides a full fallback solution that is compatible with Math.floor.
      The lowering is optimizable based on types if needed later, i.e. we
      already optimize it for the case that the input is already an Integer
      (in the EcmaScript sense, including NaN and -0), but we could add more
      optimizations, like combining NumberFloor and NumberDivide in the
      future, if necessary.
      
      R=jarin@chromium.org
      BUG=v8:2890,v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1843533003
      
      Cr-Commit-Position: refs/heads/master@{#35090}
      43216574
    • bmeurer's avatar
      [date] Properly handle timezones with non-ASCII characters. · 7b342a23
      bmeurer authored
      The timezone part of the Date string representation might contain
      non-ASCII characters depending on the exact platform configuration,
      so we cannot safely assume that the whole date string is ASCII
      encoded.
      
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      R=yangguo@chromium.org
      BUG=chromium:581925
      LOG=n
      
      Review URL: https://codereview.chromium.org/1838063002
      
      Cr-Commit-Position: refs/heads/master@{#35089}
      7b342a23
    • v8-autoroll's avatar
      Update V8 DEPS. · d22a7ed4
      v8-autoroll authored
      Rolling v8/tools/clang to 51bba1037858028f42141689ed1b3b63a20f0b52
      
      TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
      
      Review URL: https://codereview.chromium.org/1838013003
      
      Cr-Commit-Position: refs/heads/master@{#35088}
      d22a7ed4
  2. 28 Mar, 2016 7 commits
    • jyan's avatar
      S390: Impl Left/Right Logical/Arith Shift Pair · b7eb0cf9
      jyan authored
      Implement Left/Right Logical/Arithmetic Shift Pair operations for s390
      
      R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1835973003
      
      Cr-Commit-Position: refs/heads/master@{#35087}
      b7eb0cf9
    • littledan's avatar
      Remove RegExp.prototype.source getter compat workaround · 80803aa8
      littledan authored
      The getter RegExp.prototype.source is specified in ES2015 to throw when
      called on a non-RegExp instance, such as RegExp.prototype. We had previously
      put in a compatibility workaround for all RegExp getters to make them
      throw on access specifically with RegExp.prototype as the receiver; however,
      we only have evidence that this is needed for properties other than source.
      This patch removes the compatibility workaround for get RegExp.prototype.source
      and gives it semantics precisely as per the ES2015 specification.
      
      R=adamk
      BUG=chromium:581577,v8:4827
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1837843002
      
      Cr-Commit-Position: refs/heads/master@{#35086}
      80803aa8
    • adamk's avatar
      String.prototype.{match,search} should do only one RegExp brand check · 0fdf3255
      adamk authored
      Previously, they would check for Symbol.match/Symbol.search, and then
      do another check for Symbol.match in the RegExp constructor. This patch
      avoids the second one by skipping the RegExp constructor, as the spec does.
      
      Review URL: https://codereview.chromium.org/1840723002
      
      Cr-Commit-Position: refs/heads/master@{#35085}
      0fdf3255
    • jyan's avatar
      S390: Fix Register conflict in CEntryStub · d65c8cbf
      jyan authored
      when needs_return_buffer == true and result_size() > 2, the 3rd return value
      is placed in r4 register. But when debug code is emited, it uses r4 register
      for checking exceptions, which corrupts the 3rd return value.
      
      R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1839663002
      
      Cr-Commit-Position: refs/heads/master@{#35084}
      d65c8cbf
    • bmeurer's avatar
      [builtins] Provide Math.floor as TurboFan builtin. · 36ead519
      bmeurer authored
      This way we avoid the second deoptimization for the Math.floor and
      Math.ceil builtins when -0 is involved. We still deoptimize the inlined
      Crankshaft version in various cases, that's a separate issue.
      
      The algorithm used for implement CodeStubAssembler::Float64Floor is
      vaguely based on the fast math version used in the libm of various BSDs,
      but had to be reengineered to match the EcmaScript specification.
      
      R=epertoso@chromium.org
      BUG=v8:2890, v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1828253002
      
      Cr-Commit-Position: refs/heads/master@{#35083}
      36ead519
    • bryleun's avatar
      S390: Fixed s390 simulation check for underflow in subtraction. · 0d24a0fc
      bryleun authored
      Clang optimizes away CheckOverflowForIntSub at any opt
      level (includes -O1, -O2, -O3) into a false statement,
      resulting in incorrect values being returned. As the C++
      standard considers overflows to be undefined behaviour,
      this is technically correct as compilers can assume that
      overflows never occur, but problematic in our case (where
      overflows do occur, and a specific result is expected).
      
      This change replaces the original check with a call to a
      function that is optimized in a manner that returns correct output.
      
      R=michael_dawson@ca.ibm.com,jyan@ca.ibm.com,mtbrandyberry@ca.ibm.com,joransiu@ca.ibm.com,danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1826043002
      
      Cr-Commit-Position: refs/heads/master@{#35082}
      0d24a0fc
    • caitpotter88's avatar
      [esnext] handle elements in FastObjectValuesOrEntries() · f5b85cb7
      caitpotter88 authored
      Add support for optimizing objects with elements, which do not invoke JS and
      cannot change the shape of the Object.
      
      BUG=v8:4663
      LOG=N
      
      Review URL: https://codereview.chromium.org/1767113004
      
      Cr-Commit-Position: refs/heads/master@{#35081}
      f5b85cb7
  3. 27 Mar, 2016 1 commit
  4. 26 Mar, 2016 3 commits
  5. 25 Mar, 2016 8 commits
  6. 24 Mar, 2016 12 commits