refactor: use std::optional in MicrotasksScope (#43621)

avoid an unnecessary heap allocation/free
This commit is contained in:
Charles Kerr 2024-09-09 11:51:42 -05:00 коммит произвёл GitHub
Родитель e2fe8f50e2
Коммит 2844e346b9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
2 изменённых файлов: 3 добавлений и 4 удалений

Просмотреть файл

@ -16,8 +16,7 @@ MicrotasksScope::MicrotasksScope(v8::Isolate* isolate,
if (!ignore_browser_checkpoint) if (!ignore_browser_checkpoint)
v8::MicrotasksScope::PerformCheckpoint(isolate); v8::MicrotasksScope::PerformCheckpoint(isolate);
} else { } else {
v8_microtasks_scope_ = std::make_unique<v8::MicrotasksScope>( v8_microtasks_scope_.emplace(isolate, microtask_queue, scope_type);
isolate, microtask_queue, scope_type);
} }
} }

Просмотреть файл

@ -5,7 +5,7 @@
#ifndef ELECTRON_SHELL_COMMON_GIN_HELPER_MICROTASKS_SCOPE_H_ #ifndef ELECTRON_SHELL_COMMON_GIN_HELPER_MICROTASKS_SCOPE_H_
#define ELECTRON_SHELL_COMMON_GIN_HELPER_MICROTASKS_SCOPE_H_ #define ELECTRON_SHELL_COMMON_GIN_HELPER_MICROTASKS_SCOPE_H_
#include <memory> #include <optional>
#include "v8/include/v8-forward.h" #include "v8/include/v8-forward.h"
#include "v8/include/v8-microtask-queue.h" #include "v8/include/v8-microtask-queue.h"
@ -27,7 +27,7 @@ class MicrotasksScope {
MicrotasksScope& operator=(const MicrotasksScope&) = delete; MicrotasksScope& operator=(const MicrotasksScope&) = delete;
private: private:
std::unique_ptr<v8::MicrotasksScope> v8_microtasks_scope_; std::optional<v8::MicrotasksScope> v8_microtasks_scope_;
}; };
} // namespace gin_helper } // namespace gin_helper