[pypy-svn] r20565 - pypy/dist/pypy/translator/js

ericvrp at codespeak.net ericvrp at codespeak.net
Fri Dec 2 11:14:42 CET 2005


Author: ericvrp
Date: Fri Dec  2 11:14:41 2005
New Revision: 20565

Modified:
   pypy/dist/pypy/translator/js/js.py
   pypy/dist/pypy/translator/js/opwriter.py
Log:
Fixes from genjs. There is one fix I don't know how to do.
Can someone please have a quick look?


Modified: pypy/dist/pypy/translator/js/js.py
==============================================================================
--- pypy/dist/pypy/translator/js/js.py	(original)
+++ pypy/dist/pypy/translator/js/js.py	Fri Dec  2 11:14:41 2005
@@ -10,7 +10,8 @@
 import py
 import os
 
-from pypy.rpython.rmodel import inputconst, getfunctionptr
+from pypy.rpython.rmodel import inputconst
+from pypy.rpython.typesystem import getfunctionptr
 from pypy.rpython.lltypesystem import lltype
 from pypy.tool.udir import udir
 from pypy.translator.js.node import Node
@@ -34,15 +35,20 @@
 
     def write_source(self):
         func = self.entrypoint
-        ptr  = getfunctionptr(self.db.translator, func)
+        bk   = self.db.translator.annotator.bookkeeper
+        ptr  = getfunctionptr(bk.getdesc(func).cachedgraph(None))
         c    = inputconst(lltype.typeOf(ptr), ptr)
         self.db.prepare_arg_value(c)
 
         #add exception matching function (XXX should only be done when needed)
-        e          = self.db.translator.rtyper.getexceptiondata()
-        matchptr   = getfunctionptr(self.db.translator, e.ll_exception_match)
-        matchconst = inputconst(lltype.typeOf(matchptr), matchptr)
-        self.db.prepare_arg_value(matchconst)
+        try:
+            e          = self.db.translator.rtyper.getexceptiondata()
+            #matchptr   = getfunctionptr(bk.getdesc(e.fn_exception_match).cachedgraph(None))
+            matchptr   = getfunctionptr(bk.getdesc(e.fn_exception_match._obj).cachedgraph(None))
+            matchconst = inputconst(lltype.typeOf(matchptr), matchptr)
+            self.db.prepare_arg_value(matchconst)
+        except:
+            pass    #XXX need a fix here
 
         # set up all nodes
         self.db.setup_all()

Modified: pypy/dist/pypy/translator/js/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/js/opwriter.py	(original)
+++ pypy/dist/pypy/translator/js/opwriter.py	Fri Dec  2 11:14:41 2005
@@ -1,7 +1,6 @@
 import py
 from pypy.objspace.flow.model import Constant
 from pypy.rpython.lltypesystem import lltype
-from pypy.rpython.rmodel import inputconst, getfunctionptr
 from pypy.translator.js.log import log 
 log = log.opwriter
 
@@ -278,7 +277,7 @@
         exceptions = []
         for exit in self.block.exits[1:]:
             assert issubclass(exit.exitcase, Exception)
-            exception_match  = self.db.translator.rtyper.getexceptiondata().ll_exception_match.__name__
+            exception_match  = self.db.translator.rtyper.getexceptiondata().fn_exception_match._obj._name
             exception_ref    = self.db.obj2node[exit.llexitcase._obj].ref #get _ref()
             exception_target = self.node.blockindex[exit.target]
             exception        = (exception_match, exception_ref, exception_target, exit)



More information about the Pypy-commit mailing list