Fixing memory buggit status
authorHamed Gorjiara <hgorjiar@uci.edu>
Wed, 25 Apr 2018 04:54:39 +0000 (21:54 -0700)
committerHamed Gorjiara <hgorjiar@uci.edu>
Wed, 25 Apr 2018 04:54:39 +0000 (21:54 -0700)
src/ASTAnalyses/Encoding/encodinggraph.cc
src/Benchmarks/sudoku-csolver

index 5c758c3e0ad3eb63dcdd920435953ecc476291d2..ce695e25560553ffc03156bc5eea48c5ec041877 100644 (file)
@@ -77,6 +77,7 @@ void EncodingGraph::encode() {
                                        encoding->encodingArrayInitialization();
                                } else if (encodetype == BINARYINDEX) {
                                        EncodingSubGraph *subgraph = graphMap.get(n);
                                        encoding->encodingArrayInitialization();
                                } else if (encodetype == BINARYINDEX) {
                                        EncodingSubGraph *subgraph = graphMap.get(n);
+                                        DEBUG("graphMap.get(subgraph=%p, n=%p)\n", subgraph, n);
                                        if (subgraph == NULL)
                                                continue;
                                        uint encodingSize = subgraph->getEncodingMaxVal(n) + 1;
                                        if (subgraph == NULL)
                                                continue;
                                        uint encodingSize = subgraph->getEncodingMaxVal(n) + 1;
@@ -129,7 +130,9 @@ void EncodingGraph::encodeParent(Element *e) {
 
 void EncodingGraph::mergeNodes(EncodingNode *first, EncodingNode *second) {
        EncodingSubGraph *graph1 = graphMap.get(first);
 
 void EncodingGraph::mergeNodes(EncodingNode *first, EncodingNode *second) {
        EncodingSubGraph *graph1 = graphMap.get(first);
+        DEBUG("graphMap.get(first=%p, graph1=%p)\n", first, graph1);
        EncodingSubGraph *graph2 = graphMap.get(second);
        EncodingSubGraph *graph2 = graphMap.get(second);
+        DEBUG("graphMap.get(second=%p, graph2=%p)\n", second, graph2);
        if (graph1 == NULL)
                first->setEncoding(BINARYINDEX);
        if (graph2 == NULL)
        if (graph1 == NULL)
                first->setEncoding(BINARYINDEX);
        if (graph2 == NULL)
@@ -138,6 +141,7 @@ void EncodingGraph::mergeNodes(EncodingNode *first, EncodingNode *second) {
        if (graph1 == NULL && graph2 == NULL) {
                graph1 = new EncodingSubGraph();
                subgraphs.add(graph1);
        if (graph1 == NULL && graph2 == NULL) {
                graph1 = new EncodingSubGraph();
                subgraphs.add(graph1);
+                DEBUG("graphMap.put(first=%p, graph1=%p)\n", first, graph1);
                graphMap.put(first, graph1);
                graph1->addNode(first);
        }
                graphMap.put(first, graph1);
                graph1->addNode(first);
        }
@@ -153,15 +157,18 @@ void EncodingGraph::mergeNodes(EncodingNode *first, EncodingNode *second) {
                while (nodeit->hasNext()) {
                        EncodingNode *node = nodeit->next();
                        graph1->addNode(node);
                while (nodeit->hasNext()) {
                        EncodingNode *node = nodeit->next();
                        graph1->addNode(node);
+                        DEBUG("graphMap.put(node=%p, graph1=%p)\n", node, graph1);
                        graphMap.put(node, graph1);
                }
                subgraphs.remove(graph2);
                delete nodeit;
                        graphMap.put(node, graph1);
                }
                subgraphs.remove(graph2);
                delete nodeit;
+                DEBUG("Deleting graph2 =%p \n", graph2);
                delete graph2;
        } else {
                ASSERT(graph1 != NULL && graph2 == NULL);
                delete graph2;
        } else {
                ASSERT(graph1 != NULL && graph2 == NULL);
-               graph1->addNode(second);
-               graphMap.put(second, graph1);
+               graph1->addNode(first);
+                DEBUG("graphMap.put(first=%p, graph1=%p)\n", first, graph1);
+               graphMap.put(first, graph1);
        }
 }
 
        }
 }
 
@@ -246,7 +253,9 @@ void EncodingGraph::decideEdges() {
                        return;
 
                EncodingSubGraph *leftGraph = graphMap.get(left);
                        return;
 
                EncodingSubGraph *leftGraph = graphMap.get(left);
+                DEBUG("graphMap.get(left=%p, leftgraph=%p)\n", left, leftGraph);
                EncodingSubGraph *rightGraph = graphMap.get(right);
                EncodingSubGraph *rightGraph = graphMap.get(right);
+                DEBUG("graphMap.get(right=%p, rightgraph=%p)\n", right, rightGraph);
                if (leftGraph == NULL && rightGraph != NULL) {
                        EncodingNode *tmp = left; left = right; right = tmp;
                        EncodingSubGraph *tmpsg = leftGraph; leftGraph = rightGraph; rightGraph = tmpsg;
                if (leftGraph == NULL && rightGraph != NULL) {
                        EncodingNode *tmp = left; left = right; right = tmp;
                        EncodingSubGraph *tmpsg = leftGraph; leftGraph = rightGraph; rightGraph = tmpsg;
@@ -281,7 +290,7 @@ void EncodingGraph::decideEdges() {
                                                                        (newSize - rightSize) * rightGraph->numElements;
                }
                double conversionfactor = 0.5;
                                                                        (newSize - rightSize) * rightGraph->numElements;
                }
                double conversionfactor = 0.5;
-               if ((totalCost * conversionfactor) < eeValue) {
+               if (leftGraph != rightGraph && (totalCost * conversionfactor) < eeValue) {
                        //add the edge
                        mergeNodes(left, right);
                }
                        //add the edge
                        mergeNodes(left, right);
                }
index 4a22c3f08f52ac957792d389d0518455aab3e9a1..58323cd211ec80655e816fee228b1c9d975880cd 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 4a22c3f08f52ac957792d389d0518455aab3e9a1
+Subproject commit 58323cd211ec80655e816fee228b1c9d975880cd