Mercurial > hg > graal-compiler
annotate graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java @ 13999:f2b300c6e621
Refactor Stamp hierarchy.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 20 Feb 2014 14:42:01 +0100 |
parents | 14db6fb488a0 |
children | 2b5b3fcd65ba |
rev | line source |
---|---|
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
1 /* |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
4 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
8 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
14 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
18 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
21 * questions. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
22 */ |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
23 package com.oracle.graal.nodes.type; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
24 |
5507
dc71b06d09f8
Moving classes from cri.ri to api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5504
diff
changeset
|
25 import com.oracle.graal.api.meta.*; |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
26 import com.oracle.graal.graph.*; |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
27 import com.oracle.graal.nodes.type.GenericStamp.GenericStampType; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
28 |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7489
diff
changeset
|
29 public class StampFactory { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
30 |
8933
a214dada94c4
jacoco-exclude StampFactory (fixes problems with BeginNode.anchor)
Lukas Stadler <lukas.stadler@jku.at>
parents:
7816
diff
changeset
|
31 // JaCoCo Exclude |
a214dada94c4
jacoco-exclude StampFactory (fixes problems with BeginNode.anchor)
Lukas Stadler <lukas.stadler@jku.at>
parents:
7816
diff
changeset
|
32 |
5540
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
33 private static final Stamp[] stampCache = new Stamp[Kind.values().length]; |
11387
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
34 private static final Stamp[] illegalStampCache = new Stamp[Kind.values().length]; |
5831
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
35 private static final Stamp objectStamp = new ObjectStamp(null, false, false, false); |
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
36 private static final Stamp objectNonNullStamp = new ObjectStamp(null, false, true, false); |
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
37 private static final Stamp objectAlwaysNullStamp = new ObjectStamp(null, false, false, true); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
38 private static final Stamp dependencyStamp = new GenericStamp(GenericStampType.Dependency); |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
39 private static final Stamp extensionStamp = new GenericStamp(GenericStampType.Extension); |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
40 private static final Stamp conditionStamp = new GenericStamp(GenericStampType.Condition); |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
41 private static final Stamp voidStamp = new GenericStamp(GenericStampType.Void); |
6406
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
42 private static final Stamp nodeIntrinsicStamp = new ObjectStamp(null, false, false, false); |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
43 private static final Stamp positiveInt = forInteger(Kind.Int, 0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE); |
4142
bc8527f3071c
Adjust code base to new level of warnings.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3733
diff
changeset
|
44 |
5540
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
45 private static void setCache(Kind kind, Stamp stamp) { |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
46 stampCache[kind.ordinal()] = stamp; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
47 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
48 |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
49 private static void setIntCache(Kind kind) { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
50 int bits = kind.getStackKind().getBitCount(); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
51 long mask; |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
52 if (kind.isUnsigned()) { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
53 mask = IntegerStamp.defaultMask(kind.getBitCount()); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
54 } else { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
55 mask = IntegerStamp.defaultMask(bits); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
56 } |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
57 setCache(kind, new IntegerStamp(bits, false, kind.getMinValue(), kind.getMaxValue(), 0, mask)); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
58 } |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
59 |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
60 private static void setFloatCache(Kind kind) { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
61 setCache(kind, new FloatStamp(kind.getBitCount())); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
62 } |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
63 |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
64 static { |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
65 setIntCache(Kind.Boolean); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
66 setIntCache(Kind.Byte); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
67 setIntCache(Kind.Short); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
68 setIntCache(Kind.Char); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
69 setIntCache(Kind.Int); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
70 setIntCache(Kind.Long); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
71 |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
72 setFloatCache(Kind.Float); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
73 setFloatCache(Kind.Double); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
74 |
5540
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
75 setCache(Kind.Object, objectStamp); |
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
76 setCache(Kind.Void, voidStamp); |
11387
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
77 for (Kind k : Kind.values()) { |
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
78 illegalStampCache[k.ordinal()] = new IllegalStamp(k); |
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
79 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
80 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
81 |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
82 /** |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
83 * Return a stamp for a Java kind, as it would be represented on the bytecode stack. |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
84 */ |
5540
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
85 public static Stamp forKind(Kind kind) { |
7489
8461d937ac18
Better for Load/Read stamps for non-stack kinds
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7103
diff
changeset
|
86 assert stampCache[kind.ordinal()] != null : "unexpected forKind(" + kind + ")"; |
8461d937ac18
Better for Load/Read stamps for non-stack kinds
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7103
diff
changeset
|
87 return stampCache[kind.ordinal()]; |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
88 } |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
89 |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
90 public static Stamp forVoid() { |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
91 return voidStamp; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
92 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
93 |
6406
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
94 /** |
7530
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7489
diff
changeset
|
95 * A stamp used only in the graph of intrinsics, e.g., snippets. It is then replaced by an |
5e3d1a68664e
applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents:
7489
diff
changeset
|
96 * actual stamp when the intrinsic is used, i.e., when the snippet template is instantiated. |
6406
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
97 */ |
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
98 public static Stamp forNodeIntrinsic() { |
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
99 return nodeIntrinsicStamp; |
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
100 } |
33dab7b4b006
Add snippet factory methods
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6329
diff
changeset
|
101 |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
102 public static Stamp intValue() { |
5540
a891c53a295b
Renaming RiKind => Kind.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
103 return forKind(Kind.Int); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
104 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
105 |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
106 public static Stamp dependency() { |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
107 return dependencyStamp; |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
108 } |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
109 |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
110 public static Stamp extension() { |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
111 return extensionStamp; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
112 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
113 |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
114 public static Stamp condition() { |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
115 return conditionStamp; |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
116 } |
5084
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
117 |
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
118 public static Stamp positiveInt() { |
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
119 return positiveInt; |
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
120 } |
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
121 |
11387
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
122 public static Stamp illegal(Kind kind) { |
9088d13767f3
Keep a kind in the illegal stamp
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11352
diff
changeset
|
123 return illegalStampCache[kind.ordinal()]; |
11265 | 124 } |
125 | |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
126 public static IntegerStamp forInteger(Kind kind, long lowerBound, long upperBound, long downMask, long upMask) { |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
127 return new IntegerStamp(kind.getBitCount(), kind.isUnsigned(), lowerBound, upperBound, downMask, upMask); |
5084
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
128 } |
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
129 |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
130 public static IntegerStamp forInteger(Kind kind, long lowerBound, long upperBound) { |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
131 return forInteger(kind.getBitCount(), kind.isUnsigned(), lowerBound, upperBound); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
132 } |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
133 |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
134 public static IntegerStamp forInteger(int bits, boolean unsigned) { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
135 return new IntegerStamp(bits, unsigned, IntegerStamp.defaultMinValue(bits, unsigned), IntegerStamp.defaultMaxValue(bits, unsigned), 0, IntegerStamp.defaultMask(bits)); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
136 } |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
137 |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
138 public static IntegerStamp forInteger(int bits, boolean unsigned, long lowerBound, long upperBound) { |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
139 long defaultMask = IntegerStamp.defaultMask(bits); |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
140 if (lowerBound == upperBound) { |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
141 return new IntegerStamp(bits, unsigned, lowerBound, lowerBound, lowerBound & defaultMask, lowerBound & defaultMask); |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
142 } |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
143 final long downMask; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
144 final long upMask; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
145 if (lowerBound >= 0) { |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
146 int upperBoundLeadingZeros = Long.numberOfLeadingZeros(upperBound); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
147 long differentBits = lowerBound ^ upperBound; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
148 int sameBitCount = Long.numberOfLeadingZeros(differentBits << upperBoundLeadingZeros); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
149 |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
150 upMask = upperBound | -1L >>> (upperBoundLeadingZeros + sameBitCount); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
151 downMask = upperBound & ~(-1L >>> (upperBoundLeadingZeros + sameBitCount)); |
5874
f0d4304243ff
Add intrinsics for (Long|Integer).(reverseBytes|numberOf(Trail|Lead)ingZeros)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5831
diff
changeset
|
152 } else { |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
153 if (upperBound >= 0) { |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
154 upMask = defaultMask; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
155 downMask = 0; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
156 } else { |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
157 int lowerBoundLeadingOnes = Long.numberOfLeadingZeros(~lowerBound); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
158 long differentBits = lowerBound ^ upperBound; |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
159 int sameBitCount = Long.numberOfLeadingZeros(differentBits << lowerBoundLeadingOnes); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
160 |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
161 upMask = lowerBound | -1L >>> (lowerBoundLeadingOnes + sameBitCount) | ~(-1L >>> lowerBoundLeadingOnes); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
162 downMask = lowerBound & ~(-1L >>> (lowerBoundLeadingOnes + sameBitCount)) | ~(-1L >>> lowerBoundLeadingOnes); |
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
163 } |
5874
f0d4304243ff
Add intrinsics for (Long|Integer).(reverseBytes|numberOf(Trail|Lead)ingZeros)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5831
diff
changeset
|
164 } |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
165 return new IntegerStamp(bits, unsigned, lowerBound, upperBound, downMask & defaultMask, upMask & defaultMask); |
5874
f0d4304243ff
Add intrinsics for (Long|Integer).(reverseBytes|numberOf(Trail|Lead)ingZeros)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5831
diff
changeset
|
166 } |
f0d4304243ff
Add intrinsics for (Long|Integer).(reverseBytes|numberOf(Trail|Lead)ingZeros)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5831
diff
changeset
|
167 |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
168 public static FloatStamp forFloat(Kind kind, double lowerBound, double upperBound, boolean nonNaN) { |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
169 assert kind.isNumericFloat(); |
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
170 return new FloatStamp(kind.getBitCount(), lowerBound, upperBound, nonNaN); |
5785
e5f0cf5b5627
more sophisticated float stamp
Lukas Stadler <lukas.stadler@jku.at>
parents:
5774
diff
changeset
|
171 } |
e5f0cf5b5627
more sophisticated float stamp
Lukas Stadler <lukas.stadler@jku.at>
parents:
5774
diff
changeset
|
172 |
5538
e18ba36bfebc
Renamed RiConstant => Constant.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5531
diff
changeset
|
173 public static Stamp forConstant(Constant value) { |
10723
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
174 Kind kind = value.getKind(); |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
175 switch (kind) { |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
176 case Boolean: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
177 case Byte: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
178 case Char: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
179 case Short: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
180 case Int: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
181 case Long: |
13999
f2b300c6e621
Refactor Stamp hierarchy.
Roland Schatz <roland.schatz@oracle.com>
parents:
13609
diff
changeset
|
182 long mask = value.asLong() & IntegerStamp.defaultMask(kind.getBitCount()); |
11352
8185c119d731
"always set" bit mask on IntegerStamps
Lukas Stadler <lukas.stadler@jku.at>
parents:
11265
diff
changeset
|
183 return forInteger(kind.getStackKind(), value.asLong(), value.asLong(), mask, mask); |
10723
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
184 case Float: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
185 return forFloat(kind, value.asFloat(), value.asFloat(), !Float.isNaN(value.asFloat())); |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
186 case Double: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
187 return forFloat(kind, value.asDouble(), value.asDouble(), !Double.isNaN(value.asDouble())); |
12617
bca33c3135de
PEA: support for unsafe stores of mismatching sizes, cleanup, documentation
Lukas Stadler <lukas.stadler@jku.at>
parents:
11959
diff
changeset
|
188 case Illegal: |
bca33c3135de
PEA: support for unsafe stores of mismatching sizes, cleanup, documentation
Lukas Stadler <lukas.stadler@jku.at>
parents:
11959
diff
changeset
|
189 return illegal(Kind.Illegal); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
190 case Object: |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
191 if (value.isNull()) { |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
192 return alwaysNull(); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
193 } else { |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
194 return objectNonNull(); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12617
diff
changeset
|
195 } |
10723
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
196 default: |
097a634b57b1
fix stamps for constants of boolean, byte, char and short type, add tests
Lukas Stadler <lukas.stadler@jku.at>
parents:
8933
diff
changeset
|
197 throw new GraalInternalError("unexpected kind: %s", kind); |
5084
77aa8141ba41
experimental type storage/query infrastructure, part 4:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5061
diff
changeset
|
198 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
199 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
200 |
11959
23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
Doug Simon <doug.simon@oracle.com>
parents:
11698
diff
changeset
|
201 public static Stamp forConstant(Constant value, MetaAccessProvider metaAccess) { |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5874
diff
changeset
|
202 assert value.getKind() == Kind.Object; |
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5874
diff
changeset
|
203 if (value.getKind() == Kind.Object) { |
11959
23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
Doug Simon <doug.simon@oracle.com>
parents:
11698
diff
changeset
|
204 ResolvedJavaType type = value.isNull() ? null : metaAccess.lookupJavaType(value); |
5831
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
205 return new ObjectStamp(type, value.isNonNull(), value.isNonNull(), value.isNull()); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
206 } else { |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5874
diff
changeset
|
207 throw new GraalInternalError(Kind.Object + " expected, actual kind: %s", value.getKind()); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
208 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
209 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
210 |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
211 public static Stamp object() { |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
212 return objectStamp; |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
213 } |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
214 |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
215 public static Stamp objectNonNull() { |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
216 return objectNonNullStamp; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
217 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
218 |
5831
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
219 public static Stamp alwaysNull() { |
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
220 return objectAlwaysNullStamp; |
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
221 } |
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
222 |
5541
b4c406861c33
More renamings to drop Ri* prefix completely. Deleted graph.BitMap class and replaced with java.util.BitSet.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5540
diff
changeset
|
223 public static Stamp declared(ResolvedJavaType type) { |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
224 return declared(type, false); |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
225 } |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
226 |
5541
b4c406861c33
More renamings to drop Ri* prefix completely. Deleted graph.BitMap class and replaced with java.util.BitSet.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5540
diff
changeset
|
227 public static Stamp declaredNonNull(ResolvedJavaType type) { |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
228 return declared(type, true); |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
229 } |
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
230 |
5541
b4c406861c33
More renamings to drop Ri* prefix completely. Deleted graph.BitMap class and replaced with java.util.BitSet.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5540
diff
changeset
|
231 public static Stamp declared(ResolvedJavaType type, boolean nonNull) { |
7031
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
232 return object(type, false, nonNull); |
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
233 } |
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
234 |
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
235 public static Stamp object(ResolvedJavaType type, boolean exactType, boolean nonNull) { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
236 assert type != null; |
6539
2463eb24b644
Cleanup of Graal API: Rename methods so that it follows the getXxx naming convention and so that they are similar to the names of the java.lang.reflect classes. Remove unused methods.
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6406
diff
changeset
|
237 assert type.getKind() == Kind.Object; |
6950
41938af2b3d8
modifications to support non-perm-gen changes in HotSpot
Doug Simon <doug.simon@oracle.com>
parents:
6539
diff
changeset
|
238 ResolvedJavaType exact = type.asExactType(); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
239 if (exact != null) { |
7031
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
240 assert !exactType || type == exact; |
5831
ed08c40d67de
Add a alwaysNull property to ObjectStamp (Phi(null, a! A) get a "a A" stamp and not just "a -")
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5830
diff
changeset
|
241 return new ObjectStamp(exact, true, nonNull, false); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
242 } else { |
7031
2e577202843c
Better implementation of UnsafeCastNode
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6954
diff
changeset
|
243 return new ObjectStamp(type, exactType, nonNull, false); |
5443
141817e206d4
changes to the dependencies and stamp system:
Lukas Stadler <lukas.stadler@jku.at>
parents:
5390
diff
changeset
|
244 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
245 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
246 |
5541
b4c406861c33
More renamings to drop Ri* prefix completely. Deleted graph.BitMap class and replaced with java.util.BitSet.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5540
diff
changeset
|
247 public static Stamp exactNonNull(ResolvedJavaType type) { |
13609
14db6fb488a0
UnsafeAllocTest: fix stamp problem
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
248 if (ObjectStamp.isConcreteType(type)) { |
14db6fb488a0
UnsafeAllocTest: fix stamp problem
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
249 return new ObjectStamp(type, true, true, false); |
14db6fb488a0
UnsafeAllocTest: fix stamp problem
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
250 } else { |
14db6fb488a0
UnsafeAllocTest: fix stamp problem
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
251 return illegal(Kind.Object); |
14db6fb488a0
UnsafeAllocTest: fix stamp problem
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
252 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
253 } |
11265 | 254 |
255 public static Stamp exact(ResolvedJavaType type) { | |
256 return new ObjectStamp(type, true, false, false); | |
257 } | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
258 } |