My first attempt to synchronize OPTYap with CVS

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@920 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
ricroc 2003-11-07 16:31:08 +00:00
parent 17dad3f6f7
commit 36e9ff7588
9 changed files with 78 additions and 33 deletions

View File

@ -12,7 +12,7 @@
* Last rev: *
* mods: *
* comments: allocating space *
* version:$Id: alloc.c,v 1.39 2003-10-30 22:52:46 vsc Exp $ *
* version:$Id: alloc.c,v 1.40 2003-11-07 16:31:08 ricroc Exp $ *
*************************************************************************/
#ifdef SCCS
static char SccsId[] = "%W% %G%";
@ -1049,10 +1049,8 @@ InitHeap(void *heap_addr)
BaseAllocArea = AllocCodeSpace(OPT_CHUNK_SIZE);
TopAllocArea = BaseAllocArea;
#endif
LOCAL = REMOTE; /* point to the first area */
#endif
#endif /* YAPOR || TABLING */
}
void

View File

@ -2129,6 +2129,11 @@ do_pass(void)
a_n(_table_new_answer, (int) cpc->rnd2);
break;
#endif /* TABLING */
#ifdef TABLING_INNER_CUTS
case clause_with_cut_op:
a_e(_clause_with_cut);
break;
#endif /* TABLING_INNER_CUTS */
#ifdef SFUNC
case get_s_f_op:
a_rf(_get_s_f);

View File

@ -932,7 +932,7 @@ YAP_Init(YAP_init_args *yap_init)
from the other workers
*/
Yap_InitYaamRegs();
#endif
#endif /* SBA */
/* slaves, waiting for work */
CurrentModule = 1;
P = GETWORK_FIRST_TIME;

View File

@ -49,12 +49,14 @@ STATIC_PROTO( int checktemp, (void));
STATIC_PROTO(void checkreg, (int));
STATIC_PROTO(void c_layout, (void));
STATIC_PROTO(void c_optimize, (PInstr *));
#ifdef SFUNC
STATIC_PROTO(void compile_sf_term, (Term, int));
#endif
#ifdef TABLING_INNER_CUTS
PInstr *cut_mark;
#endif /* TABLING_INNER_CUTS */
static PInstr *BodyStart;
static Ventry *vtable;
@ -2364,6 +2366,12 @@ c_layout(void)
#else
switch (ic) {
#endif
#ifdef TABLING_INNER_CUTS
case cut_op:
case cutexit_op:
cut_mark->op = clause_with_cut_op;
break;
#endif /* TABLING_INNER_CUTS */
case allocate_op:
case deallocate_op:
#ifdef TABLING
@ -2476,8 +2484,11 @@ c_layout(void)
Contents[rn] = NIL;
++Uses[rn];
break;
case save_b_op:
case comit_b_op:
#ifdef TABLING_INNER_CUTS
cut_mark->op = clause_with_cut_op;
#endif /* TABLING_INNER_CUTS */
case save_b_op:
case patch_b_op:
case save_appl_op:
case save_pair_op:
@ -2819,6 +2830,10 @@ Yap_cclause(Term inp_clause, int NOfArgs, int mod)
}
/* phase 1 : produce skeleton code and variable information */
c_head(head);
#ifdef TABLING_INNER_CUTS
Yap_emit(nop_op, Zero, Zero);
cut_mark = cpc;
#endif /* TABLING_INNER_CUTS */
Yap_emit(allocate_op, Zero, Zero);
c_body(body, mod);
/* Insert blobs at the very end */

View File

@ -619,12 +619,15 @@ static char *opformat[] =
"restore_temps_and_skip\t\t%l",
"enter_lu",
"empty_call\t\t%l,%d",
#ifdef TABLING
"table_new_answer",
#endif /* TABLING */
#ifdef YAPOR
"sync",
#endif /* YAPOR */
#ifdef TABLING
"table_new_answer",
#endif /* TABLING */
#ifdef TABLING_INNER_CUTS
"clause_with_cut",
#endif /* TABLING_INNER_CUTS */
"fetch_args_for_bccall\t%v",
"binary_cfunc\t\t%v,%P",
"blob\t%O"

View File

@ -135,7 +135,7 @@ SetHeapRegs(void)
BB = ChoicePtrAdjust(BB);
H_FZ = PtoGloAdjust(H_FZ);
TR_FZ = PtoTRAdjust(TR_FZ);
#endif
#endif /* TABLING */
TR = PtoTRAdjust(TR);
YENV = PtoLocAdjust(YENV);
if (IsOldGlobalPtr(S))
@ -180,7 +180,7 @@ SetStackRegs(void)
B_FZ = ChoicePtrAdjust(B_FZ);
BB = ChoicePtrAdjust(BB);
TR_FZ = PtoTRAdjust(TR_FZ);
#endif
#endif /* TABLING */
YENV = PtoLocAdjust(YENV);
if (MyTR)
MyTR = PtoTRAdjust(MyTR);
@ -704,7 +704,7 @@ do_growheap(int fix_code, UInt in_size)
}
#ifdef TABLING
fix_tabling_info();
#endif
#endif /* TABLING */
if (sz >= sizeof(CELL) * 16 * 1024L) {
return (TRUE);
}
@ -733,7 +733,7 @@ Yap_growglobal(CELL **ptr)
return(FALSE);
#ifdef TABLING
fix_tabling_info();
#endif
#endif /* TABLING */
return(TRUE);
}
@ -779,7 +779,7 @@ growstack(long size)
AdjustRegs(MaxTemps);
#ifdef TABLING
fix_tabling_info();
#endif
#endif /* TABLING */
YAPLeaveCriticalSection();
CreepFlag = CalculateStackGap();
ASP += 256;

View File

@ -978,8 +978,8 @@ InitCodes(void)
modp->PredFlags |= MetaPredFlag;
}
#ifdef YAPOR
heap_regs->getworkcode.u.ld.p = (CODEADDR)RepPredProp(PredPropByAtom(Yap_LookupAtom("$getwork"), 0));
heap_regs->getworkcode_seq.u.ld.p = (CODEADDR)RepPredProp(PredPropByAtom(Yap_LookupAtom("$getwork_seq"), 0));
heap_regs->getworkcode.u.ld.p = RepPredProp(PredPropByAtom(Yap_LookupAtom("$getwork"), 0));
heap_regs->getworkcode_seq.u.ld.p = RepPredProp(PredPropByAtom(Yap_LookupAtom("$getwork_seq"), 0));
#endif
heap_regs->db_erased_marker =
(DBRef)Yap_AllocCodeSpace(sizeof(DBStruct));
@ -1011,7 +1011,7 @@ InitYapOr(int Heap,
#ifdef YAPOR
worker_id = 0;
#endif
#endif /* YAPOR */
/* starting message */
#ifdef YAPOR
@ -1027,21 +1027,52 @@ InitYapOr(int Heap,
#endif /* YAPOR */
#ifdef TABLING
#ifdef TABLING_BATCHED_SCHEDULING
#ifdef YAPOR
#ifdef ALLOC_BEFORE_CHECK
INFORMATION_MESSAGE("YapTab: batched scheduling (TLWL-ABC)");
#endif
#if defined(TABLE_LOCK_AT_WRITE_LEVEL) && ! defined(ALLOC_BEFORE_CHECK)
INFORMATION_MESSAGE("YapTab: batched scheduling (TLWL)");
#endif
#ifdef TABLE_LOCK_AT_NODE_LEVEL
INFORMATION_MESSAGE("YapTab: batched scheduling (TLNL)");
#endif
#ifdef TABLE_LOCK_AT_ENTRY_LEVEL
INFORMATION_MESSAGE("YapTab: batched scheduling (TLEL)");
#endif
#else
INFORMATION_MESSAGE("YapTab: batched scheduling");
#endif /* YAPOR */
#else /* TABLING_LOCAL_SCHEDULING */
#ifdef YAPOR
#ifdef ALLOC_BEFORE_CHECK
INFORMATION_MESSAGE("YapTab: local scheduling (TLWL-ABC)");
#endif
#if defined(TABLE_LOCK_AT_WRITE_LEVEL) && ! defined(ALLOC_BEFORE_CHECK)
INFORMATION_MESSAGE("YapTab: local scheduling (TLWL)");
#endif
#ifdef TABLE_LOCK_AT_NODE_LEVEL
INFORMATION_MESSAGE("YapTab: local scheduling (TLNL)");
#endif
#ifdef TABLE_LOCK_AT_ENTRY_LEVEL
INFORMATION_MESSAGE("YapTab: local scheduling (TLEL)");
#endif
#else
INFORMATION_MESSAGE("YapTab: local scheduling");
#endif /* YAPOR */
#endif /* TABLING_SCHEDULING */
#endif /* TABLING */
#ifdef YAPOR
map_memory(Heap, Stack, Trail, aux_number_workers);
#else
Yap_InitMemory (Trail, Heap, Stack);
#endif
#endif /* YAPOR */
/* global initializations */
init_global(aux_number_workers, aux_scheduler_loop, aux_delayed_release_load);
init_signals();
}
#endif
#endif /* YAPOR || TABLING */
void
Yap_InitStacks(int Heap,
@ -1088,7 +1119,7 @@ Yap_InitStacks(int Heap,
#else
if (Heap < MinHeapSpace)
Heap = MinHeapSpace;
#endif
#endif /* YAPOR || TABLING */
#if defined(YAPOR) || defined(TABLING)
InitYapOr(Heap,
@ -1131,7 +1162,7 @@ Yap_exit (int value)
{
#if defined(YAPOR)
unmap_memory();
#endif /* YAPOR || TABLING */
#endif /* YAPOR */
if (! (Yap_PrologMode & BootMode) )
Yap_ShutdownLoadForeign();
exit(value);

View File

@ -344,17 +344,10 @@ put_info(int info, int mode)
/* say whether we just saved the heap or everything */
putout(mode);
/* current state of stacks, to be used by SavedInfo */
#if defined(YAPOR) || defined(TABLING)
/* space available in heap area */
putout(Unsigned(Yap_GlobalBase)-Unsigned(Yap_HeapBase));
/* space available for stacks */
putout(Unsigned(Yap_LocalBase)-Unsigned(Yap_GlobalBase)+CellSize);
#else
/* space available in heap area */
putout(Unsigned(Yap_GlobalBase)-Unsigned(Yap_HeapBase));
/* space available for stacks */
putout(Unsigned(Yap_LocalBase)-Unsigned(Yap_GlobalBase));
#endif /* YAPOR || TABLING */
/* space available for trail */
putout(Unsigned(Yap_TrailTop)-Unsigned(Yap_TrailBase));
/* Space used in heap area */
@ -468,7 +461,7 @@ save_heap(void)
j = Unsigned(HeapTop) - Unsigned(Yap_HeapBase);
/* store 10 more cells because of the memory manager */
mywrite(splfild, (char *) Yap_HeapBase, j);
#endif
#endif /* YAPOR || TABLING */
}
static void
@ -804,7 +797,7 @@ CopyCode(void)
#else
myread(splfild, (char *) Yap_HeapBase,
(Unsigned(OldHeapTop) - Unsigned(OldHeapBase)));
#endif
#endif /* YAPOR || TABLING */
}
/* Copy the local and global stack and also the trail to their new home */

View File

@ -2630,7 +2630,7 @@ Yap_InitCPreds(void)
Yap_InitGrowPreds();
#if defined(YAPOR) || defined(TABLING)
Yap_init_optyap_preds();
#endif
#endif /* YAPOR || TABLING */
{
void (*(*(p))) (void) = E_Modules;
while (*p)