summaryrefslogtreecommitdiff
path: root/tests/src/JIT/Methodical/Invoke/fptr/recurse_jmp.il
blob: 000caeae350d055503eec5c6e1f91d4e2a78bd81 (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.





.assembly extern mscorlib { }
.assembly extern System.Console
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
  .ver 4:0:0:0
}
.assembly 'recurse'// as "recurse"
{

  //  .custom instance void ['mscorlib']System.Diagnostics.DebuggableAttribute::.ctor(bool,
  //                                                                                  bool) = ( 01 00 00 01 00 00 ) 
  
  
}
.module 'recurse.exe'
// MVID: {885F4995-E80A-480B-BB9B-30139BED90E1}
.namespace TestCase
{
  .class private auto ansi Test extends ['mscorlib']System.Object
  {
    .method private hidebysig static int32 
            Fact1(int32& arg,
                  int32& result) il managed
    {
      // Code size       38 (0x26)
      .maxstack  3
      IL_0000:  ldarg.0
      IL_0001:  ldind.i4
      IL_0002:  ldc.i4.1
      IL_0003:  bgt.s      IL_0005
      
      			ldc.i4     0x12345
      			br        end_of_method
      
      IL_0005:  ldarg.1
      IL_0006:  dup
      IL_0007:  ldind.i4
      IL_0008:  ldarg.0
      IL_0009:  ldind.i4
      IL_000a:  mul
      IL_000b:  stind.i4
      IL_000c:  ldarg.0
      IL_000d:  dup
      IL_000e:  ldind.i4
      IL_000f:  ldc.i4.1
      IL_0010:  sub
      IL_0011:  stind.i4
      			
      			jmp			int32 TestCase.Test::Fact1(int32&, int32&)
      			ldc.i4.0
      			
      end_of_method:
      			ret

    } // end of method 'Test::Fact1'

    .method private hidebysig static int32
            Main() il managed
    {
      .entrypoint
      // Code size       72 (0x48)
      .maxstack  2
      .locals (int32 V_0,
               int32 V_1,
               int32 V_2)
      IL_0000:  ldc.i4.6
      IL_0001:  stloc.0
      IL_0002:  ldc.i4.1
      IL_0003:  stloc.1
      IL_0004:  ldloca.s   V_0
      IL_0006:  ldloca.s   V_1
      IL_0008:  call       int32 TestCase.Test::Fact1(int32&,
                                                      int32&)
      IL_000d:  ldc.i4     0x12345
      IL_0012:  beq.s      IL_0022

      IL_0014:  ldstr      "FAILED"
      IL_0019:  call       void [System.Console]System.Console::WriteLine(class System.String)
      IL_001e:  ldc.i4.1
      IL_001f:  stloc.2
      IL_0020:  br.s       IL_0046

      IL_0022:  ldloc.1
      IL_0023:  ldc.i4     0x2d0
      IL_0028:  beq.s      IL_0038

      IL_002a:  ldstr      "FAILED"
      IL_002f:  call       void [System.Console]System.Console::WriteLine(class System.String)
      IL_0034:  ldc.i4.2
      IL_0035:  stloc.2
      IL_0036:  br.s       IL_0046

      IL_0038:  ldstr      "PASSED"
      IL_003d:  call       void [System.Console]System.Console::WriteLine(class System.String)
      IL_0042:  ldc.i4    0x64
      IL_0043:  stloc.2
      IL_0044:  br.s       IL_0046

      IL_0046:  ldloc.2
      IL_0047:  ret
      IL_0048:  
    } // end of method 'Test::Main'

    .method public hidebysig specialname rtspecialname 
            instance void .ctor() il managed
    {
      // Code size       7 (0x7)
      .maxstack  8
      IL_0000:  ldarg.0
      IL_0001:  call       instance void ['mscorlib']System.Object::.ctor()
      IL_0006:  ret
      IL_0007:  
    } // end of method 'Test::.ctor'

  } // end of class 'Test'

} // end of namespace 'TestCase'

//*********** DISASSEMBLY COMPLETE ***********************