[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