[DEV] remote _refcounted()
This commit is contained in:
parent
d76c59feb2
commit
51b24cad24
@ -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];
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user