Browse Source

patched incorrect negative method table index offset for simple metadata

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8082 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 năm trước cách đây
mục cha
commit
2270b6687b
1 tập tin đã thay đổi với 3 bổ sung1 xóa
  1. 3 1
      source/FoxIntermediateBackend.Mod

+ 3 - 1
source/FoxIntermediateBackend.Mod

@@ -10004,6 +10004,8 @@ TYPE
 					offset := 2;
 				END;
 				Emit(Add(position,reg,tmp,IntermediateCode.Immediate(addressType, ToMemoryUnits(system,system.addressSize  *(meta.MethodTableOffset + x.methodNumber + offset)))));
+			ELSIF meta.simple THEN
+				Emit(Add(position,reg,tmp,IntermediateCode.Immediate(addressType, ToMemoryUnits(system,system.addressSize  *(meta.MethodTableOffset + x.methodNumber)))));			
 			ELSE
 				Emit(Add(position,reg,tmp,IntermediateCode.Immediate(addressType, ToMemoryUnits(system,system.addressSize  *(meta.MethodTableOffset - x.methodNumber)))));
 			END;
@@ -11528,7 +11530,7 @@ TYPE
  		modulePointerSectionOffset: LONGINT; 
  		modulePointers: LONGINT;
  		
-		simple: BOOLEAN; (* simple = no methods, no module loading, no reflection *)
+		simple: BOOLEAN; (* simple = no module loading, no reflection *)
 
 		RecordBaseOffset: LONGINT;
 		MethodTableOffset: LONGINT; (* method table offset from zero *)