1. 21 Oct, 2019 1 commit
  2. 18 Oct, 2019 1 commit
  3. 17 Oct, 2019 2 commits
    • Santiago Aboy Solanes's avatar
      [ptr-compr] Implement the DecompressionOptimizer Reducer and its phase · ae97e885
      Santiago Aboy Solanes authored
      The DecompressionOptimizer aims to avoid adding the root in AnyTagged
      or TaggedPointer loads. For the TaggedSigned case, we already solve it
      in instruction selection.
      
      The new phase will run only when pointer compression is enabled. For
      the moment, it's also requires FLAG_turbo_decompression_elimination to
      be false. This latter flag is only temporary to test out the
      implementation.
      
      The phase needs to be run when Machine are present in the graph, i.e
      at the very end of the pipeline. Also, since this phase may change
      the load's MachineRepresentation from Tagged to Compressed, it's best
      to run it as late as possible in order to keep the phases that know
      about Compressed MachineRepresentation to a minimum.
      
      As an example, if we Load a Tagged value only to Store it back again
      (i.e Load -> Store nodes, with the Load being the Store's value) we
      don't need to fully decompress it since the Store will ignore the
      top bits.
      
      Bug: v8:7703
      Change-Id: I6b4aec203ab8cbb540b2513cabb1e2a5691ce938
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1859615
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64358}
      ae97e885
    • Gus Caplan's avatar
      [Torque] port Reflect.has to Torque · adb97b35
      Gus Caplan authored
      Change-Id: I828450704fdb74bc5ced0f8f85a0546672b4ff9e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1864571Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64342}
      adb97b35
  4. 16 Oct, 2019 2 commits
  5. 15 Oct, 2019 3 commits
  6. 11 Oct, 2019 5 commits
    • Seth Brenith's avatar
      [torque] Generate instance types · 8c7ae314
      Seth Brenith authored
      Design doc:
      https://docs.google.com/document/d/1ZU6rCvF2YHBGMLujWqqaxlPsjFfjKDE9C3-EugfdlAE/edit
      
      Changes from the design doc:
      - Changed to use 'class' declarations rather than 'type' declarations
        for things that need instance types but whose layout is not known to
        Torque. These declarations end with a semicolon rather than having a
        full set of methods and fields surrounded by {}. If the class's name
        should not be treated as a class name in generated output (because
        it's actually a template, or doesn't exist at all), we use the
        standard 'generates' clause to declare the most appropriate C++ class.
      - Removed @instanceTypeName.
      - @highestInstanceType became @highestInstanceTypeWithinParentClassRange
        to indicate a semantic change: it no longer denotes the highest
        instance type globally, but only within the range of values for its
        immediate parent class. This lets us use it for Oddball, which is
        expected to be the highest primitive type.
      - Added new abstract classes JSCustomElementsObject and JSSpecialObject
        to help with some range checks.
      - Added @lowestInstanceTypeWithinParentClassRange so we can move the new
        classes JSCustomElementsObject and JSSpecialObject to the beginning of
        the JSObject range. This seems like the least-brittle way to establish
        ranges that also include JSProxy (and these ranges are verified with
        static assertions in instance-type.h).
      - Renamed @instanceTypeValue to @apiExposedInstanceTypeValue.
      - Renamed @instanceTypeFlags to @reserveBitsInInstanceType.
      
      This change introduces the new annotations and adds the ability for
      Torque to assign instance types that satisfy those annotations. Torque
      now emits two new macros:
      - TORQUE_ASSIGNED_INSTANCE_TYPES, which is used to define the
        InstanceType enumeration
      - TORQUE_ASSIGNED_INSTANCE_TYPE_LIST, which replaces the non-String
        parts of INSTANCE_TYPE_LIST
      
      The design document mentions a couple of other macro lists that could
      easily be replaced, but I'd like to defer those to a subsequent checkin
      because this one is already pretty large.
      
      Bug: v8:7793
      Change-Id: Ie71d93a9d5b610e62be0ffa3bb36180c3357a6e8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1757094
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64258}
      8c7ae314
    • Igor Sheludko's avatar
      Revert "[ptr-compr][x64] Temporarily enable pointer compression on x64" · 4391203d
      Igor Sheludko authored
      This reverts commit d471ec9f.
      
      Reason for revert: Unexpected redness on non-ptr-compr bots.
      
      Original change's description:
      > [ptr-compr][x64] Temporarily enable pointer compression on x64
      >
      > Bug: v8:7703
      > Change-Id: Id7858d2d7324670d01836f7acbb952cd99c4a8b7
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng,v8_linux64_tsan_rel
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_cfi_rel_ng
      > Cq-Include-Trybots: luci.chromium.try:fuchsia_x64,linux-rel,mac-rel
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1849522
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64248}
      
      Tbr: verwaest@chromium.org,machenbach@chromium.org
      No-Tree-Checks: true
      Bug: v8:7703
      Change-Id: I841d9722642f75f1277aedd70c4476aee041d946
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1857218Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64251}
      4391203d
    • Igor Sheludko's avatar
      [ptr-compr][x64] Temporarily enable pointer compression on x64 · d471ec9f
      Igor Sheludko authored
      Bug: v8:7703
      Change-Id: Id7858d2d7324670d01836f7acbb952cd99c4a8b7
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng,v8_linux64_tsan_rel
      Cq-Include-Trybots: luci.v8.try:v8_linux64_cfi_rel_ng
      Cq-Include-Trybots: luci.chromium.try:fuchsia_x64,linux-rel,mac-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1849522
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64248}
      d471ec9f
    • Georg Neis's avatar
      Revert "Disable --instruction-scheduling for mksnapshot" · 775e97d8
      Georg Neis authored
      This reverts commit 12b22b51.
      
      Reason for revert: Experiment finished.
      
      Original change's description:
      > Disable --instruction-scheduling for mksnapshot
      > 
      > This is an experiment to see the memory/performance impact.
      > 
      > Bug: v8:9775
      > Change-Id: I2ae61ae8bb5c6c1c55436e96c4b2d8201cbf4739
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1832177
      > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64062}
      
      TBR=mvstanton@chromium.org,neis@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9775
      Change-Id: Ife556af5f8c09c25f20756a9b2ac940cb74359e2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1855983Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64239}
      775e97d8
    • Jakob Kummerow's avatar
      [elements.cc] Introduce InternalIndex class · 7aa91da5
      Jakob Kummerow authored
      instead of plain uint32_t as entry. This provides some type safety,
      because the compiler will check that we are not mixing up indexes
      and entries. It also paves the way to consistently using size_t for
      TypedArray indexes.
      
      Bug: v8:4153
      Change-Id: Ie0eb63693c871efda9860d3d288896819868b66a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1852765Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64236}
      7aa91da5
  7. 08 Oct, 2019 1 commit
  8. 07 Oct, 2019 4 commits
  9. 02 Oct, 2019 1 commit
    • Jakob Gruber's avatar
      Remove JS natives support, step 1 · 28a9dc2b
      Jakob Gruber authored
      The natives blob is deprecated and will be removed in the next
      release.
      
      This commit does two things, 1. it disables the v8_extra_library_files
      gn argument which will make building natives_blob.bin through gn
      impossible; 2. it marks API functions associated with the natives blob
      as V8_DEPRECATE_SOON.
      
      Embedders should remove any uses of SetNativesDataBlob and replace all
      calls to
      
       InitializeExternalStartupData(const char*, const char*)
      
      with the new function
      
       InitializeExternalStartupDataFromFile(const char*)
      
      Step 2 is to mark API functions as V8_DEPRECATED.
      Step 3, in the next V8 release, is to remove these functions and all
      other natives support in V8.
      
      Bug: v8:7624
      Change-Id: I745e96c60204a9b94d9240be65dd59bb9bdd0699
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1824944
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64080}
      28a9dc2b
  10. 01 Oct, 2019 2 commits
    • Jakob Gruber's avatar
      Reland "[regexp] Bytecode peephole optimization" · 282a74c7
      Jakob Gruber authored
      This is a reland of 66129430
      
      Fixed: Unaligned reads, unspecified evaluation order.
      
      Original change's description:
      > [regexp] Bytecode peephole optimization
      >
      > Bytecodes used by the regular expression interpreter often occur in
      > specific sequences. The number of dispatches in the interpreter can be
      > reduced if those sequences are combined into a single bytecode.
      >
      > This CL adds a peephole optimization pass for regexp bytecodes.
      > This pass checks the generated bytecode for pre-defined sequences that
      > can be merged into a single bytecode.
      >
      > With the currently implemented bytecode sequences a speedup of 1.12x on
      > regex-dna and octane-regexp is achieved.
      >
      > Bug: v8:9330
      > Change-Id: I827f93273a5848e5963c7e3329daeb898995d151
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1813743
      > Commit-Queue: Patrick Thier <pthier@google.com>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63992}
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux_gcc_rel
      Bug: v8:9330,chromium:1008502,chromium:1008631
      Change-Id: Ib9fc395b6809aa1debdb54d9fba5b7f09a235e5b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1828917Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64064}
      282a74c7
    • Georg Neis's avatar
      Disable --instruction-scheduling for mksnapshot · 12b22b51
      Georg Neis authored
      This is an experiment to see the memory/performance impact.
      
      Bug: v8:9775
      Change-Id: I2ae61ae8bb5c6c1c55436e96c4b2d8201cbf4739
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1832177Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64062}
      12b22b51
  11. 30 Sep, 2019 1 commit
  12. 27 Sep, 2019 3 commits
    • Mythri A's avatar
      Reland "[compiler] Cache OSR optimized code" · fcff2437
      Mythri A authored
      This is a reland of cfb10028
      with a fix for failures in lite mode.
      
      Original change's description:
      > [compiler] Cache OSR optimized code
      >
      > With lazy feedback allocation, for functions that get OSRed we may
      > not have feedback for the initial part of the functions since feedback
      > vectors might be allocated after the function started executing. Hence
      > we would not be able to optimize the function on the next call. This
      > means we may have to OSR twice before we actually optimize function.
      > This cl introduces OSR cache, so we could reuse the optimized code. One
      > side effect of this cl is that the OSRed code won't be function context
      > specialized anymore.
      >
      > Bug: chromium:987523
      > Change-Id: Ic1e2abca85ccfa0a66a0fa83f7247392cc1e7cb2
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1796329
      > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64014}
      
      Bug: chromium:987523
      Change-Id: I9c782242b07b24d15247533ab4ee044334b429ff
      TBR: rmcilroy@chromium.org
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1826898
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64023}
      fcff2437
    • Michael Achenbach's avatar
      Revert "[compiler] Cache OSR optimized code" · f8a08223
      Michael Achenbach authored
      This reverts commit cfb10028.
      
      Reason for revert:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm%20-%20sim%20-%20lite/6483
      
      Original change's description:
      > [compiler] Cache OSR optimized code
      > 
      > With lazy feedback allocation, for functions that get OSRed we may
      > not have feedback for the initial part of the functions since feedback
      > vectors might be allocated after the function started executing. Hence
      > we would not be able to optimize the function on the next call. This
      > means we may have to OSR twice before we actually optimize function.
      > This cl introduces OSR cache, so we could reuse the optimized code. One
      > side effect of this cl is that the OSRed code won't be function context
      > specialized anymore.
      > 
      > Bug: chromium:987523
      > Change-Id: Ic1e2abca85ccfa0a66a0fa83f7247392cc1e7cb2
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1796329
      > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64014}
      
      TBR=rmcilroy@chromium.org,neis@chromium.org,mythria@chromium.org
      
      Change-Id: Ib3692e7570bed5d3e88ca8a0247b185d70497a04
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:987523
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1826668Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64015}
      f8a08223
    • Mythri A's avatar
      [compiler] Cache OSR optimized code · cfb10028
      Mythri A authored
      With lazy feedback allocation, for functions that get OSRed we may
      not have feedback for the initial part of the functions since feedback
      vectors might be allocated after the function started executing. Hence
      we would not be able to optimize the function on the next call. This
      means we may have to OSR twice before we actually optimize function.
      This cl introduces OSR cache, so we could reuse the optimized code. One
      side effect of this cl is that the OSRed code won't be function context
      specialized anymore.
      
      Bug: chromium:987523
      Change-Id: Ic1e2abca85ccfa0a66a0fa83f7247392cc1e7cb2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1796329
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64014}
      cfb10028
  13. 26 Sep, 2019 3 commits
  14. 25 Sep, 2019 3 commits
  15. 24 Sep, 2019 1 commit
  16. 23 Sep, 2019 2 commits
  17. 19 Sep, 2019 1 commit
    • Jakob Gruber's avatar
      [build] Define V8_TARGET_OS_ and consider it in x64 codegen · 99d31b43
      Jakob Gruber authored
      This CL allows us to distinguish between the host- and target OS. The
      host OS is defined by V8_OS_ macros (e.g. V8_OS_WIN). The target OS is
      defined by V8_TARGET_OS_ macros (e.g. V8_TARGET_OS_WIN).
      
      V8_TARGET_OS_ macros are defined by gn, based on the `target_os` gn
      variable. If a V8_TARGET_OS_ is set, we also define V8_HAVE_TARGET_OS
      (this determines fall-back behavior in V8; if it is not defined, we set
      V8_TARGET_OS_ to equal the equivalent V8_OS_ define).
      
      Besides adding the defines, this CL also adds logic to consider the
      target OS in codegen. Specifically, x64 builds now look at the
      V8_TARGET_OS_WIN define instead of V8_OS_WIN or _WIN64. This
      effectively makes cross-compilation to x64 Windows in mksnapshot
      possible.
      
      In future work, we could add similar support for cross-compiling to
      other platforms such as ia32 Windows.
      
      Bug: v8:9736,chromium:803591
      Change-Id: I689f3de8c206b743c4bef703f5ade0bba32ce995
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1809374Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63892}
      99d31b43
  18. 17 Sep, 2019 2 commits
  19. 16 Sep, 2019 1 commit
  20. 12 Sep, 2019 1 commit