| Index: src/handles.cc
|
| diff --git a/src/handles.cc b/src/handles.cc
|
| index ba57629e73bc3cb174c5900e7cf037c9bedc70a0..b43ec53207a38281df98987a11df5ab78ab73b78 100644
|
| --- a/src/handles.cc
|
| +++ b/src/handles.cc
|
| @@ -29,6 +29,7 @@
|
|
|
| #include "accessors.h"
|
| #include "api.h"
|
| +#include "arguments.h"
|
| #include "bootstrapper.h"
|
| #include "compiler.h"
|
| #include "debug.h"
|
| @@ -479,15 +480,17 @@ int GetScriptLineNumber(Handle<Script> script, int code_pos) {
|
| }
|
|
|
|
|
| +void CustomArguments::IterateInstance(ObjectVisitor* v) {
|
| + v->VisitPointers(values_, values_ + 4);
|
| +}
|
| +
|
| +
|
| // Compute the property keys from the interceptor.
|
| v8::Handle<v8::Array> GetKeysForNamedInterceptor(Handle<JSObject> receiver,
|
| Handle<JSObject> object) {
|
| Handle<InterceptorInfo> interceptor(object->GetNamedInterceptor());
|
| - Handle<Object> data(interceptor->data());
|
| - v8::AccessorInfo info(
|
| - v8::Utils::ToLocal(receiver),
|
| - v8::Utils::ToLocal(data),
|
| - v8::Utils::ToLocal(object));
|
| + CustomArguments args(interceptor->data(), *receiver, *object);
|
| + v8::AccessorInfo info(args.end());
|
| v8::Handle<v8::Array> result;
|
| if (!interceptor->enumerator()->IsUndefined()) {
|
| v8::NamedPropertyEnumerator enum_fun =
|
| @@ -507,11 +510,8 @@ v8::Handle<v8::Array> GetKeysForNamedInterceptor(Handle<JSObject> receiver,
|
| v8::Handle<v8::Array> GetKeysForIndexedInterceptor(Handle<JSObject> receiver,
|
| Handle<JSObject> object) {
|
| Handle<InterceptorInfo> interceptor(object->GetIndexedInterceptor());
|
| - Handle<Object> data(interceptor->data());
|
| - v8::AccessorInfo info(
|
| - v8::Utils::ToLocal(receiver),
|
| - v8::Utils::ToLocal(data),
|
| - v8::Utils::ToLocal(object));
|
| + CustomArguments args(interceptor->data(), *receiver, *object);
|
| + v8::AccessorInfo info(args.end());
|
| v8::Handle<v8::Array> result;
|
| if (!interceptor->enumerator()->IsUndefined()) {
|
| v8::IndexedPropertyEnumerator enum_fun =
|
|
|