Commit 0feb3718 authored by sigbjornf@opera.com's avatar sigbjornf@opera.com

Oilpan: move a page's UndoStack to the heap.

Avoids its unnecessary persistents by doing so.

R=tkent@chromium.org
BUG=357163

Review URL: https://codereview.chromium.org/333313002

git-svn-id: svn://svn.chromium.org/blink/trunk@176217 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 9e208603
......@@ -45,13 +45,11 @@ UndoStack::UndoStack()
{
}
UndoStack::~UndoStack()
{
}
DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(UndoStack)
PassOwnPtr<UndoStack> UndoStack::create()
PassOwnPtrWillBeRawPtr<UndoStack> UndoStack::create()
{
return adoptPtr(new UndoStack());
return adoptPtrWillBeNoop(new UndoStack());
}
void UndoStack::registerUndoStep(PassRefPtrWillBeRawPtr<UndoStep> step)
......@@ -75,7 +73,7 @@ void UndoStack::didUnloadFrame(const LocalFrame& frame)
filterOutUndoSteps(m_redoStack, frame);
}
void UndoStack::filterOutUndoSteps(WillBePersistentUndoStepStack& stack, const LocalFrame& frame)
void UndoStack::filterOutUndoSteps(UndoStepStack& stack, const LocalFrame& frame)
{
UndoStepStack newStack;
while (!stack.isEmpty()) {
......@@ -122,4 +120,10 @@ void UndoStack::redo()
}
}
void UndoStack::trace(Visitor* visitor)
{
visitor->trace(m_undoStack);
visitor->trace(m_redoStack);
}
} // namesace WebCore
......@@ -40,11 +40,10 @@ namespace WebCore {
class LocalFrame;
class UndoStep;
class UndoStack {
class UndoStack FINAL : public NoBaseWillBeGarbageCollected<UndoStack> {
DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(UndoStack)
public:
static PassOwnPtr<UndoStack> create();
~UndoStack();
static PassOwnPtrWillBeRawPtr<UndoStack> create();
void registerUndoStep(PassRefPtrWillBeRawPtr<UndoStep>);
void registerRedoStep(PassRefPtrWillBeRawPtr<UndoStep>);
......@@ -54,17 +53,18 @@ public:
void undo();
void redo();
void trace(Visitor*);
private:
UndoStack();
typedef WillBeHeapDeque<RefPtrWillBeMember<UndoStep> > UndoStepStack;
typedef WillBePersistentHeapDeque<RefPtrWillBeMember<UndoStep> > WillBePersistentUndoStepStack;
void filterOutUndoSteps(WillBePersistentUndoStepStack&, const LocalFrame&);
void filterOutUndoSteps(UndoStepStack&, const LocalFrame&);
bool m_inRedo;
WillBePersistentUndoStepStack m_undoStack;
WillBePersistentUndoStepStack m_redoStack;
UndoStepStack m_undoStack;
UndoStepStack m_redoStack;
};
} // namespace WebCore
......
......@@ -594,6 +594,7 @@ void Page::trace(Visitor* visitor)
visitor->trace(m_dragCaretController);
visitor->trace(m_dragController);
visitor->trace(m_pointerLockController);
visitor->trace(m_undoStack);
visitor->trace(m_validationMessageClient);
visitor->trace(m_multisamplingChangedObservers);
visitor->trace(m_frameHost);
......
......@@ -257,7 +257,7 @@ private:
const OwnPtr<InspectorController> m_inspectorController;
const OwnPtrWillBeMember<PointerLockController> m_pointerLockController;
OwnPtr<ScrollingCoordinator> m_scrollingCoordinator;
const OwnPtr<UndoStack> m_undoStack;
const OwnPtrWillBeMember<UndoStack> m_undoStack;
RefPtr<Frame> m_mainFrame;
......
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