1. 22 May, 2019 1 commit
  2. 20 May, 2019 2 commits
  3. 17 May, 2019 2 commits
  4. 16 May, 2019 2 commits
  5. 15 May, 2019 1 commit
  6. 13 May, 2019 1 commit
  7. 10 May, 2019 1 commit
  8. 07 May, 2019 1 commit
  9. 27 Apr, 2019 1 commit
  10. 26 Apr, 2019 1 commit
  11. 18 Apr, 2019 1 commit
  12. 17 Apr, 2019 1 commit
  13. 16 Apr, 2019 1 commit
  14. 12 Apr, 2019 3 commits
    • Santiago Aboy Solanes's avatar
      [Turbofan][ptr-compr] Change native context specialisation for Compressed (Any) · 20a93efe
      Santiago Aboy Solanes authored
      This CL can be used as a base for specialising CompressedSigned and
      CompressedPointer.
      
      B
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng,v8_linux64_arm64_pointer_compression_rel_ng
      Bug: v8:8977, v8:7703
      Change-Id: I43c8e7f57021ac506822aba5bbd4bdf6cc3159ba
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543731
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60827}
      20a93efe
    • Benedikt Meurer's avatar
      [map] Support in-place field representation changes. · f11ba854
      Benedikt Meurer authored
      This adds a new flag --modify-field-representation-inplace (enabled by
      default), which lets the runtime perform field representation changes
      for Smi to Tagged or for HeapObject to Tagged in-place instead of
      creating new maps and marking the previous map tree as deprecated.
      
      That means we create (a lot) fewer Maps and DescriptorArrays in the
      beginning and also need to self-heal fewer objects later (migrating
      off the deprecated maps). In TurboFan we just take the "field owner
      dependency" whenever we use the field representation, which is very
      similar to what we already do for the field types. That means if we
      change the representation of a field that we used in optimized code,
      we will simply deoptimize that code and have TurboFan potentially
      later optimize it again with the new field representation.
      
      On the Speedometer2/ElmJS-TodoMVC test, this reduces the total execution
      time from around 415ms to around 352ms, which corresponds to a **15%**
      improvement. The overall Speedometer2 score improves from around 74.1
      to around 78.3 (on local runs with content_shell), corresponding to a
      **5.6%** improvement here. :tada:
      
      On the CNN desktop browsing story, it seems that we reduce map space
      utilization/fragmentation by about 4-5%. But since we allocate a lot
      less (fewer Maps and DescriptorArrays) we also significantly change
      the GC timing, which heavily influences the results here. So take this
      with a grain of salt. :shrug:
      
      Note: For Double fields, this doesn't change anything, meaning they
      still create new maps and deprecate the previous map trees.
      
      Bug: v8:8749, v8:8865, v8:9114
      Change-Id: Ibd70efcb59be982863905663dbfaa89aa5b31e14
      Cq-Include-Trybots: luci.chromium.try:linux-rel,win7-rel
      Doc: http://bit.ly/v8-in-place-field-representation-changes
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1565891
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60822}
      f11ba854
    • Michael Hablich's avatar
      Revert "[map] Support in-place field representation changes." · 48efe388
      Michael Hablich authored
      This reverts commit 1416d5a5.
      
      Reason for revert: blocks roll https://chromium-review.googlesource.com/c/chromium/src/+/1564550
      
      Original change's description:
      > [map] Support in-place field representation changes.
      > 
      > This adds a new flag --modify-field-representation-inplace (enabled by
      > default), which lets the runtime perform field representation changes
      > for Smi to Tagged or for HeapObject to Tagged in-place instead of
      > creating new maps and marking the previous map tree as deprecated.
      > 
      > That means we create (a lot) fewer Maps and DescriptorArrays in the
      > beginning and also need to self-heal fewer objects later (migrating
      > off the deprecated maps). In TurboFan we just take the "field owner
      > dependency" whenever we use the field representation, which is very
      > similar to what we already do for the field types. That means if we
      > change the representation of a field that we used in optimized code,
      > we will simply deoptimize that code and have TurboFan potentially
      > later optimize it again with the new field representation.
      > 
      > On the Speedometer2/ElmJS-TodoMVC test, this reduces the total execution
      > time from around 415ms to around 352ms, which corresponds to a **15%**
      > improvement. The overall Speedometer2 score improves from around 74.1
      > to around 78.3 (on local runs with content_shell), corresponding to a
      > **5.6%** improvement here. :tada:
      > 
      > On the CNN desktop browsing story, it seems that we reduce map space
      > utilization/fragmentation by about 4-5%. But since we allocate a lot
      > less (fewer Maps and DescriptorArrays) we also significantly change
      > the GC timing, which heavily influences the results here. So take this
      > with a grain of salt. :shrug:‍♂️
      > 
      > Note: For Double fields, this doesn't change anything, meaning they
      > still create new maps and deprecate the previous map trees.
      > 
      > Bug: v8:8749, v8:8865, v8:9114
      > Change-Id: I694a53f87ae5caeb868fd98a21809b66d4297d35
      > Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      > Doc: http://bit.ly/v8-in-place-field-representation-changes
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1561132
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#60764}
      
      TBR=jarin@chromium.org,neis@chromium.org,ishell@chromium.org,bmeurer@chromium.org,verwaest@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:8749, v8:8865, v8:9114
      Change-Id: I666975d08d51bbe7ab4faec9428b9a1f88e9b322
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1564208Reviewed-by: 's avatarMichael Hablich <hablich@chromium.org>
      Commit-Queue: Michael Hablich <hablich@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60807}
      48efe388
  15. 11 Apr, 2019 1 commit
    • Benedikt Meurer's avatar
      [map] Support in-place field representation changes. · 1416d5a5
      Benedikt Meurer authored
      This adds a new flag --modify-field-representation-inplace (enabled by
      default), which lets the runtime perform field representation changes
      for Smi to Tagged or for HeapObject to Tagged in-place instead of
      creating new maps and marking the previous map tree as deprecated.
      
      That means we create (a lot) fewer Maps and DescriptorArrays in the
      beginning and also need to self-heal fewer objects later (migrating
      off the deprecated maps). In TurboFan we just take the "field owner
      dependency" whenever we use the field representation, which is very
      similar to what we already do for the field types. That means if we
      change the representation of a field that we used in optimized code,
      we will simply deoptimize that code and have TurboFan potentially
      later optimize it again with the new field representation.
      
      On the Speedometer2/ElmJS-TodoMVC test, this reduces the total execution
      time from around 415ms to around 352ms, which corresponds to a **15%**
      improvement. The overall Speedometer2 score improves from around 74.1
      to around 78.3 (on local runs with content_shell), corresponding to a
      **5.6%** improvement here. :tada:
      
      On the CNN desktop browsing story, it seems that we reduce map space
      utilization/fragmentation by about 4-5%. But since we allocate a lot
      less (fewer Maps and DescriptorArrays) we also significantly change
      the GC timing, which heavily influences the results here. So take this
      with a grain of salt. :shrug:‍♂️
      
      Note: For Double fields, this doesn't change anything, meaning they
      still create new maps and deprecate the previous map trees.
      
      Bug: v8:8749, v8:8865, v8:9114
      Change-Id: I694a53f87ae5caeb868fd98a21809b66d4297d35
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Doc: http://bit.ly/v8-in-place-field-representation-changes
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1561132
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60764}
      1416d5a5
  16. 10 Apr, 2019 2 commits
  17. 03 Apr, 2019 1 commit
  18. 14 Mar, 2019 1 commit
    • Georg Neis's avatar
      [turbofan] Preprocess feedback for global accesses (partially) · 04bb707e
      Georg Neis authored
      Main changes:
      - Rename ProcessedFeedback to ElementAccessFeedback and introduce a base class
        with the old name ProcessedFeedback.
      - Introduce another kind of ProcessedFeedback, namely GlobalAccessFeedback for
        the LoadGlobal/StoreGlobal IC. It's either a PropertyCell or a script context
        slot.
      - Produce such processed feedback in the serializer, when visiting LdaGlobal and
        similar bytecodes.
      - Consume it, and disallow heap access, in JSNativeContextSpecialization's
        ReduceJSLoadGlobal and ReduceJSStoreGlobal (for --concurrent-inlining).
      
      Minor changes:
      - Introduce a FeedbackSource class (pair of FeedbackVector and FeedbackSlot)
        that is used as the key of the processed feedback hash table. We already have
        two similar classes, FeedbackNexus and VectorSlotPair, but both are unsuitable
        for technical reasons (e.g. FeedbackNexus construction accesses the heap).
        Eventually we should remove VectorSlotPair.
      - Processed feedback is now returned as a pointer, which is nullptr if the
        original feedback wasn't interesting (e.g. megamorphic).
      
      The title says "partially" because the CL doesn't yet take into account named
      accesses where the receiver happens to be the global proxy.
      
      Bug: v8:7790
      Change-Id: I4404d98636b91a8f2d5667115944bae4773a4770
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1518184
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60240}
      04bb707e
  19. 07 Mar, 2019 1 commit
  20. 06 Mar, 2019 1 commit
    • Georg Neis's avatar
      [turbofan] Don't access heap in ReduceElementAccess · 4d39e342
      Georg Neis authored
      This CL builds on top of feedback preprocessing. It brokerizes
      all parts of element access reduction and disallows heap access there
      (except for debug tracing).
      
      To make this work without breaking tests (when concurrent inlining is
      enabled):
      - We don't inline functions that weren't serialized for compilation.
      - We don't optimize for constant typed-array receivers when the typed
        array wasn't serialized.
      
      This means that from now on --concurrent-inlining (and thus --future)
      may result in less optimization than the default configuration.
      
      Bug: v8:7790
      Change-Id: I22685258b7d841fc9183bf99775d3f09cd272927
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1495556
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60061}
      4d39e342
  21. 01 Mar, 2019 1 commit
    • Matt Gardner's avatar
      Reland "Optimize `in` operator" · 803ad324
      Matt Gardner authored
      The original was reverted for breaking webkit layout tests:
      https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/30270
      
      It also caused the following clusterfuzz failures:
      
      chromium:935832
      This was a correctness bug due to not properly handling the case of arrays with prototypes other
      than Array.prototype. Accesses that were TheHole were not being handled property, both in bounds
      holes in holey arrays and out of bounds on either holey or packed arrays. Handling was incorrect
      both in access-assembler and in Turbofan.
      
      chromium:935932
      This bug was that there was no handling for Has checks on the global object. Turbofan was emitting
      code for a store (the 'else' condition on 'access_mode == AccessMode::kLoad'). It hit a DCHECK in
      debug builds but in release could show up in different places. This is the bug that caused the
      webkit layout test failure that led to the revert.
      
      Both bugs are fixed by in CL, and tests are added for those cases.
      
      Bug: v8:8733, chromium:935932, chromium:935832
      Change-Id: Iba0dfcfce6e15d2c0815a7670ece67bc13ba1925
      Reviewed-on: https://chromium-review.googlesource.com/c/1493132Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Matt Gardner <magardn@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#59958}
      803ad324
  22. 27 Feb, 2019 1 commit
  23. 26 Feb, 2019 2 commits
  24. 25 Feb, 2019 1 commit
  25. 21 Feb, 2019 1 commit
  26. 14 Feb, 2019 1 commit
  27. 13 Feb, 2019 2 commits
  28. 11 Feb, 2019 2 commits
  29. 08 Feb, 2019 1 commit
  30. 06 Feb, 2019 1 commit
  31. 14 Jan, 2019 1 commit