< 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:
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:
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 load_klass_check_null(Register dst, Register src);
void store_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
void cache_wbsync(bool is_pre);
// Code for java.lang.Thread::onSpinWait() intrinsic.
void spin_wait();
+ void fast_lock(Register obj, Register hdr, Register t1, Register t2, Label& slow, bool rt_check_stack = true);
+ void fast_unlock(Register obj, Register hdr, Register t1, Register t2, Label& slow);
+
private:
// Check the current thread doesn't need a cross modify fence.
void verify_cross_modify_fence_not_required() PRODUCT_RETURN;
};
< prev index next >