fix threads
This commit is contained in:
parent
0ac9f6f436
commit
14b67dc76d
@ -851,10 +851,13 @@ Yap_NewPredPropByFunctor(FunctorEntry *fe, Term cur_mod)
|
||||
}
|
||||
p->FunctorOfPred = fe;
|
||||
WRITE_UNLOCK(fe->FRWLock);
|
||||
{
|
||||
CACHE_REGS
|
||||
Yap_inform_profiler_of_clause(&(p->OpcodeOfPred), &(p->OpcodeOfPred)+1, p, GPROF_NEW_PRED_FUNC);
|
||||
if (!(p->PredFlags & (CPredFlag|AsmPredFlag))) {
|
||||
Yap_inform_profiler_of_clause(&(p->cs.p_code.ExpandCode), &(p->cs.p_code.ExpandCode)+1, p, GPROF_NEW_PRED_FUNC);
|
||||
}
|
||||
}
|
||||
return AbsPredProp(p);
|
||||
}
|
||||
|
||||
@ -962,10 +965,13 @@ Yap_NewPredPropByAtom(AtomEntry *ae, Term cur_mod)
|
||||
p0 = AbsPredProp(p);
|
||||
p->FunctorOfPred = (Functor)AbsAtom(ae);
|
||||
WRITE_UNLOCK(ae->ARWLock);
|
||||
{
|
||||
CACHE_REGS
|
||||
Yap_inform_profiler_of_clause(&(p->OpcodeOfPred), &(p->OpcodeOfPred)+1, p, GPROF_NEW_PRED_ATOM);
|
||||
if (!(p->PredFlags & (CPredFlag|AsmPredFlag))) {
|
||||
Yap_inform_profiler_of_clause(&(p->cs.p_code.ExpandCode), &(p->cs.p_code.ExpandCode)+1, p, GPROF_NEW_PRED_ATOM);
|
||||
}
|
||||
}
|
||||
return p0;
|
||||
}
|
||||
|
||||
|
@ -2056,7 +2056,10 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod
|
||||
save_machine_regs();
|
||||
siglongjmp(cip->CompilerBotch,2);
|
||||
}
|
||||
{
|
||||
CACHE_REGS
|
||||
Yap_inform_profiler_of_clause(newcp, (char *)(newcp)+size, ap, GPROF_INDEX);
|
||||
}
|
||||
Yap_LUIndexSpace_CP += size;
|
||||
#ifdef DEBUG
|
||||
Yap_NewCps++;
|
||||
|
@ -1892,7 +1892,10 @@ record_lu(PredEntry *pe, Term t, int position)
|
||||
if ((cl = new_lu_db_entry(t, pe)) == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
{
|
||||
CACHE_REGS
|
||||
Yap_inform_profiler_of_clause(cl, (char *)cl+cl->ClSize, pe, GPROF_NEW_LU_CLAUSE);
|
||||
}
|
||||
Yap_add_logupd_clause(pe, cl, (position == MkFirst ? 2 : 0));
|
||||
return cl;
|
||||
}
|
||||
@ -4429,7 +4432,7 @@ p_increase_reference_counter( USES_REGS1 )
|
||||
cl = (LogUpdClause *)DBRefOfTerm(t1);
|
||||
PELOCK(67,cl->ClPred);
|
||||
cl->ClRefCount++;
|
||||
UNLOCK(cl->ClPred);
|
||||
UNLOCK(cl->ClPred->PELock);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -4452,10 +4455,10 @@ p_decrease_reference_counter( USES_REGS1 )
|
||||
PELOCK(67,cl->ClPred);
|
||||
if (cl->ClRefCount) {
|
||||
cl->ClRefCount--;
|
||||
UNLOCK(cl->ClPred);
|
||||
UNLOCK(cl->ClPred->PELock);
|
||||
return TRUE;
|
||||
}
|
||||
UNLOCK(cl->ClPred);
|
||||
UNLOCK(cl->ClPred->PELock);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
2
C/exec.c
2
C/exec.c
@ -1736,7 +1736,7 @@ Yap_InitYaamRegs( int myworker_id )
|
||||
Yap_ResetExceptionTerm ( myworker_id );
|
||||
Yap_PutValue (AtomBreak, MkIntTerm (0));
|
||||
TR = (tr_fr_ptr)REMOTE_TrailBase(myworker_id);
|
||||
H = H0 = ((CELL *) REMOTE_GlobalBase(myworker_id))+1;
|
||||
H = H0 = ((CELL *) REMOTE_GlobalBase(myworker_id))+1; // +1: hack to ensure the gc does not try to mark mistakenly
|
||||
LCL0 = ASP = (CELL *) REMOTE_LocalBase(myworker_id);
|
||||
CurrentTrailTop = (tr_fr_ptr)(REMOTE_TrailTop(myworker_id)-MinTrailGap);
|
||||
/* notice that an initial choice-point and environment
|
||||
|
@ -1923,7 +1923,10 @@ suspend_indexing(ClauseDef *min, ClauseDef *max, PredEntry *ap, struct intermedi
|
||||
} else {
|
||||
Yap_IndexSpace_EXT += sz;
|
||||
}
|
||||
{
|
||||
CACHE_REGS
|
||||
Yap_inform_profiler_of_clause(ncode, (CODEADDR)ncode+sz, ap, GPROF_NEW_EXPAND_BLOCK);
|
||||
}
|
||||
/* create an expand_block */
|
||||
ncode->opc = Yap_opcode(_expand_clauses);
|
||||
ncode->u.sssllp.p = ap;
|
||||
|
Reference in New Issue
Block a user