================
@@ -489,6 +497,168 @@ TEST_F(MemoryTest, TestReadStopsAtAnInvalidRange) {
EXPECT_TRUE(process->m_reads.empty());
}
+TEST_F(MemoryTest, TestReadRangesFromCaches) {
+ CacheTestProcess proc;
+ ASSERT_TRUE(proc.process());
+ DummyProcess *process = proc.process();
+ const lldb::addr_t line = proc.line();
+
+ { // A short fetch must expose only the bytes it read, and must not disturb a
+ // range the caches already served.
----------------
qiyao wrote:
It destroys it, yes. `AddL1CacheData` is `m_L1_cache[addr] = data_buffer_sp`,
so the 20 bytes the fetch returned replace the 40-byte chunk outright. I add a
couple of asserts on L1 cache chunks.
my "must not disturb a range the caches already served" was ambiguous about
`0xC000` range instead of `0xB000` range. `0xB000` was never served: 40 bytes
cannot cover the 64 asked for, so `FindCacheEntry` misses and the range is
fetched. I changed the comments
```
{ // An entry serves a range only if it covers it all. A short fetch is all
// the caller sees and all L1 keeps of the range it was for.
```
https://github.com/llvm/llvm-project/pull/221015
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits