| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1583 : ObjectLiteral::kNoFlags; | 1583 : ObjectLiteral::kNoFlags; |
| 1584 flags |= expr->has_function() | 1584 flags |= expr->has_function() |
| 1585 ? ObjectLiteral::kHasFunction | 1585 ? ObjectLiteral::kHasFunction |
| 1586 : ObjectLiteral::kNoFlags; | 1586 : ObjectLiteral::kNoFlags; |
| 1587 __ mov(r0, Operand(Smi::FromInt(flags))); | 1587 __ mov(r0, Operand(Smi::FromInt(flags))); |
| 1588 __ Push(r3, r2, r1, r0); | 1588 __ Push(r3, r2, r1, r0); |
| 1589 int properties_count = constant_properties->length() / 2; | 1589 int properties_count = constant_properties->length() / 2; |
| 1590 if (expr->depth() > 1) { | 1590 if (expr->depth() > 1) { |
| 1591 __ CallRuntime(Runtime::kCreateObjectLiteral, 4); | 1591 __ CallRuntime(Runtime::kCreateObjectLiteral, 4); |
| 1592 } else if (flags != ObjectLiteral::kFastElements || | 1592 } else if (flags != ObjectLiteral::kFastElements || |
| 1593 properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) { | 1593 properties_count > |
| 1594 FastCloneShallowObjectStub::MaximumClonedProperties()) { |
| 1594 __ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4); | 1595 __ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4); |
| 1595 } else { | 1596 } else { |
| 1596 FastCloneShallowObjectStub stub(properties_count); | 1597 FastCloneShallowObjectStub stub(properties_count); |
| 1597 __ CallStub(&stub); | 1598 __ CallStub(&stub); |
| 1598 } | 1599 } |
| 1599 | 1600 |
| 1600 // If result_saved is true the result is on top of the stack. If | 1601 // If result_saved is true the result is on top of the stack. If |
| 1601 // result_saved is false the result is in r0. | 1602 // result_saved is false the result is in r0. |
| 1602 bool result_saved = false; | 1603 bool result_saved = false; |
| 1603 | 1604 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1713 __ Push(r3, r2, r1); | 1714 __ Push(r3, r2, r1); |
| 1714 if (has_fast_elements && constant_elements_values->map() == | 1715 if (has_fast_elements && constant_elements_values->map() == |
| 1715 isolate()->heap()->fixed_cow_array_map()) { | 1716 isolate()->heap()->fixed_cow_array_map()) { |
| 1716 FastCloneShallowArrayStub stub( | 1717 FastCloneShallowArrayStub stub( |
| 1717 FastCloneShallowArrayStub::COPY_ON_WRITE_ELEMENTS, length); | 1718 FastCloneShallowArrayStub::COPY_ON_WRITE_ELEMENTS, length); |
| 1718 __ CallStub(&stub); | 1719 __ CallStub(&stub); |
| 1719 __ IncrementCounter( | 1720 __ IncrementCounter( |
| 1720 isolate()->counters()->cow_arrays_created_stub(), 1, r1, r2); | 1721 isolate()->counters()->cow_arrays_created_stub(), 1, r1, r2); |
| 1721 } else if (expr->depth() > 1) { | 1722 } else if (expr->depth() > 1) { |
| 1722 __ CallRuntime(Runtime::kCreateArrayLiteral, 3); | 1723 __ CallRuntime(Runtime::kCreateArrayLiteral, 3); |
| 1723 } else if (length > FastCloneShallowArrayStub::kMaximumClonedLength) { | 1724 } else if (length > FastCloneShallowArrayStub::MaximumClonedLength()) { |
| 1724 __ CallRuntime(Runtime::kCreateArrayLiteralShallow, 3); | 1725 __ CallRuntime(Runtime::kCreateArrayLiteralShallow, 3); |
| 1725 } else { | 1726 } else { |
| 1726 ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) || | 1727 ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) || |
| 1727 FLAG_smi_only_arrays); | 1728 FLAG_smi_only_arrays); |
| 1728 FastCloneShallowArrayStub::Mode mode = has_fast_elements | 1729 FastCloneShallowArrayStub::Mode mode = has_fast_elements |
| 1729 ? FastCloneShallowArrayStub::CLONE_ELEMENTS | 1730 ? FastCloneShallowArrayStub::CLONE_ELEMENTS |
| 1730 : FastCloneShallowArrayStub::CLONE_ANY_ELEMENTS; | 1731 : FastCloneShallowArrayStub::CLONE_ANY_ELEMENTS; |
| 1731 FastCloneShallowArrayStub stub(mode, length); | 1732 FastCloneShallowArrayStub stub(mode, length); |
| 1732 __ CallStub(&stub); | 1733 __ CallStub(&stub); |
| 1733 } | 1734 } |
| (...skipping 2850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4584 *context_length = 0; | 4585 *context_length = 0; |
| 4585 return previous_; | 4586 return previous_; |
| 4586 } | 4587 } |
| 4587 | 4588 |
| 4588 | 4589 |
| 4589 #undef __ | 4590 #undef __ |
| 4590 | 4591 |
| 4591 } } // namespace v8::internal | 4592 } } // namespace v8::internal |
| 4592 | 4593 |
| 4593 #endif // V8_TARGET_ARCH_ARM | 4594 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |