OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_ARM | 5 #if V8_TARGET_ARCH_ARM |
6 | 6 |
7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 1880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1891 operand_stack_depth_ * kPointerSize; | 1891 operand_stack_depth_ * kPointerSize; |
1892 __ sub(r0, fp, sp); | 1892 __ sub(r0, fp, sp); |
1893 __ cmp(r0, Operand(expected_diff)); | 1893 __ cmp(r0, Operand(expected_diff)); |
1894 __ Assert(eq, kUnexpectedStackDepth); | 1894 __ Assert(eq, kUnexpectedStackDepth); |
1895 } | 1895 } |
1896 } | 1896 } |
1897 | 1897 |
1898 void FullCodeGenerator::EmitCreateIteratorResult(bool done) { | 1898 void FullCodeGenerator::EmitCreateIteratorResult(bool done) { |
1899 Label allocate, done_allocate; | 1899 Label allocate, done_allocate; |
1900 | 1900 |
1901 __ Allocate(JSIteratorResult::kSize, r0, r2, r3, &allocate, TAG_OBJECT); | 1901 __ Allocate(JSIteratorResult::kSize, r0, r2, r3, &allocate, |
| 1902 NO_ALLOCATION_FLAGS); |
1902 __ b(&done_allocate); | 1903 __ b(&done_allocate); |
1903 | 1904 |
1904 __ bind(&allocate); | 1905 __ bind(&allocate); |
1905 __ Push(Smi::FromInt(JSIteratorResult::kSize)); | 1906 __ Push(Smi::FromInt(JSIteratorResult::kSize)); |
1906 __ CallRuntime(Runtime::kAllocateInNewSpace); | 1907 __ CallRuntime(Runtime::kAllocateInNewSpace); |
1907 | 1908 |
1908 __ bind(&done_allocate); | 1909 __ bind(&done_allocate); |
1909 __ LoadNativeContextSlot(Context::ITERATOR_RESULT_MAP_INDEX, r1); | 1910 __ LoadNativeContextSlot(Context::ITERATOR_RESULT_MAP_INDEX, r1); |
1910 PopOperand(r2); | 1911 PopOperand(r2); |
1911 __ LoadRoot(r3, | 1912 __ LoadRoot(r3, |
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3187 | 3188 |
3188 | 3189 |
3189 void FullCodeGenerator::EmitCreateIterResultObject(CallRuntime* expr) { | 3190 void FullCodeGenerator::EmitCreateIterResultObject(CallRuntime* expr) { |
3190 ZoneList<Expression*>* args = expr->arguments(); | 3191 ZoneList<Expression*>* args = expr->arguments(); |
3191 DCHECK_EQ(2, args->length()); | 3192 DCHECK_EQ(2, args->length()); |
3192 VisitForStackValue(args->at(0)); | 3193 VisitForStackValue(args->at(0)); |
3193 VisitForStackValue(args->at(1)); | 3194 VisitForStackValue(args->at(1)); |
3194 | 3195 |
3195 Label runtime, done; | 3196 Label runtime, done; |
3196 | 3197 |
3197 __ Allocate(JSIteratorResult::kSize, r0, r2, r3, &runtime, TAG_OBJECT); | 3198 __ Allocate(JSIteratorResult::kSize, r0, r2, r3, &runtime, |
| 3199 NO_ALLOCATION_FLAGS); |
3198 __ LoadNativeContextSlot(Context::ITERATOR_RESULT_MAP_INDEX, r1); | 3200 __ LoadNativeContextSlot(Context::ITERATOR_RESULT_MAP_INDEX, r1); |
3199 __ pop(r3); | 3201 __ pop(r3); |
3200 __ pop(r2); | 3202 __ pop(r2); |
3201 __ LoadRoot(r4, Heap::kEmptyFixedArrayRootIndex); | 3203 __ LoadRoot(r4, Heap::kEmptyFixedArrayRootIndex); |
3202 __ str(r1, FieldMemOperand(r0, HeapObject::kMapOffset)); | 3204 __ str(r1, FieldMemOperand(r0, HeapObject::kMapOffset)); |
3203 __ str(r4, FieldMemOperand(r0, JSObject::kPropertiesOffset)); | 3205 __ str(r4, FieldMemOperand(r0, JSObject::kPropertiesOffset)); |
3204 __ str(r4, FieldMemOperand(r0, JSObject::kElementsOffset)); | 3206 __ str(r4, FieldMemOperand(r0, JSObject::kElementsOffset)); |
3205 __ str(r2, FieldMemOperand(r0, JSIteratorResult::kValueOffset)); | 3207 __ str(r2, FieldMemOperand(r0, JSIteratorResult::kValueOffset)); |
3206 __ str(r3, FieldMemOperand(r0, JSIteratorResult::kDoneOffset)); | 3208 __ str(r3, FieldMemOperand(r0, JSIteratorResult::kDoneOffset)); |
3207 STATIC_ASSERT(JSIteratorResult::kSize == 5 * kPointerSize); | 3209 STATIC_ASSERT(JSIteratorResult::kSize == 5 * kPointerSize); |
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4030 DCHECK(interrupt_address == | 4032 DCHECK(interrupt_address == |
4031 isolate->builtins()->OnStackReplacement()->entry()); | 4033 isolate->builtins()->OnStackReplacement()->entry()); |
4032 return ON_STACK_REPLACEMENT; | 4034 return ON_STACK_REPLACEMENT; |
4033 } | 4035 } |
4034 | 4036 |
4035 | 4037 |
4036 } // namespace internal | 4038 } // namespace internal |
4037 } // namespace v8 | 4039 } // namespace v8 |
4038 | 4040 |
4039 #endif // V8_TARGET_ARCH_ARM | 4041 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |