]> granicus.if.org Git - icinga2/commitdiff
Improve memory usage for the config compiler
authorGunnar Beutner <gunnar.beutner@netways.de>
Wed, 5 Nov 2014 07:55:00 +0000 (08:55 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Wed, 5 Nov 2014 07:55:00 +0000 (08:55 +0100)
lib/config/configitem.cpp
lib/config/configitem.hpp

index 45cd19ced4c18770fc3d325f225ac398af9ceb1a..8dbde2dcc2a636c1fcb27133405f7f71c25a9154 100644 (file)
@@ -130,15 +130,13 @@ Dictionary::Ptr ConfigItem::GetProperties(void)
                locals->Set("__parent", m_Scope);
                locals->Set("name", m_Name);
 
-               DebugHint dhint;
                m_Properties = make_shared<Dictionary>();
                m_Properties->Set("type", m_Type);
                if (!m_Zone.IsEmpty())
                        m_Properties->Set("zone", m_Zone);
                m_Properties->Set("__parent", locals);
-               GetExpressionList()->Evaluate(m_Properties, &dhint);
+               GetExpressionList()->Evaluate(m_Properties, &m_DebugHints);
                m_Properties->Remove("__parent");
-               m_DebugHints = dhint.ToDictionary();
 
                String name = m_Name;
 
@@ -164,7 +162,7 @@ Dictionary::Ptr ConfigItem::GetProperties(void)
        return m_Properties;
 }
 
-Dictionary::Ptr ConfigItem::GetDebugHints(void) const
+const DebugHint& ConfigItem::GetDebugHints(void) const
 {
        return m_DebugHints;
 }
@@ -309,7 +307,7 @@ void ConfigItem::WriteObjectsFile(const String& filename)
                persistentItem->Set("type", item->GetType());
                persistentItem->Set("name", item->GetName());
                persistentItem->Set("properties", item->GetProperties());
-               persistentItem->Set("debug_hints", item->GetDebugHints());
+               persistentItem->Set("debug_hints", item->GetDebugHints().ToDictionary());
 
                String json = JsonEncode(persistentItem);
 
index 7d905247ec0b17a81715d8b28492440a0fc65d5e..0694cb9a700a84798066279031a6b13ab5739b89 100644 (file)
@@ -49,7 +49,7 @@ public:
 
        Expression::Ptr GetExpressionList(void) const;
        Dictionary::Ptr GetProperties(void);
-       Dictionary::Ptr GetDebugHints(void) const;
+       const DebugHint& GetDebugHints(void) const;
 
        DynamicObject::Ptr Commit(void);
        void Register(void);
@@ -79,7 +79,7 @@ private:
 
        Expression::Ptr m_ExpressionList;
        Dictionary::Ptr m_Properties;
-       Dictionary::Ptr m_DebugHints;
+       DebugHint m_DebugHints;
        std::vector<String> m_ParentNames; /**< The names of parent configuration
                                       items. */
        DebugInfo m_DebugInfo; /**< Debug information. */