mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 21:00:17 +02:00
Merge pull request #4964 from lioncash/vma
SyscallsVMATracking: Make list management internally linked
This commit is contained in:
2 files changed
+6
-11
No files matched your search
@@ -35,7 +35,7 @@ auto VMAFlags::fromFlags(int Flags) -> VMAFlags {
|
||||
}
|
||||
|
||||
/// List Operations ///
|
||||
inline void VMATracking::ListCheckVMALinks(VMAEntry* VMA) {
|
||||
static inline void ListCheckVMALinks(const VMAEntry* VMA) {
|
||||
if (VMA) {
|
||||
LOGMAN_THROW_A_FMT(VMA->ResourceNextVMA != VMA, "VMA tracking error");
|
||||
LOGMAN_THROW_A_FMT(VMA->ResourcePrevVMA != VMA, "VMA tracking error");
|
||||
@@ -44,7 +44,7 @@ inline void VMATracking::ListCheckVMALinks(VMAEntry* VMA) {
|
||||
|
||||
// Removes a VMA from corresponding MappedResource list
|
||||
// Returns true if list is empty
|
||||
bool VMATracking::ListRemove(VMAEntry* VMA) {
|
||||
static bool ListRemove(VMAEntry* VMA) {
|
||||
LOGMAN_THROW_A_FMT(VMA->Resource != nullptr, "VMA tracking error");
|
||||
|
||||
// if it has prev, make prev to next
|
||||
@@ -78,7 +78,7 @@ bool VMATracking::ListRemove(VMAEntry* VMA) {
|
||||
|
||||
// Replaces a VMA in corresponding MappedResource list
|
||||
// Requires NewVMA->Resource, NewVMA->ResourcePrevVMA and NewVMA->ResourceNextVMA to be already setup
|
||||
void VMATracking::ListReplace(VMAEntry* VMA, VMAEntry* NewVMA) {
|
||||
static void ListReplace(VMAEntry* VMA, VMAEntry* NewVMA) {
|
||||
LOGMAN_THROW_A_FMT(VMA->Resource != nullptr, "VMA tracking error");
|
||||
|
||||
LOGMAN_THROW_A_FMT(VMA->Resource == NewVMA->Resource, "VMA tracking error");
|
||||
@@ -107,7 +107,7 @@ void VMATracking::ListReplace(VMAEntry* VMA, VMAEntry* NewVMA) {
|
||||
|
||||
// Inserts a VMA in corresponding MappedResource list
|
||||
// Requires NewVMA->Resource, NewVMA->ResourcePrevVMA and NewVMA->ResourceNextVMA to be already setup
|
||||
void VMATracking::ListInsertAfter(VMAEntry* AfterVMA, VMAEntry* NewVMA) {
|
||||
static void ListInsertAfter(VMAEntry* AfterVMA, VMAEntry* NewVMA) {
|
||||
LOGMAN_THROW_A_FMT(NewVMA->Resource != nullptr, "VMA tracking error");
|
||||
|
||||
LOGMAN_THROW_A_FMT(AfterVMA->Resource == NewVMA->Resource, "VMA tracking error");
|
||||
@@ -128,7 +128,7 @@ void VMATracking::ListInsertAfter(VMAEntry* AfterVMA, VMAEntry* NewVMA) {
|
||||
|
||||
// Prepends a VMA
|
||||
// Requires NewVMA->Resource, NewVMA->ResourcePrevVMA and NewVMA->ResourceNextVMA to be already setup
|
||||
void VMATracking::ListPrepend(MappedResource* Resource, VMAEntry* NewVMA) {
|
||||
static void ListPrepend(MappedResource* Resource, VMAEntry* NewVMA) {
|
||||
LOGMAN_THROW_A_FMT(Resource != nullptr, "VMA tracking error");
|
||||
|
||||
LOGMAN_THROW_A_FMT(NewVMA->Resource == Resource, "VMA tracking error");
|
||||
|
||||
@@ -115,13 +115,8 @@ struct VMATracking {
|
||||
inline auto InsertMappedResource(const MRID& mrid, MappedResource Resource) {
|
||||
return MappedResources.emplace(mrid, std::move(Resource));
|
||||
}
|
||||
private:
|
||||
bool ListRemove(VMAEntry* Mapping);
|
||||
void ListReplace(VMAEntry* Mapping, VMAEntry* NewMapping);
|
||||
void ListInsertAfter(VMAEntry* Mapping, VMAEntry* NewMapping);
|
||||
void ListPrepend(MappedResource* Resource, VMAEntry* NewVMA);
|
||||
static void ListCheckVMALinks(VMAEntry* VMA);
|
||||
|
||||
private:
|
||||
MappedResource::ContainerType MappedResources;
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user