Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library dart2js.new_js_emitter.model_emitter; | 5 library dart2js.new_js_emitter.model_emitter; |
| 6 | 6 |
| 7 import '../../dart2jslib.dart' show Compiler; | 7 import '../../dart2jslib.dart' show Compiler; |
| 8 import '../../dart_types.dart' show DartType; | 8 import '../../dart_types.dart' show DartType; |
| 9 import '../../js/js.dart' as js; | 9 import '../../js/js.dart' as js; |
| 10 import '../../js_backend/js_backend.dart' show | 10 import '../../js_backend/js_backend.dart' show |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 202 globals.addAll(emitLoadUrisAndHashes(program.loadMap)); | 202 globals.addAll(emitLoadUrisAndHashes(program.loadMap)); |
| 203 globals.add(emitIsHunkLoadedFunction()); | 203 globals.add(emitIsHunkLoadedFunction()); |
| 204 globals.add(emitInitializeLoadedHunk()); | 204 globals.add(emitInitializeLoadedHunk()); |
| 205 } | 205 } |
| 206 | 206 |
| 207 if (program.typeToInterceptorMap != null) { | 207 if (program.typeToInterceptorMap != null) { |
| 208 globals.add(new js.Property(js.string(TYPE_TO_INTERCEPTOR_MAP), | 208 globals.add(new js.Property(js.string(TYPE_TO_INTERCEPTOR_MAP), |
| 209 program.typeToInterceptorMap)); | 209 program.typeToInterceptorMap)); |
| 210 } | 210 } |
| 211 | 211 |
| 212 globals.add(new js.Property(js.string(MANGLED_GLOBAL_NAMES), | 212 globals.add(emitMangledGlobalNames()); |
| 213 js.js('Object.create(null)', []))); | |
| 214 | 213 |
| 215 globals.add(emitGetTypeFromName()); | 214 globals.add(emitGetTypeFromName()); |
| 216 | 215 |
| 217 globals.add(emitMetadata(program)); | 216 globals.add(emitMetadata(program)); |
| 218 | 217 |
| 219 if (program.outputContainsNativeClasses) { | 218 if (program.outputContainsNativeClasses) { |
| 220 globals.add(new js.Property(js.string(INTERCEPTORS_BY_TAG), | 219 globals.add(new js.Property(js.string(INTERCEPTORS_BY_TAG), |
| 221 js.js('Object.create(null)', []))); | 220 js.js('Object.create(null)', []))); |
| 222 globals.add(new js.Property(js.string(LEAF_TAGS), | 221 globals.add(new js.Property(js.string(LEAF_TAGS), |
| 223 js.js('Object.create(null)', []))); | 222 js.js('Object.create(null)', []))); |
| 224 } | 223 } |
| 225 | 224 |
| 226 js.ObjectInitializer globalsObject = new js.ObjectInitializer(globals); | 225 js.ObjectInitializer globalsObject = new js.ObjectInitializer(globals); |
| 227 | 226 |
| 228 List<js.Statement> statements = | 227 List<js.Statement> statements = |
| 229 [new js.ExpressionStatement( | 228 [new js.ExpressionStatement( |
| 230 new js.VariableDeclarationList( | 229 new js.VariableDeclarationList( |
| 231 [new js.VariableInitialization( | 230 [new js.VariableInitialization( |
| 232 new js.VariableDeclaration("init", allowRename: false), | 231 new js.VariableDeclaration("init", allowRename: false), |
| 233 globalsObject)]))]; | 232 globalsObject)]))]; |
| 234 return new js.Block(statements); | 233 return new js.Block(statements); |
| 235 } | 234 } |
| 236 | 235 |
| 236 js.Property emitMangledGlobalNames() { | |
| 237 List<js.Property> names = <js.Property>[]; | |
| 238 [compiler.intClass, compiler.doubleClass, compiler.numClass, | |
|
floitsch
2015/02/04 16:18:28
Add comment why this is needed/wanted.
Update the
zarah
2015/02/06 08:53:11
Done.
| |
| 239 compiler.stringClass, compiler.boolClass, compiler.nullClass, | |
|
floitsch
2015/02/04 16:18:28
indent by 1.
zarah
2015/02/06 08:53:11
Done.
| |
| 240 compiler.listClass].forEach((cls) => | |
|
floitsch
2015/02/04 16:18:28
Don't use "cls". "Cls" is only used for "Class" in
floitsch
2015/02/04 16:18:28
Split it into smaller pieces.
List<ClassElement> n
floitsch
2015/02/04 16:18:28
make this a "{}" function body.
zarah
2015/02/06 08:53:11
Done.
zarah
2015/02/06 08:53:11
Done.
zarah
2015/02/06 08:53:12
Done.
| |
| 241 names.add(new js.Property(js.string(namer.getNameOfClass(cls)), | |
| 242 js.string(cls.name)))); | |
| 243 | |
| 244 return new js.Property(js.string(MANGLED_GLOBAL_NAMES), | |
| 245 new js.ObjectInitializer(names, isOneLiner: false)); | |
|
floitsch
2015/02/04 16:18:28
I would have kept it as a one-liner.
zarah
2015/02/06 08:53:11
Done.
| |
| 246 } | |
| 247 | |
| 237 List<js.Property> emitLoadUrisAndHashes(Map<String, List<Fragment>> loadMap) { | 248 List<js.Property> emitLoadUrisAndHashes(Map<String, List<Fragment>> loadMap) { |
| 238 js.ArrayInitializer outputUris(List<Fragment> fragments) { | 249 js.ArrayInitializer outputUris(List<Fragment> fragments) { |
| 239 return js.stringArray(fragments.map((DeferredFragment fragment) => | 250 return js.stringArray(fragments.map((DeferredFragment fragment) => |
| 240 "${fragment.outputFileName}$deferredExtension")); | 251 "${fragment.outputFileName}$deferredExtension")); |
| 241 } | 252 } |
| 242 js.ArrayInitializer outputHashes(List<Fragment> fragments) { | 253 js.ArrayInitializer outputHashes(List<Fragment> fragments) { |
| 243 // TODO(floitsch): the hash must depend on the generated code. | 254 // TODO(floitsch): the hash must depend on the generated code. |
| 244 return js.numArray( | 255 return js.numArray( |
| 245 fragments.map((DeferredFragment fragment) => fragment.hashCode)); | 256 fragments.map((DeferredFragment fragment) => fragment.hashCode)); |
| 246 } | 257 } |
| (...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 887 | 898 |
| 888 var end = Date.now(); | 899 var end = Date.now(); |
| 889 print('Setup: ' + (end - start) + ' ms.'); | 900 print('Setup: ' + (end - start) + ' ms.'); |
| 890 | 901 |
| 891 #main(); // Start main. | 902 #main(); // Start main. |
| 892 | 903 |
| 893 }(Date.now(), #code) | 904 }(Date.now(), #code) |
| 894 }"""; | 905 }"""; |
| 895 | 906 |
| 896 } | 907 } |
| OLD | NEW |