|
|
@@ -164,7 +164,7 @@ void SQFuncState::Dump(SQFunctionProto *func)
|
|
|
for(i=0;i<_instructions.size();i++){
|
|
|
SQInstruction &inst=_instructions[i];
|
|
|
if(inst.op==_OP_LOAD || inst.op==_OP_DLOAD || inst.op==_OP_PREPCALLK || inst.op==_OP_GETK ){
|
|
|
-
|
|
|
+
|
|
|
SQInteger lidx = inst._arg1;
|
|
|
scprintf(_SC("[%03d] %15s %d "),n,g_InstrDesc[inst.op].name,inst._arg0);
|
|
|
if(lidx >= 0xFFFFFFFF)
|
|
|
@@ -173,7 +173,7 @@ void SQFuncState::Dump(SQFunctionProto *func)
|
|
|
SQInteger refidx;
|
|
|
SQObjectPtr val,key,refo;
|
|
|
while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) {
|
|
|
- refo = refidx;
|
|
|
+ refo = refidx;
|
|
|
}
|
|
|
DumpLiteral(key);
|
|
|
}
|
|
|
@@ -189,7 +189,7 @@ void SQFuncState::Dump(SQFunctionProto *func)
|
|
|
SQInteger refidx;
|
|
|
SQObjectPtr val,key,refo;
|
|
|
while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) {
|
|
|
- refo = refidx;
|
|
|
+ refo = refidx;
|
|
|
}
|
|
|
DumpLiteral(key);
|
|
|
scprintf(_SC("\n"));
|
|
|
@@ -394,13 +394,13 @@ SQInteger SQFuncState::GetOuterVariable(const SQObject &name)
|
|
|
return i;
|
|
|
}
|
|
|
SQInteger pos=-1;
|
|
|
- if(_parent) {
|
|
|
+ if(_parent) {
|
|
|
pos = _parent->GetLocalVariable(name);
|
|
|
if(pos == -1) {
|
|
|
pos = _parent->GetOuterVariable(name);
|
|
|
if(pos != -1) {
|
|
|
_outervalues.push_back(SQOuterVar(name,SQObjectPtr(SQInteger(pos)),otOUTER)); //local
|
|
|
- return _outervalues.size() - 1;
|
|
|
+ return _outervalues.size() - 1;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
@@ -480,11 +480,11 @@ void SQFuncState::AddInstruction(SQInstruction &i)
|
|
|
break;
|
|
|
case _OP_GET:
|
|
|
if( pi.op == _OP_LOAD && pi._arg0 == i._arg2 && (!IsLocal(pi._arg0))){
|
|
|
- pi._arg1 = pi._arg1;
|
|
|
+ //pi._arg1 = pi._arg1;
|
|
|
pi._arg2 = (unsigned char)i._arg1;
|
|
|
pi.op = _OP_GETK;
|
|
|
pi._arg0 = i._arg0;
|
|
|
-
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
break;
|
|
|
@@ -492,7 +492,7 @@ void SQFuncState::AddInstruction(SQInstruction &i)
|
|
|
if( pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){
|
|
|
pi.op = _OP_PREPCALLK;
|
|
|
pi._arg0 = i._arg0;
|
|
|
- pi._arg1 = pi._arg1;
|
|
|
+ //pi._arg1 = pi._arg1;
|
|
|
pi._arg2 = i._arg2;
|
|
|
pi._arg3 = i._arg3;
|
|
|
return;
|
|
|
@@ -510,7 +510,7 @@ void SQFuncState::AddInstruction(SQInstruction &i)
|
|
|
if(aat != -1 && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){
|
|
|
pi.op = _OP_APPENDARRAY;
|
|
|
pi._arg0 = i._arg0;
|
|
|
- pi._arg1 = pi._arg1;
|
|
|
+ //pi._arg1 = pi._arg1;
|
|
|
pi._arg2 = (unsigned char)aat;
|
|
|
pi._arg3 = MAX_FUNC_STACKSIZE;
|
|
|
return;
|
|
|
@@ -552,7 +552,7 @@ void SQFuncState::AddInstruction(SQInstruction &i)
|
|
|
{
|
|
|
pi.op = i.op;
|
|
|
pi._arg0 = i._arg0;
|
|
|
- pi._arg1 = pi._arg1;
|
|
|
+ //pi._arg1 = pi._arg1;
|
|
|
pi._arg2 = i._arg2;
|
|
|
pi._arg3 = MAX_FUNC_STACKSIZE;
|
|
|
return;
|
|
|
@@ -560,7 +560,7 @@ void SQFuncState::AddInstruction(SQInstruction &i)
|
|
|
break;
|
|
|
case _OP_LOADNULLS:
|
|
|
if((pi.op == _OP_LOADNULLS && pi._arg0+pi._arg1 == i._arg0)) {
|
|
|
-
|
|
|
+
|
|
|
pi._arg1 = pi._arg1 + 1;
|
|
|
pi.op = _OP_LOADNULLS;
|
|
|
return;
|
|
|
@@ -594,7 +594,7 @@ SQObject SQFuncState::CreateTable()
|
|
|
|
|
|
SQFunctionProto *SQFuncState::BuildProto()
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
SQFunctionProto *f=SQFunctionProto::Create(_ss,_instructions.size(),
|
|
|
_nliterals,_parameters.size(),_functions.size(),_outervalues.size(),
|
|
|
_lineinfos.size(),_localvarinfos.size(),_defaultparams.size());
|