[maglev] Get converted receiver if needed in inlined functions

Bug: v8:7700
Change-Id: I8039368d898a9884def7245efefc498af44bcc3a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218742
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85670}
This commit is contained in:
Victor Gomes 2023-02-06 11:03:14 +01:00 committed by V8 LUCI CQ
parent 8ce9714936
commit 81857203e9
2 changed files with 5 additions and 12 deletions

View File

@ -3007,18 +3007,11 @@ ReduceResult MaglevGraphBuilder::BuildInlined(const CallArguments& args,
// can manually set up the arguments.
StartPrologue();
// Set receiver.
SetArgument(0, GetConvertReceiver(function(), args));
// Set remaining arguments.
RootConstant* undefined_constant =
GetRootConstant(RootIndex::kUndefinedValue);
if (args.receiver_mode() == ConvertReceiverMode::kNullOrUndefined) {
if (function().shared().language_mode() == LanguageMode::kSloppy) {
// TODO(leszeks): Store the global proxy somehow.
SetArgument(0, undefined_constant);
} else {
SetArgument(0, undefined_constant);
}
} else {
SetArgument(0, args.receiver());
}
for (int i = 1; i < parameter_count(); i++) {
ValueNode* arg_value = args[i - 1];
if (arg_value == nullptr) arg_value = undefined_constant;
@ -3346,7 +3339,7 @@ ReduceResult MaglevGraphBuilder::TryReduceBuiltin(
}
ValueNode* MaglevGraphBuilder::GetConvertReceiver(
compiler::JSFunctionRef function, CallArguments& args) {
compiler::JSFunctionRef function, const CallArguments& args) {
compiler::SharedFunctionInfoRef shared = function.shared();
if (shared.native() || shared.language_mode() == LanguageMode::kStrict) {
if (args.receiver_mode() == ConvertReceiverMode::kNullOrUndefined) {

View File

@ -1237,7 +1237,7 @@ class MaglevGraphBuilder {
}
ValueNode* GetConvertReceiver(compiler::JSFunctionRef function,
CallArguments& args);
const CallArguments& args);
template <typename LoadNode>
ReduceResult TryBuildLoadDataView(const CallArguments& args,