| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/compiler/js-native-context-specialization.h" | 5 #include "src/compiler/js-native-context-specialization.h" |
| 6 | 6 |
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
| 8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
| 9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
| 10 #include "src/compiler/access-builder.h" | 10 #include "src/compiler/access-builder.h" |
| (...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 MapList const& receiver_maps = access_info.receiver_maps(); | 965 MapList const& receiver_maps = access_info.receiver_maps(); |
| 966 | 966 |
| 967 // Load the elements for the {receiver}. | 967 // Load the elements for the {receiver}. |
| 968 Node* elements = effect = graph()->NewNode( | 968 Node* elements = effect = graph()->NewNode( |
| 969 simplified()->LoadField(AccessBuilder::ForJSObjectElements()), receiver, | 969 simplified()->LoadField(AccessBuilder::ForJSObjectElements()), receiver, |
| 970 effect, control); | 970 effect, control); |
| 971 | 971 |
| 972 // Don't try to store to a copy-on-write backing store. | 972 // Don't try to store to a copy-on-write backing store. |
| 973 if (access_mode == AccessMode::kStore && | 973 if (access_mode == AccessMode::kStore && |
| 974 IsFastSmiOrObjectElementsKind(elements_kind)) { | 974 IsFastSmiOrObjectElementsKind(elements_kind)) { |
| 975 Node* elements_map = effect = | 975 effect = graph()->NewNode( |
| 976 graph()->NewNode(simplified()->LoadField(AccessBuilder::ForMap()), | 976 simplified()->CheckMaps(1), elements, |
| 977 elements, effect, control); | 977 jsgraph()->HeapConstant(factory()->fixed_array_map()), effect, control); |
| 978 Node* check = graph()->NewNode( | |
| 979 simplified()->ReferenceEqual(Type::Any()), elements_map, | |
| 980 jsgraph()->HeapConstant(factory()->fixed_array_map())); | |
| 981 effect = graph()->NewNode(simplified()->CheckIf(), check, effect, control); | |
| 982 } | 978 } |
| 983 | 979 |
| 984 if (IsFixedTypedArrayElementsKind(elements_kind)) { | 980 if (IsFixedTypedArrayElementsKind(elements_kind)) { |
| 985 // Load the {receiver}s length. | 981 // Load the {receiver}s length. |
| 986 Node* length = effect = graph()->NewNode( | 982 Node* length = effect = graph()->NewNode( |
| 987 simplified()->LoadField(AccessBuilder::ForJSTypedArrayLength()), | 983 simplified()->LoadField(AccessBuilder::ForJSTypedArrayLength()), |
| 988 receiver, effect, control); | 984 receiver, effect, control); |
| 989 | 985 |
| 990 // Check if the {receiver}s buffer was neutered. | 986 // Check if the {receiver}s buffer was neutered. |
| 991 Node* buffer = effect = graph()->NewNode( | 987 Node* buffer = effect = graph()->NewNode( |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 } | 1335 } |
| 1340 | 1336 |
| 1341 | 1337 |
| 1342 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { | 1338 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { |
| 1343 return jsgraph()->simplified(); | 1339 return jsgraph()->simplified(); |
| 1344 } | 1340 } |
| 1345 | 1341 |
| 1346 } // namespace compiler | 1342 } // namespace compiler |
| 1347 } // namespace internal | 1343 } // namespace internal |
| 1348 } // namespace v8 | 1344 } // namespace v8 |
| OLD | NEW |