diff --git a/modules/gdscript/gdscript_byte_codegen.cpp b/modules/gdscript/gdscript_byte_codegen.cpp index 7a6fcc92a0..1b5da0eac1 100644 --- a/modules/gdscript/gdscript_byte_codegen.cpp +++ b/modules/gdscript/gdscript_byte_codegen.cpp @@ -189,7 +189,7 @@ GDScriptFunction *GDScriptByteCodeGenerator::write_end() { opcodes.write[temporaries[i].bytecode_indices[j]] = stack_index | (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS); } if (temporaries[i].type != Variant::NIL) { - function->temporary_slots[stack_index] = temporaries[i].type; + function->temporary_slots.push_back(Pair(stack_index, temporaries[i].type)); } } diff --git a/modules/gdscript/gdscript_function.h b/modules/gdscript/gdscript_function.h index ee6f2515a9..8171a0f125 100644 --- a/modules/gdscript/gdscript_function.h +++ b/modules/gdscript/gdscript_function.h @@ -360,7 +360,7 @@ private: SelfList function_list{ this }; mutable Variant nil; - HashMap temporary_slots; + TightLocalVector> temporary_slots; List stack_debug; Vector code; diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp index 54c7da8463..6b8b0b6c2a 100644 --- a/modules/gdscript/gdscript_vm.cpp +++ b/modules/gdscript/gdscript_vm.cpp @@ -648,8 +648,8 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a instruction_args = nullptr; } - for (const KeyValue &E : temporary_slots) { - type_init_function_table[E.value](&stack[E.key]); + for (const Pair &E : temporary_slots) { + type_init_function_table[E.second](&stack[E.first]); } }