Commit 24416034 authored by Hao Xu's avatar Hao Xu Committed by V8 LUCI CQ

[CSA] Mark label in LoadReceiverMap as deferred

Defer the branch to load receiver's map from a Smi because it is less
likely to be used as a receiver, especially when the path to handle
Smi receiver is already deferred.

Change-Id: I2b55c146e36e548129a6c5460b55fef32df2c2f1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3719959Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
Commit-Queue: Hao A Xu <hao.a.xu@intel.com>
Cr-Commit-Position: refs/heads/main@{#81346}
parent 2e9ce2ff
......@@ -10641,9 +10641,23 @@ void CodeStubAssembler::CheckForAssociatedProtector(TNode<Name> name,
}
TNode<Map> CodeStubAssembler::LoadReceiverMap(TNode<Object> receiver) {
return Select<Map>(
TaggedIsSmi(receiver), [=] { return HeapNumberMapConstant(); },
[=] { return LoadMap(UncheckedCast<HeapObject>(receiver)); });
TVARIABLE(Map, value);
Label vtrue(this, Label::kDeferred), vfalse(this), end(this);
Branch(TaggedIsSmi(receiver), &vtrue, &vfalse);
BIND(&vtrue);
{
value = HeapNumberMapConstant();
Goto(&end);
}
BIND(&vfalse);
{
value = LoadMap(UncheckedCast<HeapObject>(receiver));
Goto(&end);
}
BIND(&end);
return value.value();
}
TNode<IntPtrT> CodeStubAssembler::TryToIntptr(
......
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