summaryrefslogtreecommitdiff
path: root/chromium/v8/src/builtins/builtins-constructor-gen.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/builtins/builtins-constructor-gen.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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-constructor-gen.cc')
-rw-r--r--chromium/v8/src/builtins/builtins-constructor-gen.cc79
1 files changed, 79 insertions, 0 deletions
diff --git a/chromium/v8/src/builtins/builtins-constructor-gen.cc b/chromium/v8/src/builtins/builtins-constructor-gen.cc
index c706ce9306c..4079bc75d14 100644
--- a/chromium/v8/src/builtins/builtins-constructor-gen.cc
+++ b/chromium/v8/src/builtins/builtins-constructor-gen.cc
@@ -36,6 +36,31 @@ void Builtins::Generate_ConstructFunctionForwardVarargs(MacroAssembler* masm) {
BUILTIN_CODE(masm->isolate(), ConstructFunction));
}
+TF_BUILTIN(Construct_WithFeedback, CallOrConstructBuiltinsAssembler) {
+ TNode<Object> target = CAST(Parameter(Descriptor::kTarget));
+ TNode<Object> new_target = CAST(Parameter(Descriptor::kNewTarget));
+ 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));
+
+ TVARIABLE(AllocationSite, allocation_site);
+ Label if_construct_generic(this), if_construct_array(this);
+ CollectConstructFeedback(context, target, new_target, maybe_feedback_vector,
+ Unsigned(ChangeInt32ToIntPtr(slot)),
+ &if_construct_generic, &if_construct_array,
+ &allocation_site);
+
+ BIND(&if_construct_generic);
+ TailCallBuiltin(Builtins::kConstruct, context, target, new_target, argc);
+
+ BIND(&if_construct_array);
+ TailCallBuiltin(Builtins::kArrayConstructorImpl, context, target, new_target,
+ argc, allocation_site.value());
+}
+
TF_BUILTIN(ConstructWithArrayLike, CallOrConstructBuiltinsAssembler) {
TNode<Object> target = CAST(Parameter(Descriptor::kTarget));
TNode<Object> new_target = CAST(Parameter(Descriptor::kNewTarget));
@@ -44,6 +69,30 @@ TF_BUILTIN(ConstructWithArrayLike, CallOrConstructBuiltinsAssembler) {
CallOrConstructWithArrayLike(target, new_target, arguments_list, context);
}
+TF_BUILTIN(ConstructWithArrayLike_WithFeedback,
+ CallOrConstructBuiltinsAssembler) {
+ TNode<Object> target = CAST(Parameter(Descriptor::kTarget));
+ TNode<Object> new_target = CAST(Parameter(Descriptor::kNewTarget));
+ 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));
+
+ TVARIABLE(AllocationSite, allocation_site);
+ Label if_construct_generic(this), if_construct_array(this);
+ CollectConstructFeedback(context, target, new_target, maybe_feedback_vector,
+ Unsigned(ChangeInt32ToIntPtr(slot)),
+ &if_construct_generic, &if_construct_array,
+ &allocation_site);
+
+ BIND(&if_construct_array);
+ Goto(&if_construct_generic); // Not implemented.
+
+ BIND(&if_construct_generic);
+ CallOrConstructWithArrayLike(target, new_target, arguments_list, context);
+}
+
TF_BUILTIN(ConstructWithSpread, CallOrConstructBuiltinsAssembler) {
TNode<Object> target = CAST(Parameter(Descriptor::kTarget));
TNode<Object> new_target = CAST(Parameter(Descriptor::kNewTarget));
@@ -54,6 +103,31 @@ TF_BUILTIN(ConstructWithSpread, CallOrConstructBuiltinsAssembler) {
CallOrConstructWithSpread(target, new_target, spread, args_count, context);
}
+TF_BUILTIN(ConstructWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) {
+ TNode<Object> target = CAST(Parameter(Descriptor::kTarget));
+ TNode<Object> new_target = CAST(Parameter(Descriptor::kNewTarget));
+ TNode<Object> spread = CAST(Parameter(Descriptor::kSpread));
+ TNode<Int32T> args_count =
+ 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));
+
+ TVARIABLE(AllocationSite, allocation_site);
+ Label if_construct_generic(this), if_construct_array(this);
+ CollectConstructFeedback(context, target, new_target, maybe_feedback_vector,
+ Unsigned(ChangeInt32ToIntPtr(slot)),
+ &if_construct_generic, &if_construct_array,
+ &allocation_site);
+
+ BIND(&if_construct_array);
+ Goto(&if_construct_generic); // Not implemented.
+
+ BIND(&if_construct_generic);
+ CallOrConstructWithSpread(target, new_target, spread, args_count, context);
+}
+
using Node = compiler::Node;
TF_BUILTIN(FastNewClosure, ConstructorBuiltinsAssembler) {
@@ -691,6 +765,11 @@ TF_BUILTIN(ObjectConstructor, ConstructorBuiltinsAssembler) {
args.PopAndReturn(var_result.value());
}
+TF_BUILTIN(CreateEmptyLiteralObject, ConstructorBuiltinsAssembler) {
+ TNode<Context> context = CAST(Parameter(Descriptor::kContext));
+ Return(EmitCreateEmptyObjectLiteral(context));
+}
+
// ES #sec-number-constructor
TF_BUILTIN(NumberConstructor, ConstructorBuiltinsAssembler) {
TNode<Context> context = CAST(Parameter(Descriptor::kContext));