- 19 Jun, 2020 1 commit
-
-
Michael Lippautz authored
This is a reland of e0c1a349 The issue was passing SentinelPointer (== +1) through T*. The fix is disabling cfi unrelated cast diagnostic for the bottlenecks (Get()). This means that nullptr is treated the same as kSentinelPointer. The alternative would be a DCHECK that Get() does not return kSentinelPointer and adjusting all Member and Persistent logic that uses Get() to work on void*. This is quite intrusive as it involves Swap(), heterogeneous assignments, comparisons, etc. Original change's description: > cppgc: Properly clear (Weak)Peristent and WeakMember pointers > > The CL addresses two issues with (Weak)Persistent and WeakMember: > 1. (Weak)Persistent pointers are cleared on heap teardown. Before this > CL the pointers would contain stale values which could lead to UAF. > 2. WeakPersistent and WeakMember are cleared using a combination of > internal clearing methods and mutable fields which avoids the use > of const_cast<>. > > Bug: chromium:1056170 > Change-Id: Ibf2b0f0856771b4f6906608cde13a6d43ebf81f3 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2248190 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68394} Bug: chromium:1056170 Change-Id: I3d74b43464c2973df1956f51b1419d755dd9f519 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2250240Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68426}
-
- 12 May, 2020 1 commit
-
-
Omer Katz authored
This CL adds 2 new values to the EmbedderStackState enum with more explicit names. The old values are updated as aliases to the new values and marked as soon to be deprecated. This CL also moves the enum to v8-platform.h so that it can be reused by cppgc. Depracating individual values in an enum is supported by GCC only since version 6. Thus new macros were needed for the deprecation (which delegate to the existing macros when supported). GCC versions older than 6 are still used by the CQ bots. Bug: chromium:1056170 Change-Id: Id1ea73edfbbae282b0d8a3bb103dbbbf8ebd417e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2188971 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67744}
-
- 14 Jan, 2020 1 commit
-
-
Michael Lippautz authored
- Introduces a API to set top of the stack through EmbedderHeapTracer::SetStackTop. - Introduces a new API to inform V8 about an empty embedder stack. - Switch internal representation of TracedReference for on-stack handles to a proper stack that considers all contained handles as roots. - Handle garbage is avoided by cleaning up on handle creation or GC. Design doc: https://bit.ly/on-stack-traced-reference Bug: chromium:1040038 Change-Id: I927ef0abb268fdb5853c9e17b1bc96e2491cf101 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1993973 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65757}
-
- 21 Oct, 2019 1 commit
-
-
Clemens Backes authored
We still set a lot of macros depending on specific gcc versions. All these old versions are unsupported by now anyways, so we can also just define these macros as 1. If this CL sticks for a while, we can start actually cleaning up all code relying on these macros, as most of them should be 1 now on all platforms. R=ulan@chromium.org Bug: v8:9810 Change-Id: I2f9c55170091f8c263deeddfb7ff89e5b2a0bb12 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1862564Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64413}
-
- 16 Oct, 2019 1 commit
-
-
Clemens Backes authored
DCHECKs are not really special, they just create a non-constexpr path within an otherwise constexpr function. Since C++14, this is allowed. Unfortunately, gcc only supports this since version 6, but we still need to support gcc 5. R=ulan@chromium.org Change-Id: If74486144abafa5bbdcdbb9a567ee9295ac4cfc7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1862568Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64310}
-
- 09 Oct, 2019 3 commits
-
-
Igor Sheludko authored
Bug: v8:7703 Change-Id: If8605f4dc4ab50fb5a95b43994262c8f3edd92a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1849524Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#64192}
-
Clemens Backes authored
The V8_HAS_DECLSPEC_NORETURN macro is unused since https://crrev.com/c/529072, where we switched to the standard [[noreturn]] attribute. R=ulan@chromium.org Bug: v8:9810 Change-Id: Ifd76c967df1da7bb71369e61cd0adc1807b62d44 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1847365Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64175}
-
Clemens Backes authored
Since C++14, there is a spec'ed attribute for deprecation of methods, functions, types, aliases or anything else. This CL switches from the GCC __attribute__ to this standard attribute. This allows to use the V8_DEPRECATED and V8_DEPRECATE_SOON macros on anything where the standard attribute can be used (including {using} statements that were not working before). It also avoids the need to nest the whole declaration in the macro, making the code more readable. R=adamk@chromium.org Bug: v8:9810 Change-Id: I7adab7694af75423fb31ade2fc982dbf9c9bc699 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1847361Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64174}
-
- 19 Sep, 2019 1 commit
-
-
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: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63892}
-
- 18 Sep, 2019 1 commit
-
-
Clemens Hammacher authored
This is an unmodified reland of 60624b56. Nosnap bots do not block LKGR any more: https://crbug.com/v8/9737#c10. Original change's description: > Disallow nullptr arguments for {CopyChars} > > This allows to remove special casing for the {count == 0} case, which > was needed because {memmove} does not accept {nullptr} arguments even > if the {count} is zero. > > R=leszeks@chromium.org > > Bug: v8:9396 > Change-Id: Iaef3cdbbffa74c2ba1c4e4501dafd943282cbcd9 > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807366 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63838} TBR=leszeks@chromium.org Bug: v8:9396 Change-Id: I6ab13575f13df060b450ff105e4b9db516671dcf Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1809365Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#63863}
-
- 17 Sep, 2019 2 commits
-
-
Adam Klein authored
This reverts commits 9febc505 (along with followup commit 60624b56). Reason for revert: Breaks win32 nosnap shared, blocking lkgr & roll: https://ci.chromium.org/p/v8/builders/ci/V8%20Win32%20-%20nosnap%20-%20shared/35145 nosnap bots may be deprecated, but as long as they're in LKGR we need to mind them. Original change's description: > Reland "Remove all custom CopyCharsUnsigned implementations" > > This is a reland of 5d8c4890 > > Original change's description: > > Remove all custom CopyCharsUnsigned implementations > > > > It's unclear whether the custom implementation have any advantage over > > the standard library one's. > > Since we update our toolchain and standard library regularly, it might > > well be the case that the custom implementations are slower by now. > > > > Thus this CL removes all {CopyCharsUnsigned} implementations and > > implements {CopyChars} generically using {std::copy_n}. > > > > Note that this does not touch the {MemMove} and {MemCopy} functions > > yet, as we have seen regressions when trying to remove them before > > (https://crbug.com/v8/8675#c5). > > > > R=leszeks@chromium.org > > > > Bug: v8:9396 > > Change-Id: I97a183afebcccd2fbb567bdba02e827331475608 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1800577 > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#63808} > > Bug: v8:9396 > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng > Change-Id: I9cd754ebe6b802bb4aabd6d2a448de41da040874 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807357 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63823} TBR=leszeks@chromium.org,clemensh@chromium.org Change-Id: Ic53ab2293d5dc7722a1121d1aa1159328a6ed8f5 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9396 Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1808035Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#63854}
-
Clemens Hammacher authored
This allows to remove special casing for the {count == 0} case, which was needed because {memmove} does not accept {nullptr} arguments even if the {count} is zero. R=leszeks@chromium.org Bug: v8:9396 Change-Id: Iaef3cdbbffa74c2ba1c4e4501dafd943282cbcd9 Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807366Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#63838}
-
- 29 Aug, 2019 1 commit
-
-
Igor Sheludko authored
... to let C++ compiler know that isolate root is 4Gb aligned and give it a chance to generate a better code. Bug: v8:9353 Change-Id: Ibd23c14cc44107c722a446a84dd14ca66f3bccfe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1776079Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#63445}
-
- 08 Aug, 2019 1 commit
-
-
Patrick Thier authored
This CL changes the dispatch technique in the regex interpreter to token-threaded dispatch, if computed gotos are supported by the compiler. Otherwise old switch-based dispatch is still used (e.g. for MSVC). With computed gotos, less jumps will be emitted (no extra jump to single branch point/begin of switch) and branch prediction will be better because of no single branch point. This CL improves performance on the RexBench Benchmark suite by ~10%. Bug: v8:9575 Change-Id: I585ad824ff1cc595a5dfa8831ad66d6810d0119b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1733073Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Patrick Thier <pthier@google.com> Cr-Commit-Position: refs/heads/master@{#63126}
-
- 26 Jun, 2019 1 commit
-
-
Sigurd Schneider authored
This makes sure that BUILDING_V8_SHARED and USING_V8_SHARED are not both set at once. Change-Id: Iba3a4fac37518b6ec3658da4575453a7967ece0f Bug: v8:8855 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627978Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#62369}
-
- 17 Apr, 2019 1 commit
-
-
Jakob Gruber authored
Add OS detection for iOS builds. If we are building for an iOS target, the following V8 OS defines will be set: V8_OS_BSD V8_OS_MACOSX V8_OS_POSIX V8_OS_IOS // This one is new. The detection code is taken from Chromium's build_config.h file. Bug: v8:9140 Change-Id: I435a8931dc0ae0eefdb893bc838a04470bcc57db Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1569435Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#60897}
-
- 10 Apr, 2019 1 commit
-
-
Paolo Severini authored
In file include/v8config.h we define: ifdef V8_OS_WIN ... if defined(_M_X64) || defined(__x86_64__) define V8_OS_WIN_X64 true endif and V8_OS_WIN_X64 is supposed to be defined when targeting X64 on Windows only. But this is wrong because V8_OS_WIN_X64 gets defined also on an ARM64 builds when the host machine is X64. It should instead be: ifdef V8_OS_WIN ... if defined(V8_TARGET_ARCH_X64) define V8_OS_WIN_X64 true endif Bug: v8:9090 Change-Id: I88e4c46bb6df1efa2070d4e1785081d71df96f0e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1554222Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Paolo Severini <paolosev@microsoft.com> Cr-Commit-Position: refs/heads/master@{#60758}
-
- 03 Apr, 2019 1 commit
-
-
Paolo Severini authored
This is a reland of 3cda21de Original change's description: > V8 x64 backend doesn't emit ABI compliant stack frames > > On 64 bit Windows, the OS stack walking does not work because the V8 x64 > backend doesn't emit unwinding info and also because it doesn't emit ABI > compliant stack frames. See > https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0/edit > for more details. > > This problem can be fixed by observing that V8 frames usually all have the same > prolog and epilog: > > push rbp, > mov rbp, rsp > ... > pop rbp > ret N > > and that it is possible to define XDATA (UNWIND_CODEs) that specify how Windows > should walk through V8 frames. Furthermore, since V8 Code objects are all > allocated in the same code-range for an Isolate, it is possible to register a > single PDATA/XDATA entry to cover stack walking for all the code generated > inside that code-range. > > This PR contains changes required to enable stack walking on Win64: > > EmbeddedFileWriter now adds assembler directives to the builtins > snapshot source file (embedded.cc) to emit additional entries in the .pdata and > in the .xdata section of the V8 executable. This takes care of stack walking > for embedded builtins. (The case of non-embedded builtins is not supported). > The x64 Assembler has been modified to collect the information required to emit > this unwind info for builtins. > > Stack walking for jitted code is handled is Isolate.cpp, by registering > dynamically PDATA/XDATA for the whole code-range address space every time a new > Isolate is initialized, and by unregistering them when the Isolate is > destroyed. > > Stack walking for WASM jitted code is handled is the same way in > wasm::NativeModule (wasm/wasm-code-manager.cpp). > > It is important to note that Crashpad and Breakpad are already registering > PDATA/XDATA to manage and report unhandled exceptions (but not for embedded > builtins). Since it is not possible to register multiple PDATA entries for the > same address range, a new function is added to the V8 API: > SetUnhandledExceptionCallback() can be used by an embedder to register its own > unhandled exception handler for exceptions that arise in v8-generated code. > V8 embedders should be modified accordingly (code for this is in a separate PR > in the Chromium repository: > https://chromium-review.googlesource.com/c/chromium/src/+/1474703). > > All these changes are experimental, behind: > > the 'v8_win64_unwinding_info' build flag, and > the '--win64-unwinding-info' runtime flag. > > Bug: v8:3598 > Change-Id: Iea455ab6d0e2bf1c556aa1cf870841d44ab6e4b1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1469329 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Paolo Severini <paolosev@microsoft.com> > Cr-Commit-Position: refs/heads/master@{#60330} Bug: v8:3598 Change-Id: If988baf7d3e4af165b919d6e54c1ad985f8e25e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1534618Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Paolo Severini <paolosev@microsoft.com> Cr-Commit-Position: refs/heads/master@{#60581}
-
- 20 Mar, 2019 1 commit
-
-
Leszek Swirski authored
This reverts commit 3cda21de. Reason for revert: Breaks the roll on Windows (see https://cr-buildbucket.appspot.com/build/8918477701097622400) Original change's description: > V8 x64 backend doesn't emit ABI compliant stack frames > > On 64 bit Windows, the OS stack walking does not work because the V8 x64 > backend doesn't emit unwinding info and also because it doesn't emit ABI > compliant stack frames. See > https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0/edit > for more details. > > This problem can be fixed by observing that V8 frames usually all have the same > prolog and epilog: > > push rbp, > mov rbp, rsp > ... > pop rbp > ret N > > and that it is possible to define XDATA (UNWIND_CODEs) that specify how Windows > should walk through V8 frames. Furthermore, since V8 Code objects are all > allocated in the same code-range for an Isolate, it is possible to register a > single PDATA/XDATA entry to cover stack walking for all the code generated > inside that code-range. > > This PR contains changes required to enable stack walking on Win64: > > EmbeddedFileWriter now adds assembler directives to the builtins > snapshot source file (embedded.cc) to emit additional entries in the .pdata and > in the .xdata section of the V8 executable. This takes care of stack walking > for embedded builtins. (The case of non-embedded builtins is not supported). > The x64 Assembler has been modified to collect the information required to emit > this unwind info for builtins. > > Stack walking for jitted code is handled is Isolate.cpp, by registering > dynamically PDATA/XDATA for the whole code-range address space every time a new > Isolate is initialized, and by unregistering them when the Isolate is > destroyed. > > Stack walking for WASM jitted code is handled is the same way in > wasm::NativeModule (wasm/wasm-code-manager.cpp). > > It is important to note that Crashpad and Breakpad are already registering > PDATA/XDATA to manage and report unhandled exceptions (but not for embedded > builtins). Since it is not possible to register multiple PDATA entries for the > same address range, a new function is added to the V8 API: > SetUnhandledExceptionCallback() can be used by an embedder to register its own > unhandled exception handler for exceptions that arise in v8-generated code. > V8 embedders should be modified accordingly (code for this is in a separate PR > in the Chromium repository: > https://chromium-review.googlesource.com/c/chromium/src/+/1474703). > > All these changes are experimental, behind: > > the 'v8_win64_unwinding_info' build flag, and > the '--win64-unwinding-info' runtime flag. > > Bug: v8:3598 > Change-Id: Iea455ab6d0e2bf1c556aa1cf870841d44ab6e4b1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1469329 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Paolo Severini <paolosev@microsoft.com> > Cr-Commit-Position: refs/heads/master@{#60330} TBR=bbudge@chromium.org,ulan@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org,gdeepti@chromium.org,jgruber@chromium.org,paolosev@microsoft.com Change-Id: If8470da94c58df8c800cbe8887f9f86236e43353 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:3598 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532321Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#60372}
-
- 19 Mar, 2019 1 commit
-
-
Paolo Severini authored
On 64 bit Windows, the OS stack walking does not work because the V8 x64 backend doesn't emit unwinding info and also because it doesn't emit ABI compliant stack frames. See https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0/edit for more details. This problem can be fixed by observing that V8 frames usually all have the same prolog and epilog: push rbp, mov rbp, rsp ... pop rbp ret N and that it is possible to define XDATA (UNWIND_CODEs) that specify how Windows should walk through V8 frames. Furthermore, since V8 Code objects are all allocated in the same code-range for an Isolate, it is possible to register a single PDATA/XDATA entry to cover stack walking for all the code generated inside that code-range. This PR contains changes required to enable stack walking on Win64: EmbeddedFileWriter now adds assembler directives to the builtins snapshot source file (embedded.cc) to emit additional entries in the .pdata and in the .xdata section of the V8 executable. This takes care of stack walking for embedded builtins. (The case of non-embedded builtins is not supported). The x64 Assembler has been modified to collect the information required to emit this unwind info for builtins. Stack walking for jitted code is handled is Isolate.cpp, by registering dynamically PDATA/XDATA for the whole code-range address space every time a new Isolate is initialized, and by unregistering them when the Isolate is destroyed. Stack walking for WASM jitted code is handled is the same way in wasm::NativeModule (wasm/wasm-code-manager.cpp). It is important to note that Crashpad and Breakpad are already registering PDATA/XDATA to manage and report unhandled exceptions (but not for embedded builtins). Since it is not possible to register multiple PDATA entries for the same address range, a new function is added to the V8 API: SetUnhandledExceptionCallback() can be used by an embedder to register its own unhandled exception handler for exceptions that arise in v8-generated code. V8 embedders should be modified accordingly (code for this is in a separate PR in the Chromium repository: https://chromium-review.googlesource.com/c/chromium/src/+/1474703). All these changes are experimental, behind: the 'v8_win64_unwinding_info' build flag, and the '--win64-unwinding-info' runtime flag. Bug: v8:3598 Change-Id: Iea455ab6d0e2bf1c556aa1cf870841d44ab6e4b1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1469329Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Paolo Severini <paolosev@microsoft.com> Cr-Commit-Position: refs/heads/master@{#60330}
-
- 17 Dec, 2018 2 commits
-
-
Clemens Hammacher authored
C++ introduces the {alignof} keyword, which evaluates to an integral constant defining the alignment of the given type. This makes {V8_ALIGNOF} redundant. R=ulan@chromium.org Bug: v8:8562 Change-Id: I15a4022c2c396afba96360f218d8a04b17a9a448 Reviewed-on: https://chromium-review.googlesource.com/c/1379938 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58292}
-
Clemens Hammacher authored
C++ introduces the {alignas} keyword, which can be used with types or integral constant expressions. Use this instead of the V8_ALIGNAS (for types) or V8_ALIGNED (for integral constants) macros. R=ulan@chromium.org Bug: v8:8562 Change-Id: I54999b56a5715237f88c63d8543ef728a5b2eff5 Reviewed-on: https://chromium-review.googlesource.com/c/1379935Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58290}
-
- 05 Nov, 2018 1 commit
-
-
Jakob Kummerow authored
and split Smi out of objects.h into smi.h. Bug: v8:3770, v8:5402 Change-Id: I5ff7461495d29c785a76c79aca2616816a29ab1e Reviewed-on: https://chromium-review.googlesource.com/c/1313035Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#57252}
-
- 07 Sep, 2018 1 commit
-
-
Dan Elphick authored
Move everything defined in the v8::internal namespace from include/v8.h into a separate header that can be included by globals.h/checks.h instead of the whole v8.h. Also moves V8_EXPORT into v8config.h (so it can be use in the new v8-internal.h). Bug: v8:8015 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I22cdc2728d91a94b309a3d030ed06c0f8a06c723 Reviewed-on: https://chromium-review.googlesource.com/1210102Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#55707}
-
- 18 Jul, 2018 1 commit
-
-
Dan Elphick authored
Move brackets enclosing declarator in a couple of V8_DEPRECATE_SOON cases so that the attribute is correctly placed. I.e. should come after the class keyword and after a function signature but before the body. Also adds suppressions for a case where a replacement method calls the deprecated method it replaces. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I490ff07a13552cf335186d64ca061f21ac4e8afc Reviewed-on: https://chromium-review.googlesource.com/1140593Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#54527}
-
- 25 Apr, 2018 1 commit
-
-
Predrag Rudic authored
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I3fc1b53c43e53e12e041178912f372f33068d67c Reviewed-on: https://chromium-review.googlesource.com/1023418 Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#52775}
-
- 06 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
Replace all uses with V8_WARN_UNUSED_RESULT. WARN_UNUSED_RESULT was defined in src/base/compiler-specific.h, which includes include/v8config.h, which already defined V8_WARN_UNUSED_RESULT. R=mstarzinger@chromium.org Bug: v8:7570 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I662072294605036ca5aa0c8fdaa0218ac5d95f23 Reviewed-on: https://chromium-review.googlesource.com/998893Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#52457}
-
- 26 Jun, 2017 1 commit
-
-
Clemens Hammacher authored
There were only two uses. Replace them by [[noreturn]] directly. R=jarin@chromium.org BUG=v8:6474 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I965f74f5b3493cfef9efd698f24bf00216442fd8 Reviewed-on: https://chromium-review.googlesource.com/544845Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#46205}
-
- 13 Jun, 2017 1 commit
-
-
Clemens Hammacher authored
Since we require C++11 support now, there is no need to use __attribute__ or __declspec, all compilers should support the [[noreturn]] attribute. R=jarin@chromium.org BUG=v8:6474 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I6c478c69658fd23c1c8ca468fbf3c6a36474ef66 Reviewed-on: https://chromium-review.googlesource.com/529072Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#45909}
-
- 11 Jun, 2017 1 commit
-
-
scottmg authored
Sufficient to compile //v8 in Chrome with target_os="fuchsia". Doesn't link yet, due to missing implementations (primarily VirtualMemory, as well as a few utility functions). BUG=chromium:731217 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_rel_ng Review-Url: https://codereview.chromium.org/2931143002 Cr-Commit-Position: refs/heads/master@{#45831}
-
- 15 May, 2017 1 commit
-
-
Wiktor Garbacz authored
Change-Id: Ie141097c12ad578c752f51393bd5a5df176b3cad Reviewed-on: https://chromium-review.googlesource.com/504528 Commit-Queue: Wiktor Garbacz <wiktorg@google.com> Reviewed-by: Jochen Eisinger <jochen@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#45301}
-
- 27 Jul, 2016 1 commit
-
-
yangguo authored
Review-Url: https://codereview.chromium.org/2175193003 Cr-Commit-Position: refs/heads/master@{#38081}
-
- 22 Mar, 2016 1 commit
-
-
jfb authored
Cleanup, and matches Chromium's build. Review URL: https://codereview.chromium.org/1820583002 Cr-Commit-Position: refs/heads/master@{#34993}
-
- 25 Nov, 2015 1 commit
-
-
thakis authored
Also add a note that it should go away over time. BUG=none LOG=n Review URL: https://codereview.chromium.org/1475033003 Cr-Commit-Position: refs/heads/master@{#32290}
-
- 08 Oct, 2015 2 commits
-
-
karl authored
Without that, it has a few false positives about out-of-bounds array accesses. Also makes the clang static-analyzer happy. Original code review from Sven Panne: https://codereview.chromium.org/790723002/ CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg,v8_linux_gcc_rel Review URL: https://codereview.chromium.org/1393023003 Cr-Commit-Position: refs/heads/master@{#31185}
-
bmeurer authored
Revert of Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. (patchset #3 id:40001 of https://codereview.chromium.org/1383053005/ ) Reason for revert: Breaks Arm debug. Original issue's description: > Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. > > Without that, it has a few false positives about out-of-bounds array accesses. > Also makes the clang static-analyzer happy. > > Original code review from Sven Panne: > https://codereview.chromium.org/790723002/ > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg > > Committed: https://crrev.com/93ae81101af68d81b7af84ea4046ea849e605116 > Cr-Commit-Position: refs/heads/master@{#31163} TBR=jochen@chromium.org,karl@skomski.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1398643002 Cr-Commit-Position: refs/heads/master@{#31167}
-
- 07 Oct, 2015 1 commit
-
-
karl authored
Without that, it has a few false positives about out-of-bounds array accesses. Also makes the clang static-analyzer happy. Original code review from Sven Panne: https://codereview.chromium.org/790723002/ CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg Review URL: https://codereview.chromium.org/1383053005 Cr-Commit-Position: refs/heads/master@{#31163}
-
- 05 Oct, 2015 2 commits
-
-
machenbach authored
Revert of Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. (patchset #3 id:40001 of https://codereview.chromium.org/1384873002/ ) Reason for revert: [Sheriff] Breaks the gcc 4.8 bot: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20gcc%204.8/builds/3274 Original issue's description: > Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. > > Without that, it has a few false positives about out-of-bounds array accesses. > Also makes the clang static-analyzer happy. > > Original code review from Sven Panne: > https://codereview.chromium.org/790723002/ > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg > > Committed: https://crrev.com/d068574e641e28f05dcde89ddc9a1d0ec6f6f308 > Cr-Commit-Position: refs/heads/master@{#31105} TBR=jochen@chromium.org,bmeurer@chromium.org,karl@skomski.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1376113005 Cr-Commit-Position: refs/heads/master@{#31112}
-
karl authored
Without that, it has a few false positives about out-of-bounds array accesses. Also makes the clang static-analyzer happy. Original code review from Sven Panne: https://codereview.chromium.org/790723002/ CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg Review URL: https://codereview.chromium.org/1384873002 Cr-Commit-Position: refs/heads/master@{#31105}
-
- 28 Sep, 2015 1 commit
-
-
ishell authored
Revert of Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. (patchset #3 id:80001 of https://codereview.chromium.org/1361763004/ ) Reason for revert: This CL breaks cross-compiling to arm. Original issue's description: > Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. > > Without that, it has a few false positives about out-of-bounds array accesses. > Also makes the clang static-analyzer happy. > > Original code review from Sven Panne: > https://codereview.chromium.org/790723002/ > > Committed: https://crrev.com/0b48b2a8ebfc791a36f4ec1f299f46db76265a3a > Cr-Commit-Position: refs/heads/master@{#30977} TBR=jochen@chromium.org,bmeurer@chromium.org,jkummerow@chromium.org,karl@skomski.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1370203002 Cr-Commit-Position: refs/heads/master@{#30982}
-