From d1509119e9d2aa5dfce6e494ebac9905562b19a6 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 3 Jul 2018 22:34:09 +0200 Subject: [PATCH] [DEV] remote _weakref() --- rabbit/Generator.cpp | 2 +- rabbit/Object.hpp | 3 +-- rabbit/VirtualMachine.cpp | 2 +- rabbit/sqapi.cpp | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/rabbit/Generator.cpp b/rabbit/Generator.cpp index 8731b12..8866d7e 100644 --- a/rabbit/Generator.cpp +++ b/rabbit/Generator.cpp @@ -74,7 +74,7 @@ bool rabbit::Generator::resume(rabbit::VirtualMachine *v,rabbit::ObjectPtr &dest et._stacksize += newbase; } rabbit::Object _this = _stack[0]; - v->_stack[v->_stackbase] = sq_type(_this) == rabbit::OT_WEAKREF ? _weakref(_this)->_obj : _this; + v->_stack[v->_stackbase] = sq_type(_this) == rabbit::OT_WEAKREF ? _this.toWeakRef()->_obj : _this; for(int64_t n = 1; n_stack[v->_stackbase+n] = _stack[n]; diff --git a/rabbit/Object.hpp b/rabbit/Object.hpp index d1865c7..45b7e21 100644 --- a/rabbit/Object.hpp +++ b/rabbit/Object.hpp @@ -144,12 +144,11 @@ namespace rabbit { unval.pRefCounted->release(); \ } - #define _realval(o) (sq_type((o)) != rabbit::OT_WEAKREF?(rabbit::Object)o:_weakref(o)->_obj) + #define _realval(o) (sq_type((o)) != rabbit::OT_WEAKREF?(rabbit::Object)o:(o).toWeakRef()->_obj) #define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE) #define raw_type(obj) _RAW_TYPE((obj)._type) - #define _weakref(obj) ((obj)._unVal.pWeakRef) #define _outer(obj) ((obj)._unVal.pOuter) #define _refcounted(obj) ((obj)._unVal.pRefCounted) #define _rawval(obj) ((obj)._unVal.raw) diff --git a/rabbit/VirtualMachine.cpp b/rabbit/VirtualMachine.cpp index 60e5363..fddcec6 100644 --- a/rabbit/VirtualMachine.cpp +++ b/rabbit/VirtualMachine.cpp @@ -1799,7 +1799,7 @@ void rabbit::VirtualMachine::dumpstack(int64_t stackbase,bool dumpall) case rabbit::OT_USERPOINTER: printf("USERPOINTER %p",obj.toUserPointer());break; case rabbit::OT_CLASS: printf("CLASS %p",obj.toClass());break; case rabbit::OT_INSTANCE: printf("INSTANCE %p",obj.toInstance());break; - case rabbit::OT_WEAKREF: printf("WEAKERF %p",_weakref(obj));break; + case rabbit::OT_WEAKREF: printf("WEAKERF %p",obj.toWeakRef());break; default: assert(0); break; diff --git a/rabbit/sqapi.cpp b/rabbit/sqapi.cpp index 6670678..6671e01 100644 --- a/rabbit/sqapi.cpp +++ b/rabbit/sqapi.cpp @@ -1566,7 +1566,7 @@ rabbit::Result rabbit::sq_getweakrefval(rabbit::VirtualMachine* v,int64_t idx) if(sq_type(o) != rabbit::OT_WEAKREF) { return sq_throwerror(v,"the object must be a weakref"); } - v->push(_weakref(o)->_obj); + v->push(o.toWeakRef()->_obj); return SQ_OK; }