src: mark generated snapshot_data as const

This renders the mutex protecting it unnecessary, since mutexes
only need to protect concurrent accesses to mutable data.

PR-URL: https://github.com/nodejs/node/pull/45786
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
This commit is contained in:
Anna Henningsen 2022-12-10 18:16:24 +01:00 committed by GitHub
parent 2ec418984b
commit 94d23f5ec0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 7 deletions

View File

@ -32,8 +32,6 @@ class NODE_EXTERN_PRIVATE SnapshotBuilder {
v8::Isolate::CreateParams* params); v8::Isolate::CreateParams* params);
private: private:
// Used to synchronize access to the snapshot data
static Mutex snapshot_data_mutex_;
static const std::vector<intptr_t>& CollectExternalReferences(); static const std::vector<intptr_t>& CollectExternalReferences();
static std::unique_ptr<ExternalReferenceRegistry> registry_; static std::unique_ptr<ExternalReferenceRegistry> registry_;

View File

@ -978,7 +978,7 @@ static void WriteCodeCacheInitializer(std::ostream* ss, const std::string& id) {
*ss << " },\n"; *ss << " },\n";
} }
void FormatBlob(std::ostream& ss, SnapshotData* data) { void FormatBlob(std::ostream& ss, const SnapshotData* data) {
ss << R"(#include <cstddef> ss << R"(#include <cstddef>
#include "env.h" #include "env.h"
#include "node_snapshot_builder.h" #include "node_snapshot_builder.h"
@ -1004,7 +1004,7 @@ static const int v8_snapshot_blob_size = )"
WriteStaticCodeCacheData(&ss, item); WriteStaticCodeCacheData(&ss, item);
} }
ss << R"(SnapshotData snapshot_data { ss << R"(const SnapshotData snapshot_data {
// -- data_ownership begins -- // -- data_ownership begins --
SnapshotData::DataOwnership::kNotOwned, SnapshotData::DataOwnership::kNotOwned,
// -- data_ownership ends -- // -- data_ownership ends --
@ -1036,7 +1036,6 @@ static const int v8_snapshot_blob_size = )"
}; };
const SnapshotData* SnapshotBuilder::GetEmbeddedSnapshotData() { const SnapshotData* SnapshotBuilder::GetEmbeddedSnapshotData() {
Mutex::ScopedLock lock(snapshot_data_mutex_);
return &snapshot_data; return &snapshot_data;
} }
} // namespace node } // namespace node
@ -1053,8 +1052,6 @@ static void ResetContextSettingsBeforeSnapshot(Local<Context> context) {
context->AllowCodeGenerationFromStrings(true); context->AllowCodeGenerationFromStrings(true);
} }
Mutex SnapshotBuilder::snapshot_data_mutex_;
const std::vector<intptr_t>& SnapshotBuilder::CollectExternalReferences() { const std::vector<intptr_t>& SnapshotBuilder::CollectExternalReferences() {
static auto registry = std::make_unique<ExternalReferenceRegistry>(); static auto registry = std::make_unique<ExternalReferenceRegistry>();
return registry->external_references(); return registry->external_references();