[pypy-svn] r22550 - in pypy/dist/pypy/translator/js: . test

ericvrp at codespeak.net ericvrp at codespeak.net
Mon Jan 23 19:30:46 CET 2006


Author: ericvrp
Date: Mon Jan 23 19:30:43 2006
New Revision: 22550

Added:
   pypy/dist/pypy/translator/js/test/test_jseval.py
Modified:
   pypy/dist/pypy/translator/js/optimize.py
Log:
Implementation and tests for jseval external function.


Modified: pypy/dist/pypy/translator/js/optimize.py
==============================================================================
--- pypy/dist/pypy/translator/js/optimize.py	(original)
+++ pypy/dist/pypy/translator/js/optimize.py	Mon Jan 23 19:30:43 2006
@@ -4,10 +4,14 @@
     'll_stritem_nonneg__rpy_stringPtr_Signed',
     'll_stritem__rpy_stringPtr_Signed',
     'll_streq__rpy_stringPtr_rpy_stringPtr',
-    'll_str__IntegerR_SignedConst_Signed',
     'll_chr2str__Char',
-    'll_issubclass__object_vtablePtr_object_vtablePtr',
+    'll_str__IntegerR_SignedConst_Signed',
     'll_str__FloatR_FloatConst_Float',
+
+    #'ll_issubclass__object_vtablePtr_object_vtablePtr',
+
+    #externals...
+    'll_js_jseval__rpy_stringPtr',
 ]
 
 
@@ -37,12 +41,16 @@
         return True, '%s = (%s == %s) || (%s && %s && %s.chars == %s.chars)' %\
                 (targetvar, s0,s1, s0,s1, s0,s1)
 
+    elif funcname == 'll_chr2str__Char':
+        return True, '%s = new Object({hash:0, chars:%s})' % (targetvar, params[0])
+
     elif funcname in ('ll_str__IntegerR_SignedConst_Signed',
                       'll_str__FloatR_FloatConst_Float'):
         return True, '%s = new Object({hash:0, chars:%s + ""})' % (targetvar, params[0])
 
-    elif funcname == 'll_chr2str__Char':
-        return True, '%s = new Object({hash:0, chars:%s})' % (targetvar, params[0])
+    #externals...
+    elif funcname == 'll_js_jseval__rpy_stringPtr':
+        return True, '%s = eval(%s)' % (targetvar, params[0])
 
     return False, '%s = %s(%s)' % (targetvar, funcname, ', '.join(params))
 

Added: pypy/dist/pypy/translator/js/test/test_jseval.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js/test/test_jseval.py	Mon Jan 23 19:30:43 2006
@@ -0,0 +1,12 @@
+from __future__ import division
+import py
+
+from pypy.translator.js.test.runtest import compile_function
+from pypy.rpython.rjs import jseval
+
+def test_jseval1():
+    def jseval1(s):
+        return jseval(s)
+    jseval1_fn = compile_function(jseval1, [str])
+    e = "4+7"
+    assert jseval1_fn(e) == eval(e)



More information about the Pypy-commit mailing list