[pypy-svn] r45598 - in pypy/branch/flex-backend/pypy/translator/flex: . jssrc modules sandbox sandbox/ll_os_path sandbox/py

lucio at codespeak.net lucio at codespeak.net
Sat Aug 11 16:30:29 CEST 2007


Author: lucio
Date: Sat Aug 11 16:30:27 2007
New Revision: 45598

Added:
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/ll_os_path/
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/ll_os_path/ll_join.as
Modified:
   pypy/branch/flex-backend/pypy/translator/flex/_class.py
   pypy/branch/flex-backend/pypy/translator/flex/asmgen.py
   pypy/branch/flex-backend/pypy/translator/flex/database.py
   pypy/branch/flex-backend/pypy/translator/flex/function.py
   pypy/branch/flex-backend/pypy/translator/flex/js.py
   pypy/branch/flex-backend/pypy/translator/flex/jsbuiltin.py
   pypy/branch/flex-backend/pypy/translator/flex/jssrc/misc.as
   pypy/branch/flex-backend/pypy/translator/flex/metavm.py
   pypy/branch/flex-backend/pypy/translator/flex/modules/flex.py
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/chimp.py
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/misc.as
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/output.mxml
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/py/StringBuilder.as
Log:
chimp.py compiles!!



Modified: pypy/branch/flex-backend/pypy/translator/flex/_class.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/_class.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/_class.py	Sat Aug 11 16:30:27 2007
@@ -47,7 +47,7 @@
         self.ilasm = ilasm
         
         ilasm.push_gen("py/%s.as"%self.name)
-        
+        ilasm.set_push(False)
         if not self.is_root(self.classdef):
             basename = self.basename(self.classdef._superclass._name)
             if basename != 'Root':
@@ -57,16 +57,16 @@
         else:
             ilasm.begin_class(self.name)
             
-        ilasm.begin_function(self.name, [], push=False)
+        ilasm.begin_function(self.name, [])
         # we need to copy here all the arguments
         self.copy_class_attributes(ilasm)
-        ilasm.end_function(pop=False)
+        ilasm.end_function()
         
         # begin to_String method
-        ilasm.begin_method("toString", self.name, [], push=False)
+        ilasm.begin_method("toString", self.name, [])
         ilasm.load_str("'<%s object>'" % self.real_name)
         ilasm.ret()
-        ilasm.end_function(pop=False)
+        ilasm.end_function()
 
         #for f_name, (f_type, f_default) in self.classdef._fields.iteritems():
         #    cts_type = self.cts.lltype_to_cts(f_type)
@@ -77,6 +77,7 @@
         
         for m_name, m_meth in self.classdef._methods.iteritems():
             graph = getattr(m_meth, 'graph', None)
+            if m_name=="o__init__": continue
             if graph:
                 f = self.db.genoo.Function(self.db, graph, m_name, is_method = True, _class = self.name)
                 f.render(ilasm)
@@ -87,7 +88,9 @@
         
         self.db.record_class(self.classdef, self.name)
         
+        ilasm.set_push(True)
         ilasm.end_class()
+        
         ilasm.pop_gen()
     
     def copy_class_attributes(self, ilasm):

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 Aug 11 16:30:27 2007
@@ -75,6 +75,10 @@
         self.right_hand = Queue([], self.subst_table)
         self.codegenerator = CodeGenerator(outfile)
         self.gen_stack = []
+        self.push = True
+        
+    def set_push(self, value):
+        self.push = value
         
     def push_gen(self, generator):
         self.gen_stack.append( self.codegenerator )
@@ -89,32 +93,34 @@
     def close(self):
         self.outfile.close()
     
-    def begin_function(self, name, arglist, push=True):
-        if push:
+    def begin_function(self, name, arglist):
+        if self.push:
             self.push_gen("py/"+name+".as")
             self.codegenerator.write("package py ")
             self.codegenerator.openblock()
-            self.codegenerator.writeline("import py.__consts_0;")
-        
+            self.codegenerator.writeline("import py._consts_0;")
+            self.codegenerator.writeline("import ll_os_path.ll_join;")
+
         args = ",".join([i[1] for i in arglist])
         self.codegenerator.write("public function %s (%s) "%(name, args))
         self.codegenerator.openblock()
     
-    def begin_method(self, name, _class, arglist, push=True):
-        if push:
+    def begin_method(self, name, _class, arglist):
+        if self.push:
             self.push_gen("py/"+name+".as")
             self.codegenerator.write("package py ")
             self.codegenerator.openblock()
-            self.codegenerator.writeline("import py.__consts_0;")
-            
+            self.codegenerator.writeline("import py._consts_0;")
+            self.codegenerator.writeline("import ll_os_path.ll_join;")
+
         args = ",".join(arglist)
         self.codegenerator.write("%s.prototype.%s = function (%s)"%(_class, name, args))
         self.codegenerator.openblock()
     
-    def end_function(self, pop=True):
+    def end_function(self):
         self.codegenerator.closeblock()
         self.codegenerator.writeline("")
-        if pop:
+        if self.push:
             self.codegenerator.closeblock()
             self.pop_gen()
         
@@ -123,7 +129,8 @@
         self.codegenerator.write("package py ")
 
         self.codegenerator.openblock()
-        self.codegenerator.writeline("import py.__consts_0;")
+        self.codegenerator.writeline("import py._consts_0;")
+        self.codegenerator.writeline("import ll_os_path.ll_join;")
             
         self.codegenerator.write("dynamic public class %s extends %s "%(name, base))
         self.codegenerator.openblock()
@@ -343,7 +350,7 @@
     
     def throw_real(self, s):
         # use throwit wrapper function... because of compiler weirdness with flex compiler.
-        self.codegenerator.writeline("__consts_0.throwit(%s);"%s)
+        self.codegenerator.writeline("_consts_0.throwit(%s);"%s)
 
     def clean_stack(self):
         self.right_hand.empty()

Modified: pypy/branch/flex-backend/pypy/translator/flex/database.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/database.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/database.py	Sat Aug 11 16:30:27 2007
@@ -37,7 +37,7 @@
         self.reverse_consts = {}
         self.const_names = set()
         self.rendered = set()
-        self.const_var = Variable("__consts")
+        self.const_var = Variable("_consts")
         self.name_manager = JavascriptNameManager(self)
         self.pending_consts = []
         self.cts = self.genoo.TypeSystem(self)

Modified: pypy/branch/flex-backend/pypy/translator/flex/function.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/function.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/function.py	Sat Aug 11 16:30:27 2007
@@ -205,7 +205,7 @@
 
     def begin_catch(self, llexitcase):
         real_name = self.cts.lltype_to_cts(llexitcase._inst.class_._INSTANCE)
-        s = "__consts_0.isinstanceof(exc, %s)"%real_name
+        s = "_consts_0.isinstanceof(exc, %s)"%real_name
         self.ilasm.branch_if_string(s)
     
     def end_catch(self, target_label):

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 Aug 11 16:30:27 2007
@@ -101,10 +101,10 @@
         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 = 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.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 ")

Modified: pypy/branch/flex-backend/pypy/translator/flex/jsbuiltin.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/jsbuiltin.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/jsbuiltin.py	Sat Aug 11 16:30:27 2007
@@ -28,7 +28,7 @@
             'll_math.ll_math_fmod' : InstructionList([_PushAllArgs(slice(1, None)), '%']),
             'll_time_time' : CallBuiltin('time'),
             'll_time_clock' : CallBuiltin('clock'),
-            'll_os_write' : CallBuiltin('print'),
+            'll_os_write' : CallBuiltin('_consts_0.flexTrace'),
         }
         self.builtin_obj_map = {
             ootype.String.__class__: {

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 Aug 11 16:30:27 2007
@@ -5,7 +5,7 @@
 
 
 import py.*;
-import py.__consts_0;
+import py._consts_0;
 //import py.f.DictIter;
 
 
@@ -38,19 +38,19 @@
     try {
         py.__load_consts_flex()
     } catch (exc) {
-        __consts_0.flexTrace("consts error");
-        __consts_0.flexTrace(String(exc));
+        localFlexTrace("consts error");
+        localFlexTrace(String(exc));
     }
     try {
         flash_main(1)
     } catch (exc) {
-        __consts_0.flexTrace("flash_main error");
-        __consts_0.flexTrace(String(exc));
-        __consts_0.flexTrace(String(exc.message));
-        __consts_0.flexTrace(exc.getStackTrace());
+        localFlexTrace("flash_main error");
+        localFlexTrace(String(exc));
+        localFlexTrace(String(exc.message));
+        localFlexTrace(exc.getStackTrace());
         
     }
-    __consts_0.flexTrace("Exit");
+    localFlexTrace("Exit");
 
 }
 

Modified: pypy/branch/flex-backend/pypy/translator/flex/metavm.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/metavm.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/metavm.py	Sat Aug 11 16:30:27 2007
@@ -77,6 +77,7 @@
 
 class CallBuiltin(_Call):
     def __init__(self, builtin):
+        if builtin == "": raise "foo"
         self.builtin = builtin
     
     def render(self, generator, op):
@@ -217,7 +218,7 @@
         # FIXME: just temporary hack
         generator.load(op.args[0])
         generator.ilasm.load_const(op.args[1].value._name.replace('.', '_'))#[-1])
-        generator.cast_function("__consts_0.isinstanceof", 2)
+        generator.cast_function("_consts_0.isinstanceof", 2)
 
 class _IndirectCall(MicroInstruction):
     def render(self, generator, op):
@@ -277,7 +278,7 @@
 IsInstance = _IsInstance()
 CallMethod = _CallMethod()
 CopyName = [PushAllArgs, _SameAs ()]
-CastString = _CastFun("__consts_0.convertToString", 1)
+CastString = _CastFun("_consts_0.convertToString", 1)
 SameAs = CopyName
 DiscardStack = _DiscardStack()
 

Modified: pypy/branch/flex-backend/pypy/translator/flex/modules/flex.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/modules/flex.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/modules/flex.py	Sat Aug 11 16:30:27 2007
@@ -4,5 +4,5 @@
 
 def flexTrace(s):
     pass
-register_external(flexTrace, args=[str], export_name="__consts_0.flexTrace")
+register_external(flexTrace, args=[str], export_name="_consts_0.flexTrace")
 

Modified: pypy/branch/flex-backend/pypy/translator/flex/sandbox/chimp.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/sandbox/chimp.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/chimp.py	Sat Aug 11 16:30:27 2007
@@ -122,7 +122,7 @@
             self.original = self.image
 
 
-def flash_main():
+def flash_main(a=0):
     """this function is called when the program starts.
        it initializes everything it needs, then runs in
        a loop until the function returns."""

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 Aug 11 16:30:27 2007
@@ -2,7 +2,7 @@
 
 class Bar:
     def __init__(self, arg):
-        self.arg = arg
+        self.arg = arg +"(!)"
     def setValue(self, arg):
         self.arg = arg
 
@@ -11,17 +11,19 @@
         
 class Foo:
     def __init__(self, arg):
-        self.arg = Bar(arg)
+        self.arg = Bar(arg + "@")
         
     def setValue(self, arg):
-        self.arg = Bar(arg)
+        self.arg = Bar(arg +"#")
     def value(self):
         return self.arg.value()
         
 def flash_main(a=1):
     flexTrace("Starting! python")
-    f = Bar("hola")
+    
+    f = Foo("hola")
+    
     for x in range(20):
-        f.setValue( "doing number "+str(x)+"!!" )
+        f.setValue( "doing number "+str(x)+" !!" )
         flexTrace(f.value())
     flexTrace("Im done!")

Added: pypy/branch/flex-backend/pypy/translator/flex/sandbox/ll_os_path/ll_join.as
==============================================================================
--- (empty file)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/ll_os_path/ll_join.as	Sat Aug 11 16:30:27 2007
@@ -0,0 +1,5 @@
+package ll_os_path {
+    public function ll_join ( arg1, arg2 ) {
+	   return "/path/";
+    }
+}

Modified: pypy/branch/flex-backend/pypy/translator/flex/sandbox/misc.as
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/sandbox/misc.as	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/misc.as	Sat Aug 11 16:30:27 2007
@@ -233,4 +233,4 @@
 }
 
 
-var __consts_0 = {};
+var _consts_0 = {};

Modified: pypy/branch/flex-backend/pypy/translator/flex/sandbox/output.mxml
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/sandbox/output.mxml	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/output.mxml	Sat Aug 11 16:30:27 2007
@@ -17,7 +17,7 @@
 
 
 import py.*;
-import py.__consts_0;
+import py._consts_0;
 //import py.f.DictIter;
 
 
@@ -50,19 +50,19 @@
     try {
         py.__load_consts_flex()
     } catch (exc) {
-        __consts_0.flexTrace("consts error");
-        __consts_0.flexTrace(String(exc));
+        localFlexTrace("consts error");
+        localFlexTrace(String(exc));
     }
     try {
         flash_main(1)
     } catch (exc) {
-        __consts_0.flexTrace("flash_main error");
-        __consts_0.flexTrace(String(exc));
-        __consts_0.flexTrace(String(exc.message));
-        __consts_0.flexTrace(exc.getStackTrace());
+        localFlexTrace("flash_main error");
+        localFlexTrace(String(exc));
+        localFlexTrace(String(exc.message));
+        localFlexTrace(exc.getStackTrace());
         
     }
-    __consts_0.flexTrace("Exit");
+    localFlexTrace("Exit");
 
 }
 

Modified: pypy/branch/flex-backend/pypy/translator/flex/sandbox/py/StringBuilder.as
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/sandbox/py/StringBuilder.as	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/sandbox/py/StringBuilder.as	Sat Aug 11 16:30:27 2007
@@ -1,7 +1,7 @@
 package py {
 
 
-public class StringBuilder {
+dynamic public class StringBuilder {
 
     public function StringBuilder() {
         this.l = [];


More information about the pypy-svn mailing list