1. 31 May, 2016 1 commit
  2. 30 May, 2016 1 commit
  3. 25 May, 2016 1 commit
  4. 18 May, 2016 2 commits
  5. 17 May, 2016 1 commit
    • bmeurer's avatar
      [es6] Reintroduce the instanceof operator in the backends. · 551e0aa1
      bmeurer authored
      This adds back the instanceof operator support in the backends and
      introduces a @@hasInstance protector cell on the isolate that guards the
      fast path for the InstanceOfStub. This way we recover the ~10%
      regression on Octane EarleyBoyer in Crankshaft and greatly improve
      TurboFan and Ignition performance of instanceof.
      
      R=ishell@chromium.org
      TBR=hpayer@chromium.org,rossberg@chromium.org
      BUG=chromium:597249, v8:4447
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1980483003
      Cr-Commit-Position: refs/heads/master@{#36275}
      551e0aa1
  6. 12 May, 2016 1 commit
  7. 09 May, 2016 1 commit
  8. 03 May, 2016 2 commits
  9. 15 Apr, 2016 1 commit
  10. 08 Apr, 2016 1 commit
  11. 22 Mar, 2016 2 commits
    • adamk's avatar
      Remove support for legacy const, part 1 · ed18aa65
      adamk authored
      Now that ES2015 const has shipped, in Chrome 49, legacy const declarations
      are no more. This lets us remove a bunch of code from many parts of the
      codebase.
      
      In this patch, I remove parser support for generating legacy const variables
      from const declarations. This also removes the special "illegal declaration"
      bit from Scope, which has ripples into all compiler backends.
      
      Also gone are any tests which relied on legacy const declarations.
      
      Note that we do still generate a Variable in mode CONST_LEGACY in one case:
      function name bindings in sloppy mode. The likely fix there is to add a new
      Variable::Kind for this case and handle it appropriately for stores in each
      backend, but I leave that for a later patch to make this one completely
      subtractive.
      
      Review URL: https://codereview.chromium.org/1819123002
      
      Cr-Commit-Position: refs/heads/master@{#35002}
      ed18aa65
    • 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
  12. 08 Mar, 2016 1 commit
  13. 18 Feb, 2016 1 commit
  14. 12 Feb, 2016 5 commits
  15. 11 Feb, 2016 1 commit
    • mstarzinger's avatar
      [interpreter] Correctly thread through catch prediction. · ba55f559
      mstarzinger authored
      This change correctly sets the {CatchPrediction} field in exception
      handler tables for bytecode and optimized code. It also adds tests
      independent of promise handling for this prediction, to ensure all our
      backends are in sync on their prediction.
      
      R=rmcilroy@chromium.org,yangguo@chromium.org
      TEST=mjsunit/compiler/debug-catch-prediction
      BUG=v8:4674
      LOG=n
      
      Review URL: https://codereview.chromium.org/1690973002
      
      Cr-Commit-Position: refs/heads/master@{#33906}
      ba55f559
  16. 09 Feb, 2016 2 commits
    • mstarzinger's avatar
      Add test for exception handler context switch. · d60c6bdf
      mstarzinger authored
      This adds test cases for exception handlers that require a context
      switch when entering the catch-block or the finally-block, triggered
      through nested contexts within the try-block.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1681933002
      
      Cr-Commit-Position: refs/heads/master@{#33845}
      d60c6bdf
    • bmeurer's avatar
      [intrinsics] Kill the %_IsMinusZero intrinsic. · 00f7d1f5
      bmeurer authored
      By now only the default %TypedArray%.prototype.sort compare function
      and the JS implementation of SameValueZero were still using the odd
      %_IsMinusZero intrinsic, whose semantics both included a number check
      (actually HeapNumber test) plus testing if the heap number stores the
      special -0 value. In both cases we already know that we deal with
      number so we can reduce it to a simple number test for -0, which can
      be expressed via dividing 1 by that value and checking the sign of
      the result. In case of the compare function, we can be even smarter
      and work with the reciprocal values in case x and y are equal to 0
      (although long term we should probably rewrite the fast case for
      the typed array sorting function in C++ anyway, which will be way,
      way faster than our handwritten callback-style, type-feedback
      polluted JS implementation).
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1680783002
      
      Cr-Commit-Position: refs/heads/master@{#33833}
      00f7d1f5
  17. 05 Feb, 2016 1 commit
  18. 02 Feb, 2016 1 commit
  19. 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
  20. 22 Jan, 2016 1 commit
  21. 11 Jan, 2016 1 commit
    • littledan's avatar
      Ship ES2015 sloppy-mode const semantics · 95145fa8
      littledan authored
      This patch moves the semantics of 'const' in sloppy mode to match those
      in strict mode, that is, const makes lexical (let-like) bindings, must
      have an initializer, and does not create properties of the global object.
      
      R=adamk
      LOG=Y
      BUG=v8:3305
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      
      Review URL: https://codereview.chromium.org/1571873004
      
      Cr-Commit-Position: refs/heads/master@{#33218}
      95145fa8
  22. 08 Jan, 2016 1 commit
  23. 05 Jan, 2016 1 commit
    • sigurds's avatar
      [turbofan] Deopt support for escape analysis · 3b473d7a
      sigurds authored
      Deopt support is added on two levels. On the IR level,
      a new ObjectState node is added, which represenents an
      object to be materialized. ObjectState nodes appear as
      inputs of FrameState and StateValues nodes. On the
      instruction select/code-generation level, the
      FrameStateDescriptor class handles the nesting
      introduced by ObjectState, and ensures that deopt code
      with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are
      generated similarly to what crankshaft's escape
      analysis does.
      
      Two unittests test correctness of the IR level implementation.
      
      Correctness for instruction selection / code generation
      is tested by mjsunit tests.
      
      R=jarin@chromium.org,mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1485183002
      
      Cr-Commit-Position: refs/heads/master@{#33115}
      3b473d7a
  24. 04 Jan, 2016 1 commit
  25. 14 Dec, 2015 1 commit
    • sigurds's avatar
      [turbofan] Stabilize escape analysis (without deopt) · 3161c171
      sigurds authored
      Bugfixes and improvements in escape analysis include:
      
      * Handling of ObjectIsSmi (non-escaping)
      * Handling of nested phi replacements
      * Handling of phis with arity > 2
      * Resilience against effectful nodes dangling from start
      * Allocations escape now, if non-const load/store is performed
      * Fixed a bug where non-allocated objects where tracked
      * Allow fixed double arrays to be tracked
      
      R=mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1510973006
      
      Cr-Commit-Position: refs/heads/master@{#32833}
      3161c171
  26. 07 Dec, 2015 1 commit
    • sigurds's avatar
      [turbofan] Improve escape analysis · 5b582114
      sigurds authored
      This patch improves escape analysis and fixes bugs
      triggered by clusterfuzz. Impovements include:
      * Handling of LoadElement/StoreElement if index is a
        constant
      * Handling of JSStoreProperty: invalidate all information,
        as the store could have altered any field.
      * Treat phis that use an allocation as escaping
      * Improve resolution of replacements
      
      R=mstarzinger@chromium.org
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1499143002
      
      Cr-Commit-Position: refs/heads/master@{#32656}
      5b582114
  27. 04 Dec, 2015 1 commit
  28. 03 Dec, 2015 1 commit
  29. 02 Dec, 2015 2 commits
    • danno's avatar
      [stubs] A new approach to TF stubs · 3e7e3ed7
      danno authored
      * Add a sibling interface to InterpreterAssembler called
        CodeStubAssembler which provides a wrapper around the
        RawMachineAssembler and is intented to make it easy to build
        efficient cross-platform code stubs. Much of the implementation
        of CodeStubAssembler is shamelessly stolen from the
        InterpreterAssembler, and the idea is to eventually merge the
        two interfaces somehow, probably moving the
        InterpreterAssembler interface over to use the
        CodeStubAssembler. Short-term, however, the two interfaces
        shall remain decoupled to increase our velocity developing the
        two systems in parallel.
      * Implement the StringLength stub in TurboFan with the new
        CodeStubAssembler. Replace and remove the old Hydrogen-stub
        version.
      * Remove a whole slew of machinery to support JavaScript-style
        code stub generation, since it ultimately proved unwieldy,
        brittle and baroque. This cleanup includes removing the shared
        code stub context, several example stubs and a tangle of build
        file changes.
      
      BUG=v8:4587
      LOG=n
      
      Review URL: https://codereview.chromium.org/1475953002
      
      Cr-Commit-Position: refs/heads/master@{#32508}
      3e7e3ed7
    • sigurds's avatar
      [turbofan] Initial support for escape analysis. · aa0ddf7d
      sigurds authored
      This is the first part of escape analysis for turbofan.
      At the moment, there is no deopt support, and support
      for loops is partial (only binary Phis are handled).
      
      The CL includes 4 unittests.
      
      There are also 8 new mjsunit tests, some of which are
      skiped as they require features not yet implemented.
      
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1457683003
      
      Cr-Commit-Position: refs/heads/master@{#32498}
      aa0ddf7d
  30. 26 Nov, 2015 1 commit
  31. 18 Nov, 2015 1 commit