rocr: Fixed inefficient copy operations

Changed variable assignments to use std::move() where appropriate.
Changed function headers to pass string arguments by reference where appropriate.

Signed-off-by: Alysa Liu <Alysa.Liu@amd.com>


[ROCm/ROCR-Runtime commit: ae6851dbb4]
Este commit está contenido en:
Alysa Liu
2025-05-28 17:28:00 -04:00
cometido por Liu, Alysa
padre b97f9ba6d5
commit 65f5ce6f0a
Se han modificado 4 ficheros con 13 adiciones y 9 borrados
@@ -83,8 +83,8 @@ __forceinline uint64_t drm_perm(hsa_access_permission_t perm) {
} // namespace
KfdDriver::KfdDriver(std::string devnode_name)
: core::Driver(core::DriverType::KFD, devnode_name) {}
KfdDriver::KfdDriver(std::string& devnode_name)
: core::Driver(core::DriverType::KFD, std::move(devnode_name)) {}
hsa_status_t KfdDriver::Init() {
HSAKMT_STATUS ret =
@@ -128,7 +128,8 @@ hsa_status_t KfdDriver::ShutDown() {
}
hsa_status_t KfdDriver::DiscoverDriver(std::unique_ptr<core::Driver>& driver) {
auto tmp_driver = std::unique_ptr<core::Driver>(new KfdDriver("/dev/kfd"));
std::string devnode("/dev/kfd");
auto tmp_driver = std::unique_ptr<core::Driver>(new KfdDriver(devnode));
if (tmp_driver->Open() == HSA_STATUS_SUCCESS) {
driver = std::move(tmp_driver);
@@ -220,7 +220,7 @@ namespace code {
void PrintRelocationData(std::ostream& out, RelocationSection* section);
void PrintSymbol(std::ostream& out, Symbol* sym);
void PrintDisassembly(std::ostream& out, const unsigned char *isa, size_t size, uint32_t isa_offset = 0);
std::string MangleSymbolName(const std::string& module_name, const std::string symbol_name);
std::string MangleSymbolName(const std::string& module_name, const std::string& symbol_name);
bool ElfImageError();
public:
@@ -69,7 +69,7 @@ namespace AMD {
/// and more.
class KfdDriver final : public core::Driver {
public:
KfdDriver(std::string devnode_name);
KfdDriver(std::string& devnode_name);
/// @brief Determine of the KFD is present on the system and attemp to open it if found.
///
@@ -175,7 +175,7 @@ namespace code {
std::string Symbol::GetSymbolName() const {
std::string FullName = Name();
return FullName.rfind(":") != std::string::npos ?
std::move(FullName.substr(FullName.rfind(":") + 1)) : std::move(FullName);
FullName.substr(FullName.rfind(":") + 1) : std::move(FullName);
}
hsa_code_symbol_t Symbol::ToHandle(Symbol* sym)
@@ -920,7 +920,10 @@ namespace code {
hsa_status_t AmdHsaCode::GetSymbol(const char *module_name, const char *symbol_name, hsa_code_symbol_t *s)
{
std::string mname = MangleSymbolName(module_name ? module_name : "", symbol_name);
std::string mname = MangleSymbolName(
std::string(module_name ? module_name : ""),
std::string(symbol_name)
);
for (Symbol* sym : symbols) {
if (sym->Name() == mname) {
*s = Symbol::ToHandle(sym);
@@ -1729,10 +1732,10 @@ namespace code {
out << std::dec;
}
std::string AmdHsaCode::MangleSymbolName(const std::string& module_name, const std::string symbol_name)
std::string AmdHsaCode::MangleSymbolName(const std::string& module_name, const std::string& symbol_name)
{
if (module_name.empty()) {
return std::move(symbol_name);
return symbol_name;
} else {
return module_name + "::" + symbol_name;
}