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