- // This will propagate the conflict up the data structure.
- private void propagateObjConflict(ConcreteRuntimeObjNode curr, HashSet<ConcreteRuntimeObjNode> pointsOfAccess) {
- for(ConcreteRuntimeObjNode referencer: curr.parentsWithReadToNode) {
- if(curr.parentsThatWillLeadToConflicts.add(referencer) || //case where referencee has never seen referncer
- (pointsOfAccess != null && referencer.addPossibleWaitingQueueEnqueue(pointsOfAccess))) // case where referencer has never seen possible unresolved referencee below
- {
- referencer.decendantsObjConflict = true;
- propagateObjConflict(referencer, pointsOfAccess);
- }
- }
- }
-
- private void propagateObjConflict(ConcreteRuntimeObjNode curr, ConcreteRuntimeObjNode pointOfAccess) {
- for(ConcreteRuntimeObjNode referencer: curr.parentsWithReadToNode) {
- if( curr.parentsThatWillLeadToConflicts.add(referencer) || //case where referencee has never seen referncer
- (pointOfAccess != null && referencer.addPossibleWaitingQueueEnqueue(pointOfAccess))) // case where referencer has never seen possible unresolved referencee below
- {
- referencer.decendantsObjConflict = true;
- propagateObjConflict(referencer, pointOfAccess);
- }
- }
- }
-
- private void propagatePrimConflict(ConcreteRuntimeObjNode curr, HashSet<ConcreteRuntimeObjNode> pointsOfAccess) {
- for(ConcreteRuntimeObjNode referencer: curr.parentsWithReadToNode) {
- if(curr.parentsThatWillLeadToConflicts.add(referencer) || //same cases as above
- (pointsOfAccess != null && referencer.addPossibleWaitingQueueEnqueue(pointsOfAccess)))
- {
- referencer.decendantsPrimConflict = true;
- propagatePrimConflict(referencer, pointsOfAccess);
- }
- }
- }
-
- private void propagatePrimConflict(ConcreteRuntimeObjNode curr, ConcreteRuntimeObjNode pointOfAccess) {
- for(ConcreteRuntimeObjNode referencer: curr.parentsWithReadToNode) {
- if(curr.parentsThatWillLeadToConflicts.add(referencer) || //same cases as above
- (pointOfAccess != null && referencer.addPossibleWaitingQueueEnqueue(pointOfAccess)))
- {
- referencer.decendantsPrimConflict = true;
- propagatePrimConflict(referencer, pointOfAccess);
- }
- }
- }