diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-05-05 15:22:25 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-05-05 15:22:44 +0200 |
commit | 4f62685dfa09d64a8fcd2de9ed0adb7fe5747b78 (patch) | |
tree | 9dc9c3ba8ab461f7ee3d444222246be5ed55ae3f /chromium/v8/src/compiler/js-native-context-specialization.cc | |
parent | 19de26b7efd6b993f2af26cf435f04c716d3f5bc (diff) | |
parent | bb09965444b5bb20b096a291445170876225268d (diff) | |
download | qtwebengine-chromium-4f62685dfa09d64a8fcd2de9ed0adb7fe5747b78.tar.gz |
Merge branch 'upstream-master' into 58-based
Change-Id: I8c280ca9068fdda9cf6276725bfb8608eccb497a
Diffstat (limited to 'chromium/v8/src/compiler/js-native-context-specialization.cc')
-rw-r--r-- | chromium/v8/src/compiler/js-native-context-specialization.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/chromium/v8/src/compiler/js-native-context-specialization.cc b/chromium/v8/src/compiler/js-native-context-specialization.cc index b72d3ec8bed..c32ee269a08 100644 --- a/chromium/v8/src/compiler/js-native-context-specialization.cc +++ b/chromium/v8/src/compiler/js-native-context-specialization.cc @@ -2256,7 +2256,19 @@ bool JSNativeContextSpecialization::ExtractReceiverMaps( bool JSNativeContextSpecialization::InferReceiverMaps( Node* receiver, Node* effect, MapHandleList* receiver_maps) { ZoneHandleSet<Map> maps; - if (NodeProperties::InferReceiverMaps(receiver, effect, &maps)) { + NodeProperties::InferReceiverMapsResult result = + NodeProperties::InferReceiverMaps(receiver, effect, &maps); + if (result == NodeProperties::kReliableReceiverMaps) { + for (size_t i = 0; i < maps.size(); ++i) { + receiver_maps->Add(maps[i]); + } + return true; + } else if (result == NodeProperties::kUnreliableReceiverMaps) { + // For untrusted receiver maps, we can still use the information + // if the maps are stable. + for (size_t i = 0; i < maps.size(); ++i) { + if (!maps[i]->is_stable()) return false; + } for (size_t i = 0; i < maps.size(); ++i) { receiver_maps->Add(maps[i]); } |