| Index: Source/WebCore/rendering/RenderBlock.cpp | 
| =================================================================== | 
| --- Source/WebCore/rendering/RenderBlock.cpp	(revision 115616) | 
| +++ Source/WebCore/rendering/RenderBlock.cpp	(working copy) | 
| @@ -481,7 +481,8 @@ | 
| } | 
|  | 
| // Split our anonymous blocks. | 
| -    RenderObject* newBeforeChild = splitAnonymousBlocksAroundChild(beforeChild); | 
| +    RenderObject* newBeforeChild = splitAnonymousBoxesAroundChild(beforeChild); | 
| + | 
|  | 
| // Create a new anonymous box of the appropriate type. | 
| RenderBlock* newBox = newChildHasColumnSpan ? createAnonymousColumnSpanBlock() : createAnonymousColumnsBlock(); | 
| @@ -681,94 +682,6 @@ | 
| post->setNeedsLayoutAndPrefWidthsRecalc(); | 
| } | 
|  | 
| -RenderObject* RenderBlock::splitAnonymousBlocksAroundChild(RenderObject* beforeChild) | 
| -{ | 
| -    if (beforeChild->isTablePart()) | 
| -        beforeChild = splitTablePartsAroundChild(beforeChild); | 
| - | 
| -    while (beforeChild->parent() != this) { | 
| -        RenderBlock* blockToSplit = toRenderBlock(beforeChild->parent()); | 
| -        if (blockToSplit->firstChild() != beforeChild) { | 
| -            // We have to split the parentBlock into two blocks. | 
| -            RenderBlock* post = toRenderBlock(blockToSplit->createAnonymousBoxWithSameTypeAs(this)); | 
| -            post->setChildrenInline(blockToSplit->childrenInline()); | 
| -            RenderBlock* parentBlock = toRenderBlock(blockToSplit->parent()); | 
| -            parentBlock->children()->insertChildNode(parentBlock, post, blockToSplit->nextSibling()); | 
| -            blockToSplit->moveChildrenTo(post, beforeChild, 0, blockToSplit->hasLayer()); | 
| -            post->setNeedsLayoutAndPrefWidthsRecalc(); | 
| -            blockToSplit->setNeedsLayoutAndPrefWidthsRecalc(); | 
| -            beforeChild = post; | 
| -        } else | 
| -            beforeChild = blockToSplit; | 
| -    } | 
| -    return beforeChild; | 
| -} | 
| - | 
| -static void markTableForSectionAndCellRecalculation(RenderObject* child) | 
| -{ | 
| -    RenderObject* curr = child; | 
| -    while (!curr->isTable()) { | 
| -        if (curr->isTableSection()) | 
| -            toRenderTableSection(curr)->setNeedsCellRecalc(); | 
| -        curr = curr->parent(); | 
| -    } | 
| - | 
| -    RenderTable* table = toRenderTable(curr); | 
| -    table->setNeedsSectionRecalc(); | 
| -    table->setNeedsLayoutAndPrefWidthsRecalc(); | 
| -} | 
| - | 
| -static void moveAllTableChildrenTo(RenderObject* fromTablePart, RenderTable* toTable, RenderObject* startChild) | 
| -{ | 
| -    for (RenderObject* curr = startChild; curr;) { | 
| -        // Need to store next sibling as we won't have access to it | 
| -        // after we are removed from table. | 
| -        RenderObject* next = curr->nextSibling(); | 
| -        fromTablePart->removeChild(curr); | 
| -        toTable->addChild(curr); | 
| -        if (curr->isTableSection()) | 
| -            toRenderTableSection(curr)->setNeedsCellRecalc(); | 
| -        curr->setNeedsLayoutAndPrefWidthsRecalc(); | 
| -        curr = next; | 
| -    } | 
| - | 
| -    // This marks fromTable for section and cell recalculation. | 
| -    markTableForSectionAndCellRecalculation(fromTablePart); | 
| - | 
| -    // startChild is now part of toTable. This marks toTable for section and cell recalculation. | 
| -    markTableForSectionAndCellRecalculation(startChild); | 
| -} | 
| - | 
| -RenderObject* RenderBlock::splitTablePartsAroundChild(RenderObject* beforeChild) | 
| -{ | 
| -    ASSERT(beforeChild->isTablePart()); | 
| - | 
| -    while (beforeChild->parent() != this) { | 
| -        RenderObject* tablePartToSplit = beforeChild->parent(); | 
| -        if (!tablePartToSplit->isTablePart() && !tablePartToSplit->isTable()) | 
| -            break; | 
| -        if (tablePartToSplit->firstChild() != beforeChild) { | 
| -            // Get our table container. | 
| -            RenderObject* curr = tablePartToSplit; | 
| -            while (!curr->isTable()) | 
| -                curr = curr->parent(); | 
| -            RenderTable* table = toRenderTable(curr); | 
| - | 
| -            // Create an anonymous table container next to our table container. | 
| -            RenderBlock* parentBlock = toRenderBlock(table->parent()); | 
| -            RenderTable* postTable = RenderTable::createAnonymousWithParentRenderer(parentBlock); | 
| -            parentBlock->children()->insertChildNode(parentBlock, postTable, table->nextSibling()); | 
| - | 
| -            // Move all the children from beforeChild to the newly created anonymous table container. | 
| -            moveAllTableChildrenTo(tablePartToSplit, postTable, beforeChild); | 
| - | 
| -            beforeChild = postTable; | 
| -        } else | 
| -            beforeChild = tablePartToSplit; | 
| -    } | 
| -    return beforeChild; | 
| -} | 
| - | 
| void RenderBlock::makeChildrenAnonymousColumnBlocks(RenderObject* beforeChild, RenderBlock* newBlockBox, RenderObject* newChild) | 
| { | 
| RenderBlock* pre = 0; | 
| @@ -780,7 +693,7 @@ | 
| block->deleteLineBoxTree(); | 
|  | 
| if (beforeChild && beforeChild->parent() != this) | 
| -        beforeChild = splitAnonymousBlocksAroundChild(beforeChild); | 
| +        beforeChild = splitAnonymousBoxesAroundChild(beforeChild); | 
|  | 
| if (beforeChild != firstChild()) { | 
| pre = block->createAnonymousColumnsBlock(); | 
| @@ -890,7 +803,7 @@ | 
| return; | 
| } | 
|  | 
| -            beforeChild = splitTablePartsAroundChild(beforeChild); | 
| +            beforeChild = splitAnonymousBoxesAroundChild(beforeChild); | 
|  | 
| ASSERT(beforeChild->parent() == this); | 
| if (beforeChild->parent() != this) { | 
| @@ -1076,30 +989,6 @@ | 
| return rootBox; | 
| } | 
|  | 
| -void RenderBlock::moveChildTo(RenderBlock* toBlock, RenderObject* child, RenderObject* beforeChild, bool fullRemoveInsert) | 
| -{ | 
| -    ASSERT(this == child->parent()); | 
| -    ASSERT(!beforeChild || toBlock == beforeChild->parent()); | 
| -    if (fullRemoveInsert) { | 
| -        // Takes care of adding the new child correctly if toBlock and fromBlock | 
| -        // have different kind of children (block vs inline). | 
| -        toBlock->addChildIgnoringContinuation(children()->removeChildNode(this, child), beforeChild); | 
| -    } else | 
| -        toBlock->children()->insertChildNode(toBlock, children()->removeChildNode(this, child, false), beforeChild, false); | 
| -} | 
| - | 
| -void RenderBlock::moveChildrenTo(RenderBlock* toBlock, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, bool fullRemoveInsert) | 
| -{ | 
| -    ASSERT(!beforeChild || toBlock == beforeChild->parent()); | 
| - | 
| -    for (RenderObject* child = startChild; child && child != endChild; ) { | 
| -        // Save our next sibling as moveChildTo will clear it. | 
| -        RenderObject* nextSibling = child->nextSibling(); | 
| -        moveChildTo(toBlock, child, beforeChild, fullRemoveInsert); | 
| -        child = nextSibling; | 
| -    } | 
| -} | 
| - | 
| void RenderBlock::makeChildrenNonInline(RenderObject *insertionPoint) | 
| { | 
| // makeChildrenNonInline takes a block whose children are *all* inline and it | 
|  |