OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1168 | 1168 |
1169 __ EnumLengthUntagged(x1, x0); | 1169 __ EnumLengthUntagged(x1, x0); |
1170 __ Cbz(x1, &no_descriptors); | 1170 __ Cbz(x1, &no_descriptors); |
1171 | 1171 |
1172 __ LoadInstanceDescriptors(x0, x2); | 1172 __ LoadInstanceDescriptors(x0, x2); |
1173 __ Ldr(x2, FieldMemOperand(x2, DescriptorArray::kEnumCacheOffset)); | 1173 __ Ldr(x2, FieldMemOperand(x2, DescriptorArray::kEnumCacheOffset)); |
1174 __ Ldr(x2, | 1174 __ Ldr(x2, |
1175 FieldMemOperand(x2, DescriptorArray::kEnumCacheBridgeCacheOffset)); | 1175 FieldMemOperand(x2, DescriptorArray::kEnumCacheBridgeCacheOffset)); |
1176 | 1176 |
1177 // Set up the four remaining stack slots. | 1177 // Set up the four remaining stack slots. |
1178 __ Push(x0); // Map. | 1178 __ Push(x0, x2); // Map, enumeration cache. |
1179 __ Mov(x0, Smi::FromInt(0)); | 1179 __ SmiTagAndPush(x1, xzr); // Enum cache length, zero (both as smis). |
1180 // Push enumeration cache, enumeration cache length (as smi) and zero. | |
1181 __ SmiTag(x1); | |
1182 __ Push(x2, x1, x0); | |
1183 __ B(&loop); | 1180 __ B(&loop); |
1184 | 1181 |
1185 __ Bind(&no_descriptors); | 1182 __ Bind(&no_descriptors); |
1186 __ Drop(1); | 1183 __ Drop(1); |
1187 __ B(&exit); | 1184 __ B(&exit); |
1188 | 1185 |
1189 // We got a fixed array in register x0. Iterate through that. | 1186 // We got a fixed array in register x0. Iterate through that. |
1190 __ Bind(&fixed_array); | 1187 __ Bind(&fixed_array); |
1191 | 1188 |
1192 __ LoadObject(x1, FeedbackVector()); | 1189 __ LoadObject(x1, FeedbackVector()); |
(...skipping 3703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4896 return previous_; | 4893 return previous_; |
4897 } | 4894 } |
4898 | 4895 |
4899 | 4896 |
4900 #undef __ | 4897 #undef __ |
4901 | 4898 |
4902 | 4899 |
4903 } } // namespace v8::internal | 4900 } } // namespace v8::internal |
4904 | 4901 |
4905 #endif // V8_TARGET_ARCH_ARM64 | 4902 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |