[Memory] Removed redundant BaseHeap::IsGuestPhysicalHeap

This commit is contained in:
Gliniak 2020-09-16 20:31:53 +02:00 committed by Rick Gibbed
parent 26b0aa0cc4
commit a6868d1f8a
3 changed files with 7 additions and 11 deletions

View File

@ -122,14 +122,14 @@ X_STATUS XFile::Read(uint32_t buffer_guest_address, uint32_t buffer_length,
const xe::BaseHeap* buffer_end_heap = const xe::BaseHeap* buffer_end_heap =
memory()->LookupHeap(buffer_guest_high_address); memory()->LookupHeap(buffer_guest_high_address);
if (!buffer_start_heap || !buffer_end_heap || if (!buffer_start_heap || !buffer_end_heap ||
buffer_start_heap->IsGuestPhysicalHeap() != (buffer_start_heap->heap_type() == HeapType::kGuestPhysical) !=
buffer_end_heap->IsGuestPhysicalHeap() || (buffer_end_heap->heap_type() == HeapType::kGuestPhysical) ||
(buffer_start_heap->IsGuestPhysicalHeap() && (buffer_start_heap->heap_type() == HeapType::kGuestPhysical &&
buffer_start_heap != buffer_end_heap)) { buffer_start_heap != buffer_end_heap)) {
result = X_STATUS_ACCESS_VIOLATION; result = X_STATUS_ACCESS_VIOLATION;
} else { } else {
xe::PhysicalHeap* buffer_physical_heap = xe::PhysicalHeap* buffer_physical_heap =
buffer_start_heap->IsGuestPhysicalHeap() buffer_start_heap->heap_type() == HeapType::kGuestPhysical
? static_cast<xe::PhysicalHeap*>(buffer_start_heap) ? static_cast<xe::PhysicalHeap*>(buffer_start_heap)
: nullptr; : nullptr;
if (buffer_physical_heap && if (buffer_physical_heap &&

View File

@ -375,7 +375,7 @@ uint32_t Memory::HostToGuestVirtualThunk(const void* context,
uint32_t Memory::GetPhysicalAddress(uint32_t address) const { uint32_t Memory::GetPhysicalAddress(uint32_t address) const {
const BaseHeap* heap = LookupHeap(address); const BaseHeap* heap = LookupHeap(address);
if (!heap || !heap->IsGuestPhysicalHeap()) { if (!heap || heap->heap_type() != HeapType::kGuestPhysical) {
return UINT32_MAX; return UINT32_MAX;
} }
return static_cast<const PhysicalHeap*>(heap)->GetPhysicalAddress(address); return static_cast<const PhysicalHeap*>(heap)->GetPhysicalAddress(address);
@ -451,7 +451,7 @@ bool Memory::AccessViolationCallback(
} }
uint32_t virtual_address = HostToGuestVirtual(host_address); uint32_t virtual_address = HostToGuestVirtual(host_address);
BaseHeap* heap = LookupHeap(virtual_address); BaseHeap* heap = LookupHeap(virtual_address);
if (!heap->IsGuestPhysicalHeap()) { if (heap->heap_type() != HeapType::kGuestPhysical) {
return false; return false;
} }
@ -477,7 +477,7 @@ bool Memory::TriggerPhysicalMemoryCallbacks(
uint32_t virtual_address, uint32_t length, bool is_write, uint32_t virtual_address, uint32_t length, bool is_write,
bool unwatch_exact_range, bool unprotect) { bool unwatch_exact_range, bool unprotect) {
BaseHeap* heap = LookupHeap(virtual_address); BaseHeap* heap = LookupHeap(virtual_address);
if (heap->IsGuestPhysicalHeap()) { if (heap->heap_type() == HeapType::kGuestPhysical) {
auto physical_heap = static_cast<PhysicalHeap*>(heap); auto physical_heap = static_cast<PhysicalHeap*>(heap);
return physical_heap->TriggerCallbacks(std::move(global_lock_locked_once), return physical_heap->TriggerCallbacks(std::move(global_lock_locked_once),
virtual_address, length, is_write, virtual_address, length, is_write,

View File

@ -187,9 +187,6 @@ class BaseHeap {
xe::memory::PageAccess QueryRangeAccess(uint32_t low_address, xe::memory::PageAccess QueryRangeAccess(uint32_t low_address,
uint32_t high_address); uint32_t high_address);
// Whether the heap is a guest virtual memory mapping of the physical memory.
virtual bool IsGuestPhysicalHeap() const { return false; }
bool Save(ByteStream* stream); bool Save(ByteStream* stream);
bool Restore(ByteStream* stream); bool Restore(ByteStream* stream);
@ -264,7 +261,6 @@ class PhysicalHeap : public BaseHeap {
uint32_t virtual_address, uint32_t length, bool is_write, uint32_t virtual_address, uint32_t length, bool is_write,
bool unwatch_exact_range, bool unprotect = true); bool unwatch_exact_range, bool unprotect = true);
bool IsGuestPhysicalHeap() const override { return true; }
uint32_t GetPhysicalAddress(uint32_t address) const; uint32_t GetPhysicalAddress(uint32_t address) const;
protected: protected: