| Index: src/ast/ast.cc
|
| diff --git a/src/ast/ast.cc b/src/ast/ast.cc
|
| index d847f5449eecc2c300fdfea382a3ae67eb2332e1..fbc70c2abfaacf171fcea5b67b7c40beb7fa71b7 100644
|
| --- a/src/ast/ast.cc
|
| +++ b/src/ast/ast.cc
|
| @@ -574,6 +574,14 @@ void ObjectLiteral::BuildConstantProperties(Isolate* isolate) {
|
| set_depth(depth_acc);
|
| }
|
|
|
| +bool ObjectLiteral::IsFastCloningSupported() const {
|
| + // FastCloneShallowObjectStub doesn't copy elements, and object literals don't
|
| + // support copy-on-write (COW) elements for now.
|
| + // TODO(mvstanton): make object literals support COW elements.
|
| + return fast_elements() && has_shallow_properties() &&
|
| + properties_count() <=
|
| + FastCloneShallowObjectStub::kMaximumClonedProperties;
|
| +}
|
|
|
| void ArrayLiteral::BuildConstantElements(Isolate* isolate) {
|
| DCHECK_LT(first_spread_index_, 0);
|
| @@ -648,6 +656,11 @@ void ArrayLiteral::BuildConstantElements(Isolate* isolate) {
|
| set_depth(depth_acc);
|
| }
|
|
|
| +bool ArrayLiteral::IsFastCloningSupported() const {
|
| + return depth() <= 1 &&
|
| + values()->length() <=
|
| + FastCloneShallowArrayStub::kMaximumClonedElements;
|
| +}
|
|
|
| void ArrayLiteral::AssignFeedbackVectorSlots(Isolate* isolate,
|
| FeedbackVectorSpec* spec,
|
|
|