debugger cleanup - I

This commit is contained in:
Vitor Santos Costa
2019-05-15 18:51:50 +01:00
parent babf3dd77d
commit ef3d435dec
8 changed files with 229 additions and 214 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;