< prev index next > src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
Print this page
bool check_exceptions // whether to check for pending exceptions after return
);
void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
enum KlassDecodeMode {
KlassDecodeNone,
KlassDecodeZero,
KlassDecodeXor,
KlassDecodeMovk
};
! KlassDecodeMode klass_decode_mode();
private:
static KlassDecodeMode _klass_decode_mode;
public:
MacroAssembler(CodeBuffer* code) : Assembler(code) {}
bool check_exceptions // whether to check for pending exceptions after return
);
void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
+ public:
+
enum KlassDecodeMode {
KlassDecodeNone,
KlassDecodeZero,
KlassDecodeXor,
KlassDecodeMovk
};
! // Return the current narrow Klass pointer decode mode. Initialized on first call.
+ static KlassDecodeMode klass_decode_mode();
+
+ // Given an arbitrary base address, return the KlassDecodeMode that would be used. Return KlassDecodeNone
+ // if base address is not valid for encoding.
+ static KlassDecodeMode klass_decode_mode_for_base(address base);
+
+ // Returns a static string
+ static const char* describe_klass_decode_mode(KlassDecodeMode mode);
private:
+
static KlassDecodeMode _klass_decode_mode;
public:
MacroAssembler(CodeBuffer* code) : Assembler(code) {}
void load_method_holder_cld(Register rresult, Register rmethod);
void load_method_holder(Register holder, Register method);
// oop manipulations
void load_klass(Register dst, Register src);
- void store_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
void resolve_weak_handle(Register result, Register tmp);
void resolve_oop_handle(Register result, Register tmp = r5);
void load_mirror(Register dst, Register method, Register tmp = r5);
void load_method_holder_cld(Register rresult, Register rmethod);
void load_method_holder(Register holder, Register method);
// oop manipulations
+ void load_nklass(Register dst, Register src);
void load_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
void resolve_weak_handle(Register result, Register tmp);
void resolve_oop_handle(Register result, Register tmp = r5);
void load_mirror(Register dst, Register method, Register tmp = r5);
// currently unimplemented
// Used for storing NULL. All other oop constants should be
// stored using routines that take a jobject.
void store_heap_oop_null(Address dst);
- void store_klass_gap(Register dst, Register src);
-
// This dummy is to prevent a call to store_heap_oop from
// converting a zero (like NULL) into a Register by giving
// the compiler two choices it can't resolve
void store_heap_oop(Address dst, void* dummy);
< prev index next >