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 /// This class should morph into something that makes it easy to build | 7 /// This class should morph into something that makes it easy to build |
8 /// JavaScript representations of libraries, class-sides, and instance-sides. | 8 /// JavaScript representations of libraries, class-sides, and instance-sides. |
9 /// Initially, it is just a placeholder for code that is moved from | 9 /// Initially, it is just a placeholder for code that is moved from |
10 /// [CodeEmitterTask]. | 10 /// [CodeEmitterTask]. |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 // On [requiredParameterCount], the lower bit is set if this method can be | 406 // On [requiredParameterCount], the lower bit is set if this method can be |
407 // called reflectively. | 407 // called reflectively. |
408 int requiredParameterCount = parameters.requiredParameterCount << 1; | 408 int requiredParameterCount = parameters.requiredParameterCount << 1; |
409 if (member.isAccessor()) requiredParameterCount++; | 409 if (member.isAccessor()) requiredParameterCount++; |
410 | 410 |
411 int optionalParameterCount = parameters.optionalParameterCount << 1; | 411 int optionalParameterCount = parameters.optionalParameterCount << 1; |
412 if (parameters.optionalParametersAreNamed) optionalParameterCount++; | 412 if (parameters.optionalParametersAreNamed) optionalParameterCount++; |
413 | 413 |
414 expressions.add(code); | 414 expressions.add(code); |
415 | 415 |
416 // TODO(ahe): Remove comments from output. | 416 List tearOffInfo = [new jsAst.LiteralString('$callSelectorString')]; |
417 List tearOffInfo = | |
418 [new jsAst.LiteralString('$callSelectorString /* tearOffInfo */')]; | |
419 | 417 |
420 if (needsStubs || canTearOff) { | 418 if (needsStubs || canTearOff) { |
421 addParameterStubs(member, (Selector selector, jsAst.Fun function) { | 419 addParameterStubs(member, (Selector selector, jsAst.Fun function) { |
422 expressions.add(function); | 420 expressions.add(function); |
423 if (member.isInstanceMember()) { | 421 if (member.isInstanceMember()) { |
424 Set invokedSelectors = | 422 Set invokedSelectors = |
425 compiler.codegenWorld.invokedNames[member.name]; | 423 compiler.codegenWorld.invokedNames[member.name]; |
426 //if (invokedSelectors != null && invokedSelectors.contains(selector))
{ | 424 //if (invokedSelectors != null && invokedSelectors.contains(selector))
{ |
427 expressions.add(js.string(namer.invocationName(selector))); | 425 expressions.add(js.string(namer.invocationName(selector))); |
428 //} else { | 426 //} else { |
(...skipping 11 matching lines...) Expand all Loading... |
440 // data, we can eliminate this element. | 438 // data, we can eliminate this element. |
441 } | 439 } |
442 Set<Selector> callSelectors = compiler.codegenWorld.invokedNames[ | 440 Set<Selector> callSelectors = compiler.codegenWorld.invokedNames[ |
443 namer.closureInvocationSelectorName]; | 441 namer.closureInvocationSelectorName]; |
444 Selector callSelector = selector.toCallSelector(); | 442 Selector callSelector = selector.toCallSelector(); |
445 String callSelectorString = 'null'; | 443 String callSelectorString = 'null'; |
446 if (canTearOff && callSelectors != null && | 444 if (canTearOff && callSelectors != null && |
447 callSelectors.contains(callSelector)) { | 445 callSelectors.contains(callSelector)) { |
448 callSelectorString = '"${namer.invocationName(callSelector)}"'; | 446 callSelectorString = '"${namer.invocationName(callSelector)}"'; |
449 } | 447 } |
450 tearOffInfo.add( | 448 tearOffInfo.add(new jsAst.LiteralString('$callSelectorString')); |
451 new jsAst.LiteralString('$callSelectorString /* tearOffInfo */')); | |
452 }, canTearOff); | 449 }, canTearOff); |
453 } | 450 } |
454 | 451 |
455 jsAst.Expression memberTypeExpression; | 452 jsAst.Expression memberTypeExpression; |
456 if (canTearOff || canBeReflected) { | 453 if (canTearOff || canBeReflected) { |
457 DartType memberType; | 454 DartType memberType; |
458 if (member.isGenerativeConstructorBody()) { | 455 if (member.isGenerativeConstructorBody()) { |
459 var body = member; | 456 var body = member; |
460 memberType = body.constructor.computeType(compiler); | 457 memberType = body.constructor.computeType(compiler); |
461 } else { | 458 } else { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 expressions.add(js.string(member.name)); | 502 expressions.add(js.string(member.name)); |
506 } | 503 } |
507 | 504 |
508 builder.addProperty(name, js.toExpression(expressions)); | 505 builder.addProperty(name, js.toExpression(expressions)); |
509 } | 506 } |
510 | 507 |
511 void addMemberField(VariableElement member, ClassBuilder builder) { | 508 void addMemberField(VariableElement member, ClassBuilder builder) { |
512 // For now, do nothing. | 509 // For now, do nothing. |
513 } | 510 } |
514 } | 511 } |
OLD | NEW |