[csa] Tnodify builtins-date-gen.cc
Bug: v8:6949 Change-Id: I119d270cddf931125be6884f671e2f0499ff4118 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1849517 Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#64212}
This commit is contained in:
parent
280e7c8eab
commit
c4063276e7
@ -18,23 +18,23 @@ class DateBuiltinsAssembler : public CodeStubAssembler {
|
||||
: CodeStubAssembler(state) {}
|
||||
|
||||
protected:
|
||||
void Generate_DatePrototype_GetField(Node* context, Node* receiver,
|
||||
int field_index);
|
||||
void Generate_DatePrototype_GetField(TNode<Context> context,
|
||||
TNode<Object> receiver, int field_index);
|
||||
};
|
||||
|
||||
void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context,
|
||||
Node* receiver,
|
||||
int field_index) {
|
||||
void DateBuiltinsAssembler::Generate_DatePrototype_GetField(
|
||||
TNode<Context> context, TNode<Object> receiver, int field_index) {
|
||||
Label receiver_not_date(this, Label::kDeferred);
|
||||
|
||||
GotoIf(TaggedIsSmi(receiver), &receiver_not_date);
|
||||
TNode<Uint16T> receiver_instance_type = LoadInstanceType(receiver);
|
||||
TNode<Uint16T> receiver_instance_type = LoadInstanceType(CAST(receiver));
|
||||
GotoIfNot(InstanceTypeEqual(receiver_instance_type, JS_DATE_TYPE),
|
||||
&receiver_not_date);
|
||||
|
||||
TNode<JSDate> date_receiver = CAST(receiver);
|
||||
// Load the specified date field, falling back to the runtime as necessary.
|
||||
if (field_index == JSDate::kDateValue) {
|
||||
Return(LoadObjectField(receiver, JSDate::kValueOffset));
|
||||
Return(LoadObjectField(date_receiver, JSDate::kValueOffset));
|
||||
} else {
|
||||
if (field_index < JSDate::kFirstUncachedField) {
|
||||
Label stamp_mismatch(this, Label::kDeferred);
|
||||
@ -42,9 +42,9 @@ void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context,
|
||||
ExternalConstant(ExternalReference::date_cache_stamp(isolate())));
|
||||
|
||||
TNode<Object> cache_stamp =
|
||||
LoadObjectField(receiver, JSDate::kCacheStampOffset);
|
||||
LoadObjectField(date_receiver, JSDate::kCacheStampOffset);
|
||||
GotoIf(TaggedNotEqual(date_cache_stamp, cache_stamp), &stamp_mismatch);
|
||||
Return(LoadObjectField(receiver,
|
||||
Return(LoadObjectField(date_receiver,
|
||||
JSDate::kValueOffset + field_index * kTaggedSize));
|
||||
|
||||
BIND(&stamp_mismatch);
|
||||
@ -53,10 +53,10 @@ void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context,
|
||||
TNode<Smi> field_index_smi = SmiConstant(field_index);
|
||||
TNode<ExternalReference> function =
|
||||
ExternalConstant(ExternalReference::get_date_field_function());
|
||||
Node* result = CallCFunction(
|
||||
TNode<Object> result = CAST(CallCFunction(
|
||||
function, MachineType::AnyTagged(),
|
||||
std::make_pair(MachineType::AnyTagged(), receiver),
|
||||
std::make_pair(MachineType::AnyTagged(), field_index_smi));
|
||||
std::make_pair(MachineType::AnyTagged(), date_receiver),
|
||||
std::make_pair(MachineType::AnyTagged(), field_index_smi)));
|
||||
Return(result);
|
||||
}
|
||||
|
||||
@ -66,128 +66,128 @@ void DateBuiltinsAssembler::Generate_DatePrototype_GetField(Node* context,
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetDate, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kDay);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetDay, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kWeekday);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetFullYear, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kYear);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetHours, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kHour);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetMilliseconds, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMillisecond);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetMinutes, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMinute);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetMonth, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMonth);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetSeconds, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kSecond);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetTime, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kDateValue);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetTimezoneOffset, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kTimezoneOffset);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCDate, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kDayUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCDay, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kWeekdayUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCFullYear, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kYearUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCHours, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kHourUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCMilliseconds, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMillisecondUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCMinutes, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMinuteUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCMonth, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kMonthUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeGetUTCSeconds, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kSecondUTC);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeValueOf, DateBuiltinsAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
Generate_DatePrototype_GetField(context, receiver, JSDate::kDateValue);
|
||||
}
|
||||
|
||||
TF_BUILTIN(DatePrototypeToPrimitive, CodeStubAssembler) {
|
||||
Node* context = Parameter(Descriptor::kContext);
|
||||
Node* receiver = Parameter(Descriptor::kReceiver);
|
||||
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
|
||||
TNode<Object> receiver = CAST(Parameter(Descriptor::kReceiver));
|
||||
TNode<Object> hint = CAST(Parameter(Descriptor::kHint));
|
||||
|
||||
// Check if the {receiver} is actually a JSReceiver.
|
||||
Label receiver_is_invalid(this, Label::kDeferred);
|
||||
GotoIf(TaggedIsSmi(receiver), &receiver_is_invalid);
|
||||
GotoIfNot(IsJSReceiver(receiver), &receiver_is_invalid);
|
||||
GotoIfNot(IsJSReceiver(CAST(receiver)), &receiver_is_invalid);
|
||||
|
||||
// Dispatch to the appropriate OrdinaryToPrimitive builtin.
|
||||
Label hint_is_number(this), hint_is_string(this),
|
||||
|
Loading…
Reference in New Issue
Block a user