From 6321f1308dee8650e91fc9819b5752f6427b0de7 Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Wed, 15 Jul 2015 11:50:10 +0200 Subject: [PATCH] Nicht mehr im Subst, sondern vorm Subst klonen --- .../dhbwstuttgart/typeinference/unify/Unify.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/de/dhbwstuttgart/typeinference/unify/Unify.java b/src/de/dhbwstuttgart/typeinference/unify/Unify.java index b7f21c23..b7e54a07 100755 --- a/src/de/dhbwstuttgart/typeinference/unify/Unify.java +++ b/src/de/dhbwstuttgart/typeinference/unify/Unify.java @@ -760,6 +760,9 @@ public class Unify int counter = 0; for(Menge vecpair : bigCartProductErg) { + //Klone die Menge vecpair, bevor substituiert wird. Viele Paare sind doppelt referenziert und müssen vor dem Substituieren geklont werden + vecpair = vecpair.stream().map(x -> x.clone()).collect(Menge::new, Menge::add, Menge::addAll); + counter++; if(counter > 1000){ System.out.println(counter + " von "+bigCartProductErg.size()); @@ -2467,18 +2470,6 @@ throws MatchException inferencelog.debug("TV: " + a.getName()); inferencelog.debug("Bedingung: " + bMitVorbedingung); - Cloner cloner = new Cloner(); - cloner.setDumpClonedClasses(true); - - SectionLogger log = Logger.getSectionLogger("Subst-Methode", Section.UNIFY); - Timewatch timer = Timewatch.getTimewatch(); - de.dhbwstuttgart.logger.Timestamp timestamp = timer.start("Unify-Subst"); - P = cloner.deepClone(P); - a = cloner.deepClone(a); - o = cloner.deepClone(o); - long time = timestamp.stop(); - log.debug("Benötigte Zeit für DeepClone: "+time); - // richtiger Typ aus Pair raussuchen Type T = null; if( nTypnrInPair == 1 )