1. 22 May, 2019 1 commit
  2. 18 May, 2019 1 commit
  3. 17 May, 2019 1 commit
  4. 15 May, 2019 1 commit
    • Tobias Tebbi's avatar
      Reland: [csa] verify skipped write-barriers in MemoryOptimizer · a19c3ffb
      Tobias Tebbi authored
      With very few exceptions, this verifies all skipped write-barriers in
      CSA and Torque, showing that the MemoryOptimizer together with some
      type information on the stored value are enough to avoid unsafe skipped
      write-barriers.
      
      Changes to CSA:
      SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
      MemoryOptimizer by default.
      Type information about the stored values (TNode<Smi>) is exploited to
      safely skip write barriers for stored Smi values.
      In some cases, the code is re-structured to make it easier to consume
      for the MemoryOptimizer (manual branch and load elimination).
      
      Changes to the MemoryOptimizer:
      Improve the MemoryOptimizer to remove write barriers:
      - When the store happens to a CSA-generated InnerAllocate, by ignoring
        Bitcasts and additions.
      - When the stored value is the HeapConstant of an immortal immovable root.
      - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
      - Fast C-calls are treated as non-allocating.
      - Runtime calls can be white-listed as non-allocating.
      
      Remaining missing cases:
      - C++-style iterator loops with inner pointers.
      - Inner allocates that are reloaded from a field where they were just stored
        (for example an elements backing store). Load elimination would fix that.
      - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
        We could handle that in Torque.
      - Double-aligned allocations, which are not lowered in the MemoryOptimizer
        but in CSA.
      
      Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
      can be handled by overload resolution (in Torque and C++).
      
      Reland Change: Support pointer compression operands.
      
      R=jarin@chromium.org
      TBR=mvstanton@chromium.org
      
      Bug: v8:7793
      Change-Id: I84e1831eb6bf9be14f36db3f8b485ee4fab6b22e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612904
      Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61522}
      a19c3ffb
  5. 09 May, 2019 2 commits
  6. 06 May, 2019 1 commit
  7. 03 May, 2019 1 commit
    • Johannes Henkel's avatar
      [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR). · 9d7c1947
      Johannes Henkel authored
      Keep the existing method for compatibility, by converting
      to json from CBOR using the inspector_protocol_encoding library,
      via a v8 specific interface library that directs routines for
      converting between strings and doubles to v8's implementations.
      
      This change also brings in the encoding.h / encoding.cc files from the
      upstream inspector_protocol project. The only modification here
      are the header guards, and the namespace. I will fix roll.py to
      make it so that we pick up future changes.
      
      third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      third_party/inspector_protocol/.clang-format is a copy of the upstream
      file. If we don't put this, we'll find ourselves auto-formatting the roll,
      which is annoying.
      
      This is a reland of
      https://chromium-review.googlesource.com/c/v8/v8/+/1590627 with the
      only modification in the DEPS file; this time I'm including
      third_party/inspector_protocol/encoding/encoding{.h,cc} in addition to
      the relative include there. Not sure why this is needed but I'm hoping
      it gets me past the presubmit which may resolve the include path
      relative to the V8 base (the ../../third_party is needed for when V8 is
      embedded into Chromium).
      
      Change-Id: Ic76b2b5faa7e1cbdceb15aff3f369e9a303e3e85
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593646Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61214}
      9d7c1947
  8. 02 May, 2019 2 commits
    • Johannes Henkel's avatar
      Revert "[DevTools] Add V8InspectorSession::state(), which returns binary (CBOR)." · c27c369a
      Johannes Henkel authored
      This reverts commit b7134d3a.
      
      Reason for revert: breaks presubmit
      
      Original change's description:
      > [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR).
      > 
      > Keep the existing method for compatibility, by converting
      > to json from CBOR using the inspector_protocol_encoding library,
      > via a v8 specific interface library that directs routines for
      > converting between strings and doubles to v8's implementations.
      > 
      > This change also brings in the encoding.h / encoding.cc files from the
      > upstream inspector_protocol project. The only modification here
      > are the header guards, and the namespace. I will fix roll.py to
      > make it so that we pick up future changes.
      > 
      > third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      > third_party/inspector_protocol/.clang-format is a copy of the upstream
      > file. If we don't put this, we'll find ourselves auto-formatting the roll,
      > which is annoying.
      > 
      > Change-Id: I20fa8759164e7a39f8a7c30e0d2a3f8a7e4be227
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1590627
      > Reviewed-by: Alexei Filippov <alph@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Commit-Queue: Johannes Henkel <johannes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#61187}
      
      TBR=dgozman@chromium.org,alph@chromium.org,caseq@chromium.org,johannes@chromium.org
      
      Change-Id: I67f297ef8454499036c94bf88e0d23657a579140
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1592130Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61189}
      c27c369a
    • Johannes Henkel's avatar
      [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR). · b7134d3a
      Johannes Henkel authored
      Keep the existing method for compatibility, by converting
      to json from CBOR using the inspector_protocol_encoding library,
      via a v8 specific interface library that directs routines for
      converting between strings and doubles to v8's implementations.
      
      This change also brings in the encoding.h / encoding.cc files from the
      upstream inspector_protocol project. The only modification here
      are the header guards, and the namespace. I will fix roll.py to
      make it so that we pick up future changes.
      
      third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      third_party/inspector_protocol/.clang-format is a copy of the upstream
      file. If we don't put this, we'll find ourselves auto-formatting the roll,
      which is annoying.
      
      Change-Id: I20fa8759164e7a39f8a7c30e0d2a3f8a7e4be227
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1590627Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61187}
      b7134d3a
  9. 30 Apr, 2019 1 commit
  10. 26 Apr, 2019 1 commit
    • Ross McIlroy's avatar
      Revert "[csa] verify skipped write-barriers in MemoryOptimizer" · dd6c9536
      Ross McIlroy authored
      This reverts commit da7322c0.
      
      Reason for revert: Breaking the pointer compression bots, e.g.:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20pointer%20compression/3047
      
      Original change's description:
      > [csa] verify skipped write-barriers in MemoryOptimizer
      > 
      > With very few exceptions, this verifies all skipped write-barriers in
      > CSA and Torque, showing that the MemoryOptimizer together with some
      > type information on the stored value are enough to avoid unsafe skipped
      > write-barriers.
      > 
      > Changes to CSA:
      > SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
      > MemoryOptimizer by default.
      > Type information about the stored values (TNode<Smi>) is exploited to
      > safely skip write barriers for stored Smi values.
      > In some cases, the code is re-structured to make it easier to consume
      > for the MemoryOptimizer (manual branch and load elimination).
      > 
      > Changes to the MemoryOptimizer:
      > Improve the MemoryOptimizer to remove write barriers:
      > - When the store happens to a CSA-generated InnerAllocate, by ignoring
      >   Bitcasts and additions.
      > - When the stored value is the HeapConstant of an immortal immovable root.
      > - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
      > - Fast C-calls are treated as non-allocating.
      > - Runtime calls can be white-listed as non-allocating.
      > 
      > Remaining missing cases:
      > - C++-style iterator loops with inner pointers.
      > - Inner allocates that are reloaded from a field where they were just stored
      >   (for example an elements backing store). Load elimination would fix that.
      > - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
      >   We could handle that in Torque.
      > - Double-aligned allocations, which are not lowered in the MemoryOptimizer
      >   but in CSA.
      > 
      > Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
      > can be handled by overload resolution (in Torque and C++).
      > 
      > R=​jarin@chromium.org
      > TBR=mvstanton@chromium.org
      > 
      > Change-Id: I0af9b710673f350e0fe81c2e59f37da93c024b7c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571414
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#61016}
      
      TBR=mvstanton@chromium.org,jarin@chromium.org,tebbi@chromium.org
      
      Change-Id: I36877cd6d08761726ef8dce8a3e3f2ce3eebe6cf
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1585732Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61038}
      dd6c9536
  11. 25 Apr, 2019 1 commit
    • Tobias Tebbi's avatar
      [csa] verify skipped write-barriers in MemoryOptimizer · da7322c0
      Tobias Tebbi authored
      With very few exceptions, this verifies all skipped write-barriers in
      CSA and Torque, showing that the MemoryOptimizer together with some
      type information on the stored value are enough to avoid unsafe skipped
      write-barriers.
      
      Changes to CSA:
      SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
      MemoryOptimizer by default.
      Type information about the stored values (TNode<Smi>) is exploited to
      safely skip write barriers for stored Smi values.
      In some cases, the code is re-structured to make it easier to consume
      for the MemoryOptimizer (manual branch and load elimination).
      
      Changes to the MemoryOptimizer:
      Improve the MemoryOptimizer to remove write barriers:
      - When the store happens to a CSA-generated InnerAllocate, by ignoring
        Bitcasts and additions.
      - When the stored value is the HeapConstant of an immortal immovable root.
      - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
      - Fast C-calls are treated as non-allocating.
      - Runtime calls can be white-listed as non-allocating.
      
      Remaining missing cases:
      - C++-style iterator loops with inner pointers.
      - Inner allocates that are reloaded from a field where they were just stored
        (for example an elements backing store). Load elimination would fix that.
      - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
        We could handle that in Torque.
      - Double-aligned allocations, which are not lowered in the MemoryOptimizer
        but in CSA.
      
      Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
      can be handled by overload resolution (in Torque and C++).
      
      R=jarin@chromium.org
      TBR=mvstanton@chromium.org
      
      Change-Id: I0af9b710673f350e0fe81c2e59f37da93c024b7c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571414
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61016}
      da7322c0
  12. 17 Apr, 2019 2 commits
  13. 16 Apr, 2019 1 commit
  14. 11 Apr, 2019 1 commit
  15. 05 Apr, 2019 1 commit
  16. 04 Apr, 2019 1 commit
    • Tobias Tebbi's avatar
      [torque] named arguments for constructors · e87e3b1f
      Tobias Tebbi authored
      This changes the syntax for constructing structs and classes to explicitly
      mention the fieldnames, similar to JavaScript object literals.
      The fields still have to be listed in the same order as in the struct/class
      declaration.
      As in Javascript, {foo: foo} can be abbreviated as {foo}.
      
      Example:
      
      macro NewJSArray(implicit context: Context)(
          map: Map, elements: FixedArrayBase): JSArray {
        return new JSArray{
          map,
          properties_or_hash: kEmptyFixedArray,
          elements,
          length: elements.length
        };
      }
      
      Drive-by cleanup: Make struct and class constructors follow the same pattern
                        in the parser and the AST.
      
      Bug: v8:9018 v8:7793
      Change-Id: I22ff7f68270e4f406aa80731a709d41ea52f52bb
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1551999Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarDaniel Clifford <danno@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60622}
      e87e3b1f
  17. 26 Mar, 2019 1 commit
  18. 13 Mar, 2019 1 commit
  19. 12 Mar, 2019 1 commit
  20. 11 Mar, 2019 3 commits
  21. 07 Mar, 2019 1 commit
  22. 01 Mar, 2019 1 commit
  23. 27 Feb, 2019 2 commits
  24. 18 Feb, 2019 2 commits
  25. 14 Feb, 2019 3 commits
  26. 13 Feb, 2019 2 commits
  27. 12 Feb, 2019 1 commit
  28. 09 Feb, 2019 1 commit
  29. 06 Feb, 2019 1 commit
  30. 04 Feb, 2019 1 commit