debugger cleanup - I
This commit is contained in:
14
C/cdmgr.c
14
C/cdmgr.c
@@ -2036,7 +2036,7 @@ static Int p_sys_export(USES_REGS1) { /* '$set_spy'(+Fun,+M) */
|
||||
|
||||
******************************************************************/
|
||||
|
||||
static Int p_is_no_trace(USES_REGS1) { /* '$undefined'(P,Mod) */
|
||||
static Int p_is_private(USES_REGS1) { /* '$undefined'(P,Mod) */
|
||||
PredEntry *pe;
|
||||
|
||||
pe = Yap_get_pred(Deref(ARG1), Deref(ARG2), "undefined/1");
|
||||
@@ -2051,7 +2051,7 @@ static Int p_is_no_trace(USES_REGS1) { /* '$undefined'(P,Mod) */
|
||||
return false;
|
||||
}
|
||||
|
||||
static Int p_set_no_trace(USES_REGS1) { /* '$set_no_trace'(+Fun,+M) */
|
||||
static Int p_set_private(USES_REGS1) { /* '$set_private'(+Fun,+M) */
|
||||
PredEntry *pe;
|
||||
|
||||
pe = Yap_get_pred(Deref(ARG1), Deref(ARG2), "undefined/1");
|
||||
@@ -2067,7 +2067,7 @@ int Yap_SetNoTrace(char *name, arity_t arity, Term tmod) {
|
||||
PredEntry *pe;
|
||||
|
||||
if (arity == 0) {
|
||||
pe = Yap_get_pred(MkAtomTerm(Yap_LookupAtom(name)), tmod, "no_trace");
|
||||
pe = Yap_get_pred(MkAtomTerm(Yap_LookupAtom(name)), tmod, "private");
|
||||
} else {
|
||||
pe = RepPredProp(
|
||||
PredPropByFunc(Yap_MkFunctor(Yap_LookupAtom(name), arity), tmod));
|
||||
@@ -4252,7 +4252,7 @@ static Int init_pred_flag_vals(USES_REGS1) {
|
||||
ModuleTransparentPredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "multi", MultiFileFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "no_spy", NoSpyPredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "no_trace", NoTracePredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "private", NoTracePredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "number_db", NumberDBPredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "profiled", ProfiledPredFlag PASS_REGS);
|
||||
pred_flag_clause(f, mod, "quasi_quotation", QuasiQuotationPredFlag PASS_REGS);
|
||||
@@ -4331,9 +4331,9 @@ void Yap_InitCdMgr(void) {
|
||||
SafePredFlag | SyncPredFlag);
|
||||
Yap_InitCPred("$is_discontiguous", 2, p_is_discontiguous,
|
||||
TestPredFlag | SafePredFlag);
|
||||
Yap_InitCPred("$is_no_trace", 2, p_is_no_trace, TestPredFlag | SafePredFlag);
|
||||
Yap_InitCPred("$set_no_trace", 2, p_set_no_trace,
|
||||
TestPredFlag | SafePredFlag);
|
||||
Yap_InitCPred("$is_private", 2, p_is_private, TestPredFlag | SafePredFlag);
|
||||
Yap_InitCPred("$set_private", 2, p_set_private,
|
||||
SyncPredFlag | SafePredFlag);
|
||||
Yap_InitCPred("$is_profiled", 1, p_is_profiled, SafePredFlag | SyncPredFlag);
|
||||
Yap_InitCPred("$profile_info", 3, p_profile_info,
|
||||
SafePredFlag | SyncPredFlag);
|
||||
|
||||
22
C/exec.c
22
C/exec.c
@@ -792,6 +792,14 @@ restart_exec:
|
||||
return CallPredicate(RepPredProp(pe), cut_cp, code PASS_REGS);
|
||||
}
|
||||
|
||||
static Int creep_clause(USES_REGS1) { /* '$execute_clause'(Goal) */
|
||||
Int rc = execute_clause( PASS_REGS1 );
|
||||
if (!LOCAL_InterruptsDisabled) {
|
||||
Yap_signal(YAP_CREEP_SIGNAL);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
static Int execute_in_mod(USES_REGS1) { /* '$execute'(Goal) */
|
||||
return do_execute(Deref(ARG1), Deref(ARG2) PASS_REGS);
|
||||
}
|
||||
@@ -898,6 +906,10 @@ static bool watch_cut(Term ext USES_REGS) {
|
||||
bool active = ArgOfTerm(5, task) == TermTrue;
|
||||
bool ex_mode = false;
|
||||
|
||||
LOCAL_Signals = 0;
|
||||
CalculateStackGap(PASS_REGS1);
|
||||
LOCAL_PrologMode = UserMode;
|
||||
|
||||
if (complete) {
|
||||
return true;
|
||||
}
|
||||
@@ -945,6 +957,9 @@ static bool watch_retry(Term d0 USES_REGS) {
|
||||
bool complete = !IsVarTerm(ArgOfTerm(4, task));
|
||||
bool active = ArgOfTerm(5, task) == TermTrue;
|
||||
choiceptr B0 = (choiceptr)(LCL0 - IntegerOfTerm(ArgOfTerm(6, task)));
|
||||
LOCAL_Signals = 0;
|
||||
CalculateStackGap(PASS_REGS1);
|
||||
LOCAL_PrologMode = UserMode;
|
||||
|
||||
if (complete)
|
||||
return true;
|
||||
@@ -1003,6 +1018,9 @@ static Int setup_call_catcher_cleanup(USES_REGS1) {
|
||||
Int oENV = LCL0 - ENV;
|
||||
Int oYENV = LCL0 - YENV;
|
||||
bool rc;
|
||||
LOCAL_Signals = 0;
|
||||
CalculateStackGap(PASS_REGS1);
|
||||
LOCAL_PrologMode = UserMode;
|
||||
Yap_DisableInterrupts(worker_id);
|
||||
rc = Yap_RunTopGoal(Setup, false);
|
||||
Yap_EnableInterrupts(worker_id);
|
||||
@@ -1038,6 +1056,9 @@ static Int cleanup_on_exit(USES_REGS1) {
|
||||
bool box = ArgOfTerm(1, task) == TermTrue;
|
||||
Term cleanup = ArgOfTerm(3, task);
|
||||
Term complete = IsNonVarTerm(ArgOfTerm(4, task));
|
||||
LOCAL_Signals = 0;
|
||||
CalculateStackGap(PASS_REGS1);
|
||||
LOCAL_PrologMode = UserMode;
|
||||
|
||||
while (B->cp_ap->opc == FAIL_OPCODE)
|
||||
B = B->cp_b;
|
||||
@@ -2376,6 +2397,7 @@ void Yap_InitExecFs(void) {
|
||||
Yap_InitCPred("$execute_nonstop", 1, execute_nonstop1, NoTracePredFlag);
|
||||
Yap_InitCPred("$creep_step", 2, creep_step, NoTracePredFlag);
|
||||
Yap_InitCPred("$execute_clause", 4, execute_clause, NoTracePredFlag);
|
||||
Yap_InitCPred("$creep_clause", 4,creep_clause, NoTracePredFlag);
|
||||
Yap_InitCPred("$current_choice_point", 1, current_choice_point, 0);
|
||||
Yap_InitCPred("$current_choicepoint", 1, current_choice_point, 0);
|
||||
CurrentModule = HACKS_MODULE;
|
||||
|
||||
@@ -212,7 +212,7 @@ static Term NewArena(UInt size, int wid, UInt arity, CELL *where, struct cell_sp
|
||||
WORKER_REGS(wid)
|
||||
exit_cell_space(cellSpace);
|
||||
// make sure we have enough room
|
||||
while (HR + size > ASP - MIN_ARENA_SIZE) {
|
||||
while (HR + size > ASP - 2*MIN_ARENA_SIZE) {
|
||||
if (!Yap_gcl(size * sizeof(CELL), arity, ENV, P)) {
|
||||
Yap_ThrowError(RESOURCE_ERROR_STACK, TermNil, LOCAL_ErrorMessage);
|
||||
return TermNil;
|
||||
|
||||
Reference in New Issue
Block a user