⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tclexecute.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
	    	  doStoreScalar:	    valuePtr = POP_OBJECT();	    DECACHE_STACK_INFO();	    value2Ptr = TclSetIndexedScalar(interp, opnd, valuePtr,					      /*leaveErrorMsg*/ 1);	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("%s %u <- \"%.30s\" => ERROR: ",			opName[opCode], opnd, O2S(valuePtr)),			Tcl_GetObjResult(interp));		Tcl_DecrRefCount(valuePtr);		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("%s %u <- \"%.30s\" => ",		    opName[opCode], opnd, O2S(valuePtr)), value2Ptr);	    TclDecrRefCount(valuePtr);	    ADJUST_PC(pcAdjustment);	case INST_STORE_SCALAR_STK:	    valuePtr = POP_OBJECT();	    namePtr = POP_OBJECT();	    DECACHE_STACK_INFO();	    value2Ptr = Tcl_ObjSetVar2(interp, namePtr, NULL, valuePtr,	            TCL_LEAVE_ERR_MSG);	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(			("storeScalarStk \"%.30s\" <- \"%.30s\" => ERROR: ",		        O2S(namePtr), O2S(valuePtr)),			Tcl_GetObjResult(interp));		Tcl_DecrRefCount(namePtr);		Tcl_DecrRefCount(valuePtr);		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(		    ("storeScalarStk \"%.30s\" <- \"%.30s\" => ",		    O2S(namePtr),		    O2S(valuePtr)),		    value2Ptr);	    TclDecrRefCount(namePtr);	    TclDecrRefCount(valuePtr);	    ADJUST_PC(1);	case INST_STORE_ARRAY4:	    opnd = TclGetUInt4AtPtr(pc+1);	    pcAdjustment = 5;	    goto doStoreArray;	case INST_STORE_ARRAY1:	    opnd = TclGetUInt1AtPtr(pc+1);	    pcAdjustment = 2;	    	    doStoreArray:	    {		Tcl_Obj *elemPtr;		valuePtr = POP_OBJECT();		elemPtr = POP_OBJECT();		DECACHE_STACK_INFO();		value2Ptr = TclSetElementOfIndexedArray(interp, opnd,		        elemPtr, valuePtr, TCL_LEAVE_ERR_MSG);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(			    ("%s %u \"%.30s\" <- \"%.30s\" => ERROR: ",			    opName[opCode], opnd, O2S(elemPtr),			    O2S(valuePtr)), Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(elemPtr);		    Tcl_DecrRefCount(valuePtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("%s %u \"%.30s\" <- \"%.30s\" => ",		        opName[opCode], opnd, O2S(elemPtr), O2S(valuePtr)),		        value2Ptr);		TclDecrRefCount(elemPtr);		TclDecrRefCount(valuePtr);	    }	    ADJUST_PC(pcAdjustment);	case INST_STORE_ARRAY_STK:	    {		Tcl_Obj *elemPtr;		valuePtr = POP_OBJECT();		elemPtr = POP_OBJECT();		namePtr = POP_OBJECT();		DECACHE_STACK_INFO();		value2Ptr = Tcl_ObjSetVar2(interp, namePtr, elemPtr,		        valuePtr, TCL_LEAVE_ERR_MSG);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(("storeArrayStk \"%.30s(%.30s)\" <- \"%.30s\" => ERROR: ",		            O2S(namePtr), O2S(elemPtr), O2S(valuePtr)),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(namePtr);		    Tcl_DecrRefCount(elemPtr);		    Tcl_DecrRefCount(valuePtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("storeArrayStk \"%.30s(%.30s)\" <- \"%.30s\" => ",		        O2S(namePtr), O2S(elemPtr), O2S(valuePtr)),			value2Ptr);		TclDecrRefCount(namePtr);		TclDecrRefCount(elemPtr);		TclDecrRefCount(valuePtr);	    }	    ADJUST_PC(1);	case INST_STORE_STK:	    valuePtr = POP_OBJECT();	    namePtr = POP_OBJECT();	    DECACHE_STACK_INFO();	    value2Ptr = Tcl_ObjSetVar2(interp, namePtr, NULL, valuePtr,		    TCL_PARSE_PART1|TCL_LEAVE_ERR_MSG);	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("storeStk \"%.30s\" <- \"%.30s\" => ERROR: ",		        O2S(namePtr), O2S(valuePtr)),			Tcl_GetObjResult(interp));		Tcl_DecrRefCount(namePtr);		Tcl_DecrRefCount(valuePtr);		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("storeStk \"%.30s\" <- \"%.30s\" => ",		    O2S(namePtr), O2S(valuePtr)), value2Ptr);	    TclDecrRefCount(namePtr);	    TclDecrRefCount(valuePtr);	    ADJUST_PC(1);	case INST_INCR_SCALAR1:	    opnd = TclGetUInt1AtPtr(pc+1);	    valuePtr = POP_OBJECT(); 	    if (valuePtr->typePtr != &tclIntType) {		result = tclIntType.setFromAnyProc(interp, valuePtr);		if (result != TCL_OK) {		    TRACE_WITH_OBJ(("incrScalar1 %u (by %s) => ERROR converting increment amount to int: ",		            opnd, O2S(valuePtr)), Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(valuePtr);		    goto checkForCatch;		}	    }	    i = valuePtr->internalRep.longValue;	    DECACHE_STACK_INFO();	    value2Ptr = TclIncrIndexedScalar(interp, opnd, i);	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("incrScalar1 %u (by %ld) => ERROR: ",		        opnd, i), Tcl_GetObjResult(interp));		Tcl_DecrRefCount(valuePtr);		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("incrScalar1 %u (by %ld) => ", opnd, i),		    value2Ptr);	    TclDecrRefCount(valuePtr);	    ADJUST_PC(2);	case INST_INCR_SCALAR_STK:	case INST_INCR_STK:	    valuePtr = POP_OBJECT();	    namePtr = POP_OBJECT();	    if (valuePtr->typePtr != &tclIntType) {		result = tclIntType.setFromAnyProc(interp, valuePtr);		if (result != TCL_OK) {		    TRACE_WITH_OBJ(("%s \"%.30s\" (by %s) => ERROR converting increment amount to int: ",		            opName[opCode], O2S(namePtr), O2S(valuePtr)),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(namePtr);		    Tcl_DecrRefCount(valuePtr);		    goto checkForCatch;		}	    }	    i = valuePtr->internalRep.longValue;	    DECACHE_STACK_INFO();	    value2Ptr = TclIncrVar2(interp, namePtr, (Tcl_Obj *) NULL, i,	        /*part1NotParsed*/ (opCode == INST_INCR_STK));	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("%s \"%.30s\" (by %ld) => ERROR: ",		        opName[opCode], O2S(namePtr), i),			Tcl_GetObjResult(interp));		Tcl_DecrRefCount(namePtr);		Tcl_DecrRefCount(valuePtr);		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("%s \"%.30s\" (by %ld) => ",	            opName[opCode], O2S(namePtr), i), value2Ptr);	    Tcl_DecrRefCount(namePtr);	    Tcl_DecrRefCount(valuePtr);	    ADJUST_PC(1);	case INST_INCR_ARRAY1:	    {		Tcl_Obj *elemPtr;		opnd = TclGetUInt1AtPtr(pc+1);		valuePtr = POP_OBJECT();		elemPtr = POP_OBJECT();		if (valuePtr->typePtr != &tclIntType) {		    result = tclIntType.setFromAnyProc(interp, valuePtr);		    if (result != TCL_OK) {			TRACE_WITH_OBJ(("incrArray1 %u \"%.30s\" (by %s) => ERROR converting increment amount to int: ",		                opnd, O2S(elemPtr), O2S(valuePtr)),			        Tcl_GetObjResult(interp));			Tcl_DecrRefCount(elemPtr);			Tcl_DecrRefCount(valuePtr);			goto checkForCatch;		    }		}		i = valuePtr->internalRep.longValue;		DECACHE_STACK_INFO();		value2Ptr = TclIncrElementOfIndexedArray(interp, opnd,		        elemPtr, i);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(("incrArray1 %u \"%.30s\" (by %ld) => ERROR: ",		            opnd, O2S(elemPtr), i),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(elemPtr);		    Tcl_DecrRefCount(valuePtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("incrArray1 %u \"%.30s\" (by %ld) => ",	                opnd, O2S(elemPtr), i), value2Ptr);		Tcl_DecrRefCount(elemPtr);		Tcl_DecrRefCount(valuePtr);	    }	    ADJUST_PC(2);	    	case INST_INCR_ARRAY_STK:	    {		Tcl_Obj *elemPtr;		valuePtr = POP_OBJECT();		elemPtr = POP_OBJECT();		namePtr = POP_OBJECT();		if (valuePtr->typePtr != &tclIntType) {		    result = tclIntType.setFromAnyProc(interp, valuePtr);		    if (result != TCL_OK) {		        TRACE_WITH_OBJ(("incrArrayStk \"%.30s(%.30s)\" (by %s) => ERROR converting increment amount to int: ",		                O2S(namePtr), O2S(elemPtr), O2S(valuePtr)),			        Tcl_GetObjResult(interp));			Tcl_DecrRefCount(namePtr);			Tcl_DecrRefCount(elemPtr);			Tcl_DecrRefCount(valuePtr);			goto checkForCatch;		    }		}		i = valuePtr->internalRep.longValue;		DECACHE_STACK_INFO();		value2Ptr = TclIncrVar2(interp, namePtr, elemPtr, i,					/*part1NotParsed*/ 0);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(("incrArrayStk \"%.30s(%.30s)\" (by %ld) => ERROR: ",		            O2S(namePtr), O2S(elemPtr), i),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(namePtr);		    Tcl_DecrRefCount(elemPtr);		    Tcl_DecrRefCount(valuePtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("incrArrayStk \"%.30s(%.30s)\" (by %ld) => ",	                O2S(namePtr), O2S(elemPtr), i), value2Ptr);		Tcl_DecrRefCount(namePtr);		Tcl_DecrRefCount(elemPtr);		Tcl_DecrRefCount(valuePtr);	    }	    ADJUST_PC(1);	    	case INST_INCR_SCALAR1_IMM:	    opnd = TclGetUInt1AtPtr(pc+1);	    i = TclGetInt1AtPtr(pc+2);	    DECACHE_STACK_INFO();	    value2Ptr = TclIncrIndexedScalar(interp, opnd, i);	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("incrScalar1Imm %u %ld => ERROR: ",		        opnd, i), Tcl_GetObjResult(interp));		result = TCL_ERROR;		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("incrScalar1Imm %u %ld => ", opnd, i),		    value2Ptr);	    ADJUST_PC(3);	case INST_INCR_SCALAR_STK_IMM:	case INST_INCR_STK_IMM:	    namePtr = POP_OBJECT();	    i = TclGetInt1AtPtr(pc+1);	    DECACHE_STACK_INFO();	    value2Ptr = TclIncrVar2(interp, namePtr, (Tcl_Obj *) NULL, i,		    /*part1NotParsed*/ (opCode == INST_INCR_STK_IMM));	    CACHE_STACK_INFO();	    if (value2Ptr == NULL) {		TRACE_WITH_OBJ(("%s \"%.30s\" %ld => ERROR: ",		        opName[opCode], O2S(namePtr), i),			Tcl_GetObjResult(interp));		result = TCL_ERROR;		Tcl_DecrRefCount(namePtr);		goto checkForCatch;	    }	    PUSH_OBJECT(value2Ptr);	    TRACE_WITH_OBJ(("%s \"%.30s\" %ld => ",	            opName[opCode], O2S(namePtr), i), value2Ptr);	    TclDecrRefCount(namePtr);	    ADJUST_PC(2);	case INST_INCR_ARRAY1_IMM:	    {		Tcl_Obj *elemPtr;		opnd = TclGetUInt1AtPtr(pc+1);		i = TclGetInt1AtPtr(pc+2);		elemPtr = POP_OBJECT();		DECACHE_STACK_INFO();		value2Ptr = TclIncrElementOfIndexedArray(interp, opnd,		        elemPtr, i);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(("incrArray1Imm %u \"%.30s\" (by %ld) => ERROR: ",		            opnd, O2S(elemPtr), i),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(elemPtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("incrArray1Imm %u \"%.30s\" (by %ld) => ",	                opnd, O2S(elemPtr), i), value2Ptr);		Tcl_DecrRefCount(elemPtr);	    }	    ADJUST_PC(3);	    	case INST_INCR_ARRAY_STK_IMM:	    {		Tcl_Obj *elemPtr;		i = TclGetInt1AtPtr(pc+1);		elemPtr = POP_OBJECT();		namePtr = POP_OBJECT();		DECACHE_STACK_INFO();		value2Ptr = TclIncrVar2(interp, namePtr, elemPtr, i,		        /*part1NotParsed*/ 0);		CACHE_STACK_INFO();		if (value2Ptr == NULL) {		    TRACE_WITH_OBJ(("incrArrayStkImm \"%.30s(%.30s)\" (by %ld) => ERROR: ",		            O2S(namePtr), O2S(elemPtr), i),			    Tcl_GetObjResult(interp));		    Tcl_DecrRefCount(namePtr);		    Tcl_DecrRefCount(elemPtr);		    result = TCL_ERROR;		    goto checkForCatch;		}		PUSH_OBJECT(value2Ptr);		TRACE_WITH_OBJ(("incrArrayStkImm \"%.30s(%.30s)\" (by %ld) => ",	                O2S(namePtr), O2S(elemPtr), i), value2Ptr);		Tcl_DecrRefCount(namePtr);		Tcl_DecrRefCount(elemPtr);	    }	    ADJUST_PC(2);	case INST_JUMP1:	    opnd = TclGetInt1AtPtr(pc+1);	    TRACE(("jump1 %d => new pc %u\n", opnd,		   (unsigned int)(pc + opnd - codePtr->codeStart)));	    ADJUST_PC(opnd);	case INST_JUMP4:	    opnd = TclGetInt4AtPtr(pc+1);	    TRACE(("jump4 %d => new pc %u\n", opnd,		   (unsigned int)(pc + opnd - codePtr->codeStart)));	    ADJUST_PC(opnd);	case INST_JUMP_TRUE4:	    opnd = TclGetInt4AtPtr(pc+1);	    pcAdjustment = 5;	    goto doJumpTrue;	case INST_JUMP_TRUE1:	    opnd = TclGetInt1AtPtr(pc+1);	    pcAdjustment = 2;	    	    doJumpTrue:	    {		int b;				valuePtr = POP_OBJECT();		if (valuePtr->typePtr == &tclIntType) {		    b = (valuePtr->internalRep.longValue != 0);		} else if (valuePtr->typePtr == &tclDoubleType) {		    b = (valuePtr->internalRep.doubleValue != 0.0);		} else {		    result = Tcl_GetBooleanFromObj(interp, valuePtr, &b);		    if (result != TCL_OK) {			TRACE_WITH_OBJ(("%s %d => ERROR: ", opName[opCode],				opnd), Tcl_GetObjResult(interp));			Tcl_DecrRefCount(valuePtr);			goto checkForCatch;		    }		}		if (b) {		    TRACE(("%s %d => %.20s true, new pc %u\n",			    opName[opCode], opnd, O2S(valuePtr),		            (unsigned int)(pc+opnd - codePtr->codeStart)));		    TclDecrRefCount(valuePtr);		    ADJUST_PC(opnd);		} else {		    TRACE(("%s %d => %.20s false\n", opName[opCode], opnd,		            O2S(valuePtr)));		    TclDecrRefCount(valuePtr);		    ADJUST_PC(pcAdjustment);		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -