mirror of
https://github.com/nodejs/node.git
synced 2024-11-22 07:37:56 +01:00
d896f5befd
As discussed in https://github.com/nodejs/node/pull/45888, using a global `BuiltinLoader` instance is probably undesirable in a world in which embedders are able to create Node.js Environments with different sources and therefore mutually incompatible code caching properties. This PR makes it so that `BuiltinLoader` is no longer a global singleton and instead only shared between `Environment`s that have a direct relation to each other, and addresses a few thread safety issues along with that. PR-URL: https://github.com/nodejs/node/pull/45942 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
33 lines
875 B
C++
33 lines
875 B
C++
#include "node_builtins.h"
|
|
#include "node_threadsafe_cow-inl.h"
|
|
|
|
#include "gtest/gtest.h"
|
|
#include "node_test_fixture.h"
|
|
|
|
#include <string>
|
|
|
|
using node::builtins::BuiltinLoader;
|
|
using node::builtins::BuiltinSourceMap;
|
|
|
|
class PerProcessTest : public ::testing::Test {
|
|
protected:
|
|
static const BuiltinSourceMap get_sources_for_test() {
|
|
return *BuiltinLoader().source_.read();
|
|
}
|
|
};
|
|
|
|
namespace {
|
|
|
|
TEST_F(PerProcessTest, EmbeddedSources) {
|
|
const auto& sources = PerProcessTest::get_sources_for_test();
|
|
ASSERT_TRUE(std::any_of(sources.cbegin(), sources.cend(), [](auto p) {
|
|
return p.second.is_one_byte();
|
|
})) << "BuiltinLoader::source_ should have some 8bit items";
|
|
|
|
ASSERT_TRUE(std::any_of(sources.cbegin(), sources.cend(), [](auto p) {
|
|
return !p.second.is_one_byte();
|
|
})) << "BuiltinLoader::source_ should have some 16bit items";
|
|
}
|
|
|
|
} // end namespace
|