Changes in / [140eb16:4d8fbf4]


Ignore:
Files:
6 added
12 edited

Legend:

Unmodified
Added
Removed
  • benchmark/Makefile.am

    r140eb16 r4d8fbf4  
    372372        chmod a+x a.out
    373373
     374## =========================================================================================================
     375
    374376mutexStmt$(EXEEXT) :                \
     377        mutexStmt-cpp1.run                      \
     378        mutexStmt-cpp2.run                      \
     379        mutexStmt-cpp4.run                      \
     380        mutexStmt-cpp8.run                      \
     381        mutexStmt-java.run                      \
    375382        mutexStmt-lock1.run                 \
    376383        mutexStmt-lock2.run                 \
     
    397404        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/lock8.cfa
    398405
     406mutexStmt-cpp1$(EXEEXT):
     407        $(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp1.cc
     408
     409mutexStmt-cpp2$(EXEEXT):
     410        $(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp2.cc
     411
     412mutexStmt-cpp4$(EXEEXT):
     413        $(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp4.cc
     414
     415mutexStmt-cpp8$(EXEEXT):
     416        $(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp8.cc
     417
    399418mutexStmt-monitor1$(EXEEXT):
    400419        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/monitor1.cfa
     
    417436mutexStmt-no-stmt-lock8$(EXEEXT):
    418437        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/no_stmt_lock8.cfa
     438
     439mutexStmt-java$(EXEEXT):
     440        $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutexStmt/JavaThread.java
     441        echo "#!/bin/sh" > a.out
     442        echo "java JavaThread \"$$""@\"" >> a.out
     443        chmod a+x a.out
    419444
    420445## =========================================================================================================
  • benchmark/bench.h

    r140eb16 r4d8fbf4  
    2121        return 1000000000LL * ts.tv_sec + ts.tv_nsec;
    2222} // bench_time
     23
     24
     25#if defined(__cforall)
     26struct test_spinlock {
     27        volatile bool lock;
     28};
     29
     30static inline void lock( test_spinlock & this ) {
     31        for ( ;; ) {
     32                if ( (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0) ) break;
     33        }
     34}
     35
     36static inline void unlock( test_spinlock & this ) {
     37        __atomic_clear( &this.lock, __ATOMIC_RELEASE );
     38}
     39#endif
    2340
    2441#ifndef BENCH_N
  • benchmark/mutexStmt/lock1.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1;
     7test_spinlock l1;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/lock2.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2;
     7test_spinlock l1, l2;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/lock4.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2, l3, l4;
     7test_spinlock l1, l2, l3, l4;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/lock8.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2, l3, l4, l5, l6, l7, l8;
     7test_spinlock l1, l2, l3, l4, l5, l6, l7, l8;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/no_stmt_lock1.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1;
     7test_spinlock l1;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/no_stmt_lock2.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2;
     7test_spinlock l1, l2;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/no_stmt_lock4.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2, l3, l4;
     7test_spinlock l1, l2, l3, l4;
    88
    99int main( int argc, char * argv[] ) {
  • benchmark/mutexStmt/no_stmt_lock8.cfa

    r140eb16 r4d8fbf4  
    55#include "bench.h"
    66
    7 single_acquisition_lock l1, l2, l3, l4, l5, l6, l7, l8;
     7test_spinlock l1, l2, l3, l4, l5, l6, l7, l8;
    88
    99int main( int argc, char * argv[] ) {
  • libcfa/src/concurrency/mutex_stmt.hfa

    r140eb16 r4d8fbf4  
    4040        }
    4141    }
     42
     43    static inline L * __get_ptr( L & this ) {
     44        return &this;
     45    }
     46
     47    static inline L __get_type( L & this );
     48
     49    static inline L __get_type( L * this );
    4250}
  • src/Concurrency/Keywords.cc

    r140eb16 r4d8fbf4  
    12001200                                new PointerType(
    12011201                                        noQualifiers,
    1202                                         new TypeofType( noQualifiers, args.front()->clone() )
     1202                                        //new TypeofType( noQualifiers, args.front()->clone() )
     1203                                        new TypeofType( noQualifiers, new UntypedExpr(
     1204                                                        new NameExpr( "__get_type" ),
     1205                                                        { args.front()->clone() }
     1206                                                )
     1207                                        )
    12031208                                ),
    12041209                                new ConstantExpr( Constant::from_ulong( args.size() ) ),
     
    12081213                        new ListInit(
    12091214                                map_range < std::list<Initializer*> > ( args, [](Expression * var ){
    1210                                         return new SingleInit( new AddressExpr( var ) );
     1215                                        return new SingleInit( new UntypedExpr(
     1216                                                        new NameExpr( "__get_ptr" ),
     1217                                                        { var }
     1218                                        ) );
     1219                                        //return new SingleInit( new AddressExpr( var ) );
    12111220                                })
    12121221                        )
     
    12141223
    12151224                StructInstType * lock_guard_struct = new StructInstType( noQualifiers, lock_guard_decl );
    1216                 TypeExpr * lock_type_expr = new TypeExpr( new TypeofType( noQualifiers, args.front()->clone() ) );
     1225                TypeExpr * lock_type_expr = new TypeExpr(
     1226                        new TypeofType( noQualifiers, new UntypedExpr(
     1227                                new NameExpr( "__get_type" ),
     1228                                { args.front()->clone() }
     1229                                )
     1230                        )
     1231                );
    12171232
    12181233                lock_guard_struct->parameters.push_back( lock_type_expr ) ;
Note: See TracChangeset for help on using the changeset viewer.