- 28 Oct, 2020 2 commits
-
-
Jakob Gruber authored
.. and add a --text-is-readable flag to support non-readable .text sections. This splits the embedded blob hash into two dedicated hashes for data and code sections. The main benefit is that we can now keep at least a partial hash even with non-readable .text sections. The second part of this CL adds a --text-is-readable runtime flag to support such platforms (with non-readable .text). It currently doesn't do much; setting it enables a few additional DCHECKs, disables the constant pool on x64, and and disables verification of the embedded blob's *code* hash. Bug: v8:10707 Change-Id: Ib91ed8b50b50f2cd81677f62920bea6fb92af453 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2504251Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70827}
-
Jakob Gruber authored
The embedded metadata section is the off-heap equivalent to an on-heap Code object's metadata section. It contains no executable data, thus .rodata is the natural home for it. Another motivation is that some platforms do not grant read permissions on the .text section. Embedded blob stats before: EmbeddedData: Total size: 1322944 Data size: 25952 Code size: 1296992 And after: EmbeddedData: Total size: 1323372 Data size: 121452 Code size: 1201920 (Slight size increase due to additional padding.) Bug: v8:11036,v8:10707 Change-Id: Ib6b54a7e947966c7bd2fcc1e7e44c85e352f0063 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2502334Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70822}
-
- 27 Oct, 2020 1 commit
-
-
Jakob Gruber authored
This addresses comments from [0] by extending comments to also describe embedded builtins in code.h, and by improving language around various meaning of 'metadata': - The Code object's metadata section is still called 'metadata'. - The embedded blob's table of layout descriptions for builtins is now called 'layout descriptions'. - The embedded blob's data section (containing hashes and layout descriptions) is now called 'data' section. [0] chromium-review.googlesource.com/c/v8/v8/+/2491025 Bug: v8:11036 Change-Id: Ibe84fddb9784cc5d3b66482612dcdb7a2e8d14ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2501284 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#70793}
-
- 26 Oct, 2020 1 commit
-
-
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:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70747}
-
- 25 Oct, 2020 2 commits
-
-
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:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#70744}
-
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:
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}
-
- 22 Jul, 2020 1 commit
-
-
Toan Pham authored
Some platforms disable reading of bytes in the .text section, so move the metadata into a separate .rodata section. Bug: v8:10707 Change-Id: I30ef7a180f489f175c31f9d4dcd02115c9f516c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2301113 Commit-Queue: Toan Pham <toanpham@google.com> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68984}
-
- 15 Nov, 2019 1 commit
-
-
Dan Elphick authored
utils.h itself is fairly large and contains lots of unrelated functions as well as having a fair number of dependencies itself, so this splits bounds checking and bit field operations into their own headers in base and replaces uses of utils.h with the more appropriate header where possible. (Also fixes some cases where other headers were previously brought in transitively). Bug: v8:9810, v8:8912 Change-Id: I76c53f953848a57e2c5bfad6ce45abcd6d2a4f1b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1916604Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#64983}
-
- 27 May, 2019 1 commit
-
-
Jakob Gruber authored
Bug: v8:9103 Change-Id: I9a11bd99eb3f2b082749cf6a497ffe759216ad22 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627347 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#61843}
-
- 24 May, 2019 1 commit
-
-
Yang Guo authored
TBR=mvstanton@chromium.org,neis@chromium.org,ahaas@chromium.org Bug: v8:9247 Change-Id: I5433c863a54f3412d73df0d38aba3fdbcfac7ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627973 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61830}
-
- 22 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 Change-Id: I79e0553e8a0d6dac2aa16b94a6c0e05b6ccde4a1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621934 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#61725}
-
- 24 Apr, 2019 1 commit
-
-
Ross McIlroy authored
On Arm/64 the last return address is stored in a link register instead of being pushed to the top-of-stack like on x64/ia32. Extend the support in the tick sampler to check for samples in a frameless bytecode handler with support for checking the link register if it exists instead of top-of-stack. In addition, make the x64/ia32 check more robust by ensuring we only apply the change if the pc is a bytecode handler and the top frame isn't a bytecode handler (stub) frame. BUG=v8:9162 Change-Id: I89d2e80ea8a0b84ff6a265d0e0e73f9fdd1daca8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1578464Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#60976}
-
- 31 Jan, 2019 3 commits
-
-
Jakob Gruber authored
This is a reland of 1e3582b5 Original change's description: > Reland "[builtins] Verify Isolate compatibility with the embedded blob" > > This is a reland of b022e825 > > Original change's description: > > [builtins] Verify Isolate compatibility with the embedded blob > > > > Embedded builtins (= the embedded blob) have a few dependencies on the > > snapshot state. For instance, they require that metadata stored on > > builtin Code objects as well as the builtins constant table remain > > unchanged from mksnapshot-time. Embedders may violate these > > assumptions by accident, e.g. by loading a snapshot generated with > > different build flags, leading to seemingly unrelated failures later > > on. > > > > This CL introduces an Isolate hash stored in the embedded blob which > > hashes relevant parts of builtin Code objects and the builtins > > constant table. It's verified in Isolate::Init in debug builds. > > > > Bug: v8:8723 > > Change-Id: Ifc9bdbe6f56ea67d8984f162afa73a3572cfbba8 > > Reviewed-on: https://chromium-review.googlesource.com/c/1442641 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#59177} > > Tbr: yangguo@chromium.org,sigurds@chromium.org > Bug: v8:8723 > Change-Id: I1dd001783f0f1fae21a9809c8639e40f55b8f663 > Reviewed-on: https://chromium-review.googlesource.com/c/1445985 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59236} Tbr: yangguo@chromium.org,sigurds@chromium.org Bug: v8:8723 Change-Id: I8e4ae2f09d16b693c1fb814477d8487385046ee4 Reviewed-on: https://chromium-review.googlesource.com/c/1448312Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59250}
-
Clemens Hammacher authored
This reverts commit 1e3582b5. Reason for revert: Still fails nosnap: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/22789 Original change's description: > Reland "[builtins] Verify Isolate compatibility with the embedded blob" > > This is a reland of b022e825 > > Original change's description: > > [builtins] Verify Isolate compatibility with the embedded blob > > > > Embedded builtins (= the embedded blob) have a few dependencies on the > > snapshot state. For instance, they require that metadata stored on > > builtin Code objects as well as the builtins constant table remain > > unchanged from mksnapshot-time. Embedders may violate these > > assumptions by accident, e.g. by loading a snapshot generated with > > different build flags, leading to seemingly unrelated failures later > > on. > > > > This CL introduces an Isolate hash stored in the embedded blob which > > hashes relevant parts of builtin Code objects and the builtins > > constant table. It's verified in Isolate::Init in debug builds. > > > > Bug: v8:8723 > > Change-Id: Ifc9bdbe6f56ea67d8984f162afa73a3572cfbba8 > > Reviewed-on: https://chromium-review.googlesource.com/c/1442641 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#59177} > > Tbr: yangguo@chromium.org,sigurds@chromium.org > Bug: v8:8723 > Change-Id: I1dd001783f0f1fae21a9809c8639e40f55b8f663 > Reviewed-on: https://chromium-review.googlesource.com/c/1445985 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59236} TBR=yangguo@chromium.org,sigurds@chromium.org,jgruber@chromium.org Change-Id: If6082452c739d4de44ed70d3c6355f5282684ac1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8723 Reviewed-on: https://chromium-review.googlesource.com/c/1448311Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59241}
-
Jakob Gruber authored
This is a reland of b022e825 Original change's description: > [builtins] Verify Isolate compatibility with the embedded blob > > Embedded builtins (= the embedded blob) have a few dependencies on the > snapshot state. For instance, they require that metadata stored on > builtin Code objects as well as the builtins constant table remain > unchanged from mksnapshot-time. Embedders may violate these > assumptions by accident, e.g. by loading a snapshot generated with > different build flags, leading to seemingly unrelated failures later > on. > > This CL introduces an Isolate hash stored in the embedded blob which > hashes relevant parts of builtin Code objects and the builtins > constant table. It's verified in Isolate::Init in debug builds. > > Bug: v8:8723 > Change-Id: Ifc9bdbe6f56ea67d8984f162afa73a3572cfbba8 > Reviewed-on: https://chromium-review.googlesource.com/c/1442641 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59177} Tbr: yangguo@chromium.org,sigurds@chromium.org Bug: v8:8723 Change-Id: I1dd001783f0f1fae21a9809c8639e40f55b8f663 Reviewed-on: https://chromium-review.googlesource.com/c/1445985 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59236}
-
- 29 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
This reverts commit b022e825. Reason for revert: Fails nosnap: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/22761 Original change's description: > [builtins] Verify Isolate compatibility with the embedded blob > > Embedded builtins (= the embedded blob) have a few dependencies on the > snapshot state. For instance, they require that metadata stored on > builtin Code objects as well as the builtins constant table remain > unchanged from mksnapshot-time. Embedders may violate these > assumptions by accident, e.g. by loading a snapshot generated with > different build flags, leading to seemingly unrelated failures later > on. > > This CL introduces an Isolate hash stored in the embedded blob which > hashes relevant parts of builtin Code objects and the builtins > constant table. It's verified in Isolate::Init in debug builds. > > Bug: v8:8723 > Change-Id: Ifc9bdbe6f56ea67d8984f162afa73a3572cfbba8 > Reviewed-on: https://chromium-review.googlesource.com/c/1442641 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59177} TBR=sigurds@chromium.org,jgruber@chromium.org Change-Id: I027ae2585bd06290ea3245b1fc23efba544eb470 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8723 Reviewed-on: https://chromium-review.googlesource.com/c/1443059Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59179}
-
Jakob Gruber authored
Embedded builtins (= the embedded blob) have a few dependencies on the snapshot state. For instance, they require that metadata stored on builtin Code objects as well as the builtins constant table remain unchanged from mksnapshot-time. Embedders may violate these assumptions by accident, e.g. by loading a snapshot generated with different build flags, leading to seemingly unrelated failures later on. This CL introduces an Isolate hash stored in the embedded blob which hashes relevant parts of builtin Code objects and the builtins constant table. It's verified in Isolate::Init in debug builds. Bug: v8:8723 Change-Id: Ifc9bdbe6f56ea67d8984f162afa73a3572cfbba8 Reviewed-on: https://chromium-review.googlesource.com/c/1442641 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59177}
-
- 16 Nov, 2018 1 commit
-
-
Jakob Gruber authored
This pulls both classes into a dedicated file. InstructionStream may be removed in a follow-up. Tbr: mlippautz@chromium.org Bug: v8:6666 Change-Id: Ibd374eba25cebf7495390ec13f6b4aeac5e1dc01 Reviewed-on: https://chromium-review.googlesource.com/c/1337738Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57562}
-