Skip to content

Commit

Permalink
deps: V8: cherry-pick 92a7385171bb
Browse files Browse the repository at this point in the history
Original commit message:

    [heap] Fix 32bit msvc builds

    Size of ActiveSystemPages is 8 bytes even on 32bit builds, thus
    forcing 8 bytes alignment for MemoryChunk.

    Change-Id: I5ca1e18329d6e68a8b6811c3c27cb224c765cb63
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3966953
    Commit-Queue: Omer Katz <omerkatz@chromium.org>
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#83845}

Refs: v8/v8@92a7385
PR-URL: nodejs#45230
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
  • Loading branch information
targos authored and marco-ippolito committed Nov 23, 2022
1 parent b450e8d commit 2148812
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.4',
'v8_embedder_string': '-node.5',

##### V8 defaults for Node.js #####

Expand Down
17 changes: 14 additions & 3 deletions deps/v8/src/heap/memory-chunk-layout.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ using ActiveSystemPages = ::heap::base::ActiveSystemPages;

class V8_EXPORT_PRIVATE MemoryChunkLayout {
public:
static const int kNumSets = NUMBER_OF_REMEMBERED_SET_TYPES;
static const int kNumTypes = ExternalBackingStoreType::kNumTypes;
static constexpr int kNumSets = NUMBER_OF_REMEMBERED_SET_TYPES;
static constexpr int kNumTypes = ExternalBackingStoreType::kNumTypes;
#if V8_CC_MSVC && V8_TARGET_ARCH_IA32
static constexpr int kMemoryChunkAlignment = 8;
#else
static constexpr int kMemoryChunkAlignment = sizeof(size_t);
#endif // V8_CC_MSVC && V8_TARGET_ARCH_IA32
#define FIELD(Type, Name) \
k##Name##Offset, k##Name##End = k##Name##Offset + sizeof(Type) - 1
enum Header {
Expand Down Expand Up @@ -74,11 +79,17 @@ class V8_EXPORT_PRIVATE MemoryChunkLayout {
#endif // V8_ENABLE_INNER_POINTER_RESOLUTION_OSB
FIELD(size_t, WasUsedForAllocation),
kMarkingBitmapOffset,
kMemoryChunkHeaderSize = kMarkingBitmapOffset,
kMemoryChunkHeaderSize =
kMarkingBitmapOffset +
((kMarkingBitmapOffset % kMemoryChunkAlignment) == 0
? 0
: kMemoryChunkAlignment -
(kMarkingBitmapOffset % kMemoryChunkAlignment)),
kMemoryChunkHeaderStart = kSlotSetOffset,
kBasicMemoryChunkHeaderSize = kMemoryChunkHeaderStart,
kBasicMemoryChunkHeaderStart = 0,
};
#undef FIELD
static size_t CodePageGuardStartOffset();
static size_t CodePageGuardSize();
static intptr_t ObjectStartOffsetInCodePage();
Expand Down
11 changes: 11 additions & 0 deletions deps/v8/src/heap/memory-chunk.cc
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,17 @@ void MemoryChunk::ValidateOffsets(MemoryChunk* chunk) {
DCHECK_EQ(reinterpret_cast<Address>(&chunk->possibly_empty_buckets_) -
chunk->address(),
MemoryChunkLayout::kPossiblyEmptyBucketsOffset);
DCHECK_EQ(reinterpret_cast<Address>(&chunk->active_system_pages_) -
chunk->address(),
MemoryChunkLayout::kActiveSystemPagesOffset);
#ifdef V8_ENABLE_INNER_POINTER_RESOLUTION_OSB
DCHECK_EQ(reinterpret_cast<Address>(&chunk->object_start_bitmap_) -
chunk->address(),
MemoryChunkLayout::kObjectStartBitmapOffset);
#endif // V8_ENABLE_INNER_POINTER_RESOLUTION_OSB
DCHECK_EQ(reinterpret_cast<Address>(&chunk->was_used_for_allocation_) -
chunk->address(),
MemoryChunkLayout::kWasUsedForAllocationOffset);
}
#endif

Expand Down

0 comments on commit 2148812

Please sign in to comment.