@@ -49,37 +49,39 @@ pub type Heap = Global;
49
49
#[ allow( non_upper_case_globals) ]
50
50
pub const Heap : Global = Global ;
51
51
52
- unsafe impl GlobalAlloc for Global {
53
- #[ inline]
54
- unsafe fn alloc ( & self , layout : Layout ) -> * mut u8 {
55
- __rust_alloc ( layout. size ( ) , layout. align ( ) )
56
- }
52
+ # [ unstable ( feature = "allocator_api" , issue = "32838" ) ]
53
+ #[ inline]
54
+ pub unsafe fn alloc ( layout : Layout ) -> * mut u8 {
55
+ __rust_alloc ( layout. size ( ) , layout. align ( ) )
56
+ }
57
57
58
- #[ inline]
59
- unsafe fn dealloc ( & self , ptr : * mut u8 , layout : Layout ) {
60
- __rust_dealloc ( ptr, layout. size ( ) , layout. align ( ) )
61
- }
58
+ #[ unstable( feature = "allocator_api" , issue = "32838" ) ]
59
+ #[ inline]
60
+ pub unsafe fn dealloc ( ptr : * mut u8 , layout : Layout ) {
61
+ __rust_dealloc ( ptr, layout. size ( ) , layout. align ( ) )
62
+ }
62
63
63
- #[ inline]
64
- unsafe fn realloc ( & self , ptr : * mut u8 , layout : Layout , new_size : usize ) -> * mut u8 {
65
- __rust_realloc ( ptr, layout. size ( ) , layout. align ( ) , new_size)
66
- }
64
+ #[ unstable( feature = "allocator_api" , issue = "32838" ) ]
65
+ #[ inline]
66
+ pub unsafe fn realloc ( ptr : * mut u8 , layout : Layout , new_size : usize ) -> * mut u8 {
67
+ __rust_realloc ( ptr, layout. size ( ) , layout. align ( ) , new_size)
68
+ }
67
69
68
- # [ inline ]
69
- unsafe fn alloc_zeroed ( & self , layout : Layout ) -> * mut u8 {
70
- __rust_alloc_zeroed ( layout . size ( ) , layout . align ( ) )
71
- }
70
+ # [ unstable ( feature = "allocator_api" , issue = "32838" ) ]
71
+ # [ inline ]
72
+ pub unsafe fn alloc_zeroed ( layout : Layout ) -> * mut u8 {
73
+ __rust_alloc_zeroed ( layout . size ( ) , layout . align ( ) )
72
74
}
73
75
74
76
unsafe impl Alloc for Global {
75
77
#[ inline]
76
78
unsafe fn alloc ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , AllocErr > {
77
- NonNull :: new ( GlobalAlloc :: alloc ( self , layout) ) . ok_or ( AllocErr )
79
+ NonNull :: new ( alloc ( layout) ) . ok_or ( AllocErr )
78
80
}
79
81
80
82
#[ inline]
81
83
unsafe fn dealloc ( & mut self , ptr : NonNull < u8 > , layout : Layout ) {
82
- GlobalAlloc :: dealloc ( self , ptr. as_ptr ( ) , layout)
84
+ dealloc ( ptr. as_ptr ( ) , layout)
83
85
}
84
86
85
87
#[ inline]
@@ -89,12 +91,12 @@ unsafe impl Alloc for Global {
89
91
new_size : usize )
90
92
-> Result < NonNull < u8 > , AllocErr >
91
93
{
92
- NonNull :: new ( GlobalAlloc :: realloc ( self , ptr. as_ptr ( ) , layout, new_size) ) . ok_or ( AllocErr )
94
+ NonNull :: new ( realloc ( ptr. as_ptr ( ) , layout, new_size) ) . ok_or ( AllocErr )
93
95
}
94
96
95
97
#[ inline]
96
98
unsafe fn alloc_zeroed ( & mut self , layout : Layout ) -> Result < NonNull < u8 > , AllocErr > {
97
- NonNull :: new ( GlobalAlloc :: alloc_zeroed ( self , layout) ) . ok_or ( AllocErr )
99
+ NonNull :: new ( alloc_zeroed ( layout) ) . ok_or ( AllocErr )
98
100
}
99
101
}
100
102
@@ -108,7 +110,7 @@ unsafe fn exchange_malloc(size: usize, align: usize) -> *mut u8 {
108
110
align as * mut u8
109
111
} else {
110
112
let layout = Layout :: from_size_align_unchecked ( size, align) ;
111
- let ptr = Global . alloc ( layout) ;
113
+ let ptr = alloc ( layout) ;
112
114
if !ptr. is_null ( ) {
113
115
ptr
114
116
} else {
@@ -126,7 +128,7 @@ pub(crate) unsafe fn box_free<T: ?Sized>(ptr: Unique<T>) {
126
128
// We do not allocate for Box<T> when T is ZST, so deallocation is also not necessary.
127
129
if size != 0 {
128
130
let layout = Layout :: from_size_align_unchecked ( size, align) ;
129
- Global . dealloc ( ptr as * mut u8 , layout) ;
131
+ dealloc ( ptr as * mut u8 , layout) ;
130
132
}
131
133
}
132
134
0 commit comments