Add execution marker to each instruction.
Todas as verificações foram bem sucedidas
The build was successful.
Todas as verificações foram bem sucedidas
The build was successful.
Esse commit está contido em:
@@ -317,6 +317,7 @@ PH7_PRIVATE sxi32 PH7_VmEmitInstr(
|
|||||||
sInstr.iP1 = iP1;
|
sInstr.iP1 = iP1;
|
||||||
sInstr.iP2 = iP2;
|
sInstr.iP2 = iP2;
|
||||||
sInstr.p3 = p3;
|
sInstr.p3 = p3;
|
||||||
|
sInstr.bExec = FALSE;
|
||||||
sInstr.pFile = pFile;
|
sInstr.pFile = pFile;
|
||||||
sInstr.iLine = 1;
|
sInstr.iLine = 1;
|
||||||
if(pVm->sCodeGen.pEnd && pVm->sCodeGen.pEnd->nLine > 0) {
|
if(pVm->sCodeGen.pEnd && pVm->sCodeGen.pEnd->nLine > 0) {
|
||||||
@@ -2056,6 +2057,7 @@ static sxi32 VmByteCodeExec(
|
|||||||
for(;;) {
|
for(;;) {
|
||||||
/* Fetch the instruction to execute */
|
/* Fetch the instruction to execute */
|
||||||
pInstr = &aInstr[pc];
|
pInstr = &aInstr[pc];
|
||||||
|
pInstr->bExec = TRUE;
|
||||||
if(pVm->bDebug) {
|
if(pVm->bDebug) {
|
||||||
/* Record executed instruction in debug container */
|
/* Record executed instruction in debug container */
|
||||||
SySetPut(&pVm->aInstrSet, (void *)pInstr);
|
SySetPut(&pVm->aInstrSet, (void *)pInstr);
|
||||||
@@ -7151,6 +7153,7 @@ PH7_PRIVATE sxi32 PH7_VmCallClassMethod(
|
|||||||
aInstr[0].iP1 = nArg; /* Total number of given arguments */
|
aInstr[0].iP1 = nArg; /* Total number of given arguments */
|
||||||
aInstr[0].iP2 = iEntry;
|
aInstr[0].iP2 = iEntry;
|
||||||
aInstr[0].p3 = 0;
|
aInstr[0].p3 = 0;
|
||||||
|
aInstr[0].bExec = FALSE;
|
||||||
aInstr[0].iLine = 1;
|
aInstr[0].iLine = 1;
|
||||||
aInstr[0].pFile = (SyString *)&sFileName;
|
aInstr[0].pFile = (SyString *)&sFileName;
|
||||||
/* Emit the DONE instruction */
|
/* Emit the DONE instruction */
|
||||||
@@ -7158,6 +7161,7 @@ PH7_PRIVATE sxi32 PH7_VmCallClassMethod(
|
|||||||
aInstr[1].iP1 = 1; /* Extract method return value */
|
aInstr[1].iP1 = 1; /* Extract method return value */
|
||||||
aInstr[1].iP2 = 0;
|
aInstr[1].iP2 = 0;
|
||||||
aInstr[1].p3 = 0;
|
aInstr[1].p3 = 0;
|
||||||
|
aInstr[1].bExec = FALSE;
|
||||||
aInstr[1].iLine = 1;
|
aInstr[1].iLine = 1;
|
||||||
aInstr[1].pFile = (SyString *)&sFileName;
|
aInstr[1].pFile = (SyString *)&sFileName;
|
||||||
/* Execute the method body (if available) */
|
/* Execute the method body (if available) */
|
||||||
@@ -7271,6 +7275,7 @@ PH7_PRIVATE sxi32 PH7_VmCallUserFunction(
|
|||||||
aInstr[0].iP1 = nArg; /* Total number of given arguments */
|
aInstr[0].iP1 = nArg; /* Total number of given arguments */
|
||||||
aInstr[0].iP2 = 0;
|
aInstr[0].iP2 = 0;
|
||||||
aInstr[0].p3 = 0;
|
aInstr[0].p3 = 0;
|
||||||
|
aInstr[0].bExec = FALSE;
|
||||||
aInstr[0].iLine = 1;
|
aInstr[0].iLine = 1;
|
||||||
aInstr[0].pFile = (SyString *)&sFileName;
|
aInstr[0].pFile = (SyString *)&sFileName;
|
||||||
/* Emit the DONE instruction */
|
/* Emit the DONE instruction */
|
||||||
@@ -7278,6 +7283,7 @@ PH7_PRIVATE sxi32 PH7_VmCallUserFunction(
|
|||||||
aInstr[1].iP1 = 1; /* Extract function return value if available */
|
aInstr[1].iP1 = 1; /* Extract function return value if available */
|
||||||
aInstr[1].iP2 = 0;
|
aInstr[1].iP2 = 0;
|
||||||
aInstr[1].p3 = 0;
|
aInstr[1].p3 = 0;
|
||||||
|
aInstr[1].bExec = FALSE;
|
||||||
aInstr[1].iLine = 1;
|
aInstr[1].iLine = 1;
|
||||||
aInstr[1].pFile = (SyString *)&sFileName;
|
aInstr[1].pFile = (SyString *)&sFileName;
|
||||||
/* Execute the function body (if available) */
|
/* Execute the function body (if available) */
|
||||||
|
@@ -1123,6 +1123,7 @@ struct VmInstr {
|
|||||||
sxi32 iP1; /* First operand */
|
sxi32 iP1; /* First operand */
|
||||||
sxu32 iP2; /* Second operand (Often the jump destination) */
|
sxu32 iP2; /* Second operand (Often the jump destination) */
|
||||||
void *p3; /* Third operand (Often Upper layer private data) */
|
void *p3; /* Third operand (Often Upper layer private data) */
|
||||||
|
sxbool bExec; /* Whether the instruction has been already executed or not */
|
||||||
SyString *pFile; /* File name */
|
SyString *pFile; /* File name */
|
||||||
sxu32 iLine; /* Line number */
|
sxu32 iLine; /* Line number */
|
||||||
};
|
};
|
||||||
|
Referência em uma nova issue
Block a user