Mercurial > hg > graal-jvmci-8
annotate jvmci/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotRegisterConfig.java @ 22679:4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Tue, 13 Oct 2015 17:07:59 +0200 |
parents | 1bbd4a7c274b |
children | c278790fa252 |
rev | line source |
---|---|
10459 | 1 /* |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
2 * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. |
10459 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
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 | |
21 * questions. | |
22 */ | |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
23 package jdk.vm.ci.hotspot.sparc; |
10459 | 24 |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
25 import static jdk.vm.ci.sparc.SPARC.FPUd; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
26 import static jdk.vm.ci.sparc.SPARC.FPUs; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
27 import static jdk.vm.ci.sparc.SPARC.d0; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
28 import static jdk.vm.ci.sparc.SPARC.d2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
29 import static jdk.vm.ci.sparc.SPARC.d32; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
30 import static jdk.vm.ci.sparc.SPARC.d34; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
31 import static jdk.vm.ci.sparc.SPARC.d36; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
32 import static jdk.vm.ci.sparc.SPARC.d38; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
33 import static jdk.vm.ci.sparc.SPARC.d4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
34 import static jdk.vm.ci.sparc.SPARC.d40; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
35 import static jdk.vm.ci.sparc.SPARC.d42; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
36 import static jdk.vm.ci.sparc.SPARC.d44; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
37 import static jdk.vm.ci.sparc.SPARC.d46; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
38 import static jdk.vm.ci.sparc.SPARC.d48; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
39 import static jdk.vm.ci.sparc.SPARC.d50; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
40 import static jdk.vm.ci.sparc.SPARC.d52; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
41 import static jdk.vm.ci.sparc.SPARC.d54; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
42 import static jdk.vm.ci.sparc.SPARC.d56; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
43 import static jdk.vm.ci.sparc.SPARC.d58; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
44 import static jdk.vm.ci.sparc.SPARC.d6; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
45 import static jdk.vm.ci.sparc.SPARC.d60; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
46 import static jdk.vm.ci.sparc.SPARC.d62; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
47 import static jdk.vm.ci.sparc.SPARC.f0; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
48 import static jdk.vm.ci.sparc.SPARC.f1; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
49 import static jdk.vm.ci.sparc.SPARC.f10; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
50 import static jdk.vm.ci.sparc.SPARC.f11; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
51 import static jdk.vm.ci.sparc.SPARC.f12; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
52 import static jdk.vm.ci.sparc.SPARC.f13; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
53 import static jdk.vm.ci.sparc.SPARC.f14; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
54 import static jdk.vm.ci.sparc.SPARC.f15; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
55 import static jdk.vm.ci.sparc.SPARC.f16; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
56 import static jdk.vm.ci.sparc.SPARC.f17; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
57 import static jdk.vm.ci.sparc.SPARC.f18; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
58 import static jdk.vm.ci.sparc.SPARC.f19; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
59 import static jdk.vm.ci.sparc.SPARC.f2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
60 import static jdk.vm.ci.sparc.SPARC.f20; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
61 import static jdk.vm.ci.sparc.SPARC.f21; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
62 import static jdk.vm.ci.sparc.SPARC.f22; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
63 import static jdk.vm.ci.sparc.SPARC.f23; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
64 import static jdk.vm.ci.sparc.SPARC.f24; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
65 import static jdk.vm.ci.sparc.SPARC.f25; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
66 import static jdk.vm.ci.sparc.SPARC.f26; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
67 import static jdk.vm.ci.sparc.SPARC.f27; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
68 import static jdk.vm.ci.sparc.SPARC.f28; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
69 import static jdk.vm.ci.sparc.SPARC.f29; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
70 import static jdk.vm.ci.sparc.SPARC.f3; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
71 import static jdk.vm.ci.sparc.SPARC.f30; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
72 import static jdk.vm.ci.sparc.SPARC.f31; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
73 import static jdk.vm.ci.sparc.SPARC.f4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
74 import static jdk.vm.ci.sparc.SPARC.f5; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
75 import static jdk.vm.ci.sparc.SPARC.f6; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
76 import static jdk.vm.ci.sparc.SPARC.f7; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
77 import static jdk.vm.ci.sparc.SPARC.f8; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
78 import static jdk.vm.ci.sparc.SPARC.f9; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
79 import static jdk.vm.ci.sparc.SPARC.g1; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
80 import static jdk.vm.ci.sparc.SPARC.g2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
81 import static jdk.vm.ci.sparc.SPARC.g3; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
82 import static jdk.vm.ci.sparc.SPARC.g4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
83 import static jdk.vm.ci.sparc.SPARC.g5; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
84 import static jdk.vm.ci.sparc.SPARC.g6; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
85 import static jdk.vm.ci.sparc.SPARC.g7; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
86 import static jdk.vm.ci.sparc.SPARC.i0; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
87 import static jdk.vm.ci.sparc.SPARC.i1; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
88 import static jdk.vm.ci.sparc.SPARC.i2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
89 import static jdk.vm.ci.sparc.SPARC.i3; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
90 import static jdk.vm.ci.sparc.SPARC.i4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
91 import static jdk.vm.ci.sparc.SPARC.i5; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
92 import static jdk.vm.ci.sparc.SPARC.i6; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
93 import static jdk.vm.ci.sparc.SPARC.i7; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
94 import static jdk.vm.ci.sparc.SPARC.l0; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
95 import static jdk.vm.ci.sparc.SPARC.l1; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
96 import static jdk.vm.ci.sparc.SPARC.l2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
97 import static jdk.vm.ci.sparc.SPARC.l3; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
98 import static jdk.vm.ci.sparc.SPARC.l4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
99 import static jdk.vm.ci.sparc.SPARC.l5; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
100 import static jdk.vm.ci.sparc.SPARC.l6; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
101 import static jdk.vm.ci.sparc.SPARC.l7; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
102 import static jdk.vm.ci.sparc.SPARC.o0; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
103 import static jdk.vm.ci.sparc.SPARC.o1; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
104 import static jdk.vm.ci.sparc.SPARC.o2; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
105 import static jdk.vm.ci.sparc.SPARC.o3; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
106 import static jdk.vm.ci.sparc.SPARC.o4; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
107 import static jdk.vm.ci.sparc.SPARC.o5; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
108 import static jdk.vm.ci.sparc.SPARC.o7; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
109 import static jdk.vm.ci.sparc.SPARC.sp; |
10459 | 110 |
22569
ec96f33a101d
updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents:
22557
diff
changeset
|
111 import java.util.ArrayList; |
ec96f33a101d
updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents:
22557
diff
changeset
|
112 import java.util.Arrays; |
ec96f33a101d
updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents:
22557
diff
changeset
|
113 |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
114 import jdk.vm.ci.code.Architecture; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
115 import jdk.vm.ci.code.CallingConvention; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
116 import jdk.vm.ci.code.CallingConvention.Type; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
117 import jdk.vm.ci.code.Register; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
118 import jdk.vm.ci.code.RegisterAttributes; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
119 import jdk.vm.ci.code.RegisterConfig; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
120 import jdk.vm.ci.code.StackSlot; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
121 import jdk.vm.ci.code.TargetDescription; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
122 import jdk.vm.ci.common.JVMCIError; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
123 import jdk.vm.ci.hotspot.HotSpotVMConfig; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
124 import jdk.vm.ci.meta.AllocatableValue; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
125 import jdk.vm.ci.meta.JavaKind; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
126 import jdk.vm.ci.meta.JavaType; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
127 import jdk.vm.ci.meta.LIRKind; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
128 import jdk.vm.ci.meta.PlatformKind; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
129 import jdk.vm.ci.meta.Value; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
130 import jdk.vm.ci.sparc.SPARC; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22654
diff
changeset
|
131 import jdk.vm.ci.sparc.SPARCKind; |
10459 | 132 |
133 public class SPARCHotSpotRegisterConfig implements RegisterConfig { | |
134 | |
135 private final Architecture architecture; | |
136 | |
137 private final Register[] allocatable; | |
138 | |
139 private final RegisterAttributes[] attributesMap; | |
140 | |
22679
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
141 /** |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
142 * Does native code (C++ code) spill arguments in registers to the parent frame? |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
143 */ |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
144 private final boolean addNativeRegisterArgumentSlots; |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
145 |
10459 | 146 @Override |
147 public Register[] getAllocatableRegisters() { | |
148 return allocatable.clone(); | |
149 } | |
150 | |
20916
661ed7d3d10d
RegisterConfig: rename getAllocatableRegisters(PK,R[) to filterAllocatableRegisters and remove caching from implementors.
Josef Eisl <josef.eisl@jku.at>
parents:
20913
diff
changeset
|
151 public Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers) { |
10459 | 152 ArrayList<Register> list = new ArrayList<>(); |
20913
9b6ea36013c4
RegisterConfig: pass registers array to getAllocatableRegisters(PlatformKind).
Josef Eisl <josef.eisl@jku.at>
parents:
20149
diff
changeset
|
153 for (Register reg : registers) { |
10459 | 154 if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) { |
16321
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
155 // Special treatment for double precision |
16664
62f295bdea36
[SPARC] Fixing compare of short/char with constants, using half of single float registers as of now, otherwise it would overlap with double registers
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16654
diff
changeset
|
156 // TODO: This is wasteful it uses only half of the registers as float. |
22604
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
157 if (kind == SPARCKind.DOUBLE) { |
22406
2117e8883f28
[SPARC] Determine FPU Register type via its category
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22222
diff
changeset
|
158 if (reg.getRegisterCategory().equals(FPUd)) { |
16995
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
159 list.add(reg); |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
160 } |
22604
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
161 } else if (kind == SPARCKind.SINGLE) { |
22406
2117e8883f28
[SPARC] Determine FPU Register type via its category
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22222
diff
changeset
|
162 if (reg.getRegisterCategory().equals(FPUs)) { |
16321
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
163 list.add(reg); |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
164 } |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
165 } else { |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
166 list.add(reg); |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
167 } |
10459 | 168 } |
169 } | |
170 | |
18355
9a11c4086341
size array appropriately when creating categorized register array
Doug Simon <doug.simon@oracle.com>
parents:
16995
diff
changeset
|
171 Register[] ret = list.toArray(new Register[list.size()]); |
10459 | 172 return ret; |
173 } | |
174 | |
175 @Override | |
176 public RegisterAttributes[] getAttributesMap() { | |
177 return attributesMap.clone(); | |
178 } | |
179 | |
10792 | 180 private final Register[] cpuCallerParameterRegisters = {o0, o1, o2, o3, o4, o5}; |
181 private final Register[] cpuCalleeParameterRegisters = {i0, i1, i2, i3, i4, i5}; | |
182 | |
10459 | 183 private final Register[] fpuParameterRegisters = {f0, f1, f2, f3, f4, f5, f6, f7}; |
20149
b1a8928fc4b9
[SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19534
diff
changeset
|
184 private final Register[] fpuDoubleParameterRegisters = {d0, null, d2, null, d4, null, d6, null}; |
16929
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
185 // @formatter:off |
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
186 private final Register[] callerSaveRegisters = |
19534
9299e71df12a
[SPARC] Save all registers for foreign calls
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
18630
diff
changeset
|
187 {g1, g2, g3, g4, g5, g6, g7, |
9299e71df12a
[SPARC] Save all registers for foreign calls
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
18630
diff
changeset
|
188 o0, o1, o2, o3, o4, o5, o7, |
16929
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
189 f0, f1, f2, f3, f4, f5, f6, f7, |
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
190 f8, f9, f10, f11, f12, f13, f14, f15, |
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
191 f16, f17, f18, f19, f20, f21, f22, f23, |
16995
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
192 f24, f25, f26, f27, f28, f29, f30, f31, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
193 d32, d34, d36, d38, d40, d42, d44, d46, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
194 d48, d50, d52, d54, d56, d58, d60, d62}; |
16929
5dc533f7565a
[SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16664
diff
changeset
|
195 // @formatter:on |
11233 | 196 |
197 /** | |
198 * Registers saved by the callee. This lists all L and I registers which are saved in the | |
21674
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
199 * register window. |
11233 | 200 */ |
201 private final Register[] calleeSaveRegisters = {l0, l1, l2, l3, l4, l5, l6, l7, i0, i1, i2, i3, i4, i5, i6, i7}; | |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10459
diff
changeset
|
202 |
10459 | 203 private static Register[] initAllocatable(boolean reserveForHeapBase) { |
204 Register[] registers = null; | |
205 if (reserveForHeapBase) { | |
15345 | 206 // @formatter:off |
207 registers = new Register[]{ | |
10854
e1fcdda22831
SPARC: can compile some stubs now but they don't work yet
twisti
parents:
10792
diff
changeset
|
208 // TODO this is not complete |
16524
a08a58d0736b
[SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16430
diff
changeset
|
209 // o7 cannot be used as register because it is always overwritten on call |
a08a58d0736b
[SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16430
diff
changeset
|
210 // and the current register handler would ignore this fact if the called |
a08a58d0736b
[SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16430
diff
changeset
|
211 // method still does not modify registers, in fact o7 is modified by the Call instruction |
a08a58d0736b
[SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16430
diff
changeset
|
212 // There would be some extra handlin necessary to be able to handle the o7 properly for local usage |
22222
1cf2b4143f3c
[SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22144
diff
changeset
|
213 g1, g4, g5, |
1cf2b4143f3c
[SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22144
diff
changeset
|
214 o0, o1, o2, o3, o4, o5, /*o6,o7,*/ |
10459 | 215 l0, l1, l2, l3, l4, l5, l6, l7, |
11233 | 216 i0, i1, i2, i3, i4, i5, /*i6,*/ /*i7,*/ |
16995
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
217 //f0, f1, f2, f3, f4, f5, f6, f7, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
218 f8, f9, f10, f11, f12, f13, f14, f15, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
219 f16, f17, f18, f19, f20, f21, f22, f23, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
220 f24, f25, f26, f27, f28, f29, f30, f31, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
221 d32, d34, d36, d38, d40, d42, d44, d46, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
222 d48, d50, d52, d54, d56, d58, d60, d62 |
15345 | 223 }; |
224 // @formatter:on | |
10459 | 225 } else { |
15345 | 226 // @formatter:off |
227 registers = new Register[]{ | |
10854
e1fcdda22831
SPARC: can compile some stubs now but they don't work yet
twisti
parents:
10792
diff
changeset
|
228 // TODO this is not complete |
22222
1cf2b4143f3c
[SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22144
diff
changeset
|
229 g1, g4, g5, |
16524
a08a58d0736b
[SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16430
diff
changeset
|
230 o0, o1, o2, o3, o4, o5, /*o6, o7,*/ |
10459 | 231 l0, l1, l2, l3, l4, l5, l6, l7, |
11233 | 232 i0, i1, i2, i3, i4, i5, /*i6,*/ /*i7,*/ |
16995
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
233 // f0, f1, f2, f3, f4, f5, f6, f7 |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
234 f8, f9, f10, f11, f12, f13, f14, f15, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
235 f16, f17, f18, f19, f20, f21, f22, f23, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
236 f24, f25, f26, f27, f28, f29, f30, f31, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
237 d32, d34, d36, d38, d40, d42, d44, d46, |
4feac7e51f42
[SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16932
diff
changeset
|
238 d48, d50, d52, d54, d56, d58, d60, d62 |
15345 | 239 }; |
240 // @formatter:on | |
10459 | 241 } |
242 | |
243 return registers; | |
244 } | |
245 | |
14559
883fbd3e06e0
Make size of PlatformKind overridable by VM specific code.
Roland Schatz <roland.schatz@oracle.com>
parents:
14003
diff
changeset
|
246 public SPARCHotSpotRegisterConfig(TargetDescription target, HotSpotVMConfig config) { |
22679
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
247 this(target, initAllocatable(config.useCompressedOops), config); |
15011
c8e575742f36
allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents:
14991
diff
changeset
|
248 } |
c8e575742f36
allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents:
14991
diff
changeset
|
249 |
22679
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
250 public SPARCHotSpotRegisterConfig(TargetDescription target, Register[] allocatable, HotSpotVMConfig config) { |
14559
883fbd3e06e0
Make size of PlatformKind overridable by VM specific code.
Roland Schatz <roland.schatz@oracle.com>
parents:
14003
diff
changeset
|
251 this.architecture = target.arch; |
15011
c8e575742f36
allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents:
14991
diff
changeset
|
252 this.allocatable = allocatable.clone(); |
10459 | 253 attributesMap = RegisterAttributes.createMap(this, SPARC.allRegisters); |
22679
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
254 this.addNativeRegisterArgumentSlots = config.linuxOs; |
10459 | 255 } |
256 | |
257 @Override | |
258 public Register[] getCallerSaveRegisters() { | |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10459
diff
changeset
|
259 return callerSaveRegisters; |
10459 | 260 } |
261 | |
22431
0a0c0111ecda
Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents:
22406
diff
changeset
|
262 public Register[] getCalleeSaveRegisters() { |
0a0c0111ecda
Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents:
22406
diff
changeset
|
263 return calleeSaveRegisters; |
0a0c0111ecda
Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents:
22406
diff
changeset
|
264 } |
0a0c0111ecda
Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents:
22406
diff
changeset
|
265 |
10459 | 266 @Override |
14614
abf7cf57df5e
added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents:
14559
diff
changeset
|
267 public boolean areAllAllocatableRegistersCallerSaved() { |
abf7cf57df5e
added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents:
14559
diff
changeset
|
268 return false; |
abf7cf57df5e
added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents:
14559
diff
changeset
|
269 } |
abf7cf57df5e
added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents:
14559
diff
changeset
|
270 |
abf7cf57df5e
added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents:
14559
diff
changeset
|
271 @Override |
10459 | 272 public Register getRegisterForRole(int index) { |
273 throw new UnsupportedOperationException(); | |
274 } | |
275 | |
276 @Override | |
277 public CallingConvention getCallingConvention(Type type, JavaType returnType, JavaType[] parameterTypes, TargetDescription target, boolean stackOnly) { | |
10792 | 278 if (type == Type.JavaCall || type == Type.NativeCall) { |
279 return callingConvention(cpuCallerParameterRegisters, returnType, parameterTypes, type, target, stackOnly); | |
10459 | 280 } |
10792 | 281 if (type == Type.JavaCallee) { |
282 return callingConvention(cpuCalleeParameterRegisters, returnType, parameterTypes, type, target, stackOnly); | |
283 } | |
21543
93c50cefb9e8
moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21526
diff
changeset
|
284 throw JVMCIError.shouldNotReachHere(); |
10459 | 285 } |
286 | |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
287 public Register[] getCallingConventionRegisters(Type type, JavaKind kind) { |
22604
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
288 switch (kind) { |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
289 case Boolean: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
290 case Byte: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
291 case Short: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
292 case Char: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
293 case Int: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
294 case Long: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
295 case Object: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
296 return type == Type.JavaCallee ? cpuCalleeParameterRegisters : cpuCallerParameterRegisters; |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
297 case Double: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
298 case Float: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
299 return fpuParameterRegisters; |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
300 default: |
479228019e48
[SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22594
diff
changeset
|
301 throw JVMCIError.shouldNotReachHere("Unknown JavaKind " + kind); |
10459 | 302 } |
303 } | |
304 | |
305 private CallingConvention callingConvention(Register[] generalParameterRegisters, JavaType returnType, JavaType[] parameterTypes, Type type, TargetDescription target, boolean stackOnly) { | |
306 AllocatableValue[] locations = new AllocatableValue[parameterTypes.length]; | |
307 | |
308 int currentGeneral = 0; | |
309 int currentFloating = 0; | |
16637
eda09bc52ab9
[SPARC] Fix handling of overflow parameter on stack.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16634
diff
changeset
|
310 int currentStackOffset = 0; |
10459 | 311 |
312 for (int i = 0; i < parameterTypes.length; i++) { | |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
313 final JavaKind kind = parameterTypes[i].getJavaKind().getStackKind(); |
10459 | 314 |
315 switch (kind) { | |
316 case Byte: | |
317 case Boolean: | |
318 case Short: | |
319 case Char: | |
320 case Int: | |
321 case Long: | |
322 case Object: | |
323 if (!stackOnly && currentGeneral < generalParameterRegisters.length) { | |
324 Register register = generalParameterRegisters[currentGeneral++]; | |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15345
diff
changeset
|
325 locations[i] = register.asValue(target.getLIRKind(kind)); |
10459 | 326 } |
327 break; | |
16321
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
328 case Double: |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
329 if (!stackOnly && currentFloating < fpuParameterRegisters.length) { |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
330 if (currentFloating % 2 != 0) { |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
331 // Make register number even to be a double reg |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
332 currentFloating++; |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
333 } |
20149
b1a8928fc4b9
[SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19534
diff
changeset
|
334 Register register = fpuDoubleParameterRegisters[currentFloating]; |
16321
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
335 currentFloating += 2; // Only every second is a double register |
16327
5f01f7c48d40
Merge with 5cdcb94a7cf7d9782107cc582f3e4b50000d5d1f
Stefan Anzinger <stefan.anzinger@gmail.com>
diff
changeset
|
336 locations[i] = register.asValue(target.getLIRKind(kind)); |
16321
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
337 } |
fac4af29aeb8
[SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
15345
diff
changeset
|
338 break; |
10459 | 339 case Float: |
340 if (!stackOnly && currentFloating < fpuParameterRegisters.length) { | |
341 Register register = fpuParameterRegisters[currentFloating++]; | |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15345
diff
changeset
|
342 locations[i] = register.asValue(target.getLIRKind(kind)); |
10459 | 343 } |
344 break; | |
345 default: | |
21543
93c50cefb9e8
moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21526
diff
changeset
|
346 throw JVMCIError.shouldNotReachHere(); |
10459 | 347 } |
348 | |
349 if (locations[i] == null) { | |
22557
0a7b7c7274be
[SPARC] Fix problems introduced on refactoring Kind.Object and Value.getKind()
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22536
diff
changeset
|
350 LIRKind lirKind = target.getLIRKind(kind); |
16654
8aa938ab4ac8
[SPARC] Spill slots must be 4 byte aligned
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16637
diff
changeset
|
351 // Stack slot is always aligned to its size in bytes but minimum wordsize |
22594
355c41327aea
Remove TargetDescription.getSizeInBytes method.
Roland Schatz <roland.schatz@oracle.com>
parents:
22569
diff
changeset
|
352 int typeSize = lirKind.getPlatformKind().getSizeInBytes(); |
21674
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
353 currentStackOffset = roundUp(currentStackOffset, typeSize); |
22144
7ae8ad713862
[SPARC] Do not preset SPARCFrameMap.initialSpillsize for register save area; set calleeSaveAreaSize correctly instead
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22054
diff
changeset
|
354 int slotOffset = currentStackOffset + SPARC.REGISTER_SAFE_AREA_SIZE; |
22557
0a7b7c7274be
[SPARC] Fix problems introduced on refactoring Kind.Object and Value.getKind()
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22536
diff
changeset
|
355 locations[i] = StackSlot.get(lirKind, slotOffset, !type.out); |
16637
eda09bc52ab9
[SPARC] Fix handling of overflow parameter on stack.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16634
diff
changeset
|
356 currentStackOffset += typeSize; |
10459 | 357 } |
358 } | |
359 | |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
360 JavaKind returnKind = returnType == null ? JavaKind.Void : returnType.getJavaKind(); |
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
361 AllocatableValue returnLocation = returnKind == JavaKind.Void ? Value.ILLEGAL : getReturnRegister(returnKind, type).asValue(target.getLIRKind(returnKind.getStackKind())); |
22679
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
362 |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
363 int outArgSpillArea; |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
364 if (type == Type.NativeCall && addNativeRegisterArgumentSlots) { |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
365 // Space for native callee which may spill our outgoing arguments |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
366 outArgSpillArea = Math.min(locations.length, generalParameterRegisters.length) * target.wordSize; |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
367 } else { |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
368 outArgSpillArea = 0; |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
369 } |
4688478ecb7b
Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22672
diff
changeset
|
370 return new CallingConvention(currentStackOffset + outArgSpillArea, returnLocation, locations); |
10459 | 371 } |
372 | |
21674
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
373 private static int roundUp(int number, int mod) { |
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
374 return ((number + mod - 1) / mod) * mod; |
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
375 } |
e0b5d4fcd929
moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21673
diff
changeset
|
376 |
10459 | 377 @Override |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
378 public Register getReturnRegister(JavaKind kind) { |
10871
c3b09d69dfde
SPARC: fixes and more implementation; can now allocate objects
twisti
parents:
10854
diff
changeset
|
379 return getReturnRegister(kind, Type.JavaCallee); |
c3b09d69dfde
SPARC: fixes and more implementation; can now allocate objects
twisti
parents:
10854
diff
changeset
|
380 } |
c3b09d69dfde
SPARC: fixes and more implementation; can now allocate objects
twisti
parents:
10854
diff
changeset
|
381 |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22535
diff
changeset
|
382 private static Register getReturnRegister(JavaKind kind, Type type) { |
10459 | 383 switch (kind) { |
384 case Boolean: | |
385 case Byte: | |
386 case Char: | |
387 case Short: | |
388 case Int: | |
389 case Long: | |
390 case Object: | |
10871
c3b09d69dfde
SPARC: fixes and more implementation; can now allocate objects
twisti
parents:
10854
diff
changeset
|
391 return type == Type.JavaCallee ? i0 : o0; |
10459 | 392 case Float: |
20149
b1a8928fc4b9
[SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19534
diff
changeset
|
393 return f0; |
10459 | 394 case Double: |
20149
b1a8928fc4b9
[SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19534
diff
changeset
|
395 return d0; |
10459 | 396 case Void: |
397 case Illegal: | |
398 return null; | |
399 default: | |
400 throw new UnsupportedOperationException("no return register for type " + kind); | |
401 } | |
402 } | |
403 | |
404 @Override | |
405 public Register getFrameRegister() { | |
406 return sp; | |
407 } | |
408 | |
409 @Override | |
410 public String toString() { | |
411 return String.format("Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n"); | |
412 } | |
413 } |