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

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

Issue 11299220: Add @JSName annotation for native fields and methods. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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) 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 part of dart2js; 5 part of dart2js;
6 6
7 class EnqueueTask extends CompilerTask { 7 class EnqueueTask extends CompilerTask {
8 final Enqueuer codegen; 8 final Enqueuer codegen;
9 final Enqueuer resolution; 9 final Enqueuer resolution;
10 10
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 * Documentation wanted -- johnniwinther 164 * Documentation wanted -- johnniwinther
165 */ 165 */
166 void processInstantiatedClassMember(ClassElement cls, Element member) { 166 void processInstantiatedClassMember(ClassElement cls, Element member) {
167 assert(invariant(member, member.isDeclaration)); 167 assert(invariant(member, member.isDeclaration));
168 if (universe.generatedCode.containsKey(member)) return; 168 if (universe.generatedCode.containsKey(member)) return;
169 if (resolvedElements[member] != null) return; 169 if (resolvedElements[member] != null) return;
170 if (!member.isInstanceMember()) return; 170 if (!member.isInstanceMember()) return;
171 if (member.isField()) { 171 if (member.isField()) {
172 // Native fields need to go into instanceMembersByName as they are virtual 172 // Native fields need to go into instanceMembersByName as they are virtual
173 // instantiation points and escape points. 173 // instantiation points and escape points.
174 // Test the enclosing class, since the metadata has not been parsed yet.
174 if (!member.enclosingElement.isNative()) return; 175 if (!member.enclosingElement.isNative()) return;
175 } 176 }
176 177
177 String memberName = member.name.slowToString(); 178 String memberName = member.name.slowToString();
178 Link<Element> members = instanceMembersByName.putIfAbsent( 179 Link<Element> members = instanceMembersByName.putIfAbsent(
179 memberName, () => const Link<Element>()); 180 memberName, () => const Link<Element>());
180 instanceMembersByName[memberName] = members.prepend(member); 181 instanceMembersByName[memberName] = members.prepend(member);
181 182
182 if (member.kind == ElementKind.FUNCTION) { 183 if (member.kind == ElementKind.FUNCTION) {
183 if (member.name == Compiler.NO_SUCH_METHOD) { 184 if (member.name == Compiler.NO_SUCH_METHOD) {
(...skipping 19 matching lines...) Expand all
203 // the set contains any selector we have to assume that it matches. 204 // the set contains any selector we have to assume that it matches.
204 if (universe.hasInvocation(member, compiler)) { 205 if (universe.hasInvocation(member, compiler)) {
205 return addToWorkList(member); 206 return addToWorkList(member);
206 } 207 }
207 } else if (member.kind == ElementKind.SETTER) { 208 } else if (member.kind == ElementKind.SETTER) {
208 if (universe.hasInvokedSetter(member, compiler)) { 209 if (universe.hasInvokedSetter(member, compiler)) {
209 return addToWorkList(member); 210 return addToWorkList(member);
210 } 211 }
211 } else if (member.kind == ElementKind.FIELD && 212 } else if (member.kind == ElementKind.FIELD &&
212 member.enclosingElement.isNative()) { 213 member.enclosingElement.isNative()) {
214 nativeEnqueuer.registerField(member);
213 if (universe.hasInvokedGetter(member, compiler) || 215 if (universe.hasInvokedGetter(member, compiler) ||
214 universe.hasInvocation(member, compiler)) { 216 universe.hasInvocation(member, compiler)) {
215 nativeEnqueuer.registerFieldLoad(member); 217 nativeEnqueuer.registerFieldLoad(member);
216 } 218 }
217 if (universe.hasInvokedSetter(member, compiler)) { 219 if (universe.hasInvokedSetter(member, compiler)) {
218 nativeEnqueuer.registerFieldStore(member); 220 nativeEnqueuer.registerFieldStore(member);
219 } 221 }
220 } 222 }
221 } 223 }
222 224
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 402
401 String toString() => 'Enqueuer($name)'; 403 String toString() => 'Enqueuer($name)';
402 404
403 void logSummary(log(message)) { 405 void logSummary(log(message)) {
404 log(isResolutionQueue 406 log(isResolutionQueue
405 ? 'Resolved ${resolvedElements.length} elements.' 407 ? 'Resolved ${resolvedElements.length} elements.'
406 : 'Compiled ${universe.generatedCode.length} methods.'); 408 : 'Compiled ${universe.generatedCode.length} methods.');
407 nativeEnqueuer.logSummary(log); 409 nativeEnqueuer.logSummary(log);
408 } 410 }
409 } 411 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698