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

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

Issue 10867011: Deal with the JS helper separately from the 'native' keyword. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 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 | « no previous file | lib/compiler/implementation/leg.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 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 final bool REPORT_EXCESS_RESOLUTION = false; 10 final bool REPORT_EXCESS_RESOLUTION = false;
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 library.addToScope(new ForeignElement( 518 library.addToScope(new ForeignElement(
519 const SourceString('JS_HAS_EQUALS'), library), this); 519 const SourceString('JS_HAS_EQUALS'), library), this);
520 library.addToScope(new ForeignElement( 520 library.addToScope(new ForeignElement(
521 const SourceString('JS_CURRENT_ISOLATE'), library), this); 521 const SourceString('JS_CURRENT_ISOLATE'), library), this);
522 library.addToScope(new ForeignElement( 522 library.addToScope(new ForeignElement(
523 const SourceString('JS_CALL_IN_ISOLATE'), library), this); 523 const SourceString('JS_CALL_IN_ISOLATE'), library), this);
524 library.addToScope(new ForeignElement( 524 library.addToScope(new ForeignElement(
525 const SourceString('DART_CLOSURE_TO_JS'), library), this); 525 const SourceString('DART_CLOSURE_TO_JS'), library), this);
526 } 526 }
527 527
528 /** Enable the 'JS' helper for a library if needed. */
529 void maybeEnableJSHelper(library) {
530 String libraryName = library.uri.toString();
531 if (library.entryCompilationUnit.script.name.contains(
532 'dart/tests/compiler/dart2js_native')
533 || libraryName == 'dart:isolate'
534 || libraryName == 'dart:math'
535 || libraryName == 'dart:html') {
536 library.addToScope(findHelper(const SourceString('JS')), this);
537 if (jsIndexingBehaviorInterface !== null) {
538 library.addToScope(jsIndexingBehaviorInterface, this);
539 }
540 }
541 }
542
528 void runCompiler(Uri uri) { 543 void runCompiler(Uri uri) {
529 scanBuiltinLibraries(); 544 scanBuiltinLibraries();
530 mainApp = scanner.loadLibrary(uri, null, uri); 545 mainApp = scanner.loadLibrary(uri, null, uri);
546 libraries.forEach((_, library) {
547 maybeEnableJSHelper(library);
548 });
531 final Element main = mainApp.find(MAIN); 549 final Element main = mainApp.find(MAIN);
532 if (main === null) { 550 if (main === null) {
533 reportFatalError('Could not find $MAIN', mainApp); 551 reportFatalError('Could not find $MAIN', mainApp);
534 } else { 552 } else {
535 if (!main.isFunction()) reportFatalError('main is not a function', main); 553 if (!main.isFunction()) reportFatalError('main is not a function', main);
536 FunctionElement mainMethod = main; 554 FunctionElement mainMethod = main;
537 FunctionSignature parameters = mainMethod.computeSignature(this); 555 FunctionSignature parameters = mainMethod.computeSignature(this);
538 parameters.forEachParameter((Element parameter) { 556 parameters.forEachParameter((Element parameter) {
539 reportFatalError('main cannot have parameters', parameter); 557 reportFatalError('main cannot have parameters', parameter);
540 }); 558 });
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 final endOffset = end.charOffset + end.slowCharCount; 917 final endOffset = end.charOffset + end.slowCharCount;
900 918
901 // [begin] and [end] might be the same for the same empty token. This 919 // [begin] and [end] might be the same for the same empty token. This
902 // happens for instance when scanning '$$'. 920 // happens for instance when scanning '$$'.
903 assert(endOffset >= beginOffset); 921 assert(endOffset >= beginOffset);
904 return f(beginOffset, endOffset); 922 return f(beginOffset, endOffset);
905 } 923 }
906 924
907 String toString() => 'SourceSpan($uri, $begin, $end)'; 925 String toString() => 'SourceSpan($uri, $begin, $end)';
908 } 926 }
OLDNEW
« no previous file with comments | « no previous file | lib/compiler/implementation/leg.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698