| Index: src/builtins.cc
 | 
| diff --git a/src/builtins.cc b/src/builtins.cc
 | 
| index 3b4710dee426fcc172b84c624b3a50655221ee89..efebe2002034dfb20ca1d8221685c1c0cd17ec8a 100644
 | 
| --- a/src/builtins.cc
 | 
| +++ b/src/builtins.cc
 | 
| @@ -1489,6 +1489,39 @@ BUILTIN(ObjectAssign) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +// ES6 section 19.1.2.2 Object.create ( O [ , Properties ] )
 | 
| +BUILTIN(ObjectCreate) {
 | 
| +  HandleScope scope(isolate);
 | 
| +  Handle<Object> prototype = args.atOrUndefined(isolate, 1);
 | 
| +  if (!prototype->IsNull() && !prototype->IsJSReceiver()) {
 | 
| +    THROW_NEW_ERROR_RETURN_FAILURE(
 | 
| +        isolate, NewTypeError(MessageTemplate::kProtoObjectOrNull, prototype));
 | 
| +  }
 | 
| +
 | 
| +  // Generate the map with the specified {prototype} based on the Object
 | 
| +  // function's initial map from the current native context.
 | 
| +  // TODO(bmeurer): Use a dedicated cache for Object.create; think about
 | 
| +  // slack tracking for Object.create.
 | 
| +  Handle<Map> map(isolate->native_context()->object_function()->initial_map(),
 | 
| +                  isolate);
 | 
| +  if (map->prototype() != *prototype) {
 | 
| +    map = Map::TransitionToPrototype(map, prototype, FAST_PROTOTYPE);
 | 
| +  }
 | 
| +
 | 
| +  // Actually allocate the object.
 | 
| +  Handle<JSObject> object = isolate->factory()->NewJSObjectFromMap(map);
 | 
| +
 | 
| +  // Define the properties if properties was specified and is not undefined.
 | 
| +  Handle<Object> properties = args.atOrUndefined(isolate, 2);
 | 
| +  if (!properties->IsUndefined()) {
 | 
| +    RETURN_FAILURE_ON_EXCEPTION(
 | 
| +        isolate, JSReceiver::DefineProperties(isolate, object, properties));
 | 
| +  }
 | 
| +
 | 
| +  return *object;
 | 
| +}
 | 
| +
 | 
| +
 | 
|  namespace {
 | 
|  
 | 
|  bool CodeGenerationFromStringsAllowed(Isolate* isolate,
 | 
| 
 |