浏览代码

minor improvements

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7148 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 年之前
父节点
当前提交
ec98f7fdc6
共有 1 个文件被更改,包括 20 次插入76 次删除
  1. 20 76
      source/FoxArrayBase.Mod

+ 20 - 76
source/FoxArrayBase.Mod

@@ -96,15 +96,17 @@ TYPE
 	END;
 	END;
 
 
 	ArrayDescriptor*= RECORD
 	ArrayDescriptor*= RECORD
-		ptr: ANY;
-		adr: ADDRESS;
-		flags: SET;
-		dim: SIZE;
-		elementSize: SIZE;
+		ptr*: ANY;
+		adr*: ADDRESS;
+		flags*: SET;
+		dim*: SIZE;
+		elementSize*: SIZE;
 	END;
 	END;
 	
 	
+	Tensor = POINTER TO ArrayDescriptor;
+	
 	UnsafeArray*= POINTER {UNSAFE} TO RECORD(ArrayDescriptor)
 	UnsafeArray*= POINTER {UNSAFE} TO RECORD(ArrayDescriptor)
-		lens: ARRAY 8 OF LenInc;
+		lens*: ARRAY 8 OF LenInc;
 	END;
 	END;
 	
 	
 	A0 = RECORD(ArrayDescriptor) END;
 	A0 = RECORD(ArrayDescriptor) END;
@@ -127,42 +129,6 @@ TYPE
 	T7 = POINTER TO A7;
 	T7 = POINTER TO A7;
 	T8 = POINTER TO A8;
 	T8 = POINTER TO A8;
 	
 	
-	(*
-	(* tensor shape descriptors, statically typed, maximal dimension of a tensor limited to 32 for the time being *)
-	T0 = POINTER TO RECORD ptr: ANY; a: ARRAY MathLenOffset + 0* 8 OF CHAR END;
-	T1 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 1 * 8 OF CHAR END;
-	T2 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 2 * 8 OF CHAR END;
-	T3 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 3 * 8 OF CHAR END;
-	T4 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 4 * 8 OF CHAR END;
-	T5 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 5 * 8 OF CHAR END;
-	T6 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 6 * 8 OF CHAR END;
-	T7 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 7 * 8 OF CHAR END;
-	T8 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 8 * 8 OF CHAR END;
-	*)
-	T9 = POINTER TO RECORD ptr: ANY; a:ARRAY MathLenOffset + 9 * 8 OF CHAR END;
-	T10 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 10 * 8 OF CHAR END;
-	T11 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 11 * 8 OF CHAR END;
-	T12 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 12 * 8 OF CHAR END;
-	T13 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 13 * 8 OF CHAR END;
-	T14 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 14 * 8 OF CHAR END;
-	T15 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 15 * 8 OF CHAR END;
-	T16 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 16 * 8 OF CHAR END;
-	T17 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 17 * 8 OF CHAR END;
-	T18 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 18 * 8 OF CHAR END;
-	T19 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 19 * 8 OF CHAR END;
-	T20 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 20 * 8 OF CHAR END;
-	T21 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 21 * 8 OF CHAR END;
-	T22 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 22 * 8 OF CHAR END;
-	T23 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 23 * 8 OF CHAR END;
-	T24 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 24 * 8 OF CHAR END;
-	T25 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 25 * 8 OF CHAR END;
-	T26 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 26 * 8 OF CHAR END;
-	T27 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 27 * 8 OF CHAR END;
-	T28 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 28 * 8 OF CHAR END;
-	T29 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 29 * 8 OF CHAR END;
-	T30 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 30 * 8 OF CHAR END;
-	T31 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 31 * 8 OF CHAR END;
-	T32 =POINTER TO  RECORD ptr: ANY;a: ARRAY MathLenOffset + 32 * 8 OF CHAR END;
 
 
 	(* used for optimizations of MatMul with small sizes (Alexey Morozov) *)
 	(* used for optimizations of MatMul with small sizes (Alexey Morozov) *)
 	SmallMatMul* = PROCEDURE(dadr, ladr, radr: LONGINT);
 	SmallMatMul* = PROCEDURE(dadr, ladr, radr: LONGINT);
@@ -303,7 +269,9 @@ VAR
 	PROCEDURE GetFlags( base: Address ): SET;
 	PROCEDURE GetFlags( base: Address ): SET;
 	VAR set: SET;
 	VAR set: SET;
 	BEGIN
 	BEGIN
-		SYSTEM.GET( base + MathFlagsOffset, set );  RETURN set;
+		SYSTEM.GET( base + MathFlagsOffset, set );  
+		
+		RETURN set;
 	END GetFlags;
 	END GetFlags;
 
 
 	PROCEDURE PutDim( base: Address;  dim: LONGINT );
 	PROCEDURE PutDim( base: Address;  dim: LONGINT );
@@ -357,12 +325,9 @@ VAR
 	END Report;
 	END Report;
 
 
 	PROCEDURE GetArrayDesc( dim: LONGINT ): ANY;
 	PROCEDURE GetArrayDesc( dim: LONGINT ): ANY;
-	VAR (* t: TensorType;  *) ptr: ANY;
+	VAR (* t: TensorType;  *) ptr: Tensor;
 		p0: T0;
 		p0: T0;
-		p1: T1; p2: T2; p3: T3; p4: T4; p5: T5; p6: T6; p7: T7; p8: T8; p9: T9;
-		p10: T10; p11: T11; p12: T12; p13: T13; p14: T14; p15: T15; p16: T16; p17: T17; p18: T18; p19: T19;
-		p20: T20; p21: T21; p22: T22; p23: T23; p24: T24; p25: T25; p26: T26; p27: T27; p28: T28; p29: T29;
-		p30: T30; p31: T31; p32: T32;
+		p1: T1; p2: T2; p3: T3; p4: T4; p5: T5; p6: T6; p7: T7; p8: T8; 
 
 
 	BEGIN
 	BEGIN
 		(*
 		(*
@@ -382,34 +347,13 @@ VAR
 		|6:NEW(p6); ptr := p6;
 		|6:NEW(p6); ptr := p6;
 		|7:NEW(p7); ptr := p7;
 		|7:NEW(p7); ptr := p7;
 		|8:NEW(p8); ptr := p8;
 		|8:NEW(p8); ptr := p8;
-		|9:NEW(p9); ptr := p9;
-		|10:NEW(p10); ptr := p10;
-		|11:NEW(p11); ptr := p11;
-		|12:NEW(p12); ptr := p12;
-		|13:NEW(p13); ptr := p13;
-		|14:NEW(p14); ptr := p14;
-		|15:NEW(p15); ptr := p15;
-		|16:NEW(p16); ptr := p16;
-		|17:NEW(p17); ptr := p17;
-		|18:NEW(p18); ptr := p18;
-		|19:NEW(p19); ptr := p19;
-		|20:NEW(p20); ptr := p20;
-		|21:NEW(p21); ptr := p21;
-		|22:NEW(p22); ptr := p22;
-		|23:NEW(p23); ptr := p23;
-		|24:NEW(p24); ptr := p24;
-		|25:NEW(p25); ptr := p25;
-		|26:NEW(p26); ptr := p26;
-		|27:NEW(p27); ptr := p27;
-		|28:NEW(p28); ptr := p28;
-		|29:NEW(p29); ptr := p29;
-		|30:NEW(p30); ptr := p30;
-		|31:NEW(p31); ptr := p31;
-		|32:NEW(p32); ptr := p32;
-		END;
-
-		PutDim( SYSTEM.VAL( LONGINT, ptr ), dim );
-		PutFlags( SYSTEM.VAL( LONGINT, ptr ), {TensorFlag} );  RETURN ptr;
+		ELSE 
+			HALT(200)
+		END;
+		
+		ptr.dim := dim;
+		ptr.flags := {TensorFlag};
+		RETURN ptr;
 	END GetArrayDesc;
 	END GetArrayDesc;
 
 
 	PROCEDURE Halt( code: LONGINT;  left, right, dest: LONGINT );
 	PROCEDURE Halt( code: LONGINT;  left, right, dest: LONGINT );