114 {
115 DateTime start = DateTime.Now;
116 Thread.CurrentThread.Name = "compiler";
117
118 try
119 {
120 try
121 {
122 return Compile(options);
123 }
124 catch (TypeInitializationException x)
125 {
126 if (x.InnerException is FatalCompilerErrorException)
127 throw x.InnerException;
128
129 throw;
130 }
131 }
132 catch (FatalCompilerErrorException x)
133 {
134 Console.Error.WriteLine(x.Message);
135 return 1;
136 }
137 catch (Exception x)
138 {
139 Console.Error.WriteLine();
140 Console.Error.WriteLine("*** COMPILER ERROR ***");
141 Console.Error.WriteLine();
142 Console.Error.WriteLine(
System.Reflection.Assembly.GetExecutingAssembly().FullName);
143 Console.Error.WriteLine(
System.
Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory());
144 Console.Error.WriteLine("{0} {1}-bit", Environment.Version, IntPtr.Size * 8);
145 Console.Error.WriteLine();
146 Console.Error.WriteLine(x);
147 return 2;
148 }
149 finally
150 {
151 if (time)
152 {
153 Console.WriteLine(
"Total cpu time: {0}",
System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime);
154 Console.WriteLine(
"User cpu time: {0}",
System.Diagnostics.Process.GetCurrentProcess().UserProcessorTime);
155 Console.WriteLine("Total wall clock time: {0}", DateTime.Now - start);
156 Console.WriteLine(
"Peak virtual memory: {0}",
System.Diagnostics.Process.GetCurrentProcess().PeakVirtualMemorySize64);
157 for (int i = 0; i <= GC.MaxGeneration; i++)
158 {
159 Console.WriteLine("GC({0}) count: {1}", i, GC.CollectionCount(i));
160 }
161 }
162 }
163 }