Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(337)

Side by Side Diff: pkg/dart2js_incremental/lib/library_updater.dart

Issue 882713008: Move computation of method flags into model. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698