Changes in / [4b4f95f:433905a]


Ignore:
Files:
2 added
10 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • benchmark/Cargo.toml.in

    r4b4f95f r433905a  
    44authors = ["Cforall"]
    55edition = "2018"
    6 
    7 [[bin]]
    8 name = "rdq-churn-tokio"
    9 path = "@abs_srcdir@/readyQ/churn.rs"
    106
    117[[bin]]
  • benchmark/Makefile.am

    r4b4f95f r433905a  
    614614RDQBENCHES = \
    615615        rdq-churn-cfa \
    616         rdq-churn-tokio \
    617         rdq-churn-go \
    618         rdq-churn-fibre \
    619616        rdq-cycle-cfa \
    620617        rdq-cycle-tokio \
  • benchmark/readyQ/churn.cfa

    r4b4f95f r433905a  
    11#include "rq_bench.hfa"
    22
    3 #include <locks.hfa>
    4 
    53unsigned spot_cnt = 2;
    6 semaphore * spots;
     4bench_sem * volatile * spots;
    75
    86thread BThrd {
    97        unsigned long long count;
    108        unsigned long long blocks;
    11         bool skip;
     9        bench_sem sem;
    1210};
    1311
     
    1614        this.count  = 0;
    1715        this.blocks = 0;
    18         this.skip = false;
    1916}
    2017
     
    2219
    2320void main( BThrd & this ) with( this ) {
    24         park();
     21        wait( sem );
    2522        for() {
    26                 uint32_t r = prng(this);
    27                 semaphore & sem = spots[r % spot_cnt];
    28                 if(!skip) V( sem );
    29                 blocks += P( sem );
    30                 skip = false;
    31 
     23                uint32_t r = prng();
     24                bench_sem * next = __atomic_exchange_n(&spots[r % spot_cnt], &sem, __ATOMIC_SEQ_CST);
     25                if(next) post( *next );
     26                blocks += wait( sem );
    3227                count ++;
    3328                if( clock_mode && stop) break;
     
    5449                        spots = aalloc(spot_cnt);
    5550                        for(i; spot_cnt) {
    56                                 (spots[i]){ 0 };
     51                                spots[i] = 0p;
    5752                        }
    5853
     
    6055                        BThrd * threads[nthreads];
    6156                        for(i; nthreads ) {
    62                                 BThrd & t = *(threads[i] = malloc());
    63                                 (t){};
    64                                 t.skip = i < spot_cnt;
     57                                threads[i] = malloc();
     58                                (*threads[i]){};
    6559                        }
    6660                        printf("Starting\n");
     
    7064
    7165                        for(i; nthreads) {
    72                                 unpark( *threads[i] );
     66                                post( threads[i]->sem );
    7367                        }
    7468                        wait(start, is_tty);
     
    7872                        printf("\nDone\n");
    7973
    80                         for(i; spot_cnt) {
    81                                 for(10000) V( spots[i] );
    82                         }
    83 
    8474                        for(i; nthreads) {
     75                                post( threads[i]->sem );
    8576                                BThrd & thrd = join( *threads[i] );
    8677                                global_counter += thrd.count;
  • src/AST/Convert.cpp

    r4b4f95f r433905a  
    27292729                        ty->forall.emplace_back(new ast::TypeInstType(param));
    27302730                        for (auto asst : param->assertions) {
    2731                                 ty->assertions.emplace_back(
    2732                                         new ast::VariableExpr(param->location, asst));
     2731                                ty->assertions.emplace_back(new ast::VariableExpr({}, asst));
    27332732                        }
    27342733                }
  • src/Common/utility.h

    r4b4f95f r433905a  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Mon Apr 25 14:26:00 2022
    13 // Update Count     : 51
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Feb 11 13:00:36 2020
     13// Update Count     : 50
    1414//
    1515
     
    230230}
    231231
    232 template<typename Container, typename Pred>
    233 void erase_if( Container & cont, Pred && pred ) {
    234         auto keep_end = std::remove_if( cont.begin(), cont.end(), pred );
    235         cont.erase( keep_end, cont.end() );
    236 }
    237 
    238232template< typename... Args >
    239233auto zip(Args&&... args) -> decltype(zipWith(std::forward<Args>(args)..., std::make_pair)) {
  • src/SymTab/Validate.cc

    r4b4f95f r433905a  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Apr 29  9:45:00 2022
    13 // Update Count     : 365
     12// Last Modified On : Fri Nov 12 11:00:00 2021
     13// Update Count     : 364
    1414//
    1515
     
    143143        struct LinkReferenceToTypes_old final : public WithIndexer, public WithGuards, public WithVisitorRef<LinkReferenceToTypes_old>, public WithShortCircuiting {
    144144                LinkReferenceToTypes_old( const Indexer * indexer );
    145 
    146145                void postvisit( TypeInstType * typeInst );
    147146
     
    371370        }
    372371
    373         void linkReferenceToTypes( std::list< Declaration * > & translationUnit ) {
     372        void validate_B( std::list< Declaration * > & translationUnit ) {
    374373                PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );
    375                 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions
    376         }
    377 
    378         void validate_B( std::list< Declaration * > & translationUnit ) {
    379374                PassVisitor<FixQualifiedTypes> fixQual;
    380375                {
    381376                        Stats::Heap::newPass("validate-B");
    382377                        Stats::Time::BlockGuard guard("validate-B");
    383                         //linkReferenceToTypes( translationUnit );
     378                        acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions
    384379                        mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes_old, because aggregate members are accessed
    385380                        HoistStruct::hoistStruct( translationUnit );
  • src/SymTab/Validate.h

    r4b4f95f r433905a  
    4242        void validate_E( std::list< Declaration * > &translationUnit );
    4343        void validate_F( std::list< Declaration * > &translationUnit );
    44         void linkReferenceToTypes( std::list< Declaration * > &translationUnit );
    4544
    4645        const ast::Type * validateType(
  • src/Validate/ForallPointerDecay.cpp

    r4b4f95f r433905a  
    1010// Created On       : Tue Dec  7 16:15:00 2021
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Sat Apr 23 13:10:00 2022
    13 // Update Count     : 1
     12// Last Modified On : Fri Feb 11 10:59:00 2022
     13// Update Count     : 0
    1414//
    1515
     
    237237}
    238238
    239 std::vector<ast::ptr<ast::DeclWithType>> expandAssertions(
    240                 std::vector<ast::ptr<ast::DeclWithType>> const & old ) {
    241         return TraitExpander::expandAssertions( old );
    242 }
    243 
    244239} // namespace Validate
    245240
  • src/Validate/ForallPointerDecay.hpp

    r4b4f95f r433905a  
    1010// Created On       : Tue Dec  7 16:15:00 2021
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Sat Apr 23 13:13:00 2022
    13 // Update Count     : 1
     12// Last Modified On : Tue Dec  8 11:50:00 2021
     13// Update Count     : 0
    1414//
    1515
    1616#pragma once
    1717
    18 #include <vector>
    19 #include "AST/Node.hpp"
    20 
    2118namespace ast {
    22         class DeclWithType;
    2319        class TranslationUnit;
    2420}
     
    3127void decayForallPointers( ast::TranslationUnit & transUnit );
    3228
    33 /// Expand all traits in an assertion list.
    34 std::vector<ast::ptr<ast::DeclWithType>> expandAssertions(
    35         std::vector<ast::ptr<ast::DeclWithType>> const & );
    36 
    3729}
    3830
  • src/Validate/GenericParameter.cpp

    r4b4f95f r433905a  
    1010// Created On       : Fri Mar 21 10:02:00 2022
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Apr 22 16:43:00 2022
    13 // Update Count     : 1
     12// Last Modified On : Wed Apr 13 10:09:00 2022
     13// Update Count     : 0
    1414//
    1515
     
    2222#include "AST/TranslationUnit.hpp"
    2323#include "AST/Type.hpp"
    24 #include "Validate/NoIdSymbolTable.hpp"
    2524
    2625namespace Validate {
     
    139138// --------------------------------------------------------------------------
    140139
    141 struct TranslateDimensionCore :
    142                 public WithNoIdSymbolTable, public ast::WithGuards {
     140// A SymbolTable that only has the operations used in the Translate Dimension
     141// pass. More importantly, it doesn't have some methods that should no be
     142// called by the Pass template (lookupId and addId).
     143class NoIdSymbolTable {
     144        ast::SymbolTable base;
     145public:
     146#       define FORWARD_X( func, types_and_names, just_names ) \
     147        inline auto func types_and_names -> decltype( base.func just_names ) { \
     148                return base.func just_names ; \
     149        }
     150#       define FORWARD_0( func )         FORWARD_X( func, (),             () )
     151#       define FORWARD_1( func, type )   FORWARD_X( func, (type arg),     (arg) )
     152#       define FORWARD_2( func, t0, t1 ) FORWARD_X( func, (t0 a0, t1 a1), (a0, a1) )
     153
     154        FORWARD_0( enterScope )
     155        FORWARD_0( leaveScope )
     156        FORWARD_1( lookupType, const std::string &        )
     157        FORWARD_1( addType   , const ast::NamedTypeDecl * )
     158        FORWARD_1( addStruct , const ast::StructDecl *    )
     159        FORWARD_1( addEnum   , const ast::EnumDecl *      )
     160        FORWARD_1( addUnion  , const ast::UnionDecl *     )
     161        FORWARD_1( addTrait  , const ast::TraitDecl *     )
     162        FORWARD_2( addWith   , const std::vector< ast::ptr<ast::Expr> > &, const ast::Decl * )
     163};
     164
     165struct TranslateDimensionCore : public ast::WithGuards {
     166        NoIdSymbolTable symtab;
    143167
    144168        // SUIT: Struct- or Union- InstType
  • src/Validate/module.mk

    r4b4f95f r433905a  
    2020        Validate/CompoundLiteral.cpp \
    2121        Validate/CompoundLiteral.hpp \
    22         Validate/EliminateTypedef.cpp \
    23         Validate/EliminateTypedef.hpp \
    24         Validate/FixQualifiedTypes.cpp \
    25         Validate/FixQualifiedTypes.hpp \
    2622        Validate/ForallPointerDecay.cpp \
    2723        Validate/ForallPointerDecay.hpp \
     
    3026        Validate/HandleAttributes.cc \
    3127        Validate/HandleAttributes.h \
    32         Validate/HoistStruct.cpp \
    33         Validate/HoistStruct.hpp \
    3428        Validate/InitializerLength.cpp \
    3529        Validate/InitializerLength.hpp \
    3630        Validate/LabelAddressFixer.cpp \
    3731        Validate/LabelAddressFixer.hpp \
    38         Validate/NoIdSymbolTable.hpp \
    3932        Validate/ReturnCheck.cpp \
    4033        Validate/ReturnCheck.hpp \
  • src/main.cc

    r4b4f95f r433905a  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Apr 29  9:52:00 2022
    13 // Update Count     : 673
     12// Last Modified On : Wed Apr 13 11:11:00 2022
     13// Update Count     : 672
    1414//
    1515
     
    7575#include "Tuples/Tuples.h"                  // for expandMemberTuples, expan...
    7676#include "Validate/Autogen.hpp"             // for autogenerateRoutines
     77#include "Validate/GenericParameter.hpp"    // for fillGenericParameters, tr...
     78#include "Validate/FindSpecialDecls.h"      // for findGlobalDecls
     79#include "Validate/ForallPointerDecay.hpp"  // for decayForallPointers
    7780#include "Validate/CompoundLiteral.hpp"     // for handleCompoundLiterals
    78 #include "Validate/EliminateTypedef.hpp"    // for eliminateTypedef
    79 #include "Validate/FindSpecialDecls.h"      // for findGlobalDecls
    80 #include "Validate/FixQualifiedTypes.hpp"   // for fixQualifiedTypes
    81 #include "Validate/ForallPointerDecay.hpp"  // for decayForallPointers
    82 #include "Validate/GenericParameter.hpp"    // for fillGenericParameters, tr...
    83 #include "Validate/HoistStruct.hpp"         // for hoistStruct
    8481#include "Validate/InitializerLength.hpp"   // for setLengthFromInitializer
    8582#include "Validate/LabelAddressFixer.hpp"   // for fixLabelAddresses
     
    331328                // add the assignment statement after the initialization of a type parameter
    332329                PASS( "Validate-A", SymTab::validate_A( translationUnit ) );
    333 
    334                 // Must happen before auto-gen, because it uses the sized flag.
    335                 PASS( "Link Reference To Types", SymTab::linkReferenceToTypes( translationUnit ) );
     330                PASS( "Validate-B", SymTab::validate_B( translationUnit ) );
    336331
    337332                CodeTools::fillLocations( translationUnit );
     
    347342
    348343                        forceFillCodeLocations( transUnit );
    349 
    350                         // Must happen after Link References To Types,
    351                         // because aggregate members are accessed.
    352                         PASS( "Fix Qualified Types", Validate::fixQualifiedTypes( transUnit ) );
    353 
    354                         PASS( "Hoist Struct", Validate::hoistStruct( transUnit ) );
    355                         PASS( "Eliminate Typedef", Validate::eliminateTypedef( transUnit ) );
    356344
    357345                        // Check as early as possible. Can't happen before
     
    450438                        translationUnit = convert( move( transUnit ) );
    451439                } else {
    452                         PASS( "Validate-B", SymTab::validate_B( translationUnit ) );
    453440                        PASS( "Validate-C", SymTab::validate_C( translationUnit ) );
    454441                        PASS( "Validate-D", SymTab::validate_D( translationUnit ) );
Note: See TracChangeset for help on using the changeset viewer.