| 221 | } |
| 222 | |
| 223 | private static CFGNode ret( ReturnNode ret ) { |
| 224 | // Fetch return expression value and continuation from current frame |
| 225 | Object rez = val(ret.expr()); |
| 226 | Closure cont = clj(ret.rpc()); |
| 227 | // Lower Frame reference count; might delete frame |
| 228 | F.dec(); // Lower ref count |
| 229 | // Install replacement Frame; set return result over the CallEnd |
| 230 | F = cont._frame; |
| 231 | F.put0(cont._cc,rez); // Set return value into CallEnd |
| 232 | return cont._cc; // Return CallEnd as the new control |
| 233 | } |
| 234 | |
| 235 | private static String exit( ReturnNode ret ) { |
| 236 | return prettyPrint(ret.expr()._type,val(ret.expr())); |