112 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.bp
 | 
						|
.NH 1
 | 
						|
Inline substitution
 | 
						|
.NH 2
 | 
						|
Introduction
 | 
						|
.PP
 | 
						|
The Inline Substitution technique (IL)
 | 
						|
tries to decrease the overhead associated
 | 
						|
with procedure calls (invocations).
 | 
						|
During a procedure call, several actions
 | 
						|
must be undertaken to set up the right
 | 
						|
environment for the called procedure.
 | 
						|
.[
 | 
						|
johnson calling sequence
 | 
						|
.]
 | 
						|
On return from the procedure, most of these
 | 
						|
effects must be undone.
 | 
						|
This entire process introduces significant
 | 
						|
costs in execution time as well as
 | 
						|
in object code size.
 | 
						|
.PP
 | 
						|
The inline substitution technique replaces
 | 
						|
some of the calls by the modified body of
 | 
						|
the called procedure, hence eliminating
 | 
						|
the overhead.
 | 
						|
Furthermore, as the calling and called procedure
 | 
						|
are now integrated, they can be optimized
 | 
						|
together, using other techniques of the optimizer.
 | 
						|
This often leads to extra opportunities for
 | 
						|
optimization
 | 
						|
.[
 | 
						|
ball predicting effects
 | 
						|
.]
 | 
						|
.[
 | 
						|
carter code generation cacm
 | 
						|
.]
 | 
						|
.[
 | 
						|
scheifler inline cacm
 | 
						|
.]
 | 
						|
.PP
 | 
						|
An inline substitution of a call to a procedure P increases
 | 
						|
the size of the program, unless P is very small or P is
 | 
						|
called only once.
 | 
						|
In the latter case, P can be eliminated.
 | 
						|
In practice, procedures that are called only once occur
 | 
						|
quite frequently, due to the
 | 
						|
introduction of structured programming.
 | 
						|
(Carter
 | 
						|
.[
 | 
						|
carter umi ann arbor
 | 
						|
.]
 | 
						|
states that almost 50% of the Pascal procedures
 | 
						|
he analyzed were called just once).
 | 
						|
.PP
 | 
						|
Scheifler
 | 
						|
.[
 | 
						|
scheifler inline cacm
 | 
						|
.]
 | 
						|
has a more general view of inline substitution.
 | 
						|
In his model, the program under consideration is
 | 
						|
allowed to grow by a certain amount,
 | 
						|
i.e. code size is sacrificed to speed up the program.
 | 
						|
The above two cases are just special cases of
 | 
						|
his model, obtained by setting the size-change to
 | 
						|
(approximately) zero.
 | 
						|
He formulates the substitution problem as follows:
 | 
						|
.IP
 | 
						|
"Given a program, a subset of all invocations,
 | 
						|
a maximum program size, and a maximum procedure size,
 | 
						|
find a sequence of substitutions that minimizes
 | 
						|
the expected execution time."
 | 
						|
.LP
 | 
						|
Scheifler shows that this problem is NP-complete
 | 
						|
.[~[
 | 
						|
aho hopcroft ullman analysis algorithms
 | 
						|
.], chapter 10]
 | 
						|
by reduction to the Knapsack Problem.
 | 
						|
Heuristics will have to be used to find a near-optimal
 | 
						|
solution.
 | 
						|
.PP
 | 
						|
In the following chapters we will extend
 | 
						|
Scheifler's view and adapt it to the EM Global Optimizer.
 | 
						|
We will first describe the transformations that have
 | 
						|
to be applied to the EM text when a call is substituted
 | 
						|
in line.
 | 
						|
Next we will examine in which cases inline substitution
 | 
						|
is not possible or desirable.
 | 
						|
Heuristics will be developed for
 | 
						|
chosing a good sequence of substitutions.
 | 
						|
These heuristics make no demand on the user
 | 
						|
(such as making profiles
 | 
						|
.[
 | 
						|
scheifler inline cacm
 | 
						|
.]
 | 
						|
or giving pragmats
 | 
						|
.[~[
 | 
						|
ichbiah ada military standard
 | 
						|
.], section 6.3.2]),
 | 
						|
although the model could easily be extended
 | 
						|
to use such information.
 | 
						|
Finally, we will discuss the implementation
 | 
						|
of the IL phase of the optimizer.
 | 
						|
.PP
 | 
						|
We will often use the term inline expansion
 | 
						|
as a synonym of inline substitution.
 | 
						|
.sp 0
 | 
						|
The inverse technique of procedure abstraction
 | 
						|
(automatic subroutine generation)
 | 
						|
.[
 | 
						|
shaffer subroutine generation
 | 
						|
.]
 | 
						|
will not be discussed in this report.
 |