blob: 815c5e73f69ed0c4086f01e5841a3875a2a04ea7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
.assembly extern System.Console
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
.ver 4:0:0:0
}
.assembly extern mscorlib {}
.assembly extern System {}
.assembly EHTest {}
.class public EHTest
{
.method public static void f2() cil managed synchronized
{
.maxstack 500
.locals init (int32 V_0,
int64 V_1)
br start_try1
start_fault1:
br fault1_br
start_finally1:
TARGET_1_0:
sizeof native unsigned int
sizeof [mscorlib]System.UIntPtr
conv.i4
stloc.0
ldloc.0
sub
newarr [mscorlib]System.Int32
ldc.i4 112
ldc.i4 41
sub
ldc.i4 3
shr
stloc.0
ldloc.0
ldc.i4 82
sub
ldelem.i4
ldc.i4 26
box int32
unbox int32
ldind.i4
bge TARGET_1_1
TARGET_1_1:
finally1_out: endfinally
end_finally1:
fault1_br:
start_try2:
call void EHTest::f3()
try2_out:
leave fault1_out
end_try2:
fault1_out: endfault
end_fault1:
start_try1:
call void EHTest::f3()
try1_out:
newobj instance void [mscorlib]System.ApplicationException::.ctor()
throw
end_try1:
OUT: ret
OUT2:
leave OUT
.try start_try2 to end_try2 finally handler start_finally1 to end_finally1
.try start_try1 to end_try1 fault handler start_fault1 to end_fault1
}
.method public static void f3() cil managed synchronized
{
call void [mscorlib]System.GC::Collect()
ret
}
.method public static int32 Main() cil managed
{
.entrypoint
.try
{
call void EHTest::f2()
leave RET
}
catch [mscorlib]System.Exception
{
leave RET
}
RET: ldc.i4 100
ldstr "PASSED"
call void [System.Console]System.Console::WriteLine(string)
ret
}
}
|