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