| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 6c04687df5be900adf8f559778848fca0052d2b1..b0d287ded90dab25a7fa91d289b3099852547d29 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -2879,6 +2879,33 @@ Local<v8::Object> v8::Object::Clone() {
|
| }
|
|
|
|
|
| +static i::Context* GetCreationContext(i::JSObject* object) {
|
| + i::Object* constructor = object->map()->constructor();
|
| + i::JSFunction* function;
|
| + if (!constructor->IsJSFunction()) {
|
| + // API functions have null as a constructor,
|
| + // but any JSFunction knows its context immediately.
|
| + ASSERT(object->IsJSFunction() &&
|
| + i::JSFunction::cast(object)->shared()->IsApiFunction());
|
| + function = i::JSFunction::cast(object);
|
| + } else {
|
| + function = i::JSFunction::cast(constructor);
|
| + }
|
| + return function->context()->global_context();
|
| +}
|
| +
|
| +
|
| +Local<v8::Context> v8::Object::CreationContext() {
|
| + i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| + ON_BAILOUT(isolate,
|
| + "v8::Object::CreationContext()", return Local<v8::Context>());
|
| + ENTER_V8(isolate);
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Context* context = GetCreationContext(*self);
|
| + return Utils::ToLocal(i::Handle<i::Context>(context));
|
| +}
|
| +
|
| +
|
| int v8::Object::GetIdentityHash() {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ON_BAILOUT(isolate, "v8::Object::GetIdentityHash()", return 0);
|
|
|