| 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 part of dart2js.js_emitter; | 5 part of dart2js.js_emitter; |
| 6 | 6 |
| 7 | 7 |
| 8 class OldEmitter implements Emitter { | 8 class OldEmitter implements Emitter { |
| 9 final Compiler compiler; | 9 final Compiler compiler; |
| 10 final CodeEmitterTask task; | 10 final CodeEmitterTask task; |
| (...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1011 if (library == compiler.mainApp) { | 1011 if (library == compiler.mainApp) { |
| 1012 parts.add(js.number(1)); | 1012 parts.add(js.number(1)); |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 return new jsAst.ArrayInitializer(parts); | 1015 return new jsAst.ArrayInitializer(parts); |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 void assemblePrecompiledConstructor(OutputUnit outputUnit, | 1018 void assemblePrecompiledConstructor(OutputUnit outputUnit, |
| 1019 jsAst.Name constructorName, | 1019 jsAst.Name constructorName, |
| 1020 jsAst.Expression constructorAst, | 1020 jsAst.Expression constructorAst, |
| 1021 List<String> fields) { | 1021 List<jsAst.Name> fields) { |
| 1022 cspPrecompiledFunctionFor(outputUnit).add( | 1022 cspPrecompiledFunctionFor(outputUnit).add( |
| 1023 new jsAst.FunctionDeclaration(constructorName, constructorAst)); | 1023 new jsAst.FunctionDeclaration(constructorName, constructorAst)); |
| 1024 | 1024 |
| 1025 String fieldNamesProperty = FIELD_NAMES_PROPERTY_NAME; | 1025 String fieldNamesProperty = FIELD_NAMES_PROPERTY_NAME; |
| 1026 bool hasIsolateSupport = compiler.hasIsolateSupport; | 1026 bool hasIsolateSupport = compiler.hasIsolateSupport; |
| 1027 jsAst.Node fieldNamesArray = | 1027 jsAst.Node fieldNamesArray; |
| 1028 hasIsolateSupport ? js.stringArray(fields) : new jsAst.LiteralNull(); | 1028 if (hasIsolateSupport) { |
| 1029 fieldNamesArray = js.concatenateStrings( |
| 1030 js.joinLiterals(fields, js.stringPart(",")), |
| 1031 addQuotes: true); |
| 1032 } else { |
| 1033 fieldNamesArray = new jsAst.LiteralNull(); |
| 1034 } |
| 1029 | 1035 |
| 1030 cspPrecompiledFunctionFor(outputUnit).add(js.statement(r''' | 1036 cspPrecompiledFunctionFor(outputUnit).add(js.statement(r''' |
| 1031 { | 1037 { |
| 1032 #constructorName.#typeNameProperty = #constructorNameString; | 1038 #constructorName.#typeNameProperty = #constructorNameString; |
| 1033 // IE does not have a name property. | 1039 // IE does not have a name property. |
| 1034 if (!("name" in #constructorName)) | 1040 if (!("name" in #constructorName)) |
| 1035 #constructorName.name = #constructorNameString; | 1041 #constructorName.name = #constructorNameString; |
| 1036 $desc = $collectedClasses$.#constructorName[1]; | 1042 $desc = $collectedClasses$.#constructorName[1]; |
| 1037 #constructorName.prototype = $desc; | 1043 #constructorName.prototype = $desc; |
| 1038 ''' /* next string is not a raw string */ ''' | 1044 ''' /* next string is not a raw string */ ''' |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1077 builder.superName = namer.className(compiler.objectClass); | 1083 builder.superName = namer.className(compiler.objectClass); |
| 1078 jsAst.Node declaration = builder.toObjectInitializer(); | 1084 jsAst.Node declaration = builder.toObjectInitializer(); |
| 1079 jsAst.Name mangledName = namer.globalPropertyName(typedef); | 1085 jsAst.Name mangledName = namer.globalPropertyName(typedef); |
| 1080 String reflectionName = getReflectionName(typedef, mangledName); | 1086 String reflectionName = getReflectionName(typedef, mangledName); |
| 1081 getElementDescriptor(library, mainFragment) | 1087 getElementDescriptor(library, mainFragment) |
| 1082 ..addProperty(mangledName, declaration) | 1088 ..addProperty(mangledName, declaration) |
| 1083 ..addPropertyByName("+$reflectionName", js.string('')); | 1089 ..addPropertyByName("+$reflectionName", js.string('')); |
| 1084 // Also emit a trivial constructor for CSP mode. | 1090 // Also emit a trivial constructor for CSP mode. |
| 1085 jsAst.Name constructorName = mangledName; | 1091 jsAst.Name constructorName = mangledName; |
| 1086 jsAst.Expression constructorAst = js('function() {}'); | 1092 jsAst.Expression constructorAst = js('function() {}'); |
| 1087 List<String> fieldNames = []; | 1093 List<jsAst.Name> fieldNames = []; |
| 1088 assemblePrecompiledConstructor(mainOutputUnit, | 1094 assemblePrecompiledConstructor(mainOutputUnit, |
| 1089 constructorName, | 1095 constructorName, |
| 1090 constructorAst, | 1096 constructorAst, |
| 1091 fieldNames); | 1097 fieldNames); |
| 1092 } | 1098 } |
| 1093 } | 1099 } |
| 1094 | 1100 |
| 1095 jsAst.Statement buildGlobalObjectSetup(bool isProgramSplit) { | 1101 jsAst.Statement buildGlobalObjectSetup(bool isProgramSplit) { |
| 1096 List<jsAst.Statement> parts = <jsAst.Statement>[]; | 1102 List<jsAst.Statement> parts = <jsAst.Statement>[]; |
| 1097 | 1103 |
| (...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2001 for (Element element in compiler.enqueuer.codegen.newlyEnqueuedElements) { | 2007 for (Element element in compiler.enqueuer.codegen.newlyEnqueuedElements) { |
| 2002 if (element.isInstanceMember) { | 2008 if (element.isInstanceMember) { |
| 2003 cachedClassBuilders.remove(element.enclosingClass); | 2009 cachedClassBuilders.remove(element.enclosingClass); |
| 2004 | 2010 |
| 2005 nativeEmitter.cachedBuilders.remove(element.enclosingClass); | 2011 nativeEmitter.cachedBuilders.remove(element.enclosingClass); |
| 2006 | 2012 |
| 2007 } | 2013 } |
| 2008 } | 2014 } |
| 2009 } | 2015 } |
| 2010 } | 2016 } |
| OLD | NEW |