Commit c0d6659d authored by Camillo Bruni's avatar Camillo Bruni Committed by Commit Bot

[runtime] Cleanup: Use some more early returns

Change-Id: I5effe97c53ccae3238a452fe2012926db45d2afe
Reviewed-on: https://chromium-review.googlesource.com/1165222
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54978}
parent b6f525ae
......@@ -63,7 +63,8 @@ BUILTIN(ArrayBufferConstructor) {
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
handle(target->shared()->Name(), isolate)));
} else { // [[Construct]]
}
// [[Construct]]
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
Handle<Object> length = args.atOrUndefined(isolate, 1);
......@@ -76,7 +77,6 @@ BUILTIN(ArrayBufferConstructor) {
}
return ConstructBuffer(isolate, target, new_target, number_length, true);
}
}
// This is a helper to construct an ArrayBuffer with uinitialized memory.
......
......@@ -13,7 +13,12 @@ namespace internal {
BUILTIN(BigIntConstructor) {
HandleScope scope(isolate);
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
if (!args.new_target()->IsUndefined(isolate)) { // [[Construct]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kNotConstructor,
isolate->factory()->BigInt_string()));
}
// [[Call]]
Handle<Object> value = args.atOrUndefined(isolate, 1);
if (value->IsJSReceiver()) {
......@@ -28,11 +33,6 @@ BUILTIN(BigIntConstructor) {
} else {
RETURN_RESULT_OR_FAILURE(isolate, BigInt::FromObject(isolate, value));
}
} else { // [[Construct]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kNotConstructor,
isolate->factory()->BigInt_string()));
}
}
BUILTIN(BigIntAsUintN) {
......
......@@ -19,8 +19,8 @@ BUILTIN(BooleanConstructor) {
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
Handle<Object> value = args.atOrUndefined(isolate, 1);
return isolate->heap()->ToBoolean(value->BooleanValue(isolate));
} else { // [[Construct]]
HandleScope scope(isolate);
}
// [[Construct]]
Handle<Object> value = args.atOrUndefined(isolate, 1);
Handle<JSFunction> target = args.target();
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
......@@ -31,7 +31,6 @@ BUILTIN(BooleanConstructor) {
Handle<JSValue>::cast(result)->set_value(
isolate->heap()->ToBoolean(value->BooleanValue(isolate)));
return *result;
}
}
} // namespace internal
......
......@@ -25,7 +25,8 @@ BUILTIN(DataViewConstructor) {
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
isolate->factory()->NewStringFromAsciiChecked(
"DataView")));
} else { // [[Construct]]
}
// [[Construct]]
Handle<JSFunction> target = args.target();
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
Handle<Object> buffer = args.atOrUndefined(isolate, 1);
......@@ -102,7 +103,6 @@ BUILTIN(DataViewConstructor) {
// 14. Return O.
return *result;
}
}
} // namespace internal
......
......@@ -195,7 +195,8 @@ BUILTIN(DateConstructor) {
ToDateString(time_val, ArrayVector(buffer), isolate->date_cache());
RETURN_RESULT_OR_FAILURE(
isolate, isolate->factory()->NewStringFromUtf8(CStrVector(buffer)));
} else {
}
// [Construct]
int const argc = args.length() - 1;
Handle<JSFunction> target = args.target();
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
......@@ -229,8 +230,8 @@ BUILTIN(DateConstructor) {
double date = 1.0, hours = 0.0, minutes = 0.0, seconds = 0.0, ms = 0.0;
if (argc >= 3) {
Handle<Object> date_object;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, date_object, Object::ToNumber(isolate, args.at(3)));
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, date_object,
Object::ToNumber(isolate, args.at(3)));
date = date_object->Number();
if (argc >= 4) {
Handle<Object> hours_object;
......@@ -245,8 +246,7 @@ BUILTIN(DateConstructor) {
if (argc >= 6) {
Handle<Object> seconds_object;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, seconds_object,
Object::ToNumber(isolate, args.at(6)));
isolate, seconds_object, Object::ToNumber(isolate, args.at(6)));
seconds = seconds_object->Number();
if (argc >= 7) {
Handle<Object> ms_object;
......@@ -272,9 +272,7 @@ BUILTIN(DateConstructor) {
time_val = std::numeric_limits<double>::quiet_NaN();
}
}
RETURN_RESULT_OR_FAILURE(isolate,
JSDate::New(target, new_target, time_val));
}
RETURN_RESULT_OR_FAILURE(isolate, JSDate::New(target, new_target, time_val));
}
// ES6 section 20.3.3.1 Date.now ( )
......
......@@ -16,20 +16,20 @@ namespace internal {
// ES #sec-symbol-constructor
BUILTIN(SymbolConstructor) {
HandleScope scope(isolate);
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
if (!args.new_target()->IsUndefined(isolate)) { // [[Construct]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kNotConstructor,
isolate->factory()->Symbol_string()));
}
// [[Call]]
Handle<Symbol> result = isolate->factory()->NewSymbol();
Handle<Object> description = args.atOrUndefined(isolate, 1);
if (!description->IsUndefined(isolate)) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, description, Object::ToString(isolate, description));
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, description,
Object::ToString(isolate, description));
result->set_name(*description);
}
return *result;
} else { // [[Construct]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kNotConstructor,
isolate->factory()->Symbol_string()));
}
}
// ES6 section 19.4.2.1 Symbol.for.
......
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