Skip to content

Commit 90adcb7

Browse files
committed
Merge branch 'master' into vec-decay
2 parents 274417a + ee44be5 commit 90adcb7

3 files changed

Lines changed: 100 additions & 100 deletions

File tree

‎tests/unit/out/refcount/swap_map_no_copy.rs‎

Lines changed: 83 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -212,16 +212,6 @@ impl Owner {
212212
}
213213
}
214214
}
215-
#[derive(Clone, Record, ByteRepr, VaArg, FnPtrArg, Default)]
216-
#[byte_size(96)]
217-
pub struct Maps {
218-
#[offset(0)]
219-
#[byte_size(48)]
220-
pub m1: Map<i32, (Value<i32>, Value<Tracked>)>,
221-
#[offset(48)]
222-
#[byte_size(48)]
223-
pub m2: Map<i32, (Value<i32>, Value<Tracked>)>,
224-
}
225215
pub fn main() {
226216
__cpp2rust_init_globals();
227217
std::process::exit(main_0());
@@ -236,8 +226,8 @@ fn main_0() -> i32 {
236226
({
237227
let _o: Value<Tracked> = Rc::new(RefCell::new(Tracked::new_2({ 10 })));
238228
TrackedImpl::move_assign(
239-
&m1.as_pointer()
240-
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
229+
&(m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).with_mut(
230+
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
241231
__m.get_or_insert_with(1.clone(), || {
242232
(
243233
Rc::new(RefCell::new(1)),
@@ -247,15 +237,16 @@ fn main_0() -> i32 {
247237
.borrow()
248238
.1
249239
.as_pointer()
250-
}),
240+
},
241+
),
251242
_o.as_pointer(),
252243
)
253244
});
254245
({
255246
let _o: Value<Tracked> = Rc::new(RefCell::new(Tracked::new_2({ 20 })));
256247
TrackedImpl::move_assign(
257-
&m1.as_pointer()
258-
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
248+
&(m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).with_mut(
249+
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
259250
__m.get_or_insert_with(2.clone(), || {
260251
(
261252
Rc::new(RefCell::new(2)),
@@ -265,16 +256,17 @@ fn main_0() -> i32 {
265256
.borrow()
266257
.1
267258
.as_pointer()
268-
}),
259+
},
260+
),
269261
_o.as_pointer(),
270262
)
271263
});
272264
let m2: Value<Map<i32, (Value<i32>, Value<Tracked>)>> = Rc::new(RefCell::new(Map::new()));
273265
({
274266
let _o: Value<Tracked> = Rc::new(RefCell::new(Tracked::new_2({ 30 })));
275267
TrackedImpl::move_assign(
276-
&m2.as_pointer()
277-
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
268+
&(m2.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).with_mut(
269+
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
278270
__m.get_or_insert_with(3.clone(), || {
279271
(
280272
Rc::new(RefCell::new(3)),
@@ -284,14 +276,15 @@ fn main_0() -> i32 {
284276
.borrow()
285277
.1
286278
.as_pointer()
287-
}),
279+
},
280+
),
288281
_o.as_pointer(),
289282
)
290283
});
291284
assert!((copies_0.with(|rc| *rc.borrow()) == 0));
292285
cpp_swap!(
293-
m1.as_pointer()
294-
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
286+
(m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).with_mut(
287+
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
295288
__m.get_or_insert_with(1.clone(), || {
296289
(
297290
Rc::new(RefCell::new(1)),
@@ -301,9 +294,10 @@ fn main_0() -> i32 {
301294
.borrow()
302295
.1
303296
.as_pointer()
304-
}),
305-
m1.as_pointer()
306-
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
297+
}
298+
),
299+
(m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).with_mut(
300+
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
307301
__m.get_or_insert_with(2.clone(), || {
308302
(
309303
Rc::new(RefCell::new(2)),
@@ -313,10 +307,11 @@ fn main_0() -> i32 {
313307
.borrow()
314308
.1
315309
.as_pointer()
316-
})
310+
}
311+
)
317312
);
318313
assert!(
319-
(m1.as_pointer()
314+
((m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
320315
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
321316
__m.get_or_insert_with(1.clone(), || {
322317
(
@@ -330,8 +325,7 @@ fn main_0() -> i32 {
330325
})
331326
.with(|__s| __s.v)
332327
== 20)
333-
&& (m1
334-
.as_pointer()
328+
&& ((m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
335329
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
336330
__m.get_or_insert_with(2.clone(), || {
337331
(
@@ -350,8 +344,7 @@ fn main_0() -> i32 {
350344
cpp_swap!(m1.as_pointer(), m2.as_pointer());
351345
assert!(
352346
((*m1.borrow()).len() == 1_usize)
353-
&& (m1
354-
.as_pointer()
347+
&& ((m1.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
355348
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
356349
__m.get_or_insert_with(3.clone(), || {
357350
(
@@ -368,8 +361,7 @@ fn main_0() -> i32 {
368361
);
369362
assert!(
370363
(((*m2.borrow()).len() == 2_usize)
371-
&& (m2
372-
.as_pointer()
364+
&& ((m2.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
373365
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
374366
__m.get_or_insert_with(1.clone(), || {
375367
(
@@ -383,8 +375,7 @@ fn main_0() -> i32 {
383375
})
384376
.with(|__s| __s.v)
385377
== 20))
386-
&& (m2
387-
.as_pointer()
378+
&& ((m2.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
388379
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
389380
__m.get_or_insert_with(2.clone(), || {
390381
(
@@ -428,8 +419,8 @@ fn main_0() -> i32 {
428419
(*vec_.borrow_mut()).push(__init)
429420
};
430421
cpp_swap!(
431-
vec_.as_pointer().decay().offset(0_usize),
432-
vec_.as_pointer().decay().offset(1_usize)
422+
(vec_.as_pointer() as Ptr<Tracked>).offset(0_usize),
423+
(vec_.as_pointer() as Ptr<Tracked>).offset(1_usize)
433424
);
434425
assert!(({ (*vec_.borrow())[0_usize].v } == 5) && ({ (*vec_.borrow())[1_usize].v } == 4));
435426
assert!((copies_0.with(|rc| *rc.borrow()) == 0));
@@ -499,50 +490,74 @@ fn main_0() -> i32 {
499490
));
500491
{
501492
let __init = Tracked::new_2({ 1 });
502-
elem!(grid.as_pointer().decay(), 0_usize)
493+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 0_usize)
503494
.with_mut(|__v: &mut Vec<Tracked>| __v.push(__init))
504495
};
505496
{
506497
let __init = Tracked::new_2({ 2 });
507-
elem!(grid.as_pointer().decay(), 0_usize)
498+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 0_usize)
508499
.with_mut(|__v: &mut Vec<Tracked>| __v.push(__init))
509500
};
510501
{
511502
let __init = Tracked::new_2({ 3 });
512-
elem!(grid.as_pointer().decay(), 1_usize)
503+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 1_usize)
513504
.with_mut(|__v: &mut Vec<Tracked>| __v.push(__init))
514505
};
515506
cpp_swap!(
516-
grid.as_pointer()
517-
.decay()
507+
((grid.as_pointer() as Ptr<Vec<Tracked>>)
518508
.offset(0_usize)
519-
.decay()
509+
.as_pointer() as Ptr<Tracked>)
520510
.offset(1_usize),
521-
grid.as_pointer()
522-
.decay()
511+
((grid.as_pointer() as Ptr<Vec<Tracked>>)
523512
.offset(1_usize)
524-
.decay()
513+
.as_pointer() as Ptr<Tracked>)
525514
.offset(0_usize)
526515
);
527516
assert!(
528-
(index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).with(|__s| __s.v) == 3)
529-
&& (index!(elem!(grid.as_pointer().decay(), 1_usize), 0_usize).with(|__s| __s.v) == 2)
517+
(index!(
518+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 0_usize),
519+
1_usize
520+
)
521+
.with(|__s| __s.v)
522+
== 3)
523+
&& (index!(
524+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 1_usize),
525+
0_usize
526+
)
527+
.with(|__s| __s.v)
528+
== 2)
530529
);
531530
cpp_swap!(
532-
grid.as_pointer().decay().offset(0_usize),
533-
grid.as_pointer().decay().offset(1_usize)
531+
(grid.as_pointer() as Ptr<Vec<Tracked>>).offset(0_usize),
532+
(grid.as_pointer() as Ptr<Vec<Tracked>>).offset(1_usize)
534533
);
535534
assert!(
536-
((*grid.as_pointer().decay().offset(0_usize).upgrade().deref()).len() == 1_usize)
537-
&& (index!(elem!(grid.as_pointer().decay(), 0_usize), 0_usize).with(|__s| __s.v) == 2)
535+
((*((grid.as_pointer() as Ptr<Vec<Tracked>>)
536+
.offset(0_usize)
537+
.as_pointer() as Ptr<Vec<Tracked>>)
538+
.upgrade()
539+
.deref())
540+
.len()
541+
== 1_usize)
542+
&& (index!(
543+
elem!((grid.as_pointer() as Ptr<Vec<Tracked>>), 0_usize),
544+
0_usize
545+
)
546+
.with(|__s| __s.v)
547+
== 2)
538548
);
539549
assert!((copies_0.with(|rc| *rc.borrow()) == 0));
540-
let maps: Value<Maps> = Rc::new(RefCell::new(<Maps>::default()));
550+
let maps: Value<Box<[Map<i32, (Value<i32>, Value<Tracked>)>]>> = Rc::new(RefCell::new(
551+
(0..2)
552+
.map(|_| Map::new())
553+
.collect::<Box<[Map<i32, (Value<i32>, Value<Tracked>)>]>>(),
554+
));
541555
({
542556
let _o: Value<Tracked> = Rc::new(RefCell::new(Tracked::new_2({ 1 })));
543557
TrackedImpl::move_assign(
544-
&field_ptr!(maps.as_pointer(), m1).with_mut(
545-
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
558+
&((maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(0)
559+
as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
560+
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
546561
__m.get_or_insert_with(1.clone(), || {
547562
(
548563
Rc::new(RefCell::new(1)),
@@ -552,16 +567,16 @@ fn main_0() -> i32 {
552567
.borrow()
553568
.1
554569
.as_pointer()
555-
},
556-
),
570+
}),
557571
_o.as_pointer(),
558572
)
559573
});
560574
({
561575
let _o: Value<Tracked> = Rc::new(RefCell::new(Tracked::new_2({ 2 })));
562576
TrackedImpl::move_assign(
563-
&field_ptr!(maps.as_pointer(), m2).with_mut(
564-
|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
577+
&((maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(1)
578+
as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
579+
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
565580
__m.get_or_insert_with(2.clone(), || {
566581
(
567582
Rc::new(RefCell::new(2)),
@@ -571,18 +586,18 @@ fn main_0() -> i32 {
571586
.borrow()
572587
.1
573588
.as_pointer()
574-
},
575-
),
589+
}),
576590
_o.as_pointer(),
577591
)
578592
});
579593
cpp_swap!(
580-
field_ptr!(maps.as_pointer(), m1),
581-
field_ptr!(maps.as_pointer(), m2)
594+
(maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(0),
595+
(maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(1)
582596
);
583597
assert!(
584-
((*maps.borrow()).m1.len() == 1_usize)
585-
&& (field_ptr!(maps.as_pointer(), m1)
598+
((*maps.borrow())[(0) as usize].len() == 1_usize)
599+
&& (((maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(0)
600+
as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
586601
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
587602
__m.get_or_insert_with(2.clone(), || {
588603
(
@@ -598,8 +613,9 @@ fn main_0() -> i32 {
598613
== 2)
599614
);
600615
assert!(
601-
((*maps.borrow()).m2.len() == 1_usize)
602-
&& (field_ptr!(maps.as_pointer(), m2)
616+
((*maps.borrow())[(1) as usize].len() == 1_usize)
617+
&& (((maps.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>).offset(1)
618+
as Ptr<Map<i32, (Value<i32>, Value<Tracked>)>>)
603619
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<Tracked>)>| {
604620
__m.get_or_insert_with(1.clone(), || {
605621
(
@@ -815,7 +831,7 @@ pub trait OwnerImpl {
815831
}
816832
impl OwnerImpl for Ptr<Owner> {
817833
fn move_assign(&self, _a0: Ptr<Owner>) -> Ptr<Owner> {
818-
field_ptr!((*self), p)
834+
(field_ptr!((*self), p) as Ptr<Option<Value<i32>>>)
819835
.write(field!(_a0, p).with_mut(|__v: &mut Option<Value<i32>>| __v.take()));
820836
return (*self).clone();
821837
}

‎tests/unit/out/unsafe/swap_map_no_copy.rs‎

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -271,12 +271,6 @@ impl Owner {
271271
return &mut (*(self as *mut Owner));
272272
}
273273
}
274-
#[repr(C)]
275-
#[derive(Clone, VaArg, FnPtrArg, Default)]
276-
pub struct Maps {
277-
pub m1: UnsafeMap<i32, (i32, Tracked)>,
278-
pub m2: UnsafeMap<i32, (i32, Tracked)>,
279-
}
280274
pub fn main() {
281275
unsafe {
282276
__cpp2rust_init_globals();
@@ -425,40 +419,35 @@ unsafe fn main_0() -> i32 {
425419
cpp_swap_unsafe!(&mut grid[(0_usize)], &mut grid[(1_usize)]);
426420
assert!(((grid[(0_usize)].len()) == (1_usize)) && ((grid[(0_usize)][(0_usize)].v) == (2)));
427421
assert!(((*std::cell::LazyCell::force_mut(&mut *&raw mut copies_0)) == (0)));
428-
let mut maps: Maps = <Maps>::default();
422+
let mut maps: [UnsafeMap<i32, (i32, Tracked)>; 2] =
423+
std::array::from_fn::<_, 2, _>(|_| UnsafeMap::new());
429424
(unsafe {
430425
let mut _o: Tracked = Tracked::new_2({ 1 });
431426
Tracked::move_assign(
432-
&mut (*maps
433-
.m1
434-
.get_or_insert_with(1.clone(), || (1, <Tracked>::default())))
435-
.1,
427+
&mut (*maps[(0) as usize].get_or_insert_with(1.clone(), || (1, <Tracked>::default())))
428+
.1,
436429
&mut _o,
437430
)
438431
});
439432
(unsafe {
440433
let mut _o: Tracked = Tracked::new_2({ 2 });
441434
Tracked::move_assign(
442-
&mut (*maps
443-
.m2
444-
.get_or_insert_with(2.clone(), || (2, <Tracked>::default())))
445-
.1,
435+
&mut (*maps[(1) as usize].get_or_insert_with(2.clone(), || (2, <Tracked>::default())))
436+
.1,
446437
&mut _o,
447438
)
448439
});
449-
cpp_swap_unsafe!(&mut maps.m1, &mut maps.m2);
440+
cpp_swap_unsafe!(&mut maps[(0) as usize], &mut maps[(1) as usize]);
450441
assert!(
451-
((maps.m1.len()) == (1_usize))
452-
&& (((*maps
453-
.m1
442+
((maps[(0) as usize].len()) == (1_usize))
443+
&& (((*maps[(0) as usize]
454444
.get_or_insert_with(2.clone(), || (2, <Tracked>::default())))
455445
.1
456446
.v) == (2))
457447
);
458448
assert!(
459-
((maps.m2.len()) == (1_usize))
460-
&& (((*maps
461-
.m2
449+
((maps[(1) as usize].len()) == (1_usize))
450+
&& (((*maps[(1) as usize]
462451
.get_or_insert_with(1.clone(), || (1, <Tracked>::default())))
463452
.1
464453
.v) == (1))

0 commit comments

Comments
 (0)