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

Unified Diff: frog/gen.dart

Issue 9110027: Some cleanups to Frog to avoid looking up its builtin types too much (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: removed dead files Created 8 years, 11 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 | « frog/element.dart ('k') | frog/library.dart » ('j') | frog/member.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: frog/gen.dart
diff --git a/frog/gen.dart b/frog/gen.dart
index b0d59ba828d9838dc73126fc225cffe76fcb0703..a255161c5e4444211ed3ca51a955f70baf87c3e2 100644
--- a/frog/gen.dart
+++ b/frog/gen.dart
@@ -184,7 +184,7 @@ class WorldGenerator {
// TODO(jmesserly): we can't accurately track if DOM types are
// created or not, so we need to prepare to handle them.
// This should be fixed by tightening up the return types in DOM.
- if ((type.isUsed || type.library == world.dom
+ if ((type.isUsed || type.library.isDom
|| type.isHiddenNativeType) && type.isClass) {
writeType(type);
@@ -240,8 +240,8 @@ class WorldGenerator {
// TODO(jmesserly): it'd be nice not to duplicate this code, and instead
// be able to refer to the JS function.
body = world.objectType.varStubs[checkName].body;
- } else if (onType.name == 'StringImplementation' ||
- onType.name == 'NumImplementation') {
+ } else if (onType == world.stringImplType
+ || onType == world.numImplType) {
body = 'return ${onType.nativeType.name}(this)';
}
writer.writeln(_prototypeOf(onType, checkName) + ' = function(){$body};');
@@ -556,8 +556,6 @@ function $inheritsMembers(child, parent) {
if (typesWithDynamicDispatch == null) return;
writer.comment('// ${typesWithDynamicDispatch.length} dynamic types.');
- typeTag(type) => type.definition.nativeType.name;
-
// Build a pre-order traversal over all the types and their subtypes.
var seen = new Set();
var types = [];
@@ -600,10 +598,10 @@ function $inheritsMembers(child, parent) {
makeExpression(type) {
var expressions = []; // expression fragments for this set of type keys.
- var subtags = [typeTag(type)]; // TODO: Remove if type is abstract.
+ var subtags = [type.nativeName]; // TODO: Remove if type is abstract.
walk(type) {
for (final subtype in _orderCollectionValues(type.directSubtypes)) {
- var tag = typeTag(subtype);
+ var tag = subtype.nativeName;
var existing = tagDefns[tag];
if (existing == null) {
subtags.add(tag);
@@ -634,7 +632,7 @@ function $inheritsMembers(child, parent) {
}
for (final type in dispatchTypes) {
- tagDefns[typeTag(type)] = makeExpression(type);
+ tagDefns[type.nativeName] = makeExpression(type);
}
// Write out a thunk that builds the metadata.
@@ -651,7 +649,7 @@ function $inheritsMembers(child, parent) {
'// [dynamic-dispatch-tag, '
+ 'tags of classes implementing dynamic-dispatch-tag]');
for (final type in dispatchTypes) {
- writer.writeln("['${typeTag(type)}', ${tagDefns[typeTag(type)]}],");
+ writer.writeln("['${type.nativeName}', ${tagDefns[type.nativeName]}],");
}
writer.exitBlock('];');
writer.writeln('\$dynamicSetMetadata(table);');
@@ -1351,7 +1349,7 @@ class MethodGenerator implements TreeVisitor {
// TODO(jmesserly): why do we have this rule? It seems inconsistent with
// the rest of the type system, and just causes bogus asserts unless all
// bools are initialized to false.
- return visitValue(node).convertTo(this, world.nonNullBool, node);
+ return visitValue(node).convertTo(this, world.nonNullBool);
}
visitValue(Expression node) {
@@ -1368,7 +1366,7 @@ class MethodGenerator implements TreeVisitor {
*/
visitTypedValue(Expression node, Type expectedType) {
final val = visitValue(node);
- return expectedType == null ? val : val.convertTo(this, expectedType, node);
+ return expectedType == null ? val : val.convertTo(this, expectedType);
}
visitVoid(Expression node) {
@@ -1429,7 +1427,7 @@ class MethodGenerator implements TreeVisitor {
writer.write('${val.code}');
}
} else {
- value = value.convertTo(this, type, node.values[i]);
+ value = value.convertTo(this, type);
writer.write('${val.code} = ${value.code}');
}
}
@@ -2133,7 +2131,7 @@ class MethodGenerator implements TreeVisitor {
position.span);
}
- y = y.convertTo(this, x.type, yn);
+ y = y.convertTo(this, x.type);
if (kind == 0) {
x = captureOriginal(x);
@@ -2237,13 +2235,13 @@ class MethodGenerator implements TreeVisitor {
var newVal = !value.actualValue;
return new EvaluatedValue(value.type, newVal, '${newVal}', node.span);
} else {
- var newVal = value.convertTo(this, world.nonNullBool, node);
+ var newVal = value.convertTo(this, world.nonNullBool);
return new Value(newVal.type, '!${newVal.code}', node.span);
}
case TokenKind.ADD:
// TODO(jimhug): Issue #359 seeks to clarify this behavior.
- return value.convertTo(this, world.numType, node);
+ return value.convertTo(this, world.numType);
case TokenKind.SUB:
case TokenKind.BIT_NOT:
@@ -2364,7 +2362,7 @@ class MethodGenerator implements TreeVisitor {
}
// Call the constructor on the type we want to construct.
- // NOTE: this is important for correct checking of factories.
+ // NOTE: this is important for correct type checking of factories.
// If the user calls "new Interface()" we want the result type to be the
// interface, not the class.
var target = new Value.type(type, typeRef.span);
@@ -2398,12 +2396,12 @@ class MethodGenerator implements TreeVisitor {
}
}
- world.coreimpl.types['ListFactory'].markUsed();
+ world.listFactoryType.markUsed();
final code = '[${Strings.join(argsCode, ", ")}]';
var value = new Value(world.listType, code, node.span);
if (node.isConst) {
- final immutableList = world.coreimpl.types['ImmutableList'];
+ final immutableList = world.immutableListType;
final immutableListCtor = immutableList.getConstructor('from');
final result = immutableListCtor.invoke(this, node,
new Value.type(value.type, node.span), new Arguments(null, [value]));
@@ -2575,13 +2573,13 @@ class MethodGenerator implements TreeVisitor {
}
if (node.value is num) {
- world.coreimpl.types['NumImplementation'].markUsed();
+ world.numImplType.markUsed();
}
var text = node.text;
// TODO(jimhug): Confirm that only strings need possible translation
if (type.isString) {
- world.coreimpl.types['StringImplementation'].markUsed();
+ world.stringImplType.markUsed();
if (text.startsWith('@')) {
text = _escapeString(parseStringLiteral(text));
« no previous file with comments | « frog/element.dart ('k') | frog/library.dart » ('j') | frog/member.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698