Changeset 7a560c1
- Timestamp:
- Feb 2, 2017, 4:06:26 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 6215a5c, 7d6639d
- Parents:
- fa2de95 (diff), 99b75cab (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:
-
- 5 added
- 12 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
configure
rfa2de95 r7a560c1 6184 6184 6185 6185 6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/ examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/benchmark/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile" 6187 6187 6188 6188 … … 6945 6945 "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;; 6946 6946 "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; 6947 "src/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES src/benchmark/Makefile" ;; 6947 6948 "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;; 6948 6949 "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;; -
configure.ac
rfa2de95 r7a560c1 190 190 src/driver/Makefile 191 191 src/Makefile 192 src/benchmark/Makefile 192 193 src/examples/Makefile 193 194 src/tests/Makefile -
src/ResolvExpr/Resolver.cc
rfa2de95 r7a560c1 449 449 TypeSubstitution sub = makeGenericSubstitutuion( sit ); 450 450 StructDecl * st = sit->get_baseStruct(); 451 if(st->get_members().empty()) return; 451 452 // want to resolve each initializer to the members of the struct, 452 453 // but if there are more initializers than members we should stop … … 458 459 TypeSubstitution sub = makeGenericSubstitutuion( uit ); 459 460 UnionDecl * un = uit->get_baseUnion(); 461 if(un->get_members().empty()) return; 460 462 // only resolve to the first member of a union 461 463 resolveSingleAggrInit( *un->get_members().begin(), init, initEnd, sub ); -
src/benchmark/bench.c
rfa2de95 r7a560c1 87 87 88 88 struct CoroutineDummy { coroutine c; }; 89 DECL_COROUTINE(CoroutineDummy) 89 DECL_COROUTINE(CoroutineDummy); 90 90 void main(CoroutineDummy * this) {} 91 91 … … 122 122 }; 123 123 124 DECL_COROUTINE(CoroutineResume) 124 DECL_COROUTINE(CoroutineResume); 125 125 126 126 void ?{}(CoroutineResume* this, int N) { … … 151 151 152 152 struct ThreadDummy { thread t; }; 153 DECL_THREAD(ThreadDummy) 153 DECL_THREAD(ThreadDummy); 154 154 void main(ThreadDummy * this) {} 155 155 … … 183 183 }; 184 184 185 DECL_THREAD(ContextSwitch) 185 DECL_THREAD(ContextSwitch); 186 186 187 187 void main(ContextSwitch * this) { -
src/libcfa/concurrency/CtxSwitch-x86_64.S
rfa2de95 r7a560c1 49 49 // Save volatile registers on the stack. 50 50 51 subq $8,%rsp 52 stmxcsr 0(%rsp) // 4 bytes 53 fnstcw 4(%rsp) // 2 bytes 51 54 pushq %r15 52 55 pushq %r14 … … 72 75 popq %r14 73 76 popq %r15 77 fldcw 4(%rsp) 78 ldmxcsr 0(%rsp) 79 addq $8,%rsp 74 80 75 81 // Return to thread. -
src/libcfa/concurrency/coroutines
rfa2de95 r7a560c1 30 30 }; 31 31 32 #define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this) ;32 #define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this) 33 33 34 34 //----------------------------------------------------------------------------- … … 110 110 } 111 111 112 static inline void resume(coroutine * dst) { 113 coroutine * src = this_coroutine(); // optimization 114 115 // not resuming self ? 116 if ( src != dst ) { 117 assertf( dst->notHalted , 118 "Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n" 119 "Possible cause is terminated coroutine's main routine has already returned.", 120 src->name, src, dst->name, dst ); 121 122 // set last resumer 123 dst->last = src; 124 } // if 125 126 // always done for performance testing 127 CoroutineCtxSwitch( src, dst ); 128 } 129 112 130 #endif //COROUTINES_H 113 131 -
src/libcfa/concurrency/invoke.c
rfa2de95 r7a560c1 109 109 struct FakeStack { 110 110 void *fixedRegisters[5]; // fixed registers rbx, r12, r13, r14, r15 111 void *rturn; // where to go on return from uSwitch 111 uint32_t mxcr; // SSE Status and Control bits (control bits are preserved across function calls) 112 uint16_t fcw; // X97 FPU control word (preserved across function calls) 113 void *rturn; // where to go on return from uSwitch 112 114 void *dummyReturn; // NULL return address to provide proper alignment 113 115 }; … … 120 122 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this; 121 123 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke; 124 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520 125 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F; //Vol. 1 8-7 122 126 #else 123 127 #error Only __i386__ and __x86_64__ is supported for threads in cfa -
src/libcfa/concurrency/kernel.c
rfa2de95 r7a560c1 43 43 }; 44 44 45 DECL_COROUTINE(processorCtx_t) 45 DECL_COROUTINE(processorCtx_t); 46 46 47 47 #define KERNEL_STORAGE(T,X) static char X##_storage[sizeof(T)] -
src/libcfa/concurrency/threads
rfa2de95 r7a560c1 32 32 }; 33 33 34 #define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this) ;34 #define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this) 35 35 36 36 forall( dtype T | is_thread(T) ) -
src/libcfa/containers/vector
rfa2de95 r7a560c1 118 118 } 119 119 120 forall(otype T, otype allocator_t | allocator_c(T, allocator_t))121 static inline const T* cbegin(const vector(T, allocator_t)* this)122 {123 return data(&this->storage);124 }120 // forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) 121 // static inline const T* cbegin(const vector(T, allocator_t)* this) 122 // { 123 // return data(&this->storage); 124 // } 125 125 126 126 forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) … … 130 130 } 131 131 132 forall(otype T, otype allocator_t | allocator_c(T, allocator_t))133 static inline const T* cend(const vector(T, allocator_t)* this)134 {135 return data(&this->storage) + this->size;136 }132 // forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) 133 // static inline const T* cend(const vector(T, allocator_t)* this) 134 // { 135 // return data(&this->storage) + this->size; 136 // } 137 137 138 138 //------------------------------------------------------------------------------ -
src/prelude/Makefile.am
rfa2de95 r7a560c1 29 29 # create forward declarations for gcc builtins 30 30 builtins.cf : builtins.c 31 ${AM_V_GEN}if [ -e $< ] ; then \ 32 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \ 33 fi 31 ${AM_V_GEN}@BACKEND_CC@ -E -P $^ | sed -f prototypes.sed > $@ 34 32 35 33 builtins.c : builtins.def prototypes.awk 36 ${AM_V_GEN}if [ -e $< ] ; then \ 37 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \ 38 fi 34 ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ 39 35 40 36 builtins.def : -
src/prelude/Makefile.in
rfa2de95 r7a560c1 425 425 # create forward declarations for gcc builtins 426 426 builtins.cf : builtins.c 427 ${AM_V_GEN}if [ -e $< ] ; then \ 428 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \ 429 fi 427 ${AM_V_GEN}@BACKEND_CC@ -E -P $^ | sed -f prototypes.sed > $@ 430 428 431 429 builtins.c : builtins.def prototypes.awk 432 ${AM_V_GEN}if [ -e $< ] ; then \ 433 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \ 434 fi 430 ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ 435 431 436 432 builtins.def : -
src/tests/thread.c
rfa2de95 r7a560c1 7 7 struct Second { thread t; simple_lock* lock; }; 8 8 9 DECL_THREAD(First) 10 DECL_THREAD(Second) 9 DECL_THREAD(First); 10 DECL_THREAD(Second); 11 11 12 12 void ?{}( First * this, simple_lock* lock ) { this->lock = lock; }
Note: See TracChangeset
for help on using the changeset viewer.