[Avida-SVN] r3039 - in branches/interrupt/source: cpu main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Sun Dec 14 18:11:26 PST 2008


Author: beckma24
Date: 2008-12-14 21:11:26 -0500 (Sun, 14 Dec 2008)
New Revision: 3039

Modified:
   branches/interrupt/source/cpu/cHardwareCPU.cc
   branches/interrupt/source/main/cOrganism.cc
Log:
Initialization of pushed interrupt state... looking for nondeterminism

Modified: branches/interrupt/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/interrupt/source/cpu/cHardwareCPU.cc	2008-12-15 01:51:44 UTC (rev 3038)
+++ branches/interrupt/source/cpu/cHardwareCPU.cc	2008-12-15 02:11:26 UTC (rev 3039)
@@ -203,14 +203,24 @@
 	hardware = in_hardware;
   m_id = in_id;
   
-  for (int i = 0; i < NUM_REGISTERS; i++) reg[i] = 0;
-  for (int i = 0; i < NUM_HEADS; i++) heads[i].Reset(in_hardware);
-  
+  for (int i = 0; i < NUM_REGISTERS; i++) {
+		reg[i] = 0;
+		pushedState.reg[i] = 0;
+	}
+  for (int i = 0; i < NUM_HEADS; i++) {
+		heads[i].Reset(in_hardware);
+		pushedState.heads[i].Reset(in_hardware);
+  }
   stack.Clear();
+	pushedState.stack.Clear();
   cur_stack = 0;
+	pushedState.cur_stack = 0;
   cur_head = nHardware::HEAD_IP;
+	pushedState.cur_head = nHardware::HEAD_IP;
   read_label.Clear();
+	pushedState.read_label.Clear();
   next_label.Clear();
+	pushedState.next_label.Clear();
   
 	interrupted = false;
 	

Modified: branches/interrupt/source/main/cOrganism.cc
===================================================================
--- branches/interrupt/source/main/cOrganism.cc	2008-12-15 01:51:44 UTC (rev 3038)
+++ branches/interrupt/source/main/cOrganism.cc	2008-12-15 02:11:26 UTC (rev 3039)
@@ -697,7 +697,7 @@
   m_msg->received.push_back(msg);
 	
 	
-	cLocalThread* currentThread = static_cast<cHardwareCPU*>(m_hardware)->GetThread(GetHardware(true)->GetCurThread());
+	cLocalThread* currentThread = static_cast<cHardwareCPU*>(m_hardware)->GetThread(m_hardware->GetCurThread());
 	if(m_world->GetConfig().INTERRUPT_ENABLED.Get() && currentThread->isInterrupted() == false) {
 		currentThread->interruptContextSwitch(cLocalThread::MSG_INTERRUPT);
 	}




More information about the Avida-cvs mailing list