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

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

Issue 1079983002: Introduce SmallTypedArray IDL type and use it for bufferSubData (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: updates Created 5 years, 8 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/v8_methods.py ('k') | Source/bindings/templates/methods.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 ################################################################################ 47 ################################################################################
48 # V8-specific handling of IDL types 48 # V8-specific handling of IDL types
49 ################################################################################ 49 ################################################################################
50 50
51 NON_WRAPPER_TYPES = frozenset([ 51 NON_WRAPPER_TYPES = frozenset([
52 'Dictionary', 52 'Dictionary',
53 'EventHandler', 53 'EventHandler',
54 'EventListener', 54 'EventListener',
55 'NodeFilter', 55 'NodeFilter',
56 'SerializedScriptValue', 56 'SerializedScriptValue',
57 'SmallTypedArray',
57 ]) 58 ])
58 TYPED_ARRAY_TYPES = frozenset([ 59 TYPED_ARRAY_TYPES = frozenset([
59 'Float32Array', 60 'Float32Array',
60 'Float64Array', 61 'Float64Array',
61 'Int8Array', 62 'Int8Array',
62 'Int16Array', 63 'Int16Array',
63 'Int32Array', 64 'Int32Array',
64 'Uint8Array', 65 'Uint8Array',
65 'Uint8ClampedArray', 66 'Uint8ClampedArray',
66 'Uint16Array', 67 'Uint16Array',
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 'unsigned long', 105 'unsigned long',
105 'unsigned short', 106 'unsigned short',
106 ]) 107 ])
107 CPP_SPECIAL_CONVERSION_RULES = { 108 CPP_SPECIAL_CONVERSION_RULES = {
108 'Date': 'double', 109 'Date': 'double',
109 'Dictionary': 'Dictionary', 110 'Dictionary': 'Dictionary',
110 'EventHandler': 'EventListener*', 111 'EventHandler': 'EventListener*',
111 'NodeFilter': 'RefPtrWillBeRawPtr<NodeFilter>', 112 'NodeFilter': 'RefPtrWillBeRawPtr<NodeFilter>',
112 'Promise': 'ScriptPromise', 113 'Promise': 'ScriptPromise',
113 'ScriptValue': 'ScriptValue', 114 'ScriptValue': 'ScriptValue',
115 'SmallTypedArray': 'std::pair<void*, size_t>',
114 # FIXME: Eliminate custom bindings for XPathNSResolver http://crbug.com/345 529 116 # FIXME: Eliminate custom bindings for XPathNSResolver http://crbug.com/345 529
115 'XPathNSResolver': 'RefPtrWillBeRawPtr<XPathNSResolver>', 117 'XPathNSResolver': 'RefPtrWillBeRawPtr<XPathNSResolver>',
116 'boolean': 'bool', 118 'boolean': 'bool',
117 'unrestricted double': 'double', 119 'unrestricted double': 'double',
118 'unrestricted float': 'float', 120 'unrestricted float': 'float',
119 } 121 }
120 122
121 123
122 def cpp_type(idl_type, extended_attributes=None, raw_type=False, used_as_rvalue_ type=False, used_as_variadic_argument=False, used_in_cpp_sequence=False): 124 def cpp_type(idl_type, extended_attributes=None, raw_type=False, used_as_rvalue_ type=False, used_as_variadic_argument=False, used_in_cpp_sequence=False):
123 """Returns C++ type corresponding to IDL type. 125 """Returns C++ type corresponding to IDL type.
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 'unsigned long': 'toUInt32({isolate}, {arguments})', 487 'unsigned long': 'toUInt32({isolate}, {arguments})',
486 'long long': 'toInt64({isolate}, {arguments})', 488 'long long': 'toInt64({isolate}, {arguments})',
487 'unsigned long long': 'toUInt64({isolate}, {arguments})', 489 'unsigned long long': 'toUInt64({isolate}, {arguments})',
488 # Interface types 490 # Interface types
489 'Dictionary': 'Dictionary({v8_value}, {isolate}, exceptionState)', 491 'Dictionary': 'Dictionary({v8_value}, {isolate}, exceptionState)',
490 'EventTarget': 'toEventTarget({isolate}, {v8_value})', 492 'EventTarget': 'toEventTarget({isolate}, {v8_value})',
491 'NodeFilter': 'toNodeFilter({v8_value}, info.Holder(), ScriptState::current( {isolate}))', 493 'NodeFilter': 'toNodeFilter({v8_value}, info.Holder(), ScriptState::current( {isolate}))',
492 'Promise': 'ScriptPromise::cast(ScriptState::current({isolate}), {v8_value}) ', 494 'Promise': 'ScriptPromise::cast(ScriptState::current({isolate}), {v8_value}) ',
493 'SerializedScriptValue': 'SerializedScriptValueFactory::instance().create({v 8_value}, 0, 0, exceptionState, {isolate})', 495 'SerializedScriptValue': 'SerializedScriptValueFactory::instance().create({v 8_value}, 0, 0, exceptionState, {isolate})',
494 'ScriptValue': 'ScriptValue(ScriptState::current({isolate}), {v8_value})', 496 'ScriptValue': 'ScriptValue(ScriptState::current({isolate}), {v8_value})',
497 'SmallTypedArray': '{v8_value}->IsArrayBufferView() ? {variable_name} = std: :make_pair(alloca(v8::ArrayBufferView::Cast(*{v8_value})->ByteLength()), v8::Arr ayBufferView::Cast(*{v8_value})->ByteLength()), v8::ArrayBufferView::Cast(*{v8_v alue})->CopyContents({variable_name}.first, {variable_name}.second), {variable_n ame} : std::make_pair(nullptr, 0)',
Ken Russell (switch to Gerrit) 2015/04/14 01:40:26 Is there any way to split this up into multiple ex
Jens Widell 2015/04/14 09:18:18 I think we should make a helper function out of it
495 'Window': 'toDOMWindow({isolate}, {v8_value})', 498 'Window': 'toDOMWindow({isolate}, {v8_value})',
496 'XPathNSResolver': 'toXPathNSResolver({isolate}, {v8_value})', 499 'XPathNSResolver': 'toXPathNSResolver({isolate}, {v8_value})',
497 } 500 }
498 501
499 502
500 def v8_conversion_needs_exception_state(idl_type): 503 def v8_conversion_needs_exception_state(idl_type):
501 return (idl_type.is_numeric_type or 504 return (idl_type.is_numeric_type or
502 idl_type.is_enum or 505 idl_type.is_enum or
503 idl_type.is_dictionary or 506 idl_type.is_dictionary or
504 idl_type.name in ('ByteString', 'Dictionary', 'USVString', 'Serializ edScriptValue')) 507 idl_type.name in ('ByteString', 'Dictionary', 'USVString', 'Serializ edScriptValue'))
505 508
506 IdlType.v8_conversion_needs_exception_state = property(v8_conversion_needs_excep tion_state) 509 IdlType.v8_conversion_needs_exception_state = property(v8_conversion_needs_excep tion_state)
507 IdlArrayOrSequenceType.v8_conversion_needs_exception_state = True 510 IdlArrayOrSequenceType.v8_conversion_needs_exception_state = True
508 IdlUnionType.v8_conversion_needs_exception_state = True 511 IdlUnionType.v8_conversion_needs_exception_state = True
509 512
510 513
511 TRIVIAL_CONVERSIONS = frozenset([ 514 TRIVIAL_CONVERSIONS = frozenset([
512 'any', 515 'any',
513 'boolean', 516 'boolean',
514 'Date', 517 'Date',
515 'Dictionary', 518 'Dictionary',
516 'NodeFilter', 519 'NodeFilter',
520 'SmallTypedArray',
517 'XPathNSResolver', 521 'XPathNSResolver',
518 'Promise' 522 'Promise'
519 ]) 523 ])
520 524
521 525
522 def v8_conversion_is_trivial(idl_type): 526 def v8_conversion_is_trivial(idl_type):
523 # The conversion is a simple expression that returns the converted value and 527 # The conversion is a simple expression that returns the converted value and
524 # cannot raise an exception. 528 # cannot raise an exception.
525 return (idl_type.base_type in TRIVIAL_CONVERSIONS or 529 return (idl_type.base_type in TRIVIAL_CONVERSIONS or
526 idl_type.is_wrapper_type) 530 idl_type.is_wrapper_type)
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 number_of_nullable_member_types_union) 974 number_of_nullable_member_types_union)
971 975
972 976
973 def includes_nullable_type_union(idl_type): 977 def includes_nullable_type_union(idl_type):
974 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type 978 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type
975 return idl_type.number_of_nullable_member_types == 1 979 return idl_type.number_of_nullable_member_types == 1
976 980
977 IdlTypeBase.includes_nullable_type = False 981 IdlTypeBase.includes_nullable_type = False
978 IdlNullableType.includes_nullable_type = True 982 IdlNullableType.includes_nullable_type = True
979 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union) 983 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/v8_methods.py ('k') | Source/bindings/templates/methods.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698