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

ericvrp at codespeak.net ericvrp at codespeak.net
Mon Nov 7 22:18:19 CET 2005


Author: ericvrp
Date: Mon Nov  7 22:18:17 2005
New Revision: 19620

Modified:
   pypy/dist/pypy/translator/js/codewriter.py
   pypy/dist/pypy/translator/js/funcnode.py
   pypy/dist/pypy/translator/js/opwriter.py
   pypy/dist/pypy/translator/js/test/browsertest.py
   pypy/dist/pypy/translator/js/test/runtest.py
   pypy/dist/pypy/translator/js/test/test_exception.py
   pypy/dist/pypy/translator/js/test/test_snippet.py
Log:
Few more tests pass because etype_ and evalue_ variables
are carried around more correctly and ignoring calls to
external function ll_stack_check.

At least until stackless Javascript is a fact!



Modified: pypy/dist/pypy/translator/js/codewriter.py
==============================================================================
--- pypy/dist/pypy/translator/js/codewriter.py	(original)
+++ pypy/dist/pypy/translator/js/codewriter.py	Mon Nov  7 22:18:17 2005
@@ -88,7 +88,9 @@
                 src = 'true'
             elif src == 'None':
                 src = 'undefined'
-            if dest != src:
+            if dest != src and not dest.startswith('etype_'):
+                if dest.startswith('evalue_') and src.startswith('last_exc_value_'):
+                    src = 'e'   #i.e. the caught exception
                 self.append('%s = %s' % (dest, src))
 
     def br_uncond(self, block, exit): 

Modified: pypy/dist/pypy/translator/js/funcnode.py
==============================================================================
--- pypy/dist/pypy/translator/js/funcnode.py	(original)
+++ pypy/dist/pypy/translator/js/funcnode.py	Mon Nov  7 22:18:17 2005
@@ -43,8 +43,6 @@
     def writeimpl(self, codewriter):
         graph = self.graph
         log.writeimpl(graph.name)
-        nextblock = graph.startblock
-        args = graph.startblock.inputargs 
         blocks = [x for x in flatten(graph) if isinstance(x, Block)]
         self.blockindex= {}
         for i, block in enumerate(blocks):

Modified: pypy/dist/pypy/translator/js/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/js/opwriter.py	(original)
+++ pypy/dist/pypy/translator/js/opwriter.py	Mon Nov  7 22:18:17 2005
@@ -241,6 +241,9 @@
         targetvar = self.db.repr_arg(op.result)
         functionref = self.db.repr_arg(op_args[0])
         argrefs = self.db.repr_arg_multi(op_args[1:])
+        if functionref == 'll_stack_check': #XXX what to do here?
+            self.codewriter.comment('Skipping: %s = %s()' % (targetvar, functionref))
+            return
         self.codewriter.call(targetvar, functionref, argrefs)
 
     def invoke(self, op):
@@ -306,7 +309,8 @@
         struct = self.db.repr_arg(op.args[0])
         targetvar = self.db.repr_arg(op.result)
         targettype = 'undefined' #self.db.repr_arg_type(op.result)
-        if targettype != "void":
+        if targettype != "void" and \
+            not targetvar.startswith('etype_'):
             self.codewriter.append('%s = %s.%s' % (targetvar, struct, op.args[1].value)) #XXX move to codewriter
         else:
             self._skipped(op)

Modified: pypy/dist/pypy/translator/js/test/browsertest.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/browsertest.py	(original)
+++ pypy/dist/pypy/translator/js/test/browsertest.py	Mon Nov  7 22:18:17 2005
@@ -22,7 +22,7 @@
     try {
         result = %(jstestcase)s;
     } catch (e) {
-        result = 'Exception("' + e + '")'
+        result = "Exception('" + e.toSource() + "')"
     }
     var resultform = document.forms['resultform'];
     resultform.result.value = result;

Modified: pypy/dist/pypy/translator/js/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/runtest.py	(original)
+++ pypy/dist/pypy/translator/js/test/runtest.py	Mon Nov  7 22:18:17 2005
@@ -49,5 +49,6 @@
         elif s == 'undefined':
             res = None
         else:
+            log('javascript result:', s)
             res = eval(s)
         return res

Modified: pypy/dist/pypy/translator/js/test/test_exception.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/test_exception.py	(original)
+++ pypy/dist/pypy/translator/js/test/test_exception.py	Mon Nov  7 22:18:17 2005
@@ -22,7 +22,7 @@
         raise IndexError
     return l[i]
 
-def DONTtest_simple1():
+def test_simple1():
     def raise_(i):
         if i:
             raise TestException()

Modified: pypy/dist/pypy/translator/js/test/test_snippet.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/test_snippet.py	(original)
+++ pypy/dist/pypy/translator/js/test/test_snippet.py	Mon Nov  7 22:18:17 2005
@@ -53,11 +53,11 @@
         f = compile_function(test.int_id, [int])
         assert f(1027) == 1027
 
-    def DONTtest_factorial2(self):
+    def test_factorial2(self):
         factorial2 = compile_function(test.factorial2, [int])
         assert factorial2(5) == 120
 
-    def DONTtest_factorial(self):
+    def test_factorial(self):
         factorial = compile_function(test.factorial, [int])
         assert factorial(5) == 120
 



More information about the Pypy-commit mailing list