hotspot/src/os_cpu/linux_x86/vm/copy_linux_x86.inline.hpp
changeset 33589 7cbd1b2c139b
parent 7397 5b173b4ca846
equal deleted inserted replaced
33580:c2d95df2c54e 33589:7cbd1b2c139b
    28 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
    28 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
    29 #ifdef AMD64
    29 #ifdef AMD64
    30   (void)memmove(to, from, count * HeapWordSize);
    30   (void)memmove(to, from, count * HeapWordSize);
    31 #else
    31 #else
    32   // Includes a zero-count check.
    32   // Includes a zero-count check.
    33   intx temp;
    33   intx temp = 0;
    34   __asm__ volatile("        testl   %6,%6         ;"
    34   __asm__ volatile("        testl   %6,%6         ;"
    35                    "        jz      7f            ;"
    35                    "        jz      7f            ;"
    36                    "        cmpl    %4,%5         ;"
    36                    "        cmpl    %4,%5         ;"
    37                    "        leal    -4(%4,%6,4),%3;"
    37                    "        leal    -4(%4,%6,4),%3;"
    38                    "        jbe     1f            ;"
    38                    "        jbe     1f            ;"
    86     (void)memcpy(to, from, count * HeapWordSize);
    86     (void)memcpy(to, from, count * HeapWordSize);
    87     break;
    87     break;
    88   }
    88   }
    89 #else
    89 #else
    90   // Includes a zero-count check.
    90   // Includes a zero-count check.
    91   intx temp;
    91   intx temp = 0;
    92   __asm__ volatile("        testl   %6,%6       ;"
    92   __asm__ volatile("        testl   %6,%6       ;"
    93                    "        jz      3f          ;"
    93                    "        jz      3f          ;"
    94                    "        cmpl    $32,%6      ;"
    94                    "        cmpl    $32,%6      ;"
    95                    "        ja      2f          ;"
    95                    "        ja      2f          ;"
    96                    "        subl    %4,%1       ;"
    96                    "        subl    %4,%1       ;"
   143 static void pd_conjoint_bytes(void* from, void* to, size_t count) {
   143 static void pd_conjoint_bytes(void* from, void* to, size_t count) {
   144 #ifdef AMD64
   144 #ifdef AMD64
   145   (void)memmove(to, from, count);
   145   (void)memmove(to, from, count);
   146 #else
   146 #else
   147   // Includes a zero-count check.
   147   // Includes a zero-count check.
   148   intx temp;
   148   intx temp = 0;
   149   __asm__ volatile("        testl   %6,%6          ;"
   149   __asm__ volatile("        testl   %6,%6          ;"
   150                    "        jz      13f            ;"
   150                    "        jz      13f            ;"
   151                    "        cmpl    %4,%5          ;"
   151                    "        cmpl    %4,%5          ;"
   152                    "        leal    -1(%4,%6),%3   ;"
   152                    "        leal    -1(%4,%6),%3   ;"
   153                    "        jbe     1f             ;"
   153                    "        jbe     1f             ;"