[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