[pypy-svn] r23123 - in pypy/dist/pypy/translator: backendopt js js/test llvm microbench

ericvrp at codespeak.net ericvrp at codespeak.net
Tue Feb 7 21:06:13 CET 2006


Author: ericvrp
Date: Tue Feb  7 21:05:56 2006
New Revision: 23123

Added:
   pypy/dist/pypy/translator/js/test/test_ajax.py
   pypy/dist/pypy/translator/js/test/test_annotationproblem.py
   pypy/dist/pypy/translator/js/test/test_struct.py
Modified:
   pypy/dist/pypy/translator/backendopt/all.py
   pypy/dist/pypy/translator/js/opwriter.py
   pypy/dist/pypy/translator/js/test/runtest.py
   pypy/dist/pypy/translator/llvm/genllvm.py
   pypy/dist/pypy/translator/microbench/microbench.py
Log:
svn-commit.tmp

Modified: pypy/dist/pypy/translator/backendopt/all.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/all.py	(original)
+++ pypy/dist/pypy/translator/backendopt/all.py	Tue Feb  7 21:05:56 2006
@@ -9,7 +9,7 @@
 from pypy.translator.backendopt.escape import malloc_to_stack
 
 
-def backend_optimizations(translator, raisingop2direct_call_all=False,
+def backend_optimizations(translator, raisingop2direct_call_all=True,
                                       inline_threshold=1,
                                       mallocs=True,
                                       ssa_form=True,

Modified: pypy/dist/pypy/translator/js/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/js/opwriter.py	(original)
+++ pypy/dist/pypy/translator/js/opwriter.py	Tue Feb  7 21:05:56 2006
@@ -274,17 +274,28 @@
         arg_type = op.args[0].value
         targetvar = self.db.repr_arg(op.result) 
         t        = str(op.args[0]).split()
-        if t[0].endswith('Array'):  #XXX ouch do I really want to go down this road
+        if isinstance(arg_type, lltype.Array):
             type_ = '[];'
         else:
-            type_ = '{};'
-        #XXX this should be done correctly for all types offcourse!
-        if type_ == '{}' and t[1] == 'rpy_string':
-            self.codewriter.append(targetvar + ' = {hash:0, chars:""};')
-        else:
-            self.codewriter.comment(str(arg_type))
-            self.codewriter.comment(str(op.args[0]))
-            self.codewriter.malloc(targetvar, type_)
+            assert isinstance(arg_type, lltype.Struct)
+            type_ = '{'
+            for n, name in enumerate(arg_type._names_without_voids()):
+                if n > 0:
+                    type_ += ', '
+                t = arg_type._flds[name]
+                type_ += self.db.namespace.ensure_non_reserved(name) + ':'
+                if t is lltype.Void:
+                    type_ += 'undefined'
+                elif t is lltype.Bool:
+                    type_ += 'false'
+                elif t is lltype.Char:
+                    type_ += 'String.fromCharCode(0)'
+                elif t is lltype.Float:
+                    type_ += '0.0'
+                else:
+                    type_ += '0'
+            type_ += '};'
+        self.codewriter.malloc(targetvar, type_)
     malloc_exception = malloc
     malloc_varsize = malloc
 

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	Tue Feb  7 21:05:56 2006
@@ -5,6 +5,7 @@
 from pypy.translator.js.test.browsertest import jstest
 from pypy.translator.js import conftest
 from pypy.translator.js.log import log
+from pypy.conftest import option
 log = log.runtest
 use_browsertest = conftest.option.jsbrowser
 
@@ -27,7 +28,7 @@
 
         backend_optimizations(t, raisingop2direct_call_all=True, inline_threshold=0, mallocs=False)
         #backend_optimizations(t)
-        if view:
+        if view or option.view:
             t.view()
         #self.js = JS(t, [function, callback_function], stackless)
         self.js = JS(t, [function], stackless)

Added: pypy/dist/pypy/translator/js/test/test_ajax.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js/test/test_ajax.py	Tue Feb  7 21:05:56 2006
@@ -0,0 +1 @@
+#XMLHttpRequest

Added: pypy/dist/pypy/translator/js/test/test_annotationproblem.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js/test/test_annotationproblem.py	Tue Feb  7 21:05:56 2006
@@ -0,0 +1,19 @@
+from __future__ import division
+import py
+
+from pypy.translator.js.test.runtest import compile_function
+from pypy.rpython.lltypesystem import lltype 
+from pypy.rpython.rjs import jseval
+from pypy.translator.js import conftest
+
+py.test.skip("WIP")
+
+def test_bugme():
+    def bugme(i):
+        if i >= 0:
+            return i
+        else:
+           return [1,2,3]
+    bugme_fn = compile_function(bugme, [int])
+    assert bugme_fn(-1) == bugme(-1)
+    assert bugme_fn(1) == bugme(1)

Added: pypy/dist/pypy/translator/js/test/test_struct.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js/test/test_struct.py	Tue Feb  7 21:05:56 2006
@@ -0,0 +1,21 @@
+import py
+from pypy.rpython.lltypesystem import lltype
+from pypy.translator.js.test.runtest import compile_function
+
+S = lltype.GcStruct("mystruct",
+    ('myvar1', lltype.Unsigned),
+    ('myvar2', lltype.Signed),
+    ('myvar3', lltype.Float),
+    ('myvar4', lltype.Char),
+    ('myvar5', lltype.Void),
+    ('myvar7', lltype.Bool),
+    )
+#Array
+#Struct
+
+def test_struct2():
+    def struct2():
+        s = lltype.malloc(S)
+        return s.myvar1
+    f = compile_function(struct2, [])
+    assert f() == struct2()

Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py	Tue Feb  7 21:05:56 2006
@@ -16,6 +16,7 @@
 from pypy.translator.llvm.gc import GcPolicy
 from pypy.translator.llvm.exception import ExceptionPolicy
 from pypy.translator.llvm.log import log
+from pypy import conftest
 
 class GenLLVM(object):
 
@@ -312,7 +313,7 @@
                               propagate=False)
 
     # note: this is without policy transforms
-    if view:
+    if view or conftest.option.view:
         t.view()
     return genllvm(t, function, optimize=optimize, **kwds)
 

Modified: pypy/dist/pypy/translator/microbench/microbench.py
==============================================================================
--- pypy/dist/pypy/translator/microbench/microbench.py	(original)
+++ pypy/dist/pypy/translator/microbench/microbench.py	Tue Feb  7 21:05:56 2006
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 
 """This script computes the relative performance between python
 implementations on a set of microbenchmarks. The script usally is started



More information about the Pypy-commit mailing list