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

Side by Side Diff: Source/bindings/scripts/v8_interface.py

Issue 265293004: Create fewer local v8::TryCatch objects in generated bindings code (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 7 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
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 return type_check 457 return type_check
458 return None 458 return None
459 459
460 460
461 ################################################################################ 461 ################################################################################
462 # Constructors 462 # Constructors
463 ################################################################################ 463 ################################################################################
464 464
465 # [Constructor] 465 # [Constructor]
466 def generate_constructor(interface, constructor): 466 def generate_constructor(interface, constructor):
467 generated_arguments = [constructor_argument(interface, constructor, argument , index)
468 for index, argument in enumerate(constructor.argument s)]
469
467 return { 470 return {
468 'argument_list': constructor_argument_list(interface, constructor), 471 'argument_list': constructor_argument_list(interface, constructor),
469 'arguments': [constructor_argument(interface, constructor, argument, ind ex) 472 'arguments': generated_arguments,
470 for index, argument in enumerate(constructor.arguments)], 473 'arguments_need_try_catch': any(
474 v8_methods.argument_needs_try_catch(argument) for argument in genera ted_arguments),
Nils Barth (inactive) 2014/05/07 03:02:19 Could you add one more linebreak here? (So for ...
471 'cpp_type': cpp_template_type( 475 'cpp_type': cpp_template_type(
472 cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)), 476 cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)),
473 cpp_name(interface)), 477 cpp_name(interface)),
474 'has_exception_state': 478 'has_exception_state':
475 # [RaisesException=Constructor] 479 # [RaisesException=Constructor]
476 interface.extended_attributes.get('RaisesException') == 'Constructor ' or 480 interface.extended_attributes.get('RaisesException') == 'Constructor ' or
477 any(argument for argument in constructor.arguments 481 any(argument for argument in constructor.arguments
478 if argument.idl_type.name == 'SerializedScriptValue' or 482 if argument.idl_type.name == 'SerializedScriptValue' or
479 argument.idl_type.is_integer_type), 483 argument.idl_type.is_integer_type),
480 'is_constructor': True, 484 'is_constructor': True,
(...skipping 16 matching lines...) Expand all
497 arguments.extend([argument.name for argument in constructor.arguments]) 501 arguments.extend([argument.name for argument in constructor.arguments])
498 502
499 # [RaisesException=Constructor] 503 # [RaisesException=Constructor]
500 if interface.extended_attributes.get('RaisesException') == 'Constructor': 504 if interface.extended_attributes.get('RaisesException') == 'Constructor':
501 arguments.append('exceptionState') 505 arguments.append('exceptionState')
502 506
503 return arguments 507 return arguments
504 508
505 509
506 def constructor_argument(interface, constructor, argument, index): 510 def constructor_argument(interface, constructor, argument, index):
511 extended_attributes = argument.extended_attributes
507 idl_type = argument.idl_type 512 idl_type = argument.idl_type
513 is_variadic_wrapper_type = argument.is_variadic and idl_type.is_wrapper_type
514
508 return { 515 return {
516 'cpp_type': idl_type.cpp_type_args(extended_attributes=extended_attribut es,
517 used_as_argument=not is_variadic_wrap per_type,
518 used_in_cpp_sequence=is_variadic_wrap per_type),
509 'cpp_value': 519 'cpp_value':
510 v8_methods.cpp_value(interface, constructor, index), 520 v8_methods.cpp_value(interface, constructor, index),
511 'has_default': 'Default' in argument.extended_attributes, 521 'has_default': 'Default' in argument.extended_attributes,
512 'has_legacy_overload_string': False, # Required for overload resolution 522 'has_legacy_overload_string': False, # Required for overload resolution
513 # Dictionary is special-cased, but arrays and sequences shouldn't be 523 # Dictionary is special-cased, but arrays and sequences shouldn't be
514 'idl_type': not idl_type.array_or_sequence_type and idl_type.base_type, 524 'idl_type': not idl_type.array_or_sequence_type and idl_type.base_type,
515 'idl_type_object': idl_type, 525 'idl_type_object': idl_type,
516 'index': index, 526 'index': index,
517 'is_optional': argument.is_optional, 527 'is_optional': argument.is_optional,
518 'name': argument.name, 528 'name': argument.name,
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 deleter = next( 757 deleter = next(
748 method 758 method
749 for method in interface.operations 759 for method in interface.operations
750 if ('deleter' in method.specials and 760 if ('deleter' in method.specials and
751 len(method.arguments) == 1 and 761 len(method.arguments) == 1 and
752 str(method.arguments[0].idl_type) == 'DOMString')) 762 str(method.arguments[0].idl_type) == 'DOMString'))
753 except StopIteration: 763 except StopIteration:
754 return None 764 return None
755 765
756 return property_deleter(deleter) 766 return property_deleter(deleter)
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/scripts/v8_methods.py » ('j') | Source/bindings/scripts/v8_methods.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698