.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>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))> [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer' ldsfld thunk> [std]'PrelHandle'::'PrelHandle_stdin' callfunc () (thunk>) --> (func ( /* unit skipped */ ) --> class [std]PrelBase_Z0T) callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T pop ldsfld thunk<(func (thunk>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))> [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer' ldsfld thunk> [std]'PrelHandle'::'PrelHandle_stdout' callfunc () (thunk>) --> (func ( /* unit skipped */ ) --> class [std]PrelBase_Z0T) callfunc ( /* unit skipped */ ) --> class [std]PrelBase_Z0T pop ldsfld thunk<(func (thunk>) --> (func (/* unit skipped */) --> class [std]PrelBase_Z0T))> [std]'PrelHandle'::'PrelHandle_stdHandleFinalizzer' ldsfld thunk> [std]'PrelHandle'::'PrelHandle_stderr' callfunc () (thunk>) --> (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 } }