| Index: src/compiler/js-graph.cc
|
| diff --git a/src/compiler/js-graph.cc b/src/compiler/js-graph.cc
|
| index 8171f1b9a808a6fe72d9997c556db411ce78b8ed..9363268513a034d0304870243ee8b942afb3a004 100644
|
| --- a/src/compiler/js-graph.cc
|
| +++ b/src/compiler/js-graph.cc
|
| @@ -184,15 +184,17 @@ Node* JSGraph::ExternalConstant(ExternalReference reference) {
|
|
|
|
|
| Node* JSGraph::EmptyFrameState() {
|
| - if (cached_nodes_[kEmptyFrameState] == nullptr) {
|
| - Node* values = graph()->NewNode(common()->StateValues(0));
|
| - Node* state_node = graph()->NewNode(
|
| + Node* empty_frame_state = cached_nodes_[kEmptyFrameState];
|
| + if (!empty_frame_state || empty_frame_state->IsDead()) {
|
| + Node* state_values = graph()->NewNode(common()->StateValues(0));
|
| + empty_frame_state = graph()->NewNode(
|
| common()->FrameState(JS_FRAME, BailoutId::None(),
|
| OutputFrameStateCombine::Ignore()),
|
| - values, values, values, NoContextConstant(), UndefinedConstant());
|
| - cached_nodes_[kEmptyFrameState] = state_node;
|
| + state_values, state_values, state_values, NoContextConstant(),
|
| + UndefinedConstant());
|
| + cached_nodes_[kEmptyFrameState] = empty_frame_state;
|
| }
|
| - return cached_nodes_[kEmptyFrameState];
|
| + return empty_frame_state;
|
| }
|
|
|
|
|
| @@ -204,7 +206,9 @@ Node* JSGraph::DeadControl() {
|
| void JSGraph::GetCachedNodes(NodeVector* nodes) {
|
| cache_.GetCachedNodes(nodes);
|
| for (size_t i = 0; i < arraysize(cached_nodes_); i++) {
|
| - if (cached_nodes_[i]) nodes->push_back(cached_nodes_[i]);
|
| + if (Node* node = cached_nodes_[i]) {
|
| + if (!node->IsDead()) nodes->push_back(node);
|
| + }
|
| }
|
| }
|
|
|
|
|