src/cpu/x86/vm/assembler_x86_64.hpp

changeset 548
ba764ed4b6f2
parent 506
3d62cb85208d
child 559
b130b98db9cf
     1.1 --- a/src/cpu/x86/vm/assembler_x86_64.hpp	Fri Apr 11 09:56:35 2008 -0400
     1.2 +++ b/src/cpu/x86/vm/assembler_x86_64.hpp	Sun Apr 13 17:43:42 2008 -0400
     1.3 @@ -37,7 +37,7 @@
     1.4  #else
     1.5      n_int_register_parameters_c   = 6, // rdi, rsi, rdx, rcx, r8, r9 (c_rarg0, c_rarg1, ...)
     1.6      n_float_register_parameters_c = 8,  // xmm0 - xmm7 (c_farg0, c_farg1, ... )
     1.7 -#endif
     1.8 +#endif  // _WIN64
     1.9      n_int_register_parameters_j   = 6, // j_rarg0, j_rarg1, ...
    1.10      n_float_register_parameters_j = 8  // j_farg0, j_farg1, ...
    1.11    };
    1.12 @@ -77,7 +77,7 @@
    1.13  REGISTER_DECLARATION(XMMRegister, c_farg6, xmm6);
    1.14  REGISTER_DECLARATION(XMMRegister, c_farg7, xmm7);
    1.15  
    1.16 -#endif
    1.17 +#endif  // _WIN64
    1.18  
    1.19  // Symbolically name the register arguments used by the Java calling convention.
    1.20  // We have control over the convention for java so we can do what we please.
    1.21 @@ -105,7 +105,7 @@
    1.22  #else
    1.23  REGISTER_DECLARATION(Register, j_rarg3, c_rarg4);
    1.24  REGISTER_DECLARATION(Register, j_rarg4, c_rarg5);
    1.25 -#endif /* _WIN64 */
    1.26 +#endif // _WIN64
    1.27  REGISTER_DECLARATION(Register, j_rarg5, c_rarg0);
    1.28  
    1.29  REGISTER_DECLARATION(XMMRegister, j_farg0, xmm0);
    1.30 @@ -120,7 +120,8 @@
    1.31  REGISTER_DECLARATION(Register, rscratch1, r10);  // volatile
    1.32  REGISTER_DECLARATION(Register, rscratch2, r11);  // volatile
    1.33  
    1.34 -REGISTER_DECLARATION(Register, r15_thread, r15); // callee-saved
    1.35 +REGISTER_DECLARATION(Register, r12_heapbase, r12); // callee-saved
    1.36 +REGISTER_DECLARATION(Register, r15_thread, r15);   // callee-saved
    1.37  
    1.38  #endif // _LP64
    1.39  
    1.40 @@ -785,7 +786,8 @@
    1.41    void rep_movl();
    1.42    void rep_movq();
    1.43    void rep_set();
    1.44 -  void repne_scan();
    1.45 +  void repne_scanl();
    1.46 +  void repne_scanq();
    1.47    void setb(Condition cc, Register dst);
    1.48  
    1.49    void clflush(Address adr);
    1.50 @@ -1099,6 +1101,17 @@
    1.51    void movbool(Address dst, Register src);
    1.52    void testbool(Register dst);
    1.53  
    1.54 +  // oop manipulations
    1.55 +  void load_klass(Register dst, Register src);
    1.56 +  void store_klass(Register dst, Register src);
    1.57 +
    1.58 +  void load_heap_oop(Register dst, Address src);
    1.59 +  void store_heap_oop(Address dst, Register src);
    1.60 +  void encode_heap_oop(Register r);
    1.61 +  void decode_heap_oop(Register r);
    1.62 +  void encode_heap_oop_not_null(Register r);
    1.63 +  void decode_heap_oop_not_null(Register r);
    1.64 +
    1.65    // Stack frame creation/removal
    1.66    void enter();
    1.67    void leave();
    1.68 @@ -1250,6 +1263,9 @@
    1.69    void verify_oop(Register reg, const char* s = "broken oop");
    1.70    void verify_oop_addr(Address addr, const char * s = "broken oop addr");
    1.71  
    1.72 +  // if heap base register is used - reinit it with the correct value
    1.73 +  void reinit_heapbase();
    1.74 +
    1.75    // only if +VerifyFPU
    1.76    void verify_FPU(int stack_depth, const char* s = "illegal FPU state") {}
    1.77  

mercurial