2 public class Parameter {
8 public Parameter() { a = 0; b = 0; f = null; g = null; }
10 public void bar() { foo(); }
11 public void foo() { bar(); }
14 public class Penguin {
17 public Penguin() { x = 0; y = 0; }
19 public void bar() { x = 1; }
35 public void doTheBaw( Voo v ) { v = new Voo(); }
44 public void ruinSomeFoos( Foo a, Foo b ) {
49 // this empty task should still create a non-empty
50 // ownership graph showing parameter allocation
51 // look for the parameter s as a label referencing
52 // a heap region that is multi-object, flagged, not summary
53 task Startup( StartupObject s{ initialstate } ) {
59 c.ruinSomeFoos( a, b );
61 taskexit( s{ !initialstate } );
64 // this task allocates a new object, so there should
65 // be a heap region for the parameter, and several
66 // heap regions for the allocation site, but the label
67 // merely points to the newest region
69 task NewObject( Voo v{ f } ) {
78 task Branch( Voo v{ f } ) {
93 task NewInLoop( Voo v{ f } ) {
96 for( int i = 0; i < 10; ++i ) {