| 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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 memberType = body.constructor.type; | 465 memberType = body.constructor.type; |
| 466 } else { | 466 } else { |
| 467 memberType = member.type; | 467 memberType = member.type; |
| 468 } | 468 } |
| 469 if (memberType.containsTypeVariables) { | 469 if (memberType.containsTypeVariables) { |
| 470 jsAst.Expression thisAccess = js(r'this.$receiver'); | 470 jsAst.Expression thisAccess = js(r'this.$receiver'); |
| 471 memberTypeExpression = | 471 memberTypeExpression = |
| 472 backend.rti.getSignatureEncoding(memberType, thisAccess); | 472 backend.rti.getSignatureEncoding(memberType, thisAccess); |
| 473 } else { | 473 } else { |
| 474 memberTypeExpression = | 474 memberTypeExpression = |
| 475 js.number(emitter.metadataEmitter.reifyType(memberType)); | 475 js.number(task.metadataEmitter.reifyType(memberType)); |
| 476 } | 476 } |
| 477 } else { | 477 } else { |
| 478 memberTypeExpression = js('null'); | 478 memberTypeExpression = js('null'); |
| 479 } | 479 } |
| 480 | 480 |
| 481 expressions | 481 expressions |
| 482 ..addAll(tearOffInfo) | 482 ..addAll(tearOffInfo) |
| 483 ..add((tearOffName == null || member.isAccessor) | 483 ..add((tearOffName == null || member.isAccessor) |
| 484 ? js("null") : js.string(tearOffName)) | 484 ? js("null") : js.string(tearOffName)) |
| 485 ..add(js.number(requiredParameterCount)) | 485 ..add(js.number(requiredParameterCount)) |
| 486 ..add(js.number(optionalParameterCount)) | 486 ..add(js.number(optionalParameterCount)) |
| 487 ..add(memberTypeExpression) | 487 ..add(memberTypeExpression) |
| 488 ..addAll(emitter.metadataEmitter | 488 ..addAll(task.metadataEmitter |
| 489 .reifyDefaultArguments(member).map(js.number)); | 489 .reifyDefaultArguments(member).map(js.number)); |
| 490 | 490 |
| 491 if (canBeReflected || canBeApplied) { | 491 if (canBeReflected || canBeApplied) { |
| 492 parameters.forEachParameter((Element parameter) { | 492 parameters.forEachParameter((Element parameter) { |
| 493 expressions.add( | 493 expressions.add( |
| 494 js.number(emitter.metadataEmitter.reifyName(parameter.name))); | 494 js.number(task.metadataEmitter.reifyName(parameter.name))); |
| 495 if (backend.mustRetainMetadata) { | 495 if (backend.mustRetainMetadata) { |
| 496 Iterable<int> metadataIndices = | 496 Iterable<int> metadataIndices = |
| 497 parameter.metadata.map((MetadataAnnotation annotation) { | 497 parameter.metadata.map((MetadataAnnotation annotation) { |
| 498 ConstantValue constant = | 498 ConstantValue constant = |
| 499 backend.constants.getConstantForMetadata(annotation).value; | 499 backend.constants.getConstantForMetadata(annotation).value; |
| 500 backend.constants.addCompileTimeConstantForEmission(constant); | 500 backend.constants.addCompileTimeConstantForEmission(constant); |
| 501 return emitter.metadataEmitter.reifyMetadata(annotation); | 501 return task.metadataEmitter.reifyMetadata(annotation); |
| 502 }); | 502 }); |
| 503 expressions.add(new jsAst.ArrayInitializer( | 503 expressions.add(new jsAst.ArrayInitializer( |
| 504 metadataIndices.map(js.number).toList())); | 504 metadataIndices.map(js.number).toList())); |
| 505 } | 505 } |
| 506 }); | 506 }); |
| 507 } | 507 } |
| 508 if (canBeReflected) { | 508 if (canBeReflected) { |
| 509 jsAst.LiteralString reflectionName; | 509 jsAst.LiteralString reflectionName; |
| 510 if (member.isConstructor) { | 510 if (member.isConstructor) { |
| 511 String reflectionNameString = emitter.getReflectionName(member, name); | 511 String reflectionNameString = emitter.getReflectionName(member, name); |
| 512 reflectionName = | 512 reflectionName = |
| 513 new jsAst.LiteralString( | 513 new jsAst.LiteralString( |
| 514 '"new ${Elements.reconstructConstructorName(member)}"'); | 514 '"new ${Elements.reconstructConstructorName(member)}"'); |
| 515 } else { | 515 } else { |
| 516 reflectionName = | 516 reflectionName = |
| 517 js.string(namer.privateName(member.library, member.name)); | 517 js.string(namer.privateName(member.library, member.name)); |
| 518 } | 518 } |
| 519 expressions | 519 expressions |
| 520 ..add(reflectionName) | 520 ..add(reflectionName) |
| 521 ..addAll(emitter.metadataEmitter | 521 ..addAll(task.metadataEmitter.computeMetadata(member).map(js.number)); |
| 522 .computeMetadata(member).map(js.number)); | |
| 523 } else if (isClosure && canBeApplied) { | 522 } else if (isClosure && canBeApplied) { |
| 524 expressions.add(js.string(namer.privateName(member.library, | 523 expressions.add(js.string(namer.privateName(member.library, |
| 525 member.name))); | 524 member.name))); |
| 526 } | 525 } |
| 527 | 526 |
| 528 jsAst.ArrayInitializer arrayInit = | 527 jsAst.ArrayInitializer arrayInit = |
| 529 new jsAst.ArrayInitializer(expressions.toList()); | 528 new jsAst.ArrayInitializer(expressions.toList()); |
| 530 compiler.dumpInfoTask.registerElementAst(member, | 529 compiler.dumpInfoTask.registerElementAst(member, |
| 531 builder.addProperty(name, arrayInit)); | 530 builder.addProperty(name, arrayInit)); |
| 532 } | 531 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 assert(needsStubs != null); | 580 assert(needsStubs != null); |
| 582 assert(canTearOff != null); | 581 assert(canTearOff != null); |
| 583 assert(isClosure != null); | 582 assert(isClosure != null); |
| 584 assert(tearOffName != null || !canTearOff); | 583 assert(tearOffName != null || !canTearOff); |
| 585 assert(canBeReflected != null); | 584 assert(canBeReflected != null); |
| 586 assert(canBeApplied != null); | 585 assert(canBeApplied != null); |
| 587 assert(hasSuperAlias != null); | 586 assert(hasSuperAlias != null); |
| 588 assert(needStructuredInfo != null); | 587 assert(needStructuredInfo != null); |
| 589 } | 588 } |
| 590 } | 589 } |
| OLD | NEW |