[Avida-cvs] [avida-svn] r419 - in development: Avida.xcodeproj source/cpu

brysonda@myxo.css.msu.edu brysonda at myxo.css.msu.edu
Fri Dec 9 10:22:26 PST 2005


Author: brysonda
Date: 2005-12-09 13:22:25 -0500 (Fri, 09 Dec 2005)
New Revision: 419

Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/cpu/cCPUMemory.cc
   development/source/cpu/cCPUMemory.h
Log:
Bring forward cCPUMemory optimizations from trunk.  Also, inline various cCPUMemory constructors.

Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2005-12-09 18:15:48 UTC (rev 418)
+++ development/Avida.xcodeproj/project.pbxproj	2005-12-09 18:22:25 UTC (rev 419)
@@ -745,7 +745,7 @@
 		DCC315CF076253A5008F7A48 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
 		DCC315D0076253A5008F7A48 /* task_event_gen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.cc; sourceTree = "<group>"; };
 		DCC315D1076253A5008F7A48 /* task_event_gen.old.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = task_event_gen.old.cc; sourceTree = "<group>"; };
-		DCC3164D07626CF3008F7A48 /* primitive */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = primitive; sourceTree = BUILT_PRODUCTS_DIR; };
+		DCC3164D07626CF3008F7A48 /* primitive */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = primitive; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */

Modified: development/source/cpu/cCPUMemory.cc
===================================================================
--- development/source/cpu/cCPUMemory.cc	2005-12-09 18:15:48 UTC (rev 418)
+++ development/source/cpu/cCPUMemory.cc	2005-12-09 18:22:25 UTC (rev 419)
@@ -12,14 +12,11 @@
 
 using namespace std;
 
+const int MEMORY_INCREASE_MINIMUM = 10;
 const double MEMORY_INCREASE_FACTOR = 1.5;
 const double MEMORY_SHRINK_TEST_FACTOR = 4.0;
 
-cCPUMemory::cCPUMemory(int _size) : cGenome(_size), flag_array(_size)
-{
-}
-
-cCPUMemory::cCPUMemory(const cCPUMemory & in_memory)
+cCPUMemory::cCPUMemory(const cCPUMemory& in_memory)
   : cGenome(in_memory), flag_array(in_memory.GetSize())
 {
   for (int i = 0; i < flag_array.GetSize(); i++) {
@@ -27,23 +24,6 @@
   }
 }
 
-cCPUMemory::cCPUMemory(const cGenome & in_genome)
-  : cGenome(in_genome), flag_array(in_genome.GetSize())
-{
-}
-
-cCPUMemory::cCPUMemory(const cString & in_string)
-  : cGenome(in_string), flag_array(in_string.GetSize())
-{
-}
-
-cCPUMemory::~cCPUMemory()
-{
-}
-
-
-// ---  Private Methods ---
-
 void cCPUMemory::SloppyResize(int new_size)
 {
   assert(new_size > 0);
@@ -54,9 +34,10 @@
   const int array_size = genome.GetSize();
 
   // Determine if we need to adjust the allocated array sizes...
-  if (new_size > array_size ||
-      new_size * MEMORY_SHRINK_TEST_FACTOR < array_size) {
-    const int new_array_size = (int) (new_size * MEMORY_INCREASE_FACTOR);
+  if (new_size > array_size || new_size * MEMORY_SHRINK_TEST_FACTOR < array_size) {
+    int new_array_size = (int) (new_size * MEMORY_INCREASE_FACTOR);
+    const int new_array_min = new_size + MEMORY_INCREASE_MINIMUM;
+		if (new_array_min > new_array_size) new_array_size = new_array_min;
     genome.Resize(new_array_size);
     flag_array.Resize(new_array_size);
   }

Modified: development/source/cpu/cCPUMemory.h
===================================================================
--- development/source/cpu/cCPUMemory.h	2005-12-09 18:15:48 UTC (rev 418)
+++ development/source/cpu/cCPUMemory.h	2005-12-09 18:22:25 UTC (rev 419)
@@ -14,8 +14,8 @@
 #ifndef cGenome_h
 #include "cGenome.h"
 #endif
-#ifndef tArray_h
-#include "tArray.h"
+#ifndef tManagedPointerArray_h
+#include "tManagedPointerArray.h"
 #endif
 #ifndef cMemoryFlags_h
 #include "cMemoryFlags.h"
@@ -29,18 +29,18 @@
 
 class cCPUMemory : public cGenome {
 private:
-  tArray<cMemoryFlags> flag_array;
+  tManagedPointerArray<cMemoryFlags> flag_array;
 
   // A collection of sloppy instructions to perform oft-used functions that
   // will need to be cleaned up after this is run.
   void SloppyResize(int new_size);           // Set size, ignore new contents.
   void SloppyInsert(int pos, int num_lines); // Add lines, ignore new contents.
 public:
-  explicit cCPUMemory(int _size=1);
-  cCPUMemory(const cCPUMemory & in_memory);
-  cCPUMemory(const cGenome & in_genome);
-  cCPUMemory(const cString & in_string);
-  ~cCPUMemory();
+  explicit cCPUMemory(int _size=1)  : cGenome(_size), flag_array(_size) { ; }
+  cCPUMemory(const cCPUMemory& in_memory);
+  cCPUMemory(const cGenome& in_genome) : cGenome(in_genome), flag_array(in_genome.GetSize()) { ; }
+  cCPUMemory(const cString& in_string) : cGenome(in_string), flag_array(in_string.GetSize()) { ; }
+  ~cCPUMemory() { ; }
 
   void operator=(const cCPUMemory & other_memory);
   void operator=(const cGenome & other_genome);




More information about the Avida-cvs mailing list