1. 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
  2. 30 Apr, 2015 2 commits
    • bmeurer's avatar
      [turbofan] Don't spread global flag checks all over the compiler code. · b9d583d5
      bmeurer authored
      Better encapsulate the source position handling in TurboFan.
      
      R=svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/1105363003
      
      Cr-Commit-Position: refs/heads/master@{#28153}
      b9d583d5
    • svenpanne's avatar
      Detect simple tail calls · 4b122b75
      svenpanne authored
      This CL contains the first steps towards tail call optimization:
      
        * Structurally detect tail calls during instruction selection,
          looking for special return/call combinations.
      
        * Added new architecture-specific instructions for tail calls which
          jump instead of call and take care of frame adjustment.
      
        * Moved some code around.
      
      Currently we restrict tail calls to callees which only use registers
      for arguments/return value and to call sites which are explicitly
      marked as being OK for tail calls. This excludes, among other things,
      call sites in sloppy JS functions and our IC machinery (both need in
      general to be able to access the caller's frame).
      
      All this is behind a flag --turbo-tail-calls, which is currently off
      by default, so it can easily be toggled.
      
      Review URL: https://codereview.chromium.org/1108563002
      
      Cr-Commit-Position: refs/heads/master@{#28150}
      4b122b75
  3. 29 Apr, 2015 3 commits
  4. 20 Apr, 2015 1 commit
  5. 31 Mar, 2015 1 commit
  6. 26 Mar, 2015 1 commit
  7. 19 Mar, 2015 1 commit
    • jarin's avatar
      [turbofan] Remember types for deoptimization during simplified lowering. · b7dc9c58
      jarin authored
      With this change, we remember the types of frame state inputs (in a new
      operator, called TypedStateValues). Instead of inferring the value types
      when building translations, we used the recorded types.
      
      The original approach was not reliable because the passes after
      simplified lowering can change node types, and this in turn confuses
      the translation builder.
      
      BUG=chromium:468727
      LOG=n
      R=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1015423002
      
      Cr-Commit-Position: refs/heads/master@{#27310}
      b7dc9c58
  8. 16 Mar, 2015 1 commit
    • jarin's avatar
      [turbofan] Cache for reusing parts of value vector nodes in frame states. · cd67e97a
      jarin authored
      Instead of the current approach of storing flat vectors in frame states (and possibly reusing the last vector in AST graph builder), this change list builds a tree for the values and tries to reuse the nodes for different frame states. At the moment, we only use this for the local variable part of frame state, but nothing prevents us from using this for all parts.
      
      This change provides two new classes: one for creating the tree (StateValuesCache) and one for iterating the trees (StateValuesAccess).
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1008213002
      
      Cr-Commit-Position: refs/heads/master@{#27222}
      cd67e97a
  9. 09 Mar, 2015 1 commit
  10. 04 Mar, 2015 1 commit
  11. 25 Feb, 2015 1 commit
  12. 20 Feb, 2015 1 commit
  13. 17 Feb, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Optimize certain chains of Branch into a Switch. · acd9c46c
      bmeurer authored
      This adds a new ControlFlowOptimizer that - for now - recognizes chains
      of Branches generated by the SwitchBuilder for a subset of javascript
      switches into Switch nodes. Those Switch nodes are then lowered to
      either table or lookup switches.
      
      Also rename Case to IfValue (and introduce IfDefault) for consistency.
      
      BUG=v8:3872
      LOG=n
      
      Review URL: https://codereview.chromium.org/931623002
      
      Cr-Commit-Position: refs/heads/master@{#26691}
      acd9c46c
  14. 09 Feb, 2015 1 commit
  15. 04 Feb, 2015 1 commit
  16. 22 Jan, 2015 1 commit
  17. 12 Jan, 2015 1 commit
  18. 08 Jan, 2015 1 commit
  19. 17 Dec, 2014 1 commit
  20. 02 Dec, 2014 1 commit
  21. 30 Oct, 2014 2 commits
  22. 26 Oct, 2014 1 commit
  23. 24 Oct, 2014 1 commit
  24. 23 Oct, 2014 1 commit
  25. 21 Oct, 2014 2 commits
  26. 20 Oct, 2014 1 commit
  27. 13 Oct, 2014 2 commits
  28. 08 Oct, 2014 1 commit
  29. 25 Sep, 2014 1 commit
  30. 02 Sep, 2014 1 commit
  31. 01 Sep, 2014 1 commit
  32. 26 Aug, 2014 1 commit
  33. 21 Aug, 2014 1 commit
  34. 20 Aug, 2014 1 commit