Accelerator Manual (G06.24+, H06.03+)

Accelerator Performance Issues
Accelerator Manual527303-002
6-10
Dynamic Procedure Calls
Detection Guidelines
The Accelerator issues the following note:
Note 3: The Accelerator was not able to determine return
value size of the following dynamic procedure calls in
your program: Call at offset <address> in proc <name>;
guessed return size <num>
Suggested Changes
For DPCLs in TAL programs, you have three options:
If the TAL compiler processed a call to formal procedure parameters with a
DPCL instruction, recompile with a version of TAL compiler released on or after
15JUN91. TAL now emits one extra STRP instruction after formal procedure
parameter DPCLs to show the Accelerator the return RP value of the function.
(The TAL compiler does not emit the extra instruction for DPCLs located inside
CODE statements.)
If a DPCL instruction occurs in a CODE statement, use a STRP instruction to
tell the Accelerator how many registers in the register stack are part of the
value returned by the dynamically called procedure. To eliminate the transition
by recoding, assign the return value of the dynamically called procedure to a
variable. Recompile and accelerate the program again. Only use this method
for performance-critical procedures.
If a DPCL instruction occurs for any other reason, you must recode your
programs to eliminate the transitions into TNS code.
For DPCLs in C, FORTRAN, or Pascal, you must recode to eliminate transitions
into TNS code. Before you try to recode your program, check to see if the
predicted and actual return value sizes match. If they match, the program does not
make a transition into TNS code and you do not need to recode. To eliminate the
transition by recoding, immediately assign the return value of the dynamically
called procedure to a local variable.