diff options
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Core/util/Macros.h | 4 | ||||
-rw-r--r-- | Eigen/src/Core/util/Memory.h | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h index c95030524..274d59057 100644 --- a/Eigen/src/Core/util/Macros.h +++ b/Eigen/src/Core/util/Macros.h @@ -116,6 +116,10 @@ using Eigen::ei_cos; #define EIGEN_RESTRICT __restrict +#ifndef EIGEN_STACK_ALLOCATION_LIMIT +#define EIGEN_STACK_ALLOCATION_LIMIT 16000000 +#endif + #ifndef EIGEN_DEFAULT_IO_FORMAT #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat() #endif diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 63f9a07fc..b09e11bd4 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -143,11 +143,12 @@ inline static int ei_alignmentOffset(const Scalar* ptr, int maxOffset) * \endcode */ #ifdef __linux__ -# define ei_alloc_stack(TYPE,SIZE) ((sizeof(TYPE)*(SIZE)>16000000) ? new TYPE[SIZE] : (TYPE*)alloca(sizeof(TYPE)*(SIZE))) -# define ei_free_stack(PTR,TYPE,SIZE) if (sizeof(TYPE)*SIZE>16000000) delete[] PTR + #define ei_alloc_stack(TYPE,SIZE) ((sizeof(TYPE)*(SIZE)>EIGEN_STACK_ALLOCATION_LIMIT) ? \ + new TYPE[SIZE] : (TYPE*)alloca(sizeof(TYPE)*(SIZE))) + #define ei_free_stack(PTR,TYPE,SIZE) if (sizeof(TYPE)*SIZE>EIGEN_STACK_ALLOCATION_LIMIT) delete[] PTR #else -# define ei_alloc_stack(TYPE,SIZE) new TYPE[SIZE] -# define ei_free_stack(PTR,TYPE,SIZE) delete[] PTR + #define ei_alloc_stack(TYPE,SIZE) new TYPE[SIZE] + #define ei_free_stack(PTR,TYPE,SIZE) delete[] PTR #endif /** \class WithAlignedOperatorNew |