Changeset 7e4bd9b6 for src


Ignore:
Timestamp:
Jun 14, 2023, 4:43:21 PM (13 months ago)
Author:
caparsons <caparson@…>
Branches:
master
Children:
1e940de0
Parents:
5668740
Message:

updated actor-related passes to fix some bugs

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Concurrency/Actors.cpp

    r5668740 r7e4bd9b6  
    285285            ));
    286286
    287             // Generates: new_req{ &receiver, &msg, fn };
     287            // Generates: new_req{ &receiver, (actor *)&receiver, &msg, (message *)&msg, fn };
    288288            sendBody->push_back( new ExprStmt(
    289289                decl->location,
     
    294294                                                new NameExpr( decl->location, "new_req" ),
    295295                        new AddressExpr( new NameExpr( decl->location, "receiver" ) ),
     296                        new CastExpr( decl->location, new AddressExpr( new NameExpr( decl->location, "receiver" ) ), new PointerType( new StructInstType( *actorDecl ) ), ExplicitCast ),
    296297                        new AddressExpr( new NameExpr( decl->location, "msg" ) ),
     298                        new CastExpr( decl->location, new AddressExpr( new NameExpr( decl->location, "msg" ) ), new PointerType( new StructInstType( *msgDecl ) ), ExplicitCast ),
    297299                        new NameExpr( decl->location, "fn" )
    298300                                        }
  • src/Virtual/VirtualDtor.cpp

    r5668740 r7e4bd9b6  
    146146
    147147            CompoundStmt * dtorBody = mutate( decl->stmts.get() );
    148             // Adds the following to the end of any actor/message dtor:
     148            // Adds the following to the start of any actor/message dtor:
    149149            //  __CFA_dtor_shutdown( this );
    150             dtorBody->push_front( new ExprStmt(
    151                 decl->location,
    152                                 new UntypedExpr (
    153                     decl->location,
    154                                         new NameExpr( decl->location, "__CFA_dtor_shutdown" ),
    155                                         {
    156                         new NameExpr( decl->location, decl->params.at(0)->name )
    157                                         }
    158                                 )
    159                         ));
     150            dtorBody->push_front(
     151                new IfStmt( decl->location,
     152                    new UntypedExpr (
     153                        decl->location,
     154                        new NameExpr( decl->location, "__CFA_dtor_shutdown" ),
     155                        {
     156                            new NameExpr( decl->location, decl->params.at(0)->name )
     157                        }
     158                    ),
     159                    new ReturnStmt( decl->location, nullptr )
     160                )
     161            );
    160162            return;
    161163        }
Note: See TracChangeset for help on using the changeset viewer.