- 17 Nov, 2020 2 commits
-
-
Georgia Kouveli authored
Use the recently added -mmark-bti-property Clang flag to add GNU_PROPERTY_AARCH64_FEATURE_1_BTI to the ELF GNU program properties. Bug: v8:10026 Change-Id: Id35a60c9f5a8b3019313d56a142ab8f481e095a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2543934Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#71240}
-
John Xu authored
Bug: v8:10927 Change-Id: Icbdc0d7329ddd466e7d67a954246a35795b4dece Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2507310 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#71220}
-
- 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 Oct, 2020 1 commit
-
-
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:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#70701}
-
- 20 Oct, 2020 1 commit
-
-
gengjiawen authored
See: https://github.com/nodejs/node/pull/35415#issuecomment-707828213Co-authored-by:
Richard Townsend <richard.townsend@arm.com> Change-Id: I440644f55dc8c8ec3108e5015ebbce2829dd8207 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2479602Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jiawen Geng <technicalcute@gmail.com> Cr-Commit-Position: refs/heads/master@{#70648}
-
- 16 Oct, 2020 2 commits
-
-
Jakob Gruber authored
- Use kNoBuiltinId instead of literal -1. - Remove support for non-embedded builtins. - Update Code object layout comment. Bug: v8:10933 Change-Id: Ie75c6ccc0a0f19348ae214249a8fc81f7e91df0c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2474115 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#70557}
-
Jakob Gruber authored
The UMA sampling profiler prefers unique symbol addresses, otherwise disambiguation is fairly arbitrary (lexicographic). To this end, introduce a dedicated symbol v8_code_start_for_profiler_ at a unique address (i.e. no other symbol is located at this address). Bug: v8:6666 Change-Id: Iec13ccac64efc7ac3f63e29632ee8f6300bcb76b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2464926 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70556}
-
- 07 Oct, 2020 1 commit
-
-
Milad Fa authored
Change-Id: I14bac71f1b80de6e92b729b369aa4871f9af5bb2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2453453 Commit-Queue: Milad Fa <mfarazma@redhat.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70382}
-
- 06 Oct, 2020 1 commit
-
-
Jakob Gruber authored
The UMA sampling profiler needs a way to detect the beginning of the embedded builtins code range; a plain symbol is not enough, but a function symbol should be good. This changes (x64) v8_Default_embedded_blob_code_data_: to v8_Default_embedded_blob_code_data_: .type v8_Default_embedded_blob_code_data_, @function .size v8_Default_embedded_blob_code_data_, 0 Bug: v8:6666 Change-Id: I5dce3aaca0f36e15ad4339e20fbbdc76282a289e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2450058 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#70330}
-
- 20 Aug, 2020 1 commit
-
-
Milad Farazmand authored
Port 929dd374 Original Commit Message: When CFI is enabled this adds a check against this list whenever a new return address must be set in a deoptimized frame, as a mitigation for ROP attacks. The list is known at linking time so that its content and the pointer to it can be stored in a read-only memory section. The check is performed in the signing function, which is no longer generic, as well as when setting the current pc of the frame. Since the pc is now only signed when setting the caller's pc, there is no need for ReplaceContext anymore. R=salome.thirot@arm.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I5005096811c289707e2d080477c60ae2ed4bf38b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2365372Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#69502}
-
- 19 Aug, 2020 1 commit
-
-
Salome Thirot authored
When CFI is enabled this adds a check against this list whenever a new return address must be set in a deoptimized frame, as a mitigation for ROP attacks. The list is known at linking time so that its content and the pointer to it can be stored in a read-only memory section. The check is performed in the signing function, which is no longer generic, as well as when setting the current pc of the frame. Since the pc is now only signed when setting the caller's pc, there is no need for ReplaceContext anymore. Bug: v8:10026 Change-Id: I5e85a62b94722051716fdeba476db383c702a318 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2287490Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Rodolph Perfetta <rodolph.perfetta@arm.com> Cr-Commit-Position: refs/heads/master@{#69478}
-
- 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}
-
- 07 May, 2020 1 commit
-
-
Jakob Gruber authored
The snapshot's Checksum function internally uses adler32, which appears to be significantly faster than base::hash_range and almost as fast as doing nothing at all. Test times, measured with $ time tools/run-tests.py --outdir out/release-with-dchecks/ --exit-after-n-failures=1 --quickcheck base::hash_range: 1m35s adler32: 1m15s nop: 1m13s Bug: chromium:1047818 Change-Id: I8def62f6276a3d06d06911abf5368f59331245ea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187492Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#67649}
-
- 17 Apr, 2020 1 commit
-
-
Jiaxun Yang authored
GAS have a auto-align function which will align all the directive data into it's nature boundary. And we're using .octa to present data in embedded.S, which will be auto-aligned into 128-bit boundary. It can break relatve offset in generated binary. So we workaround it by forcing generate .long DataDirective on MIPS. Also I rewoked WriteByteChunk so it can accept any kind of directive now. Further more, implementation of HexLiteral is indentical on generic, aix and mac so I merged them into base. Bug: v8:10420 Change-Id: I0ff791412360769510735659f909524c5f96d3e0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2153187Reviewed-by:
Dan Elphick <delphick@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#67198}
-
- 17 Mar, 2020 1 commit
-
-
Georgia Kouveli authored
Generate a BTI instruction at each target of an indirect branch (BR/BLR). An indirect branch that doesn't jump to a BTI instruction will generate an exception on a BTI-enabled core. On cores that do not support the BTI extension, the BTI instruction is a NOP. Targets of indirect branch instructions include, among other things, function entrypoints, exception handlers and jump tables. Lazy deopt exits can potentially be reached through an indirect branch when an exception is thrown, so they also get an additional BTI instruction. Bug: v8:10026 Change-Id: I0ebf51071f1b604f60f524096e013dfd64fcd7ff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1967315 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66751}
-
- 10 Mar, 2020 1 commit
-
-
Richard Townsend authored
Suffered from a confusion of masm/marmasm syntax for the x64 host and arm64 target (could only generate one syntax or ther other). Fixed by moving the compile-time flag to a runtime one. Bug: v8:10012 Change-Id: I34746a495b1881c1d0465995930979bb768b07e6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1962854Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Richard Townsend <richard.townsend@arm.com> Cr-Commit-Position: refs/heads/master@{#66650}
-
- 25 Feb, 2020 1 commit
-
-
Richard Townsend authored
Because this code is compile-time gated, it's bit-rotted as new functions have come along. This patch brings things back to parity with x86/x64. Bug: v8:10012 Change-Id: Iba4cd1155a1ae46742ecddbed96f36938a10db48 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2066973Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Richard Townsend <richard.townsend@arm.com> Cr-Commit-Position: refs/heads/master@{#66419}
-
- 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}
-
- 07 Nov, 2019 1 commit
-
-
Matheus Marchini authored
Lack of size information can cause debugging and observability tools to misbehave or to fail. We can see the size for all builtins is zero with objdump: $ objdump -t d8 | grep Builtins_ArgumentsAdaptorTrampoline 0000000001084a00 l F .text 0000000000000000 Builtins_ArgumentsAdaptorTrampoline ^ Size is zero Tools like bpftrace rely on the function size to guarantee a tracepoint is added within function boundaries. Without size information, those tools can't guarantee a tracepoint will be added safely. Add .size directive for each builtin function, as described in https://sourceware.org/binutils/docs-2.24/as/Size.html#Size, to fix this issue. We can see with objdump that the size is properly set: $ objdump -t d8 | grep Builtins_ArgumentsAdaptorTrampoline 00000000010bf820 l F .text 0000000000000140 Builtins_ArgumentsAdaptorTrampoline R=bmeurer@chromium.org, hpayer@chromium.org, verwaest@chromium.org, yangguo@chromium.org Change-Id: I4cd2b0a12b629498dd9d7465cc1002dda37028c7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1898807 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#64824}
-
- 06 Nov, 2019 1 commit
-
-
Mike Stanton authored
Currently, line number information is added to windows binaries as DWARF data. This prevents windows tools like DUMPBIN from working, as they don't expect to see DWARF segments. Any line number information should be in the CodeView (PDB) format. This work is deferred until later. Bug: v8:9944, v8:9910 Change-Id: I87c950d9aaa543c1eb3356310289e99266f1565e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900446Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#64795}
-
- 28 Oct, 2019 2 commits
-
-
Michael Starzinger authored
R=jgruber@chromium.org BUG=v8:6666,v8:9810 Change-Id: I972983d8e86729843f4a1bbe050e3b37a3c0c61c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1881147Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#64578}
-
Jakob Gruber authored
Debug infos for embedded builtins (associating a file and line number with certain code ranges) should only be emitted in debug modes. This CL disables source position emission in Torque in release builds, and adds checks that the external filename / source position lists are empty in release builds. Bug: v8:9910 Change-Id: Ic69683a2324c3b334150ee2b7da9972fbee56483 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1879903Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#64576}
-
- 22 Oct, 2019 1 commit
-
-
Jakob Gruber authored
This CL removes the V8_EMBEDDED_BUILTINS define, FLAG_embedded_builtins, and all code for supporting non-embedded-builtin builds. Bug: v8:6666,v8:8519 Change-Id: I2ad7bd6614c7cd404b83d3d2bf5ff91d7b55ff2a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1866569 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#64461}
-
- 21 Oct, 2019 1 commit
-
-
Seth Brenith authored
The current unwinding data for JSEntry correctly restores the frame pointer and program counter from the caller frame, which might or might not be sufficient to continue unwinding, depending on the contents of that caller frame. Currently, the cctest StackUnwindingWin64 is broken (at least with my build config) because the caller frame also needs the stack pointer, which is not restored correctly. In particular, I see this xdata for v8::internal::GeneratedCode<...>, which is the function that calls Builtins_JSEntry: 10400015 : 2 code words, 1 epilog, function length=15 01000012 : epilog starts at 12 and its unwind handler starts at 4 e405c8d2 : save_reg x=b z=8 alloc_s x=5 end e405c8d2 : same thing but for the epilog The prolog that corresponds to the unwind codes above is: sub sp, sp, #50 str lr, [sp, #0x40] Note that it does not set fp, so unwinding requires an accurate sp. This change emits slightly more complicated unwinding data for JSEntry so that the frame pointer, stack pointer, and program counter can all be restored. Change-Id: I0c7f3eba97ef64408f46631b487c4b0ceb06fa9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1848860 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#64435}
-
- 13 Sep, 2019 1 commit
-
-
Clemens Hammacher authored
After https://crrev.com/c/1800575 and https://crrev.com/c/1803343, which tried to fix this on occuring compile errors, this CL systematically adds the <memory> include to each header that uses {std::unique_ptr}. R=sigurds@chromium.org TBR=mlippautz@chromium.org,alph@chromium.org,rmcilroy@chromium.org,verwaest@chromium.org Bug: v8:9396 Change-Id: If7f9c3140842f9543135dddd7344c0f357999da0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1803349Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#63767}
-
- 10 Sep, 2019 1 commit
-
-
Clemens Hammacher authored
Since we switched to C++14 now, we can use {std::make_unique} instead of our own {base::make_unique} from {template-utils.h}. R=mstarzinger@chromium.org, yangguo@chromium.org Bug: v8:9687 No-Try: true Change-Id: I660eb30038bbb079cee93c7861cd87ccd134f01b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789300 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#63642}
-
- 04 Sep, 2019 1 commit
-
-
Jakob Gruber authored
AllocatePages (used to allocate the embedded blob's backing store during mksnapshot) has allocation address, size, and alignment parameters. Both address and size are expected to be aligned, but we were only aligning size properly. This CL also aligns the address (and adds a bunch of comments as well). Bug: v8:9677 Change-Id: Ia739682236c74278bcaf1c9b7c9c4b3e0b0c5582 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784277 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by:
Simon Zünd <szuend@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63538}
-
- 31 Jul, 2019 1 commit
-
-
Tom Tan authored
On Windows ARM64, OS stack walking does not work because the V8 ARM64 backend doesn't emit unwinding info and also because it doesn't emit ABI compliant stack frames. This was fixed for Windows X64 (https://crrev.com/c/1469329) and documented below: https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0 This problem can be fixed similarly for Windows ARM64 by observing that V8 frames usually all have the same prolog which maintains a chain via frame pointer (fp or x29 register). stp fp, lr, [sp, ...] One exception is JSEntry which stops fp pointer chain and needs to be handled specially. So it is possible to define XDATA with UNWIND_CODE which specify how Windows should walk through V8 dynamic frames. The same as X64, since V8 Code objects are all allocated in the same code-range for an Isolate, it is possible to register at most 2 XDATA and a group of PDATA entries to cover stack walking for all the code generated inside that code-range. This is more than 1 PDATA/XDATA because according to the Windows ARM64 exeption handling document, 1 PDATA can cover less than 1MB code range (see below doc). https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling This PR implements stackwalk for Windows ARM64 to be on par with X64, including embedded builtins, jitted code and wasm jitted code, but not including register handler for handling exception only, because there is no backward compatibility to maintain for Windows ARM64 which was released since 1709 windows build. Bug: chromium:893460 Change-Id: Ic74cbdad8af5cf342185030a4c53796f12ea5429 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701133Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63002}
-
- 08 Jul, 2019 1 commit
-
-
Simon Zünd authored
This is a reland of f24e9958 Speculatively relanding the CL. LLD ignores the added section, so the output should not be any different. The issue was also not reproducible locally. Keeping an eye on the bot/roll to quickly revert, in case this CL really breaks the deterministic build. Original change's description: > [snapshot] Add '.note.GNU-stack' marker section for ELF snapshots > > This snapshot adds a marker section to the output assembly of > mksnapshot. Omitting this section can imply an executable stack, which > can result in linker warnings. > > R=jgruber@chromium.org > > Change-Id: I6f5dacb24de3a852faf6ce0caf18c32b499ba5a9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687669 > Commit-Queue: Simon Zünd <szuend@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#62504} TBR=jgruber@chromium.org Bug: chromium:981138 Change-Id: I2ddbaa7aa33f125ea0a0854cd9a94108c3a3845f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1690825Reviewed-by:
Simon Zünd <szuend@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/master@{#62560}
-
- 05 Jul, 2019 1 commit
-
-
Maya Lekova authored
This reverts commit f24e9958. Reason for revert: Speculative revert for https://bugs.chromium.org/p/chromium/issues/detail?id=981138 Original change's description: > [snapshot] Add '.note.GNU-stack' marker section for ELF snapshots > > This snapshot adds a marker section to the output assembly of > mksnapshot. Omitting this section can imply an executable stack, which > can result in linker warnings. > > R=jgruber@chromium.org > > Change-Id: I6f5dacb24de3a852faf6ce0caf18c32b499ba5a9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687669 > Commit-Queue: Simon Zünd <szuend@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#62504} TBR=jgruber@chromium.org,szuend@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:981138 Change-Id: Iad05bb8e4222d62db8266ae250d79a37259f3008 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687416Reviewed-by:
Simon Zünd <szuend@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#62534}
-
- 03 Jul, 2019 1 commit
-
-
Simon Zünd authored
This snapshot adds a marker section to the output assembly of mksnapshot. Omitting this section can imply an executable stack, which can result in linker warnings. R=jgruber@chromium.org Change-Id: I6f5dacb24de3a852faf6ce0caf18c32b499ba5a9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687669 Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#62504}
-
- 27 May, 2019 4 commits
-
-
Jakob Gruber authored
Bug: v8:9103 Change-Id: I7ff6bb0032fd5d81339401bbf8276baf19af8489 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631417 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#61853}
-
Jakob Gruber authored
This moves the platform-specific WriteByteChunk (& friends) into platform-specific embedded file writers. Bug: v8:9103 Change-Id: I0113c90dbf661a39dabe62b420cf6a160ee1be1d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631412 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#61852}
-
Jakob Gruber authored
The win64-specific unwinding info writer should not be part of the generic EmbeddedFileWriter class. Let's hide it in the platform-specific writer. Bug: v8:9103 Change-Id: Ifc4f8b326f07e037b6876e0592cb70b8281edb9a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627536 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#61850}
-
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}
-