OLD | NEW |
1 dart.library('DeltaBlue', null, /* Imports */[ | 1 dart.library('DeltaBlue', null, /* Imports */[ |
2 'BenchmarkBase', | 2 'BenchmarkBase', |
3 'dart/core' | 3 'dart/core' |
4 ], /* Lazy imports */[ | 4 ], /* Lazy imports */[ |
5 ], function(exports, BenchmarkBase, core) { | 5 ], function(exports, BenchmarkBase, core) { |
6 'use strict'; | 6 'use strict'; |
7 function main() { | 7 function main() { |
8 new DeltaBlue().report(); | 8 new DeltaBlue().report(); |
9 } | 9 } |
10 dart.fn(main); | 10 dart.fn(main); |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) | 346 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) |
347 ; | 347 ; |
348 } | 348 } |
349 incrementalRemove(c) { | 349 incrementalRemove(c) { |
350 let out = c.output(); | 350 let out = c.output(); |
351 c.markUnsatisfied(); | 351 c.markUnsatisfied(); |
352 c.removeFromGraph(); | 352 c.removeFromGraph(); |
353 let unsatisfied = this.removePropagateFrom(out); | 353 let unsatisfied = this.removePropagateFrom(out); |
354 let strength = REQUIRED; | 354 let strength = REQUIRED; |
355 do { | 355 do { |
356 for (let i = 0; dart.notNull(i) < dart.notNull(unsatisfied.length); i =
dart.notNull(i) + 1) { | 356 for (let i = 0; dart.notNull(i) < dart.notNull(unsatisfied[dartx.length]
); i = dart.notNull(i) + 1) { |
357 let u = unsatisfied[dartx.get](i); | 357 let u = unsatisfied[dartx.get](i); |
358 if (dart.equals(u.strength, strength)) | 358 if (dart.equals(u.strength, strength)) |
359 this.incrementalAdd(u); | 359 this.incrementalAdd(u); |
360 } | 360 } |
361 strength = strength.nextWeaker(); | 361 strength = strength.nextWeaker(); |
362 } while (!dart.equals(strength, WEAKEST)); | 362 } while (!dart.equals(strength, WEAKEST)); |
363 } | 363 } |
364 newMark() { | 364 newMark() { |
365 return this.currentMark = dart.notNull(this.currentMark) + 1; | 365 return this.currentMark = dart.notNull(this.currentMark) + 1; |
366 } | 366 } |
367 makePlan(sources) { | 367 makePlan(sources) { |
368 let mark = this.newMark(); | 368 let mark = this.newMark(); |
369 let plan = new Plan(); | 369 let plan = new Plan(); |
370 let todo = sources; | 370 let todo = sources; |
371 while (dart.notNull(todo.length) > 0) { | 371 while (dart.notNull(todo[dartx.length]) > 0) { |
372 let c = todo[dartx.removeLast](); | 372 let c = todo[dartx.removeLast](); |
373 if (c.output().mark != mark && dart.notNull(c.inputsKnown(mark))) { | 373 if (c.output().mark != mark && dart.notNull(c.inputsKnown(mark))) { |
374 plan.addConstraint(c); | 374 plan.addConstraint(c); |
375 c.output().mark = mark; | 375 c.output().mark = mark; |
376 this.addConstraintsConsumingTo(c.output(), todo); | 376 this.addConstraintsConsumingTo(c.output(), todo); |
377 } | 377 } |
378 } | 378 } |
379 return plan; | 379 return plan; |
380 } | 380 } |
381 extractPlanFromConstraints(constraints) { | 381 extractPlanFromConstraints(constraints) { |
382 let sources = dart.list([], Constraint); | 382 let sources = dart.list([], Constraint); |
383 for (let i = 0; dart.notNull(i) < dart.notNull(constraints.length); i = da
rt.notNull(i) + 1) { | 383 for (let i = 0; dart.notNull(i) < dart.notNull(constraints[dartx.length]);
i = dart.notNull(i) + 1) { |
384 let c = constraints[dartx.get](i); | 384 let c = constraints[dartx.get](i); |
385 if (dart.notNull(c.isInput()) && dart.notNull(c.isSatisfied())) | 385 if (dart.notNull(c.isInput()) && dart.notNull(c.isSatisfied())) |
386 sources[dartx.add](c); | 386 sources[dartx.add](c); |
387 } | 387 } |
388 return this.makePlan(sources); | 388 return this.makePlan(sources); |
389 } | 389 } |
390 addPropagate(c, mark) { | 390 addPropagate(c, mark) { |
391 let todo = dart.list([c], Constraint); | 391 let todo = dart.list([c], Constraint); |
392 while (dart.notNull(todo.length) > 0) { | 392 while (dart.notNull(todo[dartx.length]) > 0) { |
393 let d = todo[dartx.removeLast](); | 393 let d = todo[dartx.removeLast](); |
394 if (d.output().mark == mark) { | 394 if (d.output().mark == mark) { |
395 this.incrementalRemove(c); | 395 this.incrementalRemove(c); |
396 return false; | 396 return false; |
397 } | 397 } |
398 d.recalculate(); | 398 d.recalculate(); |
399 this.addConstraintsConsumingTo(d.output(), todo); | 399 this.addConstraintsConsumingTo(d.output(), todo); |
400 } | 400 } |
401 return true; | 401 return true; |
402 } | 402 } |
403 removePropagateFrom(out) { | 403 removePropagateFrom(out) { |
404 out.determinedBy = null; | 404 out.determinedBy = null; |
405 out.walkStrength = WEAKEST; | 405 out.walkStrength = WEAKEST; |
406 out.stay = true; | 406 out.stay = true; |
407 let unsatisfied = dart.list([], Constraint); | 407 let unsatisfied = dart.list([], Constraint); |
408 let todo = dart.list([out], Variable); | 408 let todo = dart.list([out], Variable); |
409 while (dart.notNull(todo.length) > 0) { | 409 while (dart.notNull(todo[dartx.length]) > 0) { |
410 let v = todo[dartx.removeLast](); | 410 let v = todo[dartx.removeLast](); |
411 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { | 411 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { |
412 let c = v.constraints[dartx.get](i); | 412 let c = v.constraints[dartx.get](i); |
413 if (!dart.notNull(c.isSatisfied())) | 413 if (!dart.notNull(c.isSatisfied())) |
414 unsatisfied[dartx.add](c); | 414 unsatisfied[dartx.add](c); |
415 } | 415 } |
416 let determining = v.determinedBy; | 416 let determining = v.determinedBy; |
417 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i
= dart.notNull(i) + 1) { | 417 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { |
418 let next = v.constraints[dartx.get](i); | 418 let next = v.constraints[dartx.get](i); |
419 if (!dart.equals(next, determining) && dart.notNull(next.isSatisfied()
)) { | 419 if (!dart.equals(next, determining) && dart.notNull(next.isSatisfied()
)) { |
420 next.recalculate(); | 420 next.recalculate(); |
421 todo[dartx.add](next.output()); | 421 todo[dartx.add](next.output()); |
422 } | 422 } |
423 } | 423 } |
424 } | 424 } |
425 return unsatisfied; | 425 return unsatisfied; |
426 } | 426 } |
427 addConstraintsConsumingTo(v, coll) { | 427 addConstraintsConsumingTo(v, coll) { |
428 let determining = v.determinedBy; | 428 let determining = v.determinedBy; |
429 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints.length); i =
dart.notNull(i) + 1) { | 429 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.length]
); i = dart.notNull(i) + 1) { |
430 let c = v.constraints[dartx.get](i); | 430 let c = v.constraints[dartx.get](i); |
431 if (!dart.equals(c, determining) && dart.notNull(c.isSatisfied())) | 431 if (!dart.equals(c, determining) && dart.notNull(c.isSatisfied())) |
432 coll[dartx.add](c); | 432 coll[dartx.add](c); |
433 } | 433 } |
434 } | 434 } |
435 } | 435 } |
436 dart.setSignature(Planner, { | 436 dart.setSignature(Planner, { |
437 methods: () => ({ | 437 methods: () => ({ |
438 incrementalAdd: [dart.void, [Constraint]], | 438 incrementalAdd: [dart.void, [Constraint]], |
439 incrementalRemove: [dart.void, [Constraint]], | 439 incrementalRemove: [dart.void, [Constraint]], |
440 newMark: [core.int, []], | 440 newMark: [core.int, []], |
441 makePlan: [Plan, [core.List$(Constraint)]], | 441 makePlan: [Plan, [core.List$(Constraint)]], |
442 extractPlanFromConstraints: [Plan, [core.List$(Constraint)]], | 442 extractPlanFromConstraints: [Plan, [core.List$(Constraint)]], |
443 addPropagate: [core.bool, [Constraint, core.int]], | 443 addPropagate: [core.bool, [Constraint, core.int]], |
444 removePropagateFrom: [core.List$(Constraint), [Variable]], | 444 removePropagateFrom: [core.List$(Constraint), [Variable]], |
445 addConstraintsConsumingTo: [dart.void, [Variable, core.List$(Constraint)]] | 445 addConstraintsConsumingTo: [dart.void, [Variable, core.List$(Constraint)]] |
446 }) | 446 }) |
447 }); | 447 }); |
448 class Plan extends core.Object { | 448 class Plan extends core.Object { |
449 Plan() { | 449 Plan() { |
450 this.list = dart.list([], Constraint); | 450 this.list = dart.list([], Constraint); |
451 } | 451 } |
452 addConstraint(c) { | 452 addConstraint(c) { |
453 this.list[dartx.add](c); | 453 this.list[dartx.add](c); |
454 } | 454 } |
455 size() { | 455 size() { |
456 return this.list.length; | 456 return this.list[dartx.length]; |
457 } | 457 } |
458 execute() { | 458 execute() { |
459 for (let i = 0; dart.notNull(i) < dart.notNull(this.list.length); i = dart
.notNull(i) + 1) { | 459 for (let i = 0; dart.notNull(i) < dart.notNull(this.list[dartx.length]); i
= dart.notNull(i) + 1) { |
460 this.list[dartx.get](i).execute(); | 460 this.list[dartx.get](i).execute(); |
461 } | 461 } |
462 } | 462 } |
463 } | 463 } |
464 dart.setSignature(Plan, { | 464 dart.setSignature(Plan, { |
465 methods: () => ({ | 465 methods: () => ({ |
466 addConstraint: [dart.void, [Constraint]], | 466 addConstraint: [dart.void, [Constraint]], |
467 size: [core.int, []], | 467 size: [core.int, []], |
468 execute: [dart.void, []] | 468 execute: [dart.void, []] |
469 }) | 469 }) |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 exports.BinaryConstraint = BinaryConstraint; | 557 exports.BinaryConstraint = BinaryConstraint; |
558 exports.ScaleConstraint = ScaleConstraint; | 558 exports.ScaleConstraint = ScaleConstraint; |
559 exports.EqualityConstraint = EqualityConstraint; | 559 exports.EqualityConstraint = EqualityConstraint; |
560 exports.Variable = Variable; | 560 exports.Variable = Variable; |
561 exports.Planner = Planner; | 561 exports.Planner = Planner; |
562 exports.Plan = Plan; | 562 exports.Plan = Plan; |
563 exports.chainTest = chainTest; | 563 exports.chainTest = chainTest; |
564 exports.projectionTest = projectionTest; | 564 exports.projectionTest = projectionTest; |
565 exports.change = change; | 565 exports.change = change; |
566 }); | 566 }); |
OLD | NEW |