| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 9758228b27907444db0e62ef4273fa9214c4574c..3fdee06cba7cb6ae31ef548718b7e8f47aadae30 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -811,7 +811,7 @@ static void TemplateSet(i::Isolate* isolate,
|
| }
|
|
|
|
|
| -void Template::Set(v8::Handle<String> name,
|
| +void Template::Set(v8::Handle<Name> name,
|
| v8::Handle<Data> value,
|
| v8::PropertyAttribute attribute) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| @@ -828,7 +828,7 @@ void Template::Set(v8::Handle<String> name,
|
|
|
|
|
| void Template::SetAccessorProperty(
|
| - v8::Local<v8::String> name,
|
| + v8::Local<v8::Name> name,
|
| v8::Local<FunctionTemplate> getter,
|
| v8::Local<FunctionTemplate> setter,
|
| v8::PropertyAttribute attribute,
|
| @@ -1138,7 +1138,7 @@ void FunctionTemplate::SetCallHandler(FunctionCallback callback,
|
|
|
| static i::Handle<i::AccessorInfo> SetAccessorInfoProperties(
|
| i::Handle<i::AccessorInfo> obj,
|
| - v8::Handle<String> name,
|
| + v8::Handle<Name> name,
|
| v8::AccessControl settings,
|
| v8::PropertyAttribute attributes,
|
| v8::Handle<AccessorSignature> signature) {
|
| @@ -1155,7 +1155,7 @@ static i::Handle<i::AccessorInfo> SetAccessorInfoProperties(
|
|
|
| template<typename Getter, typename Setter>
|
| static i::Handle<i::AccessorInfo> MakeAccessorInfo(
|
| - v8::Handle<String> name,
|
| + v8::Handle<Name> name,
|
| Getter getter,
|
| Setter setter,
|
| v8::Handle<Value> data,
|
| @@ -1176,7 +1176,7 @@ static i::Handle<i::AccessorInfo> MakeAccessorInfo(
|
|
|
|
|
| static i::Handle<i::AccessorInfo> MakeAccessorInfo(
|
| - v8::Handle<String> name,
|
| + v8::Handle<Name> name,
|
| v8::Handle<v8::DeclaredAccessorDescriptor> descriptor,
|
| void* setter_ignored,
|
| void* data_ignored,
|
| @@ -1327,10 +1327,10 @@ static inline i::Handle<i::TemplateInfo> GetTemplateInfo(
|
| }
|
|
|
|
|
| -template<typename Setter, typename Getter, typename Data, typename Template>
|
| +template<typename Getter, typename Setter, typename Data, typename Template>
|
| static bool TemplateSetAccessor(
|
| Template* template_obj,
|
| - v8::Local<String> name,
|
| + v8::Local<Name> name,
|
| Getter getter,
|
| Setter setter,
|
| Data data,
|
| @@ -1350,7 +1350,7 @@ static bool TemplateSetAccessor(
|
|
|
|
|
| bool Template::SetDeclaredAccessor(
|
| - Local<String> name,
|
| + Local<Name> name,
|
| Local<DeclaredAccessorDescriptor> descriptor,
|
| PropertyAttribute attribute,
|
| Local<AccessorSignature> signature,
|
| @@ -1373,6 +1373,18 @@ void Template::SetNativeDataProperty(v8::Local<String> name,
|
| }
|
|
|
|
|
| +void Template::SetNativeDataProperty(v8::Local<Symbol> name,
|
| + AccessorSymbolGetterCallback getter,
|
| + AccessorSymbolSetterCallback setter,
|
| + v8::Handle<Value> data,
|
| + PropertyAttribute attribute,
|
| + v8::Local<AccessorSignature> signature,
|
| + AccessControl settings) {
|
| + TemplateSetAccessor(
|
| + this, name, getter, setter, data, settings, attribute, signature);
|
| +}
|
| +
|
| +
|
| void ObjectTemplate::SetAccessor(v8::Handle<String> name,
|
| AccessorGetterCallback getter,
|
| AccessorSetterCallback setter,
|
| @@ -1385,19 +1397,35 @@ void ObjectTemplate::SetAccessor(v8::Handle<String> name,
|
| }
|
|
|
|
|
| -void ObjectTemplate::SetNamedPropertyHandler(
|
| - NamedPropertyGetterCallback getter,
|
| - NamedPropertySetterCallback setter,
|
| - NamedPropertyQueryCallback query,
|
| - NamedPropertyDeleterCallback remover,
|
| - NamedPropertyEnumeratorCallback enumerator,
|
| - Handle<Value> data) {
|
| - i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| +void ObjectTemplate::SetAccessor(v8::Handle<Symbol> name,
|
| + AccessorSymbolGetterCallback getter,
|
| + AccessorSymbolSetterCallback setter,
|
| + v8::Handle<Value> data,
|
| + AccessControl settings,
|
| + PropertyAttribute attribute,
|
| + v8::Handle<AccessorSignature> signature) {
|
| + TemplateSetAccessor(
|
| + this, name, getter, setter, data, settings, attribute, signature);
|
| +}
|
| +
|
| +
|
| +template<typename Getter, typename Setter, typename Query, typename Deleter,
|
| + typename Enumerator>
|
| +static void ObjectTemplateSetNamedPropertyHandler(
|
| + ObjectTemplate *templ,
|
| + Getter getter,
|
| + Setter setter,
|
| + Query query,
|
| + Deleter remover,
|
| + Enumerator enumerator,
|
| + Handle<Value> data,
|
| + bool can_intercept_symbols) {
|
| + i::Isolate* isolate = Utils::OpenHandle(templ)->GetIsolate();
|
| ENTER_V8(isolate);
|
| i::HandleScope scope(isolate);
|
| - EnsureConstructor(isolate, this);
|
| + EnsureConstructor(isolate, templ);
|
| i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast(
|
| - Utils::OpenHandle(this)->constructor());
|
| + Utils::OpenHandle(templ)->constructor());
|
| i::Handle<i::FunctionTemplateInfo> cons(constructor);
|
| i::Handle<i::Struct> struct_obj =
|
| isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE);
|
| @@ -1409,6 +1437,8 @@ void ObjectTemplate::SetNamedPropertyHandler(
|
| if (query != 0) SET_FIELD_WRAPPED(obj, set_query, query);
|
| if (remover != 0) SET_FIELD_WRAPPED(obj, set_deleter, remover);
|
| if (enumerator != 0) SET_FIELD_WRAPPED(obj, set_enumerator, enumerator);
|
| + obj->set_flags(0);
|
| + obj->set_can_intercept_symbols(can_intercept_symbols);
|
|
|
| if (data.IsEmpty()) {
|
| data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
|
| @@ -1418,6 +1448,30 @@ void ObjectTemplate::SetNamedPropertyHandler(
|
| }
|
|
|
|
|
| +void ObjectTemplate::SetNamedPropertyHandler(
|
| + NamedPropertyGetterCallback getter,
|
| + NamedPropertySetterCallback setter,
|
| + NamedPropertyQueryCallback query,
|
| + NamedPropertyDeleterCallback remover,
|
| + NamedPropertyEnumeratorCallback enumerator,
|
| + Handle<Value> data) {
|
| + ObjectTemplateSetNamedPropertyHandler(
|
| + this, getter, setter, query, remover, enumerator, data, false);
|
| +}
|
| +
|
| +
|
| +void ObjectTemplate::SetGenericNamedPropertyHandler(
|
| + GenericNamedPropertyGetterCallback getter,
|
| + GenericNamedPropertySetterCallback setter,
|
| + GenericNamedPropertyQueryCallback query,
|
| + GenericNamedPropertyDeleterCallback remover,
|
| + GenericNamedPropertyEnumeratorCallback enumerator,
|
| + Handle<Value> data) {
|
| + ObjectTemplateSetNamedPropertyHandler(
|
| + this, getter, setter, query, remover, enumerator, data, true);
|
| +}
|
| +
|
| +
|
| void ObjectTemplate::MarkAsUndetectable() {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ENTER_V8(isolate);
|
| @@ -1485,6 +1539,7 @@ void ObjectTemplate::SetIndexedPropertyHandler(
|
| if (query != 0) SET_FIELD_WRAPPED(obj, set_query, query);
|
| if (remover != 0) SET_FIELD_WRAPPED(obj, set_deleter, remover);
|
| if (enumerator != 0) SET_FIELD_WRAPPED(obj, set_enumerator, enumerator);
|
| + obj->set_flags(0);
|
|
|
| if (data.IsEmpty()) {
|
| data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
|
| @@ -2307,6 +2362,11 @@ bool Value::IsFunction() const {
|
| }
|
|
|
|
|
| +bool Value::IsName() const {
|
| + return Utils::OpenHandle(this)->IsName();
|
| +}
|
| +
|
| +
|
| bool Value::FullIsString() const {
|
| bool result = Utils::OpenHandle(this)->IsString();
|
| ASSERT_EQ(result, QuickIsString());
|
| @@ -2615,6 +2675,14 @@ void v8::Function::CheckCast(Value* that) {
|
| }
|
|
|
|
|
| +void v8::Name::CheckCast(v8::Value* that) {
|
| + i::Handle<i::Object> obj = Utils::OpenHandle(that);
|
| + Utils::ApiCheck(obj->IsName(),
|
| + "v8::Name::Cast()",
|
| + "Could not convert to name");
|
| +}
|
| +
|
| +
|
| void v8::String::CheckCast(v8::Value* that) {
|
| i::Handle<i::Object> obj = Utils::OpenHandle(that);
|
| Utils::ApiCheck(obj->IsString(),
|
| @@ -3383,11 +3451,11 @@ bool v8::Object::Has(uint32_t index) {
|
| }
|
|
|
|
|
| -template<typename Setter, typename Getter, typename Data>
|
| +template<typename Getter, typename Setter, typename Data>
|
| static inline bool ObjectSetAccessor(Object* obj,
|
| - Handle<String> name,
|
| - Setter getter,
|
| - Getter setter,
|
| + Handle<Name> name,
|
| + Getter getter,
|
| + Setter setter,
|
| Data data,
|
| AccessControl settings,
|
| PropertyAttribute attributes) {
|
| @@ -3422,7 +3490,18 @@ bool Object::SetAccessor(Handle<String> name,
|
| }
|
|
|
|
|
| -bool Object::SetDeclaredAccessor(Local<String> name,
|
| +bool Object::SetAccessor(Handle<Symbol> name,
|
| + AccessorSymbolGetterCallback getter,
|
| + AccessorSymbolSetterCallback setter,
|
| + v8::Handle<Value> data,
|
| + AccessControl settings,
|
| + PropertyAttribute attributes) {
|
| + return ObjectSetAccessor(
|
| + this, name, getter, setter, data, settings, attributes);
|
| +}
|
| +
|
| +
|
| +bool Object::SetDeclaredAccessor(Local<Name> name,
|
| Local<DeclaredAccessorDescriptor> descriptor,
|
| PropertyAttribute attributes,
|
| AccessControl settings) {
|
| @@ -3432,7 +3511,7 @@ bool Object::SetDeclaredAccessor(Local<String> name,
|
| }
|
|
|
|
|
| -void Object::SetAccessorProperty(Local<String> name,
|
| +void Object::SetAccessorProperty(Local<Name> name,
|
| Local<Function> getter,
|
| Handle<Function> setter,
|
| PropertyAttribute attribute,
|
|
|