diff --git a/rabbit-std/sqstdstring.cpp b/rabbit-std/sqstdstring.cpp index 0225027..9f328ca 100644 --- a/rabbit-std/sqstdstring.cpp +++ b/rabbit-std/sqstdstring.cpp @@ -113,40 +113,43 @@ rabbit::Result rabbit::std::format(rabbit::VirtualMachine* v,int64_t nformatstri int64_t ti = 0; float_t tf = 0; switch(format[n]) { - case 's': - if(SQ_FAILED(sq_getstring(v,nparam,&ts))) - return sq_throwerror(v,"string expected for the specified format"); - addlen = (sq_getsize(v,nparam)*sizeof(char))+((w+1)*sizeof(char)); - valtype = 's'; - break; - case 'i': case 'd': case 'o': case 'u': case 'x': case 'X': -#ifdef _SQ64 - { - size_t flen = strlen(fmt); - int64_t fpos = flen - 1; - char f = fmt[fpos]; - const char *prec = (const char *)_PRINT_INT_PREC; - while(*prec != '\0') { - fmt[fpos++] = *prec++; - } - fmt[fpos++] = f; - fmt[fpos++] = '\0'; - } -#endif - case 'c': - if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) - return sq_throwerror(v,"integer expected for the specified format"); - addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(char)); - valtype = 'i'; - break; - case 'f': case 'g': case 'G': case 'e': case 'E': - if(SQ_FAILED(sq_getfloat(v,nparam,&tf))) - return sq_throwerror(v,"float expected for the specified format"); - addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(char)); - valtype = 'f'; - break; - default: - return sq_throwerror(v,"invalid format"); + case 's': + if(SQ_FAILED(sq_getstring(v,nparam,&ts))) + return sq_throwerror(v,"string expected for the specified format"); + addlen = (sq_getsize(v,nparam)*sizeof(char))+((w+1)*sizeof(char)); + valtype = 's'; + break; + case 'i': + case 'd': + case 'o': + case 'u': + case 'x': + case 'X': + { + size_t flen = strlen(fmt); + int64_t fpos = flen - 1; + char f = fmt[fpos]; + const char *prec = (const char *)_PRINT_INT_PREC; + while(*prec != '\0') { + fmt[fpos++] = *prec++; + } + fmt[fpos++] = f; + fmt[fpos++] = '\0'; + } + case 'c': + if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) + return sq_throwerror(v,"integer expected for the specified format"); + addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(char)); + valtype = 'i'; + break; + case 'f': case 'g': case 'G': case 'e': case 'E': + if(SQ_FAILED(sq_getfloat(v,nparam,&tf))) + return sq_throwerror(v,"float expected for the specified format"); + addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(char)); + valtype = 'f'; + break; + default: + return sq_throwerror(v,"invalid format"); } n++; allocated += addlen + sizeof(char); diff --git a/rabbit/FuncState.cpp b/rabbit/FuncState.cpp index 18d1a13..bb20675 100644 --- a/rabbit/FuncState.cpp +++ b/rabbit/FuncState.cpp @@ -23,6 +23,9 @@ #include #include +#define UINT_MINUS_ONE (0xFFFFFFFFFFFFFFFF) + + #ifdef _DEBUG_DUMP rabbit::InstructionDesc g_InstrDesc[]={ {"_OP_LINE"}, diff --git a/rabbit/ObjectPtr.cpp b/rabbit/ObjectPtr.cpp index 951d66f..77c540c 100644 --- a/rabbit/ObjectPtr.cpp +++ b/rabbit/ObjectPtr.cpp @@ -12,7 +12,7 @@ #define RABBIT_OBJ_REF_TYPE_INSTANCIATE(type,_class,sym) \ rabbit::ObjectPtr::ObjectPtr(_class * x) \ { \ - SQ_OBJECT_RAWINIT() \ + _unVal.raw = 0; \ _type=type; \ _unVal.sym = x; \ assert(_unVal.pTable); \ @@ -25,7 +25,7 @@ tOldType=_type; \ unOldVal=_unVal; \ _type = type; \ - SQ_REFOBJECT_INIT() \ + _unVal.raw = 0; \ _unVal.sym = x; \ _unVal.pRefCounted->refCountIncrement(); \ __release(tOldType,unOldVal); \ @@ -35,7 +35,7 @@ #define RABBIT_SCALAR_TYPE_INSTANCIATE(type,_class,sym) \ rabbit::ObjectPtr::ObjectPtr(_class x) \ { \ - SQ_OBJECT_RAWINIT() \ + _unVal.raw = 0; \ _type=type; \ _unVal.sym = x; \ } \ @@ -43,7 +43,7 @@ { \ __release(_type,_unVal); \ _type = type; \ - SQ_OBJECT_RAWINIT() \ + _unVal.raw = 0; \ _unVal.sym = x; \ return *this; \ } @@ -70,7 +70,7 @@ RABBIT_SCALAR_TYPE_INSTANCIATE(rabbit::OT_USERPOINTER, rabbit::UserPointer, pUse rabbit::ObjectPtr::ObjectPtr() { - SQ_OBJECT_RAWINIT() + _unVal.raw = 0; _type = rabbit::OT_NULL; _unVal.pUserPointer = NULL; } @@ -88,14 +88,14 @@ rabbit::ObjectPtr::ObjectPtr(const rabbit::Object& _obj) { } rabbit::ObjectPtr::ObjectPtr(bool _value) { - SQ_OBJECT_RAWINIT() + _unVal.raw = 0; _type = rabbit::OT_BOOL; _unVal.nInteger = _value?1:0; } rabbit::ObjectPtr& rabbit::ObjectPtr::operator=(bool _value) { __release(_type,_unVal); - SQ_OBJECT_RAWINIT() + _unVal.raw = 0; _type = rabbit::OT_BOOL; _unVal.nInteger = _value?1:0; return *this; @@ -133,7 +133,7 @@ void rabbit::ObjectPtr::Null() { rabbit::ObjectType tOldType = _type; rabbit::ObjectValue unOldVal = _unVal; _type = rabbit::OT_NULL; - _unVal.raw = (rabbit::RawObjectVal)NULL; + _unVal.raw = 0; __release(tOldType ,unOldVal); } diff --git a/rabbit/ObjectPtr.hpp b/rabbit/ObjectPtr.hpp index d3ab15e..b9d48fe 100644 --- a/rabbit/ObjectPtr.hpp +++ b/rabbit/ObjectPtr.hpp @@ -14,13 +14,8 @@ #include namespace rabbit { - #if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) - #define SQ_REFOBJECT_INIT() SQ_OBJECT_RAWINIT() - #else - #define SQ_REFOBJECT_INIT() - #endif #define RABBIT_OBJ_REF_TYPE_DECLARE(type,_class,sym) \ - ObjectPtr(_class * x);\ + ObjectPtr(_class * x); \ ObjectPtr& operator=(_class *x); #define RABBIT_SCALAR_TYPE_DECLARE(type,_class,sym) \ diff --git a/rabbit/ObjectValue.hpp b/rabbit/ObjectValue.hpp index 4de1dad..e1b49aa 100644 --- a/rabbit/ObjectValue.hpp +++ b/rabbit/ObjectValue.hpp @@ -33,7 +33,7 @@ namespace rabbit { rabbit::Array* pArray; rabbit::UserData* pUserData; - rabbit::RawObjectVal raw; + uint64_t raw; }; } diff --git a/rabbit/RefCounted.cpp b/rabbit/RefCounted.cpp index 543c328..fb3a4bc 100644 --- a/rabbit/RefCounted.cpp +++ b/rabbit/RefCounted.cpp @@ -15,9 +15,7 @@ rabbit::WeakRef * rabbit::RefCounted::getWeakRef(rabbit::ObjectType type) { if(!_weakref) { sq_new(_weakref, WeakRef); -#if defined(SQUSEDOUBLE) && !defined(_SQ64) - _weakref->_obj._unVal.raw = 0; //clean the whole union on 32 bits with double -#endif + _weakref->_obj._unVal.raw = 0; //clean the whole union _weakref->_obj._type = type; _weakref->_obj._unVal.pRefCounted = this; } diff --git a/rabbit/VirtualMachine.cpp b/rabbit/VirtualMachine.cpp index d47229a..5fccd5f 100644 --- a/rabbit/VirtualMachine.cpp +++ b/rabbit/VirtualMachine.cpp @@ -676,11 +676,7 @@ bool rabbit::VirtualMachine::IsFalse(rabbit::ObjectPtr &o) { if(((sq_type(o) & SQOBJECT_CANBEFALSE) && ( ((sq_type(o) == rabbit::OT_FLOAT) && (_float(o) == float_t(0.0))) )) -#if !defined(SQUSEDOUBLE) || (defined(SQUSEDOUBLE) && defined(_SQ64)) || (_integer(o) == 0) ) //rabbit::OT_NULL|OT_INTEGER|OT_BOOL -#else - || (((type(o) != rabbit::OT_FLOAT) && (_integer(o) == 0))) ) //OT_NULL|OT_INTEGER|OT_BOOL -#endif { return true; } @@ -733,11 +729,7 @@ exception_restore: case _OP_LINE: if (_debughook) callDebugHook('l',arg1); continue; case _OP_LOAD: TARGET = ci->_literals[arg1]; continue; case _OP_LOADINT: -#ifndef _SQ64 - TARGET = (int64_t)arg1; continue; -#else TARGET = (int64_t)((int32_t)arg1); continue; -#endif case _OP_LOADFLOAT: TARGET = *((const float_t *)&arg1); continue; case _OP_DLOAD: TARGET = ci->_literals[arg1]; STK(arg2) = ci->_literals[arg3];continue; case _OP_TAILCALL:{ @@ -932,11 +924,7 @@ exception_restore: val = ci->_literals[arg1]; break; case AAT_INT: val._type = rabbit::OT_INTEGER; -#ifndef _SQ64 - val._unVal.nInteger = (int64_t)arg1; -#else val._unVal.nInteger = (int64_t)((int32_t)arg1); -#endif break; case AAT_FLOAT: val._type = rabbit::OT_FLOAT; diff --git a/rabbit/rabbit.hpp b/rabbit/rabbit.hpp index 5f1db84..9653149 100644 --- a/rabbit/rabbit.hpp +++ b/rabbit/rabbit.hpp @@ -11,12 +11,6 @@ #include _SQ_CONFIG_INCLUDE #endif -#if (defined(_WIN64) || defined(_LP64)) -#ifndef _SQ64 -#define _SQ64 -#endif -#endif - #include "sqconfig.hpp" #define RABBIT_VERSION "Rabbit 0.1 un-stable" diff --git a/rabbit/sqconfig.hpp b/rabbit/sqconfig.hpp index 77f9776..cde6685 100644 --- a/rabbit/sqconfig.hpp +++ b/rabbit/sqconfig.hpp @@ -15,16 +15,6 @@ typedef double float_t; typedef float float_t; #endif -namespace rabbit { - #if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) - using RawObjectVal = uint64_t; //must be 64bits - #define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; } - #else - using RawObjectVal = uint64_t; //is 32 bits on 32 bits builds and 64 bits otherwise - #define SQ_OBJECT_RAWINIT() - #endif -} - #ifndef SQ_ALIGNMENT #define SQ_ALIGNMENT 8 #endif @@ -48,12 +38,6 @@ namespace rabbit { #define SQFalse (0) -#ifdef _SQ64 -#define UINT_MINUS_ONE (0xFFFFFFFFFFFFFFFF) -#else -#define UINT_MINUS_ONE (0xFFFFFFFF) -#endif - namespace rabbit { class UserData; class Array;