Changeset 4b4f95f
- Timestamp:
- Apr 29, 2022, 9:39:24 PM (2 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation, qualifiedEnum
- Children:
- 24ceace
- Parents:
- 433905a (diff), 0c939dd (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. - Files:
-
- 9 added
- 1 deleted
- 12 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
benchmark/Cargo.toml.in
r433905a r4b4f95f 4 4 authors = ["Cforall"] 5 5 edition = "2018" 6 7 [[bin]] 8 name = "rdq-churn-tokio" 9 path = "@abs_srcdir@/readyQ/churn.rs" 6 10 7 11 [[bin]] -
benchmark/Makefile.am
r433905a r4b4f95f 614 614 RDQBENCHES = \ 615 615 rdq-churn-cfa \ 616 rdq-churn-tokio \ 617 rdq-churn-go \ 618 rdq-churn-fibre \ 616 619 rdq-cycle-cfa \ 617 620 rdq-cycle-tokio \ -
benchmark/readyQ/churn.cfa
r433905a r4b4f95f 1 1 #include "rq_bench.hfa" 2 2 3 #include <locks.hfa> 4 3 5 unsigned spot_cnt = 2; 4 bench_sem * volatile * spots;6 semaphore * spots; 5 7 6 8 thread BThrd { 7 9 unsigned long long count; 8 10 unsigned long long blocks; 9 b ench_sem sem;11 bool skip; 10 12 }; 11 13 … … 14 16 this.count = 0; 15 17 this.blocks = 0; 18 this.skip = false; 16 19 } 17 20 … … 19 22 20 23 void main( BThrd & this ) with( this ) { 21 wait( sem);24 park(); 22 25 for() { 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 ); 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 27 32 count ++; 28 33 if( clock_mode && stop) break; … … 49 54 spots = aalloc(spot_cnt); 50 55 for(i; spot_cnt) { 51 spots[i] = 0p;56 (spots[i]){ 0 }; 52 57 } 53 58 … … 55 60 BThrd * threads[nthreads]; 56 61 for(i; nthreads ) { 57 threads[i] = malloc(); 58 (*threads[i]){}; 62 BThrd & t = *(threads[i] = malloc()); 63 (t){}; 64 t.skip = i < spot_cnt; 59 65 } 60 66 printf("Starting\n"); … … 64 70 65 71 for(i; nthreads) { 66 post( threads[i]->sem);72 unpark( *threads[i] ); 67 73 } 68 74 wait(start, is_tty); … … 72 78 printf("\nDone\n"); 73 79 80 for(i; spot_cnt) { 81 for(10000) V( spots[i] ); 82 } 83 74 84 for(i; nthreads) { 75 post( threads[i]->sem );76 85 BThrd & thrd = join( *threads[i] ); 77 86 global_counter += thrd.count; -
src/AST/Convert.cpp
r433905a r4b4f95f 2729 2729 ty->forall.emplace_back(new ast::TypeInstType(param)); 2730 2730 for (auto asst : param->assertions) { 2731 ty->assertions.emplace_back(new ast::VariableExpr({}, asst)); 2731 ty->assertions.emplace_back( 2732 new ast::VariableExpr(param->location, asst)); 2732 2733 } 2733 2734 } -
src/Common/utility.h
r433905a r4b4f95f 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Feb 11 13:00:36 202013 // Update Count : 5 011 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Apr 25 14:26:00 2022 13 // Update Count : 51 14 14 // 15 15 … … 230 230 } 231 231 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 232 238 template< typename... Args > 233 239 auto zip(Args&&... args) -> decltype(zipWith(std::forward<Args>(args)..., std::make_pair)) { -
src/SymTab/Validate.cc
r433905a r4b4f95f 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Nov 12 11:00:00 202113 // Update Count : 36 412 // Last Modified On : Fri Apr 29 9:45:00 2022 13 // Update Count : 365 14 14 // 15 15 … … 143 143 struct LinkReferenceToTypes_old final : public WithIndexer, public WithGuards, public WithVisitorRef<LinkReferenceToTypes_old>, public WithShortCircuiting { 144 144 LinkReferenceToTypes_old( const Indexer * indexer ); 145 145 146 void postvisit( TypeInstType * typeInst ); 146 147 … … 370 371 } 371 372 373 void linkReferenceToTypes( std::list< Declaration * > & translationUnit ) { 374 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr ); 375 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions 376 } 377 372 378 void validate_B( std::list< Declaration * > & translationUnit ) { 373 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );374 379 PassVisitor<FixQualifiedTypes> fixQual; 375 380 { 376 381 Stats::Heap::newPass("validate-B"); 377 382 Stats::Time::BlockGuard guard("validate-B"); 378 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions383 //linkReferenceToTypes( translationUnit ); 379 384 mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes_old, because aggregate members are accessed 380 385 HoistStruct::hoistStruct( translationUnit ); -
src/SymTab/Validate.h
r433905a r4b4f95f 42 42 void validate_E( std::list< Declaration * > &translationUnit ); 43 43 void validate_F( std::list< Declaration * > &translationUnit ); 44 void linkReferenceToTypes( std::list< Declaration * > &translationUnit ); 44 45 45 46 const ast::Type * validateType( -
src/Validate/ForallPointerDecay.cpp
r433905a r4b4f95f 10 10 // Created On : Tue Dec 7 16:15:00 2021 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Feb 11 10:59:00 202213 // Update Count : 012 // Last Modified On : Sat Apr 23 13:10:00 2022 13 // Update Count : 1 14 14 // 15 15 … … 237 237 } 238 238 239 std::vector<ast::ptr<ast::DeclWithType>> expandAssertions( 240 std::vector<ast::ptr<ast::DeclWithType>> const & old ) { 241 return TraitExpander::expandAssertions( old ); 242 } 243 239 244 } // namespace Validate 240 245 -
src/Validate/ForallPointerDecay.hpp
r433905a r4b4f95f 10 10 // Created On : Tue Dec 7 16:15:00 2021 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tue Dec 8 11:50:00 202113 // Update Count : 012 // Last Modified On : Sat Apr 23 13:13:00 2022 13 // Update Count : 1 14 14 // 15 15 16 16 #pragma once 17 17 18 #include <vector> 19 #include "AST/Node.hpp" 20 18 21 namespace ast { 22 class DeclWithType; 19 23 class TranslationUnit; 20 24 } … … 27 31 void decayForallPointers( ast::TranslationUnit & transUnit ); 28 32 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 29 37 } 30 38 -
src/Validate/GenericParameter.cpp
r433905a r4b4f95f 10 10 // Created On : Fri Mar 21 10:02:00 2022 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Apr 13 10:09:00 202213 // Update Count : 012 // Last Modified On : Fri Apr 22 16:43:00 2022 13 // Update Count : 1 14 14 // 15 15 … … 22 22 #include "AST/TranslationUnit.hpp" 23 23 #include "AST/Type.hpp" 24 #include "Validate/NoIdSymbolTable.hpp" 24 25 25 26 namespace Validate { … … 138 139 // -------------------------------------------------------------------------- 139 140 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). 143 class NoIdSymbolTable { 144 ast::SymbolTable base; 145 public: 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 165 struct TranslateDimensionCore : public ast::WithGuards { 166 NoIdSymbolTable symtab; 141 struct TranslateDimensionCore : 142 public WithNoIdSymbolTable, public ast::WithGuards { 167 143 168 144 // SUIT: Struct- or Union- InstType -
src/Validate/module.mk
r433905a r4b4f95f 20 20 Validate/CompoundLiteral.cpp \ 21 21 Validate/CompoundLiteral.hpp \ 22 Validate/EliminateTypedef.cpp \ 23 Validate/EliminateTypedef.hpp \ 24 Validate/FixQualifiedTypes.cpp \ 25 Validate/FixQualifiedTypes.hpp \ 22 26 Validate/ForallPointerDecay.cpp \ 23 27 Validate/ForallPointerDecay.hpp \ … … 26 30 Validate/HandleAttributes.cc \ 27 31 Validate/HandleAttributes.h \ 32 Validate/HoistStruct.cpp \ 33 Validate/HoistStruct.hpp \ 28 34 Validate/InitializerLength.cpp \ 29 35 Validate/InitializerLength.hpp \ 30 36 Validate/LabelAddressFixer.cpp \ 31 37 Validate/LabelAddressFixer.hpp \ 38 Validate/NoIdSymbolTable.hpp \ 32 39 Validate/ReturnCheck.cpp \ 33 40 Validate/ReturnCheck.hpp \ -
src/main.cc
r433905a r4b4f95f 10 10 // Created On : Fri May 15 23:12:02 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Apr 13 11:11:00 202213 // Update Count : 67 212 // Last Modified On : Fri Apr 29 9:52:00 2022 13 // Update Count : 673 14 14 // 15 15 … … 75 75 #include "Tuples/Tuples.h" // for expandMemberTuples, expan... 76 76 #include "Validate/Autogen.hpp" // for autogenerateRoutines 77 #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 77 82 #include "Validate/GenericParameter.hpp" // for fillGenericParameters, tr... 78 #include "Validate/FindSpecialDecls.h" // for findGlobalDecls 79 #include "Validate/ForallPointerDecay.hpp" // for decayForallPointers 80 #include "Validate/CompoundLiteral.hpp" // for handleCompoundLiterals 83 #include "Validate/HoistStruct.hpp" // for hoistStruct 81 84 #include "Validate/InitializerLength.hpp" // for setLengthFromInitializer 82 85 #include "Validate/LabelAddressFixer.hpp" // for fixLabelAddresses … … 328 331 // add the assignment statement after the initialization of a type parameter 329 332 PASS( "Validate-A", SymTab::validate_A( translationUnit ) ); 330 PASS( "Validate-B", SymTab::validate_B( translationUnit ) ); 333 334 // Must happen before auto-gen, because it uses the sized flag. 335 PASS( "Link Reference To Types", SymTab::linkReferenceToTypes( translationUnit ) ); 331 336 332 337 CodeTools::fillLocations( translationUnit ); … … 342 347 343 348 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 ) ); 344 356 345 357 // Check as early as possible. Can't happen before … … 438 450 translationUnit = convert( move( transUnit ) ); 439 451 } else { 452 PASS( "Validate-B", SymTab::validate_B( translationUnit ) ); 440 453 PASS( "Validate-C", SymTab::validate_C( translationUnit ) ); 441 454 PASS( "Validate-D", SymTab::validate_D( translationUnit ) );
Note: See TracChangeset
for help on using the changeset viewer.