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

View file

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