@@ -2718,81 +2718,6 @@ fn fixed_vec_metadata(cx: &CrateContext,
27182718 return MetadataCreationResult :: new ( metadata, false ) ;
27192719}
27202720
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-
27962721fn vec_slice_metadata ( cx : & CrateContext ,
27972722 vec_type : ty:: t ,
27982723 element_type : ty:: t ,
@@ -2995,11 +2920,13 @@ fn type_metadata(cx: &CrateContext,
29952920 ty:: ty_uniq( pointee_type) => {
29962921 match ty:: get ( pointee_type) . sty {
29972922 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)
29992925 }
30002926 ty:: ty_str => {
30012927 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)
30032930 }
30042931 ty:: ty_trait( ..) => {
30052932 MetadataCreationResult :: new (
0 commit comments