# HG changeset patch # User Paul Boddie # Date 1223592980 -7200 # Node ID 9156ef49a20f93050b3264934866ca781d533d7a # Parent 383690df8720bb677f2fa4d8d455f51372de8e50 Added the raw form of Module objects. Added some nicer debugging support in the RSVPMachine class. diff -r 383690df8720 -r 9156ef49a20f micropython/rsvp.py --- a/micropython/rsvp.py Mon Sep 29 01:30:39 2008 +0200 +++ b/micropython/rsvp.py Fri Oct 10 00:56:20 2008 +0200 @@ -20,7 +20,7 @@ """ from micropython.common import Label -from micropython.data import Attr, Class, Const, Function +from micropython.data import Attr, Class, Const, Function, Module def raw(code, objtable, paramtable): @@ -76,6 +76,15 @@ 0 )) + elif isinstance(item, Module): + new_code.append(( + objtable.as_list().get_code(item.full_name()), + None, # module name not used as an attribute + None, + None, + 0 + )) + else: new_code.append(item) diff -r 383690df8720 -r 9156ef49a20f rsvp.py --- a/rsvp.py Mon Sep 29 01:30:39 2008 +0200 +++ b/rsvp.py Fri Oct 10 00:56:20 2008 +0200 @@ -107,6 +107,8 @@ self.attr_error = attr_error self.type_error = type_error + # Debugging methods. + def dump(self): print "PC", self.pc, "->", self.load(self.pc) print "PC stack", self.pc_stack @@ -126,9 +128,31 @@ print "Result", self.result print "Exception", self.exception - def step(self): + def show(self): + self.show_memory(self.memory, 0) + + def show_pc(self, run_in=10): + start = max(0, self.pc - run_in) + end = self.pc + run_in + memory = self.memory[start:end] + self.show_memory(memory, start) + + def show_memory(self, memory, start): + for i, x in enumerate(memory): + location = start + i + if location == self.pc: + print "->", + else: + print " ", + print "%5d %r" % (location, x) + + def step(self, dump=0): self.execute() - self.dump() + self.show_pc() + if dump: + self.dump() + + # Internal operations. def load(self, address):