28 lines
		
	
	
		
			487 B
		
	
	
	
		
			C++
		
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			487 B
		
	
	
	
		
			C++
		
	
	
| 
								 | 
							
								namespace factor {
							 | 
						||
| 
								 | 
							
									namespace atomic {
							 | 
						||
| 
								 | 
							
										FACTOR_FORCE_INLINE static cell load(volatile cell *ptr)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											atomic::fence();
							 | 
						||
| 
								 | 
							
											return *ptr;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										FACTOR_FORCE_INLINE static fixnum load(volatile fixnum *ptr)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											atomic::fence();
							 | 
						||
| 
								 | 
							
											return *ptr;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										FACTOR_FORCE_INLINE static void store(volatile cell *ptr, cell val)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											*ptr = val;
							 | 
						||
| 
								 | 
							
											atomic::fence();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										FACTOR_FORCE_INLINE static void store(volatile fixnum *ptr, fixnum val)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											*ptr = val;
							 | 
						||
| 
								 | 
							
											atomic::fence();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |