| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/builtins/builtins.h" | 5 #include "src/builtins/builtins.h" |
| 6 #include "src/builtins/builtins-utils.h" | 6 #include "src/builtins/builtins-utils.h" |
| 7 | 7 |
| 8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
| 9 #include "src/contexts.h" | 9 #include "src/contexts.h" |
| 10 #include "src/elements.h" | 10 #include "src/elements.h" |
| (...skipping 2548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2559 assembler.Bind(&allocate_entry_if_needed); | 2559 assembler.Bind(&allocate_entry_if_needed); |
| 2560 { | 2560 { |
| 2561 assembler.GotoIf( | 2561 assembler.GotoIf( |
| 2562 assembler.Int32GreaterThan( | 2562 assembler.Int32GreaterThan( |
| 2563 instance_type, | 2563 instance_type, |
| 2564 assembler.Int32Constant(LAST_ARRAY_KEY_VALUE_ITERATOR_TYPE)), | 2564 assembler.Int32Constant(LAST_ARRAY_KEY_VALUE_ITERATOR_TYPE)), |
| 2565 &allocate_iterator_result); | 2565 &allocate_iterator_result); |
| 2566 | 2566 |
| 2567 Node* elements = | 2567 Node* elements = |
| 2568 assembler.AllocateFixedArray(FAST_ELEMENTS, assembler.Int32Constant(2)); | 2568 assembler.AllocateFixedArray(FAST_ELEMENTS, assembler.Int32Constant(2)); |
| 2569 assembler.StoreFixedArrayElement(elements, assembler.Int32Constant(0), | 2569 assembler.StoreFixedArrayElement(elements, 0, index, SKIP_WRITE_BARRIER); |
| 2570 index, SKIP_WRITE_BARRIER); | 2570 assembler.StoreFixedArrayElement(elements, 1, var_value.value(), |
| 2571 assembler.StoreFixedArrayElement(elements, assembler.Int32Constant(1), | 2571 SKIP_WRITE_BARRIER); |
| 2572 var_value.value(), SKIP_WRITE_BARRIER); | |
| 2573 | 2572 |
| 2574 Node* entry = assembler.Allocate(JSArray::kSize); | 2573 Node* entry = assembler.Allocate(JSArray::kSize); |
| 2575 Node* map = | 2574 Node* map = |
| 2576 assembler.LoadContextElement(assembler.LoadNativeContext(context), | 2575 assembler.LoadContextElement(assembler.LoadNativeContext(context), |
| 2577 Context::JS_ARRAY_FAST_ELEMENTS_MAP_INDEX); | 2576 Context::JS_ARRAY_FAST_ELEMENTS_MAP_INDEX); |
| 2578 | 2577 |
| 2579 assembler.StoreMapNoWriteBarrier(entry, map); | 2578 assembler.StoreMapNoWriteBarrier(entry, map); |
| 2580 assembler.StoreObjectFieldRoot(entry, JSArray::kPropertiesOffset, | 2579 assembler.StoreObjectFieldRoot(entry, JSArray::kPropertiesOffset, |
| 2581 Heap::kEmptyFixedArrayRootIndex); | 2580 Heap::kEmptyFixedArrayRootIndex); |
| 2582 assembler.StoreObjectFieldNoWriteBarrier(entry, JSArray::kElementsOffset, | 2581 assembler.StoreObjectFieldNoWriteBarrier(entry, JSArray::kElementsOffset, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2613 Runtime::kThrowIncompatibleMethodReceiver, context, | 2612 Runtime::kThrowIncompatibleMethodReceiver, context, |
| 2614 assembler.HeapConstant(assembler.factory()->NewStringFromAsciiChecked( | 2613 assembler.HeapConstant(assembler.factory()->NewStringFromAsciiChecked( |
| 2615 "Array Iterator.prototype.next", TENURED)), | 2614 "Array Iterator.prototype.next", TENURED)), |
| 2616 iterator); | 2615 iterator); |
| 2617 assembler.Return(result); | 2616 assembler.Return(result); |
| 2618 } | 2617 } |
| 2619 } | 2618 } |
| 2620 | 2619 |
| 2621 } // namespace internal | 2620 } // namespace internal |
| 2622 } // namespace v8 | 2621 } // namespace v8 |
| OLD | NEW |