Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 {% filter format_blink_cpp_source_code %} | |
| 2 | |
| 3 {% include 'copyright_block.txt' %} | |
| 4 | |
| 5 #include "bindings/modules/v8/V8SnapshotReference.h" | |
| 6 | |
| 7 #include <cstdint> | |
| 8 | |
| 9 {% for include_file in include_files %} | |
| 10 #include "{{include_file}}" | |
| 11 {% endfor %} | |
| 12 | |
| 13 namespace blink { | |
| 14 | |
| 15 intptr_t* V8SnapshotReference::GetReferenceTable() { | |
| 16 static intptr_t reference_table[] = { | |
| 17 {% for interface in interfaces %} | |
| 18 {% if not interface.is_array_buffer_or_view %} | |
| 19 {% set namespace = interface.v8_name %} | |
| 20 | |
| 21 {# Attributes #} | |
| 22 {%- for attribute in interface.attributes %} | |
| 23 {%- for world_suffix in attribute.world_suffixes %} | |
| 24 {% if not attribute.constructor_type %} | |
| 25 reinterpret_cast<intptr_t>({{namespace}}::{{attribute.name}}AttributeGetterC allback{{world_suffix}}), | |
| 26 {% elif attribute.needs_constructor_getter_callback %} | |
| 27 reinterpret_cast<intptr_t>({{namespace}}::{{attribute.name}}ConstructorGette rCallback{{world_suffix}}), | |
| 28 {% elif attribute.is_named_constructor %} | |
| 29 reinterpret_cast<intptr_t>(V8{{attribute.constructor_type}}::NamedConstructo rAttributeGetter{{world_suffix}}), | |
| 30 {% endif %} | |
| 31 {% if attribute.has_setter %} | |
| 32 reinterpret_cast<intptr_t>({{namespace}}::{{attribute.name}}AttributeSetterC allback{{world_suffix}}), | |
| 33 {% endif %} | |
| 34 {%- endfor %}{# world_suffix #} | |
| 35 {%- endfor %}{# attributes #} | |
| 36 | |
| 37 {# Methods / Operations #} | |
| 38 {% for method in interface.methods %} | |
| 39 {%- for world_suffix in method.world_suffixes %} | |
| 40 {% if not method.overload_index or method.overloads %} | |
| 41 {% if (method.overloads and method.overloads.visible and | |
| 42 (not method.overloads.has_partial_overloads or not interface.i s_partial)) or | |
| 43 (not method.overloads and method.visible) %} | |
| 44 {# TODO(bashi): Remove this 'if' condition when crbug.com/630986 is fixed. # } | |
| 45 {% if not interface.is_callback %} | |
| 46 reinterpret_cast<intptr_t>({{namespace}}::{{method.name}}MethodCallback{{wor ld_suffix}}), | |
| 47 {% endif %} | |
| 48 {% endif %} | |
| 49 {% endif %}{# overload(_index) #} | |
| 50 {% if method.is_cross_origin and method.visible %} | |
| 51 reinterpret_cast<intptr_t>({{namespace}}::{{method.name}}OriginSafeMethodGet terCallback{{world_suffix}}), | |
| 52 {% endif%} | |
| 53 {% endfor %} | |
| 54 {% endfor %}{# method #} | |
| 55 {% if interface.has_origin_safe_method_setter %} | |
| 56 reinterpret_cast<intptr_t>({{namespace}}::{{interface.name}}OriginSafeMethod SetterCallback), | |
| 57 {% endif %} | |
| 58 {% if interface.has_cross_origin_named_getter %} | |
| 59 reinterpret_cast<intptr_t>({{namespace}}::crossOriginNamedGetter), | |
| 60 {% endif %} | |
| 61 {% if interface.has_cross_origin_named_setter %} | |
| 62 reinterpret_cast<intptr_t>({{namespace}}::crossOriginNamedSetter), | |
| 63 {% endif %} | |
| 64 {% if interface.has_cross_origin_named_enumerator %} | |
| 65 reinterpret_cast<intptr_t>({{namespace}}::crossOriginNamedEnumerator), | |
| 66 {% endif %} | |
| 67 {% if interface.has_cross_origin_indexed_getter %} | |
| 68 reinterpret_cast<intptr_t>({{namespace}}::crossOriginIndexedGetter), | |
| 69 {% endif %} | |
| 70 {% if interface.has_security_check %} | |
| 71 reinterpret_cast<intptr_t>({{namespace}}::securityCheck), | |
| 72 {% endif %} | |
| 73 | |
| 74 {# Other properties #} | |
| 75 {% if interface.named_property_getter %} | |
| 76 reinterpret_cast<intptr_t>({{namespace}}::namedPropertyGetterCallback), | |
| 77 {% endif %} | |
| 78 {%- if interface.named_property_setter %} | |
| 79 reinterpret_cast<intptr_t>({{namespace}}::namedPropertySetterCallback), | |
| 80 {% endif %} | |
| 81 {%- if interface.named_property_deleter %} | |
| 82 reinterpret_cast<intptr_t>({{namespace}}::namedPropertyDeleterCallback), | |
| 83 {% endif %} | |
| 84 {%- if interface.named_property_getter and interface.named_property_getter. is_enumerable %} | |
| 85 reinterpret_cast<intptr_t>({{namespace}}::namedPropertyQueryCallback), | |
| 86 reinterpret_cast<intptr_t>({{namespace}}::namedPropertyEnumeratorCallback), | |
| 87 {% endif %} | |
| 88 {%- if interface.indexed_property_getter %} | |
| 89 reinterpret_cast<intptr_t>({{namespace}}::indexedPropertyGetterCallback), | |
| 90 {% endif %} | |
| 91 {%- if interface.indexed_property_setter %} | |
| 92 reinterpret_cast<intptr_t>({{namespace}}::indexedPropertySetterCallback), | |
| 93 {% endif %} | |
| 94 {%- if interface.indexed_property_deleter %} | |
| 95 reinterpret_cast<intptr_t>({{namespace}}::indexedPropertyDeleterCallback), | |
| 96 {% endif %} | |
| 97 {% if interface.has_security_check_function %} | |
| 98 reinterpret_cast<intptr_t>({{namespace}}::securityCheck), | |
| 99 {%- endif %} | |
| 100 {% endif %}{# not is_array_buffer_or_view #} | |
| 101 | |
| 102 {% if not interface.is_partial %} | |
| 103 reinterpret_cast<intptr_t>(&{{interface.v8_name}}::wrapperTypeInfo), | |
| 104 {% endif %} | |
| 105 {% if interface.named_constructor %} | |
| 106 reinterpret_cast<intptr_t>(&{{interface.v8_name}}Constructor::wrapperTypeInf o), | |
| 107 {% endif %} | |
| 108 {% endfor %}{# interfaces #} | |
| 109 | |
| 110 reinterpret_cast<intptr_t>(V8ObjectConstructor::IsValidConstructorMode), | |
|
haraken
2017/05/20 19:10:03
Why do we need this?
peria
2017/05/30 08:25:44
it is referred from V8Window class
| |
| 111 reinterpret_cast<intptr_t>(V8ConstructorAttributeGetter), | |
|
haraken
2017/05/20 19:10:03
Why do we need this?
peria
2017/05/30 08:25:44
ditto.
| |
| 112 0 // terminate with a null | |
|
haraken
2017/05/20 19:10:02
What happens if we forget to add some C++ referenc
peria
2017/05/30 08:25:44
v8::SnapshotCreator crashes if it hits unkown exte
| |
| 113 }; | |
| 114 | |
| 115 return reference_table; | |
| 116 } | |
| 117 | |
| 118 } // namespace blink | |
| 119 | |
| 120 {% endfilter %}{# format_blink_cpp_source_code #} | |
| OLD | NEW |