mirror of
https://github.com/godotengine/godot-visual-script.git
synced 2026-01-03 10:09:19 +03:00
Move Variant::evaluate() switch to computed goto
In an effort to make GDScript a little faster replace the double switch() with a computed goto on compilers that set __GNUC__. For compilers that don't support computed goto it will fall back to regular switch/case statements. In addition disable using boolean values in a mathematical context. Now boolean values can only be compared with other booleans. Booleans will also no longer be coerced to integers. This PR replaces #11308 and fixes #11291
This commit is contained in:
@@ -1023,7 +1023,7 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
case TK_OP_OR: op = Variant::OP_OR; break;
|
||||
case TK_OP_NOT: op = Variant::OP_NOT; break;
|
||||
case TK_OP_ADD: op = Variant::OP_ADD; break;
|
||||
case TK_OP_SUB: op = Variant::OP_SUBSTRACT; break;
|
||||
case TK_OP_SUB: op = Variant::OP_SUBTRACT; break;
|
||||
case TK_OP_MUL: op = Variant::OP_MULTIPLY; break;
|
||||
case TK_OP_DIV: op = Variant::OP_DIVIDE; break;
|
||||
case TK_OP_MOD: op = Variant::OP_MODULE; break;
|
||||
@@ -1085,7 +1085,7 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
||||
case Variant::OP_MODULE: priority = 2; break;
|
||||
|
||||
case Variant::OP_ADD: priority = 3; break;
|
||||
case Variant::OP_SUBSTRACT: priority = 3; break;
|
||||
case Variant::OP_SUBTRACT: priority = 3; break;
|
||||
|
||||
case Variant::OP_SHIFT_LEFT: priority = 4; break;
|
||||
case Variant::OP_SHIFT_RIGHT: priority = 4; break;
|
||||
|
||||
@@ -1546,7 +1546,7 @@ public:
|
||||
value = Variant::evaluate(Variant::OP_ADD, value, p_argument);
|
||||
} break;
|
||||
case VisualScriptPropertySet::ASSIGN_OP_SUB: {
|
||||
value = Variant::evaluate(Variant::OP_SUBSTRACT, value, p_argument);
|
||||
value = Variant::evaluate(Variant::OP_SUBTRACT, value, p_argument);
|
||||
} break;
|
||||
case VisualScriptPropertySet::ASSIGN_OP_MUL: {
|
||||
value = Variant::evaluate(Variant::OP_MULTIPLY, value, p_argument);
|
||||
|
||||
@@ -3762,7 +3762,7 @@ void register_visual_script_nodes() {
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/compare/greater_equal", create_op_node<Variant::OP_GREATER_EQUAL>);
|
||||
//mathematic
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/add", create_op_node<Variant::OP_ADD>);
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/subtract", create_op_node<Variant::OP_SUBSTRACT>);
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/subtract", create_op_node<Variant::OP_SUBTRACT>);
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/multiply", create_op_node<Variant::OP_MULTIPLY>);
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/divide", create_op_node<Variant::OP_DIVIDE>);
|
||||
VisualScriptLanguage::singleton->add_register_func("operators/math/negate", create_op_node<Variant::OP_NEGATE>);
|
||||
|
||||
Reference in New Issue
Block a user