1. 05 Oct, 2017 1 commit
  2. 04 Oct, 2017 27 commits
  3. 03 Oct, 2017 7 commits
  4. 02 Oct, 2017 5 commits
    • Michael Starzinger's avatar
      [deoptimizer] Fix TranslatedState inline frame indexing. · 631489bd
      Michael Starzinger authored
      This makes sure that helper methods on the {TranslatedState} class stick
      to the counting scheme used by {OptimizedFrame::Summarize} within the
      stack-walker. Both now treat {kJavaScriptBuiltinContinuation} as real
      JavaScript frames.
      
      R=jarin@chromium.org
      TEST=mjsunit/regress/regress-crbug-770543
      BUG=chromium:770543
      
      Change-Id: Icda65a7efb487470d39ebf648767a488ebf2e5f1
      Reviewed-on: https://chromium-review.googlesource.com/695123
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48264}
      631489bd
    • Michael Starzinger's avatar
      [deoptimizer] Simplify {Runtime_NotifyDeoptimized} calls. · 1fa0f9ba
      Michael Starzinger authored
      R=jarin@chromium.org
      
      Change-Id: I6f2e70d231d2c28c77bee121e98317f3f506fce4
      Reviewed-on: https://chromium-review.googlesource.com/691975
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48263}
      1fa0f9ba
    • Michael Starzinger's avatar
      [deoptimizer] Materialize objects with top-most stub frame. · 17d86d76
      Michael Starzinger authored
      This makes sure the deoptimizer properly materializes heap objects, even
      when the top-most frame happens to be a stub-frame. Without this step
      the {arguments_marker} would leak into user-land and most likely be
      treated as an undefined value.
      
      R=jarin@chromium.org
      TEST=mjsunit/regress/regress-crbug-769852
      BUG=chromium:769852
      
      Change-Id: I4ba17501c5d7e68d1f402b7c2cc5ccb0fb7bfb05
      Reviewed-on: https://chromium-review.googlesource.com/691996Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48262}
      17d86d76
    • Benedikt Meurer's avatar
      [ic] Properly handle polymorphic symbol accesses. · 08db4d76
      Benedikt Meurer authored
      Until now keyed accesses to properties with string or symbol keys were
      only optimized properly while the IC was monomorphic and would go
      megamorphic as soon as there's another receiver map, even if the name
      was still the same (i.e. the same symbol or internalized string). This
      was a weird performance-cliff, that'll hurt modern code especially
      because for symbols you can only access them via keyed loads and stores.
      
      This CL fixes the state machine inside the ICs to properly transition to
      POLYMORPHIC state (and stay there) as long as the new name matches the
      previously recorded name. The FeedbackVector and TurboFan were already
      able to deal with this and didn't need any updates.
      
      On the micro-benchmark from the tracking bug we go from
      
        testStringMonomorphic: 429 ms.
        testSymbolMonomorphic: 431 ms.
        testStringPolymorphic: 429 ms.
        testSymbolPolymorphic: 5621 ms.
      
      to
      
        testStringMonomorphic: 429 ms.
        testSymbolMonomorphic: 429 ms.
        testStringPolymorphic: 429 ms.
        testSymbolPolymorphic: 430 ms.
      
      effectively eliminating the overhead for symbols completely, and
      yielding a 13.5x performance boost.
      
      This also seems to yield a 1% improvement on the ARES6 ML benchmark,
      because it eliminates the KEYED_LOAD_ICs for the Symbol.species lookups.
      
      Bug: v8:6367, v8:6278, v8:6344
      Change-Id: I879fe56387b4c56203c1ad8ef8cafb6cc4c32897
      Reviewed-on: https://chromium-review.googlesource.com/695108Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48261}
      08db4d76
    • Mathias Bynens's avatar
      [parser] Add use counter for U+2028 & U+2029 · d3c98121
      Mathias Bynens authored
      The context is the following proposal to make JSON a subset of
      JavaScript: https://github.com/tc39/proposal-json-superset
      
      There’s interest in performing a side investigation to answer the
      question of what would happen if we stopped treating U+2028 and U+2029
      as `LineTerminator`s *entirely*. (Note that this is separate from the
      proposal, which just changes how these characters are handled in
      ECMAScript strings.) This is technically a breaking change, and IMHO it
      would be wonderful if we could get away with it, but no one really has
      any data on whether or not we could. Adding this use counter lets us get
      that data.
      
      BUG=v8:6827
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ia22e8db1634df4d3f965bec8e1cfa11cc7b5e9aa
      Reviewed-on: https://chromium-review.googlesource.com/693155
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48260}
      d3c98121