< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.hpp

Print this page
@@ -197,10 +197,11 @@
    void align32();
    void align64();
    void align(int modulus);
    void align(int modulus, int target);
  
+   void post_call_nop();
    // A 5 byte nop that is safe for patching (see patch_verified_entry)
    void fat_nop();
  
    // Stack frame creation/removal
    void enter();

@@ -291,10 +292,13 @@
    void call_VM_leaf(address entry_point,
                      Register arg_1, Register arg_2);
    void call_VM_leaf(address entry_point,
                      Register arg_1, Register arg_2, Register arg_3);
  
+   void call_VM_leaf(address entry_point,
+                     Register arg_1, Register arg_2, Register arg_3, Register arg_4);
+ 
    // These always tightly bind to MacroAssembler::call_VM_leaf_base
    // bypassing the virtual implementation
    void super_call_VM_leaf(address entry_point);
    void super_call_VM_leaf(address entry_point, Register arg_1);
    void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2);

@@ -315,10 +319,12 @@
    void reset_last_Java_frame(Register thread, bool clear_fp);
  
    // thread in the default location (r15_thread on 64bit)
    void reset_last_Java_frame(bool clear_fp);
  
+   void oopmap_metadata(int index);
+ 
    // jobjects
    void clear_jweak_tag(Register possibly_jweak);
    void resolve_jobject(Register value, Register thread, Register tmp);
  
    // C 'boolean' to Java boolean: x == 0 ? 0 : 1

@@ -516,10 +522,17 @@
    void pop_FPU_state();
  
    void push_CPU_state();
    void pop_CPU_state();
  
+   void push_cont_fastpath(Register java_thread);
+   void pop_cont_fastpath(Register java_thread);
+   void inc_held_monitor_count(Register java_thread);
+   void dec_held_monitor_count(Register java_thread);
+   void reset_held_monitor_count(Register java_thread);
+   DEBUG_ONLY(void stop_if_in_cont(Register cont_reg, const char* name);)
+ 
    // Round up to a power of two
    void round_to(Register reg, int modulus);
  
    // Callee saved registers handling
    void push_callee_saved_registers();

@@ -635,10 +648,14 @@
    void stop(const char* msg);
  
    // prints msg and continues
    void warn(const char* msg);
  
+   void _assert_asm(Condition cc, const char* msg);
+ #define assert_asm0(cc, msg) _assert_asm(cc, FILE_AND_LINE ": " msg)
+ #define assert_asm(masm, command, cc, msg) DEBUG_ONLY((masm)->command; (masm)->_assert_asm(cc, FILE_AND_LINE ": " #command " " #cc ": " msg))
+ 
    // dumps registers and other state
    void print_state();
  
    static void debug32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip, char* msg);
    static void debug64(char* msg, int64_t pc, int64_t regs[]);

@@ -840,10 +857,15 @@
    // contained in the location described by entry (not the address of entry)
    void jump(ArrayAddress entry);
  
    // Floating
  
+   void push_f(XMMRegister r);
+   void pop_f(XMMRegister r);
+   void push_d(XMMRegister r);
+   void pop_d(XMMRegister r);
+ 
    void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
    void andpd(XMMRegister dst, AddressLiteral src, Register scratch_reg = rscratch1);
    void andpd(XMMRegister dst, XMMRegister src) { Assembler::andpd(dst, src); }
  
    void andps(XMMRegister dst, XMMRegister src) { Assembler::andps(dst, src); }

@@ -1167,10 +1189,20 @@
    // Move Aligned Double Quadword
    void movdqa(XMMRegister dst, Address src)       { Assembler::movdqa(dst, src); }
    void movdqa(XMMRegister dst, XMMRegister src)   { Assembler::movdqa(dst, src); }
    void movdqa(XMMRegister dst, AddressLiteral src);
  
+   // Move Aligned, possibly non-temporal
+   void movqa(Address dst, Register src, bool nt);       // 64-bit
+   void movdqa(Address dst, XMMRegister src, bool nt);   // 128-bit
+   void vmovdqa(Address dst, XMMRegister src, bool nt);  // 256-bit
+   void evmovdqa(Address dst, XMMRegister src, int vector_len, bool nt); // 512-bit
+ 
+   void movdqa(XMMRegister dst, Address src, bool nt);   // 128-bit
+   void vmovdqa(XMMRegister dst, Address src, bool nt);  // 256-bit
+   void evmovdqa(XMMRegister dst, Address src, int vector_len, bool nt); // 512-bit
+ 
    void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); }
    void movsd(Address dst, XMMRegister src)     { Assembler::movsd(dst, src); }
    void movsd(XMMRegister dst, Address src)     { Assembler::movsd(dst, src); }
    void movsd(XMMRegister dst, AddressLiteral src);
  
< prev index next >