Commit f4a57545 authored by brucedawson's avatar brucedawson Committed by Commit bot

Reduce VC++ padding in IncrementalMarking class

IncrementalMarking has nine bytes of padding in 32-bit and 64-bit
builds. Fixing 32-bit builds just requires moving the one-byte
incremental_marking_job_ member. Fixing 64-bit requires moving the
four-byte state_ member. This change reduces the padding to one byte.

On 64-bit this reduces its size from 152 to 144. This also fits heap
granularity better. On 32-bit it goes from 96 to 88 bytes.

The initial padding was found with llvm-pdbdump.exe. The fix was
verified by compiling v8/src/assembler.cc with the undocumented
/d1reportSingleClassLayout option, like this:

    /d1reportSingleClassLayoutIncrementalMarking

The savings should apply on all platforms, or at worst should make no
difference except for improving alignment.

Thanks to zturner@ for some llvm-pdbdump improvements.

BUG=chromium:710933

Review-Url: https://codereview.chromium.org/2808473003
Cr-Commit-Position: refs/heads/master@{#44698}
parent 26bc5906
......@@ -23,10 +23,10 @@ namespace internal {
IncrementalMarking::IncrementalMarking(Heap* heap)
: heap_(heap),
state_(STOPPED),
initial_old_generation_size_(0),
bytes_marked_ahead_of_schedule_(0),
unscanned_bytes_of_large_object_(0),
state_(STOPPED),
idle_marking_delay_counter_(0),
incremental_marking_finalization_rounds_(0),
is_compacting_(false),
......
......@@ -271,8 +271,6 @@ class V8_EXPORT_PRIVATE IncrementalMarking {
Heap* heap_;
State state_;
double start_time_ms_;
size_t initial_old_generation_size_;
size_t old_generation_allocation_counter_;
......@@ -280,6 +278,8 @@ class V8_EXPORT_PRIVATE IncrementalMarking {
size_t bytes_marked_ahead_of_schedule_;
size_t unscanned_bytes_of_large_object_;
State state_;
int idle_marking_delay_counter_;
int incremental_marking_finalization_rounds_;
......@@ -289,10 +289,10 @@ class V8_EXPORT_PRIVATE IncrementalMarking {
bool black_allocation_;
bool finalize_marking_completed_;
bool trace_wrappers_toggle_;
IncrementalMarkingJob incremental_marking_job_;
GCRequestType request_type_;
IncrementalMarkingJob incremental_marking_job_;
Observer new_generation_observer_;
Observer old_generation_observer_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment