File: CustomVSATest.java

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (46 lines) | stat: -rw-r--r-- 1,249 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

public class CustomVSATest {

  public Object never_read;

  public static Object cause;
  public static Object effect;
  public static Object first_effect_read;
  public static Object second_effect_read;
  public static Object maybe_unknown_read;

  public static void test() {

    Object weak_local = new Object();
    // Under standard VSA the following should be a strong write;
    // with our test custom VSA it will be weak.
    weak_local = new Object();

    // Normally this would set the value of `ignored`, but our custom
    // VSA discards the instruction completely:
    Object ignored = new Object();

    // Similarly this write should have no effect:
    Object no_write = new Object();

    CustomVSATest vsa = new CustomVSATest();
    vsa.never_read = new Object();

    // Again this should be disregarded:
    Object read = vsa.never_read;

    // This should acquire a "*" unknown-object, even though
    // it is obvious what it points to:
    Object maybe_unknown = new Object();
    maybe_unknown_read=maybe_unknown;

    effect = new Object();
    first_effect_read = effect;

    // Under our custom VSA, this write should cause effect to become null:
    cause = new Object();
    second_effect_read = effect;

  }

}