Просмотр исходного кода

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 лет назад
Родитель
Сommit
2270b6687b
1 измененных файлов с 3 добавлено и 1 удалено
  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 *)