LOCALS and GLOBALS are now generated by misc/buildlocalglobal.
This commit is contained in:
parent
d6fc76faf1
commit
ab63cd190b
4
C/init.c
4
C/init.c
@ -88,16 +88,12 @@ void init_yapor_workers(void);
|
||||
|
||||
ADDR Yap_HeapBase;
|
||||
|
||||
struct restore_info rinfo[MAX_THREADS];
|
||||
|
||||
struct thread_globs Yap_thread_gl[MAX_THREADS];
|
||||
|
||||
pthread_t Yap_master_thread;
|
||||
|
||||
#else
|
||||
|
||||
struct restore_info rinfo;
|
||||
|
||||
ADDR Yap_HeapBase,
|
||||
Yap_LocalBase,
|
||||
Yap_GlobalBase,
|
||||
|
32
H/YapHeap.h
32
H/YapHeap.h
@ -81,15 +81,6 @@ typedef struct atom_hash_entry {
|
||||
Atom Entry;
|
||||
} AtomHashEntry;
|
||||
|
||||
typedef struct reduction_counters {
|
||||
YAP_ULONG_LONG reductions;
|
||||
YAP_ULONG_LONG reductions_retries;
|
||||
YAP_ULONG_LONG retries;
|
||||
int reductions_on;
|
||||
int reductions_retries_on;
|
||||
int retries_on;
|
||||
} red_counters;
|
||||
|
||||
typedef struct scratch_block_struct {
|
||||
char *ptr;
|
||||
UInt sz, msz;
|
||||
@ -101,29 +92,6 @@ typedef struct record_list {
|
||||
struct record_list *next_rec, *prev_rec;
|
||||
} DBRecordList;
|
||||
|
||||
typedef struct restore_info {
|
||||
Int base_diff;
|
||||
Int cl_diff;
|
||||
Int g_diff;
|
||||
Int g_diff0;
|
||||
Int h_diff;
|
||||
Int l_diff;
|
||||
Int tr_diff;
|
||||
Int x_diff;
|
||||
Int delay_diff;
|
||||
CELL *old_ASP;
|
||||
CELL *old_LCL0;
|
||||
CELL *g_split;
|
||||
tr_fr_ptr old_TR;
|
||||
CELL *old_GlobalBase;
|
||||
CELL *old_H;
|
||||
CELL *old_H0;
|
||||
ADDR old_TrailBase;
|
||||
ADDR old_TrailTop;
|
||||
ADDR old_HeapBase;
|
||||
ADDR old_HeapTop;
|
||||
} restoreinfo;
|
||||
|
||||
/* SWI Emulation */
|
||||
#define SWI_BUF_SIZE 512
|
||||
#define SWI_TMP_BUF_SIZE 2*SWI_BUF_SIZE
|
||||
|
42
H/dglobals.h
42
H/dglobals.h
@ -1,5 +1,5 @@
|
||||
|
||||
/* This file, dglobals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, dglobals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/GLOBALS instead */
|
||||
|
||||
|
||||
@ -20,40 +20,36 @@
|
||||
|
||||
|
||||
|
||||
#define GLOBAL_Initialised Yap_global->Initialised_
|
||||
#define GLOBAL_InitialisedFromPL Yap_global->InitialisedFromPL_
|
||||
#define GLOBAL_PL_Argc Yap_global->PL_Argc_
|
||||
#define GLOBAL_PL_Argv Yap_global->PL_Argv_
|
||||
|
||||
#define GLOBAL_Initialised Yap_global->initialised
|
||||
#define GLOBAL_InitialisedFromPL Yap_global->initialised_from_pl
|
||||
#define GLOBAL_PL_Argc Yap_global->pl_argc
|
||||
#define GLOBAL_PL_Argv Yap_global->pl_argv
|
||||
#define GLOBAL_HaltHooks Yap_global->HaltHooks_
|
||||
|
||||
#define GLOBAL_HaltHooks Yap_global->yap_halt_hook
|
||||
#define GLOBAL_AllowLocalExpansion Yap_global->AllowLocalExpansion_
|
||||
#define GLOBAL_AllowGlobalExpansion Yap_global->AllowGlobalExpansion_
|
||||
#define GLOBAL_AllowTrailExpansion Yap_global->AllowTrailExpansion_
|
||||
#define GLOBAL_SizeOfOverflow Yap_global->SizeOfOverflow_
|
||||
|
||||
#define GLOBAL_AllowLocalExpansion Yap_global->allow_local_expansion
|
||||
#define GLOBAL_AllowGlobalExpansion Yap_global->allow_global_expansion
|
||||
#define GLOBAL_AllowTrailExpansion Yap_global->allow_trail_expansion
|
||||
#define GLOBAL_SizeOfOverflow Yap_global->size_of_overflow
|
||||
|
||||
#define GLOBAL_AGcThreshold Yap_global->agc_threshold
|
||||
#define GLOBAL_AGCHook Yap_global->agc_hook
|
||||
#define GLOBAL_AGcThreshold Yap_global->AGcThreshold_
|
||||
#define GLOBAL_AGCHook Yap_global->AGCHook_
|
||||
|
||||
#if THREADS
|
||||
|
||||
#define GLOBAL_NOfThreads Yap_global->n_of_threads
|
||||
#define GLOBAL_NOfThreads Yap_global->NOfThreads_
|
||||
|
||||
#define GLOBAL_NOfThreadsCreated Yap_global->n_of_threads_created
|
||||
#define GLOBAL_NOfThreadsCreated Yap_global->NOfThreadsCreated_
|
||||
|
||||
#define GLOBAL_ThreadsTotalTime Yap_global->threads_total_time
|
||||
#define GLOBAL_ThreadsTotalTime Yap_global->ThreadsTotalTime_
|
||||
|
||||
#define GLOBAL_ThreadHandlesLock Yap_global->ThreadHandlesLock_
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
|
||||
#define GLOBAL_BGL Yap_global->bgl
|
||||
#define GLOBAL_BGL Yap_global->BGL_
|
||||
#endif
|
||||
|
||||
#ifdef THREADS
|
||||
#define GLOBAL_ThreadHandlesLock Yap_global->thread_handles_lock
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
#define Yap_optyap_data Yap_global->optyap_data
|
||||
#define GLOBAL_optyap_data Yap_global->optyap_data_
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
|
315
H/dlocals.h
315
H/dlocals.h
@ -1,140 +1,229 @@
|
||||
|
||||
/* This file, dlocals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, dlocals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/LOCALS instead */
|
||||
|
||||
|
||||
|
||||
|
||||
#define LOCAL_c_input_stream LOCAL->c_input_stream
|
||||
#define LOCAL_c_output_stream LOCAL->c_output_stream
|
||||
#define LOCAL_c_error_stream LOCAL->c_error_stream
|
||||
#define LOCAL_c_input_stream LOCAL->c_input_stream_
|
||||
#define REMOTE_c_input_stream(wid) REMOTE(wid)->c_input_stream_
|
||||
#define LOCAL_c_output_stream LOCAL->c_output_stream_
|
||||
#define REMOTE_c_output_stream(wid) REMOTE(wid)->c_output_stream_
|
||||
#define LOCAL_c_error_stream LOCAL->c_error_stream_
|
||||
#define REMOTE_c_error_stream(wid) REMOTE(wid)->c_error_stream_
|
||||
|
||||
#define LOCAL_OldASP LOCAL->rinfo.old_ASP
|
||||
#define LOCAL_OldLCL0 LOCAL->rinfo.old_LCL0
|
||||
#define LOCAL_OldTR LOCAL->rinfo.old_TR
|
||||
#define LOCAL_OldGlobalBase LOCAL->rinfo.old_GlobalBase
|
||||
#define LOCAL_OldH LOCAL->rinfo.old_H
|
||||
#define LOCAL_OldH0 LOCAL->rinfo.old_H0
|
||||
#define LOCAL_OldTrailBase LOCAL->rinfo.old_TrailBase
|
||||
#define LOCAL_OldTrailTop LOCAL->rinfo.old_TrailTop
|
||||
#define LOCAL_OldHeapBase LOCAL->rinfo.old_HeapBase
|
||||
#define LOCAL_OldHeapTop LOCAL->rinfo.old_HeapTop
|
||||
#define LOCAL_ClDiff LOCAL->rinfo.cl_diff
|
||||
#define LOCAL_GDiff LOCAL->rinfo.g_diff
|
||||
#define LOCAL_HDiff LOCAL->rinfo.h_diff
|
||||
#define LOCAL_GDiff0 LOCAL->rinfo.g_diff0
|
||||
#define LOCAL_GSplit LOCAL->rinfo.g_split
|
||||
#define LOCAL_LDiff LOCAL->rinfo.l_diff
|
||||
#define LOCAL_TrDiff LOCAL->rinfo.tr_diff
|
||||
#define LOCAL_XDiff LOCAL->rinfo.x_diff
|
||||
#define LOCAL_DelayDiff LOCAL->rinfo.delay_diff
|
||||
#define LOCAL_BaseDiff LOCAL->rinfo.base_diff
|
||||
#define LOCAL_ReductionsCounter LOCAL->call_counters.reductions
|
||||
#define LOCAL_PredEntriesCounter LOCAL->call_counters.reductions_retries
|
||||
#define LOCAL_RetriesCounter LOCAL->call_counters.retries
|
||||
#define LOCAL_ReductionsCounterOn LOCAL->call_counters.reductions_on
|
||||
#define LOCAL_PredEntriesCounterOn LOCAL->call_counters.reductions_retries_on
|
||||
#define LOCAL_RetriesCounterOn LOCAL->call_counters.retries_on
|
||||
#define LOCAL_InterruptsDisabled LOCAL->interrupts_disabled
|
||||
#define LOCAL_OldASP LOCAL->OldASP_
|
||||
#define REMOTE_OldASP(wid) REMOTE(wid)->OldASP_
|
||||
#define LOCAL_OldLCL0 LOCAL->OldLCL0_
|
||||
#define REMOTE_OldLCL0(wid) REMOTE(wid)->OldLCL0_
|
||||
#define LOCAL_OldTR LOCAL->OldTR_
|
||||
#define REMOTE_OldTR(wid) REMOTE(wid)->OldTR_
|
||||
#define LOCAL_OldGlobalBase LOCAL->OldGlobalBase_
|
||||
#define REMOTE_OldGlobalBase(wid) REMOTE(wid)->OldGlobalBase_
|
||||
#define LOCAL_OldH LOCAL->OldH_
|
||||
#define REMOTE_OldH(wid) REMOTE(wid)->OldH_
|
||||
#define LOCAL_OldH0 LOCAL->OldH0_
|
||||
#define REMOTE_OldH0(wid) REMOTE(wid)->OldH0_
|
||||
#define LOCAL_OldTrailBase LOCAL->OldTrailBase_
|
||||
#define REMOTE_OldTrailBase(wid) REMOTE(wid)->OldTrailBase_
|
||||
#define LOCAL_OldTrailTop LOCAL->OldTrailTop_
|
||||
#define REMOTE_OldTrailTop(wid) REMOTE(wid)->OldTrailTop_
|
||||
#define LOCAL_OldHeapBase LOCAL->OldHeapBase_
|
||||
#define REMOTE_OldHeapBase(wid) REMOTE(wid)->OldHeapBase_
|
||||
#define LOCAL_OldHeapTop LOCAL->OldHeapTop_
|
||||
#define REMOTE_OldHeapTop(wid) REMOTE(wid)->OldHeapTop_
|
||||
#define LOCAL_ClDiff LOCAL->ClDiff_
|
||||
#define REMOTE_ClDiff(wid) REMOTE(wid)->ClDiff_
|
||||
#define LOCAL_GDiff LOCAL->GDiff_
|
||||
#define REMOTE_GDiff(wid) REMOTE(wid)->GDiff_
|
||||
#define LOCAL_HDiff LOCAL->HDiff_
|
||||
#define REMOTE_HDiff(wid) REMOTE(wid)->HDiff_
|
||||
#define LOCAL_GDiff0 LOCAL->GDiff0_
|
||||
#define REMOTE_GDiff0(wid) REMOTE(wid)->GDiff0_
|
||||
#define LOCAL_GSplit LOCAL->GSplit_
|
||||
#define REMOTE_GSplit(wid) REMOTE(wid)->GSplit_
|
||||
#define LOCAL_LDiff LOCAL->LDiff_
|
||||
#define REMOTE_LDiff(wid) REMOTE(wid)->LDiff_
|
||||
#define LOCAL_TrDiff LOCAL->TrDiff_
|
||||
#define REMOTE_TrDiff(wid) REMOTE(wid)->TrDiff_
|
||||
#define LOCAL_XDiff LOCAL->XDiff_
|
||||
#define REMOTE_XDiff(wid) REMOTE(wid)->XDiff_
|
||||
#define LOCAL_DelayDiff LOCAL->DelayDiff_
|
||||
#define REMOTE_DelayDiff(wid) REMOTE(wid)->DelayDiff_
|
||||
#define LOCAL_BaseDiff LOCAL->BaseDiff_
|
||||
#define REMOTE_BaseDiff(wid) REMOTE(wid)->BaseDiff_
|
||||
|
||||
#define LOCAL_ReductionsCounter LOCAL->ReductionsCounter_
|
||||
#define REMOTE_ReductionsCounter(wid) REMOTE(wid)->ReductionsCounter_
|
||||
#define LOCAL_PredEntriesCounter LOCAL->PredEntriesCounter_
|
||||
#define REMOTE_PredEntriesCounter(wid) REMOTE(wid)->PredEntriesCounter_
|
||||
#define LOCAL_RetriesCounter LOCAL->RetriesCounter_
|
||||
#define REMOTE_RetriesCounter(wid) REMOTE(wid)->RetriesCounter_
|
||||
#define LOCAL_ReductionsCounterOn LOCAL->ReductionsCounterOn_
|
||||
#define REMOTE_ReductionsCounterOn(wid) REMOTE(wid)->ReductionsCounterOn_
|
||||
#define LOCAL_PredEntriesCounterOn LOCAL->PredEntriesCounterOn_
|
||||
#define REMOTE_PredEntriesCounterOn(wid) REMOTE(wid)->PredEntriesCounterOn_
|
||||
#define LOCAL_RetriesCounterOn LOCAL->RetriesCounterOn_
|
||||
#define REMOTE_RetriesCounterOn(wid) REMOTE(wid)->RetriesCounterOn_
|
||||
|
||||
|
||||
#define LOCAL_ConsultSp LOCAL->consultsp
|
||||
#define LOCAL_ConsultSp LOCAL->ConsultSp_
|
||||
#define REMOTE_ConsultSp(wid) REMOTE(wid)->ConsultSp_
|
||||
|
||||
#define LOCAL_ConsultCapacity LOCAL->consultcapacity
|
||||
#define LOCAL_ConsultCapacity LOCAL->ConsultCapacity_
|
||||
#define REMOTE_ConsultCapacity(wid) REMOTE(wid)->ConsultCapacity_
|
||||
|
||||
#define LOCAL_ConsultBase LOCAL->consultbase
|
||||
#define LOCAL_ConsultBase LOCAL->ConsultBase_
|
||||
#define REMOTE_ConsultBase(wid) REMOTE(wid)->ConsultBase_
|
||||
|
||||
#define LOCAL_ConsultLow LOCAL->consultlow
|
||||
#define LOCAL_ConsultLow LOCAL->ConsultLow_
|
||||
#define REMOTE_ConsultLow(wid) REMOTE(wid)->ConsultLow_
|
||||
|
||||
#define LOCAL_GlobalArena LOCAL->global_arena
|
||||
#define LOCAL_GlobalArenaOverflows LOCAL->global_arena_overflows
|
||||
#define LOCAL_ArenaOverflows LOCAL->arena_overflows
|
||||
#define LOCAL_DepthArenas LOCAL->depth_arenas
|
||||
#define LOCAL_ArithError LOCAL->arith_error
|
||||
#define LOCAL_LastAssertedPred LOCAL->last_asserted_pred
|
||||
#define LOCAL_DebugOn LOCAL->debug_on
|
||||
#define LOCAL_ScannerStack LOCAL->scanner_stack
|
||||
#define LOCAL_ScannerExtraBlocks LOCAL->scanner_extra_blocks
|
||||
#define LOCAL_BallTerm LOCAL->ball_term
|
||||
#define LOCAL_ActiveSignals LOCAL->active_signals
|
||||
#define LOCAL_IPredArity LOCAL->i_pred_arity
|
||||
#define LOCAL_ProfEnd LOCAL->prof_end
|
||||
#define LOCAL_UncaughtThrow LOCAL->uncaught_throw
|
||||
#define LOCAL_DoingUndefp LOCAL->doing_undefp
|
||||
#define LOCAL_StartLine LOCAL->start_line
|
||||
#define LOCAL_ScratchPad LOCAL->scratchpad
|
||||
#define LOCAL_GlobalArena LOCAL->GlobalArena_
|
||||
#define REMOTE_GlobalArena(wid) REMOTE(wid)->GlobalArena_
|
||||
#define LOCAL_GlobalArenaOverflows LOCAL->GlobalArenaOverflows_
|
||||
#define REMOTE_GlobalArenaOverflows(wid) REMOTE(wid)->GlobalArenaOverflows_
|
||||
#define LOCAL_ArenaOverflows LOCAL->ArenaOverflows_
|
||||
#define REMOTE_ArenaOverflows(wid) REMOTE(wid)->ArenaOverflows_
|
||||
#define LOCAL_DepthArenas LOCAL->DepthArenas_
|
||||
#define REMOTE_DepthArenas(wid) REMOTE(wid)->DepthArenas_
|
||||
#define LOCAL_ArithError LOCAL->ArithError_
|
||||
#define REMOTE_ArithError(wid) REMOTE(wid)->ArithError_
|
||||
#define LOCAL_LastAssertedPred LOCAL->LastAssertedPred_
|
||||
#define REMOTE_LastAssertedPred(wid) REMOTE(wid)->LastAssertedPred_
|
||||
#define LOCAL_DebugOn LOCAL->DebugOn_
|
||||
#define REMOTE_DebugOn(wid) REMOTE(wid)->DebugOn_
|
||||
#define LOCAL_ScannerStack LOCAL->ScannerStack_
|
||||
#define REMOTE_ScannerStack(wid) REMOTE(wid)->ScannerStack_
|
||||
#define LOCAL_ScannerExtraBlocks LOCAL->ScannerExtraBlocks_
|
||||
#define REMOTE_ScannerExtraBlocks(wid) REMOTE(wid)->ScannerExtraBlocks_
|
||||
#define LOCAL_BallTerm LOCAL->BallTerm_
|
||||
#define REMOTE_BallTerm(wid) REMOTE(wid)->BallTerm_
|
||||
#define LOCAL_ActiveSignals LOCAL->ActiveSignals_
|
||||
#define REMOTE_ActiveSignals(wid) REMOTE(wid)->ActiveSignals_
|
||||
#define LOCAL_IPredArity LOCAL->IPredArity_
|
||||
#define REMOTE_IPredArity(wid) REMOTE(wid)->IPredArity_
|
||||
#define LOCAL_ProfEnd LOCAL->ProfEnd_
|
||||
#define REMOTE_ProfEnd(wid) REMOTE(wid)->ProfEnd_
|
||||
#define LOCAL_UncaughtThrow LOCAL->UncaughtThrow_
|
||||
#define REMOTE_UncaughtThrow(wid) REMOTE(wid)->UncaughtThrow_
|
||||
#define LOCAL_DoingUndefp LOCAL->DoingUndefp_
|
||||
#define REMOTE_DoingUndefp(wid) REMOTE(wid)->DoingUndefp_
|
||||
#define LOCAL_StartLine LOCAL->StartLine_
|
||||
#define REMOTE_StartLine(wid) REMOTE(wid)->StartLine_
|
||||
#define LOCAL_ScratchPad LOCAL->ScratchPad_
|
||||
#define REMOTE_ScratchPad(wid) REMOTE(wid)->ScratchPad_
|
||||
#ifdef COROUTINING
|
||||
#define LOCAL_WokenGoals LOCAL->woken_goals
|
||||
#define LOCAL_AttsMutableList LOCAL->atts_mutable_list
|
||||
#define LOCAL_WokenGoals LOCAL->WokenGoals_
|
||||
#define REMOTE_WokenGoals(wid) REMOTE(wid)->WokenGoals_
|
||||
#define LOCAL_AttsMutableList LOCAL->AttsMutableList_
|
||||
#define REMOTE_AttsMutableList(wid) REMOTE(wid)->AttsMutableList_
|
||||
#endif
|
||||
|
||||
#define LOCAL_GcGeneration LOCAL->gc_generation
|
||||
#define LOCAL_GcPhase LOCAL->gc_phase
|
||||
#define LOCAL_GcCurrentPhase LOCAL->gc_current_phase
|
||||
#define LOCAL_GcCalls LOCAL->gc_calls
|
||||
#define LOCAL_TotGcTime LOCAL->tot_gc_time
|
||||
#define LOCAL_TotGcRecovered LOCAL->tot_gc_recovered
|
||||
#define LOCAL_LastGcTime LOCAL->last_gc_time
|
||||
#define LOCAL_LastSSTime LOCAL->last_ss_time
|
||||
#if LOW_LEVEL_TRACER
|
||||
#define LOCAL_total_choicepoints LOCAL->total_cps
|
||||
#endif
|
||||
#define LOCAL_consult_level LOCAL->consult_level_
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
#define LOCAL_SignalLock LOCAL->signal_lock
|
||||
#endif
|
||||
|
||||
#define LOCAL_total_marked LOCAL->tot_marked
|
||||
#define LOCAL_total_oldies LOCAL->tot_oldies
|
||||
#define LOCAL_current_B LOCAL->wl_current_B
|
||||
#define LOCAL_prev_HB LOCAL->wl_prev_HB
|
||||
#define LOCAL_HGEN LOCAL->hgen
|
||||
#define LOCAL_iptop LOCAL->ip_top
|
||||
#define LOCAL_GcGeneration LOCAL->GcGeneration_
|
||||
#define REMOTE_GcGeneration(wid) REMOTE(wid)->GcGeneration_
|
||||
#define LOCAL_GcPhase LOCAL->GcPhase_
|
||||
#define REMOTE_GcPhase(wid) REMOTE(wid)->GcPhase_
|
||||
#define LOCAL_GcCurrentPhase LOCAL->GcCurrentPhase_
|
||||
#define REMOTE_GcCurrentPhase(wid) REMOTE(wid)->GcCurrentPhase_
|
||||
#define LOCAL_GcCalls LOCAL->GcCalls_
|
||||
#define REMOTE_GcCalls(wid) REMOTE(wid)->GcCalls_
|
||||
#define LOCAL_TotGcTime LOCAL->TotGcTime_
|
||||
#define REMOTE_TotGcTime(wid) REMOTE(wid)->TotGcTime_
|
||||
#define LOCAL_TotGcRecovered LOCAL->TotGcRecovered_
|
||||
#define REMOTE_TotGcRecovered(wid) REMOTE(wid)->TotGcRecovered_
|
||||
#define LOCAL_LastGcTime LOCAL->LastGcTime_
|
||||
#define REMOTE_LastGcTime(wid) REMOTE(wid)->LastGcTime_
|
||||
#define LOCAL_LastSSTime LOCAL->LastSSTime_
|
||||
#define REMOTE_LastSSTime(wid) REMOTE(wid)->LastSSTime_
|
||||
|
||||
#define LOCAL_total_marked LOCAL->total_marked_
|
||||
#define REMOTE_total_marked(wid) REMOTE(wid)->total_marked_
|
||||
#define LOCAL_total_oldies LOCAL->total_oldies_
|
||||
#define REMOTE_total_oldies(wid) REMOTE(wid)->total_oldies_
|
||||
#define LOCAL_current_B LOCAL->current_B_
|
||||
#define REMOTE_current_B(wid) REMOTE(wid)->current_B_
|
||||
#define LOCAL_prev_HB LOCAL->prev_HB_
|
||||
#define REMOTE_prev_HB(wid) REMOTE(wid)->prev_HB_
|
||||
#define LOCAL_HGEN LOCAL->HGEN_
|
||||
#define REMOTE_HGEN(wid) REMOTE(wid)->HGEN_
|
||||
#define LOCAL_iptop LOCAL->iptop_
|
||||
#define REMOTE_iptop(wid) REMOTE(wid)->iptop_
|
||||
#if defined(GC_NO_TAGS)
|
||||
#define LOCAL_bp LOCAL->b_p
|
||||
#define LOCAL_bp LOCAL->bp_
|
||||
#define REMOTE_bp(wid) REMOTE(wid)->bp_
|
||||
#endif
|
||||
#define LOCAL_sTR LOCAL->wl_sTR
|
||||
#define LOCAL_sTR0 LOCAL->wl_sTR0
|
||||
#define LOCAL_new_TR LOCAL->new_tr
|
||||
#define LOCAL_cont_top0 LOCAL->conttop0
|
||||
#define LOCAL_cont_top LOCAL->conttop
|
||||
#define LOCAL_discard_trail_entries LOCAL->disc_trail_entries
|
||||
#define LOCAL_gc_ma_hash_table LOCAL->Gc_ma_hash_table
|
||||
#define LOCAL_gc_ma_h_top LOCAL->Gc_ma_h_top
|
||||
#define LOCAL_gc_ma_h_list LOCAL->Gc_ma_h_list
|
||||
#define LOCAL_gc_timestamp LOCAL->Gc_timestamp
|
||||
#define LOCAL_db_vec LOCAL->DB_vec
|
||||
#define LOCAL_db_vec0 LOCAL->DB_vec0
|
||||
#define LOCAL_db_root LOCAL->DB_root
|
||||
#define LOCAL_db_nil LOCAL->DB_nil
|
||||
#define LOCAL_gc_restore LOCAL->gc_restore
|
||||
#define LOCAL_DynamicArrays LOCAL->dynamic_arrays
|
||||
#define LOCAL_StaticArrays LOCAL->static_arrays
|
||||
#define LOCAL_GlobalVariables LOCAL->global_variables
|
||||
#define LOCAL_AllowRestart LOCAL->allow_restart
|
||||
#define LOCAL_sTR LOCAL->sTR_
|
||||
#define REMOTE_sTR(wid) REMOTE(wid)->sTR_
|
||||
#define LOCAL_sTR0 LOCAL->sTR0_
|
||||
#define REMOTE_sTR0(wid) REMOTE(wid)->sTR0_
|
||||
#define LOCAL_new_TR LOCAL->new_TR_
|
||||
#define REMOTE_new_TR(wid) REMOTE(wid)->new_TR_
|
||||
#define LOCAL_cont_top0 LOCAL->cont_top0_
|
||||
#define REMOTE_cont_top0(wid) REMOTE(wid)->cont_top0_
|
||||
#define LOCAL_cont_top LOCAL->cont_top_
|
||||
#define REMOTE_cont_top(wid) REMOTE(wid)->cont_top_
|
||||
#define LOCAL_discard_trail_entries LOCAL->discard_trail_entries_
|
||||
#define REMOTE_discard_trail_entries(wid) REMOTE(wid)->discard_trail_entries_
|
||||
#define LOCAL_gc_ma_hash_table LOCAL->gc_ma_hash_table_
|
||||
#define REMOTE_gc_ma_hash_table(wid) REMOTE(wid)->gc_ma_hash_table_
|
||||
#define LOCAL_gc_ma_h_top LOCAL->gc_ma_h_top_
|
||||
#define REMOTE_gc_ma_h_top(wid) REMOTE(wid)->gc_ma_h_top_
|
||||
#define LOCAL_gc_ma_h_list LOCAL->gc_ma_h_list_
|
||||
#define REMOTE_gc_ma_h_list(wid) REMOTE(wid)->gc_ma_h_list_
|
||||
#define LOCAL_gc_timestamp LOCAL->gc_timestamp_
|
||||
#define REMOTE_gc_timestamp(wid) REMOTE(wid)->gc_timestamp_
|
||||
#define LOCAL_db_vec LOCAL->db_vec_
|
||||
#define REMOTE_db_vec(wid) REMOTE(wid)->db_vec_
|
||||
#define LOCAL_db_vec0 LOCAL->db_vec0_
|
||||
#define REMOTE_db_vec0(wid) REMOTE(wid)->db_vec0_
|
||||
#define LOCAL_db_root LOCAL->db_root_
|
||||
#define REMOTE_db_root(wid) REMOTE(wid)->db_root_
|
||||
#define LOCAL_db_nil LOCAL->db_nil_
|
||||
#define REMOTE_db_nil(wid) REMOTE(wid)->db_nil_
|
||||
#define LOCAL_gc_restore LOCAL->gc_restore_
|
||||
#define REMOTE_gc_restore(wid) REMOTE(wid)->gc_restore_
|
||||
#define LOCAL_DynamicArrays LOCAL->DynamicArrays_
|
||||
#define REMOTE_DynamicArrays(wid) REMOTE(wid)->DynamicArrays_
|
||||
#define LOCAL_StaticArrays LOCAL->StaticArrays_
|
||||
#define REMOTE_StaticArrays(wid) REMOTE(wid)->StaticArrays_
|
||||
#define LOCAL_GlobalVariables LOCAL->GlobalVariables_
|
||||
#define REMOTE_GlobalVariables(wid) REMOTE(wid)->GlobalVariables_
|
||||
#define LOCAL_AllowRestart LOCAL->AllowRestart_
|
||||
#define REMOTE_AllowRestart(wid) REMOTE(wid)->AllowRestart_
|
||||
|
||||
#define LOCAL_CMemFirstBlock LOCAL->cmem_first_block
|
||||
#define LOCAL_CMemFirstBlockSz LOCAL->cmem_first_block_sz
|
||||
#define LOCAL_CMemFirstBlock LOCAL->CMemFirstBlock_
|
||||
#define REMOTE_CMemFirstBlock(wid) REMOTE(wid)->CMemFirstBlock_
|
||||
#define LOCAL_CMemFirstBlockSz LOCAL->CMemFirstBlockSz_
|
||||
#define REMOTE_CMemFirstBlockSz(wid) REMOTE(wid)->CMemFirstBlockSz_
|
||||
|
||||
#define LOCAL_LabelFirstArray LOCAL->label_first_array
|
||||
#define LOCAL_LabelFirstArraySz LOCAL->label_first_array_sz
|
||||
#define LOCAL_LabelFirstArray LOCAL->LabelFirstArray_
|
||||
#define REMOTE_LabelFirstArray(wid) REMOTE(wid)->LabelFirstArray_
|
||||
#define LOCAL_LabelFirstArraySz LOCAL->LabelFirstArraySz_
|
||||
#define REMOTE_LabelFirstArraySz(wid) REMOTE(wid)->LabelFirstArraySz_
|
||||
|
||||
#define LOCAL_PL_local_data_p LOCAL->Yap_ld_
|
||||
#define LOCAL_execution LOCAL->_execution
|
||||
#define LOCAL_PL_local_data_p LOCAL->PL_local_data_p_
|
||||
#define REMOTE_PL_local_data_p(wid) REMOTE(wid)->PL_local_data_p_
|
||||
#ifdef THREADS
|
||||
#define LOCAL_ThreadHandle LOCAL->thread_handle
|
||||
#define LOCAL_ThreadHandle LOCAL->ThreadHandle_
|
||||
#define REMOTE_ThreadHandle(wid) REMOTE(wid)->ThreadHandle_
|
||||
#endif /* THREADS */
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
#define LOCAL_optyap_data LOCAL->optyap_data
|
||||
#define LOCAL_optyap_data LOCAL->optyap_data_
|
||||
#define REMOTE_optyap_data(wid) REMOTE(wid)->optyap_data_
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
#define REMOTE_ThreadHandle(wid) (REMOTE(wid)->thread_handle)
|
||||
#define REMOTE_c_input_stream(wid) (REMOTE(wid)->c_input_stream)
|
||||
#define REMOTE_c_output_stream(wid) (REMOTE(wid)->c_output_stream)
|
||||
#define REMOTE_c_error_stream(wid) (REMOTE(wid)->c_error_stream)
|
||||
#define REMOTE_ActiveSignals(wid) (REMOTE(wid)->active_signals)
|
||||
#define REMOTE_SignalLock(wid) (REMOTE(wid)->signal_lock)
|
||||
#define REMOTE_ScratchPad(wid) (REMOTE(wid)->scratchpad)
|
||||
|
||||
#define LOCAL_InterruptsDisabled LOCAL->InterruptsDisabled_
|
||||
#define REMOTE_InterruptsDisabled(wid) REMOTE(wid)->InterruptsDisabled_
|
||||
#define LOCAL_execution LOCAL->execution_
|
||||
#define REMOTE_execution(wid) REMOTE(wid)->execution_
|
||||
#if LOW_LEVEL_TRACER
|
||||
#define LOCAL_total_choicepoints LOCAL->total_choicepoints_
|
||||
#define REMOTE_total_choicepoints(wid) REMOTE(wid)->total_choicepoints_
|
||||
#endif
|
||||
#define LOCAL_consult_level LOCAL->consult_level_
|
||||
#define REMOTE_consult_level(wid) REMOTE(wid)->consult_level_
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
#define LOCAL_SignalLock LOCAL->SignalLock_
|
||||
#define REMOTE_SignalLock(wid) REMOTE(wid)->SignalLock_
|
||||
#endif
|
||||
|
||||
|
42
H/hglobals.h
42
H/hglobals.h
@ -1,5 +1,5 @@
|
||||
|
||||
/* This file, hglobals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, hglobals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/GLOBALS instead */
|
||||
|
||||
|
||||
@ -18,42 +18,38 @@
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct global_data {
|
||||
|
||||
int initialised;
|
||||
int initialised_from_pl;
|
||||
int pl_argc;
|
||||
char **pl_argv;
|
||||
int Initialised_;
|
||||
int InitialisedFromPL_;
|
||||
int PL_Argc_;
|
||||
char** PL_Argv_;
|
||||
|
||||
struct halt_hook *yap_halt_hook;
|
||||
struct halt_hook* HaltHooks_;
|
||||
|
||||
int allow_local_expansion;
|
||||
int allow_global_expansion;
|
||||
int allow_trail_expansion;
|
||||
UInt size_of_overflow;
|
||||
int AllowLocalExpansion_;
|
||||
int AllowGlobalExpansion_;
|
||||
int AllowTrailExpansion_;
|
||||
UInt SizeOfOverflow_;
|
||||
|
||||
UInt agc_threshold;
|
||||
Agc_hook agc_hook;
|
||||
UInt AGcThreshold_;
|
||||
Agc_hook AGCHook_;
|
||||
|
||||
#if THREADS
|
||||
|
||||
UInt n_of_threads;
|
||||
UInt NOfThreads_;
|
||||
|
||||
UInt n_of_threads_created;
|
||||
UInt NOfThreadsCreated_;
|
||||
|
||||
UInt threads_total_time;
|
||||
UInt ThreadsTotalTime_;
|
||||
|
||||
lockvar ThreadHandlesLock_;
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
|
||||
lockvar bgl;
|
||||
lockvar BGL_;
|
||||
#endif
|
||||
|
||||
#ifdef THREADS
|
||||
lockvar thread_handles_lock;
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
struct global_optyap_data optyap_data;
|
||||
struct global_optyap_data optyap_data_;
|
||||
#endif /* YAPOR || TABLING */
|
||||
} w_shared;
|
||||
|
229
H/hlocals.h
229
H/hlocals.h
@ -1,142 +1,131 @@
|
||||
|
||||
/* This file, hlocals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, hlocals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/LOCALS instead */
|
||||
|
||||
|
||||
typedef struct worker_local {
|
||||
|
||||
int c_input_stream;
|
||||
int c_output_stream;
|
||||
int c_error_stream;
|
||||
int c_input_stream_;
|
||||
int c_output_stream_;
|
||||
int c_error_stream_;
|
||||
|
||||
restoreinfo rinfo;
|
||||
CELL* OldASP_;
|
||||
CELL* OldLCL0_;
|
||||
tr_fr_ptr OldTR_;
|
||||
CELL* OldGlobalBase_;
|
||||
CELL* OldH_;
|
||||
CELL* OldH0_;
|
||||
ADDR OldTrailBase_;
|
||||
ADDR OldTrailTop_;
|
||||
ADDR OldHeapBase_;
|
||||
ADDR OldHeapTop_;
|
||||
Int ClDiff_;
|
||||
Int GDiff_;
|
||||
Int HDiff_;
|
||||
Int GDiff0_;
|
||||
Int GSplit_;
|
||||
Int LDiff_;
|
||||
Int TrDiff_;
|
||||
Int XDiff_;
|
||||
Int DelayDiff_;
|
||||
Int BaseDiff_;
|
||||
|
||||
YAP_ULONG_LONG ReductionsCounter_;
|
||||
YAP_ULONG_LONG PredEntriesCounter_;
|
||||
YAP_ULONG_LONG RetriesCounter_;
|
||||
int ReductionsCounterOn_;
|
||||
int PredEntriesCounterOn_;
|
||||
int RetriesCounterOn_;
|
||||
|
||||
|
||||
union CONSULT_OBJ* ConsultSp_;
|
||||
|
||||
UInt ConsultCapacity_;
|
||||
|
||||
union CONSULT_OBJ* ConsultBase_;
|
||||
|
||||
union CONSULT_OBJ* ConsultLow_;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct reduction_counters call_counters;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int interrupts_disabled;
|
||||
|
||||
|
||||
union CONSULT_OBJ* consultsp;
|
||||
|
||||
UInt consultcapacity;
|
||||
|
||||
union CONSULT_OBJ* consultbase;
|
||||
|
||||
union CONSULT_OBJ* consultlow;
|
||||
|
||||
Term global_arena;
|
||||
UInt global_arena_overflows;
|
||||
Int arena_overflows;
|
||||
Int depth_arenas;
|
||||
int arith_error;
|
||||
struct pred_entry* last_asserted_pred;
|
||||
int debug_on;
|
||||
char* scanner_stack;
|
||||
struct scanner_extra_alloc* scanner_extra_blocks;
|
||||
struct DB_TERM* ball_term;
|
||||
UInt active_signals;
|
||||
UInt i_pred_arity;
|
||||
yamop* prof_end;
|
||||
int uncaught_throw;
|
||||
int doing_undefp;
|
||||
Int start_line;
|
||||
scratch_block scratchpad;
|
||||
Term GlobalArena_;
|
||||
UInt GlobalArenaOverflows_;
|
||||
Int ArenaOverflows_;
|
||||
Int DepthArenas_;
|
||||
int ArithError_;
|
||||
struct pred_entry* LastAssertedPred_;
|
||||
int DebugOn_;
|
||||
char* ScannerStack_;
|
||||
struct scanner_extra_alloc* ScannerExtraBlocks_;
|
||||
struct DB_TERM* BallTerm_;
|
||||
UInt ActiveSignals_;
|
||||
UInt IPredArity_;
|
||||
yamop* ProfEnd_;
|
||||
int UncaughtThrow_;
|
||||
int DoingUndefp_;
|
||||
Int StartLine_;
|
||||
scratch_block ScratchPad_;
|
||||
#ifdef COROUTINING
|
||||
Term woken_goals;
|
||||
Term atts_mutable_list;
|
||||
Term WokenGoals_;
|
||||
Term AttsMutableList_;
|
||||
#endif
|
||||
|
||||
Term gc_generation;
|
||||
Term gc_phase;
|
||||
UInt gc_current_phase;
|
||||
UInt gc_calls;
|
||||
Int tot_gc_time;
|
||||
YAP_ULONG_LONG tot_gc_recovered;
|
||||
Int last_gc_time;
|
||||
Int last_ss_time;
|
||||
Term GcGeneration_;
|
||||
Term GcPhase_;
|
||||
UInt GcCurrentPhase_;
|
||||
UInt GcCalls_;
|
||||
Int TotGcTime_;
|
||||
YAP_ULONG_LONG TotGcRecovered_;
|
||||
Int LastGcTime_;
|
||||
Int LastSSTime_;
|
||||
|
||||
Int total_marked_;
|
||||
Int total_oldies_;
|
||||
struct choicept* current_B_;
|
||||
CELL* prev_HB_;
|
||||
CELL* HGEN_;
|
||||
CELL** iptop_;
|
||||
#if defined(GC_NO_TAGS)
|
||||
char* bp_;
|
||||
#endif
|
||||
tr_fr_ptr sTR_;
|
||||
tr_fr_ptr sTR0_;
|
||||
tr_fr_ptr new_TR_;
|
||||
struct gc_mark_continuation* cont_top0_;
|
||||
struct gc_mark_continuation* cont_top_;
|
||||
int discard_trail_entries_;
|
||||
gc_ma_hash_entry gc_ma_hash_table_[GC_MAVARS_HASH_SIZE];
|
||||
gc_ma_hash_entry* gc_ma_h_top_;
|
||||
gc_ma_hash_entry* gc_ma_h_list_;
|
||||
UInt gc_timestamp_;
|
||||
ADDR db_vec_;
|
||||
ADDR db_vec0_;
|
||||
struct RB_red_blk_node* db_root_;
|
||||
struct RB_red_blk_node* db_nil_;
|
||||
sigjmp_buf gc_restore_;
|
||||
struct array_entry* DynamicArrays_;
|
||||
struct static_array_entry* StaticArrays_;
|
||||
struct global_entry* GlobalVariables_;
|
||||
int AllowRestart_;
|
||||
|
||||
struct mem_blk* CMemFirstBlock_;
|
||||
UInt CMemFirstBlockSz_;
|
||||
|
||||
Int* LabelFirstArray_;
|
||||
UInt LabelFirstArraySz_;
|
||||
|
||||
struct PL_local_data* PL_local_data_p_;
|
||||
#ifdef THREADS
|
||||
struct thandle ThreadHandle_;
|
||||
#endif /* THREADS */
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
struct local_optyap_data optyap_data_;
|
||||
#endif /* YAPOR || TABLING */
|
||||
int InterruptsDisabled_;
|
||||
struct open_query_struct* execution_;
|
||||
#if LOW_LEVEL_TRACER
|
||||
Int total_cps;
|
||||
Int total_choicepoints_;
|
||||
#endif
|
||||
int consult_level_;
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
lockvar signal_lock;
|
||||
lockvar SignalLock_;
|
||||
#endif
|
||||
|
||||
Int tot_marked;
|
||||
Int tot_oldies;
|
||||
struct choicept* wl_current_B;
|
||||
CELL* wl_prev_HB;
|
||||
CELL* hgen;
|
||||
CELL** ip_top;
|
||||
|
||||
#if defined(GC_NO_TAGS)
|
||||
char* b_p;
|
||||
#endif
|
||||
tr_fr_ptr wl_sTR;
|
||||
tr_fr_ptr wl_sTR0;
|
||||
tr_fr_ptr new_tr;
|
||||
struct gc_mark_continuation* conttop0;
|
||||
struct gc_mark_continuation* conttop;
|
||||
int disc_trail_entries;
|
||||
gc_ma_hash_entry Gc_ma_hash_table[GC_MAVARS_HASH_SIZE];
|
||||
gc_ma_hash_entry* Gc_ma_h_top;
|
||||
gc_ma_hash_entry* Gc_ma_h_list;
|
||||
UInt Gc_timestamp;
|
||||
ADDR DB_vec;
|
||||
ADDR DB_vec0;
|
||||
struct RB_red_blk_node* DB_root;
|
||||
struct RB_red_blk_node* DB_nil;
|
||||
sigjmp_buf gc_restore;
|
||||
struct array_entry* dynamic_arrays;
|
||||
struct static_array_entry* static_arrays;
|
||||
struct global_entry* global_variables;
|
||||
int allow_restart;
|
||||
|
||||
struct mem_blk* cmem_first_block;
|
||||
UInt cmem_first_block_sz;
|
||||
|
||||
Int* label_first_array;
|
||||
UInt label_first_array_sz;
|
||||
|
||||
struct PL_local_data* Yap_ld_;
|
||||
struct open_query_struct* _execution;
|
||||
#ifdef THREADS
|
||||
struct thandle thread_handle;
|
||||
#endif /* THREADS */
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
struct local_optyap_data optyap_data;
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
#define REMOTE_ThreadHandle(wid) (REMOTE(wid)->thread_handle)
|
||||
#define REMOTE_c_input_stream(wid) (REMOTE(wid)->c_input_stream)
|
||||
#define REMOTE_c_output_stream(wid) (REMOTE(wid)->c_output_stream)
|
||||
#define REMOTE_c_error_stream(wid) (REMOTE(wid)->c_error_stream)
|
||||
#define REMOTE_ActiveSignals(wid) (REMOTE(wid)->active_signals)
|
||||
#define REMOTE_SignalLock(wid) (REMOTE(wid)->signal_lock)
|
||||
#define REMOTE_ScratchPad(wid) (REMOTE(wid)->scratchpad)
|
||||
|
||||
} w_local;
|
||||
|
10
H/iglobals.h
10
H/iglobals.h
@ -1,5 +1,5 @@
|
||||
|
||||
/* This file, iglobals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, iglobals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/GLOBALS instead */
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
static void InitGlobal(void) {
|
||||
|
||||
GLOBAL_Initialised = FALSE;
|
||||
@ -43,16 +42,13 @@ static void InitGlobal(void) {
|
||||
GLOBAL_NOfThreadsCreated = 1;
|
||||
|
||||
GLOBAL_ThreadsTotalTime = 0L;
|
||||
#endif
|
||||
|
||||
INIT_LOCK(GLOBAL_ThreadHandlesLock);
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
|
||||
INIT_LOCK(GLOBAL_BGL);
|
||||
#endif
|
||||
|
||||
#ifdef THREADS
|
||||
INIT_LOCK(GLOBAL_ThreadHandlesLock);
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
205
H/ilocals.h
205
H/ilocals.h
@ -1,140 +1,131 @@
|
||||
|
||||
/* This file, ilocals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, ilocals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/LOCALS instead */
|
||||
|
||||
|
||||
static void InitWorker(int wid) {
|
||||
|
||||
REMOTE(wid)->c_input_stream = 0;
|
||||
REMOTE(wid)->c_output_stream = 1;
|
||||
REMOTE(wid)->c_error_stream = 2;
|
||||
REMOTE_c_input_stream(wid) = 0;
|
||||
REMOTE_c_output_stream(wid) = 1;
|
||||
REMOTE_c_error_stream(wid) = 2;
|
||||
|
||||
REMOTE(wid)->rinfo.old_ASP = NULL;
|
||||
REMOTE(wid)->rinfo.old_LCL0 = NULL;
|
||||
REMOTE(wid)->rinfo.old_TR = NULL;
|
||||
REMOTE(wid)->rinfo.old_GlobalBase = NULL;
|
||||
REMOTE(wid)->rinfo.old_H = NULL;
|
||||
REMOTE(wid)->rinfo.old_H0 = NULL;
|
||||
REMOTE(wid)->rinfo.old_TrailBase = NULL;
|
||||
REMOTE(wid)->rinfo.old_TrailTop = NULL;
|
||||
REMOTE(wid)->rinfo.old_HeapBase = NULL;
|
||||
REMOTE(wid)->rinfo.old_HeapTop = NULL;
|
||||
REMOTE(wid)->rinfo.cl_diff = 0L;
|
||||
REMOTE(wid)->rinfo.g_diff = 0L;
|
||||
REMOTE(wid)->rinfo.h_diff = 0L;
|
||||
REMOTE(wid)->rinfo.g_diff0 = 0L;
|
||||
REMOTE(wid)->rinfo.g_split = NULL;
|
||||
REMOTE(wid)->rinfo.l_diff = 0L;
|
||||
REMOTE(wid)->rinfo.tr_diff = 0L;
|
||||
REMOTE(wid)->rinfo.x_diff = 0L;
|
||||
REMOTE(wid)->rinfo.delay_diff = 0L;
|
||||
REMOTE(wid)->rinfo.base_diff = 0L;
|
||||
REMOTE(wid)->call_counters.reductions = 0L;
|
||||
REMOTE(wid)->call_counters.reductions_retries = 0L;
|
||||
REMOTE(wid)->call_counters.retries = 0L;
|
||||
REMOTE(wid)->call_counters.reductions_on = 0L;
|
||||
REMOTE(wid)->call_counters.reductions_retries_on = 0L;
|
||||
REMOTE(wid)->call_counters.retries_on = 0L;
|
||||
REMOTE(wid)->interrupts_disabled = FALSE;
|
||||
REMOTE_OldASP(wid) = NULL;
|
||||
REMOTE_OldLCL0(wid) = NULL;
|
||||
REMOTE_OldTR(wid) = NULL;
|
||||
REMOTE_OldGlobalBase(wid) = NULL;
|
||||
REMOTE_OldH(wid) = NULL;
|
||||
REMOTE_OldH0(wid) = NULL;
|
||||
REMOTE_OldTrailBase(wid) = NULL;
|
||||
REMOTE_OldTrailTop(wid) = NULL;
|
||||
REMOTE_OldHeapBase(wid) = NULL;
|
||||
REMOTE_OldHeapTop(wid) = NULL;
|
||||
REMOTE_ClDiff(wid) = 0L;
|
||||
REMOTE_GDiff(wid) = 0L;
|
||||
REMOTE_HDiff(wid) = 0L;
|
||||
REMOTE_GDiff0(wid) = 0L;
|
||||
REMOTE_GSplit(wid) = NULL;
|
||||
REMOTE_LDiff(wid) = 0L;
|
||||
REMOTE_TrDiff(wid) = 0L;
|
||||
REMOTE_XDiff(wid) = 0L;
|
||||
REMOTE_DelayDiff(wid) = 0L;
|
||||
REMOTE_BaseDiff(wid) = 0L;
|
||||
|
||||
REMOTE_ReductionsCounter(wid) = 0L;
|
||||
REMOTE_PredEntriesCounter(wid) = 0L;
|
||||
REMOTE_RetriesCounter(wid) = 0L;
|
||||
REMOTE_ReductionsCounterOn(wid) = 0L;
|
||||
REMOTE_PredEntriesCounterOn(wid) = 0L;
|
||||
REMOTE_RetriesCounterOn(wid) = 0L;
|
||||
|
||||
|
||||
REMOTE(wid)->consultsp = NULL;
|
||||
REMOTE_ConsultSp(wid) = NULL;
|
||||
|
||||
|
||||
|
||||
REMOTE(wid)->consultbase = NULL;
|
||||
REMOTE_ConsultBase(wid) = NULL;
|
||||
|
||||
REMOTE(wid)->consultlow = NULL;
|
||||
REMOTE_ConsultLow(wid) = NULL;
|
||||
|
||||
REMOTE(wid)->global_arena = 0L;
|
||||
REMOTE(wid)->global_arena_overflows = 0L;
|
||||
REMOTE(wid)->arena_overflows = 0L;
|
||||
REMOTE(wid)->depth_arenas = 0;
|
||||
REMOTE(wid)->arith_error = FALSE;
|
||||
REMOTE(wid)->last_asserted_pred = NULL;
|
||||
REMOTE(wid)->debug_on = FALSE;
|
||||
REMOTE(wid)->scanner_stack = NULL;
|
||||
REMOTE(wid)->scanner_extra_blocks = NULL;
|
||||
REMOTE(wid)->ball_term = NULL;
|
||||
REMOTE(wid)->active_signals = 0L;
|
||||
REMOTE(wid)->i_pred_arity = 0L;
|
||||
REMOTE(wid)->prof_end = NULL;
|
||||
REMOTE(wid)->uncaught_throw = FALSE;
|
||||
REMOTE(wid)->doing_undefp = FALSE;
|
||||
REMOTE(wid)->start_line = 0L;
|
||||
REMOTE_GlobalArena(wid) = 0L;
|
||||
REMOTE_GlobalArenaOverflows(wid) = 0L;
|
||||
REMOTE_ArenaOverflows(wid) = 0L;
|
||||
REMOTE_DepthArenas(wid) = 0;
|
||||
REMOTE_ArithError(wid) = FALSE;
|
||||
REMOTE_LastAssertedPred(wid) = NULL;
|
||||
REMOTE_DebugOn(wid) = FALSE;
|
||||
REMOTE_ScannerStack(wid) = NULL;
|
||||
REMOTE_ScannerExtraBlocks(wid) = NULL;
|
||||
REMOTE_BallTerm(wid) = NULL;
|
||||
REMOTE_ActiveSignals(wid) = 0L;
|
||||
REMOTE_IPredArity(wid) = 0L;
|
||||
REMOTE_ProfEnd(wid) = NULL;
|
||||
REMOTE_UncaughtThrow(wid) = FALSE;
|
||||
REMOTE_DoingUndefp(wid) = FALSE;
|
||||
REMOTE_StartLine(wid) = 0L;
|
||||
InitScratchPad(wid);
|
||||
#ifdef COROUTINING
|
||||
REMOTE(wid)->woken_goals = 0L;
|
||||
REMOTE(wid)->atts_mutable_list = 0L;
|
||||
REMOTE_WokenGoals(wid) = 0L;
|
||||
REMOTE_AttsMutableList(wid) = 0L;
|
||||
#endif
|
||||
|
||||
REMOTE(wid)->gc_generation = 0L;
|
||||
REMOTE(wid)->gc_phase = 0L;
|
||||
REMOTE(wid)->gc_current_phase = 0L;
|
||||
REMOTE(wid)->gc_calls = 0L;
|
||||
REMOTE(wid)->tot_gc_time = 0L;
|
||||
REMOTE(wid)->tot_gc_recovered = 0L;
|
||||
REMOTE(wid)->last_gc_time = 0L;
|
||||
REMOTE(wid)->last_ss_time = 0L;
|
||||
#if LOW_LEVEL_TRACER
|
||||
REMOTE(wid)->total_cps = 0;
|
||||
#endif
|
||||
REMOTE(wid)->consult_level_ = 0;
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
INIT_LOCK(REMOTE(wid)->signal_lock);
|
||||
#endif
|
||||
|
||||
REMOTE(wid)->tot_marked = 0L;
|
||||
REMOTE(wid)->tot_oldies = 0L;
|
||||
REMOTE(wid)->wl_current_B = NULL;
|
||||
REMOTE(wid)->wl_prev_HB = NULL;
|
||||
REMOTE(wid)->hgen = NULL;
|
||||
REMOTE(wid)->ip_top = NULL;
|
||||
REMOTE_GcGeneration(wid) = 0L;
|
||||
REMOTE_GcPhase(wid) = 0L;
|
||||
REMOTE_GcCurrentPhase(wid) = 0L;
|
||||
REMOTE_GcCalls(wid) = 0L;
|
||||
REMOTE_TotGcTime(wid) = 0L;
|
||||
REMOTE_TotGcRecovered(wid) = 0L;
|
||||
REMOTE_LastGcTime(wid) = 0L;
|
||||
REMOTE_LastSSTime(wid) = 0L;
|
||||
|
||||
REMOTE_total_marked(wid) = 0L;
|
||||
REMOTE_total_oldies(wid) = 0L;
|
||||
REMOTE_current_B(wid) = NULL;
|
||||
REMOTE_prev_HB(wid) = NULL;
|
||||
REMOTE_HGEN(wid) = NULL;
|
||||
REMOTE_iptop(wid) = NULL;
|
||||
#if defined(GC_NO_TAGS)
|
||||
REMOTE(wid)->b_p = NULL;
|
||||
REMOTE_bp(wid) = NULL;
|
||||
#endif
|
||||
REMOTE(wid)->wl_sTR = NULL;
|
||||
REMOTE(wid)->wl_sTR0 = NULL;
|
||||
REMOTE(wid)->new_tr = NULL;
|
||||
REMOTE(wid)->conttop0 = NULL;
|
||||
REMOTE(wid)->conttop = NULL;
|
||||
REMOTE(wid)->disc_trail_entries = 0;
|
||||
REMOTE_sTR(wid) = NULL;
|
||||
REMOTE_sTR0(wid) = NULL;
|
||||
REMOTE_new_TR(wid) = NULL;
|
||||
REMOTE_cont_top0(wid) = NULL;
|
||||
REMOTE_cont_top(wid) = NULL;
|
||||
REMOTE_discard_trail_entries(wid) = 0;
|
||||
|
||||
REMOTE(wid)->Gc_ma_h_top = NULL;
|
||||
REMOTE(wid)->Gc_ma_h_list = NULL;
|
||||
REMOTE(wid)->Gc_timestamp = 0L;
|
||||
REMOTE(wid)->DB_vec = NULL;
|
||||
REMOTE(wid)->DB_vec0 = NULL;
|
||||
REMOTE(wid)->DB_root = NULL;
|
||||
REMOTE(wid)->DB_nil = NULL;
|
||||
REMOTE_gc_ma_h_top(wid) = NULL;
|
||||
REMOTE_gc_ma_h_list(wid) = NULL;
|
||||
REMOTE_gc_timestamp(wid) = 0L;
|
||||
REMOTE_db_vec(wid) = NULL;
|
||||
REMOTE_db_vec0(wid) = NULL;
|
||||
REMOTE_db_root(wid) = NULL;
|
||||
REMOTE_db_nil(wid) = NULL;
|
||||
|
||||
REMOTE(wid)->dynamic_arrays = NULL;
|
||||
REMOTE(wid)->static_arrays = NULL;
|
||||
REMOTE(wid)->global_variables = NULL;
|
||||
REMOTE(wid)->allow_restart = FALSE;
|
||||
REMOTE_DynamicArrays(wid) = NULL;
|
||||
REMOTE_StaticArrays(wid) = NULL;
|
||||
REMOTE_GlobalVariables(wid) = NULL;
|
||||
REMOTE_AllowRestart(wid) = FALSE;
|
||||
|
||||
REMOTE(wid)->cmem_first_block = NULL;
|
||||
REMOTE(wid)->cmem_first_block_sz = 0L;
|
||||
REMOTE_CMemFirstBlock(wid) = NULL;
|
||||
REMOTE_CMemFirstBlockSz(wid) = 0L;
|
||||
|
||||
REMOTE(wid)->label_first_array = NULL;
|
||||
REMOTE(wid)->label_first_array_sz = 0L;
|
||||
REMOTE_LabelFirstArray(wid) = NULL;
|
||||
REMOTE_LabelFirstArraySz(wid) = 0L;
|
||||
|
||||
REMOTE(wid)->Yap_ld_ = Yap_InitThreadIO(wid);
|
||||
REMOTE(wid)->_execution = NULL;
|
||||
REMOTE_PL_local_data_p(wid) = Yap_InitThreadIO(wid);
|
||||
#ifdef THREADS
|
||||
InitThreadHandle(wid);
|
||||
#endif /* THREADS */
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
Yap_init_local_optyap_data(wid);
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
#define REMOTE_ThreadHandle(wid) (REMOTE(wid)->thread_handle)
|
||||
#define REMOTE_c_input_stream(wid) (REMOTE(wid)->c_input_stream)
|
||||
#define REMOTE_c_output_stream(wid) (REMOTE(wid)->c_output_stream)
|
||||
#define REMOTE_c_error_stream(wid) (REMOTE(wid)->c_error_stream)
|
||||
#define REMOTE_ActiveSignals(wid) (REMOTE(wid)->active_signals)
|
||||
#define REMOTE_SignalLock(wid) (REMOTE(wid)->signal_lock)
|
||||
#define REMOTE_ScratchPad(wid) (REMOTE(wid)->scratchpad)
|
||||
|
||||
REMOTE_InterruptsDisabled(wid) = FALSE;
|
||||
REMOTE_execution(wid) = NULL;
|
||||
#if LOW_LEVEL_TRACER
|
||||
REMOTE_total_choicepoints(wid) = 0;
|
||||
#endif
|
||||
REMOTE_consult_level(wid) = 0;
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
INIT_LOCK(REMOTE_SignalLock(wid));
|
||||
#endif
|
||||
}
|
||||
|
10
H/rglobals.h
10
H/rglobals.h
@ -1,5 +1,5 @@
|
||||
|
||||
/* This file, rglobals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, rglobals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/GLOBALS instead */
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
static void RestoreGlobal(void) {
|
||||
|
||||
|
||||
@ -43,16 +42,13 @@ static void RestoreGlobal(void) {
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
REINIT_LOCK(GLOBAL_ThreadHandlesLock);
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
|
||||
REINIT_LOCK(GLOBAL_BGL);
|
||||
#endif
|
||||
|
||||
#ifdef THREADS
|
||||
REINIT_LOCK(GLOBAL_ThreadHandlesLock);
|
||||
#endif
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
41
H/rlocals.h
41
H/rlocals.h
@ -1,5 +1,5 @@
|
||||
|
||||
/* This file, rlocals.h, was generated automatically by "yap -L misc/buildheap"
|
||||
/* This file, rlocals.h, was generated automatically by "yap -L misc/buildlocalglobal"
|
||||
please do not update, update misc/LOCALS instead */
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ static void RestoreWorker(int wid USES_REGS) {
|
||||
|
||||
|
||||
|
||||
REMOTE(wid)->global_arena = TermToGlobalOrAtomAdjust(REMOTE(wid)->global_arena);
|
||||
REMOTE_GlobalArena(wid) = TermToGlobalOrAtomAdjust(REMOTE_GlobalArena(wid));
|
||||
|
||||
|
||||
|
||||
@ -64,26 +64,18 @@ static void RestoreWorker(int wid USES_REGS) {
|
||||
|
||||
|
||||
#ifdef COROUTINING
|
||||
REMOTE(wid)->woken_goals = TermToGlobalAdjust(REMOTE(wid)->woken_goals);
|
||||
REMOTE(wid)->atts_mutable_list = TermToGlobalAdjust(REMOTE(wid)->atts_mutable_list);
|
||||
REMOTE_WokenGoals(wid) = TermToGlobalAdjust(REMOTE_WokenGoals(wid));
|
||||
REMOTE_AttsMutableList(wid) = TermToGlobalAdjust(REMOTE_AttsMutableList(wid));
|
||||
#endif
|
||||
|
||||
REMOTE(wid)->gc_generation = TermToGlobalAdjust(REMOTE(wid)->gc_generation);
|
||||
REMOTE(wid)->gc_phase = TermToGlobalAdjust(REMOTE(wid)->gc_phase);
|
||||
REMOTE_GcGeneration(wid) = TermToGlobalAdjust(REMOTE_GcGeneration(wid));
|
||||
REMOTE_GcPhase(wid) = TermToGlobalAdjust(REMOTE_GcPhase(wid));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if LOW_LEVEL_TRACER
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
REINIT_LOCK(REMOTE(wid)->signal_lock);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@ -109,10 +101,9 @@ static void RestoreWorker(int wid USES_REGS) {
|
||||
|
||||
|
||||
|
||||
REMOTE(wid)->dynamic_arrays = PtoArrayEAdjust(REMOTE(wid)->dynamic_arrays);
|
||||
REMOTE(wid)->static_arrays = PtoArraySAdjust(REMOTE(wid)->static_arrays);
|
||||
REMOTE(wid)->global_variables = PtoGlobalEAdjust(REMOTE(wid)->global_variables);
|
||||
|
||||
REMOTE_DynamicArrays(wid) = PtoArrayEAdjust(REMOTE_DynamicArrays(wid));
|
||||
REMOTE_StaticArrays(wid) = PtoArraySAdjust(REMOTE_StaticArrays(wid));
|
||||
REMOTE_GlobalVariables(wid) = PtoGlobalEAdjust(REMOTE_GlobalVariables(wid));
|
||||
|
||||
|
||||
|
||||
@ -129,12 +120,12 @@ static void RestoreWorker(int wid USES_REGS) {
|
||||
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
#define REMOTE_ThreadHandle(wid) (REMOTE(wid)->thread_handle)
|
||||
#define REMOTE_c_input_stream(wid) (REMOTE(wid)->c_input_stream)
|
||||
#define REMOTE_c_output_stream(wid) (REMOTE(wid)->c_output_stream)
|
||||
#define REMOTE_c_error_stream(wid) (REMOTE(wid)->c_error_stream)
|
||||
#define REMOTE_ActiveSignals(wid) (REMOTE(wid)->active_signals)
|
||||
#define REMOTE_SignalLock(wid) (REMOTE(wid)->signal_lock)
|
||||
#define REMOTE_ScratchPad(wid) (REMOTE(wid)->scratchpad)
|
||||
|
||||
#if LOW_LEVEL_TRACER
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
REINIT_LOCK(REMOTE_SignalLock(wid));
|
||||
#endif
|
||||
}
|
||||
|
@ -224,72 +224,72 @@ struct global_optyap_data {
|
||||
#endif /* TABLING */
|
||||
};
|
||||
|
||||
#define GLOBAL_max_pages (Yap_optyap_data.pages.max_pages)
|
||||
#define GLOBAL_pages_void (Yap_optyap_data.pages.void_pages)
|
||||
#define GLOBAL_pages_or_fr (Yap_optyap_data.pages.or_frame_pages)
|
||||
#define GLOBAL_pages_qg_sol_fr (Yap_optyap_data.pages.query_goal_solution_frame_pages)
|
||||
#define GLOBAL_pages_qg_ans_fr (Yap_optyap_data.pages.query_goal_answer_frame_pages)
|
||||
#define GLOBAL_pages_tg_sol_fr (Yap_optyap_data.pages.table_subgoal_solution_frame_pages)
|
||||
#define GLOBAL_pages_tg_ans_fr (Yap_optyap_data.pages.table_subgoal_answer_frame_pages)
|
||||
#define GLOBAL_pages_tab_ent (Yap_optyap_data.pages.table_entry_pages)
|
||||
#define GLOBAL_pages_sg_fr (Yap_optyap_data.pages.subgoal_frame_pages)
|
||||
#define GLOBAL_pages_dep_fr (Yap_optyap_data.pages.dependency_frame_pages)
|
||||
#define GLOBAL_pages_sg_node (Yap_optyap_data.pages.subgoal_trie_node_pages)
|
||||
#define GLOBAL_pages_ans_node (Yap_optyap_data.pages.answer_trie_node_pages)
|
||||
#define GLOBAL_pages_gt_node (Yap_optyap_data.pages.global_trie_node_pages)
|
||||
#define GLOBAL_pages_sg_hash (Yap_optyap_data.pages.subgoal_trie_hash_pages)
|
||||
#define GLOBAL_pages_ans_hash (Yap_optyap_data.pages.answer_trie_hash_pages)
|
||||
#define GLOBAL_pages_gt_hash (Yap_optyap_data.pages.global_trie_hash_pages)
|
||||
#define GLOBAL_pages_susp_fr (Yap_optyap_data.pages.suspension_frame_pages)
|
||||
#define GLOBAL_scheduler_loop (Yap_optyap_data.scheduler_loop)
|
||||
#define GLOBAL_delayed_release_load (Yap_optyap_data.delayed_release_load)
|
||||
#define GLOBAL_number_workers (Yap_optyap_data.number_workers)
|
||||
#define GLOBAL_worker_pid(worker) (Yap_optyap_data.worker_pid[worker])
|
||||
#define GLOBAL_master_worker (Yap_optyap_data.master_worker)
|
||||
#define GLOBAL_execution_time (Yap_optyap_data.execution_time)
|
||||
#define GLOBAL_best_times(time) (Yap_optyap_data.best_execution_times[time])
|
||||
#define GLOBAL_number_goals (Yap_optyap_data.number_of_executed_goals)
|
||||
#define GLOBAL_performance_mode (Yap_optyap_data.performance_mode)
|
||||
#define GLOBAL_max_pages (GLOBAL_optyap_data.pages.max_pages)
|
||||
#define GLOBAL_pages_void (GLOBAL_optyap_data.pages.void_pages)
|
||||
#define GLOBAL_pages_or_fr (GLOBAL_optyap_data.pages.or_frame_pages)
|
||||
#define GLOBAL_pages_qg_sol_fr (GLOBAL_optyap_data.pages.query_goal_solution_frame_pages)
|
||||
#define GLOBAL_pages_qg_ans_fr (GLOBAL_optyap_data.pages.query_goal_answer_frame_pages)
|
||||
#define GLOBAL_pages_tg_sol_fr (GLOBAL_optyap_data.pages.table_subgoal_solution_frame_pages)
|
||||
#define GLOBAL_pages_tg_ans_fr (GLOBAL_optyap_data.pages.table_subgoal_answer_frame_pages)
|
||||
#define GLOBAL_pages_tab_ent (GLOBAL_optyap_data.pages.table_entry_pages)
|
||||
#define GLOBAL_pages_sg_fr (GLOBAL_optyap_data.pages.subgoal_frame_pages)
|
||||
#define GLOBAL_pages_dep_fr (GLOBAL_optyap_data.pages.dependency_frame_pages)
|
||||
#define GLOBAL_pages_sg_node (GLOBAL_optyap_data.pages.subgoal_trie_node_pages)
|
||||
#define GLOBAL_pages_ans_node (GLOBAL_optyap_data.pages.answer_trie_node_pages)
|
||||
#define GLOBAL_pages_gt_node (GLOBAL_optyap_data.pages.global_trie_node_pages)
|
||||
#define GLOBAL_pages_sg_hash (GLOBAL_optyap_data.pages.subgoal_trie_hash_pages)
|
||||
#define GLOBAL_pages_ans_hash (GLOBAL_optyap_data.pages.answer_trie_hash_pages)
|
||||
#define GLOBAL_pages_gt_hash (GLOBAL_optyap_data.pages.global_trie_hash_pages)
|
||||
#define GLOBAL_pages_susp_fr (GLOBAL_optyap_data.pages.suspension_frame_pages)
|
||||
#define GLOBAL_scheduler_loop (GLOBAL_optyap_data.scheduler_loop)
|
||||
#define GLOBAL_delayed_release_load (GLOBAL_optyap_data.delayed_release_load)
|
||||
#define GLOBAL_number_workers (GLOBAL_optyap_data.number_workers)
|
||||
#define GLOBAL_worker_pid(worker) (GLOBAL_optyap_data.worker_pid[worker])
|
||||
#define GLOBAL_master_worker (GLOBAL_optyap_data.master_worker)
|
||||
#define GLOBAL_execution_time (GLOBAL_optyap_data.execution_time)
|
||||
#define GLOBAL_best_times(time) (GLOBAL_optyap_data.best_execution_times[time])
|
||||
#define GLOBAL_number_goals (GLOBAL_optyap_data.number_of_executed_goals)
|
||||
#define GLOBAL_performance_mode (GLOBAL_optyap_data.performance_mode)
|
||||
#ifdef YAPOR_THREADS
|
||||
#define Get_GLOBAL_root_cp() offset_to_cptr(Yap_optyap_data.root_choice_point_offset)
|
||||
#define Set_GLOBAL_root_cp(bptr) (Yap_optyap_data.root_choice_point_offset = cptr_to_offset(bptr))
|
||||
#define Get_GLOBAL_root_cp() offset_to_cptr(GLOBAL_optyap_data.root_choice_point_offset)
|
||||
#define Set_GLOBAL_root_cp(bptr) (GLOBAL_optyap_data.root_choice_point_offset = cptr_to_offset(bptr))
|
||||
#else
|
||||
#define GLOBAL_root_cp (Yap_optyap_data.root_choice_point)
|
||||
#define Get_GLOBAL_root_cp() (Yap_optyap_data.root_choice_point)
|
||||
#define Set_GLOBAL_root_cp(bptr) (Yap_optyap_data.root_choice_point = (bptr))
|
||||
#define GLOBAL_root_cp (GLOBAL_optyap_data.root_choice_point)
|
||||
#define Get_GLOBAL_root_cp() (GLOBAL_optyap_data.root_choice_point)
|
||||
#define Set_GLOBAL_root_cp(bptr) (GLOBAL_optyap_data.root_choice_point = (bptr))
|
||||
#endif
|
||||
#define GLOBAL_root_or_fr (Yap_optyap_data.root_or_frame)
|
||||
#define GLOBAL_bm_present_workers (Yap_optyap_data.present_workers)
|
||||
#define GLOBAL_bm_idle_workers (Yap_optyap_data.idle_workers)
|
||||
#define GLOBAL_bm_root_cp_workers (Yap_optyap_data.root_cp_workers)
|
||||
#define GLOBAL_bm_invisible_workers (Yap_optyap_data.invisible_workers)
|
||||
#define GLOBAL_bm_requestable_workers (Yap_optyap_data.requestable_workers)
|
||||
#define GLOBAL_bm_executing_workers (Yap_optyap_data.executing_workers)
|
||||
#define GLOBAL_bm_finished_workers (Yap_optyap_data.finished_workers)
|
||||
#define GLOBAL_bm_pruning_workers (Yap_optyap_data.pruning_workers)
|
||||
#define GLOBAL_locks_bm_idle_workers (Yap_optyap_data.locks.bitmap_idle_workers)
|
||||
#define GLOBAL_locks_bm_root_cp_workers (Yap_optyap_data.locks.bitmap_root_cp_workers)
|
||||
#define GLOBAL_locks_bm_invisible_workers (Yap_optyap_data.locks.bitmap_invisible_workers)
|
||||
#define GLOBAL_locks_bm_requestable_workers (Yap_optyap_data.locks.bitmap_requestable_workers)
|
||||
#define GLOBAL_locks_bm_executing_workers (Yap_optyap_data.locks.bitmap_executing_workers)
|
||||
#define GLOBAL_locks_bm_finished_workers (Yap_optyap_data.locks.bitmap_finished_workers)
|
||||
#define GLOBAL_locks_bm_pruning_workers (Yap_optyap_data.locks.bitmap_pruning_workers)
|
||||
#define GLOBAL_locks_who_locked_heap (Yap_optyap_data.locks.who_locked_heap)
|
||||
#define GLOBAL_locks_heap_access (Yap_optyap_data.locks.heap_access)
|
||||
#define GLOBAL_locks_alloc_block (Yap_optyap_data.locks.alloc_block)
|
||||
#define GLOBAL_branch(worker, depth) (Yap_optyap_data.branch[worker][depth])
|
||||
#define GLOBAL_parallel_execution_mode (Yap_optyap_data.parallel_execution_mode)
|
||||
#define GLOBAL_answers (Yap_optyap_data.answers)
|
||||
#define GLOBAL_root_gt (Yap_optyap_data.root_global_trie)
|
||||
#define GLOBAL_root_tab_ent (Yap_optyap_data.root_table_entry)
|
||||
#define GLOBAL_first_sg_fr (Yap_optyap_data.first_subgoal_frame)
|
||||
#define GLOBAL_last_sg_fr (Yap_optyap_data.last_subgoal_frame)
|
||||
#define GLOBAL_check_sg_fr (Yap_optyap_data.check_subgoal_frame)
|
||||
#define GLOBAL_root_dep_fr (Yap_optyap_data.root_dependency_frame)
|
||||
#define GLOBAL_table_var_enumerator(index) (Yap_optyap_data.table_var_enumerator[index])
|
||||
#define GLOBAL_table_var_enumerator_addr(index) (Yap_optyap_data.table_var_enumerator + (index))
|
||||
#define GLOBAL_table_lock(index) (Yap_optyap_data.table_lock[index])
|
||||
#define GLOBAL_timestamp (Yap_optyap_data.timestamp)
|
||||
#define GLOBAL_root_or_fr (GLOBAL_optyap_data.root_or_frame)
|
||||
#define GLOBAL_bm_present_workers (GLOBAL_optyap_data.present_workers)
|
||||
#define GLOBAL_bm_idle_workers (GLOBAL_optyap_data.idle_workers)
|
||||
#define GLOBAL_bm_root_cp_workers (GLOBAL_optyap_data.root_cp_workers)
|
||||
#define GLOBAL_bm_invisible_workers (GLOBAL_optyap_data.invisible_workers)
|
||||
#define GLOBAL_bm_requestable_workers (GLOBAL_optyap_data.requestable_workers)
|
||||
#define GLOBAL_bm_executing_workers (GLOBAL_optyap_data.executing_workers)
|
||||
#define GLOBAL_bm_finished_workers (GLOBAL_optyap_data.finished_workers)
|
||||
#define GLOBAL_bm_pruning_workers (GLOBAL_optyap_data.pruning_workers)
|
||||
#define GLOBAL_locks_bm_idle_workers (GLOBAL_optyap_data.locks.bitmap_idle_workers)
|
||||
#define GLOBAL_locks_bm_root_cp_workers (GLOBAL_optyap_data.locks.bitmap_root_cp_workers)
|
||||
#define GLOBAL_locks_bm_invisible_workers (GLOBAL_optyap_data.locks.bitmap_invisible_workers)
|
||||
#define GLOBAL_locks_bm_requestable_workers (GLOBAL_optyap_data.locks.bitmap_requestable_workers)
|
||||
#define GLOBAL_locks_bm_executing_workers (GLOBAL_optyap_data.locks.bitmap_executing_workers)
|
||||
#define GLOBAL_locks_bm_finished_workers (GLOBAL_optyap_data.locks.bitmap_finished_workers)
|
||||
#define GLOBAL_locks_bm_pruning_workers (GLOBAL_optyap_data.locks.bitmap_pruning_workers)
|
||||
#define GLOBAL_locks_who_locked_heap (GLOBAL_optyap_data.locks.who_locked_heap)
|
||||
#define GLOBAL_locks_heap_access (GLOBAL_optyap_data.locks.heap_access)
|
||||
#define GLOBAL_locks_alloc_block (GLOBAL_optyap_data.locks.alloc_block)
|
||||
#define GLOBAL_branch(worker, depth) (GLOBAL_optyap_data.branch[worker][depth])
|
||||
#define GLOBAL_parallel_execution_mode (GLOBAL_optyap_data.parallel_execution_mode)
|
||||
#define GLOBAL_answers (GLOBAL_optyap_data.answers)
|
||||
#define GLOBAL_root_gt (GLOBAL_optyap_data.root_global_trie)
|
||||
#define GLOBAL_root_tab_ent (GLOBAL_optyap_data.root_table_entry)
|
||||
#define GLOBAL_first_sg_fr (GLOBAL_optyap_data.first_subgoal_frame)
|
||||
#define GLOBAL_last_sg_fr (GLOBAL_optyap_data.last_subgoal_frame)
|
||||
#define GLOBAL_check_sg_fr (GLOBAL_optyap_data.check_subgoal_frame)
|
||||
#define GLOBAL_root_dep_fr (GLOBAL_optyap_data.root_dependency_frame)
|
||||
#define GLOBAL_table_var_enumerator(index) (GLOBAL_optyap_data.table_var_enumerator[index])
|
||||
#define GLOBAL_table_var_enumerator_addr(index) (GLOBAL_optyap_data.table_var_enumerator + (index))
|
||||
#define GLOBAL_table_lock(index) (GLOBAL_optyap_data.table_lock[index])
|
||||
#define GLOBAL_timestamp (GLOBAL_optyap_data.timestamp)
|
||||
|
||||
|
||||
|
||||
@ -442,47 +442,47 @@ struct local_optyap_data {
|
||||
#define LOCAL_ma_hash_table (LOCAL_optyap_data.ma_hash_table)
|
||||
|
||||
|
||||
#define REMOTE_lock(wid) (REMOTE(wid)->optyap_data.lock)
|
||||
#define REMOTE_load(wid) (REMOTE(wid)->optyap_data.load)
|
||||
#define REMOTE_lock(wid) (REMOTE(wid)->optyap_data_.lock)
|
||||
#define REMOTE_load(wid) (REMOTE(wid)->optyap_data_.load)
|
||||
#ifdef YAPOR_THREADS
|
||||
#define REMOTE_top_cp(wid) offset_to_cptr(REMOTE(wid)->optyap_data.top_choice_point_offset)
|
||||
#define Set_REMOTE_top_cp(wid, bptr) (REMOTE(wid)->optyap_data.top_choice_point_offset = cptr_to_offset(bptr))
|
||||
#define REMOTE_top_cp(wid) offset_to_cptr(REMOTE(wid)->optyap_data_.top_choice_point_offset)
|
||||
#define Set_REMOTE_top_cp(wid, bptr) (REMOTE(wid)->optyap_data_.top_choice_point_offset = cptr_to_offset(bptr))
|
||||
#else
|
||||
#define REMOTE_top_cp(wid) (REMOTE(wid)->optyap_data.top_choice_point)
|
||||
#define Set_REMOTE_top_cp(wid, bptr) (REMOTE(wid)->optyap_data.top_choice_point = (bptr))
|
||||
#define REMOTE_top_cp(wid) (REMOTE(wid)->optyap_data_.top_choice_point)
|
||||
#define Set_REMOTE_top_cp(wid, bptr) (REMOTE(wid)->optyap_data_.top_choice_point = (bptr))
|
||||
#endif /* YAPOR_THREADS */
|
||||
#define REMOTE_top_or_fr(wid) (REMOTE(wid)->optyap_data.top_or_frame)
|
||||
#define REMOTE_top_or_fr(wid) (REMOTE(wid)->optyap_data_.top_or_frame)
|
||||
#ifdef YAPOR_THREADS
|
||||
#define Get_REMOTE_prune_request(wid) offset_to_cptr_with_null(REMOTE(wid)->optyap_data.prune_request_offset)
|
||||
#define Set_REMOTE_prune_request(wid,cp) (REMOTE(wid)->optyap_data.prune_request_offset = cptr_to_offset_with_null(cp))
|
||||
#define Get_REMOTE_prune_request(wid) offset_to_cptr_with_null(REMOTE(wid)->optyap_data_.prune_request_offset)
|
||||
#define Set_REMOTE_prune_request(wid,cp) (REMOTE(wid)->optyap_data_.prune_request_offset = cptr_to_offset_with_null(cp))
|
||||
#else
|
||||
#define REMOTE_prune_request(wid) (REMOTE(wid)->optyap_data.prune_request)
|
||||
#define Get_REMOTE_prune_request(wid) (REMOTE(wid)->optyap_data.prune_request)
|
||||
#define Set_REMOTE_prune_request(wid,cp) (REMOTE(wid)->optyap_data.prune_request = cp)
|
||||
#define REMOTE_prune_request(wid) (REMOTE(wid)->optyap_data_.prune_request)
|
||||
#define Get_REMOTE_prune_request(wid) (REMOTE(wid)->optyap_data_.prune_request)
|
||||
#define Set_REMOTE_prune_request(wid,cp) (REMOTE(wid)->optyap_data_.prune_request = cp)
|
||||
#endif /* YAPOR_THREADS */
|
||||
#define REMOTE_share_request(wid) (REMOTE(wid)->optyap_data.share_request)
|
||||
#define REMOTE_reply_signal(wid) (REMOTE(wid)->optyap_data.share_signals.reply_signal)
|
||||
#define REMOTE_p_fase_signal(wid) (REMOTE(wid)->optyap_data.share_signals.P_fase)
|
||||
#define REMOTE_q_fase_signal(wid) (REMOTE(wid)->optyap_data.share_signals.Q_fase)
|
||||
#define REMOTE_lock_signals(wid) (REMOTE(wid)->optyap_data.share_signals.lock)
|
||||
#define REMOTE_start_global_copy(wid) (REMOTE(wid)->optyap_data.global_copy.start)
|
||||
#define REMOTE_end_global_copy(wid) (REMOTE(wid)->optyap_data.global_copy.end)
|
||||
#define REMOTE_start_local_copy(wid) (REMOTE(wid)->optyap_data.local_copy.start)
|
||||
#define REMOTE_end_local_copy(wid) (REMOTE(wid)->optyap_data.local_copy.end)
|
||||
#define REMOTE_start_trail_copy(wid) (REMOTE(wid)->optyap_data.trail_copy.start)
|
||||
#define REMOTE_end_trail_copy(wid) (REMOTE(wid)->optyap_data.trail_copy.end)
|
||||
#define REMOTE_next_free_ans_node(wid) (REMOTE(wid)->optyap_data.next_free_answer_trie_node)
|
||||
#define REMOTE_top_sg_fr(wid) (REMOTE(wid)->optyap_data.top_subgoal_frame)
|
||||
#define REMOTE_top_dep_fr(wid) (REMOTE(wid)->optyap_data.top_dependency_frame)
|
||||
#define REMOTE_pruning_scope(wid) (REMOTE(wid)->optyap_data.bottom_pruning_scope)
|
||||
#define REMOTE_share_request(wid) (REMOTE(wid)->optyap_data_.share_request)
|
||||
#define REMOTE_reply_signal(wid) (REMOTE(wid)->optyap_data_.share_signals.reply_signal)
|
||||
#define REMOTE_p_fase_signal(wid) (REMOTE(wid)->optyap_data_.share_signals.P_fase)
|
||||
#define REMOTE_q_fase_signal(wid) (REMOTE(wid)->optyap_data_.share_signals.Q_fase)
|
||||
#define REMOTE_lock_signals(wid) (REMOTE(wid)->optyap_data_.share_signals.lock)
|
||||
#define REMOTE_start_global_copy(wid) (REMOTE(wid)->optyap_data_.global_copy.start)
|
||||
#define REMOTE_end_global_copy(wid) (REMOTE(wid)->optyap_data_.global_copy.end)
|
||||
#define REMOTE_start_local_copy(wid) (REMOTE(wid)->optyap_data_.local_copy.start)
|
||||
#define REMOTE_end_local_copy(wid) (REMOTE(wid)->optyap_data_.local_copy.end)
|
||||
#define REMOTE_start_trail_copy(wid) (REMOTE(wid)->optyap_data_.trail_copy.start)
|
||||
#define REMOTE_end_trail_copy(wid) (REMOTE(wid)->optyap_data_.trail_copy.end)
|
||||
#define REMOTE_next_free_ans_node(wid) (REMOTE(wid)->optyap_data_.next_free_answer_trie_node)
|
||||
#define REMOTE_top_sg_fr(wid) (REMOTE(wid)->optyap_data_.top_subgoal_frame)
|
||||
#define REMOTE_top_dep_fr(wid) (REMOTE(wid)->optyap_data_.top_dependency_frame)
|
||||
#define REMOTE_pruning_scope(wid) (REMOTE(wid)->optyap_data_.bottom_pruning_scope)
|
||||
#ifdef YAPOR_THREADS
|
||||
#define REMOTE_top_cp_on_stack(wid) offset_to_cptr(REMOTE(wid)->optyap_data.top_choice_point_on_stack_offset)
|
||||
#define Set_REMOTE_top_cp_on_stack(wid, bptr) (REMOTE(wid)->optyap_data.top_choice_point_on_stack_offset = cptr_to_offset(bptr))
|
||||
#define REMOTE_top_cp_on_stack(wid) offset_to_cptr(REMOTE(wid)->optyap_data_.top_choice_point_on_stack_offset)
|
||||
#define Set_REMOTE_top_cp_on_stack(wid, bptr) (REMOTE(wid)->optyap_data_.top_choice_point_on_stack_offset = cptr_to_offset(bptr))
|
||||
#else
|
||||
#define REMOTE_top_cp_on_stack(wid) (REMOTE(wid)->optyap_data.top_choice_point_on_stack)
|
||||
#define Set_REMOTE_top_cp_on_stack(wid, bptr) (REMOTE(wid)->optyap_data.top_choice_point_on_stack = (bptr))
|
||||
#define REMOTE_top_cp_on_stack(wid) (REMOTE(wid)->optyap_data_.top_choice_point_on_stack)
|
||||
#define Set_REMOTE_top_cp_on_stack(wid, bptr) (REMOTE(wid)->optyap_data_.top_choice_point_on_stack = (bptr))
|
||||
#endif /* YAPOR_THREADS */
|
||||
#define REMOTE_top_susp_or_fr(wid) (REMOTE(wid)->optyap_data.top_or_frame_with_suspensions)
|
||||
#define REMOTE_top_susp_or_fr(wid) (REMOTE(wid)->optyap_data_.top_or_frame_with_suspensions)
|
||||
|
||||
|
||||
#ifdef YAPOR
|
||||
|
@ -2505,7 +2505,7 @@ X_API int
|
||||
PL_destroy_engine(PL_engine_t e)
|
||||
{
|
||||
#if THREADS
|
||||
return YAP_ThreadDestroyEngine(((struct worker_local *)e)->thread_handle.current_yaam_regs->worker_id_);
|
||||
return YAP_ThreadDestroyEngine(((struct worker_local *)e)->ThreadHandle_.current_yaam_regs->worker_id_);
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
@ -2538,7 +2538,7 @@ PL_set_engine(PL_engine_t engine, PL_engine_t *old)
|
||||
}
|
||||
return PL_ENGINE_SET;
|
||||
} else {
|
||||
nwid = ((struct worker_local *)engine)->thread_handle.current_yaam_regs->worker_id_;
|
||||
nwid = ((struct worker_local *)engine)->ThreadHandle_.current_yaam_regs->worker_id_;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&(REMOTE_ThreadHandle(nwid).tlock));
|
||||
|
45
misc/GLOBALS
45
misc/GLOBALS
@ -7,10 +7,9 @@
|
||||
// - they must be initialised somewhere
|
||||
// - they may be of interest to restore
|
||||
//
|
||||
// The defs include 4+ components:
|
||||
// The defs include 3+ components:
|
||||
// Type
|
||||
// name in structured
|
||||
// global name
|
||||
// name in structured / global name
|
||||
// init code (optional)
|
||||
// restore code (optional)
|
||||
//
|
||||
@ -19,47 +18,43 @@
|
||||
START_GLOBAL_DATA
|
||||
|
||||
// initialization: tell whether the system has been initialised and by whom.
|
||||
int initialised GLOBAL_Initialised =FALSE
|
||||
int initialised_from_pl GLOBAL_InitialisedFromPL =FALSE
|
||||
int pl_argc GLOBAL_PL_Argc =0
|
||||
char **pl_argv GLOBAL_PL_Argv =NULL
|
||||
int Initialised =FALSE
|
||||
int InitialisedFromPL =FALSE
|
||||
int PL_Argc =0
|
||||
char** PL_Argv =NULL
|
||||
|
||||
// halt hooks
|
||||
struct halt_hook *yap_halt_hook GLOBAL_HaltHooks =NULL
|
||||
struct halt_hook* HaltHooks =NULL
|
||||
|
||||
// stack overflow expansion/gc control
|
||||
int allow_local_expansion GLOBAL_AllowLocalExpansion =TRUE
|
||||
int allow_global_expansion GLOBAL_AllowGlobalExpansion =TRUE
|
||||
int allow_trail_expansion GLOBAL_AllowTrailExpansion =TRUE
|
||||
UInt size_of_overflow GLOBAL_SizeOfOverflow =0
|
||||
int AllowLocalExpansion =TRUE
|
||||
int AllowGlobalExpansion =TRUE
|
||||
int AllowTrailExpansion =TRUE
|
||||
UInt SizeOfOverflow =0
|
||||
|
||||
// amount of space recovered in all garbage collections
|
||||
UInt agc_threshold GLOBAL_AGcThreshold =10000
|
||||
Agc_hook agc_hook GLOBAL_AGCHook =NULL
|
||||
UInt AGcThreshold =10000
|
||||
Agc_hook AGCHook =NULL
|
||||
|
||||
/* multi-thread support */
|
||||
#if THREADS
|
||||
/* number of threads and processes in system */
|
||||
UInt n_of_threads GLOBAL_NOfThreads =1
|
||||
UInt NOfThreads =1
|
||||
/* number of threads created since start */
|
||||
UInt n_of_threads_created GLOBAL_NOfThreadsCreated =1
|
||||
UInt NOfThreadsCreated =1
|
||||
/* total run time for dead threads */
|
||||
UInt threads_total_time GLOBAL_ThreadsTotalTime =0L
|
||||
UInt ThreadsTotalTime =0L
|
||||
// Threads Array
|
||||
lockvar ThreadHandlesLock MkLock
|
||||
#endif
|
||||
|
||||
// multi-thread/ORP support
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
// protect long critical regions
|
||||
lockvar bgl GLOBAL_BGL MkLock
|
||||
lockvar BGL MkLock
|
||||
#endif
|
||||
|
||||
// Threads Array
|
||||
#ifdef THREADS
|
||||
lockvar thread_handles_lock GLOBAL_ThreadHandlesLock MkLock
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
struct global_optyap_data optyap_data Yap_optyap_data void
|
||||
struct global_optyap_data optyap_data void
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
END_GLOBAL_DATA
|
||||
|
231
misc/LOCALS
231
misc/LOCALS
@ -2,159 +2,148 @@
|
||||
START_WORKER_LOCAL
|
||||
|
||||
// Streams
|
||||
int c_input_stream LOCAL_c_input_stream =0
|
||||
int c_output_stream LOCAL_c_output_stream =1
|
||||
int c_error_stream LOCAL_c_error_stream =2
|
||||
int c_input_stream =0
|
||||
int c_output_stream =1
|
||||
int c_error_stream =2
|
||||
|
||||
/* shifts and restore: per local data-structure */
|
||||
restoreinfo rinfo
|
||||
. rinfo.old_ASP LOCAL_OldASP =NULL
|
||||
. rinfo.old_LCL0 LOCAL_OldLCL0 =NULL
|
||||
. rinfo.old_TR LOCAL_OldTR =NULL
|
||||
. rinfo.old_GlobalBase LOCAL_OldGlobalBase =NULL
|
||||
. rinfo.old_H LOCAL_OldH =NULL
|
||||
. rinfo.old_H0 LOCAL_OldH0 =NULL
|
||||
. rinfo.old_TrailBase LOCAL_OldTrailBase =NULL
|
||||
. rinfo.old_TrailTop LOCAL_OldTrailTop =NULL
|
||||
. rinfo.old_HeapBase LOCAL_OldHeapBase =NULL
|
||||
. rinfo.old_HeapTop LOCAL_OldHeapTop =NULL
|
||||
. rinfo.cl_diff LOCAL_ClDiff =0L
|
||||
. rinfo.g_diff LOCAL_GDiff =0L
|
||||
. rinfo.h_diff LOCAL_HDiff =0L
|
||||
. rinfo.g_diff0 LOCAL_GDiff0 =0L
|
||||
. rinfo.g_split LOCAL_GSplit =NULL
|
||||
. rinfo.l_diff LOCAL_LDiff =0L
|
||||
. rinfo.tr_diff LOCAL_TrDiff =0L
|
||||
. rinfo.x_diff LOCAL_XDiff =0L
|
||||
. rinfo.delay_diff LOCAL_DelayDiff =0L
|
||||
. rinfo.base_diff LOCAL_BaseDiff =0L
|
||||
// Restore info
|
||||
CELL* OldASP =NULL
|
||||
CELL* OldLCL0 =NULL
|
||||
tr_fr_ptr OldTR =NULL
|
||||
CELL* OldGlobalBase =NULL
|
||||
CELL* OldH =NULL
|
||||
CELL* OldH0 =NULL
|
||||
ADDR OldTrailBase =NULL
|
||||
ADDR OldTrailTop =NULL
|
||||
ADDR OldHeapBase =NULL
|
||||
ADDR OldHeapTop =NULL
|
||||
Int ClDiff =0L
|
||||
Int GDiff =0L
|
||||
Int HDiff =0L
|
||||
Int GDiff0 =0L
|
||||
Int GSplit =NULL
|
||||
Int LDiff =0L
|
||||
Int TrDiff =0L
|
||||
Int XDiff =0L
|
||||
Int DelayDiff =0L
|
||||
Int BaseDiff =0L
|
||||
|
||||
struct reduction_counters call_counters
|
||||
. call_counters.reductions LOCAL_ReductionsCounter =0L
|
||||
. call_counters.reductions_retries LOCAL_PredEntriesCounter =0L
|
||||
. call_counters.retries LOCAL_RetriesCounter =0L
|
||||
. call_counters.reductions_on LOCAL_ReductionsCounterOn =0L
|
||||
. call_counters.reductions_retries_on LOCAL_PredEntriesCounterOn =0L
|
||||
. call_counters.retries_on LOCAL_RetriesCounterOn =0L
|
||||
|
||||
int interrupts_disabled LOCAL_InterruptsDisabled =FALSE
|
||||
// Reduction counters
|
||||
YAP_ULONG_LONG ReductionsCounter =0L
|
||||
YAP_ULONG_LONG PredEntriesCounter =0L
|
||||
YAP_ULONG_LONG RetriesCounter =0L
|
||||
int ReductionsCounterOn =0L
|
||||
int PredEntriesCounterOn =0L
|
||||
int RetriesCounterOn =0L
|
||||
|
||||
// support for consulting files
|
||||
/* current consult stack */
|
||||
union CONSULT_OBJ* consultsp LOCAL_ConsultSp =NULL
|
||||
union CONSULT_OBJ* ConsultSp =NULL
|
||||
/* current maximum number of cells in consult stack */
|
||||
UInt consultcapacity LOCAL_ConsultCapacity void
|
||||
UInt ConsultCapacity void
|
||||
/* top of consult stack */
|
||||
union CONSULT_OBJ* consultbase LOCAL_ConsultBase =NULL
|
||||
union CONSULT_OBJ* ConsultBase =NULL
|
||||
/* low-water mark for consult */
|
||||
union CONSULT_OBJ* consultlow LOCAL_ConsultLow =NULL
|
||||
union CONSULT_OBJ* ConsultLow =NULL
|
||||
|
||||
//global variables
|
||||
Term global_arena LOCAL_GlobalArena =0L TermToGlobalOrAtomAdjust
|
||||
UInt global_arena_overflows LOCAL_GlobalArenaOverflows =0L
|
||||
Int arena_overflows LOCAL_ArenaOverflows =0L
|
||||
Int depth_arenas LOCAL_DepthArenas =0
|
||||
Term GlobalArena =0L TermToGlobalOrAtomAdjust
|
||||
UInt GlobalArenaOverflows =0L
|
||||
Int ArenaOverflows =0L
|
||||
Int DepthArenas =0
|
||||
|
||||
int arith_error LOCAL_ArithError =FALSE
|
||||
struct pred_entry* last_asserted_pred LOCAL_LastAssertedPred =NULL
|
||||
int debug_on LOCAL_DebugOn =FALSE
|
||||
char* scanner_stack LOCAL_ScannerStack =NULL
|
||||
struct scanner_extra_alloc* scanner_extra_blocks LOCAL_ScannerExtraBlocks =NULL
|
||||
struct DB_TERM* ball_term LOCAL_BallTerm =NULL RestoreBallTerm(wid)
|
||||
UInt active_signals LOCAL_ActiveSignals =0L
|
||||
UInt i_pred_arity LOCAL_IPredArity =0L
|
||||
yamop* prof_end LOCAL_ProfEnd =NULL
|
||||
int uncaught_throw LOCAL_UncaughtThrow =FALSE
|
||||
int doing_undefp LOCAL_DoingUndefp =FALSE
|
||||
Int start_line LOCAL_StartLine =0L
|
||||
scratch_block scratchpad LOCAL_ScratchPad InitScratchPad(wid)
|
||||
int ArithError =FALSE
|
||||
struct pred_entry* LastAssertedPred =NULL
|
||||
int DebugOn =FALSE
|
||||
char* ScannerStack =NULL
|
||||
struct scanner_extra_alloc* ScannerExtraBlocks =NULL
|
||||
struct DB_TERM* BallTerm =NULL RestoreBallTerm(wid)
|
||||
UInt ActiveSignals =0L
|
||||
UInt IPredArity =0L
|
||||
yamop* ProfEnd =NULL
|
||||
int UncaughtThrow =FALSE
|
||||
int DoingUndefp =FALSE
|
||||
Int StartLine =0L
|
||||
scratch_block ScratchPad InitScratchPad(wid)
|
||||
#ifdef COROUTINING
|
||||
Term woken_goals LOCAL_WokenGoals =0L TermToGlobalAdjust
|
||||
Term atts_mutable_list LOCAL_AttsMutableList =0L TermToGlobalAdjust
|
||||
Term WokenGoals =0L TermToGlobalAdjust
|
||||
Term AttsMutableList =0L TermToGlobalAdjust
|
||||
#endif
|
||||
|
||||
// gc_stuff
|
||||
Term gc_generation LOCAL_GcGeneration =0L TermToGlobalAdjust
|
||||
Term gc_phase LOCAL_GcPhase =0L TermToGlobalAdjust
|
||||
UInt gc_current_phase LOCAL_GcCurrentPhase =0L
|
||||
UInt gc_calls LOCAL_GcCalls =0L
|
||||
Int tot_gc_time LOCAL_TotGcTime =0L
|
||||
YAP_ULONG_LONG tot_gc_recovered LOCAL_TotGcRecovered =0L
|
||||
Int last_gc_time LOCAL_LastGcTime =0L
|
||||
Int last_ss_time LOCAL_LastSSTime =0L
|
||||
Term GcGeneration =0L TermToGlobalAdjust
|
||||
Term GcPhase =0L TermToGlobalAdjust
|
||||
UInt GcCurrentPhase =0L
|
||||
UInt GcCalls =0L
|
||||
Int TotGcTime =0L
|
||||
YAP_ULONG_LONG TotGcRecovered =0L
|
||||
Int LastGcTime =0L
|
||||
Int LastSSTime =0L
|
||||
|
||||
#if LOW_LEVEL_TRACER
|
||||
Int total_cps LOCAL_total_choicepoints =0
|
||||
#endif
|
||||
|
||||
int consult_level_ LOCAL_consult_level =0
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
lockvar signal_lock LOCAL_SignalLock MkLock
|
||||
#endif
|
||||
/* in a single gc */
|
||||
Int tot_marked LOCAL_total_marked =0L
|
||||
Int tot_oldies LOCAL_total_oldies =0L
|
||||
struct choicept* wl_current_B LOCAL_current_B =NULL
|
||||
CELL* wl_prev_HB LOCAL_prev_HB =NULL
|
||||
CELL* hgen LOCAL_HGEN =NULL
|
||||
CELL** ip_top LOCAL_iptop =NULL
|
||||
//#endif
|
||||
Int total_marked =0L
|
||||
Int total_oldies =0L
|
||||
struct choicept* current_B =NULL
|
||||
CELL* prev_HB =NULL
|
||||
CELL* HGEN =NULL
|
||||
CELL** iptop =NULL
|
||||
|
||||
#if defined(GC_NO_TAGS)
|
||||
char* b_p LOCAL_bp =NULL
|
||||
char* bp =NULL
|
||||
#endif
|
||||
tr_fr_ptr wl_sTR LOCAL_sTR =NULL
|
||||
tr_fr_ptr wl_sTR0 LOCAL_sTR0 =NULL
|
||||
tr_fr_ptr new_tr LOCAL_new_TR =NULL
|
||||
struct gc_mark_continuation* conttop0 LOCAL_cont_top0 =NULL
|
||||
struct gc_mark_continuation* conttop LOCAL_cont_top =NULL
|
||||
int disc_trail_entries LOCAL_discard_trail_entries =0
|
||||
gc_ma_hash_entry Gc_ma_hash_table[GC_MAVARS_HASH_SIZE] LOCAL_gc_ma_hash_table void
|
||||
gc_ma_hash_entry* Gc_ma_h_top LOCAL_gc_ma_h_top =NULL
|
||||
gc_ma_hash_entry* Gc_ma_h_list LOCAL_gc_ma_h_list =NULL
|
||||
UInt Gc_timestamp LOCAL_gc_timestamp =0L
|
||||
ADDR DB_vec LOCAL_db_vec =NULL
|
||||
ADDR DB_vec0 LOCAL_db_vec0 =NULL
|
||||
struct RB_red_blk_node* DB_root LOCAL_db_root =NULL
|
||||
struct RB_red_blk_node* DB_nil LOCAL_db_nil =NULL
|
||||
tr_fr_ptr sTR =NULL
|
||||
tr_fr_ptr sTR0 =NULL
|
||||
tr_fr_ptr new_TR =NULL
|
||||
struct gc_mark_continuation* cont_top0 =NULL
|
||||
struct gc_mark_continuation* cont_top =NULL
|
||||
int discard_trail_entries =0
|
||||
gc_ma_hash_entry gc_ma_hash_table[GC_MAVARS_HASH_SIZE] void
|
||||
gc_ma_hash_entry* gc_ma_h_top =NULL
|
||||
gc_ma_hash_entry* gc_ma_h_list =NULL
|
||||
UInt gc_timestamp =0L
|
||||
ADDR db_vec =NULL
|
||||
ADDR db_vec0 =NULL
|
||||
struct RB_red_blk_node* db_root =NULL
|
||||
struct RB_red_blk_node* db_nil =NULL
|
||||
|
||||
sigjmp_buf gc_restore LOCAL_gc_restore void
|
||||
struct array_entry* dynamic_arrays LOCAL_DynamicArrays =NULL PtoArrayEAdjust
|
||||
struct static_array_entry* static_arrays LOCAL_StaticArrays =NULL PtoArraySAdjust
|
||||
struct global_entry* global_variables LOCAL_GlobalVariables =NULL PtoGlobalEAdjust
|
||||
int allow_restart LOCAL_AllowRestart =FALSE
|
||||
sigjmp_buf gc_restore void
|
||||
struct array_entry* DynamicArrays =NULL PtoArrayEAdjust
|
||||
struct static_array_entry* StaticArrays =NULL PtoArraySAdjust
|
||||
struct global_entry* GlobalVariables =NULL PtoGlobalEAdjust
|
||||
int AllowRestart =FALSE
|
||||
|
||||
// Thread Local Area for Fast Storage of Intermediate Compiled Code.
|
||||
struct mem_blk* cmem_first_block LOCAL_CMemFirstBlock =NULL
|
||||
UInt cmem_first_block_sz LOCAL_CMemFirstBlockSz =0L
|
||||
// Thread Local Area for Fast Storage of Intermediate Compiled Code
|
||||
struct mem_blk* CMemFirstBlock =NULL
|
||||
UInt CMemFirstBlockSz =0L
|
||||
|
||||
// Thread Local Area for Labels.
|
||||
Int* label_first_array LOCAL_LabelFirstArray =NULL
|
||||
UInt label_first_array_sz LOCAL_LabelFirstArraySz =0L
|
||||
// Thread Local Area for Labels
|
||||
Int* LabelFirstArray =NULL
|
||||
UInt LabelFirstArraySz =0L
|
||||
|
||||
// Thread Local Area for SWI-Prolog emulation routines.
|
||||
struct PL_local_data* Yap_ld_ LOCAL_PL_local_data_p =Yap_InitThreadIO(wid)
|
||||
|
||||
struct open_query_struct* _execution LOCAL_execution =NULL
|
||||
struct PL_local_data* PL_local_data_p =Yap_InitThreadIO(wid)
|
||||
|
||||
#ifdef THREADS
|
||||
struct thandle thread_handle LOCAL_ThreadHandle InitThreadHandle(wid)
|
||||
struct thandle ThreadHandle InitThreadHandle(wid)
|
||||
#endif /* THREADS */
|
||||
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
struct local_optyap_data optyap_data LOCAL_optyap_data Yap_init_local_optyap_data(wid)
|
||||
struct local_optyap_data optyap_data Yap_init_local_optyap_data(wid)
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
int InterruptsDisabled =FALSE
|
||||
|
||||
// defines
|
||||
#define REMOTE_ThreadHandle(wid) (REMOTE(wid)->thread_handle)
|
||||
#define REMOTE_c_input_stream(wid) (REMOTE(wid)->c_input_stream)
|
||||
#define REMOTE_c_output_stream(wid) (REMOTE(wid)->c_output_stream)
|
||||
#define REMOTE_c_error_stream(wid) (REMOTE(wid)->c_error_stream)
|
||||
#define REMOTE_ActiveSignals(wid) (REMOTE(wid)->active_signals)
|
||||
#define REMOTE_SignalLock(wid) (REMOTE(wid)->signal_lock)
|
||||
#define REMOTE_ScratchPad(wid) (REMOTE(wid)->scratchpad)
|
||||
struct open_query_struct* execution =NULL
|
||||
|
||||
#if LOW_LEVEL_TRACER
|
||||
Int total_choicepoints =0
|
||||
#endif
|
||||
|
||||
int consult_level =0
|
||||
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
lockvar SignalLock MkLock
|
||||
#endif
|
||||
|
||||
// END WORKER LOCAL STUFF
|
||||
END_WORKER_LOCAL
|
||||
|
||||
|
@ -21,15 +21,15 @@ main :-
|
||||
file_filter_with_init('misc/HEAPFIELDS','H/hstruct.h',gen_struct,Warning,['hstruct.h','HEAPFIELDS']),
|
||||
file_filter_with_init('misc/HEAPFIELDS','H/dhstruct.h',gen_dstruct,Warning,['dhstruct.h','HEAPFIELDS']),
|
||||
file_filter_with_init('misc/HEAPFIELDS','H/rhstruct.h',gen_hstruct,Warning,['rhstruct.h','HEAPFIELDS']),
|
||||
file_filter_with_init('misc/HEAPFIELDS','H/ihstruct.h',gen_init,Warning,['ihstruct.h','HEAPFIELDS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/hglobals.h',gen_struct,Warning,['hglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/dglobals.h',gen_dstruct,Warning,['dglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/rglobals.h',gen_hstruct,Warning,['rglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/iglobals.h',gen_init,Warning,['iglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/hlocals.h',gen_struct,Warning,['hlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/dlocals.h',gen_dstruct,Warning,['dlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/rlocals.h',gen_hstruct,Warning,['rlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/ilocals.h',gen_init,Warning,['ilocals.h','LOCALS']).
|
||||
file_filter_with_init('misc/HEAPFIELDS','H/ihstruct.h',gen_init,Warning,['ihstruct.h','HEAPFIELDS']).
|
||||
%file_filter_with_init('misc/GLOBALS','H/hglobals.h',gen_struct,Warning,['hglobals.h','GLOBALS']),
|
||||
%file_filter_with_init('misc/GLOBALS','H/dglobals.h',gen_dstruct,Warning,['dglobals.h','GLOBALS']),
|
||||
%file_filter_with_init('misc/GLOBALS','H/rglobals.h',gen_hstruct,Warning,['rglobals.h','GLOBALS']),
|
||||
%file_filter_with_init('misc/GLOBALS','H/iglobals.h',gen_init,Warning,['iglobals.h','GLOBALS']),
|
||||
%file_filter_with_init('misc/LOCALS','H/hlocals.h',gen_struct,Warning,['hlocals.h','LOCALS']),
|
||||
%file_filter_with_init('misc/LOCALS','H/dlocals.h',gen_dstruct,Warning,['dlocals.h','LOCALS']),
|
||||
%file_filter_with_init('misc/LOCALS','H/rlocals.h',gen_hstruct,Warning,['rlocals.h','LOCALS']),
|
||||
%file_filter_with_init('misc/LOCALS','H/ilocals.h',gen_init,Warning,['ilocals.h','LOCALS']).
|
||||
|
||||
warning('~n /* This file, ~a, was generated automatically by \"yap -L misc/buildheap\"~n please do not update, update misc/~a instead */~n~n').
|
||||
|
||||
|
345
misc/buildlocalglobal
Normal file
345
misc/buildlocalglobal
Normal file
@ -0,0 +1,345 @@
|
||||
|
||||
:- use_module(library(lineutils),
|
||||
[file_filter_with_init/5,
|
||||
split/3,
|
||||
glue/3]).
|
||||
|
||||
:- use_module(library(lists),
|
||||
[append/2,
|
||||
append/3]).
|
||||
|
||||
:- initialization(main).
|
||||
|
||||
:- dynamic globals/1.
|
||||
|
||||
:- yap_flag(write_strings,on).
|
||||
|
||||
:- style_check(all).
|
||||
|
||||
main :-
|
||||
warning(Warning),
|
||||
%file_filter_with_init('misc/HEAPFIELDS','H/hstruct.h',gen_struct,Warning,['hstruct.h','HEAPFIELDS']),
|
||||
%file_filter_with_init('misc/HEAPFIELDS','H/dhstruct.h',gen_dstruct,Warning,['dhstruct.h','HEAPFIELDS']),
|
||||
%file_filter_with_init('misc/HEAPFIELDS','H/rhstruct.h',gen_hstruct,Warning,['rhstruct.h','HEAPFIELDS']),
|
||||
%file_filter_with_init('misc/HEAPFIELDS','H/ihstruct.h',gen_init,Warning,['ihstruct.h','HEAPFIELDS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/hglobals.h',gen_struct,Warning,['hglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/dglobals.h',gen_dstruct,Warning,['dglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/rglobals.h',gen_hstruct,Warning,['rglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/GLOBALS','H/iglobals.h',gen_init,Warning,['iglobals.h','GLOBALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/hlocals.h',gen_struct,Warning,['hlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/dlocals.h',gen_dstruct,Warning,['dlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/rlocals.h',gen_hstruct,Warning,['rlocals.h','LOCALS']),
|
||||
file_filter_with_init('misc/LOCALS','H/ilocals.h',gen_init,Warning,['ilocals.h','LOCALS']).
|
||||
|
||||
warning('~n /* This file, ~a, was generated automatically by \"yap -L misc/buildlocalglobal\"~n please do not update, update misc/~a instead */~n~n').
|
||||
|
||||
|
||||
|
||||
/* define the field */
|
||||
gen_struct(Inp,"") :-
|
||||
Inp = [0'/,0'/|_], !.
|
||||
gen_struct(Inp,"") :-
|
||||
Inp = [0'/,0'*|_], !.
|
||||
gen_struct(Inp, Out) :-
|
||||
Inp = [0'#|_], !, Out = Inp. % '
|
||||
gen_struct(Inp,"") :-
|
||||
Inp = [0'.|_], !. %'
|
||||
gen_struct(Inp,Out) :-
|
||||
Inp = "START_WORKER_LOCAL", !,
|
||||
Out = "typedef struct worker_local {".
|
||||
gen_struct(Inp,Out) :-
|
||||
Inp = "END_WORKER_LOCAL", !,
|
||||
Out = "} w_local;".
|
||||
gen_struct(Inp,Out) :-
|
||||
Inp = "START_GLOBAL_DATA", !,
|
||||
Out = "typedef struct global_data {".
|
||||
gen_struct(Inp,Out) :-
|
||||
Inp = "END_GLOBAL_DATA", !,
|
||||
Out = "} w_shared;".
|
||||
gen_struct(Inp,Out) :-
|
||||
Inp = "ATOMS", !,
|
||||
Out = "#include \"tatoms.h\"".
|
||||
gen_struct(Inp,Out) :-
|
||||
split(Inp," ",["struct",Type, Field|_]), !,
|
||||
append([" struct ",Type," ",Field,"_",";"], Out).
|
||||
gen_struct(Inp,Out) :-
|
||||
split(Inp," ",["union",Type, Field|_]), !,
|
||||
append([" union ",Type," ",Field,"_",";"], Out).
|
||||
gen_struct(Inp,"") :-
|
||||
split(Inp," ",["void","void"|_]), !.
|
||||
gen_struct(Inp,Out) :-
|
||||
split(Inp," ",[Type, Field|_]),
|
||||
split(Field,"[",[RField,VECField]), !,
|
||||
append([" ",Type," ",RField,"_","[",VECField,";"], Out).
|
||||
gen_struct(Inp,Out) :-
|
||||
split(Inp," ",[Type, Field|_]), !,
|
||||
append([" ",Type," ",Field,"_",";"], Out).
|
||||
gen_struct(Inp,_) :-
|
||||
split(Inp," ",[_, _, _| _]),
|
||||
format(user_error,"OOPS: could not gen_struct for ~s~n",[Inp]).
|
||||
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = [0'/,0'/|_], !.
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = [0'/,0'*|_], !.
|
||||
gen_dstruct(Inp, Out) :-
|
||||
Inp = [0'#|_], !, Out = Inp. % '
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = "START_WORKER_LOCAL", !,
|
||||
assert(globals(worker)).
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = "END_WORKER_LOCAL", !,
|
||||
retract(globals(worker)).
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = "START_GLOBAL_DATA", !,
|
||||
assert(globals(all)).
|
||||
gen_dstruct(Inp,"") :-
|
||||
Inp = "END_GLOBAL_DATA", !,
|
||||
retract(globals(all)).
|
||||
gen_dstruct(Inp,Out) :-
|
||||
Inp = "ATOMS", !,
|
||||
Out = "".
|
||||
gen_dstruct(Inp,"") :-
|
||||
split(Inp," ",["void","void"|_]), !.
|
||||
gen_dstruct(Inp,Out) :-
|
||||
split(Inp," ",["struct"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_dstruct(Inp3, Out).
|
||||
gen_dstruct(Inp,Out) :-
|
||||
split(Inp," ",["union"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_dstruct(Inp3, Out).
|
||||
gen_dstruct(Inp,Out) :-
|
||||
split(Inp," ",[".", Field,_|_]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
split(RField,".",[_,MField]),
|
||||
fetch_name(Global,Global2,RField,MField),
|
||||
append(["#define ",Global," ",Global2], Out).
|
||||
gen_dstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field,_|_]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,Global2,RField," "),
|
||||
append(["#define ",Global," ",Global2], Out).
|
||||
gen_dstruct(Inp,_) :-
|
||||
split(Inp," ",[_, _, _| _]),
|
||||
format(user_error,"OOPS: could not gen_dstruct for ~s~n",[Inp]).
|
||||
|
||||
fetch_name(Global,Global2,RField," ") :-
|
||||
globals(all), !,
|
||||
append(["GLOBAL_", RField],Global),
|
||||
append(["Yap_global->", RField,"_"],Global2).
|
||||
fetch_name(Global,Global2,RField," ") :-
|
||||
globals(worker),
|
||||
append(["LOCAL_", RField],Global),
|
||||
append(["LOCAL->", RField,"_"],Global2).
|
||||
fetch_name(Global,Global2,RField," ") :-
|
||||
globals(worker), !,
|
||||
append(["REMOTE_", RField,"(wid)"],Global),
|
||||
append(["REMOTE(wid)->", RField,"_"],Global2).
|
||||
fetch_name(Global,Global2,RField,MField) :-
|
||||
globals(worker),
|
||||
append(["REMOTE_", MField,"(wid)"],Global),
|
||||
append(["REMOTE(wid)->", RField],Global2).
|
||||
fetch_name(Global,Global2,RField,MField) :-
|
||||
globals(worker),!,
|
||||
append(["LOCAL_", MField],Global),
|
||||
append(["LOCAL->", RField],Global2).
|
||||
|
||||
fetch_name(Global, RField) :-
|
||||
globals(worker_init), !,
|
||||
append(["REMOTE_", RField,"(wid)"],Global).
|
||||
fetch_name(Global, RField) :-
|
||||
globals(all), !,
|
||||
append(["GLOBAL_", RField],Global).
|
||||
|
||||
% handle *field[4]
|
||||
cut_c_stuff([0'*|Name], RName) :- !, % 'cut *
|
||||
cut_c_stuff(Name, RName).
|
||||
cut_c_stuff(Name, RName) :-
|
||||
cut_mat(Name, RName).
|
||||
|
||||
cut_mat([], []).
|
||||
cut_mat([0'[|_], []) :- !. %'
|
||||
cut_mat(H.Name, H.RName) :-
|
||||
cut_mat(Name, RName).
|
||||
|
||||
gen_hstruct(Inp,"") :-
|
||||
Inp = [0'/,0'/|_], !.
|
||||
gen_hstruct(Inp,"") :-
|
||||
Inp = [0'.|_], !. %'
|
||||
gen_hstruct(Inp,"") :-
|
||||
Inp = [0'/,0'*|_], !.
|
||||
gen_hstruct(Inp,Out) :-
|
||||
Inp = "ATOMS", !,
|
||||
Out = "#include \"ratoms.h\"".
|
||||
gen_hstruct(Inp,Out) :-
|
||||
Inp = "START_WORKER_LOCAL", !,
|
||||
Out = "static void RestoreWorker(int wid USES_REGS) {",
|
||||
assert(globals(worker_init)).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
Inp = "END_WORKER_LOCAL", !,
|
||||
Out = "}",
|
||||
retract(globals(worker_init)).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
Inp = "START_GLOBAL_DATA", !,
|
||||
Out = "static void RestoreGlobal(void) {",
|
||||
assert(globals(all)).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
Inp = "END_GLOBAL_DATA", !,
|
||||
Out = "}",
|
||||
retract(globals(all)).
|
||||
gen_hstruct(Inp, Out) :-
|
||||
Inp = [0'#|_], !, Out = Inp. % '
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",["struct"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_hstruct(Inp3,Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",["union"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_hstruct(Inp3,Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkAT", _]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" ",Global,Field," = AtomTermAdjust(Yap_heap_regs->",Field,");"], Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkPred"| _]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global,RField," = PtoPredAdjust(Yap_heap_regs->",RField,");"], Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkOp", Name]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" ",Global,Field," = Yap_opcode(",Name,");"], Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkLock"]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" REINIT_LOCK(",Global,");"], Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field,"MkRWLock"]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" REINIT_RWLOCK(",Global,Field,");"], Out).
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field,"MkInstE",OP]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global,RField,"->opc = Yap_opcode(",OP,");"], Out).
|
||||
gen_hstruct(Inp,"") :-
|
||||
split(Inp," ",[_, _, _]), !.
|
||||
gen_hstruct(Inp,"") :-
|
||||
split(Inp," ",[_, _, _, "void"]), !.
|
||||
gen_hstruct(Inp,Restore) :-
|
||||
split(Inp," ",[_, _, _, Restore0]),
|
||||
append("Restore",_,Restore0), !,
|
||||
append([" ",Restore0,";"],Restore). %'
|
||||
gen_hstruct(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, _, Adjust]),
|
||||
append(Adjust,"Adjust",_), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = ",Adjust,"(",Global,");"], Out).
|
||||
gen_hstruct(Inp,_) :-
|
||||
split(Inp," ",[_, _, _| _]),
|
||||
format(user_error,"OOPS: could not gen_hstruct for ~s~n",[Inp]).
|
||||
|
||||
gen_init(Inp,"") :-
|
||||
Inp = [0'/,0'*|_], !.
|
||||
gen_init(Inp,"") :-
|
||||
Inp = [0'/,0'/|_], !.
|
||||
gen_init(Inp, Out) :-
|
||||
Inp = [0'#|_], !, Out = Inp. % '
|
||||
gen_init(Inp,Out) :-
|
||||
Inp = "ATOMS", !,
|
||||
Out = "#include \"iatoms.h\"".
|
||||
gen_init(Inp,Out) :-
|
||||
Inp = "START_WORKER_LOCAL", !,
|
||||
Out = "static void InitWorker(int wid) {",
|
||||
assert(globals(worker_init)).
|
||||
gen_init(Inp,Out) :-
|
||||
Inp = "END_WORKER_LOCAL", !,
|
||||
Out = "}",
|
||||
retract(globals(worker_init)).
|
||||
gen_init(Inp,Out) :-
|
||||
Inp = "START_GLOBAL_DATA", !,
|
||||
Out = "static void InitGlobal(void) {",
|
||||
assert(globals(all)).
|
||||
gen_init(Inp,Out) :-
|
||||
Inp = "END_GLOBAL_DATA", !,
|
||||
Out = "}",
|
||||
retract(globals(all)).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",["struct"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_init(Inp3, Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",["union"|Inp2]), !,
|
||||
glue(Inp2, " ", Inp3),
|
||||
gen_init(Inp3, Out).
|
||||
gen_init(Inp,"") :-
|
||||
split(Inp," ",[_, _, "void"|_]), !.
|
||||
gen_init(Inp,Init) :-
|
||||
split(Inp," ",[_, _, Init0| _]),
|
||||
append("Init",_,Init0), !,
|
||||
append([" ",Init0,";"],Init).
|
||||
gen_init(Inp,Init) :-
|
||||
split(Inp," ",[_, _, Init0| _]),
|
||||
append("Yap_Init",_,Init0), !,
|
||||
append([" ",Init0,";"],Init).
|
||||
gen_init(Inp,Init) :-
|
||||
split(Inp," ",[_, _, Init0| _]),
|
||||
append("Yap_init",_,Init0), !,
|
||||
append([" ",Init0,";"],Init).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkAT", AtomName]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = MkAtomTerm(",AtomName,");"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkOp", Name]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" ",Global," = Yap_opcode(",Name,");"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkLock"]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" INIT_LOCK(",Global,");"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkRWLock"]), !,
|
||||
fetch_name(Global,Field),
|
||||
append([" INIT_RWLOCK(",Global,");"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkInstE",OP]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global,"->opc = Yap_opcode(",OP,");"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkPred", Atom, "0", Module]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = RepPredProp(PredPropByAtom(",Atom,",",Module,"));"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkPred", Atom, Arity, Module]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = RepPredProp(PredPropByFunc(Yap_MkFunctor(",Atom,",",Arity,"),",Module,"));"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, "MkPred", Fun, Module]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = RepPredProp(PredPropByFunc(",Fun,",",Module,"));"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[".", Field,F0|_]), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
split(RField,".",[_,MField]),
|
||||
append("=",F,F0), !,
|
||||
fetch_name(Global,MField),
|
||||
append([" ",Global," = ",F,";"], Out).
|
||||
gen_init(Inp,Out) :-
|
||||
split(Inp," ",[_, Field, F0|_]),
|
||||
append("=",F,F0), !,
|
||||
cut_c_stuff(Field, RField),
|
||||
fetch_name(Global,RField),
|
||||
append([" ",Global," = ",F,";"], Out).
|
||||
gen_init(Inp,_) :-
|
||||
split(Inp," ",[_, _, _| _]),
|
||||
format(user_error,"OOPS: could not gen_init for ~s~n",[Inp]).
|
||||
|
@ -4740,7 +4740,7 @@ struct PL_local_data *Yap_InitThreadIO(int wid)
|
||||
#if THREADS
|
||||
if (wid) {
|
||||
/* copy from other worker */
|
||||
memcpy(p, Yap_local[worker_id]->Yap_ld_, sizeof(struct PL_local_data));
|
||||
memcpy(p, Yap_local[worker_id]->PL_local_data_p_, sizeof(struct PL_local_data));
|
||||
}
|
||||
#endif
|
||||
return p;
|
||||
|
Reference in New Issue
Block a user