< prev index next >

src/hotspot/os_cpu/linux_x86/linux_x86_64.s

Print this page
rev 51258 : [mq]: spin


  21 # questions.
  22 #
  23 
  24 
  25         # NOTE WELL!  The _Copy functions are called directly
  26         # from server-compiler-generated code via CallLeafNoFP,
  27         # which means that they *must* either not use floating
  28         # point or use it in the same manner as does the server
  29         # compiler.
  30         
  31         .globl _Copy_arrayof_conjoint_bytes
  32         .globl _Copy_arrayof_conjoint_jshorts
  33         .globl _Copy_conjoint_jshorts_atomic
  34         .globl _Copy_arrayof_conjoint_jints
  35         .globl _Copy_conjoint_jints_atomic
  36         .globl _Copy_arrayof_conjoint_jlongs
  37         .globl _Copy_conjoint_jlongs_atomic
  38 
  39         .text
  40 
  41         .globl SpinPause
  42         .align 16
  43         .type  SpinPause,@function
  44 SpinPause:
  45         rep
  46         nop
  47         movq   $1, %rax
  48         ret
  49 
  50         # Support for void Copy::arrayof_conjoint_bytes(void* from,
  51         #                                               void* to,
  52         #                                               size_t count)
  53         # rdi - from
  54         # rsi - to
  55         # rdx - count, treated as ssize_t
  56         #
  57         .p2align 4,,15
  58         .type    _Copy_arrayof_conjoint_bytes,@function
  59 _Copy_arrayof_conjoint_bytes:
  60         movq     %rdx,%r8             # byte count
  61         shrq     $3,%rdx              # qword count
  62         cmpq     %rdi,%rsi
  63         leaq     -1(%rdi,%r8,1),%rax  # from + bcount*1 - 1
  64         jbe      acb_CopyRight
  65         cmpq     %rax,%rsi
  66         jbe      acb_CopyLeft 
  67 acb_CopyRight:
  68         leaq     -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
  69         leaq     -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8




  21 # questions.
  22 #
  23 
  24 
  25         # NOTE WELL!  The _Copy functions are called directly
  26         # from server-compiler-generated code via CallLeafNoFP,
  27         # which means that they *must* either not use floating
  28         # point or use it in the same manner as does the server
  29         # compiler.
  30         
  31         .globl _Copy_arrayof_conjoint_bytes
  32         .globl _Copy_arrayof_conjoint_jshorts
  33         .globl _Copy_conjoint_jshorts_atomic
  34         .globl _Copy_arrayof_conjoint_jints
  35         .globl _Copy_conjoint_jints_atomic
  36         .globl _Copy_arrayof_conjoint_jlongs
  37         .globl _Copy_conjoint_jlongs_atomic
  38 
  39         .text
  40 









  41         # Support for void Copy::arrayof_conjoint_bytes(void* from,
  42         #                                               void* to,
  43         #                                               size_t count)
  44         # rdi - from
  45         # rsi - to
  46         # rdx - count, treated as ssize_t
  47         #
  48         .p2align 4,,15
  49         .type    _Copy_arrayof_conjoint_bytes,@function
  50 _Copy_arrayof_conjoint_bytes:
  51         movq     %rdx,%r8             # byte count
  52         shrq     $3,%rdx              # qword count
  53         cmpq     %rdi,%rsi
  54         leaq     -1(%rdi,%r8,1),%rax  # from + bcount*1 - 1
  55         jbe      acb_CopyRight
  56         cmpq     %rax,%rsi
  57         jbe      acb_CopyLeft 
  58 acb_CopyRight:
  59         leaq     -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
  60         leaq     -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8


< prev index next >