1. 28 May, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Introduce prediction for exception handlers. · d8b94f34
      mstarzinger authored
      This introduces a conservative prediction for each exception handler
      whether it will locally catch an exception or re-throw it to outside
      the code bondaries. It will allow for a more intuitive prediction of
      whether an exception is considered "caught" or "uncaught".
      
      R=bmeurer@chromium.org,yangguo@chromium.org
      BUG=chromium:492522
      LOG=N
      
      Review URL: https://codereview.chromium.org/1158563008
      
      Cr-Commit-Position: refs/heads/master@{#28681}
      d8b94f34
  2. 21 May, 2015 2 commits
  3. 20 May, 2015 1 commit
  4. 15 May, 2015 1 commit
  5. 08 May, 2015 2 commits
  6. 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
  7. 30 Apr, 2015 1 commit
    • 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
  8. 20 Apr, 2015 1 commit
  9. 14 Apr, 2015 1 commit
  10. 09 Apr, 2015 2 commits
    • dcarney's avatar
      [turbofan] cleanup InstructionOperand a little · 07ff6d9f
      dcarney authored
      - ConstantOperand was using a too-small field too store its virtual register
      - drop ConvertTo, replace it with simple copy
      - split AllocatedOperand off from Immediate and Constant to make assignment clearer, also paving the way for small Immediates
      - put zone first in *Operand::New
      - driveby: drop delayed ssa deconstruction experiment
      
      R=titzer@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1050803002
      
      Cr-Commit-Position: refs/heads/master@{#27692}
      07ff6d9f
    • bmeurer's avatar
      [turbofan] Materialize JSFunction from frame if possible. · 725cdc53
      bmeurer authored
      This reduces the overhead of recursive calls when context specialization
      is enabled. Based on this it might be possible to further reduce the
      overhead by also specializing the call itself.
      
      As a drive-by-fix, port the fast context materialization optimization to
      arm and arm64, that was previously only supported on x64 and ia32.
      
      R=svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/1072743002
      
      Cr-Commit-Position: refs/heads/master@{#27686}
      725cdc53
  11. 08 Apr, 2015 1 commit
  12. 07 Apr, 2015 2 commits
  13. 30 Mar, 2015 2 commits
    • baptiste.afsa's avatar
      Reland "Match fneg for -0.0 - x pattern." · f5a6f73c
      baptiste.afsa authored
      R=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1040053002
      
      Cr-Commit-Position: refs/heads/master@{#27516}
      f5a6f73c
    • bmeurer's avatar
      [turbofan] Add backend support for float32 operations. · 8dad78cd
      bmeurer authored
      This adds the basics necessary to support float32 operations in TurboFan.
      The actual functionality required to detect safe float32 operations will
      be added based on this later. Therefore this does not affect production
      code except for some cleanup/refactoring.
      
      In detail, this patchset contains the following features:
      - Add support for float32 operations to arm, arm64, ia32 and x64
        backends.
      - Add float32 machine operators.
      - Add support for float32 constants to simplified lowering.
      - Handle float32 representation for phis in simplified lowering.
      
      In addition, contains the following (related) cleanups:
      - Fix/unify naming of backend instructions.
      - Use AVX comparisons when available.
      - Extend ArchOpcodeField to 9 bits (required for arm64).
      - Refactor some code duplication in instruction selectors.
      
      BUG=v8:3589
      LOG=n
      R=dcarney@chromium.org
      
      Review URL: https://codereview.chromium.org/1044793002
      
      Cr-Commit-Position: refs/heads/master@{#27509}
      8dad78cd
  14. 27 Mar, 2015 3 commits
  15. 26 Mar, 2015 1 commit
  16. 25 Mar, 2015 1 commit
  17. 24 Mar, 2015 1 commit
  18. 23 Mar, 2015 1 commit
  19. 20 Mar, 2015 2 commits
  20. 19 Mar, 2015 1 commit
  21. 16 Mar, 2015 1 commit
    • jacob.bramley's avatar
      [ARM64] [turbofan] Improve construction of doubles. · 12993637
      jacob.bramley authored
      Improve the code generated for construction of a 64-bit floating point
      number from two 32-bit integers.
      
      Previously, this moved FP->core, inserted, then moved core->FP for each
      half. Now, we construct the double in an X register and move core->FP.
      Typically, the temporary register aliases the input register, so the
      sequence improves from six to two instructions.
      
      Patch from Martyn Capewell <m.m.capewell@googlemail.com>.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1008003004
      
      Cr-Commit-Position: refs/heads/master@{#27227}
      12993637
  22. 12 Mar, 2015 1 commit
  23. 10 Mar, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Unify Math.floor / Math.ceil optimization. · 022ea7e0
      bmeurer authored
      Provide an intrinsic %MathFloor / %_MathFloor that is used to optimize
      both Math.ceil and Math.floor, and use the JS inlining mechanism to
      inline Math.ceil into TurboFan code. Although we need to touch code
      outside of TurboFan to make this work, this does not affect the way we
      handle Math.ceil and/or Math.floor in CrankShaft, because for CrankShaft
      the old-style builtin function id based inlining still kicks in first.
      
      Once this solution is stabilized, we can use it for Math.floor as well.
      And once that is settled, we can establish it as the unified way to
      inline builtins, and get rid of the specialized builtin function id
      based inlining at some point.
      
      Note that "builtin" applies to basically every piece of internal
      JavaScript/intrinsics based code, so this also applies to the yet to be
      defined JavaScript based code stubs and handlers.
      
      BUG=v8:3953
      LOG=n
      R=yangguo@chromium.org,svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/990963003
      
      Cr-Commit-Position: refs/heads/master@{#27086}
      022ea7e0
  24. 05 Mar, 2015 1 commit
  25. 04 Mar, 2015 1 commit
  26. 26 Feb, 2015 1 commit
  27. 25 Feb, 2015 1 commit
  28. 23 Feb, 2015 1 commit
  29. 20 Feb, 2015 1 commit
  30. 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
  31. 16 Feb, 2015 1 commit
  32. 09 Feb, 2015 1 commit