improve Integer initialization
parent
e5f8b8851a
commit
1012e664ef
15
integer.cpp
15
integer.cpp
|
|
@ -50,8 +50,6 @@ bool AssignIntToInteger(const std::type_info &valueType, void *pInteger, const v
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char s_RunAtStartup = (g_pAssignIntToInteger = AssignIntToInteger, 0);
|
|
||||||
|
|
||||||
#ifdef SSE2_INTRINSICS_AVAILABLE
|
#ifdef SSE2_INTRINSICS_AVAILABLE
|
||||||
template <class T>
|
template <class T>
|
||||||
CPP_TYPENAME AllocatorBase<T>::pointer AlignedAllocator<T>::allocate(size_type n, const void *)
|
CPP_TYPENAME AllocatorBase<T>::pointer AlignedAllocator<T>::allocate(size_type n, const void *)
|
||||||
|
|
@ -1047,8 +1045,6 @@ static void SetPentiumFunctionPointers()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char s_RunAtStartupSetPentiumFunctionPointers = (SetPentiumFunctionPointers(), 0);
|
|
||||||
|
|
||||||
void DisableSSE2()
|
void DisableSSE2()
|
||||||
{
|
{
|
||||||
s_sse2Enabled = false;
|
s_sse2Enabled = false;
|
||||||
|
|
@ -2726,6 +2722,17 @@ void MultiplyByPower2Mod(word *R, const word *A, size_t k, const word *M, size_t
|
||||||
|
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
|
|
||||||
|
InitializeInteger::InitializeInteger()
|
||||||
|
{
|
||||||
|
if (!g_pAssignIntToInteger)
|
||||||
|
{
|
||||||
|
#ifdef CRYPTOPP_X86ASM_AVAILABLE
|
||||||
|
SetPentiumFunctionPointers();
|
||||||
|
#endif
|
||||||
|
g_pAssignIntToInteger = AssignIntToInteger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const unsigned int RoundupSizeTable[] = {2, 2, 2, 4, 4, 8, 8, 8, 8};
|
static const unsigned int RoundupSizeTable[] = {2, 2, 2, 4, 4, 8, 8, 8, 8};
|
||||||
|
|
||||||
static inline size_t RoundupSize(size_t n)
|
static inline size_t RoundupSize(size_t n)
|
||||||
|
|
|
||||||
|
|
@ -67,12 +67,17 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
void CRYPTOPP_DLL CRYPTOPP_API DisableSSE2();
|
void CRYPTOPP_DLL CRYPTOPP_API DisableSSE2();
|
||||||
|
|
||||||
|
struct InitializeInteger // used to initialize static variables
|
||||||
|
{
|
||||||
|
InitializeInteger();
|
||||||
|
};
|
||||||
|
|
||||||
//! multiple precision integer and basic arithmetics
|
//! multiple precision integer and basic arithmetics
|
||||||
/*! This class can represent positive and negative integers
|
/*! This class can represent positive and negative integers
|
||||||
with absolute value less than (256**sizeof(word)) ** (256**sizeof(int)).
|
with absolute value less than (256**sizeof(word)) ** (256**sizeof(int)).
|
||||||
\nosubgrouping
|
\nosubgrouping
|
||||||
*/
|
*/
|
||||||
class CRYPTOPP_DLL Integer : public ASN1Object
|
class CRYPTOPP_DLL Integer : private InitializeInteger, public ASN1Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! \name ENUMS, EXCEPTIONS, and TYPEDEFS
|
//! \name ENUMS, EXCEPTIONS, and TYPEDEFS
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue