| Index: src/builtins/builtins-object.cc
|
| diff --git a/src/builtins/builtins-object.cc b/src/builtins/builtins-object.cc
|
| index 8be615013c9ee8b17739790f3797e975361eff43..c54385d312e4d05db4b8831082376413bad5c5e6 100644
|
| --- a/src/builtins/builtins-object.cc
|
| +++ b/src/builtins/builtins-object.cc
|
| @@ -15,9 +15,38 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| +namespace {
|
| +
|
| +Object* ObjectConstructCommon(Isolate* isolate, Handle<Object> value) {
|
| + if (value->IsNullOrUndefined(isolate)) {
|
| + return *isolate->factory()->NewJSObject(isolate->object_function());
|
| + }
|
| + RETURN_RESULT_OR_FAILURE(isolate, Object::ToObject(isolate, value));
|
| +}
|
| +
|
| +}
|
| +
|
| // -----------------------------------------------------------------------------
|
| // ES6 section 19.1 Object Objects
|
|
|
| +// ES6 section 19.1.1.1 The Object Constructor for the [[Call]] case.
|
| +BUILTIN(ObjectConstructor) {
|
| + HandleScope scope(isolate);
|
| + return ObjectConstructCommon(isolate, args.atOrUndefined(isolate, 1));
|
| +}
|
| +
|
| +// ES6 section 19.1.1.1 The Object Constructor for the [[Construct]] case.
|
| +BUILTIN(ObjectConstructor_ConstructStub) {
|
| + HandleScope scope(isolate);
|
| + Handle<JSFunction> target = args.target();
|
| + DCHECK(*target == target->native_context()->object_function());
|
| + Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
|
| + if (*new_target != *target) {
|
| + RETURN_RESULT_OR_FAILURE(isolate, JSObject::New(target, new_target));
|
| + }
|
| + return ObjectConstructCommon(isolate, args.atOrUndefined(isolate, 1));
|
| +}
|
| +
|
| // ES6 19.1.2.1 Object.assign
|
| BUILTIN(ObjectAssign) {
|
| HandleScope scope(isolate);
|
|
|