merge droid

This commit is contained in:
Vitor Santos Costa 2018-06-15 13:55:31 +01:00
parent a4dd2efbe7
commit f0343fc62c
7 changed files with 67 additions and 66 deletions

112
C/stack.c
View File

@ -1391,12 +1391,12 @@ void Yap_dump_code_area_for_profiler(void) {
while (pp != NULL) { while (pp != NULL) {
/* if (pp->ArityOfPE) { /* if (pp->ArityOfPE) {
fprintf(stderr,"\%s/%d %p\n", fprintf(stderr,"%%s/%d %p\n",
RepAtom(NameOfFunctor(pp->FunctorOfPred))->StrOfAE, RepAtom(NameOfFunctor(pp->FunctorOfPred))->StrOfAE,
pp->ArityOfPE, pp->ArityOfPE,
pp); pp);
} else { } else {
fprintf(stderr,"\%s %p\n", fprintf(stderr,"%%s %p\n",
RepAtom((Atom)(pp->FunctorOfPred))->StrOfAE, RepAtom((Atom)(pp->FunctorOfPred))->StrOfAE,
pp); pp);
}*/ }*/
@ -1796,83 +1796,83 @@ void Yap_dump_stack(void) {
/* check if handled */ /* check if handled */
if (handled_exception(PASS_REGS1)) if (handled_exception(PASS_REGS1))
return; return;
#if DEBU #if DEBUG
fprintf(stderr, "\% YAP regs: P=%p, CP=%p, ASP=%p, H=%p, TR=%p, HeapTop=%p\n", fprintf(stderr, "%% YAP regs: P=%p, CP=%p, ASP=%p, H=%p, TR=%p, HeapTop=%p\n",
P, CP, ASP, HR, TR, HeapTop); P, CP, ASP, HR, TR, HeapTop);
#endif #endif
fprintf(stderr, "\% \n% =====================================\n\%\n"); fprintf(stderr, "%% \n%% =====================================\n%%\n");
fprintf(stderr, "\% \n% YAP Status:\n"); fprintf(stderr, "%% \n%% YAP Status:\n");
fprintf(stderr, "\% \n\% -------------------------------------\n\%\n"); fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
yap_error_descriptor_t errno = LOCAL_Error_TYPE; yap_error_number errnb = LOCAL_Error_TYPE;
yap_error_class_number classno = Yap_errorClass(errno); yap_error_class_number classno = Yap_errorClass(errnb);
fprintf(stderr, "\% Error STATUS: %s/%s\n\n", Yap_errorName(errno), fprintf(stderr, "%% Error STATUS: %s/%s\n\n", Yap_errorName(errnb),
Yap_errorName(classno)); Yap_errorName(classno));
fprintf(stderr, "\% Execution mode\n"); fprintf(stderr, "%% Execution mode\n");
if (LOCAL_PrologMode & BootMode) if (LOCAL_PrologMode & BootMode)
fprintf(stderr, "\% Bootstrap\n"); fprintf(stderr, "%% Bootstrap\n");
if (LOCAL_PrologMode & UserMode) if (LOCAL_PrologMode & UserMode)
fprintf(stderr, "\% User Prolo\n"); fprintf(stderr, "%% User Prolo\n");
if (LOCAL_PrologMode & CritMode) if (LOCAL_PrologMode & CritMode)
fprintf(stderr, "\% Exclusive Access Mode\n"); fprintf(stderr, "%% Exclusive Access Mode\n");
if (LOCAL_PrologMode & AbortMode) if (LOCAL_PrologMode & AbortMode)
fprintf(stderr, "\% Abort\n"); fprintf(stderr, "%% Abort\n");
if (LOCAL_PrologMode & InterruptMode) if (LOCAL_PrologMode & InterruptMode)
fprintf(stderr, "\% Interrupt\n"); fprintf(stderr, "%% Interrupt\n");
if (LOCAL_PrologMode & InErrorMode) if (LOCAL_PrologMode & InErrorMode)
fprintf(stderr, "\% Error\n"); fprintf(stderr, "%% Error\n");
if (LOCAL_PrologMode & ConsoleGetcMode) if (LOCAL_PrologMode & ConsoleGetcMode)
fprintf(stderr, "\% Prompt Console\n"); fprintf(stderr, "%% Prompt Console\n");
if (LOCAL_PrologMode & ExtendStackMode) if (LOCAL_PrologMode & ExtendStackMode)
fprintf(stderr, "\% Stack expansion \n"); fprintf(stderr, "%% Stack expansion \n");
if (LOCAL_PrologMode & GrowHeapMode) if (LOCAL_PrologMode & GrowHeapMode)
fprintf(stderr, "\% Data Base Expansion\n"); fprintf(stderr, "%% Data Base Expansion\n");
if (LOCAL_PrologMode & GrowStackMode) if (LOCAL_PrologMode & GrowStackMode)
fprintf(stderr, "\% User Prolog\n"); fprintf(stderr, "%% User Prolog\n");
if (LOCAL_PrologMode & GCMode) if (LOCAL_PrologMode & GCMode)
fprintf(stderr, "\% Garbage Collection\n"); fprintf(stderr, "%% Garbage Collection\n");
if (LOCAL_PrologMode & ErrorHandlingMode) if (LOCAL_PrologMode & ErrorHandlingMode)
fprintf(stderr, "\% Error handler\n"); fprintf(stderr, "%% Error handler\n");
if (LOCAL_PrologMode & CCallMode) if (LOCAL_PrologMode & CCallMode)
fprintf(stderr, "\% System Foreign Code\n"); fprintf(stderr, "%% System Foreign Code\n");
if (LOCAL_PrologMode & UnifyMode) if (LOCAL_PrologMode & UnifyMode)
fprintf(stderr, "\% Off-line Foreign Code\n"); fprintf(stderr, "%% Off-line Foreign Code\n");
if (LOCAL_PrologMode & UserCCallMode) if (LOCAL_PrologMode & UserCCallMode)
fprintf(stderr, "\% User Foreig C\n"); fprintf(stderr, "%% User Foreig C\n");
if (LOCAL_PrologMode & MallocMode) if (LOCAL_PrologMode & MallocMode)
fprintf(stderr, "\% Heap Allocaror\n"); fprintf(stderr, "%% Heap Allocaror\n");
if (LOCAL_PrologMode & SystemMode) if (LOCAL_PrologMode & SystemMode)
fprintf(stderr, "\% Prolog Internals\n"); fprintf(stderr, "%% Prolog Internals\n");
if (LOCAL_PrologMode & AsyncIntMode) if (LOCAL_PrologMode & AsyncIntMode)
fprintf(stderr, "\% Async Interruot mode\n"); fprintf(stderr, "%% Async Interruot mode\n");
if (LOCAL_PrologMode & InReadlineMode) if (LOCAL_PrologMode & InReadlineMode)
fprintf(stderr, "\% Readline Console\n"); fprintf(stderr, "%% Readline Console\n");
if (LOCAL_PrologMode & TopGoalMode) if (LOCAL_PrologMode & TopGoalMode)
fprintf(stderr, "\% Creating new query\n"); fprintf(stderr, "%% Creating new query\n");
fprintf(stderr, "\% \n\% -------------------------------------\n\%\n"); fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "\% \n% YAP Program :\n"); fprintf(stderr, "%% \n%% YAP Program :\n");
fprintf(stderr, "\% \n\% -------------------------------------\n\%\n"); fprintf(stderr, "%% \n%% -------------------------------------\n%%\n");
fprintf(stderr, "\% Program Position\n\n", Yap_errorName(errno), fprintf(stderr, "%% Program Position\n\n", Yap_errorName(errno),
Yap_errorName(classno); Yap_errorName(classno));
Yap_detect_bug_location(CP, FIND_PRED_FROM_ANYWHERE, 256); Yap_detect_bug_location(CP, FIND_PRED_FROM_ANYWHERE, 256);
fprintf(stderr, "\% PC: %s\n", (char *)HR); fprintf(stderr, "%% PC: %s\n", (char *)HR);
Yap_detect_bug_location(CP, FIND_PRED_FROM_ANYWHERE, 256); Yap_detect_bug_location(CP, FIND_PRED_FROM_ANYWHERE, 256);
fprintf(stderr, "\% Continuation: %s\n", (char *)HR); fprintf(stderr, "%% Continuation: %s\n", (char *)HR);
Yap_detect_bug_location(B->cp_ap, FIND_PRED_FROM_ANYWHERE, 256); Yap_detect_bug_location(B->cp_ap, FIND_PRED_FROM_ANYWHERE, 256);
fprintf(stderr, "\% Alternative: %s\n", (char *)HR); fprintf(stderr, "%% Alternative: %s\n", (char *)HR);
if (HR > ASP || HR > LCL0) { if (HR > ASP || HR > LCL0) {
fprintf(stderr, "\% YAP ERROR: Global Collided against Local (%p--%p)\n", fprintf(stderr, "%% YAP ERROR: Global Collided against Local (%p--%p)\n",
HR, ASP); HR, ASP);
} else if (HeapTop > (ADDR)LOCAL_GlobalBase) { } else if (HeapTop > (ADDR)LOCAL_GlobalBase) {
fprintf(stderr, fprintf(stderr,
"\% YAP ERROR: Code Space Collided against Global (%p--%p)\n", "%% YAP ERROR: Code Space Collided against Global (%p--%p)\n",
HeapTop, LOCAL_GlobalBase); HeapTop, LOCAL_GlobalBase);
} else { } else {
#if !USE_SYSTEM_MALLOC #if !USE_SYSTEM_MALLOC
fprintf(stderr, "\%ldKB of Code Space (%p--%p)\n", fprintf(stderr, "%%ldKB of Code Space (%p--%p)\n",
(long int)((CELL)HeapTop - (CELL)Yap_HeapBase) / 1024, Yap_HeapBase, (long int)((CELL)HeapTop - (CELL)Yap_HeapBase) / 1024, Yap_HeapBase,
HeapTop); HeapTop);
#if USE_DL_MALLOC #if USE_DL_MALLOC
@ -1885,14 +1885,14 @@ void Yap_dump_stack(void) {
} }
#endif #endif
#endif #endif
fprintf(stderr, "\% %luKB of Global Stack (%p--%p)\n", fprintf(stderr, "%% %luKB of Global Stack (%p--%p)\n",
(unsigned long int)(sizeof(CELL) * (HR - H0)) / 1024, H0, HR); (unsigned long int)(sizeof(CELL) * (HR - H0)) / 1024, H0, HR);
fprintf(stderr, "\% %luKB of Local Stack (%p--%p)\n", fprintf(stderr, "%% %luKB of Local Stack (%p--%p)\n",
(unsigned long int)(sizeof(CELL) * (LCL0 - ASP)) / 1024, ASP, LCL0); (unsigned long int)(sizeof(CELL) * (LCL0 - ASP)) / 1024, ASP, LCL0);
fprintf(stderr, "\% %luKB of Trail (%p--%p)\n", fprintf(stderr, "%% %luKB of Trail (%p--%p)\n",
(unsigned long int)((ADDR)TR - LOCAL_TrailBase) / 1024, (unsigned long int)((ADDR)TR - LOCAL_TrailBase) / 1024,
LOCAL_TrailBase, TR); LOCAL_TrailBase, TR);
fprintf(stderr, "\% Performed %ld garbage collections\n", fprintf(stderr, "%% Performed %ld garbage collections\n",
(unsigned long int)LOCAL_GcCalls); (unsigned long int)LOCAL_GcCalls);
#if LOW_LEVEL_TRACER #if LOW_LEVEL_TRACER
{ {
@ -1907,20 +1907,20 @@ void Yap_dump_stack(void) {
} }
} }
#endif #endif
fprintf(stderr, "\% All Active Calls and\n"); fprintf(stderr, "%% All Active Calls and\n");
fprintf(stderr, "\% Goals With Alternatives Open (Global In " fprintf(stderr, "%% Goals With Alternatives Open (Global In "
"Use--Local In Use)\n%%\n"); "Use--Local In Use)\n%%\n");
while (b_ptr != NULL) { while (b_ptr != NULL) {
while (env_ptr && env_ptr <= (CELL *)b_ptr) { while (env_ptr && env_ptr <= (CELL *)b_ptr) {
Yap_detect_bug_location(ipc, FIND_PRED_FROM_ENV, 256); Yap_detect_bug_location(ipc, FIND_PRED_FROM_ENV, 256);
if (env_ptr == (CELL *)b_ptr && (choiceptr)env_ptr[E_CB] > b_ptr) { if (env_ptr == (CELL *)b_ptr && (choiceptr)env_ptr[E_CB] > b_ptr) {
b_ptr = b_ptr->cp_b; b_ptr = b_ptr->cp_b;
fprintf(stderr, "\% %s\n", tp); fprintf(stderr, "%% %s\n", tp);
} else { } else {
fprintf(stderr, "%% %s\n", tp); fprintf(stderr, "%% %s\n", tp);
} }
if (!max_count--) { if (!max_count--) {
fprintf(stderr, "\% .....\n"); fprintf(stderr, "%% .....\n");
return; return;
} }
ipc = (yamop *)(env_ptr[E_CP]); ipc = (yamop *)(env_ptr[E_CP]);
@ -1928,7 +1928,7 @@ void Yap_dump_stack(void) {
} }
if (b_ptr) { if (b_ptr) {
if (!max_count--) { if (!max_count--) {
fprintf(stderr, "\%\** .....\n"); fprintf(stderr, "%%\** .....\n");
return; return;
} }
if (b_ptr->cp_ap && /* tabling */ if (b_ptr->cp_ap && /* tabling */
@ -1937,7 +1937,7 @@ void Yap_dump_stack(void) {
b_ptr->cp_ap->opc != Yap_opcode(_Nstop)) { b_ptr->cp_ap->opc != Yap_opcode(_Nstop)) {
/* we can safely ignore ; because there is always an upper env */ /* we can safely ignore ; because there is always an upper env */
Yap_detect_bug_location(b_ptr->cp_ap, FIND_PRED_FROM_CP, 256); Yap_detect_bug_location(b_ptr->cp_ap, FIND_PRED_FROM_CP, 256);
fprintf(stderr, "\% %s (%luKB--%luKB)\n", tp, fprintf(stderr, "%% %s (%luKB--%luKB)\n", tp,
(unsigned long int)((b_ptr->cp_h - H0) * sizeof(CELL) / 1024), (unsigned long int)((b_ptr->cp_h - H0) * sizeof(CELL) / 1024),
(unsigned long int)((ADDR)LCL0 - (ADDR)b_ptr) / 1024); (unsigned long int)((ADDR)LCL0 - (ADDR)b_ptr) / 1024);
} }
@ -2002,7 +2002,7 @@ void DumpActiveGoals(USES_REGS1) {
op_numbers opnum; op_numbers opnum;
if (!ONLOCAL(b_ptr) || b_ptr->cp_b == NULL) if (!ONLOCAL(b_ptr) || b_ptr->cp_b == NULL)
break; break;
fprintf(stderr, "\%p ", b_ptr); fprintf(stderr, "%%p ", b_ptr);
pe = Yap_PredForChoicePt(b_ptr, &opnum); pe = Yap_PredForChoicePt(b_ptr, &opnum);
if (opnum == _Nstop) { if (opnum == _Nstop) {
fprintf(stderr, " ********** C-Code Interface Boundary ***********\n"); fprintf(stderr, " ********** C-Code Interface Boundary ***********\n");
@ -2090,15 +2090,15 @@ void Yap_detect_bug_location(yamop *yap_pc, int where_from, int psize) {
if ((cl = Yap_PredForCode(yap_pc, where_from, &pred_name, &pred_arity, if ((cl = Yap_PredForCode(yap_pc, where_from, &pred_name, &pred_arity,
&pred_module)) == 0) { &pred_module)) == 0) {
/* system predicate */ /* system predicate */
fprintf(stderr, "\%s", "meta-call"); fprintf(stderr, "%%s", "meta-call");
} else if (pred_module == 0) { } else if (pred_module == 0) {
fprintf(stderr, "in prolog:%s/%lu", RepAtom(pred_name)->StrOfAE, fprintf(stderr, "in prolog:%s/%lu", RepAtom(pred_name)->StrOfAE,
(unsigned long int)pred_arity); (unsigned long int)pred_arity);
} else if (cl < 0) { } else if (cl < 0) {
fprintf(stderr, "\%s:%s/%lu", RepAtom(AtomOfTerm(pred_module))->StrOfAE, fprintf(stderr, "%%s:%s/%lu", RepAtom(AtomOfTerm(pred_module))->StrOfAE,
RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity); RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity);
} else { } else {
fprintf(stderr, "\%s:%s/%lu at clause %lu", fprintf(stderr, "%%s:%s/%lu at clause %lu",
RepAtom(AtomOfTerm(pred_module))->StrOfAE, RepAtom(AtomOfTerm(pred_module))->StrOfAE,
RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity, RepAtom(pred_name)->StrOfAE, (unsigned long int)pred_arity,
(unsigned long int)cl); (unsigned long int)cl);

View File

@ -94,7 +94,7 @@ public:
/// should be a callable /// should be a callable
/// goal. /// goal.
inline YAPQuery(const char *s) : YAPPredicate(s, goal, names, (nts = &ARG1)) { inline YAPQuery(const char *s) : YAPPredicate(s, goal, names, (nts = &ARG1)) {
__android_log_print(ANDROID_LOG_INFO, "YAPDroid", "got game %d", __android_log_print(ANDROID_LOG_INFO, "YAPDroid", "got game %ld",
LOCAL_CurSlot); LOCAL_CurSlot);
openQuery(); openQuery();
@ -114,7 +114,7 @@ public:
/// It i; /// It i;
///}; ///};
/// build a query from a term /// build a query from a term
YAPQuery(YAPTerm t) : YAPPredicate((goal = t.term()),(nts=Yap_XREGS+1)) { YAPQuery(YAPTerm t) : YAPPredicate((goal = t.term()), nts) {
BACKUP_MACHINE_REGS(); BACKUP_MACHINE_REGS();
openQuery(); openQuery();
names = TermNil ; names = TermNil ;

View File

@ -20,6 +20,7 @@
#ifndef YATOM_H #ifndef YATOM_H
#define YATOM_H 1 #define YATOM_H 1
INLINE_ONLY inline EXTERN Atom AbsAtom(AtomEntry *p); INLINE_ONLY inline EXTERN Atom AbsAtom(AtomEntry *p);
INLINE_ONLY inline EXTERN AtomEntry *RepAtom(Atom a); INLINE_ONLY inline EXTERN AtomEntry *RepAtom(Atom a);

View File

@ -1,11 +1,11 @@
#ifndef _YAP_INLINE_ONLY_H_ #ifndef _YAP_INLINE_ONLY_H_
#define _YAP_INLINE_ONLY_H_ #define _YAP_INLINE_ONLY_H_
#ifdef __GNUC__ #if defined(__GNUC__ )
#define INLINE_ONLY __attribute__((gnu_inline,always_inline)) #define INLINE_ONLY __attribute__((gnu_inline,always_inline))
//#define INLINE_ONLY //#define INLINE_ONLY
#else #else
#define INLINE_ONLY EXTERN #define INLINE_ONLY
#endif #endif
#endif #endif

View File

@ -109,7 +109,7 @@ typedef struct vfs {
int (*writers)(int ch, int sno); int (*writers)(int ch, int sno);
/** VFS dep /** VFS dep
endent area */ endent area */
cell_size_t priv[4]; void *priv;
struct vfs *next; struct vfs *next;
} VFS_t; } VFS_t;

View File

@ -671,7 +671,7 @@ static Int list_directory(USES_REGS1) {
#if __ANDROID__ #if __ANDROID__
{ {
const char *dirName = buf + strlen("/assets/"); const char *dirName = buf + strlen("/assets/");
AAssetManager *mgr = GLOBAL_VFS->priv[0].mgr; AAssetManager *mgr = GLOBAL_VFS->priv;
AAssetDir *de; AAssetDir *de;
const char *dp; const char *dp;
@ -680,8 +680,8 @@ static Int list_directory(USES_REGS1) {
strerror(errno)); strerror(errno));
} }
while ((dp = AAssetDir_getNextFileName(de))) { while ((dp = AAssetDir_getNextFileName(de))) {
YAP_Term ti = YAP_MkAtomTerm(YAP_LookupAtom(dp)); YAP_Term ti = MkAtomTerm(Yap_LookupAtom(dp));
YAP_PutInSlot(sl, YAP_MkPairTerm(ti, YAP_GetFromSlot(sl))); Yap_PutInHandle(sl, MkPairTerm(ti, Yap_GetFromHandle(sl)));
} }
AAssetDir_close(de); AAssetDir_close(de);
} }

View File

@ -16,8 +16,8 @@ typedef struct myddas_global *MYDDAS_GLOBAL;
#include "myddas_util.h" #include "myddas_util.h"
static void Yap_InitMYDDAS_SQLITE3Preds(void); //extern void Yap_InitMYDDAS_SQLITE3Preds(void);
static void Yap_InitBackMYDDAS_SQLITE3Preds(void); //extern void Yap_InitBackMYDDAS_SQLITE3Preds(void);
#ifdef MYDDAS_STATS #ifdef MYDDAS_STATS
typedef struct myddas_stats_time_struct *MYDDAS_STATS_TIME; typedef struct myddas_stats_time_struct *MYDDAS_STATS_TIME;