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

Unified Diff: pkg/compiler/lib/src/compiler.dart

Issue 1192103002: Support serialization of the compiler backbone. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Handle (bypass) external const constructors. Created 5 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 | pkg/compiler/lib/src/constants/constructors.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/compiler.dart
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index d716c3e4eaf0e593ddf23b28f53a1cc77a066dd8..8360a5dbe422d16b8ca813293b2a4bd503ae4ae4 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -26,8 +26,6 @@ abstract class WorkItem {
*/
final AstElement element;
- TreeElements get resolutionTree;
-
WorkItem(this.element, this.compilationContext) {
assert(invariant(element, element.isDeclaration));
}
@@ -37,7 +35,7 @@ abstract class WorkItem {
/// [WorkItem] used exclusively by the [ResolutionEnqueuer].
class ResolutionWorkItem extends WorkItem {
- TreeElements resolutionTree;
+ bool _isAnalyzed = false;
ResolutionWorkItem(AstElement element,
ItemCompilationContext compilationContext)
@@ -45,11 +43,11 @@ class ResolutionWorkItem extends WorkItem {
WorldImpact run(Compiler compiler, ResolutionEnqueuer world) {
WorldImpact impact = compiler.analyze(this, world);
- resolutionTree = element.resolvedAst.elements;
+ _isAnalyzed = true;
return impact;
}
- bool isAnalyzed() => resolutionTree != null;
+ bool get isAnalyzed => _isAnalyzed;
}
// TODO(johnniwinther): Split this class into interface and implementation.
@@ -951,6 +949,7 @@ abstract class Compiler implements DiagnosticListener {
ParserTask parser;
PatchParserTask patchParser;
LibraryLoaderTask libraryLoader;
+ SerializationTask serialization;
ResolverTask resolver;
closureMapping.ClosureTask closureToClassMapper;
TypeCheckerTask checker;
@@ -1116,6 +1115,7 @@ abstract class Compiler implements DiagnosticListener {
tasks = [
libraryLoader = new LibraryLoaderTask(this),
+ serialization = new SerializationTask(this),
scanner = new ScannerTask(this),
dietParser = new DietParserTask(this),
parser = new ParserTask(this),
@@ -1816,7 +1816,7 @@ abstract class Compiler implements DiagnosticListener {
WorldImpact analyze(ResolutionWorkItem work, ResolutionEnqueuer world) {
assert(invariant(work.element, identical(world, enqueuer.resolution)));
- assert(invariant(work.element, !work.isAnalyzed(),
+ assert(invariant(work.element, !work.isAnalyzed,
message: 'Element ${work.element} has already been analyzed'));
if (shouldPrintProgress) {
// TODO(ahe): Add structured diagnostics to the compiler API and
@@ -2240,6 +2240,20 @@ class SourceSpan implements Spannable {
return f(beginOffset, endOffset);
}
+ int get hashCode {
+ return 13 * uri.hashCode +
+ 17 * begin.hashCode +
+ 19 * end.hashCode;
+ }
+
+ bool operator ==(other) {
+ if (identical(this, other)) return true;
+ if (other is! SourceSpan) return false;
+ return uri == other.uri &&
+ begin == other.begin &&
+ end == other.end;
+ }
+
String toString() => 'SourceSpan($uri, $begin, $end)';
}
@@ -2414,22 +2428,22 @@ class AnyLocation implements CodeLocation {
class _CompilerCoreTypes implements CoreTypes {
final Compiler compiler;
- ClassElementX objectClass;
- ClassElementX boolClass;
- ClassElementX numClass;
- ClassElementX intClass;
- ClassElementX doubleClass;
- ClassElementX stringClass;
- ClassElementX functionClass;
- ClassElementX nullClass;
- ClassElementX listClass;
- ClassElementX typeClass;
- ClassElementX mapClass;
- ClassElementX symbolClass;
- ClassElementX stackTraceClass;
- ClassElementX futureClass;
- ClassElementX iterableClass;
- ClassElementX streamClass;
+ ClassElement objectClass;
+ ClassElement boolClass;
+ ClassElement numClass;
+ ClassElement intClass;
+ ClassElement doubleClass;
+ ClassElement stringClass;
+ ClassElement functionClass;
+ ClassElement nullClass;
+ ClassElement listClass;
+ ClassElement typeClass;
+ ClassElement mapClass;
+ ClassElement symbolClass;
+ ClassElement stackTraceClass;
+ ClassElement futureClass;
+ ClassElement iterableClass;
+ ClassElement streamClass;
_CompilerCoreTypes(this.compiler);
« no previous file with comments | « no previous file | pkg/compiler/lib/src/constants/constructors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698