1. 07 Oct, 2016 1 commit
  2. 24 May, 2016 1 commit
  3. 23 May, 2016 1 commit
    • danno's avatar
      [turbofan] Better handling of inserted split-edge blocks · 6eb242ee
      danno authored
      Previously, split-edge blocks inserted into CodeStubAssembler schedules
      inherited the "deferredness" of their predecessor block. This tended to inline
      newly inserted blocks that preceeded deferred code inline with non-deferred
      code. The stack frame elider sometimes inserted stack construction into these
      blocks, code which was actually was only needed in the deferred case.
      
      This CL marks inserted split edge blocks with the deferredness of their
      successors, e.g. they are defererred if their predecessor is deferrred. This
      moves stack building code that logically belongs to deferred code into the
      deferred code area rather than inlining it in non-deferred code.
      
      Review-Url: https://codereview.chromium.org/2003663002
      Cr-Commit-Position: refs/heads/master@{#36446}
      6eb242ee
  4. 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
  5. 18 Apr, 2016 1 commit
    • jarin's avatar
      [turbofan] Effect linearization after representation inference. · b9e287c6
      jarin authored
      This introduces a compiler pass that schedules the graph and re-wires effect chain according to the schedule. It also connects allocating representation changes to the effect chain, and removes the BeginRegion and EndRegion nodes - they should not be needed anymore because all effectful nodes should be already wired-in.
      
      This is an intermediate CL - the next step is to move lowering of the Change*ToTaggedEffect nodes to StateEffectIntroduction so that we do not have to introduce the effectful versions of nodes.
      
      Review URL: https://codereview.chromium.org/1849603002
      
      Cr-Commit-Position: refs/heads/master@{#35565}
      b9e287c6
  6. 23 Mar, 2016 2 commits
  7. 11 Jan, 2016 1 commit
  8. 16 Sep, 2015 1 commit
  9. 12 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Use appropriate type for NodeId. · c487aba7
      bmeurer authored
      Up until now we used int32_t for NodeId, but that was not ideal because
      negative values are invalid for NodeId and we use it as an array index
      for example in the NodeMarker class, where C++ compilers on x64 have to
      generate code that does proper sign extension for the indices, which is
      completely unnecessary.
      
      R=svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/1178403004
      
      Cr-Commit-Position: refs/heads/master@{#28997}
      c487aba7
  10. 05 May, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Fix tail call optimization. · d21de2a4
      bmeurer authored
      Tail calls are matched on the graph, with a dedicated tail call
      optimization that is actually testable. The instruction selection can
      still fall back to a regular if the platform constraints don't allow to
      emit a tail call (i.e. the return locations of caller and callee differ
      or the callee takes non-register parameters, which is a restriction that
      will be removed in the future).
      
      Also explicitly limit tail call optimization to stubs for now and drop
      the global flag.
      
      BUG=v8:4076
      LOG=n
      
      Review URL: https://codereview.chromium.org/1114163005
      
      Cr-Commit-Position: refs/heads/master@{#28219}
      d21de2a4
  11. 04 Mar, 2015 1 commit
  12. 25 Feb, 2015 1 commit
  13. 20 Feb, 2015 1 commit
  14. 09 Feb, 2015 1 commit
  15. 29 Jan, 2015 1 commit
  16. 23 Jan, 2015 1 commit
  17. 22 Jan, 2015 1 commit
  18. 17 Dec, 2014 1 commit
  19. 26 Nov, 2014 2 commits
  20. 05 Nov, 2014 1 commit
  21. 24 Oct, 2014 1 commit
  22. 22 Oct, 2014 2 commits
  23. 20 Oct, 2014 2 commits
  24. 15 Oct, 2014 1 commit
    • rossberg@chromium.org's avatar
      Better typing and type verification · 0e16150d
      rossberg@chromium.org authored
      - Extend verifier to check types of JS and Simplified nodes.
      - Untyped nodes now contain NULL as types, enforcing hard failure.
      - Typer immediately installs itself as a decorator; remove explicit decorator installation.
      - Decorator eagerly types all nodes that have typed inputs
        (subsumes typing of constant cache, removing its typing
        side-channel and various spurious dependencies on the typer).
      - Cut down typer interface to prevent inconsistently typed graphs.
      - Remove verification from start, since it caused too much trouble
        with semi-wellformed nodes.
      - Fix a couple of bugs on the way that got uncovered.
      
      To do: verifying machine operators. Also, various conditions in the
      verifier are currently commented out, because they don't yet hold.
      
      BUG=
      R=jarin@chromium.org,titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/658543002
      
      git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      0e16150d
  25. 14 Oct, 2014 1 commit
  26. 30 Sep, 2014 2 commits
  27. 01 Sep, 2014 1 commit
  28. 30 Jul, 2014 1 commit