From: Adam W. <we...@cs...> - 2003-07-31 14:56:22
|
Hello, and thank you - that clarified the usage of VM_Types and VM_TypeRefeerences. However I still do not understand the usage of the following methods: VM_TypeReference.getTypeRef() and VM_Type.getType(). In class VM_ExceptionTable they are used in the same context (to obtain type of the exception from the exception table) - lines 47 and 74 in the file VM_ExceptionTable.java. Both methods perform similar action - consult mapping called types but in different (their respective) classes . Do these mappings overlap (partially or fully)? Can they be used interchangeably (as suggested by the example above)? In other words - if I want to get the exception type from the exception table which method should I use (or it does not matter)? Thank you Adam > Subject: Re: [Jikesrvm-researchers] class loader type identifiers question > > Hi, > > VM_TypeReferences are used to represent the reference to a type > from a class file. VM_Types are the actual "real" types that the > references have been resolved into. In general, the compilers use > VM_TypeReferences (because in general the reference can't be resolved to a > real type without involving a classloader or two and we can't do that at > compile time). > > If you have an object in hand, then you can get always VM_Type for > that object, since the type must exist. > > One thing that might be confusing is that every VM_Type has a > canonical VM_TypeReference that is the pair of the class name and the > defining class loader for that VM_Type instance. This lets one map from > VM_Types to VM_TypeReferences. > > There may be a number of VM_TypeReferences that all resolve to the > same VM_Type. > > The complexity here is due to classloaders. > > --dave > -- Adam Welc Computer Science Building, room 274 West Lafayette, IN 47906 Telephone number (work): (765) 4947836 http://www.cs.purdue.edu/homes/welc |