1. 07 Jun, 2017 1 commit
  2. 31 May, 2017 1 commit
  3. 29 May, 2017 1 commit
  4. 24 May, 2017 1 commit
  5. 22 May, 2017 1 commit
  6. 16 May, 2017 1 commit
  7. 15 May, 2017 1 commit
  8. 12 May, 2017 1 commit
  9. 08 May, 2017 1 commit
  10. 13 Apr, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Let ChangeFloat64ToTagged canonicalize to Smi if possible. · 385734bf
      bmeurer authored
      When the incoming value to ChangeFloat64ToTagged is in Smi range, we
      represent it as Smi instead of a HeapNumber. This addresses a range of
      problems where TurboFan unnecessarily deoptimizes because an operation
      learned Smi feedback in Ignition, but was then confronted with a tagged
      HeapNumber in TurboFan, just because the value was also represented as
      unboxed double somewhere in the meantime.
      
      BUG=v8:6256
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2815283002
      Cr-Commit-Position: refs/heads/master@{#44631}
      385734bf
  11. 11 Apr, 2017 2 commits
  12. 07 Apr, 2017 1 commit
    • jarin's avatar
      [turbofan] Add type to the allocation operator. · e97b29a4
      jarin authored
      This gives us more precise type information, so we can avoid some type
      guards to refine the type information back.
      
      The motivation for this is to help escape analysis by not introducing
      redundant type guards (which escape analysis cannot handle yet even
      though it could and should do).
      
      Motivating example:
      
      In the example below, the out-of-object property array for properties
      fld5 and fld6 gets type Any when it is created by "o.fld5 = 5" (for
      object literals, we store 4 properties in-objeca, the rest goes out
      of object).
      
      When we run load elimination for the load the out-of-object property
      array (to store 6 into o.fld6), load elimination inserts TypeGuard to
      enforce the Type::Internal() type. This makes escape analysis bail out
      on this object, and we do not eliminate the object creation.
      
      function f() {
        var o = {};
        o.fld1 = 1;
        o.fld2 = 2;
        o.fld3 = 3;
        o.fld4 = 4;
        o.fld5 = 5;
        o.fld6 = 6;
      }
      
      f();
      f();
      %OptimizeFunctionOnNextCall(f);
      f();
      
      Review-Url: https://codereview.chromium.org/2797993006
      Cr-Commit-Position: refs/heads/master@{#44470}
      e97b29a4
  13. 05 Apr, 2017 1 commit
  14. 21 Mar, 2017 1 commit
  15. 17 Mar, 2017 2 commits
  16. 15 Mar, 2017 3 commits
  17. 13 Mar, 2017 1 commit
  18. 07 Mar, 2017 3 commits
    • clemensh's avatar
      [wasm] Fix interpreter entry for i64 return type · 6cf8f54d
      clemensh authored
      Fix two issues in the interpreter entry for 64 bit return values on
      32 bit platforms. First, the effect chain was slightly incorrect, second
      the order of the returned values was wrong.
      
      Also add a test case for this.
      Tested on x64, ia32 and s390.
      
      Plus drive-by fix in Int64Lowering to reuse global constants for
      big-endian/little-endian disambiguation.
      
      R=titzer@chromium.org
      BUG=v8:5822
      
      Review-Url: https://codereview.chromium.org/2731713002
      Cr-Commit-Position: refs/heads/master@{#43654}
      6cf8f54d
    • bmeurer's avatar
      [turbofan] Extend optimization of flooring integer division. · f0e7a317
      bmeurer authored
      So far we only recognize the special
      
        NumberFloor(NumberDivide(lhs, rhs))
      
      subgraph when both lhs and rhs are in the Unsigned32 range, and the
      result is a PlainNumber. Extend this pattern matching to also cover
      
        NumberFloor(SpeculativeNumberDivide(lhs, rhs))
      
      and to replace the NumberFloor with NumberToInt32 truncation if the
      lhs value is in Signed32 range and the rhs is in Unsigned32 range.
      
      R=jarin@chromium.org
      BUG=v8:5267
      
      Review-Url: https://codereview.chromium.org/2739573004
      Cr-Commit-Position: refs/heads/master@{#43642}
      f0e7a317
    • Michael Starzinger's avatar
      Remove dead handling of Token::NE from all backends. · aa894aff
      Michael Starzinger authored
      The parser already changes all negative equality comparison operations
      to their positive pendants in {ParserBase::ParseBinaryExpression}. No
      other source of the Token::NE exists in the system. We can remove all
      handling from the compiler and interpreter backends.
      
      R=bmeurer@chromium.org
      
      Change-Id: I58722c08dd8e498f20c65886fce86b8172737b10
      Reviewed-on: https://chromium-review.googlesource.com/449716Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43627}
      aa894aff
  19. 03 Mar, 2017 2 commits
  20. 28 Feb, 2017 1 commit
  21. 27 Feb, 2017 2 commits
  22. 24 Feb, 2017 1 commit
  23. 23 Feb, 2017 1 commit
  24. 16 Feb, 2017 1 commit
  25. 15 Feb, 2017 2 commits
  26. 14 Feb, 2017 1 commit
  27. 13 Feb, 2017 1 commit
  28. 10 Feb, 2017 1 commit
  29. 09 Feb, 2017 1 commit
    • bmeurer's avatar
      [turbofan] Utilize the fact that empty string is canonicalized. · cd9724d4
      bmeurer authored
      Since the empty string is canonical HeapObject now, we can use
      this fact to optimize
      
        - strict equality comparisons with the empty string to a
          simple ReferenceEqual operation, and
        - optimize ToBoolean to avoid instance type checks completely.
      
      Drive-by-fix: Allow InternalizedString for Type::HeapConstant
      in the type system. This is safe, since InternalizedStrings
      can be compared to other heap constants by reference (except
      for non-InternalizedStrings, which are excluded from the
      HeapConstant type).
      
      BUG=v8:5267
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2681273002
      Cr-Commit-Position: refs/heads/master@{#43050}
      cd9724d4
  30. 08 Feb, 2017 1 commit
    • ahaas's avatar
      [arm64][turbofan] Fix add+shr for big shift values. · ed6e28d2
      ahaas authored
      Arm64 compiles "x +_64 (y >> shift)" into a single instruction if
      "shift" is a constant. The code generator expects that "shift" is a
      32 bit constant. however, TurboFan can also pass in a 64 bit constant,
      which caused a crash in the code generator.
      
      With this CL we cast the constant of TurboFan to an int in the
      instruction selector and thereby satisfy the assumption of the code
      generator. This should be correct since the code generator anyways cast
      the "shift" to an int5 or int6 eventually.
      
      R=v8-arm-ports@googlegroups.com
      BUG=v8:5923
      
      Review-Url: https://codereview.chromium.org/2669203005
      Cr-Commit-Position: refs/heads/master@{#43036}
      ed6e28d2
  31. 07 Feb, 2017 1 commit