Reorganisation of the source tree
[ghc-hetmet.git] / compiler / ilxGen / Entry.ilx
diff --git a/compiler/ilxGen/Entry.ilx b/compiler/ilxGen/Entry.ilx
new file mode 100644 (file)
index 0000000..674c831
--- /dev/null
@@ -0,0 +1,53 @@
+.assembly test { }
+.assembly extern 'mscorlib' { }
+.assembly extern ilx 'std' { }
+// ENTRYPOINT
+.class MainMain { 
+   .method public static void Main(class [mscorlib]System.String[]) {
+       .entrypoint
+           ldstr "LOG: *** loading main value"   call void [mscorlib]System.Console::WriteLine(class [mscorlib]System.String)
+      ldsfld thunk<(func ( /* unit skipped */ ) --> class [std]PrelBase_Z0T)> class Main::'Main_main'
+
+           ldstr "LOG: *** evaluating main value"
+           call void [mscorlib]System.Console::WriteLine(class [mscorlib]System.String) 
+      callfunc () --> (func ( /* unit skipped */ ) --> class [std]PrelBase_Z0T)
+           ldstr "LOG: *** calling main value"
+           call void [mscorlib]System.Console::WriteLine(class [mscorlib]System.String) 
+      // ldunit
+      callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T
+
+      pop
+
+
+// HACK HACK HACK
+// Call the "finalizers" for stdin, stdout and stderr, because COM+ doesn't 
+// guarantee that finalizers will be run. WE DON'T GUARANTEE TO RUN ANY
+// OTHER FINALIZERS...
+
+      ldstr "LOG: ***calling critical finalizers manually in main()"
+           call void [mscorlib]System.Console::WriteLine(class [mscorlib]System.String)
+
+ldsfld thunk<(func (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handlezuzu>>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))>  [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer'
+ldsfld thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>  [std]'PrelHandle'::'PrelHandle_stdin'
+      callfunc () (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>) --> (func ( /* unit skipped */ ) -->  class [std]PrelBase_Z0T)
+      callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T
+      pop
+
+ldsfld thunk<(func (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handlezuzu>>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))>  [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer'
+ldsfld thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>  [std]'PrelHandle'::'PrelHandle_stdout'
+      callfunc () (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>) --> (func ( /* unit skipped */ ) -->  class [std]PrelBase_Z0T)
+      callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T
+      pop
+
+ldsfld thunk<(func (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handlezuzu>>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))>  [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer'
+ldsfld thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>  [std]'PrelHandle'::'PrelHandle_stderr'
+      callfunc () (thunk<class [std]PrelIOBase_MVar<class [std]PrelIOBase_Handle__>>) --> (func ( /* unit skipped */ ) -->  class [std]PrelBase_Z0T)
+      callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T
+      pop
+
+      ldstr "LOG: exit main()\n"
+           call void [mscorlib]System.Console::WriteLine(class [mscorlib]System.String)
+      ret
+   }
+}
+