Lines Matching refs:native_module

242     std::shared_ptr<NativeModule> native_module, bool error) {
243 DCHECK_NOT_NULL(native_module);
244 if (native_module->module()->origin != kWasmOrigin) return native_module;
245 base::Vector<const uint8_t> wire_bytes = native_module->wire_bytes();
247 size_t prefix_hash = PrefixHash(native_module->wire_bytes());
267 key, base::Optional<std::weak_ptr<NativeModule>>(native_module));
272 return native_module;
275 void NativeModuleCache::Erase(NativeModule* native_module) {
276 if (native_module->module()->origin != kWasmOrigin) return;
278 if (native_module->wire_bytes().empty()) return;
280 size_t prefix_hash = PrefixHash(native_module->wire_bytes());
281 map_.erase(Key{prefix_hash, native_module->wire_bytes()});
420 explicit NativeModuleInfo(std::weak_ptr<NativeModule> native_module)
421 : weak_ptr(std::move(native_module)) {}
515 std::shared_ptr<NativeModule> native_module = CompileToNativeModule(
518 if (!native_module) return {};
520 return AsmWasmData::New(isolate, std::move(native_module), export_wrappers,
527 std::shared_ptr<NativeModule> native_module =
532 isolate, std::move(native_module), script, export_wrappers);
555 std::shared_ptr<NativeModule> native_module = CompileToNativeModule(
558 if (!native_module) return {};
565 DCHECK_EQ(1, isolates_[isolate]->native_modules.count(native_module.get()));
566 DCHECK_EQ(1, native_modules_.count(native_module.get()));
567 DCHECK_EQ(1, native_modules_[native_module.get()]->isolates.count(isolate));
573 GetOrCreateScript(isolate, native_module, kNoSourceUrl);
575 native_module->LogWasmCodes(isolate, *script);
582 isolate, std::move(native_module), script, export_wrappers);
701 void WasmEngine::CompileFunction(Isolate* isolate, NativeModule* native_module,
706 isolate, native_module, &detected,
707 &native_module->module()->functions[function_index], tier);
716 for (auto* native_module : isolates_[isolate]->native_modules) {
717 native_module->SetTieringState(kTieredDown);
718 DCHECK_EQ(1, native_modules_.count(native_module));
719 if (auto shared_ptr = native_modules_[native_module]->weak_ptr.lock()) {
724 for (auto& native_module : native_modules) {
725 native_module->RecompileForTiering();
737 auto test_can_tier_up = [this](NativeModule* native_module) {
738 DCHECK_EQ(1, native_modules_.count(native_module));
739 for (auto* isolate : native_modules_[native_module]->isolates) {
745 for (auto* native_module : isolates_[isolate]->native_modules) {
746 DCHECK_EQ(1, native_modules_.count(native_module));
747 auto shared_ptr = native_modules_[native_module]->weak_ptr.lock();
749 if (!native_module->IsTieredDown()) continue;
752 bool tier_up = test_can_tier_up(native_module);
753 if (tier_up) native_module->SetTieringState(kTieredUp);
758 auto& native_module = entry.first;
761 if (native_module->HasDebugInfo()) {
762 native_module->GetDebugInfo()->RemoveIsolate(isolate);
764 if (tier_up) native_module->RecompileForTiering();
775 std::shared_ptr<NativeModule> native_module,
783 base::Vector<const uint8_t> wire_bytes = native_module->wire_bytes();
789 const WasmModule* module = native_module->module();
845 size_t code_size_estimate = native_module->committed_code_space();
851 std::move(native_module));
863 NativeModule* native_module = shared_native_module.get();
864 ModuleWireBytes wire_bytes(native_module->wire_bytes());
868 CompileJsToWasmWrappers(isolate, native_module->module(), &export_wrappers);
874 isolates_[isolate]->native_modules.insert(native_module);
875 DCHECK_EQ(1, native_modules_.count(native_module));
876 native_modules_[native_module]->isolates.insert(isolate);
987 for (auto* native_module : isolate_info->native_modules) {
988 DCHECK_EQ(1, native_modules_.count(native_module));
989 modules_in_isolate.emplace_back(native_modules_[native_module]->weak_ptr);
1037 for (auto* native_module : engine->isolates_[isolate]->native_modules) {
1038 native_module->SampleCodeSize(counters, NativeModule::kSampling);
1062 for (auto* native_module : info->native_modules) {
1063 DCHECK_EQ(1, native_modules_.count(native_module));
1064 DCHECK_EQ(1, native_modules_[native_module]->isolates.count(isolate));
1065 auto* module = native_modules_[native_module].get();
1072 if (native_module->HasDebugInfo()) {
1073 native_module->GetDebugInfo()->RemoveIsolate(isolate);
1092 NativeModule* native_module = code_vec[0]->native_module();
1093 DCHECK_EQ(1, native_modules_.count(native_module));
1094 for (Isolate* isolate : native_modules_[native_module]->isolates) {
1108 DCHECK_EQ(native_module, code->native_module());
1112 auto script_it = info->scripts.find(native_module);
1166 std::shared_ptr<NativeModule> native_module =
1171 native_module.get(), std::make_unique<NativeModuleInfo>(native_module)));
1175 isolate_info->native_modules.insert(native_module.get());
1177 native_module->SetTieringState(kTieredDown);
1193 return native_module;
1201 std::shared_ptr<NativeModule> native_module =
1204 if (native_module) {
1207 auto& native_module_info = native_modules_[native_module.get()];
1209 native_module_info = std::make_unique<NativeModuleInfo>(native_module);
1212 isolates_[isolate]->native_modules.insert(native_module.get());
1214 native_module->SetTieringState(kTieredDown);
1219 if (recompile_module) native_module->RecompileForTiering();
1220 return native_module;
1224 bool error, std::shared_ptr<NativeModule>* native_module,
1226 // Pass {native_module} by value here to keep it alive until at least after
1229 auto prev = native_module->get();
1230 *native_module = native_module_cache_.Update(*native_module, error);
1232 if (prev == native_module->get()) return true;
1237 DCHECK_EQ(1, native_modules_.count(native_module->get()));
1238 native_modules_[native_module->get()]->isolates.insert(isolate);
1240 isolates_[isolate]->native_modules.insert(native_module->get());
1242 native_module->get()->SetTieringState(kTieredDown);
1247 if (recompile_module) native_module->get()->RecompileForTiering();
1267 void WasmEngine::FreeNativeModule(NativeModule* native_module) {
1269 auto module = native_modules_.find(native_module);
1274 DCHECK_EQ(1, info->native_modules.count(native_module));
1275 info->native_modules.erase(native_module);
1276 info->scripts.erase(native_module);
1281 auto part_of_native_module = [native_module](WasmCode* code) {
1282 return code->native_module() == native_module;
1305 if ((*it)->native_module() == native_module) {
1312 native_module, current_gc_info_->dead_code.size());
1314 native_module_cache_.Erase(native_module);
1322 std::weak_ptr<NativeModule> native_module)
1325 native_module_(std::move(native_module)) {}
1328 if (std::shared_ptr<NativeModule> native_module = native_module_.lock()) {
1329 native_module->SampleCodeSize(isolate_->counters(),
1341 const std::shared_ptr<NativeModule>& native_module) {
1343 DCHECK_EQ(1, native_modules_.count(native_module.get()));
1344 for (Isolate* isolate : native_modules_[native_module.get()]->isolates) {
1348 std::make_unique<SampleTopTierCodeSizeTask>(isolate, native_module));
1420 auto it = native_modules_.find(code->native_module());
1465 NativeModule* native_module = dead_code_entry.first;
1467 DCHECK_EQ(1, native_modules_.count(native_module));
1468 auto* info = native_modules_[native_module].get();
1470 code_vec.size() == 1 ? "" : "s", native_module);
1475 native_module->FreeCode(base::VectorOf(code_vec));
1480 Isolate* isolate, const std::shared_ptr<NativeModule>& native_module,
1486 auto it = scripts.find(native_module.get());
1497 auto script = CreateWasmScript(isolate, native_module, source_url);
1502 DCHECK_EQ(0, scripts.count(native_module.get()));
1503 scripts.emplace(native_module.get(), WeakScriptHandle(script));
1618 DCHECK_EQ(1, native_modules_.count(code->native_module()));
1619 auto* native_module_info = native_modules_[code->native_module()].get();
1625 dead_code[code->native_module()].push_back(code);