OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 class NsmEmitter extends CodeEmitterHelper { | 7 class NsmEmitter extends CodeEmitterHelper { |
8 final List<Selector> trivialNsmHandlers = <Selector>[]; | 8 final List<Selector> trivialNsmHandlers = <Selector>[]; |
9 | 9 |
10 /// If this is true then we can generate the noSuchMethod handlers at startup | 10 /// If this is true then we can generate the noSuchMethod handlers at startup |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 for (var remaining = nameNumber; | 253 for (var remaining = nameNumber; |
254 remaining > 0; | 254 remaining > 0; |
255 remaining = (remaining / 88) | 0) { | 255 remaining = (remaining / 88) | 0) { |
256 codes.unshift(${$HASH} + remaining % 88); | 256 codes.unshift(${$HASH} + remaining % 88); |
257 } | 257 } |
258 calculatedShortNames.push( | 258 calculatedShortNames.push( |
259 String.fromCharCode.apply(String, codes)); | 259 String.fromCharCode.apply(String, codes)); |
260 } | 260 } |
261 shortNames.splice.apply(shortNames, calculatedShortNames); | 261 shortNames.splice.apply(shortNames, calculatedShortNames); |
262 } | 262 } |
263 }''', {'objectClass': js.string(namer.className(objectClass)), | 263 }''', {'objectClass': js.string(namer.getNameOfClass(objectClass)), |
264 'diffEncoding': js.string('$diffEncoding')})); | 264 'diffEncoding': js.string('$diffEncoding')})); |
265 } else { | 265 } else { |
266 // No useDiffEncoding version. | 266 // No useDiffEncoding version. |
267 Iterable<String> longs = trivialNsmHandlers.map((selector) => | 267 Iterable<String> longs = trivialNsmHandlers.map((selector) => |
268 selector.invocationMirrorMemberName); | 268 selector.invocationMirrorMemberName); |
269 statements.add(js.statement( | 269 statements.add(js.statement( |
270 'var objectClassObject = processedClasses.collected[#objectClass],' | 270 'var objectClassObject = processedClasses.collected[#objectClass],' |
271 ' shortNames = #diffEncoding.split(",")', | 271 ' shortNames = #diffEncoding.split(",")', |
272 {'objectClass': js.string(namer.className(objectClass)), | 272 {'objectClass': js.string(namer.getNameOfClass(objectClass)), |
273 'diffEncoding': js.string('$diffEncoding')})); | 273 'diffEncoding': js.string('$diffEncoding')})); |
274 if (!minify) { | 274 if (!minify) { |
275 statements.add(js.statement('var longNames = #longs.split(",")', | 275 statements.add(js.statement('var longNames = #longs.split(",")', |
276 {'longs': js.string(longs.join(','))})); | 276 {'longs': js.string(longs.join(','))})); |
277 } | 277 } |
278 statements.add(js.statement( | 278 statements.add(js.statement( |
279 'if (objectClassObject instanceof Array)' | 279 'if (objectClassObject instanceof Array)' |
280 ' objectClassObject = objectClassObject[1];')); | 280 ' objectClassObject = objectClassObject[1];')); |
281 } | 281 } |
282 | 282 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 }''', { | 323 }''', { |
324 'sliceOffsetParams': sliceOffsetParams, | 324 'sliceOffsetParams': sliceOffsetParams, |
325 'noSuchMethodName': namer.noSuchMethodName, | 325 'noSuchMethodName': namer.noSuchMethodName, |
326 'createInvocationMirror': createInvocationMirror, | 326 'createInvocationMirror': createInvocationMirror, |
327 'names': minify ? 'shortNames' : 'longNames', | 327 'names': minify ? 'shortNames' : 'longNames', |
328 'sliceOffsetArguments': sliceOffsetArguments})); | 328 'sliceOffsetArguments': sliceOffsetArguments})); |
329 | 329 |
330 return statements; | 330 return statements; |
331 } | 331 } |
332 } | 332 } |
OLD | NEW |