@@ -883,7 +883,7 @@ let tomdCompare (TaggedIndex(t1: TypeOrMethodDefTag, idx1)) (TaggedIndex(t2: Typ
883883    elif  idx1 >  idx2 then  1 
884884    else  compare t1.Tag t2.Tag
885885
886- let  simpleIndexCompare   ( idx1 :  int )  ( idx2 :  int )  =  compare idx1 idx2
886+ let inline    simpleIndexCompare   ( idx1 :  int )  ( idx2 :  int )  =  compare idx1 idx2
887887
888888//--------------------------------------------------------------------- 
889889// The various keys for the various caches. 
@@ -2314,18 +2314,23 @@ and seekReadTypeDefAsTypeUncached ctxtH (TypeDefAsTypIdx(boxity, ginst, idx)) =
23142314    mkILTy boxity ( ILTypeSpec.Create( seekReadTypeDefAsTypeRef ctxt idx,  ginst)) 
23152315
23162316and  seekReadTypeDefAsTypeRef   ( ctxt :  ILMetadataReader )  idx  = 
2317+     let  mdv  =  ctxt.mdfile.GetView() 
2318+ 
23172319    let  enc  = 
23182320        if  seekIsTopTypeDefOfIdx ctxt idx then 
23192321            [] 
23202322        else 
23212323            let  enclIdx  = 
23222324                seekReadIndexedRow ( 
23232325                    ctxt.getNumRows TableNames.Nested, 
2324-                     seekReadNestedRow ctxt, 
2325-                     fst, 
2326-                     simpleIndexCompare idx, 
2326+                     id, 
2327+                     id, 
2328+                     ( fun  i  -> 
2329+                         let mutable  addr  =  ctxt.rowAddr TableNames.Nested i
2330+                         let  nestedIdx  =  seekReadUntaggedIdx TableNames.TypeDef ctxt mdv & addr
2331+                         simpleIndexCompare idx nestedIdx), 
23272332                    isSorted ctxt TableNames.Nested, 
2328-                     snd
2333+                     ( fun  i  ->  seekReadNestedRow ctxt i  |>   snd) 
23292334                ) 
23302335
23312336            let  tref  =  seekReadTypeDefAsTypeRef ctxt enclIdx
@@ -3086,15 +3091,18 @@ and seekReadMethodImpls (ctxt: ILMetadataReader) numTypars tidx =
30863091            let  mimpls  = 
30873092                seekReadIndexedRows ( 
30883093                    ctxt.getNumRows TableNames.MethodImpl, 
3089-                     seekReadMethodImplRow ctxt mdv, 
3090-                     ( fun   ( a ,  _ ,  _ )  -> ), 
3091-                     simpleIndexCompare tidx, 
3094+                     id, 
3095+                     id, 
3096+                     ( fun  i  -> 
3097+                         let mutable  addr  =  ctxt.rowAddr TableNames.MethodImpl i
3098+                         let  _tidx  =  seekReadUntaggedIdx TableNames.TypeDef ctxt mdv & addr
3099+                         simpleIndexCompare tidx _ tidx), 
30923100                    isSorted ctxt TableNames.MethodImpl, 
3093-                     ( fun   ( _ ,   b ,   c )   ->  b ,  c ) 
3101+                     seekReadMethodImplRow ctxt mdv 
30943102                ) 
30953103
30963104            mimpls
3097-             |>  List.map ( fun   ( b ,  c )  -> 
3105+             |>  List.map ( fun   ( _ ,   b ,  c )  -> 
30983106                { 
30993107                    OverrideBy = 
31003108                        let  ( MethodData ( enclTy ,  cc ,  nm ,  argTys ,  retTy ,  methInst ))  = 
@@ -3163,11 +3171,14 @@ and seekReadEvents (ctxt: ILMetadataReader) numTypars tidx =
31633171            match 
31643172                seekReadOptionalIndexedRow ( 
31653173                    ctxt.getNumRows TableNames.EventMap, 
3166-                     ( fun  i  ->  i,  seekReadEventMapRow ctxt mdv i), 
3167-                     ( fun   ( _ ,  row )  -> ), 
3168-                     compare tidx, 
3174+                     id, 
3175+                     id, 
3176+                     ( fun  i  -> 
3177+                         let mutable  addr  =  ctxt.rowAddr TableNames.EventMap i
3178+                         let  _tidx  =  seekReadUntaggedIdx TableNames.TypeDef ctxt mdv & addr
3179+                         simpleIndexCompare tidx _ tidx), 
31693180                    false , 
3170-                     ( fun   ( i ,   row )   -> ( i,  snd row ) )
3181+                     ( fun  i   ->  i,  seekReadEventMapRow ctxt mdv i  |>  snd ) 
31713182                ) 
31723183            with 
31733184            |  None ->  [] 
@@ -3230,11 +3241,14 @@ and seekReadProperties (ctxt: ILMetadataReader) numTypars tidx =
32303241            match 
32313242                seekReadOptionalIndexedRow ( 
32323243                    ctxt.getNumRows TableNames.PropertyMap, 
3233-                     ( fun  i  ->  i,  seekReadPropertyMapRow ctxt mdv i), 
3234-                     ( fun   ( _ ,  row )  -> ), 
3235-                     compare tidx, 
3244+                     id, 
3245+                     id, 
3246+                     ( fun  i  -> 
3247+                         let mutable  addr  =  ctxt.rowAddr TableNames.PropertyMap i
3248+                         let  _tidx  =  seekReadUntaggedIdx TableNames.TypeDef ctxt mdv & addr
3249+                         simpleIndexCompare tidx _ tidx), 
32363250                    false , 
3237-                     ( fun   ( i ,   row )   -> ( i,  snd row ) )
3251+                     ( fun  i   ->  i,  seekReadPropertyMapRow ctxt mdv i  |>  snd ) 
32383252                ) 
32393253            with 
32403254            |  None ->  [] 
@@ -3258,16 +3272,22 @@ and customAttrsReader ctxtH tag : ILAttributesStored =
32583272        let  ( ctxt :  ILMetadataReader )  =  getHole ctxtH
32593273        let  mdv  =  ctxt.mdfile.GetView() 
32603274
3261-         let  reader  = 
3262-             {  new  ISeekReadIndexedRowReader< CustomAttributeRow,  TaggedIndex< HasCustomAttributeTag>,  ILAttribute>  with 
3263-                 member  _. GetRow( i,  row)  = 
3264-                     seekReadCustomAttributeRow ctxt mdv i & row
3265- 
3266-                 member  _. GetKey( attrRow)  =  attrRow.parentIndex
3267- 
3268-                 member  _. CompareKey( key)  =  hcaCompare ( TaggedIndex( tag,  idx))  key
3275+         let  searchedKey  =  TaggedIndex( tag,  idx) 
32693276
3270-                 member  _. ConvertRow( attrRow)  = 
3277+         let  reader  = 
3278+             {  new  ISeekReadIndexedRowReader< int,  int,  ILAttribute>  with 
3279+                 member  _. GetRow( i,  rowIndex)  =  rowIndex <-  i
3280+                 member  _. GetKey( rowIndex)  =  rowIndex
3281+ 
3282+                 member  _. CompareKey( rowIndex)  = 
3283+                     let mutable  addr  =  ctxt.rowAddr TableNames.CustomAttribute rowIndex
3284+                     // read parentIndex 
3285+                     let  key  =  seekReadHasCustomAttributeIdx ctxt mdv & addr
3286+                     hcaCompare searchedKey key
3287+ 
3288+                 member  _. ConvertRow( rowIndex)  = 
3289+                     let mutable  attrRow  =  Unchecked.defaultof<_> 
3290+                     seekReadCustomAttributeRow ctxt mdv rowIndex & attrRow
32713291                    seekReadCustomAttr ctxt ( attrRow.typeIndex,  attrRow.valueIndex) 
32723292            } 
32733293
0 commit comments