@@ -2718,81 +2718,6 @@ fn fixed_vec_metadata(cx: &CrateContext,
2718
2718
return MetadataCreationResult :: new ( metadata, false ) ;
2719
2719
}
2720
2720
2721
- fn heap_vec_metadata ( cx : & CrateContext ,
2722
- vec_pointer_type : ty:: t ,
2723
- element_type : ty:: t ,
2724
- unique_type_id : UniqueTypeId ,
2725
- span : Span )
2726
- -> MetadataCreationResult {
2727
- let element_type_metadata = type_metadata ( cx, element_type, span) ;
2728
- let element_llvm_type = type_of:: type_of ( cx, element_type) ;
2729
- let ( element_size, element_align) = size_and_align_of ( cx, element_llvm_type) ;
2730
-
2731
- return_if_metadata_created_in_meantime ! ( cx, unique_type_id) ;
2732
-
2733
- let vecbox_llvm_type = Type :: vec ( cx, & element_llvm_type) ;
2734
- let vec_pointer_type_name = compute_debuginfo_type_name ( cx,
2735
- vec_pointer_type,
2736
- true ) ;
2737
- let vec_pointer_type_name = vec_pointer_type_name. as_slice ( ) ;
2738
-
2739
- let member_llvm_types = vecbox_llvm_type. field_types ( ) ;
2740
-
2741
- let int_type_metadata = type_metadata ( cx, ty:: mk_int ( ) , span) ;
2742
- let array_type_metadata = unsafe {
2743
- llvm:: LLVMDIBuilderCreateArrayType (
2744
- DIB ( cx) ,
2745
- bytes_to_bits ( element_size) ,
2746
- bytes_to_bits ( element_align) ,
2747
- element_type_metadata,
2748
- create_DIArray ( DIB ( cx) , [ llvm:: LLVMDIBuilderGetOrCreateSubrange ( DIB ( cx) , 0 , 0 ) ] ) )
2749
- } ;
2750
-
2751
- let member_descriptions = [
2752
- MemberDescription {
2753
- name : "fill" . to_string ( ) ,
2754
- llvm_type : * member_llvm_types. get ( 0 ) ,
2755
- type_metadata : int_type_metadata,
2756
- offset : ComputedMemberOffset ,
2757
- } ,
2758
- MemberDescription {
2759
- name : "alloc" . to_string ( ) ,
2760
- llvm_type : * member_llvm_types. get ( 1 ) ,
2761
- type_metadata : int_type_metadata,
2762
- offset : ComputedMemberOffset ,
2763
- } ,
2764
- MemberDescription {
2765
- name : "elements" . to_string ( ) ,
2766
- llvm_type : * member_llvm_types. get ( 2 ) ,
2767
- type_metadata : array_type_metadata,
2768
- offset : ComputedMemberOffset ,
2769
- }
2770
- ] ;
2771
-
2772
- assert ! ( member_descriptions. len( ) == member_llvm_types. len( ) ) ;
2773
-
2774
- let loc = span_start ( cx, span) ;
2775
- let file_metadata = file_metadata ( cx, loc. file . name . as_slice ( ) ) ;
2776
-
2777
- let vec_box_unique_id = debug_context ( cx) . type_map
2778
- . borrow_mut ( )
2779
- . get_unique_type_id_of_heap_vec_box ( cx,
2780
- element_type) ;
2781
-
2782
- let vecbox_metadata = composite_type_metadata ( cx,
2783
- vecbox_llvm_type,
2784
- vec_pointer_type_name,
2785
- vec_box_unique_id,
2786
- member_descriptions,
2787
- UNKNOWN_SCOPE_METADATA ,
2788
- file_metadata,
2789
- span) ;
2790
-
2791
- MetadataCreationResult :: new ( pointer_type_metadata ( cx,
2792
- vec_pointer_type,
2793
- vecbox_metadata) , false )
2794
- }
2795
-
2796
2721
fn vec_slice_metadata ( cx : & CrateContext ,
2797
2722
vec_type : ty:: t ,
2798
2723
element_type : ty:: t ,
@@ -2995,11 +2920,13 @@ fn type_metadata(cx: &CrateContext,
2995
2920
ty:: ty_uniq( pointee_type) => {
2996
2921
match ty:: get ( pointee_type) . sty {
2997
2922
ty:: ty_vec( ref mt, None ) => {
2998
- heap_vec_metadata ( cx, pointee_type, mt. ty , unique_type_id, usage_site_span)
2923
+ let vec_metadata = vec_slice_metadata ( cx, t, mt. ty , usage_site_span) ;
2924
+ pointer_type_metadata ( cx, t, vec_metadata)
2999
2925
}
3000
2926
ty:: ty_str => {
3001
2927
let i8_t = ty:: mk_i8 ( ) ;
3002
- heap_vec_metadata ( cx, pointee_type, i8_t, unique_type_id, usage_site_span)
2928
+ let vec_metadata = vec_slice_metadata ( cx, t, i8_t, usage_site_span) ;
2929
+ pointer_type_metadata ( cx, t, vec_metadata)
3003
2930
}
3004
2931
ty:: ty_trait( ..) => {
3005
2932
MetadataCreationResult :: new (
0 commit comments