Add space optimisation
This commit is contained in:
parent
be38c2feac
commit
7a4ad4454e
1 changed files with 23 additions and 2 deletions
|
@ -544,6 +544,8 @@ options turned on or off, and it doesn't require to alter the base system by
|
|||
editing \eg{} \texttt{/usr/lib/libc-*.so}. Instead, when the \ehelf{} data is
|
||||
required, those files can simply be \lstc{dlopen}'d.
|
||||
|
||||
\todo{Talk about switch structure, considered and ignored registers, etc.}
|
||||
|
||||
\todo{More details here? Is it necessary or just too technical?}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
@ -602,7 +604,26 @@ the original program size.
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\subsection{Space optimization}
|
||||
\todo{}
|
||||
|
||||
A lot of small space optimizations, such as filtering out empty FDEs, merging
|
||||
together the rows that are equivalent on all the registers kept, etc.\ were
|
||||
made in order to shrink the \ehelfs.
|
||||
|
||||
\medskip
|
||||
|
||||
The major optimization that most reduced the output size was to use a more
|
||||
flexible if/else if tree implementing a binary search on the program counter
|
||||
relevant intervals, instead of a huge switch. In the process, we also
|
||||
\emph{outline} a lot of code, that is, find out identical code blocks, move
|
||||
them outside of the if/else tree, identify them by a label, and jump to them
|
||||
using a \lstc{goto}, which de-duplicates a lot of code and contributes greatly
|
||||
to the shrinking. In the process, we noticed that the vast majority of FDE rows
|
||||
are actually taken among very few ``common'' FDE rows.
|
||||
|
||||
This makes this optimisation really efficient, as seen later in
|
||||
Section~\ref{ssec:results_size}, but also makes it an interesting question ---
|
||||
not investigated during this internship --- to find out whether standard DWARF
|
||||
data could be efficiently compressed in this way.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
@ -635,7 +656,7 @@ the original program size.
|
|||
\todo{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\subsection{Measured compactness}
|
||||
\subsection{Measured compactness}\label{ssec:results_size}
|
||||
\todo{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
|
Loading…
Reference in a new issue