Skip to content

Commit 71055a9

Browse files
committed
Update with a stable GlobalAlloc trait
1 parent fb912c7 commit 71055a9

File tree

3 files changed

+31
-30
lines changed

3 files changed

+31
-30
lines changed

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ sudo: false
33

44
matrix:
55
include:
6-
- rust: stable
76
- rust: beta
87
- rust: nightly
98
- rust: nightly

src/global.rs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,77 @@
1-
use core::alloc::{Alloc, Layout, GlobalAlloc, AllocErr, Opaque};
1+
use core::alloc::{Layout, GlobalAlloc};
22
use core::ops::{Deref, DerefMut};
3+
#[cfg(feature = "allocator-api")]
34
use core::ptr::NonNull;
5+
#[cfg(feature = "allocator-api")]
6+
use core::alloc::{AllocErr, Alloc};
47

58
use Dlmalloc;
69

710
pub struct GlobalDlmalloc;
811

912
unsafe impl GlobalAlloc for GlobalDlmalloc {
1013
#[inline]
11-
unsafe fn alloc(&self, layout: Layout) -> *mut Opaque {
12-
<Dlmalloc>::malloc(&mut get(), layout.size(), layout.align()) as *mut Opaque
14+
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
15+
<Dlmalloc>::malloc(&mut get(), layout.size(), layout.align())
1316
}
1417

1518
#[inline]
16-
unsafe fn dealloc(&self, ptr: *mut Opaque, layout: Layout) {
17-
<Dlmalloc>::free(&mut get(), ptr as *mut u8, layout.size(), layout.align())
19+
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
20+
<Dlmalloc>::free(&mut get(), ptr, layout.size(), layout.align())
1821
}
1922

2023
#[inline]
21-
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut Opaque {
22-
<Dlmalloc>::calloc(&mut get(), layout.size(), layout.align()) as *mut Opaque
24+
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
25+
<Dlmalloc>::calloc(&mut get(), layout.size(), layout.align())
2326
}
2427

2528
#[inline]
2629
unsafe fn realloc(
2730
&self,
28-
ptr: *mut Opaque,
31+
ptr: *mut u8,
2932
layout: Layout,
3033
new_size: usize
31-
) -> *mut Opaque {
34+
) -> *mut u8 {
3235
<Dlmalloc>::realloc(
3336
&mut get(),
34-
ptr as *mut u8,
37+
ptr,
3538
layout.size(),
3639
layout.align(),
3740
new_size,
38-
) as *mut Opaque
41+
)
3942
}
4043
}
4144

45+
#[cfg(feature = "allocator-api")]
4246
unsafe impl Alloc for GlobalDlmalloc {
4347
#[inline]
4448
unsafe fn alloc(
4549
&mut self,
4650
layout: Layout
47-
) -> Result<NonNull<Opaque>, AllocErr> {
51+
) -> Result<NonNull<u8>, AllocErr> {
4852
get().alloc(layout)
4953
}
5054

5155
#[inline]
52-
unsafe fn dealloc(&mut self, ptr: NonNull<Opaque>, layout: Layout) {
56+
unsafe fn dealloc(&mut self, ptr: NonNull<u8>, layout: Layout) {
5357
get().dealloc(ptr, layout)
5458
}
5559

5660
#[inline]
5761
unsafe fn realloc(
5862
&mut self,
59-
ptr: NonNull<Opaque>,
63+
ptr: NonNull<u8>,
6064
layout: Layout,
6165
new_size: usize
62-
) -> Result<NonNull<Opaque>, AllocErr> {
66+
) -> Result<NonNull<u8>, AllocErr> {
6367
Alloc::realloc(&mut *get(), ptr, layout, new_size)
6468
}
6569

6670
#[inline]
6771
unsafe fn alloc_zeroed(
6872
&mut self,
6973
layout: Layout
70-
) -> Result<NonNull<Opaque>, AllocErr> {
74+
) -> Result<NonNull<u8>, AllocErr> {
7175
get().alloc_zeroed(layout)
7276
}
7377
}

src/lib.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@
44
#![no_std]
55

66
#[cfg(feature = "allocator-api")]
7-
use core::alloc::{Alloc, Layout, AllocErr, Opaque};
7+
use core::alloc::{Alloc, Layout, AllocErr};
88
use core::cmp;
99
use core::ptr;
1010

11-
#[cfg(feature = "allocator-api")]
1211
pub use self::global::GlobalDlmalloc;
1312

14-
#[cfg(feature = "allocator-api")]
1513
mod global;
1614
mod dlmalloc;
1715

@@ -86,39 +84,39 @@ unsafe impl Alloc for Dlmalloc {
8684
unsafe fn alloc(
8785
&mut self,
8886
layout: Layout
89-
) -> Result<ptr::NonNull<Opaque>, AllocErr> {
87+
) -> Result<ptr::NonNull<u8>, AllocErr> {
9088
let ptr = <Dlmalloc>::malloc(self, layout.size(), layout.align());
91-
ptr::NonNull::new(ptr as *mut Opaque).ok_or(AllocErr)
89+
ptr::NonNull::new(ptr).ok_or(AllocErr)
9290
}
9391

9492
#[inline]
95-
unsafe fn dealloc(&mut self, ptr: ptr::NonNull<Opaque>, layout: Layout) {
96-
<Dlmalloc>::free(self, ptr.as_ptr() as *mut u8, layout.size(), layout.align())
93+
unsafe fn dealloc(&mut self, ptr: ptr::NonNull<u8>, layout: Layout) {
94+
<Dlmalloc>::free(self, ptr.as_ptr(), layout.size(), layout.align())
9795
}
9896

9997
#[inline]
10098
unsafe fn realloc(
10199
&mut self,
102-
ptr: ptr::NonNull<Opaque>,
100+
ptr: ptr::NonNull<u8>,
103101
layout: Layout,
104102
new_size: usize
105-
) -> Result<ptr::NonNull<Opaque>, AllocErr> {
103+
) -> Result<ptr::NonNull<u8>, AllocErr> {
106104
let ptr = <Dlmalloc>::realloc(
107105
self,
108-
ptr.as_ptr() as *mut u8,
106+
ptr.as_ptr(),
109107
layout.size(),
110108
layout.align(),
111109
new_size,
112110
);
113-
ptr::NonNull::new(ptr as *mut Opaque).ok_or(AllocErr)
111+
ptr::NonNull::new(ptr).ok_or(AllocErr)
114112
}
115113

116114
#[inline]
117115
unsafe fn alloc_zeroed(
118116
&mut self,
119117
layout: Layout
120-
) -> Result<ptr::NonNull<Opaque>, AllocErr> {
118+
) -> Result<ptr::NonNull<u8>, AllocErr> {
121119
let ptr = <Dlmalloc>::calloc(self, layout.size(), layout.align());
122-
ptr::NonNull::new(ptr as *mut Opaque).ok_or(AllocErr)
120+
ptr::NonNull::new(ptr).ok_or(AllocErr)
123121
}
124122
}

0 commit comments

Comments
 (0)