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 1264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1275 if (nexus.IsUninitialized()) { | 1275 if (nexus.IsUninitialized()) { |
1276 return NoChange(); | 1276 return NoChange(); |
1277 } | 1277 } |
1278 | 1278 |
1279 if (nexus.ic_state() == MEGAMORPHIC) { | 1279 if (nexus.ic_state() == MEGAMORPHIC) { |
1280 return NoChange(); | 1280 return NoChange(); |
1281 } | 1281 } |
1282 | 1282 |
1283 DCHECK_EQ(MONOMORPHIC, nexus.ic_state()); | 1283 DCHECK_EQ(MONOMORPHIC, nexus.ic_state()); |
1284 | 1284 |
1285 Handle<Map> receiver_map(nexus.FindFirstMap(), isolate()); | 1285 Map* map = nexus.FindFirstMap(); |
| 1286 if (map == nullptr) { |
| 1287 // Maps are weakly held in the type feedback vector, we may not have one. |
| 1288 return NoChange(); |
| 1289 } |
| 1290 |
| 1291 Handle<Map> receiver_map(map, isolate()); |
1286 Handle<Name> cached_name = | 1292 Handle<Name> cached_name = |
1287 handle(Name::cast(nexus.GetFeedbackExtra()), isolate()); | 1293 handle(Name::cast(nexus.GetFeedbackExtra()), isolate()); |
1288 | 1294 |
1289 PropertyAccessInfo access_info; | 1295 PropertyAccessInfo access_info; |
1290 AccessInfoFactory access_info_factory(dependencies(), native_context(), | 1296 AccessInfoFactory access_info_factory(dependencies(), native_context(), |
1291 graph()->zone()); | 1297 graph()->zone()); |
1292 if (!access_info_factory.ComputePropertyAccessInfo( | 1298 if (!access_info_factory.ComputePropertyAccessInfo( |
1293 receiver_map, cached_name, AccessMode::kStoreInLiteral, | 1299 receiver_map, cached_name, AccessMode::kStoreInLiteral, |
1294 &access_info)) { | 1300 &access_info)) { |
1295 return NoChange(); | 1301 return NoChange(); |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1913 return jsgraph()->javascript(); | 1919 return jsgraph()->javascript(); |
1914 } | 1920 } |
1915 | 1921 |
1916 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { | 1922 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { |
1917 return jsgraph()->simplified(); | 1923 return jsgraph()->simplified(); |
1918 } | 1924 } |
1919 | 1925 |
1920 } // namespace compiler | 1926 } // namespace compiler |
1921 } // namespace internal | 1927 } // namespace internal |
1922 } // namespace v8 | 1928 } // namespace v8 |
OLD | NEW |