Renamed zone::malloc familiy functions.

This commit is contained in:
Takatoshi Kondo 2014-01-26 22:18:26 +00:00
parent d70c44b723
commit beebccd323
17 changed files with 52 additions and 52 deletions

View File

@ -121,7 +121,7 @@ struct define {
void msgpack_object(msgpack::object* o, msgpack::zone* z) const
{
o->type = type::ARRAY;
o->via.array.ptr = static_cast<object*>(z->malloc(sizeof(object)*sizeof...(Args)));
o->via.array.ptr = static_cast<object*>(z->allocate_align(sizeof(object)*sizeof...(Args)));
o->via.array.size = sizeof...(Args);
define_imp<tuple<Args&...>, sizeof...(Args)>::object(o, z, a);

View File

@ -189,7 +189,7 @@ inline void operator<< (
object::with_zone& o,
type::tuple<Args...>& v) {
o.type = type::ARRAY;
o.via.array.ptr = static_cast<object*>(o.zone->malloc(sizeof(object)*sizeof...(Args)));
o.via.array.ptr = static_cast<object*>(o.zone->allocate_align(sizeof(object)*sizeof...(Args)));
o.via.array.size = sizeof...(Args);
TupleToObjectWithZone<decltype(v), sizeof...(Args)>::convert(o, v);
}

View File

@ -155,8 +155,8 @@ public:
public:
static zone* create(size_t chunk_size);
static void destroy(zone* zone);
void* malloc(size_t size);
void* malloc_no_align(size_t size);
void* allocate_align(size_t size);
void* allocate_no_align(size_t size);
void push_finalizer(void (*func)(void*), void* data);
@ -172,12 +172,12 @@ public:
T* allocate(Args... args);
private:
void undo_malloc(size_t size);
void undo_allocate(size_t size);
template <typename T>
static void object_destructor(void* obj);
void* malloc_expand(size_t size);
void* allocate_expand(size_t size);
};
inline zone* zone::create(size_t chunk_size)
@ -200,16 +200,16 @@ inline zone::zone(size_t chunk_size) noexcept:chunk_size_(chunk_size), chunk_lis
{
}
inline void* zone::malloc(size_t size)
inline void* zone::allocate_align(size_t size)
{
return malloc_no_align(
return allocate_no_align(
((size)+((MSGPACK_ZONE_ALIGN)-1)) & ~((MSGPACK_ZONE_ALIGN)-1));
}
inline void* zone::malloc_no_align(size_t size)
inline void* zone::allocate_no_align(size_t size)
{
if(chunk_list_.free_ < size) {
return malloc_expand(size);
return allocate_expand(size);
}
char* ptr = chunk_list_.ptr_;
@ -219,7 +219,7 @@ inline void* zone::malloc_no_align(size_t size)
return ptr;
}
inline void* zone::malloc_expand(size_t size)
inline void* zone::allocate_expand(size_t size)
{
chunk_list* const cl = &chunk_list_;
@ -270,7 +270,7 @@ void zone::object_destructor(void* obj)
reinterpret_cast<T*>(obj)->~T();
}
inline void zone::undo_malloc(size_t size)
inline void zone::undo_allocate(size_t size)
{
chunk_list_.ptr_ -= size;
chunk_list_.free_ += size;
@ -280,18 +280,18 @@ inline void zone::undo_malloc(size_t size)
template <typename T, typename... Args>
T* zone::allocate(Args... args)
{
void* x = malloc(sizeof(T));
void* x = allocate_align(sizeof(T));
try {
finalizer_array_.push(&zone::object_destructor<T>, x);
} catch (...) {
undo_malloc(sizeof(T));
undo_allocate(sizeof(T));
throw;
}
try {
return new (x) T(args...);
} catch (...) {
--finalizer_array_.tail_;
undo_malloc(sizeof(T));
undo_allocate(sizeof(T));
throw;
}
}

View File

@ -118,7 +118,7 @@ struct define<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> {
void msgpack_object(msgpack::object* o, msgpack::zone* z) const
{
o->type = type::ARRAY;
o->via.array.ptr = static_cast<object*>(z->malloc(sizeof(object)*<%=i+1%>));
o->via.array.ptr = static_cast<object*>(z->allocate_align(sizeof(object)*<%=i+1%>));
o->via.array.size = <%=i+1%>;
<%0.upto(i) {|j|%>
o->via.array.ptr[<%=j%>] = object(a<%=j%>, z);<%}%>

View File

@ -57,7 +57,7 @@ inline void operator<< (object::with_zone& o, const std::deque<T>& v)
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();

View File

@ -57,7 +57,7 @@ inline void operator<< (object::with_zone& o, const std::list<T>& v)
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();

View File

@ -78,7 +78,7 @@ inline void operator<< (object::with_zone& o, const type::assoc_vector<K,V>& v)
o.via.map.ptr = nullptr;
o.via.map.size = 0;
} else {
object_kv* p = static_cast<object_kv*>(o.zone->malloc(sizeof(object_kv)*v.size()));
object_kv* p = static_cast<object_kv*>(o.zone->allocate_align(sizeof(object_kv)*v.size()));
object_kv* const pend = p + v.size();
o.via.map.ptr = p;
o.via.map.size = v.size();
@ -134,7 +134,7 @@ inline void operator<< (object::with_zone& o, const std::map<K,V>& v)
o.via.map.ptr = nullptr;
o.via.map.size = 0;
} else {
object_kv* p = static_cast<object_kv*>(o.zone->malloc(sizeof(object_kv)*v.size()));
object_kv* p = static_cast<object_kv*>(o.zone->allocate_align(sizeof(object_kv)*v.size()));
object_kv* const pend = p + v.size();
o.via.map.ptr = p;
o.via.map.size = v.size();
@ -184,7 +184,7 @@ inline void operator<< (object::with_zone& o, const std::multimap<K,V>& v)
o.via.map.ptr = nullptr;
o.via.map.size = 0;
} else {
object_kv* p = static_cast<object_kv*>(o.zone->malloc(sizeof(object_kv)*v.size()));
object_kv* p = static_cast<object_kv*>(o.zone->allocate_align(sizeof(object_kv)*v.size()));
object_kv* const pend = p + v.size();
o.via.map.ptr = p;
o.via.map.size = v.size();

View File

@ -47,7 +47,7 @@ template <typename T1, typename T2>
inline void operator<< (object::with_zone& o, const std::pair<T1, T2>& v)
{
o.type = type::ARRAY;
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*2));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*2));
o.via.array.ptr = p;
o.via.array.size = 2;
p[0] = object(v.first, o.zone);

View File

@ -56,7 +56,7 @@ inline void operator<< (object::with_zone& o, const std::set<T>& v)
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();
@ -102,7 +102,7 @@ inline void operator<< (object::with_zone& o, const std::multiset<T>& v)
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();

View File

@ -42,7 +42,7 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const std::string& v)
inline void operator<< (object::with_zone& o, const std::string& v)
{
o.type = type::BIN;
char* ptr = (char*)o.zone->malloc(v.size());
char* ptr = (char*)o.zone->allocate_align(v.size());
o.via.bin.ptr = ptr;
o.via.bin.size = (uint32_t)v.size();
memcpy(ptr, v.data(), v.size());

View File

@ -77,7 +77,7 @@ inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_m
o.via.map.ptr = nullptr;
o.via.map.size = 0;
} else {
object_kv* p = static_cast<object_kv*>(o.zone->malloc(sizeof(object_kv)*v.size()));
object_kv* p = static_cast<object_kv*>(o.zone->allocate_align(sizeof(object_kv)*v.size()));
object_kv* const pend = p + v.size();
o.via.map.ptr = p;
o.via.map.size = v.size();
@ -127,7 +127,7 @@ inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_m
o.via.map.ptr = nullptr;
o.via.map.size = 0;
} else {
object_kv* p = static_cast<object_kv*>(o.zone->malloc(sizeof(object_kv)*v.size()));
object_kv* p = static_cast<object_kv*>(o.zone->allocate_align(sizeof(object_kv)*v.size()));
object_kv* const pend = p + v.size();
o.via.map.ptr = p;
o.via.map.size = v.size();

View File

@ -74,7 +74,7 @@ inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_s
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();
@ -120,7 +120,7 @@ inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_m
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();

View File

@ -184,7 +184,7 @@ inline void operator<< (
object::with_zone& o,
const type::tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>>& v) {
o.type = type::ARRAY;
o.via.array.ptr = static_cast<object*>(o.zone->malloc(sizeof(object)*<%=i+1%>));
o.via.array.ptr = static_cast<object*>(o.zone->allocate_align(sizeof(object)*<%=i+1%>));
o.via.array.size = <%=i+1%>;
<%0.upto(i) {|j|%>
o.via.array.ptr[<%=j%>] = object(v.template get<<%=j%>>(), o.zone);<%}%>

View File

@ -61,7 +61,7 @@ inline void operator<< (object::with_zone& o, const std::vector<T>& v)
o.via.array.ptr = nullptr;
o.via.array.size = 0;
} else {
object* p = static_cast<object*>(o.zone->malloc(sizeof(object)*v.size()));
object* p = static_cast<object*>(o.zone->allocate_align(sizeof(object)*v.size()));
object* const pend = p + v.size();
o.via.array.ptr = p;
o.via.array.size = v.size();

View File

@ -109,7 +109,7 @@ struct unpack_array {
bool operator()(unpack_user&u, unsigned int n, object& o) const {
o.type = type::ARRAY;
o.via.array.size = 0;
o.via.array.ptr = (object*)u.z().malloc(n*sizeof(object));
o.via.array.ptr = (object*)u.z().allocate_align(n*sizeof(object));
if(o.via.array.ptr == nullptr) { return false; }
return true;
}
@ -122,7 +122,7 @@ struct unpack_map {
bool operator()(unpack_user& u, unsigned int n, object& o) const {
o.type = type::MAP;
o.via.map.size = 0;
o.via.map.ptr = (object_kv*)u.z().malloc(n*sizeof(object_kv));
o.via.map.ptr = (object_kv*)u.z().allocate_align(n*sizeof(object_kv));
if(o.via.map.ptr == nullptr) { return false; }
return true;
}

View File

@ -154,8 +154,8 @@ public:
public:
static zone* create(size_t chunk_size);
static void destroy(zone* zone);
void* malloc(size_t size);
void* malloc_no_align(size_t size);
void* allocate_align(size_t size);
void* allocate_no_align(size_t size);
void push_finalizer(void (*func)(void*), void* data);
@ -172,12 +172,12 @@ public:
<%}%>
private:
void undo_malloc(size_t size);
void undo_allocate(size_t size);
template <typename T>
static void object_destructor(void* obj);
void* malloc_expand(size_t size);
void* allocate_expand(size_t size);
};
@ -201,16 +201,16 @@ inline zone::zone(size_t chunk_size) /* throw() */ :chunk_size_(chunk_size), chu
{
}
inline void* zone::malloc(size_t size)
inline void* zone::allocate_align(size_t size)
{
return malloc_no_align(
return allocate_no_align(
((size)+((MSGPACK_ZONE_ALIGN)-1)) & ~((MSGPACK_ZONE_ALIGN)-1));
}
inline void* zone::malloc_no_align(size_t size)
inline void* zone::allocate_no_align(size_t size)
{
if(chunk_list_.free_ < size) {
return malloc_expand(size);
return allocate_expand(size);
}
char* ptr = chunk_list_.ptr_;
@ -220,7 +220,7 @@ inline void* zone::malloc_no_align(size_t size)
return ptr;
}
inline void* zone::malloc_expand(size_t size)
inline void* zone::allocate_expand(size_t size)
{
chunk_list* const cl = &chunk_list_;
@ -271,7 +271,7 @@ void zone::object_destructor(void* obj)
reinterpret_cast<T*>(obj)->~T();
}
inline void zone::undo_malloc(size_t size)
inline void zone::undo_allocate(size_t size)
{
chunk_list_.ptr_ -= size;
chunk_list_.free_ += size;
@ -281,18 +281,18 @@ inline void zone::undo_malloc(size_t size)
template <typename T<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
T* zone::allocate(<%=(1..i).map{|j|"A#{j} a#{j}"}.join(', ')%>)
{
void* x = malloc(sizeof(T));
void* x = allocate_align(sizeof(T));
try {
finalizer_array_.push(&zone::object_destructor<T>, x);
} catch (...) {
undo_malloc(sizeof(T));
undo_allocate(sizeof(T));
throw;
}
try {
return new (x) T(<%=(1..i).map{|j|"a#{j}"}.join(', ')%>);
} catch (...) {
--finalizer_array_.tail_;
undo_malloc(sizeof(T));
undo_allocate(sizeof(T));
throw;
}
}

View File

@ -1,12 +1,12 @@
#include <msgpack.hpp>
#include <gtest/gtest.h>
TEST(zone, malloc)
TEST(zone, allocate_align)
{
msgpack::zone z;
char* buf1 = (char*)z.malloc(4);
char* buf1 = (char*)z.allocate_align(4);
memcpy(buf1, "test", 4);
char* buf2 = (char*)z.malloc(4);
char* buf2 = (char*)z.allocate_align(4);
memcpy(buf2, "test", 4);
}
@ -68,11 +68,11 @@ TEST(zone, push_finalizer_unique_ptr)
}
TEST(zone, malloc_no_align)
TEST(zone, allocate_no_align)
{
msgpack::zone z;
char* buf1 = (char*)z.malloc_no_align(4);
char* buf2 = (char*)z.malloc_no_align(4);
char* buf1 = (char*)z.allocate_no_align(4);
char* buf2 = (char*)z.allocate_no_align(4);
EXPECT_EQ(buf1+4, buf2);
}