< prev index next >

src/hotspot/os_cpu/solaris_x86/solaris_x86_64.s

Print this page
rev 51258 : [mq]: spin


  34         .globl _Copy_conjoint_jshorts_atomic
  35         .globl _Copy_arrayof_conjoint_jshorts
  36         .globl _Copy_conjoint_jints_atomic
  37         .globl _Copy_arrayof_conjoint_jints
  38         .globl _Copy_conjoint_jlongs_atomic
  39         .globl _Copy_arrayof_conjoint_jlongs
  40 
  41         .section .text,"ax"
  42 
  43         / Fast thread accessors, used by threadLS_solaris_amd64.cpp
  44         .align   16
  45 fs_load:
  46         movq %fs:(%rdi),%rax
  47         ret
  48 
  49         .align   16
  50 fs_thread:
  51         movq %fs:0x0,%rax
  52         ret
  53 
  54         .globl  SpinPause
  55         .align  16
  56 SpinPause:
  57         rep
  58         nop
  59         movq    $1, %rax
  60         ret
  61 
  62 
  63         / Support for void Copy::arrayof_conjoint_bytes(void* from,
  64         /                                               void* to,
  65         /                                               size_t count)
  66         / rdi - from
  67         / rsi - to
  68         / rdx - count, treated as ssize_t
  69         /
  70         .align   16
  71 _Copy_arrayof_conjoint_bytes:
  72         movq     %rdx,%r8             / byte count
  73         shrq     $3,%rdx              / qword count
  74         cmpq     %rdi,%rsi
  75         leaq     -1(%rdi,%r8,1),%rax  / from + bcount*1 - 1
  76         jbe      acb_CopyRight
  77         cmpq     %rax,%rsi
  78         jbe      acb_CopyLeft 
  79 acb_CopyRight:
  80         leaq     -8(%rdi,%rdx,8),%rax / from + qcount*8 - 8
  81         leaq     -8(%rsi,%rdx,8),%rcx / to + qcount*8 - 8
  82         negq     %rdx




  34         .globl _Copy_conjoint_jshorts_atomic
  35         .globl _Copy_arrayof_conjoint_jshorts
  36         .globl _Copy_conjoint_jints_atomic
  37         .globl _Copy_arrayof_conjoint_jints
  38         .globl _Copy_conjoint_jlongs_atomic
  39         .globl _Copy_arrayof_conjoint_jlongs
  40 
  41         .section .text,"ax"
  42 
  43         / Fast thread accessors, used by threadLS_solaris_amd64.cpp
  44         .align   16
  45 fs_load:
  46         movq %fs:(%rdi),%rax
  47         ret
  48 
  49         .align   16
  50 fs_thread:
  51         movq %fs:0x0,%rax
  52         ret
  53 









  54         / Support for void Copy::arrayof_conjoint_bytes(void* from,
  55         /                                               void* to,
  56         /                                               size_t count)
  57         / rdi - from
  58         / rsi - to
  59         / rdx - count, treated as ssize_t
  60         /
  61         .align   16
  62 _Copy_arrayof_conjoint_bytes:
  63         movq     %rdx,%r8             / byte count
  64         shrq     $3,%rdx              / qword count
  65         cmpq     %rdi,%rsi
  66         leaq     -1(%rdi,%r8,1),%rax  / from + bcount*1 - 1
  67         jbe      acb_CopyRight
  68         cmpq     %rax,%rsi
  69         jbe      acb_CopyLeft 
  70 acb_CopyRight:
  71         leaq     -8(%rdi,%rdx,8),%rax / from + qcount*8 - 8
  72         leaq     -8(%rsi,%rdx,8),%rcx / to + qcount*8 - 8
  73         negq     %rdx


< prev index next >