Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Unified Diff: src/builtins/builtins-date.cc

Issue 2734323004: [cleanup] Refactor remaining builtins-*.cc to use TF_BUILTIN macro (Closed)
Patch Set: drop unused variable Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/builtins/builtins-conversion.cc ('k') | src/builtins/builtins-function.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins/builtins-date.cc
diff --git a/src/builtins/builtins-date.cc b/src/builtins/builtins-date.cc
index 1bc1dfa03614b78a5447403df8cc0aa33561be00..4c44bbc65a98edf50c145610bd1fa1534bc52fa3 100644
--- a/src/builtins/builtins-date.cc
+++ b/src/builtins/builtins-date.cc
@@ -17,6 +17,15 @@ namespace internal {
// -----------------------------------------------------------------------------
// ES6 section 20.3 Date Objects
+class DateBuiltinsAssembler : public CodeStubAssembler {
+ public:
+ explicit DateBuiltinsAssembler(compiler::CodeAssemblerState* state)
+ : CodeStubAssembler(state) {}
+
+ protected:
+ void Generate_DatePrototype_GetField(int field_index);
+};
+
namespace {
// ES6 section 20.3.1.1 Time Values and Time Range
@@ -895,279 +904,198 @@ BUILTIN(DatePrototypeToJson) {
}
}
-namespace {
-
-void Generate_DatePrototype_GetField(CodeStubAssembler* assembler,
- int field_index) {
- typedef CodeStubAssembler::Label Label;
- typedef compiler::Node Node;
-
- Node* receiver = assembler->Parameter(0);
- Node* context = assembler->Parameter(3);
+void DateBuiltinsAssembler::Generate_DatePrototype_GetField(int field_index) {
+ Node* receiver = Parameter(0);
+ Node* context = Parameter(3);
- Label receiver_not_date(assembler, Label::kDeferred);
+ Label receiver_not_date(this, Label::kDeferred);
- assembler->GotoIf(assembler->TaggedIsSmi(receiver), &receiver_not_date);
- Node* receiver_instance_type = assembler->LoadInstanceType(receiver);
- assembler->GotoIf(
- assembler->Word32NotEqual(receiver_instance_type,
- assembler->Int32Constant(JS_DATE_TYPE)),
- &receiver_not_date);
+ GotoIf(TaggedIsSmi(receiver), &receiver_not_date);
+ Node* receiver_instance_type = LoadInstanceType(receiver);
+ GotoIf(Word32NotEqual(receiver_instance_type, Int32Constant(JS_DATE_TYPE)),
+ &receiver_not_date);
// Load the specified date field, falling back to the runtime as necessary.
if (field_index == JSDate::kDateValue) {
- assembler->Return(
- assembler->LoadObjectField(receiver, JSDate::kValueOffset));
+ Return(LoadObjectField(receiver, JSDate::kValueOffset));
} else {
if (field_index < JSDate::kFirstUncachedField) {
- Label stamp_mismatch(assembler, Label::kDeferred);
- Node* date_cache_stamp = assembler->Load(
+ Label stamp_mismatch(this, Label::kDeferred);
+ Node* date_cache_stamp = Load(
MachineType::AnyTagged(),
- assembler->ExternalConstant(
- ExternalReference::date_cache_stamp(assembler->isolate())));
-
- Node* cache_stamp =
- assembler->LoadObjectField(receiver, JSDate::kCacheStampOffset);
- assembler->GotoIf(assembler->WordNotEqual(date_cache_stamp, cache_stamp),
- &stamp_mismatch);
- assembler->Return(assembler->LoadObjectField(
+ ExternalConstant(ExternalReference::date_cache_stamp(isolate())));
+
+ Node* cache_stamp = LoadObjectField(receiver, JSDate::kCacheStampOffset);
+ GotoIf(WordNotEqual(date_cache_stamp, cache_stamp), &stamp_mismatch);
+ Return(LoadObjectField(
receiver, JSDate::kValueOffset + field_index * kPointerSize));
- assembler->Bind(&stamp_mismatch);
+ Bind(&stamp_mismatch);
}
- Node* field_index_smi = assembler->SmiConstant(Smi::FromInt(field_index));
- Node* function = assembler->ExternalConstant(
- ExternalReference::get_date_field_function(assembler->isolate()));
- Node* result = assembler->CallCFunction2(
+ Node* field_index_smi = SmiConstant(Smi::FromInt(field_index));
+ Node* function =
+ ExternalConstant(ExternalReference::get_date_field_function(isolate()));
+ Node* result = CallCFunction2(
MachineType::AnyTagged(), MachineType::AnyTagged(),
MachineType::AnyTagged(), function, receiver, field_index_smi);
- assembler->Return(result);
+ Return(result);
}
// Raise a TypeError if the receiver is not a date.
- assembler->Bind(&receiver_not_date);
+ Bind(&receiver_not_date);
{
- assembler->CallRuntime(Runtime::kThrowNotDateError, context);
- assembler->Unreachable();
+ CallRuntime(Runtime::kThrowNotDateError, context);
+ Unreachable();
}
}
-} // namespace
-
-// static
-void Builtins::Generate_DatePrototypeGetDate(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kDay);
+TF_BUILTIN(DatePrototypeGetDate, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kDay);
}
-// static
-void Builtins::Generate_DatePrototypeGetDay(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kWeekday);
+TF_BUILTIN(DatePrototypeGetDay, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kWeekday);
}
-// static
-void Builtins::Generate_DatePrototypeGetFullYear(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kYear);
+TF_BUILTIN(DatePrototypeGetFullYear, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kYear);
}
-// static
-void Builtins::Generate_DatePrototypeGetHours(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kHour);
+TF_BUILTIN(DatePrototypeGetHours, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kHour);
}
-// static
-void Builtins::Generate_DatePrototypeGetMilliseconds(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMillisecond);
+TF_BUILTIN(DatePrototypeGetMilliseconds, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMillisecond);
}
-// static
-void Builtins::Generate_DatePrototypeGetMinutes(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMinute);
+TF_BUILTIN(DatePrototypeGetMinutes, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMinute);
}
-// static
-void Builtins::Generate_DatePrototypeGetMonth(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMonth);
+TF_BUILTIN(DatePrototypeGetMonth, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMonth);
}
-// static
-void Builtins::Generate_DatePrototypeGetSeconds(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kSecond);
+TF_BUILTIN(DatePrototypeGetSeconds, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kSecond);
}
-// static
-void Builtins::Generate_DatePrototypeGetTime(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kDateValue);
+TF_BUILTIN(DatePrototypeGetTime, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kDateValue);
}
-// static
-void Builtins::Generate_DatePrototypeGetTimezoneOffset(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kTimezoneOffset);
+TF_BUILTIN(DatePrototypeGetTimezoneOffset, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kTimezoneOffset);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCDate(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kDayUTC);
+TF_BUILTIN(DatePrototypeGetUTCDate, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kDayUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCDay(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kWeekdayUTC);
+TF_BUILTIN(DatePrototypeGetUTCDay, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kWeekdayUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCFullYear(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kYearUTC);
+TF_BUILTIN(DatePrototypeGetUTCFullYear, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kYearUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCHours(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kHourUTC);
+TF_BUILTIN(DatePrototypeGetUTCHours, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kHourUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCMilliseconds(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMillisecondUTC);
+TF_BUILTIN(DatePrototypeGetUTCMilliseconds, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMillisecondUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCMinutes(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMinuteUTC);
+TF_BUILTIN(DatePrototypeGetUTCMinutes, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMinuteUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCMonth(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kMonthUTC);
+TF_BUILTIN(DatePrototypeGetUTCMonth, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kMonthUTC);
}
-// static
-void Builtins::Generate_DatePrototypeGetUTCSeconds(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kSecondUTC);
+TF_BUILTIN(DatePrototypeGetUTCSeconds, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kSecondUTC);
}
-// static
-void Builtins::Generate_DatePrototypeValueOf(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- Generate_DatePrototype_GetField(&assembler, JSDate::kDateValue);
+TF_BUILTIN(DatePrototypeValueOf, DateBuiltinsAssembler) {
+ Generate_DatePrototype_GetField(JSDate::kDateValue);
}
-// static
-void Builtins::Generate_DatePrototypeToPrimitive(
- compiler::CodeAssemblerState* state) {
- CodeStubAssembler assembler(state);
- typedef CodeStubAssembler::Label Label;
- typedef compiler::Node Node;
-
- Node* receiver = assembler.Parameter(0);
- Node* hint = assembler.Parameter(1);
- Node* context = assembler.Parameter(4);
+TF_BUILTIN(DatePrototypeToPrimitive, CodeStubAssembler) {
+ Node* receiver = Parameter(0);
+ Node* hint = Parameter(1);
+ Node* context = Parameter(4);
// Check if the {receiver} is actually a JSReceiver.
- Label receiver_is_invalid(&assembler, Label::kDeferred);
- assembler.GotoIf(assembler.TaggedIsSmi(receiver), &receiver_is_invalid);
- assembler.GotoIfNot(assembler.IsJSReceiver(receiver), &receiver_is_invalid);
+ Label receiver_is_invalid(this, Label::kDeferred);
+ GotoIf(TaggedIsSmi(receiver), &receiver_is_invalid);
+ GotoIfNot(IsJSReceiver(receiver), &receiver_is_invalid);
// Dispatch to the appropriate OrdinaryToPrimitive builtin.
- Label hint_is_number(&assembler), hint_is_string(&assembler),
- hint_is_invalid(&assembler, Label::kDeferred);
+ Label hint_is_number(this), hint_is_string(this),
+ hint_is_invalid(this, Label::kDeferred);
// Fast cases for internalized strings.
- Node* number_string = assembler.LoadRoot(Heap::knumber_stringRootIndex);
- assembler.GotoIf(assembler.WordEqual(hint, number_string), &hint_is_number);
- Node* default_string = assembler.LoadRoot(Heap::kdefault_stringRootIndex);
- assembler.GotoIf(assembler.WordEqual(hint, default_string), &hint_is_string);
- Node* string_string = assembler.LoadRoot(Heap::kstring_stringRootIndex);
- assembler.GotoIf(assembler.WordEqual(hint, string_string), &hint_is_string);
+ Node* number_string = LoadRoot(Heap::knumber_stringRootIndex);
+ GotoIf(WordEqual(hint, number_string), &hint_is_number);
+ Node* default_string = LoadRoot(Heap::kdefault_stringRootIndex);
+ GotoIf(WordEqual(hint, default_string), &hint_is_string);
+ Node* string_string = LoadRoot(Heap::kstring_stringRootIndex);
+ GotoIf(WordEqual(hint, string_string), &hint_is_string);
// Slow-case with actual string comparisons.
- Callable string_equal = CodeFactory::StringEqual(assembler.isolate());
- assembler.GotoIf(assembler.TaggedIsSmi(hint), &hint_is_invalid);
- assembler.GotoIfNot(assembler.IsString(hint), &hint_is_invalid);
- assembler.GotoIf(assembler.WordEqual(assembler.CallStub(string_equal, context,
- hint, number_string),
- assembler.TrueConstant()),
- &hint_is_number);
- assembler.GotoIf(assembler.WordEqual(assembler.CallStub(string_equal, context,
- hint, default_string),
- assembler.TrueConstant()),
- &hint_is_string);
- assembler.GotoIf(assembler.WordEqual(assembler.CallStub(string_equal, context,
- hint, string_string),
- assembler.TrueConstant()),
- &hint_is_string);
- assembler.Goto(&hint_is_invalid);
+ Callable string_equal = CodeFactory::StringEqual(isolate());
+ GotoIf(TaggedIsSmi(hint), &hint_is_invalid);
+ GotoIfNot(IsString(hint), &hint_is_invalid);
+ GotoIf(WordEqual(CallStub(string_equal, context, hint, number_string),
+ TrueConstant()),
+ &hint_is_number);
+ GotoIf(WordEqual(CallStub(string_equal, context, hint, default_string),
+ TrueConstant()),
+ &hint_is_string);
+ GotoIf(WordEqual(CallStub(string_equal, context, hint, string_string),
+ TrueConstant()),
+ &hint_is_string);
+ Goto(&hint_is_invalid);
// Use the OrdinaryToPrimitive builtin to convert to a Number.
- assembler.Bind(&hint_is_number);
+ Bind(&hint_is_number);
{
Callable callable = CodeFactory::OrdinaryToPrimitive(
- assembler.isolate(), OrdinaryToPrimitiveHint::kNumber);
- Node* result = assembler.CallStub(callable, context, receiver);
- assembler.Return(result);
+ isolate(), OrdinaryToPrimitiveHint::kNumber);
+ Node* result = CallStub(callable, context, receiver);
+ Return(result);
}
// Use the OrdinaryToPrimitive builtin to convert to a String.
- assembler.Bind(&hint_is_string);
+ Bind(&hint_is_string);
{
Callable callable = CodeFactory::OrdinaryToPrimitive(
- assembler.isolate(), OrdinaryToPrimitiveHint::kString);
- Node* result = assembler.CallStub(callable, context, receiver);
- assembler.Return(result);
+ isolate(), OrdinaryToPrimitiveHint::kString);
+ Node* result = CallStub(callable, context, receiver);
+ Return(result);
}
// Raise a TypeError if the {hint} is invalid.
- assembler.Bind(&hint_is_invalid);
+ Bind(&hint_is_invalid);
{
- assembler.CallRuntime(Runtime::kThrowInvalidHint, context, hint);
- assembler.Unreachable();
+ CallRuntime(Runtime::kThrowInvalidHint, context, hint);
+ Unreachable();
}
// Raise a TypeError if the {receiver} is not a JSReceiver instance.
- assembler.Bind(&receiver_is_invalid);
+ Bind(&receiver_is_invalid);
{
- assembler.CallRuntime(
- Runtime::kThrowIncompatibleMethodReceiver, context,
- assembler.HeapConstant(assembler.factory()->NewStringFromAsciiChecked(
- "Date.prototype [ @@toPrimitive ]", TENURED)),
- receiver);
- assembler.Unreachable();
+ CallRuntime(Runtime::kThrowIncompatibleMethodReceiver, context,
+ HeapConstant(factory()->NewStringFromAsciiChecked(
+ "Date.prototype [ @@toPrimitive ]", TENURED)),
+ receiver);
+ Unreachable();
}
}
« no previous file with comments | « src/builtins/builtins-conversion.cc ('k') | src/builtins/builtins-function.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698