merge
diff --git a/unsupported/Eigen/src/SparseExtra/SimplicialCholesky.h b/unsupported/Eigen/src/SparseExtra/SimplicialCholesky.h index 302be1c..6af6407 100644 --- a/unsupported/Eigen/src/SparseExtra/SimplicialCholesky.h +++ b/unsupported/Eigen/src/SparseExtra/SimplicialCholesky.h
@@ -295,7 +295,7 @@ m_parent.resize(size); m_nonZerosPerCol.resize(size); - Index* tags = ei_aligned_stack_new(Index, size); + ei_declare_aligned_stack_constructed_variable(Index, tags, size, 0); // TODO allows to configure the permutation { @@ -338,9 +338,6 @@ } } - // release workspace - ei_aligned_stack_delete(Index, tags, size); - /* construct Lp index array from m_nonZerosPerCol column counts */ Index* Lp = m_matrix._outerIndexPtr(); Lp[0] = 0; @@ -369,9 +366,9 @@ Index* Li = m_matrix._innerIndexPtr(); Scalar* Lx = m_matrix._valuePtr(); - Scalar* y = ei_aligned_stack_new(Scalar, size); - Index* pattern = ei_aligned_stack_new(Index, size); - Index* tags = ei_aligned_stack_new(Index, size); + ei_declare_aligned_stack_constructed_variable(Scalar, y, size, 0); + ei_declare_aligned_stack_constructed_variable(Index, pattern, size, 0); + ei_declare_aligned_stack_constructed_variable(Index, tags, size, 0); SparseMatrix<Scalar,ColMajor,Index> ap(size,size); ap.template selfadjointView<Upper>() = a.template selfadjointView<UpLo>().twistedBy(m_Pinv); @@ -443,11 +440,6 @@ } } - // release workspace - ei_aligned_stack_delete(Scalar, y, size); - ei_aligned_stack_delete(Index, pattern, size); - ei_aligned_stack_delete(Index, tags, size); - m_info = ok ? Success : NumericalIssue; m_factorizationIsOk = true; }
diff --git a/unsupported/Eigen/src/SparseExtra/SparseLDLTLegacy.h b/unsupported/Eigen/src/SparseExtra/SparseLDLTLegacy.h index 14a89dc..14283c1 100644 --- a/unsupported/Eigen/src/SparseExtra/SparseLDLTLegacy.h +++ b/unsupported/Eigen/src/SparseExtra/SparseLDLTLegacy.h
@@ -245,7 +245,8 @@ m_matrix.resize(size, size); m_parent.resize(size); m_nonZerosPerCol.resize(size); - Index * tags = ei_aligned_stack_new(Index, size); + + ei_declare_aligned_stack_constructed_variable(Index, tags, size, 0); const Index* Ap = a._outerIndexPtr(); const Index* Ai = a._innerIndexPtr(); @@ -298,7 +299,6 @@ Lp[k+1] = Lp[k] + m_nonZerosPerCol[k]; m_matrix.resizeNonZeros(Lp[size]); - ei_aligned_stack_delete(Index, tags, size); } template<typename _MatrixType, typename Backend> @@ -317,9 +317,9 @@ Scalar* Lx = m_matrix._valuePtr(); m_diag.resize(size); - Scalar * y = ei_aligned_stack_new(Scalar, size); - Index * pattern = ei_aligned_stack_new(Index, size); - Index * tags = ei_aligned_stack_new(Index, size); + ei_declare_aligned_stack_constructed_variable(Scalar, y, size, 0); + ei_declare_aligned_stack_constructed_variable(Index, pattern, size, 0); + ei_declare_aligned_stack_constructed_variable(Index, tags, size, 0); Index* P = 0; Index* Pinv = 0; @@ -383,10 +383,6 @@ } } - ei_aligned_stack_delete(Scalar, y, size); - ei_aligned_stack_delete(Index, pattern, size); - ei_aligned_stack_delete(Index, tags, size); - return ok; /* success, diagonal of D is all nonzero */ }