| 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 |