@@ -240,12 +240,12 @@ fn T_tydesc() -> TypeRef {
240
240
241
241
auto th = mk_type_handle ( ) ;
242
242
auto abs_tydesc = llvm. LLVMResolveTypeHandle ( th. llth ) ;
243
-
243
+ auto tydescpp = T_ptr ( T_ptr ( abs_tydesc ) ) ;
244
244
auto pvoid = T_ptr ( T_i8 ( ) ) ;
245
245
auto glue_fn_ty = T_ptr ( T_fn ( vec ( T_taskptr ( ) ,
246
- T_ptr ( abs_tydesc ) ,
246
+ tydescpp ,
247
247
pvoid) , T_void ( ) ) ) ;
248
- auto tydesc = T_struct ( vec ( T_ptr ( abs_tydesc ) , // first_param
248
+ auto tydesc = T_struct ( vec ( tydescpp , // first_param
249
249
T_int ( ) , // size
250
250
T_int ( ) , // align
251
251
glue_fn_ty, // take_glue_off
@@ -907,8 +907,8 @@ fn linearize_ty_params(@block_ctxt cx, @ty.t t)
907
907
let vec[ ValueRef ] param_vals = vec ( ) ;
908
908
let vec[ ast. def_id ] param_defs = vec ( ) ;
909
909
type rr = rec ( @block_ctxt cx ,
910
- mutable vec[ ValueRef ] vals ,
911
- mutable vec[ ast. def_id] defs ) ;
910
+ mutable vec[ ValueRef ] vals ,
911
+ mutable vec[ ast. def_id] defs ) ;
912
912
913
913
state obj folder ( @rr r) {
914
914
fn fold_simple_ty ( @ty. t t ) -> @ty. t {
@@ -921,7 +921,7 @@ fn linearize_ty_params(@block_ctxt cx, @ty.t t)
921
921
}
922
922
}
923
923
if ( !seen) {
924
- r. vals += cx. fcx . lltydescs . get ( pid) ;
924
+ r. vals += r . cx . fcx . lltydescs . get ( pid) ;
925
925
r. defs += pid;
926
926
}
927
927
}
@@ -957,6 +957,8 @@ fn get_tydesc(&@block_ctxt cx, @ty.t t) -> ValueRef {
957
957
make_tydesc ( cx. fcx . ccx , t, tys. _0 ) ;
958
958
}
959
959
960
+ auto root = cx. fcx . ccx . tydescs . get ( t) ;
961
+
960
962
cx. fcx . ccx . sess . unimpl ( "derived type descriptors" ) ;
961
963
}
962
964
@@ -977,9 +979,9 @@ fn make_tydesc(@crate_ctxt cx, @ty.t t, vec[ast.def_id] typaram_defs) {
977
979
auto llty = type_of ( cx, t) ;
978
980
auto pvoid = T_ptr ( T_i8 ( ) ) ;
979
981
auto glue_fn_ty = T_ptr ( T_fn ( vec ( T_taskptr ( ) ,
980
- T_ptr ( T_tydesc ( ) ) ,
982
+ T_ptr ( T_ptr ( T_tydesc ( ) ) ) ,
981
983
pvoid) , T_void ( ) ) ) ;
982
- auto tydesc = C_struct ( vec ( C_null ( T_ptr ( T_tydesc ( ) ) ) ,
984
+ auto tydesc = C_struct ( vec ( C_null ( T_ptr ( T_ptr ( T_tydesc ( ) ) ) ) ,
983
985
llsize_of ( llty) ,
984
986
llalign_of ( llty) ,
985
987
take_glue, // take_glue_off
@@ -1003,7 +1005,7 @@ fn make_generic_glue(@crate_ctxt cx, @ty.t t, str name,
1003
1005
val_and_ty_fn helper,
1004
1006
vec[ ast. def_id] typaram_defs ) -> ValueRef {
1005
1007
auto llfnty = T_fn ( vec ( T_taskptr ( ) ,
1006
- T_ptr ( T_tydesc ( ) ) ,
1008
+ T_ptr ( T_ptr ( T_tydesc ( ) ) ) ,
1007
1009
T_ptr ( T_i8 ( ) ) ) , T_void ( ) ) ;
1008
1010
1009
1011
auto fn_name = cx. names . next ( "_rust_" + name) + "." + ty. ty_to_str ( t) ;
0 commit comments