| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 /** The one true [World]. */ | 5 /** The one true [World]. */ |
| 6 World world; | 6 World world; |
| 7 | 7 |
| 8 /** | 8 /** |
| 9 * Should be called exactly once to setup singleton world. | 9 * Should be called exactly once to setup singleton world. |
| 10 * Can use world.reset() to reinitialize. | 10 * Can use world.reset() to reinitialize. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 | 68 |
| 69 Map<String, Library> libraries; | 69 Map<String, Library> libraries; |
| 70 Library corelib; | 70 Library corelib; |
| 71 | 71 |
| 72 Library get coreimpl() => libraries['dart:coreimpl']; | 72 Library get coreimpl() => libraries['dart:coreimpl']; |
| 73 Library get dom() => libraries['dart:dom']; | 73 Library get dom() => libraries['dart:dom']; |
| 74 | 74 |
| 75 List<Library> _todo; | 75 List<Library> _todo; |
| 76 | 76 |
| 77 /** Internal map to track name conflicts in the generated javascript. */ | 77 /** Internal map to track name conflicts in the generated javascript. */ |
| 78 Map<String, Named> _topNames; | 78 Map<String, Element> _topNames; |
| 79 | 79 |
| 80 Map<String, MemberSet> _members; | 80 Map<String, MemberSet> _members; |
| 81 | 81 |
| 82 int errors = 0, warnings = 0; | 82 int errors = 0, warnings = 0; |
| 83 int dartBytesRead = 0, jsBytesWritten = 0; | 83 int dartBytesRead = 0, jsBytesWritten = 0; |
| 84 bool seenFatal = false; | 84 bool seenFatal = false; |
| 85 | 85 |
| 86 // Special types to Dart. | 86 // Special types to Dart. |
| 87 DefinedType varType; | 87 DefinedType varType; |
| 88 // TODO(jimhug): Is this ever not === varType? | 88 // TODO(jimhug): Is this ever not === varType? |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 | 152 |
| 153 var mset = _members[member.name]; | 153 var mset = _members[member.name]; |
| 154 if (mset == null) { | 154 if (mset == null) { |
| 155 mset = new MemberSet(member, isVar:true); | 155 mset = new MemberSet(member, isVar:true); |
| 156 _members[mset.name] = mset; | 156 _members[mset.name] = mset; |
| 157 } else { | 157 } else { |
| 158 mset.members.add(member); | 158 mset.members.add(member); |
| 159 } | 159 } |
| 160 } | 160 } |
| 161 | 161 |
| 162 _addTopName(Named named) { | 162 _addTopName(Element named) { |
| 163 var existing = _topNames[named.name]; | 163 var existing = _topNames[named.jsname]; |
| 164 if (existing != null) { | 164 if (existing != null) { |
| 165 info('mangling matching top level name "${named.name}" in ' | 165 info('mangling matching top level name "${named.jsname}" in ' |
| 166 + 'both "${named.library.name}" and "${existing.library.name}"'); | 166 + 'both "${named.library.jsname}" and "${existing.library.jsname}"'); |
| 167 | 167 |
| 168 if (named.isNative) { | 168 if (named.isNative) { |
| 169 // resolve conflicts in favor first of natives | 169 // resolve conflicts in favor first of natives |
| 170 if (existing.isNative) { | 170 if (existing.isNative) { |
| 171 world.internalError('conflicting native names "${named.name}" ' | 171 world.internalError('conflicting native names "${named.jsname}" ' |
| 172 + '(already defined in ${existing.span.locationText})', | 172 + '(already defined in ${existing.span.locationText})', |
| 173 named.span); | 173 named.span); |
| 174 } else { | 174 } else { |
| 175 _topNames[named.name] = named; | 175 _topNames[named.jsname] = named; |
| 176 _addJavascriptTopName(existing); | 176 _addJavascriptTopName(existing); |
| 177 } | 177 } |
| 178 } else if (named.library.isCore) { | 178 } else if (named.library.isCore) { |
| 179 // then in favor of corelib | 179 // then in favor of corelib |
| 180 if (existing.library.isCore) { | 180 if (existing.library.isCore) { |
| 181 world.internalError( | 181 world.internalError( |
| 182 'conflicting top-level names in core "${named.name}" ' | 182 'conflicting top-level names in core "${named.jsname}" ' |
| 183 + '(previously defined in ${existing.span.locationText})', | 183 + '(previously defined in ${existing.span.locationText})', |
| 184 named.span); | 184 named.span); |
| 185 } else { | 185 } else { |
| 186 _topNames[named.name] = named; | 186 _topNames[named.jsname] = named; |
| 187 _addJavascriptTopName(existing); | 187 _addJavascriptTopName(existing); |
| 188 } | 188 } |
| 189 } else { | 189 } else { |
| 190 // then just first in wins | 190 // then just first in wins |
| 191 _addJavascriptTopName(named); | 191 _addJavascriptTopName(named); |
| 192 } | 192 } |
| 193 } else { | 193 } else { |
| 194 _topNames[named.name] = named; | 194 _topNames[named.jsname] = named; |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 _addJavascriptTopName(Named named) { | 198 _addJavascriptTopName(Element named) { |
| 199 named.jsname = '${named.library.jsname}_${named.name}'; | 199 named._jsname = '${named.library.jsname}_${named.jsname}'; |
| 200 final existing = _topNames[named.jsname]; | 200 final existing = _topNames[named.jsname]; |
| 201 if (existing != null && existing != named) { | 201 if (existing != null && existing != named) { |
| 202 world.internalError('name mangling failed for "${named.jsname}" ' | 202 world.internalError('name mangling failed for "${named.jsname}" ' |
| 203 + '("${named.jsname}" defined also in ${existing.span.locationText})', | 203 + '("${named.jsname}" defined also in ${existing.span.locationText})', |
| 204 named.span); | 204 named.span); |
| 205 } | 205 } |
| 206 _topNames[named.jsname] = named; | 206 _topNames[named.jsname] = named; |
| 207 } | 207 } |
| 208 | 208 |
| 209 _addType(Type type) { | 209 _addType(Type type) { |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 | 442 |
| 443 withTiming(String name, f()) { | 443 withTiming(String name, f()) { |
| 444 final sw = new Stopwatch(); | 444 final sw = new Stopwatch(); |
| 445 sw.start(); | 445 sw.start(); |
| 446 var result = f(); | 446 var result = f(); |
| 447 sw.stop(); | 447 sw.stop(); |
| 448 info('$name in ${sw.elapsedInMs()}msec'); | 448 info('$name in ${sw.elapsedInMs()}msec'); |
| 449 return result; | 449 return result; |
| 450 } | 450 } |
| 451 } | 451 } |
| OLD | NEW |