summaryrefslogtreecommitdiff
path: root/chromium/v8/src/builtins/builtins-array-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-array-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-array-gen.cc')
-rw-r--r--chromium/v8/src/builtins/builtins-array-gen.cc44
1 files changed, 25 insertions, 19 deletions
diff --git a/chromium/v8/src/builtins/builtins-array-gen.cc b/chromium/v8/src/builtins/builtins-array-gen.cc
index 734b9b634a0..dfd52255830 100644
--- a/chromium/v8/src/builtins/builtins-array-gen.cc
+++ b/chromium/v8/src/builtins/builtins-array-gen.cc
@@ -438,7 +438,6 @@ TF_BUILTIN(ArrayPrototypePush, CodeStubAssembler) {
}
TF_BUILTIN(ExtractFastJSArray, ArrayBuiltinsAssembler) {
- ParameterMode mode = OptimalParameterMode();
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
TNode<JSArray> array = CAST(Parameter(Descriptor::kSource));
TNode<BInt> begin = SmiToBInt(CAST(Parameter(Descriptor::kBegin)));
@@ -446,7 +445,7 @@ TF_BUILTIN(ExtractFastJSArray, ArrayBuiltinsAssembler) {
CSA_ASSERT(this, Word32BinaryNot(IsNoElementsProtectorCellInvalid()));
- Return(ExtractFastJSArray(context, array, begin, count, mode));
+ Return(ExtractFastJSArray(context, array, begin, count));
}
TF_BUILTIN(CloneFastJSArray, ArrayBuiltinsAssembler) {
@@ -477,7 +476,7 @@ TF_BUILTIN(CloneFastJSArrayFillingHoles, ArrayBuiltinsAssembler) {
LoadElementsKind(array))),
Word32BinaryNot(IsNoElementsProtectorCellInvalid())));
- Return(CloneFastJSArray(context, array, {},
+ Return(CloneFastJSArray(context, array, base::nullopt,
HoleConversionMode::kConvertToUndefined));
}
@@ -1153,7 +1152,7 @@ TF_BUILTIN(ArrayIndexOfHoleyDoubles, ArrayIncludesIndexofAssembler) {
// ES #sec-array.prototype.values
TF_BUILTIN(ArrayPrototypeValues, CodeStubAssembler) {
- TNode<Context> context = CAST(Parameter(Descriptor::kContext));
+ TNode<NativeContext> context = CAST(Parameter(Descriptor::kContext));
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
Return(CreateArrayIterator(context, ToObject_Inline(context, receiver),
IterationKind::kValues));
@@ -1161,7 +1160,7 @@ TF_BUILTIN(ArrayPrototypeValues, CodeStubAssembler) {
// ES #sec-array.prototype.entries
TF_BUILTIN(ArrayPrototypeEntries, CodeStubAssembler) {
- TNode<Context> context = CAST(Parameter(Descriptor::kContext));
+ TNode<NativeContext> context = CAST(Parameter(Descriptor::kContext));
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
Return(CreateArrayIterator(context, ToObject_Inline(context, receiver),
IterationKind::kEntries));
@@ -1169,7 +1168,7 @@ TF_BUILTIN(ArrayPrototypeEntries, CodeStubAssembler) {
// ES #sec-array.prototype.keys
TF_BUILTIN(ArrayPrototypeKeys, CodeStubAssembler) {
- TNode<Context> context = CAST(Parameter(Descriptor::kContext));
+ TNode<NativeContext> context = CAST(Parameter(Descriptor::kContext));
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
Return(CreateArrayIterator(context, ToObject_Inline(context, receiver),
IterationKind::kKeys));
@@ -1665,7 +1664,8 @@ void ArrayBuiltinsAssembler::TailCallArrayConstructorStub(
void ArrayBuiltinsAssembler::CreateArrayDispatchNoArgument(
TNode<Context> context, TNode<JSFunction> target, TNode<Int32T> argc,
- AllocationSiteOverrideMode mode, TNode<AllocationSite> allocation_site) {
+ AllocationSiteOverrideMode mode,
+ base::Optional<TNode<AllocationSite>> allocation_site) {
if (mode == DISABLE_ALLOCATION_SITES) {
Callable callable = CodeFactory::ArrayNoArgumentConstructor(
isolate(), GetInitialFastElementsKind(), mode);
@@ -1674,7 +1674,8 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchNoArgument(
argc);
} else {
DCHECK_EQ(mode, DONT_OVERRIDE);
- TNode<Int32T> elements_kind = LoadElementsKind(allocation_site);
+ DCHECK(allocation_site);
+ TNode<Int32T> elements_kind = LoadElementsKind(*allocation_site);
// TODO(ishell): Compute the builtin index dynamically instead of
// iterating over all expected elements kinds.
@@ -1688,7 +1689,7 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchNoArgument(
Callable callable =
CodeFactory::ArrayNoArgumentConstructor(isolate(), kind, mode);
- TailCallArrayConstructorStub(callable, context, target, allocation_site,
+ TailCallArrayConstructorStub(callable, context, target, *allocation_site,
argc);
BIND(&next);
@@ -1701,7 +1702,8 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchNoArgument(
void ArrayBuiltinsAssembler::CreateArrayDispatchSingleArgument(
TNode<Context> context, TNode<JSFunction> target, TNode<Int32T> argc,
- AllocationSiteOverrideMode mode, TNode<AllocationSite> allocation_site) {
+ AllocationSiteOverrideMode mode,
+ base::Optional<TNode<AllocationSite>> allocation_site) {
if (mode == DISABLE_ALLOCATION_SITES) {
ElementsKind initial = GetInitialFastElementsKind();
ElementsKind holey_initial = GetHoleyElementsKind(initial);
@@ -1712,7 +1714,8 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchSingleArgument(
argc);
} else {
DCHECK_EQ(mode, DONT_OVERRIDE);
- TNode<Smi> transition_info = LoadTransitionInfo(allocation_site);
+ DCHECK(allocation_site);
+ TNode<Smi> transition_info = LoadTransitionInfo(*allocation_site);
// Least significant bit in fast array elements kind means holeyness.
STATIC_ASSERT(PACKED_SMI_ELEMENTS == 0);
@@ -1735,7 +1738,7 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchSingleArgument(
// Make elements kind holey and update elements kind in the type info.
var_elements_kind = Word32Or(var_elements_kind.value(), Int32Constant(1));
StoreObjectFieldNoWriteBarrier(
- allocation_site, AllocationSite::kTransitionInfoOrBoilerplateOffset,
+ *allocation_site, AllocationSite::kTransitionInfoOrBoilerplateOffset,
SmiOr(transition_info, SmiConstant(fast_elements_kind_holey_mask)));
Goto(&normal_sequence);
}
@@ -1756,7 +1759,7 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchSingleArgument(
Callable callable =
CodeFactory::ArraySingleArgumentConstructor(isolate(), kind, mode);
- TailCallArrayConstructorStub(callable, context, target, allocation_site,
+ TailCallArrayConstructorStub(callable, context, target, *allocation_site,
argc);
BIND(&next);
@@ -1769,7 +1772,8 @@ void ArrayBuiltinsAssembler::CreateArrayDispatchSingleArgument(
void ArrayBuiltinsAssembler::GenerateDispatchToArrayStub(
TNode<Context> context, TNode<JSFunction> target, TNode<Int32T> argc,
- AllocationSiteOverrideMode mode, TNode<AllocationSite> allocation_site) {
+ AllocationSiteOverrideMode mode,
+ base::Optional<TNode<AllocationSite>> allocation_site) {
Label check_one_case(this), fallthrough(this);
GotoIfNot(Word32Equal(argc, Int32Constant(0)), &check_one_case);
CreateArrayDispatchNoArgument(context, target, argc, mode, allocation_site);
@@ -1862,8 +1866,9 @@ void ArrayBuiltinsAssembler::GenerateConstructor(
{
TNode<JSArray> array = AllocateJSArray(
elements_kind, array_map, array_size_smi, array_size_smi,
- mode == DONT_TRACK_ALLOCATION_SITE ? TNode<AllocationSite>()
- : CAST(allocation_site));
+ mode == DONT_TRACK_ALLOCATION_SITE
+ ? base::Optional<TNode<AllocationSite>>(base::nullopt)
+ : CAST(allocation_site));
Return(array);
}
}
@@ -1882,9 +1887,10 @@ void ArrayBuiltinsAssembler::GenerateArrayNoArgumentConstructor(
Parameter(Descriptor::kFunction), JSFunction::kContextOffset));
bool track_allocation_site =
AllocationSite::ShouldTrack(kind) && mode != DISABLE_ALLOCATION_SITES;
- TNode<AllocationSite> allocation_site =
- track_allocation_site ? CAST(Parameter(Descriptor::kAllocationSite))
- : TNode<AllocationSite>();
+ base::Optional<TNode<AllocationSite>> allocation_site =
+ track_allocation_site
+ ? CAST(Parameter(Descriptor::kAllocationSite))
+ : base::Optional<TNode<AllocationSite>>(base::nullopt);
TNode<Map> array_map = LoadJSArrayElementsMap(kind, native_context);
TNode<JSArray> array = AllocateJSArray(
kind, array_map, IntPtrConstant(JSArray::kPreallocatedArrayElements),