diff options
Diffstat (limited to 'deps/v8/src/ast/ast.cc')
-rw-r--r-- | deps/v8/src/ast/ast.cc | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/deps/v8/src/ast/ast.cc b/deps/v8/src/ast/ast.cc index 710cbb40a5..da14d87475 100644 --- a/deps/v8/src/ast/ast.cc +++ b/deps/v8/src/ast/ast.cc @@ -514,18 +514,17 @@ bool ArrayLiteral::is_empty() const { } int ArrayLiteral::InitDepthAndFlags() { - DCHECK_LT(first_spread_index_, 0); if (is_initialized()) return depth(); - int constants_length = values()->length(); + int constants_length = + first_spread_index_ >= 0 ? first_spread_index_ : values()->length(); // Fill in the literals. - bool is_simple = true; + bool is_simple = first_spread_index_ < 0; int depth_acc = 1; int array_index = 0; for (; array_index < constants_length; array_index++) { Expression* element = values()->at(array_index); - DCHECK(!element->IsSpread()); MaterializedLiteral* literal = element->AsMaterializedLiteral(); if (literal != nullptr) { int subliteral_depth = literal->InitDepthAndFlags() + 1; @@ -546,11 +545,10 @@ int ArrayLiteral::InitDepthAndFlags() { } void ArrayLiteral::BuildConstantElements(Isolate* isolate) { - DCHECK_LT(first_spread_index_, 0); - if (!constant_elements_.is_null()) return; - int constants_length = values()->length(); + int constants_length = + first_spread_index_ >= 0 ? first_spread_index_ : values()->length(); ElementsKind kind = FIRST_FAST_ELEMENTS_KIND; Handle<FixedArray> fixed_array = isolate->factory()->NewFixedArrayWithHoles(constants_length); @@ -614,11 +612,6 @@ bool ArrayLiteral::IsFastCloningSupported() const { ConstructorBuiltins::kMaximumClonedShallowArrayElements; } -void ArrayLiteral::RewindSpreads() { - values_->Rewind(first_spread_index_); - first_spread_index_ = -1; -} - bool MaterializedLiteral::IsSimple() const { if (IsArrayLiteral()) return AsArrayLiteral()->is_simple(); if (IsObjectLiteral()) return AsObjectLiteral()->is_simple(); @@ -812,6 +805,10 @@ Call::CallType Call::GetCallType() const { } } + if (expression()->IsResolvedProperty()) { + return RESOLVED_PROPERTY_CALL; + } + return OTHER_CALL; } |