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