Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Side by Side Diff: Source/bindings/templates/interface.cpp

Issue 131183002: IDL compiler: AudioBuffer interfaces (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Revised Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/bindings/scripts/unstable/v8_interface.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 '{0}V8Internal::{0}ConstructorGetter'.format(interface_name) %} 10 '{0}V8Internal::{0}ConstructorGetter'.format(interface_name) %}
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 v8::Handle<v8::Object> wrapper = DOMDataStore::getWrapper<{{v8_class }}>(impl.get(), isolate); 721 v8::Handle<v8::Object> wrapper = DOMDataStore::getWrapper<{{v8_class }}>(impl.get(), isolate);
722 if (!wrapper.IsEmpty()) 722 if (!wrapper.IsEmpty())
723 return wrapper; 723 return wrapper;
724 } 724 }
725 } 725 }
726 {% endif %} 726 {% endif %}
727 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext , &wrapperTypeInfo, toInternalPointer(impl.get()), isolate); 727 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext , &wrapperTypeInfo, toInternalPointer(impl.get()), isolate);
728 if (UNLIKELY(wrapper.IsEmpty())) 728 if (UNLIKELY(wrapper.IsEmpty()))
729 return wrapper; 729 return wrapper;
730 730
731 {% if is_audio_buffer %}
732 {# We only setDeallocationObservers on array buffers that are held by some
733 object in the V8 heap, not in the ArrayBuffer constructor itself.
734 This is because V8 GC only cares about memory it can free on GC, and
735 until the object is exposed to JavaScript, V8 GC doesn't affect it. #}
736 for (unsigned i = 0, n = impl->numberOfChannels(); i < n; i++) {
737 Float32Array* channelData = impl->getChannelData(i);
738 channelData->buffer()->setDeallocationObserver(V8ArrayBufferDeallocation Observer::instanceTemplate());
739 }
740 {% endif %}
731 installPerContextEnabledProperties(wrapper, impl.get(), isolate); 741 installPerContextEnabledProperties(wrapper, impl.get(), isolate);
732 {% set wrapper_configuration = 'WrapperConfiguration::Dependent' 742 {% set wrapper_configuration = 'WrapperConfiguration::Dependent'
733 if (has_visit_dom_wrapper or 743 if (has_visit_dom_wrapper or
734 is_active_dom_object or 744 is_active_dom_object or
735 is_dependent_lifetime) else 745 is_dependent_lifetime) else
736 'WrapperConfiguration::Independent' %} 746 'WrapperConfiguration::Independent' %}
737 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl, &wrapperTypeInf o, wrapper, isolate, {{wrapper_configuration}}); 747 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl, &wrapperTypeInf o, wrapper, isolate, {{wrapper_configuration}});
738 return wrapper; 748 return wrapper;
739 } 749 }
740 750
741 {% endif %} 751 {% endif %}
742 {% endblock %} 752 {% endblock %}
743 753
744 754
745 {##############################################################################} 755 {##############################################################################}
746 {% block deref_object_and_to_v8_no_inline %} 756 {% block deref_object_and_to_v8_no_inline %}
747 void {{v8_class}}::derefObject(void* object) 757 void {{v8_class}}::derefObject(void* object)
748 { 758 {
749 fromInternalPointer(object)->deref(); 759 fromInternalPointer(object)->deref();
750 } 760 }
751 761
752 template<> 762 template<>
753 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate) 763 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate)
754 { 764 {
755 return toV8(impl, creationContext, isolate); 765 return toV8(impl, creationContext, isolate);
756 } 766 }
757 767
758 {% endblock %} 768 {% endblock %}
OLDNEW
« no previous file with comments | « Source/bindings/scripts/unstable/v8_interface.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698