File: barrier.bs

package info (click to toggle)
storm-lang 0.7.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 51,836 kB
  • sloc: ansic: 261,420; cpp: 138,870; sh: 14,877; perl: 9,846; python: 2,525; lisp: 2,504; asm: 860; makefile: 678; pascal: 70; java: 52; xml: 37; awk: 12
file content (29 lines) | stat: -rw-r--r-- 916 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use core:lang;

// TODO: A hash table with weak keys would be better here.
private WeakSet<Function> acquireFns on Compiler;
private WeakSet<Function> releaseFns on Compiler;
private WeakSet<Function> showFns on Compiler;

progvis:program:Barrier fnBarrier(Function f) on Compiler {
	progvis:program:Barrier result = progvis:program:Barrier:none;
	if (acquireFns.has(f))
		result += progvis:program:Barrier:acquire;
	if (releaseFns.has(f))
		result += progvis:program:Barrier:release;
	if (showFns.has(f))
		result += progvis:program:Barrier:showCall;
	result;
}

void registerBarrier(Function fn, progvis:program:Barrier type) on Compiler {
	if (type.has(progvis:program:Barrier:acquire))
		acquireFns.put(fn);
	if (type.has(progvis:program:Barrier:release))
		releaseFns.put(fn);
}

void registerShownBarrier(Function fn, progvis:program:Barrier type) on Compiler {
	registerBarrier(fn, type);
	showFns.put(fn);
}