rtdl: Use frg::hash_map for strings
This commit is contained in:
parent
976139f364
commit
c45be70388
|
@ -372,18 +372,18 @@ void posixClose(int fd) {
|
|||
// --------------------------------------------------------
|
||||
|
||||
ObjectRepository::ObjectRepository()
|
||||
: _nameMap{frigg::DefaultHasher<frigg::StringView>{}, *allocator} { }
|
||||
: _nameMap{frg::hash<frg::string_view>{}, *allocator} { }
|
||||
|
||||
SharedObject *ObjectRepository::injectObjectFromDts(frg::string_view name,
|
||||
uintptr_t base_address, Elf64_Dyn *dynamic, uint64_t rts) {
|
||||
assert(!_nameMap.get(csv(name)));
|
||||
assert(!_nameMap.get(name));
|
||||
|
||||
auto object = frg::construct<SharedObject>(*allocator, name.data(), false, rts);
|
||||
object->baseAddress = base_address;
|
||||
object->dynamic = dynamic;
|
||||
_parseDynamic(object);
|
||||
|
||||
_nameMap.insert(csv(name), object);
|
||||
_nameMap.insert(name, object);
|
||||
_discoverDependencies(object, rts);
|
||||
|
||||
return object;
|
||||
|
@ -392,20 +392,20 @@ SharedObject *ObjectRepository::injectObjectFromDts(frg::string_view name,
|
|||
SharedObject *ObjectRepository::injectObjectFromPhdrs(frg::string_view name,
|
||||
void *phdr_pointer, size_t phdr_entry_size, size_t num_phdrs, void *entry_pointer,
|
||||
uint64_t rts) {
|
||||
assert(!_nameMap.get(csv(name)));
|
||||
assert(!_nameMap.get(name));
|
||||
|
||||
auto object = frg::construct<SharedObject>(*allocator, name.data(), true, rts);
|
||||
_fetchFromPhdrs(object, phdr_pointer, phdr_entry_size, num_phdrs, entry_pointer);
|
||||
_parseDynamic(object);
|
||||
|
||||
_nameMap.insert(csv(name), object);
|
||||
_nameMap.insert(name, object);
|
||||
_discoverDependencies(object, rts);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
SharedObject *ObjectRepository::requestObjectWithName(frg::string_view name, uint64_t rts) {
|
||||
auto it = _nameMap.get(csv(name));
|
||||
auto it = _nameMap.get(name);
|
||||
if(it)
|
||||
return *it;
|
||||
|
||||
|
@ -425,7 +425,7 @@ SharedObject *ObjectRepository::requestObjectWithName(frg::string_view name, uin
|
|||
|
||||
_parseDynamic(object);
|
||||
|
||||
_nameMap.insert(csv(name), object);
|
||||
_nameMap.insert(name, object);
|
||||
_discoverDependencies(object, rts);
|
||||
|
||||
return object;
|
||||
|
@ -433,7 +433,7 @@ SharedObject *ObjectRepository::requestObjectWithName(frg::string_view name, uin
|
|||
|
||||
SharedObject *ObjectRepository::requestObjectAtPath(frg::string_view path, uint64_t rts) {
|
||||
// TODO: Support SONAME correctly.
|
||||
auto it = _nameMap.get(csv(path));
|
||||
auto it = _nameMap.get(path);
|
||||
if(it)
|
||||
return *it;
|
||||
|
||||
|
@ -447,7 +447,7 @@ SharedObject *ObjectRepository::requestObjectAtPath(frg::string_view path, uint6
|
|||
|
||||
_parseDynamic(object);
|
||||
|
||||
_nameMap.insert(csv(path), object);
|
||||
_nameMap.insert(path, object);
|
||||
_discoverDependencies(object, rts);
|
||||
|
||||
return object;
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
#include <frg/optional.hpp>
|
||||
#include <frg/string.hpp>
|
||||
#include <frg/vector.hpp>
|
||||
#include <frigg/hashmap.hpp>
|
||||
#include <frigg/string.hpp>
|
||||
|
||||
struct ObjectRepository;
|
||||
struct Scope;
|
||||
|
@ -53,8 +51,8 @@ private:
|
|||
|
||||
void _discoverDependencies(SharedObject *object, uint64_t rts);
|
||||
|
||||
frigg::Hashmap<frigg::StringView, SharedObject *,
|
||||
frigg::DefaultHasher<frigg::StringView>, Allocator> _nameMap;
|
||||
frg::hash_map<frg::string_view, SharedObject *,
|
||||
frg::hash<frg::string_view>, Allocator> _nameMap;
|
||||
};
|
||||
|
||||
// FIXME: Do not depend on the initial universe everywhere.
|
||||
|
|
Loading…
Reference in a new issue