OLD | NEW |
1 var DeltaBlue; | 1 var DeltaBlue; |
2 (function(exports) { | 2 (function(exports) { |
3 'use strict'; | 3 'use strict'; |
4 // Function main: () → dynamic | 4 // Function main: () → dynamic |
5 function main() { | 5 function main() { |
6 new DeltaBlue().report(); | 6 new DeltaBlue().report(); |
7 } | 7 } |
8 class DeltaBlue extends BenchmarkBase.BenchmarkBase { | 8 class DeltaBlue extends BenchmarkBase.BenchmarkBase { |
9 DeltaBlue() { | 9 DeltaBlue() { |
10 super.BenchmarkBase("DeltaBlue"); | 10 super.BenchmarkBase("DeltaBlue"); |
11 } | 11 } |
12 run() { | 12 run() { |
13 chainTest(100); | 13 chainTest(100); |
14 projectionTest(100); | 14 projectionTest(100); |
15 } | 15 } |
16 } | 16 } |
17 class Strength extends core.Object { | 17 class Strength extends core.Object { |
18 Strength(value, name) { | 18 Strength(value, name) { |
19 this.value = value; | 19 dart.initField(Strength, this, 'value', value); |
20 this.name = name; | 20 dart.initField(Strength, this, 'name', name); |
21 } | 21 } |
22 nextWeaker() { | 22 nextWeaker() { |
23 return /* Unimplemented const */new core.List$(Strength).from([STRONG_PREF
ERRED, PREFERRED, STRONG_DEFAULT, NORMAL, WEAK_DEFAULT, WEAKEST])[core.$get](thi
s.value); | 23 return /* Unimplemented const */new core.List$(Strength).from([STRONG_PREF
ERRED, PREFERRED, STRONG_DEFAULT, NORMAL, WEAK_DEFAULT, WEAKEST])[core.$get](thi
s.value); |
24 } | 24 } |
25 static stronger(s1, s2) { | 25 static stronger(s1, s2) { |
26 return dart.notNull(s1.value) < dart.notNull(s2.value); | 26 return dart.notNull(s1.value) < dart.notNull(s2.value); |
27 } | 27 } |
28 static weaker(s1, s2) { | 28 static weaker(s1, s2) { |
29 return dart.notNull(s1.value) > dart.notNull(s2.value); | 29 return dart.notNull(s1.value) > dart.notNull(s2.value); |
30 } | 30 } |
31 static weakest(s1, s2) { | 31 static weakest(s1, s2) { |
32 return Strength.weaker(s1, s2) ? s1 : s2; | 32 return Strength.weaker(s1, s2) ? s1 : s2; |
33 } | 33 } |
34 static strongest(s1, s2) { | 34 static strongest(s1, s2) { |
35 return Strength.stronger(s1, s2) ? s1 : s2; | 35 return Strength.stronger(s1, s2) ? s1 : s2; |
36 } | 36 } |
37 } | 37 } |
38 let REQUIRED = new Strength(0, "required"); | 38 let REQUIRED = new Strength(0, "required"); |
39 let STRONG_PREFERRED = new Strength(1, "strongPreferred"); | 39 let STRONG_PREFERRED = new Strength(1, "strongPreferred"); |
40 let PREFERRED = new Strength(2, "preferred"); | 40 let PREFERRED = new Strength(2, "preferred"); |
41 let STRONG_DEFAULT = new Strength(3, "strongDefault"); | 41 let STRONG_DEFAULT = new Strength(3, "strongDefault"); |
42 let NORMAL = new Strength(4, "normal"); | 42 let NORMAL = new Strength(4, "normal"); |
43 let WEAK_DEFAULT = new Strength(5, "weakDefault"); | 43 let WEAK_DEFAULT = new Strength(5, "weakDefault"); |
44 let WEAKEST = new Strength(6, "weakest"); | 44 let WEAKEST = new Strength(6, "weakest"); |
45 class Constraint extends core.Object { | 45 class Constraint extends core.Object { |
46 Constraint(strength) { | 46 Constraint(strength) { |
47 this.strength = strength; | 47 dart.initField(Constraint, this, 'strength', strength); |
48 } | 48 } |
49 addConstraint() { | 49 addConstraint() { |
50 this.addToGraph(); | 50 this.addToGraph(); |
51 exports.planner.incrementalAdd(this); | 51 exports.planner.incrementalAdd(this); |
52 } | 52 } |
53 satisfy(mark) { | 53 satisfy(mark) { |
54 this.chooseMethod(dart.as(mark, core.int)); | 54 this.chooseMethod(dart.as(mark, core.int)); |
55 if (!dart.notNull(this.isSatisfied())) { | 55 if (!dart.notNull(this.isSatisfied())) { |
56 if (dart.equals(this.strength, REQUIRED)) { | 56 if (dart.equals(this.strength, REQUIRED)) { |
57 core.print("Could not satisfy a required constraint!"); | 57 core.print("Could not satisfy a required constraint!"); |
(...skipping 15 matching lines...) Expand all Loading... |
73 if (this.isSatisfied()) | 73 if (this.isSatisfied()) |
74 exports.planner.incrementalRemove(this); | 74 exports.planner.incrementalRemove(this); |
75 this.removeFromGraph(); | 75 this.removeFromGraph(); |
76 } | 76 } |
77 isInput() { | 77 isInput() { |
78 return false; | 78 return false; |
79 } | 79 } |
80 } | 80 } |
81 class UnaryConstraint extends Constraint { | 81 class UnaryConstraint extends Constraint { |
82 UnaryConstraint(myOutput, strength) { | 82 UnaryConstraint(myOutput, strength) { |
83 this.myOutput = myOutput; | 83 dart.initField(UnaryConstraint, this, 'myOutput', myOutput); |
84 this.satisfied = false; | 84 dart.initField(UnaryConstraint, this, 'satisfied', false); |
85 super.Constraint(strength); | 85 super.Constraint(strength); |
86 this.addConstraint(); | 86 this.addConstraint(); |
87 } | 87 } |
88 addToGraph() { | 88 addToGraph() { |
89 this.myOutput.addConstraint(this); | 89 this.myOutput.addConstraint(this); |
90 this.satisfied = false; | 90 this.satisfied = false; |
91 } | 91 } |
92 chooseMethod(mark) { | 92 chooseMethod(mark) { |
93 this.satisfied = this.myOutput.mark != mark && dart.notNull(Strength.stron
ger(this.strength, this.myOutput.walkStrength)); | 93 this.satisfied = this.myOutput.mark != mark && dart.notNull(Strength.stron
ger(this.strength, this.myOutput.walkStrength)); |
94 } | 94 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 isInput() { | 130 isInput() { |
131 return true; | 131 return true; |
132 } | 132 } |
133 execute() {} | 133 execute() {} |
134 } | 134 } |
135 let NONE = 1; | 135 let NONE = 1; |
136 let FORWARD = 2; | 136 let FORWARD = 2; |
137 let BACKWARD = 0; | 137 let BACKWARD = 0; |
138 class BinaryConstraint extends Constraint { | 138 class BinaryConstraint extends Constraint { |
139 BinaryConstraint(v1, v2, strength) { | 139 BinaryConstraint(v1, v2, strength) { |
140 this.v1 = v1; | 140 dart.initField(BinaryConstraint, this, 'v1', v1); |
141 this.v2 = v2; | 141 dart.initField(BinaryConstraint, this, 'v2', v2); |
142 this.direction = NONE; | 142 dart.initField(BinaryConstraint, this, 'direction', NONE); |
143 super.Constraint(strength); | 143 super.Constraint(strength); |
144 this.addConstraint(); | 144 this.addConstraint(); |
145 } | 145 } |
146 chooseMethod(mark) { | 146 chooseMethod(mark) { |
147 if (this.v1.mark == mark) { | 147 if (this.v1.mark == mark) { |
148 this.direction = this.v2.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v2.walkStrength)) ? FORWARD : NONE; | 148 this.direction = this.v2.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v2.walkStrength)) ? FORWARD : NONE; |
149 } | 149 } |
150 if (this.v2.mark == mark) { | 150 if (this.v2.mark == mark) { |
151 this.direction = this.v1.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v1.walkStrength)) ? BACKWARD : NONE; | 151 this.direction = this.v1.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v1.walkStrength)) ? BACKWARD : NONE; |
152 } | 152 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 removeFromGraph() { | 190 removeFromGraph() { |
191 if (this.v1 != null) | 191 if (this.v1 != null) |
192 this.v1.removeConstraint(this); | 192 this.v1.removeConstraint(this); |
193 if (this.v2 != null) | 193 if (this.v2 != null) |
194 this.v2.removeConstraint(this); | 194 this.v2.removeConstraint(this); |
195 this.direction = NONE; | 195 this.direction = NONE; |
196 } | 196 } |
197 } | 197 } |
198 class ScaleConstraint extends BinaryConstraint { | 198 class ScaleConstraint extends BinaryConstraint { |
199 ScaleConstraint(src, scale, offset, dest, strength) { | 199 ScaleConstraint(src, scale, offset, dest, strength) { |
200 this.scale = scale; | 200 dart.initField(ScaleConstraint, this, 'scale', scale); |
201 this.offset = offset; | 201 dart.initField(ScaleConstraint, this, 'offset', offset); |
202 super.BinaryConstraint(src, dest, strength); | 202 super.BinaryConstraint(src, dest, strength); |
203 } | 203 } |
204 addToGraph() { | 204 addToGraph() { |
205 super.addToGraph(); | 205 super.addToGraph(); |
206 this.scale.addConstraint(this); | 206 this.scale.addConstraint(this); |
207 this.offset.addConstraint(this); | 207 this.offset.addConstraint(this); |
208 } | 208 } |
209 removeFromGraph() { | 209 removeFromGraph() { |
210 super.removeFromGraph(); | 210 super.removeFromGraph(); |
211 if (this.scale != null) | 211 if (this.scale != null) |
(...skipping 23 matching lines...) Expand all Loading... |
235 class EqualityConstraint extends BinaryConstraint { | 235 class EqualityConstraint extends BinaryConstraint { |
236 EqualityConstraint(v1, v2, strength) { | 236 EqualityConstraint(v1, v2, strength) { |
237 super.BinaryConstraint(v1, v2, strength); | 237 super.BinaryConstraint(v1, v2, strength); |
238 } | 238 } |
239 execute() { | 239 execute() { |
240 this.output().value = this.input().value; | 240 this.output().value = this.input().value; |
241 } | 241 } |
242 } | 242 } |
243 class Variable extends core.Object { | 243 class Variable extends core.Object { |
244 Variable(name, value) { | 244 Variable(name, value) { |
245 this.constraints = new core.List$(Constraint).from([]); | 245 dart.initField(Variable, this, 'constraints', new core.List$(Constraint).f
rom([])); |
246 this.name = name; | 246 dart.initField(Variable, this, 'name', name); |
247 this.value = value; | 247 dart.initField(Variable, this, 'value', value); |
248 this.determinedBy = null; | 248 dart.initField(Variable, this, 'determinedBy', null); |
249 this.mark = 0; | 249 dart.initField(Variable, this, 'mark', 0); |
250 this.walkStrength = WEAKEST; | 250 dart.initField(Variable, this, 'walkStrength', WEAKEST); |
251 this.stay = true; | 251 dart.initField(Variable, this, 'stay', true); |
252 } | 252 } |
253 addConstraint(c) { | 253 addConstraint(c) { |
254 this.constraints[core.$add](c); | 254 this.constraints[core.$add](c); |
255 } | 255 } |
256 removeConstraint(c) { | 256 removeConstraint(c) { |
257 this.constraints[core.$remove](c); | 257 this.constraints[core.$remove](c); |
258 if (dart.equals(this.determinedBy, c)) | 258 if (dart.equals(this.determinedBy, c)) |
259 this.determinedBy = null; | 259 this.determinedBy = null; |
260 } | 260 } |
261 } | 261 } |
262 class Planner extends core.Object { | 262 class Planner extends core.Object { |
263 Planner() { | 263 Planner() { |
264 this.currentMark = 0; | 264 dart.initField(Planner, this, 'currentMark', 0); |
265 } | 265 } |
266 incrementalAdd(c) { | 266 incrementalAdd(c) { |
267 let mark = this.newMark(); | 267 let mark = this.newMark(); |
268 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) | 268 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) |
269 ; | 269 ; |
270 } | 270 } |
271 incrementalRemove(c) { | 271 incrementalRemove(c) { |
272 let out = c.output(); | 272 let out = c.output(); |
273 c.markUnsatisfied(); | 273 c.markUnsatisfied(); |
274 c.removeFromGraph(); | 274 c.removeFromGraph(); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 let determining = v.determinedBy; | 350 let determining = v.determinedBy; |
351 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[core.$length]
); i = dart.notNull(i) + 1) { | 351 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[core.$length]
); i = dart.notNull(i) + 1) { |
352 let c = v.constraints[core.$get](i); | 352 let c = v.constraints[core.$get](i); |
353 if (dart.notNull(!dart.equals(c, determining)) && dart.notNull(c.isSatis
fied())) | 353 if (dart.notNull(!dart.equals(c, determining)) && dart.notNull(c.isSatis
fied())) |
354 coll[core.$add](c); | 354 coll[core.$add](c); |
355 } | 355 } |
356 } | 356 } |
357 } | 357 } |
358 class Plan extends core.Object { | 358 class Plan extends core.Object { |
359 Plan() { | 359 Plan() { |
360 this.list = new core.List$(Constraint).from([]); | 360 dart.initField(Plan, this, 'list', new core.List$(Constraint).from([])); |
361 } | 361 } |
362 addConstraint(c) { | 362 addConstraint(c) { |
363 this.list[core.$add](c); | 363 this.list[core.$add](c); |
364 } | 364 } |
365 size() { | 365 size() { |
366 return this.list[core.$length]; | 366 return this.list[core.$length]; |
367 } | 367 } |
368 execute() { | 368 execute() { |
369 for (let i = 0; dart.notNull(i) < dart.notNull(this.list[core.$length]); i
= dart.notNull(i) + 1) { | 369 for (let i = 0; dart.notNull(i) < dart.notNull(this.list[core.$length]); i
= dart.notNull(i) + 1) { |
370 this.list[core.$get](i).execute(); | 370 this.list[core.$get](i).execute(); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 exports.BinaryConstraint = BinaryConstraint; | 460 exports.BinaryConstraint = BinaryConstraint; |
461 exports.ScaleConstraint = ScaleConstraint; | 461 exports.ScaleConstraint = ScaleConstraint; |
462 exports.EqualityConstraint = EqualityConstraint; | 462 exports.EqualityConstraint = EqualityConstraint; |
463 exports.Variable = Variable; | 463 exports.Variable = Variable; |
464 exports.Planner = Planner; | 464 exports.Planner = Planner; |
465 exports.Plan = Plan; | 465 exports.Plan = Plan; |
466 exports.chainTest = chainTest; | 466 exports.chainTest = chainTest; |
467 exports.projectionTest = projectionTest; | 467 exports.projectionTest = projectionTest; |
468 exports.change = change; | 468 exports.change = change; |
469 })(DeltaBlue || (DeltaBlue = {})); | 469 })(DeltaBlue || (DeltaBlue = {})); |
OLD | NEW |