Line data Source code
1 : #include "AllocationHint.h" 2 : 3 : #include "PoolResource.h" 4 : #include "CacheResource.h" 5 : #include "RegionResource.h" 6 : 7 : #include <variant> 8 : #include <limits> 9 : 10 : namespace elsa::mr::hint 11 : { 12 : thread_local std::optional<MemoryResource> HINT; 13 : 14 : ScopedMR::ScopedMR(const MemoryResource& hint) 15 3 : { 16 3 : _previous = std::move(HINT); 17 3 : HINT = hint; 18 3 : } 19 : 20 : ScopedMR::~ScopedMR() 21 3 : { 22 3 : HINT = std::move(_previous); 23 3 : } 24 : 25 : std::optional<MemoryResource> selectMemoryResource() 26 58531 : { 27 58531 : if (!HINT) { 28 58525 : return std::nullopt; 29 58525 : } 30 6 : return *HINT; 31 6 : } 32 : } // namespace elsa::mr::hint