mirror of
https://github.com/openharmony/third_party_libabigail.git
synced 2026-07-01 06:09:52 -04:00
XML writer: do not create extra temporary referenced type shared_ptr
In the loop of write_referenced_types temporary shared_ptr objects are created. In the case of a declaration, two shared_ptrs are created. It is possible to code this so only one object is created. This is a small optimisation with no change to tests or behaviour. * src/abg-writer.cc (write_referenced_types): Create temporary shared_ptr objects within each conditional branch instead of outside the conditionals and within one of the branches. Reviewed-by: Matthias Maennich <maennich@google.com> Signed-off-by: Giuliano Procida <gprocida@google.com>
This commit is contained in:
committed by
Dodji Seketeli
parent
628dbfebd6
commit
f723989845
+8
-5
@@ -2321,18 +2321,21 @@ write_referenced_types(write_context & ctxt,
|
||||
{
|
||||
// We handle types which have declarations *and* function
|
||||
// types here.
|
||||
type_base_sptr t(*i, noop_deleter());
|
||||
type_base* t = *i;
|
||||
if (!ctxt.type_is_emitted(t))
|
||||
{
|
||||
if (decl_base* d = get_type_declaration(*i))
|
||||
if (decl_base* d = get_type_declaration(t))
|
||||
{
|
||||
decl_base_sptr decl(d, noop_deleter());
|
||||
write_decl_in_scope(decl, ctxt,
|
||||
indent + c.get_xml_element_indent());
|
||||
}
|
||||
else if (function_type_sptr fn_type = is_function_type(t))
|
||||
write_function_type(fn_type, ctxt,
|
||||
indent + c.get_xml_element_indent());
|
||||
else if (function_type* f = is_function_type(t))
|
||||
{
|
||||
function_type_sptr fn_type(f, noop_deleter());
|
||||
write_function_type(fn_type, ctxt,
|
||||
indent + c.get_xml_element_indent());
|
||||
}
|
||||
else
|
||||
ABG_ASSERT_NOT_REACHED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user