summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-bigint.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-bigint.cc')
-rw-r--r--deps/v8/src/builtins/builtins-bigint.cc39
1 files changed, 19 insertions, 20 deletions
diff --git a/deps/v8/src/builtins/builtins-bigint.cc b/deps/v8/src/builtins/builtins-bigint.cc
index fdbd3937d4..6c04c9dcb7 100644
--- a/deps/v8/src/builtins/builtins-bigint.cc
+++ b/deps/v8/src/builtins/builtins-bigint.cc
@@ -13,29 +13,28 @@ namespace internal {
BUILTIN(BigIntConstructor) {
HandleScope scope(isolate);
- Handle<Object> value = args.atOrUndefined(isolate, 1);
-
- if (value->IsJSReceiver()) {
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
- isolate, value,
- JSReceiver::ToPrimitive(Handle<JSReceiver>::cast(value),
- ToPrimitiveHint::kNumber));
- }
-
- if (value->IsNumber()) {
- RETURN_RESULT_OR_FAILURE(isolate, BigInt::FromNumber(isolate, value));
- } else {
- RETURN_RESULT_OR_FAILURE(isolate, BigInt::FromObject(isolate, value));
+ if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
+ Handle<Object> value = args.atOrUndefined(isolate, 1);
+
+ if (value->IsJSReceiver()) {
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, value,
+ JSReceiver::ToPrimitive(Handle<JSReceiver>::cast(value),
+ ToPrimitiveHint::kNumber));
+ }
+
+ if (value->IsNumber()) {
+ RETURN_RESULT_OR_FAILURE(isolate, BigInt::FromNumber(isolate, value));
+ } 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(BigIntConstructor_ConstructStub) {
- HandleScope scope(isolate);
- THROW_NEW_ERROR_RETURN_FAILURE(
- isolate, NewTypeError(MessageTemplate::kNotConstructor,
- isolate->factory()->BigInt_string()));
-}
-
BUILTIN(BigIntAsUintN) {
HandleScope scope(isolate);
Handle<Object> bits_obj = args.atOrUndefined(isolate, 1);