Updated stack allocation system used by DUMB and Opus
parent
ead4f8053b
commit
9c57fdb469
|
@ -635,10 +635,6 @@
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||||
GCC_PREFIX_HEADER = "";
|
GCC_PREFIX_HEADER = "";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
_USE_SSE,
|
|
||||||
"DEBUG=1",
|
|
||||||
);
|
|
||||||
HEADER_SEARCH_PATHS = dumb/include;
|
HEADER_SEARCH_PATHS = dumb/include;
|
||||||
INFOPLIST_FILE = Info.plist;
|
INFOPLIST_FILE = Info.plist;
|
||||||
INSTALL_PATH = "@loader_path/../Frameworks";
|
INSTALL_PATH = "@loader_path/../Frameworks";
|
||||||
|
@ -663,7 +659,6 @@
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||||
GCC_PREFIX_HEADER = "";
|
GCC_PREFIX_HEADER = "";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = _USE_SSE;
|
|
||||||
HEADER_SEARCH_PATHS = dumb/include;
|
HEADER_SEARCH_PATHS = dumb/include;
|
||||||
INFOPLIST_FILE = Info.plist;
|
INFOPLIST_FILE = Info.plist;
|
||||||
INSTALL_PATH = "@loader_path/../Frameworks";
|
INSTALL_PATH = "@loader_path/../Frameworks";
|
||||||
|
@ -680,7 +675,11 @@
|
||||||
1DEB91B208733DA50010E9CD /* Debug */ = {
|
1DEB91B208733DA50010E9CD /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"VAR_ARRAYS=1",
|
||||||
|
"_USE_SSE=1",
|
||||||
|
);
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
|
@ -696,6 +695,10 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"VAR_ARRAYS=1",
|
||||||
|
"_USE_SSE=1",
|
||||||
|
);
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
|
|
|
@ -1,47 +1,50 @@
|
||||||
/* Copyright (C) 2002 Jean-Marc Valin */
|
/* Copyright (C) 2002-2003 Jean-Marc Valin
|
||||||
|
Copyright (C) 2007-2009 Xiph.Org Foundation */
|
||||||
/**
|
/**
|
||||||
@file stack_alloc.h
|
@file stack_alloc.h
|
||||||
@brief Temporary memory allocation on stack
|
@brief Temporary memory allocation on stack
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
are met:
|
are met:
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright
|
- Redistributions of source code must retain the above copyright
|
||||||
notice, this list of conditions and the following disclaimer.
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
- Redistributions in binary form must reproduce the above copyright
|
- Redistributions in binary form must reproduce the above copyright
|
||||||
notice, this list of conditions and the following disclaimer in the
|
notice, this list of conditions and the following disclaimer in the
|
||||||
documentation and/or other materials provided with the distribution.
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
- Neither the name of the Xiph.org Foundation nor the names of its
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
contributors may be used to endorse or promote products derived from
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
this software without specific prior written permission.
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef STACK_ALLOC_H
|
#ifndef STACK_ALLOC_H
|
||||||
#define STACK_ALLOC_H
|
#define STACK_ALLOC_H
|
||||||
|
|
||||||
#ifdef WIN32
|
#if (!defined (VAR_ARRAYS) && !defined (USE_ALLOCA))
|
||||||
# include <malloc.h>
|
#error "Dumb requires one of VAR_ARRAYS or USE_ALLOCA be defined to select the temporary allocation mode."
|
||||||
#else
|
#endif
|
||||||
# ifdef HAVE_ALLOCA_H
|
|
||||||
# include <alloca.h>
|
#ifdef USE_ALLOCA
|
||||||
|
# ifdef WIN32
|
||||||
|
# include <malloc.h>
|
||||||
# else
|
# else
|
||||||
# include <stdlib.h>
|
# ifdef HAVE_ALLOCA_H
|
||||||
|
# include <alloca.h>
|
||||||
|
# else
|
||||||
|
# include <stdlib.h>
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -82,32 +85,28 @@
|
||||||
* @param type Type of element
|
* @param type Type of element
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef ENABLE_VALGRIND
|
|
||||||
|
|
||||||
#include <valgrind/memcheck.h>
|
|
||||||
|
|
||||||
#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
|
|
||||||
|
|
||||||
#define PUSH(stack, size, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(type)),VALGRIND_MAKE_WRITABLE(stack, ((size)*sizeof(type))),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
|
|
||||||
|
|
||||||
#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(VAR_ARRAYS)
|
#if defined(VAR_ARRAYS)
|
||||||
#define VARDECL(var)
|
|
||||||
|
#define VARDECL(type, var)
|
||||||
#define ALLOC(var, size, type) type var[size]
|
#define ALLOC(var, size, type) type var[size]
|
||||||
|
#define SAVE_STACK
|
||||||
|
#define RESTORE_STACK
|
||||||
|
#define ALLOC_STACK
|
||||||
|
|
||||||
#elif defined(USE_ALLOCA)
|
#elif defined(USE_ALLOCA)
|
||||||
#define VARDECL(var) var
|
|
||||||
#define ALLOC(var, size, type) var = alloca(sizeof(type)*(size))
|
|
||||||
#else
|
|
||||||
#define VARDECL(var) var
|
|
||||||
#define ALLOC(var, size, type) var = PUSH(stack, size, type)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#define VARDECL(type, var) type *var
|
||||||
|
|
||||||
#endif
|
# ifdef WIN32
|
||||||
|
# define ALLOC(var, size, type) var = ((type*)_alloca(sizeof(type)*(size)))
|
||||||
|
# else
|
||||||
|
# define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#define SAVE_STACK
|
||||||
|
#define RESTORE_STACK
|
||||||
|
#define ALLOC_STACK
|
||||||
|
|
||||||
|
#endif /* VAR_ARRAYS */
|
||||||
|
|
||||||
|
#endif /* STACK_ALLOC_H */
|
||||||
|
|
|
@ -56,8 +56,10 @@ Carsten Bormann
|
||||||
Output: m lpc coefficients, excitation energy */
|
Output: m lpc coefficients, excitation energy */
|
||||||
|
|
||||||
float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
|
float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
|
||||||
double *aut=alloca(sizeof(*aut)*(m+1));
|
VARDECL(double, aut);
|
||||||
double *lpc=alloca(sizeof(*lpc)*(m));
|
VARDECL(double, lpc);
|
||||||
|
ALLOC(aut, m+1, double);
|
||||||
|
ALLOC(lpc, m, double);
|
||||||
double error;
|
double error;
|
||||||
double epsilon;
|
double epsilon;
|
||||||
int i,j;
|
int i,j;
|
||||||
|
|
|
@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#define inline __inline
|
#define inline __inline
|
||||||
|
|
||||||
#define USE_ALLOCA 1
|
#define VAR_ARRAYS 1
|
||||||
|
|
||||||
/* Comment out the next line for floating-point code */
|
/* Comment out the next line for floating-point code */
|
||||||
/*#define FIXED_POINT 1 */
|
/*#define FIXED_POINT 1 */
|
||||||
|
|
Loading…
Reference in New Issue