Browse Source

memory ops implemented as OS functions by default

Ariel Manzur 8 years ago
parent
commit
67f65f6639
2 changed files with 8 additions and 121 deletions
  1. 0 42
      core/os/copymem.cpp
  2. 8 79
      core/os/copymem.h

+ 0 - 42
core/os/copymem.cpp

@@ -1,42 +0,0 @@
-/*************************************************************************/
-/*  copymem.cpp                                                          */
-/*************************************************************************/
-/*                       This file is part of:                           */
-/*                           GODOT ENGINE                                */
-/*                    http://www.godotengine.org                         */
-/*************************************************************************/
-/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
-/*                                                                       */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the       */
-/* "Software"), to deal in the Software without restriction, including   */
-/* without limitation the rights to use, copy, modify, merge, publish,   */
-/* distribute, sublicense, and/or sell copies of the Software, and to    */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions:                                             */
-/*                                                                       */
-/* The above copyright notice and this permission notice shall be        */
-/* included in all copies or substantial portions of the Software.       */
-/*                                                                       */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
-/*************************************************************************/
-#include "copymem.h"
-
-#include <string.h>
-
-void movemem_system(void *to, void *from,int amount) {
-
-  memmove(to,from,amount);
-
-}
-
-void zeromem(void* p_mem,size_t p_bytes) {
-
-	memset(p_mem,0,p_bytes);
-}

+ 8 - 79
core/os/copymem.h

@@ -31,89 +31,18 @@
 
 #include "typedefs.h"
 
-///@TODO use optimized routines for this, depending on platform. these are just the standard ones
+#ifdef PLATFORM_COPYMEM
 
-#define copymem(m_to,m_from,m_count) \
-	do {			 	\
-		unsigned char * _from=(unsigned char*)m_from;	\
-		unsigned char * _to=(unsigned char*)m_to;	\
-		int _count=m_count;		\
-		for (int _i=0;_i<_count;_i++)	\
-			_to[_i]=_from[_i];	\
-	} while (0);
-	/*
-					case 0:	*_dto++ = *_dfrom++;	\
-					case 7:	*_dto++ = *_dfrom++;	\
-							case 6:	*_dto++ = *_dfrom++;	\
-									case 5:	*_dto++ = *_dfrom++;	\
-										case 4:	*_dto++ = *_dfrom++;	\
-										case 3:	*_dto++ = *_dfrom++;	\
-										case 2:	*_dto++ = *_dfrom++;	\
-										case 1:	*_dto++ = *_dfrom++;	\
-	*/
-#define movemem_duff(m_to, m_from, m_count) \
-	do { \
-		if (m_to<m_from) {	\
-			unsigned char* _dto = (unsigned char*)m_to;	\
-			unsigned char* _dfrom = (unsigned char*)m_from;	\
-			int n = (m_count + 7) / 8;	\
-			switch (m_count % 8) {	\
-				do {					\
-					case 0:	*_dto++ = *_dfrom++;	\
-					case 7:	*_dto++ = *_dfrom++;	\
-					case 6:	*_dto++ = *_dfrom++;	\
-					case 5:	*_dto++ = *_dfrom++;	\
-					case 4:	*_dto++ = *_dfrom++;	\
-					case 3:	*_dto++ = *_dfrom++;	\
-					case 2:	*_dto++ = *_dfrom++;	\
-					case 1:	*_dto++ = *_dfrom++;	\
-				} while (--n > 0);			\
-			};						\
-		} else if (m_to>m_from) {					\
-			unsigned char* _dto = &((unsigned char*)m_to)[m_count-1];	\
-			unsigned char* _dfrom = &((unsigned char*)m_from)[m_count-1];	\
-			int n = (m_count + 7) / 8;	\
-			switch (m_count % 8) {	\
-				do {	\
-					case 0:	*_dto-- = *_dfrom--;	\
-					case 7:	*_dto-- = *_dfrom--;	\
-					case 6:	*_dto-- = *_dfrom--;	\
-					case 5:	*_dto-- = *_dfrom--;	\
-					case 4:	*_dto-- = *_dfrom--;	\
-					case 3:	*_dto-- = *_dfrom--;	\
-					case 2:	*_dto-- = *_dfrom--;	\
-					case 1:	*_dto-- = *_dfrom--;	\
-				} while (--n > 0);			\
-			};						\
-		}                           				\
-	} while(0)                           				\
+#include "platform_copymem.h" // included from platform/<current_platform>/platform_copymem.h"
 
-#define movemem_conventional(m_to,m_from,m_count) \
-	do {			 	\
-		if (m_to<m_from) {					\
-			unsigned char * _from=(unsigned char*)m_from;	\
-			unsigned char * _to=(unsigned char*)m_to;	\
-			int _count=m_count;				\
-			for (int _i=0;_i<_count;_i++)			\
-				_to[_i]=_from[_i];			\
-									\
-		} else if (m_to>m_from) {				\
-			unsigned char * _from=(unsigned char*)m_from;	\
-			unsigned char * _to=(unsigned char*)m_to;	\
-			int _count=m_count;				\
-			while (_count--) 				\
-				_to[_count]=_from[_count];		\
-									\
-									\
-		}							\
-	} while (0);							\
+#else
 
-void movemem_system(void*,void*,int);
+#include <string.h>
 
-#define movemem movemem_system
-
-
-void zeromem(void* p_mem,size_t p_bytes);
+#define copymem(to,from,count) memcpy(to,from,count)
+#define zeromem(to, count) memset(to, 0, count)
+#define movemem(to, from, count) memmove(to, from, count)
 
 #endif
 
+#endif