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

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

Issue 1212613009: dart2js: Implement frequency based naming. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Reserve reserved names :) Created 5 years, 6 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 | « pkg/compiler/lib/src/js_emitter/js_emitter.dart ('k') | pkg/compiler/lib/src/js_emitter/model.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_emitter/metadata_collector.dart
diff --git a/pkg/compiler/lib/src/js_emitter/metadata_collector.dart b/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
index 68ec03dcfc3492f195c7841654fd80f8ff3be139..8ffda2434c8a0571d7665342fcdd2e98754ea418 100644
--- a/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
+++ b/pkg/compiler/lib/src/js_emitter/metadata_collector.dart
@@ -10,7 +10,7 @@ part of dart2js.js_emitter;
/// ast for a program.
/// [value] is the actual position, once they have been finalized.
abstract class _MetadataEntry extends jsAst.DeferredNumber
- implements Comparable {
+ implements Comparable, jsAst.ReferenceCountedAstNode {
jsAst.Expression get entry;
int get value;
int get _rc;
@@ -18,7 +18,7 @@ abstract class _MetadataEntry extends jsAst.DeferredNumber
// Mark this entry as seen. On the first time this is seen, the visitor
// will be applied to the [entry] to also mark potential [_MetadataEntry]
// instances in the [entry] as seen.
- markSeen(jsAst.BaseVisitor visitor);
+ markSeen(jsAst.TokenCounter visitor);
}
class _BoundMetadataEntry extends _MetadataEntry {
@@ -107,7 +107,7 @@ class _MetadataList extends jsAst.DeferredExpression {
int get precedenceLevel => js_precedence.PRIMARY;
}
-class MetadataCollector implements TokenFinalizer {
+class MetadataCollector implements jsAst.TokenFinalizer {
final Compiler _compiler;
final Emitter _emitter;
@@ -232,7 +232,10 @@ class MetadataCollector implements TokenFinalizer {
}
_MetadataEntry _addGlobalMetadata(jsAst.Node node) {
- String printed = jsAst.prettyPrint(node, _compiler).getText();
+ String nameToKey(jsAst.Name name) => "${name.key}";
+ String printed = jsAst.prettyPrint(node, _compiler,
+ renamerForNames: nameToKey)
+ .getText();
return _globalMetadataMap.putIfAbsent(printed, () {
_BoundMetadataEntry result = new _BoundMetadataEntry(node);
if (_compiler.hasIncrementalSupport) {
@@ -298,12 +301,6 @@ class MetadataCollector implements TokenFinalizer {
}
@override
- void countTokensInAst(jsAst.Node ast) {
- TokenCounter visitor = new TokenCounter();
- visitor.countTokens(ast);
- }
-
- @override
void finalizeTokens() {
bool checkTokensInTypes(OutputUnit outputUnit, entries) {
UnBoundDebugger debugger = new UnBoundDebugger(outputUnit);
@@ -316,7 +313,7 @@ class MetadataCollector implements TokenFinalizer {
return true;
}
void countTokensInTypes(Iterable<_BoundMetadataEntry> entries) {
- TokenCounter counter = new TokenCounter();
+ jsAst.TokenCounter counter = new jsAst.TokenCounter();
entries.where((_BoundMetadataEntry e) => e._rc > 0)
.map((_BoundMetadataEntry e) => e.entry)
.forEach(counter.countTokens);
@@ -360,39 +357,6 @@ class MetadataCollector implements TokenFinalizer {
}
}
-/// Interface for ast nodes that encapsulate an ast that needs to be
-/// traversed when counting tokens.
-///
-/// TODO(herhut): Find a shared place once namer also uses tokens.
-abstract class AstContainer implements jsAst.Node {
- jsAst.Node get ast;
-}
-
-abstract class TokenFinalizer {
- void countTokensInAst(jsAst.Node ast);
- void finalizeTokens();
-}
-
-class TokenCounter extends jsAst.BaseVisitor {
- @override
- visitNode(jsAst.Node node) {
- if (node is AstContainer) {
- node.ast.accept(this);
- } else {
- super.visitNode(node);
- }
- }
-
- @override
- visitDeferredNumber(jsAst.DeferredNumber token) {
- if (token is _MetadataEntry) {
- token.markSeen(this);
- }
- }
-
- void countTokens(jsAst.Node node) => node.accept(this);
-}
-
class UnBoundDebugger extends jsAst.BaseVisitor {
OutputUnit outputUnit;
bool _foundUnboundToken = false;
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/js_emitter.dart ('k') | pkg/compiler/lib/src/js_emitter/model.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698