OLD | NEW |
1 {##############################################################################} | 1 {##############################################################################} |
2 {% macro generate_method(method, world_suffix) %} | 2 {% macro generate_method(method, world_suffix) %} |
3 {% filter conditional(method.conditional_string) %} | 3 {% filter conditional(method.conditional_string) %} |
4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) | 4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) |
5 { | 5 { |
6 {# Local variables #} | 6 {# Local variables #} |
7 {% if method.has_exception_state %} | 7 {% if method.has_exception_state %} |
8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na
me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); | 8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na
me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); |
9 {% endif %} | 9 {% endif %} |
10 {# Overloaded methods have length checked during overload resolution #} | 10 {# Overloaded methods have length checked during overload resolution #} |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 if (!info.IsConstructCall()) { | 533 if (!info.IsConstructCall()) { |
534 throwTypeError(ExceptionMessages::constructorNotCallableAsFunction("{{co
nstructor.name}}"), isolate); | 534 throwTypeError(ExceptionMessages::constructorNotCallableAsFunction("{{co
nstructor.name}}"), isolate); |
535 return; | 535 return; |
536 } | 536 } |
537 | 537 |
538 if (ConstructorMode::current(isolate) == ConstructorMode::WrapExistingObject
) { | 538 if (ConstructorMode::current(isolate) == ConstructorMode::WrapExistingObject
) { |
539 v8SetReturnValue(info, info.Holder()); | 539 v8SetReturnValue(info, info.Holder()); |
540 return; | 540 return; |
541 } | 541 } |
542 | 542 |
543 Document* documentPtr = currentDOMWindow(isolate)->document(); | 543 Document& document = *toDocument(currentExecutionContext(isolate)); |
544 ASSERT(documentPtr); | |
545 Document& document = *documentPtr; | |
546 | |
547 // Make sure the document is added to the DOM Node map. Otherwise, the {{cpp
_class}} instance | |
548 // may end up being the only node in the map and get garbage-collected prema
turely. | |
549 toV8(documentPtr, info.Holder(), isolate); | |
550 | 544 |
551 {% if constructor.has_exception_state %} | 545 {% if constructor.has_exception_state %} |
552 ExceptionState exceptionState(ExceptionState::ConstructionContext, "{{interf
ace_name}}", info.Holder(), isolate); | 546 ExceptionState exceptionState(ExceptionState::ConstructionContext, "{{interf
ace_name}}", info.Holder(), isolate); |
553 {% endif %} | 547 {% endif %} |
554 {% if constructor.number_of_required_arguments %} | 548 {% if constructor.number_of_required_arguments %} |
555 if (UNLIKELY(info.Length() < {{constructor.number_of_required_arguments}}))
{ | 549 if (UNLIKELY(info.Length() < {{constructor.number_of_required_arguments}}))
{ |
556 {{throw_minimum_arity_type_error(constructor, constructor.number_of_requ
ired_arguments)}}; | 550 {{throw_minimum_arity_type_error(constructor, constructor.number_of_requ
ired_arguments)}}; |
557 return; | 551 return; |
558 } | 552 } |
559 {% endif %} | 553 {% endif %} |
560 {% if constructor.arguments %} | 554 {% if constructor.arguments %} |
561 {{generate_arguments(constructor) | indent}} | 555 {{generate_arguments(constructor) | indent}} |
562 {% endif %} | 556 {% endif %} |
563 {{constructor.cpp_type}} impl = {{constructor.cpp_value}}; | 557 {{constructor.cpp_type}} impl = {{constructor.cpp_value}}; |
564 {% if is_constructor_raises_exception %} | 558 {% if is_constructor_raises_exception %} |
565 if (exceptionState.throwIfNeeded()) | 559 if (exceptionState.throwIfNeeded()) |
566 return; | 560 return; |
567 {% endif %} | 561 {% endif %} |
568 | 562 |
569 {{generate_constructor_wrapper(constructor) | indent}} | 563 {{generate_constructor_wrapper(constructor) | indent}} |
570 } | 564 } |
571 {% endmacro %} | 565 {% endmacro %} |
OLD | NEW |