1. 19 Feb, 2019 5 commits
    • Ulan Degenbaev's avatar
      Revert "[heap] Perform more embedder tracing in incremental marking step" · 5ad0e329
      Ulan Degenbaev authored
      This reverts commit 49de5875.
      
      Reason for revert: breaks TSAN
      
      Original change's description:
      > [heap] Perform more embedder tracing in incremental marking step
      > 
      > This should fix GC latency regressions introduced in 4c6598.
      > 
      > Bug: chromium:926189, chromium:930844, chromium:930693,chromium:931629
      > Change-Id: I81c91829badbeea82d6e44670d07794632869424
      > Reviewed-on: https://chromium-review.googlesource.com/c/1477216
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59668}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org
      
      Change-Id: Iac914fe695740558f0fac3ad0172f48114b57312
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:926189, chromium:930844, chromium:930693, chromium:931629
      Reviewed-on: https://chromium-review.googlesource.com/c/1477277Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59671}
      5ad0e329
    • Benedikt Meurer's avatar
      [objects] Adjust overly aggressive over-allocation. · 9ffd1677
      Benedikt Meurer authored
      When setting up the initial map for a (class or function) constructor,
      we always over-allocate a bunch of in-object properties, in case not
      all property assignments happen as `this.prop = val` assignments in
      the constructor. However this over-allocation was a bit too aggressive
      and added a slack of 8 to each class constructor (plus a minimum of
      two, when there was no `this.prop = val` assignment). So in total this
      would yield an object with initially 40 in-object property slots in
      case of a simple class hierarchy like this:
      
      ```js
      class A {};
      class B extends A {};
      class C extends B {};
      class D extends C {};
      new D;
      ```
      
      While the slack tracking takes care of eventually shrinking the objects
      to appropriate sizes, this aggressive over-allocation is still going to
      hurt performance quite a bit in the beginning, and will also lead to
      more traffic on the minor GC for now good reason.
      
      Instead of the above, we now allocate a minimum of 2 in-object
      properties per class (in a hierarchy) and then add a slack of 8 in the
      end. Meaning for the example above we end up with 16 initial in-object
      property slots, which seems sensible.
      
      Bug: v8:8853
      Change-Id: I4a11e35a8612ceef1d776ca2f0543a26c8c2a2bf
      Reviewed-on: https://chromium-review.googlesource.com/c/1477276Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59670}
      9ffd1677
    • Ulan Degenbaev's avatar
      [heap] Enable large objects in young generation · 932a5ca8
      Ulan Degenbaev authored
      Bug: chromium:852420
      Change-Id: Id1cde3450c5ca046029b17eee5dbe5132f299c3d
      Reviewed-on: https://chromium-review.googlesource.com/c/1477212Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59669}
      932a5ca8
    • Ulan Degenbaev's avatar
      [heap] Perform more embedder tracing in incremental marking step · 49de5875
      Ulan Degenbaev authored
      This should fix GC latency regressions introduced in 4c6598.
      
      Bug: chromium:926189, chromium:930844, chromium:930693,chromium:931629
      Change-Id: I81c91829badbeea82d6e44670d07794632869424
      Reviewed-on: https://chromium-review.googlesource.com/c/1477216Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59668}
      49de5875
    • Jaroslav Sevcik's avatar
      Fix accessor update of non-extensible maps. · 1a3a2bc3
      Jaroslav Sevcik authored
      When installing getter/setter of non-extensible map with existing
      setter/getter of the same name, we introduce a new transition
      (so we have two transitions with the same name!). This triggers
      an assertion in map updater.
      
      This fix carefully checks that on the back-pointer path from
      non-extensible map to the extensible map there are only
      integrity level transitions. Otherwise, we just bail out.
      
      Bug: chromium:932953
      Change-Id: I02e91c3b652428a84a9f5c58b6691ea9b1fc44d6
      Reviewed-on: https://chromium-review.googlesource.com/c/1477067Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59667}
      1a3a2bc3
  2. 18 Feb, 2019 23 commits
  3. 16 Feb, 2019 2 commits
  4. 15 Feb, 2019 10 commits
    • Sigurd Schneider's avatar
      [cleanup] Improve dependency handling in gn targets · 78fd0332
      Sigurd Schneider authored
      This is a step towards making gn check pass on v8 without third_party
      
      Change-Id: I6a256d65159695e2ba2a5d44c0437cac9b28aa3a
      Bug: v8:8834, v8:8855
      Reviewed-on: https://chromium-review.googlesource.com/c/1475460Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59641}
      78fd0332
    • Sigurd Schneider's avatar
      [cleanup] Remove unnecessary include · 40201af9
      Sigurd Schneider authored
      Change-Id: I43efddcbd381be3d61deb94515842e582069ffb9
      Bug: v8:8834
      Reviewed-on: https://chromium-review.googlesource.com/c/1475465Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59640}
      40201af9
    • Matt Gardner's avatar
      [ic] Don't allow hole to undefined conversions for double arrays · 3d38c4fa
      Matt Gardner authored
      This CL fixes a perf regression caused by:
      https://chromium-review.googlesource.com/c/v8/v8/+/1465182
      
      A deopt loop was occurring for HOLEY_DOUBLE_ELEMENTS arrays when hole
      elements were used as anything other than a float64, such as a return
      value or storing into a non-double array.
      
      bug: chromium:932082
      Change-Id: I27290e9669d80050027e76cb62b0f67b51788d0f
      Reviewed-on: https://chromium-review.googlesource.com/c/1474560Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Matt Gardner <magardn@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#59639}
      3d38c4fa
    • Mike Stanton's avatar
      [Torque] Implement Array.prototype.every and some in Torque · 9bf0c696
      Mike Stanton authored
      Just a straightforward port.
      
      bug:v8:7672
      
      Change-Id: Ie2511cda23d7b61775e3619d61dde43c8ae48c7f
      Reviewed-on: https://chromium-review.googlesource.com/c/1425916
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59638}
      9bf0c696
    • Michael Stanton's avatar
      Revert "[Torque] Add source positions for Torque files" · 9542fd8f
      Michael Stanton authored
      This reverts commit 0a24e67a.
      
      Reason for revert: Broke Linux 64 UBSan build with unaligned read in the snapshot. Will investigate...
      
      Original change's description:
      > [Torque] Add source positions for Torque files
      > 
      > To improve the Torque debugging experience, we can add source positions
      > for each line. This information is carried through the generated
      > CSA code (in <output directory>/gen/torque-generated/*.cc) and
      > embedded as SourcePositions in the Code object.
      > 
      > At snapshot time, these SourcePositions are stripped from the Code
      > object and turned into platform-appropriate line number debug
      > information.
      > 
      > At this time on Linux, you'll need to build with "is_clang=false"
      > in order to use GCC, because crucial steps are missing in Clang's
      > ability to convey the information into the binary successfully.
      > 
      > This CL also introduces a flag to control the existing source
      > information in CSA code. --enable-source-at-csa-bind is now set
      > to false by default because it's a bit confusing to "hop" between
      > source lines in .TQ files and in .CC files. I expect to continue
      > making adjustments there, as I want to provide helpful
      > debugging aids at the CSA level as well as the Torque level.
      > The current configuration prioritizes Torque.
      > 
      > A detailed guide on usage to follow (also on v8.dev).
      > 
      > Bug: v8:8418
      > Change-Id: Ib4226877ce4cae451bb4d0c546927e89f4e66b58
      > Reviewed-on: https://chromium-review.googlesource.com/c/1475473
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59636}
      
      TBR=mvstanton@chromium.org,tebbi@chromium.org
      
      Change-Id: I4ccf94dfdb8b2ba238a60db9ecc8e3ceebef2699
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8418
      Reviewed-on: https://chromium-review.googlesource.com/c/1475757Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59637}
      9542fd8f
    • Mike Stanton's avatar
      [Torque] Add source positions for Torque files · 0a24e67a
      Mike Stanton authored
      To improve the Torque debugging experience, we can add source positions
      for each line. This information is carried through the generated
      CSA code (in <output directory>/gen/torque-generated/*.cc) and
      embedded as SourcePositions in the Code object.
      
      At snapshot time, these SourcePositions are stripped from the Code
      object and turned into platform-appropriate line number debug
      information.
      
      At this time on Linux, you'll need to build with "is_clang=false"
      in order to use GCC, because crucial steps are missing in Clang's
      ability to convey the information into the binary successfully.
      
      This CL also introduces a flag to control the existing source
      information in CSA code. --enable-source-at-csa-bind is now set
      to false by default because it's a bit confusing to "hop" between
      source lines in .TQ files and in .CC files. I expect to continue
      making adjustments there, as I want to provide helpful
      debugging aids at the CSA level as well as the Torque level.
      The current configuration prioritizes Torque.
      
      A detailed guide on usage to follow (also on v8.dev).
      
      Bug: v8:8418
      Change-Id: Ib4226877ce4cae451bb4d0c546927e89f4e66b58
      Reviewed-on: https://chromium-review.googlesource.com/c/1475473Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59636}
      0a24e67a
    • Junliang Yan's avatar
      PPC/s390: fix missing heap-inl.h in code-generator · a44565f6
      Junliang Yan authored
      Change-Id: I86b8c455a25896d9c4ce92901c23ec5971edde43
      Reviewed-on: https://chromium-review.googlesource.com/c/1475332Reviewed-by: 's avatarMilad Farazmand <miladfar@ca.ibm.com>
      Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#59635}
      a44565f6
    • Igor Sheludko's avatar
      [ptr-compr][x64] Change compression scheme to zero upper 32-bits · 89276f9f
      Igor Sheludko authored
      ... and verify that upper 32-bits of on-heap tagged values contain zero.
      
      This CL also removes scratch register argument from decompression
      snippets.
      
      Bug: v8:7703
      Change-Id: Ia69d1c5de423c465735719ed07d92df03d9db97c
      Reviewed-on: https://chromium-review.googlesource.com/c/1460953
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59634}
      89276f9f
    • Junliang Yan's avatar
      PPC/s390: [builtins] Improve CallApiCallback calling convention. · 81bb8aed
      Junliang Yan authored
      Port c142e0a2
      
      Original Commit Message:
      
          Refactor the CallApiCallback builtin to
      
          - pass the context as with other stubs, and
          - pass holder and call data in registers.
      
          This avoids having to place holder and call data onto the stack, and
          thus makes it possible to easily call the CallApiCallback builtin from
          other builtins while just forwarding the (stack) arguments. The idea
          is to use this in the future to optimize the general case of calling
          into any API method via a FunctionTemplateInfo and doing appropriate
          security and/or interface checks upfront as necessary (eventually making
          the HandleApiCall C++ builtin obsolete at some point).
      
      R=bmeurer@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, miladfar@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: I94583d1e0fa7c4696e628c363fefe273c8c5cab9
      Reviewed-on: https://chromium-review.googlesource.com/c/1475331Reviewed-by: 's avatarMilad Farazmand <miladfar@ca.ibm.com>
      Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#59633}
      81bb8aed
    • Tobias Tebbi's avatar
      Reland^2 "[build] disable C++ optimization for mksnapshot code." · 6beea97e
      Tobias Tebbi authored
      This is a reland of a6b95a6a
      
      In addition to UBSan, also ASAN needs optimizations.
      So this CL doesn't disable optimizations for all sanitizer builds.
      
      Original change's description:
      > Reland "[build] disable C++ optimization for mksnapshot code."
      >
      > This is a reland of cee2f772
      >
      > Original change's description:
      > > [build] disable C++ optimization for mksnapshot code.
      > >
      > > By disabling C++ optimizations for code that's only run in mksnapshot,
      > > that is, CSA and Torque-generated code, we can save compile time.
      > > I observed up to 2x improvements of compile time for some files,
      > > while the mksnapshot time did not increase significantly.
      > >
      > > Bug: v8:7629
      > > Change-Id: I96be2966611b2471b68023e0dd9e351d94f0013c
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1460941
      > > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#59585}
      >
      > Bug: v8:7629
      > Change-Id: I8330f93173ab3d7b400e15ea4935bbe8256b250f
      > Reviewed-on: https://chromium-review.googlesource.com/c/1473292
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59606}
      
      Bug: v8:7629
      Change-Id: I42175c472d8e41345573df81645dfe3accc9d8c4
      Reviewed-on: https://chromium-review.googlesource.com/c/1475396Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59632}
      6beea97e