// Reserve space for thunks if needed before a method, return adjusted offset. virtual uint32_t ReserveSpace(uint32_t offset, const CompiledMethod* compiled_method,
MethodReference method_ref) = 0;
// Reserve space for thunks if needed after the last method, return adjusted offset. // The caller may use this method to preemptively force thunk space reservation and // then resume reservation for more methods. This is useful when there is a gap in // the .text segment, for example when going to the next oat file for multi-image. virtual uint32_t ReserveSpaceEnd(uint32_t offset) = 0;
// Patch method code. The input displacement is relative to the patched location, // the patcher may need to adjust it if the correct base is different. virtualvoid PatchCall(std::vector<uint8_t>* code,
uint32_t literal_offset,
uint32_t patch_offset,
uint32_t target_offset) = 0;
// Patch a reference to a dex cache location. virtualvoid PatchPcRelativeReference(std::vector<uint8_t>* code, const LinkerPatch& patch,
uint32_t patch_offset,
uint32_t target_offset) = 0;
// Patch a call to an entrypoint trampoline. virtualvoid PatchEntrypointCall(std::vector<uint8_t>* code, const LinkerPatch& patch,
uint32_t patch_offset) = 0;
// Patch a branch to a Baker read barrier thunk. virtualvoid PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, const LinkerPatch& patch,
uint32_t patch_offset) = 0;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.