[pypy-svn] r30341 - pypy/dist/pypy/translator/cli

antocuni at codespeak.net antocuni at codespeak.net
Sat Jul 22 00:17:45 CEST 2006


Author: antocuni
Date: Sat Jul 22 00:17:40 2006
New Revision: 30341

Modified:
   pypy/dist/pypy/translator/cli/database.py
   pypy/dist/pypy/translator/cli/ilgenerator.py
Log:
Added the possibility of inserting debug messages during constants
initialization.



Modified: pypy/dist/pypy/translator/cli/database.py
==============================================================================
--- pypy/dist/pypy/translator/cli/database.py	(original)
+++ pypy/dist/pypy/translator/cli/database.py	Sat Jul 22 00:17:40 2006
@@ -17,6 +17,8 @@
 except NameError:
     from sets import Set as set
 
+DEBUG_CONST_INIT = False
+
 CONST_NAMESPACE = 'pypy.runtime'
 CONST_CLASS = 'Constants'
 
@@ -178,16 +180,20 @@
 
         # this point we have collected all constant we
         # need. Instantiate&initialize them.
+        ilasm.stderr('CONST: instantiating', DEBUG_CONST_INIT)
         for const in self.consts.itervalues():
             type_ = const.get_type()
             const.instantiate(ilasm)
             ilasm.store_static_constant(type_, CONST_NAMESPACE, CONST_CLASS, const.name)
+        ilasm.stderr('CONST: instantiated', DEBUG_CONST_INIT)
 
-        for const in self.consts.itervalues():
+        for i, const in enumerate(self.consts.itervalues()):
+            ilasm.stderr('CONST: initializing #%d' % i, DEBUG_CONST_INIT)
             type_ = const.get_type()
             ilasm.load_static_constant(type_, CONST_NAMESPACE, CONST_CLASS, const.name)
             const.init(ilasm)
 
+        ilasm.stderr('CONST: initialization completed', DEBUG_CONST_INIT)
         ilasm.ret()
         ilasm.end_function()
 

Modified: pypy/dist/pypy/translator/cli/ilgenerator.py
==============================================================================
--- pypy/dist/pypy/translator/cli/ilgenerator.py	(original)
+++ pypy/dist/pypy/translator/cli/ilgenerator.py	Sat Jul 22 00:17:40 2006
@@ -209,3 +209,10 @@
     def opcode(self, opcode, *args):
         self.code.write(opcode + ' ')
         self.code.writeline(' '.join(map(str, args)))
+
+    def stderr(self, msg, cond=True):
+        from pypy.translator.cli.support import string_literal
+        if cond:
+            self.call('class [mscorlib]System.IO.TextWriter class [mscorlib]System.Console::get_Error()')
+            self.opcode('ldstr', string_literal(msg))
+            self.call_method('void class [mscorlib]System.IO.TextWriter::WriteLine(string)', virtual=True)



More information about the Pypy-commit mailing list