1{module, no_exception_in_catch}.  %% version = 0
2
3{exports, [{foo,1},{module_info,0},{module_info,1},{nested_of_1,4}]}.
4
5{attributes, []}.
6
7{labels, 22}.
8
9
10{function, nested_of_1, 4, 2}.
11  {label,1}.
12    {func_info,{atom,no_exception_in_catch},{atom,nested_of_1},4}.
13  {label,2}.
14    {test,is_tuple,{f,1},[{x,0}]}.
15    {test,test_arity,{f,1},[{x,0},3]}.
16    {allocate_zero,15,4}.
17    {get_tuple_element,{x,0},0,{y,9}}.
18    {get_tuple_element,{x,0},1,{y,10}}.
19    {get_tuple_element,{x,0},2,{y,11}}.
20    {move,{x,3},{y,14}}.
21    {move,{x,2},{y,13}}.
22    {move,{x,1},{y,12}}.
23    {move,{atom,nested3},{x,0}}.
24    {call_ext,1,{extfunc,erlang,erase,1}}.
25    {move,{atom,nested4},{x,0}}.
26    {call_ext,1,{extfunc,erlang,erase,1}}.
27    {move,{atom,nested},{x,0}}.
28    {call_ext,1,{extfunc,erlang,erase,1}}.
29    {bif,self,{f,0},[],{x,0}}.
30    {'try',{y,8},{f,13}}.
31    {'try',{y,7},{f,11}}.
32    {'try',{y,6},{f,9}}.
33    {'try',{y,5},{f,7}}.
34%% Because the following instructions can't possible throw an exception,
35%% label 7 used to get no state. Now the try_end itself will save the state.
36    {move,{x,0},{y,4}}.
37    {bif,self,{f,0},[],{x,0}}.
38    {'%live',1}.
39    {try_end,{y,5}}.
40    {test,is_eq_exact,{f,15},[{x,0},{y,4}]}.
41    {'try',{y,5},{f,6}}.
42    {'try',{y,3},{f,3}}.
43    {move,{y,9},{x,0}}.
44    {call,1,{f,17}}.
45    {try_end,{y,3}}.
46    {test,is_eq_exact,{f,15},[{x,0},{y,11}]}.
47    {move,{y,12},{x,0}}.
48    {call,1,{f,17}}.
49    {test_heap,3,1}.
50    {put_tuple,2,{x,1}}.
51    {put,{atom,value1}}.
52    {put,{x,0}}.
53    {move,{x,1},{x,0}}.
54    {jump,{f,5}}.
55  {label,3}.
56    {try_case,{y,3}}.
57    {move,{x,1},{y,1}}.
58    {move,{x,0},{y,2}}.
59    {move,{x,2},{y,3}}.
60    {bif,'=:=',{f,4},[{x,0},{y,10}],{x,3}}.
61    {move,{x,3},{y,0}}.
62    {bif,'=:=',{f,4},[{x,1},{y,11}],{x,4}}.
63    {bif,'and',{f,4},[{x,3},{x,4}],{x,3}}.
64    {test,is_eq_exact,{f,4},[{x,3},{atom,true}]}.
65    {kill,{y,0}}.
66    {kill,{y,1}}.
67    {kill,{y,2}}.
68    {kill,{y,3}}.
69    {move,{y,12},{x,0}}.
70    {call,1,{f,17}}.
71    {test_heap,3,1}.
72    {put_tuple,2,{x,1}}.
73    {put,{atom,caught1}}.
74    {put,{x,0}}.
75    {move,{x,1},{x,0}}.
76    {jump,{f,5}}.
77  {label,4}.
78    {bif,raise,{f,0},[{x,2},{x,1}],{x,0}}.
79    {'%live',1}.
80  {label,5}.
81    {try_end,{y,5}}.
82    {move,{x,0},{y,5}}.
83    {move,{y,13},{x,0}}.
84    {call,1,{f,17}}.
85    {move,{x,0},{x,1}}.
86    {move,{atom,nested3},{x,0}}.
87    {call_ext,2,{extfunc,erlang,put,2}}.
88    {move,{y,5},{x,0}}.
89    {jump,{f,8}}.
90  {label,6}.
91    {try_case,{y,5}}.
92    {move,{x,2},{y,5}}.
93    {move,{x,1},{y,3}}.
94    {move,{y,13},{x,0}}.
95    {call,1,{f,17}}.
96    {move,{x,0},{x,1}}.
97    {move,{atom,nested3},{x,0}}.
98    {call_ext,2,{extfunc,erlang,put,2}}.
99    {bif,raise,{f,0},[{y,5},{y,3}],{x,0}}.
100    {'%live',1}.
101    {jump,{f,8}}.
102  {label,7}.
103%% The instructions here used to be not checked.
104    {move,{x,3},{x,0}}.
105    {try_case,{y,5}}.
106    {bif,raise,{f,0},[{x,2},{x,1}],{x,0}}.
107    {'%live',1}.
108  {label,8}.
109    {try_end,{y,6}}.
110    {move,{x,0},{y,13}}.
111    {kill,{y,3}}.
112    {kill,{y,4}}.
113    {kill,{y,5}}.
114    {kill,{y,9}}.
115    {kill,{y,10}}.
116    {kill,{y,11}}.
117    {kill,{y,12}}.
118    {move,{y,14},{x,0}}.
119    {call,1,{f,17}}.
120    {move,{x,0},{x,1}}.
121    {move,{atom,nested4},{x,0}}.
122    {call_ext,2,{extfunc,erlang,put,2}}.
123    {move,{y,13},{x,0}}.
124    {jump,{f,10}}.
125  {label,9}.
126    {try_case,{y,6}}.
127    {move,{x,2},{y,13}}.
128    {move,{x,1},{y,12}}.
129    {kill,{y,3}}.
130    {kill,{y,4}}.
131    {kill,{y,5}}.
132    {kill,{y,9}}.
133    {kill,{y,10}}.
134    {kill,{y,11}}.
135    {move,{y,14},{x,0}}.
136    {call,1,{f,17}}.
137    {move,{x,0},{x,1}}.
138    {move,{atom,nested4},{x,0}}.
139    {call_ext,2,{extfunc,erlang,put,2}}.
140    {bif,raise,{f,0},[{y,13},{y,12}],{x,0}}.
141    {'%live',1}.
142  {label,10}.
143    {try_end,{y,7}}.
144    {test_heap,3,1}.
145    {put_tuple,2,{x,1}}.
146    {put,{atom,value}}.
147    {put,{x,0}}.
148    {move,{x,1},{x,0}}.
149    {jump,{f,12}}.
150  {label,11}.
151    {try_case,{y,7}}.
152    {test_heap,6,3}.
153    {put_tuple,2,{x,3}}.
154    {put,{x,0}}.
155    {put,{x,1}}.
156    {put_tuple,2,{x,0}}.
157    {put,{atom,caught}}.
158    {put,{x,3}}.
159    {'%live',1}.
160  {label,12}.
161    {try_end,{y,8}}.
162    {move,{x,0},{y,14}}.
163    {move,{atom,finalized},{x,1}}.
164    {kill,{y,12}}.
165    {kill,{y,13}}.
166    {move,{atom,nested},{x,0}}.
167    {call_ext,2,{extfunc,erlang,put,2}}.
168    {move,{y,14},{x,0}}.
169    {jump,{f,14}}.
170  {label,13}.
171    {try_case,{y,8}}.
172    {move,{x,2},{y,14}}.
173    {move,{x,1},{y,13}}.
174    {move,{atom,finalized},{x,1}}.
175    {kill,{y,12}}.
176    {move,{atom,nested},{x,0}}.
177    {call_ext,2,{extfunc,erlang,put,2}}.
178    {bif,raise,{f,0},[{y,14},{y,13}],{x,0}}.
179    {'%live',1}.
180  {label,14}.
181    {move,{x,0},{y,14}}.
182    {kill,{y,13}}.
183    {move,{atom,nested3},{x,0}}.
184    {call_ext,1,{extfunc,erlang,erase,1}}.
185    {move,{x,0},{y,13}}.
186    {move,{atom,nested4},{x,0}}.
187    {call_ext,1,{extfunc,erlang,erase,1}}.
188    {move,{x,0},{y,12}}.
189    {move,{atom,nested},{x,0}}.
190    {call_ext,1,{extfunc,erlang,erase,1}}.
191    {test_heap,5,1}.
192    {put_tuple,4,{x,1}}.
193    {put,{y,14}}.
194    {put,{y,13}}.
195    {put,{y,12}}.
196    {put,{x,0}}.
197    {move,{x,1},{x,0}}.
198    {deallocate,15}.
199    return.
200  {label,15}.
201    {try_case_end,{x,0}}.
202
203
204{function, foo, 1, 17}.
205  {label,16}.
206    {func_info,{atom,no_exception_in_catch},{atom,foo},1}.
207  {label,17}.
208    {move,{atom,ok},{x,0}}.
209    return.
210