kern: avoid constexpr init for many objects (avoids unnecessary memory clear) (#1668)

This commit is contained in:
SciresM 2021-10-23 15:25:20 -07:00 committed by GitHub
parent 20716cb3de
commit 36e4914be8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 489 additions and 339 deletions

View file

@ -973,7 +973,7 @@ namespace ams::kern {
/* Get the request and client thread. */
KSessionRequest *request;
KScopedAutoObject<KThread> client_thread;
KThread *client_thread;
{
KScopedSchedulerLock sl;
@ -991,9 +991,13 @@ namespace ams::kern {
m_request_list.pop_front();
/* Get the thread for the request. */
client_thread = KScopedAutoObject<KThread>(request->GetThread());
R_UNLESS(client_thread.IsNotNull(), svc::ResultSessionClosed());
client_thread = request->GetThread();
R_UNLESS(client_thread != nullptr, svc::ResultSessionClosed());
/* Open the client thread. */
client_thread->Open();
}
ON_SCOPE_EXIT { client_thread->Close(); };
/* Set the request as our current. */
m_current_request = request;
@ -1004,7 +1008,7 @@ namespace ams::kern {
bool recv_list_broken = false;
/* Receive the message. */
Result result = ReceiveMessage(recv_list_broken, server_message, server_buffer_size, server_message_paddr, *client_thread.GetPointerUnsafe(), client_message, client_buffer_size, this, request);
Result result = ReceiveMessage(recv_list_broken, server_message, server_buffer_size, server_message_paddr, *client_thread, client_message, client_buffer_size, this, request);
/* Handle cleanup on receive failure. */
if (R_FAILED(result)) {