Goodbye String Stack!

This commit is contained in:
Jeff Hutchinson 2021-04-26 22:52:58 -04:00
parent f056e181b7
commit 964fde8f09
7 changed files with 507 additions and 558 deletions

View file

@ -520,7 +520,7 @@ bool CodeBlock::compile(const char *codeFileName, StringTableEntry fileName, con
lastIp = 0;
}
codeStream.emit(OP_RETURN);
codeStream.emit(OP_RETURN_VOID);
codeStream.emitCodeStream(&codeSize, &code, &lineBreakPairs);
lineBreakPairCount = codeStream.getNumLineBreaks();
@ -640,11 +640,11 @@ ConsoleValue CodeBlock::compileExec(StringTableEntry fileName, const char *inStr
globalFloats = getGlobalFloatTable().build();
functionFloats = getFunctionFloatTable().build();
codeStream.emit(OP_RETURN);
codeStream.emit(OP_RETURN_VOID);
codeStream.emitCodeStream(&codeSize, &code, &lineBreakPairs);
if (Con::getBoolVariable("dump"))
dumpInstructions(0, false);
//if (Con::getBoolVariable("dump"))
//dumpInstructions(0, false);
consoleAllocReset();
@ -726,7 +726,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
U32 regCount = code[ip + 9];
endFuncIp = newIp;
Con::printf("%i: OP_FUNC_DECL name=%s nspace=%s package=%s hasbody=%i newip=%i argc=%i regCount=%i",
Con::printf("%i: OP_FUNC_DECL stk=+0 name=%s nspace=%s package=%s hasbody=%i newip=%i argc=%i regCount=%i",
ip - 1, fnName, fnNamespace, fnPackage, hasBody, newIp, argc, regCount);
// Skip args.
@ -745,7 +745,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
U32 lineNumber = code[ip + 5];
U32 failJump = code[ip + 6];
Con::printf("%i: OP_CREATE_OBJECT objParent=%s isDataBlock=%i isInternal=%i isSingleton=%i lineNumber=%i failJump=%i",
Con::printf("%i: OP_CREATE_OBJECT stk=+0 objParent=%s isDataBlock=%i isInternal=%i isSingleton=%i lineNumber=%i failJump=%i",
ip - 1, objParent, isDataBlock, isInternal, isSingleton, lineNumber, failJump);
ip += 7;
@ -755,14 +755,16 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_ADD_OBJECT:
{
bool placeAtRoot = code[ip++];
Con::printf("%i: OP_ADD_OBJECT placeAtRoot=%i", ip - 1, placeAtRoot);
const char* stk = placeAtRoot ? "+1" : "0";
Con::printf("%i: OP_ADD_OBJECT stk=%s placeAtRoot=%i", ip - 1, stk, placeAtRoot);
break;
}
case OP_END_OBJECT:
{
bool placeAtRoot = code[ip++];
Con::printf("%i: OP_END_OBJECT placeAtRoot=%i", ip - 1, placeAtRoot);
const char* stk = placeAtRoot ? "-1" : "0";
Con::printf("%i: OP_END_OBJECT stk=%s placeAtRoot=%i", ip - 1, stk, placeAtRoot);
break;
}
@ -774,56 +776,56 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_JMPIFFNOT:
{
Con::printf("%i: OP_JMPIFFNOT ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIFFNOT stk=-1 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMPIFNOT:
{
Con::printf("%i: OP_JMPIFNOT ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIFNOT stk=-1 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMPIFF:
{
Con::printf("%i: OP_JMPIFF ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIFF stk=-1 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMPIF:
{
Con::printf("%i: OP_JMPIF ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIF stk=-1 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMPIFNOT_NP:
{
Con::printf("%i: OP_JMPIFNOT_NP ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIFNOT_NP stk=-1 or 0 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMPIF_NP:
{
Con::printf("%i: OP_JMPIF_NP ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMPIF_NP stk=-1 or 0 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_JMP:
{
Con::printf("%i: OP_JMP ip=%i", ip - 1, code[ip]);
Con::printf("%i: OP_JMP stk=0 ip=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_RETURN:
case OP_RETURN_VOID:
{
Con::printf("%i: OP_RETURN", ip - 1);
Con::printf("%i: OP_RETURN_VOID stk=0", ip - 1);
if (upToReturn)
return;
@ -831,9 +833,9 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
break;
}
case OP_RETURN_VOID:
case OP_RETURN:
{
Con::printf("%i: OP_RETURNVOID", ip - 1);
Con::printf("%i: OP_RETURN stk=-1", ip - 1);
if (upToReturn)
return;
@ -843,7 +845,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_RETURN_UINT:
{
Con::printf("%i: OP_RETURNUINT", ip - 1);
Con::printf("%i: OP_RETURNUINT stk=-1", ip - 1);
if (upToReturn)
return;
@ -853,7 +855,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_RETURN_FLT:
{
Con::printf("%i: OP_RETURNFLT", ip - 1);
Con::printf("%i: OP_RETURNFLT stk=-1", ip - 1);
if (upToReturn)
return;
@ -863,139 +865,139 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_CMPEQ:
{
Con::printf("%i: OP_CMPEQ", ip - 1);
Con::printf("%i: OP_CMPEQ stk=-1", ip - 1);
break;
}
case OP_CMPGR:
{
Con::printf("%i: OP_CMPGR", ip - 1);
Con::printf("%i: OP_CMPGR stk=-1", ip - 1);
break;
}
case OP_CMPGE:
{
Con::printf("%i: OP_CMPGE", ip - 1);
Con::printf("%i: OP_CMPGE stk=-1", ip - 1);
break;
}
case OP_CMPLT:
{
Con::printf("%i: OP_CMPLT", ip - 1);
Con::printf("%i: OP_CMPLT stk=-1", ip - 1);
break;
}
case OP_CMPLE:
{
Con::printf("%i: OP_CMPLE", ip - 1);
Con::printf("%i: OP_CMPLE stk=-1", ip - 1);
break;
}
case OP_CMPNE:
{
Con::printf("%i: OP_CMPNE", ip - 1);
Con::printf("%i: OP_CMPNE stk=-1", ip - 1);
break;
}
case OP_XOR:
{
Con::printf("%i: OP_XOR", ip - 1);
Con::printf("%i: OP_XOR stk=-1", ip - 1);
break;
}
case OP_MOD:
{
Con::printf("%i: OP_MOD", ip - 1);
Con::printf("%i: OP_MOD stk=-1", ip - 1);
break;
}
case OP_BITAND:
{
Con::printf("%i: OP_BITAND", ip - 1);
Con::printf("%i: OP_BITAND stk=-1", ip - 1);
break;
}
case OP_BITOR:
{
Con::printf("%i: OP_BITOR", ip - 1);
Con::printf("%i: OP_BITOR stk=-1", ip - 1);
break;
}
case OP_NOT:
{
Con::printf("%i: OP_NOT", ip - 1);
Con::printf("%i: OP_NOT stk=0", ip - 1);
break;
}
case OP_NOTF:
{
Con::printf("%i: OP_NOTF", ip - 1);
Con::printf("%i: OP_NOTF stk=0", ip - 1);
break;
}
case OP_ONESCOMPLEMENT:
{
Con::printf("%i: OP_ONESCOMPLEMENT", ip - 1);
Con::printf("%i: OP_ONESCOMPLEMENT stk=0", ip - 1);
break;
}
case OP_SHR:
{
Con::printf("%i: OP_SHR", ip - 1);
Con::printf("%i: OP_SHR stk=-1", ip - 1);
break;
}
case OP_SHL:
{
Con::printf("%i: OP_SHL", ip - 1);
Con::printf("%i: OP_SHL stk=-1", ip - 1);
break;
}
case OP_AND:
{
Con::printf("%i: OP_AND", ip - 1);
Con::printf("%i: OP_AND stk=-1", ip - 1);
break;
}
case OP_OR:
{
Con::printf("%i: OP_OR", ip - 1);
Con::printf("%i: OP_OR stk=-1", ip - 1);
break;
}
case OP_ADD:
{
Con::printf("%i: OP_ADD", ip - 1);
Con::printf("%i: OP_ADD stk=-1", ip - 1);
break;
}
case OP_SUB:
{
Con::printf("%i: OP_SUB", ip - 1);
Con::printf("%i: OP_SUB stk=-1", ip - 1);
break;
}
case OP_MUL:
{
Con::printf("%i: OP_MUL", ip - 1);
Con::printf("%i: OP_MUL stk=-1", ip - 1);
break;
}
case OP_DIV:
{
Con::printf("%i: OP_DIV", ip - 1);
Con::printf("%i: OP_DIV stk=-1", ip - 1);
break;
}
case OP_NEG:
{
Con::printf("%i: OP_NEG", ip - 1);
Con::printf("%i: OP_NEG stk=0", ip - 1);
break;
}
case OP_INC:
{
Con::printf("%i: OP_INC reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_INC stk=0 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
@ -1004,7 +1006,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
{
StringTableEntry var = CodeToSTE(code, ip);
Con::printf("%i: OP_SETCURVAR var=%s", ip - 1, var);
Con::printf("%i: OP_SETCURVAR stk=0 var=%s", ip - 1, var);
ip += 2;
break;
}
@ -1013,116 +1015,116 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
{
StringTableEntry var = CodeToSTE(code, ip);
Con::printf("%i: OP_SETCURVAR_CREATE var=%s", ip - 1, var);
Con::printf("%i: OP_SETCURVAR_CREATE stk=0 var=%s", ip - 1, var);
ip += 2;
break;
}
case OP_SETCURVAR_ARRAY:
{
Con::printf("%i: OP_SETCURVAR_ARRAY", ip - 1);
Con::printf("%i: OP_SETCURVAR_ARRAY stk=0", ip - 1);
break;
}
case OP_SETCURVAR_ARRAY_CREATE:
{
Con::printf("%i: OP_SETCURVAR_ARRAY_CREATE", ip - 1);
Con::printf("%i: OP_SETCURVAR_ARRAY_CREATE stk=0", ip - 1);
break;
}
case OP_LOADVAR_UINT:
{
Con::printf("%i: OP_LOADVAR_UINT", ip - 1);
Con::printf("%i: OP_LOADVAR_UINT stk=+1", ip - 1);
break;
}
case OP_LOADVAR_FLT:
{
Con::printf("%i: OP_LOADVAR_FLT", ip - 1);
Con::printf("%i: OP_LOADVAR_FLT stk=+1", ip - 1);
break;
}
case OP_LOADVAR_STR:
{
Con::printf("%i: OP_LOADVAR_STR", ip - 1);
Con::printf("%i: OP_LOADVAR_STR stk=+1", ip - 1);
break;
}
case OP_SAVEVAR_UINT:
{
Con::printf("%i: OP_SAVEVAR_UINT", ip - 1);
Con::printf("%i: OP_SAVEVAR_UINT stk=0", ip - 1);
break;
}
case OP_SAVEVAR_FLT:
{
Con::printf("%i: OP_SAVEVAR_FLT", ip - 1);
Con::printf("%i: OP_SAVEVAR_FLT stk=0", ip - 1);
break;
}
case OP_SAVEVAR_STR:
{
Con::printf("%i: OP_SAVEVAR_STR", ip - 1);
Con::printf("%i: OP_SAVEVAR_STR stk=0", ip - 1);
break;
}
case OP_LOAD_LOCAL_VAR_UINT:
{
Con::printf("%i: OP_LOAD_LOCAL_VAR_UINT reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_LOAD_LOCAL_VAR_UINT stk=+1 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_LOAD_LOCAL_VAR_FLT:
{
Con::printf("%i: OP_LOAD_LOCAL_VAR_FLT reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_LOAD_LOCAL_VAR_FLT stk=+1 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_LOAD_LOCAL_VAR_STR:
{
Con::printf("%i: OP_LOAD_LOCAL_VAR_STR reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_LOAD_LOCAL_VAR_STR stk=+1 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_SAVE_LOCAL_VAR_UINT:
{
Con::printf("%i: OP_SAVE_LOCAL_VAR_UINT reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_SAVE_LOCAL_VAR_UINT stk=0 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_SAVE_LOCAL_VAR_FLT:
{
Con::printf("%i: OP_SAVE_LOCAL_VAR_FLT reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_SAVE_LOCAL_VAR_FLT stk=0 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_SAVE_LOCAL_VAR_STR:
{
Con::printf("%i: OP_SAVE_LOCAL_VAR_STR reg=%i", ip - 1, code[ip]);
Con::printf("%i: OP_SAVE_LOCAL_VAR_STR stk=0 reg=%i", ip - 1, code[ip]);
++ip;
break;
}
case OP_SETCUROBJECT:
{
Con::printf("%i: OP_SETCUROBJECT", ip - 1);
Con::printf("%i: OP_SETCUROBJECT stk=-1", ip - 1);
break;
}
case OP_SETCUROBJECT_NEW:
{
Con::printf("%i: OP_SETCUROBJECT_NEW", ip - 1);
Con::printf("%i: OP_SETCUROBJECT_NEW stk=0", ip - 1);
break;
}
case OP_SETCUROBJECT_INTERNAL:
{
Con::printf("%i: OP_SETCUROBJECT_INTERNAL", ip - 1);
Con::printf("%i: OP_SETCUROBJECT_INTERNAL stk=0", ip - 1);
++ip;
break;
}
@ -1130,113 +1132,71 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_SETCURFIELD:
{
StringTableEntry curField = CodeToSTE(code, ip);
Con::printf("%i: OP_SETCURFIELD field=%s", ip - 1, curField);
Con::printf("%i: OP_SETCURFIELD stk=0 field=%s", ip - 1, curField);
ip += 2;
break;
}
case OP_SETCURFIELD_ARRAY:
{
Con::printf("%i: OP_SETCURFIELD_ARRAY", ip - 1);
Con::printf("%i: OP_SETCURFIELD_ARRAY stk=0", ip - 1);
break;
}
case OP_SETCURFIELD_TYPE:
{
U32 type = code[ip];
Con::printf("%i: OP_SETCURFIELD_TYPE type=%i", ip - 1, type);
Con::printf("%i: OP_SETCURFIELD_TYPE stk=0 type=%i", ip - 1, type);
++ip;
break;
}
case OP_LOADFIELD_UINT:
{
Con::printf("%i: OP_LOADFIELD_UINT", ip - 1);
Con::printf("%i: OP_LOADFIELD_UINT stk=+1", ip - 1);
break;
}
case OP_LOADFIELD_FLT:
{
Con::printf("%i: OP_LOADFIELD_FLT", ip - 1);
Con::printf("%i: OP_LOADFIELD_FLT stk=+1", ip - 1);
break;
}
case OP_LOADFIELD_STR:
{
Con::printf("%i: OP_LOADFIELD_STR", ip - 1);
Con::printf("%i: OP_LOADFIELD_STR stk=+1", ip - 1);
break;
}
case OP_SAVEFIELD_UINT:
{
Con::printf("%i: OP_SAVEFIELD_UINT", ip - 1);
Con::printf("%i: OP_SAVEFIELD_UINT stk=0", ip - 1);
break;
}
case OP_SAVEFIELD_FLT:
{
Con::printf("%i: OP_SAVEFIELD_FLT", ip - 1);
Con::printf("%i: OP_SAVEFIELD_FLT stk=0", ip - 1);
break;
}
case OP_SAVEFIELD_STR:
{
Con::printf("%i: OP_SAVEFIELD_STR", ip - 1);
Con::printf("%i: OP_SAVEFIELD_STR stk=0", ip - 1);
break;
}
case OP_STR_TO_UINT:
case OP_POP_STK:
{
Con::printf("%i: OP_STR_TO_UINT", ip - 1);
break;
}
case OP_STR_TO_FLT:
{
Con::printf("%i: OP_STR_TO_FLT", ip - 1);
break;
}
case OP_STR_TO_NONE:
{
Con::printf("%i: OP_STR_TO_NONE", ip - 1);
break;
}
case OP_FLT_TO_UINT:
{
Con::printf("%i: OP_FLT_TO_UINT", ip - 1);
break;
}
case OP_FLT_TO_STR:
{
Con::printf("%i: OP_FLT_TO_STR", ip - 1);
break;
}
case OP_UINT_TO_FLT:
{
Con::printf("%i: OP_UINT_TO_FLT", ip - 1);
break;
}
case OP_UINT_TO_STR:
{
Con::printf("%i: OP_UINT_TO_STR", ip - 1);
break;
}
case OP_NUM_TO_NONE:
{
Con::printf("%i: OP_NUM_TO_NONE", ip - 1);
Con::printf("%i: OP_POP_STK stk=-1", ip - 1);
break;
}
case OP_LOADIMMED_UINT:
{
U32 val = code[ip];
Con::printf("%i: OP_LOADIMMED_UINT val=%i", ip - 1, val);
Con::printf("%i: OP_LOADIMMED_UINT stk=+1 val=%i", ip - 1, val);
++ip;
break;
}
@ -1244,7 +1204,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_LOADIMMED_FLT:
{
F64 val = (smInFunction ? functionFloats : globalFloats)[code[ip]];
Con::printf("%i: OP_LOADIMMED_FLT val=%f", ip - 1, val);
Con::printf("%i: OP_LOADIMMED_FLT stk=+1 val=%f", ip - 1, val);
++ip;
break;
}
@ -1252,7 +1212,8 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_TAG_TO_STR:
{
const char* str = (smInFunction ? functionStrings : globalStrings) + code[ip];
Con::printf("%i: OP_TAG_TO_STR str=%s", ip - 1, str);
Con::printf("%i: OP_TAG_TO_STR stk=0 str=%s", ip - 1, str);
Con::printf(" OP_LOADIMMED_STR stk=+1 (fallthrough)");
++ip;
break;
}
@ -1260,7 +1221,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_LOADIMMED_STR:
{
const char* str = (smInFunction ? functionStrings : globalStrings) + code[ip];
Con::printf("%i: OP_LOADIMMED_STR str=%s", ip - 1, str);
Con::printf("%i: OP_LOADIMMED_STR stk=+1 str=%s", ip - 1, str);
++ip;
break;
}
@ -1268,7 +1229,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_DOCBLOCK_STR:
{
const char* str = (smInFunction ? functionStrings : globalStrings) + code[ip];
Con::printf("%i: OP_DOCBLOCK_STR str=%s", ip - 1, str);
Con::printf("%i: OP_DOCBLOCK_STR stk=0 str=%s", ip - 1, str);
++ip;
break;
}
@ -1276,7 +1237,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_LOADIMMED_IDENT:
{
StringTableEntry str = CodeToSTE(code, ip);
Con::printf("%i: OP_LOADIMMED_IDENT str=%s", ip - 1, str);
Con::printf("%i: OP_LOADIMMED_IDENT stk=+1 str=%s", ip - 1, str);
ip += 2;
break;
}
@ -1296,77 +1257,48 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case FuncCallExprNode::StaticCall: callTypeName = "StaticCall"; break;
}
Con::printf("%i: OP_CALLFUNC name=%s nspace=%s callType=%s", ip - 1, fnName, fnNamespace, callTypeName);
Con::printf("%i: OP_CALLFUNC stk=+1 name=%s nspace=%s callType=%s", ip - 1, fnName, fnNamespace, callTypeName);
ip += 5;
break;
}
case OP_ADVANCE_STR:
{
Con::printf("%i: OP_ADVANCE_STR", ip - 1);
break;
}
case OP_ADVANCE_STR_APPENDCHAR:
{
char ch = code[ip];
Con::printf("%i: OP_ADVANCE_STR_APPENDCHAR char=%c", ip - 1, ch);
Con::printf("%i: OP_ADVANCE_STR_APPENDCHAR stk=0 char=%c", ip - 1, ch);
++ip;
break;
}
case OP_ADVANCE_STR_COMMA:
{
Con::printf("%i: OP_ADVANCE_STR_COMMA", ip - 1);
break;
}
case OP_ADVANCE_STR_NUL:
{
Con::printf("%i: OP_ADVANCE_STR_NUL", ip - 1);
break;
}
case OP_REWIND_STR:
{
Con::printf("%i: OP_REWIND_STR", ip - 1);
Con::printf("%i: OP_REWIND_STR stk=0", ip - 1);
Con::printf(" OP_TERMINATE_REWIND_STR stk=-1 (fallthrough)");
break;
}
case OP_TERMINATE_REWIND_STR:
{
Con::printf("%i: OP_TERMINATE_REWIND_STR", ip - 1);
Con::printf("%i: OP_TERMINATE_REWIND_STR stk=-1", ip - 1);
break;
}
case OP_COMPARE_STR:
{
Con::printf("%i: OP_COMPARE_STR", ip - 1);
Con::printf("%i: OP_COMPARE_STR stk=-1", ip - 1);
break;
}
case OP_PUSH:
{
Con::printf("%i: OP_PUSH", ip - 1);
break;
}
case OP_PUSH_UINT:
{
Con::printf("%i: OP_PUSH_UINT", ip - 1);
break;
}
case OP_PUSH_FLT:
{
Con::printf("%i: OP_PUSH_FLT", ip - 1);
Con::printf("%i: OP_PUSH stk=-1", ip - 1);
break;
}
case OP_PUSH_FRAME:
{
Con::printf("%i: OP_PUSH_FRAME count=%i", ip - 1, code[ip]);
Con::printf("%i: OP_PUSH_FRAME stk=0 count=%i", ip - 1, code[ip]);
++ip;
break;
}
@ -1374,14 +1306,14 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_ASSERT:
{
const char* message = (smInFunction ? functionStrings : globalStrings) + code[ip];
Con::printf("%i: OP_ASSERT message=%s", ip - 1, message);
Con::printf("%i: OP_ASSERT stk=-1 message=%s", ip - 1, message);
++ip;
break;
}
case OP_BREAK:
{
Con::printf("%i: OP_BREAK", ip - 1);
Con::printf("%i: OP_BREAK stk=0", ip - 1);
break;
}
@ -1393,7 +1325,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
StringTableEntry varName = CodeToSTE(code, ip + 1);
U32 failIp = code[ip + 3];
Con::printf("%i: OP_ITER_BEGIN varName=%s failIp=%i isGlobal=%s", ip - 1, varName, failIp, "true");
Con::printf("%i: OP_ITER_BEGIN stk=0 varName=%s failIp=%i isGlobal=%s", ip - 1, varName, failIp, "true");
ip += 4;
}
@ -1402,7 +1334,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
S32 reg = code[ip + 1];
U32 failIp = code[ip + 2];
Con::printf("%i: OP_ITER_BEGIN varRegister=%d failIp=%i isGlobal=%s", ip - 1, reg, failIp, "false");
Con::printf("%i: OP_ITER_BEGIN stk=0 varRegister=%d failIp=%i isGlobal=%s", ip - 1, reg, failIp, "false");
ip += 3;
}
@ -1417,7 +1349,8 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
StringTableEntry varName = CodeToSTE(code, ip + 1);
U32 failIp = code[ip + 3];
Con::printf("%i: OP_ITER_BEGIN_STR varName=%s failIp=%i isGlobal=%s", ip - 1, varName, failIp, "true");
Con::printf("%i: OP_ITER_BEGIN_STR stk=0 varName=%s failIp=%i isGlobal=%s", ip - 1, varName, failIp, "true");
Con::printf(" OP_ITER_BEGIN stk=0 (fallthrough)");
ip += 4;
}
@ -1426,7 +1359,8 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
S32 reg = code[ip + 1];
U32 failIp = code[ip + 2];
Con::printf("%i: OP_ITER_BEGIN_STR varRegister=%d failIp=%i isGlobal=%s", ip - 1, reg, failIp, "false");
Con::printf("%i: OP_ITER_BEGIN_STR stk=0 varRegister=%d failIp=%i isGlobal=%s", ip - 1, reg, failIp, "false");
Con::printf(" OP_ITER_BEGIN stk=0 (fallthrough)");
ip += 3;
}
@ -1438,7 +1372,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
{
U32 breakIp = code[ip];
Con::printf("%i: OP_ITER breakIp=%i", ip - 1, breakIp);
Con::printf("%i: OP_ITER stk=0 breakIp=%i", ip - 1, breakIp);
++ip;
break;
@ -1446,7 +1380,7 @@ void CodeBlock::dumpInstructions(U32 startIp, bool upToReturn)
case OP_ITER_END:
{
Con::printf("%i: OP_ITER_END", ip - 1);
Con::printf("%i: OP_ITER_END stk=-1", ip - 1);
break;
}