[DEV] remote _refcounted()

This commit is contained in:
Edouard DUPIN 2018-07-03 22:37:46 +02:00
parent d76c59feb2
commit 51b24cad24
3 changed files with 3 additions and 4 deletions

View File

@ -22,7 +22,7 @@ bool rabbit::Generator::yield(rabbit::VirtualMachine *v,int64_t target)
_stack.resize(size); _stack.resize(size);
rabbit::Object _this = v->_stack[v->_stackbase]; rabbit::Object _this = v->_stack[v->_stackbase];
_stack[0] = ISREFCOUNTED(sq_type(_this)) ? rabbit::ObjectPtr(_refcounted(_this)->getWeakRef(sq_type(_this))) : _this; _stack[0] = ISREFCOUNTED(sq_type(_this)) ? rabbit::ObjectPtr(_this.toRefCounted()->getWeakRef(sq_type(_this))) : _this;
for(int64_t n =1; n<target; n++) { for(int64_t n =1; n<target; n++) {
_stack[n] = v->_stack[v->_stackbase+n]; _stack[n] = v->_stack[v->_stackbase+n];
} }

View File

@ -149,7 +149,6 @@ namespace rabbit {
#define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE) #define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE)
#define raw_type(obj) _RAW_TYPE((obj)._type) #define raw_type(obj) _RAW_TYPE((obj)._type)
#define _refcounted(obj) ((obj)._unVal.pRefCounted)
#define _rawval(obj) ((obj)._unVal.raw) #define _rawval(obj) ((obj)._unVal.raw)
#define _stringval(obj) (obj)._unVal.pString->_val #define _stringval(obj) (obj)._unVal.pString->_val

View File

@ -471,7 +471,7 @@ rabbit::Result rabbit::sq_bindenv(rabbit::VirtualMachine* v,int64_t idx)
!sq_isclass(env) && !sq_isclass(env) &&
!sq_isinstance(env)) !sq_isinstance(env))
return sq_throwerror(v,"invalid environment"); return sq_throwerror(v,"invalid environment");
rabbit::WeakRef *w = _refcounted(env)->getWeakRef(sq_type(env)); rabbit::WeakRef *w = env.toRefCounted()->getWeakRef(sq_type(env));
rabbit::ObjectPtr ret; rabbit::ObjectPtr ret;
if(sq_isclosure(o)) { if(sq_isclosure(o)) {
rabbit::Closure *c = o.toClosure()->clone(); rabbit::Closure *c = o.toClosure()->clone();
@ -1554,7 +1554,7 @@ void rabbit::sq_weakref(rabbit::VirtualMachine* v,int64_t idx)
{ {
rabbit::Object &o=stack_get(v,idx); rabbit::Object &o=stack_get(v,idx);
if(ISREFCOUNTED(sq_type(o))) { if(ISREFCOUNTED(sq_type(o))) {
v->push(_refcounted(o)->getWeakRef(sq_type(o))); v->push(o.toRefCounted()->getWeakRef(sq_type(o)));
return; return;
} }
v->push(o); v->push(o);