OLD | NEW |
1 var DeltaBlue = dart.defineLibrary(DeltaBlue, {}); | 1 var DeltaBlue = dart.defineLibrary(DeltaBlue, {}); |
2 var BenchmarkBase = dart.import(BenchmarkBase); | 2 var BenchmarkBase = dart.import(BenchmarkBase); |
3 var core = dart.import(core); | 3 var core = dart.import(core); |
4 (function(exports, BenchmarkBase, core) { | 4 (function(exports, BenchmarkBase, core) { |
5 'use strict'; | 5 'use strict'; |
6 function main() { | 6 function main() { |
7 new DeltaBlue().report(); | 7 new DeltaBlue().report(); |
8 } | 8 } |
9 dart.fn(main); | 9 dart.fn(main); |
10 class DeltaBlue extends BenchmarkBase.BenchmarkBase { | 10 class DeltaBlue extends BenchmarkBase.BenchmarkBase { |
(...skipping 16 matching lines...) Expand all Loading... |
27 nextWeaker() { | 27 nextWeaker() { |
28 return dart.const(dart.list([STRONG_PREFERRED, PREFERRED, STRONG_DEFAULT,
NORMAL, WEAK_DEFAULT, WEAKEST], Strength))[dartx.get](this.value); | 28 return dart.const(dart.list([STRONG_PREFERRED, PREFERRED, STRONG_DEFAULT,
NORMAL, WEAK_DEFAULT, WEAKEST], Strength))[dartx.get](this.value); |
29 } | 29 } |
30 static stronger(s1, s2) { | 30 static stronger(s1, s2) { |
31 return dart.notNull(s1.value) < dart.notNull(s2.value); | 31 return dart.notNull(s1.value) < dart.notNull(s2.value); |
32 } | 32 } |
33 static weaker(s1, s2) { | 33 static weaker(s1, s2) { |
34 return dart.notNull(s1.value) > dart.notNull(s2.value); | 34 return dart.notNull(s1.value) > dart.notNull(s2.value); |
35 } | 35 } |
36 static weakest(s1, s2) { | 36 static weakest(s1, s2) { |
37 return Strength.weaker(s1, s2) ? s1 : s2; | 37 return dart.notNull(Strength.weaker(s1, s2)) ? s1 : s2; |
38 } | 38 } |
39 static strongest(s1, s2) { | 39 static strongest(s1, s2) { |
40 return Strength.stronger(s1, s2) ? s1 : s2; | 40 return dart.notNull(Strength.stronger(s1, s2)) ? s1 : s2; |
41 } | 41 } |
42 } | 42 } |
43 dart.setSignature(Strength, { | 43 dart.setSignature(Strength, { |
44 constructors: () => ({Strength: [Strength, [core.int, core.String]]}), | 44 constructors: () => ({Strength: [Strength, [core.int, core.String]]}), |
45 methods: () => ({nextWeaker: [Strength, []]}), | 45 methods: () => ({nextWeaker: [Strength, []]}), |
46 statics: () => ({ | 46 statics: () => ({ |
47 stronger: [core.bool, [Strength, Strength]], | 47 stronger: [core.bool, [Strength, Strength]], |
48 weaker: [core.bool, [Strength, Strength]], | 48 weaker: [core.bool, [Strength, Strength]], |
49 weakest: [Strength, [Strength, Strength]], | 49 weakest: [Strength, [Strength, Strength]], |
50 strongest: [Strength, [Strength, Strength]] | 50 strongest: [Strength, [Strength, Strength]] |
(...skipping 28 matching lines...) Expand all Loading... |
79 let overridden = out.determinedBy; | 79 let overridden = out.determinedBy; |
80 if (overridden != null) | 80 if (overridden != null) |
81 overridden.markUnsatisfied(); | 81 overridden.markUnsatisfied(); |
82 out.determinedBy = this; | 82 out.determinedBy = this; |
83 if (!dart.notNull(exports.planner.addPropagate(this, dart.as(mark, core.in
t)))) | 83 if (!dart.notNull(exports.planner.addPropagate(this, dart.as(mark, core.in
t)))) |
84 core.print("Cycle encountered"); | 84 core.print("Cycle encountered"); |
85 out.mark = dart.as(mark, core.int); | 85 out.mark = dart.as(mark, core.int); |
86 return overridden; | 86 return overridden; |
87 } | 87 } |
88 destroyConstraint() { | 88 destroyConstraint() { |
89 if (this.isSatisfied()) | 89 if (dart.notNull(this.isSatisfied())) |
90 exports.planner.incrementalRemove(this); | 90 exports.planner.incrementalRemove(this); |
91 this.removeFromGraph(); | 91 this.removeFromGraph(); |
92 } | 92 } |
93 isInput() { | 93 isInput() { |
94 return false; | 94 return false; |
95 } | 95 } |
96 } | 96 } |
97 dart.setSignature(Constraint, { | 97 dart.setSignature(Constraint, { |
98 constructors: () => ({Constraint: [Constraint, [Strength]]}), | 98 constructors: () => ({Constraint: [Constraint, [Strength]]}), |
99 methods: () => ({ | 99 methods: () => ({ |
(...skipping 20 matching lines...) Expand all Loading... |
120 isSatisfied() { | 120 isSatisfied() { |
121 return this.satisfied; | 121 return this.satisfied; |
122 } | 122 } |
123 markInputs(mark) {} | 123 markInputs(mark) {} |
124 output() { | 124 output() { |
125 return this.myOutput; | 125 return this.myOutput; |
126 } | 126 } |
127 recalculate() { | 127 recalculate() { |
128 this.myOutput.walkStrength = this.strength; | 128 this.myOutput.walkStrength = this.strength; |
129 this.myOutput.stay = !dart.notNull(this.isInput()); | 129 this.myOutput.stay = !dart.notNull(this.isInput()); |
130 if (this.myOutput.stay) | 130 if (dart.notNull(this.myOutput.stay)) |
131 this.execute(); | 131 this.execute(); |
132 } | 132 } |
133 markUnsatisfied() { | 133 markUnsatisfied() { |
134 this.satisfied = false; | 134 this.satisfied = false; |
135 } | 135 } |
136 inputsKnown(mark) { | 136 inputsKnown(mark) { |
137 return true; | 137 return true; |
138 } | 138 } |
139 removeFromGraph() { | 139 removeFromGraph() { |
140 if (this.myOutput != null) | 140 if (this.myOutput != null) |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 super.Constraint(strength); | 190 super.Constraint(strength); |
191 this.addConstraint(); | 191 this.addConstraint(); |
192 } | 192 } |
193 chooseMethod(mark) { | 193 chooseMethod(mark) { |
194 if (this.v1.mark == mark) { | 194 if (this.v1.mark == mark) { |
195 this.direction = this.v2.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v2.walkStrength)) ? FORWARD : NONE; | 195 this.direction = this.v2.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v2.walkStrength)) ? FORWARD : NONE; |
196 } | 196 } |
197 if (this.v2.mark == mark) { | 197 if (this.v2.mark == mark) { |
198 this.direction = this.v1.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v1.walkStrength)) ? BACKWARD : NONE; | 198 this.direction = this.v1.mark != mark && dart.notNull(Strength.stronger(
this.strength, this.v1.walkStrength)) ? BACKWARD : NONE; |
199 } | 199 } |
200 if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) { | 200 if (dart.notNull(Strength.weaker(this.v1.walkStrength, this.v2.walkStrengt
h))) { |
201 this.direction = Strength.stronger(this.strength, this.v1.walkStrength)
? BACKWARD : NONE; | 201 this.direction = dart.notNull(Strength.stronger(this.strength, this.v1.w
alkStrength)) ? BACKWARD : NONE; |
202 } else { | 202 } else { |
203 this.direction = Strength.stronger(this.strength, this.v2.walkStrength)
? FORWARD : BACKWARD; | 203 this.direction = dart.notNull(Strength.stronger(this.strength, this.v2.w
alkStrength)) ? FORWARD : BACKWARD; |
204 } | 204 } |
205 } | 205 } |
206 addToGraph() { | 206 addToGraph() { |
207 this.v1.addConstraint(this); | 207 this.v1.addConstraint(this); |
208 this.v2.addConstraint(this); | 208 this.v2.addConstraint(this); |
209 this.direction = NONE; | 209 this.direction = NONE; |
210 } | 210 } |
211 isSatisfied() { | 211 isSatisfied() { |
212 return this.direction != NONE; | 212 return this.direction != NONE; |
213 } | 213 } |
214 markInputs(mark) { | 214 markInputs(mark) { |
215 this.input().mark = mark; | 215 this.input().mark = mark; |
216 } | 216 } |
217 input() { | 217 input() { |
218 return this.direction == FORWARD ? this.v1 : this.v2; | 218 return this.direction == FORWARD ? this.v1 : this.v2; |
219 } | 219 } |
220 output() { | 220 output() { |
221 return this.direction == FORWARD ? this.v2 : this.v1; | 221 return this.direction == FORWARD ? this.v2 : this.v1; |
222 } | 222 } |
223 recalculate() { | 223 recalculate() { |
224 let ihn = this.input(), out = this.output(); | 224 let ihn = this.input(), out = this.output(); |
225 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); | 225 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); |
226 out.stay = ihn.stay; | 226 out.stay = ihn.stay; |
227 if (out.stay) | 227 if (dart.notNull(out.stay)) |
228 this.execute(); | 228 this.execute(); |
229 } | 229 } |
230 markUnsatisfied() { | 230 markUnsatisfied() { |
231 this.direction = NONE; | 231 this.direction = NONE; |
232 } | 232 } |
233 inputsKnown(mark) { | 233 inputsKnown(mark) { |
234 let i = this.input(); | 234 let i = this.input(); |
235 return i.mark == mark || dart.notNull(i.stay) || dart.notNull(i.determined
By == null); | 235 return i.mark == mark || dart.notNull(i.stay) || i.determinedBy == null; |
236 } | 236 } |
237 removeFromGraph() { | 237 removeFromGraph() { |
238 if (this.v1 != null) | 238 if (this.v1 != null) |
239 this.v1.removeConstraint(this); | 239 this.v1.removeConstraint(this); |
240 if (this.v2 != null) | 240 if (this.v2 != null) |
241 this.v2.removeConstraint(this); | 241 this.v2.removeConstraint(this); |
242 this.direction = NONE; | 242 this.direction = NONE; |
243 } | 243 } |
244 } | 244 } |
245 dart.setSignature(BinaryConstraint, { | 245 dart.setSignature(BinaryConstraint, { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 if (this.direction == FORWARD) { | 283 if (this.direction == FORWARD) { |
284 this.v2.value = dart.notNull(this.v1.value) * dart.notNull(this.scale.va
lue) + dart.notNull(this.offset.value); | 284 this.v2.value = dart.notNull(this.v1.value) * dart.notNull(this.scale.va
lue) + dart.notNull(this.offset.value); |
285 } else { | 285 } else { |
286 this.v1.value = ((dart.notNull(this.v2.value) - dart.notNull(this.offset
.value)) / dart.notNull(this.scale.value)).truncate(); | 286 this.v1.value = ((dart.notNull(this.v2.value) - dart.notNull(this.offset
.value)) / dart.notNull(this.scale.value)).truncate(); |
287 } | 287 } |
288 } | 288 } |
289 recalculate() { | 289 recalculate() { |
290 let ihn = this.input(), out = this.output(); | 290 let ihn = this.input(), out = this.output(); |
291 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); | 291 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); |
292 out.stay = dart.notNull(ihn.stay) && dart.notNull(this.scale.stay) && dart
.notNull(this.offset.stay); | 292 out.stay = dart.notNull(ihn.stay) && dart.notNull(this.scale.stay) && dart
.notNull(this.offset.stay); |
293 if (out.stay) | 293 if (dart.notNull(out.stay)) |
294 this.execute(); | 294 this.execute(); |
295 } | 295 } |
296 } | 296 } |
297 dart.setSignature(ScaleConstraint, { | 297 dart.setSignature(ScaleConstraint, { |
298 constructors: () => ({ScaleConstraint: [ScaleConstraint, [Variable, Variable
, Variable, Variable, Strength]]}), | 298 constructors: () => ({ScaleConstraint: [ScaleConstraint, [Variable, Variable
, Variable, Variable, Strength]]}), |
299 methods: () => ({execute: [dart.void, []]}) | 299 methods: () => ({execute: [dart.void, []]}) |
300 }); | 300 }); |
301 class EqualityConstraint extends BinaryConstraint { | 301 class EqualityConstraint extends BinaryConstraint { |
302 EqualityConstraint(v1, v2, strength) { | 302 EqualityConstraint(v1, v2, strength) { |
303 super.BinaryConstraint(v1, v2, strength); | 303 super.BinaryConstraint(v1, v2, strength); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 while (dart.notNull(todo.length) > 0) { | 408 while (dart.notNull(todo.length) > 0) { |
409 let v = todo[dartx.removeLast](); | 409 let v = todo[dartx.removeLast](); |
410 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { | 410 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { |
411 let c = v.constraints[dartx.get](i); | 411 let c = v.constraints[dartx.get](i); |
412 if (!dart.notNull(c.isSatisfied())) | 412 if (!dart.notNull(c.isSatisfied())) |
413 unsatisfied[dartx.add](c); | 413 unsatisfied[dartx.add](c); |
414 } | 414 } |
415 let determining = v.determinedBy; | 415 let determining = v.determinedBy; |
416 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { | 416 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { |
417 let next = v.constraints[dartx.get](i); | 417 let next = v.constraints[dartx.get](i); |
418 if (dart.notNull(!dart.equals(next, determining)) && dart.notNull(next
.isSatisfied())) { | 418 if (!dart.equals(next, determining) && dart.notNull(next.isSatisfied()
)) { |
419 next.recalculate(); | 419 next.recalculate(); |
420 todo[dartx.add](next.output()); | 420 todo[dartx.add](next.output()); |
421 } | 421 } |
422 } | 422 } |
423 } | 423 } |
424 return unsatisfied; | 424 return unsatisfied; |
425 } | 425 } |
426 addConstraintsConsumingTo(v, coll) { | 426 addConstraintsConsumingTo(v, coll) { |
427 let determining = v.determinedBy; | 427 let determining = v.determinedBy; |
428 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i =
dart.notNull(i) + 1) { | 428 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i =
dart.notNull(i) + 1) { |
429 let c = v.constraints[dartx.get](i); | 429 let c = v.constraints[dartx.get](i); |
430 if (dart.notNull(!dart.equals(c, determining)) && dart.notNull(c.isSatis
fied())) | 430 if (!dart.equals(c, determining) && dart.notNull(c.isSatisfied())) |
431 coll[dartx.add](c); | 431 coll[dartx.add](c); |
432 } | 432 } |
433 } | 433 } |
434 } | 434 } |
435 dart.setSignature(Planner, { | 435 dart.setSignature(Planner, { |
436 methods: () => ({ | 436 methods: () => ({ |
437 incrementalAdd: [dart.void, [Constraint]], | 437 incrementalAdd: [dart.void, [Constraint]], |
438 incrementalRemove: [dart.void, [Constraint]], | 438 incrementalRemove: [dart.void, [Constraint]], |
439 newMark: [core.int, []], | 439 newMark: [core.int, []], |
440 makePlan: [Plan, [core.List$(Constraint)]], | 440 makePlan: [Plan, [core.List$(Constraint)]], |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 exports.BinaryConstraint = BinaryConstraint; | 556 exports.BinaryConstraint = BinaryConstraint; |
557 exports.ScaleConstraint = ScaleConstraint; | 557 exports.ScaleConstraint = ScaleConstraint; |
558 exports.EqualityConstraint = EqualityConstraint; | 558 exports.EqualityConstraint = EqualityConstraint; |
559 exports.Variable = Variable; | 559 exports.Variable = Variable; |
560 exports.Planner = Planner; | 560 exports.Planner = Planner; |
561 exports.Plan = Plan; | 561 exports.Plan = Plan; |
562 exports.chainTest = chainTest; | 562 exports.chainTest = chainTest; |
563 exports.projectionTest = projectionTest; | 563 exports.projectionTest = projectionTest; |
564 exports.change = change; | 564 exports.change = change; |
565 })(DeltaBlue, BenchmarkBase, core); | 565 })(DeltaBlue, BenchmarkBase, core); |
OLD | NEW |