diff -r 000000000000 -r 6474c204b198 parser/html/nsHtml5TreeOpStage.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/parser/html/nsHtml5TreeOpStage.h Wed Dec 31 06:09:35 2014 +0100
@@ -0,0 +1,54 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsHtml5TreeOpStage_h
+#define nsHtml5TreeOpStage_h
+
+#include "mozilla/Mutex.h"
+#include "nsHtml5TreeOperation.h"
+#include "nsTArray.h"
+#include "nsAHtml5TreeOpSink.h"
+#include "nsHtml5SpeculativeLoad.h"
+
+class nsHtml5TreeOpStage : public nsAHtml5TreeOpSink {
+ public:
+
+ nsHtml5TreeOpStage();
+
+ virtual ~nsHtml5TreeOpStage();
+
+ /**
+ * Flush the operations from the tree operations from the argument
+ * queue unconditionally.
+ */
+ virtual void MoveOpsFrom(nsTArray& aOpQueue);
+
+ /**
+ * Retrieve the staged operations and speculative loads into the arguments.
+ */
+ void MoveOpsAndSpeculativeLoadsTo(nsTArray& aOpQueue,
+ nsTArray& aSpeculativeLoadQueue);
+
+ /**
+ * Move the speculative loads from the argument into the staging queue.
+ */
+ void MoveSpeculativeLoadsFrom(nsTArray& aSpeculativeLoadQueue);
+
+ /**
+ * Retrieve the staged speculative loads into the argument.
+ */
+ void MoveSpeculativeLoadsTo(nsTArray& aSpeculativeLoadQueue);
+
+#ifdef DEBUG
+ void AssertEmpty();
+#endif
+
+ private:
+ nsTArray mOpQueue;
+ nsTArray mSpeculativeLoadQueue;
+ mozilla::Mutex mMutex;
+
+};
+
+#endif /* nsHtml5TreeOpStage_h */