Ignore:
Timestamp:
Sep 21, 2023, 10:15:58 PM (2 years ago)
Author:
JiadaL <j82liang@…>
Branches:
master, stuck-waitfor-destruct
Children:
62c6cfa
Parents:
c1e66d9 (diff), 5a1ae14 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/concurrency/actors/types.cfa

    rc1e66d9 rdeda7e6  
    99
    1010struct derived_actor {
    11     inline actor;
    12     int counter;
     11        inline actor;
     12        int counter;
    1313};
    1414static inline void ?{}( derived_actor & this ) { ((actor &)this){}; this.counter = 0; }
    1515
    1616struct d_msg {
    17     inline message;
    18     int num;
     17        inline message;
     18        int num;
    1919};
    2020
    2121// this isn't a valid receive routine since int is not a message type
    2222allocation receive( derived_actor & receiver, int i ) with( receiver ) {
    23     mutex(sout) sout | i;
    24     counter++;
    25     if ( counter == 2 ) return Finished;
    26     return Nodelete;
     23        mutex(sout) sout | i;
     24        counter++;
     25        if ( counter == 2 ) return Finished;
     26        return Nodelete;
    2727}
    2828
    2929allocation receive( derived_actor & receiver, d_msg & msg ) {
    30     return receive( receiver, msg.num );
     30        return receive( receiver, msg.num );
    3131}
    3232
    3333struct derived_actor2 {
    34     struct nested { int i; }; // testing nested before inline
    35     inline actor;
     34        struct nested { int i; }; // testing nested before inline
     35        inline actor;
    3636};
    3737
    3838allocation receive( derived_actor2 & receiver, d_msg & msg ) {
    39     mutex(sout) sout | msg.num;
    40     return Finished;
     39        mutex(sout) sout | msg.num;
     40        return Finished;
    4141}
    4242
     
    4444struct derived_actor4 { inline derived_actor3; };
    4545struct d_msg2 {
    46     inline message;
    47     int num;
     46        inline message;
     47        int num;
    4848};
    4949
    5050allocation receive( derived_actor3 & receiver, d_msg & msg ) {
    51     mutex(sout) sout | msg.num;
    52     if ( msg.num == -1 ) return Nodelete;
    53     return Finished;
     51        mutex(sout) sout | msg.num;
     52        if ( msg.num == -1 ) return Nodelete;
     53        return Finished;
    5454}
    5555
    5656allocation receive( derived_actor3 & receiver, d_msg2 & msg ) {
    57     mutex(sout) sout | msg.num;
    58     return Finished;
     57        mutex(sout) sout | msg.num;
     58        return Finished;
    5959}
    6060
     
    6262
    6363int main( int argc, char * argv[] ) {
    64     printf("start\n");
     64        sout | "start";
    6565
    66     processor p[Processors - 1];
     66        processor p[Processors - 1];
    6767
    68     printf("basic test\n");
    69     start_actor_system( Processors ); // test passing number of processors
    70     derived_actor a;
    71     d_msg b, c;
    72     b.num = 1;
    73     c.num = 2;
    74     a | b | c;
    75     stop_actor_system();
     68        sout | "basic test";
     69        start_actor_system( Processors ); // test passing number of processors
     70        derived_actor a;
     71        d_msg b, c;
     72        b.num = 1;
     73        c.num = 2;
     74        a | b | c;
     75        stop_actor_system();
    7676
    77     printf("same message and different actors test\n");
    78     start_actor_system(); // let system detect # of processors
    79     derived_actor2 d_ac2_0, d_ac2_1;
    80     d_msg d_ac2_msg;
    81     d_ac2_msg.num = 3;
    82     d_ac2_0 | d_ac2_msg;
    83     d_ac2_1 | d_ac2_msg;
    84     stop_actor_system();
     77        sout | "same message and different actors test";
     78        start_actor_system(); // let system detect # of processors
     79        derived_actor2 d_ac2_0, d_ac2_1;
     80        d_msg d_ac2_msg;
     81        d_ac2_msg.num = 3;
     82        d_ac2_0 | d_ac2_msg;
     83        d_ac2_1 | d_ac2_msg;
     84        stop_actor_system();
    8585
    86    
    87     {
    88         printf("same message and different actor types test\n");
    89         executor e{ 0, Processors, Processors == 1 ? 1 : Processors * 4, false };
    90         start_actor_system( e ); // pass an explicit executor
    91         derived_actor2 d_ac2_2;
    92         derived_actor3 d_ac3_0;
    93         d_msg d_ac23_msg;
    94         d_ac23_msg.num = 4;
    95         d_ac3_0 | d_ac23_msg;
    96         d_ac2_2 | d_ac23_msg;
    97         stop_actor_system();
    98     } // RAII to clean up executor
     86       
     87        {
     88                sout | "same message and different actor types test";
     89                executor e{ 0, Processors, Processors == 1 ? 1 : Processors * 4, false };
     90                start_actor_system( e ); // pass an explicit executor
     91                derived_actor2 d_ac2_2;
     92                derived_actor3 d_ac3_0;
     93                d_msg d_ac23_msg;
     94                d_ac23_msg.num = 4;
     95                d_ac3_0 | d_ac23_msg;
     96                d_ac2_2 | d_ac23_msg;
     97                stop_actor_system();
     98        } // RAII to clean up executor
    9999
    100     {
    101         printf("different message types, one actor test\n");
    102         executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
    103         start_actor_system( Processors );
    104         derived_actor3 a3;
    105         d_msg b1;
    106         d_msg2 c2;
    107         b1.num = -1;
    108         c2.num = 5;
    109         a3 | b1 | c2;
    110         stop_actor_system();
    111     } // RAII to clean up executor
     100        {
     101                sout | "different message types, one actor test";
     102                executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
     103                start_actor_system( Processors );
     104                derived_actor3 a3;
     105                d_msg b1;
     106                d_msg2 c2;
     107                b1.num = -1;
     108                c2.num = 5;
     109                a3 | b1 | c2;
     110                stop_actor_system();
     111        } // RAII to clean up executor
    112112
    113     {
    114         printf("nested inheritance actor test\n");
    115         executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
    116         start_actor_system( Processors );
    117         derived_actor4 a4;
    118         d_msg b1;
    119         d_msg2 c2;
    120         b1.num = -1;
    121         c2.num = 5;
    122         a4 | b1 | c2;
    123         stop_actor_system();
    124     } // RAII to clean up executor
     113        {
     114                sout | "nested inheritance actor test";
     115                executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
     116                start_actor_system( Processors );
     117                derived_actor4 a4;
     118                d_msg b1;
     119                d_msg2 c2;
     120                b1.num = -1;
     121                c2.num = 5;
     122                a4 | b1 | c2;
     123                stop_actor_system();
     124        } // RAII to clean up executor
    125125
    126     printf("end\n");
    127     return 0;
     126        sout | "end";
    128127}
Note: See TracChangeset for help on using the changeset viewer.