[pypy-svn] r26073 - pypy/dist/pypy/translator/js

ericvrp at codespeak.net ericvrp at codespeak.net
Fri Apr 21 04:08:13 CEST 2006


Author: ericvrp
Date: Fri Apr 21 04:08:04 2006
New Revision: 26073

Modified:
   pypy/dist/pypy/translator/js/database.py
Log:
Added basic symbolic/address support. This fixes most of the failing tests.


Modified: pypy/dist/pypy/translator/js/database.py
==============================================================================
--- pypy/dist/pypy/translator/js/database.py	(original)
+++ pypy/dist/pypy/translator/js/database.py	Fri Apr 21 04:08:04 2006
@@ -6,7 +6,8 @@
 from pypy.translator.js.structnode import StructNode, StructVarsizeNode
 from pypy.translator.js.arraynode import ArrayNode, StrArrayNode, VoidArrayNode
 from pypy.translator.js.opaquenode import OpaqueNode
-from pypy.rpython.lltypesystem import lltype
+from pypy.rpython.objectmodel import Symbolic, ComputedIntSymbolic
+from pypy.rpython.lltypesystem import lltype, llmemory
 from pypy.objspace.flow.model import Constant, Variable
 from pypy.translator.js.log import log 
             
@@ -23,7 +24,9 @@
             lltype.SignedLongLong: "int",
             lltype.UnsignedLongLong: "uint",
             lltype.UniChar: "uint",
-            lltype.Void: "void"}
+            lltype.Void: "void",
+            llmemory.Address: "sbyte*",
+            }
 
     def __init__(self, translator, js): 
         self.translator = translator
@@ -233,6 +236,13 @@
             repr = self.float_to_str(value)
         elif type_ is lltype.Void:
             repr = "undefined"
+        elif isinstance(value, Symbolic):
+            if isinstance(value, llmemory.AddressOffset):
+                return self.offset_str(value)
+            elif isinstance(value, ComputedIntSymbolic):
+                repr = '%d' % (value.compute_fn(),)
+            else:
+                raise NotImplementedError("symbolic: %r" % (value,))
         else:
             repr = str(value)
         return repr



More information about the Pypy-commit mailing list