Skip to content

Commit 61d1535

Browse files
kvakilrichardlau
authored andcommitted
deps: V8: cherry-pick de611e69ad51
Original commit message: [maglev] fix non-ptr-compr compilation on old compilers When pointer compression is disabled, the preprocessor expands some static asserts to static_assert(false), which doesn't compile on compilers not implementing the C++ defect report CWG2518, notably clang before version 17 and gcc before version 13. Adding in part of the template parameter to the static assert prevents it from being evaluated immediately which fixes the compilation. Test: compiled with gcc-11 and clang-14 without pointer compression. Change-Id: I95ce29bdb1278e6dad9e592d6f9476395f8aeb59 Fixed: v8:14355 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5022760 Reviewed-by: Leszek Swirski <[email protected]> Commit-Queue: Leszek Swirski <[email protected]> Cr-Commit-Position: refs/heads/main@{#91553} Refs: v8/v8@de611e6 PR-URL: #51200 Refs: #50690 Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Richard Lau <[email protected]>
1 parent fd5efac commit 61d1535

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.18',
39+
'v8_embedder_string': '-node.19',
4040

4141
##### V8 defaults for Node.js #####
4242

deps/v8/src/maglev/maglev-code-generator.cc

+10
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,11 @@ class ParallelMoveResolver {
415415
void EmitMovesFromSource(RegisterT source_reg, GapMoveTargets&& targets) {
416416
DCHECK(moves_from_register_[source_reg.code()].is_empty());
417417
if constexpr (DecompressIfNeeded) {
418+
// The DecompressIfNeeded clause is redundant with the if-constexpr above,
419+
// but otherwise this code cannot be compiled by compilers not yet
420+
// implementing CWG2518.
421+
static_assert(DecompressIfNeeded && COMPRESS_POINTERS_BOOL);
422+
418423
if (targets.needs_decompression == kNeedsDecompression) {
419424
__ DecompressTagged(source_reg, source_reg);
420425
}
@@ -457,6 +462,11 @@ class ParallelMoveResolver {
457462
// Decompress after the first move, subsequent moves reuse this register so
458463
// they're guaranteed to be decompressed.
459464
if constexpr (DecompressIfNeeded) {
465+
// The DecompressIfNeeded clause is redundant with the if-constexpr above,
466+
// but otherwise this code cannot be compiled by compilers not yet
467+
// implementing CWG2518.
468+
static_assert(DecompressIfNeeded && COMPRESS_POINTERS_BOOL);
469+
460470
if (targets.needs_decompression == kNeedsDecompression) {
461471
__ DecompressTagged(register_with_slot_value, register_with_slot_value);
462472
targets.needs_decompression = kDoesNotNeedDecompression;

0 commit comments

Comments
 (0)