Compilation fix 2

This commit is contained in:
Nekotekina 2014-08-31 03:19:10 +04:00
parent ff3df64a26
commit 140d40b5bc
2 changed files with 22 additions and 37 deletions

View file

@ -105,12 +105,12 @@ namespace vm
public: public:
__forceinline T* operator -> () __forceinline T* operator -> ()
{ {
return get_ptr<T>(m_addr); return vm::get_ptr<T>(m_addr);
} }
__forceinline const T* operator -> () const __forceinline const T* operator -> () const
{ {
return get_ptr<const T>(m_addr); return vm::get_ptr<const T>(m_addr);
} }
ptr operator++ (int) ptr operator++ (int)
@ -309,28 +309,28 @@ namespace vm
__forceinline RT call_func(bool is_async, T... args) const __forceinline RT call_func(bool is_async, T... args) const
{ {
template<typename T> template<typename TT>
struct _func_arg struct _func_arg
{ {
__forceinline static u64 get_value(const T& arg) __forceinline static u64 get_value(const TT& arg)
{ {
return arg; return arg;
} }
}; };
template<typename T, typename AT> template<typename TT, typename ATT>
struct _func_arg<ptr<T, AT>> struct _func_arg<ptr<TT, ATT>>
{ {
__forceinline static u64 get_value(const ptr<T, AT> arg) __forceinline static u64 get_value(const ptr<TT, ATT> arg)
{ {
return arg.addr(); return arg.addr();
} }
}; };
template<typename T, typename AT> template<typename TT, typename ATT>
struct _func_arg<ref<T, AT>> struct _func_arg<ref<TT, ATT>>
{ {
__forceinline static u64 get_value(const ref<T, AT> arg) __forceinline static u64 get_value(const ref<TT, ATT> arg)
{ {
return arg.addr(); return arg.addr();
} }

View file

@ -34,16 +34,16 @@ namespace vm
void alloc() void alloc()
{ {
m_addr = Memory.Alloc(size(), m_align); m_addr = Memory.Alloc(size(), m_align);
m_ptr = (T*)Memory.VirtualToRealAddr(m_addr); m_ptr = vm::get_ptr<T>(m_addr);
} }
void dealloc() void dealloc()
{ {
if (check()) if (m_addr)
{ {
Memory.Free(m_addr); Memory.Free(m_addr);
m_addr = 0; m_addr = 0;
m_ptr = nullptr; m_ptr = vm::get_ptr<T>(0);
} }
} }
@ -54,7 +54,7 @@ namespace vm
res.m_addr = addr; res.m_addr = addr;
res.m_size = size; res.m_size = size;
res.m_align = align; res.m_align = align;
res.m_ptr = (T*)Memory.VirtualToRealAddr(addr); res.m_ptr = vm::get_ptr<T>(addr);
return res; return res;
} }
@ -99,11 +99,6 @@ namespace vm
return m_size; return m_size;
} }
bool check() const
{
return m_ptr != nullptr;
}
/* /*
operator const ref<T>() const operator const ref<T>() const
{ {
@ -155,13 +150,13 @@ namespace vm
void alloc() void alloc()
{ {
m_addr = Memory.Alloc(size(), m_align); m_addr = (u32)Memory.Alloc(size(), m_align);
m_ptr = (T*)Memory.VirtualToRealAddr(m_addr); m_ptr = vm::get_ptr<T>(m_addr);
} }
void dealloc() void dealloc()
{ {
if (check()) if (m_addr)
{ {
Memory.Free(m_addr); Memory.Free(m_addr);
m_addr = 0; m_addr = 0;
@ -177,7 +172,7 @@ namespace vm
res.m_count = count; res.m_count = count;
res.m_size = size; res.m_size = size;
res.m_align = align; res.m_align = align;
res.m_ptr = (T*)Memory.VirtualToRealAddr(addr); res.m_ptr = vm::get_ptr<T>(addr);
return res; return res;
} }
@ -237,11 +232,6 @@ namespace vm
return m_count; return m_count;
} }
bool check() const
{
return Memory.IsGoodAddr(m_addr, size());
}
template<typename T1> template<typename T1>
operator const T1() const operator const T1() const
{ {
@ -354,17 +344,17 @@ namespace vm
void alloc() void alloc()
{ {
m_addr = Memory.Alloc(size(), m_align); m_addr = (u32)Memory.Alloc(size(), m_align);
m_ptr = (T*)Memory.VirtualToRealAddr(m_addr); m_ptr = vm::get_ptr<T>(m_addr);
} }
void dealloc() void dealloc()
{ {
if (check()) if (m_addr)
{ {
Memory.Free(m_addr); Memory.Free(m_addr);
m_addr = 0; m_addr = 0;
m_ptr = nullptr; m_ptr = vm::get_ptr<T>(0);
} }
} }
@ -423,11 +413,6 @@ namespace vm
return _count * m_size; return _count * m_size;
} }
bool check() const
{
return m_ptr != nullptr;
}
template<typename T1> template<typename T1>
operator const T1() const operator const T1() const
{ {