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

Unified Diff: lib/mirrors/mirrors.dart

Issue 10700149: Some small changes to make the vm dart:mirrors somewhat closer to the (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 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 | runtime/lib/mirrors.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/mirrors/mirrors.dart
===================================================================
--- lib/mirrors/mirrors.dart (revision 9527)
+++ lib/mirrors/mirrors.dart (working copy)
@@ -19,37 +19,69 @@
// TODO(turnidge): Finish implementing this api.
/**
- * Returns an [IsolateMirror] for the current isolate.
+ * A [MirrorSystem] is the main interface used to reflect on a set of
+ * associated libraries.
+ *
+ * At runtime each running isolate has a distinct [MirrorSystem].
+ *
+ * It is also possible to have a [MirrorSystem] which represents a set
+ * of libraries which are not running -- perhaps at compile-time. In
+ * this case, all available reflective functionality would be
+ * supported, but runtime functionality (such as invoking a function
+ * or inspecting the contents of a variable) would fail dynamically.
*/
-IsolateMirror currentIsolateMirror() {
- return _Mirrors.currentIsolateMirror();
+interface MirrorSystem {
+ /**
+ * A mirror on the root library of the mirror system.
+ */
+ final LibraryMirror rootLibrary;
+
+ /**
+ * An immutable map from from library names to mirrors for all
+ * libraries known to this mirror system.
+ */
+ Map<String, LibraryMirror> libraries();
+
+ /**
+ * A mirror on the isolate associated with this [MirrorSystem].
+ * This may be null if this mirror system is not running.
+ */
+ IsolateMirror isolate;
+
+ /**
+ * Returns an [InstanceMirror] for some Dart language object.
+ *
+ * This only works if this mirror system is associated with the
+ * current running isolate.
+ */
+ InstanceMirror mirrorOf(Object reflectee);
}
/**
- * Returns an [InstanceMirror] for some Dart language object.
+ * Returns a [MirrorSystem] for the current isolate.
*/
-InstanceMirror mirrorOf(Object reflectee) {
- return _Mirrors.mirrorOf(reflectee);
+MirrorSystem currentMirrorSystem() {
+ return _Mirrors.currentMirrorSystem();
}
/**
- * Creates an [IsolateMirror] on the isolate which is listening on
+ * Creates a [MirrorSystem] for the isolate which is listening on
* the [SendPort].
*/
-Future<IsolateMirror> isolateMirrorOf(SendPort port) {
- return _Mirrors.isolateMirrorOf(port);
+Future<MirrorSystem> mirrorSystemOf(SendPort port) {
+ return _Mirrors.mirrorSystemOf(port);
}
/**
* A [Mirror] reflects some Dart language entity.
*
- * Every [Mirror] originates from some [IsolateMirror].
+ * Every [Mirror] originates from some [MirrorSystem].
*/
interface Mirror {
/**
- * A mirror on the originating isolate for this [Mirror].
+ * The originating [MirrorSystem] for this mirror.
*/
- final IsolateMirror isolate;
+ final MirrorSystem mirrors;
}
/**
@@ -62,15 +94,9 @@
final String debugName;
/**
- * A mirror on the root library of the reflectee.
+ * Does this mirror reflect the currently running isolate?
*/
- final LibraryMirror rootLibrary;
-
- /**
- * An immutable map from from library names to mirrors for all
- * libraries loaded in the reflectee.
- */
- Map<String, LibraryMirror> libraries();
+ final bool isCurrent;
}
@@ -128,20 +154,26 @@
}
/**
+ * A [TypeMirror] reflects a Dart language class, interface, typedef
+ * or type variable.
+ */
+interface TypeMirror extends Mirror {
+ /**
+ * The library in which this interface is declared.
+ */
+ final LibraryMirror library;
+}
+
+/**
* An [InterfaceMirror] reflects a Dart language class or interface.
*/
-interface InterfaceMirror extends ObjectMirror {
+interface InterfaceMirror extends TypeMirror, ObjectMirror {
/**
* The name of this interface.
*/
final String simpleName;
/**
- * The library in which this interface is declared.
- */
- final LibraryMirror library;
-
- /**
* Does this mirror represent a class?
*/
final bool isClass;
« no previous file with comments | « no previous file | runtime/lib/mirrors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698