Skip to content

Commit 32c52b0

Browse files
author
Gavin Barraclough
committed
MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
https://bugs.webkit.org/show_bug.cgi?id=165741 Unreviewed rollout due to performance regression. Source/JavaScriptCore: * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * heap/CellContainer.cpp: Removed. * heap/CellContainer.h: * heap/MarkedAllocator.cpp: (JSC::MarkedAllocator::addBlock): (JSC::MarkedAllocator::removeBlock): (JSC::MarkedAllocator::dumpBits): * heap/MarkedAllocator.h: (JSC::MarkedAllocator::forEachBitVector): (JSC::MarkedAllocator::forEachBitVectorWithName): * heap/MarkedBlock.cpp: (JSC::MarkedBlock::tryCreate): (JSC::MarkedBlock::Handle::~Handle): (JSC::MarkedBlock::MarkedBlock): (JSC::MarkedBlock::Handle::specializedSweep): (JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode): (JSC::MarkedBlock::Handle::stopAllocating): (JSC::MarkedBlock::Handle::resumeAllocating): (JSC::MarkedBlock::aboutToMarkSlow): (JSC::MarkedBlock::Handle::didConsumeFreeList): (JSC::MarkedBlock::Handle::dumpState): Deleted. * heap/MarkedBlock.h: (JSC::MarkedBlock::isMarked): (JSC::MarkedBlock::markingVersion): Deleted. (JSC::MarkedBlock::isMarkedRaw): Deleted. * heap/MarkedBlockInlines.h: (JSC::MarkedBlock::marksConveyLivenessDuringMarking): * heap/SlotVisitor.cpp: (JSC::SlotVisitor::appendJSCellOrAuxiliary): * runtime/Options.h: * runtime/StructureIDTable.h: (JSC::StructureIDTable::get): (JSC::StructureIDTable::size): Deleted. Source/WTF: * WTF.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/DataLog.cpp: (WTF::initializeLogFileOnce): (WTF::initializeLogFile): (WTF::dataFile): * wtf/DataLog.h: * wtf/LockedPrintStream.cpp: Removed. * wtf/LockedPrintStream.h: Removed. * wtf/PrintStream.cpp: (WTF::PrintStream::printfVariableFormat): Deleted. (WTF::PrintStream::begin): Deleted. (WTF::PrintStream::end): Deleted. * wtf/PrintStream.h: (WTF::PrintStream::print): (WTF::PrintStream::println): (WTF::PrintStream::atomically): Deleted. (WTF::PrintStream::printImpl): Deleted. (): Deleted. (WTF::>::unpack): Deleted. (WTF::FormatImpl::FormatImpl): Deleted. (WTF::FormatImpl::dump): Deleted. (WTF::format): Deleted. * wtf/RecursiveLockAdapter.h: Removed. * wtf/WordLock.cpp: * wtf/WordLock.h: Canonical link: https://commits.webkit.org/183441@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209795 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 1ba3acc commit 32c52b0

25 files changed

Lines changed: 139 additions & 547 deletions

‎Source/JavaScriptCore/CMakeLists.txt‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,6 @@ set(JavaScriptCore_SOURCES
464464
ftl/FTLValueRange.cpp
465465

466466
heap/AllocatorAttributes.cpp
467-
heap/CellContainer.cpp
468467
heap/CodeBlockSet.cpp
469468
heap/CollectionScope.cpp
470469
heap/ConservativeRoots.cpp

‎Source/JavaScriptCore/ChangeLog‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,45 @@
1+
2016-12-14 Gavin Barraclough <barraclough@apple.com>
2+
3+
MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
4+
https://bugs.webkit.org/show_bug.cgi?id=165741
5+
6+
Unreviewed rollout due to performance regression.
7+
8+
* CMakeLists.txt:
9+
* JavaScriptCore.xcodeproj/project.pbxproj:
10+
* heap/CellContainer.cpp: Removed.
11+
* heap/CellContainer.h:
12+
* heap/MarkedAllocator.cpp:
13+
(JSC::MarkedAllocator::addBlock):
14+
(JSC::MarkedAllocator::removeBlock):
15+
(JSC::MarkedAllocator::dumpBits):
16+
* heap/MarkedAllocator.h:
17+
(JSC::MarkedAllocator::forEachBitVector):
18+
(JSC::MarkedAllocator::forEachBitVectorWithName):
19+
* heap/MarkedBlock.cpp:
20+
(JSC::MarkedBlock::tryCreate):
21+
(JSC::MarkedBlock::Handle::~Handle):
22+
(JSC::MarkedBlock::MarkedBlock):
23+
(JSC::MarkedBlock::Handle::specializedSweep):
24+
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode):
25+
(JSC::MarkedBlock::Handle::stopAllocating):
26+
(JSC::MarkedBlock::Handle::resumeAllocating):
27+
(JSC::MarkedBlock::aboutToMarkSlow):
28+
(JSC::MarkedBlock::Handle::didConsumeFreeList):
29+
(JSC::MarkedBlock::Handle::dumpState): Deleted.
30+
* heap/MarkedBlock.h:
31+
(JSC::MarkedBlock::isMarked):
32+
(JSC::MarkedBlock::markingVersion): Deleted.
33+
(JSC::MarkedBlock::isMarkedRaw): Deleted.
34+
* heap/MarkedBlockInlines.h:
35+
(JSC::MarkedBlock::marksConveyLivenessDuringMarking):
36+
* heap/SlotVisitor.cpp:
37+
(JSC::SlotVisitor::appendJSCellOrAuxiliary):
38+
* runtime/Options.h:
39+
* runtime/StructureIDTable.h:
40+
(JSC::StructureIDTable::get):
41+
(JSC::StructureIDTable::size): Deleted.
42+
143
2016-12-13 Commit Queue <commit-queue@webkit.org>
244

345
Unreviewed, rolling out r209792.

‎Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,6 @@
752752
0FDB2CEA174896C7007B3C1B /* ConcurrentJSLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDB2CE9174896C7007B3C1B /* ConcurrentJSLock.h */; settings = {ATTRIBUTES = (Private, ); }; };
753753
0FDDBFB51666EED800C55FEF /* DFGVariableAccessDataDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDDBFB21666EED500C55FEF /* DFGVariableAccessDataDump.cpp */; };
754754
0FDDBFB61666EEDA00C55FEF /* DFGVariableAccessDataDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDDBFB31666EED500C55FEF /* DFGVariableAccessDataDump.h */; };
755-
0FDE87F91DFD0C760064C390 /* CellContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDE87F81DFD0C6D0064C390 /* CellContainer.cpp */; };
756755
0FDE87FC1DFE6E510064C390 /* SpaceTimeScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDE87FB1DFE6E500064C390 /* SpaceTimeScheduler.h */; };
757756
0FDE87FD1DFE6E540064C390 /* SpaceTimeScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDE87FA1DFE6E500064C390 /* SpaceTimeScheduler.cpp */; };
758757
0FDF67D21D9C6D27001B9825 /* B3Kind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDF67D11D9C6086001B9825 /* B3Kind.h */; };
@@ -3182,7 +3181,6 @@
31823181
0FDB2CE9174896C7007B3C1B /* ConcurrentJSLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConcurrentJSLock.h; sourceTree = "<group>"; };
31833182
0FDDBFB21666EED500C55FEF /* DFGVariableAccessDataDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableAccessDataDump.cpp; path = dfg/DFGVariableAccessDataDump.cpp; sourceTree = "<group>"; };
31843183
0FDDBFB31666EED500C55FEF /* DFGVariableAccessDataDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGVariableAccessDataDump.h; path = dfg/DFGVariableAccessDataDump.h; sourceTree = "<group>"; };
3185-
0FDE87F81DFD0C6D0064C390 /* CellContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CellContainer.cpp; sourceTree = "<group>"; };
31863184
0FDE87FA1DFE6E500064C390 /* SpaceTimeScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpaceTimeScheduler.cpp; sourceTree = "<group>"; };
31873185
0FDE87FB1DFE6E500064C390 /* SpaceTimeScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpaceTimeScheduler.h; sourceTree = "<group>"; };
31883186
0FDF67D01D9C6086001B9825 /* B3Kind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3Kind.cpp; path = b3/B3Kind.cpp; sourceTree = "<group>"; };
@@ -5637,7 +5635,6 @@
56375635
0FA7620A1DB959F600B7A2FD /* AllocatingScope.h */,
56385636
0F9630351D4192C3005609D9 /* AllocatorAttributes.cpp */,
56395637
0F9630361D4192C3005609D9 /* AllocatorAttributes.h */,
5640-
0FDE87F81DFD0C6D0064C390 /* CellContainer.cpp */,
56415638
0F070A421D543A89006E7232 /* CellContainer.h */,
56425639
0F070A431D543A89006E7232 /* CellContainerInlines.h */,
56435640
0F1C3DD91BBCE09E00E523E4 /* CellState.h */,
@@ -10257,7 +10254,6 @@
1025710254
0FB1058B1675483100F8AB6E /* ProfilerOSRExit.cpp in Sources */,
1025810255
0FB1058D1675483700F8AB6E /* ProfilerOSRExitSite.cpp in Sources */,
1025910256
0F61832B1C45BF070072450B /* AirCustom.cpp in Sources */,
10260-
0FDE87F91DFD0C760064C390 /* CellContainer.cpp in Sources */,
1026110257
0F13912B16771C3A009CCB07 /* ProfilerProfiledBytecodes.cpp in Sources */,
1026210258
0FD3E40D1B618B6600C80E1E /* PropertyCondition.cpp in Sources */,
1026310259
E35CA1531DBC3A5C00F83516 /* DOMJITHeapRange.cpp in Sources */,

‎Source/JavaScriptCore/heap/CellContainer.cpp‎

Lines changed: 0 additions & 43 deletions
This file was deleted.

‎Source/JavaScriptCore/heap/CellContainer.h‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ class CellContainer {
8484
bool isMarked(HeapCell*) const;
8585
bool isMarked(HeapVersion markingVersion, HeapCell*) const;
8686

87-
bool isNewlyAllocated(HeapCell*) const;
88-
8987
void noteMarked();
9088
void assertValidCell(VM&, HeapCell*) const;
9189

‎Source/JavaScriptCore/heap/MarkedAllocator.cpp‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,6 @@ void MarkedAllocator::addBlock(MarkedBlock::Handle* block)
270270
m_blocks.append(block);
271271
if (m_blocks.capacity() != oldCapacity) {
272272
forEachBitVector(
273-
NoLockingNecessary,
274273
[&] (FastBitVector& vector) {
275274
ASSERT_UNUSED(vector, vector.numBits() == oldCapacity);
276275
});
@@ -279,7 +278,6 @@ void MarkedAllocator::addBlock(MarkedBlock::Handle* block)
279278

280279
LockHolder locker(m_bitvectorLock);
281280
forEachBitVector(
282-
locker,
283281
[&] (FastBitVector& vector) {
284282
vector.resize(m_blocks.capacity());
285283
});
@@ -291,7 +289,6 @@ void MarkedAllocator::addBlock(MarkedBlock::Handle* block)
291289
}
292290

293291
forEachBitVector(
294-
NoLockingNecessary,
295292
[&] (FastBitVector& vector) {
296293
ASSERT_UNUSED(vector, !vector[index]);
297294
});
@@ -312,7 +309,6 @@ void MarkedAllocator::removeBlock(MarkedBlock::Handle* block)
312309
m_freeBlockIndices.append(block->index());
313310

314311
forEachBitVector(
315-
holdLock(m_bitvectorLock),
316312
[&] (FastBitVector& vector) {
317313
vector[block->index()] = false;
318314
});
@@ -471,14 +467,12 @@ void MarkedAllocator::dumpBits(PrintStream& out)
471467
{
472468
unsigned maxNameLength = 0;
473469
forEachBitVectorWithName(
474-
NoLockingNecessary,
475470
[&] (FastBitVector&, const char* name) {
476471
unsigned length = strlen(name);
477472
maxNameLength = std::max(maxNameLength, length);
478473
});
479474

480475
forEachBitVectorWithName(
481-
NoLockingNecessary,
482476
[&] (FastBitVector& vector, const char* name) {
483477
out.print(" ", name, ": ");
484478
for (unsigned i = maxNameLength - strlen(name); i--;)

‎Source/JavaScriptCore/heap/MarkedAllocator.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class MarkedAllocator {
182182
#undef MARKED_ALLOCATOR_BIT_ACCESSORS
183183

184184
template<typename Func>
185-
void forEachBitVector(const AbstractLocker&, const Func& func)
185+
void forEachBitVector(const Func& func)
186186
{
187187
#define MARKED_ALLOCATOR_BIT_CALLBACK(lowerBitName, capitalBitName) \
188188
func(m_ ## lowerBitName);
@@ -191,7 +191,7 @@ class MarkedAllocator {
191191
}
192192

193193
template<typename Func>
194-
void forEachBitVectorWithName(const AbstractLocker&, const Func& func)
194+
void forEachBitVectorWithName(const Func& func)
195195
{
196196
#define MARKED_ALLOCATOR_BIT_CALLBACK(lowerBitName, capitalBitName) \
197197
func(m_ ## lowerBitName, #capitalBitName);

‎Source/JavaScriptCore/heap/MarkedBlock.cpp‎

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ MarkedBlock::Handle* MarkedBlock::tryCreate(Heap& heap)
4444
if (computeBalance) {
4545
balance++;
4646
if (!(balance % 10))
47-
dataLog("MarkedBlock Balance: ", balance, "\n");
47+
dataLog(toCString("MarkedBlock Balance: ", balance, "\n"));
4848
}
4949
void* blockSpace = tryFastAlignedMalloc(blockSize, blockSize);
5050
if (!blockSpace)
@@ -71,7 +71,7 @@ MarkedBlock::Handle::~Handle()
7171
if (computeBalance) {
7272
balance--;
7373
if (!(balance % 10))
74-
dataLog("MarkedBlock Balance: ", balance, "\n");
74+
dataLog(toCString("MarkedBlock Balance: ", balance, "\n"));
7575
}
7676
removeFromAllocator();
7777
m_block->~MarkedBlock();
@@ -85,7 +85,7 @@ MarkedBlock::MarkedBlock(VM& vm, Handle& handle)
8585
, m_vm(&vm)
8686
{
8787
if (false)
88-
dataLog(RawPointer(this), ": Allocated.\n");
88+
dataLog(toCString(RawPointer(this), ": Allocated.\n"));
8989
}
9090

9191
template<MarkedBlock::Handle::EmptyMode emptyMode, MarkedBlock::Handle::SweepMode sweepMode, MarkedBlock::Handle::SweepDestructionMode destructionMode, MarkedBlock::Handle::ScribbleMode scribbleMode, MarkedBlock::Handle::NewlyAllocatedMode newlyAllocatedMode, MarkedBlock::Handle::MarksMode marksMode>
@@ -98,22 +98,19 @@ FreeList MarkedBlock::Handle::specializedSweep()
9898
MarkedBlock& block = this->block();
9999

100100
if (false)
101-
dataLog(RawPointer(this), "/", RawPointer(&block), ": MarkedBlock::Handle::specializedSweep!\n");
101+
dataLog(toCString(RawPointer(this), "/", RawPointer(&block), ": MarkedBlock::Handle::specializedSweep!\n"));
102102

103103
if (Options::useBumpAllocator()
104104
&& emptyMode == IsEmpty
105105
&& newlyAllocatedMode == DoesNotHaveNewlyAllocated) {
106106

107107
// This is an incredibly powerful assertion that checks the sanity of our block bits.
108108
if (marksMode == MarksNotStale && !block.m_marks.isEmpty()) {
109-
WTF::dataFile().atomically(
110-
[&] (PrintStream& out) {
111-
out.print("Block ", RawPointer(&block), ": marks not empty!\n");
112-
out.print("Block lock is held: ", block.m_lock.isHeld(), "\n");
113-
out.print("Marking version of block: ", block.m_markingVersion, "\n");
114-
out.print("Marking version of heap: ", space()->markingVersion(), "\n");
115-
UNREACHABLE_FOR_PLATFORM();
116-
});
109+
dataLog(toCString("Block ", RawPointer(&block), ": marks not empty!\n"));
110+
dataLog(toCString("Block lock is held: ", block.m_lock.isHeld(), "\n"));
111+
dataLog(toCString("Marking version of block: ", block.m_markingVersion, "\n"));
112+
dataLog(toCString("Marking version of heap: ", space()->markingVersion(), "\n"));
113+
RELEASE_ASSERT_NOT_REACHED();
117114
}
118115

119116
char* startOfLastCell = static_cast<char*>(cellAlign(block.atoms() + m_endAtom - 1));
@@ -130,7 +127,7 @@ FreeList MarkedBlock::Handle::specializedSweep()
130127
block.m_lock.unlock();
131128
FreeList result = FreeList::bump(payloadEnd, payloadEnd - payloadBegin);
132129
if (false)
133-
dataLog("Quickly swept block ", RawPointer(this), " with cell size ", cellSize(), " and attributes ", m_attributes, ": ", result, "\n");
130+
dataLog(toCString("Quickly swept block ", RawPointer(this), " with cell size ", cellSize(), " and attributes ", m_attributes, ": ", result, "\n"));
134131
return result;
135132
}
136133

@@ -189,7 +186,7 @@ FreeList MarkedBlock::Handle::specializedSweep()
189186
else if (isEmpty)
190187
m_allocator->setIsEmpty(NoLockingNecessary, this, true);
191188
if (false)
192-
dataLog("Slowly swept block ", RawPointer(&block), " with cell size ", cellSize(), " and attributes ", m_attributes, ": ", result, "\n");
189+
dataLog(toCString("Slowly swept block ", RawPointer(&block), " with cell size ", cellSize(), " and attributes ", m_attributes, ": ", result, "\n"));
193190
return result;
194191
}
195192

@@ -265,7 +262,7 @@ FreeList MarkedBlock::Handle::sweepHelperSelectMarksMode()
265262
HeapVersion markingVersion = space()->markingVersion();
266263
bool marksAreUseful = !block().areMarksStale(markingVersion);
267264

268-
if (space()->isMarking())
265+
if (space()->isMarking() && heap()->collectionScope() == CollectionScope::Full)
269266
marksAreUseful |= block().marksConveyLivenessDuringMarking(markingVersion);
270267

271268
if (!marksAreUseful)
@@ -290,20 +287,20 @@ void MarkedBlock::Handle::stopAllocating(const FreeList& freeList)
290287
auto locker = holdLock(block().m_lock);
291288

292289
if (false)
293-
dataLog(RawPointer(this), ": MarkedBlock::Handle::stopAllocating!\n");
290+
dataLog(toCString(RawPointer(this), ": MarkedBlock::Handle::stopAllocating!\n"));
294291
ASSERT(!allocator()->isAllocated(NoLockingNecessary, this));
295292

296293
if (!isFreeListed()) {
297294
if (false)
298-
dataLog("There ain't no newly allocated.\n");
295+
dataLog(toCString("There ain't no newly allocated.\n"));
299296
// This means that we either didn't use this block at all for allocation since last GC,
300297
// or someone had already done stopAllocating() before.
301298
ASSERT(freeList.allocationWillFail());
302299
return;
303300
}
304301

305302
if (false)
306-
dataLog("Free list: ", freeList, "\n");
303+
dataLog(toCString("Free list: ", freeList, "\n"));
307304

308305
// Roll back to a coherent state for Heap introspection. Cells newly
309306
// allocated from our free list are not currently marked, so we need another
@@ -322,7 +319,7 @@ void MarkedBlock::Handle::stopAllocating(const FreeList& freeList)
322319
freeList,
323320
[&] (HeapCell* cell) {
324321
if (false)
325-
dataLog("Free cell: ", RawPointer(cell), "\n");
322+
dataLog(toCString("Free cell: ", RawPointer(cell), "\n"));
326323
if (m_attributes.destruction == NeedsDestruction)
327324
cell->zap();
328325
clearNewlyAllocated(cell);
@@ -349,13 +346,13 @@ FreeList MarkedBlock::Handle::resumeAllocating()
349346
auto locker = holdLock(block().m_lock);
350347

351348
if (false)
352-
dataLog(RawPointer(this), ": MarkedBlock::Handle::resumeAllocating!\n");
349+
dataLog(toCString(RawPointer(this), ": MarkedBlock::Handle::resumeAllocating!\n"));
353350
ASSERT(!allocator()->isAllocated(NoLockingNecessary, this));
354351
ASSERT(!isFreeListed());
355352

356353
if (!hasAnyNewlyAllocated()) {
357354
if (false)
358-
dataLog("There ain't no newly allocated.\n");
355+
dataLog(toCString("There ain't no newly allocated.\n"));
359356
// This means we had already exhausted the block when we stopped allocation.
360357
return FreeList();
361358
}
@@ -404,7 +401,7 @@ void MarkedBlock::aboutToMarkSlow(HeapVersion markingVersion)
404401
if (handle().allocator()->isAllocated(holdLock(allocator->bitvectorLock()), &handle())
405402
|| !marksConveyLivenessDuringMarking(markingVersion)) {
406403
if (false)
407-
dataLog(RawPointer(this), ": Clearing marks without doing anything else.\n");
404+
dataLog(toCString(RawPointer(this), ": Clearing marks without doing anything else.\n"));
408405
// We already know that the block is full and is already recognized as such, or that the
409406
// block did not survive the previous GC. So, we can clear mark bits the old fashioned
410407
// way. Note that it's possible for such a block to have newlyAllocated with an up-to-
@@ -414,7 +411,7 @@ void MarkedBlock::aboutToMarkSlow(HeapVersion markingVersion)
414411
m_marks.clearAll();
415412
} else {
416413
if (false)
417-
dataLog(RawPointer(this), ": Doing things.\n");
414+
dataLog(toCString(RawPointer(this), ": Doing things.\n"));
418415
HeapVersion newlyAllocatedVersion = space()->newlyAllocatedVersion();
419416
if (handle().m_newlyAllocatedVersion == newlyAllocatedVersion) {
420417
// Merge the contents of marked into newlyAllocated. If we get the full set of bits
@@ -480,7 +477,7 @@ void MarkedBlock::Handle::didConsumeFreeList()
480477
{
481478
auto locker = holdLock(block().m_lock);
482479
if (false)
483-
dataLog(RawPointer(this), ": MarkedBlock::Handle::didConsumeFreeList!\n");
480+
dataLog(toCString(RawPointer(this), ": MarkedBlock::Handle::didConsumeFreeList!\n"));
484481
ASSERT(isFreeListed());
485482
m_isFreeListed = false;
486483
allocator()->setIsAllocated(NoLockingNecessary, this, true);
@@ -576,16 +573,6 @@ void MarkedBlock::assertValidCell(VM& vm, HeapCell* cell) const
576573
}
577574
#endif
578575

579-
void MarkedBlock::Handle::dumpState(PrintStream& out)
580-
{
581-
CommaPrinter comma;
582-
allocator()->forEachBitVectorWithName(
583-
holdLock(allocator()->bitvectorLock()),
584-
[&] (FastBitVector& bitvector, const char* name) {
585-
out.print(comma, name, ":", bitvector[index()] ? "YES" : "no");
586-
});
587-
}
588-
589576
} // namespace JSC
590577

591578
namespace WTF {

0 commit comments

Comments
 (0)