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

Unified Diff: tools/dom/scripts/generator.py

Issue 1832713002: Optimize dartium dart:html bindings so real world application performance is acceptable. Improves d… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: update cached patches Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/dom/scripts/generate_blink_file.py ('k') | tools/dom/scripts/htmldartgenerator.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/scripts/generator.py
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 7e6fe8b37df6f04602c04c01a61b8633fbafebbb..90f8b3476def10a923fd4c3b0b26b331e13117ab 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -543,29 +543,28 @@ class OperationInfo(object):
type_id = p.type_id
# Unwrap the type to get the JsObject if Type is:
#
- # - known IDL type
# - type_id is None then it's probably a union type or overloaded
# it's a dynamic/any type
# - type is Object
#
- # JsObject maybe stored in the Dart class.
if (wrap_unwrap_type_blink(type_id, type_registry)):
type_is_callback = self.isCallback(type_registry, type_id)
if (dart_js_interop and type_id == 'EventListener' and
self.name in ['addEventListener', 'removeEventListener']):
- # Events fired need use a JsFunction not a anonymous closure to
+ # Events fired need use a JSFunction not a anonymous closure to
# insure the event can really be removed.
- parameters.append('unwrap_jso(js.allowInterop(%s))' % p.name)
- elif dart_js_interop and type_id == 'FontFaceSetForEachCallback':
+ parameters.append('js.allowInterop(%s)' % p.name)
+# These commented out cases don't actually generate any code.
+# elif dart_js_interop and type_id == 'FontFaceSetForEachCallback':
# forEach is supported in the DOM for FontFaceSet as it iterates
# over the Javascript Object the callback parameters are also
# Javascript objects and must be wrapped.
- parameters.append('unwrap_jso((fontFace, fontFaceAgain, set) => %s(wrap_jso(fontFace), wrap_jso(fontFaceAgain), wrap_jso(set)))' % p.name)
- elif dart_js_interop and type_id == 'HeadersForEachCallback':
+ # parameters.append('(fontFace, fontFaceAgain, set) => %s(fontFace, fontFaceAgain, wrap_jso(set))' % p.name)
+# elif dart_js_interop and type_id == 'HeadersForEachCallback':
# forEach is supported in the DOM for Headers as it iterates
# over the Javascript Object the callback parameters are also
# Javascript objects and must be wrapped.
- parameters.append('unwrap_jso((String value, String key, map) => %s(value, key, wrap_jso(map)))' % p.name)
+# parameters.append('(String value, String key, map) => %s(value, key, wrap_jso(map))' % p.name)
elif dart_js_interop and type_is_callback and not(isRemoveOperation):
# Any remove operation that has a a callback doesn't need wrapping.
# TODO(terry): Kind of hacky but handles all the cases we care about
@@ -579,15 +578,15 @@ class OperationInfo(object):
dart_type = type_registry.DartType(callback_arg.type.id) + ' '
callback_args_decl.append('%s%s' % (dart_type, callback_arg.id))
if wrap_unwrap_type_blink(callback_arg.type.id, type_registry):
- callback_args_call.append('wrap_jso(%s)' % callback_arg.id)
+ callback_args_call.append(callback_arg.id)
else:
callback_args_call.append(callback_arg.id)
- parameters.append('unwrap_jso((%s) => %s(%s))' %
+ parameters.append('(%s) => %s(%s)' %
(", ".join(callback_args_decl),
- p.name,
- ", ".join(callback_args_call)))
+ p.name,
+ ", ".join(callback_args_call)))
else:
- parameters.append('unwrap_jso(%s)' % p.name)
+ parameters.append(p.name)
else:
if dart_js_interop:
conversion = backend._InputConversion(p.type_id, self.declared_name)
@@ -1495,6 +1494,8 @@ def get_list_type(return_type):
# Get the list type NNNN inside of List<NNNN>
return return_type[5:-1] if isList(return_type) else return_type
+# TODO(jacobr): remove these obsolete methods as we don't actually
+# perform any wrapping.
def wrap_unwrap_list_blink(return_type, type_registry):
"""Return True if the type is the list type is a blink know
type e.g., List<Node>, List<FontFace>, etc."""
@@ -1508,14 +1509,9 @@ def wrap_unwrap_type_blink(return_type, type_registry):
unwrap_jso"""
if return_type and return_type.startswith('Html'):
return_type = return_type.replace('Html', 'HTML', 1)
- return (type_registry.HasInterface(return_type) or not(return_type) or
+ return (not(return_type) or
return_type == 'Object' or
- return_type == 'dynamic' or
- return_type == 'Future' or
- return_type == 'SqlDatabase' or # renamed to Database
- return_type == 'HTMLElement' or
- return_type == 'MutationObserver' or
- (return_type.endswith('[]') and return_type != 'DOMString[]'))
+ return_type == 'dynamic')
def wrap_type_blink(return_type, type_registry):
"""Returns True if the type is a blink type that requires wrap_jso but
« no previous file with comments | « tools/dom/scripts/generate_blink_file.py ('k') | tools/dom/scripts/htmldartgenerator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698