Package com.android.dx.rop.code
Interface TranslationAdvice
- All Known Implementing Classes:
ConservativeTranslationAdvice
,DexTranslationAdvice
public interface TranslationAdvice
Interface for "advice" passed from the late stage of translation back
to the early stage. This allows for the final target architecture to
exert its influence early in the translation process without having
the early stage code be explicitly tied to the target.
-
Method Summary
Modifier and TypeMethodDescriptionint
Gets the maximum register width that can be represented optimally.boolean
hasConstantOperation
(Rop opcode, RegisterSpec sourceA, RegisterSpec sourceB) Returns an indication of whether the target can directly represent an instruction with the given opcode operating on the given arguments, where the last source argument is used as a constant.boolean
requiresSourcesInOrder
(Rop opcode, RegisterSpecList sources) Returns true if the translation target requires the sources of the specified opcode to be in order and contiguous (eg, for an invoke-range)
-
Method Details
-
hasConstantOperation
Returns an indication of whether the target can directly represent an instruction with the given opcode operating on the given arguments, where the last source argument is used as a constant. (That is, the last argument must have a type which indicates it is a known constant.) The instruction associated must have exactly two sources.- Parameters:
opcode
-non-null;
the opcodesourceA
-non-null;
the first sourcesourceB
-non-null;
the second source- Returns:
true
iff the target can represent the operation using a constant for the last argument
-
requiresSourcesInOrder
Returns true if the translation target requires the sources of the specified opcode to be in order and contiguous (eg, for an invoke-range)- Parameters:
opcode
-non-null;
opcodesources
-non-null;
source list- Returns:
true
iff the target requires the sources to be in order and contiguous.
-
getMaxOptimalRegisterCount
int getMaxOptimalRegisterCount()Gets the maximum register width that can be represented optimally. For example, Dex bytecode does not have instruction forms that take register numbers larger than 15 for all instructions so DexTranslationAdvice returns 15 here.- Returns:
- register count noted above
-