From be2955b9266e7cf3e369d7073d48a416b13eff23 Mon Sep 17 00:00:00 2001 From: mingodad Date: Mon, 18 Jan 2016 19:27:16 +0000 Subject: [PATCH] Remove multiple calls with same parameter by only one call. --- squirrel/sqapi.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/squirrel/sqapi.cpp b/squirrel/sqapi.cpp index 3a51176..0420e3c 100644 --- a/squirrel/sqapi.cpp +++ b/squirrel/sqapi.cpp @@ -1020,23 +1020,23 @@ SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx) SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); + SQObjectPtr &obj = v->GetUp(-1); switch(type(self)) { case OT_TABLE: - if(_table(self)->Get(v->GetUp(-1),v->GetUp(-1))) + if(_table(self)->Get(obj,obj)) return SQ_OK; break; case OT_CLASS: - if(_class(self)->Get(v->GetUp(-1),v->GetUp(-1))) + if(_class(self)->Get(obj,obj)) return SQ_OK; break; case OT_INSTANCE: - if(_instance(self)->Get(v->GetUp(-1),v->GetUp(-1))) + if(_instance(self)->Get(obj,obj)) return SQ_OK; break; case OT_ARRAY:{ - SQObjectPtr& key = v->GetUp(-1); - if(sq_isnumeric(key)){ - if(_array(self)->Get(tointeger(key),v->GetUp(-1))) { + if(sq_isnumeric(obj)){ + if(_array(self)->Get(tointeger(obj),obj)) { return SQ_OK; } } @@ -1049,7 +1049,7 @@ SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) default: v->Pop(); return sq_throwerror(v,_SC("rawget works only on array/table/instance and class")); - } + } v->Pop(); return sq_throwerror(v,_SC("the index doesn't exist")); } @@ -1132,9 +1132,10 @@ SQRESULT sq_reservestack(HSQUIRRELVM v,SQInteger nsize) SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror) { - if(type(v->GetUp(-1))==OT_GENERATOR){ + SQObjectPtr &obj = v->GetUp(-1); + if(type(obj)==OT_GENERATOR){ v->PushNull(); //retval - if(!v->Execute(v->GetUp(-2),0,v->_top,v->GetUp(-1),raiseerror,SQVM::ET_RESUME_GENERATOR)) + if(!v->Execute(v->GetUp(-2),0,v->_top,obj,raiseerror,SQVM::ET_RESUME_GENERATOR)) {v->Raise_Error(v->_lasterror); return SQ_ERROR;} if(!retval) v->Pop();