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 1832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1843 length); | 1843 length); |
1844 __ CallStub(&stub); | 1844 __ CallStub(&stub); |
1845 __ IncrementCounter(isolate()->counters()->cow_arrays_created_stub(), | 1845 __ IncrementCounter(isolate()->counters()->cow_arrays_created_stub(), |
1846 1, a1, a2); | 1846 1, a1, a2); |
1847 } else if (expr->depth() > 1 || Serializer::enabled() || | 1847 } else if (expr->depth() > 1 || Serializer::enabled() || |
1848 length > FastCloneShallowArrayStub::kMaximumClonedLength) { | 1848 length > FastCloneShallowArrayStub::kMaximumClonedLength) { |
1849 __ li(a0, Operand(Smi::FromInt(flags))); | 1849 __ li(a0, Operand(Smi::FromInt(flags))); |
1850 __ Push(a3, a2, a1, a0); | 1850 __ Push(a3, a2, a1, a0); |
1851 __ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4); | 1851 __ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4); |
1852 } else { | 1852 } else { |
1853 FastCloneShallowArrayStub stub(isolate(), allocation_site_mode); | 1853 ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) || |
| 1854 FLAG_smi_only_arrays); |
| 1855 FastCloneShallowArrayStub::Mode mode = |
| 1856 FastCloneShallowArrayStub::CLONE_ANY_ELEMENTS; |
| 1857 |
| 1858 if (has_fast_elements) { |
| 1859 mode = FastCloneShallowArrayStub::CLONE_ELEMENTS; |
| 1860 } |
| 1861 |
| 1862 FastCloneShallowArrayStub stub(isolate(), mode, allocation_site_mode, |
| 1863 length); |
1854 __ CallStub(&stub); | 1864 __ CallStub(&stub); |
1855 } | 1865 } |
1856 | 1866 |
1857 bool result_saved = false; // Is the result saved to the stack? | 1867 bool result_saved = false; // Is the result saved to the stack? |
1858 | 1868 |
1859 // Emit code to evaluate all the non-constant subexpressions and to store | 1869 // Emit code to evaluate all the non-constant subexpressions and to store |
1860 // them into the newly cloned array. | 1870 // them into the newly cloned array. |
1861 for (int i = 0; i < length; i++) { | 1871 for (int i = 0; i < length; i++) { |
1862 Expression* subexpr = subexprs->at(i); | 1872 Expression* subexpr = subexprs->at(i); |
1863 // If the subexpression is a literal or a simple materialized literal it | 1873 // If the subexpression is a literal or a simple materialized literal it |
(...skipping 3092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4956 Assembler::target_address_at(pc_immediate_load_address)) == | 4966 Assembler::target_address_at(pc_immediate_load_address)) == |
4957 reinterpret_cast<uint32_t>( | 4967 reinterpret_cast<uint32_t>( |
4958 isolate->builtins()->OsrAfterStackCheck()->entry())); | 4968 isolate->builtins()->OsrAfterStackCheck()->entry())); |
4959 return OSR_AFTER_STACK_CHECK; | 4969 return OSR_AFTER_STACK_CHECK; |
4960 } | 4970 } |
4961 | 4971 |
4962 | 4972 |
4963 } } // namespace v8::internal | 4973 } } // namespace v8::internal |
4964 | 4974 |
4965 #endif // V8_TARGET_ARCH_MIPS | 4975 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |