feat(change_detection): implement a change detector generator

This commit is contained in:
vsavkin
2015-01-21 12:05:52 -08:00
parent b78c1252e5
commit 850cf0fef4
31 changed files with 1347 additions and 694 deletions

View File

@ -8,6 +8,7 @@ import {
Parser,
ChangeDetector,
ProtoChangeDetector,
DynamicProtoChangeDetector,
ChangeDispatcher,
} from 'change_detection/change_detection';
@ -102,7 +103,7 @@ function setUpChangeDetection(iterations) {
var dispatcher = new DummyDispatcher();
var parser = new Parser(new Lexer());
var parentProto = new ProtoChangeDetector();
var parentProto = new DynamicProtoChangeDetector();
var parentCD = parentProto.instantiate(dispatcher, MapWrapper.create());
var astWithSource = [
@ -119,7 +120,7 @@ function setUpChangeDetection(iterations) {
];
function proto(i) {
var pcd = new ProtoChangeDetector();
var pcd = new DynamicProtoChangeDetector();
pcd.addAst(astWithSource[i % 10].ast, "memo", i, false);
return pcd;
}

View File

@ -3,7 +3,7 @@ import {isBlank, Type} from 'facade/lang';
import {MapWrapper} from 'facade/collection';
import {DirectiveMetadata} from 'core/compiler/directive_metadata';
import {Parser, Lexer, ProtoRecordRange} from 'change_detection/change_detection';
import {Parser, Lexer, ProtoRecordRange, dynamicChangeDetection} from 'change_detection/change_detection';
import {Compiler, CompilerCache} from 'core/compiler/compiler';
import {DirectiveMetadataReader} from 'core/compiler/directive_metadata_reader';
@ -79,7 +79,7 @@ export function main() {
setupReflector();
var reader = new DirectiveMetadataReader();
var cache = new CompilerCache();
var compiler = new Compiler(null, reader, new Parser(new Lexer()), cache);
var compiler = new Compiler(dynamicChangeDetection, null, reader, new Parser(new Lexer()), cache);
var annotatedComponent = reader.read(BenchmarkComponent);
var templateNoBindings = loadTemplate('templateNoBindings', count);

View File

@ -1,4 +1,5 @@
import {Parser, Lexer, ChangeDetector} from 'change_detection/change_detection';
import {Parser, Lexer, ChangeDetector, ChangeDetection, jitChangeDetection}
from 'change_detection/change_detection';
import {bootstrap, Component, Template, TemplateConfig, ViewPort, Compiler} from 'angular/angular';
@ -38,11 +39,7 @@ function setupReflector() {
},
template: new TemplateConfig({
directives: [TreeComponent, NgIf],
inline: `
<span> {{data.value}}
<span template='ng-if data.right != null'><tree [data]='data.right'></tree></span>
<span template='ng-if data.left != null'><tree [data]='data.left'></tree></span>
</span>`
inline: `<span>{{data.value}}<span template='ng-if data.right != null'><tree [data]='data.right'></tree></span><span template='ng-if data.left != null'><tree [data]='data.left'></tree></span></span>`
})
})]
});
@ -59,8 +56,8 @@ function setupReflector() {
});
reflector.registerType(Compiler, {
'factory': (templateLoader, reader, parser, compilerCache) => new Compiler(templateLoader, reader, parser, compilerCache),
'parameters': [[TemplateLoader], [DirectiveMetadataReader], [Parser], [CompilerCache]],
'factory': (cd, templateLoader, reader, parser, compilerCache) => new Compiler(cd, templateLoader, reader, parser, compilerCache),
'parameters': [[ChangeDetection], [TemplateLoader], [DirectiveMetadataReader], [Parser], [CompilerCache]],
'annotations': []
});