mirror of https://github.com/PCSX2/pcsx2.git
Common: Move MemcpyFast routines to General.h
And add a trivially-copyable check, so nobody accidentially uses them with non-POD types.
This commit is contained in:
parent
9613b43d50
commit
03242a2953
|
@ -80,7 +80,6 @@ target_sources(common PRIVATE
|
||||||
LRUCache.h
|
LRUCache.h
|
||||||
HeapArray.h
|
HeapArray.h
|
||||||
HTTPDownloader.h
|
HTTPDownloader.h
|
||||||
MemcpyFast.h
|
|
||||||
MemorySettingsInterface.h
|
MemorySettingsInterface.h
|
||||||
MemsetFast.inl
|
MemsetFast.inl
|
||||||
MD5Digest.h
|
MD5Digest.h
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* PCSX2 - PS2 Emulator for PCs
|
/* PCSX2 - PS2 Emulator for PCs
|
||||||
* Copyright (C) 2002-2010 PCSX2 Dev Team
|
* Copyright (C) 2002-2023 PCSX2 Dev Team
|
||||||
*
|
*
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
||||||
* of the GNU Lesser General Public License as published by the Free Software Found-
|
* of the GNU Lesser General Public License as published by the Free Software Found-
|
||||||
|
@ -15,11 +15,13 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "common/Pcsx2Defs.h"
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "common/Pcsx2Defs.h"
|
#include <cstring>
|
||||||
|
|
||||||
// This macro is actually useful for about any and every possible application of C++
|
// This macro is actually useful for about any and every possible application of C++
|
||||||
// equality operators.
|
// equality operators.
|
||||||
|
@ -196,6 +198,24 @@ private:
|
||||||
#define SafeSysMunmap(ptr, size) \
|
#define SafeSysMunmap(ptr, size) \
|
||||||
((void)(HostSys::Munmap(ptr, size), (ptr) = 0))
|
((void)(HostSys::Munmap(ptr, size), (ptr) = 0))
|
||||||
|
|
||||||
|
// This method can clear any object-like entity -- which is anything that is not a pointer.
|
||||||
|
// Structures, static arrays, etc. No need to include sizeof() crap, this does it automatically
|
||||||
|
// for you!
|
||||||
|
template <typename T>
|
||||||
|
static __fi void memzero(T& object)
|
||||||
|
{
|
||||||
|
static_assert(std::is_trivially_copyable_v<T>);
|
||||||
|
std::memset(&object, 0, sizeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method clears an object with the given 8 bit value.
|
||||||
|
template <u8 data, typename T>
|
||||||
|
static __fi void memset8(T& object)
|
||||||
|
{
|
||||||
|
static_assert(std::is_trivially_copyable_v<T>);
|
||||||
|
std::memset(&object, data, sizeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
extern u64 GetTickFrequency();
|
extern u64 GetTickFrequency();
|
||||||
extern u64 GetCPUTicks();
|
extern u64 GetCPUTicks();
|
||||||
extern u64 GetPhysicalMemory();
|
extern u64 GetPhysicalMemory();
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
/* PCSX2 - PS2 Emulator for PCs
|
|
||||||
* Copyright (C) 2002-2010 PCSX2 Dev Team
|
|
||||||
*
|
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
|
||||||
* of the GNU Lesser General Public License as published by the Free Software Found-
|
|
||||||
* ation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE. See the GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along with PCSX2.
|
|
||||||
* If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <cstring> // memset
|
|
||||||
#include "common/Pcsx2Types.h"
|
|
||||||
#include "common/Pcsx2Defs.h"
|
|
||||||
|
|
||||||
// This method can clear any object-like entity -- which is anything that is not a pointer.
|
|
||||||
// Structures, static arrays, etc. No need to include sizeof() crap, this does it automatically
|
|
||||||
// for you!
|
|
||||||
template <typename T>
|
|
||||||
static __fi void memzero(T& object)
|
|
||||||
{
|
|
||||||
memset(&object, 0, sizeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
// This method clears an object with the given 8 bit value.
|
|
||||||
template <u8 data, typename T>
|
|
||||||
static __fi void memset8(T& object)
|
|
||||||
{
|
|
||||||
memset(&object, data, sizeof(T));
|
|
||||||
}
|
|
|
@ -134,7 +134,6 @@
|
||||||
<ClInclude Include="Exceptions.h" />
|
<ClInclude Include="Exceptions.h" />
|
||||||
<ClInclude Include="General.h" />
|
<ClInclude Include="General.h" />
|
||||||
<ClInclude Include="MathUtils.h" />
|
<ClInclude Include="MathUtils.h" />
|
||||||
<ClInclude Include="MemcpyFast.h" />
|
|
||||||
<ClInclude Include="Path.h" />
|
<ClInclude Include="Path.h" />
|
||||||
<ClInclude Include="PrecompiledHeader.h" />
|
<ClInclude Include="PrecompiledHeader.h" />
|
||||||
<ClInclude Include="ReadbackSpinManager.h" />
|
<ClInclude Include="ReadbackSpinManager.h" />
|
||||||
|
|
|
@ -201,9 +201,6 @@
|
||||||
<ClInclude Include="MathUtils.h">
|
<ClInclude Include="MathUtils.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="MemcpyFast.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Path.h">
|
<ClInclude Include="Path.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
* If not, see <http://www.gnu.org/licenses/>.
|
* If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common/MemcpyFast.h"
|
|
||||||
#include "common/General.h"
|
#include "common/General.h"
|
||||||
#include "common/emitter/tools.h"
|
#include "common/emitter/tools.h"
|
||||||
#include "common/emitter/internal.h"
|
#include "common/emitter/internal.h"
|
||||||
|
|
|
@ -66,7 +66,6 @@
|
||||||
#include "PCSX2Base.h"
|
#include "PCSX2Base.h"
|
||||||
|
|
||||||
#include "common/Console.h"
|
#include "common/Console.h"
|
||||||
#include "common/MemcpyFast.h"
|
|
||||||
#include "common/General.h"
|
#include "common/General.h"
|
||||||
#include "common/emitter/tools.h"
|
#include "common/emitter/tools.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue