Skip to content

Commit 1ea51f6

Browse files
committed
Revert "IL: optimize attribute cluster reading (#13821)"
This reverts commit 179db4e.
1 parent db068a6 commit 1ea51f6

File tree

1 file changed

+13
-38
lines changed

1 file changed

+13
-38
lines changed

src/Compiler/AbstractIL/ilread.fs

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,12 +1220,9 @@ type ISeekReadIndexedRowReader<'RowT, 'KeyT, 'T when 'RowT: struct> =
12201220
abstract CompareKey: 'KeyT -> int
12211221
abstract ConvertRow: byref<'RowT> -> 'T
12221222

1223-
let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowReader<'RowT, _, _>) =
1223+
let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader<'RowT, _, _>) =
12241224
let mutable row = Unchecked.defaultof<'RowT>
12251225

1226-
let mutable startRid = -1
1227-
let mutable endRid = -1
1228-
12291226
if binaryChop then
12301227
let mutable low = 0
12311228
let mutable high = numRows + 1
@@ -1244,12 +1241,12 @@ let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowRead
12441241
elif c < 0 then high <- mid
12451242
else fin <- true
12461243

1244+
let res = ImmutableArray.CreateBuilder()
1245+
12471246
if high - low > 1 then
12481247
// now read off rows, forward and backwards
12491248
let mid = (low + high) / 2
12501249

1251-
startRid <- mid
1252-
12531250
// read backwards
12541251
let mutable fin = false
12551252
let mutable curr = mid - 1
@@ -1261,12 +1258,14 @@ let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowRead
12611258
reader.GetRow(curr, &row)
12621259

12631260
if reader.CompareKey(reader.GetKey(&row)) = 0 then
1264-
startRid <- curr
1261+
res.Add(reader.ConvertRow(&row))
12651262
else
12661263
fin <- true
12671264

12681265
curr <- curr - 1
12691266

1267+
res.Reverse()
1268+
12701269
// read forward
12711270
let mutable fin = false
12721271
let mutable curr = mid
@@ -1278,47 +1277,23 @@ let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowRead
12781277
reader.GetRow(curr, &row)
12791278

12801279
if reader.CompareKey(reader.GetKey(&row)) = 0 then
1281-
endRid <- curr
1280+
res.Add(reader.ConvertRow(&row))
12821281
else
12831282
fin <- true
12841283

12851284
curr <- curr + 1
12861285

1286+
res.ToArray()
12871287
else
1288-
let mutable rid = 1
1288+
let res = ImmutableArray.CreateBuilder()
12891289

1290-
while rid <= numRows && startRid = -1 do
1291-
reader.GetRow(rid, &row)
1290+
for i = 1 to numRows do
1291+
reader.GetRow(i, &row)
12921292

12931293
if reader.CompareKey(reader.GetKey(&row)) = 0 then
1294-
startRid <- rid
1295-
endRid <- rid
1296-
1297-
rid <- rid + 1
1298-
1299-
let mutable fin = false
1300-
1301-
while rid <= numRows && not fin do
1302-
reader.GetRow(rid, &row)
1303-
1304-
if reader.CompareKey(reader.GetKey(&row)) = 0 then
1305-
endRid <- rid
1306-
else
1307-
fin <- true
1308-
1309-
startRid, endRid
1310-
1311-
let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader<'RowT, _, _>) =
1312-
let startRid, endRid = seekReadIndexedRowsRange numRows binaryChop reader
1313-
1314-
if startRid <= 0 || endRid < startRid then
1315-
[||]
1316-
else
1294+
res.Add(reader.ConvertRow(&row))
13171295

1318-
Array.init (endRid - startRid + 1) (fun i ->
1319-
let mutable row = Unchecked.defaultof<'RowT>
1320-
reader.GetRow(startRid + i, &row)
1321-
reader.ConvertRow(&row))
1296+
res.ToArray()
13221297

13231298
[<Struct>]
13241299
type CustomAttributeRow =

0 commit comments

Comments
 (0)