harpoon.Analysis.Instr
Class BasePointerPreservingUseDefer
java.lang.Object
harpoon.IR.Properties.UseDefer
harpoon.Analysis.Instr.BasePointerPreservingUseDefer
public class BasePointerPreservingUseDefer
- extends UseDefer
BasePointerPreservingUseDefer
defines a view of the
code where uses of derived pointer values are also considered uses
of the base pointers that were used to compute the derived value.
This forces the register allocator to keep base pointers alive
(perhaps in stack locations, perhaps in registers).
A better implementation of this class would work to ensure that
the usage counts of base pointers were not inflated too much by
these semantics because the base values are not REALLY being used
and so it would be a mistake to allocate them to registers most of
the time. Perhaps the solution here is not in this class but in
the uses OF this class.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BasePointerPreservingUseDefer
public BasePointerPreservingUseDefer(UseDefer backing,
Derivation deriv)
useC
public Collection useC(HCodeElement hce)
- Description copied from class:
UseDefer
- Returns a
Collection
of all the
Temp
s that may be read by hce
.
- Specified by:
useC
in class UseDefer
defC
public Collection defC(HCodeElement hce)
- Description copied from class:
UseDefer
- Returns a
Collection
of all the
Temp
s that are defined by hce
.
- Specified by:
defC
in class UseDefer