Skip to content

Commit c6893ac

Browse files
vicbmhevery
authored andcommitted
perf(DirectiveDependency): iterate only once over Dependency properties
Closes angular#918
1 parent 87a7e7e commit c6893ac

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

modules/angular2/src/core/compiler/element_injector.js

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -100,36 +100,26 @@ export class DirectiveDependency extends Dependency {
100100
}
101101

102102
static createFrom(d:Dependency):Dependency {
103-
return new DirectiveDependency(d.key, d.asPromise, d.lazy, d.optional,
104-
d.properties, DirectiveDependency._depth(d.properties),
105-
DirectiveDependency._eventEmitterName(d.properties),
106-
DirectiveDependency._propSetterName(d.properties)
107-
);
108-
}
109-
110-
static _depth(properties):int {
111-
if (properties.length == 0) return 0;
112-
if (ListWrapper.any(properties, p => p instanceof Parent)) return 1;
113-
if (ListWrapper.any(properties, p => p instanceof Ancestor)) return MAX_DEPTH;
114-
return 0;
115-
}
103+
var depth = 0;
104+
var eventName = null;
105+
var propName = null;
106+
var properties = d.properties;
116107

117-
static _eventEmitterName(properties):string {
118108
for (var i = 0; i < properties.length; i++) {
119-
if (properties[i] instanceof EventEmitter) {
120-
return properties[i].eventName;
109+
var property = properties[i];
110+
if (property instanceof Parent) {
111+
depth = 1;
112+
} else if (property instanceof Ancestor) {
113+
depth = MAX_DEPTH;
114+
} else if (property instanceof EventEmitter) {
115+
eventName = property.eventName;
116+
} else if (property instanceof PropertySetter) {
117+
propName = property.propName;
121118
}
122119
}
123-
return null;
124-
}
125120

126-
static _propSetterName(properties):string {
127-
for (var i = 0; i < properties.length; i++) {
128-
if (properties[i] instanceof PropertySetter) {
129-
return properties[i].propName;
130-
}
131-
}
132-
return null;
121+
return new DirectiveDependency(d.key, d.asPromise, d.lazy, d.optional, d.properties, depth,
122+
eventName, propName);
133123
}
134124
}
135125

0 commit comments

Comments
 (0)