◐ Shell
clean mode source ↗

src: avoid copy by using std::views::keys · nodejs/node@9e9ac3c

@@ -88,16 +88,6 @@ Local<String> BuiltinLoader::GetConfigString(Isolate* isolate) {

8888

return config_.ToStringChecked(isolate);

8989

}

909091-

std::vector<std::string_view> BuiltinLoader::GetBuiltinIds() const {

92-

std::vector<std::string_view> ids;

93-

auto source = source_.read();

94-

ids.reserve(source->size());

95-

for (auto const& x : *source) {

96-

ids.emplace_back(x.first);

97-

}

98-

return ids;

99-

}

100-10191

BuiltinLoader::BuiltinCategories BuiltinLoader::GetBuiltinCategories() const {

10292

BuiltinCategories builtin_categories;

10393

@@ -515,26 +505,25 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache(

515505

Local<Context> context,

516506

const std::vector<std::string>& eager_builtins,

517507

std::vector<CodeCacheInfo>* out) {

518-

std::vector<std::string_view> ids = GetBuiltinIds();

508+

auto ids = GetBuiltinIds();

519509

bool all_succeeded = true;

520-

std::string v8_tools_prefix = "internal/deps/v8/tools/";

521-

std::string primordial_prefix = "internal/per_context/";

522-

std::string bootstrap_prefix = "internal/bootstrap/";

523-

std::string main_prefix = "internal/main/";

524-

to_eager_compile_ = std::unordered_set<std::string>(eager_builtins.begin(),

525-

eager_builtins.end());

510+

constexpr std::string_view v8_tools_prefix = "internal/deps/v8/tools/";

511+

constexpr std::string_view primordial_prefix = "internal/per_context/";

512+

constexpr std::string_view bootstrap_prefix = "internal/bootstrap/";

513+

constexpr std::string_view main_prefix = "internal/main/";

514+

to_eager_compile_ =

515+

std::unordered_set(eager_builtins.begin(), eager_builtins.end());

526516527517

for (const auto& id : ids) {

528-

if (id.compare(0, v8_tools_prefix.size(), v8_tools_prefix) == 0) {

518+

if (id.starts_with(v8_tools_prefix)) {

529519

// No need to generate code cache for v8 scripts.

530520

continue;

531521

}

532522533523

// Eagerly compile primordials/boostrap/main scripts during code cache

534524

// generation.

535-

if (id.compare(0, primordial_prefix.size(), primordial_prefix) == 0 ||

536-

id.compare(0, bootstrap_prefix.size(), bootstrap_prefix) == 0 ||

537-

id.compare(0, main_prefix.size(), main_prefix) == 0) {

525+

if (id.starts_with(primordial_prefix) || id.starts_with(bootstrap_prefix) ||

526+

id.starts_with(main_prefix)) {

538527

to_eager_compile_.emplace(id);

539528

}

540529

@@ -554,8 +543,8 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache(

554543

}

555544556545

RwLock::ScopedReadLock lock(code_cache_->mutex);

557-

for (auto const& item : code_cache_->map) {

558-

out->push_back({item.first, item.second});

546+

for (const auto& [id, data] : code_cache_->map) {

547+

out->push_back({id, data});

559548

}

560549

return all_succeeded;

561550

}

@@ -564,8 +553,8 @@ void BuiltinLoader::RefreshCodeCache(const std::vector<CodeCacheInfo>& in) {

564553

RwLock::ScopedLock lock(code_cache_->mutex);

565554

code_cache_->map.reserve(in.size());

566555

DCHECK(code_cache_->map.empty());

567-

for (auto const& item : in) {

568-

auto result = code_cache_->map.emplace(item.id, item.data);

556+

for (auto const& [id, data] : in) {

557+

auto result = code_cache_->map.emplace(id, data);

569558

USE(result.second);

570559

DCHECK(result.second);

571560

}

@@ -665,7 +654,7 @@ void BuiltinLoader::BuiltinIdsGetter(Local<Name> property,

665654

Environment* env = Environment::GetCurrent(info);

666655

Isolate* isolate = env->isolate();

667656668-

std::vector<std::string_view> ids = env->builtin_loader()->GetBuiltinIds();

657+

auto ids = env->builtin_loader()->GetBuiltinIds();

669658

info.GetReturnValue().Set(

670659

ToV8Value(isolate->GetCurrentContext(), ids).ToLocalChecked());

671660

}