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

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

Issue 11093015: Implement Function.apply in dart2js. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 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) 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 5
6 /** 6 /**
7 * If true, print a warning for each method that was resolved, but not 7 * If true, print a warning for each method that was resolved, but not
8 * compiled. 8 * compiled.
9 */ 9 */
10 const bool REPORT_EXCESS_RESOLUTION = false; 10 const bool REPORT_EXCESS_RESOLUTION = false;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 ClassElement boolClass; 124 ClassElement boolClass;
125 ClassElement numClass; 125 ClassElement numClass;
126 ClassElement intClass; 126 ClassElement intClass;
127 ClassElement doubleClass; 127 ClassElement doubleClass;
128 ClassElement stringClass; 128 ClassElement stringClass;
129 ClassElement functionClass; 129 ClassElement functionClass;
130 ClassElement nullClass; 130 ClassElement nullClass;
131 ClassElement listClass; 131 ClassElement listClass;
132 Element assertMethod; 132 Element assertMethod;
133 Element identicalFunction; 133 Element identicalFunction;
134 Element functionApplyMethod;
134 135
135 Element get currentElement => _currentElement; 136 Element get currentElement => _currentElement;
136 withCurrentElement(Element element, f()) { 137 withCurrentElement(Element element, f()) {
137 Element old = currentElement; 138 Element old = currentElement;
138 _currentElement = element; 139 _currentElement = element;
139 try { 140 try {
140 return f(); 141 return f();
141 } on CompilerCancelledException catch (ex) { 142 } on CompilerCancelledException catch (ex) {
142 throw; 143 throw;
143 } on StackOverflowException catch (ex) { 144 } on StackOverflowException catch (ex) {
(...skipping 27 matching lines...) Expand all
171 EnqueueTask enqueuer; 172 EnqueueTask enqueuer;
172 173
173 static const SourceString MAIN = const SourceString('main'); 174 static const SourceString MAIN = const SourceString('main');
174 static const SourceString CALL_OPERATOR_NAME = const SourceString('call'); 175 static const SourceString CALL_OPERATOR_NAME = const SourceString('call');
175 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod'); 176 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod');
176 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType'); 177 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType');
177 static const SourceString START_ROOT_ISOLATE = 178 static const SourceString START_ROOT_ISOLATE =
178 const SourceString('startRootIsolate'); 179 const SourceString('startRootIsolate');
179 bool enabledNoSuchMethod = false; 180 bool enabledNoSuchMethod = false;
180 bool enabledRuntimeType = false; 181 bool enabledRuntimeType = false;
182 bool enabledFunctionApply = false;
181 183
182 Stopwatch progress; 184 Stopwatch progress;
183 185
184 static const int PHASE_SCANNING = 0; 186 static const int PHASE_SCANNING = 0;
185 static const int PHASE_RESOLVING = 1; 187 static const int PHASE_RESOLVING = 1;
186 static const int PHASE_COMPILING = 2; 188 static const int PHASE_COMPILING = 2;
187 int phase; 189 int phase;
188 190
189 bool compilationFailed = false; 191 bool compilationFailed = false;
190 192
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 importHelperLibrary(coreImplLibrary); 379 importHelperLibrary(coreImplLibrary);
378 importHelperLibrary(interceptorsLibrary); 380 importHelperLibrary(interceptorsLibrary);
379 381
380 addForeignFunctions(jsHelperLibrary); 382 addForeignFunctions(jsHelperLibrary);
381 addForeignFunctions(interceptorsLibrary); 383 addForeignFunctions(interceptorsLibrary);
382 384
383 assertMethod = jsHelperLibrary.find(const SourceString('assert')); 385 assertMethod = jsHelperLibrary.find(const SourceString('assert'));
384 identicalFunction = coreLibrary.find(const SourceString('identical')); 386 identicalFunction = coreLibrary.find(const SourceString('identical'));
385 387
386 initializeSpecialClasses(); 388 initializeSpecialClasses();
389
390 functionClass.ensureResolved(this);
391 functionApplyMethod =
392 functionClass.lookupLocalMember(const SourceString('apply'));
387 } 393 }
388 394
389 void loadCoreImplLibrary() { 395 void loadCoreImplLibrary() {
390 Uri coreImplUri = new Uri.fromComponents(scheme: 'dart', path: 'coreimpl'); 396 Uri coreImplUri = new Uri.fromComponents(scheme: 'dart', path: 'coreimpl');
391 coreImplLibrary = scanner.loadLibrary(coreImplUri, null, coreImplUri); 397 coreImplLibrary = scanner.loadLibrary(coreImplUri, null, coreImplUri);
392 } 398 }
393 399
394 void importHelperLibrary(LibraryElement library) { 400 void importHelperLibrary(LibraryElement library) {
395 if (jsHelperLibrary !== null) { 401 if (jsHelperLibrary !== null) {
396 scanner.importLibrary(library, jsHelperLibrary, null); 402 scanner.importLibrary(library, jsHelperLibrary, null);
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 * information in the generated error message. 856 * information in the generated error message.
851 */ 857 */
852 bool invariant(Spannable spannable, var condition, {String message: null}) { 858 bool invariant(Spannable spannable, var condition, {String message: null}) {
853 // TODO(johnniwinther): Use [spannable] and [message] to provide better 859 // TODO(johnniwinther): Use [spannable] and [message] to provide better
854 // information on assertion errors. 860 // information on assertion errors.
855 if (condition is Function){ 861 if (condition is Function){
856 condition = condition(); 862 condition = condition();
857 } 863 }
858 return spannable != null && condition; 864 return spannable != null && condition;
859 } 865 }
OLDNEW
« no previous file with comments | « no previous file | lib/compiler/implementation/enqueue.dart » ('j') | lib/compiler/implementation/enqueue.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698