namespace internal {
namespace compiler {
-void Node::CollectProjections(int projection_count, Node** projections) {
- for (int i = 0; i < projection_count; ++i) projections[i] = NULL;
+void Node::Kill() {
+ DCHECK_NOT_NULL(op());
+ RemoveAllInputs();
+ DCHECK(uses().empty());
+}
+
+
+void Node::CollectProjections(NodeVector* projections) {
+ for (size_t i = 0; i < projections->size(); i++) {
+ (*projections)[i] = NULL;
+ }
for (UseIter i = uses().begin(); i != uses().end(); ++i) {
if ((*i)->opcode() != IrOpcode::kProjection) continue;
- int32_t index = OpParameter<int32_t>(*i);
- DCHECK_GE(index, 0);
- DCHECK_LT(index, projection_count);
- DCHECK_EQ(NULL, projections[index]);
- projections[index] = *i;
+ size_t index = OpParameter<size_t>(*i);
+ DCHECK_LT(index, projections->size());
+ DCHECK_EQ(NULL, (*projections)[index]);
+ (*projections)[index] = *i;
}
}
-Node* Node::FindProjection(int32_t projection_index) {
+Node* Node::FindProjection(size_t projection_index) {
for (UseIter i = uses().begin(); i != uses().end(); ++i) {
if ((*i)->opcode() == IrOpcode::kProjection &&
- OpParameter<int32_t>(*i) == projection_index) {
+ OpParameter<size_t>(*i) == projection_index) {
return *i;
}
}
}
-OStream& operator<<(OStream& os, const Operator& op) { return op.PrintTo(os); }
-
-
-OStream& operator<<(OStream& os, const Node& n) {
+std::ostream& operator<<(std::ostream& os, const Node& n) {
os << n.id() << ": " << *n.op();
- if (n.op()->InputCount() != 0) {
+ if (n.InputCount() > 0) {
os << "(";
- for (int i = 0; i < n.op()->InputCount(); ++i) {
+ for (int i = 0; i < n.InputCount(); ++i) {
if (i != 0) os << ", ";
os << n.InputAt(i)->id();
}