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

Unified Diff: lib/compiler/implementation/compiler.dart

Issue 11264005: InvocationMirror implemented in dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Check JSInvocationMirror.invokeOn instead of InvocationMirror.invokeOn. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | lib/compiler/implementation/enqueue.dart » ('j') | lib/compiler/implementation/enqueue.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/compiler/implementation/compiler.dart
diff --git a/lib/compiler/implementation/compiler.dart b/lib/compiler/implementation/compiler.dart
index c327d7dafd60863ed63f269907da3e76f64e6469..9703b69719907f0cc06eb0dc5bf3597afae987a1 100644
--- a/lib/compiler/implementation/compiler.dart
+++ b/lib/compiler/implementation/compiler.dart
@@ -132,9 +132,11 @@ abstract class Compiler implements DiagnosticListener {
ClassElement nullClass;
ClassElement listClass;
ClassElement mapClass;
+ ClassElement jsInvocationMirrorClass;
Element assertMethod;
Element identicalFunction;
Element functionApplyMethod;
+ Element invokeOnMethod;
Element get currentElement => _currentElement;
withCurrentElement(Element element, f()) {
@@ -178,12 +180,15 @@ abstract class Compiler implements DiagnosticListener {
static const SourceString MAIN = const SourceString('main');
ahe 2012/10/29 12:14:05 How about adding a TODO that these should be selec
static const SourceString CALL_OPERATOR_NAME = const SourceString('call');
static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod');
+ static const int NO_SUCH_METHOD_ARG_COUNT = 1;
+ static const SourceString INVOKE_ON = const SourceString('invokeOn');
static const SourceString RUNTIME_TYPE = const SourceString('runtimeType');
static const SourceString START_ROOT_ISOLATE =
const SourceString('startRootIsolate');
bool enabledNoSuchMethod = false;
bool enabledRuntimeType = false;
bool enabledFunctionApply = false;
+ bool enabledInvokeOn = false;
Stopwatch progress;
@@ -325,6 +330,11 @@ abstract class Compiler implements DiagnosticListener {
Selector selector = new Selector.noSuchMethod();
enqueuer.resolution.registerInvocation(NO_SUCH_METHOD, selector);
enqueuer.codegen.registerInvocation(NO_SUCH_METHOD, selector);
+
+ Element createInvocationMirrorElement =
+ findHelper(const SourceString('createInvocationMirror'));
ahe 2012/10/29 12:14:05 This looks specific to the JS backend.
+ enqueuer.resolution.addToWorkList(createInvocationMirrorElement);
+ enqueuer.codegen.addToWorkList(createInvocationMirrorElement);
ahe 2012/10/29 12:14:05 This should only be added if it is really needed.
}
void enableIsolateSupport(LibraryElement element) {
@@ -376,6 +386,8 @@ abstract class Compiler implements DiagnosticListener {
functionClass = lookupSpecialClass(const SourceString('Function'));
listClass = lookupSpecialClass(const SourceString('List'));
mapClass = lookupSpecialClass(const SourceString('Map'));
+ jsInvocationMirrorClass =
+ lookupSpecialClass(const SourceString('JSInvocationMirror'));
ahe 2012/10/29 12:14:05 This looks specific to the JS backend.
closureClass = lookupSpecialClass(const SourceString('Closure'));
dynamicClass = lookupSpecialClass(const SourceString('Dynamic_'));
nullClass = lookupSpecialClass(const SourceString('Null'));
@@ -408,6 +420,9 @@ abstract class Compiler implements DiagnosticListener {
functionClass.ensureResolved(this);
functionApplyMethod =
functionClass.lookupLocalMember(const SourceString('apply'));
+ jsInvocationMirrorClass.ensureResolved(this);
+ invokeOnMethod = jsInvocationMirrorClass.lookupLocalMember(
+ const SourceString('invokeOn'));
ahe 2012/10/29 12:14:05 This looks specific to the JS backend.
}
void loadCoreImplLibrary() {
« 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