mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
| /* cilk_malloc.c                  -*-C-*-
 | |
|  *
 | |
|  *************************************************************************
 | |
|  *
 | |
|  *  @copyright
 | |
|  *  Copyright (C) 2009-2013, Intel Corporation
 | |
|  *  All rights reserved.
 | |
|  *  
 | |
|  *  @copyright
 | |
|  *  Redistribution and use in source and binary forms, with or without
 | |
|  *  modification, are permitted provided that the following conditions
 | |
|  *  are met:
 | |
|  *  
 | |
|  *    * Redistributions of source code must retain the above copyright
 | |
|  *      notice, this list of conditions and the following disclaimer.
 | |
|  *    * Redistributions in binary form must reproduce the above copyright
 | |
|  *      notice, this list of conditions and the following disclaimer in
 | |
|  *      the documentation and/or other materials provided with the
 | |
|  *      distribution.
 | |
|  *    * Neither the name of Intel Corporation nor the names of its
 | |
|  *      contributors may be used to endorse or promote products derived
 | |
|  *      from this software without specific prior written permission.
 | |
|  *  
 | |
|  *  @copyright
 | |
|  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | |
|  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | |
|  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | |
|  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
|  *  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 | |
|  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 | |
|  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 | |
|  *  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 | |
|  *  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
|  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
 | |
|  *  WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | |
|  *  POSSIBILITY OF SUCH DAMAGE.
 | |
|  **************************************************************************/
 | |
| 
 | |
| #include "cilk_malloc.h"
 | |
| 
 | |
| #include <stdlib.h>
 | |
| #if defined _WIN32 || defined _WIN64 || defined __linux__
 | |
| #include <malloc.h>
 | |
| #define HAS_MEMALIGN 1
 | |
| #endif
 | |
| #ifdef __VXWORKS__
 | |
| #define HAS_MEMALIGN 1
 | |
| #include <memLib.h>
 | |
| #endif
 | |
| 
 | |
| #define PREFERRED_ALIGNMENT 64  /* try to keep runtime system data
 | |
|                                    structures within one cache line */
 | |
| 
 | |
| void *__cilkrts_malloc(size_t size)
 | |
| {
 | |
|     /* TODO: check for out of memory */
 | |
| #ifdef _WIN32
 | |
|     return _aligned_malloc(size, PREFERRED_ALIGNMENT);
 | |
| #elif defined HAS_MEMALIGN
 | |
|     return memalign(PREFERRED_ALIGNMENT, size);
 | |
| #else
 | |
|     return malloc(size);
 | |
| #endif
 | |
| }
 | |
| 
 | |
| void *__cilkrts_realloc(void *ptr, size_t size)
 | |
| {
 | |
| #ifdef _WIN32
 | |
|     return _aligned_realloc(ptr, size, PREFERRED_ALIGNMENT);
 | |
| #else
 | |
|     return realloc(ptr, size);
 | |
| #endif
 | |
| }
 | |
| 
 | |
| void __cilkrts_free(void *ptr)
 | |
| {
 | |
| #ifdef _WIN32
 | |
|     _aligned_free(ptr);
 | |
| #else
 | |
|     free(ptr);
 | |
| #endif
 | |
| }
 | |
| 
 | |
| /* End cilk_malloc.c */
 |