Chromium Code Reviews| Index: src/builtins/builtins-object.cc |
| diff --git a/src/builtins/builtins-object.cc b/src/builtins/builtins-object.cc |
| index 8be615013c9ee8b17739790f3797e975361eff43..ddd3571816a2b4de59b19cc264e96fb02f79583b 100644 |
| --- a/src/builtins/builtins-object.cc |
| +++ b/src/builtins/builtins-object.cc |
| @@ -15,9 +15,37 @@ |
| namespace v8 { |
| namespace internal { |
| +static Object* ObjectConstructCommon(Isolate* isolate, Handle<Object> value) { |
|
Benedikt Meurer
2017/03/30 08:33:22
Nit: Instead of static put this into an anonymous
rongjie
2017/03/30 09:08:22
Done.
|
| + if (value->IsNullOrUndefined(isolate)) { |
| + Handle<JSObject> object = |
| + isolate->factory()->NewJSObject(isolate->object_function(), TENURED); |
|
Benedikt Meurer
2017/03/30 08:33:22
Don't use TENURED here, just omit the second param
rongjie
2017/03/30 09:08:22
Done.
|
| + object->map()->set_elements_kind(FAST_ELEMENTS); |
|
Benedikt Meurer
2017/03/30 08:33:22
Remove this line.
rongjie
2017/03/30 09:08:22
Done.
That was temp fix for mjsunit/elements-kind.
|
| + return *object; |
| + } |
| + 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); |