diff options
Diffstat (limited to 'src/mem/gems_common')
-rw-r--r-- | src/mem/gems_common/Allocator.hh | 89 | ||||
-rw-r--r-- | src/mem/gems_common/RefCnt.hh | 164 | ||||
-rw-r--r-- | src/mem/gems_common/RefCnt_tester.cc | 78 | ||||
-rw-r--r-- | src/mem/gems_common/RefCountable.hh | 59 | ||||
-rw-r--r-- | src/mem/gems_common/SConscript | 36 |
5 files changed, 0 insertions, 426 deletions
diff --git a/src/mem/gems_common/Allocator.hh b/src/mem/gems_common/Allocator.hh deleted file mode 100644 index 59c5a4c98..000000000 --- a/src/mem/gems_common/Allocator.hh +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 1999 Mark D. Hill and David A. Wood - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef ALLOCATOR_H -#define ALLOCATOR_H - -#include "mem/gems_common/Vector.hh" - -template <class TYPE> -class Allocator { -public: - // Constructors - Allocator() { m_counter = 0; } - - // Destructor - ~Allocator() { for(int i=0; i<m_pool_vec.size(); i++) { delete m_pool_vec[i]; }} - - // Public Methods - TYPE* allocate(const TYPE& obj); - void deallocate(TYPE* obj_ptr); -private: - // Private copy constructor and assignment operator - Allocator(const Allocator& obj); - Allocator& operator=(const Allocator& obj); - - // Private Methods - - // Data Members (m_ prefix) - Vector<TYPE*> m_pool_vec; - int m_counter; -}; - -template <class TYPE> -inline -TYPE* Allocator<TYPE>::allocate(const TYPE& obj) -{ - m_counter++; - DPRINTF(GemsCommon, "couter %d", m_counter); - TYPE* new_obj_ptr; - - // See if we need to allocate any new objects - if (m_pool_vec.size() == 0) { - // Allocate a new item - m_pool_vec.insertAtBottom(new TYPE); - } - - // Pop the pointer from the stack/pool - int size = m_pool_vec.size(); - new_obj_ptr = m_pool_vec[size-1]; - m_pool_vec.setSize(size-1); - - // Copy the object - *new_obj_ptr = obj; - return new_obj_ptr; -} - -template <class TYPE> -inline -void Allocator<TYPE>::deallocate(TYPE* obj) -{ - m_pool_vec.insertAtBottom(obj); -} - -#endif //ALLOCATOR_H diff --git a/src/mem/gems_common/RefCnt.hh b/src/mem/gems_common/RefCnt.hh deleted file mode 100644 index 75160fc80..000000000 --- a/src/mem/gems_common/RefCnt.hh +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef REFCNT_H -#define REFCNT_H - -#include <iostream> - -template <class TYPE> -class RefCnt { -public: - // Constructors - RefCnt(); - RefCnt(const TYPE& data); - - // Destructor - ~RefCnt(); - - // Public Methods - const TYPE* ref() const { return m_data_ptr; } - TYPE* ref() { return m_data_ptr; } - TYPE* mod_ref() const { return m_data_ptr; } - void freeRef(); - void print(std::ostream& out) const; - - // Public copy constructor and assignment operator - RefCnt(const RefCnt& obj); - RefCnt& operator=(const RefCnt& obj); - -private: - // Private Methods - - // Data Members (m_ prefix) - TYPE* m_data_ptr; - // int* m_count_ptr; // Not used yet -}; - -// Output operator declaration -template <class TYPE> -inline -std::ostream& operator<<(std::ostream& out, const RefCnt<TYPE>& obj); - -// ******************* Definitions ******************* - -// Constructors -template <class TYPE> -inline -RefCnt<TYPE>::RefCnt() -{ - m_data_ptr = NULL; -} - -template <class TYPE> -inline -RefCnt<TYPE>::RefCnt(const TYPE& data) -{ - m_data_ptr = data.clone(); - m_data_ptr->setRefCnt(1); -} - -template <class TYPE> -inline -RefCnt<TYPE>::~RefCnt() -{ - freeRef(); -} - -template <class TYPE> -inline -void RefCnt<TYPE>::freeRef() -{ - if (m_data_ptr != NULL) { - m_data_ptr->decRefCnt(); - if (m_data_ptr->getRefCnt() == 0) { - m_data_ptr->destroy(); - } - m_data_ptr = NULL; - } -} - -template <class TYPE> -inline -void RefCnt<TYPE>::print(std::ostream& out) const -{ - if (m_data_ptr == NULL) { - out << "[RefCnt: Null]"; - } else { - out << "[RefCnt: "; - m_data_ptr->print(out); - out << "]"; - } -} - -// Copy constructor -template <class TYPE> -inline -RefCnt<TYPE>::RefCnt(const RefCnt<TYPE>& obj) -{ - // m_data_ptr = obj.m_data_ptr->clone(); - m_data_ptr = obj.m_data_ptr; - - // Increment the reference count - if (m_data_ptr != NULL) { - m_data_ptr->incRefCnt(); - } -} - -// Assignment operator -template <class TYPE> -inline -RefCnt<TYPE>& RefCnt<TYPE>::operator=(const RefCnt<TYPE>& obj) -{ - if (this == &obj) { - // If this is the case, do nothing - // assert(false); - } else { - freeRef(); - m_data_ptr = obj.m_data_ptr; - if (m_data_ptr != NULL) { - m_data_ptr->incRefCnt(); - } - } - return *this; -} - - -// Output operator definition -template <class TYPE> -inline -std::ostream& operator<<(std::ostream& out, const RefCnt<TYPE>& obj) -{ - obj.print(out); - out << std::flush; - return out; -} - - - -#endif //REFCNT_H diff --git a/src/mem/gems_common/RefCnt_tester.cc b/src/mem/gems_common/RefCnt_tester.cc deleted file mode 100644 index 58828604a..000000000 --- a/src/mem/gems_common/RefCnt_tester.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Code used to test the RefCnt class - */ - -#include "mem/gems_common/RefCnt.hh" -#include "mem/gems_common/RefCountable.hh" - -class Foo : public RefCountable { -public: - int m_data; - Foo* clone() const; -private: -}; - -Foo* Foo::clone() const -{ - Foo* temp_ptr; - temp_ptr = new Foo; - *temp_ptr = *this; - cout << "Cloned!" << endl; - return temp_ptr; -} - -void bar(RefCnt<Foo> f) -{ - cout << f.ref()->m_data << endl; -} - -Foo f2; - -int main() -{ - Foo f; - f.m_data = 2; - - { - RefCnt<Foo> a(f); - - f.m_data = 3; - cout << a.ref()->m_data << endl; - cout << f.m_data << endl; - f2 = f; - } - - bar(f2); - - return 0; -} - - diff --git a/src/mem/gems_common/RefCountable.hh b/src/mem/gems_common/RefCountable.hh deleted file mode 100644 index 32fb924cf..000000000 --- a/src/mem/gems_common/RefCountable.hh +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Virtual base class for things that can be reference counted - */ - -#ifndef REFCOUNTABLE_H -#define REFCOUNTABLE_H - -#include "mem/gems_common/RefCnt.hh" - -class RefCountable { -public: - // Public Methods - - RefCountable() { m_refcnt = 0; } - - // These are used by the RefCnt class to hold the reference count - // for the object. These really should be private and accessed by a - // friend class, but I can't figure out how to make a template class - // a friend. - void incRefCnt() { m_refcnt++; } - void decRefCnt() { m_refcnt--; } - int getRefCnt() const { return m_refcnt; } - void setRefCnt(int cnt) { m_refcnt = cnt; } -private: - // Private Methods - - // Data Members (m_ prefix) - int m_refcnt; -}; - -#endif //REFCOUNTABLE_H diff --git a/src/mem/gems_common/SConscript b/src/mem/gems_common/SConscript deleted file mode 100644 index 86d8bb345..000000000 --- a/src/mem/gems_common/SConscript +++ /dev/null @@ -1,36 +0,0 @@ -# -*- mode:python -*- - -# Copyright (c) 2009 The Hewlett-Packard Development Company -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer; -# redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution; -# neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Authors: Nathan Binkert - -Import('*') - -if not env['RUBY']: - Return() - -TraceFlag('GemsCommon') |