Domingo Alvarez Duarte 11 лет назад
Родитель
Сommit
730caef3c9
1 измененных файлов с 22 добавлено и 11 удалено
  1. 22 11
      SquiLu/squirrel/sqobject.cpp

+ 22 - 11
SquiLu/squirrel/sqobject.cpp

@@ -556,6 +556,19 @@ static const SQChar *get_arith_op(int it){
         default: return _SC("?");
     }
 #undef SCASE
+}
+
+static const SQChar *getOpName(int op_code) {
+	const SQChar *str_op;
+
+    switch(op_code){
+#define ENUM_OP(a,b) case a: str_op = _SC(#a); break;
+        SQ_OP_CODE_LIST()
+#undef ENUM_OP
+        default:
+            str_op = _SC("???");
+    }
+    return str_op;
 }
 
 bool SQFunctionProto::SaveAsSource(SQVM *v,SQUserPointer up,SQWRITEFUNC write)
@@ -613,7 +626,7 @@ bool SQFunctionProto::SaveAsSource(SQVM *v,SQUserPointer up,SQWRITEFUNC write)
 	SafeWriteFmt(v,write,up,"\tlineinfos = [\n\t\t//[op, line],\n");
 	for(i=0;i<nlineinfos;i++){
 	    SQLineInfo &li=_lineinfos[i];
-		SafeWriteFmt(v,write,up,"\t\t/*%d*/ [%d, %d],\n", i, li._op, li._line);
+		SafeWriteFmt(v,write,up,"\t\t/*%d*/ [%d, %d], /*%s*/\n", i, li._op, li._line, getOpName(li._op));
 	}
     SafeWriteFmt(v,write,up,"\t],\n");
 
@@ -623,18 +636,12 @@ bool SQFunctionProto::SaveAsSource(SQVM *v,SQUserPointer up,SQWRITEFUNC write)
 	}
     SafeWriteFmt(v,write,up,"],\n");
 
-	SafeWriteFmt(v,write,up,"\tinstructions = [\n");
+	SafeWriteFmt(v,write,up,"\tinstructions = [ /*stack*/\n");
     SafeWriteFmt(v,write,up,"\t\t//[op_str, op, arg0, arg1, arg2, arg3],\n");
 	const SQChar *str_op;
 	for(i=0;i<ninstructions;i++){
 	    SQInstruction &inst = _instructions[i];
-	    switch(inst.op){
-#define ENUM_OP(a,b) case a: str_op = _SC(#a); break;
-	        SQ_OP_CODE_LIST()
-#undef ENUM_OP
-            default:
-                str_op = _SC("???");
-	    }
+        str_op = getOpName(inst.op);
 		SafeWriteFmt(v,write,up,"\t\t/*%d*/ [\"%s\", %d, %d, %d, %d, %d],", i, str_op, inst.op, inst._arg0, inst._arg1, inst._arg2, inst._arg3);
 
         switch(inst.op){
@@ -646,12 +653,16 @@ bool SQFunctionProto::SaveAsSource(SQVM *v,SQUserPointer up,SQWRITEFUNC write)
                 else
                 {
                     SafeWriteFmt(v,write,up,"\t\t/* stk[%d] <- literals[%d] */", inst._arg0, lidx);
+                    //_CHECK_IO(WriteObjectAsCode(v,up,write,_literals[lidx], false));
+                    //SafeWriteFmt(v,write,up," */");
                 }
                 if(inst.op == _OP_DLOAD) {
                     lidx = inst._arg3;
                     if(lidx >= 0xFFFFFFFF)  SafeWriteFmt(v,write,up," /* stk[%d] <- null */", inst._arg2);
                     else {
-                        SafeWriteFmt(v,write,up," /* stk[%d] <- literals[%d] */", inst._arg2, lidx);
+                        SafeWriteFmt(v,write,up," /* stk[%d] <- literals[%d] ", inst._arg2, lidx);
+                        _CHECK_IO(WriteObjectAsCode(v,up,write,_literals[lidx], false));
+                        SafeWriteFmt(v,write,up," */");
                     }
                 }
             }
@@ -699,7 +710,7 @@ bool SQFunctionProto::SaveAsSource(SQVM *v,SQUserPointer up,SQWRITEFUNC write)
                                      inst._arg0, inst._arg1, i + inst._arg1 + 1);
             break;
             case _OP_RETURN:
-                        SafeWriteFmt(v,write,up,"\t/* _arg0(0x%X) != 0xFF ? stk[%d] : null */",
+                        SafeWriteFmt(v,write,up,"\t/* _arg0(%d) != 255 ? stk[%d] : null */",
                                      inst._arg0, inst._arg1);
             break;
             case _OP_NEWOBJ: