< 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 >