20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_X86_VM_COPY_X86_HPP
26 #define CPU_X86_VM_COPY_X86_HPP
27
28 // Inline functions for memory copy and fill.
29
30 // Contains inline asm implementations
31 #ifdef TARGET_OS_ARCH_linux_x86
32 # include "copy_linux_x86.inline.hpp"
33 #endif
34 #ifdef TARGET_OS_ARCH_solaris_x86
35 # include "copy_solaris_x86.inline.hpp"
36 #endif
37 #ifdef TARGET_OS_ARCH_windows_x86
38 # include "copy_windows_x86.inline.hpp"
39 #endif
40
41
42 static void pd_fill_to_words(HeapWord* tohw, size_t count, juint value) {
43 #ifdef AMD64
44 julong* to = (julong*) tohw;
45 julong v = ((julong) value << 32) | value;
46 while (count-- > 0) {
47 *to++ = v;
48 }
49 #else
50 juint* to = (juint*)tohw;
51 count *= HeapWordSize / BytesPerInt;
52 while (count-- > 0) {
53 *to++ = value;
54 }
55 #endif // AMD64
56 }
57
58 static void pd_fill_to_aligned_words(HeapWord* tohw, size_t count, juint value) {
59 pd_fill_to_words(tohw, count, value);
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_X86_VM_COPY_X86_HPP
26 #define CPU_X86_VM_COPY_X86_HPP
27
28 // Inline functions for memory copy and fill.
29
30 // Contains inline asm implementations
31 #ifdef TARGET_OS_ARCH_linux_x86
32 # include "copy_linux_x86.inline.hpp"
33 #endif
34 #ifdef TARGET_OS_ARCH_solaris_x86
35 # include "copy_solaris_x86.inline.hpp"
36 #endif
37 #ifdef TARGET_OS_ARCH_windows_x86
38 # include "copy_windows_x86.inline.hpp"
39 #endif
40 #ifdef TARGET_OS_ARCH_bsd_x86
41 # include "copy_bsd_x86.inline.hpp"
42 #endif
43
44
45 static void pd_fill_to_words(HeapWord* tohw, size_t count, juint value) {
46 #ifdef AMD64
47 julong* to = (julong*) tohw;
48 julong v = ((julong) value << 32) | value;
49 while (count-- > 0) {
50 *to++ = v;
51 }
52 #else
53 juint* to = (juint*)tohw;
54 count *= HeapWordSize / BytesPerInt;
55 while (count-- > 0) {
56 *to++ = value;
57 }
58 #endif // AMD64
59 }
60
61 static void pd_fill_to_aligned_words(HeapWord* tohw, size_t count, juint value) {
62 pd_fill_to_words(tohw, count, value);
|