template <typename T> class ArrayRef; class CompiledMethodStorage; template<typename T> class LengthPrefixedArray;
namespace linker { class LinkerPatch;
} // namespace linker
class CompiledCode { public: // For Quick to supply an code blob
CompiledCode(CompiledMethodStorage* storage,
InstructionSet instruction_set, const ArrayRef<const uint8_t>& quick_code);
// To align an offset from a page-aligned value to make it suitable // for code storage. For example on ARM, to ensure that PC relative // valu computations work out as expected.
size_t AlignCode(size_t offset) const; static size_t AlignCode(size_t offset, InstructionSet instruction_set);
// Returns the difference between the code address and a usable PC. // Mainly to cope with `kThumb2` where the lower bit must be set.
size_t GetEntryPointAdjustment() const;
private: using InstructionSetField = BitField<InstructionSet, 0u, kInstructionSetFieldSize>;
CompiledMethodStorage* const storage_;
// Used to store the compiled code. const LengthPrefixedArray<uint8_t>* const quick_code_;
uint32_t packed_fields_;
};
class CompiledMethod final : public CompiledCode { public: // Constructs a CompiledMethod. // Note: Consider using the static allocation methods below that will allocate the CompiledMethod // in the swap space.
CompiledMethod(CompiledMethodStorage* storage,
InstructionSet instruction_set, const ArrayRef<const uint8_t>& quick_code, const ArrayRef<const uint8_t>& vmap_table, const ArrayRef<const uint8_t>& cfi_info, const ArrayRef<const linker::LinkerPatch>& patches);
// Marks the compiled method as being generated using an intrinsic codegen. // Such methods have no relationships to their code items. // This affects debug information generated at link time. void MarkAsIntrinsic() {
DCHECK(!IsIntrinsic());
SetPackedField<IsIntrinsicField>(/* value= */ true);
}
using IsIntrinsicField = BitField<bool, kIsIntrinsicLsb, kIsIntrinsicSize>;
// For quick code, holds code infos which contain stack maps, inline information, and etc. const LengthPrefixedArray<uint8_t>* const vmap_table_; // For quick code, a FDE entry for the debug_frame section. const LengthPrefixedArray<uint8_t>* const cfi_info_; // For quick code, linker patches needed by the method. const LengthPrefixedArray<linker::LinkerPatch>* const patches_;
};
} // namespace art
#endif// ART_DEX2OAT_DRIVER_COMPILED_METHOD_H_
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-29)
¤
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.