Changeset 6e0f4bd
- Timestamp:
- Jan 25, 2018, 1:00:12 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, 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:
- dbe9b08
- Parents:
- f7d6bb0 (diff), b6ec245 (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. - Location:
- src
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/CurrentObject.cc
rf7d6bb0 r6e0f4bd 62 62 virtual ~MemberIterator() {} 63 63 64 /// walks the current object using the given designators as a guide 64 65 virtual void setPosition( std::list< Expression * > & designators ) = 0; 66 67 /// retrieve the list of possible Type/Designaton pairs for the current position in the currect object 65 68 virtual std::list<InitAlternative> operator*() const = 0; 69 70 /// true if the iterator is not currently at the end 66 71 virtual operator bool() const = 0; 72 73 /// moves the iterator by one member in the current object 67 74 virtual MemberIterator & bigStep() = 0; 75 76 /// moves the iterator by one member in the current subobject 68 77 virtual MemberIterator & smallStep() = 0; 78 79 /// the type of the current object 69 80 virtual Type * getType() = 0; 81 82 /// the type of the current subobject 70 83 virtual Type * getNext() = 0; 71 84 85 /// printing for debug 72 86 virtual void print( std::ostream & out, Indenter indent ) const = 0; 73 87 88 /// helper for operator*; aggregates must add designator to each init alternative, but 89 /// adding designators in operator* creates duplicates. 74 90 virtual std::list<InitAlternative> first() const = 0; // should be protected 75 91 }; … … 354 370 } 355 371 } 356 // if ( curMember == std::next( decl->get_members().begin(), 1 ) ) { // xxx - this never triggers because curMember is incremented immediately on construction 357 if ( atbegin ) { // xxx - this never triggers because curMember is incremented immediately on construction 372 if ( atbegin ) { 358 373 // xxx - what about case of empty struct?? 359 374 // only add self if at the very beginning of the structure … … 389 404 return *this; 390 405 } 391 virtual std::list<InitAlternative> first() const { return std::list<InitAlternative>{}; }392 406 }; 393 407 -
src/libcfa/bits/locks.h
rf7d6bb0 r6e0f4bd 9 9 // Author : Thierry Delisle 10 10 // Created On : Tue Oct 31 15:14:38 2017 11 // Last Modified By : --12 // Last Modified On : --13 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 8 16:02:22 2017 13 // Update Count : 1 14 14 // 15 15 … … 24 24 #elif defined( __i386 ) || defined( __x86_64 ) 25 25 #define Pause() __asm__ __volatile__ ( "pause" : : : ) 26 #elif defined( __ARM_ARCH ) 27 #define Pause() __asm__ __volatile__ ( "nop" : : : ) 26 28 #else 27 29 #error unsupported architecture 28 30 #endif 29 31 30 #if defined( __i386 ) || defined( __x86_64 ) 32 #if defined( __i386 ) || defined( __x86_64 ) || defined( __ARM_ARCH ) 31 33 // Intel recommendation 32 34 #define __ALIGN__ __attribute__(( aligned (128) )) … … 37 39 #endif 38 40 39 #if defined( __x86_64 )41 #if __SIZEOF_SIZE_T__ == 8 40 42 #define __lock_test_and_test_and_set( lock ) (lock) == 0 && __sync_lock_test_and_set_8( &(lock), 1 ) == 0 41 43 #define __lock_release( lock ) __sync_lock_release_8( &(lock) ); 42 #elif defined( __i386 )44 #elif __SIZEOF_SIZE_T__ == 4 43 45 #define __lock_test_and_test_and_set( lock ) (lock) == 0 && __sync_lock_test_and_set_4( &(lock), 1 ) == 0 44 46 #define __lock_release( lock ) __sync_lock_release_4( &(lock) ); … … 48 50 49 51 struct __spinlock_t { 50 __ALIGN__ volatile uintptr_t lock;52 __ALIGN__ volatile size_t lock; 51 53 #ifdef __CFA_DEBUG__ 52 54 const char * prev_name; -
src/libcfa/concurrency/invoke.c
rf7d6bb0 r6e0f4bd 10 10 // Created On : Tue Jan 17 12:27:26 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:28:33 201713 // Update Count : 112 // Last Modified On : Tue Jan 23 14:04:56 2018 13 // Update Count : 2 14 14 // 15 15 … … 133 133 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520 134 134 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F; //Vol. 1 8-7 135 136 #elif defined( __ARM_ARCH ) 137 138 struct FakeStack { 139 float fpRegs[16]; // floating point registers 140 void *intRegs[9]; // integer/pointer registers 141 void *arg[2]; // placeholder for this pointer 142 }; 143 144 ((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack ); 145 ((struct machine_context_t *)stack->context)->FP = NULL; 146 147 struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP; 148 149 fs->intRegs[8] = CtxInvokeStub; 150 fs->arg[0] = this; 151 fs->arg[1] = invoke; 135 152 #else 136 153 #error Only __i386__ and __x86_64__ is supported for threads in cfa -
src/libcfa/concurrency/invoke.h
rf7d6bb0 r6e0f4bd 10 10 // Created On : Tue Jan 17 12:27:26 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:28:56 201713 // Update Count : 112 // Last Modified On : Tue Jan 23 14:55:46 2018 13 // Update Count : 3 14 14 // 15 15 … … 209 209 "movl %%ebp,%1\n" \ 210 210 : "=rm" (ctx.SP), "=rm" (ctx.FP) ) 211 #elif defined( __ARM_ARCH ) 212 #define CtxGet( ctx ) __asm__ ( \ 213 "mov %0,%%sp\n" \ 214 "mov %1,%%r11\n" \ 215 : "=rm" (ctx.SP), "=rm" (ctx.FP) ) 211 216 #endif 212 217 -
src/libcfa/concurrency/kernel.c
rf7d6bb0 r6e0f4bd 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:33:18201713 // Update Count : 212 // Last Modified On : Fri Dec 8 16:23:33 2017 13 // Update Count : 3 14 14 // 15 15 16 16 //C Includes 17 17 #include <stddef.h> 18 #define ftype `ftype` 18 19 extern "C" { 19 20 #include <stdio.h> … … 23 24 #include <unistd.h> 24 25 } 26 #undef ftype 25 27 26 28 //CFA Includes -
src/libcfa/concurrency/preemption.c
rf7d6bb0 r6e0f4bd 10 10 // Created On : Mon Jun 5 14:20:42 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:36:05 201713 // Update Count : 212 // Last Modified On : Tue Jan 23 17:59:30 2018 13 // Update Count : 7 14 14 // 15 15 16 16 #include "preemption.h" 17 17 18 #define ftype `ftype` 18 19 extern "C" { 19 20 #include <errno.h> … … 26 27 #include <unistd.h> 27 28 } 28 29 #undef ftype 29 30 30 31 #ifdef __USE_STREAM__ … … 60 61 61 62 // Machine specific register name 62 #if def __x86_64__63 #if defined(__x86_64__) 63 64 #define CFA_REG_IP REG_RIP 64 #el se65 #elif defined(__i386__) 65 66 #define CFA_REG_IP REG_EIP 67 #elif defined(__ARM_ARCH__) 68 #define CFA_REG_IP REG_R15 66 69 #endif 67 70 … … 296 299 // Receives SIGUSR1 signal and causes the current thread to yield 297 300 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) { 301 #if defined( __ARM_ARCH ) 302 __cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.arm_pc); ) 303 #else 298 304 __cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.gregs[CFA_REG_IP]); ) 299 300 // Check if it is safe to preempt here 305 #endif 306 307 // Check if it is safe to preempt here 301 308 if( !preemption_ready() ) { return; } 302 309 -
src/tests/.expect/vector.txt
rf7d6bb0 r6e0f4bd 1 /usr/bin/ld: cannot open output file vector: Is a directory 2 collect2: error: ld returned 1 exit status 1 0 2 1 3 2 4 3 5 0
Note: See TracChangeset
for help on using the changeset viewer.