[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