[DEV] remove to_string()

This commit is contained in:
Edouard DUPIN 2018-07-04 21:48:56 +02:00
parent fa37b1fedb
commit 48c38c1797
14 changed files with 51 additions and 41 deletions

View File

@ -66,7 +66,7 @@ bool rabbit::WriteObject(rabbit::VirtualMachine* v,rabbit::UserPointer up,SQWRIT
switch(o.getType()){ switch(o.getType()){
case rabbit::OT_STRING: case rabbit::OT_STRING:
_CHECK_IO(SafeWrite(v,write,up,&o.toString()->_len,sizeof(int64_t))); _CHECK_IO(SafeWrite(v,write,up,&o.toString()->_len,sizeof(int64_t)));
_CHECK_IO(SafeWrite(v,write,up,_stringval(o),sq_rsl(o.toString()->_len))); _CHECK_IO(SafeWrite(v,write,up,o.getStringValue(),sq_rsl(o.toString()->_len)));
break; break;
case rabbit::OT_BOOL: case rabbit::OT_BOOL:
case rabbit::OT_INTEGER: case rabbit::OT_INTEGER:

View File

@ -210,7 +210,7 @@ public:
} }
else { else {
if(_raiseerror && _get_shared_state(_vm)->_compilererrorhandler) { if(_raiseerror && _get_shared_state(_vm)->_compilererrorhandler) {
_get_shared_state(_vm)->_compilererrorhandler(_vm, _compilererror, _sourcename.isString() == true?_stringval(_sourcename):"unknown", _get_shared_state(_vm)->_compilererrorhandler(_vm, _compilererror, _sourcename.isString() == true?_sourcename.getStringValue():"unknown",
_lex._currentline, _lex._currentcolumn); _lex._currentline, _lex._currentcolumn);
} }
_vm->_lasterror = rabbit::String::create(_get_shared_state(_vm), _compilererror, -1); _vm->_lasterror = rabbit::String::create(_get_shared_state(_vm), _compilererror, -1);
@ -789,7 +789,7 @@ public:
constid = Expect(TK_IDENTIFIER); constid = Expect(TK_IDENTIFIER);
if(!constant.toTable()->get(constid, constval)) { if(!constant.toTable()->get(constid, constval)) {
constval.Null(); constval.Null();
error("invalid constant [%s.%s]", _stringval(id), _stringval(constid)); error("invalid constant [%s.%s]", id.getStringValue(), constid.getStringValue());
} }
} }
else { else {

View File

@ -101,7 +101,7 @@ void rabbit::FuncState::addInstruction(SQOpcode _op,int64_t arg0,int64_t arg1,in
static void dumpLiteral(rabbit::ObjectPtr &o) { static void dumpLiteral(rabbit::ObjectPtr &o) {
switch(o.getType()){ switch(o.getType()){
case rabbit::OT_STRING: case rabbit::OT_STRING:
printf("\"%s\"",_stringval(o)); printf("\"%s\"",o.getStringValue());
break; break;
case rabbit::OT_FLOAT: case rabbit::OT_FLOAT:
printf("{%f}",o.toFloat()); printf("{%f}",o.toFloat());
@ -152,7 +152,7 @@ void rabbit::FuncState::dump(rabbit::FunctionProto *func)
printf("rabbit::Instruction sizeof %d\n",(int32_t)sizeof(rabbit::Instruction)); printf("rabbit::Instruction sizeof %d\n",(int32_t)sizeof(rabbit::Instruction));
printf("rabbit::Object sizeof %d\n", (int32_t)sizeof(rabbit::Object)); printf("rabbit::Object sizeof %d\n", (int32_t)sizeof(rabbit::Object));
printf("--------------------------------------------------------------------\n"); printf("--------------------------------------------------------------------\n");
printf("*****FUNCTION [%s]\n",func->_name.isString() == true?_stringval(func->_name):"unknown"); printf("*****FUNCTION [%s]\n",func->_name.isString() == true?func->_name.getStringValue():"unknown");
printf("-----LITERALS\n"); printf("-----LITERALS\n");
rabbit::ObjectPtr refidx,key,val; rabbit::ObjectPtr refidx,key,val;
int64_t idx; int64_t idx;
@ -181,7 +181,7 @@ void rabbit::FuncState::dump(rabbit::FunctionProto *func)
printf("-----LOCALS\n"); printf("-----LOCALS\n");
for(si=0;si<func->_nlocalvarinfos;si++){ for(si=0;si<func->_nlocalvarinfos;si++){
rabbit::LocalVarInfo lvi=func->_localvarinfos[si]; rabbit::LocalVarInfo lvi=func->_localvarinfos[si];
printf("[%d] %s \t%d %d\n", (int32_t)lvi._pos,_stringval(lvi._name), (int32_t)lvi._start_op, (int32_t)lvi._end_op); printf("[%d] %s \t%d %d\n", (int32_t)lvi._pos,lvi._name.getStringValue(), (int32_t)lvi._start_op, (int32_t)lvi._end_op);
n++; n++;
} }
printf("-----LINE INFO\n"); printf("-----LINE INFO\n");

View File

@ -75,7 +75,7 @@ const char* rabbit::FunctionProto::getLocal(rabbit::VirtualMachine *vm,uint64_t
{ {
if(nseq==0){ if(nseq==0){
vm->push(vm->_stack[stackbase+_localvarinfos[i]._pos]); vm->push(vm->_stack[stackbase+_localvarinfos[i]._pos]);
res=_stringval(_localvarinfos[i]._name); res=_localvarinfos[i]._name.getStringValue();
break; break;
} }
nseq--; nseq--;

View File

@ -105,7 +105,7 @@ const char *rabbit::Lexer::tok2Str(int64_t tok)
while((nitr = _keywords->next(false,itr, key, val)) != -1) { while((nitr = _keywords->next(false,itr, key, val)) != -1) {
itr = (int64_t)nitr; itr = (int64_t)nitr;
if(((int64_t)val.toInteger()) == tok) if(((int64_t)val.toInteger()) == tok)
return _stringval(key); return key.getStringValue();
} }
return NULL; return NULL;
} }

View File

@ -7,3 +7,12 @@
*/ */
#include <rabbit/Object.hpp> #include <rabbit/Object.hpp>
#include <rabbit/String.hpp>
const char* rabbit::Object::getStringValue() const {
return (const char*)&_unVal.pString->_val[0];
}
char* rabbit::Object::getStringValue() {
return (char*)&_unVal.pString->_val[0];
}

View File

@ -54,6 +54,8 @@ namespace rabbit {
const rabbit::String* toString() const { const rabbit::String* toString() const {
return _unVal.pString; return _unVal.pString;
} }
const char* getStringValue() const;
char* getStringValue();
rabbit::Table*& toTable() { rabbit::Table*& toTable() {
return _unVal.pTable; return _unVal.pTable;
} }
@ -216,6 +218,9 @@ namespace rabbit {
rabbit::ObjectType getType() const { rabbit::ObjectType getType() const {
return _type; return _type;
} }
rabbit::ObjectType getTypeRaw() const {
return rabbit::ObjectType(_type&_RT_MASK);
}
}; };
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED) #define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
@ -232,9 +237,6 @@ namespace rabbit {
#define _realval(o) ((o).isWeakRef() == false?(rabbit::Object)o:(o).toWeakRef()->_obj) #define _realval(o) ((o).isWeakRef() == false?(rabbit::Object)o:(o).toWeakRef()->_obj)
#define raw_type(obj) _RAW_TYPE((obj)._type)
#define _stringval(obj) (obj)._unVal.pString->_val
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1)) #define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
inline void _Swap(rabbit::Object &a,rabbit::Object &b) inline void _Swap(rabbit::Object &a,rabbit::Object &b)

View File

@ -155,7 +155,7 @@ uint64_t rabbit::translateIndex(const rabbit::ObjectPtr &idx) {
const char* rabbit::IdType2Name(rabbit::ObjectType type) const char* rabbit::IdType2Name(rabbit::ObjectType type)
{ {
switch(_RAW_TYPE(type)) { switch (type&_RT_MASK) {
case _RT_NULL: case _RT_NULL:
return "null"; return "null";
case _RT_INTEGER: case _RT_INTEGER:

View File

@ -17,7 +17,6 @@
#define SQ_MATCHTYPEMASKSTRING (-99999) #define SQ_MATCHTYPEMASKSTRING (-99999)
#define _RT_MASK 0x00FFFFFF #define _RT_MASK 0x00FFFFFF
#define _RAW_TYPE(type) (type&_RT_MASK)
#define _RT_NULL 0x00000001 #define _RT_NULL 0x00000001
#define _RT_INTEGER 0x00000002 #define _RT_INTEGER 0x00000002

View File

@ -276,7 +276,7 @@ bool rabbit::Table::getStr(const char* key,int64_t keylen,rabbit::ObjectPtr &val
_HashNode *res = NULL; _HashNode *res = NULL;
do { do {
if ( n->key.isString() == true if ( n->key.isString() == true
&& strcmp(_stringval(n->key), key) == 0) { && strcmp(n->key.getStringValue(), key) == 0) {
res = n; res = n;
break; break;
} }

View File

@ -246,7 +246,7 @@ bool rabbit::VirtualMachine::objCmp(const rabbit::ObjectPtr &o1,const rabbit::Ob
rabbit::ObjectPtr res; rabbit::ObjectPtr res;
switch(t1){ switch(t1){
case rabbit::OT_STRING: case rabbit::OT_STRING:
_RET_SUCCEED(strcmp(_stringval(o1),_stringval(o2))); _RET_SUCCEED(strcmp(o1.getStringValue(),o2.getStringValue()));
case rabbit::OT_INTEGER: case rabbit::OT_INTEGER:
_RET_SUCCEED((o1.toInteger()<o2.toInteger())?-1:1); _RET_SUCCEED((o1.toInteger()<o2.toInteger())?-1:1);
case rabbit::OT_FLOAT: case rabbit::OT_FLOAT:
@ -362,8 +362,8 @@ bool rabbit::VirtualMachine::stringCat(const rabbit::ObjectPtr &str,const rabbit
if(!toString(obj, b)) return false; if(!toString(obj, b)) return false;
int64_t l = a.toString()->_len , ol = b.toString()->_len; int64_t l = a.toString()->_len , ol = b.toString()->_len;
char *s = _sp(sq_rsl(l + ol + 1)); char *s = _sp(sq_rsl(l + ol + 1));
memcpy(s, _stringval(a), sq_rsl(l)); memcpy(s, a.getStringValue(), sq_rsl(l));
memcpy(s + l, _stringval(b), sq_rsl(ol)); memcpy(s + l, b.getStringValue(), sq_rsl(ol));
dest = rabbit::String::create(_get_shared_state(this), _spval, l + ol); dest = rabbit::String::create(_get_shared_state(this), _spval, l + ol);
return true; return true;
} }
@ -1183,11 +1183,11 @@ void rabbit::VirtualMachine::callDebugHook(int64_t type,int64_t forcedline)
if(_debughook_native) { if(_debughook_native) {
const char* src = nullptr; const char* src = nullptr;
if (func->_sourcename.isString() == true) { if (func->_sourcename.isString() == true) {
src = _stringval(func->_sourcename); src = func->_sourcename.getStringValue();
} }
const char* fname = nullptr; const char* fname = nullptr;
if (func->_name.isString() == true) { if (func->_name.isString() == true) {
fname = _stringval(func->_name); fname = func->_name.getStringValue();
} }
int64_t line = forcedline?forcedline:func->getLine(ci->_ip); int64_t line = forcedline?forcedline:func->getLine(ci->_ip);
_debughook_native(this,type,src,line,fname); _debughook_native(this,type,src,line,fname);
@ -1330,7 +1330,7 @@ bool rabbit::VirtualMachine::get(const rabbit::ObjectPtr &self, const rabbit::Ob
int64_t len = self.toString()->_len; int64_t len = self.toString()->_len;
if (n < 0) { n += len; } if (n < 0) { n += len; }
if (n >= 0 && n < len) { if (n >= 0 && n < len) {
dest = int64_t(_stringval(self)[n]); dest = int64_t(self.getStringValue()[n]);
return true; return true;
} }
if ((getflags & GET_FLAG_DO_NOT_RAISE_ERROR) == 0) raise_Idxerror(key); if ((getflags & GET_FLAG_DO_NOT_RAISE_ERROR) == 0) raise_Idxerror(key);
@ -1605,7 +1605,7 @@ bool rabbit::VirtualMachine::newSlot(const rabbit::ObjectPtr &self,const rabbit:
} }
else { else {
rabbit::ObjectPtr oval = printObjVal(key); rabbit::ObjectPtr oval = printObjVal(key);
raise_error("the property '%s' already exists",_stringval(oval)); raise_error("the property '%s' already exists",oval.getStringValue());
return false; return false;
} }
} }
@ -1849,7 +1849,7 @@ void rabbit::VirtualMachine::dumpstack(int64_t stackbase,bool dumpall)
case rabbit::OT_FLOAT: printf("FLOAT %.3f",obj.toFloat());break; case rabbit::OT_FLOAT: printf("FLOAT %.3f",obj.toFloat());break;
case rabbit::OT_INTEGER: printf("INTEGER " _PRINT_INT_FMT,obj.toInteger());break; case rabbit::OT_INTEGER: printf("INTEGER " _PRINT_INT_FMT,obj.toInteger());break;
case rabbit::OT_BOOL: printf("BOOL %s",obj.toInteger()?"true":"false");break; case rabbit::OT_BOOL: printf("BOOL %s",obj.toInteger()?"true":"false");break;
case rabbit::OT_STRING: printf("STRING %s",_stringval(obj));break; case rabbit::OT_STRING: printf("STRING %s",obj.getStringValue());break;
case rabbit::OT_NULL: printf("NULL"); break; case rabbit::OT_NULL: printf("NULL"); break;
case rabbit::OT_TABLE: printf("TABLE %p[%p]",obj.toTable(),obj.toTable()->_delegate);break; case rabbit::OT_TABLE: printf("TABLE %p[%p]",obj.toTable(),obj.toTable()->_delegate);break;
case rabbit::OT_ARRAY: printf("ARRAY %p",obj.toArray());break; case rabbit::OT_ARRAY: printf("ARRAY %p",obj.toArray());break;

View File

@ -35,7 +35,7 @@ static bool sq_aux_gettypedarg(rabbit::VirtualMachine* v,int64_t idx,rabbit::Obj
*o = &stack_get(v,idx); *o = &stack_get(v,idx);
if((*o)->getType() != type){ if((*o)->getType() != type){
rabbit::ObjectPtr oval = v->printObjVal(**o); rabbit::ObjectPtr oval = v->printObjVal(**o);
v->raise_error("wrong argument type, expected '%s' got '%.50s'",IdType2Name(type),_stringval(oval)); v->raise_error("wrong argument type, expected '%s' got '%.50s'",IdType2Name(type),oval.getStringValue());
return false; return false;
} }
return true; return true;
@ -209,7 +209,7 @@ uint64_t rabbit::sq_getvmrefcount(rabbit::VirtualMachine* SQ_UNUSED_ARG(v), cons
const char * rabbit::sq_objtostring(const rabbit::Object *o) const char * rabbit::sq_objtostring(const rabbit::Object *o)
{ {
if(o->isString() == true) { if(o->isString() == true) {
return _stringval(*o); return o->getStringValue();
} }
return NULL; return NULL;
} }
@ -718,7 +718,7 @@ rabbit::Result rabbit::sq_getstringandsize(rabbit::VirtualMachine* v,int64_t idx
{ {
rabbit::ObjectPtr *o = NULL; rabbit::ObjectPtr *o = NULL;
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o); _GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
*c = _stringval(*o); *c = o->getStringValue();
*size = o->toString()->_len; *size = o->toString()->_len;
return SQ_OK; return SQ_OK;
} }
@ -727,7 +727,7 @@ rabbit::Result rabbit::sq_getstring(rabbit::VirtualMachine* v,int64_t idx,const
{ {
rabbit::ObjectPtr *o = NULL; rabbit::ObjectPtr *o = NULL;
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o); _GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
*c = _stringval(*o); *c = o->getStringValue();
return SQ_OK; return SQ_OK;
} }
@ -1171,7 +1171,7 @@ const char * rabbit::sq_getlocal(rabbit::VirtualMachine* v,uint64_t level,uint64
rabbit::FunctionProto *func=c->_function; rabbit::FunctionProto *func=c->_function;
if(func->_noutervalues > (int64_t)idx) { if(func->_noutervalues > (int64_t)idx) {
v->push(*c->_outervalues[idx].toOuter()->_valptr); v->push(*c->_outervalues[idx].toOuter()->_valptr);
return _stringval(func->_outervalues[idx]._name); return func->_outervalues[idx]._name.getStringValue();
} }
idx -= func->_noutervalues; idx -= func->_noutervalues;
return func->getLocal(v,stackbase,idx,(int64_t)(ci._ip-func->_instructions)-1); return func->getLocal(v,stackbase,idx,(int64_t)(ci._ip-func->_instructions)-1);
@ -1417,7 +1417,7 @@ const char * rabbit::sq_getfreevariable(rabbit::VirtualMachine* v,int64_t idx,ui
if(((uint64_t)fp->_noutervalues) > nval) { if(((uint64_t)fp->_noutervalues) > nval) {
v->push(*(clo->_outervalues[nval].toOuter()->_valptr)); v->push(*(clo->_outervalues[nval].toOuter()->_valptr));
rabbit::OuterVar &ov = fp->_outervalues[nval]; rabbit::OuterVar &ov = fp->_outervalues[nval];
name = _stringval(ov._name); name = ov._name.getStringValue();
} }
} }
break; break;

View File

@ -347,7 +347,7 @@ static int64_t default_delegate_tofloat(rabbit::VirtualMachine* v)
switch(o.getType()){ switch(o.getType()){
case rabbit::OT_STRING:{ case rabbit::OT_STRING:{
rabbit::ObjectPtr res; rabbit::ObjectPtr res;
if(str2num(_stringval(o),res,10)){ if(str2num(o.getStringValue(),res,10)){
v->push(rabbit::ObjectPtr(res.toFloatValue())); v->push(rabbit::ObjectPtr(res.toFloatValue()));
break; break;
}} }}
@ -377,7 +377,7 @@ static int64_t default_delegate_tointeger(rabbit::VirtualMachine* v)
switch(o.getType()){ switch(o.getType()){
case rabbit::OT_STRING:{ case rabbit::OT_STRING:{
rabbit::ObjectPtr res; rabbit::ObjectPtr res;
if(str2num(_stringval(o),res,base)){ if(str2num(o.getStringValue(),res,base)){
v->push(rabbit::ObjectPtr(res.toIntegerValue())); v->push(rabbit::ObjectPtr(res.toIntegerValue()));
break; break;
}} }}
@ -856,7 +856,7 @@ static int64_t string_slice(rabbit::VirtualMachine* v)
if(eidx < 0)eidx = slen + eidx; if(eidx < 0)eidx = slen + eidx;
if(eidx < sidx) return sq_throwerror(v,"wrong indexes"); if(eidx < sidx) return sq_throwerror(v,"wrong indexes");
if(eidx > slen || sidx < 0) return sq_throwerror(v, "slice out of range"); if(eidx > slen || sidx < 0) return sq_throwerror(v, "slice out of range");
v->push(rabbit::String::create(_get_shared_state(v),&_stringval(o)[sidx],eidx-sidx)); v->push(rabbit::String::create(_get_shared_state(v),&o.getStringValue()[sidx],eidx-sidx));
return 1; return 1;
} }
@ -889,7 +889,7 @@ static int64_t string_find(rabbit::VirtualMachine* v)
if(eidx < sidx) return sq_throwerror(v,"wrong indexes"); \ if(eidx < sidx) return sq_throwerror(v,"wrong indexes"); \
if(eidx > slen || sidx < 0) return sq_throwerror(v,"slice out of range"); \ if(eidx > slen || sidx < 0) return sq_throwerror(v,"slice out of range"); \
int64_t len=str.toString()->_len; \ int64_t len=str.toString()->_len; \
const char *sthis=_stringval(str); \ const char *sthis=str.getStringValue(); \
char *snew=(_get_shared_state(v)->getScratchPad(sq_rsl(len))); \ char *snew=(_get_shared_state(v)->getScratchPad(sq_rsl(len))); \
memcpy(snew,sthis,sq_rsl(len));\ memcpy(snew,sthis,sq_rsl(len));\
for(int64_t i=sidx;i<eidx;i++) snew[i] = func(sthis[i]); \ for(int64_t i=sidx;i<eidx;i++) snew[i] = func(sthis[i]); \
@ -1187,7 +1187,7 @@ static int64_t thread_getstackinfos(rabbit::VirtualMachine* v)
{ {
sq_settop(thread,threadtop); sq_settop(thread,threadtop);
if(thread->_lasterror.isString() == true) { if(thread->_lasterror.isString() == true) {
sq_throwerror(v,_stringval(thread->_lasterror)); sq_throwerror(v,thread->_lasterror.getStringValue());
} }
else { else {
sq_throwerror(v,"unknown error"); sq_throwerror(v,"unknown error");

View File

@ -32,12 +32,12 @@ rabbit::Result rabbit::sq_getfunctioninfo(rabbit::VirtualMachine* v,int64_t leve
rabbit::FunctionProto *proto = c->_function; rabbit::FunctionProto *proto = c->_function;
fi->funcid = proto; fi->funcid = proto;
if (proto->_name.isString() == true) { if (proto->_name.isString() == true) {
fi->name = _stringval(proto->_name); fi->name = proto->_name.getStringValue();
} else { } else {
fi->name = "unknown"; fi->name = "unknown";
} }
if (proto->_sourcename.isString() == true) { if (proto->_sourcename.isString() == true) {
fi->source = _stringval(proto->_sourcename); fi->source = proto->_sourcename.getStringValue();
} else { } else {
fi->source = "unknown"; fi->source = "unknown";
} }
@ -59,10 +59,10 @@ rabbit::Result rabbit::sq_stackinfos(rabbit::VirtualMachine* v, int64_t level, r
{ {
rabbit::FunctionProto *func = ci._closure.toClosure()->_function; rabbit::FunctionProto *func = ci._closure.toClosure()->_function;
if (func->_name.isString() == true) { if (func->_name.isString() == true) {
si->funcname = _stringval(func->_name); si->funcname = func->_name.getStringValue();
} }
if (func->_sourcename.isString() == true) { if (func->_sourcename.isString() == true) {
si->source = _stringval(func->_sourcename); si->source = func->_sourcename.getStringValue();
} }
si->line = func->getLine(ci._ip); si->line = func->getLine(ci._ip);
} }
@ -71,7 +71,7 @@ rabbit::Result rabbit::sq_stackinfos(rabbit::VirtualMachine* v, int64_t level, r
si->source = "NATIVE"; si->source = "NATIVE";
si->funcname = "unknown"; si->funcname = "unknown";
if(ci._closure.toNativeClosure()->_name.isString() == true) { if(ci._closure.toNativeClosure()->_name.isString() == true) {
si->funcname = _stringval(ci._closure.toNativeClosure()->_name); si->funcname = ci._closure.toNativeClosure()->_name.getStringValue();
} }
si->line = -1; si->line = -1;
break; break;
@ -119,13 +119,13 @@ rabbit::String *rabbit::VirtualMachine::printObjVal(const rabbit::ObjectPtr &o)
void rabbit::VirtualMachine::raise_Idxerror(const rabbit::ObjectPtr &o) void rabbit::VirtualMachine::raise_Idxerror(const rabbit::ObjectPtr &o)
{ {
rabbit::ObjectPtr oval = printObjVal(o); rabbit::ObjectPtr oval = printObjVal(o);
raise_error("the index '%.50s' does not exist", _stringval(oval)); raise_error("the index '%.50s' does not exist", oval.getStringValue());
} }
void rabbit::VirtualMachine::raise_Compareerror(const rabbit::Object &o1, const rabbit::Object &o2) void rabbit::VirtualMachine::raise_Compareerror(const rabbit::Object &o1, const rabbit::Object &o2)
{ {
rabbit::ObjectPtr oval1 = printObjVal(o1), oval2 = printObjVal(o2); rabbit::ObjectPtr oval1 = printObjVal(o1), oval2 = printObjVal(o2);
raise_error("comparison between '%.50s' and '%.50s'", _stringval(oval1), _stringval(oval2)); raise_error("comparison between '%.50s' and '%.50s'", oval1.getStringValue(), oval2.getStringValue());
} }
@ -142,5 +142,5 @@ void rabbit::VirtualMachine::raise_ParamTypeerror(int64_t nparam,int64_t typemas
stringCat(exptypes,rabbit::String::create(_get_shared_state(this), IdType2Name((rabbit::ObjectType)mask), -1), exptypes); stringCat(exptypes,rabbit::String::create(_get_shared_state(this), IdType2Name((rabbit::ObjectType)mask), -1), exptypes);
} }
} }
raise_error("parameter %d has an invalid type '%s' ; expected: '%s'", nparam, IdType2Name((rabbit::ObjectType)type), _stringval(exptypes)); raise_error("parameter %d has an invalid type '%s' ; expected: '%s'", nparam, IdType2Name((rabbit::ObjectType)type), exptypes.getStringValue());
} }