Abolish removes too much information

This commit is contained in:
Vitor Santos Costa 2016-07-31 04:32:41 -05:00
parent 557c89a4ad
commit 9bfdfeb204
1 changed files with 13 additions and 5 deletions

View File

@ -910,7 +910,15 @@ static void read_clauses(FILE *stream, PredEntry *pp, UInt nclauses,
} }
return; return;
} }
Yap_Abolish(pp); if (pp->cs.p_code.NOfClauses) {
StaticClause *cl;
cl = ClauseCodeToStaticClause(pp->cs.p_code.FirstClause);
do {
StaticClause *ncl = cl->ClNext;
Yap_EraseStaticClause(cl, pp, CurrentModule);
cl = ncl;
} while (cl != NULL);
}
for (i = 0; i < nclauses; i++) { for (i = 0; i < nclauses; i++) {
char *base = (void *)read_UInt(stream); char *base = (void *)read_UInt(stream);
UInt size = read_UInt(stream); UInt size = read_UInt(stream);
@ -1062,7 +1070,7 @@ static Int qload_program(USES_REGS1) {
return true; return true;
} }
int Yap_Restore(const char *s, const char *lib_dir) { YAP_file_type_t Yap_Restore(const char *s, const char *lib_dir) {
CACHE_REGS CACHE_REGS
FILE *stream = Yap_OpenRestore(s, lib_dir); FILE *stream = Yap_OpenRestore(s, lib_dir);
@ -1070,13 +1078,13 @@ int Yap_Restore(const char *s, const char *lib_dir) {
return -1; return -1;
GLOBAL_RestoreFile = s; GLOBAL_RestoreFile = s;
if (do_header(stream) == NIL) if (do_header(stream) == NIL)
return FALSE; return YAP_BOOT_PL;
read_module(stream); read_module(stream);
setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, true); setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, true);
fclose(stream); fclose(stream);
GLOBAL_RestoreFile = NULL; GLOBAL_RestoreFile = NULL;
LOCAL_SourceModule = CurrentModule = USER_MODULE; LOCAL_SourceModule = CurrentModule = USER_MODULE;
return DO_ONLY_CODE; return YAP_QLY;
} }
void Yap_InitQLYR(void) { void Yap_InitQLYR(void) {
@ -1086,7 +1094,7 @@ void Yap_InitQLYR(void) {
SyncPredFlag | HiddenPredFlag); SyncPredFlag | HiddenPredFlag);
Yap_InitCPred("$qload_program", 1, qload_program, Yap_InitCPred("$qload_program", 1, qload_program,
SyncPredFlag | HiddenPredFlag); SyncPredFlag | HiddenPredFlag);
Yap_InitCPred("$q_header", 2, get_header, SyncPredFlag | HiddenPredFlag); Yap_InitCPred("$q_header", 2, get_header, SyncPredFlag | HiddenPredFlag);
if (FALSE) { if (FALSE) {
restore_codes(); restore_codes();
} }