don't make mega-clauses always source

This commit is contained in:
Vítor Santos Costa 2013-09-28 18:20:04 +01:00
parent 048c00a7a6
commit 577b99367d
3 changed files with 10 additions and 3 deletions

View File

@ -894,7 +894,7 @@ Yap_BuildMegaClause(PredEntry *ap)
ap->cs.p_code.FirstClause = ap->cs.p_code.FirstClause =
ap->cs.p_code.LastClause = ap->cs.p_code.LastClause =
mcl->ClCode; mcl->ClCode;
ap->PredFlags |= MegaClausePredFlag|SourcePredFlag; ap->PredFlags |= MegaClausePredFlag;
Yap_inform_profiler_of_clause(mcl, (char *)mcl+required, ap, GPROF_MEGA); Yap_inform_profiler_of_clause(mcl, (char *)mcl+required, ap, GPROF_MEGA);
} }
@ -6044,7 +6044,7 @@ p_dbload_get_space( USES_REGS1 )
ap->cs.p_code.FirstClause = ap->cs.p_code.FirstClause =
ap->cs.p_code.LastClause = ap->cs.p_code.LastClause =
mcl->ClCode; mcl->ClCode;
ap->PredFlags |= (MegaClausePredFlag|SourcePredFlag); ap->PredFlags |= (MegaClausePredFlag);
ap->cs.p_code.NOfClauses = ncls; ap->cs.p_code.NOfClauses = ncls;
if (ap->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) { if (ap->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) {
ap->OpcodeOfPred = Yap_opcode(_spy_pred); ap->OpcodeOfPred = Yap_opcode(_spy_pred);

View File

@ -629,7 +629,7 @@ p_exodb_get_space( USES_REGS1 )
ap->cs.p_code.FirstClause = ap->cs.p_code.FirstClause =
ap->cs.p_code.LastClause = ap->cs.p_code.LastClause =
mcl->ClCode; mcl->ClCode;
ap->PredFlags |= MegaClausePredFlag|SourcePredFlag; ap->PredFlags |= MegaClausePredFlag;
ap->cs.p_code.NOfClauses = ncls; ap->cs.p_code.NOfClauses = ncls;
if (ap->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) { if (ap->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) {
ap->OpcodeOfPred = Yap_opcode(_spy_pred); ap->OpcodeOfPred = Yap_opcode(_spy_pred);

View File

@ -275,6 +275,12 @@ writebig(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, stru
else else
wrputc('"',wglb->stream); wrputc('"',wglb->stream);
return; return;
} else if (big_tag == ARRAY_INT || big_tag == ARRAY_FLOAT) {
wrputc('{', wglb->stream);
wrputs("...", wglb->stream);
wrputc('}', wglb->stream);
lastw = separator;
return;
} else if (big_tag >= USER_BLOB_START && big_tag < USER_BLOB_END) { } else if (big_tag >= USER_BLOB_START && big_tag < USER_BLOB_END) {
Opaque_CallOnWrite f; Opaque_CallOnWrite f;
CELL blob_info; CELL blob_info;
@ -283,6 +289,7 @@ writebig(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, stru
if (GLOBAL_OpaqueHandlers && if (GLOBAL_OpaqueHandlers &&
(f= GLOBAL_OpaqueHandlers[blob_info].write_handler)) { (f= GLOBAL_OpaqueHandlers[blob_info].write_handler)) {
(f)(wglb->stream, big_tag, ExternalBlobFromTerm(t), 0); (f)(wglb->stream, big_tag, ExternalBlobFromTerm(t), 0);
return;
} }
} }
wrputs("0",wglb->stream); wrputs("0",wglb->stream);