@@ -13,23 +13,20 @@ pub struct S {
1313 #[ offset( 8 ) ]
1414 pub v : Value < Vec < i32 > > ,
1515 #[ offset( 32 ) ]
16- pub s : Value < Vec < u8 > > ,
17- #[ offset( 64 ) ]
1816 pub m : BTreeMap < i32 , Value < i32 > > ,
1917}
2018impl Clone for S {
2119 fn clone ( & self ) -> Self {
2220 Self {
2321 tag : self . tag . clone ( ) ,
2422 v : Rc :: new ( RefCell :: new ( ( * self . v . borrow ( ) ) . clone ( ) ) ) ,
25- s : Rc :: new ( RefCell :: new ( ( * self . s . borrow ( ) ) . clone ( ) ) ) ,
2623 m : self . m . clone ( ) ,
2724 }
2825 }
2926}
3027impl ByteRepr for S {
3128 fn byte_size ( ) -> usize {
32- 112
29+ 80
3330 }
3431}
3532pub fn add_0 ( v : Ptr < Vec < i32 > > , k : i32 ) {
@@ -40,25 +37,7 @@ pub fn add_0(v: Ptr<Vec<i32>>, k: i32) {
4037 ( * v. borrow ( ) ) . with_mut ( |__v : & mut Vec < i32 > | __v. push ( a0_clone) )
4138 } ;
4239}
43- pub fn append_1 ( s : Ptr < Vec < u8 > > , t : Ptr < u8 > , n : usize ) {
44- let s: Value < Ptr < Vec < u8 > > > = Rc :: new ( RefCell :: new ( s) ) ;
45- let t: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new ( t) ) ;
46- let n: Value < usize > = Rc :: new ( RefCell :: new ( n) ) ;
47- {
48- ( ( * s. borrow ( ) ) . clone ( ) as Ptr < Vec < u8 > > ) . with_mut ( |__v : & mut Vec < u8 > | {
49- __v. pop ( ) ;
50- __v. extend (
51- ( * t. borrow ( ) )
52- . clone ( )
53- . map ( |c| c. read ( ) )
54- . take ( ( * n. borrow ( ) ) as usize ) ,
55- ) ;
56- __v. push ( 0 ) ;
57- } ) ;
58- ( ( * s. borrow ( ) ) . clone ( ) as Ptr < Vec < u8 > > )
59- } ;
60- }
61- pub fn put_2 ( m : Ptr < BTreeMap < i32 , Value < i32 > > > , k : i32 , v : i32 ) {
40+ pub fn put_1 ( m : Ptr < BTreeMap < i32 , Value < i32 > > > , k : i32 , v : i32 ) {
6241 let m: Value < Ptr < BTreeMap < i32 , Value < i32 > > > > = Rc :: new ( RefCell :: new ( m) ) ;
6342 let k: Value < i32 > = Rc :: new ( RefCell :: new ( k) ) ;
6443 let v: Value < i32 > = Rc :: new ( RefCell :: new ( v) ) ;
@@ -70,24 +49,17 @@ pub fn put_2(m: Ptr<BTreeMap<i32, Value<i32>>>, k: i32, v: i32) {
7049 } )
7150 . write ( ( * v. borrow ( ) ) ) ;
7251}
73- pub fn run_3 ( h : Ptr < S > ) {
52+ pub fn run_2 ( h : Ptr < S > ) {
7453 let h: Value < Ptr < S > > = Rc :: new ( RefCell :: new ( h) ) ;
7554 ( {
7655 let _v: Ptr < Vec < i32 > > = ( ( * h. borrow ( ) ) . with ( |__s| __s. v . clone ( ) ) . as_pointer ( ) ) ;
7756 let _k: i32 = ( * h. borrow ( ) ) . with ( |__s| __s. tag ) ;
7857 add_0 ( _v, _k)
7958 } ) ;
80- ( {
81- append_1 (
82- ( ( * h. borrow ( ) ) . with ( |__s| __s. s . clone ( ) ) . as_pointer ( ) ) ,
83- Ptr :: < u8 > :: from_string_literal ( b"ab" ) ,
84- 2_usize ,
85- )
86- } ) ;
8759 ( {
8860 let _m: Ptr < BTreeMap < i32 , Value < i32 > > > = ( field_ptr ! ( ( * h. borrow( ) ) , m) ) ;
8961 let _k: i32 = ( * h. borrow ( ) ) . with ( |__s| __s. tag ) ;
90- put_2 ( _m, _k, 2 )
62+ put_1 ( _m, _k, 2 )
9163 } ) ;
9264 let pv: Value < Ptr < Vec < i32 > > > = Rc :: new ( RefCell :: new (
9365 ( ( * h. borrow ( ) ) . with ( |__s| __s. v . clone ( ) ) . as_pointer ( ) ) ,
@@ -107,17 +79,6 @@ pub fn run_3(h: Ptr<S>) {
10779 . read( ) )
10880 == 1 )
10981 ) ;
110- assert ! (
111- ( * ( * h. borrow( ) ) . with( |__s| __s. s. clone( ) ) . borrow( ) )
112- . iter( )
113- . copied( )
114- . take(
115- ( * ( * h. borrow( ) ) . with( |__s| __s. s. clone( ) ) . borrow( ) )
116- . len( )
117- . saturating_sub( 1 )
118- )
119- . eq( Ptr :: <u8 >:: from_string_literal( b"ab" ) . to_c_string_iterator( ) )
120- ) ;
12182 assert ! (
12283 ( ( ( field_ptr!( ( * h. borrow( ) ) , m) as Ptr <BTreeMap <i32 , Value <i32 >>>)
12384 . with_mut( |__v: & mut BTreeMap <i32 , Value <i32 >>| {
@@ -137,10 +98,10 @@ pub fn main() {
13798fn main_0 ( ) -> i32 {
13899 let local: Value < S > = Rc :: new ( RefCell :: new ( <S >:: default ( ) ) ) ;
139100 ( * local. borrow_mut ( ) ) . tag = 7 ;
140- ( { run_3 ( ( local. as_pointer ( ) ) ) } ) ;
101+ ( { run_2 ( ( local. as_pointer ( ) ) ) } ) ;
141102 let heap: Value < Ptr < S > > = Rc :: new ( RefCell :: new ( Ptr :: alloc ( <S >:: default ( ) ) ) ) ;
142103 field ! ( ( * heap. borrow( ) ) , tag) . write ( 7 ) ;
143- ( { run_3 ( ( * heap. borrow ( ) ) . clone ( ) ) } ) ;
104+ ( { run_2 ( ( * heap. borrow ( ) ) . clone ( ) ) } ) ;
144105 ( * heap. borrow ( ) ) . delete ( ) ;
145106 return 0 ;
146107}
0 commit comments