annotate src/os_cpu/bsd_x86/vm/bytes_bsd_x86.inline.hpp @ 4558:3706975946e4

Make graph dumping a bit more robust when there is no method, enable debug in the startCompiler method, add context and scope for snippets installation Made IGV display graphs even if some edges are problematic When schedule failed don't use it
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 10 Feb 2012 02:22:23 +0100
parents f08d439fab8c
children 0af5da0c9d9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
1 /*
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
4 *
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
7 * published by the Free Software Foundation.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
8 *
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
13 * accompanied this code).
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
14 *
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
18 *
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
21 * questions.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
22 *
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
23 */
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
24
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
25 #ifndef OS_CPU_BSD_X86_VM_BYTES_BSD_X86_INLINE_HPP
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
26 #define OS_CPU_BSD_X86_VM_BYTES_BSD_X86_INLINE_HPP
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
27
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
28 #ifndef _ALLBSD_SOURCE
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
29 #include <byteswap.h>
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
30 #endif
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
31
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
32 #ifdef __APPLE__
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
33 #include <libkern/OSByteOrder.h>
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
34 #endif
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
35
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
36 #if defined(AMD64)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
37 # if defined(__APPLE__)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
38 # define bswap_16(x) OSSwapInt16(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
39 # define bswap_32(x) OSSwapInt32(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
40 # define bswap_64(x) OSSwapInt64(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
41 # elif defined(__OpenBSD__)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
42 # define bswap_16(x) swap16(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
43 # define bswap_32(x) swap32(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
44 # define bswap_64(x) swap64(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
45 # elif defined(__NetBSD__)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
46 # define bswap_16(x) bswap16(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
47 # define bswap_32(x) bswap32(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
48 # define bswap_64(x) bswap64(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
49 # else
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
50 # define bswap_16(x) __bswap16(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
51 # define bswap_32(x) __bswap32(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
52 # define bswap_64(x) __bswap64(x)
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
53 # endif
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
54 #endif
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
55
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
56 // Efficient swapping of data bytes from Java byte
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
57 // ordering to native byte ordering and vice versa.
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
58 inline u2 Bytes::swap_u2(u2 x) {
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
59 #ifdef AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
60 return bswap_16(x);
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
61 #else
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
62 u2 ret;
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
63 __asm__ __volatile__ (
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
64 "movw %0, %%ax;"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
65 "xchg %%al, %%ah;"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
66 "movw %%ax, %0"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
67 :"=r" (ret) // output : register 0 => ret
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
68 :"0" (x) // input : x => register 0
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
69 :"ax", "0" // clobbered registers
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
70 );
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
71 return ret;
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
72 #endif // AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
73 }
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
74
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
75 inline u4 Bytes::swap_u4(u4 x) {
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
76 #ifdef AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
77 return bswap_32(x);
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
78 #else
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
79 u4 ret;
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
80 __asm__ __volatile__ (
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
81 "bswap %0"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
82 :"=r" (ret) // output : register 0 => ret
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
83 :"0" (x) // input : x => register 0
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
84 :"0" // clobbered register
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
85 );
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
86 return ret;
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
87 #endif // AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
88 }
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
89
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
90 #ifdef AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
91 inline u8 Bytes::swap_u8(u8 x) {
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
92 #ifdef SPARC_WORKS
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
93 // workaround for SunStudio12 CR6615391
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
94 __asm__ __volatile__ (
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
95 "bswapq %0"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
96 :"=r" (x) // output : register 0 => x
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
97 :"0" (x) // input : x => register 0
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
98 :"0" // clobbered register
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
99 );
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
100 return x;
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
101 #else
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
102 return bswap_64(x);
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
103 #endif
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
104 }
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
105 #else
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
106 // Helper function for swap_u8
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
107 inline u8 Bytes::swap_u8_base(u4 x, u4 y) {
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
108 return (((u8)swap_u4(x))<<32) | swap_u4(y);
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
109 }
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
110
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
111 inline u8 Bytes::swap_u8(u8 x) {
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
112 return swap_u8_base(*(u4*)&x, *(((u4*)&x)+1));
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
113 }
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
114 #endif // !AMD64
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
115
f08d439fab8c 7089790: integrate bsd-port changes
never
parents:
diff changeset
116 #endif // OS_CPU_BSD_X86_VM_BYTES_BSD_X86_INLINE_HPP