1. 27 Jan, 2016 2 commits
    • mlippautz's avatar
      Reland of "[heap] Parallel newspace evacuation, semispace copy, and compaction \o/" · 004ce08d
      mlippautz authored
      This reverts commit 85ba94f2.
      
      All parallelism can be turned off using --predictable, or --noparallel-compaction.
      
      This patch completely parallelizes
       - semispace copy: from space -> to space (within newspace)
       - newspace evacuation: newspace -> oldspace
       - oldspace compaction: oldspace -> oldspace
      
      Previously newspace has been handled sequentially (semispace copy, newspace
      evacuation) before compacting oldspace in parallel. However, on a high level
      there are no dependencies between those two actions, hence we parallelize them
      altogether. We base the number of evacuation tasks on the overall set of
      to-be-processed pages (newspace + oldspace compaction pages).
      
      Some low-level details:
       - The hard cap on number of tasks has been lifted
       - We cache store buffer entries locally before merging them back into the global
         StoreBuffer in a finalization phase.
       - We cache AllocationSite operations locally before merging them back into the
         global pretenuring storage in a finalization phase.
       - AllocationSite might be compacted while they would be needed for newspace
         evacuation. To mitigate any problems we defer checking allocation sites for
         newspace till merging locally buffered data.
      
      CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_asan_rel,v8_linux64_tsan_rel,v8_mac64_asan_rel
      BUG=chromium:524425
      LOG=N
      R=hpayer@chromium.org, ulan@chromium.org
      
      Review URL: https://codereview.chromium.org/1640563004
      
      Cr-Commit-Position: refs/heads/master@{#33552}
      004ce08d
    • machenbach's avatar
      Revert of [heap] Parallel newspace evacuation, semispace copy, and compaction... · 85ba94f2
      machenbach authored
      Revert of [heap] Parallel newspace evacuation, semispace copy, and compaction \o/ (patchset #16 id:620001 of https://codereview.chromium.org/1577853007/ )
      
      Reason for revert:
      [Sheriff] Leads to crashes on all webrtc chromium testers, e.g.:
      https://build.chromium.org/p/chromium.webrtc/builders/Mac%20Tester/builds/49664
      
      Original issue's description:
      > [heap] Parallel newspace evacuation, semispace copy, and compaction \o/
      >
      > All parallelism can be turned off using --predictable, or --noparallel-compaction.
      >
      > This patch completely parallelizes
      >  - semispace copy: from space -> to space (within newspace)
      >  - newspace evacuation: newspace -> oldspace
      >  - oldspace compaction: oldspace -> oldspace
      >
      > Previously newspace has been handled sequentially (semispace copy, newspace
      > evacuation) before compacting oldspace in parallel. However, on a high level
      > there are no dependencies between those two actions, hence we parallelize them
      > altogether. We base the number of evacuation tasks on the overall set of
      > to-be-processed pages (newspace + oldspace compaction pages).
      >
      > Some low-level details:
      >  - The hard cap on number of tasks has been lifted
      >  - We cache store buffer entries locally before merging them back into the global
      >    StoreBuffer in a finalization phase.
      >  - We cache AllocationSite operations locally before merging them back into the
      >    global pretenuring storage in a finalization phase.
      >  - AllocationSite might be compacted while they would be needed for newspace
      >    evacuation. To mitigate any problems we defer checking allocation sites for
      >    newspace till merging locally buffered data.
      >
      > CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_asan_rel,v8_linux64_tsan_rel,v8_mac64_asan_rel
      > BUG=chromium:524425
      > LOG=N
      > R=hpayer@chromium.org, ulan@chromium.org
      >
      > Committed: https://crrev.com/8f0fd8c0370ae8c5aab56491b879d7e30c329062
      > Cr-Commit-Position: refs/heads/master@{#33523}
      
      TBR=hpayer@chromium.org,ulan@chromium.org,mlippautz@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=chromium:524425
      
      Review URL: https://codereview.chromium.org/1643473002
      
      Cr-Commit-Position: refs/heads/master@{#33539}
      85ba94f2
  2. 26 Jan, 2016 1 commit
    • mlippautz's avatar
      [heap] Parallel newspace evacuation, semispace copy, and compaction \o/ · 8f0fd8c0
      mlippautz authored
      All parallelism can be turned off using --predictable, or --noparallel-compaction.
      
      This patch completely parallelizes
       - semispace copy: from space -> to space (within newspace)
       - newspace evacuation: newspace -> oldspace
       - oldspace compaction: oldspace -> oldspace
      
      Previously newspace has been handled sequentially (semispace copy, newspace
      evacuation) before compacting oldspace in parallel. However, on a high level
      there are no dependencies between those two actions, hence we parallelize them
      altogether. We base the number of evacuation tasks on the overall set of
      to-be-processed pages (newspace + oldspace compaction pages).
      
      Some low-level details:
       - The hard cap on number of tasks has been lifted
       - We cache store buffer entries locally before merging them back into the global
         StoreBuffer in a finalization phase.
       - We cache AllocationSite operations locally before merging them back into the
         global pretenuring storage in a finalization phase.
       - AllocationSite might be compacted while they would be needed for newspace
         evacuation. To mitigate any problems we defer checking allocation sites for
         newspace till merging locally buffered data.
      
      CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_asan_rel,v8_linux64_tsan_rel,v8_mac64_asan_rel
      BUG=chromium:524425
      LOG=N
      R=hpayer@chromium.org, ulan@chromium.org
      
      Review URL: https://codereview.chromium.org/1577853007
      
      Cr-Commit-Position: refs/heads/master@{#33523}
      8f0fd8c0
  3. 12 Jan, 2016 1 commit
    • mlippautz's avatar
      [heap] Use HashMap as scratchpad backing store · 55422bdd
      mlippautz authored
      We use a scratchpad to remember visited allocation sites for post processing
      (making tenure decisions). The previous implementation used a rooted FixedArray
      with constant length (256) to remember all sites. Updating the scratchpad is a
      bottleneck in any parallel/concurrent implementation of newspace evacuation.
      
      The new implementation uses a HashMap with allocation sites as keys and
      temporary counts as values. During evacuation we collect a local hashmap of
      visited allocation sites. Upon merging the local hashmap back into a global one
      we update potential forward pointers of compacted allocation sites.  The
      scavenger can directly enter its entries into the global hashmap. Note that the
      actual memento found count is still kept on the AllocationSite as it needs to
      survive scavenges and full GCs.
      
      BUG=chromium:524425
      LOG=N
      R=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1535723002
      
      Cr-Commit-Position: refs/heads/master@{#33233}
      55422bdd
  4. 12 Nov, 2015 1 commit
  5. 06 Oct, 2015 1 commit
  6. 01 Oct, 2015 1 commit
  7. 30 Sep, 2015 2 commits
  8. 29 Sep, 2015 2 commits
  9. 28 Sep, 2015 6 commits
  10. 25 Sep, 2015 4 commits
  11. 14 Sep, 2015 2 commits
  12. 09 Sep, 2015 1 commit
  13. 08 Sep, 2015 2 commits
  14. 03 Sep, 2015 1 commit
  15. 01 Sep, 2015 1 commit
  16. 31 Aug, 2015 2 commits
    • hablich's avatar
      Revert of [heap] More flag cleanup. (patchset #8 id:140001 of... · 6eb83769
      hablich authored
      Revert of [heap] More flag cleanup. (patchset #8 id:140001 of https://codereview.chromium.org/1314863003/ )
      
      Reason for revert:
      Breaks http://build.chromium.org/p/client.v8/builders/V8%20Arm%20-%20debug%20-%202/builds/2372
      
      Original issue's description:
      > [heap] GC flag cleanup/restructuring.
      >
      > * GC's flags are now proper flags and not int.
      > * Callback flags are not threaded through but only set once like gc flags
      > * Callers of methods that trigger GCs need to pass a reason when not using
      >   the default parameters.
      >
      > Furthermore, each GC invocation can be passed the GC and GCCallback flags. We
      > usually override the currently set flags upon finishing a GC cylce, but are able
      > to restore the previously set if desired. This is useful for explicitely
      > triggered scavenges or external requests that interrupt the current behaviour.
      >
      > BUG=
      >
      > Committed: https://crrev.com/f4f3b431b9ce0778d926acf03c0d36dae5c0cba4
      > Cr-Commit-Position: refs/heads/master@{#30457}
      
      TBR=hpayer@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1303393004
      
      Cr-Commit-Position: refs/heads/master@{#30463}
      6eb83769
    • mlippautz's avatar
      [heap] GC flag cleanup/restructuring. · f4f3b431
      mlippautz authored
      * GC's flags are now proper flags and not int.
      * Callback flags are not threaded through but only set once like gc flags
      * Callers of methods that trigger GCs need to pass a reason when not using
        the default parameters.
      
      Furthermore, each GC invocation can be passed the GC and GCCallback flags. We
      usually override the currently set flags upon finishing a GC cylce, but are able
      to restore the previously set if desired. This is useful for explicitely
      triggered scavenges or external requests that interrupt the current behaviour.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1314863003
      
      Cr-Commit-Position: refs/heads/master@{#30457}
      f4f3b431
  17. 28 Aug, 2015 1 commit
  18. 26 Aug, 2015 1 commit
  19. 25 Aug, 2015 1 commit
  20. 18 Aug, 2015 1 commit
  21. 14 Aug, 2015 1 commit
  22. 12 Aug, 2015 1 commit
    • mstarzinger's avatar
      Remove inline header includes from non-inline headers (1). · 00a07bc1
      mstarzinger authored
      This tries to remove includes of "-inl.h" headers from normal ".h"
      headers, thereby reducing the chance of any cyclic dependencies and
      decreasing the average size of our compilation units.
      
      Note that this change still leaves 7 violations of that rule in the
      code. However there now is the "tools/check-inline-includes.sh" tool
      detecting such violations.
      
      R=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1283033003
      
      Cr-Commit-Position: refs/heads/master@{#30125}
      00a07bc1
  23. 10 Aug, 2015 1 commit
  24. 23 Jun, 2015 1 commit
  25. 04 Jun, 2015 1 commit
    • mbrandy's avatar
      Add support for Embedded Constant Pools for PPC and Arm · eac7f046
      mbrandy authored
      Embed constant pools within their corresponding Code
      objects.
      
      This removes support for out-of-line constant pools in favor
      of the new approach -- the main advantage being that it
      eliminates the need to allocate and manage separate constant
      pool array objects.
      
      Currently supported on PPC and ARM.  Enabled by default on
      PPC only.
      
      This yields a 6% improvment in Octane on PPC64.
      
      R=bmeurer@chromium.org, rmcilroy@chromium.org, michael_dawson@ca.ibm.com
      BUG=chromium:478811
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1162993006
      
      Cr-Commit-Position: refs/heads/master@{#28801}
      eac7f046
  26. 03 Jun, 2015 1 commit