Service routines: ********************************************************************/
| 1536 | Service routines: |
| 1537 | ********************************************************************/ |
| 1538 | void* ap::amalloc(size_t size, size_t alignment) |
| 1539 | { |
| 1540 | if( alignment<=1 ) |
| 1541 | { |
| 1542 | // |
| 1543 | // no alignment, just call malloc |
| 1544 | // |
| 1545 | void *block = malloc(sizeof(void*)+size); |
| 1546 | void **p = (void**)block; |
| 1547 | *p = block; |
| 1548 | return (void*)((char*)block+sizeof(void*)); |
| 1549 | } |
| 1550 | else |
| 1551 | { |
| 1552 | // |
| 1553 | // align. |
| 1554 | // |
| 1555 | void *block = malloc(alignment-1+sizeof(void*)+size); |
| 1556 | char *result = (char*)block+sizeof(void*); |
| 1557 | //if( ((unsigned int)(result))%alignment!=0 ) |
| 1558 | // result += alignment - ((unsigned int)(result))%alignment; |
| 1559 | if( (result-(char*)0)%alignment!=0 ) |
| 1560 | result += alignment - (result-(char*)0)%alignment; |
| 1561 | *((void**)(result-sizeof(void*))) = block; |
| 1562 | return result; |
| 1563 | } |
| 1564 | } |
| 1565 | |
| 1566 | void ap::afree(void *block) |
| 1567 | { |
nothing calls this directly
no outgoing calls
no test coverage detected