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

lucio at codespeak.net lucio at codespeak.net
Sat Jul 14 18:04:36 CEST 2007


Author: lucio
Date: Sat Jul 14 18:04:34 2007
New Revision: 45091

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/function.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/metavm.py
   pypy/branch/flex-backend/pypy/translator/flex/modules/flex.py
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/fun.py
   pypy/branch/flex-backend/pypy/translator/flex/sandbox/output.mxml
Log:
chimp.py almost compiles. just two kind of errors left



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 Jul 14 18:04:34 2007
@@ -46,8 +46,8 @@
 
         self.ilasm = ilasm
         
-        old_codegenerator =  ilasm.codegenerator
-        ilasm.codegenerator = asmgen.CodeGenerator(open("py/%s.as"%self.name, "w"))
+        ilasm.push_gen("py/%s.as"%self.name)
+        
         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, [])
+        ilasm.begin_function(self.name, [], push=False)
         # we need to copy here all the arguments
         self.copy_class_attributes(ilasm)
-        ilasm.end_function()
+        ilasm.end_function(pop=False)
         
         # begin to_String method
-        ilasm.begin_method("toString", self.name, [])
+        ilasm.begin_method("toString", self.name, [], push=False)
         ilasm.load_str("'<%s object>'" % self.real_name)
         ilasm.ret()
-        ilasm.end_function()
+        ilasm.end_function(pop=False)
 
         #for f_name, (f_type, f_default) in self.classdef._fields.iteritems():
         #    cts_type = self.cts.lltype_to_cts(f_type)
@@ -88,8 +88,7 @@
         self.db.record_class(self.classdef, self.name)
         
         ilasm.end_class()
-        ilasm.codegenerator._out.close()
-        ilasm.codegenerator = old_codegenerator
+        ilasm.pop_gen()
     
     def copy_class_attributes(self, ilasm):
         default_values = self.classdef._fields.copy()

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 18:04:34 2007
@@ -37,6 +37,9 @@
     def closeblock(self):
         self._indent -= self._indentstep
         self.writeline(self._endblock)
+        
+    def close(self):
+        self._out.close()
 
 class Queue(object):
     def __init__(self, l, subst_table):
@@ -71,23 +74,49 @@
         self.subst_table = {}
         self.right_hand = Queue([], self.subst_table)
         self.codegenerator = CodeGenerator(outfile)
-
+        self.gen_stack = []
+        
+    def push_gen(self, generator):
+        self.gen_stack.append( self.codegenerator )
+        if isinstance(generator, str):
+            generator = CodeGenerator(open(generator, "w") )
+        self.codegenerator = generator 
+        
+    def pop_gen(self):
+        #self.codegenerator.close()
+        self.codegenerator = self.gen_stack.pop()
+        
     def close(self):
         self.outfile.close()
     
-    def begin_function(self, name, arglist):
+    def begin_function(self, name, arglist, push=True):
+        if push:
+            self.push_gen("py/"+name+".as")
+            self.codegenerator.write("package py ")
+            self.codegenerator.openblock()
+            self.codegenerator.writeline("import py.__consts_0;")
+        
         args = ",".join([i[1] for i in arglist])
-        self.codegenerator.write("function %s (%s) "%(name, args))
+        self.codegenerator.write("public function %s (%s) "%(name, args))
         self.codegenerator.openblock()
     
-    def begin_method(self, name, _class, arglist):
+    def begin_method(self, name, _class, arglist, push=True):
+        if push:
+            self.push_gen("py/"+name+".as")
+            self.codegenerator.write("package py ")
+            self.codegenerator.openblock()
+            self.codegenerator.writeline("import py.__consts_0;")
+            
         args = ",".join(arglist)
         self.codegenerator.write("%s.prototype.%s = function (%s)"%(_class, name, args))
         self.codegenerator.openblock()
     
-    def end_function(self):
+    def end_function(self, pop=True):
         self.codegenerator.closeblock()
         self.codegenerator.writeline("")
+        if pop:
+            self.codegenerator.closeblock()
+            self.pop_gen()
         
     def begin_class(self, name, base="Object"):
 
@@ -95,7 +124,7 @@
 
         self.codegenerator.openblock()
         self.codegenerator.writeline("import py.__consts_0;")
-
+            
         self.codegenerator.write("dynamic public class %s extends %s "%(name, base))
         self.codegenerator.openblock()
 
@@ -314,7 +343,7 @@
     
     def throw_real(self, s):
         # use throwit wrapper function... because of compiler weirdness with flex compiler.
-        self.codegenerator.writeline("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/function.py
==============================================================================
--- pypy/branch/flex-backend/pypy/translator/flex/function.py	(original)
+++ pypy/branch/flex-backend/pypy/translator/flex/function.py	Sat Jul 14 18:04:34 2007
@@ -205,7 +205,7 @@
 
     def begin_catch(self, llexitcase):
         real_name = self.cts.lltype_to_cts(llexitcase._inst.class_._INSTANCE)
-        s = "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 Jul 14 18:04:34 2007
@@ -109,26 +109,25 @@
         constants_code_generator = asmgen.CodeGenerator(open("py/__load_consts_flex.as", "w"))
         constants_code_generator.write("package py ")
         constants_code_generator.openblock()
-
+        constants_code_generator.writeline("import flash.net.*;");
         while self.db._pending_nodes:
             self.gen_pendings()
             
-            old_codegenerator =  self.ilasm.codegenerator
-            self.ilasm.codegenerator = constants_code_generator
+            self.ilasm.push_gen( constants_code_generator )
             
             self.db.gen_constants(self.ilasm, self.db._pending_nodes)
             
-            self.ilasm.codegenerator = old_codegenerator
+            self.ilasm.pop_gen()
             
             
-        old_codegenerator =  self.ilasm.codegenerator
-        self.ilasm.codegenerator = constants_code_generator
+        self.ilasm.push_gen( constants_code_generator )
         self.ilasm.end_consts()
+        const_filename = _path_join(os.path.dirname(__file__), 'jssrc', 'library.as')
+        constants_code_generator.write( open(const_filename).read() )
         constants_code_generator.closeblock()
         self.ilasm.close()
         
-        self.ilasm.codegenerator = old_codegenerator
-        
+        self.ilasm.pop_gen()        
         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 18:04:34 2007
@@ -7,6 +7,7 @@
 import py.*;
 import py.__consts_0;
 //import py.f.DictIter;
+
 
 
 // starts hand written code
@@ -22,220 +23,37 @@
     return this;
 };
 
-function inherits(child, parent) {
-    child.parent = parent;
-    for (var i in parent.prototype) {
-        if (!child.prototype[i]) {
-            child.prototype[i] = parent.prototype[i];
-        }
-    }
-}
-
-function isinstanceof(self, what) {
-
-    //return self instanceof what;
-
-
-    if (!self) {
-        return (false);
-    }
-    var t = self.constructor;
-    while ( t ) {
-        if (t == what) {
-            return (true);
-        }
-        t = t.parent;
-    }
-    return (false);
-}
-
-/*function delitem(fn, l, i) {
-    for(var j = i; j < l.length-1; ++j) {
-        l[j] = l[j+1];
-    }
-    l.length--;
-}*/
-
-function strcmp(s1, s2) {
-    if ( s1 < s2 ) {
-        return ( -1 );
-    } else if ( s1 == s2 ) {
-        return ( 0 );
-    }
-    return (1);
-}
-
-function startswith(s1, s2) {
-    if (s1.length < s2.length) {
-        return(false);
-    }
-    for (var i = 0; i < s2.length; ++i){
-        if (s1.charAt(i) != s2.charAt(i)) {
-            return(false);
-        }
-    }
-    return(true);
-}
-
-function endswith(s1, s2) {
-    if (s2.length > s1.length) {
-        return(false);
-    }
-    for (var i = s1.length-s2.length; i < s1.length; ++i) {
-        if (s1.charAt(i) != s2.charAt(i - s1.length + s2.length)) {
-            return(false);
-        }
-    }
-    return(true);
-}
-
-function splitchr(s, ch) {
-    var i, lst, next;
-    lst = [];
-    next = "";
-    for (var i = 0; i<s.length; ++i) {
-        if (s.charAt(i) == ch) {
-            lst.length += 1;
-            lst[lst.length-1] = next;
-            next = "";
-        } else {
-            next += s.charAt(i);
-        }
-    }
-    lst.length += 1;
-    lst[lst.length-1] = next;
-    return (lst);
-}
-
-
-function dict_items_iterator(d) {
-    var d2 = new DictIter();
-    //var d2 = {};
-    var l = [];
-    for (var i in d) {
-        l.length += 1;
-        l[l.length-1] = i;
-    }
-    d2.l = l;
-    d2.current_key = undefined;
-    return d2;
-}
-
-function get_dict_len(d) {
-    var count;
-    count = 0;
-    for (var i in d) {
-        count += 1;
-    }
-    return (count);
-}
-
-
-
-
 
-function time() {
-    var d;
-    d = new Date();
-    return d/1000;
-}
-
-var main_clock_stuff;
-
-function clock() {
-    if (main_clock_stuff) {
-        //return (new Date() - main_clock_stuff)/1000;
-        return 111;
-    } else {
-        main_clock_stuff = new Date();
-        return 0;
-    }
-}
-
-function substring(s, l, c) {
-    return (s.substring(l, l+c));
-}
-
-function clear_dict(d) {
-    for (var elem in d) {
-        delete(d[elem]);
-    }
-}
-
-function findIndexOf(s1, s2, start, end) {
-    if (start > end || start > s1.length) {
-        return -1;
-    }
-    s1 = s1.substr(start, end-start);
-    var res = s1.indexOf(s2);
-    if (res == -1) {
-        return -1;
-    }
-    return res + start;
-}
-
-function findIndexOfTrue(s1, s2) {
-    return findIndexOf(s1, s2, 0, s1.length) != -1;
-}
-
-function countCharOf(s, c, start, end) {
-    s = s.substring(start, end);
-    var i = 0;
-    for (var c1 in s) {
-        if (s[c1] == c) {
-            i++;
-        }
-    }
-    return(i);
-}
-
-function countOf(s, s1, start, end) {
-    var ret = findIndexOf(s, s1, start, end);
-    var i = 0;
-    var lgt = 1;
-    if (s1.length > 0) {
-        lgt = s1.length;
-    }
-    while (ret != -1) {
-        i++;
-        ret = findIndexOf(s, s1, ret + lgt, end);
-    }
-    return (i);
+import flash.net.*;
+public function localFlexTrace ( text:String ):void {
+    var myUrl:URLRequest = new URLRequest("javascript:console.log('" + text + "');void(0);");
+    sendToURL(myUrl);
 }
 
-function convertToString(stuff) {
-    if (stuff === undefined) {
-       return ("undefined");
-    }
-    return (stuff.toString());
-}    
-
-
 function __flash_main() {
 
+    localFlexTrace("Starting...");
 
-    var aaa = new Button();
-    aaa.label = "before consts";
-    addChild ( aaa );
-
-
-
-    py.__load_consts_flex()
-
-    aaa.label = "after consts";
-    flash_main(1)
-}
 
+    try {
+        py.__load_consts_flex()
+    } catch (exc) {
+        __consts_0.flexTrace("consts error");
+        __consts_0.flexTrace(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());
+        
+    }
+    __consts_0.flexTrace("Exit");
 
-public function flexTrace( text:String ):void {
-    var myUrl:URLRequest = new URLRequest("javascript:console.log('" + text + "');void(0);");
-    sendToURL(myUrl);
 }
 
-// wrapper for throw, because flex compiler weirdness.
-function throwit(e) {
-    throw(e);
-}
 
 
 // ends hand written code

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 Jul 14 18:04:34 2007
@@ -217,7 +217,7 @@
         # FIXME: just temporary hack
         generator.load(op.args[0])
         generator.ilasm.load_const(op.args[1].value._name.replace('.', '_'))#[-1])
-        generator.cast_function("isinstanceof", 2)
+        generator.cast_function("__consts_0.isinstanceof", 2)
 
 class _IndirectCall(MicroInstruction):
     def render(self, generator, op):
@@ -277,7 +277,7 @@
 IsInstance = _IsInstance()
 CallMethod = _CallMethod()
 CopyName = [PushAllArgs, _SameAs ()]
-CastString = _CastFun("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 Jul 14 18:04:34 2007
@@ -2,18 +2,7 @@
 from pypy.rpython.ootypesystem.bltregistry import BasicExternal, MethodDesc
 
 
-class Button( BasicExternal ):
-    
-    _fields = {
-        'label' : str,
-        '_x' : int,
-        '_y' : int,
-    }
-    _render_class = 'Button'
-
-def addChild(e):
+def flexTrace(s):
     pass
-
-register_external(addChild, args=[Button])
-#addChild._annspecialcase_ = 'specialize:argtype(0)'
+register_external(flexTrace, args=[str], export_name="__consts_0.flexTrace")
 

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 18:04:34 2007
@@ -1,14 +1,27 @@
 from pypy.translator.flex.modules.flex import *
 
+class Bar:
+    def __init__(self, arg):
+        self.arg = arg
+    def setValue(self, arg):
+        self.arg = arg
+
+    def value(self):
+        return self.arg        
+        
 class Foo:
-    def __init__(self, msg):
-        self.msg = msg
-    
+    def __init__(self, arg):
+        self.arg = Bar(arg)
+        
+    def setValue(self, arg):
+        self.arg = Bar(arg)
+    def value(self):
+        return self.arg.value()
+        
 def flash_main(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
-
+    flexTrace("Starting! python")
+    f = Bar("hola")
+    for x in range(20):
+        f.setValue( "doing number "+str(x)+"!!" )
+        flexTrace(f.value())
+    flexTrace("Im done!")

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 Jul 14 18:04:34 2007
@@ -17,7 +17,9 @@
 
 
 import py.*;
+import py.__consts_0;
 //import py.f.DictIter;
+
 
 
 // starts hand written code
@@ -33,429 +35,43 @@
     return this;
 };
 
-function inherits(child, parent) {
-    child.parent = parent;
-    for (var i in parent.prototype) {
-        if (!child.prototype[i]) {
-            child.prototype[i] = parent.prototype[i];
-        }
-    }
-}
-
-function isinstanceof(self, what) {
-
-    //return self instanceof what;
-
-
-    if (!self) {
-        return (false);
-    }
-    var t = self.constructor;
-    while ( t ) {
-        if (t == what) {
-            return (true);
-        }
-        t = t.parent;
-    }
-    return (false);
-}
-
-/*function delitem(fn, l, i) {
-    for(var j = i; j < l.length-1; ++j) {
-        l[j] = l[j+1];
-    }
-    l.length--;
-}*/
-
-function strcmp(s1, s2) {
-    if ( s1 < s2 ) {
-        return ( -1 );
-    } else if ( s1 == s2 ) {
-        return ( 0 );
-    }
-    return (1);
-}
-
-function startswith(s1, s2) {
-    if (s1.length < s2.length) {
-        return(false);
-    }
-    for (var i = 0; i < s2.length; ++i){
-        if (s1.charAt(i) != s2.charAt(i)) {
-            return(false);
-        }
-    }
-    return(true);
-}
-
-function endswith(s1, s2) {
-    if (s2.length > s1.length) {
-        return(false);
-    }
-    for (var i = s1.length-s2.length; i < s1.length; ++i) {
-        if (s1.charAt(i) != s2.charAt(i - s1.length + s2.length)) {
-            return(false);
-        }
-    }
-    return(true);
-}
-
-function splitchr(s, ch) {
-    var i, lst, next;
-    lst = [];
-    next = "";
-    for (var i = 0; i<s.length; ++i) {
-        if (s.charAt(i) == ch) {
-            lst.length += 1;
-            lst[lst.length-1] = next;
-            next = "";
-        } else {
-            next += s.charAt(i);
-        }
-    }
-    lst.length += 1;
-    lst[lst.length-1] = next;
-    return (lst);
-}
-
-
-function dict_items_iterator(d) {
-    var d2 = new DictIter();
-    //var d2 = {};
-    var l = [];
-    for (var i in d) {
-        l.length += 1;
-        l[l.length-1] = i;
-    }
-    d2.l = l;
-    d2.current_key = undefined;
-    return d2;
-}
-
-function get_dict_len(d) {
-    var count;
-    count = 0;
-    for (var i in d) {
-        count += 1;
-    }
-    return (count);
-}
-
-
-
-
 
-function time() {
-    var d;
-    d = new Date();
-    return d/1000;
-}
-
-var main_clock_stuff;
-
-function clock() {
-    if (main_clock_stuff) {
-        //return (new Date() - main_clock_stuff)/1000;
-        return 111;
-    } else {
-        main_clock_stuff = new Date();
-        return 0;
-    }
-}
-
-function substring(s, l, c) {
-    return (s.substring(l, l+c));
-}
-
-function clear_dict(d) {
-    for (var elem in d) {
-        delete(d[elem]);
-    }
-}
-
-function findIndexOf(s1, s2, start, end) {
-    if (start > end || start > s1.length) {
-        return -1;
-    }
-    s1 = s1.substr(start, end-start);
-    var res = s1.indexOf(s2);
-    if (res == -1) {
-        return -1;
-    }
-    return res + start;
-}
-
-function findIndexOfTrue(s1, s2) {
-    return findIndexOf(s1, s2, 0, s1.length) != -1;
-}
-
-function countCharOf(s, c, start, end) {
-    s = s.substring(start, end);
-    var i = 0;
-    for (var c1 in s) {
-        if (s[c1] == c) {
-            i++;
-        }
-    }
-    return(i);
-}
-
-function countOf(s, s1, start, end) {
-    var ret = findIndexOf(s, s1, start, end);
-    var i = 0;
-    var lgt = 1;
-    if (s1.length > 0) {
-        lgt = s1.length;
-    }
-    while (ret != -1) {
-        i++;
-        ret = findIndexOf(s, s1, ret + lgt, end);
-    }
-    return (i);
-}
-
-function convertToString(stuff) {
-    if (stuff === undefined) {
-       return ("undefined");
-    }
-    return (stuff.toString());
-}    
-
-
-function __flash_main() {
-
-
-    var aaa = new Button();
-    aaa.label = "before consts";
-    addChild ( aaa );
-
-
-
-    __load_consts_flex()
-
-    aaa.label = "after consts";
-    flash_main(1)
-}
-
-
-public function flexTrace( text:String ):void {
+import flash.net.*;
+public function localFlexTrace ( text:String ):void {
     var myUrl:URLRequest = new URLRequest("javascript:console.log('" + text + "');void(0);");
     sendToURL(myUrl);
 }
 
-// wrapper for throw, because flex compiler weirdness.
-function throwit(e) {
-    throw(e);
-}
-
-
-// ends hand written code
+function __flash_main() {
 
+    localFlexTrace("Starting...");
 
 
-function some_strange_function_which_will_never_be_called () {
-    var v1,v2;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v1 = 1;
-            v2 = flash_main ( v1 );
-            block = 1;
-            break;
-            case 1:
-            return ( undefined );
-        }
+    try {
+        py.__load_consts_flex()
+    } catch (exc) {
+        __consts_0.flexTrace("consts error");
+        __consts_0.flexTrace(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());
+        
     }
-}
+    __consts_0.flexTrace("Exit");
 
-function flash_main (a_0) {
-    var v3,v4,v5,a_1,v6,v7,last_exc_value_0,a_2,x_0,v8,v9,v10,v11,v14,v15;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v4 = ll_newrange__Record_start__Signed__stop__Si_Signed_Signed ( 0,20 );
-            v5 = ll_rangeiter__Record_stop__Signed__next__Sig_Record_start__Signed__stop__Si ( v4 );
-            a_1 = a_0;
-            v6 = v5;
-            block = 1;
-            break;
-            case 1:
-            try {
-                v7 = ll_rangenext_up__Record_stop__Signed__next__Sig_Signed ( v6,1 );
-                a_2 = a_1;
-                x_0 = v7;
-                v8 = v6;
-                block = 2;
-                break;
-            }
-            catch (exc){
-                if (isinstanceof(exc, exceptions_StopIteration))
-                {
-                    v14 = a_1;
-                    block = 3;
-                    break;
-                }
-                throwit(exc);
-            }
-            case 2:
-            v9 = new Button();
-            v10 = ll_int_str__IntegerR_SignedConst_Signed ( x_0 );
-            v11 = ll_strconcat__String_String ( __consts_0.const_str,v10 );
-            v9.label = v11;
-            addChild ( v9 );
-            a_1 = a_2;
-            v6 = v8;
-            block = 1;
-            break;
-            case 3:
-            v15 = (v14+1);
-            v3 = v15;
-            block = 4;
-            break;
-            case 4:
-            return ( v3 );
-        }
-    }
 }
 
-function ll_strconcat__String_String (obj_0,arg0_0) {
-    var v39,v40,v41;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v41 = (obj_0+arg0_0);
-            v39 = v41;
-            block = 1;
-            break;
-            case 1:
-            return ( v39 );
-        }
-    }
-}
 
-function ll_newrange__Record_start__Signed__stop__Si_Signed_Signed (start_0,stop_0) {
-    var v16,v17;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v17 = new Object();
-            v17.start = start_0;
-            v17.stop = stop_0;
-            v16 = v17;
-            block = 1;
-            break;
-            case 1:
-            return ( v16 );
-        }
-    }
-}
 
-function ll_rangeiter__Record_stop__Signed__next__Sig_Record_start__Signed__stop__Si (rng_0) {
-    var v20,v21,v22,v24;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v21 = new Object();
-            v22 = rng_0.start;
-            v21.next = v22;
-            v24 = rng_0.stop;
-            v21.stop = v24;
-            v20 = v21;
-            block = 1;
-            break;
-            case 1:
-            return ( v20 );
-        }
-    }
-}
+// ends hand written code
 
-function ll_int_str__IntegerR_SignedConst_Signed (i_0) {
-    var v37,v38;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v38 = ll_int2dec__Signed ( i_0 );
-            v37 = v38;
-            block = 1;
-            break;
-            case 1:
-            return ( v37 );
-        }
-    }
-}
 
-function ll_rangenext_up__Record_stop__Signed__next__Sig_Signed (iter_0,step_0) {
-    var v26,v27,v28,v29,v30,iter_1,next_0,v31,v32,v34,v35,v36,etype_0,evalue_0;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v27 = iter_0.next;
-            v28 = iter_0.stop;
-            v29 = (v27>=v28);
-            iter_1 = iter_0;
-            next_0 = v27;
-            v31 = step_0;
-            if (v29 == false)
-            {
-                block = 1;
-                break;
-            }
-            block = 3;
-            break;
-            case 1:
-            v32 = (next_0+v31);
-            iter_1.next = v32;
-            v26 = next_0;
-            block = 2;
-            break;
-            case 3:
-            v34 = __consts_0.exceptions_StopIteration;
-            v35 = v34.meta;
-            etype_0 = v35;
-            evalue_0 = v34;
-            block = 4;
-            break;
-            case 4:
-            throwit(evalue_0);
-            case 2:
-            return ( v26 );
-        }
-    }
-}
 
-function ll_int2dec__Signed (i_1) {
-    var v42,v43;
-    var block = 0;
-    for(;;){
-        switch(block){
-            case 0:
-            v43 = convertToString ( i_1 );
-            v42 = v43;
-            block = 1;
-            break;
-            case 1:
-            return ( v42 );
-        }
-    }
-}
-
-var __consts_0 = {}
-function __load_consts_flex() 
-{
-    __consts_0.exceptions_StopIteration__3 = exceptions_StopIteration;
-    __consts_0.exceptions_StopIteration_meta = new exceptions_StopIteration_meta();
-    __consts_0.exceptions_StopIteration = new exceptions_StopIteration();
-    __consts_0.const_str = "I'm button :";
-    __consts_0.exceptions_StopIteration_meta.class_ = __consts_0.exceptions_StopIteration__3;
-    __consts_0.exceptions_StopIteration.meta = __consts_0.exceptions_StopIteration_meta;
-}
 
         ]]>
     </mx:Script>



More information about the Pypy-commit mailing list