1. 02 May, 2016 2 commits
    • mstarzinger's avatar
      [compiler] Untangle CompilationInfo allocated with new. · 601ee4eb
      mstarzinger authored
      This removes the CompilationInfoWithZone class, which was used to
      allocate a CompilationInfo on the C-heap. By now the CompilationJob is
      the single object being allocated on the C-heap and passed between the
      main thread and the compilation thread. Structs requiring destruction
      can be embedded within that CompilationJob. This simplifies involved
      lifetimes by coupling all lifetimes to one single object.
      
      R=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/1930773003
      Cr-Commit-Position: refs/heads/master@{#35936}
      601ee4eb
    • bmeurer's avatar
      [turbofan] Nuke types before entering the concurrent phase. · 914ad0a3
      bmeurer authored
      It is unsound to look at the types in the TurboFan graphs after the
      representation selection (and early optimization) phases, because
      
       (a) the remaining phases (might) run concurrently, and
       (b) the types may not be accurate (or even correct) after
           representation selection due to the way we deal with
           truncations.
      
      So in Debug builds we now explicitly remove all types from the nodes
      right after we uninstall the Typer decorator from the Graph, so any
      further attempt to access the Type of a Node will lead to a crash (again
      in Debug only for now).
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel
      BUG=v8:4969
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1937803002
      Cr-Commit-Position: refs/heads/master@{#35920}
      914ad0a3
  2. 30 Apr, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Run everything after representation selection concurrently. · d1b3d426
      bmeurer authored
      Further refactor the pipeline to even run the first scheduler (part of
      the effect control linearization) concurrently. This temporarily
      disables most of the write barrier elimination, but we will get back to
      that later.
      
      Drive-by-fix: Remove the dead code from ChangeLowering, and stack
      allocate the Typer in the pipeline. Also migrate the AllocateStub to a
      native code builtin, so that we have the code object + a handle to it
      available all the time.
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel
      R=mstarzinger@chromium.org
      BUG=v8:4969
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1926023002
      Cr-Commit-Position: refs/heads/master@{#35918}
      d1b3d426
  3. 29 Apr, 2016 2 commits
  4. 28 Apr, 2016 2 commits
  5. 27 Apr, 2016 3 commits
  6. 26 Apr, 2016 5 commits
  7. 25 Apr, 2016 3 commits
  8. 23 Apr, 2016 1 commit
    • mtrofin's avatar
      [turbofan] Single entry into deferred · 5ae587cf
      mtrofin authored
      If a deferred block has multiple predecessors, they have to be
      all deferred. Otherwise, we can run into a situation where if a range
      that spills only in deferred blocks inserts its spill in the block, and
      other ranges need moves inserted by ResolveControlFlow in the predecessors,
      the register of the range spilled in the deferred block may be clobbered.
      
      To avoid that, when a deferred block has multiple predecessors, and some
      are not deferred, we add a non-deferred block to collect all such edges.
      
      This CL addresses the validator assertion failure the referenced issue, as well
      as the greedy allocator failure - which was caused by the situation described
      above.
      
      BUG=v8:4940
      LOG=n
      
      Review URL: https://codereview.chromium.org/1912093005
      
      Cr-Commit-Position: refs/heads/master@{#35742}
      5ae587cf
  9. 22 Apr, 2016 4 commits
  10. 21 Apr, 2016 2 commits
  11. 18 Apr, 2016 3 commits
  12. 16 Apr, 2016 2 commits
  13. 15 Apr, 2016 3 commits
  14. 12 Apr, 2016 1 commit
  15. 11 Apr, 2016 3 commits
  16. 07 Apr, 2016 1 commit
  17. 05 Apr, 2016 1 commit
    • jarin's avatar
      [turbofan] Restrict types in load elimination. · 4142bc6b
      jarin authored
      In simplified numbering, we make sanity checks based on types (e.g.,
      NumberSubtract should take numbers as inputs), but this can be
      violated if optimization passes make types less precise.
      
      In this CL, we fix load elimination to make sure that types are
      smaller in the store -> load elimination by taking an intersection
      of the load's type with the store value's type and inserting a guard
      with that type. Note that the load type comes from type feedback, so
      it can be disjoint from the stored value type (in that case, this
      must be dead code because the map chack for the load should prevent
      us from using the stored value).
      
      BUG=chromium:599412
      LOG=n
      
      Review URL: https://codereview.chromium.org/1857133003
      
      Cr-Commit-Position: refs/heads/master@{#35259}
      4142bc6b
  18. 01 Apr, 2016 1 commit