Fix errors of no unity build related to common_realloc.
This commit is contained in:
parent
55bbe44590
commit
c01f6650be
@ -35,9 +35,9 @@ void *ObTenantCtxAllocator::alloc(const int64_t size, const ObMemAttr &attr)
|
||||
abort_unless(attr.ctx_id_ == ctx_id_);
|
||||
void *ptr = NULL;
|
||||
if (OB_LIKELY(ObSubCtxIds::MAX_SUB_CTX_ID == attr.sub_ctx_id_)) {
|
||||
ptr = common_realloc(NULL, size, attr, *this, obj_mgr_);
|
||||
ptr = inner_common_realloc(NULL, size, attr, *this, obj_mgr_);
|
||||
} else if (OB_UNLIKELY(attr.sub_ctx_id_ < ObSubCtxIds::MAX_SUB_CTX_ID)) {
|
||||
ptr = common_realloc(NULL, size, attr, *this, obj_mgrs_[attr.sub_ctx_id_]);
|
||||
ptr = inner_common_realloc(NULL, size, attr, *this, obj_mgrs_[attr.sub_ctx_id_]);
|
||||
} else {
|
||||
LIB_LOG_RET(WARN, OB_ERR_UNEXPECTED, "allocate memory with unexpected sub_ctx_id");
|
||||
}
|
||||
@ -53,7 +53,7 @@ int64_t ObTenantCtxAllocator::get_obj_hold(void *ptr)
|
||||
|
||||
void* ObTenantCtxAllocator::realloc(const void *ptr, const int64_t size, const ObMemAttr &attr)
|
||||
{
|
||||
void *nptr = common_realloc(ptr, size, attr, *this, obj_mgr_);
|
||||
void *nptr = inner_common_realloc(ptr, size, attr, *this, obj_mgr_);
|
||||
return nptr;
|
||||
}
|
||||
|
||||
@ -468,7 +468,7 @@ void ObTenantCtxAllocator::on_free(AObject &obj)
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void* ObTenantCtxAllocator::common_realloc(const void *ptr, const int64_t size,
|
||||
void* ObTenantCtxAllocator::inner_common_realloc(const void *ptr, const int64_t size,
|
||||
const ObMemAttr &attr, ObTenantCtxAllocator& ta,
|
||||
T &allocator)
|
||||
{
|
||||
|
@ -32,6 +32,12 @@ struct LabelItem;
|
||||
}
|
||||
namespace lib
|
||||
{
|
||||
class IObjectMgr
|
||||
{
|
||||
public:
|
||||
virtual AObject *realloc_object(AObject *obj, const uint64_t size, const ObMemAttr &attr) = 0;
|
||||
virtual void free_object(AObject *obj) = 0;
|
||||
};
|
||||
class ObTenantCtxAllocator
|
||||
: public common::ObIAllocator,
|
||||
private common::ObLink
|
||||
@ -299,16 +305,22 @@ private:
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
public:
|
||||
static void* common_realloc(const void *ptr, const int64_t size,
|
||||
const ObMemAttr &attr, ObTenantCtxAllocator& ta,
|
||||
IObjectMgr &mgr)
|
||||
{
|
||||
return inner_common_realloc(ptr, size, attr, ta, mgr);
|
||||
}
|
||||
static void common_free(void *ptr);
|
||||
private:
|
||||
static void on_alloc(AObject& obj, const ObMemAttr& attr);
|
||||
static void on_free(AObject& obj);
|
||||
public:
|
||||
template <typename T>
|
||||
static void* common_realloc(const void *ptr, const int64_t size,
|
||||
static void* inner_common_realloc(const void *ptr, const int64_t size,
|
||||
const ObMemAttr &attr, ObTenantCtxAllocator& ta,
|
||||
T &allocator);
|
||||
|
||||
static void common_free(void *ptr);
|
||||
|
||||
private:
|
||||
ObTenantResourceMgrHandle resource_handle_;
|
||||
|
2
deps/oblib/src/lib/alloc/object_mgr.cpp
vendored
2
deps/oblib/src/lib/alloc/object_mgr.cpp
vendored
@ -244,7 +244,7 @@ SubObjectMgr *ObjectMgr::create_sub_mgr()
|
||||
attr.label_ = common::ObModIds::OB_TENANT_CTX_ALLOCATOR;
|
||||
attr.ctx_id_ = ObCtxIds::DEFAULT_CTX_ID;
|
||||
attr.ignore_version_ = true;
|
||||
class SubObjectMgrWrapper {
|
||||
class SubObjectMgrWrapper : public IObjectMgr {
|
||||
public:
|
||||
SubObjectMgrWrapper(SubObjectMgr& sub_mgr)
|
||||
: sub_mgr_(sub_mgr)
|
||||
|
26
deps/oblib/src/lib/allocator/ob_allocator_v2.cpp
vendored
26
deps/oblib/src/lib/allocator/ob_allocator_v2.cpp
vendored
@ -36,15 +36,33 @@ void *ObAllocator::alloc(const int64_t size, const ObMemAttr &attr)
|
||||
}
|
||||
auto ta = lib::ObMallocAllocator::get_instance()->get_tenant_ctx_allocator(inner_attr.tenant_id_,
|
||||
inner_attr.ctx_id_);
|
||||
ObjectSet *os = NULL;
|
||||
if (OB_LIKELY(NULL != ta)) {
|
||||
ptr = ObTenantCtxAllocator::common_realloc(NULL, size, inner_attr, *(ta.ref_allocator()), os_);
|
||||
os = &os_;
|
||||
} else if (FORCE_MALLOC_FOR_ABSENT_TENANT()) {
|
||||
inner_attr.tenant_id_ = OB_SERVER_TENANT_ID;
|
||||
ta = lib::ObMallocAllocator::get_instance()->get_tenant_ctx_allocator(inner_attr.tenant_id_,
|
||||
inner_attr.ctx_id_);
|
||||
if (NULL != ta) {
|
||||
ptr = ObTenantCtxAllocator::common_realloc(NULL, size, inner_attr, *(ta.ref_allocator()), nos_);
|
||||
}
|
||||
os = &nos_;
|
||||
}
|
||||
if (NULL != ta) {
|
||||
class Wrapper : public lib::IObjectMgr {
|
||||
public:
|
||||
Wrapper(ObjectSet &os)
|
||||
: os_(os)
|
||||
{}
|
||||
AObject *realloc_object(AObject *obj, const uint64_t size, const ObMemAttr &attr)
|
||||
{
|
||||
return os_.realloc_object(obj, size, attr);
|
||||
}
|
||||
void free_object(AObject *obj)
|
||||
{
|
||||
os_.free_object(obj);
|
||||
}
|
||||
private:
|
||||
ObjectSet& os_;
|
||||
} os_wrapper(*os);
|
||||
ptr = ObTenantCtxAllocator::common_realloc(NULL, size, inner_attr, *(ta.ref_allocator()), os_wrapper);
|
||||
}
|
||||
}
|
||||
return ptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user