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

Side by Side Diff: lib/compiler/implementation/enqueue.dart

Issue 10537118: Reapply "Collect field getters and setters in the universe"" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Removed un-needed check Created 8 years, 6 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
« no previous file with comments | « lib/compiler/implementation/emitter.dart ('k') | lib/compiler/implementation/ssa/codegen.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 class EnqueueTask extends CompilerTask { 5 class EnqueueTask extends CompilerTask {
6 final Enqueuer codegen; 6 final Enqueuer codegen;
7 final Enqueuer resolution; 7 final Enqueuer resolution;
8 8
9 String get name() => 'Enqueue'; 9 String get name() => 'Enqueue';
10 10
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 if (member.kind == ElementKind.FUNCTION) { 103 if (member.kind == ElementKind.FUNCTION) {
104 if (member.name == Compiler.NO_SUCH_METHOD) { 104 if (member.name == Compiler.NO_SUCH_METHOD) {
105 compiler.enableNoSuchMethod(member); 105 compiler.enableNoSuchMethod(member);
106 } 106 }
107 if (universe.hasInvocation(member, compiler)) { 107 if (universe.hasInvocation(member, compiler)) {
108 return addToWorkList(member); 108 return addToWorkList(member);
109 } 109 }
110 // If there is a property access with the same name as a method we 110 // If there is a property access with the same name as a method we
111 // need to emit the method. 111 // need to emit the method.
112 if (universe.hasGetter(member, compiler)) { 112 if (universe.hasInvokedGetter(member, compiler)) {
113 // We will emit a closure, so make sure the closure class is 113 // We will emit a closure, so make sure the closure class is
114 // generated. 114 // generated.
115 compiler.closureClass.ensureResolved(compiler); 115 compiler.closureClass.ensureResolved(compiler);
116 registerInstantiatedClass(compiler.closureClass); 116 registerInstantiatedClass(compiler.closureClass);
117 return addToWorkList(member); 117 return addToWorkList(member);
118 } 118 }
119 } else if (member.kind == ElementKind.GETTER) { 119 } else if (member.kind == ElementKind.GETTER) {
120 if (universe.hasGetter(member, compiler)) { 120 if (universe.hasInvokedGetter(member, compiler)) {
121 return addToWorkList(member); 121 return addToWorkList(member);
122 } 122 }
123 // We don't know what selectors the returned closure accepts. If 123 // We don't know what selectors the returned closure accepts. If
124 // the set contains any selector we have to assume that it matches. 124 // the set contains any selector we have to assume that it matches.
125 if (universe.hasInvocation(member, compiler)) { 125 if (universe.hasInvocation(member, compiler)) {
126 return addToWorkList(member); 126 return addToWorkList(member);
127 } 127 }
128 } else if (member.kind === ElementKind.SETTER) { 128 } else if (member.kind === ElementKind.SETTER) {
129 if (universe.hasSetter(member, compiler)) { 129 if (universe.hasInvokedSetter(member, compiler)) {
130 return addToWorkList(member); 130 return addToWorkList(member);
131 } 131 }
132 } 132 }
133 } 133 }
134 134
135 void onRegisterInstantiatedClass(ClassElement cls) { 135 void onRegisterInstantiatedClass(ClassElement cls) {
136 task.measure(() { 136 task.measure(() {
137 while (cls !== null) { 137 while (cls !== null) {
138 if (seenClasses.contains(cls)) return; 138 if (seenClasses.contains(cls)) return;
139 seenClasses.add(cls); 139 seenClasses.add(cls);
(...skipping 16 matching lines...) Expand all
156 handleUnseenSelector(name, selector); 156 handleUnseenSelector(name, selector);
157 } 157 }
158 } 158 }
159 159
160 void registerInvocation(SourceString methodName, Selector selector) { 160 void registerInvocation(SourceString methodName, Selector selector) {
161 task.measure(() { 161 task.measure(() {
162 registerNewSelector(methodName, selector, universe.invokedNames); 162 registerNewSelector(methodName, selector, universe.invokedNames);
163 }); 163 });
164 } 164 }
165 165
166 void registerGetter(SourceString getterName, Selector selector) { 166 void registerInvokedGetter(SourceString getterName, Selector selector) {
167 task.measure(() { 167 task.measure(() {
168 registerNewSelector(getterName, selector, universe.invokedGetters); 168 registerNewSelector(getterName, selector, universe.invokedGetters);
169 }); 169 });
170 } 170 }
171 171
172 void registerSetter(SourceString setterName, Selector selector) { 172 void registerInvokedSetter(SourceString setterName, Selector selector) {
173 task.measure(() { 173 task.measure(() {
174 registerNewSelector(setterName, selector, universe.invokedSetters); 174 registerNewSelector(setterName, selector, universe.invokedSetters);
175 }); 175 });
176 } 176 }
177 177
178 processInstanceMembers(SourceString n, bool f(Element e)) { 178 processInstanceMembers(SourceString n, bool f(Element e)) {
179 String memberName = n.slowToString(); 179 String memberName = n.slowToString();
180 Link<Element> members = instanceMembersByName[memberName]; 180 Link<Element> members = instanceMembersByName[memberName];
181 if (members !== null) { 181 if (members !== null) {
182 LinkBuilder<Element> remaining = new LinkBuilder<Element>(); 182 LinkBuilder<Element> remaining = new LinkBuilder<Element>();
(...skipping 26 matching lines...) Expand all
209 void registerDynamicInvocation(SourceString methodName, Selector selector) { 209 void registerDynamicInvocation(SourceString methodName, Selector selector) {
210 assert(selector !== null); 210 assert(selector !== null);
211 registerInvocation(methodName, selector); 211 registerInvocation(methodName, selector);
212 } 212 }
213 213
214 void registerDynamicInvocationOf(Element element) { 214 void registerDynamicInvocationOf(Element element) {
215 addToWorkList(element); 215 addToWorkList(element);
216 } 216 }
217 217
218 void registerDynamicGetter(SourceString methodName, Selector selector) { 218 void registerDynamicGetter(SourceString methodName, Selector selector) {
219 registerGetter(methodName, selector); 219 registerInvokedGetter(methodName, selector);
220 } 220 }
221 221
222 void registerDynamicSetter(SourceString methodName, Selector selector) { 222 void registerDynamicSetter(SourceString methodName, Selector selector) {
223 registerSetter(methodName, selector); 223 registerInvokedSetter(methodName, selector);
224 }
225
226 void registerFieldGetter(SourceString getterName, Type type) {
227 task.measure(() {
228 registerNewSelector(getterName,
229 new TypedSelector(type, Selector.GETTER),
230 universe.fieldGetters);
231 });
232 }
233
234 void registerFieldSetter(SourceString setterName, Type type) {
235 task.measure(() {
236 registerNewSelector(setterName,
237 new TypedSelector(type, Selector.SETTER),
238 universe.fieldSetters);
239 });
224 } 240 }
225 241
226 // TODO(ngeoffray): This should get a type. 242 // TODO(ngeoffray): This should get a type.
227 void registerIsCheck(Element element) { 243 void registerIsCheck(Element element) {
228 universe.isChecks.add(element); 244 universe.isChecks.add(element);
229 } 245 }
230 } 246 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/emitter.dart ('k') | lib/compiler/implementation/ssa/codegen.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698