diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/builtins/builtins-call-gen.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/builtins/builtins-call-gen.cc')
-rw-r--r-- | chromium/v8/src/builtins/builtins-call-gen.cc | 73 |
1 files changed, 72 insertions, 1 deletions
diff --git a/chromium/v8/src/builtins/builtins-call-gen.cc b/chromium/v8/src/builtins/builtins-call-gen.cc index d457e033149..f7919b78f47 100644 --- a/chromium/v8/src/builtins/builtins-call-gen.cc +++ b/chromium/v8/src/builtins/builtins-call-gen.cc @@ -64,6 +64,49 @@ void Builtins::Generate_CallFunctionForwardVarargs(MacroAssembler* masm) { masm->isolate()->builtins()->CallFunction()); } +TF_BUILTIN(Call_ReceiverIsNullOrUndefined_WithFeedback, + CallOrConstructBuiltinsAssembler) { + TNode<Object> target = CAST(Parameter(Descriptor::kFunction)); + TNode<Int32T> argc = + UncheckedCast<Int32T>(Parameter(Descriptor::kActualArgumentsCount)); + TNode<Context> context = CAST(Parameter(Descriptor::kContext)); + TNode<HeapObject> maybe_feedback_vector = + CAST(Parameter(Descriptor::kMaybeFeedbackVector)); + TNode<Int32T> slot = UncheckedCast<Int32T>(Parameter(Descriptor::kSlot)); + CollectCallFeedback(target, context, maybe_feedback_vector, + Unsigned(ChangeInt32ToIntPtr(slot))); + TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target, + argc); +} + +TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_WithFeedback, + CallOrConstructBuiltinsAssembler) { + TNode<Object> target = CAST(Parameter(Descriptor::kFunction)); + TNode<Int32T> argc = + UncheckedCast<Int32T>(Parameter(Descriptor::kActualArgumentsCount)); + TNode<Context> context = CAST(Parameter(Descriptor::kContext)); + TNode<HeapObject> maybe_feedback_vector = + CAST(Parameter(Descriptor::kMaybeFeedbackVector)); + TNode<Int32T> slot = UncheckedCast<Int32T>(Parameter(Descriptor::kSlot)); + CollectCallFeedback(target, context, maybe_feedback_vector, + Unsigned(ChangeInt32ToIntPtr(slot))); + TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target, + argc); +} + +TF_BUILTIN(Call_ReceiverIsAny_WithFeedback, CallOrConstructBuiltinsAssembler) { + TNode<Object> target = CAST(Parameter(Descriptor::kFunction)); + TNode<Int32T> argc = + UncheckedCast<Int32T>(Parameter(Descriptor::kActualArgumentsCount)); + TNode<Context> context = CAST(Parameter(Descriptor::kContext)); + TNode<HeapObject> maybe_feedback_vector = + CAST(Parameter(Descriptor::kMaybeFeedbackVector)); + TNode<Int32T> slot = UncheckedCast<Int32T>(Parameter(Descriptor::kSlot)); + CollectCallFeedback(target, context, maybe_feedback_vector, + Unsigned(ChangeInt32ToIntPtr(slot))); + TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc); +} + void CallOrConstructBuiltinsAssembler::CallOrConstructWithArrayLike( TNode<Object> target, base::Optional<TNode<Object>> new_target, TNode<Object> arguments_list, TNode<Context> context) { @@ -387,6 +430,19 @@ TF_BUILTIN(CallWithArrayLike, CallOrConstructBuiltinsAssembler) { CallOrConstructWithArrayLike(target, new_target, arguments_list, context); } +TF_BUILTIN(CallWithArrayLike_WithFeedback, CallOrConstructBuiltinsAssembler) { + TNode<Object> target = CAST(Parameter(Descriptor::kTarget)); + base::Optional<TNode<Object>> new_target = base::nullopt; + TNode<Object> arguments_list = CAST(Parameter(Descriptor::kArgumentsList)); + TNode<Context> context = CAST(Parameter(Descriptor::kContext)); + TNode<HeapObject> maybe_feedback_vector = + CAST(Parameter(Descriptor::kMaybeFeedbackVector)); + TNode<Int32T> slot = UncheckedCast<Int32T>(Parameter(Descriptor::kSlot)); + CollectCallFeedback(target, context, maybe_feedback_vector, + Unsigned(ChangeInt32ToIntPtr(slot))); + CallOrConstructWithArrayLike(target, new_target, arguments_list, context); +} + TF_BUILTIN(CallWithSpread, CallOrConstructBuiltinsAssembler) { TNode<Object> target = CAST(Parameter(Descriptor::kTarget)); base::Optional<TNode<Object>> new_target = base::nullopt; @@ -397,6 +453,21 @@ TF_BUILTIN(CallWithSpread, CallOrConstructBuiltinsAssembler) { CallOrConstructWithSpread(target, new_target, spread, args_count, context); } +TF_BUILTIN(CallWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) { + TNode<Object> target = CAST(Parameter(Descriptor::kTarget)); + base::Optional<TNode<Object>> new_target = base::nullopt; + TNode<Object> spread = CAST(Parameter(Descriptor::kSpread)); + TNode<Int32T> args_count = + UncheckedCast<Int32T>(Parameter(Descriptor::kArgumentsCount)); + TNode<Context> context = CAST(Parameter(Descriptor::kContext)); + TNode<HeapObject> maybe_feedback_vector = + CAST(Parameter(Descriptor::kMaybeFeedbackVector)); + TNode<Int32T> slot = UncheckedCast<Int32T>(Parameter(Descriptor::kSlot)); + CollectCallFeedback(target, context, maybe_feedback_vector, + Unsigned(ChangeInt32ToIntPtr(slot))); + CallOrConstructWithSpread(target, new_target, spread, args_count, context); +} + TNode<JSReceiver> CallOrConstructBuiltinsAssembler::GetCompatibleReceiver( TNode<JSReceiver> receiver, TNode<HeapObject> signature, TNode<Context> context) { @@ -535,7 +606,7 @@ void CallOrConstructBuiltinsAssembler::CallFunctionTemplate( TNode<IntPtrT> function_template_info_flags = LoadAndUntagObjectField( function_template_info, FunctionTemplateInfo::kFlagOffset); Branch(IsSetWord(function_template_info_flags, - 1 << FunctionTemplateInfo::kAcceptAnyReceiver), + 1 << FunctionTemplateInfo::AcceptAnyReceiverBit::kShift), &receiver_done, &receiver_needs_access_check); BIND(&receiver_needs_access_check); |