projects
/
satune.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b6548cb
)
bug fix
author
bdemsky
<bdemsky@uci.edu>
Fri, 17 Aug 2018 22:49:03 +0000
(15:49 -0700)
committer
bdemsky
<bdemsky@uci.edu>
Fri, 17 Aug 2018 22:49:03 +0000
(15:49 -0700)
src/ASTAnalyses/Encoding/encodinggraph.cc
patch
|
blob
|
history
diff --git
a/src/ASTAnalyses/Encoding/encodinggraph.cc
b/src/ASTAnalyses/Encoding/encodinggraph.cc
index ebb8a96a5009dc28fc78ca386d21aaf4ea18b3ef..45ae01a469669a551383c059e0a0fdb670bbd321 100644
(file)
--- a/
src/ASTAnalyses/Encoding/encodinggraph.cc
+++ b/
src/ASTAnalyses/Encoding/encodinggraph.cc
@@
-77,10
+77,11
@@
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);
+ DEBUG("graphMap.get(subgraph=%p, n=%p)\n", subgraph, n);
if (subgraph == NULL) {
if (subgraph == NULL) {
- continue;
- }
+ encoding->encodingArrayInitialization();
+ continue;
+ }
uint encodingSize = subgraph->getEncodingMaxVal(n) + 1;
uint paddedSize = encoding->getSizeEncodingArray(encodingSize);
encoding->allocInUseArrayElement(paddedSize);
uint encodingSize = subgraph->getEncodingMaxVal(n) + 1;
uint paddedSize = encoding->getSizeEncodingArray(encodingSize);
encoding->allocInUseArrayElement(paddedSize);
@@
-131,9
+132,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);
+ 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);
+ 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)
@@
-142,7
+143,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);
+ DEBUG("graphMap.put(first=%p, graph1=%p)\n", first, graph1);
graphMap.put(first, graph1);
graph1->addNode(first);
}
graphMap.put(first, graph1);
graph1->addNode(first);
}
@@
-158,17
+159,17
@@
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);
+ 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);
+ DEBUG("Deleting graph2 =%p \n", graph2);
delete graph2;
} else {
ASSERT(graph1 != NULL && graph2 == NULL);
graph1->addNode(second);
delete graph2;
} else {
ASSERT(graph1 != NULL && graph2 == NULL);
graph1->addNode(second);
-
DEBUG("graphMap.put(first=%p, graph1=%p)\n", first, graph1);
+ DEBUG("graphMap.put(first=%p, graph1=%p)\n", first, graph1);
graphMap.put(second, graph1);
}
}
graphMap.put(second, graph1);
}
}
@@
-282,6
+283,11
@@
void EncodingGraph::decideEdges() {
(newSize - rightSize) * right->elements.getSize();
} else {
//Neither are null
(newSize - rightSize) * right->elements.getSize();
} else {
//Neither are null
+
+ //Are we already merged?
+ if (leftGraph == rightGraph)
+ continue;
+
leftSize = convertSize(leftGraph->encodingSize);
rightSize = convertSize(rightGraph->encodingSize);
newSize = convertSize(leftGraph->estimateNewSize(rightGraph));
leftSize = convertSize(leftGraph->encodingSize);
rightSize = convertSize(rightGraph->encodingSize);
newSize = convertSize(leftGraph->estimateNewSize(rightGraph));