Rename VM's jump instructions for better readability.
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				 The build was successful.
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	 The build was successful.
				
			This commit is contained in:
		@@ -1688,9 +1688,9 @@ static sxi32 PH7_CompileWhile(ph7_gen_state *pGen) {
 | 
			
		||||
	pGen->pIn  = &pEnd[1];
 | 
			
		||||
	pGen->pEnd = pTmp;
 | 
			
		||||
	/* Emit the false jump */
 | 
			
		||||
	PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JZ, 0, 0, 0, &nFalseJump);
 | 
			
		||||
	PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPZ, 0, 0, 0, &nFalseJump);
 | 
			
		||||
	/* Save the instruction index so we can fix it later when the jump destination is resolved */
 | 
			
		||||
	PH7_GenStateNewJumpFixup(pWhileBlock, PH7_OP_JZ, nFalseJump);
 | 
			
		||||
	PH7_GenStateNewJumpFixup(pWhileBlock, PH7_OP_JMPZ, nFalseJump);
 | 
			
		||||
	/* Compile the loop body */
 | 
			
		||||
	rc = PH7_CompileBlock(&(*pGen));
 | 
			
		||||
	if(rc == SXERR_ABORT) {
 | 
			
		||||
@@ -1820,7 +1820,7 @@ static sxi32 PH7_CompileDoWhile(ph7_gen_state *pGen) {
 | 
			
		||||
	pGen->pIn  = &pEnd[1];
 | 
			
		||||
	pGen->pEnd = pTmp;
 | 
			
		||||
	/* Emit the true jump to the beginning of the loop */
 | 
			
		||||
	PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JNZ, 0, pDoBlock->nFirstInstr, 0, 0);
 | 
			
		||||
	PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPNZ, 0, pDoBlock->nFirstInstr, 0, 0);
 | 
			
		||||
	/* Fix all jumps now the destination is resolved */
 | 
			
		||||
	PH7_GenStateFixJumps(pDoBlock, -1, PH7_VmInstrLength(pGen->pVm));
 | 
			
		||||
	/* Release the loop block */
 | 
			
		||||
@@ -1933,9 +1933,9 @@ static sxi32 PH7_CompileFor(ph7_gen_state *pGen) {
 | 
			
		||||
		return SXERR_ABORT;
 | 
			
		||||
	} else if(rc != SXERR_EMPTY) {
 | 
			
		||||
		/* Emit the false jump */
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JZ, 0, 0, 0, &nFalseJump);
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPZ, 0, 0, 0, &nFalseJump);
 | 
			
		||||
		/* Save the instruction index so we can fix it later when the jump destination is resolved */
 | 
			
		||||
		PH7_GenStateNewJumpFixup(pForBlock, PH7_OP_JZ, nFalseJump);
 | 
			
		||||
		PH7_GenStateNewJumpFixup(pForBlock, PH7_OP_JMPZ, nFalseJump);
 | 
			
		||||
	}
 | 
			
		||||
	if((pGen->pIn->nType & PH7_TK_SEMI) == 0) {
 | 
			
		||||
		/* Syntax error */
 | 
			
		||||
@@ -2327,9 +2327,9 @@ static sxi32 PH7_CompileIf(ph7_gen_state *pGen) {
 | 
			
		||||
			return SXERR_ABORT;
 | 
			
		||||
		}
 | 
			
		||||
		/* Emit the false jump */
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JZ, 0, 0, 0, &nJumpIdx);
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPZ, 0, 0, 0, &nJumpIdx);
 | 
			
		||||
		/* Save the instruction index so we can fix it later when the jump destination is resolved */
 | 
			
		||||
		PH7_GenStateNewJumpFixup(pCondBlock, PH7_OP_JZ, nJumpIdx);
 | 
			
		||||
		PH7_GenStateNewJumpFixup(pCondBlock, PH7_OP_JMPZ, nJumpIdx);
 | 
			
		||||
		/* Compile the body */
 | 
			
		||||
		rc = PH7_CompileBlock(&(*pGen));
 | 
			
		||||
		if(rc == SXERR_ABORT) {
 | 
			
		||||
@@ -2359,10 +2359,10 @@ static sxi32 PH7_CompileIf(ph7_gen_state *pGen) {
 | 
			
		||||
		/* Synchronize cursors */
 | 
			
		||||
		pToken = pGen->pIn;
 | 
			
		||||
		/* Fix the false jump */
 | 
			
		||||
		PH7_GenStateFixJumps(pCondBlock, PH7_OP_JZ, PH7_VmInstrLength(pGen->pVm));
 | 
			
		||||
		PH7_GenStateFixJumps(pCondBlock, PH7_OP_JMPZ, PH7_VmInstrLength(pGen->pVm));
 | 
			
		||||
	} /* For(;;) */
 | 
			
		||||
	/* Fix the false jump */
 | 
			
		||||
	PH7_GenStateFixJumps(pCondBlock, PH7_OP_JZ, PH7_VmInstrLength(pGen->pVm));
 | 
			
		||||
	PH7_GenStateFixJumps(pCondBlock, PH7_OP_JMPZ, PH7_VmInstrLength(pGen->pVm));
 | 
			
		||||
	if(pGen->pIn < pGen->pEnd && (pGen->pIn->nType & PH7_TK_KEYWORD) &&
 | 
			
		||||
			(SX_PTR_TO_INT(pGen->pIn->pUserData) & PH7_KEYWORD_ELSE)) {
 | 
			
		||||
		/* Compile the else block */
 | 
			
		||||
@@ -4922,7 +4922,7 @@ static sxi32 PH7_GenStateEmitExprCode(
 | 
			
		||||
		}
 | 
			
		||||
		nJz = nJmp = 0; /* cc -O6 warning */
 | 
			
		||||
		/* Phase#2: Emit the false jump */
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JZ, 0, 0, 0, &nJz);
 | 
			
		||||
		PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPZ, 0, 0, 0, &nJz);
 | 
			
		||||
		if(pNode->pLeft) {
 | 
			
		||||
			/* Phase#3: Compile the 'then' expression  */
 | 
			
		||||
			rc = PH7_GenStateEmitExprCode(&(*pGen), pNode->pLeft, iFlags);
 | 
			
		||||
@@ -5018,10 +5018,10 @@ static sxi32 PH7_GenStateEmitExprCode(
 | 
			
		||||
	if(pNode->pRight) {
 | 
			
		||||
		if(iVmOp == PH7_OP_LAND) {
 | 
			
		||||
			/* Emit the false jump so we can short-circuit the logical and */
 | 
			
		||||
			PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JZ, 1/* Keep the value on the stack */, 0, 0, &nJmpIdx);
 | 
			
		||||
			PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPZ, 1/* Keep the value on the stack */, 0, 0, &nJmpIdx);
 | 
			
		||||
		} else if(iVmOp == PH7_OP_LOR) {
 | 
			
		||||
			/* Emit the true jump so we can short-circuit the logical or*/
 | 
			
		||||
			PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JNZ, 1/* Keep the value on the stack */, 0, 0, &nJmpIdx);
 | 
			
		||||
			PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_JMPNZ, 1/* Keep the value on the stack */, 0, 0, &nJmpIdx);
 | 
			
		||||
		} else if(pNode->pOp->iPrec == 18 /* Combined binary operators [i.e: =,'.=','+=',*=' ...] precedence */) {
 | 
			
		||||
			iFlags |= EXPR_FLAG_LOAD_IDX_STORE;
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								engine/vm.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								engine/vm.c
									
									
									
									
									
								
							@@ -2135,12 +2135,12 @@ static sxi32 VmByteCodeExec(
 | 
			
		||||
				pc = pInstr->iP2 - 1;
 | 
			
		||||
				break;
 | 
			
		||||
			/*
 | 
			
		||||
			 * JZ: P1 P2 *
 | 
			
		||||
			 * JMPZ: P1 P2 *
 | 
			
		||||
			 *
 | 
			
		||||
			 * Take the jump if the top value is zero (FALSE jump).Pop the top most
 | 
			
		||||
			 * entry in the stack if P1 is zero.
 | 
			
		||||
			 */
 | 
			
		||||
			case PH7_OP_JZ:
 | 
			
		||||
			case PH7_OP_JMPZ:
 | 
			
		||||
#ifdef UNTRUST
 | 
			
		||||
				if(pTos < pStack) {
 | 
			
		||||
					goto Abort;
 | 
			
		||||
@@ -2159,12 +2159,12 @@ static sxi32 VmByteCodeExec(
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			/*
 | 
			
		||||
			 * JNZ: P1 P2 *
 | 
			
		||||
			 * JMPNZ: P1 P2 *
 | 
			
		||||
			 *
 | 
			
		||||
			 * Take the jump if the top value is not zero (TRUE jump).Pop the top most
 | 
			
		||||
			 * entry in the stack if P1 is zero.
 | 
			
		||||
			 */
 | 
			
		||||
			case PH7_OP_JNZ:
 | 
			
		||||
			case PH7_OP_JMPNZ:
 | 
			
		||||
#ifdef UNTRUST
 | 
			
		||||
				if(pTos < pStack) {
 | 
			
		||||
					goto Abort;
 | 
			
		||||
@@ -5399,11 +5399,11 @@ static const char *VmInstrToString(sxi32 nOp) {
 | 
			
		||||
		case PH7_OP_JMP:
 | 
			
		||||
			zOp = "JMP";
 | 
			
		||||
			break;
 | 
			
		||||
		case PH7_OP_JZ:
 | 
			
		||||
			zOp = "JZ";
 | 
			
		||||
		case PH7_OP_JMPZ:
 | 
			
		||||
			zOp = "JMPZ";
 | 
			
		||||
			break;
 | 
			
		||||
		case PH7_OP_JNZ:
 | 
			
		||||
			zOp = "JNZ";
 | 
			
		||||
		case PH7_OP_JMPNZ:
 | 
			
		||||
			zOp = "JMPNZ";
 | 
			
		||||
			break;
 | 
			
		||||
		case PH7_OP_POP:
 | 
			
		||||
			zOp = "POP";
 | 
			
		||||
 
 | 
			
		||||
@@ -1397,8 +1397,8 @@ enum ph7_vm_op {
 | 
			
		||||
	PH7_OP_LOAD_CLOSURE, /* Load closure */
 | 
			
		||||
	PH7_OP_NOOP,         /* NOOP */
 | 
			
		||||
	PH7_OP_JMP,          /* Unconditional jump */
 | 
			
		||||
	PH7_OP_JZ,           /* Jump on zero (FALSE jump) */
 | 
			
		||||
	PH7_OP_JNZ,          /* Jump on non-zero (TRUE jump) */
 | 
			
		||||
	PH7_OP_JMPZ,         /* Jump on zero (FALSE jump) */
 | 
			
		||||
	PH7_OP_JMPNZ,        /* Jump on non-zero (TRUE jump) */
 | 
			
		||||
	PH7_OP_POP,          /* Stack POP */
 | 
			
		||||
	PH7_OP_CVT_INT,      /* Integer cast */
 | 
			
		||||
	PH7_OP_CVT_STR,      /* String cast */
 | 
			
		||||
 
 | 
			
		||||
		Referens i nytt ärende
	
	Block a user