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

GDScript: Fix stack address test in compiler

This commit is contained in:
George Marques
2018-09-07 14:44:42 -03:00
parent 9c2986abda
commit 4907a1cd28

View File

@@ -388,7 +388,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
int ret = _parse_expression(codegen, an->elements[i], slevel); int ret = _parse_expression(codegen, an->elements[i], slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -419,7 +419,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
int ret = _parse_expression(codegen, dn->elements[i].key, slevel); int ret = _parse_expression(codegen, dn->elements[i].key, slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -429,7 +429,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
ret = _parse_expression(codegen, dn->elements[i].value, slevel); ret = _parse_expression(codegen, dn->elements[i].value, slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -545,7 +545,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
int ret = _parse_expression(codegen, on->arguments[i], slevel); int ret = _parse_expression(codegen, on->arguments[i], slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -578,7 +578,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
int ret = _parse_expression(codegen, on->arguments[i], slevel); int ret = _parse_expression(codegen, on->arguments[i], slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -606,7 +606,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -655,7 +655,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
ret = _parse_expression(codegen, on->arguments[i], slevel); ret = _parse_expression(codegen, on->arguments[i], slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }
@@ -681,7 +681,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
int ret = _parse_expression(codegen, on->arguments[i], slevel); int ret = _parse_expression(codegen, on->arguments[i], slevel);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & (GDScriptFunction::ADDR_TYPE_STACK << GDScriptFunction::ADDR_BITS)) { if ((ret >> GDScriptFunction::ADDR_BITS & GDScriptFunction::ADDR_TYPE_STACK) == GDScriptFunction::ADDR_TYPE_STACK) {
slevel++; slevel++;
codegen.alloc_stack(slevel); codegen.alloc_stack(slevel);
} }