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