/** * Transfer for an exceptional-return statement. * * @param caller if non-null, only consider this caller */ public void transferExceptionalReturn( BasicBlock block, State state, NodeAndContext<Context> caller, Context edge_context) { Value v = state.readRegister(AbstractNode.EXCEPTION_REG); state.removeRegister(AbstractNode.EXCEPTION_REG); UserFunctionCalls.leaveUserFunction( v, true, block.getFunction(), state, c, caller, edge_context); }
/** * Transfer for a return statement. * * @param caller if non-null, only consider this caller */ public void transferReturn( int valueReg, BasicBlock block, State state, NodeAndContext<Context> caller, Context edge_context) { Value v; if (valueReg != AbstractNode.NO_VALUE) v = state.readRegister(valueReg); else v = Value.makeUndef(); UserFunctionCalls.leaveUserFunction( v, false, block.getFunction(), state, c, caller, edge_context); }