Using a node bucket wasn't a good idea.
authorSebastian Buchwald <Sebastian.Buchwald@kit.edu>
Thu, 12 Aug 2010 20:31:54 +0000 (20:31 +0000)
committerSebastian Buchwald <Sebastian.Buchwald@kit.edu>
Thu, 12 Aug 2010 20:31:54 +0000 (20:31 +0000)
[r27926]

heuristical_co.c
optimal.c
optimal.h

index 3e8ed96..f65db2c 100644 (file)
@@ -85,7 +85,8 @@ static void apply_RN_co(pbqp *pbqp)
 
        assert(pbqp);
 
-       node = node_bucket_pop(&rn_bucket);
+       node        = merged_node;
+       merged_node = NULL;
        assert(node);
 
        if (node_is_reduced(node))
@@ -152,7 +153,7 @@ static void apply_heuristic_reductions_co(pbqp *pbqp, plist_t *rpeo)
                        #if KAPS_TIMING
                                ir_timer_stop(t_r2);
                        #endif
-               } else if (node_bucket_get_length(rn_bucket) > 0) {
+               } else if (merged_node != NULL) {
                        #if KAPS_TIMING
                                ir_timer_start(t_rn);
                        #endif
index 98c87ed..0768356 100644 (file)
--- a/optimal.c
+++ b/optimal.c
 
 pbqp_edge **edge_bucket;
 pbqp_edge **rm_bucket;
-pbqp_node **rn_bucket;
 pbqp_node **node_buckets[4];
 pbqp_node **reduced_bucket = NULL;
-static int         buckets_filled = 0;
+pbqp_node  *merged_node = NULL;
+static int  buckets_filled = 0;
 
 static void insert_into_edge_bucket(pbqp_edge *edge)
 {
@@ -80,7 +80,6 @@ static void init_buckets(void)
        edge_bucket_init(&edge_bucket);
        edge_bucket_init(&rm_bucket);
        node_bucket_init(&reduced_bucket);
-       node_bucket_init(&rn_bucket);
 
        for (i = 0; i < 4; ++i) {
                node_bucket_init(&node_buckets[i]);
@@ -98,7 +97,6 @@ void free_buckets(void)
        edge_bucket_free(&edge_bucket);
        edge_bucket_free(&rm_bucket);
        node_bucket_free(&reduced_bucket);
-       node_bucket_free(&rn_bucket);
 
        buckets_filled = 0;
 }
@@ -426,9 +424,6 @@ static void merge_source_into_target(pbqp *pbqp, pbqp_edge *edge)
                insert_into_rm_bucket(new_edge);
        }
 
-       /* Reduce the remaining source node via RI. */
-       apply_RI(pbqp);
-
 #if KAPS_STATISTIC
        pbqp->num_r1--;
 #endif
@@ -588,9 +583,6 @@ static void merge_target_into_source(pbqp *pbqp, pbqp_edge *edge)
                insert_into_rm_bucket(new_edge);
        }
 
-       /* Reduce the remaining source node via RI. */
-       apply_RI(pbqp);
-
 #if KAPS_STATISTIC
        pbqp->num_r1--;
 #endif
@@ -629,7 +621,7 @@ void apply_RM(pbqp *pbqp, pbqp_node *node)
                        merge_source_into_target(pbqp, edge);
        }
 
-       node_bucket_insert(&rn_bucket, node);
+       merged_node = node;
 }
 
 void reorder_node(pbqp_node *node)
index 2432f83..7f001d3 100644 (file)
--- a/optimal.h
+++ b/optimal.h
@@ -32,7 +32,7 @@
 extern pbqp_edge **edge_bucket;
 extern pbqp_node **node_buckets[4];
 extern pbqp_node **reduced_bucket;
-extern pbqp_node **rn_bucket;
+extern pbqp_node  *merged_node;
 
 void apply_edge(pbqp *pbqp);