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

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

Issue 10905305: Patch refactoring. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased Created 8 years, 3 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
Index: lib/compiler/implementation/ssa/builder.dart
diff --git a/lib/compiler/implementation/ssa/builder.dart b/lib/compiler/implementation/ssa/builder.dart
index f3783d8e2ccf281f417e91c218988316d8a7eee5..238fa6b8eda91cca470360935a1789d187b99451 100644
--- a/lib/compiler/implementation/ssa/builder.dart
+++ b/lib/compiler/implementation/ssa/builder.dart
@@ -195,7 +195,8 @@ class SsaBuilderTask extends CompilerTask {
// If there is an estimate of the parameter types assume these types
// when compiling.
OptionalParameterTypes defaultValueTypes = null;
- FunctionSignature signature = element.computeSignature(compiler);
+ FunctionSignature signature =
+ element.computeSignature(compiler);
if (signature.optionalParameterCount > 0) {
defaultValueTypes =
new OptionalParameterTypes(signature.optionalParameterCount);
@@ -217,7 +218,7 @@ class SsaBuilderTask extends CompilerTask {
});
}
backend.registerParameterTypesOptimization(
- element, parameterTypes, defaultValueTypes);
+ element.declaration, parameterTypes, defaultValueTypes);
}
if (compiler.tracer.enabled) {
@@ -974,6 +975,14 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
compiler.resolver.resolveMethodElement(constructor.declaration);
classElement.backendMembers =
classElement.backendMembers.prepend(bodyElement);
+
+ if (constructor.origin != null) {
+ // Create origin body element for patched constructors.
+ bodyElement.origin = new ConstructorBodyElement(constructor.origin);
+ bodyElement.origin.patch = bodyElement;
+ classElement.origin.backendMembers =
+ classElement.origin.backendMembers.prepend(bodyElement.origin);
+ }
compiler.enqueuer.codegen.addToWorkList(bodyElement.declaration,
treeElements);
}
@@ -1189,6 +1198,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
assert(superClass.resolutionState == STATE_DONE);
Selector selector =
new Selector.call(superClass.name, enclosingClass.getLibrary(), 0);
+ // TODO(johnniwinther): Should we find injected constructors as well?
FunctionElement target = superClass.lookupConstructor(superClass.name);
if (target === null) {
compiler.internalError("no default constructor available");
@@ -1214,6 +1224,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
classElement.forEachInstanceField(
includeBackendMembers: true,
includeSuperMembers: false,
+ includeInjectedMembers: true,
f: (ClassElement enclosingClass, Element member) {
TreeElements definitions = compiler.analyzeElement(member);
Node node = member.parseNode(compiler);
@@ -1286,6 +1297,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
classElement.forEachInstanceField(
includeBackendMembers: true,
includeSuperMembers: true,
+ includeInjectedMembers: true,
f: (ClassElement enclosingClass, Element member) {
constructorArguments.add(
potentiallyCheckType(fieldValues[member], member));

Powered by Google App Engine
This is Rietveld 408576698