Mercurial > hg > graal-jvmci-8
comparison src/os_cpu/solaris_x86/vm/solaris_x86_64.s @ 11127:980532a806a5
8016697: Use stubs to implement safefetch
Summary: Implement Safefetch as stub routines. This reduces compiler and os dependencies.
Reviewed-by: twisti, kvn
author | goetz |
---|---|
date | Thu, 20 Jun 2013 15:02:05 +0200 |
parents | c18cbe5936b8 |
children | de6a9e811145 |
comparison
equal
deleted
inserted
replaced
11088:ea4d24c1e0c6 | 11127:980532a806a5 |
---|---|
19 / Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | 19 / Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 / or visit www.oracle.com if you need additional information or have any | 20 / or visit www.oracle.com if you need additional information or have any |
21 / questions. | 21 / questions. |
22 / | 22 / |
23 | 23 |
24 .globl fs_load | 24 .globl fs_load |
25 .globl fs_thread | 25 .globl fs_thread |
26 | 26 |
27 // NOTE WELL! The _Copy functions are called directly | 27 // NOTE WELL! The _Copy functions are called directly |
28 // from server-compiler-generated code via CallLeafNoFP, | 28 // from server-compiler-generated code via CallLeafNoFP, |
29 // which means that they *must* either not use floating | 29 // which means that they *must* either not use floating |
30 // point or use it in the same manner as does the server | 30 // point or use it in the same manner as does the server |
31 // compiler. | 31 // compiler. |
32 | 32 |
33 .globl _Copy_arrayof_conjoint_bytes | 33 .globl _Copy_arrayof_conjoint_bytes |
34 .globl _Copy_conjoint_jshorts_atomic | 34 .globl _Copy_conjoint_jshorts_atomic |
35 .globl _Copy_arrayof_conjoint_jshorts | 35 .globl _Copy_arrayof_conjoint_jshorts |
36 .globl _Copy_conjoint_jints_atomic | 36 .globl _Copy_conjoint_jints_atomic |
37 .globl _Copy_arrayof_conjoint_jints | 37 .globl _Copy_arrayof_conjoint_jints |
38 .globl _Copy_conjoint_jlongs_atomic | 38 .globl _Copy_conjoint_jlongs_atomic |
39 .globl _Copy_arrayof_conjoint_jlongs | 39 .globl _Copy_arrayof_conjoint_jlongs |
40 | 40 |
41 .section .text,"ax" | 41 .section .text,"ax" |
42 | 42 |
43 / Fast thread accessors, used by threadLS_solaris_amd64.cpp | 43 / Fast thread accessors, used by threadLS_solaris_amd64.cpp |
44 .align 16 | 44 .align 16 |
45 fs_load: | 45 fs_load: |
46 movq %fs:(%rdi),%rax | 46 movq %fs:(%rdi),%rax |
47 ret | 47 ret |
48 | 48 |
49 .align 16 | 49 .align 16 |
50 fs_thread: | 50 fs_thread: |
51 movq %fs:0x0,%rax | 51 movq %fs:0x0,%rax |
52 ret | |
53 | |
54 .globl SafeFetch32, Fetch32PFI, Fetch32Resume | |
55 .align 16 | |
56 // Prototype: int SafeFetch32 (int * Adr, int ErrValue) | |
57 SafeFetch32: | |
58 movl %esi, %eax | |
59 Fetch32PFI: | |
60 movl (%rdi), %eax | |
61 Fetch32Resume: | |
62 ret | |
63 | |
64 .globl SafeFetchN, FetchNPFI, FetchNResume | |
65 .align 16 | |
66 // Prototype: intptr_t SafeFetchN (intptr_t * Adr, intptr_t ErrValue) | |
67 SafeFetchN: | |
68 movq %rsi, %rax | |
69 FetchNPFI: | |
70 movq (%rdi), %rax | |
71 FetchNResume: | |
72 ret | 52 ret |
73 | 53 |
74 .globl SpinPause | 54 .globl SpinPause |
75 .align 16 | 55 .align 16 |
76 SpinPause: | 56 SpinPause: |
77 rep | 57 rep |
78 nop | 58 nop |
79 movq $1, %rax | 59 movq $1, %rax |
80 ret | 60 ret |
81 | 61 |
82 | 62 |
83 / Support for void Copy::arrayof_conjoint_bytes(void* from, | 63 / Support for void Copy::arrayof_conjoint_bytes(void* from, |
84 / void* to, | 64 / void* to, |
85 / size_t count) | 65 / size_t count) |
86 / rdi - from | 66 / rdi - from |
338 3: subq $4,%rdx | 318 3: subq $4,%rdx |
339 jge 2b | 319 jge 2b |
340 addq $4,%rdx | 320 addq $4,%rdx |
341 jg 1b | 321 jg 1b |
342 ret | 322 ret |
343 | 323 |
344 / Support for void Copy::arrayof_conjoint_jlongs(jlong* from, | 324 / Support for void Copy::arrayof_conjoint_jlongs(jlong* from, |
345 / jlong* to, | 325 / jlong* to, |
346 / size_t count) | 326 / size_t count) |
347 / Equivalent to | 327 / Equivalent to |
348 / conjoint_jlongs_atomic | 328 / conjoint_jlongs_atomic |