[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