Skip to content

Commit 5c8b300

Browse files
committed
MOre fixes.
1 parent f607831 commit 5c8b300

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

cfpq_add_context/gen_automata.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ def generate (number_of_contexts):
1111
nvertices = number_of_contexts * 2 + number_of_contexts * number_of_contexts * 4 + 1
1212
final = nvertices
1313
first_level = [i for i in range(1, number_of_contexts * 2 + 1)]
14+
#print("First level: ", first_level)
1415
second_level = [i for i in range(number_of_contexts * 2 + 1, nvertices)]
1516
def mk_open_context(i):
16-
i = i - 1
1717
if (i // number_of_contexts == 0):
1818
return mk_open_context_from_pass(i % number_of_contexts)
1919
else:
@@ -28,13 +28,13 @@ def mk_close_context(i):
2828
[
2929
edg
3030
for on_first_level in first_level
31-
for edg in ((start, on_first_level, mk_open_context(on_first_level)),(on_first_level, start, mk_close_context(on_first_level)))
31+
for edg in ((start, on_first_level, mk_open_context(on_first_level - 1)),(on_first_level, start, mk_close_context(on_first_level - 1)))
3232
] +
3333
[
3434
edg
3535
for on_first_level in first_level
3636
for on_second_level in range(on_first_level * (number_of_contexts * 2) + 1, on_first_level * number_of_contexts * 2 + number_of_contexts * 2 + 1)
37-
for edg in ((on_first_level, on_second_level, mk_open_context(1 + on_second_level % (number_of_contexts * 2))),(on_second_level, on_first_level, mk_close_context(1 + on_second_level % (number_of_contexts * 2))))
37+
for edg in ((on_first_level, on_second_level, mk_open_context(on_second_level % (number_of_contexts * 2))),(on_second_level, on_first_level, mk_close_context(on_second_level % (number_of_contexts * 2))))
3838
] +
3939
[(i,i,SIGMA_WITHOUT_CONTEXTS) for i in first_level + second_level] +
4040
[(i,final,ALL_OPEN_CONTEXTS) for i in second_level]

cfpq_add_context/intersection.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,16 @@ def intersection (graph, automata) :
6565

6666

6767
#print_matrix_to_dot(intersection, "kron.dot")
68+
69+
entrypoints = Vector(bool,graph.nrows, name="entrypoints")
70+
entrypoints << graph.select(graphblas.select.select_not_reversed).reduce_columnwise(graphblas.monoid.lor)
71+
entrypoints = set(range(0,graph.nrows)).difference(entrypoints.to_coo(values=False)[0])
72+
73+
print("entypoints:", entrypoints)
74+
75+
#sources = [i * automata.nrows for i in range(0,graph.nrows)]
76+
sources = [i * automata.nrows for i in entrypoints]
6877

69-
sources = [i * automata.nrows for i in range(0,graph.nrows)]
7078

7179
reachable_vertices_mask = bfs(intersection, sources).diag(name="reachable_vertices_mask")
7280

cfpq_add_context/labels.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ def select_store_op(x,i,j,k):
8181
def select_store_r_op(x,i,j,k):
8282
return x & SIGMA_WITHOUT_CONTEXTS >= OFFSET and ((x & SIGMA_WITHOUT_CONTEXTS) - OFFSET) % 4 == 3
8383

84+
def select_not_reversed_op(x,i,j,k):
85+
return ( (x & SIGMA_WITHOUT_CONTEXTS == ALLOC) or
86+
(x & SIGMA_WITHOUT_CONTEXTS == ASSIGN or (x & ALL_OPEN_CONTEXTS > 0 and ((x & ALL_OPEN_CONTEXTS) >> 43) % 2 == 1) or (x & ALL_CLOSE_CONTEXTS > 0 and ((x & ALL_CLOSE_CONTEXTS) >> 22) % 2 == 1)) or
87+
(x & SIGMA_WITHOUT_CONTEXTS >= OFFSET and ((x & SIGMA_WITHOUT_CONTEXTS) - OFFSET) % 4 == 0) or
88+
(x & SIGMA_WITHOUT_CONTEXTS >= OFFSET and ((x & SIGMA_WITHOUT_CONTEXTS) - OFFSET) % 4 == 2)
89+
)
90+
91+
8492
SelectOp.register_new("select_alloc", select_alloc_op)
8593
SelectOp.register_new("select_alloc_r", select_alloc_r_op)
8694
SelectOp.register_new("select_assign", select_assign_op)
@@ -89,6 +97,7 @@ def select_store_r_op(x,i,j,k):
8997
SelectOp.register_new("select_store", select_store_op)
9098
SelectOp.register_new("select_load_r", select_load_r_op)
9199
SelectOp.register_new("select_store_r", select_store_r_op)
100+
SelectOp.register_new("select_not_reversed", select_not_reversed_op)
92101

93102
def decode_load_op(x):
94103
return ((x & SIGMA_WITHOUT_CONTEXTS) - OFFSET) // 4

cfpq_add_context/load_graph.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def get_edge_lbl(data_arr):
4141

4242
number_of_contexts = max(number_of_contexts, _context)
4343
return res
44-
else:
44+
elif "close" in data_arr[2]:
4545
if "_r_" in data_arr[2]:
4646
_context = int(data_arr[2].split('_')[2])
4747
res = labels.mk_close_context_from_pass_r(_context)
@@ -51,6 +51,7 @@ def get_edge_lbl(data_arr):
5151

5252
number_of_contexts = max(number_of_contexts, _context)
5353
return res
54+
else: print("ERROR:", data_arr[2])
5455

5556
def handle_line(line):
5657
nonlocal nvertices

0 commit comments

Comments
 (0)