| Index: src/api.cc | 
| diff --git a/src/api.cc b/src/api.cc | 
| index 9464cdfaa33c54e29758178bb4af2e97831dee63..69d2e05c041f955e2121e9dfe64a4ba7fbfd3863 100644 | 
| --- a/src/api.cc | 
| +++ b/src/api.cc | 
| @@ -3550,15 +3550,9 @@ Maybe<bool> v8::Object::CreateDataProperty(v8::Local<v8::Context> context, | 
| size_t length = | 
| i::NumberToSize(isolate, i::Handle<i::JSArray>::cast(self)->length()); | 
| if (index >= length) { | 
| -      i::Handle<i::Object> args[] = { | 
| -          self, isolate->factory()->Uint32ToString(index), value_obj}; | 
| -      i::Handle<i::Object> result; | 
| -      has_pending_exception = | 
| -          !CallV8HeapFunction(isolate, "$objectDefineArrayProperty", | 
| -                              isolate->factory()->undefined_value(), | 
| -                              arraysize(args), args).ToHandle(&result); | 
| -      RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 
| -      return Just(result->BooleanValue()); | 
| +      return DefineOwnProperty( | 
| +          context, Utils::ToLocal(isolate->factory()->Uint32ToString(index)), | 
| +          value, v8::None); | 
| } | 
| } | 
|  | 
| @@ -3576,6 +3570,38 @@ Maybe<bool> v8::Object::CreateDataProperty(v8::Local<v8::Context> context, | 
| } | 
|  | 
|  | 
| +Maybe<bool> v8::Object::DefineOwnProperty(v8::Local<v8::Context> context, | 
| +                                          v8::Local<Name> key, | 
| +                                          v8::Local<Value> value, | 
| +                                          v8::PropertyAttribute attributes) { | 
| +  PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::DefineOwnProperty()", | 
| +                                  bool); | 
| +  auto self = Utils::OpenHandle(this); | 
| +  auto key_obj = Utils::OpenHandle(*key); | 
| +  auto value_obj = Utils::OpenHandle(*value); | 
| + | 
| +  if (self->IsAccessCheckNeeded() && !isolate->MayAccess(self)) { | 
| +    isolate->ReportFailedAccessCheck(self); | 
| +    return Nothing<bool>(); | 
| +  } | 
| + | 
| +  i::Handle<i::FixedArray> desc = isolate->factory()->NewFixedArray(3); | 
| +  desc->set(0, isolate->heap()->ToBoolean(!(attributes & v8::ReadOnly))); | 
| +  desc->set(1, isolate->heap()->ToBoolean(!(attributes & v8::DontEnum))); | 
| +  desc->set(2, isolate->heap()->ToBoolean(!(attributes & v8::DontDelete))); | 
| +  i::Handle<i::JSArray> desc_array = | 
| +      isolate->factory()->NewJSArrayWithElements(desc, i::FAST_ELEMENTS, 3); | 
| +  i::Handle<i::Object> args[] = {self, key_obj, value_obj, desc_array}; | 
| +  i::Handle<i::Object> result; | 
| +  has_pending_exception = | 
| +      !CallV8HeapFunction(isolate, "$objectDefineOwnProperty", | 
| +                          isolate->factory()->undefined_value(), | 
| +                          arraysize(args), args).ToHandle(&result); | 
| +  RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 
| +  return Just(result->BooleanValue()); | 
| +} | 
| + | 
| + | 
| Maybe<bool> v8::Object::ForceSet(v8::Local<v8::Context> context, | 
| v8::Local<Value> key, v8::Local<Value> value, | 
| v8::PropertyAttribute attribs) { | 
|  |