OLD | NEW |
1 {% extends 'interface_base.cpp' %} | 1 {% extends 'interface_base.cpp' %} |
2 | 2 |
3 | 3 |
4 {##############################################################################} | 4 {##############################################################################} |
5 {% macro attribute_configuration(attribute) %} | 5 {% macro attribute_configuration(attribute) %} |
6 {% set getter_callback = | 6 {% set getter_callback = |
7 '%sV8Internal::%sAttributeGetterCallback' % | 7 '%sV8Internal::%sAttributeGetterCallback' % |
8 (cpp_class, attribute.name) | 8 (cpp_class, attribute.name) |
9 if not attribute.constructor_type else | 9 if not attribute.constructor_type else |
10 ('%sV8Internal::%sConstructorGetterCallback' % | 10 ('%sV8Internal::%sConstructorGetterCallback' % |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 {% if reachable_node_function or set_wrapper_reference_to_list %} | 702 {% if reachable_node_function or set_wrapper_reference_to_list %} |
703 void {{v8_class}}::visitDOMWrapper(void* object, const v8::Persistent<v8::Object
>& wrapper, v8::Isolate* isolate) | 703 void {{v8_class}}::visitDOMWrapper(void* object, const v8::Persistent<v8::Object
>& wrapper, v8::Isolate* isolate) |
704 { | 704 { |
705 {{cpp_class}}* impl = fromInternalPointer(object); | 705 {{cpp_class}}* impl = fromInternalPointer(object); |
706 {% if set_wrapper_reference_to_list %} | 706 {% if set_wrapper_reference_to_list %} |
707 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate,
wrapper); | 707 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate,
wrapper); |
708 V8WrapperInstantiationScope scope(creationContext, isolate); | 708 V8WrapperInstantiationScope scope(creationContext, isolate); |
709 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %} | 709 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %} |
710 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im
pl->{{set_wrapper_reference_to.name}}(); | 710 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im
pl->{{set_wrapper_reference_to.name}}(); |
711 if ({{set_wrapper_reference_to.name}}) { | 711 if ({{set_wrapper_reference_to.name}}) { |
712 ASSERT(DOMDataStore::containsWrapper<{{set_wrapper_reference_to.v8_type}
}>({{set_wrapper_reference_to.name}}, isolate)); | 712 if (!DOMDataStore::containsWrapper<{{set_wrapper_reference_to.v8_type}}>
({{set_wrapper_reference_to.name}}, isolate)) |
| 713 wrap({{set_wrapper_reference_to.name}}, creationContext, isolate); |
713 DOMDataStore::setWrapperReference<{{set_wrapper_reference_to.v8_type}}>(
wrapper, {{set_wrapper_reference_to.name}}, isolate); | 714 DOMDataStore::setWrapperReference<{{set_wrapper_reference_to.v8_type}}>(
wrapper, {{set_wrapper_reference_to.name}}, isolate); |
714 } | 715 } |
715 {% endfor %} | 716 {% endfor %} |
716 {% endif %} | 717 {% endif %} |
717 {% if reachable_node_function %} | 718 {% if reachable_node_function %} |
718 // The {{reachable_node_function}}() method may return a reference or a poin
ter. | 719 // The {{reachable_node_function}}() method may return a reference or a poin
ter. |
719 if (Node* owner = WTF::getPtr(impl->{{reachable_node_function}}())) { | 720 if (Node* owner = WTF::getPtr(impl->{{reachable_node_function}}())) { |
720 Node* root = V8GCController::opaqueRootForGC(owner, isolate); | 721 Node* root = V8GCController::opaqueRootForGC(owner, isolate); |
721 isolate->SetReferenceFromGroup(v8::UniqueId(reinterpret_cast<intptr_t>(r
oot)), wrapper); | 722 isolate->SetReferenceFromGroup(v8::UniqueId(reinterpret_cast<intptr_t>(r
oot)), wrapper); |
722 return; | 723 return; |
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 {% endif %} | 1335 {% endif %} |
1335 } | 1336 } |
1336 | 1337 |
1337 template<> | 1338 template<> |
1338 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) | 1339 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) |
1339 { | 1340 { |
1340 return toV8(impl, creationContext, isolate); | 1341 return toV8(impl, creationContext, isolate); |
1341 } | 1342 } |
1342 | 1343 |
1343 {% endblock %} | 1344 {% endblock %} |
OLD | NEW |