@@ -2141,7 +2141,7 @@ impl TypeNames {
21412141 }
21422142
21432143 pub fn find_name < ' r > ( & ' r self , ty : & Type ) -> Option < & ' r str > {
2144- match self . type_names . find ( ty. to_ref ( ) ) {
2144+ match self . type_names . find ( & ty. to_ref ( ) ) {
21452145 Some ( a) => Some ( a. slice ( 0 , a. len ( ) ) ) ,
21462146 None => None
21472147 }
@@ -2151,14 +2151,14 @@ impl TypeNames {
21512151 self . named_types . find_equiv ( & s) . map_consume ( |x| Type :: from_ref ( * x) )
21522152 }
21532153
2154- pub fn type_to_str ( & self , ty : TypeRef ) -> ~str {
2154+ pub fn type_to_str ( & self , ty : Type ) -> ~str {
21552155 match self . find_name ( & ty) {
21562156 option:: Some ( name) => return name. to_owned ( ) ,
21572157 None => ( )
21582158 }
21592159
21602160 unsafe {
2161- let kind = llvm :: LLVMGetTypeKind ( ty ) ;
2161+ let kind = ty . kind ( ) ;
21622162
21632163 match kind {
21642164 Void => ~"Void ",
@@ -2172,31 +2172,28 @@ impl TypeNames {
21722172 Metadata => ~"Metadata ",
21732173 X86_MMX => ~"X86_MMAX ",
21742174 Integer => {
2175- fmt ! ( "i%d" , llvm:: LLVMGetIntTypeWidth ( ty) as int)
2175+ fmt ! ( "i%d" , llvm:: LLVMGetIntTypeWidth ( ty. to_ref ( ) ) as int)
21762176 }
21772177 Function => {
2178- let out_ty = llvm:: LLVMGetReturnType ( ty) ;
2179- let n_args = llvm:: LLVMCountParamTypes ( ty) as uint ;
2180- let args = vec:: from_elem ( n_args, 0 as TypeRef ) ;
2181- llvm:: LLVMGetParamTypes ( ty, vec:: raw:: to_ptr ( args) ) ;
2182-
2178+ let out_ty = ty. return_type ( ) ;
2179+ let args = ty. func_params ( ) ;
21832180 let args = args. map ( |& ty| self . type_to_str ( ty) ) . connect ( ", " ) ;
21842181 let out_ty = self . type_to_str ( out_ty) ;
21852182 fmt ! ( "fn(%s) -> %s" , args, out_ty)
21862183 }
21872184 Struct => {
2188- let tys = struct_tys ( ty ) ;
2185+ let tys = ty . field_types ( ) ;
21892186 let tys = tys. map ( |& ty| self . type_to_str ( ty) ) . connect ( ", " ) ;
21902187 fmt ! ( "{%s}" , tys)
21912188 }
21922189 Array => {
2193- let el_ty = llvm :: LLVMGetElementType ( ty ) ;
2190+ let el_ty = ty . element_type ( ) ;
21942191 let el_ty = self . type_to_str ( el_ty) ;
2195- let len = llvm :: LLVMGetArrayLength ( ty ) as uint ;
2192+ let len = ty . array_length ( ) ;
21962193 fmt ! ( "[%s x %u]" , el_ty, len)
21972194 }
21982195 Pointer => {
2199- let el_ty = llvm :: LLVMGetElementType ( ty ) ;
2196+ let el_ty = ty . element_type ( ) ;
22002197 let el_ty = self . type_to_str ( el_ty) ;
22012198 fmt ! ( "*%s" , el_ty)
22022199 }
@@ -2207,32 +2204,12 @@ impl TypeNames {
22072204
22082205 pub fn val_to_str ( & self , val : ValueRef ) -> ~str {
22092206 unsafe {
2210- self . type_to_str ( llvm:: LLVMTypeOf ( val) )
2207+ let ty = Type :: from_ref ( llvm:: LLVMTypeOf ( val) ) ;
2208+ self . type_to_str ( ty)
22112209 }
22122210 }
22132211}
22142212
2215- pub fn float_width ( llt : TypeRef ) -> uint {
2216- unsafe {
2217- return match llvm:: LLVMGetTypeKind ( llt) as int {
2218- 1 => 32 u,
2219- 2 => 64 u,
2220- 3 => 80 u,
2221- 4 | 5 => 128 u,
2222- _ => fail ! ( "llvm_float_width called on a non-float type" )
2223- } ;
2224- }
2225- }
2226-
2227- pub fn fn_ty_param_tys ( fn_ty : TypeRef ) -> ~[ TypeRef ] {
2228- unsafe {
2229- let args = vec:: from_elem ( llvm:: LLVMCountParamTypes ( fn_ty) as uint ,
2230- 0 as TypeRef ) ;
2231- llvm:: LLVMGetParamTypes ( fn_ty, vec:: raw:: to_ptr ( args) ) ;
2232- return args;
2233- }
2234- }
2235-
22362213
22372214/* Memory-managed interface to target data. */
22382215
0 commit comments