aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core
diff options
context:
space:
mode:
authorGravatar Eugene Zhulenev <ezhulenev@google.com>2019-10-29 11:25:24 -0700
committerGravatar Eugene Zhulenev <ezhulenev@google.com>2019-10-29 11:25:24 -0700
commite7ed4bd388be80db9cc5689e623fbdd9e5cfdf7b (patch)
treeeeb905e8f418f9d7f5bbde7ebeced53111bc1c89 /Eigen/src/Core
parentfbc0a9a3ec19bbe9106754ca4e4d3f382ce50530 (diff)
Remove internal::smart_copy and replace with std::copy
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r--Eigen/src/Core/DenseStorage.h6
-rw-r--r--Eigen/src/Core/util/Memory.h25
2 files changed, 3 insertions, 28 deletions
diff --git a/Eigen/src/Core/DenseStorage.h b/Eigen/src/Core/DenseStorage.h
index a8bb8a624..e8a7f65ed 100644
--- a/Eigen/src/Core/DenseStorage.h
+++ b/Eigen/src/Core/DenseStorage.h
@@ -369,7 +369,7 @@ template<typename T, int _Options> class DenseStorage<T, Dynamic, Dynamic, Dynam
, m_cols(other.m_cols)
{
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_rows*m_cols)
- internal::smart_copy(other.m_data, other.m_data+other.m_rows*other.m_cols, m_data);
+ std::copy(other.m_data, other.m_data+other.m_rows*other.m_cols, m_data);
}
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
{
@@ -452,7 +452,7 @@ template<typename T, int _Rows, int _Options> class DenseStorage<T, Dynamic, _Ro
, m_cols(other.m_cols)
{
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_cols*_Rows)
- internal::smart_copy(other.m_data, other.m_data+_Rows*m_cols, m_data);
+ std::copy(other.m_data, other.m_data+_Rows*m_cols, m_data);
}
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
{
@@ -528,7 +528,7 @@ template<typename T, int _Cols, int _Options> class DenseStorage<T, Dynamic, Dyn
, m_rows(other.m_rows)
{
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_rows*_Cols)
- internal::smart_copy(other.m_data, other.m_data+other.m_rows*_Cols, m_data);
+ std::copy(other.m_data, other.m_data+other.m_rows*_Cols, m_data);
}
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
{
diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h
index 1b12544d2..d0622d0b4 100644
--- a/Eigen/src/Core/util/Memory.h
+++ b/Eigen/src/Core/util/Memory.h
@@ -507,31 +507,6 @@ inline Index first_multiple(Index size, Index base)
return ((size+base-1)/base)*base;
}
-// std::copy is much slower than memcpy, so let's introduce a smart_copy which
-// use memcpy on trivial types, i.e., on types that does not require an initialization ctor.
-template<typename T, bool UseMemcpy> struct smart_copy_helper;
-
-template<typename T> EIGEN_DEVICE_FUNC void smart_copy(const T* start, const T* end, T* target)
-{
- smart_copy_helper<T,!NumTraits<T>::RequireInitialization>::run(start, end, target);
-}
-
-template<typename T> struct smart_copy_helper<T,true> {
- EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T* target)
- {
- IntPtr size = IntPtr(end)-IntPtr(start);
- if(size==0) return;
- eigen_internal_assert(start!=0 && end!=0 && target!=0);
- EIGEN_USING_STD(memcpy)
- memcpy(target, start, size);
- }
-};
-
-template<typename T> struct smart_copy_helper<T,false> {
- EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T* target)
- { std::copy(start, end, target); }
-};
-
// intelligent memmove. falls back to std::memmove for POD types, uses std::copy otherwise.
template<typename T, bool UseMemmove> struct smart_memmove_helper;