| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart2js.js_emitter.startup_emitter.model_emitter; | 5 part of dart2js.js_emitter.startup_emitter.model_emitter; |
| 6 | 6 |
| 7 /// The name of the property that stores the tear-off getter on a static | 7 /// The name of the property that stores the tear-off getter on a static |
| 8 /// function. | 8 /// function. |
| 9 /// | 9 /// |
| 10 /// This property is only used when isolates are used. | 10 /// This property is only used when isolates are used. |
| (...skipping 1315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1326 function (s) { | 1326 function (s) { |
| 1327 var o = {}; | 1327 var o = {}; |
| 1328 o[s] = 1; | 1328 o[s] = 1; |
| 1329 return Object.keys(convertToFastObject(o))[0]; | 1329 return Object.keys(convertToFastObject(o))[0]; |
| 1330 }""", | 1330 }""", |
| 1331 []))); | 1331 []))); |
| 1332 } | 1332 } |
| 1333 | 1333 |
| 1334 Map<String, js.Expression> interceptorsByTag = <String, js.Expression>{}; | 1334 Map<String, js.Expression> interceptorsByTag = <String, js.Expression>{}; |
| 1335 Map<String, js.Expression> leafTags = <String, js.Expression>{}; | 1335 Map<String, js.Expression> leafTags = <String, js.Expression>{}; |
| 1336 js.Statement subclassAssignment = new js.EmptyStatement(); | 1336 List<js.Statement> subclassAssignments = <js.Statement>[]; |
| 1337 | 1337 |
| 1338 for (Library library in fragment.libraries) { | 1338 for (Library library in fragment.libraries) { |
| 1339 for (Class cls in library.classes) { | 1339 for (Class cls in library.classes) { |
| 1340 if (cls.nativeLeafTags != null) { | 1340 if (cls.nativeLeafTags != null) { |
| 1341 for (String tag in cls.nativeLeafTags) { | 1341 for (String tag in cls.nativeLeafTags) { |
| 1342 interceptorsByTag[tag] = classReference(cls); | 1342 interceptorsByTag[tag] = classReference(cls); |
| 1343 leafTags[tag] = new js.LiteralBool(true); | 1343 leafTags[tag] = new js.LiteralBool(true); |
| 1344 } | 1344 } |
| 1345 } | 1345 } |
| 1346 if (cls.nativeNonLeafTags != null) { | 1346 if (cls.nativeNonLeafTags != null) { |
| 1347 for (String tag in cls.nativeNonLeafTags) { | 1347 for (String tag in cls.nativeNonLeafTags) { |
| 1348 interceptorsByTag[tag] = classReference(cls); | 1348 interceptorsByTag[tag] = classReference(cls); |
| 1349 leafTags[tag] = new js.LiteralBool(false); | 1349 leafTags[tag] = new js.LiteralBool(false); |
| 1350 } | 1350 } |
| 1351 if (cls.nativeExtensions != null) { | 1351 if (cls.nativeExtensions != null) { |
| 1352 List<Class> subclasses = cls.nativeExtensions; | 1352 List<Class> subclasses = cls.nativeExtensions; |
| 1353 js.Expression value = js.string(cls.nativeNonLeafTags[0]); | 1353 js.Expression base = js.string(cls.nativeNonLeafTags[0]); |
| 1354 |
| 1354 for (Class subclass in subclasses) { | 1355 for (Class subclass in subclasses) { |
| 1355 value = js.js('#.# = #', [ | 1356 subclassAssignments.add(js.js.statement('#.# = #;', [ |
| 1356 classReference(subclass), | 1357 classReference(subclass), |
| 1357 NATIVE_SUPERCLASS_TAG_NAME, | 1358 NATIVE_SUPERCLASS_TAG_NAME, |
| 1358 js.string(cls.nativeNonLeafTags[0]) | 1359 base |
| 1359 ]); | 1360 ])); |
| 1360 } | 1361 } |
| 1361 subclassAssignment = new js.ExpressionStatement(value); | |
| 1362 } | 1362 } |
| 1363 } | 1363 } |
| 1364 } | 1364 } |
| 1365 } | 1365 } |
| 1366 statements.add(js.js.statement("setOrUpdateInterceptorsByTag(#);", | 1366 statements.add(js.js.statement("setOrUpdateInterceptorsByTag(#);", |
| 1367 js.objectLiteral(interceptorsByTag))); | 1367 js.objectLiteral(interceptorsByTag))); |
| 1368 statements.add( | 1368 statements.add( |
| 1369 js.js.statement("setOrUpdateLeafTags(#);", js.objectLiteral(leafTags))); | 1369 js.js.statement("setOrUpdateLeafTags(#);", js.objectLiteral(leafTags))); |
| 1370 statements.add(subclassAssignment); | 1370 statements.addAll(subclassAssignments); |
| 1371 | 1371 |
| 1372 return new js.Block(statements); | 1372 return new js.Block(statements); |
| 1373 } | 1373 } |
| 1374 } | 1374 } |
| OLD | NEW |