< prev index next > src/hotspot/cpu/x86/macroAssembler_x86.hpp
Print this page
// helpers for FPU flag access
// tmp is a temporary register, if none is available use noreg
void save_rax (Register tmp);
void restore_rax(Register tmp);
+ public:
+
+ enum KlassDecodeMode {
+ KlassDecodeNone,
+ KlassDecodeZero,
+ KlassDecodeXor,
+ KlassDecodeAdd
+ };
+
+ // 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) {}
// These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code.
// The implementation is only non-empty for the InterpreterMacroAssembler,
void load_method_holder_cld(Register rresult, Register rmethod);
void load_method_holder(Register holder, Register method);
// oop manipulations
+ #ifdef _LP64
+ void load_nklass(Register dst, Register src);
+ #endif
void load_klass(Register dst, Register src, Register tmp);
void store_klass(Register dst, Register src, Register tmp);
+ // Compares the Klass pointer of an object to a given Klass (which might be narrow,
+ // depending on UseCompressedClassPointers).
+ void cmp_klass(Register klass, Register dst, Register tmp);
+
+ // Compares the Klass pointer of two objects o1 and o2. Result is in the condition flags.
+ // Uses t1 and t2 as temporary registers.
+ void cmp_klass(Register src, Register dst, Register tmp1, Register tmp2);
+
void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src,
Register tmp1, Register thread_tmp);
void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register val,
Register tmp1, Register tmp2, Register tmp3);
< prev index next >