woollybah 9 лет назад
Родитель
Сommit
96ed2c3a88
1 измененных файлов с 6 добавлено и 13 удалено
  1. 6 13
      blitz.mod/blitz_array.h

+ 6 - 13
blitz.mod/blitz_array.h

@@ -10,26 +10,19 @@ extern "C"{
 
 #define BBNULLARRAY (&bbEmptyArray)
 
-#ifdef __x86_64
-#define BBARRAYSIZE(q,n) ((2*sizeof(void*)+12)+(1+n)*sizeof(int)+(q))
-#define BBARRAYDATA(p,n) ((void*)((char*)(p)+(2*sizeof(void*)+12)+(1+n)*sizeof(int)))
-#else
-#define BBARRAYSIZE(q,n) ((2*sizeof(void*)+12)+(n)*sizeof(int)+(q))
-#define BBARRAYDATA(p,n) ((void*)((char*)(p)+(2*sizeof(void*)+12)+(n)*sizeof(int)))
-#endif
+#define BBARRAYSIZE(q,n) (((offsetof(BBArray, scales) + n * sizeof(int)+0x0f) & ~0x0f)+(q))
+#define BBARRAYDATA(p,n) ((void*)((char*)(p)+((offsetof(BBArray, scales) + n * sizeof(int)+0x0f) & ~0x0f)))
 #define BBARRAYDATAINDEX(p,n,i) bbArrayIndex(p,n,i)
 
 struct BBArray{
 	//extends BBObject
 	BBClass*	clas;
-	//int			refs;
 
-	const char* type;			//4
-	int			dims;			//8
-	unsigned int size;			//12 : total size minus this header
+	const char* type;			//
+	int			dims;			//
+	unsigned int size;			// total size minus this header
 	int			data_size;		// size of data element
-	int			scales[1];		//16 : [dims]
-								//sizeof=16+dims*sizeof(int)
+	int			scales[1];		// [dims]
 };
 
 extern		BBClass bbArrayClass;