1. 10 Feb, 2020 1 commit
  2. 04 Nov, 2019 1 commit
    • Dan Elphick's avatar
      Reland "Reland: [builtins] Move non-JS linkage builtins code objects into RO_SPACE" · 352bbb12
      Dan Elphick authored
      This is a reland of 855591a5
      
      Fixes break in builds that verify ReadOnlyHeap by relaxing the requirement for
      Code objects to be in CODE_SPACE in PagedSpaceObjectIterator::FromCurrentPage.
      
      Original change's description:
      > Reland: [builtins] Move non-JS linkage builtins code objects into RO_SPACE
      >
      > Reland of https://chromium-review.googlesource.com/c/v8/v8/+/1795358.
      >
      > [builtins] Move non-JS linkage builtins code objects into RO_SPACE
      >
      > Creates an allow-list of builtins that can still go in code_space
      > including all TFJ builtins and a small manual list that should be pared
      > down in the future.
      >
      > For builtins that go in RO_SPACE a Code object is created that contains an
      > immediate trap instruction. Generally these Code objects are still no
      > smaller than CODE_SPACE Code objects because of the Code object alignment
      > requirements. This will hopefully be addressed in a follow-up CL either by
      > relaxing them or removing the instruction stream completely.
      >
      > In the snapshot, this reduces code_space from ~152k to ~40k (-112k) and
      > increases by the same amount.
      >
      > Change-Id: I76661c35c7ea5866c1fb16e87e87122b3e3ca0ce
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893336
      > Commit-Queue: Dan Elphick <delphick@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64700}
      
      Change-Id: I4eeb7dab3027b42fa58c5dfb2bad9873e9fff250
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893192
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64728}
      352bbb12
  3. 31 Oct, 2019 2 commits
  4. 21 Oct, 2019 1 commit
  5. 18 Oct, 2019 2 commits
    • Sathya Gunasekaran's avatar
      Revert "[builtins] Move non-JS linkage builtins code objects into RO_SPACE" · f1ebde88
      Sathya Gunasekaran authored
      This reverts commit 83f8464f.
      
      Reason for revert: speculative revert for blink linux failure
      https://ci.chromium.org/p/v8/builders/ci/V8%20Blink%20Linux/1272
      
      Original change's description:
      > [builtins] Move non-JS linkage builtins code objects into RO_SPACE
      > 
      > Creates an allow-list of builtins that can still go in code_space
      > including all TFJ builtins and a small manual list that should be pared
      > down in the future.
      > 
      > For builtins that go in RO_SPACE a Code object is created that contains
      > no code at all (shrinking its size from 96 bytes to 64 bytes on x64),
      > but is there to allow the runtime to continue to work since it expects
      > a Code object.
      > 
      > This reduces code_space from ~152k to ~40k (-112k) and increases
      > read_only_space from 33k to 108k (+75k) in the snapshot.
      > 
      > Bug: v8:7464, v8:9821, v8:9338, v8:8127
      > Change-Id: Icc8bfc722bb267a2bcc17e2f1e27bef7f02f2376
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1795358
      > Commit-Queue: Dan Elphick <delphick@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64377}
      
      TBR=mstarzinger@chromium.org,jgruber@chromium.org,delphick@chromium.org
      
      Change-Id: I4cf38e9370280acdd2de718ca527776ebc509003
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7464, v8:9821, v8:9338, v8:8127
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1868621Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64383}
      f1ebde88
    • Dan Elphick's avatar
      [builtins] Move non-JS linkage builtins code objects into RO_SPACE · 83f8464f
      Dan Elphick authored
      Creates an allow-list of builtins that can still go in code_space
      including all TFJ builtins and a small manual list that should be pared
      down in the future.
      
      For builtins that go in RO_SPACE a Code object is created that contains
      no code at all (shrinking its size from 96 bytes to 64 bytes on x64),
      but is there to allow the runtime to continue to work since it expects
      a Code object.
      
      This reduces code_space from ~152k to ~40k (-112k) and increases
      read_only_space from 33k to 108k (+75k) in the snapshot.
      
      Bug: v8:7464, v8:9821, v8:9338, v8:8127
      Change-Id: Icc8bfc722bb267a2bcc17e2f1e27bef7f02f2376
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1795358
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64377}
      83f8464f
  6. 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
  7. 13 Sep, 2019 1 commit
  8. 29 Aug, 2019 1 commit
  9. 13 Jun, 2019 1 commit
  10. 27 May, 2019 1 commit
  11. 24 May, 2019 1 commit
  12. 21 May, 2019 1 commit
  13. 02 May, 2019 1 commit
  14. 08 Mar, 2019 1 commit
  15. 17 Jan, 2019 2 commits
  16. 26 Dec, 2018 1 commit
  17. 21 Dec, 2018 1 commit
  18. 17 Dec, 2018 4 commits
    • Jakob Gruber's avatar
      [nojit] Add a kCallBuiltinPointer call kind · f323a5f4
      Jakob Gruber authored
      Currently, Torque's builtin pointers store a Code target underneath and
      callsites generate a kArchCallCodeObject opcode. When embedded builtins
      are enabled, the call thus first calls the on-heap trampoline, which
      finally jumps to the target off-heap builtin code.
      
      This will no longer be possible in jitless mode, since on-heap code must
      not be executable.
      
      As a step towards changing the way builtin pointers are called
      (function pointers will hold the builtin index as a Smi, and callsites
      look up the off-heap target address and jump there), this CL adds a
      dedicated opcode for builtin pointer calls to the compiler pipeline.
      
      The calling mechanism itself is unchanged, changes there will happen
      in a follow-up.
      
      Drive-by: rename 'FunctionPointer' in torque/ to 'BuiltinPointer'.
      
      Bug: v8:7777
      Change-Id: Ic999a1cd7c3172425dd4a1513ae2f50c774faddb
      Reviewed-on: https://chromium-review.googlesource.com/c/1378175Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58281}
      f323a5f4
    • Sigurd Schneider's avatar
      Reland "[assembler] Split out CPUFeatures into its own file" · 01b0afd5
      Sigurd Schneider authored
      This is a reland of 3ad101f5
      
      Original change's description:
      > [assembler] Split out CPUFeatures into its own file
      >
      > This reduces the preprocessor expanded source size by 84,675 LoC:
      >
      > gen         (   20 files):    71,349 to    1,523,934 (   21x)
      > src         (  624 files):   367,410 to   53,253,894 (  145x)
      > test        (  392 files):   490,503 to   37,436,176 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1520 files): 1,183,031 to  102,736,424 (   87x)
      >
      > to
      >
      > gen         (   20 files):    71,349 to    1,523,794 (   21x)
      > src         (  624 files):   367,411 to   53,186,896 (  145x)
      > test        (  392 files):   490,504 to   37,418,639 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1520 files): 1,183,033 to  102,651,749 (   87x)
      >
      >
      > Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b
      > Reviewed-on: https://chromium-review.googlesource.com/c/1291471
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58266}
      
      TBR=marja@chromium.org,clemensh@chromium.org,ulan@chromium.org
      
      Change-Id: I5b857666508b1c80dcadd0b470aada37dd49077e
      Reviewed-on: https://chromium-review.googlesource.com/c/1379872Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58278}
      01b0afd5
    • Maya Lekova's avatar
      Revert "[assembler] Split out CPUFeatures into its own file" · 316b152a
      Maya Lekova authored
      This reverts commit 3ad101f5.
      
      Reason for revert: Broken Android Arm64 debug builder - https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Android%20Arm64%20-%20debug%20builder/3089
      
      Original change's description:
      > [assembler] Split out CPUFeatures into its own file
      > 
      > This reduces the preprocessor expanded source size by 84,675 LoC:
      > 
      > gen         (   20 files):    71,349 to    1,523,934 (   21x)
      > src         (  624 files):   367,410 to   53,253,894 (  145x)
      > test        (  392 files):   490,503 to   37,436,176 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1520 files): 1,183,031 to  102,736,424 (   87x)
      > 
      > to
      > 
      > gen         (   20 files):    71,349 to    1,523,794 (   21x)
      > src         (  624 files):   367,411 to   53,186,896 (  145x)
      > test        (  392 files):   490,504 to   37,418,639 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1520 files): 1,183,033 to  102,651,749 (   87x)
      > 
      > 
      > Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b
      > Reviewed-on: https://chromium-review.googlesource.com/c/1291471
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58266}
      
      TBR=ulan@chromium.org,marja@chromium.org,sigurds@chromium.org,clemensh@chromium.org
      
      Change-Id: I111f9bbef9e66cd1ee7f4206b6af1097f7c50e66
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/1379933Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58268}
      316b152a
    • Sigurd Schneider's avatar
      [assembler] Split out CPUFeatures into its own file · 3ad101f5
      Sigurd Schneider authored
      This reduces the preprocessor expanded source size by 84,675 LoC:
      
      gen         (   20 files):    71,349 to    1,523,934 (   21x)
      src         (  624 files):   367,410 to   53,253,894 (  145x)
      test        (  392 files):   490,503 to   37,436,176 (   76x)
      third_party (  432 files):   239,085 to    9,547,902 (   40x)
      total       ( 1520 files): 1,183,031 to  102,736,424 (   87x)
      
      to
      
      gen         (   20 files):    71,349 to    1,523,794 (   21x)
      src         (  624 files):   367,411 to   53,186,896 (  145x)
      test        (  392 files):   490,504 to   37,418,639 (   76x)
      third_party (  432 files):   239,085 to    9,547,902 (   40x)
      total       ( 1520 files): 1,183,033 to  102,651,749 (   87x)
      
      
      Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b
      Reviewed-on: https://chromium-review.googlesource.com/c/1291471Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58266}
      3ad101f5
  19. 07 Dec, 2018 1 commit
  20. 26 Oct, 2018 1 commit
  21. 17 Oct, 2018 1 commit
  22. 03 Oct, 2018 1 commit
  23. 02 Oct, 2018 2 commits
  24. 20 Sep, 2018 1 commit
  25. 15 Sep, 2018 1 commit
  26. 11 Sep, 2018 1 commit
  27. 09 Aug, 2018 1 commit
  28. 08 Aug, 2018 1 commit
  29. 02 Aug, 2018 1 commit
  30. 24 Jul, 2018 1 commit
    • Clemens Hammacher's avatar
      Reland "[turboassembler] Introduce hard-abort mode" · d324382e
      Clemens Hammacher authored
      This is a reland of a462a785
      
      Original change's description:
      > [turboassembler] Introduce hard-abort mode
      > 
      > For checks and assertions (mostly for debug code, like stack alignment
      > or zero extension), we had two modes: Emit a call to the {Abort}
      > runtime function (the default), and emit a debug break (used for
      > testing, enabled via --trap-on-abort).
      > In wasm, where we cannot just call a runtime function because code must
      > be isolate independent, we always used the trap-on-abort behaviour.
      > This causes problems for our fuzzers, which do not catch SIGTRAP, and
      > hence do not detect debug code failures.
      > 
      > This CL introduces a third mode ("hard abort"), which calls a C
      > function via {ExternalReference}. The C function still outputs the
      > abort reason, but does not print the stack trace. It then aborts via
      > "OS::Abort", just like the runtime function.
      > This will allow fuzzers to detect the crash and even find a nice error
      > message.
      > 
      > Even though this looks like a lot of code churn, it is actually not.
      > Most added lines are new tests, and other changes are minimal.
      > 
      > R=mstarzinger@chromium.org
      > 
      > Bug: chromium:863799
      > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b
      > Reviewed-on: https://chromium-review.googlesource.com/1142163
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#54592}
      
      Bug: chromium:863799
      Change-Id: I7729a47b4823a982a8e201df36520aa2b6ef5326
      Reviewed-on: https://chromium-review.googlesource.com/1146100Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54656}
      d324382e
  31. 20 Jul, 2018 2 commits
    • Sigurd Schneider's avatar
      Speculatively revert "[turboassembler] Introduce hard-abort mode" · 039c18e1
      Sigurd Schneider authored
      This reverts commit a462a785.
      
      Reason for revert: Breaks a TurboAssembler test:
      https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Arm/7726
      
      Original change's description:
      > [turboassembler] Introduce hard-abort mode
      > 
      > For checks and assertions (mostly for debug code, like stack alignment
      > or zero extension), we had two modes: Emit a call to the {Abort}
      > runtime function (the default), and emit a debug break (used for
      > testing, enabled via --trap-on-abort).
      > In wasm, where we cannot just call a runtime function because code must
      > be isolate independent, we always used the trap-on-abort behaviour.
      > This causes problems for our fuzzers, which do not catch SIGTRAP, and
      > hence do not detect debug code failures.
      > 
      > This CL introduces a third mode ("hard abort"), which calls a C
      > function via {ExternalReference}. The C function still outputs the
      > abort reason, but does not print the stack trace. It then aborts via
      > "OS::Abort", just like the runtime function.
      > This will allow fuzzers to detect the crash and even find a nice error
      > message.
      > 
      > Even though this looks like a lot of code churn, it is actually not.
      > Most added lines are new tests, and other changes are minimal.
      > 
      > R=​mstarzinger@chromium.org
      > 
      > Bug: chromium:863799
      > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b
      > Reviewed-on: https://chromium-review.googlesource.com/1142163
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#54592}
      
      TBR=mstarzinger@chromium.org,clemensh@chromium.org
      
      Change-Id: I60c011cfe262ccebbb9abf32699a9fe17e72a3c8
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:863799
      Reviewed-on: https://chromium-review.googlesource.com/1145431
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54597}
      039c18e1
    • Clemens Hammacher's avatar
      [turboassembler] Introduce hard-abort mode · a462a785
      Clemens Hammacher authored
      For checks and assertions (mostly for debug code, like stack alignment
      or zero extension), we had two modes: Emit a call to the {Abort}
      runtime function (the default), and emit a debug break (used for
      testing, enabled via --trap-on-abort).
      In wasm, where we cannot just call a runtime function because code must
      be isolate independent, we always used the trap-on-abort behaviour.
      This causes problems for our fuzzers, which do not catch SIGTRAP, and
      hence do not detect debug code failures.
      
      This CL introduces a third mode ("hard abort"), which calls a C
      function via {ExternalReference}. The C function still outputs the
      abort reason, but does not print the stack trace. It then aborts via
      "OS::Abort", just like the runtime function.
      This will allow fuzzers to detect the crash and even find a nice error
      message.
      
      Even though this looks like a lot of code churn, it is actually not.
      Most added lines are new tests, and other changes are minimal.
      
      R=mstarzinger@chromium.org
      
      Bug: chromium:863799
      Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b
      Reviewed-on: https://chromium-review.googlesource.com/1142163
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54592}
      a462a785
  32. 06 Jul, 2018 1 commit