| 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/ic/accessor-assembler.h" |     5 #include "src/ic/accessor-assembler.h" | 
|     6 #include "src/ic/accessor-assembler-impl.h" |     6 #include "src/ic/accessor-assembler-impl.h" | 
|     7  |     7  | 
|     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/ic/handler-configuration.h" |    10 #include "src/ic/handler-configuration.h" | 
| (...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   872     Node* value_index = EntryToIndex<SeededNumberDictionary>( |   872     Node* value_index = EntryToIndex<SeededNumberDictionary>( | 
|   873         var_entry.value(), SeededNumberDictionary::kEntryValueIndex); |   873         var_entry.value(), SeededNumberDictionary::kEntryValueIndex); | 
|   874     Return(LoadFixedArrayElement(elements, value_index, 0, INTPTR_PARAMETERS)); |   874     Return(LoadFixedArrayElement(elements, value_index, 0, INTPTR_PARAMETERS)); | 
|   875   } |   875   } | 
|   876  |   876  | 
|   877   Bind(&if_typed_array); |   877   Bind(&if_typed_array); | 
|   878   { |   878   { | 
|   879     Comment("typed elements"); |   879     Comment("typed elements"); | 
|   880     // Check if buffer has been neutered. |   880     // Check if buffer has been neutered. | 
|   881     Node* buffer = LoadObjectField(object, JSArrayBufferView::kBufferOffset); |   881     Node* buffer = LoadObjectField(object, JSArrayBufferView::kBufferOffset); | 
|   882     Node* bitfield = LoadObjectField(buffer, JSArrayBuffer::kBitFieldOffset, |   882     GotoIf(IsDetachedBuffer(buffer), miss); | 
|   883                                      MachineType::Uint32()); |  | 
|   884     GotoIf(IsSetWord32<JSArrayBuffer::WasNeutered>(bitfield), miss); |  | 
|   885  |   883  | 
|   886     // Bounds check. |   884     // Bounds check. | 
|   887     Node* length = |   885     Node* length = | 
|   888         SmiUntag(LoadObjectField(object, JSTypedArray::kLengthOffset)); |   886         SmiUntag(LoadObjectField(object, JSTypedArray::kLengthOffset)); | 
|   889     GotoUnless(UintPtrLessThan(intptr_index, length), out_of_bounds); |   887     GotoUnless(UintPtrLessThan(intptr_index, length), out_of_bounds); | 
|   890  |   888  | 
|   891     // Backing store = external_pointer + base_pointer. |   889     // Backing store = external_pointer + base_pointer. | 
|   892     Node* external_pointer = |   890     Node* external_pointer = | 
|   893         LoadObjectField(elements, FixedTypedArrayBase::kExternalPointerOffset, |   891         LoadObjectField(elements, FixedTypedArrayBase::kExternalPointerOffset, | 
|   894                         MachineType::Pointer()); |   892                         MachineType::Pointer()); | 
|   895     Node* base_pointer = |   893     Node* base_pointer = | 
|   896         LoadObjectField(elements, FixedTypedArrayBase::kBasePointerOffset, |   894         LoadObjectField(elements, FixedTypedArrayBase::kBasePointerOffset); | 
|   897                         MachineType::Pointer()); |   895     Node* backing_store = | 
|   898     Node* backing_store = IntPtrAdd(external_pointer, base_pointer); |   896         IntPtrAdd(external_pointer, BitcastTaggedToWord(base_pointer)); | 
|   899  |   897  | 
|   900     Label uint8_elements(this), int8_elements(this), uint16_elements(this), |   898     Label uint8_elements(this), int8_elements(this), uint16_elements(this), | 
|   901         int16_elements(this), uint32_elements(this), int32_elements(this), |   899         int16_elements(this), uint32_elements(this), int32_elements(this), | 
|   902         float32_elements(this), float64_elements(this); |   900         float32_elements(this), float64_elements(this); | 
|   903     Label* elements_kind_labels[] = { |   901     Label* elements_kind_labels[] = { | 
|   904         &uint8_elements,  &uint8_elements,   &int8_elements, |   902         &uint8_elements,  &uint8_elements,   &int8_elements, | 
|   905         &uint16_elements, &int16_elements,   &uint32_elements, |   903         &uint16_elements, &int16_elements,   &uint32_elements, | 
|   906         &int32_elements,  &float32_elements, &float64_elements}; |   904         &int32_elements,  &float32_elements, &float64_elements}; | 
|   907     int32_t elements_kinds[] = { |   905     int32_t elements_kinds[] = { | 
|   908         UINT8_ELEMENTS,  UINT8_CLAMPED_ELEMENTS, INT8_ELEMENTS, |   906         UINT8_ELEMENTS,  UINT8_CLAMPED_ELEMENTS, INT8_ELEMENTS, | 
| (...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1827 void AccessorAssembler::GenerateKeyedStoreICTrampolineTF( |  1825 void AccessorAssembler::GenerateKeyedStoreICTrampolineTF( | 
|  1828     CodeAssemblerState* state, LanguageMode language_mode) { |  1826     CodeAssemblerState* state, LanguageMode language_mode) { | 
|  1829   AccessorAssemblerImpl assembler(state); |  1827   AccessorAssemblerImpl assembler(state); | 
|  1830   assembler.GenerateKeyedStoreICTrampolineTF(language_mode); |  1828   assembler.GenerateKeyedStoreICTrampolineTF(language_mode); | 
|  1831 } |  1829 } | 
|  1832  |  1830  | 
|  1833 #undef ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE |  1831 #undef ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE | 
|  1834  |  1832  | 
|  1835 }  // namespace internal |  1833 }  // namespace internal | 
|  1836 }  // namespace v8 |  1834 }  // namespace v8 | 
| OLD | NEW |