Remove alloc method

This commit is contained in:
Yota Toyama
2019-04-14 06:06:22 +00:00
parent 4d54e545f1
commit 61d712fbdf
3 changed files with 15 additions and 14 deletions

View File

@@ -1,14 +1,17 @@
extern crate bdwgc_allocator; extern crate bdwgc_allocator;
use bdwgc_allocator::Allocator;
use std::alloc::{GlobalAlloc, Layout};
#[global_allocator] #[global_allocator]
static GLOBAL_ALLOCATOR: bdwgc_allocator::Allocator = bdwgc_allocator::Allocator; static GLOBAL_ALLOCATOR: Allocator = Allocator;
fn main() { fn main() {
unsafe { bdwgc_allocator::Allocator::initialize() } unsafe { Allocator::initialize() }
let mut _n = bdwgc_allocator::Allocator::alloc(2 ^ 8); let mut _n = unsafe { GLOBAL_ALLOCATOR.alloc(Layout::from_size_align(2 ^ 8, 8).unwrap()) };
loop { loop {
_n = bdwgc_allocator::Allocator::alloc(2 ^ 8) _n = unsafe { GLOBAL_ALLOCATOR.alloc(Layout::from_size_align(2 ^ 8, 8).unwrap()) };
} }
} }

View File

@@ -1,18 +1,21 @@
extern crate bdwgc_allocator; extern crate bdwgc_allocator;
use bdwgc_allocator::Allocator;
use std::alloc::{GlobalAlloc, Layout};
#[global_allocator] #[global_allocator]
static GLOBAL_ALLOCATOR: bdwgc_allocator::Allocator = bdwgc_allocator::Allocator; static GLOBAL_ALLOCATOR: Allocator = Allocator;
fn main() { fn main() {
unsafe { bdwgc_allocator::Allocator::initialize() } unsafe { Allocator::initialize() }
let handle = std::thread::spawn(move || { let handle = std::thread::spawn(move || {
bdwgc_allocator::Allocator::register_current_thread().unwrap(); Allocator::register_current_thread().unwrap();
let mut _n = bdwgc_allocator::Allocator::alloc(2 ^ 8); let mut _n = unsafe { GLOBAL_ALLOCATOR.alloc(Layout::from_size_align(2 ^ 8, 8).unwrap()) };
loop { loop {
_n = bdwgc_allocator::Allocator::alloc(2 ^ 8) _n = unsafe { GLOBAL_ALLOCATOR.alloc(Layout::from_size_align(2 ^ 8, 8).unwrap()) }
} }
}); });

View File

@@ -6,7 +6,6 @@ use libc::{c_int, c_void, size_t};
use std::alloc::{GlobalAlloc, Layout}; use std::alloc::{GlobalAlloc, Layout};
const GC_SUCCESS: c_int = 0; const GC_SUCCESS: c_int = 0;
const ALLOC_ALIGN: usize = 8;
#[repr(C)] #[repr(C)]
struct GCStackBase { struct GCStackBase {
@@ -51,10 +50,6 @@ impl Allocator {
pub fn unregister_current_thread() { pub fn unregister_current_thread() {
unsafe { GC_unregister_my_thread() } unsafe { GC_unregister_my_thread() }
} }
pub fn alloc(size: usize) -> *mut u8 {
unsafe { Allocator.alloc(Layout::from_size_align_unchecked(size, ALLOC_ALIGN)) }
}
} }
unsafe impl GlobalAlloc for Allocator { unsafe impl GlobalAlloc for Allocator {