[maglev] Do not use LoadPolymorphicDoubleField if only Smis
Bug: v8:7700 Change-Id: I25eceaa6a926c17bdba882145d073afbdf71e091 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4198149 Reviewed-by: Toon Verwaest <verwaest@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#85516}
This commit is contained in:
parent
021fe0c80f
commit
193db1b453
@ -2099,20 +2099,18 @@ bool MaglevGraphBuilder::TryBuildNamedAccess(
|
||||
return false;
|
||||
}
|
||||
|
||||
bool only_double_or_smi_load = true;
|
||||
Representation field_repr = Representation::Smi();
|
||||
|
||||
// Check if we support the polymorphic load.
|
||||
for (compiler::PropertyAccessInfo access_info : access_infos) {
|
||||
switch (access_info.kind()) {
|
||||
case compiler::PropertyAccessInfo::kNotFound:
|
||||
case compiler::PropertyAccessInfo::kModuleExport:
|
||||
only_double_or_smi_load = false;
|
||||
field_repr.generalize(Representation::Tagged());
|
||||
break;
|
||||
case compiler::PropertyAccessInfo::kDataField:
|
||||
case compiler::PropertyAccessInfo::kFastDataConstant:
|
||||
only_double_or_smi_load &=
|
||||
(access_info.field_index().is_double() ||
|
||||
access_info.field_representation().IsSmi());
|
||||
field_repr.generalize(access_info.field_representation());
|
||||
break;
|
||||
default:
|
||||
// TODO(victorgomes): Support other access.
|
||||
@ -2137,13 +2135,14 @@ bool MaglevGraphBuilder::TryBuildNamedAccess(
|
||||
}
|
||||
}
|
||||
|
||||
if (only_double_or_smi_load) {
|
||||
if (field_repr.kind() == Representation::kDouble) {
|
||||
SetAccumulator(AddNewNode<LoadPolymorphicDoubleField>(
|
||||
{lookup_start_object}, std::move(access_infos)));
|
||||
} else {
|
||||
SetAccumulator(AddNewNode<LoadPolymorphicTaggedField>(
|
||||
{lookup_start_object}, std::move(access_infos)));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user