Commit 098f939d authored by bmeurer's avatar bmeurer Committed by Commit bot

Revert of [turbofan] Less aggressively insert SOFT deopts for property access....

Revert of [turbofan] Less aggressively insert SOFT deopts for property access. (patchset #2 id:20001 of https://codereview.chromium.org/2746013002/ )

Reason for revert:
Tanks Octane/Mandreel and Octane/MandreelLatency.

Original issue's description:
> [turbofan] Less aggressively insert SOFT deopts for property access.
>
> Sometimes TurboFan is able to extract receiver maps from the surrounding
> graph and thus is able to generate reasonable code for property accesses,
> even if those haven't been executed in the baseline tier yet. So, only
> stick in an SOFT deoptimization exit, if ExtractReceiverMaps failed to
> infer proper receiver maps.
>
> R=yangguo@chromium.org
> BUG=v8:5267
>
> Review-Url: https://codereview.chromium.org/2746013002
> Cr-Commit-Position: refs/heads/master@{#43736}
> Committed: https://chromium.googlesource.com/v8/v8/+/b8453628c94ddf71e05d70471355c7c924bbcf31

TBR=yangguo@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5267

Review-Url: https://codereview.chromium.org/2748663002
Cr-Commit-Position: refs/heads/master@{#43743}
parent 326d4f43
......@@ -573,7 +573,6 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess(
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,
......@@ -800,6 +799,17 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccessFromNexus(
}
}
// 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}.
MapHandleList receiver_maps;
if (!ExtractReceiverMaps(receiver, effect, nexus, &receiver_maps)) {
......@@ -1184,6 +1194,17 @@ Reduction JSNativeContextSpecialization::ReduceKeyedAccess(
}
}
// 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 @@ bool JSNativeContextSpecialization::ExtractReceiverMaps(
}
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(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment