rust/src/rt/memory.h

60 lines
1.5 KiB
C++

// -*- c++ -*-
#ifndef MEMORY_H
#define MEMORY_H
inline void *operator new(size_t size, void *mem) {
return mem;
}
inline void *operator new(size_t size, rust_kernel *kernel) {
return kernel->malloc(size);
}
inline void *operator new(size_t size, rust_task *task) {
return task->malloc(size, memory_region::LOCAL);
}
inline void *operator new[](size_t size, rust_task *task) {
return task->malloc(size, memory_region::LOCAL);
}
inline void *operator new(size_t size, rust_task &task) {
return task.malloc(size, memory_region::LOCAL);
}
inline void *operator new[](size_t size, rust_task &task) {
return task.malloc(size, memory_region::LOCAL);
}
inline void *operator new(size_t size, rust_task *task,
memory_region::memory_region_type type) {
return task->malloc(size, type);
}
inline void *operator new[](size_t size, rust_task *task,
memory_region::memory_region_type type) {
return task->malloc(size, type);
}
inline void *operator new(size_t size, rust_task &task,
memory_region::memory_region_type type) {
return task.malloc(size, type);
}
inline void *operator new[](size_t size, rust_task &task,
memory_region::memory_region_type type) {
return task.malloc(size, type);
}
inline void operator delete(void *mem, rust_task *task) {
task->free(mem, memory_region::LOCAL);
return;
}
inline void operator delete(void *mem, rust_task *task,
memory_region::memory_region_type type) {
task->free(mem, type);
return;
}
#endif /* MEMORY_H */