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

📄 mal_mes.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
字号:
#line 223 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_mes.mx"#include "mal_config.h"#include "mal_mes.h"#include "mal_builder.h"#line 238 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/scheduler/mal_mes.mx"#ifdef WIN32#ifndef LIBMAL_MES#define mal_mes_export extern __declspec(dllimport)#else#define mal_mes_export extern __declspec(dllexport)#endif#else#define mal_mes_export extern#endifmal_mes_export str meo_loop_optimizer(MalBlkPtr mb, MalStkPtr stk, InstrPtr p);mal_mes_export str meo_loop_optimizerImpl(MalBlkPtr mb, MALfcn f, str name);strmeo_loop_optimizerImpl(MalBlkPtr mb, MALfcn f, str name){	int i, l, lb, r, rb;	InstrPtr *oldblk;	InstrPtr *garbage;	InstrPtr ql, qr;	int oldtop = 0, g = 0;	InstrPtr p;	(void) name;	oldblk = (InstrPtr *) mb->stmt;	oldtop = mb->stop;	mb->stmt = alloca(mb->stop * 2 * sizeof(InstrPtr));	mb->stop = 0;	garbage = alloca(mb->stop * sizeof(InstrPtr));	for (i = 0; i < oldtop; i++) {		p = oldblk[i];		if (p->fcn != f) {			pushInstruction(mb, p);			continue;		}#ifdef MAL_MES_DEBUG		printf("meo_loop_optimizer attempt\n");		printInstruction(GDKout, mb, p, LIST_MAL_ALL);#endif		/* craft the new code block */		lb = newTmpVariable(mb, TYPE_bit);		l = newTmpVariable(mb, getVarType(mb, p->argv[1]));		rb = newTmpVariable(mb, TYPE_bit);		r = newTmpVariable(mb, getVarType(mb, p->argv[2]));		ql = newFcnCall(mb, GDKstrdup("chop"), GDKstrdup("newIterator"));		ql->argv[0] = lb;		ql->argv[1] = l;		ql->retc = 2;		ql->argv[2] = p->argv[1];		ql->argc = 3;		ql->barrier = BARRIERsymbol;		qr = newFcnCall(mb, GDKstrdup("chop"), GDKstrdup("newIterator"));		qr->argv[0] = rb;		qr->argv[1] = r;		qr->retc = 2;		qr->argv[2] = p->argv[2];		qr->argc = 3;		qr->barrier = BARRIERsymbol;		/* and the intelligence should come here */		/* redo part */		qr = newFcnCall(mb, GDKstrdup("chop"), GDKstrdup("hasMoreElements"));		qr->argv[0] = rb;		qr->argv[1] = r;		qr->retc = 2;		qr->argc = 3;		qr->barrier = REDOsymbol;		ql = newFcnCall(mb, GDKstrdup("chop"), GDKstrdup("hasMoreElements"));		ql->argv[0] = lb;		ql->argv[1] = l;		ql->retc = 2;		ql->argc = 3;		ql->barrier = REDOsymbol;		/* exit part */		ql = newAssignment(mb);		ql->argv[0] = l;		ql->argc = 1;		ql->barrier = EXITsymbol;		qr = newAssignment(mb);		qr->argv[0] = r;		qr->argc = 1;		qr->barrier = EXITsymbol;	}	/* if we fail, garbage collection is easy */	for (i = 0; i < g; i++)		if (garbage[i]) {		}	return MAL_SUCCEED;}strmeo_loop_optimizer(MalBlkPtr mb, MalStkPtr stk, InstrPtr p){	MALfcn f;	(void) stk;	(void) p;	f = findMALSymbol("algebra", "cross")->def->stmt[0]->fcn;	meo_loop_optimizerImpl(mb, f, "cross");	f = findMALSymbol("algebra", "join")->def->stmt[0]->fcn;	meo_loop_optimizerImpl(mb, f, "join");	return MAL_SUCCEED;}

⌨️ 快捷键说明

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