Commit c7c5fabf authored by Victor Gomes's avatar Victor Gomes Committed by Commit Bot

[cleanup] Consistently use UintPtrT as type for feedback vector slot

Change-Id: I9eb86c5ca40734ec61864bce7d0f757fcd4b7d93
Bug: v8:11429
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697205Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72800}
parent a5bebe65
...@@ -70,9 +70,8 @@ TF_BUILTIN(Call_ReceiverIsNullOrUndefined_Baseline, ...@@ -70,9 +70,8 @@ TF_BUILTIN(Call_ReceiverIsNullOrUndefined_Baseline,
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
auto feedback_vector = LoadFeedbackVectorFromBaseline(); auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target, TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target,
argc); argc);
} }
...@@ -83,9 +82,8 @@ TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_Baseline, ...@@ -83,9 +82,8 @@ TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_Baseline,
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
auto feedback_vector = LoadFeedbackVectorFromBaseline(); auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target, TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target,
argc); argc);
} }
...@@ -95,9 +93,8 @@ TF_BUILTIN(Call_ReceiverIsAny_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -95,9 +93,8 @@ TF_BUILTIN(Call_ReceiverIsAny_Baseline, CallOrConstructBuiltinsAssembler) {
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
auto feedback_vector = LoadFeedbackVectorFromBaseline(); auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc); TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc);
} }
...@@ -107,9 +104,8 @@ TF_BUILTIN(Call_ReceiverIsNullOrUndefined_WithFeedback, ...@@ -107,9 +104,8 @@ TF_BUILTIN(Call_ReceiverIsNullOrUndefined_WithFeedback,
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target, TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target,
argc); argc);
} }
...@@ -120,9 +116,8 @@ TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_WithFeedback, ...@@ -120,9 +116,8 @@ TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_WithFeedback,
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target, TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target,
argc); argc);
} }
...@@ -132,9 +127,8 @@ TF_BUILTIN(Call_ReceiverIsAny_WithFeedback, CallOrConstructBuiltinsAssembler) { ...@@ -132,9 +127,8 @@ TF_BUILTIN(Call_ReceiverIsAny_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc); TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc);
} }
...@@ -469,9 +463,8 @@ TF_BUILTIN(CallWithArrayLike_WithFeedback, CallOrConstructBuiltinsAssembler) { ...@@ -469,9 +463,8 @@ TF_BUILTIN(CallWithArrayLike_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList); auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
CallOrConstructWithArrayLike(target, new_target, arguments_list, context); CallOrConstructWithArrayLike(target, new_target, arguments_list, context);
} }
...@@ -491,9 +484,8 @@ TF_BUILTIN(CallWithSpread_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -491,9 +484,8 @@ TF_BUILTIN(CallWithSpread_Baseline, CallOrConstructBuiltinsAssembler) {
auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount); auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
auto feedback_vector = LoadFeedbackVectorFromBaseline(); auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
CallOrConstructWithSpread(target, new_target, spread, args_count, context); CallOrConstructWithSpread(target, new_target, spread, args_count, context);
} }
...@@ -504,9 +496,8 @@ TF_BUILTIN(CallWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) { ...@@ -504,9 +496,8 @@ TF_BUILTIN(CallWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount); auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
CollectCallFeedback(target, context, feedback_vector, CollectCallFeedback(target, context, feedback_vector, slot);
Unsigned(ChangeInt32ToIntPtr(slot)));
CallOrConstructWithSpread(target, new_target, spread, args_count, context); CallOrConstructWithSpread(target, new_target, spread, args_count, context);
} }
......
...@@ -43,7 +43,7 @@ TF_BUILTIN(Construct_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -43,7 +43,7 @@ TF_BUILTIN(Construct_Baseline, CallOrConstructBuiltinsAssembler) {
auto target = Parameter<Object>(Descriptor::kTarget); auto target = Parameter<Object>(Descriptor::kTarget);
auto new_target = Parameter<Object>(Descriptor::kNewTarget); auto new_target = Parameter<Object>(Descriptor::kNewTarget);
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
// TODO(verwaest): Only emit context loads where necessary // TODO(verwaest): Only emit context loads where necessary
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
...@@ -53,8 +53,7 @@ TF_BUILTIN(Construct_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -53,8 +53,7 @@ TF_BUILTIN(Construct_Baseline, CallOrConstructBuiltinsAssembler) {
TVARIABLE(AllocationSite, allocation_site); TVARIABLE(AllocationSite, allocation_site);
Label if_construct_generic(this), if_construct_array(this); Label if_construct_generic(this), if_construct_array(this);
CollectConstructFeedback(context, target, new_target, feedback_vector, CollectConstructFeedback(context, target, new_target, feedback_vector, slot,
Unsigned(ChangeInt32ToIntPtr(slot)),
&if_construct_generic, &if_construct_array, &if_construct_generic, &if_construct_array,
&allocation_site); &allocation_site);
...@@ -72,12 +71,11 @@ TF_BUILTIN(Construct_WithFeedback, CallOrConstructBuiltinsAssembler) { ...@@ -72,12 +71,11 @@ TF_BUILTIN(Construct_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
TVARIABLE(AllocationSite, allocation_site); TVARIABLE(AllocationSite, allocation_site);
Label if_construct_generic(this), if_construct_array(this); Label if_construct_generic(this), if_construct_array(this);
CollectConstructFeedback(context, target, new_target, feedback_vector, CollectConstructFeedback(context, target, new_target, feedback_vector, slot,
Unsigned(ChangeInt32ToIntPtr(slot)),
&if_construct_generic, &if_construct_array, &if_construct_generic, &if_construct_array,
&allocation_site); &allocation_site);
...@@ -104,12 +102,11 @@ TF_BUILTIN(ConstructWithArrayLike_WithFeedback, ...@@ -104,12 +102,11 @@ TF_BUILTIN(ConstructWithArrayLike_WithFeedback,
auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList); auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
TVARIABLE(AllocationSite, allocation_site); TVARIABLE(AllocationSite, allocation_site);
Label if_construct_generic(this), if_construct_array(this); Label if_construct_generic(this), if_construct_array(this);
CollectConstructFeedback(context, target, new_target, feedback_vector, CollectConstructFeedback(context, target, new_target, feedback_vector, slot,
Unsigned(ChangeInt32ToIntPtr(slot)),
&if_construct_generic, &if_construct_array, &if_construct_generic, &if_construct_array,
&allocation_site); &allocation_site);
...@@ -136,7 +133,7 @@ TF_BUILTIN(ConstructWithSpread_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -136,7 +133,7 @@ TF_BUILTIN(ConstructWithSpread_Baseline, CallOrConstructBuiltinsAssembler) {
auto spread = Parameter<Object>(Descriptor::kSpread); auto spread = Parameter<Object>(Descriptor::kSpread);
auto args_count = auto args_count =
UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
// TODO(verwaest): Only emit context loads where necessary // TODO(verwaest): Only emit context loads where necessary
auto context = LoadContextFromBaseline(); auto context = LoadContextFromBaseline();
...@@ -146,8 +143,7 @@ TF_BUILTIN(ConstructWithSpread_Baseline, CallOrConstructBuiltinsAssembler) { ...@@ -146,8 +143,7 @@ TF_BUILTIN(ConstructWithSpread_Baseline, CallOrConstructBuiltinsAssembler) {
TVARIABLE(AllocationSite, allocation_site); TVARIABLE(AllocationSite, allocation_site);
Label if_construct_generic(this), if_construct_array(this); Label if_construct_generic(this), if_construct_array(this);
CollectConstructFeedback(context, target, new_target, feedback_vector, CollectConstructFeedback(context, target, new_target, feedback_vector, slot,
Unsigned(ChangeInt32ToIntPtr(slot)),
&if_construct_generic, &if_construct_array, &if_construct_generic, &if_construct_array,
&allocation_site); &allocation_site);
...@@ -166,12 +162,11 @@ TF_BUILTIN(ConstructWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) { ...@@ -166,12 +162,11 @@ TF_BUILTIN(ConstructWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) {
UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount); UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
auto context = Parameter<Context>(Descriptor::kContext); auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<HeapObject>(Descriptor::kFeedbackVector); auto feedback_vector = Parameter<HeapObject>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<Int32T>(Descriptor::kSlot); auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
TVARIABLE(AllocationSite, allocation_site); TVARIABLE(AllocationSite, allocation_site);
Label if_construct_generic(this), if_construct_array(this); Label if_construct_generic(this), if_construct_array(this);
CollectConstructFeedback(context, target, new_target, feedback_vector, CollectConstructFeedback(context, target, new_target, feedback_vector, slot,
Unsigned(ChangeInt32ToIntPtr(slot)),
&if_construct_generic, &if_construct_array, &if_construct_generic, &if_construct_array,
&allocation_site); &allocation_site);
......
...@@ -1140,18 +1140,16 @@ class CallWithSpreadDescriptor : public CallInterfaceDescriptor { ...@@ -1140,18 +1140,16 @@ class CallWithSpreadDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(CallWithSpreadDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(CallWithSpreadDescriptor, CallInterfaceDescriptor)
}; };
// TODO(v8:11429,jgruber): Pass the slot as UintPtr.
class CallWithSpread_BaselineDescriptor : public CallInterfaceDescriptor { class CallWithSpread_BaselineDescriptor : public CallInterfaceDescriptor {
public: public:
DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot) DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kArgumentsCount MachineType::Int32(), // kArgumentsCount
MachineType::AnyTagged(), // kSpread MachineType::AnyTagged(), // kSpread
MachineType::Int32()) // kSlot MachineType::UintPtr()) // kSlot
DECLARE_DESCRIPTOR(CallWithSpread_BaselineDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(CallWithSpread_BaselineDescriptor, CallInterfaceDescriptor)
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class CallWithSpread_WithFeedbackDescriptor : public CallInterfaceDescriptor { class CallWithSpread_WithFeedbackDescriptor : public CallInterfaceDescriptor {
public: public:
DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot, DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot,
...@@ -1159,7 +1157,7 @@ class CallWithSpread_WithFeedbackDescriptor : public CallInterfaceDescriptor { ...@@ -1159,7 +1157,7 @@ class CallWithSpread_WithFeedbackDescriptor : public CallInterfaceDescriptor {
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kArgumentsCount MachineType::Int32(), // kArgumentsCount
MachineType::AnyTagged(), // kSpread MachineType::AnyTagged(), // kSpread
MachineType::Int32(), // kSlot MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_DESCRIPTOR(CallWithSpread_WithFeedbackDescriptor, DECLARE_DESCRIPTOR(CallWithSpread_WithFeedbackDescriptor,
CallInterfaceDescriptor) CallInterfaceDescriptor)
...@@ -1173,14 +1171,13 @@ class CallWithArrayLikeDescriptor : public CallInterfaceDescriptor { ...@@ -1173,14 +1171,13 @@ class CallWithArrayLikeDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(CallWithArrayLikeDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(CallWithArrayLikeDescriptor, CallInterfaceDescriptor)
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class CallWithArrayLike_WithFeedbackDescriptor class CallWithArrayLike_WithFeedbackDescriptor
: public CallInterfaceDescriptor { : public CallInterfaceDescriptor {
public: public:
DEFINE_PARAMETERS(kTarget, kArgumentsList, kSlot, kFeedbackVector) DEFINE_PARAMETERS(kTarget, kArgumentsList, kSlot, kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged(), // kArgumentsList MachineType::AnyTagged(), // kArgumentsList
MachineType::Int32(), // kSlot MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_DESCRIPTOR(CallWithArrayLike_WithFeedbackDescriptor, DECLARE_DESCRIPTOR(CallWithArrayLike_WithFeedbackDescriptor,
CallInterfaceDescriptor) CallInterfaceDescriptor)
...@@ -1209,13 +1206,12 @@ class ConstructWithSpreadDescriptor : public CallInterfaceDescriptor { ...@@ -1209,13 +1206,12 @@ class ConstructWithSpreadDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(ConstructWithSpreadDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(ConstructWithSpreadDescriptor, CallInterfaceDescriptor)
}; };
// TODO(v8:11429,jgruber): Pass the slot as UintPtr.
class ConstructWithSpread_BaselineDescriptor : public CallInterfaceDescriptor { class ConstructWithSpread_BaselineDescriptor : public CallInterfaceDescriptor {
public: public:
// Note: kSlot comes before kSpread since as an untagged value it must be // Note: kSlot comes before kSpread since as an untagged value it must be
// passed in a register. // passed in a register.
DEFINE_JS_PARAMETERS(kSlot, kSpread) DEFINE_JS_PARAMETERS(kSlot, kSpread)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32(), // kSlot DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kSpread MachineType::AnyTagged()) // kSpread
DECLARE_DESCRIPTOR(ConstructWithSpread_BaselineDescriptor, DECLARE_DESCRIPTOR(ConstructWithSpread_BaselineDescriptor,
CallInterfaceDescriptor) CallInterfaceDescriptor)
...@@ -1230,14 +1226,13 @@ class ConstructWithSpread_BaselineDescriptor : public CallInterfaceDescriptor { ...@@ -1230,14 +1226,13 @@ class ConstructWithSpread_BaselineDescriptor : public CallInterfaceDescriptor {
static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0; static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0;
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class ConstructWithSpread_WithFeedbackDescriptor class ConstructWithSpread_WithFeedbackDescriptor
: public CallInterfaceDescriptor { : public CallInterfaceDescriptor {
public: public:
// Note: kSlot comes before kSpread since as an untagged value it must be // Note: kSlot comes before kSpread since as an untagged value it must be
// passed in a register. // passed in a register.
DEFINE_JS_PARAMETERS(kSlot, kSpread, kFeedbackVector) DEFINE_JS_PARAMETERS(kSlot, kSpread, kFeedbackVector)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32(), // kSlot DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged(), // kSpread MachineType::AnyTagged(), // kSpread
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_DESCRIPTOR(ConstructWithSpread_WithFeedbackDescriptor, DECLARE_DESCRIPTOR(ConstructWithSpread_WithFeedbackDescriptor,
...@@ -1253,7 +1248,6 @@ class ConstructWithArrayLikeDescriptor : public CallInterfaceDescriptor { ...@@ -1253,7 +1248,6 @@ class ConstructWithArrayLikeDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(ConstructWithArrayLikeDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(ConstructWithArrayLikeDescriptor, CallInterfaceDescriptor)
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class ConstructWithArrayLike_WithFeedbackDescriptor class ConstructWithArrayLike_WithFeedbackDescriptor
: public CallInterfaceDescriptor { : public CallInterfaceDescriptor {
public: public:
...@@ -1261,7 +1255,7 @@ class ConstructWithArrayLike_WithFeedbackDescriptor ...@@ -1261,7 +1255,7 @@ class ConstructWithArrayLike_WithFeedbackDescriptor
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged(), // kNewTarget MachineType::AnyTagged(), // kNewTarget
MachineType::AnyTagged(), // kArgumentsList MachineType::AnyTagged(), // kArgumentsList
MachineType::Int32(), // kSlot MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_DESCRIPTOR(ConstructWithArrayLike_WithFeedbackDescriptor, DECLARE_DESCRIPTOR(ConstructWithArrayLike_WithFeedbackDescriptor,
CallInterfaceDescriptor) CallInterfaceDescriptor)
...@@ -1726,24 +1720,22 @@ class BinaryOp_WithFeedbackDescriptor : public CallInterfaceDescriptor { ...@@ -1726,24 +1720,22 @@ class BinaryOp_WithFeedbackDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(BinaryOp_WithFeedbackDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(BinaryOp_WithFeedbackDescriptor, CallInterfaceDescriptor)
}; };
// TODO(v8:11429,jgruber): Pass the slot as UintPtr.
class CallTrampoline_BaselineDescriptor : public CallInterfaceDescriptor { class CallTrampoline_BaselineDescriptor : public CallInterfaceDescriptor {
public: public:
DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot) DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction
MachineType::Int32(), // kActualArgumentsCount MachineType::Int32(), // kActualArgumentsCount
MachineType::Int32()) // kSlot MachineType::UintPtr()) // kSlot
DECLARE_DESCRIPTOR(CallTrampoline_BaselineDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(CallTrampoline_BaselineDescriptor, CallInterfaceDescriptor)
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class CallTrampoline_WithFeedbackDescriptor : public CallInterfaceDescriptor { class CallTrampoline_WithFeedbackDescriptor : public CallInterfaceDescriptor {
public: public:
DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot, DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot,
kFeedbackVector) kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction
MachineType::Int32(), // kActualArgumentsCount MachineType::Int32(), // kActualArgumentsCount
MachineType::Int32(), // kSlot MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_DESCRIPTOR(CallTrampoline_WithFeedbackDescriptor, DECLARE_DESCRIPTOR(CallTrampoline_WithFeedbackDescriptor,
CallInterfaceDescriptor) CallInterfaceDescriptor)
...@@ -1768,21 +1760,19 @@ class Compare_BaselineDescriptor : public CallInterfaceDescriptor { ...@@ -1768,21 +1760,19 @@ class Compare_BaselineDescriptor : public CallInterfaceDescriptor {
DECLARE_DESCRIPTOR(Compare_BaselineDescriptor, CallInterfaceDescriptor) DECLARE_DESCRIPTOR(Compare_BaselineDescriptor, CallInterfaceDescriptor)
}; };
// TODO(v8:11429,jgruber): Pass the slot as UintPtr.
class Construct_BaselineDescriptor : public CallInterfaceDescriptor { class Construct_BaselineDescriptor : public CallInterfaceDescriptor {
public: public:
DEFINE_JS_PARAMETERS_NO_CONTEXT(kSlot) DEFINE_JS_PARAMETERS_NO_CONTEXT(kSlot)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32()) // kSlot DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr()) // kSlot
DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_BaselineDescriptor, DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_BaselineDescriptor,
CallInterfaceDescriptor, 1) CallInterfaceDescriptor, 1)
}; };
// TODO(jgruber): Pass the slot as UintPtr.
class Construct_WithFeedbackDescriptor : public CallInterfaceDescriptor { class Construct_WithFeedbackDescriptor : public CallInterfaceDescriptor {
public: public:
// kSlot is passed in a register, kFeedbackVector on the stack. // kSlot is passed in a register, kFeedbackVector on the stack.
DEFINE_JS_PARAMETERS(kSlot, kFeedbackVector) DEFINE_JS_PARAMETERS(kSlot, kFeedbackVector)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32(), // kSlot DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector MachineType::AnyTagged()) // kFeedbackVector
DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_WithFeedbackDescriptor, DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_WithFeedbackDescriptor,
CallInterfaceDescriptor, 1) CallInterfaceDescriptor, 1)
......
...@@ -873,7 +873,7 @@ void JSGenericLowering::LowerJSConstruct(Node* node) { ...@@ -873,7 +873,7 @@ void JSGenericLowering::LowerJSConstruct(Node* node) {
zone(), callable.descriptor(), stack_argument_count, flags); zone(), callable.descriptor(), stack_argument_count, flags);
Node* stub_code = jsgraph()->HeapConstant(callable.code()); Node* stub_code = jsgraph()->HeapConstant(callable.code());
Node* stub_arity = jsgraph()->Int32Constant(arg_count); Node* stub_arity = jsgraph()->Int32Constant(arg_count);
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
Node* receiver = jsgraph()->UndefinedConstant(); Node* receiver = jsgraph()->UndefinedConstant();
Node* feedback_vector = node->RemoveInput(n.FeedbackVectorIndex()); Node* feedback_vector = node->RemoveInput(n.FeedbackVectorIndex());
// Register argument inputs are followed by stack argument inputs (such as // Register argument inputs are followed by stack argument inputs (such as
...@@ -935,7 +935,7 @@ void JSGenericLowering::LowerJSConstructWithArrayLike(Node* node) { ...@@ -935,7 +935,7 @@ void JSGenericLowering::LowerJSConstructWithArrayLike(Node* node) {
zone(), callable.descriptor(), stack_argument_count, flags); zone(), callable.descriptor(), stack_argument_count, flags);
Node* stub_code = jsgraph()->HeapConstant(callable.code()); Node* stub_code = jsgraph()->HeapConstant(callable.code());
Node* receiver = jsgraph()->UndefinedConstant(); Node* receiver = jsgraph()->UndefinedConstant();
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
Node* feedback_vector = node->RemoveInput(n.FeedbackVectorIndex()); Node* feedback_vector = node->RemoveInput(n.FeedbackVectorIndex());
// Register argument inputs are followed by stack argument inputs (such as // Register argument inputs are followed by stack argument inputs (such as
// feedback_vector). Both are listed in ascending order. Note that // feedback_vector). Both are listed in ascending order. Note that
...@@ -997,7 +997,7 @@ void JSGenericLowering::LowerJSConstructWithSpread(Node* node) { ...@@ -997,7 +997,7 @@ void JSGenericLowering::LowerJSConstructWithSpread(Node* node) {
auto call_descriptor = Linkage::GetStubCallDescriptor( auto call_descriptor = Linkage::GetStubCallDescriptor(
zone(), callable.descriptor(), stack_argument_count, flags); zone(), callable.descriptor(), stack_argument_count, flags);
Node* stub_code = jsgraph()->HeapConstant(callable.code()); Node* stub_code = jsgraph()->HeapConstant(callable.code());
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
// The single available register is needed for `slot`, thus `spread` remains // The single available register is needed for `slot`, thus `spread` remains
// on the stack here. // on the stack here.
...@@ -1088,7 +1088,7 @@ void JSGenericLowering::LowerJSCall(Node* node) { ...@@ -1088,7 +1088,7 @@ void JSGenericLowering::LowerJSCall(Node* node) {
zone(), callable.descriptor(), arg_count + 1, flags); zone(), callable.descriptor(), arg_count + 1, flags);
Node* stub_code = jsgraph()->HeapConstant(callable.code()); Node* stub_code = jsgraph()->HeapConstant(callable.code());
Node* stub_arity = jsgraph()->Int32Constant(arg_count); Node* stub_arity = jsgraph()->Int32Constant(arg_count);
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
node->InsertInput(zone(), 0, stub_code); node->InsertInput(zone(), 0, stub_code);
node->InsertInput(zone(), 2, stub_arity); node->InsertInput(zone(), 2, stub_arity);
node->InsertInput(zone(), 3, slot); node->InsertInput(zone(), 3, slot);
...@@ -1128,7 +1128,7 @@ void JSGenericLowering::LowerJSCallWithArrayLike(Node* node) { ...@@ -1128,7 +1128,7 @@ void JSGenericLowering::LowerJSCallWithArrayLike(Node* node) {
Node* receiver = n.receiver(); Node* receiver = n.receiver();
Node* arguments_list = n.Argument(0); Node* arguments_list = n.Argument(0);
Node* feedback_vector = n.feedback_vector(); Node* feedback_vector = n.feedback_vector();
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
// Shuffling inputs. // Shuffling inputs.
// Before: {target, receiver, arguments_list, vector}. // Before: {target, receiver, arguments_list, vector}.
...@@ -1193,7 +1193,7 @@ void JSGenericLowering::LowerJSCallWithSpread(Node* node) { ...@@ -1193,7 +1193,7 @@ void JSGenericLowering::LowerJSCallWithSpread(Node* node) {
auto call_descriptor = Linkage::GetStubCallDescriptor( auto call_descriptor = Linkage::GetStubCallDescriptor(
zone(), callable.descriptor(), stack_argument_count, flags); zone(), callable.descriptor(), stack_argument_count, flags);
Node* stub_code = jsgraph()->HeapConstant(callable.code()); Node* stub_code = jsgraph()->HeapConstant(callable.code());
Node* slot = jsgraph()->Int32Constant(p.feedback().index()); Node* slot = jsgraph()->UintPtrConstant(p.feedback().index());
// We pass the spread in a register, not on the stack. // We pass the spread in a register, not on the stack.
Node* stub_arity = jsgraph()->Int32Constant(arg_count - kTheSpread); Node* stub_arity = jsgraph()->Int32Constant(arg_count - kTheSpread);
......
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