diff --git a/src/main/java/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java b/src/main/java/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java index 58c6618e5..7c9a3fbe8 100644 --- a/src/main/java/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java +++ b/src/main/java/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java @@ -378,8 +378,8 @@ public class TypeUnifyTask extends RecursiveTask>> { eq0.forEach(x -> x.disableCondWildcards()); - writeLog(nOfUnify.toString() + " Unifikation nach applyTypeUnificationRules: " + eq.toString()); - writeLog(nOfUnify.toString() + " Oderconstraints nach applyTypeUnificationRules: " + oderConstraints.toString()); + writeLog(nOfUnify.toString() + " Unifikation nach applyTypeUnificationRules: " + eq.toString() + "\n" + + nOfUnify.toString() + " Oderconstraints nach applyTypeUnificationRules: " + oderConstraints.toString()); /* * Step 2 and 3: Create a subset eq1s of pairs where both sides are TPH and eq2s of the other pairs @@ -438,8 +438,8 @@ public class TypeUnifyTask extends RecursiveTask>> { if(!undefinedPairs.isEmpty()) { noUndefPair++; for (UnifyPair up : undefinedPairs) { - writeLog(noUndefPair.toString() + " UndefinedPairs; " + up); - writeLog("BasePair; " + up.getBasePair()); + writeLog(noUndefPair.toString() + " UndefinedPairs; " + up + "\n" + + "BasePair; " + up.getBasePair()); } Set> error = new HashSet<>(); undefinedPairs = undefinedPairs.stream().map(x -> { x.setUndefinedPair(); return x;}).collect(Collectors.toCollection(HashSet::new)); @@ -806,8 +806,8 @@ public class TypeUnifyTask extends RecursiveTask>> { */ List> nextSetasListOderConstraints = new ArrayList<>(); - writeLog("nextSet: " + nextSet.toString()); - writeLog("nextSetasList: " + nextSetasList.toString()); + writeLog("nextSet: " + nextSet.toString() + "\n" + + "nextSetasList: " + nextSetasList.toString()); /* staistics Nextvar an Hand Varianzbestimmung auskommentieren Anfang if (variance == 1) { @@ -934,16 +934,15 @@ public class TypeUnifyTask extends RecursiveTask>> { forkOrig.fork(); } /* FORK ENDE */ - - synchronized (this) { - writeLog("a in " + variance + " "+ a); - writeLog("nextSetasListRest: " + nextSetasListRest.toString()); - } + + writeLog("a in " + variance + " "+ a + "\n" + + "nextSetasListRest: " + nextSetasListRest.toString()); + while (!nextSetasList.isEmpty()) { Set nSaL = nextSetasList.remove(0); - synchronized (this) { //nextSetasList.remove(nSaL); - writeLog("1 RM" + nSaL.toString()); - } + //nextSetasList.remove(nSaL); + writeLog("1 RM" + nSaL.toString()); + if (!oderConstraint) { @@ -975,47 +974,44 @@ public class TypeUnifyTask extends RecursiveTask>> { //res = unify2(newElemsOrig, newEqOrig, newOderConstraintsOrig, fc, parallel, rekTiefe); /* FORK ANFANG */ - synchronized (this) { - writeLog("wait "+ forkOrig.thNo); + + writeLog("wait "+ forkOrig.thNo); + noOfThread--; + res = forkOrig.join(); + synchronized (usedTasks) { + if (this.myIsCancelled()) { + return new HashSet<>(); + } + } + //noOfThread++; + forkOrig.writeLog("final Orig 1"); + forkOrig.closeLogFile(); + //Set> fork_res = forkOrig.join(); + writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); + //noOfThread--; an das Ende von compute verschoben + //add_res.add(fork_res); + /* FORK ENDE */ + + forks.forEach(x -> writeLog("wait: " + x.thNo)); + for(TypeUnify2Task fork : forks) { noOfThread--; - res = forkOrig.join(); + Set> fork_res = fork.join(); synchronized (usedTasks) { if (this.myIsCancelled()) { return new HashSet<>(); } } //noOfThread++; - forkOrig.writeLog("final Orig 1"); - forkOrig.closeLogFile(); - //Set> fork_res = forkOrig.join(); - writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - //add_res.add(fork_res); - }; - /* FORK ENDE */ - - forks.forEach(x -> writeLog("wait: " + x.thNo)); - for(TypeUnify2Task fork : forks) { - synchronized (this) { - noOfThread--; - Set> fork_res = fork.join(); - synchronized (usedTasks) { - if (this.myIsCancelled()) { - return new HashSet<>(); - } - } - //noOfThread++; - writeLog("Join " + new Integer(fork.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - writeLog("fork_res: " + fork_res.toString()); - writeLog(new Boolean((isUndefinedPairSetSet(fork_res))).toString()); - add_res.add(fork_res); - if (!isUndefinedPairSetSet(fork_res)) { - aParDef.add(fork.getNextSetElement()); - } - fork.writeLog("final 1"); - fork.closeLogFile(); - }; + //noOfThread--; an das Ende von compute verschoben + writeLog("Join " + new Integer(fork.thNo).toString() + "\n" + + "fork_res: " + fork_res.toString() + "\n" + + new Boolean((isUndefinedPairSetSet(fork_res))).toString()); + add_res.add(fork_res); + if (!isUndefinedPairSetSet(fork_res)) { + aParDef.add(fork.getNextSetElement()); + } + fork.writeLog("final 1"); + fork.closeLogFile(); } //noOfThread++; } else { @@ -1037,15 +1033,14 @@ public class TypeUnifyTask extends RecursiveTask>> { } /* FORK ENDE */ - synchronized (this) { - writeLog("a in " + variance + " "+ a); - writeLog("nextSetasListRest: " + nextSetasListRest.toString()); - } + + writeLog("a in " + variance + " "+ a + "\n" + + "nextSetasListRest: " + nextSetasListRest.toString()); + while (!nextSetasList.isEmpty()) { Set nSaL = nextSetasList.remove(0); - synchronized (this) { //nextSetasList.remove(nSaL); - writeLog("-1 RM" + nSaL.toString()); - } + //nextSetasList.remove(nSaL); + writeLog("-1 RM" + nSaL.toString()); if (!oderConstraint) { /* statistics sameEq wird nicht betrachtet ANGFANG @@ -1076,48 +1071,45 @@ public class TypeUnifyTask extends RecursiveTask>> { //res = unify2(newElemsOrig, newEqOrig, newOderConstraintsOrig, fc, parallel, rekTiefe); /* FORK ANFANG */ - synchronized (this) { - writeLog("wait "+ forkOrig.thNo); + writeLog("wait "+ forkOrig.thNo); + noOfThread--; + res = forkOrig.join(); + synchronized (usedTasks) { + if (this.myIsCancelled()) { + return new HashSet<>(); + } + } + //noOfThread++; + forkOrig.writeLog("final Orig -1"); + forkOrig.closeLogFile(); + //Set> fork_res = forkOrig.join(); + writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); + //noOfThread--; an das Ende von compute verschoben + //add_res.add(fork_res); + /* FORK ENDE */ + + forks.forEach(x -> writeLog("wait: " + x.thNo)); + for(TypeUnify2Task fork : forks) { noOfThread--; - res = forkOrig.join(); + Set> fork_res = fork.join(); synchronized (usedTasks) { if (this.myIsCancelled()) { return new HashSet<>(); } } //noOfThread++; - forkOrig.writeLog("final Orig -1"); - forkOrig.closeLogFile(); - //Set> fork_res = forkOrig.join(); - writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - //add_res.add(fork_res); + writeLog("Join " + new Integer(fork.thNo).toString()); + //noOfThread--; an das Ende von compute verschoben + writeLog("fork_res: " + fork_res.toString()); + writeLog(new Boolean((isUndefinedPairSetSet(fork_res))).toString()); + add_res.add(fork_res); + if (!isUndefinedPairSetSet(fork_res)) { + aParDef.add(fork.getNextSetElement()); + } + fork.writeLog("final -1"); + fork.closeLogFile(); }; - /* FORK ENDE */ - - forks.forEach(x -> writeLog("wait: " + x.thNo)); - for(TypeUnify2Task fork : forks) { - synchronized (this) { - noOfThread--; - Set> fork_res = fork.join(); - synchronized (usedTasks) { - if (this.myIsCancelled()) { - return new HashSet<>(); - } - } - //noOfThread++; - writeLog("Join " + new Integer(fork.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - writeLog("fork_res: " + fork_res.toString()); - writeLog(new Boolean((isUndefinedPairSetSet(fork_res))).toString()); - add_res.add(fork_res); - if (!isUndefinedPairSetSet(fork_res)) { - aParDef.add(fork.getNextSetElement()); - } - fork.writeLog("final -1"); - fork.closeLogFile(); - }; - } + //noOfThread++; } else { if(parallel && (variance == 2) && noOfThread <= MaxNoOfThreads) { @@ -1138,11 +1130,10 @@ public class TypeUnifyTask extends RecursiveTask>> { forkOrig.fork(); } /* FORK ENDE */ - - synchronized (this) { - writeLog("a in " + variance + " "+ a); - writeLog("nextSetasListRest: " + nextSetasListRest.toString()); - } + + writeLog("a in " + variance + " "+ a + "\n" + + "nextSetasListRest: " + nextSetasListRest.toString()); + while (!nextSetasList.isEmpty()) { Set nSaL = nextSetasList.remove(0); //nextSetasList.remove(nSaL); //PL einkommentiert 20-02-03 @@ -1162,41 +1153,39 @@ public class TypeUnifyTask extends RecursiveTask>> { //res = unify2(newElemsOrig, newEqOrig, newOderConstraintsOrig, fc, parallel, rekTiefe); /* FORK ANFANG */ - synchronized (this) { - writeLog("wait "+ forkOrig.thNo); - noOfThread--; - res = forkOrig.join(); + + writeLog("wait "+ forkOrig.thNo); + noOfThread--; + res = forkOrig.join(); + synchronized (usedTasks) { + if (this.myIsCancelled()) { + return new HashSet<>(); + } + } + //noOfThread++; + forkOrig.writeLog("final Orig 2"); + forkOrig.closeLogFile(); + //Set> fork_res = forkOrig.join(); + writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); + //noOfThread--; an das Ende von compute verschoben + //add_res.add(fork_res); //vermutlich falsch + + /* FORK ENDE */ + forks.forEach(x -> writeLog("wait: " + x.thNo)); + for(TypeUnify2Task fork : forks) { + noOfThread--; + Set> fork_res = fork.join(); synchronized (usedTasks) { if (this.myIsCancelled()) { return new HashSet<>(); } } //noOfThread++; - forkOrig.writeLog("final Orig 2"); - forkOrig.closeLogFile(); - //Set> fork_res = forkOrig.join(); - writeLog("JoinOrig " + new Integer(forkOrig.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - //add_res.add(fork_res); //vermutlich falsch - }; - /* FORK ENDE */ - forks.forEach(x -> writeLog("wait: " + x.thNo)); - for(TypeUnify2Task fork : forks) { - synchronized (this) { - noOfThread--; - Set> fork_res = fork.join(); - synchronized (usedTasks) { - if (this.myIsCancelled()) { - return new HashSet<>(); - } - } - //noOfThread++; - writeLog("Join " + new Integer(fork.thNo).toString()); - //noOfThread--; an das Ende von compute verschoben - add_res.add(fork_res); - fork.writeLog("final 2"); - fork.closeLogFile(); - }; + writeLog("Join " + new Integer(fork.thNo).toString()); + //noOfThread--; an das Ende von compute verschoben + add_res.add(fork_res); + fork.writeLog("final 2"); + fork.closeLogFile(); } //noOfThread++; } else {//parallel = false oder MaxNoOfThreads ist erreicht, sequentiell weiterarbeiten @@ -1525,15 +1514,15 @@ public class TypeUnifyTask extends RecursiveTask>> { //NOCH NICHT korrekt PL 2018-10-12 //nextSetasList = nextSetasList.stream().filter(y -> couldBecorrect(reducedUndefResSubstGroundedBasePair, y)) // .collect(Collectors.toCollection(ArrayList::new)); - writeLog("res (undef): " + res.toString()); - writeLog("abhSubst: " + abhSubst.toString()); - writeLog("a2: " + rekTiefe + " " + a.toString()); - writeLog("Durchschnitt: " + durchschnitt.toString()); - writeLog("nextSet: " + nextSet.toString()); - writeLog("nextSetasList: " + nextSetasList.toString()); - writeLog("Number first erased Elements (undef): " + (len - nofstred)); - writeLog("Number second erased Elements (undef): " + (nofstred- nextSetasList.size())); - writeLog("Number erased Elements (undef): " + (len - nextSetasList.size())); + writeLog("res (undef): " + res.toString() + "\n" + + "abhSubst: " + abhSubst.toString() + "\n" + + "a2: " + rekTiefe + " " + a.toString() + "\n" + + "Durchschnitt: " + durchschnitt.toString() + "\n" + + "nextSet: " + nextSet.toString() + "\n" + + "nextSetasList: " + nextSetasList.toString() + "\n" + + "Number first erased Elements (undef): " + (len - nofstred) + "\n" + + "Number second erased Elements (undef): " + (nofstred- nextSetasList.size()) + "\n" + + "Number erased Elements (undef): " + (len - nextSetasList.size())); noAllErasedElements = noAllErasedElements + (len - nextSetasList.size()); writeLog("Number of all erased Elements (undef): " + noAllErasedElements.toString()); noBacktracking++; @@ -1993,10 +1982,10 @@ public class TypeUnifyTask extends RecursiveTask>> { } } - writeLog("eq2s: " + eq2s.toString()); - writeLog("eq2sAsListFst: " + eq2sAsListFst.toString()); - writeLog("eq2sAsListSnd: " + eq2sAsListSnd.toString()); - writeLog("eq2sAsListBack: " + eq2sAsListBack.toString()); + writeLog("eq2s: " + eq2s.toString() + "\n" + + "eq2sAsListFst: " + eq2sAsListFst.toString() + "\n" + + "eq2sAsListSnd: " + eq2sAsListSnd.toString() + "\n" + + "eq2sAsListBack: " + eq2sAsListBack.toString()); eq2sAsList.addAll(eq2sAsListFst); eq2sAsList.addAll(eq2sAsListSnd);