1. 06 Oct, 2017 2 commits
  2. 29 Sep, 2017 1 commit
  3. 14 Sep, 2017 1 commit
  4. 11 Sep, 2017 2 commits
  5. 07 Sep, 2017 1 commit
  6. 31 Aug, 2017 1 commit
  7. 30 Aug, 2017 3 commits
  8. 28 Aug, 2017 2 commits
  9. 23 Aug, 2017 2 commits
    • Georg Neis's avatar
      [cleanup] Move modules-related code into src/objects/. · 61e70076
      Georg Neis authored
      This moves Module and other module-related classes and definitions out
      of src/objects{.h,-inl.h,.cc} into src/objects/module{.h,-inl.h,.cc}.
      
      Also moves the contents of src/objects/module-info.h there.
      
      R=marja@chromium.org
      
      Bug: v8:1569, v8:5402
      Change-Id: I49064bb4a5c5a6f409274c287e06e8dda351d615
      Reviewed-on: https://chromium-review.googlesource.com/626818
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47540}
      61e70076
    • Georg Neis's avatar
      [modules] Fix bug in module initialization. · 0cd2ea7c
      Georg Neis authored
      The initialization code of all modules must have been run
      before running any module's main code. This should have been
      fixed quite a while ago as part of another CL but somehow
      wasn't.
      
      In the process of fixing it now, I'm also moving the initialization
      phase out of Evaluate into Instantiatiate. This corresponds more
      closely to the specification and avoids confusion.
      
      Bug: v8:1569
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I3ea5d6be0f5d371e6a4c641778c51762f1867dc8
      Reviewed-on: https://chromium-review.googlesource.com/620653Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47537}
      0cd2ea7c
  10. 21 Aug, 2017 2 commits
  11. 11 Aug, 2017 1 commit
  12. 01 Aug, 2017 2 commits
    • Yang Guo's avatar
      Remove cell visiting in object visitor. · 809c3d45
      Yang Guo authored
      Change-Id: Ida5c537fa94a376a134e60edce889b96b676a8f9
      Reviewed-on: https://chromium-review.googlesource.com/584874Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47039}
      809c3d45
    • 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
  13. 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
  14. 27 Jul, 2017 2 commits
  15. 25 Jul, 2017 2 commits
  16. 24 Jul, 2017 5 commits
    • Igor Sheludko's avatar
      Revert "[runtime] Make JSFunction::prototype_or_initial_map field optional." · 134cc94e
      Igor Sheludko authored
      This reverts commit 3d023952.
      
      Reason for revert: breaks gcc build
      
      Original change's description:
      > [runtime] Make JSFunction::prototype_or_initial_map field optional.
      > 
      > Functions that don't have prototype need to store neither prototype nor
      > initial map, so the |prototype_or_initial_map| field is not required for
      > such maps.
      > 
      > Bug: v8:6459
      > Change-Id: I4b3066bd6a4fed42c19f217bae82a8bce552bdca
      > Reviewed-on: https://chromium-review.googlesource.com/570250
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46840}
      
      TBR=jkummerow@chromium.org,jarin@chromium.org,ishell@chromium.org
      
      Change-Id: Ie9951c87b15c8bd365ed187d7f719b8f08dd0bb5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6459
      Reviewed-on: https://chromium-review.googlesource.com/583088Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46841}
      134cc94e
    • Igor Sheludko's avatar
      [runtime] Make JSFunction::prototype_or_initial_map field optional. · 3d023952
      Igor Sheludko authored
      Functions that don't have prototype need to store neither prototype nor
      initial map, so the |prototype_or_initial_map| field is not required for
      such maps.
      
      Bug: v8:6459
      Change-Id: I4b3066bd6a4fed42c19f217bae82a8bce552bdca
      Reviewed-on: https://chromium-review.googlesource.com/570250Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46840}
      3d023952
    • Yang Guo's avatar
      Revert "Introduce HASH_TABLE_TYPE instance type." · f4867154
      Yang Guo authored
      This reverts commit 990dd947.
      
      Reason for revert: <INSERT REASONING HERE>
      
      Original change's description:
      > Introduce HASH_TABLE_TYPE instance type.
      > 
      > This is so that we can distinguish hash tables by instance type. We can
      > then introduce maps for each kind of hash tables to further distinguish.
      > 
      > R=​mstarzinger@chromium.org
      > 
      > Bug: v8:6593
      > Change-Id: I1a532884758e571abdfe2e2743fc5ea611d12f7e
      > Reviewed-on: https://chromium-review.googlesource.com/581009
      > Commit-Queue: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46828}
      
      TBR=yangguo@chromium.org,mstarzinger@chromium.org
      
      Change-Id: Ia47d408e5cf47983940227b4cc445a704d7f8d19
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6593
      Reviewed-on: https://chromium-review.googlesource.com/581493Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46833}
      f4867154
    • Yang Guo's avatar
      Introduce HASH_TABLE_TYPE instance type. · 990dd947
      Yang Guo authored
      This is so that we can distinguish hash tables by instance type. We can
      then introduce maps for each kind of hash tables to further distinguish.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:6593
      Change-Id: I1a532884758e571abdfe2e2743fc5ea611d12f7e
      Reviewed-on: https://chromium-review.googlesource.com/581009
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46828}
      990dd947
    • Igor Sheludko's avatar
      Revert "Reland "[runtime] Add shortcuts for elements kinds transitions."" · 5520cae3
      Igor Sheludko authored
      This reverts commit 6e27386d.
      
      Reason for revert: There will be another much simpler and
      back-mergeable fix.
      
      Original change's description:
      > Reland "[runtime] Add shortcuts for elements kinds transitions."
      > 
      > This is a reland of b90e83f5
      > Original change's description:
      > > [runtime] Add shortcuts for elements kinds transitions.
      > >
      > > The shortcuts ensure that field type generalization is properly
      > > propagated in the transition graph.
      > >
      > > Bug: chromium:738763
      > > Change-Id: Id701a6f95ed6ea093c707fbe0bac228f1f856e9f
      > > Reviewed-on: https://chromium-review.googlesource.com/567992
      > > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#46622}
      > 
      > Bug: chromium:738763, chromium:742346, chromium:742381, chromium:745844
      > Change-Id: I93974e3906b2c7710bd525f15037a2dd97f263ad
      > Reviewed-on: https://chromium-review.googlesource.com/575227
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46759}
      
      TBR=ulan@chromium.org,jkummerow@chromium.org,ishell@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:738763, chromium:742346, chromium:742381, chromium:745844
      Change-Id: I203dc748c47db554e0a86d61f0e2b7b8b96f2370
      Reviewed-on: https://chromium-review.googlesource.com/581547
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46826}
      5520cae3
  17. 19 Jul, 2017 2 commits
  18. 18 Jul, 2017 1 commit
  19. 14 Jul, 2017 1 commit
  20. 13 Jul, 2017 2 commits
  21. 11 Jul, 2017 2 commits
  22. 10 Jul, 2017 2 commits