| OLD | NEW |
| 1 /* Copyright (C) 2002-2003 Jean-Marc Valin | 1 /* Copyright (C) 2002-2003 Jean-Marc Valin |
| 2 Copyright (C) 2007-2009 Xiph.Org Foundation */ | 2 Copyright (C) 2007-2009 Xiph.Org Foundation */ |
| 3 /** | 3 /** |
| 4 @file stack_alloc.h | 4 @file stack_alloc.h |
| 5 @brief Temporary memory allocation on stack | 5 @brief Temporary memory allocation on stack |
| 6 */ | 6 */ |
| 7 /* | 7 /* |
| 8 Redistribution and use in source and binary forms, with or without | 8 Redistribution and use in source and binary forms, with or without |
| 9 modification, are permitted provided that the following conditions | 9 modification, are permitted provided that the following conditions |
| 10 are met: | 10 are met: |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 # endif | 109 # endif |
| 110 | 110 |
| 111 #define SAVE_STACK | 111 #define SAVE_STACK |
| 112 #define RESTORE_STACK | 112 #define RESTORE_STACK |
| 113 #define ALLOC_STACK | 113 #define ALLOC_STACK |
| 114 #define ALLOC_NONE 0 | 114 #define ALLOC_NONE 0 |
| 115 | 115 |
| 116 #else | 116 #else |
| 117 | 117 |
| 118 #ifdef CELT_C | 118 #ifdef CELT_C |
| 119 char *scratch_ptr=0; |
| 119 char *global_stack=0; | 120 char *global_stack=0; |
| 120 #else | 121 #else |
| 121 extern char *global_stack; | 122 extern char *global_stack; |
| 123 extern char *scratch_ptr; |
| 122 #endif /* CELT_C */ | 124 #endif /* CELT_C */ |
| 123 | 125 |
| 124 #ifdef ENABLE_VALGRIND | 126 #ifdef ENABLE_VALGRIND |
| 125 | 127 |
| 126 #include <valgrind/memcheck.h> | 128 #include <valgrind/memcheck.h> |
| 127 | 129 |
| 128 #ifdef CELT_C | 130 #ifdef CELT_C |
| 129 char *global_stack_top=0; | 131 char *global_stack_top=0; |
| 130 #else | 132 #else |
| 131 extern char *global_stack_top; | 133 extern char *global_stack_top; |
| 132 #endif /* CELT_C */ | 134 #endif /* CELT_C */ |
| 133 | 135 |
| 134 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) | 136 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) |
| 135 #define PUSH(stack, size, type) (VALGRIND_MAKE_MEM_NOACCESS(stack, global_stack_
top-stack),ALIGN((stack),sizeof(type)/sizeof(char)),VALGRIND_MAKE_MEM_UNDEFINED(
stack, ((size)*sizeof(type)/sizeof(char))),(stack)+=(2*(size)*sizeof(type)/sizeo
f(char)),(type*)((stack)-(2*(size)*sizeof(type)/sizeof(char)))) | 137 #define PUSH(stack, size, type) (VALGRIND_MAKE_MEM_NOACCESS(stack, global_stack_
top-stack),ALIGN((stack),sizeof(type)/sizeof(char)),VALGRIND_MAKE_MEM_UNDEFINED(
stack, ((size)*sizeof(type)/sizeof(char))),(stack)+=(2*(size)*sizeof(type)/sizeo
f(char)),(type*)((stack)-(2*(size)*sizeof(type)/sizeof(char)))) |
| 136 #define RESTORE_STACK ((global_stack = _saved_stack),VALGRIND_MAKE_MEM_NOACCESS(
global_stack, global_stack_top-global_stack)) | 138 #define RESTORE_STACK ((global_stack = _saved_stack),VALGRIND_MAKE_MEM_NOACCESS(
global_stack, global_stack_top-global_stack)) |
| 137 #define ALLOC_STACK char *_saved_stack; ((global_stack = (global_stack==0) ? ((g
lobal_stack_top=opus_alloc_scratch(GLOBAL_STACK_SIZE*2)+(GLOBAL_STACK_SIZE*2))-(
GLOBAL_STACK_SIZE*2)) : global_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, g
lobal_stack_top-global_stack)); _saved_stack = global_stack; | 139 #define ALLOC_STACK char *_saved_stack; ((global_stack = (global_stack==0) ? ((g
lobal_stack_top=opus_alloc_scratch(GLOBAL_STACK_SIZE*2)+(GLOBAL_STACK_SIZE*2))-(
GLOBAL_STACK_SIZE*2)) : global_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, g
lobal_stack_top-global_stack)); _saved_stack = global_stack; |
| 138 | 140 |
| 139 #else | 141 #else |
| 140 | 142 |
| 141 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) | 143 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) |
| 142 #define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack
)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeo
f(char)))) | 144 #define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack
)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeo
f(char)))) |
| 145 #if 0 /* Set this to 1 to instrument pseudostack usage */ |
| 146 #define RESTORE_STACK (printf("%ld %s:%d\n", global_stack-scratch_ptr, __FILE__,
__LINE__),global_stack = _saved_stack) |
| 147 #else |
| 143 #define RESTORE_STACK (global_stack = _saved_stack) | 148 #define RESTORE_STACK (global_stack = _saved_stack) |
| 144 #define ALLOC_STACK char *_saved_stack; (global_stack = (global_stack==0) ? opus
_alloc_scratch(GLOBAL_STACK_SIZE) : global_stack); _saved_stack = global_stack; | 149 #endif |
| 150 #define ALLOC_STACK char *_saved_stack; (global_stack = (global_stack==0) ? (scr
atch_ptr=opus_alloc_scratch(GLOBAL_STACK_SIZE)) : global_stack); _saved_stack =
global_stack; |
| 145 | 151 |
| 146 #endif /* ENABLE_VALGRIND */ | 152 #endif /* ENABLE_VALGRIND */ |
| 147 | 153 |
| 148 #include "os_support.h" | 154 #include "os_support.h" |
| 149 #define VARDECL(type, var) type *var | 155 #define VARDECL(type, var) type *var |
| 150 #define ALLOC(var, size, type) var = PUSH(global_stack, size, type) | 156 #define ALLOC(var, size, type) var = PUSH(global_stack, size, type) |
| 151 #define SAVE_STACK char *_saved_stack = global_stack; | 157 #define SAVE_STACK char *_saved_stack = global_stack; |
| 152 #define ALLOC_NONE 0 | 158 #define ALLOC_NONE 0 |
| 153 | 159 |
| 154 #endif /* VAR_ARRAYS */ | 160 #endif /* VAR_ARRAYS */ |
| (...skipping 14 matching lines...) Expand all Loading... |
| 169 static OPUS_INLINE int _opus_false(void) {return 0;} | 175 static OPUS_INLINE int _opus_false(void) {return 0;} |
| 170 #define OPUS_CHECK_ARRAY(ptr, len) _opus_false() | 176 #define OPUS_CHECK_ARRAY(ptr, len) _opus_false() |
| 171 #define OPUS_CHECK_VALUE(value) _opus_false() | 177 #define OPUS_CHECK_VALUE(value) _opus_false() |
| 172 #define OPUS_PRINT_INT(value) do{}while(0) | 178 #define OPUS_PRINT_INT(value) do{}while(0) |
| 173 #define OPUS_FPRINTF (void) | 179 #define OPUS_FPRINTF (void) |
| 174 | 180 |
| 175 #endif | 181 #endif |
| 176 | 182 |
| 177 | 183 |
| 178 #endif /* STACK_ALLOC_H */ | 184 #endif /* STACK_ALLOC_H */ |
| OLD | NEW |