aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/utils/storage.H76
2 files changed, 5 insertions, 76 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 8da85ba8..c9293590 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-11-13 Gabriel Dos Reis <gdr@cse.tamu.edu>
+
+ Fix SF/3436999
+ * utils/storage.H: Revert accidental commit of unfinished changes.
+
2011-11-13 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/sys-driver.boot (initializeDatabases): Honor --initial-db.
diff --git a/src/utils/storage.H b/src/utils/storage.H
index f2fdc8ae..72b9eb1e 100644
--- a/src/utils/storage.H
+++ b/src/utils/storage.H
@@ -42,7 +42,6 @@
#include <new>
#include <cmath>
#include <string>
-#include <iterator>
#include <open-axiom/config>
@@ -196,28 +195,6 @@ namespace OpenAxiom {
size_t population() const;
protected:
- // +----+----+--+-----
- // | | | |
- // +----+----+--+-----
- // ^ ^ ^ ^
- // | | | `-- first allocatable T object
- // | | `-- possible padding for proper T alignment
- // | `-- link to next storage pages
- // `-- link to previous storage pages
- enum {
- link_size = sizeof(Storage*)
- };
-
- // The `previous' link in the chain of storage.
- static Storage*& previous(Storage* s) {
- return *static_cast<Storage**>(s->at_offset(0));
- }
-
- // The `next' link in the chain of storage.
- static Storage*& next(Storage* s) {
- return *static_cast<Storage**>(s->at_offset(link_size));
- }
-
// Address of the first object of type `T' in a storage.
static T* first_object(Handle* h) {
return static_cast<T*>(BlockStorage::begin(h));
@@ -287,18 +264,6 @@ namespace OpenAxiom {
Factory() : Arena<T>(nominal_population()) { }
~Factory();
- iterator begin() {
- Storage* s = this->store;
- while (Storage* p = Arena<T>::previous(s))
- s = p;
- return iterator(s, Arena<T>::first_object(s));
- }
-
- iterator end() {
- Storage* s = this->store;
- return iterator(s, static_cast<T*>(s->next_available()));
- }
-
// Allocate storage and value-construct an object of type `T'.
T* make() {
return new(this->allocate(1)) T();
@@ -342,47 +307,6 @@ namespace OpenAxiom {
}
}
- template<typename T>
- struct Factory<T>::iterator:
- std::iterator<std::forward_iterator_tag, T> {
-
- iterator& operator++() {
- if (ptr < store->next_available()) {
- ++ptr;
- return *this;
- }
- store = Arena<T>::next(store);
- ptr = Arena<T>::first_object(store);
- return *this;
- }
-
- iterator operator++(int) {
- iterator t = *this;
- ++*this;
- return t;
- }
-
- T* operator->() { return ptr; }
-
- T& operator*() { return *ptr; }
-
- friend bool operator==(iterator p, iterator q) {
- return p.store == q.store and p.ptr == q.ptr;
- }
-
- friend bool operator!=(iterator p, iterator q) {
- return not(p == q);
- }
-
- private:
- Storage* store;
- T* ptr;
- friend class Factory<T>;
-
- iterator(Storage* s, T* p) : store(s), ptr(p) { }
-
- };
-
// -----------------
// -- FileMapping --
// -----------------