Mercurial > hg > truffle
comparison graal/com.oracle.max.cri/src/com/oracle/max/cri/xir/XirSite.java @ 4199:aaac4894175c
Renamed cri packages from sun to oracle.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 03 Jan 2012 16:29:28 +0100 |
parents | graal/com.oracle.max.cri/src/com/sun/cri/xir/XirSite.java@e233f5660da4 |
children | 985fbd8adf65 |
comparison
equal
deleted
inserted
replaced
4198:8c9c0e1eaab1 | 4199:aaac4894175c |
---|---|
1 /* | |
2 * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. | |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 * or visit www.oracle.com if you need additional information or have any | |
21 * questions. | |
22 */ | |
23 package com.oracle.max.cri.xir; | |
24 | |
25 import com.oracle.max.cri.ci.*; | |
26 import com.oracle.max.cri.ri.*; | |
27 | |
28 /** | |
29 * Encapsulates the notion of a site where XIR can be supplied. It is supplied to the {@link RiXirGenerator} by the | |
30 * compiler for each place where XIR can be generated. This interface allows a number of queries, including the | |
31 * bytecode-level location and optimization hints computed by the compiler. | |
32 */ | |
33 public interface XirSite { | |
34 | |
35 /** | |
36 * Gets the {@link CiCodePos code position} associated with this site. This is useful for inserting | |
37 * instrumentation at the XIR level. | |
38 * @return the code position if it is available; {@code null} otherwise | |
39 */ | |
40 CiCodePos getCodePos(); | |
41 | |
42 /** | |
43 * Checks whether the specified argument is guaranteed to be non-null at this site. | |
44 * @param argument the argument | |
45 * @return {@code true} if the argument is non null at this site | |
46 */ | |
47 boolean isNonNull(XirArgument argument); | |
48 | |
49 /** | |
50 * Checks whether this site requires a null check. | |
51 * @return {@code true} if a null check is required | |
52 */ | |
53 boolean requiresNullCheck(); | |
54 | |
55 /** | |
56 * Checks whether this site requires a range check. | |
57 * @return {@code true} if a range check is required | |
58 */ | |
59 boolean requiresBoundsCheck(); | |
60 | |
61 /** | |
62 * Checks whether this site requires a read barrier. | |
63 * @return {@code true} if a read barrier is required | |
64 */ | |
65 boolean requiresReadBarrier(); | |
66 | |
67 /** | |
68 * Checks whether this site requires a write barrier. | |
69 * @return {@code true} if a write barrier is required | |
70 */ | |
71 boolean requiresWriteBarrier(); | |
72 | |
73 /** | |
74 * Checks whether this site requires an array store check. | |
75 * @return {@code true} if an array store check is required | |
76 */ | |
77 boolean requiresArrayStoreCheck(); | |
78 | |
79 /** | |
80 * Checks whether an approximation of the type for the specified argument is available. | |
81 * @param argument the argument | |
82 * @return an {@link RiType} indicating the most specific type known for the argument, if any; | |
83 * {@code null} if no particular type is known | |
84 */ | |
85 RiType getApproximateType(XirArgument argument); | |
86 | |
87 /** | |
88 * Checks whether an exact type is known for the specified argument. | |
89 * @param argument the argument | |
90 * @return an {@link RiType} indicating the exact type known for the argument, if any; | |
91 * {@code null} if no particular type is known | |
92 */ | |
93 RiType getExactType(XirArgument argument); | |
94 } |