annotate graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSnippetUtils.java @ 8634:b6491ee579d3

remove UNKNOWN_LOCATION
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 04 Apr 2013 15:31:27 +0200
parents bbd8167f21f9
children 3d2c2b68fe93
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1 /*
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
4 *
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
8 *
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
13 * accompanied this code).
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
14 *
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
18 *
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
21 * questions.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
22 */
8415
2361bf148c06 rename packages: *snippets* -> *replacements*
Doug Simon <doug.simon@oracle.com>
parents: 8354
diff changeset
23 package com.oracle.graal.hotspot.replacements;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
24
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
25 import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*;
8415
2361bf148c06 rename packages: *snippets* -> *replacements*
Doug Simon <doug.simon@oracle.com>
parents: 8354
diff changeset
26 import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*;
7841
674a8b9e62f8 Remove unused fields in TargetDescription. Use Unsafe.pageSize().
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 7760
diff changeset
27 import sun.misc.*;
7543
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
28
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
29 import com.oracle.graal.api.code.*;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
30 import com.oracle.graal.api.meta.*;
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
31 import com.oracle.graal.graph.Node.ConstantNodeParameter;
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
32 import com.oracle.graal.graph.Node.NodeIntrinsic;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
33 import com.oracle.graal.hotspot.*;
7099
3656236c7d27 Cleanup of Kind class: remove use of Unsafe class
Christian Wimmer <christian.wimmer@oracle.com>
parents: 6950
diff changeset
34 import com.oracle.graal.hotspot.meta.*;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
35 import com.oracle.graal.hotspot.nodes.*;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
36 import com.oracle.graal.nodes.extended.*;
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
37 import com.oracle.graal.replacements.Snippet.Fold;
8415
2361bf148c06 rename packages: *snippets* -> *replacements*
Doug Simon <doug.simon@oracle.com>
parents: 8354
diff changeset
38 import com.oracle.graal.replacements.nodes.*;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7275
diff changeset
39 import com.oracle.graal.word.*;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
40
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
41 //JaCoCo Exclude
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
42
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
43 /**
7543
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
44 * A collection of methods used in HotSpot snippets and substitutions.
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
45 */
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
46 public class HotSpotSnippetUtils {
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
47
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
48 public static final Object ANY_LOCATION = LocationNode.ANY_LOCATION;
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
49 public static final Object FINAL_LOCATION = LocationNode.FINAL_LOCATION;
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
50
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
51 public static HotSpotVMConfig config() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
52 return HotSpotGraalRuntime.getInstance().getConfig();
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
53 }
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
54
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
55 @Fold
8502
ff4fa8b0516e -Create push patch
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8501
diff changeset
56 public static boolean useTLAB() {
ff4fa8b0516e -Create push patch
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8501
diff changeset
57 return config().useTLAB;
ff4fa8b0516e -Create push patch
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8501
diff changeset
58 }
ff4fa8b0516e -Create push patch
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8501
diff changeset
59
ff4fa8b0516e -Create push patch
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8501
diff changeset
60 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
61 public static boolean verifyOops() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
62 return config().verifyOops;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
63 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
64
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
65 public static final Object TLAB_TOP_LOCATION = LocationNode.createLocation("TlabTop");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
66
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
67 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
68 public static int threadTlabTopOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
69 return config().threadTlabTopOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
70 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
71
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
72 public static final Object TLAB_END_LOCATION = LocationNode.createLocation("TlabEnd");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
73
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
74 @Fold
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
75 private static int threadTlabEndOffset() {
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
76 return config().threadTlabEndOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
77 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
78
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
79 public static final Object TLAB_START_LOCATION = LocationNode.createLocation("TlabStart");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
80
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
81 @Fold
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
82 private static int threadTlabStartOffset() {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
83 return config().threadTlabStartOffset;
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
84 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
85
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
86 public static Word readTlabTop(Word thread) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
87 return thread.readWord(threadTlabTopOffset(), TLAB_TOP_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
88 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
89
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
90 public static Word readTlabEnd(Word thread) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
91 return thread.readWord(threadTlabEndOffset(), TLAB_END_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
92 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
93
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
94 public static Word readTlabStart(Word thread) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
95 return thread.readWord(threadTlabStartOffset(), TLAB_START_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
96 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
97
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
98 public static void writeTlabTop(Word thread, Word top) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
99 thread.writeWord(threadTlabTopOffset(), top, TLAB_TOP_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
100 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
101
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
102 public static void initializeTlab(Word thread, Word start, Word end) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
103 thread.writeWord(threadTlabStartOffset(), start, TLAB_START_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
104 thread.writeWord(threadTlabTopOffset(), start, TLAB_TOP_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
105 thread.writeWord(threadTlabEndOffset(), end, TLAB_END_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
106 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
107
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
108 @Fold
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
109 public static int threadObjectOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
110 return config().threadObjectOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
111 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
112
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
113 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
114 public static int osThreadOffset() {
8451
2ffd472c5d25 Backed out changeset: 10293cbfc2b6
Doug Simon <doug.simon@oracle.com>
parents: 8436
diff changeset
115 return config().osThreadOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
116 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
117
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
118 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
119 public static int osThreadInterruptedOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
120 return config().osThreadInterruptedOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
121 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
122
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
123 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
124 public static Kind wordKind() {
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
125 return HotSpotGraalRuntime.getInstance().getTarget().wordKind;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
126 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
127
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
128 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
129 public static Register threadRegister() {
6494
df02fa2bce58 refactored all AMD64 specific HotSpot code in com.oracle.graal.hotspot.target.amd64 package
Doug Simon <doug.simon@oracle.com>
parents: 6493
diff changeset
130 return HotSpotGraalRuntime.getInstance().getRuntime().threadRegister();
6364
07da50ea3275 thread register is now retrieved from HotSpotVMConfig instead of being hard coded
Doug Simon <doug.simon@oracle.com>
parents: 6362
diff changeset
131 }
07da50ea3275 thread register is now retrieved from HotSpotVMConfig instead of being hard coded
Doug Simon <doug.simon@oracle.com>
parents: 6362
diff changeset
132
07da50ea3275 thread register is now retrieved from HotSpotVMConfig instead of being hard coded
Doug Simon <doug.simon@oracle.com>
parents: 6362
diff changeset
133 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
134 public static Register stackPointerRegister() {
6494
df02fa2bce58 refactored all AMD64 specific HotSpot code in com.oracle.graal.hotspot.target.amd64 package
Doug Simon <doug.simon@oracle.com>
parents: 6493
diff changeset
135 return HotSpotGraalRuntime.getInstance().getRuntime().stackPointerRegister();
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
136 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
137
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
138 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
139 public static int wordSize() {
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
140 return HotSpotGraalRuntime.getInstance().getTarget().wordSize;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
141 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
142
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
143 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
144 public static int pageSize() {
7841
674a8b9e62f8 Remove unused fields in TargetDescription. Use Unsafe.pageSize().
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 7760
diff changeset
145 return Unsafe.getUnsafe().pageSize();
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
146 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
147
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
148 public static final Object PROTOTYPE_MARK_WORD_LOCATION = LocationNode.createLocation("PrototypeMarkWord");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
149
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
150 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
151 public static int prototypeMarkWordOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
152 return config().prototypeMarkWordOffset;
6368
43e274f43a9a made NewObjectSnippets optionally load the initial mark word when initializing an object - this is disabled until the bug triggered in lusearch by this change is fixed
Doug Simon <doug.simon@oracle.com>
parents: 6364
diff changeset
153 }
43e274f43a9a made NewObjectSnippets optionally load the initial mark word when initializing an object - this is disabled until the bug triggered in lusearch by this change is fixed
Doug Simon <doug.simon@oracle.com>
parents: 6364
diff changeset
154
43e274f43a9a made NewObjectSnippets optionally load the initial mark word when initializing an object - this is disabled until the bug triggered in lusearch by this change is fixed
Doug Simon <doug.simon@oracle.com>
parents: 6364
diff changeset
155 @Fold
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
156 public static long arrayPrototypeMarkWord() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
157 return config().arrayPrototypeMarkWord;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
158 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
159
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
160 @Fold
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
161 public static int klassAccessFlagsOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
162 return config().klassAccessFlagsOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
163 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
164
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
165 @Fold
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
166 private static int klassLayoutHelperOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
167 return config().klassLayoutHelperOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
168 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
169
7902
14fedab0419e improved arraycopy and Object.clone snippets
Lukas Stadler <lukas.stadler@jku.at>
parents: 7868
diff changeset
170 public static int readLayoutHelper(Word hub) {
14fedab0419e improved arraycopy and Object.clone snippets
Lukas Stadler <lukas.stadler@jku.at>
parents: 7868
diff changeset
171 return hub.readInt(klassLayoutHelperOffset(), FINAL_LOCATION);
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
172 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
173
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
174 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
175 public static int arrayKlassLayoutHelperIdentifier() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
176 return config().arrayKlassLayoutHelperIdentifier;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
177 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
178
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
179 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
180 public static int arrayKlassComponentMirrorOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
181 return config().arrayKlassComponentMirrorOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
182 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
183
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
184 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
185 public static int klassSuperKlassOffset() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
186 return config().klassSuperKlassOffset;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
187 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
188
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
189 public static final Object MARK_WORD_LOCATION = LocationNode.createLocation("MarkWord");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
190
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
191 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
192 public static int markOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
193 return config().markOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
194 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
195
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
196 public static final Object HUB_LOCATION = LocationNode.createLocation("Hub");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
197
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
198 @Fold
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
199 private static int hubOffset() {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
200 return config().hubOffset;
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
201 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
202
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
203 public static void initializeObjectHeader(Word memory, Word markWord, Word hub) {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
204 memory.writeWord(markOffset(), markWord, MARK_WORD_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
205 memory.writeWord(hubOffset(), hub, HUB_LOCATION);
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
206 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
207
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
208 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
209 public static int unlockedMask() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
210 return config().unlockedMask;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
211 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
212
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
213 /**
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
214 * Mask for a biasable, locked or unlocked mark word.
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
215 *
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
216 * <pre>
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
217 * +----------------------------------+-+-+
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
218 * | 1|1|1|
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
219 * +----------------------------------+-+-+
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
220 * </pre>
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
221 *
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
222 */
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
223 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
224 public static int biasedLockMaskInPlace() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
225 return config().biasedLockMaskInPlace;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
226 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
227
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
228 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
229 public static int epochMaskInPlace() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
230 return config().epochMaskInPlace;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
231 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
232
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
233 /**
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
234 * Pattern for a biasable, unlocked mark word.
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
235 *
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
236 * <pre>
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
237 * +----------------------------------+-+-+
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
238 * | 1|0|1|
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
239 * +----------------------------------+-+-+
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
240 * </pre>
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
241 *
6389
2d84f74e394c enabled type-filter based logging of (snippet-based) monitor operations with the "graal.monitorsnippets.log" system property
Doug Simon <doug.simon@oracle.com>
parents: 6386
diff changeset
242 */
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
243 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
244 public static int biasedLockPattern() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
245 return config().biasedLockPattern;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
246 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
247
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
248 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
249 public static int ageMaskInPlace() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
250 return config().ageMaskInPlace;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
251 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
252
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
253 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
254 public static int metaspaceArrayLengthOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
255 return config().metaspaceArrayLengthOffset;
6950
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
256 }
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
257
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
258 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
259 public static int metaspaceArrayBaseOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
260 return config().metaspaceArrayBaseOffset;
6950
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
261 }
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
262
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
263 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
264 public static int arrayLengthOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
265 return config().arrayLengthOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
266 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
267
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
268 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
269 public static int arrayBaseOffset(Kind elementKind) {
7099
3656236c7d27 Cleanup of Kind class: remove use of Unsafe class
Christian Wimmer <christian.wimmer@oracle.com>
parents: 6950
diff changeset
270 return HotSpotRuntime.getArrayBaseOffset(elementKind);
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
271 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
272
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
273 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
274 public static int arrayIndexScale(Kind elementKind) {
7099
3656236c7d27 Cleanup of Kind class: remove use of Unsafe class
Christian Wimmer <christian.wimmer@oracle.com>
parents: 6950
diff changeset
275 return HotSpotRuntime.getArrayIndexScale(elementKind);
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
276 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
277
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
278 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
279 public static int cardTableShift() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
280 return config().cardtableShift;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
281 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
282
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
283 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
284 public static long cardTableStart() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
285 return config().cardtableStartAddress;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
286 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
287
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
288 @Fold
8490
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
289 public static int g1CardQueueIndexOffset() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
290 return config().g1CardQueueIndexOffset;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
291 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
292
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
293 @Fold
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
294 public static int g1CardQueueBufferOffset() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
295 return config().g1CardQueueBufferOffset;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
296 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
297
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
298 @Fold
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
299 public static int logOfHRGrainBytes() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
300 return config().logOfHRGrainBytes;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
301 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
302
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
303 @Fold
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
304 public static int g1SATBQueueMarkingOffset() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
305 return config().g1SATBQueueMarkingOffset;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
306 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
307
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
308 @Fold
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
309 public static int g1SATBQueueIndexOffset() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
310 return config().g1SATBQueueIndexOffset;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
311 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
312
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
313 @Fold
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
314 public static int g1SATBQueueBufferOffset() {
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
315 return config().g1SATBQueueBufferOffset;
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
316 }
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
317
1567c6cc6561 Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7760
diff changeset
318 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
319 public static int superCheckOffsetOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
320 return config().superCheckOffsetOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
321 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
322
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
323 public static final Object SECONDARY_SUPER_CACHE_LOCATION = LocationNode.createLocation("SecondarySuperCache");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
324
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
325 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
326 public static int secondarySuperCacheOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
327 return config().secondarySuperCacheOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
328 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
329
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
330 public static final Object SECONDARY_SUPERS_LOCATION = LocationNode.createLocation("SecondarySupers");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
331
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
332 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
333 public static int secondarySupersOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
334 return config().secondarySupersOffset;
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
335 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
336
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
337 public static final Object DISPLACED_MARK_WORD_LOCATION = LocationNode.createLocation("DisplacedMarkWord");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
338
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
339 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
340 public static int lockDisplacedMarkOffset() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
341 return config().basicLockDisplacedHeaderOffset;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
342 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
343
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
344 @Fold
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
345 public static boolean useBiasedLocking() {
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
346 return config().useBiasedLocking;
6386
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
347 }
abeeb57b655d added MonitorSnippets which passes MonitorTest but is not yet enabled for general lowering
Doug Simon <doug.simon@oracle.com>
parents: 6375
diff changeset
348
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
349 @Fold
8501
41fc46da946a -More fixes and passrate(fop)
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8492
diff changeset
350 public static boolean useG1GC() {
41fc46da946a -More fixes and passrate(fop)
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8492
diff changeset
351 return config().useG1GC;
41fc46da946a -More fixes and passrate(fop)
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8492
diff changeset
352 }
41fc46da946a -More fixes and passrate(fop)
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8492
diff changeset
353
41fc46da946a -More fixes and passrate(fop)
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8492
diff changeset
354 @Fold
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
355 static int uninitializedIdentityHashCodeValue() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
356 return config().uninitializedIdentityHashCodeValue;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
357 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
358
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
359 @Fold
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
360 static int identityHashCodeShift() {
7227
8fbb97b0016a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7226
diff changeset
361 return config().identityHashCodeShift;
7222
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
362 }
720925633b3a fixes after merge
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7221
diff changeset
363
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
364 /**
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
365 * Loads the hub from a object, null checking it first.
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
366 */
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
367 public static Word loadHub(Object object) {
6950
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
368 return loadHubIntrinsic(object, wordKind());
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
369 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
370
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
371 public static Object verifyOop(Object object) {
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
372 if (verifyOops()) {
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
373 VerifyOopStubCall.call(object);
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
374 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
375 return object;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
376 }
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
377
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
378 /**
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
379 * Gets the value of the stack pointer register as a Word.
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
380 */
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
381 public static Word stackPointer() {
8354
55ef03d64f03 Generalize read and write of fixed register for snippets. Move to HotSpot-independent project.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7902
diff changeset
382 return HotSpotSnippetUtils.registerAsWord(stackPointerRegister(), true, false);
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
383 }
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
384
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
385 /**
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
386 * Gets the value of the thread register as a Word.
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
387 */
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
388 public static Word thread() {
8354
55ef03d64f03 Generalize read and write of fixed register for snippets. Move to HotSpot-independent project.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7902
diff changeset
389 return HotSpotSnippetUtils.registerAsWord(threadRegister(), true, false);
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
390 }
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
391
7143
445193cc2a7d added support for writing stubs in Java and wrote the TLAB fast refill stub
Doug Simon <doug.simon@oracle.com>
parents: 7099
diff changeset
392 public static Word loadWordFromObject(Object object, int offset) {
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
393 return loadWordFromObjectIntrinsic(object, 0, offset, wordKind());
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
394 }
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
395
8354
55ef03d64f03 Generalize read and write of fixed register for snippets. Move to HotSpot-independent project.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7902
diff changeset
396 @NodeIntrinsic(value = ReadRegisterNode.class, setStampFromReturnType = true)
55ef03d64f03 Generalize read and write of fixed register for snippets. Move to HotSpot-independent project.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7902
diff changeset
397 public static native Word registerAsWord(@ConstantNodeParameter Register register, @ConstantNodeParameter boolean directUse, @ConstantNodeParameter boolean incoming);
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
398
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
399 @SuppressWarnings("unused")
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
400 @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true)
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
401 private static Word loadWordFromObjectIntrinsic(Object object, @ConstantNodeParameter int displacement, long offset, @ConstantNodeParameter Kind wordKind) {
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
402 return Word.box(unsafeReadWord(object, offset + displacement));
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
403 }
6419
b74402a7079b fixed oopmap bug caused by unsafe mixing of word and object values
Doug Simon <doug.simon@oracle.com>
parents: 6389
diff changeset
404
8479
a6ba61be2b5f made method substitutions for Object be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8472
diff changeset
405 @SuppressWarnings("unused")
6950
41938af2b3d8 modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents: 6521
diff changeset
406 @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true)
8479
a6ba61be2b5f made method substitutions for Object be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8472
diff changeset
407 static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word) {
a6ba61be2b5f made method substitutions for Object be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8472
diff changeset
408 return Word.box(unsafeReadWord(object, hubOffset()));
a6ba61be2b5f made method substitutions for Object be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8472
diff changeset
409 }
7160
d526fa5640c8 replaced manual intrinsification of Object.getClass() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7158
diff changeset
410
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
411 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
412 public static int log2WordSize() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
413 return CodeUtil.log2(wordSize());
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
414 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
415
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
416 public static final Object CLASS_STATE_LOCATION = LocationNode.createLocation("ClassState");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
417
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
418 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
419 public static int klassStateOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
420 return config().klassStateOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
421 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
422
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
423 @Fold
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
424 public static int klassStateFullyInitialized() {
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
425 return config().klassStateFullyInitialized;
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
426 }
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
427
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
428 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
429 public static int klassModifierFlagsOffset() {
7158
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
430 return config().klassModifierFlagsOffset;
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
431 }
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
432
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
433 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
434 public static int klassOffset() {
7158
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
435 return config().klassOffset;
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
436 }
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
437
7915888f5db5 replace manual intrinsification of Class.getModifiers() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7147
diff changeset
438 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
439 public static int classMirrorOffset() {
7160
d526fa5640c8 replaced manual intrinsification of Object.getClass() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7158
diff changeset
440 return config().classMirrorOffset;
d526fa5640c8 replaced manual intrinsification of Object.getClass() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7158
diff changeset
441 }
d526fa5640c8 replaced manual intrinsification of Object.getClass() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7158
diff changeset
442
d526fa5640c8 replaced manual intrinsification of Object.getClass() with a snippet
Doug Simon <doug.simon@oracle.com>
parents: 7158
diff changeset
443 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
444 public static int klassInstanceSizeOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
445 return config().klassInstanceSizeOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
446 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
447
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
448 public static final Object HEAP_TOP_LOCATION = LocationNode.createLocation("HeapTop");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
449
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
450 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
451 public static long heapTopAddress() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
452 return config().heapTopAddress;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
453 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
454
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
455 public static final Object HEAP_END_LOCATION = LocationNode.createLocation("HeapEnd");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
456
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
457 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
458 public static long heapEndAddress() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
459 return config().heapEndAddress;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
460 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
461
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
462 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
463 public static long tlabIntArrayMarkWord() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
464 return config().tlabIntArrayMarkWord;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
465 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
466
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
467 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
468 public static boolean inlineContiguousAllocationSupported() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
469 return config().inlineContiguousAllocationSupported;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
470 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
471
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
472 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
473 public static int tlabAlignmentReserveInHeapWords() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
474 return config().tlabAlignmentReserve;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
475 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
476
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
477 public static final Object TLAB_SIZE_LOCATION = LocationNode.createLocation("TlabSize");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
478
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
479 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
480 public static int threadTlabSizeOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
481 return config().threadTlabSizeOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
482 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
483
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
484 public static final Object TLAB_THREAD_ALLOCATED_BYTES_LOCATION = LocationNode.createLocation("TlabThreadAllocatedBytes");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
485
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
486 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
487 public static int threadAllocatedBytesOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
488 return config().threadAllocatedBytesOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
489 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
490
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
491 public static final Object TLAB_REFILL_WASTE_LIMIT_LOCATION = LocationNode.createLocation("RefillWasteLimit");
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
492
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
493 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
494 public static int tlabRefillWasteLimitOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
495 return config().tlabRefillWasteLimitOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
496 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
497
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
498 public static final Object TLAB_NOF_REFILLS_LOCATION = LocationNode.createLocation("TlabNOfRefills");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
499
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
500 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
501 public static int tlabNumberOfRefillsOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
502 return config().tlabNumberOfRefillsOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
503 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
504
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
505 public static final Object TLAB_FAST_REFILL_WASTE_LOCATION = LocationNode.createLocation("TlabFastRefillWaste");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
506
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
507 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
508 public static int tlabFastRefillWasteOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
509 return config().tlabFastRefillWasteOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
510 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
511
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
512 public static final Object TLAB_SLOW_ALLOCATIONS_LOCATION = LocationNode.createLocation("TlabSlowAllocations");
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7841
diff changeset
513
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
514 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
515 public static int tlabSlowAllocationsOffset() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
516 return config().tlabSlowAllocationsOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
517 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
518
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
519 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
520 public static int tlabRefillWasteIncrement() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
521 return config().tlabRefillWasteIncrement;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
522 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
523
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
524 @Fold
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7300
diff changeset
525 public static boolean tlabStats() {
7147
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
526 return config().tlabStats;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
527 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
528
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
529 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
530 public static int layoutHelperOffset() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
531 return config().layoutHelperOffset;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
532 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
533
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
534 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
535 public static int layoutHelperHeaderSizeShift() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
536 return config().layoutHelperHeaderSizeShift;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
537 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
538
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
539 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
540 public static int layoutHelperHeaderSizeMask() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
541 return config().layoutHelperHeaderSizeMask;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
542 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
543
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
544 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
545 public static int layoutHelperLog2ElementSizeShift() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
546 return config().layoutHelperLog2ElementSizeShift;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
547 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
548
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
549 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
550 public static int layoutHelperLog2ElementSizeMask() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
551 return config().layoutHelperLog2ElementSizeMask;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
552 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
553
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
554 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
555 public static int layoutHelperElementTypeShift() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
556 return config().layoutHelperElementTypeShift;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
557 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
558
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
559 @Fold
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
560 public static int layoutHelperElementTypeMask() {
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
561 return config().layoutHelperElementTypeMask;
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
562 }
88d626e2c2a8 added TLAB fast refill stub for array allocation
Doug Simon <doug.simon@oracle.com>
parents: 7143
diff changeset
563
7760
0ae87cf94914 add primitive type mask to HotSpotVMConfig
Lukas Stadler <lukas.stadler@jku.at>
parents: 7701
diff changeset
564 @Fold
0ae87cf94914 add primitive type mask to HotSpotVMConfig
Lukas Stadler <lukas.stadler@jku.at>
parents: 7701
diff changeset
565 public static int layoutHelperElementTypePrimitiveInPlace() {
0ae87cf94914 add primitive type mask to HotSpotVMConfig
Lukas Stadler <lukas.stadler@jku.at>
parents: 7701
diff changeset
566 return config().layoutHelperElementTypePrimitiveInPlace;
0ae87cf94914 add primitive type mask to HotSpotVMConfig
Lukas Stadler <lukas.stadler@jku.at>
parents: 7701
diff changeset
567 }
0ae87cf94914 add primitive type mask to HotSpotVMConfig
Lukas Stadler <lukas.stadler@jku.at>
parents: 7701
diff changeset
568
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
569 static {
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
570 assert arrayIndexScale(Kind.Byte) == 1;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
571 assert arrayIndexScale(Kind.Boolean) == 1;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
572 assert arrayIndexScale(Kind.Char) == 2;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
573 assert arrayIndexScale(Kind.Short) == 2;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
574 assert arrayIndexScale(Kind.Int) == 4;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
575 assert arrayIndexScale(Kind.Long) == 8;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
576 assert arrayIndexScale(Kind.Float) == 4;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
577 assert arrayIndexScale(Kind.Double) == 8;
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
578 }
7543
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
579
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
580 static int computeHashCode(Object x) {
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
581 Word mark = loadWordFromObject(x, markOffset());
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
582
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
583 // this code is independent from biased locking (although it does not look that way)
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
584 final Word biasedLock = mark.and(biasedLockMaskInPlace());
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7556
diff changeset
585 if (biasedLock.equal(Word.unsigned(unlockedMask()))) {
7554
9472211c812b named constants for snippet probabilities (likely, frequent, fast_path, deopt), see CR-7
Lukas Stadler <lukas.stadler@jku.at>
parents: 7543
diff changeset
586 probability(FAST_PATH_PROBABILITY);
7543
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
587 int hash = (int) mark.unsignedShiftRight(identityHashCodeShift()).rawValue();
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
588 if (hash != uninitializedIdentityHashCodeValue()) {
7554
9472211c812b named constants for snippet probabilities (likely, frequent, fast_path, deopt), see CR-7
Lukas Stadler <lukas.stadler@jku.at>
parents: 7543
diff changeset
589 probability(FAST_PATH_PROBABILITY);
7543
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
590 return hash;
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
591 }
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
592 }
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
593
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
594 return IdentityHashCodeStubCall.call(x);
be0d995ef51e factored out code common to SystemSubstitutions.identityHashCode() and ObjectSubstitutions.hashCode()
Doug Simon <doug.simon@oracle.com>
parents: 7530
diff changeset
595 }
8564
bbd8167f21f9 Added executeHelper to HotSpotInstalled code that gets replaced by a MethodSubstitution
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 8522
diff changeset
596
bbd8167f21f9 Added executeHelper to HotSpotInstalled code that gets replaced by a MethodSubstitution
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 8522
diff changeset
597 @Fold
bbd8167f21f9 Added executeHelper to HotSpotInstalled code that gets replaced by a MethodSubstitution
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 8522
diff changeset
598 public static int verifiedEntryPointOffset() {
bbd8167f21f9 Added executeHelper to HotSpotInstalled code that gets replaced by a MethodSubstitution
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 8522
diff changeset
599 return config().nmethodEntryOffset;
bbd8167f21f9 Added executeHelper to HotSpotInstalled code that gets replaced by a MethodSubstitution
Matthias Grimmer <grimmer@ssw.jku.at>
parents: 8522
diff changeset
600 }
6362
6d232ee6a62d factored shared snippet functionality into HotSpotSnippetUtils
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
601 }