1. 28 Oct, 2020 1 commit
  2. 26 Oct, 2020 1 commit
    • Jakob Gruber's avatar
      Reland "[code] Separate instruction and metadata areas" · a4449f26
      Jakob Gruber authored
      This is a reland of b66993bc
      
      Nothing changed in the reland, the original CL was not the
      culprit for win32 failures. They started earlier, at
      https://ci.chromium.org/p/v8/builders/ci/V8%20Win32/29444
      
      Original change's description:
      > [code] Separate instruction and metadata areas
      >
      > In this CL, Code object layout changes s.t. the instruction
      > area is distinct / non-overlapping from the metadata area.
      >
      > On-heap Code objects now have a variable-size `body` area,
      > containing distinct-but-adjacent `instruction` and `metadata`
      > areas.
      >
      > Off-heap code (= embedded builtins) currently have the same,
      > but in the future the metadata area will move elsewhere and
      > no longer be adjacent to instructions.
      >
      > To implement this, the main changes are:
      >
      >  - The Code object header now contains instruction and metadata
      >    sizes, and no longer contains the safepoint table offset
      >    (it's implicitly the first table of the metadata section).
      >  - The embedded metadata table contains information about both
      >    instruction and metadata areas.
      >
      > I've also added assertions in spots that currently rely on a
      > contiguous body area.
      >
      > Bug: v8:11036
      > Change-Id: I940f0c70c07ad511dafd2d2c3e337de8c92cd4b9
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491025
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70743}
      
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Tbr: leszeks@chromium.org, clemensb@chromium.org, dinfuehr@chromium.org
      Bug: v8:11036
      Change-Id: I238562d7e25cf28cc689856ee8b17f25627aaee7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2497162
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70747}
      a4449f26
  3. 25 Oct, 2020 2 commits
    • Zhi An Ng's avatar
      Revert "[code] Separate instruction and metadata areas" · 9a02964a
      Zhi An Ng authored
      This reverts commit b66993bc.
      
      Reason for revert: Broke v8 win32 https://ci.chromium.org/p/v8/builders/ci/V8%20Win32/29454?
      
      Original change's description:
      > [code] Separate instruction and metadata areas
      >
      > In this CL, Code object layout changes s.t. the instruction
      > area is distinct / non-overlapping from the metadata area.
      >
      > On-heap Code objects now have a variable-size `body` area,
      > containing distinct-but-adjacent `instruction` and `metadata`
      > areas.
      >
      > Off-heap code (= embedded builtins) currently have the same,
      > but in the future the metadata area will move elsewhere and
      > no longer be adjacent to instructions.
      >
      > To implement this, the main changes are:
      >
      >  - The Code object header now contains instruction and metadata
      >    sizes, and no longer contains the safepoint table offset
      >    (it's implicitly the first table of the metadata section).
      >  - The embedded metadata table contains information about both
      >    instruction and metadata areas.
      >
      > I've also added assertions in spots that currently rely on a
      > contiguous body area.
      >
      > Bug: v8:11036
      > Change-Id: I940f0c70c07ad511dafd2d2c3e337de8c92cd4b9
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491025
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70743}
      
      TBR=jgruber@chromium.org,leszeks@chromium.org,clemensb@chromium.org,dinfuehr@chromium.org
      
      Change-Id: Ia52ac609a47b8a2038a2511f0af8526ebdfe4719
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:11036
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2497381Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70744}
      9a02964a
    • Jakob Gruber's avatar
      [code] Separate instruction and metadata areas · b66993bc
      Jakob Gruber authored
      In this CL, Code object layout changes s.t. the instruction
      area is distinct / non-overlapping from the metadata area.
      
      On-heap Code objects now have a variable-size `body` area,
      containing distinct-but-adjacent `instruction` and `metadata`
      areas.
      
      Off-heap code (= embedded builtins) currently have the same,
      but in the future the metadata area will move elsewhere and
      no longer be adjacent to instructions.
      
      To implement this, the main changes are:
      
       - The Code object header now contains instruction and metadata
         sizes, and no longer contains the safepoint table offset
         (it's implicitly the first table of the metadata section).
       - The embedded metadata table contains information about both
         instruction and metadata areas.
      
      I've also added assertions in spots that currently rely on a
      contiguous body area.
      
      Bug: v8:11036
      Change-Id: I940f0c70c07ad511dafd2d2c3e337de8c92cd4b9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491025Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70743}
      b66993bc
  4. 22 Oct, 2020 1 commit
    • Jakob Gruber's avatar
      [code] Prepare to move metadata out of the instructions area · 0d0a3416
      Jakob Gruber authored
      No major functional changes in this CL, mostly it moves code around
      to make follow-up CLs less messy.
      
       - Document Code layout.
       - New concepts: 'body' and 'metadata' areas of Code objects. The
         metadata area contains metadata tables, the body area includes
         both instructions and metadata (this is currently the 'instructions'
         area). Add accessors for these new areas.
       - An interesting detail: embedded builtins will have non-adjacent
         instruction and metadata areas, thus a concept of 'body' doesn't
         make sense there.
       - Also add raw_instruction_X_future accessors; these are used where
         we are actually interested in the instructions range, not the entire
         body. In a follow-up, current raw_instruction_X accessors will be
         replaced by raw_body_X, and raw_instruction_X_future by
         raw_instruction_X.
      
      Bug: v8:11036
      Change-Id: I1d85146b652e0c097c3602d4db1862d5d3898a7e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491023
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70701}
      0d0a3416
  5. 05 Aug, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Replace CompilationTarget with a new Code::Kind value · c51041f4
      Jakob Gruber authored
      With the new Turbofan variants (NCI and Turboprop), we need a way to
      distinguish between them both during and after compilation. We
      initially introduced CompilationTarget to track the variant during
      compilation, but decided to reuse the code kind as the canonical spot to
      store this information instead.
      
      Why? Because it is an established mechanism, already available in most
      of the necessary spots (inside the pipeline, on Code objects, in
      profiling traces).
      
      This CL removes CompilationTarget and adds a new
      NATIVE_CONTEXT_INDEPENDENT kind, plus helper functions to determine
      various things about a given code kind (e.g.: does this code kind
      deopt?).
      
      As a (very large) drive-by, refactor both Code::Kind and
      AbstractCode::Kind into a new CodeKind enum class.
      
      Bug: v8:8888
      Change-Id: Ie858b9a53311b0731630be35cf5cd108dee95b39
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336793
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69244}
      c51041f4
  6. 03 Jul, 2020 1 commit
  7. 14 May, 2020 1 commit
  8. 28 Apr, 2020 1 commit
  9. 04 Nov, 2019 1 commit
  10. 25 Oct, 2019 1 commit
    • Leszek Swirski's avatar
      [heap] Add base class for LargeObjectSpaces · eb667651
      Leszek Swirski authored
      Both LO_SPACE and NEW_LO_SPACE use the basic page management system of
      LargeObjectSpace, but implement different AllocateRaw methods (with
      the NEW_LO_SPACE version shadowing the LO_SPACE version).
      
      To clean this up, and allow other future LargeObjectSpace implementations
      (in particular, an off-thread variant), refactored the current
      LargeObjectSpace into a base class, and make both LargeObjectSpace
      (renamed to OldLargeObjectSpace) and NewLargeObjectSpace extend this
      class.
      
      Bug: chromium:1011762
      Change-Id: I41b45b97f2611611dcfde677213131396df03a5e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876824
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64560}
      eb667651
  11. 17 Jun, 2019 1 commit
  12. 23 May, 2019 2 commits
  13. 21 May, 2019 1 commit
  14. 10 Apr, 2019 1 commit
  15. 15 Feb, 2019 1 commit
  16. 26 Dec, 2018 1 commit
  17. 20 Dec, 2018 1 commit
  18. 17 Dec, 2018 1 commit
  19. 13 Dec, 2018 3 commits
    • Sigurd Schneider's avatar
      Reland "Reland "Reland "[code-comments] Put code comments into the code object""" · b55dd17f
      Sigurd Schneider authored
      This is a reland of 9c0a4858
      
      Original change's description:
      > Reland "Reland "[code-comments] Put code comments into the code object""
      >
      > This is a reland of ed3d6472
      >
      > This reland fixes that padding at the end of Wasm instruction streams
      > triggered asserts in the code printer.
      >
      > Original change's description:
      > > Reland "[code-comments] Put code comments into the code object"
      > >
      > > This is a reland of e774cffe
      > >
      > > This reland disables a test as v8:8548 is blocking it, which was
      > > broken by a recent CL. CQ did not catch this because the merge-base
      > > CQ used did not yet contain the CL that caused v8:8548.
      > >
      > > Original change's description:
      > > > [code-comments] Put code comments into the code object
      > > >
      > > > Code comments in the snapshot can now be enabled with gn
      > > > arg 'v8_enable_snapshot_code_comments'
      > > >
      > > > Bug: v8:7989
      > > > Change-Id: I8bd00cafa63132d00d849394c311ba15e6b6daf3
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/1329173
      > > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#58020}
      > >
      > > TBR=mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,tebbi@chromium.org
      > >
      > > Bug: v8:7989, v8:8548
      > > Change-Id: I464fc897205fefdf2dfc2eadc54d699c4e08a0e9
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1361166
      > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#58028}
      >
      > Bug: v8:7989, v8:8548
      > Change-Id: I254f55ff687ad049f8d92b09331ed26a2bd05d7d
      > Reviewed-on: https://chromium-review.googlesource.com/c/1371784
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58221}
      
      TBR=jgruber@chromium.org,mstarzinger@chromium.org
      
      Bug: v8:7989, v8:8548, v8:8593
      Change-Id: I4f7ffc98e0281c7b744eb4a04ba0763896c7b59b
      Reviewed-on: https://chromium-review.googlesource.com/c/1375919Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58232}
      b55dd17f
    • Clemens Hammacher's avatar
      Revert "Reland "Reland "[code-comments] Put code comments into the code object""" · 8a5c0095
      Clemens Hammacher authored
      This reverts commit 9c0a4858.
      
      Reason for revert: Seems to break nosnap debug: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/22228
      
      Original change's description:
      > Reland "Reland "[code-comments] Put code comments into the code object""
      > 
      > This is a reland of ed3d6472
      > 
      > This reland fixes that padding at the end of Wasm instruction streams
      > triggered asserts in the code printer.
      > 
      > Original change's description:
      > > Reland "[code-comments] Put code comments into the code object"
      > >
      > > This is a reland of e774cffe
      > >
      > > This reland disables a test as v8:8548 is blocking it, which was
      > > broken by a recent CL. CQ did not catch this because the merge-base
      > > CQ used did not yet contain the CL that caused v8:8548.
      > >
      > > Original change's description:
      > > > [code-comments] Put code comments into the code object
      > > >
      > > > Code comments in the snapshot can now be enabled with gn
      > > > arg 'v8_enable_snapshot_code_comments'
      > > >
      > > > Bug: v8:7989
      > > > Change-Id: I8bd00cafa63132d00d849394c311ba15e6b6daf3
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/1329173
      > > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#58020}
      > >
      > > TBR=mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,tebbi@chromium.org
      > >
      > > Bug: v8:7989, v8:8548
      > > Change-Id: I464fc897205fefdf2dfc2eadc54d699c4e08a0e9
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1361166
      > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#58028}
      > 
      > Bug: v8:7989, v8:8548
      > Change-Id: I254f55ff687ad049f8d92b09331ed26a2bd05d7d
      > Reviewed-on: https://chromium-review.googlesource.com/c/1371784
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58221}
      
      TBR=mvstanton@chromium.org,mstarzinger@chromium.org,sigurds@chromium.org,jgruber@chromium.org
      
      Change-Id: I681a3c63120c6ab953bfe9cd2b07bcf560ebfdee
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7989, v8:8548
      Reviewed-on: https://chromium-review.googlesource.com/c/1375916
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58228}
      8a5c0095
    • Sigurd Schneider's avatar
      Reland "Reland "[code-comments] Put code comments into the code object"" · 9c0a4858
      Sigurd Schneider authored
      This is a reland of ed3d6472
      
      This reland fixes that padding at the end of Wasm instruction streams
      triggered asserts in the code printer.
      
      Original change's description:
      > Reland "[code-comments] Put code comments into the code object"
      >
      > This is a reland of e774cffe
      >
      > This reland disables a test as v8:8548 is blocking it, which was
      > broken by a recent CL. CQ did not catch this because the merge-base
      > CQ used did not yet contain the CL that caused v8:8548.
      >
      > Original change's description:
      > > [code-comments] Put code comments into the code object
      > >
      > > Code comments in the snapshot can now be enabled with gn
      > > arg 'v8_enable_snapshot_code_comments'
      > >
      > > Bug: v8:7989
      > > Change-Id: I8bd00cafa63132d00d849394c311ba15e6b6daf3
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1329173
      > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#58020}
      >
      > TBR=mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,tebbi@chromium.org
      >
      > Bug: v8:7989, v8:8548
      > Change-Id: I464fc897205fefdf2dfc2eadc54d699c4e08a0e9
      > Reviewed-on: https://chromium-review.googlesource.com/c/1361166
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58028}
      
      Bug: v8:7989, v8:8548
      Change-Id: I254f55ff687ad049f8d92b09331ed26a2bd05d7d
      Reviewed-on: https://chromium-review.googlesource.com/c/1371784
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58221}
      9c0a4858
  20. 04 Dec, 2018 4 commits
  21. 27 Nov, 2018 1 commit
  22. 25 Nov, 2018 1 commit
  23. 12 Nov, 2018 1 commit
  24. 20 Aug, 2018 1 commit
  25. 03 May, 2018 1 commit
  26. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  27. 05 Apr, 2018 1 commit
    • jgruber's avatar
      Rename Code::instruction_{start,end,size} functions · 7b29fe43
      jgruber authored
      In order to clarify the difference between, e.g., InstructionStart and
      instruction_start, rename as follows:
      
      Code::instruction_start -> raw_instruction_start
      Code::instruction_end   -> raw_instruction_end
      Code::instruction_size  -> raw_instruction_size
      
      The difference between the camel-case and raw_* function families is
      in how they handle off-heap-trampoline Code objects. For example, when
      called on an off-heap-trampoline: raw_instruction_start returns the
      trampoline's entry point, while InstructionStart returns the off-heap
      code's entry point (located in the .text section of the binary).
      
      Some callsites were updated to call the camel-case function family as
      appropriate.
      
      Bug: v8:6666
      Change-Id: I4a572f47c2d161a853599d7c17879e263b0d1a87
      Reviewed-on: https://chromium-review.googlesource.com/997532
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52387}
      7b29fe43
  28. 13 Oct, 2017 1 commit
  29. 30 Jun, 2016 1 commit