[DEV] build and execute again
This commit is contained in:
parent
1b59eb8c8e
commit
f882c9fedc
@ -9,6 +9,7 @@
|
|||||||
#include <rabbit/rabbit.hpp>
|
#include <rabbit/rabbit.hpp>
|
||||||
#include <rabbit-std/sqstdaux.hpp>
|
#include <rabbit-std/sqstdaux.hpp>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <rabbit/StackInfos.hpp>
|
||||||
|
|
||||||
void sqstd_printcallstack(rabbit::VirtualMachine* v)
|
void sqstd_printcallstack(rabbit::VirtualMachine* v)
|
||||||
{
|
{
|
||||||
|
@ -136,7 +136,7 @@ static int64_t _file_constructor(rabbit::VirtualMachine* v)
|
|||||||
bool owns = true;
|
bool owns = true;
|
||||||
SQFile *f;
|
SQFile *f;
|
||||||
SQFILE newf;
|
SQFILE newf;
|
||||||
if(sq_gettype(v,2) == rabbit::OT_STRING && sq_gettype(v,3) == OT_STRING) {
|
if(sq_gettype(v,2) == rabbit::OT_STRING && sq_gettype(v,3) == rabbit::OT_STRING) {
|
||||||
sq_getstring(v, 2, &filename);
|
sq_getstring(v, 2, &filename);
|
||||||
sq_getstring(v, 3, &mode);
|
sq_getstring(v, 3, &mode);
|
||||||
newf = sqstd_fopen(filename, mode);
|
newf = sqstd_fopen(filename, mode);
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <rabbit/rabbit.hpp>
|
#include <rabbit/rabbit.hpp>
|
||||||
|
#include <rabbit/RegFunction.hpp>
|
||||||
|
|
||||||
RABBIT_API rabbit::Result sqstd_register_mathlib(rabbit::VirtualMachine* v);
|
RABBIT_API rabbit::Result sqstd_register_mathlib(rabbit::VirtualMachine* v);
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <rabbit/RegFunction.hpp>
|
||||||
|
|
||||||
int64_t _stream_readblob(rabbit::VirtualMachine* v);
|
int64_t _stream_readblob(rabbit::VirtualMachine* v);
|
||||||
int64_t _stream_readline(rabbit::VirtualMachine* v);
|
int64_t _stream_readline(rabbit::VirtualMachine* v);
|
||||||
int64_t _stream_readn(rabbit::VirtualMachine* v);
|
int64_t _stream_readn(rabbit::VirtualMachine* v);
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <rabbit/RegFunction.hpp>
|
||||||
|
|
||||||
typedef unsigned int SQRexBool;
|
typedef unsigned int SQRexBool;
|
||||||
typedef struct SQRex SQRex;
|
typedef struct SQRex SQRex;
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
#define screname rename
|
#define screname rename
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <rabbit/RegFunction.hpp>
|
||||||
|
|
||||||
static int64_t _system_getenv(rabbit::VirtualMachine* v)
|
static int64_t _system_getenv(rabbit::VirtualMachine* v)
|
||||||
{
|
{
|
||||||
const rabbit::Char *s;
|
const rabbit::Char *s;
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
#include <etk/types.hpp>
|
#include <etk/types.hpp>
|
||||||
#include <rabbit/sqconfig.hpp>
|
#include <rabbit/sqconfig.hpp>
|
||||||
|
|
||||||
namespace rabbit {
|
|
||||||
struct SQInstruction;
|
struct SQInstruction;
|
||||||
|
namespace rabbit {
|
||||||
class ExceptionTrap {
|
class ExceptionTrap {
|
||||||
public:
|
public:
|
||||||
ExceptionTrap() {
|
ExceptionTrap() {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <rabbit/AutoDec.hpp>
|
#include <rabbit/AutoDec.hpp>
|
||||||
#include <rabbit/sqconfig.hpp>
|
#include <rabbit/sqconfig.hpp>
|
||||||
#include <rabbit/ExceptionTrap.hpp>
|
#include <rabbit/ExceptionTrap.hpp>
|
||||||
|
#include <rabbit/MetaMethod.hpp>
|
||||||
|
|
||||||
|
|
||||||
#define MAX_NATIVE_CALLS 100
|
#define MAX_NATIVE_CALLS 100
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <rabbit/sqcompiler.hpp>
|
#include <rabbit/sqcompiler.hpp>
|
||||||
#include <rabbit/sqfuncstate.hpp>
|
#include <rabbit/sqfuncstate.hpp>
|
||||||
#include <rabbit/sqclass.hpp>
|
#include <rabbit/sqclass.hpp>
|
||||||
|
#include <rabbit/MemberHandle.hpp>
|
||||||
|
|
||||||
static bool sq_aux_gettypedarg(rabbit::VirtualMachine* v,int64_t idx,rabbit::ObjectType type,rabbit::ObjectPtr **o)
|
static bool sq_aux_gettypedarg(rabbit::VirtualMachine* v,int64_t idx,rabbit::ObjectType type,rabbit::ObjectPtr **o)
|
||||||
{
|
{
|
||||||
@ -299,7 +300,8 @@ rabbit::Bool sq_instanceof(rabbit::VirtualMachine* v)
|
|||||||
{
|
{
|
||||||
rabbit::ObjectPtr &inst = stack_get(v,-1);
|
rabbit::ObjectPtr &inst = stack_get(v,-1);
|
||||||
rabbit::ObjectPtr &cl = stack_get(v,-2);
|
rabbit::ObjectPtr &cl = stack_get(v,-2);
|
||||||
if(sq_type(inst) != rabbit::OT_INSTANCE || sq_type(cl) != OT_CLASS)
|
if( sq_type(inst) != rabbit::OT_INSTANCE
|
||||||
|
|| sq_type(cl) != rabbit::OT_CLASS)
|
||||||
return sq_throwerror(v,_SC("invalid param type"));
|
return sq_throwerror(v,_SC("invalid param type"));
|
||||||
return _instance(inst)->instanceOf(_class(cl))?SQTrue:SQFalse;
|
return _instance(inst)->instanceOf(_class(cl))?SQTrue:SQFalse;
|
||||||
}
|
}
|
||||||
@ -872,7 +874,7 @@ rabbit::Result sq_newslot(rabbit::VirtualMachine* v, int64_t idx, rabbit::Bool b
|
|||||||
{
|
{
|
||||||
sq_aux_paramscheck(v, 3);
|
sq_aux_paramscheck(v, 3);
|
||||||
rabbit::ObjectPtr &self = stack_get(v, idx);
|
rabbit::ObjectPtr &self = stack_get(v, idx);
|
||||||
if(sq_type(self) == rabbit::OT_TABLE || sq_type(self) == OT_CLASS) {
|
if(sq_type(self) == rabbit::OT_TABLE || sq_type(self) == rabbit::OT_CLASS) {
|
||||||
rabbit::ObjectPtr &key = v->getUp(-2);
|
rabbit::ObjectPtr &key = v->getUp(-2);
|
||||||
if(sq_type(key) == rabbit::OT_NULL) return sq_throwerror(v, _SC("null is not a valid key"));
|
if(sq_type(key) == rabbit::OT_NULL) return sq_throwerror(v, _SC("null is not a valid key"));
|
||||||
v->newSlot(self, key, v->getUp(-1),bstatic?true:false);
|
v->newSlot(self, key, v->getUp(-1),bstatic?true:false);
|
||||||
@ -1563,9 +1565,9 @@ rabbit::Result sq_getdefaultdelegate(rabbit::VirtualMachine* v,rabbit::ObjectTyp
|
|||||||
case rabbit::OT_TABLE: v->push(ss->_table_default_delegate); break;
|
case rabbit::OT_TABLE: v->push(ss->_table_default_delegate); break;
|
||||||
case rabbit::OT_ARRAY: v->push(ss->_array_default_delegate); break;
|
case rabbit::OT_ARRAY: v->push(ss->_array_default_delegate); break;
|
||||||
case rabbit::OT_STRING: v->push(ss->_string_default_delegate); break;
|
case rabbit::OT_STRING: v->push(ss->_string_default_delegate); break;
|
||||||
case rabbit::OT_INTEGER: case OT_FLOAT: v->push(ss->_number_default_delegate); break;
|
case rabbit::OT_INTEGER: case rabbit::OT_FLOAT: v->push(ss->_number_default_delegate); break;
|
||||||
case rabbit::OT_GENERATOR: v->push(ss->_generator_default_delegate); break;
|
case rabbit::OT_GENERATOR: v->push(ss->_generator_default_delegate); break;
|
||||||
case rabbit::OT_CLOSURE: case OT_NATIVECLOSURE: v->push(ss->_closure_default_delegate); break;
|
case rabbit::OT_CLOSURE: case rabbit::OT_NATIVECLOSURE: v->push(ss->_closure_default_delegate); break;
|
||||||
case rabbit::OT_THREAD: v->push(ss->_thread_default_delegate); break;
|
case rabbit::OT_THREAD: v->push(ss->_thread_default_delegate); break;
|
||||||
case rabbit::OT_CLASS: v->push(ss->_class_default_delegate); break;
|
case rabbit::OT_CLASS: v->push(ss->_class_default_delegate); break;
|
||||||
case rabbit::OT_INSTANCE: v->push(ss->_instance_default_delegate); break;
|
case rabbit::OT_INSTANCE: v->push(ss->_instance_default_delegate); break;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <rabbit/StackInfos.hpp>
|
||||||
|
|
||||||
static bool str2num(const rabbit::Char *s,rabbit::ObjectPtr &res,int64_t base)
|
static bool str2num(const rabbit::Char *s,rabbit::ObjectPtr &res,int64_t base)
|
||||||
{
|
{
|
||||||
@ -189,7 +190,7 @@ static int64_t base_print(rabbit::VirtualMachine* v)
|
|||||||
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
||||||
{
|
{
|
||||||
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
||||||
if(_get_shared_state(v)->_printfunc) _ss(v)->_printfunc(v,_SC("%s"),str);
|
if(_get_shared_state(v)->_printfunc) _get_shared_state(v)->_printfunc(v,_SC("%s"),str);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,7 +203,7 @@ static int64_t base_error(rabbit::VirtualMachine* v)
|
|||||||
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
||||||
{
|
{
|
||||||
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
||||||
if(_get_shared_state(v)->_errorfunc) _ss(v)->_errorfunc(v,_SC("%s"),str);
|
if(_get_shared_state(v)->_errorfunc) _get_shared_state(v)->_errorfunc(v,_SC("%s"),str);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -343,7 +344,8 @@ static int64_t default_delegate_tofloat(rabbit::VirtualMachine* v)
|
|||||||
}}
|
}}
|
||||||
return sq_throwerror(v, _SC("cannot convert the string"));
|
return sq_throwerror(v, _SC("cannot convert the string"));
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_INTEGER:case OT_FLOAT:
|
case rabbit::OT_INTEGER:
|
||||||
|
case rabbit::OT_FLOAT:
|
||||||
v->push(rabbit::ObjectPtr(tofloat(o)));
|
v->push(rabbit::ObjectPtr(tofloat(o)));
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_BOOL:
|
case rabbit::OT_BOOL:
|
||||||
@ -372,7 +374,8 @@ static int64_t default_delegate_tointeger(rabbit::VirtualMachine* v)
|
|||||||
}}
|
}}
|
||||||
return sq_throwerror(v, _SC("cannot convert the string"));
|
return sq_throwerror(v, _SC("cannot convert the string"));
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_INTEGER:case OT_FLOAT:
|
case rabbit::OT_INTEGER:
|
||||||
|
case rabbit::OT_FLOAT:
|
||||||
v->push(rabbit::ObjectPtr(tointeger(o)));
|
v->push(rabbit::ObjectPtr(tointeger(o)));
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_BOOL:
|
case rabbit::OT_BOOL:
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include <rabbit/sqclass.hpp>
|
#include <rabbit/sqclass.hpp>
|
||||||
#include <rabbit/sqfuncproto.hpp>
|
#include <rabbit/sqfuncproto.hpp>
|
||||||
#include <rabbit/sqclosure.hpp>
|
#include <rabbit/sqclosure.hpp>
|
||||||
|
#include <rabbit/MetaMethod.hpp>
|
||||||
|
|
||||||
|
|
||||||
SQClass::SQClass(SQSharedState *ss,SQClass *base)
|
SQClass::SQClass(SQSharedState *ss,SQClass *base)
|
||||||
@ -27,7 +27,7 @@ SQClass::SQClass(SQSharedState *ss,SQClass *base)
|
|||||||
_udsize = _base->_udsize;
|
_udsize = _base->_udsize;
|
||||||
_defaultvalues = base->_defaultvalues;
|
_defaultvalues = base->_defaultvalues;
|
||||||
_methods = base->_methods;
|
_methods = base->_methods;
|
||||||
_COPY_VECTOR(_metamethods,base->_metamethods,MT_LAST);
|
_COPY_VECTOR(_metamethods,base->_metamethods, rabbit::MT_LAST);
|
||||||
__ObjaddRef(_base);
|
__ObjaddRef(_base);
|
||||||
}
|
}
|
||||||
_members = base?base->_members->clone() : SQTable::create(ss,0);
|
_members = base?base->_members->clone() : SQTable::create(ss,0);
|
||||||
@ -38,7 +38,7 @@ void SQClass::finalize() {
|
|||||||
_attributes.Null();
|
_attributes.Null();
|
||||||
_NULL_SQOBJECT_VECTOR(_defaultvalues,_defaultvalues.size());
|
_NULL_SQOBJECT_VECTOR(_defaultvalues,_defaultvalues.size());
|
||||||
_methods.resize(0);
|
_methods.resize(0);
|
||||||
_NULL_SQOBJECT_VECTOR(_metamethods,MT_LAST);
|
_NULL_SQOBJECT_VECTOR(_metamethods, rabbit::MT_LAST);
|
||||||
__Objrelease(_members);
|
__Objrelease(_members);
|
||||||
if(_base) {
|
if(_base) {
|
||||||
__Objrelease(_base);
|
__Objrelease(_base);
|
||||||
@ -53,7 +53,9 @@ SQClass::~SQClass()
|
|||||||
bool SQClass::newSlot(SQSharedState *ss,const rabbit::ObjectPtr &key,const rabbit::ObjectPtr &val,bool bstatic)
|
bool SQClass::newSlot(SQSharedState *ss,const rabbit::ObjectPtr &key,const rabbit::ObjectPtr &val,bool bstatic)
|
||||||
{
|
{
|
||||||
rabbit::ObjectPtr temp;
|
rabbit::ObjectPtr temp;
|
||||||
bool belongs_to_static_table = sq_type(val) == rabbit::OT_CLOSURE || sq_type(val) == OT_NATIVECLOSURE || bstatic;
|
bool belongs_to_static_table = sq_type(val) == rabbit::OT_CLOSURE
|
||||||
|
|| sq_type(val) == rabbit::OT_NATIVECLOSURE
|
||||||
|
|| bstatic;
|
||||||
if(_locked && !belongs_to_static_table)
|
if(_locked && !belongs_to_static_table)
|
||||||
return false; //the class already has an instance so cannot be modified
|
return false; //the class already has an instance so cannot be modified
|
||||||
if(_members->get(key,temp) && _isfield(temp)) //overrides the default value
|
if(_members->get(key,temp) && _isfield(temp)) //overrides the default value
|
||||||
@ -63,8 +65,9 @@ bool SQClass::newSlot(SQSharedState *ss,const rabbit::ObjectPtr &key,const rabbi
|
|||||||
}
|
}
|
||||||
if(belongs_to_static_table) {
|
if(belongs_to_static_table) {
|
||||||
int64_t mmidx;
|
int64_t mmidx;
|
||||||
if((sq_type(val) == rabbit::OT_CLOSURE || sq_type(val) == OT_NATIVECLOSURE) &&
|
if( ( sq_type(val) == rabbit::OT_CLOSURE
|
||||||
(mmidx = ss->getMetaMethodIdxByName(key)) != -1) {
|
|| sq_type(val) == rabbit::OT_NATIVECLOSURE )
|
||||||
|
&& (mmidx = ss->getMetaMethodIdxByName(key)) != -1) {
|
||||||
_metamethods[mmidx] = val;
|
_metamethods[mmidx] = val;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -76,7 +76,7 @@ public:
|
|||||||
SQClass *_base;
|
SQClass *_base;
|
||||||
SQClassMemberVec _defaultvalues;
|
SQClassMemberVec _defaultvalues;
|
||||||
SQClassMemberVec _methods;
|
SQClassMemberVec _methods;
|
||||||
rabbit::ObjectPtr _metamethods[MT_LAST];
|
rabbit::ObjectPtr _metamethods[rabbit::MT_LAST];
|
||||||
rabbit::ObjectPtr _attributes;
|
rabbit::ObjectPtr _attributes;
|
||||||
rabbit::UserPointer _typetag;
|
rabbit::UserPointer _typetag;
|
||||||
SQRELEASEHOOK _hook;
|
SQRELEASEHOOK _hook;
|
||||||
|
@ -36,8 +36,8 @@ public:
|
|||||||
void release(){
|
void release(){
|
||||||
SQFunctionProto *f = _function;
|
SQFunctionProto *f = _function;
|
||||||
int64_t size = _CALC_CLOSURE_SIZE(f);
|
int64_t size = _CALC_CLOSURE_SIZE(f);
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,f->_noutervalues,_outervalues);
|
_DESTRUCT_VECTOR(ObjectPtr,f->_noutervalues,_outervalues);
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,f->_ndefaultparams,_defaultparams);
|
_DESTRUCT_VECTOR(ObjectPtr,f->_ndefaultparams,_defaultparams);
|
||||||
__Objrelease(_function);
|
__Objrelease(_function);
|
||||||
this->~SQClosure();
|
this->~SQClosure();
|
||||||
sq_vm_free(this,size);
|
sq_vm_free(this,size);
|
||||||
@ -177,7 +177,7 @@ public:
|
|||||||
}
|
}
|
||||||
void release(){
|
void release(){
|
||||||
int64_t size = _CALC_NATVIVECLOSURE_SIZE(_noutervalues);
|
int64_t size = _CALC_NATVIVECLOSURE_SIZE(_noutervalues);
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_noutervalues,_outervalues);
|
_DESTRUCT_VECTOR(ObjectPtr,_noutervalues,_outervalues);
|
||||||
this->~SQNativeClosure();
|
this->~SQNativeClosure();
|
||||||
sq_free(this,size);
|
sq_free(this,size);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <rabbit/sqfuncproto.hpp>
|
#include <rabbit/sqfuncproto.hpp>
|
||||||
#include <rabbit/sqclosure.hpp>
|
#include <rabbit/sqclosure.hpp>
|
||||||
#include <rabbit/sqstring.hpp>
|
#include <rabbit/sqstring.hpp>
|
||||||
|
#include <rabbit/FunctionInfo.hpp>
|
||||||
|
#include <rabbit/StackInfos.hpp>
|
||||||
|
|
||||||
rabbit::Result sq_getfunctioninfo(rabbit::VirtualMachine* v,int64_t level,rabbit::FunctionInfo *fi)
|
rabbit::Result sq_getfunctioninfo(rabbit::VirtualMachine* v,int64_t level,rabbit::FunctionInfo *fi)
|
||||||
{
|
{
|
||||||
|
@ -105,9 +105,9 @@ public:
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
void release(){
|
void release(){
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nliterals,_literals);
|
_DESTRUCT_VECTOR(ObjectPtr,_nliterals,_literals);
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nparameters,_parameters);
|
_DESTRUCT_VECTOR(ObjectPtr,_nparameters,_parameters);
|
||||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nfunctions,_functions);
|
_DESTRUCT_VECTOR(ObjectPtr,_nfunctions,_functions);
|
||||||
_DESTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues);
|
_DESTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues);
|
||||||
//_DESTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers
|
//_DESTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers
|
||||||
_DESTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos);
|
_DESTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos);
|
||||||
|
@ -251,7 +251,7 @@ bool ReadObject(rabbit::VirtualMachine* v,rabbit::UserPointer up,SQREADFUNC read
|
|||||||
int64_t len;
|
int64_t len;
|
||||||
_CHECK_IO(SafeRead(v,read,up,&len,sizeof(int64_t)));
|
_CHECK_IO(SafeRead(v,read,up,&len,sizeof(int64_t)));
|
||||||
_CHECK_IO(SafeRead(v,read,up,_get_shared_state(v)->getScratchPad(sq_rsl(len)),sq_rsl(len)));
|
_CHECK_IO(SafeRead(v,read,up,_get_shared_state(v)->getScratchPad(sq_rsl(len)),sq_rsl(len)));
|
||||||
o=SQString::create(_get_shared_state(v),_ss(v)->getScratchPad(-1),len);
|
o=SQString::create(_get_shared_state(v),_get_shared_state(v)->getScratchPad(-1),len);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_INTEGER:{
|
case rabbit::OT_INTEGER:{
|
||||||
|
@ -102,7 +102,7 @@ void SQSharedState::init()
|
|||||||
sq_new(_metamethods,etk::Vector<rabbit::ObjectPtr>);
|
sq_new(_metamethods,etk::Vector<rabbit::ObjectPtr>);
|
||||||
sq_new(_systemstrings,etk::Vector<rabbit::ObjectPtr>);
|
sq_new(_systemstrings,etk::Vector<rabbit::ObjectPtr>);
|
||||||
sq_new(_types,etk::Vector<rabbit::ObjectPtr>);
|
sq_new(_types,etk::Vector<rabbit::ObjectPtr>);
|
||||||
_metamethodsmap = SQTable::create(this,MT_LAST-1);
|
_metamethodsmap = SQTable::create(this,rabbit::MT_LAST-1);
|
||||||
//adding type strings to avoid memory trashing
|
//adding type strings to avoid memory trashing
|
||||||
//types names
|
//types names
|
||||||
newsysstring(_SC("null"));
|
newsysstring(_SC("null"));
|
||||||
@ -183,9 +183,10 @@ SQSharedState::~SQSharedState()
|
|||||||
_weakref_default_delegate.Null();
|
_weakref_default_delegate.Null();
|
||||||
_refs_table.finalize();
|
_refs_table.finalize();
|
||||||
|
|
||||||
sq_delete(_types,etk::Vector<rabbit::ObjectPtr>);
|
using tmpType = etk::Vector<rabbit::ObjectPtr>;
|
||||||
sq_delete(_systemstrings,etk::Vector<rabbit::ObjectPtr>);
|
sq_delete(_types, tmpType);
|
||||||
sq_delete(_metamethods,etk::Vector<rabbit::ObjectPtr>);
|
sq_delete(_systemstrings, tmpType);
|
||||||
|
sq_delete(_metamethods, tmpType);
|
||||||
sq_delete(_stringtable, SQStringTable);
|
sq_delete(_stringtable, SQStringTable);
|
||||||
if(_scratchpad)SQ_FREE(_scratchpad,_scratchpadsize);
|
if(_scratchpad)SQ_FREE(_scratchpad,_scratchpadsize);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <rabbit/squtils.hpp>
|
#include <rabbit/squtils.hpp>
|
||||||
#include <rabbit/sqobject.hpp>
|
#include <rabbit/sqobject.hpp>
|
||||||
#include <rabbit/RegFunction.hpp>
|
#include <rabbit/RegFunction.hpp>
|
||||||
|
#include <rabbit/ObjectPtr.hpp>
|
||||||
|
|
||||||
struct SQString;
|
struct SQString;
|
||||||
struct SQTable;
|
struct SQTable;
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <rabbit/sqfuncproto.hpp>
|
#include <rabbit/sqfuncproto.hpp>
|
||||||
#include <rabbit/sqclosure.hpp>
|
#include <rabbit/sqclosure.hpp>
|
||||||
|
|
||||||
|
#define MINPOWER2 4
|
||||||
|
|
||||||
SQTable::SQTable(SQSharedState *ss,int64_t ninitialsize)
|
SQTable::SQTable(SQSharedState *ss,int64_t ninitialsize)
|
||||||
{
|
{
|
||||||
int64_t pow2size=MINPOWER2;
|
int64_t pow2size=MINPOWER2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user