[pypy-svn] r20330 - in pypy/dist/pypy/translator/js: . src

ericvrp at codespeak.net ericvrp at codespeak.net
Mon Nov 28 10:48:43 CET 2005


Author: ericvrp
Date: Mon Nov 28 10:48:42 2005
New Revision: 20330

Modified:
   pypy/dist/pypy/translator/js/arraynode.py
   pypy/dist/pypy/translator/js/js.py
   pypy/dist/pypy/translator/js/src/stack.js
   pypy/dist/pypy/translator/js/structnode.py
Log:
* Added dispatcher for stackless function that unwind the stack and need to be resumes (slp_entry_point)

* Prefixed Javascript variable declarations with "var "

* Added some temporary debug output



Modified: pypy/dist/pypy/translator/js/arraynode.py
==============================================================================
--- pypy/dist/pypy/translator/js/arraynode.py	(original)
+++ pypy/dist/pypy/translator/js/arraynode.py	Mon Nov 28 10:48:42 2005
@@ -32,9 +32,9 @@
 
     #def write_forward_array_declaration(self, codewriter):
     #    if self.arraytype is lltype.Char:
-    #        codewriter.declare(self.ref + ' = new String()') #XXX string should be earlier
+    #        codewriter.declare('var ' + self.ref + ' = new String()') #XXX string should be earlier
     #    else:
-    #        codewriter.declare(self.ref + ' = new Array()')
+    #        codewriter.declare('var ' + self.ref + ' = new Array()')
 
     #def get _ref(self):
     #    return self.ref
@@ -47,7 +47,7 @@
     
     def write_global_array(self, codewriter):
         fields = [self.db.repr_constant(v)[1] for i, v in enumerate(self.value.items)]
-        line   = "%s = new Array(%s)" % (self.ref, ", ".join(fields))
+        line   = "var %s = new Array(%s)" % (self.ref, ", ".join(fields))
         log.writeglobaldata(line)
         codewriter.append(line)
 
@@ -79,7 +79,7 @@
             else:
                 s += "\\%02x" % ord(c)
         s += '"'
-        line = self.ref + " = " + s
+        line = "var " + self.ref + " = " + s
         log.writeglobaldata(line)
         codewriter.append(line)
         #return [line]

Modified: pypy/dist/pypy/translator/js/js.py
==============================================================================
--- pypy/dist/pypy/translator/js/js.py	(original)
+++ pypy/dist/pypy/translator/js/js.py	Mon Nov 28 10:48:42 2005
@@ -86,7 +86,10 @@
         self.graph = self.db.obj2node[entry_point].graph
         startblock = self.graph.startblock
         args       = ','.join(['arguments[%d]' % i for i,v in enumerate(startblock.inputargs)])
-        self.wrappertemplate = "load('%s'); print(%s(%%s))" % (self.filename, self.graph.name)
+        if self.stackless:
+            self.wrappertemplate = "load('%s'); print(slp_entry_point('%s(%%s)'))" % (self.filename, self.graph.name)
+        else:
+            self.wrappertemplate = "load('%s'); print(%s(%%s))" % (self.filename, self.graph.name)
 
         log('Written:', self.filename)
         return self.filename

Modified: pypy/dist/pypy/translator/js/src/stack.js
==============================================================================
--- pypy/dist/pypy/translator/js/src/stack.js	(original)
+++ pypy/dist/pypy/translator/js/src/stack.js	Mon Nov 28 10:48:42 2005
@@ -1,3 +1,18 @@
+function logme(s) {
+    print("logme: " + s);
+}
+
+function ll_stack_too_big_helper(depth) {
+    if (depth > 0) {
+        ll_stack_too_big_helper(depth-1)
+    }
+}
+
 function ll_stack_too_big() {
+    try {
+        ll_stack_too_big_helper(10); //XXX
+    } catch (e) {   //stack overflow when recursing some more
+        return true;
+    }
     return false;
 }

Modified: pypy/dist/pypy/translator/js/structnode.py
==============================================================================
--- pypy/dist/pypy/translator/js/structnode.py	(original)
+++ pypy/dist/pypy/translator/js/structnode.py	Mon Nov 28 10:48:42 2005
@@ -44,7 +44,7 @@
             self.db.prepare_constant(lltype.typeOf(p), p)
 
     def write_forward_struct_declaration(self, codewriter):
-        codewriter.declare(self.ref + ' = new Object()')
+        codewriter.declare('var ' + self.ref + ' = new Object()')
         
     #def get_childref(self, index):
     #    return self.ref #self.get _ref() #XXX what to do with index?



More information about the Pypy-commit mailing list