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

GDScript: Don't optimize division and modulo on debug

Since the validated operators don't have checks for division by zero,
use the regular evaluator in debug which has those checks.
This commit is contained in:
George Marques
2023-10-18 14:12:51 -03:00
parent 7f884b4e00
commit 08e3f30299

View File

@@ -662,6 +662,14 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
uint32_t op_signature = _code_ptr[ip + 5];
uint32_t actual_signature = (a->get_type() << 8) | (b->get_type());
#ifdef DEBUG_ENABLED
if (op == Variant::OP_DIVIDE || op == Variant::OP_MODULE) {
// Don't optimize division and modulo since there's not check for division by zero with validated calls.
op_signature = 0xFFFF;
_code_ptr[ip + 5] = op_signature;
}
#endif
// Check if this is the first run. If so, store the current signature for the optimized path.
if (unlikely(op_signature == 0)) {
static Mutex initializer_mutex;