| 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())
|
|
|