1. 31 Aug, 2016 1 commit
    • mlippautz's avatar
      [heap] Integrate embedder heap tracer into incremental marking · 998c9285
      mlippautz authored
      - Respect a deadline when processing wrappers during incremental marking, i.e.,
        don't force completetion on each individual step
      - Only finalize when both, the internal marking deque and wrappers, are
        processed
      
      Some results (twitter using --enable-blink-features=TraceWrappables)
      
      === BEFORE ===
      incremental_wrapper_tracing_longest_step
        len: 13
        min: 0.0
        ---> max: 6.6
        ---> avg: 3.83846153846
        [0,5[: 7
        [5,10[: 6
      mark.wrapper_tracing
        len: 13
        min: 0.0
        max: 2.0 (non-incremental MC)
        avg: 0.153846153846
        [0,5[: 13
      
      === AFTER ===
      incremental_wrapper_tracing_longest_step
        len: 8
        min: 0.0
        ---> max: 1.1
        ---> avg: 0.8875
        [0,5[: 8
      mark.wrapper_tracing (not excluding non-incremental MC)
        len: 8
        min: 0.0
        max: 2.5 (non-incremental MC)
        avg: 0.3125
        [0,5[: 8
      
      BUG=chromium:468240
      R=ulan@chromium.org
      
      Review-Url: https://codereview.chromium.org/2287343002
      Cr-Commit-Position: refs/heads/master@{#39041}
      998c9285
  2. 28 Aug, 2016 1 commit
  3. 26 Aug, 2016 1 commit
    • mlippautz's avatar
      [heap] Properly propagate allocated space during new space evacuaton in MC · bb4974d1
      mlippautz authored
      New space evaucation in MC supports, similar to scavenges, fall back allocation
      in old space.
      
      For new space evacuation we support stick and non-sticky modes for fallback. The
      sticky mode essentially removes the capability to allocate in new space while
      the non-sticky mode only falls back for a single allocation.
      
      We use the non-sticky mode for allocations that are too large for a LAB but
      should still go in new space. When such an allocation fails in new space, we
      allocate in old space in non-sticky mode as we would still like to reuse the
      remainder memory in new space. However, in such a case we fail to properly
      report the space allocated in resulting in a missed recorded slot.
      
      BUG=chromium:641270
      R=ulan@chromium.org
      
      Review-Url: https://codereview.chromium.org/2280943002
      Cr-Commit-Position: refs/heads/master@{#38940}
      bb4974d1
  4. 25 Aug, 2016 1 commit
  5. 23 Aug, 2016 3 commits
  6. 19 Aug, 2016 1 commit
  7. 18 Aug, 2016 4 commits
  8. 12 Aug, 2016 2 commits
  9. 11 Aug, 2016 1 commit
  10. 10 Aug, 2016 2 commits
    • mlippautz's avatar
      Revert of [heap] Switch to 500k pages (patchset #24 id:780001 of... · 555c9619
      mlippautz authored
      Revert of [heap] Switch to 500k pages (patchset #24 id:780001 of https://codereview.chromium.org/2013713003/ )
      
      Reason for revert:
      Failures on waterfall:
      
      e.g. http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/11134
      
      Original issue's description:
      > [heap] Switch to 500k pages
      >
      > - Decrease regular heap object size to 300k, keeping the same ration (60%)
      >   between this limit and page size.
      >
      > In a follow up, we can now get rid of the new space border page while
      > keeping the 1M minimum new space size.
      >
      > Some results (v8.infinite_scroll; 3 runs):
      > - evacuate.avg: +15.3% (1.4->1.2)
      > - evacuate.max: +24.4% (2.4->1.8)
      >
      > BUG=chromium:581412
      > LOG=N
      > R=hpayer@chromium.org, ulan@chromium.org, yangguo@chromium.org
      >
      > Committed: https://crrev.com/ffe5c670e1559d11e7b252e15fec38765e7dbe4f
      > Cr-Commit-Position: refs/heads/master@{#38533}
      
      TBR=hpayer@chromium.org,ulan@chromium.org,yangguo@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=chromium:581412
      
      Review-Url: https://codereview.chromium.org/2229403003
      Cr-Commit-Position: refs/heads/master@{#38537}
      555c9619
    • mlippautz's avatar
      [heap] Switch to 500k pages · ffe5c670
      mlippautz authored
      - Decrease regular heap object size to 300k, keeping the same ration (60%)
        between this limit and page size.
      
      In a follow up, we can now get rid of the new space border page while
      keeping the 1M minimum new space size.
      
      Some results (v8.infinite_scroll; 3 runs):
      - evacuate.avg: +15.3% (1.4->1.2)
      - evacuate.max: +24.4% (2.4->1.8)
      
      BUG=chromium:581412
      LOG=N
      R=hpayer@chromium.org, ulan@chromium.org, yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2013713003
      Cr-Commit-Position: refs/heads/master@{#38533}
      ffe5c670
  11. 09 Aug, 2016 1 commit
  12. 04 Aug, 2016 1 commit
  13. 02 Aug, 2016 1 commit
  14. 01 Aug, 2016 1 commit
  15. 28 Jul, 2016 1 commit
  16. 26 Jul, 2016 1 commit
  17. 25 Jul, 2016 2 commits
  18. 22 Jul, 2016 1 commit
  19. 14 Jul, 2016 1 commit
  20. 13 Jul, 2016 2 commits
  21. 12 Jul, 2016 1 commit
  22. 04 Jul, 2016 1 commit
  23. 29 Jun, 2016 1 commit
  24. 28 Jun, 2016 1 commit
    • ahaas's avatar
      Reland [heap] Avoid the use of cells to point from code to new-space objects. · 5e058540
      ahaas authored
      The reason for reverting is: This breaks gc-stress bot:
      https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot
      
      Abortion of compaction could cause duplicate entries in the typed-old-to-new remembered set. These duplicates could cause a DCHECK to trigger which checks that slots recorded in the remembered set never point to to-space. This reland-CL allows duplicates in the remembered set by removing the DCHECK, and additionally clears entries in the remembered set if objects are moved.
      
      Original issue's description:
      
      Cells were needed originally because there was no typed remembered set to
      record direct pointers from code space to new space. A previous
      CL (https://codereview.chromium.org/2003553002/) already introduced
      the remembered set, this CL uses it.
      
      This CL
      * stores direct pointers in code objects, even if the target is in new space,
      * records the slot of the pointer in typed-old-to-new remembered set,
      * adds a list which stores weak code-to-new-space references,
      * adds a test to test-heap.cc for weak code-to-new-space references,
      * removes prints in tail-call-megatest.js
      
      Review-Url: https://codereview.chromium.org/2097023002
      Cr-Commit-Position: refs/heads/master@{#37325}
      5e058540
  25. 23 Jun, 2016 4 commits
    • vogelheim's avatar
      Revert of Reland [heap] Avoid the use of cells to point from code to new-space... · 25d59e9d
      vogelheim authored
      Revert of Reland [heap] Avoid the use of cells to point from code to new-space objects. (patchset #3 id:40001 of https://codereview.chromium.org/2091733002/ )
      
      Reason for revert:
      This breaks gc-stress bot: https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot
      
      #
      # Fatal error in ../../src/heap/mark-compact.cc, line 3715
      # Check failed: Page::FromAddress(reinterpret_cast<HeapObject*>(*slot)->address()) ->IsFlagSet(Page::PAGE_NEW_NEW_PROMOTION).
      #
      
      I can reproduce locally, and local revert also fixes it -> revert.
      
      Reproduce with:
       out/Debug/d8 --test --random-seed=2140216864 --nohard-abort --nodead-code-elimination --nofold-constants --enable-slow-asserts --debug-code --verify-heap --allow-natives-syntax --harmony-tailcalls test/mjsunit/mjsunit.js  test/mjsunit/es6/tail-call-megatest-shard2.js --gc-interval=500 --stress-compaction --concurrent-recompilation-queue-length=64 --concurrent-recompilation-delay=500 --concurrent-recompilation
      
      (Maybe run in loop; it's flaky when broken; but passes reliably w/ revert.)
      
      Original issue's description:
      > Reland [heap] Avoid the use of cells to point from code to new-space objects.
      >
      > The reason for reverting was: [Sheriff] Breaks arm debug:
      > https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm%20-%20sim%20-%20debug/builds/1038.
      >
      > The problem was the dereferencing of handles for smi checks. It turned out
      > that these smi checks can be removed anyways, both on arm and on mips.
      >
      > Additionally some rebasing was necessary.
      >
      > Original issue's description:
      >
      > Cells were needed originally because there was no typed remembered set to
      > record direct pointers from code space to new space. A previous
      > CL (https://codereview.chromium.org/2003553002/) already introduced
      > the remembered set, this CL uses it.
      >
      > This CL
      > * stores direct pointers in code objects, even if the target is in new space,
      > * records the slot of the pointer in typed-old-to-new remembered set,
      > * adds a list which stores weak code-to-new-space references,
      > * adds a test to test-heap.cc for weak code-to-new-space references,
      > * removes prints in tail-call-megatest.js
      >
      > R=mlippautz@chromium.org
      >
      > Committed: https://crrev.com/5508e16592522658587da71ba6743c8e832fe4d1
      > Cr-Commit-Position: refs/heads/master@{#37217}
      
      TBR=mlippautz@chromium.org,ahaas@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review-Url: https://codereview.chromium.org/2090983002
      Cr-Commit-Position: refs/heads/master@{#37221}
      25d59e9d
    • ahaas's avatar
      Reland [heap] Avoid the use of cells to point from code to new-space objects. · 5508e165
      ahaas authored
      The reason for reverting was: [Sheriff] Breaks arm debug:
      https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm%20-%20sim%20-%20debug/builds/1038.
      
      The problem was the dereferencing of handles for smi checks. It turned out
      that these smi checks can be removed anyways, both on arm and on mips.
      
      Additionally some rebasing was necessary.
      
      Original issue's description:
      
      Cells were needed originally because there was no typed remembered set to
      record direct pointers from code space to new space. A previous
      CL (https://codereview.chromium.org/2003553002/) already introduced
      the remembered set, this CL uses it.
      
      This CL
      * stores direct pointers in code objects, even if the target is in new space,
      * records the slot of the pointer in typed-old-to-new remembered set,
      * adds a list which stores weak code-to-new-space references,
      * adds a test to test-heap.cc for weak code-to-new-space references,
      * removes prints in tail-call-megatest.js
      
      R=mlippautz@chromium.org
      
      Review-Url: https://codereview.chromium.org/2091733002
      Cr-Commit-Position: refs/heads/master@{#37217}
      5508e165
    • mlippautz's avatar
      [heap] Modernize all *Page iterators to be proper C++ iterators · 4244b989
      mlippautz authored
      As part of the page type unification also unify page iterators. Iterating
      over a space works the same for all spaces now (new, old, lo).
      
      Iterating over pages of a space follows now the regular C++ iterator pattern:
      - for (auto it = space->begin(); it != space->end(); ++it) {}
      - for (Page* p : *space) {}
      
      GC only: Loop supporting unlinking/freeing of a Page on the fly:
        for (auto it = space->begin(); != space->end();) {
          Page* p = *(it++);
          p->Unlink();
        }
      
      For iteration of a range of new space pages use NewSpacePageRange which
      also verifies that the range is actually a proper new space page range.
      
      BUG=chromium:581412
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2088223002
      Cr-Commit-Position: refs/heads/master@{#37210}
      4244b989
    • mlippautz's avatar
      [heap] Fix bad-cast in Sweeper · 2658eb2a
      mlippautz authored
      BUG=chromium:622351
      LOG=N
      R=jochen@chromium.org
      
      Review-Url: https://codereview.chromium.org/2097453002
      Cr-Commit-Position: refs/heads/master@{#37209}
      2658eb2a
  26. 22 Jun, 2016 1 commit
  27. 21 Jun, 2016 2 commits