• L
    Use function objects as deleters in the block cache (#6545) · 6301dbe7
    Levi Tamasi 提交于
    Summary:
    As the first step of reintroducing eviction statistics for the block
    cache, the patch switches from using simple function pointers as deleters
    to function objects implementing an interface. This will enable using
    deleters that have state, like a smart pointer to the statistics object
    that is to be updated when an entry is removed from the cache. For now,
    the patch adds a deleter template class `SimpleDeleter`, which simply
    casts the `value` pointer to its original type and calls `delete` or
    `delete[]` on it as appropriate. Note: to prevent object lifecycle
    issues, deleters must outlive the cache entries referring to them;
    `SimpleDeleter` ensures this by using the ("leaky") Meyers singleton
    pattern.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6545
    
    Test Plan: `make asan_check`
    
    Reviewed By: siying
    
    Differential Revision: D20475823
    
    Pulled By: ltamasi
    
    fbshipit-source-id: fe354c33dd96d9bafc094605462352305449a22a
    6301dbe7
clock_cache.cc 27.0 KB