Explorar o código

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 %!s(int64=7) %!d(string=hai) anos
pai
achega
2270b6687b
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  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 *)