1. 31 Mar, 2016 1 commit
  2. 30 Mar, 2016 1 commit
    • bmeurer's avatar
      [builtins] Make Math.ceil, Math.trunc and Math.round optimizable. · 8d20f2fe
      bmeurer authored
      Migrate Math.ceil, Math.round and Math.trunc to TurboFan code stubs,
      similar to what we did with Math.floor, and make these builtins properly
      optimizable in TurboFan via appropriate simplified operators NumberCeil,
      NumberRound and NumberTrunc, which are intended to be reusable for
      ToInteger and ToLength optimizations that will be done in a followup CL.
      
      Also allows us to kill the funky %RoundNumber runtime function, which
      was quite heavy.
      
      Improve test coverage for Math.ceil and Math.trunc a lot, especially
      making sure that we also properly trigger the TurboFan builtin reducer
      case.
      
      R=jarin@chromium.org
      BUG=v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1841993002
      
      Cr-Commit-Position: refs/heads/master@{#35135}
      8d20f2fe
  3. 28 Mar, 2016 1 commit
    • bmeurer's avatar
      [builtins] Provide Math.floor as TurboFan builtin. · 36ead519
      bmeurer authored
      This way we avoid the second deoptimization for the Math.floor and
      Math.ceil builtins when -0 is involved. We still deoptimize the inlined
      Crankshaft version in various cases, that's a separate issue.
      
      The algorithm used for implement CodeStubAssembler::Float64Floor is
      vaguely based on the fast math version used in the libm of various BSDs,
      but had to be reengineered to match the EcmaScript specification.
      
      R=epertoso@chromium.org
      BUG=v8:2890, v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1828253002
      
      Cr-Commit-Position: refs/heads/master@{#35083}
      36ead519
  4. 22 Mar, 2016 1 commit
    • bmeurer's avatar
      [builtins] Add support for JS builtins written in TurboFan. · 43fe7d68
      bmeurer authored
      This CL adds support for builtins with JavaScript linkage written using
      the TurboFan CodeStubAssembler, but with a JSCall descriptor (which was
      already supported thanks to a previous patch by Ben Smith). As a first
      example, we convert the Math.sqrt builtin and thereby get rid of the
      %_MathSqrt intrinsic, which causes trouble for the representation
      selection pass in the JavaScript pipeline.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1824993002
      
      Cr-Commit-Position: refs/heads/master@{#34989}
      43fe7d68
  5. 21 Mar, 2016 1 commit
    • mstarzinger's avatar
      [es6] Faster implementation of OrdinaryHasInstance. · b6419fa2
      mstarzinger authored
      Now implemented as a builtin that delegates to the InstanceOfStub. That
      stub was parameterized to fallback to either Runtime_InstanceOf or to
      Runtime_OrdinaryHasInstance depending on the --harmony-instanceof flag.
      Once the feature stabilizes and the flag is no longer needed, we can get
      rid of this parameterization again.
      
      R=bmeurer@chromium.org
      BUG=v8:4447
      LOG=n
      
      Review URL: https://codereview.chromium.org/1819813002
      
      Cr-Commit-Position: refs/heads/master@{#34959}
      b6419fa2
  6. 08 Mar, 2016 1 commit
  7. 04 Mar, 2016 2 commits
  8. 02 Mar, 2016 1 commit
  9. 01 Mar, 2016 1 commit
  10. 29 Feb, 2016 1 commit
  11. 25 Feb, 2016 1 commit
  12. 24 Feb, 2016 2 commits
    • mythria's avatar
      Revert of [Interpreter] Implements calls through CallICStub in the... · eb358178
      mythria authored
      Revert of [Interpreter] Implements calls through CallICStub in the interpreter. (patchset #15 id:270001 of https://codereview.chromium.org/1688283003/ )
      
      Reason for revert:
      It is not a good idea to call CallICStub from the builtin. It might be sensitive to the frame structure. Constructing a internal frame might cause problems. It is much better to inline the code  related to the type feedback vector into the builtin.
      
      Original issue's description:
      > [Interpreter] Implements calls through CallICStub in the interpreter.
      >
      > Calls are implemented through CallICStub to collect type feedback. Adds
      > a new builtin called InterpreterPushArgsAndCallIC that pushes the
      > arguments onto stack and calls CallICStub.
      >
      > Also adds two new bytecodes CallIC and CallICWide to indicate calls have to
      > go through CallICStub.
      >
      > MIPS port contributed by balazs.kilvady.
      >
      > BUG=v8:4280, v8:4680
      > LOG=N
      >
      > Committed: https://crrev.com/20362a2214c11a0f2ea5141b6a79e09458939cec
      > Cr-Commit-Position: refs/heads/master@{#34244}
      
      TBR=rmcilroy@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4280, v8:4680
      
      Review URL: https://codereview.chromium.org/1731253003
      
      Cr-Commit-Position: refs/heads/master@{#34252}
      eb358178
    • mythria's avatar
      [Interpreter] Implements calls through CallICStub in the interpreter. · 20362a22
      mythria authored
      Calls are implemented through CallICStub to collect type feedback. Adds
      a new builtin called InterpreterPushArgsAndCallIC that pushes the
      arguments onto stack and calls CallICStub.
      
      Also adds two new bytecodes CallIC and CallICWide to indicate calls have to
      go through CallICStub.
      
      MIPS port contributed by balazs.kilvady.
      
      BUG=v8:4280, v8:4680
      LOG=N
      
      Review URL: https://codereview.chromium.org/1688283003
      
      Cr-Commit-Position: refs/heads/master@{#34244}
      20362a22
  13. 19 Feb, 2016 1 commit
  14. 17 Feb, 2016 4 commits
  15. 16 Feb, 2016 1 commit
  16. 11 Feb, 2016 1 commit
  17. 10 Feb, 2016 2 commits
  18. 09 Feb, 2016 1 commit
  19. 08 Feb, 2016 2 commits
  20. 05 Feb, 2016 1 commit
  21. 04 Feb, 2016 1 commit
  22. 28 Jan, 2016 1 commit
    • bmeurer's avatar
      [builtins] Make Math.max and Math.min fast by default. · cb9b8010
      bmeurer authored
      The previous versions of Math.max and Math.min made it difficult to
      optimize those (that's why we already have custom code in Crankshaft),
      and due to lack of ideas what to do about the variable number of
      arguments, we will probably need to stick in special code in TurboFan
      as well; so inlining those builtins is off the table, hence there's no
      real advantage in having them around as "not quite JS" with extra work
      necessary in the optimizing compilers to still make those builtins
      somewhat fast in cases where we cannot inline them (also there's a
      tricky deopt loop in Crankshaft related to Math.min and Math.max, but
      that will be dealt with later).
      
      So to sum up: Instead of trying to make Math.max and Math.min semi-fast
      in the optimizing compilers with weird work-arounds support %_Arguments
      %_ArgumentsLength, we do provide the optimal code as native builtins
      instead and call it a day (which gives a nice performance boost on some
      benchmarks).
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1641083003
      
      Cr-Commit-Position: refs/heads/master@{#33582}
      cb9b8010
  23. 26 Jan, 2016 2 commits
    • rmcilroy's avatar
      [Interpreter] Fix deopting from inline functions. · 32eade63
      rmcilroy authored
      Rename IntepreterExceptionEntryHandler builtin to InterpreterEnterBytecodeDispatch
      and use it as the return address when building interpreter frames during deopt.
      This ensures that we restart execution of the outer frame at the correct
      bytecode.
      
      BUG=v8:4280,v8:4678
      LOG=N
      
      Review URL: https://codereview.chromium.org/1633633002
      
      Cr-Commit-Position: refs/heads/master@{#33512}
      32eade63
    • ishell's avatar
      [es6] Tail calls support. · 6131ab1e
      ishell authored
      This CL implements PrepareForTailCall() mentioned in ES6 spec for full codegen, Crankshaft and Turbofan.
      When debugger is active tail calls are disabled.
      
      Tail calling can be enabled by --harmony-tailcalls flag.
      
      BUG=v8:4698
      LOG=Y
      TBR=rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/1609893003
      
      Cr-Commit-Position: refs/heads/master@{#33509}
      6131ab1e
  24. 22 Jan, 2016 1 commit
  25. 20 Jan, 2016 4 commits
  26. 19 Jan, 2016 2 commits
  27. 15 Jan, 2016 2 commits