allow MPI to compute term size.

This commit is contained in:
Vítor Santos Costa 2012-02-05 11:57:03 +00:00
parent bd677152e7
commit 0b1c98d3f6
2 changed files with 16 additions and 7 deletions

View File

@ -1668,9 +1668,9 @@ p_export_term( USES_REGS1 )
sz += 4096; sz += 4096;
free(export_buf); free(export_buf);
} }
} while (osz); } while (!osz);
return Yap_unify(ARG2,MkIntegerTerm(osz)) && return Yap_unify(ARG3,MkIntegerTerm(osz)) &&
Yap_unify(ARG3, MkIntegerTerm((Int)export_buf)); Yap_unify(ARG2, MkIntegerTerm((Int)export_buf));
} }
static Int static Int
@ -1680,10 +1680,19 @@ p_import_term( USES_REGS1 )
if (!export_buf) if (!export_buf)
return FALSE; return FALSE;
Int out = Yap_unify(ARG2,Yap_ImportTerm(export_buf)); Int out = Yap_unify(ARG2,Yap_ImportTerm(export_buf));
free(export_buf);
return out; return out;
} }
static Int
p_kill_exported_term( USES_REGS1 )
{
char *export_buf = (char *)IntegerOfTerm(Deref(ARG1));
if (!export_buf)
return FALSE;
free(export_buf);
return TRUE;
}
static Term vars_in_complex_term(register CELL *pt0, register CELL *pt0_end, Term inp USES_REGS) static Term vars_in_complex_term(register CELL *pt0, register CELL *pt0_end, Term inp USES_REGS)
{ {
@ -4818,8 +4827,9 @@ void Yap_InitUtilCPreds(void)
Yap_InitCPred("subsumes", 2, p_subsumes, 0); Yap_InitCPred("subsumes", 2, p_subsumes, 0);
Yap_InitCPred("variables_within_term", 3, p_variables_within_term, 0); Yap_InitCPred("variables_within_term", 3, p_variables_within_term, 0);
Yap_InitCPred("new_variables_in_term", 3, p_new_variables_in_term, 0); Yap_InitCPred("new_variables_in_term", 3, p_new_variables_in_term, 0);
Yap_InitCPred("import_term", 2, p_import_term, 0);
Yap_InitCPred("export_term", 3, p_export_term, 0); Yap_InitCPred("export_term", 3, p_export_term, 0);
Yap_InitCPred("kill_exported_term", 1, p_kill_exported_term, SafePredFlag);
Yap_InitCPred("import_term", 2, p_import_term, 0);
CurrentModule = cm; CurrentModule = cm;
#ifdef DEBUG #ifdef DEBUG
Yap_InitCPred("$force_trail_expansion", 1, p_force_trail_expansion, SafePredFlag|HiddenPredFlag); Yap_InitCPred("$force_trail_expansion", 1, p_force_trail_expansion, SafePredFlag|HiddenPredFlag);

View File

@ -31,5 +31,4 @@
mpi_msg_size(Term, Size) :- mpi_msg_size(Term, Size) :-
terms:export_term(Term, Buf, Size), terms:export_term(Term, Buf, Size),
terms:import_term(Buf, _). terms:kill_exported_term(Buf).