diff options
Diffstat (limited to 'deps/v8/src/compiler/generic-node-inl.h')
-rw-r--r-- | deps/v8/src/compiler/generic-node-inl.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/deps/v8/src/compiler/generic-node-inl.h b/deps/v8/src/compiler/generic-node-inl.h index 51d1a50162..c2dc24ee83 100644 --- a/deps/v8/src/compiler/generic-node-inl.h +++ b/deps/v8/src/compiler/generic-node-inl.h @@ -64,12 +64,13 @@ void GenericNode<B, S>::ReplaceUses(GenericNode* replace_to) { if (replace_to->last_use_ == NULL) { DCHECK_EQ(NULL, replace_to->first_use_); replace_to->first_use_ = first_use_; - } else { + replace_to->last_use_ = last_use_; + } else if (first_use_ != NULL) { DCHECK_NE(NULL, replace_to->first_use_); replace_to->last_use_->next = first_use_; first_use_->prev = replace_to->last_use_; + replace_to->last_use_ = last_use_; } - replace_to->last_use_ = last_use_; replace_to->use_count_ += use_count_; use_count_ = 0; first_use_ = NULL; @@ -141,7 +142,7 @@ template <class B, class S> void GenericNode<B, S>::EnsureAppendableInputs(Zone* zone) { if (!has_appendable_inputs_) { void* deque_buffer = zone->New(sizeof(InputDeque)); - InputDeque* deque = new (deque_buffer) InputDeque(ZoneInputAllocator(zone)); + InputDeque* deque = new (deque_buffer) InputDeque(zone); for (int i = 0; i < input_count_; ++i) { deque->push_back(inputs_.static_[i]); } @@ -177,6 +178,16 @@ void GenericNode<B, S>::InsertInput(Zone* zone, int index, } template <class B, class S> +void GenericNode<B, S>::RemoveInput(int index) { + DCHECK(index >= 0 && index < InputCount()); + // TODO(turbofan): Optimize this implementation! + for (; index < InputCount() - 1; ++index) { + ReplaceInput(index, InputAt(index + 1)); + } + TrimInputCount(InputCount() - 1); +} + +template <class B, class S> void GenericNode<B, S>::AppendUse(Use* use) { use->next = NULL; use->prev = last_use_; |