浏览代码

Patched runtime calls to Synchronisation

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

+ 8 - 5
source/FoxIntermediateBackend.Mod

@@ -10576,7 +10576,7 @@ TYPE
 				GetBaseRegister(op.op,currentScope,scope);
 				GetBaseRegister(op.op,currentScope,scope);
 				parametersSize := ProcedureParametersSize(system,scope(SyntaxTree.ProcedureScope).ownerProcedure);
 				parametersSize := ProcedureParametersSize(system,scope(SyntaxTree.ProcedureScope).ownerProcedure);
 				IntermediateCode.AddOffset(op.op,ToMemoryUnits(system,addressType.sizeInBits)+parametersSize);
 				IntermediateCode.AddOffset(op.op,ToMemoryUnits(system,addressType.sizeInBits)+parametersSize);
-				IF backend.cooperative THEN
+				IF backend.cooperative OR PreciseGCSupport THEN
 					IntermediateCode.AddOffset(op.op,ToMemoryUnits(system,addressType.sizeInBits));
 					IntermediateCode.AddOffset(op.op,ToMemoryUnits(system,addressType.sizeInBits));
 				END;
 				END;
 				IntermediateCode.MakeMemory(op.op,addressType);
 				IntermediateCode.MakeMemory(op.op,addressType);
@@ -10916,7 +10916,7 @@ TYPE
 				InitVariables(scope);
 				InitVariables(scope);
 				
 				
 				
 				
-				IF PreciseGCSupport THEN
+				IF PreciseGCSupport & (x.code = NIL) & (~procedureType.noPAF) THEN
 					GetCodeSectionNameForSymbol(procedure, name);
 					GetCodeSectionNameForSymbol(procedure, name);
 					Basic.SuffixSegmentedName (name, Basic.MakeString ("@Descriptor"));
 					Basic.SuffixSegmentedName (name, Basic.MakeString ("@Descriptor"));
 					IntermediateCode.InitAddress(right, addressType, name, 0, 0);
 					IntermediateCode.InitAddress(right, addressType, name, 0, 0);
@@ -14135,13 +14135,16 @@ END FoxIntermediateBackend.
 
 
 Compiler.Compile FoxIntermediateBackend.Mod ~
 Compiler.Compile FoxIntermediateBackend.Mod ~
 
 
+#	Release.Build --path="/temp/obg/"  WinAosNewObjectFile ~
+#	StaticLinker.Link --fileFormat=PE32 --fileName=A2X.exe --extension=GofW --displacement=401000H --path="/temp/obg/" Runtime Trace Kernel32 Machine Heaps Modules Objects Kernel KernelLog Streams Commands Files WinFS Clock Dates Reals Strings Diagnostics BitSets StringPool ObjectFile GenericLinker Reflection  GenericLoader  BootConsole ~
+
 #	Release.Build --path="/temp/obg/" WinAosNewObjectFile ~
 #	Release.Build --path="/temp/obg/" WinAosNewObjectFile ~
-#	StaticLinker.Link --fileFormat=PE32 --fileName=A2H.exe --extension=GofW --displacement=401000H  Runtime Trace Kernel32 Machine Heaps Modules Objects Kernel KernelLog Streams Commands FIles WinFS Clock Dates Reals Strings Diagnostics BitSets StringPool ObjectFile GenericLinker Reflection  GenericLoader  BootConsole ~
-FSTools.CloseFiles A2H.exe ~
+#	StaticLinker.Link --fileFormat=PE32 --fileName=A2H.exe --extension=GofW --displacement=401000H  Runtime Trace Kernel32 Machine Heaps Modules Objects Kernel KernelLog Streams Commands Files WinFS Clock Dates Reals Strings Diagnostics BitSets StringPool ObjectFile GenericLinker Reflection  GenericLoader  BootConsole ~
+FSTools.CloseFiles A2X.exe ~
 
 
 SystemTools.FreeDownTo FoxIntermediateBackend ~
 SystemTools.FreeDownTo FoxIntermediateBackend ~
 
 
-Compiler.Compile -p=Win32G 
+Compiler.Compile -p=Win32G --destPath=/temp/obg/
 Runtime.Mod Trace.Mod Generic.Win32.Kernel32.Mod Win32.Machine.Mod Heaps.Mod 
 Runtime.Mod Trace.Mod Generic.Win32.Kernel32.Mod Win32.Machine.Mod Heaps.Mod 
 Generic.Modules.Mod Win32.Objects.Mod Win32.Kernel.Mod KernelLog.Mod Plugins.Mod Streams.Mod Pipes.Mod 
 Generic.Modules.Mod Win32.Objects.Mod Win32.Kernel.Mod KernelLog.Mod Plugins.Mod Streams.Mod Pipes.Mod 
 Commands.Mod I386.Reals.Mod Generic.Reflection.Mod TrapWriters.Mod CRC.Mod SystemVersion.Mod 
 Commands.Mod I386.Reals.Mod Generic.Reflection.Mod TrapWriters.Mod CRC.Mod SystemVersion.Mod