233 { return is_uninitialized() && bci() == BciForThis; }
234
235 VerificationType to_category2_2nd() const {
236 assert(is_category2(), "Must be a double word");
237 return VerificationType(is_long() ? Long_2nd : Double_2nd);
238 }
239
240 u2 bci() const {
241 assert(is_uninitialized(), "Must be uninitialized type");
242 return ((_u._data & BciMask) >> 1 * BitsPerByte);
243 }
244
245 Symbol* name() const {
246 assert(is_reference() && !is_null(), "Must be a non-null reference");
247 return _u._sym;
248 }
249
250 bool equals(const VerificationType& t) const {
251 return (_u._data == t._u._data ||
252 (is_reference() && t.is_reference() && !is_null() && !t.is_null() &&
253 name() == t.name()));
254 }
255
256 bool operator ==(const VerificationType& t) const {
257 return equals(t);
258 }
259
260 bool operator !=(const VerificationType& t) const {
261 return !equals(t);
262 }
263
264 // The whole point of this type system - check to see if one type
265 // is assignable to another. Returns true if one can assign 'from' to
266 // this.
267 bool is_assignable_from(
268 const VerificationType& from, ClassVerifier* context,
269 bool from_field_is_protected, TRAPS) const {
270 if (equals(from) || is_bogus()) {
271 return true;
272 } else {
273 switch(_u._data) {
|
233 { return is_uninitialized() && bci() == BciForThis; }
234
235 VerificationType to_category2_2nd() const {
236 assert(is_category2(), "Must be a double word");
237 return VerificationType(is_long() ? Long_2nd : Double_2nd);
238 }
239
240 u2 bci() const {
241 assert(is_uninitialized(), "Must be uninitialized type");
242 return ((_u._data & BciMask) >> 1 * BitsPerByte);
243 }
244
245 Symbol* name() const {
246 assert(is_reference() && !is_null(), "Must be a non-null reference");
247 return _u._sym;
248 }
249
250 bool equals(const VerificationType& t) const {
251 return (_u._data == t._u._data ||
252 (is_reference() && t.is_reference() && !is_null() && !t.is_null() &&
253 name()->equals(t.name())));
254 }
255
256 bool operator ==(const VerificationType& t) const {
257 return equals(t);
258 }
259
260 bool operator !=(const VerificationType& t) const {
261 return !equals(t);
262 }
263
264 // The whole point of this type system - check to see if one type
265 // is assignable to another. Returns true if one can assign 'from' to
266 // this.
267 bool is_assignable_from(
268 const VerificationType& from, ClassVerifier* context,
269 bool from_field_is_protected, TRAPS) const {
270 if (equals(from) || is_bogus()) {
271 return true;
272 } else {
273 switch(_u._data) {
|