| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index ad41d819b7f094ddda7834f5ca57377ae8184f03..067d1353f804c45d6d4cc02f014d2e3b8afd5e91 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -1097,6 +1097,11 @@ void Template::Set(v8::Local<Name> name, v8::Local<Data> value,
|
| static_cast<i::PropertyAttributes>(attribute));
|
| }
|
|
|
| +void Template::SetPrivate(v8::Local<Private> name, v8::Local<Data> value,
|
| + v8::PropertyAttribute attribute) {
|
| + Set(Utils::ToLocal(Utils::OpenHandle(reinterpret_cast<Name*>(*name))), value,
|
| + attribute);
|
| +}
|
|
|
| void Template::SetAccessorProperty(
|
| v8::Local<v8::Name> name,
|
| @@ -1160,11 +1165,11 @@ void FunctionTemplate::Inherit(v8::Local<FunctionTemplate> value) {
|
| info->set_parent_template(*Utils::OpenHandle(*value));
|
| }
|
|
|
| -
|
| static Local<FunctionTemplate> FunctionTemplateNew(
|
| i::Isolate* isolate, FunctionCallback callback,
|
| experimental::FastAccessorBuilder* fast_handler, v8::Local<Value> data,
|
| - v8::Local<Signature> signature, int length, bool do_not_cache) {
|
| + v8::Local<Signature> signature, int length, bool do_not_cache,
|
| + v8::Local<Private> cached_property_name = v8::Local<Private>()) {
|
| i::Handle<i::Struct> struct_obj =
|
| isolate->factory()->NewStruct(i::FUNCTION_TEMPLATE_INFO_TYPE);
|
| i::Handle<i::FunctionTemplateInfo> obj =
|
| @@ -1188,6 +1193,10 @@ static Local<FunctionTemplate> FunctionTemplateNew(
|
| obj->set_accept_any_receiver(true);
|
| if (!signature.IsEmpty())
|
| obj->set_signature(*Utils::OpenHandle(*signature));
|
| + obj->set_cached_property_name(
|
| + cached_property_name.IsEmpty()
|
| + ? isolate->heap()->the_hole_value()
|
| + : *Utils::OpenHandle(*cached_property_name));
|
| return Utils::ToLocal(obj);
|
| }
|
|
|
| @@ -1232,6 +1241,16 @@ Local<FunctionTemplate> FunctionTemplate::NewWithFastHandler(
|
| length, false);
|
| }
|
|
|
| +Local<FunctionTemplate> FunctionTemplate::NewWithCache(
|
| + Isolate* isolate, FunctionCallback callback, Local<Private> cache_property,
|
| + Local<Value> data, Local<Signature> signature, int length) {
|
| + i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| + DCHECK(!i_isolate->serializer_enabled());
|
| + LOG_API(i_isolate, FunctionTemplate, NewWithFastHandler);
|
| + ENTER_V8(i_isolate);
|
| + return FunctionTemplateNew(i_isolate, callback, nullptr, data, signature,
|
| + length, false, cache_property);
|
| +}
|
|
|
| Local<Signature> Signature::New(Isolate* isolate,
|
| Local<FunctionTemplate> receiver) {
|
|
|