MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / append_block

Function append_block

cranelift/codegen/src/ir/layout.rs:863–934  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

861
862 #[test]
863 fn append_block() {
864 let mut layout = Layout::new();
865 let e0 = Block::new(0);
866 let e1 = Block::new(1);
867 let e2 = Block::new(2);
868
869 {
870 let imm = &layout;
871 assert!(!imm.is_block_inserted(e0));
872 assert!(!imm.is_block_inserted(e1));
873 }
874 verify(&mut layout, &[]);
875
876 layout.append_block(e1);
877 assert!(!layout.is_block_inserted(e0));
878 assert!(layout.is_block_inserted(e1));
879 assert!(!layout.is_block_inserted(e2));
880 let v: Vec<Block> = layout.blocks().collect();
881 assert_eq!(v, [e1]);
882
883 layout.append_block(e2);
884 assert!(!layout.is_block_inserted(e0));
885 assert!(layout.is_block_inserted(e1));
886 assert!(layout.is_block_inserted(e2));
887 let v: Vec<Block> = layout.blocks().collect();
888 assert_eq!(v, [e1, e2]);
889
890 layout.append_block(e0);
891 assert!(layout.is_block_inserted(e0));
892 assert!(layout.is_block_inserted(e1));
893 assert!(layout.is_block_inserted(e2));
894 let v: Vec<Block> = layout.blocks().collect();
895 assert_eq!(v, [e1, e2, e0]);
896
897 {
898 let imm = &layout;
899 let mut v = Vec::new();
900 for e in imm {
901 v.push(e);
902 }
903 assert_eq!(v, [e1, e2, e0]);
904 }
905
906 // Test cursor positioning.
907 let mut cur = LayoutCursor::new(&mut layout);
908 assert_eq!(cur.position(), CursorPosition::Nowhere);
909 assert_eq!(cur.next_inst(), None);
910 assert_eq!(cur.position(), CursorPosition::Nowhere);
911 assert_eq!(cur.prev_inst(), None);
912 assert_eq!(cur.position(), CursorPosition::Nowhere);
913
914 assert_eq!(cur.next_block(), Some(e1));
915 assert_eq!(cur.position(), CursorPosition::Before(e1));
916 assert_eq!(cur.next_inst(), None);
917 assert_eq!(cur.position(), CursorPosition::After(e1));
918 assert_eq!(cur.next_inst(), None);
919 assert_eq!(cur.position(), CursorPosition::After(e1));
920 assert_eq!(cur.next_block(), Some(e2));

Callers

nothing calls this directly

Calls 6

append_blockMethod · 0.80
collectMethod · 0.80
blocksMethod · 0.80
verifyFunction · 0.70
newFunction · 0.50
pushMethod · 0.45

Tested by

no test coverage detected