Skip to content

Commit 5f0ecf4

Browse files
GDScript: Remove some unnecessary booleans
Co-authored-by: HolonProduction <[email protected]>
1 parent d705613 commit 5f0ecf4

File tree

7 files changed

+38
-62
lines changed

7 files changed

+38
-62
lines changed

modules/gdscript/gdscript.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,10 @@ void GDScript::_super_implicit_constructor(GDScript *p_script, GDScriptInstance
148148
}
149149
}
150150

151-
GDScriptInstance *GDScript::_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, bool p_is_ref_counted, Callable::CallError &r_error) {
151+
GDScriptInstance *GDScript::_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, Callable::CallError &r_error) {
152152
/* STEP 1, CREATE */
153153

154154
GDScriptInstance *instance = memnew(GDScriptInstance);
155-
instance->base_ref_counted = p_is_ref_counted;
156155
instance->members.resize(member_indices.size());
157156
instance->script = Ref<GDScript>(this);
158157
instance->owner = p_owner;
@@ -235,7 +234,7 @@ Variant GDScript::_new(const Variant **p_args, int p_argcount, Callable::CallErr
235234
ref = Ref<RefCounted>(r);
236235
}
237236

238-
GDScriptInstance *instance = _create_instance(p_args, p_argcount, owner, r != nullptr, r_error);
237+
GDScriptInstance *instance = _create_instance(p_args, p_argcount, owner, r_error);
239238
if (!instance) {
240239
if (ref.is_null()) {
241240
memdelete(owner); //no owner, sorry
@@ -422,7 +421,7 @@ ScriptInstance *GDScript::instance_create(Object *p_this) {
422421
}
423422

424423
Callable::CallError unchecked_error;
425-
return _create_instance(nullptr, 0, p_this, Object::cast_to<RefCounted>(p_this) != nullptr, unchecked_error);
424+
return _create_instance(nullptr, 0, p_this, unchecked_error);
426425
}
427426

428427
PlaceHolderScriptInstance *GDScript::placeholder_instance_create(Object *p_this) {
@@ -694,7 +693,7 @@ void GDScript::_static_default_init() {
694693
for (const KeyValue<StringName, MemberInfo> &E : static_variables_indices) {
695694
const GDScriptDataType &type = E.value.data_type;
696695
// Only initialize builtin types, which are not expected to be `null`.
697-
if (!type.has_type || type.kind != GDScriptDataType::BUILTIN) {
696+
if (type.kind != GDScriptDataType::BUILTIN) {
698697
continue;
699698
}
700699
if (type.builtin_type == Variant::ARRAY && type.has_container_element_type(0)) {
@@ -1025,7 +1024,7 @@ bool GDScript::_set(const StringName &p_name, const Variant &p_value) {
10251024
if (E) {
10261025
const MemberInfo *member = &E->value;
10271026
Variant value = p_value;
1028-
if (member->data_type.has_type && !member->data_type.is_type(value)) {
1027+
if (!member->data_type.is_type(value)) {
10291028
const Variant *args = &p_value;
10301029
Callable::CallError err;
10311030
Variant::construct(member->data_type.builtin_type, value, &args, 1, err);
@@ -1685,7 +1684,7 @@ bool GDScriptInstance::set(const StringName &p_name, const Variant &p_value) {
16851684
if (E) {
16861685
const GDScript::MemberInfo *member = &E->value;
16871686
Variant value = p_value;
1688-
if (member->data_type.has_type && !member->data_type.is_type(value)) {
1687+
if (!member->data_type.is_type(value)) {
16891688
const Variant *args = &p_value;
16901689
Callable::CallError err;
16911690
Variant::construct(member->data_type.builtin_type, value, &args, 1, err);
@@ -1712,7 +1711,7 @@ bool GDScriptInstance::set(const StringName &p_name, const Variant &p_value) {
17121711
if (E) {
17131712
const GDScript::MemberInfo *member = &E->value;
17141713
Variant value = p_value;
1715-
if (member->data_type.has_type && !member->data_type.is_type(value)) {
1714+
if (!member->data_type.is_type(value)) {
17161715
const Variant *args = &p_value;
17171716
Callable::CallError err;
17181717
Variant::construct(member->data_type.builtin_type, value, &args, 1, err);
@@ -2170,11 +2169,6 @@ void GDScriptInstance::reload_members() {
21702169
#endif
21712170
}
21722171

2173-
GDScriptInstance::GDScriptInstance() {
2174-
owner = nullptr;
2175-
base_ref_counted = false;
2176-
}
2177-
21782172
GDScriptInstance::~GDScriptInstance() {
21792173
MutexLock lock(GDScriptLanguage::get_singleton()->mutex);
21802174

modules/gdscript/gdscript.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ class GDScript : public Script {
194194

195195
GDScriptFunction *_super_constructor(GDScript *p_script);
196196
void _super_implicit_constructor(GDScript *p_script, GDScriptInstance *p_instance, Callable::CallError &r_error);
197-
GDScriptInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, bool p_is_ref_counted, Callable::CallError &r_error);
197+
GDScriptInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, Callable::CallError &r_error);
198198

199199
String _get_debug_path() const;
200200

@@ -374,7 +374,6 @@ class GDScriptInstance : public ScriptInstance {
374374
HashMap<StringName, int> member_indices_cache; //used only for hot script reloading
375375
#endif
376376
Vector<Variant> members;
377-
bool base_ref_counted;
378377

379378
SelfList<GDScriptFunctionState>::List pending_func_states;
380379

@@ -414,7 +413,7 @@ class GDScriptInstance : public ScriptInstance {
414413

415414
virtual const Variant get_rpc_config() const;
416415

417-
GDScriptInstance();
416+
GDScriptInstance() {}
418417
~GDScriptInstance();
419418
};
420419

modules/gdscript/gdscript_byte_codegen.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ uint32_t GDScriptByteCodeGenerator::add_or_get_name(const StringName &p_name) {
6565

6666
uint32_t GDScriptByteCodeGenerator::add_temporary(const GDScriptDataType &p_type) {
6767
Variant::Type temp_type = Variant::NIL;
68-
if (p_type.has_type && p_type.kind == GDScriptDataType::BUILTIN) {
68+
if (p_type.kind == GDScriptDataType::BUILTIN) {
6969
switch (p_type.builtin_type) {
7070
case Variant::NIL:
7171
case Variant::BOOL:
@@ -423,10 +423,10 @@ void GDScriptByteCodeGenerator::set_initial_line(int p_line) {
423423
}
424424

425425
#define HAS_BUILTIN_TYPE(m_var) \
426-
(m_var.type.has_type && m_var.type.kind == GDScriptDataType::BUILTIN)
426+
(m_var.type.kind == GDScriptDataType::BUILTIN)
427427

428428
#define IS_BUILTIN_TYPE(m_var, m_type) \
429-
(m_var.type.has_type && m_var.type.kind == GDScriptDataType::BUILTIN && m_var.type.builtin_type == m_type && m_type != Variant::NIL)
429+
(m_var.type.kind == GDScriptDataType::BUILTIN && m_var.type.builtin_type == m_type && m_type != Variant::NIL)
430430

431431
void GDScriptByteCodeGenerator::write_type_adjust(const Address &p_target, Variant::Type p_new_type) {
432432
switch (p_new_type) {
@@ -1070,7 +1070,6 @@ GDScriptByteCodeGenerator::CallTarget GDScriptByteCodeGenerator::get_call_target
10701070
if (p_target.mode == Address::NIL) {
10711071
GDScriptDataType type;
10721072
if (p_type != Variant::NIL) {
1073-
type.has_type = true;
10741073
type.kind = GDScriptDataType::BUILTIN;
10751074
type.builtin_type = p_type;
10761075
}
@@ -1551,7 +1550,6 @@ void GDScriptByteCodeGenerator::start_for(const GDScriptDataType &p_iterator_typ
15511550

15521551
if (p_is_range) {
15531552
GDScriptDataType int_type;
1554-
int_type.has_type = true;
15551553
int_type.kind = GDScriptDataType::BUILTIN;
15561554
int_type.builtin_type = Variant::INT;
15571555

@@ -1618,7 +1616,7 @@ void GDScriptByteCodeGenerator::write_for(const Address &p_variable, bool p_use_
16181616
if (p_is_range) {
16191617
begin_opcode = GDScriptFunction::OPCODE_ITERATE_BEGIN_RANGE;
16201618
iterate_opcode = GDScriptFunction::OPCODE_ITERATE_RANGE;
1621-
} else if (container.type.has_type) {
1619+
} else if (container.type.has_type()) {
16221620
if (container.type.kind == GDScriptDataType::BUILTIN) {
16231621
switch (container.type.builtin_type) {
16241622
case Variant::INT:
@@ -1834,11 +1832,11 @@ void GDScriptByteCodeGenerator::write_newline(int p_line) {
18341832
}
18351833

18361834
void GDScriptByteCodeGenerator::write_return(const Address &p_return_value) {
1837-
if (!function->return_type.has_type || p_return_value.type.has_type) {
1835+
if (!function->return_type.has_type() || p_return_value.type.has_type()) {
18381836
// Either the function is untyped or the return value is also typed.
18391837

18401838
// If this is a typed function, then we need to check for potential conversions.
1841-
if (function->return_type.has_type) {
1839+
if (function->return_type.has_type()) {
18421840
if (function->return_type.kind == GDScriptDataType::BUILTIN && function->return_type.builtin_type == Variant::ARRAY && function->return_type.has_container_element_type(0)) {
18431841
// Typed array.
18441842
const GDScriptDataType &element_type = function->return_type.get_container_element_type(0);
@@ -1958,7 +1956,7 @@ void GDScriptByteCodeGenerator::clear_address(const Address &p_address) {
19581956
// Do not check `is_local_dirty()` here! Always clear the address since the codegen doesn't track the compiler.
19591957
// Also, this method is used to initialize local variables of built-in types, since they cannot be `null`.
19601958

1961-
if (p_address.type.has_type && p_address.type.kind == GDScriptDataType::BUILTIN) {
1959+
if (p_address.type.kind == GDScriptDataType::BUILTIN) {
19621960
switch (p_address.type.builtin_type) {
19631961
case Variant::BOOL:
19641962
write_assign_false(p_address);

modules/gdscript/gdscript_compiler.cpp

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,10 @@ GDScriptDataType GDScriptCompiler::_gdtype_from_datatype(const GDScriptParser::D
9292
}
9393

9494
GDScriptDataType result;
95-
result.has_type = true;
9695

9796
switch (p_datatype.kind) {
9897
case GDScriptParser::DataType::VARIANT: {
99-
result.has_type = false;
98+
result.kind = GDScriptDataType::VARIANT;
10099
} break;
101100
case GDScriptParser::DataType::BUILTIN: {
102101
result.kind = GDScriptDataType::BUILTIN;
@@ -207,7 +206,7 @@ GDScriptDataType GDScriptCompiler::_gdtype_from_datatype(const GDScriptParser::D
207206
}
208207

209208
static bool _is_exact_type(const PropertyInfo &p_par_type, const GDScriptDataType &p_arg_type) {
210-
if (!p_arg_type.has_type) {
209+
if (!p_arg_type.has_type()) {
211210
return false;
212211
}
213212
if (p_par_type.type == Variant::NIL) {
@@ -583,7 +582,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
583582
GDScriptDataType cast_type = _gdtype_from_datatype(cn->get_datatype(), codegen.script, false);
584583

585584
GDScriptCodeGenerator::Address result;
586-
if (cast_type.has_type) {
585+
if (cast_type.has_type()) {
587586
// Create temporary for result first since it will be deleted last.
588587
result = codegen.add_temporary(cast_type);
589588

@@ -692,7 +691,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
692691
}
693692
if (is_awaited) {
694693
gen->write_call_async(result, base, call->function_name, arguments);
695-
} else if (base.type.has_type && base.type.kind != GDScriptDataType::BUILTIN) {
694+
} else if (base.type.kind != GDScriptDataType::VARIANT && base.type.kind != GDScriptDataType::BUILTIN) {
696695
// Native method, use faster path.
697696
StringName class_name;
698697
if (base.type.kind == GDScriptDataType::NATIVE) {
@@ -712,7 +711,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
712711
} else {
713712
gen->write_call(result, base, call->function_name, arguments);
714713
}
715-
} else if (base.type.has_type && base.type.kind == GDScriptDataType::BUILTIN) {
714+
} else if (base.type.kind == GDScriptDataType::BUILTIN) {
716715
gen->write_call_builtin_type(result, base, base.type.builtin_type, call->function_name, arguments);
717716
} else {
718717
gen->write_call(result, base, call->function_name, arguments);
@@ -967,7 +966,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
967966
return GDScriptCodeGenerator::Address();
968967
}
969968

970-
if (test_type.has_type) {
969+
if (test_type.has_type()) {
971970
gen->write_type_test(result, operand, test_type);
972971
} else {
973972
gen->write_assign_true(result);
@@ -1067,7 +1066,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
10671066

10681067
// Get at (potential) root stack pos, so it can be returned.
10691068
GDScriptCodeGenerator::Address base = _parse_expression(codegen, r_error, chain.back()->get()->base);
1070-
const bool base_known_type = base.type.has_type;
1069+
const bool base_known_type = base.type.has_type();
10711070
const bool base_is_shared = Variant::is_type_shared(base.type.builtin_type);
10721071

10731072
if (r_error) {
@@ -1171,7 +1170,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
11711170

11721171
// Set back the values into their bases.
11731172
for (const ChainInfo &info : set_chain) {
1174-
bool known_type = assigned.type.has_type;
1173+
bool known_type = assigned.type.has_type();
11751174
bool is_shared = Variant::is_type_shared(assigned.type.builtin_type);
11761175

11771176
if (!known_type || !is_shared) {
@@ -1197,7 +1196,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
11971196
assigned = info.base;
11981197
}
11991198

1200-
bool known_type = assigned.type.has_type;
1199+
bool known_type = assigned.type.has_type();
12011200
bool is_shared = Variant::is_type_shared(assigned.type.builtin_type);
12021201

12031202
if (!known_type || !is_shared) {
@@ -1445,7 +1444,6 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
14451444

14461445
// Equality is always a boolean.
14471446
GDScriptDataType equality_type;
1448-
equality_type.has_type = true;
14491447
equality_type.kind = GDScriptDataType::BUILTIN;
14501448
equality_type.builtin_type = Variant::BOOL;
14511449

@@ -1526,7 +1524,6 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
15261524

15271525
// Equality is always a boolean.
15281526
GDScriptDataType equality_type;
1529-
equality_type.has_type = true;
15301527
equality_type.kind = GDScriptDataType::BUILTIN;
15311528
equality_type.builtin_type = Variant::BOOL;
15321529

@@ -1611,7 +1608,6 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
16111608

16121609
// Equality is always a boolean.
16131610
GDScriptDataType temp_type;
1614-
temp_type.has_type = true;
16151611
temp_type.kind = GDScriptDataType::BUILTIN;
16161612
temp_type.builtin_type = Variant::BOOL;
16171613

@@ -1709,7 +1705,6 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
17091705

17101706
// Equality is always a boolean.
17111707
GDScriptDataType temp_type;
1712-
temp_type.has_type = true;
17131708
temp_type.kind = GDScriptDataType::BUILTIN;
17141709
temp_type.builtin_type = Variant::BOOL;
17151710

@@ -1929,7 +1924,6 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Sui
19291924

19301925
// Then, let's save the type of the value in the stack too, so we can reuse for later comparisons.
19311926
GDScriptDataType typeof_type;
1932-
typeof_type.has_type = true;
19331927
typeof_type.kind = GDScriptDataType::BUILTIN;
19341928
typeof_type.builtin_type = Variant::INT;
19351929
GDScriptCodeGenerator::Address type = codegen.add_local("@match_type", typeof_type);
@@ -2236,7 +2230,7 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Sui
22362230
codegen.generator->pop_temporary();
22372231
}
22382232
initialized = true;
2239-
} else if ((local_type.has_type && local_type.kind == GDScriptDataType::BUILTIN) || codegen.generator->is_local_dirty(local)) {
2233+
} else if (local_type.kind == GDScriptDataType::BUILTIN || codegen.generator->is_local_dirty(local)) {
22402234
// Initialize with default for the type. Built-in types must always be cleared (they cannot be `null`).
22412235
// Objects and untyped variables are assigned to `null` only if the stack address has been reused and not cleared.
22422236
codegen.generator->clear_address(local);
@@ -2303,7 +2297,6 @@ GDScriptFunction *GDScriptCompiler::_parse_function(Error &r_error, GDScript *p_
23032297
bool is_static = false;
23042298
Variant rpc_config;
23052299
GDScriptDataType return_type;
2306-
return_type.has_type = true;
23072300
return_type.kind = GDScriptDataType::BUILTIN;
23082301
return_type.builtin_type = Variant::NIL;
23092302

@@ -2383,7 +2376,7 @@ GDScriptFunction *GDScriptCompiler::_parse_function(Error &r_error, GDScript *p_
23832376
}
23842377

23852378
GDScriptDataType field_type = _gdtype_from_datatype(field->get_datatype(), codegen.script);
2386-
if (field_type.has_type) {
2379+
if (field_type.has_type()) {
23872380
codegen.generator->write_newline(field->start_line);
23882381

23892382
GDScriptCodeGenerator::Address dst_address(GDScriptCodeGenerator::Address::MEMBER, codegen.script->member_indices[field->identifier->name].index, field_type);
@@ -2522,7 +2515,6 @@ GDScriptFunction *GDScriptCompiler::_parse_function(Error &r_error, GDScript *p_
25222515
method_info.return_val = p_func->get_datatype().to_property_info(String());
25232516
} else {
25242517
gd_function->return_type = GDScriptDataType();
2525-
gd_function->return_type.has_type = true;
25262518
gd_function->return_type.kind = GDScriptDataType::BUILTIN;
25272519
gd_function->return_type.builtin_type = Variant::NIL;
25282520
}
@@ -2555,7 +2547,6 @@ GDScriptFunction *GDScriptCompiler::_make_static_initializer(Error &r_error, GDS
25552547
bool is_static = true;
25562548
Variant rpc_config;
25572549
GDScriptDataType return_type;
2558-
return_type.has_type = true;
25592550
return_type.kind = GDScriptDataType::BUILTIN;
25602551
return_type.builtin_type = Variant::NIL;
25612552

@@ -2581,7 +2572,7 @@ GDScriptFunction *GDScriptCompiler::_make_static_initializer(Error &r_error, GDS
25812572
}
25822573

25832574
GDScriptDataType field_type = _gdtype_from_datatype(field->get_datatype(), codegen.script);
2584-
if (field_type.has_type) {
2575+
if (field_type.has_type()) {
25852576
codegen.generator->write_newline(field->start_line);
25862577

25872578
if (field_type.builtin_type == Variant::ARRAY && field_type.has_container_element_type(0)) {
@@ -2876,7 +2867,7 @@ Error GDScriptCompiler::_prepare_compilation(GDScript *p_script, const GDScriptP
28762867
PropertyInfo export_info = variable->export_info;
28772868

28782869
if (variable->exported) {
2879-
if (!minfo.data_type.has_type) {
2870+
if (!minfo.data_type.has_type()) {
28802871
prop_info.type = export_info.type;
28812872
prop_info.class_name = export_info.class_name;
28822873
}
@@ -3071,7 +3062,6 @@ Error GDScriptCompiler::_compile_class(GDScript *p_script, const GDScriptParser:
30713062
p_script->placeholders.erase(psi); //remove placeholder
30723063

30733064
GDScriptInstance *instance = memnew(GDScriptInstance);
3074-
instance->base_ref_counted = Object::cast_to<RefCounted>(E->get());
30753065
instance->members.resize(p_script->member_indices.size());
30763066
instance->script = Ref<GDScript>(p_script);
30773067
instance->owner = E->get();

modules/gdscript/gdscript_compiler.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ class GDScriptCompiler {
101101

102102
GDScriptCodeGenerator::Address add_constant(const Variant &p_constant) {
103103
GDScriptDataType type;
104-
type.has_type = true;
105104
type.kind = GDScriptDataType::BUILTIN;
106105
type.builtin_type = p_constant.get_type();
107106
if (type.builtin_type == Variant::OBJECT) {

0 commit comments

Comments
 (0)