Extra Performance Linkage (XPLINK) is a new
call linkage between programs which has the potential for a significant
performance increase when used in an environment of frequent calls
between small functions or subprograms.
non-XPLINK application
A
non-XPLINK application is one in which none of the executables involved
have been compiled with the XPLINK compiler option specified.
XPLINK application
An
XPLINK application is one in which at least one of the executables
involved as been compiled with the XPLINK compiler option specified.
XPLINK and non-XPLINK compiled source code cannot be link-edited together
into the same executable, but XPLINK and non-XPLINK executables (for
example, DLLs) can be mixed in the same application. The performance
advantage from XPLINK is increased as the percentage of XPLINK executables
in an application increases.
XPLINK environment
An
XPLINK environment is one in which Language Environment has initialized
the necessary resources to run an XPLINK application (for example,
a downward-growing stack). This is accomplished by either invoking
an initial program that was compiled with the XPLINK compiler option
specified, or specifying the XPLINK(ON) runtime option.
downward-growing stack
The standard Language Environment stack
is upward-growing. For XPLINK, a main feature of its more efficient
program prolog code is a program stack which grows from higher to
lower addresses. This provides implicit protection against exceeding
available stack storage, rather than having to make an explicit test,
and therefore reduces path length.
guard page
A write-protected area of storage at the
low address end of a downward-growing stack segment. This allows
a stack frame (smaller than the size of the guard page) to be allocated
by storing into the low address of the stack frame. Stack segment
overflow and extension is triggered by the exception resulting from
a prolog storing into the guard page (implicit stack overflow detection).
glue code
With respect to XPLINK compatibility,
glue code refers to the code inserted between XPLINK and non-XPLINK
executables, which converts the stack structure, registers and parameter
list into a format suitable for the called function, and then restores
the environment upon return.