[vm] Fail describing error if VMO operations fail for a reason other than no memory.

Cf. 78732b243e

TEST=remove VmexResource
Change-Id: I05604f34c37ad50e42d3adfa9d9d6ac1feb22cac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/330940
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
This commit is contained in:
Ryan Macnak 2023-10-17 20:32:52 +00:00 committed by Commit Queue
parent aa893870df
commit 0685b34c88

View file

@ -168,10 +168,13 @@ VirtualMemory* VirtualMemory::AllocateAligned(intptr_t size,
#endif // defined(DART_COMPRESSED_POINTERS)
zx_handle_t vmo = ZX_HANDLE_INVALID;
zx_status_t status = zx_vmo_create(size, 0u, &vmo);
if (status != ZX_OK) {
if (status == ZX_ERR_NO_MEMORY) {
LOG_ERR("zx_vmo_create(0x%lx) failed: %s\n", size,
zx_status_get_string(status));
return nullptr;
} else if (status != ZX_OK) {
FATAL("zx_vmo_create(0x%lx) failed: %s\n", size,
zx_status_get_string(status));
}
if (name != nullptr) {
@ -182,11 +185,14 @@ VirtualMemory* VirtualMemory::AllocateAligned(intptr_t size,
// Add ZX_RIGHT_EXECUTE permission to VMO, so it can be mapped
// into memory as executable (now or later).
status = zx_vmo_replace_as_executable(vmo, vmex_resource_, &vmo);
if (status != ZX_OK) {
if (status == ZX_ERR_NO_MEMORY) {
LOG_ERR("zx_vmo_replace_as_executable() failed: %s\n",
zx_status_get_string(status));
zx_handle_close(vmo);
return nullptr;
} else if (status != ZX_OK) {
FATAL("zx_vmo_replace_as_executable() failed: %s\n",
zx_status_get_string(status));
}
}