[pypy-svn] r45069 - in pypy/branch/flex-backend/pypy/translator/flex: . jssrc sandbox

alecu at codespeak.net alecu at codespeak.net
Sat Jul 14 14:15:12 CEST 2007


Author: alecu
Date: Sat Jul 14 14:15:11 2007
New Revision: 45069

Modified:
   pypy/branch/flex-backend/pypy/translator/flex/asmgen.py
   pypy/branch/flex-backend/pypy/translator/flex/js.py
   pypy/branch/flex-backend/pypy/translator/flex/jssrc/misc.as
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py
Log:
merge lucio's changes

Modified: pypy/branch/flex-backend/pypy/translator/flex/asmgen.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/asmgen.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/asmgen.py	Sat Jul 14 14:15:11 2007
@@ -90,8 +90,11 @@
         self.codegenerator.writeline("")
         
     def begin_class(self, name, base="Object"):
+
         self.codegenerator.write("package py ")
+
         self.codegenerator.openblock()
+        self.codegenerator.writeline("import py.__consts_0;")
 
         self.codegenerator.write("dynamic public class %s extends %s "%(name, base))
         self.codegenerator.openblock()
@@ -243,8 +246,8 @@
     
     def begin_consts(self, name):
         # load consts, maybe more try to use stack-based features?
-        self.codegenerator.writeline("var %s = {}"%name)
-        self.codegenerator.writeline("function __load_consts_flex() ")
+        #self.codegenerator.writeline("var %s = {}"%name)
+        self.codegenerator.writeline("public function __load_consts_flex() ")
         self.codegenerator.openblock()
 
     def end_consts(self):

Modified: pypy/branch/flex-backend/pypy/translator/flex/js.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/js.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/js.py	Sat Jul 14 14:15:11 2007
@@ -18,6 +18,8 @@
 from pypy.translator.flex.log import log
 
 from pypy.translator.flex.asmgen import AsmGen
+import pypy.translator.flex.asmgen as asmgen
+
 from pypy.translator.flex.jts import JTS
 from pypy.translator.flex.opcodes import opcodes
 from pypy.translator.flex.function import Function
@@ -99,11 +101,34 @@
         self.ilasm = self.create_assembler()
         self.fix_names()
         self.gen_entrypoint()
+        constants_code_generator = asmgen.CodeGenerator(open("py/__consts_0.as", "w"))
+        constants_code_generator.write("package py ")
+        constants_code_generator.openblock()
+        constants_code_generator.writeline("public var __consts_0 = {};")
+        constants_code_generator.closeblock()
+        constants_code_generator = asmgen.CodeGenerator(open("py/__load_consts_flex.as", "w"))
+        constants_code_generator.write("package py ")
+        constants_code_generator.openblock()
+
         while self.db._pending_nodes:
             self.gen_pendings()
+            
+            old_codegenerator =  self.ilasm.codegenerator
+            self.ilasm.codegenerator = constants_code_generator
+            
             self.db.gen_constants(self.ilasm, self.db._pending_nodes)
-
+            
+            self.ilasm.codegenerator = old_codegenerator
+            
+            
+        old_codegenerator =  self.ilasm.codegenerator
+        self.ilasm.codegenerator = constants_code_generator
         self.ilasm.end_consts()
+        constants_code_generator.closeblock()
+        self.ilasm.close()
+        
+        self.ilasm.codegenerator = old_codegenerator
+        
         self.ilasm.close()
         assert len(self.ilasm.right_hand) == 0
         return self.tmpfile.strpath

Modified: pypy/branch/flex-backend/pypy/translator/flex/jssrc/misc.as
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/jssrc/misc.as	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/jssrc/misc.as	Sat Jul 14 14:15:11 2007
@@ -5,6 +5,7 @@
 
 
 import py.*;
+import py.__consts_0;
 //import py.f.DictIter;
 
 
@@ -219,7 +220,7 @@
 
 
 
-    __load_consts_flex()
+    py.__load_consts_flex()
 
     aaa.label = "after consts";
     flash_main(1)

Modified: pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py	Sat Jul 14 14:15:11 2007
@@ -1,17 +1,14 @@
 from pypy.translator.flex.modules.flex import *
 
-
+class Foo:
+    def __init__(self, msg):
+        self.msg = msg
+    
 def flash_main(a=1):
-	#abutton = Button()
-        #abutton.label = "I'm a button!"
-        #addChild(abutton)
-
-        for x in range(20):
-            abutton = Button()
-            abutton.label = "I'm button :" + str(x)
-            addChild(abutton)
-            
-	return a+1
-
-
+    f = Foo("hello")
+    for x in [1,2,3]:
+        abutton = Button()
+        abutton.label = "I'm button :" + str(x)
+        addChild(abutton)
+    return f.msg
 



More information about the Pypy-commit mailing list