Mercurial > hg > truffle
annotate agent/src/share/classes/sun/jvm/hotspot/types/Type.java @ 692:23276f80d930
6825642: nsk sajdi tests fail with NullPointerException
Reviewed-by: xlu, coleenp, kamg, swamyv
author | acorn |
---|---|
date | Thu, 02 Apr 2009 14:26:42 -0400 |
parents | d1605aabd0a1 |
children | c18cbe5936b8 |
rev | line source |
---|---|
0 | 1 /* |
196 | 2 * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. |
0 | 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 * | |
23 */ | |
24 | |
25 package sun.jvm.hotspot.types; | |
26 | |
27 import java.util.*; | |
28 | |
29 /** This is the top-level interface which describes C++ classes and | |
30 primitive types as well as enough about Java primitive and object | |
31 types to allow the oop hierarchy to be constructed. */ | |
32 | |
33 public interface Type { | |
34 public String getName(); | |
35 | |
36 /* The supertype of this type. May be null for top-level classes and | |
37 primitive types. NOTE that multiple inheritance is currently not | |
38 handled. However, it could (probably) be by making this return a | |
39 list and adding appropriate routines to cast an address of one | |
40 type to another. */ | |
41 public Type getSuperclass(); | |
42 | |
43 /** The size in bytes, at the machine level, of this type. This | |
44 should be equivalent to the sizeof operator -- i.e., should | |
45 include any compiler-inserted fields like the vtbl for C++ | |
46 types. */ | |
47 public long getSize(); | |
48 | |
49 /** Indicates whether this type is a C integer type -- regardless of | |
50 size or signedness. */ | |
51 public boolean isCIntegerType(); | |
52 | |
53 /** Indicates whether this type is const char*. */ | |
54 public boolean isCStringType(); | |
55 | |
56 /** Indicates whether this type is one of the Java primitive types. */ | |
57 public boolean isJavaPrimitiveType(); | |
58 | |
59 /** Indicates whether this type is an oop type in the VM. */ | |
60 public boolean isOopType(); | |
61 | |
62 /** Indicates whether this type is a pointer type. */ | |
63 public boolean isPointerType(); | |
64 | |
65 /** This is permissive and returns the CField regardless of its type | |
66 as long as it is present. Returns null if the field was not | |
67 found, unless throwExceptionIfNotFound is true, in which case a | |
68 RuntimeException is thrown (for debugging purposes). */ | |
69 public Field getField(String fieldName, boolean searchSuperclassFields, | |
70 boolean throwExceptionIfNotFound); | |
71 | |
72 /** This is permissive and returns the CField regardless of its type | |
73 as long as it is present -- it is equivalent to | |
74 getField(fieldName, searchSuperclassFields, true). Throws a | |
75 RuntimeException if the field was not found. */ | |
76 public Field getField(String fieldName, boolean searchSuperclassFields); | |
77 | |
78 /** This is permissive and returns the CField regardless of its type | |
79 as long as it is present. This does not search superclasses' | |
80 fields; it is equivalent to getField(fieldName, false). Throws a | |
81 RuntimeException if the field was not found. */ | |
82 public Field getField(String fieldName); | |
83 | |
84 /** If there is a mismatch between the declared type and the type | |
85 which would otherwise be returned from this routine, it throws a | |
86 WrongTypeException. declaredType must not be null. Throws a | |
87 RuntimeException if field was otherwise not found. */ | |
88 public Field getField(String fieldName, Type declaredType, | |
89 boolean searchSuperclassFields) throws WrongTypeException; | |
90 | |
91 /** If there is a mismatch between the declared type and the type | |
92 which would otherwise be returned from this routine, it throws a | |
93 WrongTypeException. declaredType must not be null. This does not | |
94 search superclasses' fields; it is equivalent to | |
95 getField(fieldName, declaredType, false). Throws a | |
96 RuntimeException if field was otherwise not found. */ | |
97 public Field getField(String fieldName, Type declaredType) throws WrongTypeException; | |
98 | |
99 /** Iterate over all of the fields in this type but <B>not</B> in | |
100 any of its superclasses. The returned Iterator's "remove" method | |
101 must not be called. */ | |
102 public Iterator getFields(); | |
103 | |
104 /** <P> These accessors are designed to allow strong type checking | |
105 of certain well-known types of fields, specifically Java | |
106 primitive and oop types. Specialized fields for all primitive | |
107 types, as well as oop fields, are required to have strong type | |
108 checking and a WrongTypeException should be thrown if the given | |
109 field is not precisely of the given type. Address and Oop fields | |
110 are more permissive to reduce the complexity of the initial | |
111 implementation. </P> | |
112 | |
113 <P> These accessors do not search the superclass's fields. </P> | |
114 */ | |
115 public JBooleanField getJBooleanField (String fieldName) throws WrongTypeException; | |
116 public JByteField getJByteField (String fieldName) throws WrongTypeException; | |
117 public JCharField getJCharField (String fieldName) throws WrongTypeException; | |
118 public JDoubleField getJDoubleField (String fieldName) throws WrongTypeException; | |
119 public JFloatField getJFloatField (String fieldName) throws WrongTypeException; | |
120 public JIntField getJIntField (String fieldName) throws WrongTypeException; | |
121 public JLongField getJLongField (String fieldName) throws WrongTypeException; | |
122 public JShortField getJShortField (String fieldName) throws WrongTypeException; | |
123 public CIntegerField getCIntegerField (String fieldName) throws WrongTypeException; | |
124 public OopField getOopField (String fieldName) throws WrongTypeException; | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
125 public NarrowOopField getNarrowOopField (String fieldName) throws WrongTypeException; |
0 | 126 public AddressField getAddressField (String fieldName); |
127 } |