< prev index next >

src/cpu/aarch64/vm/nativeInst_aarch64.hpp

Print this page

        

*** 52,66 **** class NativeInstruction VALUE_OBJ_CLASS_SPEC { friend class Relocation; friend bool is_NativeCallTrampolineStub_at(address); public: ! enum { instruction_size = 4 }; inline bool is_nop(); inline bool is_illegal(); inline bool is_return(); bool is_jump(); inline bool is_jump_or_nop(); inline bool is_cond_jump(); bool is_safepoint_poll(); bool is_movz(); bool is_movk(); --- 52,77 ---- class NativeInstruction VALUE_OBJ_CLASS_SPEC { friend class Relocation; friend bool is_NativeCallTrampolineStub_at(address); public: ! enum { ! instruction_size = 4 ! }; ! ! juint encoding() const { ! return uint_at(0); ! } ! ! bool is_blr() const { return (encoding() & 0xfffffc1f) == 0xd63f0000; } ! bool is_adr_aligned() const { return (encoding() & 0xff000000) == 0x10000000; } // adr Xn, <label>, where label is aligned to 4 bytes (address of instruction). ! inline bool is_nop(); inline bool is_illegal(); inline bool is_return(); bool is_jump(); + bool is_general_jump(); inline bool is_jump_or_nop(); inline bool is_cond_jump(); bool is_safepoint_poll(); bool is_movz(); bool is_movk();
*** 339,353 **** }; // An interface for accessing/manipulating native leal instruction of form: // leal reg, [reg + offset] ! class NativeLoadAddress: public NativeMovRegMem { ! static const bool has_rex = true; ! static const int rex_size = 1; ! public: void verify(); void print (); // unit test stuff static void test() {} --- 350,368 ---- }; // An interface for accessing/manipulating native leal instruction of form: // leal reg, [reg + offset] ! class NativeLoadAddress: public NativeInstruction { ! enum AArch64_specific_constants { ! instruction_size = 4, ! instruction_offset = 0, ! data_offset = 0, ! next_instruction_offset = 4 ! }; + public: void verify(); void print (); // unit test stuff static void test() {}
*** 396,405 **** --- 411,424 ---- instruction_size = 4 * 4, instruction_offset = 0, data_offset = 0, next_instruction_offset = 4 * 4 }; + + address jump_destination() const; + void set_jump_destination(address dest); + static void insert_unconditional(address code_pos, address entry); static void replace_mt_safe(address instr_addr, address code_buffer); static void verify(); };
< prev index next >