1. 05 Jan, 2017 1 commit
  2. 11 Nov, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce an ExternalPointer type. · 7d24f1ae
      bmeurer authored
      This adds a new ExternalPointer type, which is an Internal type that is
      used for ExternalReferences and other pointer values, like the pointers
      into the asm.js heap. It also adds a PointerConstant operator, which we
      use to represents these raw constants (we can probably remove that
      particular operator again once WebAssembly ships with the validator).
      
      R=mvstanton@chromium.org
      BUG=v8:5267,v8:5270
      
      Review-Url: https://codereview.chromium.org/2494753003
      Cr-Commit-Position: refs/heads/master@{#40923}
      7d24f1ae
  3. 02 Nov, 2016 3 commits
    • danno's avatar
      [turbofan] Support variable size argument removal in TF-generated functions · fe552636
      danno authored
      This is preparation for using TF to create builtins that handle variable number of
      arguments and have to remove these arguments dynamically from the stack upon
      return.
      
      The gist of the changes:
      - Added a second argument to the Return node which specifies the number of stack
        slots to pop upon return in addition to those specified by the Linkage of the
        compiled function.
      - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
        handles all tail-call cases except where the return value type differs, this fallback
        was not really useful and in fact caused unexpected behavior with variable
        sized argument popping, since it wasn't possible to materialize a Return node
        with the right pop count from the TailCall without additional context.
      - Modified existing Return generation to pass a constant zero as the additional
        pop argument since the variable pop functionality
      
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2446543002
      Cr-Commit-Position: refs/heads/master@{#40699}
      fe552636
    • bmeurer's avatar
      [turbofan] Assign proper types to Parameter nodes. · 3f3bacc3
      bmeurer authored
      R=epertoso@chromium.org
      
      Review-Url: https://codereview.chromium.org/2223873002
      Cr-Commit-Position: refs/heads/master@{#40695}
      3f3bacc3
    • machenbach's avatar
      Revert of [turbofan] Support variable size argument popping in TF-generated... · c61902e0
      machenbach authored
      Revert of [turbofan] Support variable size argument popping in TF-generated functions (patchset #13 id:240001 of https://codereview.chromium.org/2446543002/ )
      
      Reason for revert:
      Seems to break arm64 sim debug and blocks roll:
      https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/3294
      
      Original issue's description:
      > [turbofan] Support variable size argument removal in TF-generated functions
      >
      > This is preparation for using TF to create builtins that handle variable number of
      > arguments and have to remove these arguments dynamically from the stack upon
      > return.
      >
      > The gist of the changes:
      > - Added a second argument to the Return node which specifies the number of stack
      >   slots to pop upon return in addition to those specified by the Linkage of the
      >   compiled function.
      > - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
      >   handles all tail-call cases except where the return value type differs, this fallback
      >   was not really useful and in fact caused unexpected behavior with variable
      >   sized argument popping, since it wasn't possible to materialize a Return node
      >   with the right pop count from the TailCall without additional context.
      > - Modified existing Return generation to pass a constant zero as the additional
      >   pop argument since the variable pop functionality
      >
      > LOG=N
      
      TBR=bmeurer@chromium.org,mstarzinger@chromium.org,epertoso@chromium.org,danno@chromium.org
      # Not skipping CQ checks because original CL landed more than 1 days ago.
      NOPRESUBMIT=true
      
      Review-Url: https://codereview.chromium.org/2473643002
      Cr-Commit-Position: refs/heads/master@{#40691}
      c61902e0
  4. 31 Oct, 2016 1 commit
    • danno's avatar
      [turbofan] Support variable size argument removal in TF-generated functions · 5319b50c
      danno authored
      This is preparation for using TF to create builtins that handle variable number of
      arguments and have to remove these arguments dynamically from the stack upon
      return.
      
      The gist of the changes:
      - Added a second argument to the Return node which specifies the number of stack
        slots to pop upon return in addition to those specified by the Linkage of the
        compiled function.
      - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
        handles all tail-call cases except where the return value type differs, this fallback
        was not really useful and in fact caused unexpected behavior with variable
        sized argument popping, since it wasn't possible to materialize a Return node
        with the right pop count from the TailCall without additional context.
      - Modified existing Return generation to pass a constant zero as the additional
        pop argument since the variable pop functionality
      
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2446543002
      Cr-Commit-Position: refs/heads/master@{#40678}
      5319b50c
  5. 01 Sep, 2016 2 commits
  6. 09 Aug, 2016 1 commit
  7. 08 Aug, 2016 1 commit
  8. 03 Aug, 2016 1 commit
  9. 12 Jul, 2016 1 commit
  10. 11 Jul, 2016 2 commits
    • mstarzinger's avatar
      [turbofan] Remove eager frame state from comparisons. · 136e60a7
      mstarzinger authored
      This removes the frame state input representing the before-state from
      nodes having any comparison operator. Lowering that inserts number
      conversions of the inputs has to be disabled when deoptimization is
      enabled, because the frame state layout is no longer known.
      
      R=jarin@chromium.org
      BUG=v8:5021
      
      Review-Url: https://codereview.chromium.org/2134173002
      Cr-Commit-Position: refs/heads/master@{#37646}
      136e60a7
    • bmeurer's avatar
      [turbofan] Introduce CheckedInt32Div and CheckedInt32Mod operators. · 03bde266
      bmeurer authored
      Consume Smi/Signed32 feedback for division and modulus and introduce
      appropriate checked operators. This is especially important for modulus
      where the Float64Mod operator is significantly slower than Int32Mod on
      most platforms. For division it's mostly important to propagate
      integerness, i.e. to avoid follow-up conversions between float and
      int32.
      
      Drive-by-fix: Use Int32Mod for the ModulusStub (and the bytecode handler)
      when the inputs are both Smi.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2138633002
      Cr-Commit-Position: refs/heads/master@{#37621}
      03bde266
  11. 05 Jul, 2016 2 commits
  12. 29 Jun, 2016 1 commit
  13. 16 Jun, 2016 1 commit
  14. 10 Jun, 2016 1 commit
    • jarin's avatar
      [turbofan] Introduce PlainPrimitiveToNumber. · 2890137b
      jarin authored
      This should solve the problem with missing checkpoints after JSToNumber
      (PlainPrimitiveToNumber is marked no-write, so the frame-state
      propagation should see through it.)
      
      Unfortunately, this also duplicates the word32- and float64-truncation
      magic that we have for JSToNumber in "simplified lowering".
      
      Review-Url: https://codereview.chromium.org/2059653002
      Cr-Commit-Position: refs/heads/master@{#36881}
      2890137b
  15. 21 Mar, 2016 1 commit
    • bmeurer's avatar
      [stubs] Split ToNumberStub into reusable subparts. · b7aa4c3a
      bmeurer authored
      Split ToNumberStub into the entry ToNumberStub, and two new stubs,
      StringToNumberStub and NonNumberToNumberStub, which can be used when we
      already know something about the input (i.e. in various branches of the
      code stubs, or in TurboFan graphs).
      
      Also introduce an appropriate StringToNumber simplified operator for
      TurboFan, that is pure and is lowered to an invocation of the newly
      added StringToNumberStub.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1818923002
      
      Cr-Commit-Position: refs/heads/master@{#34922}
      b7aa4c3a
  16. 16 Feb, 2016 1 commit
  17. 15 Feb, 2016 1 commit
  18. 09 Dec, 2015 1 commit
  19. 07 Dec, 2015 1 commit
  20. 01 Dec, 2015 1 commit
  21. 10 Nov, 2015 1 commit
    • sigurds's avatar
      [turbofan] Pseudo-inline 'instanceof' · 45787501
      sigurds authored
      This patch extends the typed lowering with a specialized version of 'instanceof' that is used if the "class", i.e. the constructor function, is a known constant.
      
      Unittests check that replacement occurs as intended. Functional correctness is ensured by extensive unit tests covering instanceof already in the testsuite.
      
      TESTS=unittests/JSTypedLoweringTest.{JSInstanceOfSpecializationWithSmiCheck,JSInstanceOfSpecializationWithoutSmiCheck,JSInstanceOfNoSpecialization}
      
      Review URL: https://codereview.chromium.org/1407413014
      
      Cr-Commit-Position: refs/heads/master@{#31916}
      45787501
  22. 05 Nov, 2015 1 commit
  23. 30 Oct, 2015 1 commit
    • mstarzinger's avatar
      Move compiler cctests into v8::internal::compiler namespace. · 16f13300
      mstarzinger authored
      This moves all cctest files for the compiler to live in the same
      namespace as the components they are testing. Hence we can avoid the
      forbidden using directives pulling in entire namespaces.
      
      From the Google C++ style guide: "You may not use a using-directive to
      make all names from a namespace available". This would be covered by
      presubmit linter checks if build/namespaces were not blacklisted.
      
      R=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1424943004
      
      Cr-Commit-Position: refs/heads/master@{#31671}
      16f13300
  24. 28 Oct, 2015 1 commit
  25. 27 Oct, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Introduce simplified NumberBitwise{Or,Xor,And} operators. · d08f9045
      bmeurer authored
      Currently we still (mis)used some machine operators in typed lowering
      (namely Word32Or, Word32Xor and Word32And). But these operators are
      "polymorphic" in the signedness of their inputs and output, hence the
      representation selection (and thereby simplified lowering) was unable to
      figure out whether a bitwise operation that was seen would produce an
      unsigned or a signed result. If such nodes also have frame state uses,
      the only safe choice was float64, which was not only a lot less ideal,
      but also the main cause of the for-in related deoptimizer loops.
      
      Adding dedicated NumberBitwiseOr, NumberBitwiseAnd and NumberBitwiseXor
      simplified operators not only gives us precise (and correct) typing for
      the bitwise operations, but also allows us to actually verify the graph
      properly after typed lowering.
      
      Drive-by-fix: Remove the double-to-smi magic from the Deoptimizer, which
      is responsible for various deopt-loops in TurboFan, and is no longer
      needed with the addition of the NumberBitwise operators.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1422213002
      
      Cr-Commit-Position: refs/heads/master@{#31594}
      d08f9045
  26. 19 Oct, 2015 1 commit
  27. 16 Oct, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Move SimplifiedOperatorBuilder into JSGraph. · b7990793
      mstarzinger authored
      This fixes the lifetime of nodes created by JSGlobalSpecialization that
      contain a simplified operator. In the case where this reducer runs as
      part of the inliner, the SimplifiedOperatorBuilder was instantiated with
      the wrong zone. This led to use-after-free of simplified operators.
      
      To avoid such situations in the future, we decided to move this operator
      builder into the JSGraph and make the situation uniform with all other
      operator builders.
      
      R=bmeurer@chromium.org
      BUG=chromium:543528
      LOG=n
      
      Review URL: https://codereview.chromium.org/1409993002
      
      Cr-Commit-Position: refs/heads/master@{#31334}
      b7990793
  28. 05 Oct, 2015 1 commit
    • karl's avatar
      Fix compilation with GCC 5.2 · e28183b5
      karl authored
      Fixes:
      
      ../../test/cctest/compiler/test-js-typed-lowering.cc:224:14:
       error: ‘kJSTypes’ defined but not used [-Werror=unused-variable]
        static Type* kJSTypes[] = {Type::Undefined(), Type::Null(),   Type::Boolean(),
      
      ../../src/bignum.cc: In member function
       ‘void v8::internal::Bignum::AssignDecimalString(Vector<const char>)’:
        ../../src/bignum.cc:80:6: error: assuming signed overflow does not occur when
        assuming that (X + c) < X is always false [-Werror=strict-overflow]
      
      ../../src/compiler/ia32/code-generator-ia32.cc:1366:3:
        required from here ../../src/base/logging.h:123:26:
         error: comparison between signed and unsigned integer expressions
         [-Werror=sign-compare] DEFINE_CHECK_OP_IMPL(EQ, ==)
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1371823002
      
      Cr-Commit-Position: refs/heads/master@{#31095}
      e28183b5
  29. 29 Sep, 2015 2 commits
  30. 23 Sep, 2015 3 commits
  31. 16 Sep, 2015 1 commit
  32. 31 Aug, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Remove usage of Unique<T> from graph. · 6e65e6db
      mstarzinger authored
      The usage of Unique<T> throughout the TurboFan IR does not have any
      advantage. There is no single point in time when they are initialized
      and most use-sites looked through to the underlying Handle<T> anyways.
      Also there already was a mixture of Handle<T> versus Unique<T> in the
      graph and this unifies the situation to use Handle<T> everywhere.
      
      R=bmeurer@chromium.org,titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1314473007
      
      Cr-Commit-Position: refs/heads/master@{#30458}
      6e65e6db