Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: test/codegen/expect/DeltaBlue.js

Issue 1178523004: fixes #215, removes special case for length (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698