Explorar el Código

Both Array and Dictionary are always in shared mode (removed copy on write).

Juan Linietsky hace 8 años
padre
commit
e6583117df

+ 3 - 19
core/array.cpp

@@ -36,7 +36,6 @@ struct ArrayPrivate {
 
 
 	SafeRefCount refcount;
 	SafeRefCount refcount;
 	Vector<Variant> array;
 	Vector<Variant> array;
-	bool shared;
 };
 };
 
 
 void Array::_ref(const Array& p_from) const {
 void Array::_ref(const Array& p_from) const {
@@ -54,20 +53,9 @@ void Array::_ref(const Array& p_from) const {
 
 
 	_unref();
 	_unref();
 
 
-	if (_fp->shared) {
+	_p = p_from._p;
 
 
-		_p = p_from._p;
 
 
-	} else {
-
-		_p = memnew( ArrayPrivate );
-		_p->shared=false;
-		_p->refcount.init();
-		_p->array=_fp->array;
-
-		if (_fp->refcount.unref())
-			memdelete(_fp);
-	}
 }
 }
 
 
 void Array::_unref() const {
 void Array::_unref() const {
@@ -106,10 +94,6 @@ void Array::clear() {
 	_p->array.clear();
 	_p->array.clear();
 }
 }
 
 
-bool Array::is_shared() const {
-
-    return _p->shared;
-}
 
 
 bool Array::operator==(const Array& p_array) const {
 bool Array::operator==(const Array& p_array) const {
 
 
@@ -316,11 +300,11 @@ Array::Array(const Array& p_from) {
 	_ref(p_from);
 	_ref(p_from);
 
 
 }
 }
-Array::Array(bool p_shared) {
+Array::Array() {
 
 
 	_p = memnew( ArrayPrivate );
 	_p = memnew( ArrayPrivate );
 	_p->refcount.init();
 	_p->refcount.init();
-	_p->shared=p_shared;
+
 }
 }
 Array::~Array() {
 Array::~Array() {
 
 

+ 1 - 3
core/array.h

@@ -53,8 +53,6 @@ public:
 	bool empty() const;
 	bool empty() const;
 	void clear();
 	void clear();
 
 
-	bool is_shared() const;
-
 	bool operator==(const Array& p_array) const;
 	bool operator==(const Array& p_array) const;
 
 
 	uint32_t hash() const;
 	uint32_t hash() const;
@@ -87,7 +85,7 @@ public:
 	Variant pop_front();
 	Variant pop_front();
 
 
 	Array(const Array& p_from);
 	Array(const Array& p_from);
-	Array(bool p_shared=false);
+	Array();
 	~Array();
 	~Array();
 
 
 };
 };

+ 5 - 27
core/dictionary.cpp

@@ -49,7 +49,6 @@ struct DictionaryPrivate {
 	SafeRefCount refcount;
 	SafeRefCount refcount;
 	HashMap<Variant,Data,_DictionaryVariantHash> variant_map;
 	HashMap<Variant,Data,_DictionaryVariantHash> variant_map;
 	int counter;
 	int counter;
-	bool shared;
 
 
 };
 };
 
 
@@ -79,23 +78,8 @@ void Dictionary::get_key_list( List<Variant> *p_keys) const {
 
 
 }
 }
 
 
-void Dictionary::_copy_on_write() const {
-
-	//make a copy of what we have
-	if (_p->shared)
-		return;
-
-	DictionaryPrivate *p = memnew(DictionaryPrivate);
-	p->shared=_p->shared;
-	p->variant_map=_p->variant_map;
-	p->refcount.init();
-	_unref();
-	_p=p;
-}
-
 Variant& Dictionary::operator[](const Variant& p_key) {
 Variant& Dictionary::operator[](const Variant& p_key) {
 
 
-	_copy_on_write();
 
 
 	DictionaryPrivate::Data *v =_p->variant_map.getptr(p_key);
 	DictionaryPrivate::Data *v =_p->variant_map.getptr(p_key);
 
 
@@ -126,7 +110,6 @@ const Variant* Dictionary::getptr(const Variant& p_key) const {
 
 
 Variant* Dictionary::getptr(const Variant& p_key) {
 Variant* Dictionary::getptr(const Variant& p_key) {
 
 
-	_copy_on_write();	
 	DictionaryPrivate::Data *v =_p->variant_map.getptr(p_key);
 	DictionaryPrivate::Data *v =_p->variant_map.getptr(p_key);
 	if (!v)
 	if (!v)
 		return NULL;
 		return NULL;
@@ -171,7 +154,8 @@ bool Dictionary::has_all(const Array& p_keys) const {
 }
 }
 
 
 void Dictionary::erase(const Variant& p_key) {
 void Dictionary::erase(const Variant& p_key) {
-	_copy_on_write();
+
+
 	_p->variant_map.erase(p_key);
 	_p->variant_map.erase(p_key);
 }
 }
 
 
@@ -199,16 +183,10 @@ void Dictionary::_ref(const Dictionary& p_from) const {
 
 
 void Dictionary::clear() {
 void Dictionary::clear() {
 
 
-	_copy_on_write();
 	_p->variant_map.clear();
 	_p->variant_map.clear();
 	_p->counter=0;
 	_p->counter=0;
 }
 }
 
 
-bool Dictionary::is_shared() const {
-
-    return _p->shared;
-}
-
 
 
 void Dictionary::_unref() const {
 void Dictionary::_unref() const {
 
 
@@ -278,7 +256,7 @@ const Variant* Dictionary::next(const Variant* p_key) const {
 
 
 Dictionary Dictionary::copy() const {
 Dictionary Dictionary::copy() const {
 
 
-	Dictionary n(is_shared());
+	Dictionary n;
 
 
 	List<Variant> keys;
 	List<Variant> keys;
 	get_key_list(&keys);
 	get_key_list(&keys);
@@ -304,12 +282,12 @@ Dictionary::Dictionary(const Dictionary& p_from) {
 }
 }
 
 
 
 
-Dictionary::Dictionary(bool p_shared) {
+Dictionary::Dictionary() {
 
 
 	_p=memnew( DictionaryPrivate );
 	_p=memnew( DictionaryPrivate );
 	_p->refcount.init();
 	_p->refcount.init();
 	_p->counter=0;
 	_p->counter=0;
-	_p->shared=p_shared;
+
 
 
 }
 }
 Dictionary::~Dictionary() {
 Dictionary::~Dictionary() {

+ 2 - 5
core/dictionary.h

@@ -43,7 +43,7 @@ class Dictionary {
 
 
 	mutable DictionaryPrivate *_p;
 	mutable DictionaryPrivate *_p;
 
 
-	void _copy_on_write() const;
+
 	void _ref(const Dictionary& p_from) const;
 	void _ref(const Dictionary& p_from) const;
 	void _unref() const;
 	void _unref() const;
 public:
 public:
@@ -62,9 +62,6 @@ public:
 	bool empty() const;
 	bool empty() const;
 	void clear();
 	void clear();
 
 
-
-	bool is_shared() const;
-
 	bool has(const Variant& p_key) const;
 	bool has(const Variant& p_key) const;
 	bool has_all(const Array& p_keys) const;
 	bool has_all(const Array& p_keys) const;
 
 
@@ -83,7 +80,7 @@ public:
 	Dictionary copy() const;
 	Dictionary copy() const;
 
 
 	Dictionary(const Dictionary& p_from);
 	Dictionary(const Dictionary& p_from);
-	Dictionary(bool p_shared=false);
+	Dictionary();
 	~Dictionary();
 	~Dictionary();
 };
 };
 
 

+ 2 - 2
core/io/json.cpp

@@ -288,7 +288,7 @@ Error JSON::_parse_value(Variant &value,Token& token,const CharType *p_str,int &
 
 
 	if (token.type==TK_CURLY_BRACKET_OPEN) {
 	if (token.type==TK_CURLY_BRACKET_OPEN) {
 
 
-		Dictionary d(true);
+		Dictionary d;
 		Error err = _parse_object(d,p_str,index,p_len,line,r_err_str);
 		Error err = _parse_object(d,p_str,index,p_len,line,r_err_str);
 		if (err)
 		if (err)
 			return err;
 			return err;
@@ -296,7 +296,7 @@ Error JSON::_parse_value(Variant &value,Token& token,const CharType *p_str,int &
 		return OK;
 		return OK;
 	} else if (token.type==TK_BRACKET_OPEN) {
 	} else if (token.type==TK_BRACKET_OPEN) {
 
 
-		Array a(true);
+		Array a;
 		Error err = _parse_array(a,p_str,index,p_len,line,r_err_str);
 		Error err = _parse_array(a,p_str,index,p_len,line,r_err_str);
 		if (err)
 		if (err)
 			return err;
 			return err;

+ 6 - 6
core/io/marshalls.cpp

@@ -471,7 +471,7 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int *
 
 
 			ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
 			ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
             uint32_t count = decode_uint32(buf);
             uint32_t count = decode_uint32(buf);
-            bool shared = count&0x80000000;
+	  //  bool shared = count&0x80000000;
             count&=0x7FFFFFFF;
             count&=0x7FFFFFFF;
 
 
 			buf+=4;
 			buf+=4;
@@ -481,7 +481,7 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int *
 				(*r_len)+=4;
 				(*r_len)+=4;
 			}
 			}
 
 
-            Dictionary d(shared);
+	    Dictionary d;
 
 
             for(uint32_t i=0;i<count;i++) {
             for(uint32_t i=0;i<count;i++) {
 
 
@@ -516,7 +516,7 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int *
 
 
 			ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
 			ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
 			uint32_t count = decode_uint32(buf);
 			uint32_t count = decode_uint32(buf);
-            bool shared = count&0x80000000;
+	  //  bool shared = count&0x80000000;
             count&=0x7FFFFFFF;
             count&=0x7FFFFFFF;
 
 
 			buf+=4;
 			buf+=4;
@@ -526,7 +526,7 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int *
 				(*r_len)+=4;
 				(*r_len)+=4;
 			}
 			}
 
 
-            Array varr(shared);
+	    Array varr;
 
 
             for(uint32_t i=0;i<count;i++) {
             for(uint32_t i=0;i<count;i++) {
 
 
@@ -1232,7 +1232,7 @@ Error encode_variant(const Variant& p_variant, uint8_t *r_buffer, int &r_len) {
 			Dictionary d = p_variant;
 			Dictionary d = p_variant;
 
 
 			if (buf) {
 			if (buf) {
-                encode_uint32(uint32_t(d.size())|(d.is_shared()?0x80000000:0),buf);
+				encode_uint32(uint32_t(d.size()),buf);
 				buf+=4;
 				buf+=4;
 			}
 			}
 			r_len+=4;
 			r_len+=4;
@@ -1275,7 +1275,7 @@ Error encode_variant(const Variant& p_variant, uint8_t *r_buffer, int &r_len) {
 			Array v = p_variant;
 			Array v = p_variant;
 
 
 			if (buf) {
 			if (buf) {
-                encode_uint32(uint32_t(v.size())|(v.is_shared()?0x80000000:0),buf);
+		encode_uint32(uint32_t(v.size()),buf);
 				buf+=4;
 				buf+=4;
 			}
 			}
 
 

+ 4 - 4
core/io/resource_format_binary.cpp

@@ -426,7 +426,7 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant& r_v)  {
 		case VARIANT_DICTIONARY: {
 		case VARIANT_DICTIONARY: {
 
 
 			uint32_t len=f->get_32();
 			uint32_t len=f->get_32();
-			Dictionary d(len&0x80000000); //last bit means shared
+			Dictionary d; //last bit means shared
 			len&=0x7FFFFFFF;
 			len&=0x7FFFFFFF;
 			for(uint32_t i=0;i<len;i++) {
 			for(uint32_t i=0;i<len;i++) {
 				Variant key;
 				Variant key;
@@ -442,7 +442,7 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant& r_v)  {
 		case VARIANT_ARRAY: {
 		case VARIANT_ARRAY: {
 
 
 			uint32_t len=f->get_32();
 			uint32_t len=f->get_32();
-			Array a(len&0x80000000); //last bit means shared
+			Array a; //last bit means shared
 			len&=0x7FFFFFFF;
 			len&=0x7FFFFFFF;
 			a.resize(len);
 			a.resize(len);
 			for(uint32_t i=0;i<len;i++) {
 			for(uint32_t i=0;i<len;i++) {
@@ -1701,7 +1701,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(const Variant& p_property,
 
 
 			f->store_32(VARIANT_DICTIONARY);
 			f->store_32(VARIANT_DICTIONARY);
 			Dictionary d = p_property;
 			Dictionary d = p_property;
-			f->store_32(uint32_t(d.size())|(d.is_shared()?0x80000000:0));
+			f->store_32(uint32_t(d.size()));
 
 
 			List<Variant> keys;
 			List<Variant> keys;
 			d.get_key_list(&keys);
 			d.get_key_list(&keys);
@@ -1721,7 +1721,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(const Variant& p_property,
 
 
 			f->store_32(VARIANT_ARRAY);
 			f->store_32(VARIANT_ARRAY);
 			Array a=p_property;
 			Array a=p_property;
-			f->store_32(uint32_t(a.size())|(a.is_shared()?0x80000000:0));
+			f->store_32(uint32_t(a.size()));
 			for(int i=0;i<a.size();i++) {
 			for(int i=0;i<a.size();i++) {
 
 
 				write_variant(a[i]);
 				write_variant(a[i]);

+ 2 - 2
core/variant.cpp

@@ -2985,8 +2985,8 @@ bool Variant::is_shared() const {
     switch(type) {
     switch(type) {
 
 
         case OBJECT: return true;
         case OBJECT: return true;
-	case ARRAY:	return reinterpret_cast<const Array*>(_data._mem)->is_shared();
-        case DICTIONARY: return reinterpret_cast<const Dictionary*>(_data._mem)->is_shared();
+	case ARRAY:	return true;
+	case DICTIONARY: return true;
         default: {}
         default: {}
 
 
     }
     }

+ 2 - 2
core/variant_call.cpp

@@ -489,7 +489,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM0(Array,sort);
 	VCALL_LOCALMEM0(Array,sort);
 	VCALL_LOCALMEM2(Array,sort_custom);
 	VCALL_LOCALMEM2(Array,sort_custom);
 	VCALL_LOCALMEM0(Array,invert);
 	VCALL_LOCALMEM0(Array,invert);
-	VCALL_LOCALMEM0R(Array,is_shared);
+
 
 
 	static void _call_PoolByteArray_get_string_from_ascii(Variant& r_ret,Variant& p_self,const Variant** p_args) {
 	static void _call_PoolByteArray_get_string_from_ascii(Variant& r_ret,Variant& p_self,const Variant** p_args) {
 
 
@@ -1588,7 +1588,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
 	ADDFUNC0(ARRAY,NIL,Array,sort,varray());
 	ADDFUNC0(ARRAY,NIL,Array,sort,varray());
 	ADDFUNC2(ARRAY,NIL,Array,sort_custom,OBJECT,"obj",STRING,"func",varray());
 	ADDFUNC2(ARRAY,NIL,Array,sort_custom,OBJECT,"obj",STRING,"func",varray());
 	ADDFUNC0(ARRAY,NIL,Array,invert,varray());
 	ADDFUNC0(ARRAY,NIL,Array,invert,varray());
-	ADDFUNC0(ARRAY,BOOL,Array,is_shared,varray());
+
 
 
 	ADDFUNC0(POOL_BYTE_ARRAY,INT,PoolByteArray,size,varray());
 	ADDFUNC0(POOL_BYTE_ARRAY,INT,PoolByteArray,size,varray());
 	ADDFUNC2(POOL_BYTE_ARRAY,NIL,PoolByteArray,set,INT,"idx",INT,"byte",varray());
 	ADDFUNC2(POOL_BYTE_ARRAY,NIL,PoolByteArray,set,INT,"idx",INT,"byte",varray());

+ 3 - 3
core/variant_op.cpp

@@ -507,7 +507,7 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 						}
 						}
 						const Array &array_a=*reinterpret_cast<const Array *>(p_a._data._mem);
 						const Array &array_a=*reinterpret_cast<const Array *>(p_a._data._mem);
 						const Array &array_b=*reinterpret_cast<const Array *>(p_b._data._mem);
 						const Array &array_b=*reinterpret_cast<const Array *>(p_b._data._mem);
-						Array sum(array_a.is_shared() || array_b.is_shared());
+						Array sum;
 						int asize=array_a.size();
 						int asize=array_a.size();
 						int bsize=array_b.size();
 						int bsize=array_b.size();
 						sum.resize(asize+bsize);
 						sum.resize(asize+bsize);
@@ -2949,7 +2949,7 @@ bool Variant::iter_init(Variant& r_iter,bool &valid) const {
 #endif
 #endif
 			Variant::CallError ce;
 			Variant::CallError ce;
 			ce.error=Variant::CallError::CALL_OK;
 			ce.error=Variant::CallError::CALL_OK;
-			Array ref(true);
+			Array ref;
 			ref.push_back(r_iter);
 			ref.push_back(r_iter);
 			Variant vref=ref;
 			Variant vref=ref;
 			const Variant *refp[]={&vref};
 			const Variant *refp[]={&vref};
@@ -3075,7 +3075,7 @@ bool Variant::iter_next(Variant& r_iter,bool &valid) const {
 #endif
 #endif
 			Variant::CallError ce;
 			Variant::CallError ce;
 			ce.error=Variant::CallError::CALL_OK;
 			ce.error=Variant::CallError::CALL_OK;
-			Array ref(true);
+			Array ref;
 			ref.push_back(r_iter);
 			ref.push_back(r_iter);
 			Variant vref=ref;
 			Variant vref=ref;
 			const Variant *refp[]={&vref};
 			const Variant *refp[]={&vref};

+ 2 - 2
modules/gdscript/gd_function.cpp

@@ -617,7 +617,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
 
 
 				CHECK_SPACE(1);
 				CHECK_SPACE(1);
 				int argc=_code_ptr[ip+1];
 				int argc=_code_ptr[ip+1];
-				Array array(true); //arrays are always shared
+				Array array; //arrays are always shared
 				array.resize(argc);
 				array.resize(argc);
 				CHECK_SPACE(argc+2);
 				CHECK_SPACE(argc+2);
 
 
@@ -638,7 +638,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
 
 
 				CHECK_SPACE(1);
 				CHECK_SPACE(1);
 				int argc=_code_ptr[ip+1];
 				int argc=_code_ptr[ip+1];
-				Dictionary dict(true); //arrays are always shared
+				Dictionary dict; //arrays are always shared
 
 
 				CHECK_SPACE(argc*2+2);
 				CHECK_SPACE(argc*2+2);
 
 

+ 4 - 4
modules/gdscript/gd_functions.cpp

@@ -735,7 +735,7 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
 
 
 					VALIDATE_ARG_NUM(0);
 					VALIDATE_ARG_NUM(0);
 					int count=*p_args[0];
 					int count=*p_args[0];
-					Array arr(true);
+					Array arr;
 					if (count<=0) {
 					if (count<=0) {
 						r_ret=arr;
 						r_ret=arr;
 						return;
 						return;
@@ -761,7 +761,7 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
 					int from=*p_args[0];
 					int from=*p_args[0];
 					int to=*p_args[1];
 					int to=*p_args[1];
 
 
-					Array arr(true);
+					Array arr;
 					if (from>=to) {
 					if (from>=to) {
 						r_ret=arr;
 						r_ret=arr;
 						return;
 						return;
@@ -792,7 +792,7 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
 						return;
 						return;
 					}
 					}
 
 
-					Array arr(true);
+					Array arr;
 					if (from>=to && incr>0) {
 					if (from>=to && incr>0) {
 						r_ret=arr;
 						r_ret=arr;
 						return;
 						return;
@@ -921,7 +921,7 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
 
 
 					NodePath cp(sname,Vector<StringName>(),false);
 					NodePath cp(sname,Vector<StringName>(),false);
 
 
-					Dictionary d(true);
+					Dictionary d;
 					d["@subpath"]=cp;
 					d["@subpath"]=cp;
 					d["@path"]=p->path;
 					d["@path"]=p->path;
 
 

+ 2 - 2
modules/gdscript/gd_parser.cpp

@@ -1317,7 +1317,7 @@ GDParser::Node* GDParser::_reduce_expression(Node *p_node,bool p_to_const) {
 				//reduce constant array expression
 				//reduce constant array expression
 
 
 				ConstantNode *cn = alloc_node<ConstantNode>();
 				ConstantNode *cn = alloc_node<ConstantNode>();
-				Array arr(!p_to_const);
+				Array arr;
 				//print_line("mk array "+itos(!p_to_const));
 				//print_line("mk array "+itos(!p_to_const));
 				arr.resize(an->elements.size());
 				arr.resize(an->elements.size());
 				for(int i=0;i<an->elements.size();i++) {
 				for(int i=0;i<an->elements.size();i++) {
@@ -1352,7 +1352,7 @@ GDParser::Node* GDParser::_reduce_expression(Node *p_node,bool p_to_const) {
 				//reduce constant array expression
 				//reduce constant array expression
 
 
 				ConstantNode *cn = alloc_node<ConstantNode>();
 				ConstantNode *cn = alloc_node<ConstantNode>();
-				Dictionary dict(!p_to_const);
+				Dictionary dict;
 				for(int i=0;i<dn->elements.size();i++) {
 				for(int i=0;i<dn->elements.size();i++) {
 					ConstantNode *key_c = static_cast<ConstantNode*>(dn->elements[i].key);
 					ConstantNode *key_c = static_cast<ConstantNode*>(dn->elements[i].key);
 					ConstantNode *value_c = static_cast<ConstantNode*>(dn->elements[i].value);
 					ConstantNode *value_c = static_cast<ConstantNode*>(dn->elements[i].value);

+ 3 - 3
modules/visual_script/visual_script_nodes.cpp

@@ -2631,9 +2631,9 @@ public:
 				return 0;
 				return 0;
 			}
 			}
 #endif
 #endif
-			Array in_values(true);
-			Array out_values(true);
-			Array work_mem(true);
+			Array in_values;
+			Array out_values;
+			Array work_mem;
 
 
 			in_values.resize(in_count);
 			in_values.resize(in_count);
 
 

+ 4 - 4
servers/physics_2d_server.cpp

@@ -241,9 +241,9 @@ Dictionary Physics2DDirectSpaceState::_intersect_ray(const Vector2& p_from, cons
 	bool res = intersect_ray(p_from,p_to,inters,exclude,p_layers,p_object_type_mask);
 	bool res = intersect_ray(p_from,p_to,inters,exclude,p_layers,p_object_type_mask);
 
 
 	if (!res)
 	if (!res)
-		return Dictionary(true);
+		return Dictionary();
 
 
-	Dictionary d(true);
+	Dictionary d;
 	d["position"]=inters.position;
 	d["position"]=inters.position;
 	d["normal"]=inters.normal;
 	d["normal"]=inters.normal;
 	d["collider_id"]=inters.collider_id;
 	d["collider_id"]=inters.collider_id;
@@ -282,7 +282,7 @@ Array Physics2DDirectSpaceState::_cast_motion(const Ref<Physics2DShapeQueryParam
 	bool res = cast_motion(psq->shape,psq->transform,psq->motion,psq->margin,closest_safe,closest_unsafe,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	bool res = cast_motion(psq->shape,psq->transform,psq->motion,psq->margin,closest_safe,closest_unsafe,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	if (!res)
 	if (!res)
 		return Array();
 		return Array();
-	Array ret(true);
+	Array ret;
 	ret.resize(2);
 	ret.resize(2);
 	ret[0]=closest_safe;
 	ret[0]=closest_safe;
 	ret[1]=closest_unsafe;
 	ret[1]=closest_unsafe;
@@ -339,7 +339,7 @@ Dictionary Physics2DDirectSpaceState::_get_rest_info(const Ref<Physics2DShapeQue
 	ShapeRestInfo sri;
 	ShapeRestInfo sri;
 
 
 	bool res = rest_info(psq->shape,psq->transform,psq->motion,psq->margin,&sri,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	bool res = rest_info(psq->shape,psq->transform,psq->motion,psq->margin,&sri,psq->exclude,psq->layer_mask,psq->object_type_mask);
-	Dictionary r(true);
+	Dictionary r;
 	if (!res)
 	if (!res)
 		return r;
 		return r;
 
 

+ 4 - 4
servers/physics_server.cpp

@@ -271,9 +271,9 @@ Dictionary PhysicsDirectSpaceState::_intersect_ray(const Vector3& p_from, const
 	bool res = intersect_ray(p_from,p_to,inters,exclude,p_layers,p_object_type_mask);
 	bool res = intersect_ray(p_from,p_to,inters,exclude,p_layers,p_object_type_mask);
 
 
 	if (!res)
 	if (!res)
-		return Dictionary(true);
+		return Dictionary();
 
 
-	Dictionary d(true);
+	Dictionary d;
 	d["position"]=inters.position;
 	d["position"]=inters.position;
 	d["normal"]=inters.normal;
 	d["normal"]=inters.normal;
 	d["collider_id"]=inters.collider_id;
 	d["collider_id"]=inters.collider_id;
@@ -310,7 +310,7 @@ Array PhysicsDirectSpaceState::_cast_motion(const Ref<PhysicsShapeQueryParameter
 	bool res = cast_motion(psq->shape,psq->transform,p_motion,psq->margin,closest_safe,closest_unsafe,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	bool res = cast_motion(psq->shape,psq->transform,p_motion,psq->margin,closest_safe,closest_unsafe,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	if (!res)
 	if (!res)
 		return Array();
 		return Array();
-	Array ret(true);
+	Array ret;
 	ret.resize(2);
 	ret.resize(2);
 	ret[0]=closest_safe;
 	ret[0]=closest_safe;
 	ret[1]=closest_unsafe;
 	ret[1]=closest_unsafe;
@@ -337,7 +337,7 @@ Dictionary PhysicsDirectSpaceState::_get_rest_info(const Ref<PhysicsShapeQueryPa
 	ShapeRestInfo sri;
 	ShapeRestInfo sri;
 
 
 	bool res = rest_info(psq->shape,psq->transform,psq->margin,&sri,psq->exclude,psq->layer_mask,psq->object_type_mask);
 	bool res = rest_info(psq->shape,psq->transform,psq->margin,&sri,psq->exclude,psq->layer_mask,psq->object_type_mask);
-	Dictionary r(true);
+	Dictionary r;
 	if (!res)
 	if (!res)
 		return r;
 		return r;
 
 

+ 1 - 1
tools/editor/io_plugins/editor_texture_import_plugin.cpp

@@ -1372,7 +1372,7 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<Resourc
 
 
 		if (p_external) {
 		if (p_external) {
 			//used by exporter
 			//used by exporter
-			Array rects(true);
+			Array rects;
 			for(int i=0;i<atlases.size();i++) {
 			for(int i=0;i<atlases.size();i++) {
 				rects.push_back(atlases[i]->get_region());
 				rects.push_back(atlases[i]->get_region());
 				rects.push_back(atlases[i]->get_margin());
 				rects.push_back(atlases[i]->get_margin());