< prev index next >

src/hotspot/os_cpu/linux_x86/linux_x86_32.s

Print this page
rev 51258 : [mq]: spin


  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_conjoint_bytes
  32         .globl _Copy_arrayof_conjoint_bytes
  33         .globl _Copy_conjoint_jshorts_atomic
  34         .globl _Copy_arrayof_conjoint_jshorts
  35         .globl _Copy_conjoint_jints_atomic
  36         .globl _Copy_arrayof_conjoint_jints
  37         .globl _Copy_conjoint_jlongs_atomic
  38         .globl _mmx_Copy_arrayof_conjoint_jshorts
  39 
  40         .globl _Atomic_cmpxchg_long
  41         .globl _Atomic_move_long
  42 
  43         .text
  44 
  45         .globl  SpinPause
  46         .type   SpinPause,@function
  47         .p2align 4,,15
  48 SpinPause:
  49         rep
  50         nop
  51         movl    $1, %eax
  52         ret
  53 
  54         # Support for void Copy::conjoint_bytes(void* from,
  55         #                                       void* to,
  56         #                                       size_t count)
  57         .p2align 4,,15
  58         .type    _Copy_conjoint_bytes,@function
  59 _Copy_conjoint_bytes:
  60         pushl    %esi
  61         movl     4+12(%esp),%ecx      # count
  62         pushl    %edi
  63         movl     8+ 4(%esp),%esi      # from
  64         movl     8+ 8(%esp),%edi      # to
  65         cmpl     %esi,%edi
  66         leal     -1(%esi,%ecx),%eax   # from + count - 1
  67         jbe      cb_CopyRight
  68         cmpl     %eax,%edi
  69         jbe      cb_CopyLeft
  70         # copy from low to high
  71 cb_CopyRight:
  72         cmpl     $3,%ecx
  73         jbe      5f                   # <= 3 bytes




  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_conjoint_bytes
  32         .globl _Copy_arrayof_conjoint_bytes
  33         .globl _Copy_conjoint_jshorts_atomic
  34         .globl _Copy_arrayof_conjoint_jshorts
  35         .globl _Copy_conjoint_jints_atomic
  36         .globl _Copy_arrayof_conjoint_jints
  37         .globl _Copy_conjoint_jlongs_atomic
  38         .globl _mmx_Copy_arrayof_conjoint_jshorts
  39 
  40         .globl _Atomic_cmpxchg_long
  41         .globl _Atomic_move_long
  42 
  43         .text
  44 









  45         # Support for void Copy::conjoint_bytes(void* from,
  46         #                                       void* to,
  47         #                                       size_t count)
  48         .p2align 4,,15
  49         .type    _Copy_conjoint_bytes,@function
  50 _Copy_conjoint_bytes:
  51         pushl    %esi
  52         movl     4+12(%esp),%ecx      # count
  53         pushl    %edi
  54         movl     8+ 4(%esp),%esi      # from
  55         movl     8+ 8(%esp),%edi      # to
  56         cmpl     %esi,%edi
  57         leal     -1(%esi,%ecx),%eax   # from + count - 1
  58         jbe      cb_CopyRight
  59         cmpl     %eax,%edi
  60         jbe      cb_CopyLeft
  61         # copy from low to high
  62 cb_CopyRight:
  63         cmpl     $3,%ecx
  64         jbe      5f                   # <= 3 bytes


< prev index next >