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 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 Node* instance_type; | 221 Node* instance_type; |
222 Node* backing_store; | 222 Node* backing_store; |
223 ValidateSharedTypedArray(a, array, context, &instance_type, &backing_store); | 223 ValidateSharedTypedArray(a, array, context, &instance_type, &backing_store); |
224 | 224 |
225 Node* index_word32 = ConvertTaggedAtomicIndexToWord32(a, index, context); | 225 Node* index_word32 = ConvertTaggedAtomicIndexToWord32(a, index, context); |
226 Node* array_length_word32 = a->TruncateTaggedToWord32( | 226 Node* array_length_word32 = a->TruncateTaggedToWord32( |
227 context, a->LoadObjectField(array, JSTypedArray::kLengthOffset)); | 227 context, a->LoadObjectField(array, JSTypedArray::kLengthOffset)); |
228 ValidateAtomicIndex(a, index_word32, array_length_word32, context); | 228 ValidateAtomicIndex(a, index_word32, array_length_word32, context); |
229 Node* index_word = a->ChangeUint32ToWord(index_word32); | 229 Node* index_word = a->ChangeUint32ToWord(index_word32); |
230 | 230 |
231 Callable to_integer = CodeFactory::ToInteger(a->isolate()); | 231 Node* value_integer = a->ToInteger(context, value); |
232 Node* value_integer = a->CallStub(to_integer, context, value); | |
233 Node* value_word32 = a->TruncateTaggedToWord32(context, value_integer); | 232 Node* value_word32 = a->TruncateTaggedToWord32(context, value_integer); |
234 | 233 |
235 CodeStubAssembler::Label u8(a), u16(a), u32(a), other(a); | 234 CodeStubAssembler::Label u8(a), u16(a), u32(a), other(a); |
236 int32_t case_values[] = { | 235 int32_t case_values[] = { |
237 FIXED_INT8_ARRAY_TYPE, FIXED_UINT8_ARRAY_TYPE, FIXED_INT16_ARRAY_TYPE, | 236 FIXED_INT8_ARRAY_TYPE, FIXED_UINT8_ARRAY_TYPE, FIXED_INT16_ARRAY_TYPE, |
238 FIXED_UINT16_ARRAY_TYPE, FIXED_INT32_ARRAY_TYPE, FIXED_UINT32_ARRAY_TYPE, | 237 FIXED_UINT16_ARRAY_TYPE, FIXED_INT32_ARRAY_TYPE, FIXED_UINT32_ARRAY_TYPE, |
239 }; | 238 }; |
240 CodeStubAssembler::Label* case_labels[] = { | 239 CodeStubAssembler::Label* case_labels[] = { |
241 &u8, &u8, &u16, &u16, &u32, &u32, | 240 &u8, &u8, &u16, &u16, &u32, &u32, |
242 }; | 241 }; |
(...skipping 15 matching lines...) Expand all Loading... |
258 a->WordShl(index_word, 2), value_word32); | 257 a->WordShl(index_word, 2), value_word32); |
259 a->Return(value_integer); | 258 a->Return(value_integer); |
260 | 259 |
261 // This shouldn't happen, we've already validated the type. | 260 // This shouldn't happen, we've already validated the type. |
262 a->Bind(&other); | 261 a->Bind(&other); |
263 a->Return(a->Int32Constant(0)); | 262 a->Return(a->Int32Constant(0)); |
264 } | 263 } |
265 | 264 |
266 } // namespace internal | 265 } // namespace internal |
267 } // namespace v8 | 266 } // namespace v8 |
OLD | NEW |