cmake and jit
This commit is contained in:
parent
9d4b59f7d6
commit
bc1e70758e
19
C/absmi.c
19
C/absmi.c
@ -532,6 +532,7 @@ Term Yap_XREGS[MaxTemps]; /* 29 */
|
||||
|
||||
#include "arith2.h"
|
||||
|
||||
|
||||
// #include "print_preg.h"
|
||||
//#include "sprint_op.hpp"
|
||||
//#include "print_op.hpp"
|
||||
@ -540,11 +541,27 @@ Term Yap_XREGS[MaxTemps]; /* 29 */
|
||||
#include "IsGround.h"
|
||||
#include "yaam_macros.hpp"
|
||||
#include "fprintblock.h"
|
||||
#endif /* YAP_JIT */
|
||||
|
||||
#if YAP_DBG_PREDS
|
||||
#include "debug_printers.h"
|
||||
#endif
|
||||
|
||||
struct JIT_Compiler *J;
|
||||
|
||||
NativeContext *NativeArea;
|
||||
IntermediatecodeContext *IntermediatecodeArea;
|
||||
void shutdown_llvm(void);
|
||||
|
||||
CELL l;
|
||||
short global;
|
||||
CELL nnexec;
|
||||
yamop* HEADPREG;
|
||||
CELL BLOCK;
|
||||
CELL BLOCKADDRESS;
|
||||
CELL FAILED;
|
||||
|
||||
#endif /* YAP_JIT */
|
||||
|
||||
#ifdef COROUTINING
|
||||
/*
|
||||
Imagine we are interrupting the execution, say, because we have a spy
|
||||
|
@ -329,12 +329,9 @@
|
||||
@file c_interface.c
|
||||
*/
|
||||
|
||||
#ifndef C_INTERFACE_C
|
||||
|
||||
#define Bool int
|
||||
#define flt double
|
||||
#define C_INTERFACE 1
|
||||
#define _yap_c_interface_h 1
|
||||
|
||||
#define C_INTERFACE_C 1
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "Yap.h"
|
||||
@ -355,7 +352,6 @@
|
||||
// we cannot consult YapInterface.h, that conflicts with what we declare, though
|
||||
// it shouldn't
|
||||
#include "YapInterface.h"
|
||||
#define _yap_c_interface_h 1
|
||||
#include "pl-shared.h"
|
||||
#include "YapText.h"
|
||||
#include "pl-read.h"
|
||||
@ -371,6 +367,9 @@
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
X_API int
|
||||
YAP_Reset(yap_reset_t mode);
|
||||
|
||||
#if !HAVE_STRNCPY
|
||||
#define strncpy(X,Y,Z) strcpy(X,Y)
|
||||
#endif
|
||||
@ -490,33 +489,33 @@ doexpand(UInt sz)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
X_API Term
|
||||
X_API YAP_Term
|
||||
YAP_A(int i)
|
||||
{
|
||||
CACHE_REGS
|
||||
return(Deref(XREGS[i]));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsIntTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsIntTerm(YAP_Term t)
|
||||
{
|
||||
return IsIntegerTerm(t);
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsNumberTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsNumberTerm(YAP_Term t)
|
||||
{
|
||||
return IsIntegerTerm(t) || IsIntTerm(t) || IsFloatTerm(t) || IsBigIntTerm(t);
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsLongIntTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsLongIntTerm(YAP_Term t)
|
||||
{
|
||||
return IsLongIntTerm(t);
|
||||
return IsLongIntTerm( t );
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsBigNumTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsBigNumTerm(YAP_Term t)
|
||||
{
|
||||
#if USE_GMP
|
||||
CELL *pt;
|
||||
@ -531,8 +530,8 @@ YAP_IsBigNumTerm(Term t)
|
||||
#endif
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsRationalTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsRationalTerm(YAP_Term t)
|
||||
{
|
||||
#if USE_GMP
|
||||
CELL *pt;
|
||||
@ -547,56 +546,55 @@ YAP_IsRationalTerm(Term t)
|
||||
#endif
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsVarTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsVarTerm(YAP_Term t)
|
||||
{
|
||||
return (IsVarTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
YAP_IsNonVarTerm(Term t)
|
||||
X_API YAP_Bool
|
||||
YAP_IsNonVarTerm(YAP_Term t)
|
||||
{
|
||||
return (IsNonVarTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsFloatTerm(Term t)
|
||||
{
|
||||
return (IsFloatTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsDbRefTerm(Term t)
|
||||
{
|
||||
return (IsDBRefTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsAtomTerm(Term t)
|
||||
{
|
||||
return (IsAtomTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsPairTerm(Term t)
|
||||
{
|
||||
return (IsPairTerm(t));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsApplTerm(Term t)
|
||||
{
|
||||
return (IsApplTerm(t) && !IsExtensionFunctor(FunctorOfTerm(t)));
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsCompoundTerm(Term t)
|
||||
{
|
||||
return (IsApplTerm(t) && !IsExtensionFunctor(FunctorOfTerm(t))) ||
|
||||
IsPairTerm(t);
|
||||
}
|
||||
|
||||
|
||||
X_API Term
|
||||
YAP_MkIntTerm(Int n)
|
||||
{
|
||||
@ -633,7 +631,7 @@ YAP_MkBigNumTerm(void *big)
|
||||
#endif /* USE_GMP */
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API YAP_Bool
|
||||
YAP_BigNumOfTerm(Term t, void *b)
|
||||
{
|
||||
#if USE_GMP
|
||||
@ -663,7 +661,7 @@ YAP_MkRationalTerm(void *big)
|
||||
#endif /* USE_GMP */
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API YAP_Bool
|
||||
YAP_RationalOfTerm(Term t, void *b)
|
||||
{
|
||||
#if USE_GMP
|
||||
@ -733,8 +731,8 @@ YAP_MkFloatTerm(double n)
|
||||
return t;
|
||||
}
|
||||
|
||||
X_API flt
|
||||
YAP_FloatOfTerm(Term t)
|
||||
X_API YAP_Float
|
||||
YAP_FloatOfTerm(YAP_Term t)
|
||||
{
|
||||
return (FloatOfTerm(t));
|
||||
}
|
||||
@ -755,7 +753,7 @@ YAP_AtomOfTerm(Term t)
|
||||
}
|
||||
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_IsWideAtom(Atom a)
|
||||
{
|
||||
return IsWideAtom(a);
|
||||
@ -1129,7 +1127,7 @@ YAP_cut_up(void)
|
||||
RECOVER_B();
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_Unify(Term t1, Term t2)
|
||||
{
|
||||
Int out;
|
||||
@ -2280,11 +2278,11 @@ run_emulator(YAP_dogoalinfo *dgi USES_REGS)
|
||||
return out;
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_EnterGoal(PredEntry *pe, Term *ptr, YAP_dogoalinfo *dgi)
|
||||
{
|
||||
CACHE_REGS
|
||||
int out;
|
||||
bool out;
|
||||
|
||||
BACKUP_MACHINE_REGS();
|
||||
LOCAL_PrologMode = UserMode;
|
||||
@ -2307,12 +2305,12 @@ YAP_EnterGoal(PredEntry *pe, Term *ptr, YAP_dogoalinfo *dgi)
|
||||
return out;
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_RetryGoal(YAP_dogoalinfo *dgi)
|
||||
{
|
||||
CACHE_REGS
|
||||
choiceptr myB;
|
||||
int out;
|
||||
bool out;
|
||||
|
||||
BACKUP_MACHINE_REGS();
|
||||
myB = (choiceptr)(LCL0-dgi->b);
|
||||
@ -2334,7 +2332,7 @@ YAP_RetryGoal(YAP_dogoalinfo *dgi)
|
||||
return out;
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_LeaveGoal(int backtrack, YAP_dogoalinfo *dgi)
|
||||
{
|
||||
CACHE_REGS
|
||||
@ -2438,7 +2436,7 @@ YAP_AllocExternalDataInStack(size_t bytes)
|
||||
return t;
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsExternalDataInStackTerm(Term t)
|
||||
{
|
||||
return IsExternalBlobTerm(t, EXTERNAL_BLOB);
|
||||
@ -2477,7 +2475,7 @@ Term YAP_NewOpaqueObject(YAP_opaque_tag_t tag, size_t bytes)
|
||||
return t;
|
||||
}
|
||||
|
||||
X_API Bool
|
||||
X_API YAP_Bool
|
||||
YAP_IsOpaqueObjectTerm(Term t, YAP_opaque_tag_t tag)
|
||||
{
|
||||
return IsExternalBlobTerm(t, (CELL)tag);
|
||||
@ -2549,11 +2547,11 @@ YAP_RunGoalOnce(Term t)
|
||||
return out;
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_RestartGoal(void)
|
||||
{
|
||||
CACHE_REGS
|
||||
int out;
|
||||
bool out;
|
||||
BACKUP_MACHINE_REGS();
|
||||
if (LOCAL_AllowRestart) {
|
||||
P = (yamop *)FAILCODE;
|
||||
@ -2572,7 +2570,7 @@ YAP_RestartGoal(void)
|
||||
return(out);
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_ShutdownGoal(int backtrack)
|
||||
{
|
||||
CACHE_REGS
|
||||
@ -2616,11 +2614,11 @@ YAP_ShutdownGoal(int backtrack)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_ContinueGoal(void)
|
||||
{
|
||||
CACHE_REGS
|
||||
int out;
|
||||
bool out;
|
||||
BACKUP_MACHINE_REGS();
|
||||
|
||||
LOCAL_PrologMode = UserMode;
|
||||
@ -2653,7 +2651,7 @@ YAP_PruneGoal(YAP_dogoalinfo *gi)
|
||||
RECOVER_B();
|
||||
}
|
||||
|
||||
X_API int
|
||||
X_API bool
|
||||
YAP_GoalHasException(Term *t)
|
||||
{
|
||||
CACHE_REGS
|
||||
@ -4189,7 +4187,9 @@ YAP_IntToAtom(Int i)
|
||||
{
|
||||
return SWI_Atoms[i];
|
||||
}
|
||||
|
||||
|
||||
#endif // C_INTERFACE_C
|
||||
|
||||
/**
|
||||
@}
|
||||
*/
|
||||
|
16
C/compiler.c
16
C/compiler.c
@ -2181,6 +2181,22 @@ c_head(Term t, compiler_struct *cglobs)
|
||||
Yap_emit(native_op, 0, 0, &cglobs->cint);
|
||||
Yap_emit(ensure_space_op, Zero , Zero, &cglobs->cint);
|
||||
cglobs->space_op = cglobs->cint.cpc;
|
||||
#ifdef BEAM
|
||||
if (EAM) {
|
||||
Yap_emit(run_op,Zero,(UInt) cglobs->cint.CurrentPred,&cglobs->cint);
|
||||
}
|
||||
#endif
|
||||
if (Yap_ExecutionMode == MIXED_MODE || Yap_ExecutionMode == COMPILED)
|
||||
#if YAP_JIT
|
||||
Yap_emit(native_op, 0, 0, &cglobs->cint);
|
||||
#else
|
||||
{
|
||||
if (Yap_ExecutionMode == MIXED_MODE)
|
||||
Yap_NilError(NOJIT_ERROR, "mixed");
|
||||
else /* Yap_ExecutionMode == COMPILED */
|
||||
Yap_NilError(NOJIT_ERROR, "just compiled");
|
||||
}
|
||||
#endif
|
||||
c_args(t, 0, cglobs);
|
||||
}
|
||||
|
||||
|
@ -76,13 +76,13 @@ Yap_PrintPredName( PredEntry *ap )
|
||||
int Yap_HandleError( const char *s, ... ) {
|
||||
CACHE_REGS
|
||||
yap_error_number err = LOCAL_Error_TYPE;
|
||||
char *serr;
|
||||
const char *serr;
|
||||
|
||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||
if (LOCAL_ErrorMessage) {
|
||||
serr = LOCAL_ErrorMessage;
|
||||
} else {
|
||||
serr = (char *)s;
|
||||
serr = s;
|
||||
}
|
||||
switch (err) {
|
||||
case OUT_OF_STACK_ERROR:
|
||||
@ -530,7 +530,7 @@ Yap_bug_location(yamop *pc)
|
||||
static char tmpbuf[YAP_BUF_SIZE];
|
||||
|
||||
yamop *
|
||||
Yap_NilError(yap_error_number type, char *format,...)
|
||||
Yap_NilError(yap_error_number type, const char *format,...)
|
||||
{
|
||||
va_list ap;
|
||||
yamop *res;
|
||||
@ -544,7 +544,7 @@ Yap_NilError(yap_error_number type, char *format,...)
|
||||
}
|
||||
|
||||
yamop *
|
||||
Yap_Error(yap_error_number type, Term where, char *format,...)
|
||||
Yap_Error(yap_error_number type, Term where, const char *format,...)
|
||||
{
|
||||
CACHE_REGS
|
||||
va_list ap;
|
||||
|
3
C/init.c
3
C/init.c
@ -936,7 +936,7 @@ static void
|
||||
InitStdPreds(void)
|
||||
{
|
||||
void initIO(void);
|
||||
|
||||
|
||||
Yap_InitCPreds();
|
||||
Yap_InitBackCPreds();
|
||||
BACKUP_MACHINE_REGS();
|
||||
@ -1474,4 +1474,3 @@ Yap_exit (int value)
|
||||
closeFiles(TRUE);
|
||||
exit(value);
|
||||
}
|
||||
|
||||
|
@ -77,9 +77,7 @@ p_load_foreign( USES_REGS1 )
|
||||
|
||||
/* get the initialization function name */
|
||||
t1 = Deref(ARG3);
|
||||
InitProcName = RepAtom(AtomOfTerm(t1))->StrOfAE;
|
||||
|
||||
|
||||
InitProcName = RepAtom(AtomOfTerm(t1))->StrOfAE;
|
||||
|
||||
/* call the OS specific function for dynamic loading */
|
||||
if(Yap_LoadForeign(ofiles,libs,InitProcName,&InitProc)==LOAD_SUCCEEDED) {
|
||||
|
69
C/stdpreds.c
69
C/stdpreds.c
@ -283,6 +283,7 @@ static char SccsId[] = "%W% %G%";
|
||||
#include "eval.h"
|
||||
#include "yapio.h"
|
||||
#include "pl-shared.h"
|
||||
#include "Foreign.h"
|
||||
#ifdef TABLING
|
||||
#include "tab.macros.h"
|
||||
#endif /* TABLING */
|
||||
@ -293,7 +294,11 @@ static char SccsId[] = "%W% %G%";
|
||||
#if HAVE_MALLOC_H
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#if YAP_JIT
|
||||
#include <JIT_Compiler.hpp>
|
||||
#endif
|
||||
#include <wchar.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
static Int p_setval(USES_REGS1);
|
||||
static Int p_value(USES_REGS1);
|
||||
@ -336,6 +341,25 @@ static Int p_access_yap_flags(USES_REGS1);
|
||||
static Int p_set_yap_flags(USES_REGS1);
|
||||
static Int p_break(USES_REGS1);
|
||||
|
||||
#if YAP_JIT
|
||||
void* (*Yap_JitCall)(struct JIT_Compiler* jc, yamop* p);
|
||||
void (* Yap_llvmShutdown)(void ) ;
|
||||
|
||||
Environment ExpEnv;
|
||||
|
||||
static Int p_jit(USES_REGS1) { /* '$set_value'(+Atom,+Atomic) */
|
||||
void *jit_handle;
|
||||
if ( (jit_handle = Yap_LoadForeignFile( YAP_YAPJITLIB, 0 ) ) ) {
|
||||
if (!Yap_CallForeignFile(jit_handle, "init_jit") )
|
||||
fprintf(stderr, "Could not load JIT\n" );
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
#endif /* YAP_JIT */
|
||||
|
||||
#ifdef BEAM
|
||||
Int use_eam(USES_REGS1);
|
||||
Int eager_split(USES_REGS1);
|
||||
@ -814,6 +838,38 @@ static Int
|
||||
return (FALSE);
|
||||
}
|
||||
out = IntegerOfTerm(t);
|
||||
#if YAP_JIT
|
||||
if (ExpEnv.analysis_struc.stats_enabled || ExpEnv.analysis_struc.time_pass_enabled) {
|
||||
if (strcmp(((char*)ExpEnv.analysis_struc.outfile), "STDERR")) {
|
||||
int stderrcopy = dup(2);
|
||||
if (strcmp(((char*)ExpEnv.analysis_struc.outfile), "STDOUT") == 0) {
|
||||
dup2(1, 2);
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
|
||||
shutdown_llvm();
|
||||
#pragma GCC diagnostic pop
|
||||
dup2(stderrcopy, 2);
|
||||
}
|
||||
else {
|
||||
int Outputfile = open(((char*)ExpEnv.analysis_struc.outfile), O_CREAT | O_APPEND | O_WRONLY, 0777);
|
||||
if (Outputfile < 0) {
|
||||
fprintf(stderr, "Error:: I can not write analysis passes's output on %s...\n", ((char*)ExpEnv.analysis_struc.outfile));
|
||||
fprintf(stderr, " %s...\n", strerror(errno));
|
||||
errno = 0;
|
||||
exit(1);
|
||||
}
|
||||
dup2(Outputfile, 2);
|
||||
shutdown_llvm();
|
||||
close(Outputfile);
|
||||
dup2(stderrcopy, 2);
|
||||
}
|
||||
close(stderrcopy);
|
||||
}
|
||||
else
|
||||
shutdown_llvm();
|
||||
}
|
||||
#endif
|
||||
|
||||
Yap_exit(out);
|
||||
return TRUE;
|
||||
}
|
||||
@ -1946,6 +2002,7 @@ static Int p_parallel_mode(USES_REGS1) { return FALSE; }
|
||||
static Int p_yapor_workers(USES_REGS1) { return FALSE; }
|
||||
#endif /* YAPOR */
|
||||
|
||||
|
||||
void Yap_InitCPreds(void) {
|
||||
/* numerical comparison */
|
||||
Yap_InitCPred("set_value", 2, p_setval, SafePredFlag | SyncPredFlag);
|
||||
@ -2027,12 +2084,18 @@ void Yap_InitCPreds(void) {
|
||||
Yap_InitCPred("$set_flag", 4, p_set_flag, SyncPredFlag);
|
||||
Yap_InitCPred("$has_yap_or", 0, p_has_yap_or, SafePredFlag | SyncPredFlag);
|
||||
Yap_InitCPred("$has_eam", 0, p_has_eam, SafePredFlag | SyncPredFlag);
|
||||
#ifndef YAPOR
|
||||
#ifdef YAPOR
|
||||
Yap_InitCPred("parallel_mode", 1, p_parallel_mode,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
Yap_InitCPred("$c_yapor_workers", 1, p_yapor_workers,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
#endif /* YAPOR */
|
||||
#ifdef YAP_JIT
|
||||
Yap_InitCPred("init", 1, p_parallel_mode,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
Yap_InitCPred("$c_yapor_workers", 1, p_yapor_workers,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
#endif /* YAPOR */
|
||||
#ifdef INES
|
||||
Yap_InitCPred("euc_dist", 3, p_euc_dist, SafePredFlag);
|
||||
Yap_InitCPred("loop", 0, p_loop, SafePredFlag);
|
||||
@ -2089,6 +2152,10 @@ void Yap_InitCPreds(void) {
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
Yap_init_optyap_preds();
|
||||
#endif /* YAPOR || TABLING */
|
||||
#if YAP_JIT
|
||||
Yap_InitCPred("jit", 0, p_jit,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
#endif
|
||||
Yap_InitThreadPreds();
|
||||
{
|
||||
void (*(*(p)))(void) = E_Modules;
|
||||
|
358
CMakeLists.txt
358
CMakeLists.txt
@ -63,10 +63,10 @@ set(YAP_ROOTDIR ${prefix})
|
||||
# erootdir -> rootdir
|
||||
# bindir defined above
|
||||
# libdir defined above
|
||||
set(YAP_LIBDIR "${dlls}")
|
||||
set(YAP_SHAREDIR "${datarootdir}")
|
||||
set(YAP_BINDIR "${bindir}")
|
||||
set(YAP_ROOTDIR "${prefix}")
|
||||
set(YAP_LIBDIR "${dlls}")
|
||||
set(YAP_SHAREDIR "${datarootdir}")
|
||||
set(YAP_BINDIR "${bindir}")
|
||||
set(YAP_ROOTDIR "${prefix}")
|
||||
|
||||
set(YAP_YAPLIB libYap${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
set(YAP_STARTUP startup.yss)
|
||||
@ -97,18 +97,18 @@ set ( DEF_STACKSPACE 0 )
|
||||
set ( DEF_HEAPSPACE 0 )
|
||||
set ( DEF_TRAILSPACE 0 )
|
||||
|
||||
# option (WITH_RATIONAL_TREES "support infinite rational trees" ON)
|
||||
# option (RATIONAL_TREES "support infinite rational trees" ON)
|
||||
add_definitions (-DRATIONAL_TREES=1)
|
||||
|
||||
# option (WITH_COROUTINING
|
||||
# option (COROUTINING
|
||||
# "support co-routining, attributed variables and constraints" ON)
|
||||
add_definitions (-DCOROUTINING=1)
|
||||
|
||||
# if (WITH_RATIONAL_TREES and WITH_COROUTINING)
|
||||
# if (RATIONAL_TREES and COROUTINING)
|
||||
#TODO: install (cd LGPL/clp ; $(MAKE) install)
|
||||
# endif (WITH_RATIONAL_TREES and WITH_COROUTINING)
|
||||
# endif (RATIONAL_TREES and COROUTINING)
|
||||
|
||||
# option (WITH_DEPTH_LIMIT
|
||||
# option (DEPTH_LIMIT
|
||||
# "support depth-bound computation" ON)
|
||||
add_definitions (-DDEPTH_LIMIT=1)
|
||||
|
||||
@ -133,15 +133,31 @@ if ( ${C_COMPILER} MATCHES "Intel")
|
||||
set (HAVE_GCC 1)
|
||||
endif()
|
||||
|
||||
add_definitions( -Wall -Wstrict-prototypes -Wmissing-prototypes)
|
||||
add_definitions(-D_YAP_NOT_INSTALLED_=1 -DHAVE_CONFIG_H)
|
||||
add_definitions(-D_GNU_SOURCE=1 -D_XOPEN_SOURCE=700)
|
||||
|
||||
message(STATUS "Original CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
|
||||
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DLOW_LEVEL_TRACER=1 -DDEBUG=1 ")
|
||||
|
||||
# Compilation Flags
|
||||
if (CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3 -fomit-frame-pointer -fstrict-aliasing -freorder-blocks -fsched-interblock")
|
||||
endif()
|
||||
|
||||
message(STATUS "Running with CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
|
||||
|
||||
if (HAVE_GCC)
|
||||
# replace instructions codes by the address of their code
|
||||
option (WITH_THREADED_CODE "Use threaded code" ON)
|
||||
if (WITH_THREADED_CODE)
|
||||
option (THREADED_CODE "threaded code" ON)
|
||||
if (THREADED_CODE)
|
||||
set (USE_THREADED_CODE 1)
|
||||
endif (WITH_THREADED_CODE)
|
||||
add_definitions(-DTHREADEAD_CODE=1)
|
||||
endif (THREADED_CODE)
|
||||
endif (HAVE_GCC)
|
||||
|
||||
#
|
||||
#
|
||||
set (BUILD_SHARED_LIBS ON)
|
||||
|
||||
#
|
||||
@ -149,35 +165,33 @@ set (BUILD_SHARED_LIBS ON)
|
||||
#
|
||||
add_subdirectory (os/libtai)
|
||||
|
||||
add_subdirectory (CXX)
|
||||
|
||||
option (WITH_TABLING "Support tabling" ON)
|
||||
if (WITH_TABLING)
|
||||
option (TABLING "Support tabling" ON)
|
||||
if (TABLING)
|
||||
#this depends on DEPTH_LIMIT define it after
|
||||
|
||||
#this macro should realy be in config.h or other like it
|
||||
#and it is used across several files outside OPTYap
|
||||
add_definitions (-DTABLING=1)
|
||||
add_definitions (-DTABLING=1)
|
||||
include_directories (OPTYap)
|
||||
add_subdirectory (OPTYap)
|
||||
endif(WITH_TABLING)
|
||||
endif(TABLING)
|
||||
|
||||
option (WITH_EAM "enable EAM (Extended Andorra Model)" OFF)
|
||||
if (WITH_EAM)
|
||||
option (EAM "enable EAM (Extended Andorra Model)" OFF)
|
||||
if (EAM)
|
||||
#this macro should realy be in config.h or other like it
|
||||
add_definitions (-DBEAM=1)
|
||||
include_directories (BEAM)
|
||||
add_subdirectory (BEAM)
|
||||
set (EXTRALIBS ${EXTRALIBS} beam)
|
||||
endif (WITH_EAM)
|
||||
endif (EAM)
|
||||
|
||||
#TODO: option (or-parallelism)
|
||||
|
||||
|
||||
# option (WITH_WAM_Profile
|
||||
# option (WAM_Profile
|
||||
# "support low level profiling of abstract machine" OFF)
|
||||
|
||||
option (WITH_Low_Level_Tracer
|
||||
option (Low_Level_Tracer
|
||||
"support for procedure-call tracing" OFF)
|
||||
#TODO:
|
||||
|
||||
@ -190,29 +204,29 @@ option (System_Threads
|
||||
#
|
||||
|
||||
set(IOLIB_SOURCES
|
||||
os/pl-buffer.c
|
||||
os/pl-codelist.c
|
||||
os/pl-ctype.c
|
||||
os/pl-dtoa.c
|
||||
os/pl-error.c
|
||||
os/pl-file.c
|
||||
os/pl-files.c
|
||||
os/pl-fmt.c
|
||||
os/pl-glob.c
|
||||
os/pl-option.c
|
||||
os/pl-buffer.c
|
||||
os/pl-codelist.c
|
||||
os/pl-ctype.c
|
||||
os/pl-dtoa.c
|
||||
os/pl-error.c
|
||||
os/pl-file.c
|
||||
os/pl-files.c
|
||||
os/pl-fmt.c
|
||||
os/pl-glob.c
|
||||
os/pl-option.c
|
||||
os/pl-nt.c
|
||||
os/pl-os.c
|
||||
os/pl-privitf.c
|
||||
os/pl-prologflag.c
|
||||
os/pl-read.c
|
||||
os/pl-rl.c
|
||||
os/pl-os.c
|
||||
os/pl-privitf.c
|
||||
os/pl-prologflag.c
|
||||
os/pl-read.c
|
||||
os/pl-rl.c
|
||||
os/pl-stream.c
|
||||
os/pl-string.c
|
||||
os/pl-table.c
|
||||
os/pl-tai.c
|
||||
os/pl-text.c
|
||||
os/pl-string.c
|
||||
os/pl-table.c
|
||||
os/pl-tai.c
|
||||
os/pl-text.c
|
||||
os/pl-utf8.c
|
||||
os/pl-write.c
|
||||
os/pl-write.c
|
||||
C/pl-yap.c
|
||||
)
|
||||
|
||||
@ -240,47 +254,47 @@ set (ABSMI_SOURCES
|
||||
|
||||
set (ENGINE_SOURCES
|
||||
${ABSMI_SOURCES}
|
||||
C/agc.c
|
||||
C/adtdefs.c
|
||||
C/alloc.c
|
||||
C/agc.c
|
||||
C/adtdefs.c
|
||||
C/alloc.c
|
||||
C/amasm.c
|
||||
C/analyst.c
|
||||
C/arrays.c
|
||||
C/analyst.c
|
||||
C/arrays.c
|
||||
C/arith0.c
|
||||
C/arith1.c
|
||||
C/arith2.c
|
||||
C/atomic.c
|
||||
C/attvar.c
|
||||
C/bignum.c
|
||||
C/bignum.c
|
||||
C/bb.c
|
||||
C/cdmgr.c
|
||||
C/cmppreds.c
|
||||
C/compiler.c
|
||||
C/computils.c
|
||||
C/corout.c
|
||||
C/cut_c.c
|
||||
C/computils.c
|
||||
C/corout.c
|
||||
C/cut_c.c
|
||||
C/dbase.c
|
||||
C/dlmalloc.c
|
||||
C/errors.c
|
||||
C/dlmalloc.c
|
||||
C/errors.c
|
||||
C/eval.c
|
||||
C/exec.c
|
||||
C/exo.c
|
||||
C/exo_udi.c
|
||||
C/exo.c
|
||||
C/exo_udi.c
|
||||
C/globals.c
|
||||
C/gmp_support.c
|
||||
C/gmp_support.c
|
||||
C/gprof.c
|
||||
C/grow.c
|
||||
C/grow.c
|
||||
C/heapgc.c
|
||||
C/index.c
|
||||
C/index.c
|
||||
C/init.c
|
||||
C/inlines.c
|
||||
C/inlines.c
|
||||
C/iopreds.c
|
||||
C/depth_bound.c
|
||||
C/depth_bound.c
|
||||
C/mavar.c
|
||||
C/modules.c
|
||||
C/other.c
|
||||
C/parser.c
|
||||
C/qlyr.c
|
||||
C/other.c
|
||||
C/parser.c
|
||||
C/qlyr.c
|
||||
C/qlyw.c
|
||||
C/range.c
|
||||
C/save.c
|
||||
@ -290,48 +304,48 @@ set (ENGINE_SOURCES
|
||||
C/stdpreds.c
|
||||
C/sysbits.c
|
||||
C/text.c
|
||||
C/threads.c
|
||||
C/tracer.c
|
||||
C/threads.c
|
||||
C/tracer.c
|
||||
C/unify.c
|
||||
C/userpreds.c
|
||||
C/userpreds.c
|
||||
C/utilpreds.c
|
||||
C/yap-args.c
|
||||
C/write.c
|
||||
C/ypstdio.c
|
||||
library/dialect/swi/fli/swi.c
|
||||
C/yap-args.c
|
||||
C/write.c
|
||||
C/ypstdio.c
|
||||
library/dialect/swi/fli/swi.c
|
||||
library/dialect/swi/fli/blobs.c
|
||||
C/udi.c
|
||||
#packages/udi/rtree.c
|
||||
#packages/udi/rtree_udi.c
|
||||
C/udi.c
|
||||
#packages/udi/rtree.c
|
||||
#packages/udi/rtree_udi.c
|
||||
|
||||
# ${IOLIB_SOURCES}
|
||||
# MPI_SOURCES
|
||||
)
|
||||
|
||||
set(C_INTERFACE_SOURCES
|
||||
C/load_foreign.c
|
||||
C/load_foreign.c
|
||||
C/load_dl.c
|
||||
C/load_dld.c
|
||||
C/load_dld.c
|
||||
C/load_dyld.c
|
||||
C/load_none.c
|
||||
C/load_none.c
|
||||
C/load_aout.c
|
||||
C/load_aix.c
|
||||
C/load_dll.c
|
||||
C/load_shl.c
|
||||
C/c_interface.c
|
||||
C/clause_list.c
|
||||
C/load_dll.c
|
||||
C/load_shl.c
|
||||
C/c_interface.c
|
||||
C/clause_list.c
|
||||
)
|
||||
|
||||
SET(OPTYAP_SOURCES
|
||||
OPTYap/or.memory.c
|
||||
OPTYap/opt.init.c
|
||||
OPTYap/opt.init.c
|
||||
OPTYap/opt.preds.c
|
||||
OPTYap/or.copy_engine.c
|
||||
OPTYap/or.copy_engine.c
|
||||
OPTYap/or.cow_engine.c
|
||||
OPTYap/or.sba_engine.c
|
||||
OPTYap/or.thread_engine.c
|
||||
OPTYap/or.sba_engine.c
|
||||
OPTYap/or.thread_engine.c
|
||||
OPTYap/or.scheduler.c
|
||||
OPTYap/or.cut.c
|
||||
OPTYap/or.cut.c
|
||||
OPTYap/tab.tries.c
|
||||
OPTYap/tab.completion.c
|
||||
)
|
||||
@ -342,28 +356,28 @@ set(STATIC_SOURCES
|
||||
#NOT INCLUDED FOR NOW
|
||||
)
|
||||
|
||||
set(CONSOLE_SOURCES console/yap.c)
|
||||
set(CONSOLE_SOURCES console/yap.c)
|
||||
|
||||
#MPI STUFF
|
||||
# library/mpi/mpi.c library/mpi/mpe.c
|
||||
# library/lammpi/yap_mpi.c library/lammpi/hash.c library/lammpi/prologterms2c.c
|
||||
# library/mpi/mpi.c library/mpi/mpe.c
|
||||
# library/lammpi/yap_mpi.c library/lammpi/hash.c library/lammpi/prologterms2c.c
|
||||
# )
|
||||
|
||||
#WIN STUFF
|
||||
# SET(PLCONS_SOURCES
|
||||
# console/LGPL/pl-nt.c
|
||||
# console/LGPL/pl-ntcon.c
|
||||
# console/LGPL/pl-ntconsole.c
|
||||
# console/LGPL/pl-nt.c
|
||||
# console/LGPL/pl-ntcon.c
|
||||
# console/LGPL/pl-ntconsole.c
|
||||
# console/LGPL/pl-ntmain.c
|
||||
# )
|
||||
|
||||
## define system
|
||||
|
||||
add_library(libYap SHARED
|
||||
${ENGINE_SOURCES}
|
||||
${ENGINE_SOURCES}
|
||||
${IOLIB_SOURCES}
|
||||
${C_INTERFACE_SOURCES}
|
||||
${STATIC_SOURCES}
|
||||
${C_INTERFACE_SOURCES}
|
||||
${STATIC_SOURCES}
|
||||
${OPTYAP_SOURCES}
|
||||
$<TARGET_OBJECTS:libyaptai>
|
||||
)
|
||||
@ -377,7 +391,7 @@ set_target_properties(libYap
|
||||
OUTPUT_NAME Yap
|
||||
)
|
||||
|
||||
option (WITH_Dynamic_BDD
|
||||
option (Dynamic_BDD
|
||||
"dynamic bdd library" OFF)
|
||||
#TODO:
|
||||
|
||||
@ -390,51 +404,51 @@ option (WITH_Dynamic_BDD
|
||||
include (Config)
|
||||
|
||||
macro_optional_find_package (GMP ON)
|
||||
macro_log_feature (GMP_FOUND "libgmp"
|
||||
"GNU Multiple Precision"
|
||||
macro_log_feature (GMP_FOUND "libgmp"
|
||||
"GNU Multiple Precision"
|
||||
"http://gmplib.org")
|
||||
if (GMP_FOUND)
|
||||
include_directories (${GMP_INCLUDE_DIR})
|
||||
target_link_libraries(libYap ${GMP_LIBRARIES})
|
||||
target_link_libraries(libYap ${GMP_LIBRARIES})
|
||||
#config.h needs this (TODO: change in code latter)
|
||||
set (USE_GMP 1)
|
||||
set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${GMP_INCLUDE_DIR} )
|
||||
set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GMP_LIBRARIES} )
|
||||
# set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${GMP_INCLUDE_DIR} )
|
||||
# set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GMP_LIBRARIES} )
|
||||
endif (GMP_FOUND)
|
||||
|
||||
macro_optional_find_package (Readline ON)
|
||||
macro_log_feature (READLINE_FOUND "libreadline"
|
||||
"GNU Readline Library (or similar)"
|
||||
macro_log_feature (READLINE_FOUND "libreadline"
|
||||
"GNU Readline Library (or similar)"
|
||||
"http://www.gnu.org/software/readline")
|
||||
if (READLINE_FOUND)
|
||||
include_directories (${READLINE_INCLUDE_DIR})
|
||||
target_link_libraries(libYap ${READLINE_LIBRARIES})
|
||||
target_link_libraries(libYap ${READLINE_LIBRARIES})
|
||||
set (HAVE_READLINE_READLINE_H 1)
|
||||
set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${READLINE_INCLUDE_DIR} )
|
||||
set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${READLINE_LIBRARIES} )
|
||||
|
||||
# set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${READLINE_INCLUDE_DIR} )
|
||||
# set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${READLINE_LIBRARIES} )
|
||||
|
||||
check_function_exists( add_history HAVE_ADD_HISTORY )
|
||||
check_function_exists( rl_begin_undo_group HAVE_RL_BEGIN_UNDO_GROUP)
|
||||
check_function_exists( rl_begin_undo_group HAVE_RL_BEGIN_UNDO_GROUP)
|
||||
check_function_exists( rl_clear_pending_input HAVE_RL_CLEAR_PENDING_INPUT)
|
||||
check_function_exists( rl_discard_argument HAVE_RL_DISCARD_ARGUMENT)
|
||||
check_function_exists( rl_filename_completion_function HAVE_RL_FILENAME_COMPLETION_FUNCTION)
|
||||
check_function_exists( rl_free_line_state HAVE_RL_FREE_LINE_STATE )
|
||||
check_function_exists( rl_insert_close HAVE_RL_INSERT_CLOSE )
|
||||
check_function_exists( rl_filename_completion_function HAVE_RL_FILENAME_COMPLETION_FUNCTION)
|
||||
check_function_exists( rl_free_line_state HAVE_RL_FREE_LINE_STATE )
|
||||
check_function_exists( rl_insert_close HAVE_RL_INSERT_CLOSE )
|
||||
check_function_exists( rl_reset_after_signal HAVE_RL_RESET_AFTER_SIGNAL )
|
||||
check_function_exists( rl_set_keyboard_input_timeout HAVE_RL_SET_KEYBOARD_INPUT_TIMEOUT )
|
||||
check_function_exists( rl_set_keyboard_input_timeout HAVE_RL_SET_KEYBOARD_INPUT_TIMEOUT )
|
||||
check_function_exists( rl_set_prompt HAVE_RL_SET_PROMPT)
|
||||
check_symbol_exists( rl_catch_signals stdio.h;readline/readline.h HAVE_DECL_RL_CATCH_SIGNALS )
|
||||
check_symbol_exists( rl_completion_func_t stdio.h;readline/readline.h HAVE_DECL_RL_COMPLETION_FUNC_T )
|
||||
check_symbol_exists( rl_catch_signals stdio.h;readline/readline.h HAVE_DECL_RL_CATCH_SIGNALS )
|
||||
check_symbol_exists( rl_completion_func_t stdio.h;readline/readline.h HAVE_DECL_RL_COMPLETION_FUNC_T )
|
||||
check_symbol_exists( rl_done stdio.h;readline/readline.h HAVE_DECL_RL_DONE )
|
||||
check_symbol_exists( rl_hook_func_t stdio.h;readline/readline.h HAVE_DECL_RL_HOOK_FUNC_T )
|
||||
check_symbol_exists( rl_hook_func_t stdio.h;readline/readline.h HAVE_DECL_RL_HOOK_FUNC_T )
|
||||
check_symbol_exists( rl_event_hook stdio.h;readline/readline.h HAVE_DECL_RL_EVENT_HOOK )
|
||||
check_symbol_exists( rl_readline_state stdio.h;readline/readline.h HAVE_DECL_RL_READLINE_STATE )
|
||||
endif (READLINE_FOUND)
|
||||
|
||||
|
||||
macro_optional_find_package (Threads OFF)
|
||||
macro_log_feature (THREADS_FOUND "Threads Support"
|
||||
"GNU Threads Library (or similar)"
|
||||
macro_log_feature (THREADS_FOUND "Threads Support"
|
||||
"GNU Threads Library (or similar)"
|
||||
"http://www.gnu.org/software/threads")
|
||||
if (THREADS_FOUND)
|
||||
#
|
||||
@ -462,14 +476,14 @@ if (THREADS_FOUND)
|
||||
# ::
|
||||
#
|
||||
set( THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
|
||||
if (CMAKE_USE_PTHREADS_INIT)
|
||||
target_link_libraries(libYap pthread)
|
||||
target_link_libraries(libYap pthread)
|
||||
set (HAVE_READLINE_READLINE_H 1)
|
||||
set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )
|
||||
check_function_exists( pthread_mutexattr_setkind_np HAVE_PTHREAD_MUTEXATTR_SETKIND_NP )
|
||||
check_function_exists( pthread_mutexattr_settype HAVE_PTHREAD_MUTEXATTR_SETTYPE )
|
||||
check_function_exists( pthread_setconcurrency HAVE_PTHREAD_SETCONCURRENCY )
|
||||
check_function_exists( pthread_setconcurrency HAVE_PTHREAD_SETCONCURRENCY )
|
||||
endif (CMAKE_USE_PTHREADS_INIT)
|
||||
#
|
||||
# Please note that the compiler flag can only be used with the imported
|
||||
@ -477,44 +491,44 @@ if (THREADS_FOUND)
|
||||
# recommended for new code.
|
||||
endif (THREADS_FOUND)
|
||||
|
||||
cmake_dependent_option (WITH_PThreadLocking
|
||||
cmake_dependent_option (PThreadLocking
|
||||
"use pthread locking primitives for internal locking" ON
|
||||
System_Threads OFF)
|
||||
|
||||
option (Use_JIT
|
||||
"use just-in-time compilation (experimental)" OFF)
|
||||
if (Use_JIT)
|
||||
macro_optional_find_package (LLVM ON)
|
||||
macro_log_feature (LLVM_FOUND "LLVM JIT generator"
|
||||
"The LLVM Compiler Infrastructure"
|
||||
"http://www.llvm.org")
|
||||
if (LLVM_FOUND)
|
||||
add_subdirectory (JIT)
|
||||
include_directories (JIT/HPP)
|
||||
add_definitions(-DYAP_JIT=1)
|
||||
endif (LLVM_FOUND)
|
||||
endif (Use_JIT)
|
||||
|
||||
|
||||
|
||||
add_subdirectory (CXX)
|
||||
ADD_SUBDIRECTORY(library)
|
||||
ADD_SUBDIRECTORY(swi/library)
|
||||
# ADD_SUBDIRECTORY(os)
|
||||
# ADD_SUBDIRECTORY(packages)
|
||||
# ADD_SUBDIRECTORY(packages)
|
||||
ADD_SUBDIRECTORY(pl)
|
||||
|
||||
macro_optional_add_subdirectory (packages/cuda)
|
||||
option (JIT
|
||||
"use just-in-time compilation (experimental)" ON)
|
||||
if (JIT)
|
||||
macro_optional_find_package (LLVM ON)
|
||||
macro_log_feature (LLVM_FOUND "LLVM JIT generator"
|
||||
"The LLVM Compiler Infrastructure" "http://www.llvm.org")
|
||||
if (LLVM_FOUND)
|
||||
INCLUDE_DIRECTORIES(JIT/HPP)
|
||||
add_definitions (-DYAP_JIT=1)
|
||||
add_subdirectory (JIT)
|
||||
endif (LLVM_FOUND)
|
||||
endif (JIT)
|
||||
|
||||
macro_optional_add_subdirectory (packages/real)
|
||||
|
||||
macro_optional_add_subdirectory (packages/python)
|
||||
macro_optional_add_subdirectory (packages/gecode)
|
||||
|
||||
macro_optional_add_subdirectory (packages/raptor)
|
||||
macro_optional_add_subdirectory (packages/cuda)
|
||||
|
||||
macro_optional_add_subdirectory (packages/real)
|
||||
|
||||
macro_optional_add_subdirectory (packages/python)
|
||||
|
||||
macro_optional_add_subdirectory (packages/raptor)
|
||||
|
||||
#macro_optional_add_subdirectory (packages/archive)
|
||||
|
||||
#macro_optional_add_subdirectory (packages/jpl)
|
||||
macro_optional_add_subdirectory (packages/jpl)
|
||||
|
||||
#macro_optional_add_subdirectory (packages/prosqlite)
|
||||
|
||||
@ -536,21 +550,21 @@ macro_optional_add_subdirectory (packages/raptor)
|
||||
# option (CYGWIN
|
||||
# "use cygwin library in WIN32" OFF)
|
||||
|
||||
option (WITH_PRISM
|
||||
option (PRISM
|
||||
"use PRISM system in YAP" ON)
|
||||
#TODO:
|
||||
|
||||
option (WITH_Dynamic_Loading
|
||||
option (Dynamic_Loading
|
||||
"compile YAP as a DLL" ON)
|
||||
#TODO:
|
||||
|
||||
option (WITH_Static_compilation
|
||||
option (Static_compilation
|
||||
"compile YAP statically" OFF)
|
||||
#TODO:
|
||||
|
||||
option (Use_MALLOC
|
||||
option (MALLOC
|
||||
"use malloc to allocate memory" ON)
|
||||
if (Use_MALLOC)
|
||||
if (MALLOC)
|
||||
# use default allocator
|
||||
set ( USE_SYSTEM_MALLOC 1 )
|
||||
endif()
|
||||
@ -563,7 +577,7 @@ option(CONDOR
|
||||
# OPTION(WIN64
|
||||
# "compile YAP for win64" OFF)
|
||||
|
||||
# option (WITH_APRIL
|
||||
# option (APRIL
|
||||
# "compile Yap to support April ILP system" OFF)
|
||||
# option (DLCOMPAT
|
||||
# "use dlcompat library for dynamic loading on Mac OS X" OFF)
|
||||
@ -572,9 +586,7 @@ option(CONDOR
|
||||
# if (R_FOUND)
|
||||
# MESSAGE(STATUS "RFOUND ${R_LIBRARIES} ${R_DEFINITIONS} ${R_EXECUTABLE}")
|
||||
# endif (R_FOUND)
|
||||
#TODO: check REAL_TARGET ENABLE_REAL
|
||||
|
||||
#TODO: Switch to feature detection
|
||||
#TODO: check REAL_TARGET REAL#TODO: Switch to feature detection
|
||||
# OPTION(CHR
|
||||
# "install chr library" ON)
|
||||
# OPTION(CLPQR
|
||||
@ -583,7 +595,7 @@ option(CONDOR
|
||||
# "enable the cplint library using the CUDD library in DIR/lib" OFF)
|
||||
# OPTION(yap_cv_clpbn_bp
|
||||
# "enable belief propagation solver in CLPBN." OFF)
|
||||
# OPTION(
|
||||
# OPTION(
|
||||
|
||||
# SHARED PACKAGES with SWI
|
||||
# swi packages have both Makefile.in which we will use and
|
||||
@ -602,23 +614,6 @@ option(CONDOR
|
||||
## after we have all functionality in
|
||||
#
|
||||
|
||||
# Compilation Flags
|
||||
if (CMAKE_COMPILER_IS_GNUCC)
|
||||
message(STATUS "Original CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wstrict-prototypes -Wmissing-prototypes")
|
||||
message(STATUS "Running with CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
|
||||
message(STATUS "Original CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g ")
|
||||
message(STATUS "Runing with CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}")
|
||||
message(STATUS "Original CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3 -fomit-frame-pointer -fstrict-aliasing -freorder-blocks -fsched-interblock")
|
||||
message(STATUS "Running with CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}")
|
||||
endif()
|
||||
add_definitions( -Wall)
|
||||
add_definitions(-D_YAP_NOT_INSTALLED_=1 -DHAVE_CONFIG_H -DLOW_LEVEL_TRACER=1 -DDEBUG=1)
|
||||
add_definitions(-DTHREADEAD_CODE=1)
|
||||
add_definitions(-D_GNU_SOURCE=1 -D_XOPEN_SOURCE=700)
|
||||
|
||||
configure_file ("${PROJECT_SOURCE_DIR}/config.h.cmake"
|
||||
"${PROJECT_BINARY_DIR}/config.h" )
|
||||
configure_file ("${PROJECT_SOURCE_DIR}/YapTermConfig.h.cmake"
|
||||
@ -630,6 +625,26 @@ set_target_properties (yap-bin PROPERTIES OUTPUT_NAME yap)
|
||||
|
||||
target_link_libraries(yap-bin libYap )
|
||||
|
||||
if (JIT)
|
||||
|
||||
endif(JIT)
|
||||
|
||||
if (MPI_C_FOUND)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MPI_C_COMPILE_FLAGS} ")
|
||||
include_directories(${MPI_C_INCLUDE_PATH})
|
||||
target_link_libraries(yap-bin ${MPI_C_LIBRARIES} )
|
||||
if(MPI_C_COMPILE_FLAGS)
|
||||
set_target_properties(yap-bin PROPERTIES
|
||||
COMPILE_FLAGS "${MPI_C_COMPILE_FLAGS}")
|
||||
endif()
|
||||
|
||||
if(MPI_C_LINK_FLAGS)
|
||||
set_target_properties(yap-bin PROPERTIES
|
||||
LINK_FLAGS "${MPI_C_LINK_FLAGS}")
|
||||
endif()
|
||||
endif (MPI_C_FOUND)
|
||||
|
||||
|
||||
add_custom_target (main ALL DEPENDS ${YAP_STARTUP} ) # WORKING_DIRECTORY ${CMAKE_BINARY_DIR} )
|
||||
|
||||
install (
|
||||
@ -640,4 +655,3 @@ install (
|
||||
)
|
||||
|
||||
macro_display_feature_log()
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
|
||||
add_library (Yap++ SHARED yapi.cpp)
|
||||
|
||||
include_directories (H include os ${CMAKE_BINARY_DIR} ${GMP_INCLUDE_DIR})
|
||||
|
||||
target_link_libraries(Yap++ libYap)
|
||||
|
||||
install(TARGETS Yap++
|
||||
LIBRARY DESTINATION ${libdir} )
|
||||
|
||||
include_directories (${GMP_INCLUDE_DIR})
|
||||
|
||||
set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${GMP_INCLUDE_DIR} )
|
||||
#set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GMP_LIBRARIES} )
|
||||
|
||||
|
||||
|
@ -110,9 +110,3 @@ void Yap_ShutdownLoadForeign(void);
|
||||
|
||||
#define EAGER_LOADING 1
|
||||
#define GLOBAL_LOADING 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
4
H/Yap.h
4
H/Yap.h
@ -174,6 +174,10 @@
|
||||
#define DUMMY_FILLER_FOR_ABS_TYPE int dummy;
|
||||
#endif /* HAVE_GCC */
|
||||
|
||||
/* funcions that return a generic pointer */
|
||||
typedef void * (*fptr_t)(void);
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
main exports in YapInterface.h
|
||||
*************************************************************************************************/
|
||||
|
@ -167,8 +167,8 @@ Yap_PrintPredName( struct pred_entry *ap );
|
||||
#endif
|
||||
void Yap_RestartYap(int);
|
||||
void Yap_exit(int);
|
||||
yamop *Yap_Error(yap_error_number,Term,char *msg, ...);
|
||||
yamop *Yap_NilError(yap_error_number,char *msg, ...);
|
||||
yamop *Yap_Error(yap_error_number,Term,const char *msg, ...);
|
||||
yamop *Yap_NilError(yap_error_number,const char *msg, ...);
|
||||
int Yap_HandleError( const char *msg, ... );
|
||||
int Yap_SWIHandleError( const char *, ... );
|
||||
|
||||
|
34
H/absmi.h
34
H/absmi.h
@ -15,6 +15,10 @@
|
||||
* *
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef ABSMI_H
|
||||
|
||||
#define ABSMI_H 1
|
||||
|
||||
#ifdef SCCS
|
||||
static char SccsId[] = "%W% %G%";
|
||||
|
||||
@ -2200,28 +2204,23 @@ extern char fin[1024];
|
||||
|
||||
#if YAP_JIT
|
||||
#ifndef _NATIVE
|
||||
#ifndef __cplusplus
|
||||
|
||||
#include <math.h>
|
||||
#include "JIT_Compiler.hpp"
|
||||
|
||||
struct JIT_Compiler *J;
|
||||
extern struct JIT_Compiler *J;
|
||||
|
||||
NativeContext *NativeArea;
|
||||
IntermediatecodeContext *IntermediatecodeArea;
|
||||
void* call_JIT_Compiler(struct JIT_Compiler*, yamop*);
|
||||
void shutdown_llvm(void);
|
||||
|
||||
CELL l;
|
||||
short global;
|
||||
CELL nnexec;
|
||||
yamop* HEADPREG;
|
||||
CELL BLOCK;
|
||||
CELL BLOCKADDRESS;
|
||||
CELL FAILED;
|
||||
extern NativeContext *NativeArea;
|
||||
extern IntermediatecodeContext *IntermediatecodeArea;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
extern CELL l;
|
||||
extern short global;
|
||||
extern CELL nnexec;
|
||||
extern yamop* HEADPREG;
|
||||
extern CELL BLOCK;
|
||||
extern CELL BLOCKADDRESS;
|
||||
extern CELL FAILED;
|
||||
|
||||
TraceContext **curtrace;
|
||||
yamop *curpreg;
|
||||
@ -2229,6 +2228,8 @@ BlocksContext **globalcurblock;
|
||||
COUNT ineedredefinedest;
|
||||
yamop* headoftrace;
|
||||
|
||||
|
||||
#endif /* _NATIVE */
|
||||
#endif /* YAP_JIT */
|
||||
|
||||
#ifdef SHADOW_S
|
||||
@ -2256,3 +2257,6 @@ yamop* headoftrace;
|
||||
JMPNext(); \
|
||||
ENDD(d0);
|
||||
#endif
|
||||
|
||||
#endif // ABSMI_H
|
||||
|
||||
|
33
H/amidefs.h
33
H/amidefs.h
@ -63,7 +63,7 @@
|
||||
|
||||
#ifndef NULL
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ALIGN_LONGS
|
||||
/* */ typedef Int DISPREG;
|
||||
@ -110,9 +110,6 @@ typedef Int (*CmpPredicate)(Term, Term);
|
||||
typedef OPREG wamreg;
|
||||
typedef OPREG yslot;
|
||||
typedef OPREG COUNT;
|
||||
|
||||
#include "amijit.h"
|
||||
|
||||
/*
|
||||
This is a table with the codes for YAP instructions
|
||||
*/
|
||||
@ -223,6 +220,10 @@ typedef enum {
|
||||
#endif
|
||||
#define OpCodeSize sizeof(OPCODE)
|
||||
|
||||
|
||||
#include "amijit.h"
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Types of possible YAAM instructions.
|
||||
@ -375,7 +376,7 @@ typedef struct yami {
|
||||
/* The first one, aLl, handles try_logical and retry_logical, */
|
||||
/* Ill handles trust_logical. */
|
||||
/* They must have the same fields. */
|
||||
|
||||
|
||||
struct {
|
||||
#ifdef YAPOR
|
||||
unsigned int or_arg;
|
||||
@ -759,7 +760,7 @@ typedef struct yami {
|
||||
struct yami *l1;
|
||||
struct yami *l2;
|
||||
CELL next;
|
||||
} xll;
|
||||
} xll;
|
||||
struct {
|
||||
wamreg xl;
|
||||
wamreg xr;
|
||||
@ -897,7 +898,7 @@ typedef Term *tr_fr_ptr;
|
||||
struct deterministic_choicept {
|
||||
yamop *cp_ap;
|
||||
struct choicept *cp_b;
|
||||
tr_fr_ptr cp_tr;
|
||||
tr_fr_ptr cp_tr;
|
||||
#ifdef DEPTH_LIMIT
|
||||
CELL cp_depth;
|
||||
#endif /* DEPTH_LIMIT */
|
||||
@ -911,7 +912,7 @@ struct deterministic_choicept {
|
||||
typedef struct choicept {
|
||||
yamop *cp_ap;
|
||||
struct choicept *cp_b;
|
||||
tr_fr_ptr cp_tr;
|
||||
tr_fr_ptr cp_tr;
|
||||
#ifdef DEPTH_LIMIT
|
||||
CELL cp_depth;
|
||||
#endif /* DEPTH_LIMIT */
|
||||
@ -1045,37 +1046,37 @@ CELL *ENV_Parent(CELL *env)
|
||||
return (CELL *)env[E_E];
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
UInt ENV_Size(yamop *cp)
|
||||
{
|
||||
return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.s);
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
struct pred_entry *ENV_ToP(yamop *cp)
|
||||
{
|
||||
return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.p);
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
OPCODE ENV_ToOp(yamop *cp)
|
||||
{
|
||||
return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->opc);
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
UInt EnvSize(yamop *cp)
|
||||
{
|
||||
return ((-ENV_Size(cp))/(OPREG)sizeof(CELL));
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
CELL *EnvBMap(yamop *p)
|
||||
{
|
||||
return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.bmap);
|
||||
}
|
||||
|
||||
static inline
|
||||
static inline
|
||||
struct pred_entry *EnvPreg(yamop *p)
|
||||
{
|
||||
return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.p0);
|
||||
@ -1098,10 +1099,8 @@ extern void **Yap_ABSMI_OPCODES;
|
||||
/*
|
||||
Make this into an even number so that the system will know
|
||||
it should ignore the depth limit
|
||||
*/
|
||||
*/
|
||||
#define RESET_DEPTH() MkIntTerm(MAX_ABS_INT-1)
|
||||
#else
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
#define GLOBAL_PL_Argv Yap_global->PL_Argv_
|
||||
|
||||
#define GLOBAL_HaltHooks Yap_global->HaltHooks_
|
||||
#define GLOBAL_JIT_finalizer Yap_global->JIT_finalizer_
|
||||
|
||||
#define GLOBAL_AllowLocalExpansion Yap_global->AllowLocalExpansion_
|
||||
#define GLOBAL_AllowGlobalExpansion Yap_global->AllowGlobalExpansion_
|
||||
|
@ -26,6 +26,7 @@ typedef struct global_data {
|
||||
char** PL_Argv_;
|
||||
|
||||
struct halt_hook* HaltHooks_;
|
||||
fptr_t JIT_finalizer_;
|
||||
|
||||
int AllowLocalExpansion_;
|
||||
int AllowGlobalExpansion_;
|
||||
|
@ -26,6 +26,7 @@ static void InitGlobal(void) {
|
||||
GLOBAL_PL_Argv = NULL;
|
||||
|
||||
GLOBAL_HaltHooks = NULL;
|
||||
GLOBAL_JIT_finalizer = NULL;
|
||||
|
||||
GLOBAL_AllowLocalExpansion = TRUE;
|
||||
GLOBAL_AllowGlobalExpansion = TRUE;
|
||||
|
@ -34,6 +34,7 @@ static void RestoreGlobal(void) {
|
||||
|
||||
|
||||
|
||||
|
||||
#if __ANDROID__
|
||||
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
set(LIBJIT_MAJOR_VERSION 0)
|
||||
set(LIBJIT_MINOR_VERSION 2)
|
||||
set(LIBJIT_PATCH_VERSION 1)
|
||||
set(LIBJIT_MINOR_VERSION 1)
|
||||
set(LIBJIT_PATCH_VERSION 0)
|
||||
set(LIBJIT_FULL_VERSION
|
||||
${LIBJIT_MAJOR_VERSION}.${LIBJIT_MINOR_VERSION}.${LIBJIT_PATCH_VERSION})
|
||||
|
||||
|
||||
set(LIBJIT_SOURCES
|
||||
jit_analysispreds.c
|
||||
jit_configpreds.c
|
||||
@ -13,6 +12,7 @@ set(LIBJIT_SOURCES
|
||||
jit_debugpreds.c
|
||||
jit_transformpreds.c
|
||||
JIT_Compiler.cpp
|
||||
JIT_Init.cpp
|
||||
)
|
||||
|
||||
# The following variables are defined:
|
||||
@ -51,12 +51,11 @@ add_library (libyapjit SHARED
|
||||
set_target_properties(libyapjit
|
||||
PROPERTIES
|
||||
# RPATH ${libdir} VERSION ${LIBJIT_FULL_VERSION}
|
||||
# SOVERSION ${LIBJIT_MAJOR_VERSION}.${LIBJIT_MINOR_VERSION}
|
||||
SOVERSION ${LIBJIT_MAJOR_VERSION}.${LIBJIT_MINOR_VERSION}
|
||||
POSITION_INDEPENDENT_CODE TRUE
|
||||
OUTPUT_NAME YapJIT
|
||||
)
|
||||
|
||||
target_link_libraries(libyapjit libYap ${LLVM_LIBRARIES})
|
||||
|
||||
|
||||
target_link_libraries(libyapjit libYap ${LLVM_LIBRARIES} )
|
||||
|
||||
set ( YAP_YAPJITLIB $<TARGET_FILE_NAME:libyapjit> )
|
||||
|
@ -12,24 +12,25 @@
|
||||
|
||||
extern Environment ExpEnv;
|
||||
|
||||
extern Environment ExpEnv;
|
||||
|
||||
#if YAP_JIT
|
||||
Int STD_PROTO(Get_N_Cores,(void));
|
||||
X_API Int STD_PROTO(Init_Analysis_Struc,(void));
|
||||
X_API Int STD_PROTO(Init_Transform_Struc,(void));
|
||||
X_API Int STD_PROTO(Init_Codegen_Struc,(void));
|
||||
X_API Int STD_PROTO(Init_Config_Struc,(void));
|
||||
Int Get_N_Cores(void);
|
||||
X_API Int Init_Analysis_Struc(void);
|
||||
X_API Int Init_Transform_Struc(void);
|
||||
X_API Int Init_Codegen_Struc(void);
|
||||
X_API Int Init_Config_Struc(void);
|
||||
#if YAP_STAT_PREDS
|
||||
X_API Int STD_PROTO(Init_Stats_Struc, (void));
|
||||
X_API Int Init_Stats_Struc(void);
|
||||
#endif
|
||||
#endif /* YAP_JIT */
|
||||
#if YAP_DBG_PREDS
|
||||
X_API Int STD_PROTO(Init_Debug_Struc,(void));
|
||||
X_API Int Init_Debug_Struc(void);
|
||||
#endif
|
||||
X_API Int STD_PROTO(YAP_Init_ExpEnv,(void));
|
||||
X_API Int YAP_Init_ExpEnv(void);
|
||||
|
||||
#if YAP_JIT
|
||||
Int
|
||||
Get_N_Cores() {
|
||||
IntGet_N_Cores() {
|
||||
#ifdef WIN32
|
||||
SYSTEM_INFO sysinfo;
|
||||
GetSystemInfo(&sysinfo);
|
||||
@ -39,11 +40,11 @@ Get_N_Cores() {
|
||||
size_t len = 4;
|
||||
uint32_t count;
|
||||
|
||||
nm[0] = CTL_HW; nm[1] = HRW_AVAILCPU;
|
||||
nm[0] = CTL_HW; nm[1] = HW_AVAILCPU;
|
||||
sysctl(nm, 2, &count, &len, NULL, 0);
|
||||
|
||||
if(count < 1) {
|
||||
nm[1] = HRW_NCPU;
|
||||
nm[1] = HW_NCPU;
|
||||
sysctl(nm, 2, &count, &len, NULL, 0);
|
||||
if(count < 1) { count = 1; }
|
||||
}
|
||||
@ -74,7 +75,7 @@ Init_Transform_Struc()
|
||||
ExpEnv.transform_struc.act_tr = NULL;
|
||||
ExpEnv.transform_struc.opt_args.arg_promotion_max_elements = 3;
|
||||
ExpEnv.transform_struc.opt_args.strip_symbols_pass_type = 0;
|
||||
ExpEnv.transform_struc.opt_args.scalar_replace_aggregates_threshold = -1;
|
||||
ExpEnv.transform_struc.opt_args.scalar_replace_aggregates_threshold = -1;
|
||||
ExpEnv.transform_struc.opt_args.loop_unswitch_optimize_for_size = 0;
|
||||
ExpEnv.transform_struc.opt_args.loop_unroll_threshold = -1;
|
||||
ExpEnv.transform_struc.opt_args.inline_threshold = 225;
|
||||
@ -102,7 +103,7 @@ Init_Codegen_Struc()
|
||||
ExpEnv.codegen_struc.struc_targetopt.disabletailcalls = 0;
|
||||
ExpEnv.codegen_struc.struc_targetopt.fastisel = 0;
|
||||
ExpEnv.codegen_struc.struc_targetopt.floatabitype = 0;
|
||||
|
||||
|
||||
ExpEnv.codegen_struc.struc_enginebuilder.engineoptlevel = 3;
|
||||
ExpEnv.codegen_struc.struc_enginebuilder.relocmodel = 0;
|
||||
ExpEnv.codegen_struc.struc_enginebuilder.codemodel = 1;
|
||||
@ -174,15 +175,15 @@ Init_Debug_Struc()
|
||||
ExpEnv.debug_struc.pmainclause_on_head.print = (Int)NO_PLACE;
|
||||
ExpEnv.debug_struc.pmainclause_on_head.msg_before = 0;
|
||||
ExpEnv.debug_struc.pmainclause_on_head.msg_after = 0;
|
||||
|
||||
|
||||
ExpEnv.debug_struc.pprint_intermediate.print_to_std = 0;
|
||||
ExpEnv.debug_struc.pprint_intermediate.print_to_file = 0;
|
||||
ExpEnv.debug_struc.pprint_intermediate.std_name = 0;
|
||||
ExpEnv.debug_struc.pprint_intermediate.file_name = 0;
|
||||
|
||||
|
||||
ExpEnv.debug_struc.pprint_llva.print_llva_before = 0;
|
||||
ExpEnv.debug_struc.pprint_llva.print_llva_after = 0;
|
||||
|
||||
|
||||
ExpEnv.debug_struc.pprint_me.interpreted_backtrack = 0;
|
||||
ExpEnv.debug_struc.pprint_me.profiled_interpreted_backtrack = 0;
|
||||
ExpEnv.debug_struc.pprint_me.native_backtrack = 0;
|
||||
@ -196,16 +197,16 @@ Init_Debug_Struc()
|
||||
ExpEnv.debug_struc.pprint_me.nativerun_init = 0;
|
||||
ExpEnv.debug_struc.pprint_me.nativerun_exit_by_success = 0;
|
||||
ExpEnv.debug_struc.pprint_me.nativerun_exit_by_fail = 0;
|
||||
|
||||
|
||||
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 0;
|
||||
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 0;
|
||||
ExpEnv.debug_struc.act_predicate_msgs.warning_msgs = 1;
|
||||
ExpEnv.debug_struc.act_predicate_msgs.error_msgs = 1;
|
||||
|
||||
|
||||
ExpEnv.debug_struc.act_predicate_actions.exit_on_warning = 0;
|
||||
ExpEnv.debug_struc.act_predicate_actions.disable_on_warning = 1;
|
||||
ExpEnv.debug_struc.act_predicate_actions.exit_on_error = 1;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,24 +0,0 @@
|
||||
#ifndef JIT_HPP
|
||||
#define JIT_HPP
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <time.h>
|
||||
#include <dlfcn.h>
|
||||
#include "config.h"
|
||||
#include "absmi.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#else
|
||||
|
||||
#define LIMIT_COUNT 4096
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,3 +1,4 @@
|
||||
|
||||
#ifndef JIT_HPP
|
||||
#define JIT_HPP
|
||||
|
||||
|
@ -1,104 +0,0 @@
|
||||
#ifndef JIT_COMPILER_HPP
|
||||
#define JIT_COMPILER_HPP
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Constants.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/Instructions.h"
|
||||
#include "llvm/Linker.h"
|
||||
#include "llvm/PassManager.h"
|
||||
#include "llvm/CallGraphSCCPass.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/ADT/StringSet.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Assembly/PrintModulePass.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/CodeGen/MachineCodeInfo.h"
|
||||
#include "llvm/ExecutionEngine/JIT.h"
|
||||
#include "llvm/ExecutionEngine/Interpreter.h"
|
||||
#include "llvm/ExecutionEngine/GenericValue.h"
|
||||
#include "llvm/ExecutionEngine/JITMemoryManager.h"
|
||||
#include "llvm/ExecutionEngine/JITEventListener.h"
|
||||
#include "llvm/Support/DataStream.h"
|
||||
#include "llvm/Support/IRReader.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/raw_os_ostream.h"
|
||||
#include "llvm/Support/IRBuilder.h"
|
||||
#include "llvm/Support/PathV1.h"
|
||||
#include "llvm/Support/TypeBuilder.h"
|
||||
#include "llvm/Support/ToolOutputFile.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Target/TargetLibraryInfo.h"
|
||||
#include "llvm/Analysis/Passes.h"
|
||||
#include "llvm/Analysis/IVUsers.h"
|
||||
#include "llvm/Analysis/Lint.h"
|
||||
#include "llvm/Analysis/DebugInfo.h"
|
||||
#include "llvm/Analysis/Verifier.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Analysis/RegionPass.h"
|
||||
#include "llvm/Analysis/CFGPrinter.h"
|
||||
#include "llvm/Analysis/DomPrinter.h"
|
||||
#include "llvm/Analysis/BranchProbabilityInfo.h"
|
||||
#include "llvm/Analysis/RegionPrinter.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/system_error.h"
|
||||
#include "llvm/Support/Process.h"
|
||||
#include "llvm/Bitcode/ReaderWriter.h"
|
||||
#include "llvm/Transforms/IPO.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Vectorize.h"
|
||||
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
|
||||
#include "llvm/Transforms/Utils/Cloning.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "JIT.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern short global;
|
||||
extern Environment ExpEnv;
|
||||
extern NativeContext *NativeArea;
|
||||
|
||||
class JIT_Compiler {
|
||||
private:
|
||||
/* main method of JIT Compiler: compiles by clang, analyzes, optimizs and generates code accordingly the user choices */
|
||||
void* compile_all(LLVMContext* &Context, yamop* p);
|
||||
|
||||
/* aid method to 'compile_all': adds register allocator pass to be used.
|
||||
WARNING: don't use! For some reasons llvm crashes when I use it */
|
||||
void set_regalloc_pass(PassManager &PM);
|
||||
|
||||
/* aid method to 'compile_all': optimizes module by individual transform passes or transform level */
|
||||
void optimize_module(llvm::Module* &M);
|
||||
|
||||
/* aid method to 'compile_all': analyzes module by individual analysis passes */
|
||||
void analyze_module(llvm::Module* &M);
|
||||
public:
|
||||
/* method invoked by wrapper 'call_JIT_Compiler' */
|
||||
void* compile(yamop*);
|
||||
};
|
||||
#else
|
||||
|
||||
struct JIT_Compiler{}; // Doing this, I can call class 'JIT_Compiler' from C code
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
extern "C" void* call_JIT_Compiler(JIT_Compiler* jc, yamop* p) { return jc->compile(p); }
|
||||
extern "C" void shutdown_llvm() { llvm_shutdown(); }
|
||||
|
||||
#endif //#ifdef __cplusplus
|
||||
|
||||
#endif
|
@ -72,38 +72,50 @@ extern Environment ExpEnv;
|
||||
extern NativeContext *NativeArea;
|
||||
|
||||
class JIT_Compiler {
|
||||
private:
|
||||
/* main method of JIT Compiler: compiles by clang, analyzes, optimizs and generates code accordingly the user choices */
|
||||
void* compile_all(LLVMContext* &Context, yamop* p);
|
||||
private:
|
||||
/* main method of JIT Compiler: compiles by clang, analyzes, optimizs and generates code accordingly the user choices */
|
||||
void* compile_all(LLVMContext* &Context, yamop* p);
|
||||
|
||||
/* aid method to 'compile_all': adds register allocator pass to be used.
|
||||
WARNING: don't use! For some reasons llvm crashes when I use it */
|
||||
void set_regalloc_pass(PassManager &PM);
|
||||
/* aid method to 'compile_all': adds register allocator pass to be used.
|
||||
WARNING: don't use! For some reasons llvm crashes when I use it */
|
||||
void set_regalloc_pass(PassManager &PM);
|
||||
|
||||
/* aid method to 'compile_all': optimizes module by individual transform passes or transform level */
|
||||
void optimize_module(llvm::Module* &M);
|
||||
/* aid method to 'compile_all': optimizes module by individual transform passes or transform level */
|
||||
void optimize_module(llvm::Module* &M);
|
||||
|
||||
/* aid method to 'compile_all': analyzes module by individual analysis passes */
|
||||
void analyze_module(llvm::Module* &M);
|
||||
public:
|
||||
/* method invoked by wrapper 'call_JIT_Compiler' */
|
||||
void* compile(yamop*);
|
||||
};
|
||||
#else
|
||||
/* aid method to 'compile_all': analyzes module by individual analysis passes */
|
||||
void analyze_module(llvm::Module* &M);
|
||||
public:
|
||||
/* method invoked by wrapper 'call_JIT_Compiler' */
|
||||
void* compile(yamop*);
|
||||
};
|
||||
#else
|
||||
|
||||
struct JIT_Compiler{}; // Doing this, I can call class 'JIT_Compiler' from C code
|
||||
struct JIT_Compiler{}; // Doing this, I can call class 'JIT_Compiler' from C code
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
extern "C" void* call_JIT_Compiler(JIT_Compiler* jc, yamop* p);
|
||||
extern "C" void shutdown_llvm();
|
||||
#ifdef __cplusplus
|
||||
|
||||
extern "C" void* call_JIT_Compiler(JIT_Compiler* jc, yamop* p) { return jc->compile(p); }
|
||||
|
||||
extern "C" void shutdown_llvm() { llvm_shutdown(); }
|
||||
|
||||
#else
|
||||
|
||||
INLINE_ONLY inline EXTERN void* call_JIT_Compiler(struct JIT_Compiler* jc, yamop* p);
|
||||
|
||||
extern void* (*Yap_JitCall)(struct JIT_Compiler* jc, yamop* p);
|
||||
|
||||
|
||||
INLINE_ONLY inline EXTERN void* call_JIT_Compiler(struct JIT_Compiler* jc, yamop* p) { return Yap_JitCall (jc,p); }
|
||||
|
||||
INLINE_ONLY inline EXTERN void shutdown_llvm(void ) ;
|
||||
|
||||
EXTERN void (* Yap_llvmShutdown)(void ) ;
|
||||
|
||||
INLINE_ONLY inline EXTERN void shutdown_llvm(void ) { Yap_llvmShutdown (); }
|
||||
|
||||
#endif //#ifdef __cplusplus
|
||||
|
||||
#endif
|
||||
|
@ -1,45 +0,0 @@
|
||||
#include "Yap.h"
|
||||
#include "clause.h"
|
||||
#include "eval.h"
|
||||
#if HRAVE_ERRNO_H
|
||||
#include <errno.h>
|
||||
#else
|
||||
extern int errno;
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define UPPER_ENTRY(S) \
|
||||
tmp = (char*)malloc((strlen(S)+1)*sizeof(char)); \
|
||||
while (S[i]) { \
|
||||
if (S[i] != '-' && S[i] != '_' && S[i] != ' ') { \
|
||||
if ((S[i] >= '0' && S[i] <= '9') || (S[i] == '.')) \
|
||||
tmp[j] = S[i]; \
|
||||
else \
|
||||
tmp[j] = toupper(S[i]); \
|
||||
j++; \
|
||||
} \
|
||||
i++; \
|
||||
} \
|
||||
tmp[j] = 0; \
|
||||
strcpy(S, tmp); \
|
||||
free(tmp);
|
||||
|
||||
#if YAP_JIT
|
||||
void Yap_InitJitAnalysisPreds( void );
|
||||
void Yap_InitJitCodegenPreds( void );
|
||||
void Yap_InitJitConfigPreds( void );
|
||||
void Yap_InitJitTransformPreds( void );
|
||||
#if YAP_STAT_PREDS
|
||||
void Yap_InitJitStatisticPreds( void );
|
||||
#endif
|
||||
#endif /* YAP_JIT */
|
||||
#if YAP_DBG_PREDS
|
||||
void Yap_InitJitDebugPreds( void );
|
||||
#endif
|
||||
|
||||
Environment ExpEnv;
|
||||
#if YAP_JIT
|
||||
extern NativeContext *NativeArea;
|
||||
extern IntermediatecodeContext *IntermediatecodeArea;
|
||||
#endif
|
@ -2,12 +2,11 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/wait.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define FREE_ALLOCATED() \
|
||||
free(buffer); \
|
||||
free(p->u.jhc.jh->cmd); \
|
||||
free(p->y_u.J.jh->cmd); \
|
||||
free(outputfilename); \
|
||||
free(optoutputfilename); \
|
||||
free(cmd1); \
|
||||
@ -39,7 +38,8 @@ using namespace std;
|
||||
PInfo = PassRegistry::getPassRegistry()->getPassInfo(PASS->getPassID()); \
|
||||
Kind = PASS->getPassKind(); \
|
||||
ADD_PASS_ACCORDING_TO_KIND();
|
||||
#include "PassPrinters.hpp"
|
||||
|
||||
#include "PassPrinters.hh"
|
||||
|
||||
void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
{
|
||||
@ -48,9 +48,9 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
|
||||
const PassInfo *PInfo;
|
||||
PassKind Kind;
|
||||
|
||||
|
||||
Pass.add(TLI); // First, I add on 'Pass' the Target Info of Module
|
||||
Pass.add(new TargetData(M)); // Second, I must add Target Data on 'Pass'
|
||||
Pass.add(new DataLayoutPass(M)); // Second, I must add Target Data on 'Pass'
|
||||
for (int i = 0; i < ExpEnv.analysis_struc.n; i++) {
|
||||
/*
|
||||
* 'ExpEnv.analysis_struc.act_an' contains sorted analysis passes *
|
||||
@ -83,8 +83,9 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
case e_createLazyValueInfoPass:
|
||||
TREAT_CASE_FOR(createLazyValueInfoPass());
|
||||
break;
|
||||
//CHANGED FOR LLVM 3.5
|
||||
case e_createLoopDependenceAnalysisPass:
|
||||
TREAT_CASE_FOR(createLoopDependenceAnalysisPass());
|
||||
TREAT_CASE_FOR(createDependenceAnalysisPass());
|
||||
break;
|
||||
case e_createLibCallAliasAnalysisPass:
|
||||
TREAT_CASE_FOR(createLibCallAliasAnalysisPass(NULL));
|
||||
@ -101,24 +102,29 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
case e_createNoAAPass:
|
||||
TREAT_CASE_FOR(createNoAAPass());
|
||||
break;
|
||||
case e_createNoPathProfileInfoPass:
|
||||
TREAT_CASE_FOR(createNoPathProfileInfoPass());
|
||||
break;
|
||||
case e_createNoProfileInfoPass:
|
||||
TREAT_CASE_FOR(createNoProfileInfoPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createNoPathProfileInfoPass:
|
||||
// TREAT_CASE_FOR(createNoPathProfileInfoPass());
|
||||
// break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createNoProfileInfoPass:
|
||||
// TREAT_CASE_FOR(createNoProfileInfoPass());
|
||||
// break;
|
||||
case e_createObjCARCAliasAnalysisPass:
|
||||
TREAT_CASE_FOR(createObjCARCAliasAnalysisPass());
|
||||
break;
|
||||
case e_createProfileEstimatorPass:
|
||||
TREAT_CASE_FOR(createProfileEstimatorPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createProfileEstimatorPass:
|
||||
// TREAT_CASE_FOR(createProfileEstimatorPass());
|
||||
// break;
|
||||
//CHANGED FOR LLVM 3.5
|
||||
case e_createProfileLoaderPass:
|
||||
TREAT_CASE_FOR(createProfileLoaderPass());
|
||||
break;
|
||||
case e_createProfileVerifierPass:
|
||||
TREAT_CASE_FOR(createProfileVerifierPass());
|
||||
TREAT_CASE_FOR(createSampleProfileLoaderPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createProfileVerifierPass:
|
||||
// TREAT_CASE_FOR(createProfileVerifierPass());
|
||||
// break;
|
||||
case e_createRegionInfoPass:
|
||||
TREAT_CASE_FOR(createRegionInfoPass());
|
||||
break;
|
||||
@ -128,8 +134,9 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
case e_createTypeBasedAliasAnalysisPass:
|
||||
TREAT_CASE_FOR(createTypeBasedAliasAnalysisPass());
|
||||
break;
|
||||
//CHANGED FOR LLVM 3.5
|
||||
case e_createDbgInfoPrinterPass:
|
||||
TREAT_CASE_FOR(createDbgInfoPrinterPass());
|
||||
TREAT_CASE_FOR(createDebugInfoVerifierPass());
|
||||
break;
|
||||
case e_createCFGPrinterPass:
|
||||
TREAT_CASE_FOR(createCFGPrinterPass());
|
||||
@ -155,21 +162,23 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
|
||||
case e_createRegionOnlyPrinterPass:
|
||||
TREAT_CASE_FOR(createRegionOnlyPrinterPass());
|
||||
break;
|
||||
case e_createPathProfileLoaderPass:
|
||||
TREAT_CASE_FOR(createPathProfileLoaderPass());
|
||||
break;
|
||||
case e_createPathProfileVerifierPass:
|
||||
TREAT_CASE_FOR(createPathProfileVerifierPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createPathProfileLoaderPass:
|
||||
// TREAT_CASE_FOR(createPathProfileLoaderPass());
|
||||
// break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case e_createPathProfileVerifierPass:
|
||||
// TREAT_CASE_FOR(createPathProfileVerifierPass());
|
||||
// break;
|
||||
default:;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* if 'llvm::TimePassesIsEnabled' is 'true', llvm time passes are printed on 'shutdown_llvm()' (p_halt -- stdpreds.c) */
|
||||
llvm::TimePassesIsEnabled = ExpEnv.analysis_struc.time_pass_enabled;
|
||||
/* Use 'llvm::EnableStatistics()' so that llvm stats are printed on 'shutdown_llvm()' (p_halt -- stdpreds.c) */
|
||||
if (ExpEnv.analysis_struc.stats_enabled) llvm::EnableStatistics();
|
||||
|
||||
|
||||
/*
|
||||
* Here, I configure resulting analysis output -- default: stderr *
|
||||
* Use analysis_output_file/1 to change *
|
||||
@ -207,21 +216,22 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
/* Yes, I do, so... */
|
||||
|
||||
/* Initializes PassManager for Function */
|
||||
OwningPtr<FunctionPassManager> FPM;
|
||||
std::shared_ptr<FunctionPassManager> FPM;
|
||||
FPM.reset(new FunctionPassManager(M));
|
||||
FPM->add(new TargetData(M));
|
||||
FPM->add(new DataLayoutPass(M));
|
||||
PassManagerBuilder Builder; // aid to 'FPM' and 'MPM'
|
||||
|
||||
|
||||
/* Initializes PassManager for Function */
|
||||
PassManager MPM;
|
||||
TargetLibraryInfo *TLI = new TargetLibraryInfo(Triple(M->getTargetTriple()));
|
||||
MPM.add(TLI);
|
||||
MPM.add(new TargetData(M));
|
||||
|
||||
MPM.add(new DataLayoutPass(M));
|
||||
|
||||
/* Populates 'Builder' */
|
||||
Builder.OptLevel = ExpEnv.transform_struc.optlevel;
|
||||
Builder.DisableUnitAtATime = !ExpEnv.transform_struc.unit_at_time_enabled;
|
||||
Builder.DisableSimplifyLibCalls = !ExpEnv.transform_struc.simplify_libcalls_enabled;
|
||||
//NOT IN LLVM 3.5
|
||||
//Builder.DisableSimplifyLibCalls = !ExpEnv.transform_struc.simplify_libcalls_enabled;
|
||||
/* inline and unrool only be enabled if 'ExpEnv.transform_struc.optlevel' > 0 */
|
||||
if (ExpEnv.transform_struc.optlevel) Builder.Inliner =
|
||||
createFunctionInliningPass(ExpEnv.transform_struc.opt_args.inline_threshold);
|
||||
@ -233,7 +243,7 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
Builder.populateFunctionPassManager(*FPM);
|
||||
/* Populates 'MPM' from 'Builder' */
|
||||
Builder.populateModulePassManager(MPM);
|
||||
|
||||
|
||||
/*
|
||||
* Enabling link-time optimizations -- default is no *
|
||||
* Use 'link_time_opt/1', 'link_time_opt/3', 'enable_link_time_opt/0', or 'enable_link_time_opt/2' to change *
|
||||
@ -261,7 +271,7 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
PassManager Pass; // 'Pass' stores transform passes to be applied
|
||||
TargetLibraryInfo *TLI = new TargetLibraryInfo(Triple(M->getTargetTriple()));
|
||||
Pass.add(TLI); // First, I add on 'Pass' the Target Info of Module
|
||||
Pass.add(new TargetData(M)); // Second, I must add Target Data on 'Pass'
|
||||
Pass.add(new DataLayoutPass(M)); // Second, I must add Target Data on 'Pass'
|
||||
for (int i = 0; i < ExpEnv.transform_struc.n; i++) {
|
||||
/*
|
||||
* 'ExpEnv.transform_struc.act_tr' contains sorted transform passes *
|
||||
@ -283,9 +293,10 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
case t_createBlockExtractorPass:
|
||||
Pass.add(createBlockExtractorPass());
|
||||
break;
|
||||
case t_createBlockPlacementPass:
|
||||
Pass.add(createBlockPlacementPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case t_createBlockPlacementPass:
|
||||
// Pass.add(createBlockPlacementPass());
|
||||
// break;
|
||||
case t_createBreakCriticalEdgesPass:
|
||||
Pass.add(createBreakCriticalEdgesPass());
|
||||
break;
|
||||
@ -356,7 +367,7 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
Pass.add(createInstructionSimplifierPass());
|
||||
break;
|
||||
case t_createInternalizePass:
|
||||
Pass.add(createInternalizePass(true));
|
||||
Pass.add(createInternalizePass());
|
||||
break;
|
||||
case t_createIPConstantPropagationPass:
|
||||
Pass.add(createIPConstantPropagationPass());
|
||||
@ -448,9 +459,10 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
|
||||
case t_createSCCPPass:
|
||||
Pass.add(createSCCPPass());
|
||||
break;
|
||||
case t_createSimplifyLibCallsPass:
|
||||
Pass.add(createSimplifyLibCallsPass());
|
||||
break;
|
||||
//NOT IN LLVM 3.5
|
||||
//case t_createSimplifyLibCallsPass:
|
||||
// Pass.add(createSimplifyLibCallsPass());
|
||||
// break;
|
||||
case t_createSingleLoopExtractorPass:
|
||||
Pass.add(createSingleLoopExtractorPass());
|
||||
break;
|
||||
@ -557,26 +569,25 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
"-DYAP_JIT", "-D_NATIVE=1", "-I.", "-I./H", "-I./include", "-I./os", "-I./OPTYap", "-I./BEAM", "-I./MYDDAS", "-I./HPP", "-xc", "-c", "-", "-o", "-", "-emit-llvm", NULL
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
|
||||
std::string errStr;
|
||||
llvm::error_code e;
|
||||
OwningPtr<MemoryBuffer> bf;
|
||||
error_code e;
|
||||
|
||||
/* Pipe to communicate 'echo' with 'clang' */
|
||||
int pipe1[2];
|
||||
int pid_echo, pid_clang ;
|
||||
|
||||
|
||||
/* 'clang' out file */
|
||||
char* outputfilename = (char*)malloc(33*sizeof(char));
|
||||
sprintf(outputfilename, "%lx.bc", (CELL)p);
|
||||
int Output = open(outputfilename, O_CREAT | O_RDWR, 0644);
|
||||
|
||||
|
||||
/* Creating pipes */
|
||||
if (pipe(pipe1)<0) {
|
||||
perror(" ERROR!!\n ERROR") ;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
/* Calls echo. */
|
||||
pid_echo = fork() ;
|
||||
if (pid_echo < 0) {
|
||||
@ -586,12 +597,12 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
if (!pid_echo) {
|
||||
/* Setting echo's output to 1st pipe */
|
||||
dup2(pipe1[1], 1);
|
||||
|
||||
|
||||
/* Closing pipes */
|
||||
close(pipe1[0]);
|
||||
close(pipe1[1]);
|
||||
|
||||
execlp("echo", "echo", p->u.jhc.jh->tcc.cmd, NULL);
|
||||
|
||||
execlp("echo", "echo", p->y_u.J.jh->tcc.cmd, NULL);
|
||||
}
|
||||
else {
|
||||
/* Calls clang. */
|
||||
@ -606,11 +617,11 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
|
||||
/* Setting clang's output to Output */
|
||||
dup2(Output, 1) ;
|
||||
|
||||
|
||||
/* Closing pipes */
|
||||
close(pipe1[0]);
|
||||
close(pipe1[1]);
|
||||
|
||||
|
||||
execvp(*clang_args, clang_args);
|
||||
}
|
||||
}
|
||||
@ -624,14 +635,15 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
// 2 means two processes: 'echo' and 'clang'
|
||||
for (i = 0; i < 2; i++) wait(status);
|
||||
/***/
|
||||
|
||||
|
||||
/*
|
||||
* At this point, the compiled code (O0) is on 'Output' *
|
||||
* I need to read it to main memory *
|
||||
* for this, I'll use 'MemoryBuffer::getOpenFile' *
|
||||
*/
|
||||
lseek(Output, 0, SEEK_SET);
|
||||
e = MemoryBuffer::getOpenFile(Output, outputfilename, bf);
|
||||
ErrorOr<std::unique_ptr<MemoryBuffer>> em = MemoryBuffer::getOpenFile(Output, outputfilename, -1);
|
||||
e = em.getError();
|
||||
if (e) {
|
||||
errs() << "ERROR::Unable to MemoryBuffer from " << outputfilename << " -- " << e.message() << "\n";
|
||||
exit(1);
|
||||
@ -640,9 +652,9 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
/*
|
||||
* At this point, the compiled code (O0) is on main memory *
|
||||
* I need to read it to Module *
|
||||
* for this, I'll use 'ParseBitcodeFile' *
|
||||
* for this, I'll use 'parseBitcodeFile' *
|
||||
*/
|
||||
Module *Mod = ParseBitcodeFile(bf.get(), *Context);
|
||||
Module *Mod = *parseBitcodeFile(em->get(), *Context);
|
||||
|
||||
/*
|
||||
* verify module correctness *
|
||||
@ -669,41 +681,41 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
analyze_module(Mod);
|
||||
/* Optimize module -- transform predicates */
|
||||
optimize_module(Mod);
|
||||
|
||||
|
||||
/* Computing size of optimized module */
|
||||
{
|
||||
/* Open file 'tmp.bc' which will be filled by optimized Module */
|
||||
OwningPtr<tool_output_file> Out;
|
||||
std::shared_ptr<tool_output_file> Out;
|
||||
std::string ErrorInfo;
|
||||
Out.reset(new tool_output_file("tmp.bc", ErrorInfo, raw_fd_ostream::F_Binary));
|
||||
Out.reset(new tool_output_file("tmp.bc", ErrorInfo, llvm::sys::fs::F_None));
|
||||
if (!ErrorInfo.empty()) {
|
||||
errs() << ErrorInfo << '\n';
|
||||
exit(1);
|
||||
}
|
||||
/* 'createPrintModulePass(arg)' will print Module (now optimized) to on file represented by 'arg' */
|
||||
PassManager Pass;
|
||||
Pass.add(createPrintModulePass(&Out->os()));
|
||||
Pass.add(createPrintModulePass(Out->os()));
|
||||
Pass.run(*Mod);
|
||||
/* 'Out->keep()' will keep printed module to file and will close file */
|
||||
Out->keep();
|
||||
|
||||
|
||||
/* Open file 'tmp.bc' */
|
||||
int Outtmp = open("tmp.bc", O_CREAT | O_RDWR, 0644);
|
||||
#if YAP_STAT_PREDS
|
||||
/* for statistics... compute file size and store value on 'NativeArea->area.native_size_bytes' */
|
||||
NativeArea->area.native_size_bytes[p->u.jhc.jh->caa.naddress][NativeArea->area.nrecomp[p->u.jhc.jh->caa.naddress]-1] = lseek(Outtmp, 0, SEEK_END);
|
||||
NativeArea->area.native_size_bytes[p->y_u.jhc.jh->caa.naddress][NativeArea->area.nrecomp[p->y_u.jhc.jh->caa.naddress]-1] = lseek(Outtmp, 0, SEEK_END);
|
||||
#endif
|
||||
close(Outtmp);
|
||||
remove("tmp.bc");
|
||||
}
|
||||
/***/
|
||||
|
||||
|
||||
#if YAP_DBG_PREDS
|
||||
/* for debug... print module after optimizing it */
|
||||
if (ExpEnv.debug_struc.pprint_llva.print_llva_after)
|
||||
errs() << "Module after optimization::\n" << *Mod;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* verify module correctness *
|
||||
* predicates: *
|
||||
@ -719,10 +731,11 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
}
|
||||
}
|
||||
/***/
|
||||
|
||||
// MaterializeAllPermanently -- Make sure all GlobalValues in this Module are fully read
|
||||
if (Mod->MaterializeAllPermanently(&errStr)) {
|
||||
errs() <<"Error:: bitcode didn't read correctly. -- " << errStr << "\n";
|
||||
|
||||
// materializeAllPermanently -- Make sure all GlobalValues in this Module are fully read
|
||||
error_code materialize_error = Mod->materializeAllPermanently();
|
||||
if (materialize_error.value() != 0) {
|
||||
errs() <<"Error:: bitcode didn't read correctly. -- " << materialize_error.message() << "\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -789,12 +802,14 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
{
|
||||
/* codegen predicates 'enable_framepointer_elimination/0' or 'disable_framepointer_elimination/0' */
|
||||
Options.NoFramePointerElim = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
|
||||
Options.NoFramePointerElimNonLeaf = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
|
||||
//NOT IN LLVM 3.5
|
||||
//Options.NoFramePointerElimNonLeaf = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
|
||||
/***/
|
||||
// codegen predicates 'less_precise_fp_mad_option/0' or 'more_precise_fp_mad_option/0'
|
||||
Options.LessPreciseFPMADOption = (bool)ExpEnv.codegen_struc.struc_targetopt.lessprecisefpmadoption;
|
||||
// codegen predicates 'no_excess_fp_precision/0' or 'excess_fp_precision/0'
|
||||
Options.NoExcessFPPrecision = (bool)ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision;
|
||||
//NOT IN LLVM 3.5
|
||||
//Options.NoExcessFPPrecision = (bool)ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision;
|
||||
// codegen predicates 'unsafe_fp_math/0' or 'safe_fp_math/0'
|
||||
Options.UnsafeFPMath = (bool)ExpEnv.codegen_struc.struc_targetopt.unsafefpmath;
|
||||
// codegen predicates 'rounding_mode_dynamically_changed/0' or 'rounding_mode_not_changed/0'
|
||||
@ -803,7 +818,8 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
// codegen predicates 'no_use_soft_float/0' or 'use_soft_float/0'
|
||||
Options.UseSoftFloat = (bool)ExpEnv.codegen_struc.struc_targetopt.usesoftfloat;
|
||||
// codegen predicates 'enable_jit_exception_handling/0' or 'disable_jit_exception_handling/0'
|
||||
Options.JITExceptionHandling = (bool)ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling;
|
||||
//NOT IN LLVM 3.5
|
||||
//Options.JITExceptionHandling = (bool)ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling;
|
||||
// codegen predicates 'enable_jit_emit_debug_info/0' or 'disable_jit_emit_debug_info/0'
|
||||
Options.JITEmitDebugInfo = (bool)ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfo;
|
||||
// codegen predicates 'enable_jit_emit_debug_info_to_disk/0' or 'disable_jit_emit_debug_info_to_disk/0'
|
||||
@ -850,7 +866,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
*/
|
||||
close(Output);
|
||||
remove(outputfilename);
|
||||
free(p->u.jhc.jh->tcc.cmd);
|
||||
free(p->y_u.J.jh->tcc.cmd);
|
||||
free(outputfilename);
|
||||
return NULL;
|
||||
}
|
||||
@ -861,7 +877,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
|
||||
// global++; what is this?
|
||||
close(Output);
|
||||
remove(outputfilename);
|
||||
free(p->u.jhc.jh->tcc.cmd);
|
||||
free(p->y_u.J.jh->tcc.cmd);
|
||||
free(outputfilename);
|
||||
// 2. get native pointer from 'clause' (our function within Module) and return it
|
||||
return EE->getPointerToFunction(EntryFn);
|
||||
|
@ -101,7 +101,7 @@ p_disable_analysis_pass( USES_REGS1 )
|
||||
int i = 0, j = 0;
|
||||
char *tmp;
|
||||
// gets string from atom and stores it on 'str'
|
||||
char *str = (char*)malloc(YAP_AtomNameLength(AtomOfTerm(t))*sizeof(char)
|
||||
char *str = (char*)malloc(YAP_AtomNameLength(AtomOfTerm(t))*sizeof(char));
|
||||
strcpy(str, AtomName(AtomOfTerm(t)));
|
||||
// Makes upper characters of 'str' (for comparison)
|
||||
UPPER_ENTRY(str);
|
||||
@ -590,7 +590,7 @@ p_analysis_output_file( USES_REGS1 )
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
void
|
||||
void
|
||||
Yap_InitJitAnalysisPreds(void)
|
||||
{
|
||||
Yap_InitCPred("disable_analysis_pass", 1, p_disable_analysis_pass, SafePredFlag);
|
||||
|
@ -707,6 +707,7 @@ p_noonly_profiled_interpreter( USES_REGS1 )
|
||||
ExpEnv.config_struc.useonlypi = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
void
|
||||
@ -728,3 +729,4 @@ Yap_InitJitConfigPreds( void )
|
||||
Yap_InitCPred("only_profiled_interpreter", 0, p_only_profiled_interpreter, SafePredFlag);
|
||||
Yap_InitCPred("noonly_profiled_interpreter", 0, p_noonly_profiled_interpreter, SafePredFlag);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,9 @@
|
||||
* Last rev: 2013-10-18 *
|
||||
*************************************************************************/
|
||||
|
||||
#include "jit_predicates.hh"
|
||||
#include "jit_predicates.hpp"
|
||||
|
||||
#if YAP_DBG_PREDS
|
||||
|
||||
static Int p_no_print_instruction( USES_REGS1 );
|
||||
static Int p_no_print_basic_instruction( USES_REGS1 );
|
||||
@ -117,6 +119,7 @@ static Int p_no_exit_on_warning( USES_REGS1 );
|
||||
static Int p_enable_on_warning( USES_REGS1 );
|
||||
static Int p_no_exit_on_error( USES_REGS1 );
|
||||
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
|
||||
|
||||
@ -131,7 +134,7 @@ p_no_print_instruction( USES_REGS1 )
|
||||
if (IsAtomTerm(u)) {
|
||||
int i = 0, j = 0;
|
||||
char *tmp;
|
||||
char *str = (char*)malloc(YAP_AtomNameLength(AtomOfTerm(u))*sizeof(char));
|
||||
char *str = (char*)malloc((YAP_AtomNameLength(AtomOfTerm(u))+1)*sizeof(char));
|
||||
strcpy(str, AtomName(AtomOfTerm(u)));
|
||||
UPPER_ENTRY(str);
|
||||
char *strop = (char*)malloc(100*sizeof(char));
|
||||
@ -145,7 +148,7 @@ p_no_print_instruction( USES_REGS1 )
|
||||
ExpEnv.debug_struc.pyaam_##OP.msg_before = 0; \
|
||||
ExpEnv.debug_struc.pyaam_##OP.msg_after = 0; \
|
||||
}
|
||||
#include "YapAppliedOpcodes.h"
|
||||
#include "YapOpcodes.h"
|
||||
#undef OPCODE
|
||||
else {
|
||||
Yap_Error(OUT_OF_KNOWNRANGE_ERROR,u,"");
|
||||
@ -2371,9 +2374,12 @@ p_no_exit_on_error( USES_REGS1 )
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
Yap_InitJitDebugPreds( USES_REGS1 )
|
||||
{
|
||||
#if YAP_DBG_PREDS
|
||||
Yap_InitCPred("no_print_instruction", 1, p_no_print_instruction, SafePredFlag);
|
||||
Yap_InitCPred("no_print_basic_instruction", 1, p_no_print_basic_instruction, SafePredFlag);
|
||||
Yap_InitCPred("no_print_std_instruction", 1, p_no_print_std_instruction, SafePredFlag);
|
||||
@ -2473,4 +2479,6 @@ Yap_InitJitDebugPreds( USES_REGS1 )
|
||||
Yap_InitCPred("no_exit_on_warning", 0, p_no_exit_on_warning, SafePredFlag);
|
||||
Yap_InitCPred("enable_on_warning", 0, p_enable_on_warning, SafePredFlag);
|
||||
Yap_InitCPred("no_exit_on_error", 0, p_no_exit_on_error, SafePredFlag);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,10 @@
|
||||
* Last rev: 2013-10-18 *
|
||||
*************************************************************************/
|
||||
|
||||
#include "jit_predicates.hh"
|
||||
#include "jit_predicates.hpp"
|
||||
|
||||
#if YAP_STAT_PREDS
|
||||
|
||||
#include <papi.h>
|
||||
|
||||
static Int p_init_low_level_stats( USES_REGS1 );
|
||||
@ -555,6 +558,7 @@ p_statistics_jit( USES_REGS1 )
|
||||
fprintf(stderr, "------------------------------\n");
|
||||
}
|
||||
|
||||
#if YAP_STAT_PREDS
|
||||
// From this point until the end we do:
|
||||
// 1. We verify if PAPI was initialized (ExpEnv.stats_struc.papi_initialized). If yes, we do:
|
||||
// 2. We verify what event type was used. Based on this, we alloc memory for 'ExpEnv.stats_struc.papi_values'
|
||||
@ -823,6 +827,7 @@ p_statistics_jit( USES_REGS1 )
|
||||
}
|
||||
|
||||
fprintf(stderr, "------------------------------\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -830,9 +835,13 @@ p_statistics_jit( USES_REGS1 )
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
Yap_InitJitStatisticPreds(void)
|
||||
{
|
||||
#if YAP_STAT_PREDS
|
||||
Yap_InitCPred("init_low_level_stats", 1, p_init_low_level_stats, SafePredFlag);
|
||||
Yap_InitCPred("statistics_jit", 0, p_statistics_jit, SafePredFlag);
|
||||
#endif
|
||||
}
|
||||
|
@ -1942,6 +1942,11 @@ significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#define YAP_YAPLIB "${YAP_YAPLIB}"
|
||||
#endif
|
||||
|
||||
/* name of YAP JIT library */
|
||||
#ifndef YAP_YAPJITLIB
|
||||
#define YAP_YAPJITLIB "${YAP_YAPJITLIB}"
|
||||
#endif
|
||||
|
||||
/* HP-UX old socket stuff */
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#cmakedefine _XOPEN_SOURCE "${_XOPEN_SOURCE}"
|
||||
|
@ -287,10 +287,10 @@ typedef void (*YAP_halt_hook)(int exit_code, void *closure);
|
||||
|
||||
typedef YAP_Int YAP_opaque_tag_t;
|
||||
|
||||
typedef int (*YAP_Opaque_CallOnFail)(void *);
|
||||
typedef int (*YAP_Opaque_CallOnWrite)(void *, YAP_opaque_tag_t, void *, int);
|
||||
typedef YAP_Bool (*YAP_Opaque_CallOnFail)(void *);
|
||||
typedef YAP_Bool (*YAP_Opaque_CallOnWrite)(void *, YAP_opaque_tag_t, void *, int);
|
||||
typedef YAP_Int (*YAP_Opaque_CallOnGCMark)(YAP_opaque_tag_t, void *, YAP_Term *, YAP_Int);
|
||||
typedef int (*YAP_Opaque_CallOnGCRelocate)(YAP_opaque_tag_t, void *, YAP_Term *, YAP_Int);
|
||||
typedef YAP_Bool (*YAP_Opaque_CallOnGCRelocate)(YAP_opaque_tag_t, void *, YAP_Term *, YAP_Int);
|
||||
|
||||
typedef struct YAP_opaque_handler_struct {
|
||||
YAP_Opaque_CallOnFail fail_handler;
|
||||
|
@ -1577,6 +1577,10 @@ the future we plan to split this library into several smaller libraries
|
||||
#include <stdarg.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_STDBOOL_H
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
/*
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
#ifndef Bool
|
||||
#define Bool YAP_Bool
|
||||
#endif
|
||||
#endif11
|
||||
|
||||
#define Int long int
|
||||
|
||||
|
@ -59,6 +59,7 @@ set (LIBRARY_PL
|
||||
)
|
||||
|
||||
add_subdirectory(clp)
|
||||
add_subdirectory(dialect)
|
||||
add_subdirectory(lammpi)
|
||||
add_subdirectory(matlab)
|
||||
add_subdirectory(matrix)
|
||||
|
12
library/dialect/CMakeLists.txt
Normal file
12
library/dialect/CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
set (DIALECTS_PL
|
||||
bprolog.yap
|
||||
commons.yap
|
||||
hprolog.yap
|
||||
swi.yap
|
||||
)
|
||||
|
||||
add_subdirectory(swi)
|
||||
|
||||
install(FILES ${DIALECTS_PL}
|
||||
DESTINATION ${libpl}/dialect
|
||||
)
|
@ -1,8 +1,15 @@
|
||||
macro_optional_find_package (MPI OFF)
|
||||
macro_log_feature (MPI_C_FOUND "mpi"
|
||||
"MPI Distributed Parallel Programming"
|
||||
"http://gmplib.org")
|
||||
if (MPI_C_FOUND)
|
||||
|
||||
set (MPI_SOURCES
|
||||
hash.c prologterms2c.c yap_mpi.c)
|
||||
|
||||
macro_optional_find_package(MPI ON)
|
||||
|
||||
macro_log_feature (MPI_C_FOUND "Mpi"
|
||||
"Use Mpi System"
|
||||
"http://www.mpi.org" FALSE)
|
||||
if (MPI_C_FOUND)
|
||||
# === Variables ===
|
||||
#
|
||||
# This module will set the following variables per language in your
|
||||
# project, where <lang> is one of C, CXX, or Fortran:
|
||||
#
|
||||
@ -27,5 +34,52 @@ if (MPI_C_FOUND)
|
||||
# before the executable to run.
|
||||
# MPIEXEC_POSTFLAGS Flags to pass to MPIEXEC after other flags
|
||||
#
|
||||
endif (MPI_C_FOUND)
|
||||
# === Usage ===
|
||||
#
|
||||
# To use this module, simply call FindMPI from a CMakeLists.txt file, or
|
||||
# run find_package(MPI), then run CMake. If you are happy with the
|
||||
# auto- detected configuration for your language, then you're done. If
|
||||
# not, you have two options:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# 1. Set MPI_<lang>_COMPILER to the MPI wrapper (mpicc, etc.) of your
|
||||
# choice and reconfigure. FindMPI will attempt to determine all the
|
||||
# necessary variables using THAT compiler's compile and link flags.
|
||||
# 2. If this fails, or if your MPI implementation does not come with
|
||||
# a compiler wrapper, then set both MPI_<lang>_LIBRARIES and
|
||||
# MPI_<lang>_INCLUDE_PATH. You may also set any other variables
|
||||
# listed above, but these two are required. This will circumvent
|
||||
# autodetection entirely.
|
||||
#
|
||||
# When configuration is successful, MPI_<lang>_COMPILER will be set to
|
||||
# the compiler wrapper for <lang>, if it was found. MPI_<lang>_FOUND
|
||||
# and other variables above will be set if any MPI implementation was
|
||||
# found for <lang>, regardless of whether a compiler was found.
|
||||
#
|
||||
# When using MPIEXEC to execute MPI applications, you should typically
|
||||
# use all of the MPIEXEC flags as follows:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} PROCS
|
||||
# ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
|
||||
#
|
||||
# where PROCS is the number of processors on which to execute the
|
||||
# program, EXECUTABLE is the MPI program, and ARGS are the arguments to
|
||||
# pass to the MPI program.
|
||||
#
|
||||
|
||||
add_library (yap_mpi SHARED ${MPI_SOURCES})
|
||||
|
||||
target_link_libraries(yap_mpi libYap ${MPI_LIBRARIES})
|
||||
|
||||
set_target_properties (yap_mpi PROPERTIES PREFIX "")
|
||||
|
||||
include_directories (${MPI_INCLUDE_DIRS})
|
||||
|
||||
install(TARGETS yap_mpi
|
||||
LIBRARY DESTINATION ${dlls}
|
||||
)
|
||||
|
||||
endif (MPI_C_FOUND)
|
||||
|
@ -197,7 +197,7 @@ new_float_matrix(int ndims, int dims[], double data[])
|
||||
return blob;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
scan_dims(int ndims, YAP_Term tl, int dims[MAX_DIMS])
|
||||
{
|
||||
int i;
|
||||
@ -229,7 +229,7 @@ scan_dims(int ndims, YAP_Term tl, int dims[MAX_DIMS])
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
scan_dims_args(int ndims, YAP_Term tl, int dims[MAX_DIMS])
|
||||
{
|
||||
int i;
|
||||
@ -253,7 +253,7 @@ scan_dims_args(int ndims, YAP_Term tl, int dims[MAX_DIMS])
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
cp_int_matrix(YAP_Term tl,YAP_Term matrix)
|
||||
{
|
||||
int *mat = (int *)YAP_BlobOfTerm(matrix);
|
||||
@ -283,7 +283,7 @@ cp_int_matrix(YAP_Term tl,YAP_Term matrix)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
cp_float_matrix(YAP_Term tl,YAP_Term matrix)
|
||||
{
|
||||
int *mat = (int *)YAP_BlobOfTerm(matrix);
|
||||
@ -317,7 +317,7 @@ cp_float_matrix(YAP_Term tl,YAP_Term matrix)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
set_int_matrix(YAP_Term matrix,long int set)
|
||||
{
|
||||
int *mat = (int *)YAP_BlobOfTerm(matrix);
|
||||
@ -330,7 +330,7 @@ set_int_matrix(YAP_Term matrix,long int set)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
set_float_matrix(YAP_Term matrix,double set)
|
||||
{
|
||||
int *mat = (int *)YAP_BlobOfTerm(matrix);
|
||||
@ -343,7 +343,7 @@ set_float_matrix(YAP_Term matrix,double set)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
new_ints_matrix(void)
|
||||
{
|
||||
int ndims = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -360,7 +360,7 @@ new_ints_matrix(void)
|
||||
return YAP_Unify(YAP_ARG4, out);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
new_ints_matrix_set(void)
|
||||
{
|
||||
int ndims = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -380,7 +380,7 @@ new_ints_matrix_set(void)
|
||||
return YAP_Unify(YAP_ARG4, out);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
new_floats_matrix(void)
|
||||
{
|
||||
int ndims = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -396,7 +396,7 @@ new_floats_matrix(void)
|
||||
return YAP_Unify(YAP_ARG4, out);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
new_floats_matrix_set(void)
|
||||
{
|
||||
int ndims = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -636,7 +636,7 @@ matrix_dec2(int *mat, int *indx)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_set(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -674,7 +674,7 @@ matrix_set(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_set2(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -712,7 +712,7 @@ matrix_set2(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_set_all(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -746,7 +746,7 @@ matrix_set_all(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_add(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -784,7 +784,7 @@ matrix_add(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_access(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -803,7 +803,7 @@ do_matrix_access(void)
|
||||
return YAP_Unify(tf, YAP_ARG3);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_access2(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -822,7 +822,7 @@ do_matrix_access2(void)
|
||||
return YAP_Unify(tf, YAP_ARG2);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_inc(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -840,7 +840,7 @@ do_matrix_inc(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_dec(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -858,7 +858,7 @@ do_matrix_dec(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_inc2(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -876,7 +876,7 @@ do_matrix_inc2(void)
|
||||
YAP_Unify(matrix_inc2(mat, dims), YAP_ARG3);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_matrix_dec2(void)
|
||||
{
|
||||
int dims[MAX_DIMS], *mat;
|
||||
@ -894,7 +894,7 @@ do_matrix_dec2(void)
|
||||
YAP_Unify(matrix_dec2(mat, dims), YAP_ARG3);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_to_list(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -912,7 +912,7 @@ matrix_to_list(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_set_base(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -927,7 +927,7 @@ matrix_set_base(void)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_dims(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -942,7 +942,7 @@ matrix_dims(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_dims3(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -958,7 +958,7 @@ matrix_dims3(void)
|
||||
return YAP_Unify(YAP_ARG2, tf) && YAP_Unify(YAP_ARG3, tof);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_size(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -971,7 +971,7 @@ matrix_size(void)
|
||||
return YAP_Unify(YAP_ARG2, YAP_MkIntTerm(mat[MAT_SIZE]));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_ndims(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -984,7 +984,7 @@ matrix_ndims(void)
|
||||
return YAP_Unify(YAP_ARG2, YAP_MkIntTerm(mat[MAT_NDIMS]));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_type(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1003,7 +1003,7 @@ matrix_type(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_arg_to_offset(void)
|
||||
{
|
||||
int indx[MAX_DIMS], *mat;
|
||||
@ -1023,7 +1023,7 @@ matrix_arg_to_offset(void)
|
||||
return YAP_Unify(YAP_ARG3, YAP_MkIntTerm(off));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_offset_to_arg(void)
|
||||
{
|
||||
int indx[MAX_DIMS], *mat;
|
||||
@ -1101,7 +1101,7 @@ scan_min_float(int sz, double *data)
|
||||
return off;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_max(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1125,7 +1125,7 @@ matrix_max(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_maxarg(void)
|
||||
{
|
||||
int indx[MAX_DIMS], *mat;
|
||||
@ -1149,7 +1149,7 @@ matrix_maxarg(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_min(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1173,7 +1173,7 @@ matrix_min(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_log_all(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1196,7 +1196,7 @@ matrix_log_all(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_log_all2(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1253,7 +1253,7 @@ matrix_log_all2(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_exp_all(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1276,7 +1276,7 @@ matrix_exp_all(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_exp2_all(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1304,7 +1304,7 @@ matrix_exp2_all(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_exp_all2(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1361,7 +1361,7 @@ matrix_exp_all2(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_minarg(void)
|
||||
{
|
||||
int indx[MAX_DIMS], *mat;
|
||||
@ -1385,7 +1385,7 @@ matrix_minarg(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_sum(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1448,7 +1448,7 @@ add_double_lines(int total,int nlines,double *mat0,double *matf)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_agg_lines(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1531,7 +1531,7 @@ add_double_cols(int total,int nlines,double *mat0,double *matf)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_agg_cols(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -1620,7 +1620,7 @@ div_float_by_lines(int total,int nlines,double *mat1,double *mat2,double *ndata)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_op_to_lines(void)
|
||||
{
|
||||
int *mat1, *mat2;
|
||||
@ -1906,7 +1906,7 @@ matrix_double_zdiv_data(double *nmat, int siz, double mat1[], double mat2[])
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_op(void)
|
||||
{
|
||||
int *mat1, *mat2;
|
||||
@ -2127,7 +2127,7 @@ add_double_by_cols(int total,int nlines,double *mat1,double *mat2,double *ndata)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_op_to_cols(void)
|
||||
{
|
||||
int *mat1, *mat2;
|
||||
@ -2208,7 +2208,7 @@ matrix_op_to_cols(void)
|
||||
return YAP_Unify(YAP_ARG4,tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_op_to_all(void)
|
||||
{
|
||||
int *mat;
|
||||
@ -2387,7 +2387,7 @@ matrix_op_to_all(void)
|
||||
/* given a matrix M and a set of dims, build a new reordered matrix to follow
|
||||
the new order
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_transpose(void)
|
||||
{
|
||||
int ndims, i, *dims, *dimsn;
|
||||
@ -2469,7 +2469,7 @@ matrix_transpose(void)
|
||||
/* given a matrix M and a set of dims, fold one of the dimensions of the
|
||||
matrix on one of the elements
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_select(void)
|
||||
{
|
||||
int ndims, i, j, newdims, prdim, leftarg, *dims, indx[MAX_DIMS];
|
||||
@ -2570,7 +2570,7 @@ matrix_select(void)
|
||||
|
||||
/* given a matrix M and a set of N-1 dims, get the first dimension
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_column(void)
|
||||
{
|
||||
int size, i, ndims, newdims[1];
|
||||
@ -2639,7 +2639,7 @@ matrix_column(void)
|
||||
|
||||
/* given a matrix M and a set of dims, sum out one of the dimensions
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_sum_out(void)
|
||||
{
|
||||
int ndims, i, j, newdims, prdim;
|
||||
@ -2728,7 +2728,7 @@ matrix_sum_out(void)
|
||||
|
||||
/* given a matrix M and a set of dims, sum out one of the dimensions
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_sum_out_several(void)
|
||||
{
|
||||
int ndims, i, *dims, newdims;
|
||||
@ -2821,7 +2821,7 @@ matrix_sum_out_several(void)
|
||||
|
||||
/* given a matrix M and a set of dims, sum out one of the dimensions
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_sum_out_logs(void)
|
||||
{
|
||||
int ndims, i, j, *dims, newdims, prdim;
|
||||
@ -2910,7 +2910,7 @@ matrix_sum_out_logs(void)
|
||||
|
||||
/* given a matrix M and a set of dims, sum out one of the dimensions
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_sum_out_logs_several(void)
|
||||
{
|
||||
int ndims, i, *dims, newdims;
|
||||
@ -3008,7 +3008,7 @@ matrix_sum_out_logs_several(void)
|
||||
/* given a matrix M and a set of dims, build a matrix to follow
|
||||
the new order
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_expand(void)
|
||||
{
|
||||
int ndims, i, *dims, newdims=0, olddims = 0;
|
||||
@ -3110,7 +3110,7 @@ matrix_expand(void)
|
||||
/* given a matrix M and a set of dims, build contract a matrix to follow
|
||||
the new order
|
||||
*/
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_set_all_that_disagree(void)
|
||||
{
|
||||
int ndims, i, *dims;
|
||||
@ -3189,7 +3189,7 @@ matrix_set_all_that_disagree(void)
|
||||
return YAP_Unify(YAP_ARG5, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
matrix_m(void)
|
||||
{
|
||||
int ndims, i, size;
|
||||
@ -3231,7 +3231,7 @@ matrix_m(void)
|
||||
return YAP_Unify(YAP_ARG2, tm);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
is_matrix(void)
|
||||
{
|
||||
YAP_Term t = YAP_ARG1;
|
||||
|
@ -26,7 +26,7 @@ void init_random( void );
|
||||
|
||||
static short a1 = 27314, b1 = 9213, c1 = 17773;
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_random(void)
|
||||
{
|
||||
double fli;
|
||||
@ -42,7 +42,7 @@ p_random(void)
|
||||
return(YAP_Unify(YAP_ARG1, YAP_MkFloatTerm(fli-(int)(fli))));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_setrand(void)
|
||||
{
|
||||
a1 = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -51,7 +51,7 @@ p_setrand(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_getrand(void)
|
||||
{
|
||||
return(YAP_Unify(YAP_ARG1,YAP_MkIntTerm(a1)) &&
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
void init_regexp( void );
|
||||
|
||||
static int check_regexp(void)
|
||||
static YAP_Bool check_regexp(void)
|
||||
{
|
||||
unsigned int buflen = (unsigned int)YAP_IntOfTerm(YAP_ARG2)+1;
|
||||
unsigned int sbuflen = (unsigned int)YAP_IntOfTerm(YAP_ARG4)+1;
|
||||
@ -81,7 +81,7 @@ static int check_regexp(void)
|
||||
return(out == 0);
|
||||
}
|
||||
|
||||
static int regexp(void)
|
||||
static YAP_Bool regexp(void)
|
||||
{
|
||||
unsigned int buflen = (unsigned int)YAP_IntOfTerm(YAP_ARG2)+1;
|
||||
unsigned int sbuflen = (unsigned int)YAP_IntOfTerm(YAP_ARG4)+1;
|
||||
|
@ -44,7 +44,7 @@ unsigned long int tree_mem=0;
|
||||
/*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_new(void) {
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
YAP_Term t2=YAP_Deref(YAP_ARG2);
|
||||
@ -75,7 +75,7 @@ p_rl_new(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_copy(void) {
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1); // src
|
||||
YAP_Term t2=YAP_Deref(YAP_ARG2); // dest
|
||||
@ -113,7 +113,7 @@ p_rl_copy(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_size(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1),t_size;
|
||||
@ -139,7 +139,7 @@ p_rl_size(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_mem_usage(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -153,7 +153,7 @@ p_rl_mem_usage(void) {
|
||||
/*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_free(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -180,7 +180,7 @@ p_rl_free(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_set_in(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -214,7 +214,7 @@ p_rl_set_in(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_in(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -243,7 +243,7 @@ p_rl_in(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_set_out(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -274,7 +274,7 @@ p_rl_set_out(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_freeze(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -304,7 +304,7 @@ p_rl_freeze(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_set_all_in(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -336,7 +336,7 @@ p_rl_set_all_in(void) {
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_print(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -372,7 +372,7 @@ yap_back_data_type *back_data;
|
||||
*
|
||||
*/
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_b_in2(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
@ -393,7 +393,7 @@ p_rl_b_in2(void) {
|
||||
return (FALSE);
|
||||
}
|
||||
static
|
||||
int
|
||||
YAP_Bool
|
||||
p_rl_b_in1(void) {
|
||||
|
||||
YAP_Term t1=YAP_Deref(YAP_ARG1);
|
||||
|
@ -162,7 +162,7 @@ WinError(void)
|
||||
#endif
|
||||
|
||||
/* Return time in a structure */
|
||||
static int
|
||||
static YAP_Bool
|
||||
sysmktime(void)
|
||||
{
|
||||
|
||||
@ -223,7 +223,7 @@ sysmktime(void)
|
||||
}
|
||||
|
||||
/* Return time in a structure */
|
||||
static int
|
||||
static YAP_Bool
|
||||
datime(void)
|
||||
{
|
||||
YAP_Term tf, out[6];
|
||||
@ -268,7 +268,7 @@ datime(void)
|
||||
#define BUF_SIZE 1024
|
||||
|
||||
/* Return a list of files for a directory */
|
||||
static int
|
||||
static YAP_Bool
|
||||
list_directory(void)
|
||||
{
|
||||
YAP_Term tf = YAP_MkAtomTerm(YAP_LookupAtom("[]"));
|
||||
@ -339,7 +339,7 @@ list_directory(void)
|
||||
return YAP_Unify(YAP_ARG2, tf);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_unlink(void)
|
||||
{
|
||||
char *fd = (char *)YAP_AtomName(YAP_AtomOfTerm(YAP_ARG1));
|
||||
@ -355,7 +355,7 @@ p_unlink(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_mkdir(void)
|
||||
{
|
||||
char *fd = (char *)YAP_AtomName(YAP_AtomOfTerm(YAP_ARG1));
|
||||
@ -370,7 +370,7 @@ p_mkdir(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_rmdir(void)
|
||||
{
|
||||
char *fd = (char *)YAP_AtomName(YAP_AtomOfTerm(YAP_ARG1));
|
||||
@ -385,7 +385,7 @@ p_rmdir(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
rename_file(void)
|
||||
{
|
||||
char *s1 = (char *)YAP_AtomName(YAP_AtomOfTerm(YAP_ARG1));
|
||||
@ -399,13 +399,13 @@ rename_file(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
dir_separator(void)
|
||||
{
|
||||
return(YAP_Unify(YAP_ARG1,YAP_MkAtomTerm(YAP_LookupAtom("/"))));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
file_property(void)
|
||||
{
|
||||
const char *fd;
|
||||
@ -486,7 +486,7 @@ file_property(void)
|
||||
|
||||
/* temporary files */
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_mktemp(void)
|
||||
{
|
||||
#if HAVE_MKSTEMP || HAVE_MKTEMP || defined(__MINGW32__) || _MSC_VER
|
||||
@ -523,7 +523,7 @@ p_mktemp(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_tmpnam(void)
|
||||
{
|
||||
#if HAVE_MKSTEMP
|
||||
@ -547,7 +547,7 @@ p_tmpnam(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_tmpdir(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -579,7 +579,7 @@ p_tmpdir(void)
|
||||
}
|
||||
|
||||
/* return YAP's environment */
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_environ(void)
|
||||
{
|
||||
#if HAVE_ENVIRON && 0
|
||||
@ -646,7 +646,7 @@ close_handle(YAP_Term ti, HANDLE h)
|
||||
#endif
|
||||
|
||||
/* execute a command as a detached process */
|
||||
static int
|
||||
static YAP_Bool
|
||||
execute_command(void)
|
||||
{
|
||||
YAP_Term ti = YAP_ARG2, to = YAP_ARG3, te = YAP_ARG4;
|
||||
@ -802,7 +802,7 @@ execute_command(void)
|
||||
}
|
||||
|
||||
/* execute a command as a detached process */
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_system(void)
|
||||
{
|
||||
char *command = (char *)YAP_AtomName(YAP_AtomOfTerm(YAP_ARG1));
|
||||
@ -821,7 +821,7 @@ do_system(void)
|
||||
|
||||
|
||||
/* execute a command as a detached process */
|
||||
static int
|
||||
static YAP_Bool
|
||||
do_shell(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -881,7 +881,7 @@ do_shell(void)
|
||||
}
|
||||
|
||||
/* execute a command as a detached process */
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_wait(void)
|
||||
{
|
||||
long int pid = YAP_IntOfTerm(YAP_ARG1);
|
||||
@ -915,7 +915,7 @@ p_wait(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_sleep(void)
|
||||
{
|
||||
YAP_Term ts = YAP_ARG1;
|
||||
@ -986,7 +986,7 @@ p_sleep(void)
|
||||
|
||||
/* host info */
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
host_name(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -1007,7 +1007,7 @@ host_name(void)
|
||||
return(YAP_Unify(YAP_ARG1, YAP_MkAtomTerm(YAP_LookupAtom(name))));
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
host_id(void)
|
||||
{
|
||||
#if HAVE_GETHOSTID
|
||||
@ -1017,7 +1017,7 @@ host_id(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
pid(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -1027,7 +1027,7 @@ pid(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
win(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -1037,7 +1037,7 @@ win(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
p_kill(void)
|
||||
{
|
||||
#if defined(__MINGW32__) || _MSC_VER
|
||||
@ -1061,7 +1061,7 @@ p_kill(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
error_message(void)
|
||||
{
|
||||
#if HAVE_STRERROR
|
||||
|
@ -24,35 +24,35 @@
|
||||
/* -------------------------- */
|
||||
|
||||
void init_itries(void);
|
||||
static int p_itrie_open(void);
|
||||
static int p_itrie_close(void);
|
||||
static int p_itrie_close_all(void);
|
||||
static int p_itrie_mode(void);
|
||||
static int p_itrie_timestamp(void);
|
||||
static int p_itrie_put_entry(void);
|
||||
static int p_itrie_update_entry(void);
|
||||
static int p_itrie_check_entry(void);
|
||||
static int p_itrie_get_entry(void);
|
||||
static int p_itrie_get_data(void);
|
||||
static int p_itrie_traverse_init(void);
|
||||
static int p_itrie_traverse_cont(void);
|
||||
static int p_itrie_remove_entry(void);
|
||||
static int p_itrie_remove_subtree(void);
|
||||
static int p_itrie_add(void);
|
||||
static int p_itrie_subtract(void);
|
||||
static int p_itrie_join(void);
|
||||
static int p_itrie_intersect(void);
|
||||
static int p_itrie_count_join(void);
|
||||
static int p_itrie_count_intersect(void);
|
||||
static int p_itrie_save(void);
|
||||
static int p_itrie_save_as_trie(void);
|
||||
static int p_itrie_load(void);
|
||||
static int p_itrie_save2stream(void);
|
||||
static int p_itrie_loadFromStream(void);
|
||||
static int p_itrie_stats(void);
|
||||
static int p_itrie_max_stats(void);
|
||||
static int p_itrie_usage(void);
|
||||
static int p_itrie_print(void);
|
||||
static YAP_Bool p_itrie_open(void);
|
||||
static YAP_Bool p_itrie_close(void);
|
||||
static YAP_Bool p_itrie_close_all(void);
|
||||
static YAP_Bool p_itrie_mode(void);
|
||||
static YAP_Bool p_itrie_timestamp(void);
|
||||
static YAP_Bool p_itrie_put_entry(void);
|
||||
static YAP_Bool p_itrie_update_entry(void);
|
||||
static YAP_Bool p_itrie_check_entry(void);
|
||||
static YAP_Bool p_itrie_get_entry(void);
|
||||
static YAP_Bool p_itrie_get_data(void);
|
||||
static YAP_Bool p_itrie_traverse_init(void);
|
||||
static YAP_Bool p_itrie_traverse_cont(void);
|
||||
static YAP_Bool p_itrie_remove_entry(void);
|
||||
static YAP_Bool p_itrie_remove_subtree(void);
|
||||
static YAP_Bool p_itrie_add(void);
|
||||
static YAP_Bool p_itrie_subtract(void);
|
||||
static YAP_Bool p_itrie_join(void);
|
||||
static YAP_Bool p_itrie_intersect(void);
|
||||
static YAP_Bool p_itrie_count_join(void);
|
||||
static YAP_Bool p_itrie_count_intersect(void);
|
||||
static YAP_Bool p_itrie_save(void);
|
||||
static YAP_Bool p_itrie_save_as_trie(void);
|
||||
static YAP_Bool p_itrie_load(void);
|
||||
static YAP_Bool p_itrie_save2stream(void);
|
||||
static YAP_Bool p_itrie_loadFromStream(void);
|
||||
static YAP_Bool p_itrie_stats(void);
|
||||
static YAP_Bool p_itrie_max_stats(void);
|
||||
static YAP_Bool p_itrie_usage(void);
|
||||
static YAP_Bool p_itrie_print(void);
|
||||
|
||||
|
||||
|
||||
@ -102,7 +102,7 @@ void init_itries(void) {
|
||||
|
||||
/* itrie_open(-Itrie) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
static int p_itrie_open(void) {
|
||||
static YAP_Bool p_itrie_open(void) {
|
||||
TrEntry itrie;
|
||||
|
||||
/* check arg */
|
||||
@ -118,7 +118,7 @@ static int p_itrie_open(void) {
|
||||
|
||||
/* itrie_close(+Itrie) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
static int p_itrie_close(void) {
|
||||
static YAP_Bool p_itrie_close(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_itrie))
|
||||
return FALSE;
|
||||
@ -131,7 +131,7 @@ static int p_itrie_close(void) {
|
||||
|
||||
|
||||
/* itrie_close_all() */
|
||||
static int p_itrie_close_all(void) {
|
||||
static YAP_Bool p_itrie_close_all(void) {
|
||||
itrie_close_all();
|
||||
return TRUE;
|
||||
}
|
||||
@ -140,7 +140,7 @@ static int p_itrie_close_all(void) {
|
||||
/* itrie_mode(+Itrie,?Mode) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_mode YAP_ARG2
|
||||
static int p_itrie_mode(void) {
|
||||
static YAP_Bool p_itrie_mode(void) {
|
||||
YAP_Term mode_term;
|
||||
const char *mode_str;
|
||||
YAP_Int mode;
|
||||
@ -191,7 +191,7 @@ static int p_itrie_mode(void) {
|
||||
/* itrie_timestamp(+Itrie,?Time) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_time YAP_ARG2
|
||||
static int p_itrie_timestamp(void) {
|
||||
static YAP_Bool p_itrie_timestamp(void) {
|
||||
YAP_Int time;
|
||||
|
||||
/* check arg */
|
||||
@ -220,7 +220,7 @@ static int p_itrie_timestamp(void) {
|
||||
/* itrie_put_entry(+Itrie,+Entry) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_entry YAP_ARG2
|
||||
static int p_itrie_put_entry(void) {
|
||||
static YAP_Bool p_itrie_put_entry(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_itrie))
|
||||
return FALSE;
|
||||
@ -236,7 +236,7 @@ static int p_itrie_put_entry(void) {
|
||||
/* itrie_update_entry(+Itrie,+Entry) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_entry YAP_ARG2
|
||||
static int p_itrie_update_entry(void) {
|
||||
static YAP_Bool p_itrie_update_entry(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_itrie))
|
||||
return FALSE;
|
||||
@ -253,7 +253,7 @@ static int p_itrie_update_entry(void) {
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_entry YAP_ARG2
|
||||
#define arg_ref YAP_ARG3
|
||||
static int p_itrie_check_entry(void) {
|
||||
static YAP_Bool p_itrie_check_entry(void) {
|
||||
TrData data;
|
||||
|
||||
/* check arg */
|
||||
@ -273,7 +273,7 @@ static int p_itrie_check_entry(void) {
|
||||
/* itrie_get_entry(+Ref,-Entry) */
|
||||
#define arg_ref YAP_ARG1
|
||||
#define arg_entry YAP_ARG2
|
||||
static int p_itrie_get_entry(void) {
|
||||
static YAP_Bool p_itrie_get_entry(void) {
|
||||
YAP_Term entry;
|
||||
|
||||
/* check arg */
|
||||
@ -291,7 +291,7 @@ static int p_itrie_get_entry(void) {
|
||||
/* itrie_get_data(+Ref,-Data) */
|
||||
#define arg_ref YAP_ARG1
|
||||
#define arg_data YAP_ARG2
|
||||
static int p_itrie_get_data(void) {
|
||||
static YAP_Bool p_itrie_get_data(void) {
|
||||
YAP_Term list;
|
||||
YAP_Term item;
|
||||
YAP_Functor f;
|
||||
@ -325,7 +325,7 @@ static int p_itrie_get_data(void) {
|
||||
/* itrie_traverse(+Itrie,-Ref) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_ref YAP_ARG2
|
||||
static int p_itrie_traverse_init(void) {
|
||||
static YAP_Bool p_itrie_traverse_init(void) {
|
||||
TrData data;
|
||||
|
||||
/* check arg */
|
||||
@ -346,7 +346,7 @@ static int p_itrie_traverse_init(void) {
|
||||
/* itrie_traverse(+Itrie,-Ref) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_ref YAP_ARG2
|
||||
static int p_itrie_traverse_cont(void) {
|
||||
static YAP_Bool p_itrie_traverse_cont(void) {
|
||||
TrData data;
|
||||
|
||||
/* traverse itrie */
|
||||
@ -362,7 +362,7 @@ static int p_itrie_traverse_cont(void) {
|
||||
|
||||
/* itrie_remove_entry(+Ref) */
|
||||
#define arg_ref YAP_ARG1
|
||||
static int p_itrie_remove_entry(void) {
|
||||
static YAP_Bool p_itrie_remove_entry(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_ref))
|
||||
return FALSE;
|
||||
@ -376,7 +376,7 @@ static int p_itrie_remove_entry(void) {
|
||||
|
||||
/* itrie_remove_subtree(+Ref) */
|
||||
#define arg_ref YAP_ARG1
|
||||
static int p_itrie_remove_subtree(void) {
|
||||
static YAP_Bool p_itrie_remove_subtree(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_ref))
|
||||
return FALSE;
|
||||
@ -391,7 +391,7 @@ static int p_itrie_remove_subtree(void) {
|
||||
/* itrie_add(+ItrieDest,+ItrieSource) */
|
||||
#define arg_itrie_dest YAP_ARG1
|
||||
#define arg_itrie_source YAP_ARG2
|
||||
static int p_itrie_add(void) {
|
||||
static YAP_Bool p_itrie_add(void) {
|
||||
/* check args */
|
||||
if (!YAP_IsIntTerm(arg_itrie_dest))
|
||||
return FALSE;
|
||||
@ -409,7 +409,7 @@ static int p_itrie_add(void) {
|
||||
/* itrie_subtract(+ItrieDest,+ItrieSource) */
|
||||
#define arg_itrie_dest YAP_ARG1
|
||||
#define arg_itrie_source YAP_ARG2
|
||||
static int p_itrie_subtract(void) {
|
||||
static YAP_Bool p_itrie_subtract(void) {
|
||||
/* check args */
|
||||
if (!YAP_IsIntTerm(arg_itrie_dest))
|
||||
return FALSE;
|
||||
@ -427,7 +427,7 @@ static int p_itrie_subtract(void) {
|
||||
/* itrie_join(+ItrieDest,+ItrieSource) */
|
||||
#define arg_itrie_dest YAP_ARG1
|
||||
#define arg_itrie_source YAP_ARG2
|
||||
static int p_itrie_join(void) {
|
||||
static YAP_Bool p_itrie_join(void) {
|
||||
/* check args */
|
||||
if (!YAP_IsIntTerm(arg_itrie_dest))
|
||||
return FALSE;
|
||||
@ -445,7 +445,7 @@ static int p_itrie_join(void) {
|
||||
/* itrie_intersect(+ItrieDest,+ItrieSource) */
|
||||
#define arg_itrie_dest YAP_ARG1
|
||||
#define arg_itrie_source YAP_ARG2
|
||||
static int p_itrie_intersect(void) {
|
||||
static YAP_Bool p_itrie_intersect(void) {
|
||||
/* check args */
|
||||
if (!YAP_IsIntTerm(arg_itrie_dest))
|
||||
return FALSE;
|
||||
@ -464,7 +464,7 @@ static int p_itrie_intersect(void) {
|
||||
#define arg_itrie1 YAP_ARG1
|
||||
#define arg_itrie2 YAP_ARG2
|
||||
#define arg_entries YAP_ARG3
|
||||
static int p_itrie_count_join(void) {
|
||||
static YAP_Bool p_itrie_count_join(void) {
|
||||
YAP_Int entries;
|
||||
|
||||
/* check args */
|
||||
@ -486,7 +486,7 @@ static int p_itrie_count_join(void) {
|
||||
#define arg_itrie1 YAP_ARG1
|
||||
#define arg_itrie2 YAP_ARG2
|
||||
#define arg_entries YAP_ARG3
|
||||
static int p_itrie_count_intersect(void) {
|
||||
static YAP_Bool p_itrie_count_intersect(void) {
|
||||
YAP_Int entries;
|
||||
|
||||
/* check args */
|
||||
@ -507,7 +507,7 @@ static int p_itrie_count_intersect(void) {
|
||||
/* itrie_save(+Itrie,+FileName) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_file YAP_ARG2
|
||||
static int p_itrie_save(void) {
|
||||
static YAP_Bool p_itrie_save(void) {
|
||||
const char *file_str;
|
||||
FILE *file;
|
||||
|
||||
@ -535,7 +535,7 @@ static int p_itrie_save(void) {
|
||||
/* itrie_save_as_trie(+Itrie,+FileName) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_file YAP_ARG2
|
||||
static int p_itrie_save_as_trie(void) {
|
||||
static YAP_Bool p_itrie_save_as_trie(void) {
|
||||
const char *file_str;
|
||||
FILE *file;
|
||||
|
||||
@ -563,7 +563,7 @@ static int p_itrie_save_as_trie(void) {
|
||||
/* itrie_load(-Itrie,+FileName) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_file YAP_ARG2
|
||||
static int p_itrie_load(void) {
|
||||
static YAP_Bool p_itrie_load(void) {
|
||||
TrEntry itrie;
|
||||
const char *file_str;
|
||||
FILE *file;
|
||||
@ -593,7 +593,7 @@ static int p_itrie_load(void) {
|
||||
/* itrie_save2stream(+Itrie,+Stream) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_stream YAP_ARG2
|
||||
static int p_itrie_save2stream(void) {
|
||||
static YAP_Bool p_itrie_save2stream(void) {
|
||||
FILE *file;
|
||||
|
||||
/* check args */
|
||||
@ -613,7 +613,7 @@ static int p_itrie_save2stream(void) {
|
||||
/* itrie_loadFromStream(-Itrie,+Stream) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
#define arg_stream YAP_ARG2
|
||||
static int p_itrie_loadFromStream(void) {
|
||||
static YAP_Bool p_itrie_loadFromStream(void) {
|
||||
TrEntry itrie;
|
||||
FILE *file;
|
||||
|
||||
@ -637,7 +637,7 @@ static int p_itrie_loadFromStream(void) {
|
||||
#define arg_tries YAP_ARG2
|
||||
#define arg_entries YAP_ARG3
|
||||
#define arg_nodes YAP_ARG4
|
||||
static int p_itrie_stats(void) {
|
||||
static YAP_Bool p_itrie_stats(void) {
|
||||
YAP_Int memory, tries, entries, nodes;
|
||||
|
||||
/* get stats */
|
||||
@ -663,7 +663,7 @@ static int p_itrie_stats(void) {
|
||||
#define arg_tries YAP_ARG2
|
||||
#define arg_entries YAP_ARG3
|
||||
#define arg_nodes YAP_ARG4
|
||||
static int p_itrie_max_stats(void) {
|
||||
static YAP_Bool p_itrie_max_stats(void) {
|
||||
YAP_Int memory, tries, entries, nodes;
|
||||
|
||||
/* get stats */
|
||||
@ -689,7 +689,7 @@ static int p_itrie_max_stats(void) {
|
||||
#define arg_entries YAP_ARG2
|
||||
#define arg_nodes YAP_ARG3
|
||||
#define arg_virtualnodes YAP_ARG4
|
||||
static int p_itrie_usage(void) {
|
||||
static YAP_Bool p_itrie_usage(void) {
|
||||
YAP_Int entries, nodes, virtualnodes;
|
||||
|
||||
/* check arg */
|
||||
@ -714,7 +714,7 @@ static int p_itrie_usage(void) {
|
||||
|
||||
/* itrie_print(+Itrie) */
|
||||
#define arg_itrie YAP_ARG1
|
||||
static int p_itrie_print(void) {
|
||||
static YAP_Bool p_itrie_print(void) {
|
||||
/* check arg */
|
||||
if (!YAP_IsIntTerm(arg_itrie))
|
||||
return FALSE;
|
||||
|
@ -25,6 +25,7 @@ char** PL_Argv =NULL
|
||||
|
||||
// halt hooks
|
||||
struct halt_hook* HaltHooks =NULL
|
||||
fptr_t JIT_finalizer =NULL
|
||||
|
||||
// stack overflow expansion/gc control
|
||||
int AllowLocalExpansion =TRUE
|
||||
|
@ -48,5 +48,7 @@ if (CUDA_FOUND)
|
||||
# CUDA_nvcuvid_LIBRARY -- CUDA Video Decoder library.
|
||||
# Only available for CUDA version 3.2+.
|
||||
# Windows only.
|
||||
|
||||
|
||||
endif (CUDA_FOUND)
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -613,7 +613,7 @@ class CCDescriptor(object):
|
||||
self.api = api
|
||||
|
||||
def generate_impl(self):
|
||||
print "static int gecode_constraint_%s(void)" % self.api
|
||||
print "static YAP_Bool gecode_constraint_%s(void)" % self.api
|
||||
print "{"
|
||||
i = 1
|
||||
args = []
|
||||
|
@ -68,13 +68,13 @@ extern "C"
|
||||
static YAP_opaque_tag_t gecode_space_tag;
|
||||
static YAP_opaque_handler_t gecode_space_handler;
|
||||
|
||||
static int gecode_space_fail_handler(void* p)
|
||||
static YAP_Bool gecode_space_fail_handler(void* p)
|
||||
{
|
||||
delete *(GenericSpace**)p;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_space_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -93,7 +93,7 @@ extern "C"
|
||||
return term;
|
||||
}
|
||||
|
||||
static int gecode_new_space(void)
|
||||
static YAP_Bool gecode_new_space(void)
|
||||
{
|
||||
YAP_Term term = gecode_term_from_space(new GenericSpace);
|
||||
return YAP_Unify(YAP_ARG1, term);
|
||||
@ -468,7 +468,7 @@ extern "C"
|
||||
|
||||
static RestartMode gecode_RestartMode_from_term(YAP_Term t);
|
||||
|
||||
static int gecode_new_engine(void)
|
||||
static YAP_Bool gecode_new_engine(void)
|
||||
{
|
||||
YAP_Term arg1 = YAP_ARG1;
|
||||
YAP_Term arg2 = YAP_ARG2;
|
||||
@ -557,13 +557,13 @@ extern "C"
|
||||
return * (GenericEngine**) YAP_OpaqueObjectFromTerm(t);
|
||||
}
|
||||
|
||||
static int gecode_engine_fail_handler(void* p)
|
||||
static YAP_Bool gecode_engine_fail_handler(void* p)
|
||||
{
|
||||
delete *(GenericEngine**)p;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_engine_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -572,7 +572,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_engine_search(void)
|
||||
static YAP_Bool gecode_engine_search(void)
|
||||
{
|
||||
GenericEngine* engine = gecode_engine_from_term(YAP_ARG1);
|
||||
GenericSpace* space = engine->next();
|
||||
@ -585,7 +585,7 @@ extern "C"
|
||||
}
|
||||
|
||||
#ifdef DISJUNCTOR
|
||||
static int gecode_new_disjunctor(void)
|
||||
static YAP_Bool gecode_new_disjunctor(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -595,7 +595,7 @@ extern "C"
|
||||
return YAP_Unify(result, term);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_disjunctor_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -604,7 +604,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_new_clause(void)
|
||||
static YAP_Bool gecode_new_clause(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
YapDisjunctor& disj = gecode_YapDisjunctor_from_term(YAP_ARG2);
|
||||
@ -614,7 +614,7 @@ extern "C"
|
||||
return YAP_Unify(result, term);
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_clause_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -628,7 +628,7 @@ extern "C"
|
||||
static FloatVar gecode_FloatVar_from_term(GenericSpace*,YAP_Term);
|
||||
static SetVar gecode_SetVar_from_term(GenericSpace*,YAP_Term);
|
||||
|
||||
static int gecode_clause_intvar_forward(void)
|
||||
static YAP_Bool gecode_clause_intvar_forward(void)
|
||||
{
|
||||
Clause& clause = gecode_Clause_from_term(YAP_ARG1);
|
||||
GenericSpace* outer = clause.generic_parent();
|
||||
@ -639,7 +639,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_clause_boolvar_forward(void)
|
||||
static YAP_Bool gecode_clause_boolvar_forward(void)
|
||||
{
|
||||
Clause& clause = gecode_Clause_from_term(YAP_ARG1);
|
||||
GenericSpace* outer = clause.generic_parent();
|
||||
@ -650,7 +650,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_clause_setvar_forward(void)
|
||||
static YAP_Bool gecode_clause_setvar_forward(void)
|
||||
{
|
||||
Clause& clause = gecode_Clause_from_term(YAP_ARG1);
|
||||
GenericSpace* outer = clause.generic_parent();
|
||||
@ -662,7 +662,7 @@ extern "C"
|
||||
}
|
||||
#endif
|
||||
|
||||
static int gecode_new_intvar_from_bounds(void)
|
||||
static YAP_Bool gecode_new_intvar_from_bounds(void)
|
||||
{
|
||||
YAP_Term ivar = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -673,7 +673,7 @@ extern "C"
|
||||
return YAP_Unify(ivar, y_i);
|
||||
}
|
||||
|
||||
static int gecode_new_floatvar_from_bounds(void)
|
||||
static YAP_Bool gecode_new_floatvar_from_bounds(void)
|
||||
{
|
||||
YAP_Term ivar = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -713,7 +713,7 @@ extern "C"
|
||||
return IntSet(SPECARRAYDEREF(r), n);
|
||||
}
|
||||
|
||||
static int gecode_new_intvar_from_intset(void)
|
||||
static YAP_Bool gecode_new_intvar_from_intset(void)
|
||||
{
|
||||
YAP_Term ivar = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -723,7 +723,7 @@ extern "C"
|
||||
return YAP_Unify(ivar, YAP_MkIntTerm(i));
|
||||
}
|
||||
|
||||
static int gecode_new_boolvar(void)
|
||||
static YAP_Bool gecode_new_boolvar(void)
|
||||
{
|
||||
YAP_Term bvar = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -731,7 +731,7 @@ extern "C"
|
||||
return YAP_Unify(bvar, YAP_MkIntTerm(i));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_1(void)
|
||||
static YAP_Bool gecode_new_setvar_1(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -745,7 +745,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_2(void)
|
||||
static YAP_Bool gecode_new_setvar_2(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -758,7 +758,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_3(void)
|
||||
static YAP_Bool gecode_new_setvar_3(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -770,7 +770,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_4(void)
|
||||
static YAP_Bool gecode_new_setvar_4(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -783,7 +783,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_5(void)
|
||||
static YAP_Bool gecode_new_setvar_5(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -795,7 +795,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_6(void)
|
||||
static YAP_Bool gecode_new_setvar_6(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -806,7 +806,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_7(void)
|
||||
static YAP_Bool gecode_new_setvar_7(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -819,7 +819,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_8(void)
|
||||
static YAP_Bool gecode_new_setvar_8(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -831,7 +831,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_9(void)
|
||||
static YAP_Bool gecode_new_setvar_9(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -842,7 +842,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_10(void)
|
||||
static YAP_Bool gecode_new_setvar_10(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -854,7 +854,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_11(void)
|
||||
static YAP_Bool gecode_new_setvar_11(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -865,7 +865,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_new_setvar_12(void)
|
||||
static YAP_Bool gecode_new_setvar_12(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -875,7 +875,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(idx));
|
||||
}
|
||||
|
||||
static int gecode_space_minimize(void)
|
||||
static YAP_Bool gecode_space_minimize(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
int i = YAP_IntOfTerm(YAP_ARG2);
|
||||
@ -883,7 +883,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_space_maximize(void)
|
||||
static YAP_Bool gecode_space_maximize(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
int i = YAP_IntOfTerm(YAP_ARG2);
|
||||
@ -891,7 +891,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_space_minimize_ratio(void)
|
||||
static YAP_Bool gecode_space_minimize_ratio(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
int i = YAP_IntOfTerm(YAP_ARG2);
|
||||
@ -900,7 +900,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_space_maximize_ratio(void)
|
||||
static YAP_Bool gecode_space_maximize_ratio(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
int i = YAP_IntOfTerm(YAP_ARG2);
|
||||
@ -1078,7 +1078,7 @@ extern "C"
|
||||
cerr << "this should never happen" << endl; exit(1);
|
||||
}
|
||||
|
||||
static int gecode_space_use_keep_index(void)
|
||||
static YAP_Bool gecode_space_use_keep_index(void)
|
||||
{
|
||||
YAP_Term arg1 = YAP_ARG1;
|
||||
YAP_Term arg2 = YAP_ARG2;
|
||||
@ -1087,7 +1087,7 @@ extern "C"
|
||||
?gecode_TRUE:gecode_FALSE));
|
||||
}
|
||||
|
||||
static int gecode_intvar_keep(void)
|
||||
static YAP_Bool gecode_intvar_keep(void)
|
||||
{
|
||||
YAP_Term arg1 = YAP_ARG1;
|
||||
YAP_Term arg2 = YAP_ARG2;
|
||||
@ -1098,7 +1098,7 @@ extern "C"
|
||||
return YAP_Unify(arg3,YAP_MkIntTerm(kidx));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_keep(void)
|
||||
static YAP_Bool gecode_boolvar_keep(void)
|
||||
{
|
||||
YAP_Term arg1 = YAP_ARG1;
|
||||
YAP_Term arg2 = YAP_ARG2;
|
||||
@ -1109,7 +1109,7 @@ extern "C"
|
||||
return YAP_Unify(arg3,YAP_MkIntTerm(kidx));
|
||||
}
|
||||
|
||||
static int gecode_setvar_keep(void)
|
||||
static YAP_Bool gecode_setvar_keep(void)
|
||||
{
|
||||
YAP_Term arg1 = YAP_ARG1;
|
||||
YAP_Term arg2 = YAP_ARG2;
|
||||
@ -1121,14 +1121,14 @@ extern "C"
|
||||
}
|
||||
|
||||
// INFO ON INTVARS
|
||||
static int gecode_intvar_assigned(void)
|
||||
static YAP_Bool gecode_intvar_assigned(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
IntVar x = gecode_IntVar_from_term(space, YAP_ARG2);
|
||||
return (x.assigned()) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static int gecode_intvar_min(void)
|
||||
static YAP_Bool gecode_intvar_min(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1136,7 +1136,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.min()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_max(void)
|
||||
static YAP_Bool gecode_intvar_max(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1144,7 +1144,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.max()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_med(void)
|
||||
static YAP_Bool gecode_intvar_med(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1152,7 +1152,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.med()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_val(void)
|
||||
static YAP_Bool gecode_intvar_val(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1160,7 +1160,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.val()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_size(void)
|
||||
static YAP_Bool gecode_intvar_size(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1168,7 +1168,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.size()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_width(void)
|
||||
static YAP_Bool gecode_intvar_width(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1176,7 +1176,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.width()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_regret_min(void)
|
||||
static YAP_Bool gecode_intvar_regret_min(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1184,7 +1184,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.regret_min()));
|
||||
}
|
||||
|
||||
static int gecode_intvar_regret_max(void)
|
||||
static YAP_Bool gecode_intvar_regret_max(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1194,7 +1194,7 @@ extern "C"
|
||||
|
||||
static YAP_Functor gecode_COMMA2;
|
||||
|
||||
static int gecode_intvar_ranges(void)
|
||||
static YAP_Bool gecode_intvar_ranges(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1217,7 +1217,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_intvar_values(void)
|
||||
static YAP_Bool gecode_intvar_values(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1235,14 +1235,14 @@ extern "C"
|
||||
}
|
||||
|
||||
// INFO ON BOOLVARS
|
||||
static int gecode_boolvar_assigned(void)
|
||||
static YAP_Bool gecode_boolvar_assigned(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
BoolVar x = gecode_BoolVar_from_term(space, YAP_ARG2);
|
||||
return (x.assigned()) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static int gecode_boolvar_min(void)
|
||||
static YAP_Bool gecode_boolvar_min(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1250,7 +1250,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.min()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_max(void)
|
||||
static YAP_Bool gecode_boolvar_max(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1258,7 +1258,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.max()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_med(void)
|
||||
static YAP_Bool gecode_boolvar_med(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1266,7 +1266,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.med()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_val(void)
|
||||
static YAP_Bool gecode_boolvar_val(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1274,7 +1274,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.val()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_size(void)
|
||||
static YAP_Bool gecode_boolvar_size(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1282,7 +1282,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.size()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_width(void)
|
||||
static YAP_Bool gecode_boolvar_width(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1290,7 +1290,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.width()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_regret_min(void)
|
||||
static YAP_Bool gecode_boolvar_regret_min(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1298,7 +1298,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.regret_min()));
|
||||
}
|
||||
|
||||
static int gecode_boolvar_regret_max(void)
|
||||
static YAP_Bool gecode_boolvar_regret_max(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1307,14 +1307,14 @@ extern "C"
|
||||
}
|
||||
|
||||
// INFO ON SETVARS
|
||||
static int gecode_setvar_assigned(void)
|
||||
static YAP_Bool gecode_setvar_assigned(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
SetVar x = gecode_SetVar_from_term(space, YAP_ARG2);
|
||||
return (x.assigned()) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static int gecode_setvar_glbSize(void)
|
||||
static YAP_Bool gecode_setvar_glbSize(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1322,7 +1322,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.glbSize()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_lubSize(void)
|
||||
static YAP_Bool gecode_setvar_lubSize(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1330,7 +1330,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.lubSize()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_unknownSize(void)
|
||||
static YAP_Bool gecode_setvar_unknownSize(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1338,7 +1338,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.unknownSize()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_cardMin(void)
|
||||
static YAP_Bool gecode_setvar_cardMin(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1346,7 +1346,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.cardMin()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_cardMax(void)
|
||||
static YAP_Bool gecode_setvar_cardMax(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1354,7 +1354,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.cardMax()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_lubMin(void)
|
||||
static YAP_Bool gecode_setvar_lubMin(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1362,7 +1362,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.lubMin()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_lubMax(void)
|
||||
static YAP_Bool gecode_setvar_lubMax(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1370,7 +1370,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.lubMax()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_glbMin(void)
|
||||
static YAP_Bool gecode_setvar_glbMin(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1378,7 +1378,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.glbMin()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_glbMax(void)
|
||||
static YAP_Bool gecode_setvar_glbMax(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1386,7 +1386,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkIntTerm(x.glbMax()));
|
||||
}
|
||||
|
||||
static int gecode_setvar_glb_ranges(void)
|
||||
static YAP_Bool gecode_setvar_glb_ranges(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1409,7 +1409,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_setvar_lub_ranges(void)
|
||||
static YAP_Bool gecode_setvar_lub_ranges(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1432,7 +1432,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_setvar_unknown_ranges(void)
|
||||
static YAP_Bool gecode_setvar_unknown_ranges(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1455,7 +1455,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_setvar_glb_values(void)
|
||||
static YAP_Bool gecode_setvar_glb_values(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1469,7 +1469,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_setvar_lub_values(void)
|
||||
static YAP_Bool gecode_setvar_lub_values(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1483,7 +1483,7 @@ extern "C"
|
||||
return YAP_Unify(result,lst);
|
||||
}
|
||||
|
||||
static int gecode_setvar_unknown_values(void)
|
||||
static YAP_Bool gecode_setvar_unknown_values(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1498,14 +1498,14 @@ extern "C"
|
||||
}
|
||||
|
||||
// INFO ON FLOATVARS
|
||||
static int gecode_floatvar_assigned(void)
|
||||
static YAP_Bool gecode_floatvar_assigned(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
FloatVar x = gecode_FloatVar_from_term(space, YAP_ARG2);
|
||||
return (x.assigned()) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static int gecode_floatvar_min(void)
|
||||
static YAP_Bool gecode_floatvar_min(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1513,7 +1513,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkFloatTerm(x.min()));
|
||||
}
|
||||
|
||||
static int gecode_floatvar_max(void)
|
||||
static YAP_Bool gecode_floatvar_max(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1521,7 +1521,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkFloatTerm(x.max()));
|
||||
}
|
||||
|
||||
static int gecode_floatvar_med(void)
|
||||
static YAP_Bool gecode_floatvar_med(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1529,7 +1529,7 @@ extern "C"
|
||||
return YAP_Unify(result, YAP_MkFloatTerm(x.med()));
|
||||
}
|
||||
|
||||
static int gecode_floatvar_size(void)
|
||||
static YAP_Bool gecode_floatvar_size(void)
|
||||
{
|
||||
YAP_Term result = YAP_ARG1;
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG2);
|
||||
@ -1551,7 +1551,7 @@ extern "C"
|
||||
static YAP_opaque_tag_t gecode_reify_tag;
|
||||
static YAP_opaque_handler_t gecode_reify_handler;
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_reify_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -1570,7 +1570,7 @@ extern "C"
|
||||
return term;
|
||||
}
|
||||
|
||||
static int gecode_new_reify(void)
|
||||
static YAP_Bool gecode_new_reify(void)
|
||||
{
|
||||
GenericSpace* space = gecode_Space_from_term(YAP_ARG1);
|
||||
BoolVar b = gecode_BoolVar_from_term(space, YAP_ARG2);
|
||||
@ -1584,12 +1584,12 @@ extern "C"
|
||||
static YAP_opaque_tag_t gecode_tupleset_tag;
|
||||
static YAP_opaque_handler_t gecode_tupleset_handler;
|
||||
|
||||
static int gecode_tupleset_fail_handler(void* p)
|
||||
static YAP_Bool gecode_tupleset_fail_handler(void* p)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_tupleset_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -1598,7 +1598,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_new_tupleset(void)
|
||||
static YAP_Bool gecode_new_tupleset(void)
|
||||
{
|
||||
YAP_Term term =
|
||||
YAP_NewOpaqueObject(gecode_tupleset_tag, sizeof(TupleSet));
|
||||
@ -1633,12 +1633,12 @@ extern "C"
|
||||
static YAP_opaque_tag_t gecode_dfa_tag;
|
||||
static YAP_opaque_handler_t gecode_dfa_handler;
|
||||
|
||||
static int gecode_dfa_fail_handler(void* p)
|
||||
static YAP_Bool gecode_dfa_fail_handler(void* p)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
static YAP_Bool
|
||||
gecode_dfa_write_handler
|
||||
(void *stream_, YAP_opaque_tag_t type, void *p, int flags)
|
||||
{
|
||||
@ -1647,7 +1647,7 @@ extern "C"
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int gecode_new_dfa(void)
|
||||
static YAP_Bool gecode_new_dfa(void)
|
||||
{
|
||||
YAP_Term term =
|
||||
YAP_NewOpaqueObject(gecode_dfa_tag, sizeof(DFA));
|
||||
|
@ -16,7 +16,7 @@ set( MYDDAS_PROLOG
|
||||
pl/myddas_top_level.ypp
|
||||
pl/myddas_errors.ypp
|
||||
pl/myddas_prolog2sql.ypp
|
||||
pl/myddas_util_predicates.ypp
|
||||
pl/myddas_util_predicates.ypp
|
||||
pl/myddas_prolog2sql_optimizer.ypp )
|
||||
|
||||
function(cpp_compile filename)
|
||||
@ -38,31 +38,46 @@ source_group(generated FILES ${GENERATED_SOURCES})
|
||||
|
||||
macro_optional_find_package(ODBC ON)
|
||||
macro_optional_find_package(MySQL ON)
|
||||
macro_optional_find_package(Sqlite3 ON)
|
||||
|
||||
if (ODBC_FOUND OR MYSQL_FOUND)
|
||||
if (ODBC_FOUND OR MYSQL_FOUND or SQLITE3_FOUND)
|
||||
add_library (myddas SHARED ${MYDDAS_SOURCES})
|
||||
target_link_libraries(myddas libYap)
|
||||
target_link_libraries(myddas libYap)
|
||||
if (ODBC_FOUND)
|
||||
# ODBC_INCLUDE_DIRECTORIES, where to find sql.h
|
||||
# ODBC_LIBRARIES, the libraries to link against to use ODBC
|
||||
# ODBC_FOUND. If false, you cannot build anything that requires MySQL.
|
||||
macro_log_feature (ODBC_FOUND "ODBC"
|
||||
"Use ODBC Data-Base Interface "
|
||||
# ODBC_INCLUDE_DIRECTORIES, where to find sql.h
|
||||
# ODBC_LIBRARIES, the libraries to link against to use ODBC
|
||||
# ODBC_FOUND. If false, you cannot build anything that requires MySQL.
|
||||
macro_log_feature (ODBC_FOUND "ODBC"
|
||||
"Use ODBC Data-Base Interface "
|
||||
"http://www.unixodbc.org" FALSE)
|
||||
add_definitions (-DMYDDAS_ODBC=1)
|
||||
target_link_libraries(myddas ${ODBC_LIBRARIES})
|
||||
include_directories (${ODBC_INCLUDE_DIRECTORIES})
|
||||
add_definitions (-DMYDDAS_ODBC=1)
|
||||
target_link_libraries(myddas ${ODBC_LIBRARIES})
|
||||
include_directories (${ODBC_INCLUDE_DIRECTORIES})
|
||||
endif (ODBC_FOUND)
|
||||
|
||||
if (SQLITE3_FOUND)
|
||||
# SQLITE3_INCLUDE_DIR - Where to find Sqlite 3 header files (directory)
|
||||
# SQLITE3_LIBRARIES - Sqlite 3 libraries
|
||||
# SQLITE3_LIBRARY_RELEASE - Where the release library is
|
||||
# SQLITE3_LIBRARY_DEBUG - Where the debug library is
|
||||
# SQLITE3_FOUND - Set to TRUE if we found everything (library, includes and executable)
|
||||
macro_log_feature (SQLITE3_FOUND "SQLite3"
|
||||
"SQL Light Data-Base "
|
||||
"http://www.sqlite3.org" FALSE)
|
||||
add_definitions (-DMYDDAS_SQLITE3=1)
|
||||
target_link_libraries(myddas ${SQLITE3_LIBRARIES})
|
||||
include_directories (${SQLITE3_INCLUDE_DIR})
|
||||
endif (SQLITE3_FOUND)
|
||||
|
||||
if (MYSQL_FOUND)
|
||||
# MYSQL_INCLUDE_DIR - where to find mysql.h, etc.
|
||||
# MYSQL_LIBRARIES - List of libraries when using MySQL.
|
||||
# MYSQL_FOUND - True if MySQL found.
|
||||
macro_log_feature (MYSQL_FOUND "MySQL"
|
||||
"Use MYSQL Data-Base Interface "
|
||||
macro_log_feature (MYSQL_FOUND "MySQL"
|
||||
"Use MYSQL Data-Base Interface "
|
||||
"http://www.mysql.org" FALSE)
|
||||
add_definitions (-DMYDDAS_MYSQL=1)
|
||||
target_link_libraries(myddas ${MYSQL_LIBRARIES})
|
||||
target_link_libraries(myddas ${MYSQL_LIBRARIES})
|
||||
include_directories (${MYSQL_INCLUDE_DIR})
|
||||
endif (MYSQL_FOUND)
|
||||
|
||||
@ -78,4 +93,3 @@ cmake_dependent_option (WITH_MYDDAS_top_level
|
||||
"enable the MYDDAS top-level support to MySQL" OFF
|
||||
'WITH_MYDDAS AND MYSQL_FOUND' OFF)
|
||||
#TODO:
|
||||
|
||||
|
Reference in New Issue
Block a user