Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library dart2js_incremental.library_updater; | 5 library dart2js_incremental.library_updater; |
| 6 | 6 |
| 7 import 'dart:async' show | 7 import 'dart:async' show |
| 8 Future; | 8 Future; |
| 9 | 9 |
| 10 import 'dart:convert' show | 10 import 'dart:convert' show |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 60 | 60 |
| 61 import 'package:compiler/src/js_emitter/js_emitter.dart' show | 61 import 'package:compiler/src/js_emitter/js_emitter.dart' show |
| 62 ClassBuilder, | 62 ClassBuilder, |
| 63 ClassEmitter, | 63 ClassEmitter, |
| 64 CodeEmitterTask, | 64 CodeEmitterTask, |
| 65 ContainerBuilder, | 65 ContainerBuilder, |
| 66 MemberInfo, | 66 MemberInfo, |
| 67 computeMixinClass; | 67 computeMixinClass; |
| 68 | 68 |
| 69 import 'package:compiler/src/js_emitter/model.dart' show | 69 import 'package:compiler/src/js_emitter/model.dart' show |
| 70 Class; | 70 Class, |
| 71 Member; | |
| 71 import 'package:compiler/src/js_emitter/program_builder.dart' show | 72 import 'package:compiler/src/js_emitter/program_builder.dart' show |
| 72 ProgramBuilder; | 73 ProgramBuilder; |
| 73 | 74 |
| 74 import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' | 75 import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' |
| 75 as embeddedNames; | 76 as embeddedNames; |
| 76 | 77 |
| 77 import 'package:compiler/src/js_backend/js_backend.dart' show | 78 import 'package:compiler/src/js_backend/js_backend.dart' show |
| 78 JavaScriptBackend, | 79 JavaScriptBackend, |
| 79 Namer; | 80 Namer; |
| 80 | 81 |
| (...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 924 (new Function( | 925 (new Function( |
| 925 "$collectedClasses", "$desc", | 926 "$collectedClasses", "$desc", |
| 926 this.defineClass(#name, #computeFields) +"\n;return " + #name))( | 927 this.defineClass(#name, #computeFields) +"\n;return " + #name))( |
| 927 {#name: #descriptor})''', | 928 {#name: #descriptor})''', |
| 928 {'name': js.string(name), | 929 {'name': js.string(name), |
| 929 'computeFields': js.stringArray(computeFields(cls)), | 930 'computeFields': js.stringArray(computeFields(cls)), |
| 930 'descriptor': descriptor}); | 931 'descriptor': descriptor}); |
| 931 } | 932 } |
| 932 | 933 |
| 933 jsAst.Node computeMethodUpdateJs(Element element) { | 934 jsAst.Node computeMethodUpdateJs(Element element) { |
| 934 MemberInfo info = containerBuilder.analyzeMemberMethod(element); | 935 Member member = programBuilder.buildMethodForTry(element); |
| 935 if (info == null) { | 936 if (member == null) { |
| 936 compiler.internalError(element, '${element.runtimeType}'); | 937 compiler.internalError(element, '${element.runtimeType}'); |
| 937 } | 938 } |
| 938 ClassBuilder builder = new ClassBuilder(element, namer); | 939 ClassBuilder builder = new ClassBuilder(element, namer); |
| 939 containerBuilder.addMemberMethodFromInfo(info, builder); | 940 containerBuilder.addMemberMethod(member, builder); |
| 940 jsAst.Node partialDescriptor = | 941 jsAst.Node partialDescriptor = |
| 941 builder.toObjectInitializer(emitClassDescriptor: false); | 942 builder.toObjectInitializer(emitClassDescriptor: false); |
| 942 | 943 |
| 943 String name = info.name; | 944 String name = member.name; |
| 944 jsAst.Node function = info.code; | 945 jsAst.Node function = member.code; |
| 945 bool isStatic = !element.isInstanceMember; | 946 bool isStatic = !element.isInstanceMember; |
| 946 | 947 |
| 947 /// Either a global object (non-instance members) or a prototype (instance | 948 /// Either a global object (non-instance members) or a prototype (instance |
| 948 /// members). | 949 /// members). |
| 949 jsAst.Node holder; | 950 jsAst.Node holder; |
| 950 | 951 |
| 951 if (element.isInstanceMember) { | 952 if (element.isInstanceMember) { |
| 952 holder = emitter.prototypeAccess(element.enclosingClass); | 953 holder = emitter.prototypeAccess(element.enclosingClass); |
| 953 } else { | 954 } else { |
| 954 holder = js('#', namer.globalObjectFor(element)); | 955 holder = js('#', namer.globalObjectFor(element)); |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1457 | 1458 |
| 1458 JavaScriptBackend get backend => compiler.backend; | 1459 JavaScriptBackend get backend => compiler.backend; |
| 1459 | 1460 |
| 1460 Namer get namer => backend.namer; | 1461 Namer get namer => backend.namer; |
| 1461 | 1462 |
| 1462 CodeEmitterTask get emitter => backend.emitter; | 1463 CodeEmitterTask get emitter => backend.emitter; |
| 1463 | 1464 |
| 1464 ContainerBuilder get containerBuilder => emitter.oldEmitter.containerBuilder; | 1465 ContainerBuilder get containerBuilder => emitter.oldEmitter.containerBuilder; |
| 1465 | 1466 |
| 1466 EnqueueTask get enqueuer => compiler.enqueuer; | 1467 EnqueueTask get enqueuer => compiler.enqueuer; |
| 1468 | |
| 1469 ProgramBuilder get programBuilder { | |
|
floitsch
2015/01/28 16:10:39
I wouldn't do this. The calls to the programBuilde
herhut
2015/01/29 10:24:21
Done.
| |
| 1470 return new ProgramBuilder(compiler, namer, emitter); | |
| 1471 } | |
| 1467 } | 1472 } |
| 1468 | 1473 |
| 1469 class EmitterHelper extends JsFeatures { | 1474 class EmitterHelper extends JsFeatures { |
| 1470 final Compiler compiler; | 1475 final Compiler compiler; |
| 1471 | 1476 |
| 1472 EmitterHelper(this.compiler); | 1477 EmitterHelper(this.compiler); |
| 1473 | 1478 |
| 1474 ClassEmitter get classEmitter => backend.emitter.oldEmitter.classEmitter; | 1479 ClassEmitter get classEmitter => backend.emitter.oldEmitter.classEmitter; |
| 1475 | 1480 |
| 1476 List<String> computeFields(ClassElement classElement) { | 1481 List<String> computeFields(ClassElement classElement) { |
| 1477 Class cls = new ProgramBuilder(compiler, namer, emitter) | 1482 Class cls = programBuilder.buildClassWithFieldsForTry(classElement); |
| 1478 .buildClassWithFieldsForTry(classElement); | |
| 1479 // TODO(ahe): Rewrite for new emitter. | 1483 // TODO(ahe): Rewrite for new emitter. |
| 1480 ClassBuilder builder = new ClassBuilder(classElement, namer); | 1484 ClassBuilder builder = new ClassBuilder(classElement, namer); |
| 1481 classEmitter.emitFields(cls, builder); | 1485 classEmitter.emitFields(cls, builder); |
| 1482 return builder.fields; | 1486 return builder.fields; |
| 1483 } | 1487 } |
| 1484 } | 1488 } |
| 1485 | 1489 |
| 1486 // TODO(ahe): Remove this method. | 1490 // TODO(ahe): Remove this method. |
| 1487 NO_WARN(x) => x; | 1491 NO_WARN(x) => x; |
| OLD | NEW |