1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
use Page;
use StackBucket;
// #[test]
// fn test_region() {
// use memory::bucket::BUCKET_PAGES;
// use memory::heap::Heap;
// unsafe {
// let mut heap = Heap::create();
// let root_stack_bucket = StackBucket::create(&mut heap);
// let mut r1 = Region::create_from_page(&*Page::get(root_stack_bucket as usize));
// //println!("r1.page:{:X}", r1.page as *mut Page as usize);
// let one = r1.new(1);
// //println!("one:{:X}", one as *mut i32 as usize);
// assert_eq!(*one, 1);
// let two = r1.new(2);
// //println!("two:{:X}", two as *mut i32 as usize);
// assert_eq!(*two, 2);
// {
// let mut r2a = Region::create(&r1);
// //println!("r2a.page:{:X}", r2a.page as *mut Page as usize);
// let three = r2a.new(3);
// //println!("three:{:X}", three as *mut i32 as usize);
// assert_eq!(*three, 3);
// let four = r2a.new(4);
// //println!("four:{:X}", four as *mut i32 as usize);
// assert_eq!(*four, 4);
// assert_eq!(*three, 3);
// let five = r2a.new(5);
// //println!("five:{:X}", five as *mut i32 as usize);
// assert_eq!(*five, 5);
// assert_eq!(*four, 4);
// assert_eq!(*three, 3);
// }
// {
// let mut r2b = Region::create(&r1);
// //println!("r2b.page:{:X}", r2b.page as *mut Page as usize);
// let six = r2b.new(6);
// //println!("six:{:X}", six as *mut i32 as usize);
// assert_eq!(*six, 6);
// let seven = r2b.new(7);
// //println!("seven:{:X}", seven as *mut i32 as usize);
// assert_eq!(*seven, 7);
// assert_eq!(*six, 6);
// }
// // println!("one:{:X}", one as *mut i32 as usize);
// // println!("one value: {}", *one);
// assert_eq!(*one, 1);
// assert_eq!(*two, 2);
// // (*root_stack_bucket).deallocate();
// }
// unsafe {
// use memory::heap::Heap;
// let mut heap = Heap::create();
// let root_stack_bucket = StackBucket::create(&mut heap);
// let mut r = Region::create_from_page(&*Page::get(root_stack_bucket as usize));
// for _ in 1..BUCKET_PAGES * 2 {
// r = Region::create(&r);
// }
// //(*root_stack_bucket).deallocate();
// }
// }