don't lock ThreadLocal predicates.
This commit is contained in:
parent
656e95f068
commit
2a76f86785
@ -7898,6 +7898,7 @@ Yap_absmi(int inp)
|
|||||||
PELOCK(10,ap);
|
PELOCK(10,ap);
|
||||||
PP = ap;
|
PP = ap;
|
||||||
if (!ap->cs.p_code.NOfClauses) {
|
if (!ap->cs.p_code.NOfClauses) {
|
||||||
|
UNLOCKPE(11,ap);
|
||||||
FAIL();
|
FAIL();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
24
C/cdmgr.c
24
C/cdmgr.c
@ -1010,6 +1010,7 @@ IPred(PredEntry *ap, UInt NSlots, yamop *next_pc)
|
|||||||
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
} else if (ap->PredFlags & LogUpdatePredFlag &&
|
} else if (ap->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(ap->PredFlags & ThreadLocalPredFlag) &&
|
||||||
ap->ModuleOfPred != IDB_MODULE) {
|
ap->ModuleOfPred != IDB_MODULE) {
|
||||||
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
@ -1060,6 +1061,7 @@ RemoveMainIndex(PredEntry *ap)
|
|||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (ap->PredFlags & LogUpdatePredFlag &&
|
if (ap->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(ap->PredFlags & ThreadLocalPredFlag) &&
|
||||||
ap->ModuleOfPred != IDB_MODULE) {
|
ap->ModuleOfPred != IDB_MODULE) {
|
||||||
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
@ -1611,7 +1613,8 @@ retract_all(PredEntry *p, int in_use)
|
|||||||
p->cs.p_code.TrueCodeOfPred = p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->cs.p_code.TrueCodeOfPred = p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->PredFlags & LogUpdatePredFlag &&
|
if (p->PredFlags & LogUpdatePredFlag &&
|
||||||
p->ModuleOfPred != IDB_MODULE) {
|
!(p->PredFlags & ThreadLocalPredFlag) &&
|
||||||
|
p->ModuleOfPred != IDB_MODULE) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -1664,6 +1667,7 @@ add_first_static(PredEntry *p, yamop *cp, int spy_flag)
|
|||||||
p->OpcodeOfPred = pt->opc;
|
p->OpcodeOfPred = pt->opc;
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->PredFlags & LogUpdatePredFlag &&
|
if (p->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag) &&
|
||||||
p->ModuleOfPred != IDB_MODULE) {
|
p->ModuleOfPred != IDB_MODULE) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
@ -1759,7 +1763,8 @@ add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag)
|
|||||||
p->cs.p_code.NOfClauses = 1;
|
p->cs.p_code.NOfClauses = 1;
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->PredFlags & LogUpdatePredFlag &&
|
if (p->PredFlags & LogUpdatePredFlag &&
|
||||||
p->ModuleOfPred != IDB_MODULE) {
|
!(p->PredFlags & ThreadLocalPredFlag) &&
|
||||||
|
p->ModuleOfPred != IDB_MODULE) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -1817,7 +1822,8 @@ asserta_stat_clause(PredEntry *p, yamop *q, int spy_flag)
|
|||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->ModuleOfPred != IDB_MODULE) {
|
if (p->ModuleOfPred != IDB_MODULE &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag)) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -1891,7 +1897,8 @@ assertz_stat_clause(PredEntry *p, yamop *cp, int spy_flag)
|
|||||||
p->cs.p_code.TrueCodeOfPred = p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->cs.p_code.TrueCodeOfPred = p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->ModuleOfPred != IDB_MODULE) {
|
if (p->ModuleOfPred != IDB_MODULE &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag)) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -2231,6 +2238,7 @@ addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref)
|
|||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->PredFlags & LogUpdatePredFlag &&
|
if (p->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag) &&
|
||||||
p->ModuleOfPred != IDB_MODULE) {
|
p->ModuleOfPred != IDB_MODULE) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
@ -2255,7 +2263,8 @@ addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref)
|
|||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (p->PredFlags & LogUpdatePredFlag &&
|
if (p->PredFlags & LogUpdatePredFlag &&
|
||||||
p->ModuleOfPred != IDB_MODULE) {
|
!(p->PredFlags & ThreadLocalPredFlag) &&
|
||||||
|
p->ModuleOfPred != IDB_MODULE) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -2388,7 +2397,8 @@ Yap_EraseStaticClause(StaticClause *cl, Term mod) {
|
|||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (ap->PredFlags & LogUpdatePredFlag &&
|
if (ap->PredFlags & LogUpdatePredFlag &&
|
||||||
ap->ModuleOfPred != IDB_MODULE) {
|
!(ap->PredFlags & ThreadLocalPredFlag) &&
|
||||||
|
ap->ModuleOfPred != IDB_MODULE) {
|
||||||
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
}
|
}
|
||||||
@ -2409,6 +2419,7 @@ Yap_add_logupd_clause(PredEntry *pe, LogUpdClause *cl, int mode) {
|
|||||||
pe->OpcodeOfPred == FAIL_OPCODE) { /* log updates */
|
pe->OpcodeOfPred == FAIL_OPCODE) { /* log updates */
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (pe->PredFlags & LogUpdatePredFlag &&
|
if (pe->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(pe->PredFlags & ThreadLocalPredFlag) &&
|
||||||
pe->ModuleOfPred != IDB_MODULE) {
|
pe->ModuleOfPred != IDB_MODULE) {
|
||||||
pe->OpcodeOfPred = LOCKPRED_OPCODE;
|
pe->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
pe->CodeOfPred = (yamop *)(&(pe->OpcodeOfPred));
|
pe->CodeOfPred = (yamop *)(&(pe->OpcodeOfPred));
|
||||||
@ -2773,6 +2784,7 @@ p_rmspy( USES_REGS1 )
|
|||||||
if (!(pred->PredFlags & DynamicPredFlag)) {
|
if (!(pred->PredFlags & DynamicPredFlag)) {
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (pred->PredFlags & LogUpdatePredFlag &&
|
if (pred->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(pred->PredFlags & ThreadLocalPredFlag) &&
|
||||||
pred->ModuleOfPred != IDB_MODULE) {
|
pred->ModuleOfPred != IDB_MODULE) {
|
||||||
pred->OpcodeOfPred = LOCKPRED_OPCODE;
|
pred->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
pred->CodeOfPred = (yamop *)(&(pred->OpcodeOfPred));
|
pred->CodeOfPred = (yamop *)(&(pred->OpcodeOfPred));
|
||||||
|
@ -4268,7 +4268,8 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr)
|
|||||||
p->OpcodeOfPred = Yap_opcode(_spy_pred);
|
p->OpcodeOfPred = Yap_opcode(_spy_pred);
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
} else if (p->ModuleOfPred != IDB_MODULE) {
|
} else if (p->ModuleOfPred != IDB_MODULE &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag)) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#endif
|
#endif
|
||||||
@ -4277,7 +4278,8 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr)
|
|||||||
p->OpcodeOfPred = p->cs.p_code.TrueCodeOfPred->opc;
|
p->OpcodeOfPred = p->cs.p_code.TrueCodeOfPred->opc;
|
||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
} else if (p->ModuleOfPred != IDB_MODULE) {
|
} else if (p->ModuleOfPred != IDB_MODULE &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag)) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#endif
|
#endif
|
||||||
@ -4290,7 +4292,8 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr)
|
|||||||
p->OpcodeOfPred = Yap_opcode(_spy_pred);
|
p->OpcodeOfPred = Yap_opcode(_spy_pred);
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
} else if (p->ModuleOfPred != IDB_MODULE) {
|
} else if (p->ModuleOfPred != IDB_MODULE &&
|
||||||
|
!(p->PredFlags & ThreadLocalPredFlag)) {
|
||||||
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
p->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred));
|
||||||
#endif
|
#endif
|
||||||
|
@ -4524,6 +4524,7 @@ ExpandIndex(PredEntry *ap, int ExtraArgs, yamop *nextop USES_REGS) {
|
|||||||
}
|
}
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
if (ap->PredFlags & LogUpdatePredFlag &&
|
if (ap->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(ap->PredFlags & ThreadLocalPredFlag) &&
|
||||||
ap->ModuleOfPred != IDB_MODULE) {
|
ap->ModuleOfPred != IDB_MODULE) {
|
||||||
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
ap->cs.p_code.TrueCodeOfPred = ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->cs.p_code.TrueCodeOfPred = ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
@ -6127,6 +6128,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
ap->CodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
} else if (ap->PredFlags & LogUpdatePredFlag &&
|
} else if (ap->PredFlags & LogUpdatePredFlag &&
|
||||||
|
!(ap->PredFlags & ThreadLocalPredFlag) &&
|
||||||
ap->ModuleOfPred != IDB_MODULE) {
|
ap->ModuleOfPred != IDB_MODULE) {
|
||||||
ap->cs.p_code.TrueCodeOfPred = FAILCODE;
|
ap->cs.p_code.TrueCodeOfPred = FAILCODE;
|
||||||
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
ap->OpcodeOfPred = LOCKPRED_OPCODE;
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit bb009d2e6627ec9eac06684b2c09069808e5e238
|
Subproject commit 9e637343dfb5b152c0d9d1f486bcadbf975f778c
|
Reference in New Issue
Block a user