DfsPackfile: Emit the index load with the index object

The DfsReader#emitIndexLoad expects a reference to the loaded object,
not to its identity hash. This makes listeneres recalculate an
identity hash over an Int object.

Pass the expected reference to the method.

Change-Id: Iee982fdd0169c93c5c7cd9cfe4260a7a82d23f6a
This commit is contained in:
Ivan Frade 2023-09-08 08:20:31 -07:00
parent 3a3b72cf90
commit 30427485dd
1 changed files with 8 additions and 8 deletions

View File

@ -182,7 +182,7 @@ private PackIndex idx(DfsReader ctx) throws IOException {
PackIndex idx = idxref.get(); PackIndex idx = idxref.get();
if (index == null && idx != null) { if (index == null && idx != null) {
index = idx; index = idx;
ctx.emitIndexLoad(desc, INDEX, System.identityHashCode(idx)); ctx.emitIndexLoad(desc, INDEX, idx);
} }
return index; return index;
} catch (IOException e) { } catch (IOException e) {
@ -229,7 +229,7 @@ public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
PackBitmapIndex bmidx = idxref.get(); PackBitmapIndex bmidx = idxref.get();
if (bitmapIndex == null && bmidx != null) { if (bitmapIndex == null && bmidx != null) {
bitmapIndex = bmidx; bitmapIndex = bmidx;
ctx.emitIndexLoad(desc, BITMAP_INDEX, System.identityHashCode(bmidx)); ctx.emitIndexLoad(desc, BITMAP_INDEX, bmidx);
} }
return bitmapIndex; return bitmapIndex;
} }
@ -268,7 +268,7 @@ public CommitGraph getCommitGraph(DfsReader ctx) throws IOException {
CommitGraph cg = cgref.get(); CommitGraph cg = cgref.get();
if (commitGraph == null && cg != null) { if (commitGraph == null && cg != null) {
commitGraph = cg; commitGraph = cg;
ctx.emitIndexLoad(desc, COMMIT_GRAPH, System.identityHashCode(cg)); ctx.emitIndexLoad(desc, COMMIT_GRAPH, cg);
} }
return commitGraph; return commitGraph;
} }
@ -303,7 +303,7 @@ public PackReverseIndex getReverseIdx(DfsReader ctx) throws IOException {
PackReverseIndex revidx = revref.get(); PackReverseIndex revidx = revref.get();
if (reverseIndex == null && revidx != null) { if (reverseIndex == null && revidx != null) {
reverseIndex = revidx; reverseIndex = revidx;
ctx.emitIndexLoad(desc, REVERSE_INDEX, System.identityHashCode(revidx)); ctx.emitIndexLoad(desc, REVERSE_INDEX, revidx);
} }
return reverseIndex; return reverseIndex;
} }
@ -334,7 +334,7 @@ private PackObjectSizeIndex getObjectSizeIndex(DfsReader ctx)
PackObjectSizeIndex sizeIdx = sizeIdxRef.get(); PackObjectSizeIndex sizeIdx = sizeIdxRef.get();
if (objectSizeIndex == null && sizeIdx != null) { if (objectSizeIndex == null && sizeIdx != null) {
objectSizeIndex = sizeIdx; objectSizeIndex = sizeIdx;
ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, System.identityHashCode(sizeIdx)); ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, sizeIdx);
} }
} finally { } finally {
objectSizeIndexLoadAttempted = true; objectSizeIndexLoadAttempted = true;
@ -1183,7 +1183,7 @@ private DfsBlockCache.Ref<PackIndex> loadPackIndex(
try (ReadableChannel rc = ctx.db.openFile(desc, INDEX)) { try (ReadableChannel rc = ctx.db.openFile(desc, INDEX)) {
PackIndex idx = PackIndex.read(alignTo8kBlocks(rc)); PackIndex idx = PackIndex.read(alignTo8kBlocks(rc));
ctx.stats.readIdxBytes += rc.position(); ctx.stats.readIdxBytes += rc.position();
ctx.emitIndexLoad(desc, INDEX, System.identityHashCode(idx)); ctx.emitIndexLoad(desc, INDEX, idx);
index = idx; index = idx;
return new DfsBlockCache.Ref<>( return new DfsBlockCache.Ref<>(
idxKey, idxKey,
@ -1211,7 +1211,7 @@ private DfsBlockCache.Ref<PackReverseIndex> loadReverseIdx(
long start = System.nanoTime(); long start = System.nanoTime();
PackReverseIndex revidx = PackReverseIndexFactory.computeFromIndex(idx); PackReverseIndex revidx = PackReverseIndexFactory.computeFromIndex(idx);
reverseIndex = revidx; reverseIndex = revidx;
ctx.emitIndexLoad(desc, REVERSE_INDEX, System.identityHashCode(revidx)); ctx.emitIndexLoad(desc, REVERSE_INDEX, revidx);
ctx.stats.readReverseIdxMicros += elapsedMicros(start); ctx.stats.readReverseIdxMicros += elapsedMicros(start);
return new DfsBlockCache.Ref<>( return new DfsBlockCache.Ref<>(
revKey, revKey,
@ -1232,7 +1232,7 @@ private DfsBlockCache.Ref<PackObjectSizeIndex> loadObjectSizeIndex(
objectSizeIndex = PackObjectSizeIndexLoader objectSizeIndex = PackObjectSizeIndexLoader
.load(Channels.newInputStream(rc)); .load(Channels.newInputStream(rc));
size = rc.position(); size = rc.position();
ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, System.identityHashCode(objectSizeIndex)); ctx.emitIndexLoad(desc, OBJECT_SIZE_INDEX, objectSizeIndex);
} catch (IOException e) { } catch (IOException e) {
parsingError = e; parsingError = e;
} }