+
+ size_t numNodes() const { return phis.size() + size(); }
+ Node* node(size_t i) const
+ {
+ if (i < phis.size())
+ return phis[i];
+ return at(i - phis.size());
+ }
+ bool isPhiIndex(size_t i) const { return i < phis.size(); }
+
+ bool isInPhis(Node* node) const
+ {
+ for (size_t i = 0; i < phis.size(); ++i) {
+ if (phis[i] == node)
+ return true;
+ }
+ return false;
+ }
+
+ bool isInBlock(Node* myNode) const
+ {
+ for (size_t i = 0; i < numNodes(); ++i) {
+ if (node(i) == myNode)
+ return true;
+ }
+ return false;
+ }
+
+#define DFG_DEFINE_APPEND_NODE(templatePre, templatePost, typeParams, valueParamsComma, valueParams, valueArgs) \
+ templatePre typeParams templatePost Node* appendNode(Graph&, SpeculatedType valueParamsComma valueParams);
+ DFG_VARIADIC_TEMPLATE_FUNCTION(DFG_DEFINE_APPEND_NODE)
+#undef DFG_DEFINE_APPEND_NODE
+