1. 17 Aug, 2016 1 commit
  2. 11 Jul, 2016 1 commit
  3. 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
  4. 23 Jun, 2016 2 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
  5. 21 Jun, 2016 2 commits
  6. 19 May, 2016 1 commit
  7. 04 May, 2016 1 commit
    • gdeepti's avatar
      Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers... · 117a56b7
      gdeepti authored
      Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
       - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
       - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler
      
      R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org
      
      Review-Url: https://codereview.chromium.org/1921203002
      Cr-Commit-Position: refs/heads/master@{#36044}
      117a56b7
  8. 19 Apr, 2016 1 commit
  9. 16 Mar, 2016 3 commits
  10. 10 Feb, 2016 1 commit
  11. 02 Feb, 2016 1 commit
  12. 28 Jan, 2016 1 commit
  13. 12 Jan, 2016 1 commit
  14. 06 Jan, 2016 1 commit
    • ivica.bogosavljevic's avatar
      MIPS64: r6 compact branch optimization. · 2c63060f
      ivica.bogosavljevic authored
      Several ports to enable r6 compact branch optimizations on MIPS64
      
      Port 3573d3cb
      
      Original commit message:
      MIPS: r6 compact branch optimization.
      
      Port bddf8c9e
      
      Original commit message:
      MIPS: Fix trampoline pool handling in MacroAssembler::BranchShort()
      
      Port 6993cd0d
      
      Original commit message:
      MIPS: Fix 'MIPS:r6 compact branch optimization.'
      
      Jic and jialc compact branch ops are fixed as they does
      not have 'forbidden slot' restriction. Also COP1 branches
      (CTI instructions) added to IsForbiddenAfterBranchInstr().
      
      Port bb332195
      
      Original commit message:
      MIPS: Fix trampoline pool handling in MacroAssembler::BranchShort()
      
      Port c91bcf71
      
      Original commit message:
      MIPS: Fix trampoline pool handling in MacroAssembler::BranchShort()
      for r6.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1534183002
      
      Cr-Commit-Position: refs/heads/master@{#33136}
      2c63060f
  15. 27 Nov, 2015 2 commits
  16. 25 Nov, 2015 1 commit
  17. 02 Oct, 2015 3 commits
    • danno's avatar
      Re-reland: Remove register index/code indirection · 5cf1c0bc
      danno authored
      Previous to this patch, both the lithium and TurboFan register
      allocators tracked allocated registers by "indices", rather than
      the register codes used elsewhere in the runtime. This patch
      ensures that codes are used everywhere, and in the process cleans
      up a bunch of redundant code and adds more structure to how the
      set of allocatable registers is defined.
      
      Some highlights of changes:
      
      * TurboFan's RegisterConfiguration class moved to V8's top level
        so that it can be shared with Crankshaft.
      * Various "ToAllocationIndex" and related methods removed.
      * Code that can be easily shared between Register classes on
        different platforms is now shared.
      * The list of allocatable registers on each platform is declared
        as a list rather than implicitly via the register index <->
        code mapping.
      
      Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
      Cr-Commit-Position: refs/heads/master@{#30913}
      
      Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf
      Cr-Commit-Position: refs/heads/master@{#31075}
      
      Review URL: https://codereview.chromium.org/1287383003
      
      Cr-Commit-Position: refs/heads/master@{#31087}
      5cf1c0bc
    • danno's avatar
      Revert of Reland: Remove register index/code indirection (patchset #20... · 00e07b00
      danno authored
      Revert of Reland: Remove register index/code indirection (patchset #20 id:380001 of https://codereview.chromium.org/1287383003/ )
      
      Reason for revert:
      Failures on MIPS
      
      Original issue's description:
      > Remove register index/code indirection
      >
      > Previous to this patch, both the lithium and TurboFan register
      > allocators tracked allocated registers by "indices", rather than
      > the register codes used elsewhere in the runtime. This patch
      > ensures that codes are used everywhere, and in the process cleans
      > up a bunch of redundant code and adds more structure to how the
      > set of allocatable registers is defined.
      >
      > Some highlights of changes:
      >
      > * TurboFan's RegisterConfiguration class moved to V8's top level
      >   so that it can be shared with Crankshaft.
      > * Various "ToAllocationIndex" and related methods removed.
      > * Code that can be easily shared between Register classes on
      >   different platforms is now shared.
      > * The list of allocatable registers on each platform is declared
      >   as a list rather than implicitly via the register index <->
      >   code mapping.
      >
      > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
      > Cr-Commit-Position: refs/heads/master@{#30913}
      >
      > Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf
      > Cr-Commit-Position: refs/heads/master@{#31075}
      
      TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1380863004
      
      Cr-Commit-Position: refs/heads/master@{#31083}
      00e07b00
    • danno's avatar
      Remove register index/code indirection · 7b7a8205
      danno authored
      Previous to this patch, both the lithium and TurboFan register
      allocators tracked allocated registers by "indices", rather than
      the register codes used elsewhere in the runtime. This patch
      ensures that codes are used everywhere, and in the process cleans
      up a bunch of redundant code and adds more structure to how the
      set of allocatable registers is defined.
      
      Some highlights of changes:
      
      * TurboFan's RegisterConfiguration class moved to V8's top level
        so that it can be shared with Crankshaft.
      * Various "ToAllocationIndex" and related methods removed.
      * Code that can be easily shared between Register classes on
        different platforms is now shared.
      * The list of allocatable registers on each platform is declared
        as a list rather than implicitly via the register index <->
        code mapping.
      
      Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
      Cr-Commit-Position: refs/heads/master@{#30913}
      
      Review URL: https://codereview.chromium.org/1287383003
      
      Cr-Commit-Position: refs/heads/master@{#31075}
      7b7a8205
  18. 30 Sep, 2015 1 commit
  19. 24 Sep, 2015 2 commits
    • danno's avatar
      Revert of Remove register index/code indirection (patchset #17 id:320001 of... · 3ac27431
      danno authored
      Revert of Remove register index/code indirection (patchset #17 id:320001 of https://codereview.chromium.org/1287383003/ )
      
      Reason for revert:
      Failures on greedy RegAlloc, Fuzzer
      
      Original issue's description:
      > Remove register index/code indirection
      >
      > Previous to this patch, both the lithium and TurboFan register
      > allocators tracked allocated registers by "indices", rather than
      > the register codes used elsewhere in the runtime. This patch
      > ensures that codes are used everywhere, and in the process cleans
      > up a bunch of redundant code and adds more structure to how the
      > set of allocatable registers is defined.
      >
      > Some highlights of changes:
      >
      > * TurboFan's RegisterConfiguration class moved to V8's top level
      >   so that it can be shared with Crankshaft.
      > * Various "ToAllocationIndex" and related methods removed.
      > * Code that can be easily shared between Register classes on
      >   different platforms is now shared.
      > * The list of allocatable registers on each platform is declared
      >   as a list rather than implicitly via the register index <->
      >   code mapping.
      >
      > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
      > Cr-Commit-Position: refs/heads/master@{#30913}
      
      TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1365073002
      
      Cr-Commit-Position: refs/heads/master@{#30914}
      3ac27431
    • danno's avatar
      Remove register index/code indirection · 80bc6f6e
      danno authored
      Previous to this patch, both the lithium and TurboFan register
      allocators tracked allocated registers by "indices", rather than
      the register codes used elsewhere in the runtime. This patch
      ensures that codes are used everywhere, and in the process cleans
      up a bunch of redundant code and adds more structure to how the
      set of allocatable registers is defined.
      
      Some highlights of changes:
      
      * TurboFan's RegisterConfiguration class moved to V8's top level
        so that it can be shared with Crankshaft.
      * Various "ToAllocationIndex" and related methods removed.
      * Code that can be easily shared between Register classes on
        different platforms is now shared.
      * The list of allocatable registers on each platform is declared
        as a list rather than implicitly via the register index <->
        code mapping.
      
      Review URL: https://codereview.chromium.org/1287383003
      
      Cr-Commit-Position: refs/heads/master@{#30913}
      80bc6f6e
  20. 31 Jul, 2015 1 commit
  21. 20 Jul, 2015 1 commit
    • yangguo's avatar
      Debugger: prepare code for debugging on a per-function basis. · 35c28ce0
      yangguo authored
      Prior to this patch, we enter a global debug mode whenever a break point
      is set. By entering this mode, all code is deoptimized and activated
      frames are recompiled and redirected to newly compiled debug code.
      
      After this patch, we only deoptimize/redirect for functions we want to
      debug. Trigger for this is Debug::EnsureDebugInfo, and having DebugInfo
      object attached to the SFI prevents optimization/inlining.
      
      The result is that we can have optimized code for functions without break
      points alongside functions that do have break points, which are not
      optimized.
      
      R=mstarzinger@chromium.org, ulan@chromium.org
      BUG=v8:4132
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1233073005
      
      Cr-Commit-Position: refs/heads/master@{#29758}
      35c28ce0
  22. 15 Jul, 2015 1 commit
  23. 13 Jul, 2015 1 commit
  24. 09 Jun, 2015 1 commit
  25. 23 Mar, 2015 1 commit
  26. 18 Mar, 2015 1 commit
  27. 17 Mar, 2015 1 commit
  28. 05 Mar, 2015 1 commit
  29. 04 Mar, 2015 1 commit
    • yangguo's avatar
      Refactor BreakLocationIterator. · 1a608493
      yangguo authored
      We now have BreakLocation::Iterator to iterate via RelocIterator, and
      create a BreakLocation when we are done iterating. The reloc info is
      stored in BreakLocation in a GC-safe way and instantiated on demand.
      
      R=ulan@chromium.org
      BUG=v8:3924
      LOG=N
      
      Review URL: https://codereview.chromium.org/967323002
      
      Cr-Commit-Position: refs/heads/master@{#26983}
      1a608493
  30. 17 Feb, 2015 1 commit
  31. 24 Sep, 2014 1 commit
  32. 06 Aug, 2014 1 commit