Commit 68d3e70
committed
cranelift/pulley: assert continuation has single predecessor (debug only)
Make the structural invariant explicit: the funcref-dispatch fusion
absorbs the two `VMFuncRef` field loads from the continuation block,
which is only sound when the continuation has exactly one
predecessor (the brif we're replacing). Build a `ControlFlowGraph`
in `pre_lower_pulley` and `debug_assert_eq!(n_preds, 1)` before
sinking.
Both the CFG construction and the assertion are gated on
`#[cfg(debug_assertions)]` so they compile to nothing in release
builds (no runtime overhead).1 parent 80b51f7 commit 68d3e70
14 files changed
Lines changed: 622 additions & 402 deletions
File tree
- pulley/src
- tests
- all
- disas
- pulley
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
410 | | - | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
411 | 415 | | |
412 | 416 | | |
413 | 417 | | |
414 | 418 | | |
415 | | - | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
416 | 424 | | |
417 | 425 | | |
418 | 426 | | |
| |||
422 | 430 | | |
423 | 431 | | |
424 | 432 | | |
425 | | - | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
426 | 438 | | |
427 | 439 | | |
428 | 440 | | |
429 | 441 | | |
430 | | - | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
431 | 447 | | |
432 | 448 | | |
433 | 449 | | |
| |||
482 | 498 | | |
483 | 499 | | |
484 | 500 | | |
485 | | - | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
486 | 508 | | |
487 | 509 | | |
488 | 510 | | |
489 | 511 | | |
490 | | - | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
491 | 519 | | |
492 | 520 | | |
493 | 521 | | |
| |||
497 | 525 | | |
498 | 526 | | |
499 | 527 | | |
500 | | - | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
501 | 535 | | |
502 | 536 | | |
503 | 537 | | |
504 | 538 | | |
505 | | - | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
506 | 546 | | |
507 | 547 | | |
508 | 548 | | |
| |||
513 | 553 | | |
514 | 554 | | |
515 | 555 | | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
522 | 562 | | |
523 | 563 | | |
524 | 564 | | |
| |||
559 | 599 | | |
560 | 600 | | |
561 | 601 | | |
562 | | - | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
563 | 610 | | |
564 | 611 | | |
565 | 612 | | |
566 | 613 | | |
567 | | - | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
568 | 622 | | |
569 | 623 | | |
570 | 624 | | |
| |||
574 | 628 | | |
575 | 629 | | |
576 | 630 | | |
577 | | - | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
578 | 639 | | |
579 | 640 | | |
580 | 641 | | |
581 | 642 | | |
582 | | - | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
583 | 651 | | |
584 | 652 | | |
585 | 653 | | |
| |||
589 | 657 | | |
590 | 658 | | |
591 | 659 | | |
592 | | - | |
593 | | - | |
594 | | - | |
595 | | - | |
596 | | - | |
597 | | - | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
598 | 666 | | |
599 | 667 | | |
600 | 668 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
460 | 460 | | |
461 | 461 | | |
462 | 462 | | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
463 | 492 | | |
464 | 493 | | |
465 | 494 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2474 | 2474 | | |
2475 | 2475 | | |
2476 | 2476 | | |
2477 | | - | |
2478 | | - | |
| 2477 | + | |
| 2478 | + | |
| 2479 | + | |
| 2480 | + | |
| 2481 | + | |
| 2482 | + | |
| 2483 | + | |
| 2484 | + | |
2479 | 2485 | | |
2480 | 2486 | | |
2481 | 2487 | | |
| |||
2504 | 2510 | | |
2505 | 2511 | | |
2506 | 2512 | | |
2507 | | - | |
2508 | | - | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
2509 | 2521 | | |
2510 | 2522 | | |
2511 | 2523 | | |
| |||
2528 | 2540 | | |
2529 | 2541 | | |
2530 | 2542 | | |
2531 | | - | |
2532 | | - | |
| 2543 | + | |
| 2544 | + | |
| 2545 | + | |
| 2546 | + | |
| 2547 | + | |
| 2548 | + | |
| 2549 | + | |
| 2550 | + | |
2533 | 2551 | | |
2534 | 2552 | | |
2535 | 2553 | | |
| |||
2553 | 2571 | | |
2554 | 2572 | | |
2555 | 2573 | | |
2556 | | - | |
2557 | | - | |
| 2574 | + | |
| 2575 | + | |
| 2576 | + | |
| 2577 | + | |
| 2578 | + | |
| 2579 | + | |
| 2580 | + | |
| 2581 | + | |
2558 | 2582 | | |
2559 | 2583 | | |
2560 | 2584 | | |
| |||
2590 | 2614 | | |
2591 | 2615 | | |
2592 | 2616 | | |
2593 | | - | |
2594 | | - | |
| 2617 | + | |
| 2618 | + | |
| 2619 | + | |
| 2620 | + | |
| 2621 | + | |
| 2622 | + | |
| 2623 | + | |
| 2624 | + | |
2595 | 2625 | | |
2596 | 2626 | | |
2597 | 2627 | | |
| |||
2621 | 2651 | | |
2622 | 2652 | | |
2623 | 2653 | | |
2624 | | - | |
2625 | | - | |
| 2654 | + | |
| 2655 | + | |
| 2656 | + | |
| 2657 | + | |
| 2658 | + | |
| 2659 | + | |
| 2660 | + | |
| 2661 | + | |
2626 | 2662 | | |
2627 | 2663 | | |
2628 | 2664 | | |
| |||
2646 | 2682 | | |
2647 | 2683 | | |
2648 | 2684 | | |
2649 | | - | |
2650 | | - | |
| 2685 | + | |
| 2686 | + | |
| 2687 | + | |
| 2688 | + | |
| 2689 | + | |
| 2690 | + | |
| 2691 | + | |
| 2692 | + | |
2651 | 2693 | | |
2652 | 2694 | | |
2653 | 2695 | | |
| |||
2676 | 2718 | | |
2677 | 2719 | | |
2678 | 2720 | | |
2679 | | - | |
2680 | | - | |
| 2721 | + | |
| 2722 | + | |
| 2723 | + | |
| 2724 | + | |
| 2725 | + | |
| 2726 | + | |
| 2727 | + | |
| 2728 | + | |
2681 | 2729 | | |
2682 | 2730 | | |
2683 | 2731 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
729 | 729 | | |
730 | 730 | | |
731 | 731 | | |
732 | | - | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
733 | 737 | | |
734 | 738 | | |
735 | 739 | | |
| |||
782 | 786 | | |
783 | 787 | | |
784 | 788 | | |
785 | | - | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
786 | 794 | | |
787 | 795 | | |
788 | 796 | | |
| |||
0 commit comments