1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Speed up GDScriptLanguage::finish

This commit is contained in:
Mikael Hermansson
2024-07-18 12:30:43 +02:00
parent 6b5825a0cb
commit 6852f9497c
2 changed files with 17 additions and 4 deletions

View File

@@ -1537,10 +1537,14 @@ void GDScript::clear(ClearData *p_clear_data) {
}
}
RBSet<GDScript *> must_clear_dependencies = get_must_clear_dependencies();
for (GDScript *E : must_clear_dependencies) {
clear_data->scripts.insert(E);
E->clear(clear_data);
// If we're in the process of shutting things down then every single script will be cleared
// anyway, so we can safely skip this very costly operation.
if (!GDScriptLanguage::singleton->finishing) {
RBSet<GDScript *> must_clear_dependencies = get_must_clear_dependencies();
for (GDScript *E : must_clear_dependencies) {
clear_data->scripts.insert(E);
E->clear(clear_data);
}
}
for (const KeyValue<StringName, GDScriptFunction *> &E : member_functions) {
@@ -2246,6 +2250,11 @@ String GDScriptLanguage::get_extension() const {
}
void GDScriptLanguage::finish() {
if (finishing) {
return;
}
finishing = true;
_call_stack.free();
// Clear the cache before parsing the script_list
@@ -2281,6 +2290,8 @@ void GDScriptLanguage::finish() {
}
script_list.clear();
function_list.clear();
finishing = false;
}
void GDScriptLanguage::profiling_start() {