Index: Source/core/rendering/FastTextAutosizer.cpp |
diff --git a/Source/core/rendering/FastTextAutosizer.cpp b/Source/core/rendering/FastTextAutosizer.cpp |
index 7d9c5172dc9c58b62cd208684b087fa016f9e9ae..d008a2aee61947041e671fc11d6efbb47d2c1932 100644 |
--- a/Source/core/rendering/FastTextAutosizer.cpp |
+++ b/Source/core/rendering/FastTextAutosizer.cpp |
@@ -74,6 +74,51 @@ FastTextAutosizer::FastTextAutosizer(const Document* document) |
{ |
} |
+static void printFingerprintAndSuperclusterStats(FastTextAutosizer::SuperclusterMap& superclusters, FastTextAutosizer::FingerprintMapper& fingerprintMapper) |
+{ |
+ fprintf(stderr, "fingerprint and supercluster stats\n"); |
+ fprintf(stderr, "==================================\n"); |
+ fprintf(stderr, "Superclusters:\n"); |
+ int superclusterNumber = 0; |
+ for (FastTextAutosizer::SuperclusterMap::iterator superIter = superclusters.begin(); superIter != superclusters.end(); ++superIter) { |
+ superclusterNumber++; |
+ fprintf(stderr, " #%d) supercluster fingerprint %u and blocks: ", superclusterNumber, superIter->key); |
+ const FastTextAutosizer::BlockSet* roots = superIter->value->m_roots; |
+ bool isFirst = true; |
+ for (FastTextAutosizer::BlockSet::iterator blockIter = roots->begin(); blockIter != roots->end(); ++blockIter) { |
+ const RenderBlock* block = (*blockIter); |
+ if (!isFirst) |
+ fprintf(stderr, ", "); |
+ fprintf(stderr, "%p/%s", block, block->node() ? block->node()->nodeName().utf8().data() : "unknown"); |
+ isFirst = false; |
+ } |
+ fprintf(stderr, "\n"); |
+ } |
+ fprintf(stderr, "Fingerprints for blocks:\n"); |
+ int blockNumber = 0; |
+ for (FastTextAutosizer::FingerprintMapper::FingerprintMap::iterator fingerIter = fingerprintMapper.m_fingerprints.begin(); fingerIter != fingerprintMapper.m_fingerprints.end(); ++fingerIter) { |
+ blockNumber++; |
+ const RenderObject* block = fingerIter->key; |
+ fprintf(stderr, " #%d) block %p/%s has fingerprint %u\n", blockNumber, block, block->node() ? block->node()->nodeName().utf8().data() : "unknown", fingerIter->value); |
+ } |
+ fprintf(stderr, "Blocks for fingerprints:\n"); |
+ int fingerprintNumber = 0; |
+ for (FastTextAutosizer::FingerprintMapper::ReverseFingerprintMap::iterator blocksIter = fingerprintMapper.m_blocksForFingerprint.begin(); blocksIter != fingerprintMapper.m_blocksForFingerprint.end(); ++blocksIter) { |
+ fingerprintNumber++; |
+ fprintf(stderr, " #%d) fingerprint %u and blocks: ", fingerprintNumber, blocksIter->key); |
+ FastTextAutosizer::BlockSet* blocks = blocksIter->value.get(); |
+ bool isFirst = true; |
+ for (FastTextAutosizer::BlockSet::iterator blockIter = blocks->begin(); blockIter != blocks->end(); ++blockIter) { |
+ const RenderBlock* block = (*blockIter); |
+ if (!isFirst) |
+ fprintf(stderr, ", "); |
+ fprintf(stderr, "%p/%s", block, block->node() ? block->node()->nodeName().utf8().data() : "unknown"); |
+ isFirst = false; |
+ } |
+ fprintf(stderr, "\n"); |
+ } |
+} |
+ |
void FastTextAutosizer::record(const RenderBlock* block) |
{ |
if (!enabled()) |
@@ -86,6 +131,8 @@ void FastTextAutosizer::record(const RenderBlock* block) |
if (Fingerprint fingerprint = computeFingerprint(block)) |
m_fingerprintMapper.addTentativeClusterRoot(block, fingerprint); |
+ fprintf(stderr, "after record(%p)\n", block); |
+ printFingerprintAndSuperclusterStats(m_superclusters, m_fingerprintMapper); |
} |
void FastTextAutosizer::destroy(const RenderBlock* block) |
@@ -95,6 +142,8 @@ void FastTextAutosizer::destroy(const RenderBlock* block) |
ASSERT(!m_blocksThatHaveBegunLayout.contains(block)); |
m_fingerprintMapper.remove(block); |
+ fprintf(stderr, "after destroy(%p)\n", block); |
+ printFingerprintAndSuperclusterStats(m_superclusters, m_fingerprintMapper); |
} |
void FastTextAutosizer::prepareClusterStack(const RenderObject* renderer) |
@@ -115,6 +164,9 @@ void FastTextAutosizer::prepareClusterStack(const RenderObject* renderer) |
void FastTextAutosizer::beginLayout(RenderBlock* block) |
{ |
+ fprintf(stderr, "beginLayout(%p)\n", block); |
+ printFingerprintAndSuperclusterStats(m_superclusters, m_fingerprintMapper); |
+ |
ASSERT(enabled()); |
#ifndef NDEBUG |
m_blocksThatHaveBegunLayout.add(block); |
@@ -467,6 +519,8 @@ float FastTextAutosizer::clusterMultiplier(Cluster* cluster) |
float FastTextAutosizer::superclusterMultiplier(Supercluster* supercluster) |
{ |
if (!supercluster->m_multiplier) { |
+ fprintf(stderr, "superclusterMultiplier\n"); |
+ printFingerprintAndSuperclusterStats(m_superclusters, m_fingerprintMapper); |
const BlockSet* roots = supercluster->m_roots; |
BlockSet widthProviders; |
for (BlockSet::iterator it = roots->begin(); it != roots->end(); ++it) |
@@ -489,6 +543,7 @@ float FastTextAutosizer::superclusterMultiplier(Supercluster* supercluster) |
const RenderBlock* FastTextAutosizer::clusterWidthProvider(const RenderBlock* root) |
{ |
+ fprintf(stderr, "clusterWidthProvider(%p)\n", root); |
if (root->isTableCell()) |
return toRenderTableCell(root)->table(); |
if (root->isTable()) |