| Index: src/compiler/js-native-context-specialization.cc
|
| diff --git a/src/compiler/js-native-context-specialization.cc b/src/compiler/js-native-context-specialization.cc
|
| index a2fe6c182957661110134a04f28acd06f5df7fab..fb8e53b034878cc5ec9d203f2832ad98ae3b9db8 100644
|
| --- a/src/compiler/js-native-context-specialization.cc
|
| +++ b/src/compiler/js-native-context-specialization.cc
|
| @@ -573,7 +573,6 @@
|
| Object* maybe_constructor = receiver_map->GetConstructor();
|
| // Detached global proxies have |null| as their constructor.
|
| if (maybe_constructor->IsJSFunction() &&
|
| - JSFunction::cast(maybe_constructor)->has_context() &&
|
| JSFunction::cast(maybe_constructor)->native_context() ==
|
| *native_context()) {
|
| return ReduceGlobalAccess(node, receiver, value, name, access_mode,
|
| @@ -798,6 +797,17 @@
|
| // Optimize accesses to the current native contexts' global proxy.
|
| return ReduceGlobalAccess(node, nullptr, value, name, access_mode);
|
| }
|
| + }
|
| +
|
| + // Check if the {nexus} reports type feedback for the IC.
|
| + if (nexus.IsUninitialized()) {
|
| + if ((flags() & kDeoptimizationEnabled) &&
|
| + (flags() & kBailoutOnUninitialized)) {
|
| + return ReduceSoftDeoptimize(
|
| + node,
|
| + DeoptimizeReason::kInsufficientTypeFeedbackForGenericNamedAccess);
|
| + }
|
| + return NoChange();
|
| }
|
|
|
| // Extract receiver maps from the IC using the {nexus}.
|
| @@ -1184,6 +1194,17 @@
|
| }
|
| }
|
|
|
| + // Check if the {nexus} reports type feedback for the IC.
|
| + if (nexus.IsUninitialized()) {
|
| + if ((flags() & kDeoptimizationEnabled) &&
|
| + (flags() & kBailoutOnUninitialized)) {
|
| + return ReduceSoftDeoptimize(
|
| + node,
|
| + DeoptimizeReason::kInsufficientTypeFeedbackForGenericKeyedAccess);
|
| + }
|
| + return NoChange();
|
| + }
|
| +
|
| // Extract receiver maps from the {nexus}.
|
| MapHandleList receiver_maps;
|
| if (!ExtractReceiverMaps(receiver, effect, nexus, &receiver_maps)) {
|
| @@ -2229,10 +2250,7 @@
|
| }
|
| return true;
|
| }
|
| - // Check if the {nexus} actually reports feedback for the IC. We return
|
| - // true if the IC is still uninitialized, which translates to a SOFT
|
| - // deoptimization exit in the callers.
|
| - return nexus.IsUninitialized();
|
| + return false;
|
| }
|
|
|
| bool JSNativeContextSpecialization::InferReceiverMaps(
|
|
|