shader/shader_ir: Make Comment() take a std::string by value
This allows for forming comment nodes without making unnecessary copies of the std::string instance. e.g. previously: Comment(fmt::format("Base address is c[0x{:x}][0x{:x}]", cbuf->GetIndex(), cbuf_offset)); Would result in a copy of the string being created, as CommentNode() takes a std::string by value (a const ref passed to a value parameter results in a copy). Now, only one instance of the string is ever moved around. (fmt::format returns a std::string, and since it's returned from a function by value, this is a prvalue (which can be treated like an rvalue), so it's moved into Comment's string parameter), we then move it into the CommentNode constructor, which then moves the string into its member variable).
This commit is contained in:
parent
228e58d0a5
commit
b6dcb1ae4d
@ -39,8 +39,8 @@ Node ShaderIR::Conditional(Node condition, std::vector<Node>&& code) {
|
|||||||
return StoreNode(ConditionalNode(condition, std::move(code)));
|
return StoreNode(ConditionalNode(condition, std::move(code)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Node ShaderIR::Comment(const std::string& text) {
|
Node ShaderIR::Comment(std::string text) {
|
||||||
return StoreNode(CommentNode(text));
|
return StoreNode(CommentNode(std::move(text)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Node ShaderIR::Immediate(u32 value) {
|
Node ShaderIR::Immediate(u32 value) {
|
||||||
|
@ -663,7 +663,7 @@ private:
|
|||||||
/// Creates a conditional node
|
/// Creates a conditional node
|
||||||
Node Conditional(Node condition, std::vector<Node>&& code);
|
Node Conditional(Node condition, std::vector<Node>&& code);
|
||||||
/// Creates a commentary
|
/// Creates a commentary
|
||||||
Node Comment(const std::string& text);
|
Node Comment(std::string text);
|
||||||
/// Creates an u32 immediate
|
/// Creates an u32 immediate
|
||||||
Node Immediate(u32 value);
|
Node Immediate(u32 value);
|
||||||
/// Creates a s32 immediate
|
/// Creates a s32 immediate
|
||||||
|
Loading…
Reference in New Issue
Block a user