[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