Cleanup after 2c37807370 - get rid of global keyword, #29.
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				 The build was successful.
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	 The build was successful.
				
			This commit is contained in:
		
							
								
								
									
										70
									
								
								engine/vm.c
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								engine/vm.c
									
									
									
									
									
								
							| @@ -529,48 +529,6 @@ static sxi32 VmEnterFrame( | |||||||
| 	} | 	} | ||||||
| 	return SXRET_OK; | 	return SXRET_OK; | ||||||
| } | } | ||||||
| /* |  | ||||||
|  * Link a foreign variable with the TOP most active frame. |  | ||||||
|  * Refer to the PH7_OP_UPLINK instruction implementation for more |  | ||||||
|  * information. |  | ||||||
|  */ |  | ||||||
| static sxi32 VmFrameLink(ph7_vm *pVm, SyString *pName) { |  | ||||||
| 	VmFrame *pTarget, *pFrame; |  | ||||||
| 	SyHashEntry *pEntry = 0; |  | ||||||
| 	sxi32 rc; |  | ||||||
| 	/* Point to the upper frame */ |  | ||||||
| 	pFrame = pVm->pFrame; |  | ||||||
| 	while(pFrame->pParent && (pFrame->iFlags & VM_FRAME_EXCEPTION)) { |  | ||||||
| 		/* Safely ignore the exception frame */ |  | ||||||
| 		pFrame = pFrame->pParent; |  | ||||||
| 	} |  | ||||||
| 	pTarget = pFrame; |  | ||||||
| 	pFrame = pTarget->pParent; |  | ||||||
| 	while(pFrame) { |  | ||||||
| 		if((pFrame->iFlags & VM_FRAME_EXCEPTION) == 0) { |  | ||||||
| 			/* Query the current frame */ |  | ||||||
| 			pEntry = SyHashGet(&pFrame->hVar, (const void *)pName->zString, pName->nByte); |  | ||||||
| 			if(pEntry) { |  | ||||||
| 				/* Variable found */ |  | ||||||
| 				break; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		/* Point to the upper frame */ |  | ||||||
| 		pFrame = pFrame->pParent; |  | ||||||
| 	} |  | ||||||
| 	if(pEntry == 0) { |  | ||||||
| 		/* Inexistent variable */ |  | ||||||
| 		return SXERR_NOTFOUND; |  | ||||||
| 	} |  | ||||||
| 	/* Link to the current frame */ |  | ||||||
| 	rc = SyHashInsert(&pTarget->hVar, pEntry->pKey, pEntry->nKeyLen, pEntry->pUserData); |  | ||||||
| 	if(rc == SXRET_OK) { |  | ||||||
| 		sxu32 nIdx; |  | ||||||
| 		nIdx = SX_PTR_TO_INT(pEntry->pUserData); |  | ||||||
| 		PH7_VmRefObjInstall(&(*pVm), nIdx, SyHashLastEntry(&pTarget->hVar), 0, 0); |  | ||||||
| 	} |  | ||||||
| 	return rc; |  | ||||||
| } |  | ||||||
| /* | /* | ||||||
|  * Leave the top-most active frame. |  * Leave the top-most active frame. | ||||||
|  */ |  */ | ||||||
| @@ -4349,31 +4307,6 @@ static sxi32 VmByteCodeExec( | |||||||
| 					} | 					} | ||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
| 			/* |  | ||||||
| 			 * OP_UPLINK P1 * * |  | ||||||
| 			 * Link a variable to the top active VM frame. |  | ||||||
| 			 * This is used to implement the 'global' PHP construct. |  | ||||||
| 			 */ |  | ||||||
| 			case PH7_OP_UPLINK: { |  | ||||||
| 					if(pVm->pFrame->pParent) { |  | ||||||
| 						ph7_value *pLink = &pTos[-pInstr->iP1 + 1]; |  | ||||||
| 						SyString sName; |  | ||||||
| 						/* Perform the link */ |  | ||||||
| 						while(pLink <= pTos) { |  | ||||||
| 							if((pLink->iFlags & MEMOBJ_STRING) == 0) { |  | ||||||
| 								/* Force a string cast */ |  | ||||||
| 								PH7_MemObjToString(pLink); |  | ||||||
| 							} |  | ||||||
| 							SyStringInitFromBuf(&sName, SyBlobData(&pLink->sBlob), SyBlobLength(&pLink->sBlob)); |  | ||||||
| 							if(sName.nByte > 0) { |  | ||||||
| 								VmFrameLink(&(*pVm), &sName); |  | ||||||
| 							} |  | ||||||
| 							pLink++; |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					VmPopOperand(&pTos, pInstr->iP1); |  | ||||||
| 					break; |  | ||||||
| 				} |  | ||||||
| 			/* | 			/* | ||||||
| 			 * OP_LOAD_EXCEPTION * P2 P3 | 			 * OP_LOAD_EXCEPTION * P2 P3 | ||||||
| 			 * Push an exception in the corresponding container so that | 			 * Push an exception in the corresponding container so that | ||||||
| @@ -6043,9 +5976,6 @@ static const char *VmInstrToString(sxi32 nOp) { | |||||||
| 		case PH7_OP_MEMBER: | 		case PH7_OP_MEMBER: | ||||||
| 			zOp = "MEMBER     "; | 			zOp = "MEMBER     "; | ||||||
| 			break; | 			break; | ||||||
| 		case PH7_OP_UPLINK: |  | ||||||
| 			zOp = "UPLINK     "; |  | ||||||
| 			break; |  | ||||||
| 		case PH7_OP_ERR_CTRL: | 		case PH7_OP_ERR_CTRL: | ||||||
| 			zOp = "ERR_CTRL   "; | 			zOp = "ERR_CTRL   "; | ||||||
| 			break; | 			break; | ||||||
|   | |||||||
| @@ -1365,7 +1365,6 @@ enum ph7_vm_op { | |||||||
| 	PH7_OP_LOAD_REF,     /* Load reference */ | 	PH7_OP_LOAD_REF,     /* Load reference */ | ||||||
| 	PH7_OP_STORE_REF,    /* Store a reference to a variable*/ | 	PH7_OP_STORE_REF,    /* Store a reference to a variable*/ | ||||||
| 	PH7_OP_MEMBER,       /* Class member run-time access */ | 	PH7_OP_MEMBER,       /* Class member run-time access */ | ||||||
| 	PH7_OP_UPLINK,       /* Run-Time frame link */ |  | ||||||
| 	PH7_OP_CVT_NULL,     /* NULL cast */ | 	PH7_OP_CVT_NULL,     /* NULL cast */ | ||||||
| 	PH7_OP_CVT_ARRAY,    /* Array cast */ | 	PH7_OP_CVT_ARRAY,    /* Array cast */ | ||||||
| 	PH7_OP_CVT_OBJ,      /* Object cast */ | 	PH7_OP_CVT_OBJ,      /* Object cast */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user