1. 24 Oct, 2017 1 commit
  2. 23 Oct, 2017 1 commit
  3. 20 Oct, 2017 1 commit
  4. 19 Oct, 2017 1 commit
  5. 13 Oct, 2017 2 commits
  6. 11 Oct, 2017 1 commit
  7. 06 Oct, 2017 2 commits
  8. 05 Oct, 2017 1 commit
  9. 28 Sep, 2017 1 commit
  10. 13 Sep, 2017 1 commit
  11. 21 Aug, 2017 1 commit
  12. 18 Aug, 2017 1 commit
    • Jakob Kummerow's avatar
      Cache fewer StoreIC-Transition handlers · a3ef2489
      Jakob Kummerow authored
      Many handlers are not used again, so we can improve the cache hit rate
      by caching fewer handlers. Specifically, in this CL, when a StoreIC
      miss causes a new map transition to be created, then the handler is not
      cached right away yet (it will be cached next time, when the transition
      exists already).
      
      Also, fix an embarrassing bug where growing a TransitionArray dropped
      cached handlers. That further improves the cache hit rate. ;-)
      
      Bug: chromium:752867, chromium:753819
      Change-Id: Id8db5ca1e780a5fe8fc61db7f20996e61c65a90e
      Reviewed-on: https://chromium-review.googlesource.com/619851Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47433}
      a3ef2489
  13. 11 Aug, 2017 1 commit
  14. 10 Aug, 2017 1 commit
    • Ulan Degenbaev's avatar
      [runtime] Do not clear prototype map descriptors. · d09f9c42
      Ulan Degenbaev authored
      Mutating the descriptor array and the layout descriptor of a map
      races with the concurrent marking. This patch simply transfers
      ownership of the descriptor array without mutating the map.
      
      Since the old map is not going to be used anymore and there are
      not transitions from the old map, this should be safe for trimming
      the descriptor arrays during GC.
      
      This patch also adds checks in IC code avoid caching of dummy
      transitions from the abandoned prototype map.
      
      Bug: chromium:752461
      Change-Id: I7b44ba7c369199bdb3ff48235226fe504c7eb4a5
      Reviewed-on: https://chromium-review.googlesource.com/602210
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47275}
      d09f9c42
  15. 09 Aug, 2017 4 commits
  16. 07 Aug, 2017 1 commit
    • Maya Lekova's avatar
      Revert "Reland "[builtins] Port getting property from Proxy to CSA"" · ceb55494
      Maya Lekova authored
      This reverts commit 15ef03cb.
      
      Reason for revert: Found the following bugs
      
      Bug: chromium:752846, chromium:752712, chromium:752850
      
      Original change's description:
      > Reland "[builtins] Port getting property from Proxy to CSA"
      > 
      > This reland is after fix in [heap] Delete wrong DCHECK.
      > It includes moving ProxyGetProperty to its own stub to reduce
      > binary size.
      > 
      > This is a reland of 47a97aa5
      > Original change's description:
      > > [builtins] Port getting property from Proxy to CSA
      > > 
      > > Bug: v8:6559, v8:6557
      > > Change-Id: If6c51f5483adb73ddd2495cede5d85e887a3c298
      > > Reviewed-on: https://chromium-review.googlesource.com/589212
      > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > > Commit-Queue: Maya Lekova <mslekova@google.com>
      > > Cr-Commit-Position: refs/heads/master@{#47113}
      > 
      > Bug: v8:6559, v8:6557
      > Change-Id: I76acd97ba1acb62b7e7983db1741441d997050f0
      > Reviewed-on: https://chromium-review.googlesource.com/600215
      > Commit-Queue: Maya Lekova <mslekova@google.com>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#47159}
      
      TBR=jkummerow@chromium.org,mstarzinger@chromium.org,franzih@chromium.org,jgruber@chromium.org,ishell@chromium.org,bmeurer@chromium.org,mslekova@google.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Change-Id: I51bef25a031b02cf4deab11282473acae57f1ed3
      Reviewed-on: https://chromium-review.googlesource.com/603708
      Commit-Queue: Maya Lekova <mslekova@google.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47200}
      ceb55494
  17. 04 Aug, 2017 1 commit
  18. 03 Aug, 2017 2 commits
  19. 01 Aug, 2017 1 commit
    • Benedikt Meurer's avatar
      [builtins] Speed-up Object.prototype.toString. · 31800120
      Benedikt Meurer authored
      The @@toStringTag lookup in Object.prototype.toString causes quite a
      lot of overhead and oftentimes dominates the builtin performance. These
      lookups are almost always negative, especially for primitive values,
      and Object.prototype.toString is often used to implement predicates
      (like in Node core or in AngularJS), so having a way to skip the
      negative lookup yields big performance gains.
      
      This CL introduces a "MayHaveInterestingSymbols" bit on every map,
      which says whether instances with this map may have an interesting
      symbol. Currently only @@toStringTag is considered an interesting
      symbol, but we can extend that in the future.
      
      In the Object.prototype.toString we can use the interesting symbols
      bit to do a quick check on the prototype chain to see if there are
      any maps that might have the @@toStringTag, and if not, we can just
      immediately return the result, which is very fast because it's derived
      from the instance type. This also avoids the ToObject conversions for
      primitive values, which is important, since this causes unnecessary
      GC traffic and in for example AngularJS, strings are also often probed
      via the Object.prototype.toString based predicates.
      
      This boosts Speedometer/AngularJS by over 3% and Speedometer overall
      by up to 1%. On the microbenchmark from the similar SpiderMonkey bug
      (https://bugzilla.mozilla.org/show_bug.cgi?id=1369042), we go from
      roughly 450ms to 70ms, which corresponds to a 6.5x improvement.
      
      ```
      function f() {
          var res = "";
          var a = [1, 2, 3];
          var toString = Object.prototype.toString;
          var t = new Date;
          for (var i = 0; i < 5000000; i++)
      	res = toString.call(a);
          print(new Date - t);
          return res;
      }
      f();
      ```
      
      The design document at https://goo.gl/e8CruQ has some additional
      data points.
      
      TBR=ulan@chromium.org
      
      Bug: v8:6654
      Change-Id: I31932cf41ecddad079d294e2c322a852af0ed244
      Reviewed-on: https://chromium-review.googlesource.com/593620
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47034}
      31800120
  20. 28 Jul, 2017 1 commit
    • Jakob Kummerow's avatar
      Refactor TransitionArray access · e567dd3a
      Jakob Kummerow authored
      in preparation for caching StoreIC-Transition handlers in there.
      This CL should not change behavior or performance.
      
      The TransitionArray class no longer serves a dual purpose; it is now
      simply the data structure serving that role. Further, it now supports
      storing transitioning handlers in its "target" slot, which in turn have
      a WeakCell pointing to the transition target (but this functionality
      is not being used yet).
      
      The interface for accessing a map's transitions, previously implemented
      as a set of static functions, is now handled by the TransitionsAccessor
      class. It distinguishes the following internal states:
      - kPrototypeInfo: map is a prototype map, will never cache any transitions.
      - kUninitialized: map can cache transitions, but doesn't have any.
      - kWeakCell: map caches a single transition, stored inline. Formerly known
                   as "IsSimpleTransition".
      - kFullTransitionArray: map uses a TransitionArray to store transitions.
      - kTuple3Handler, kFixedArrayHandler: to be used in the future for caching
                                            transitioning handlers.
      
      Change-Id: If2aa68390981f96f317b958445a6e0b935c2a14e
      Reviewed-on: https://chromium-review.googlesource.com/550118Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46981}
      e567dd3a
  21. 27 Jul, 2017 2 commits
  22. 24 Jul, 2017 4 commits
  23. 19 Jul, 2017 1 commit
  24. 14 Jul, 2017 1 commit
  25. 13 Jul, 2017 1 commit
  26. 11 Jul, 2017 1 commit
  27. 03 Jul, 2017 2 commits
  28. 30 Jun, 2017 1 commit
    • Mathias Bynens's avatar
      [elements] Rename FAST elements kinds · 26c00f4a
      Mathias Bynens authored
      The `FAST_` prefix doesn’t make much sense — they’re all just different cases
      with their own optimizations. Packedness being implicit (e.g. `FAST_ELEMENTS`
      vs. `FAST_HOLEY_ELEMENTS`) is not ideal, either.
      
      This patch renames the FAST elements kinds as follows:
      
      - e.g. FAST_ELEMENTS => PACKED_ELEMENTS
      - e.g. FAST_HOLEY_ELEMENTS => HOLEY_ELEMENTS
      
      The following exceptions are left intact, for lack of a better name:
      
      - FAST_SLOPPY_ARGUMENTS_ELEMENTS
      - SLOW_SLOPPY_ARGUMENTS_ELEMENTS
      - FAST_STRING_WRAPPER_ELEMENTS
      - SLOW_STRING_WRAPPER_ELEMENTS
      
      This makes it easier to reason about elements kinds, and less confusing to
      explain how they’re used.
      
      R=jkummerow@chromium.org, cbruni@chromium.org
      BUG=v8:6548
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ie7c6bee85583c3d84b730f7aebbd70c1efa38af9
      Reviewed-on: https://chromium-review.googlesource.com/556032Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46361}
      26c00f4a
  29. 29 Jun, 2017 1 commit