summaryrefslogtreecommitdiff
path: root/chromium/v8/src/compiler/js-native-context-specialization.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-05-05 15:22:25 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-05-05 15:22:44 +0200
commit4f62685dfa09d64a8fcd2de9ed0adb7fe5747b78 (patch)
tree9dc9c3ba8ab461f7ee3d444222246be5ed55ae3f /chromium/v8/src/compiler/js-native-context-specialization.cc
parent19de26b7efd6b993f2af26cf435f04c716d3f5bc (diff)
parentbb09965444b5bb20b096a291445170876225268d (diff)
downloadqtwebengine-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.cc14
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]);
}