src/cpu/x86/vm/macroAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/x86/vm

src/cpu/x86/vm/macroAssembler_x86.cpp

Print this page




2871 
2872 void MacroAssembler::divsd(XMMRegister dst, AddressLiteral src) {
2873   if (reachable(src)) {
2874     Assembler::divsd(dst, as_Address(src));
2875   } else {
2876     lea(rscratch1, src);
2877     Assembler::divsd(dst, Address(rscratch1, 0));
2878   }
2879 }
2880 
2881 void MacroAssembler::divss(XMMRegister dst, AddressLiteral src) {
2882   if (reachable(src)) {
2883     Assembler::divss(dst, as_Address(src));
2884   } else {
2885     lea(rscratch1, src);
2886     Assembler::divss(dst, Address(rscratch1, 0));
2887   }
2888 }
2889 
2890 // !defined(COMPILER2) is because of stupid core builds
2891 #if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2)
2892 void MacroAssembler::empty_FPU_stack() {
2893   if (VM_Version::supports_mmx()) {
2894     emms();
2895   } else {
2896     for (int i = 8; i-- > 0; ) ffree(i);
2897   }
2898 }
2899 #endif // !LP64 || C1 || !C2
2900 
2901 
2902 // Defines obj, preserves var_size_in_bytes
2903 void MacroAssembler::eden_allocate(Register obj,
2904                                    Register var_size_in_bytes,
2905                                    int con_size_in_bytes,
2906                                    Register t1,
2907                                    Label& slow_case) {
2908   assert(obj == rax, "obj must be in rax, for cmpxchg");
2909   assert_different_registers(obj, var_size_in_bytes, t1);
2910   if (!Universe::heap()->supports_inline_contig_alloc()) {
2911     jmp(slow_case);
2912   } else {
2913     Register end = t1;
2914     Label retry;
2915     bind(retry);
2916     ExternalAddress heap_top((address) Universe::heap()->top_addr());
2917     movptr(obj, heap_top);
2918     if (var_size_in_bytes == noreg) {
2919       lea(end, Address(obj, con_size_in_bytes));




2871 
2872 void MacroAssembler::divsd(XMMRegister dst, AddressLiteral src) {
2873   if (reachable(src)) {
2874     Assembler::divsd(dst, as_Address(src));
2875   } else {
2876     lea(rscratch1, src);
2877     Assembler::divsd(dst, Address(rscratch1, 0));
2878   }
2879 }
2880 
2881 void MacroAssembler::divss(XMMRegister dst, AddressLiteral src) {
2882   if (reachable(src)) {
2883     Assembler::divss(dst, as_Address(src));
2884   } else {
2885     lea(rscratch1, src);
2886     Assembler::divss(dst, Address(rscratch1, 0));
2887   }
2888 }
2889 
2890 // !defined(COMPILER2) is because of stupid core builds
2891 #if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) || INCLUDE_JVMCI
2892 void MacroAssembler::empty_FPU_stack() {
2893   if (VM_Version::supports_mmx()) {
2894     emms();
2895   } else {
2896     for (int i = 8; i-- > 0; ) ffree(i);
2897   }
2898 }
2899 #endif // !LP64 || C1 || !C2 || JVMCI
2900 
2901 
2902 // Defines obj, preserves var_size_in_bytes
2903 void MacroAssembler::eden_allocate(Register obj,
2904                                    Register var_size_in_bytes,
2905                                    int con_size_in_bytes,
2906                                    Register t1,
2907                                    Label& slow_case) {
2908   assert(obj == rax, "obj must be in rax, for cmpxchg");
2909   assert_different_registers(obj, var_size_in_bytes, t1);
2910   if (!Universe::heap()->supports_inline_contig_alloc()) {
2911     jmp(slow_case);
2912   } else {
2913     Register end = t1;
2914     Label retry;
2915     bind(retry);
2916     ExternalAddress heap_top((address) Universe::heap()->top_addr());
2917     movptr(obj, heap_top);
2918     if (var_size_in_bytes == noreg) {
2919       lea(end, Address(obj, con_size_in_bytes));


src/cpu/x86/vm/macroAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File