38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2012 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
#include "mdef.h"
|
|
|
|
#include "rtnhdr.h"
|
|
#include "stack_frame.h"
|
|
#include "get_ret_targ.h"
|
|
|
|
GBLREF stack_frame *frame_pointer;
|
|
GBLREF unsigned char *msp, *stackbase, *stacktop;
|
|
|
|
/* return the target of the return for this frame; return NULL if not called as extrinsic */
|
|
mval *get_ret_targ(stack_frame **retsf)
|
|
{
|
|
stack_frame *sf;
|
|
|
|
assert((stackbase >= msp) && (stacktop < msp));
|
|
assert(((stack_frame *)stackbase >= frame_pointer) && ((stack_frame *)stacktop < frame_pointer));
|
|
|
|
for (sf = frame_pointer; NULL != sf; sf = sf->old_frame_pointer)
|
|
if (SFT_COUNT & sf->type) /* a counted frame; look no further */
|
|
{
|
|
if (NULL != retsf)
|
|
*retsf = sf;
|
|
return sf->ret_value;
|
|
}
|
|
return NULL;
|
|
}
|