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

📄 mal_scheduler.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
字号:
#line 183 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"#include "mal_config.h"#include "mal_scheduler.h"#include "mal_interpreter.h"	/* for showErrors() */#include "opt_prelude.h"#include "opt_macro.h"strdebugScheduler(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){	Client cntxt = MCgetClient();	(void) stk;	cntxt->debugScheduler = cntxt->debugScheduler ? FALSE : TRUE;	#line 178 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"	if(pci) {		removeInstruction(mb,pci);		chkFlow(mb);	}#line 197 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"	return MAL_SUCCEED;}#line 207 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"strschedulerMALBlock(MalBlkPtr mb){	InstrPtr p;	int callMALinterpreter = 1, pc, cnt = 0;	str msg = NULL;	int loops = 0;#ifdef DEBUG_MAL_SCHEDULER	int oldstop = mb->stop;#endif	/* update the runtime status */	do {		cnt = 0;		for (pc = 0; pc < mb->stop; pc++) {			p = getInstrPtr(mb, pc);			if (getModuleId(p) && idcmp(getModuleId(p), "scheduler") == 0) {				cnt++;				callMALinterpreter++;				if (p->fcn)					/* all schedulers should behave like patterns */					/* However, we don;t have a stack now */					msg = (str) (*p->fcn) (mb, 0, p);				if (msg) {					GDKerror(msg);					showErrors();					return msg;				}				pc--;	/*scheduler statement has been removed */			}		}	} while (cnt && loops++ < 64);	if (callMALinterpreter)		return MAL_SUCCEED;#ifdef DEBUG_MAL_SCHEDULER	if (MCgetClient()->debugScheduler && oldstop != mb->stop) {		stream_printf(GDKout, "Scheduler effect %d -> %d instructions\n", oldstop, mb->stop);	}#endif	if (cnt >= 64)		throw(MAL, "scheduler.MALscheduler", "too many optimization cycles\n");	return MAL_SUCCEED;}strMALscheduler(Client c){	return schedulerMALBlock(c->curprg->def);}#line 259 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"#line 278 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"strRUNisolate(MalBlkPtr mb, MalStkPtr stk, InstrPtr p){	Client cntxt = MCgetClient();	(void) stk;	if (cntxt->backup)		throw(MAL, "scheduler.isolation", "no space for backup");	cntxt->backup = cntxt->curprg;	cntxt->curprg->def = copyMalBlk(mb);	removeInstruction(cntxt->curprg->def, p);	return MAL_SUCCEED;}#line 293 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"#line 323 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"strRUNinline(MalBlkPtr mb, MalStkPtr stk, InstrPtr p){	Symbol qc;	str modnme = getVarConstant(mb, getArg(p, 1)).val.sval;	str fcnnme = getVarConstant(mb, getArg(p, 2)).val.sval;	(void) stk;	(void) p;	qc = findMALSymbol(modnme, fcnnme);	if (qc)		MACROprocessor(mb, qc);	return MAL_SUCCEED;}#line 344 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"strRUNsqlbind(MalBlkPtr mb, MalStkPtr stk, InstrPtr p){	int i;	str msg = MAL_SUCCEED;	Client cntxt = MCgetClient();	Symbol sqlbind = findMALSymbol("sql", "bind");	MALfcn f = getSignature(sqlbind)->fcn;	for (i = 0; i < mb->stop; i++) {		p = getInstrPtr(mb, i);		if (p->fcn == f) {			if ((msg = reenterMAL(cntxt, mb, i, i + 1, stk, 0, 0)))				break;			/* fetch the BAT properties and turn off this instruction */			p->token = NOOPsymbol;		}	}#ifdef DEBUG_MAL_SCHEDULER	stream_printf(GDKout, "scheduler.sqlbind results\n");	printFunction(GDKout, mb, LIST_MAL_ALL);#endif	return msg;}#line 370 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_scheduler.mx"

⌨️ 快捷键说明

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