| Index: src/api.cc
|
| ===================================================================
|
| --- src/api.cc (revision 2498)
|
| +++ src/api.cc (working copy)
|
| @@ -2480,7 +2480,7 @@
|
| return NULL;
|
| }
|
|
|
| - // Unaligned native pointer
|
| + // Unaligned native pointer.
|
| return reinterpret_cast<void*>(i::Proxy::cast(pointer)->proxy());
|
| }
|
|
|
| @@ -2492,12 +2492,12 @@
|
| // Aligned pointer, store as is.
|
| obj->SetInternalField(index, as_object);
|
| } else {
|
| - // Currently internal fields are used by DOM wrappers which
|
| - // only get GCed by the mark-sweep collector,
|
| - // so let's put proxy into old space.
|
| - i::Proxy* proxy = *i::Factory::NewProxy(reinterpret_cast<i::Address>(value),
|
| - i::TENURED);
|
| - obj->SetInternalField(index, proxy);
|
| + // Currently internal fields are used by DOM wrappers which only
|
| + // get garbage collected by the mark-sweep collector, so we
|
| + // pretenure the proxy.
|
| + i::Handle<i::Proxy> proxy =
|
| + i::Factory::NewProxy(reinterpret_cast<i::Address>(value), i::TENURED);
|
| + if (!proxy.is_null()) obj->SetInternalField(index, *proxy);
|
| }
|
| }
|
|
|
|
|