Browse Source

Optimized variant reference function.
Optimized critical execution path in Variant::reference by removing expensive and unnecessary call to clear for atomic types.

Valentin Zagura 6 years ago
parent
commit
6a36779e89
1 changed files with 9 additions and 1 deletions
  1. 9 1
      core/variant.cpp

+ 9 - 1
core/variant.cpp

@@ -910,7 +910,15 @@ bool Variant::is_one() const {
 
 
 void Variant::reference(const Variant &p_variant) {
 void Variant::reference(const Variant &p_variant) {
 
 
-	clear();
+	switch (type) {
+		case NIL:
+		case BOOL:
+		case INT:
+		case REAL:
+			break;
+		default:
+			clear();
+	}
 
 
 	type = p_variant.type;
 	type = p_variant.type;