[pypy-svn] r52185 - pypy/extradoc/talk/sfi2008/demo

arigo at codespeak.net arigo at codespeak.net
Wed Mar 5 11:32:00 CET 2008


Author: arigo
Date: Wed Mar  5 11:32:00 2008
New Revision: 52185

Added:
   pypy/extradoc/talk/sfi2008/demo/
   pypy/extradoc/talk/sfi2008/demo/rainbow-view-jit-graphs   (contents, props changed)
   pypy/extradoc/talk/sfi2008/demo/rpn.c   (contents, props changed)
   pypy/extradoc/talk/sfi2008/demo/rpn.j
   pypy/extradoc/talk/sfi2008/demo/rpn.js
   pypy/extradoc/talk/sfi2008/demo/rpn.py   (contents, props changed)
   pypy/extradoc/talk/sfi2008/demo/targetrpn.py   (contents, props changed)
   pypy/extradoc/talk/sfi2008/demo/view-jit-graphs   (contents, props changed)
Log:
* Add the rpn demo from the roadshow.
* Port some stuff to the jit-refactoring branch.


Added: pypy/extradoc/talk/sfi2008/demo/rainbow-view-jit-graphs
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/rainbow-view-jit-graphs	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,23 @@
+#! /usr/bin/env python
+
+import rpn
+from pypy.conftest import option
+option.view = True
+from pypy.rpython.module.support import LLSupport
+from pypy.jit.rainbow.test.test_portal import P_OOPSPEC, TestPortal
+
+TestPortal.setup_class.im_func(TestPortal)
+self = TestPortal()
+
+def main(example, arg):
+    if example == 1:
+        code = "24++3+"
+    elif example == 2:
+        code = "1+2+3+4+5+"
+    else:
+        raise ValueError
+
+    return rpn.interpret(code, arg)
+
+self.timeshift_from_portal(main, rpn.interpret,
+                           [1, 100], policy=P_OOPSPEC)

Added: pypy/extradoc/talk/sfi2008/demo/rpn.c
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/rpn.c	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,1926 @@
+/***********************************************************/
+/***  Implementations                                    ***/
+
+#define PYPY_NOT_MAIN_FILE
+#include "common_header.h"
+#include "structdef.h"
+#include "forwarddecl.h"
+
+#define HAVE_RTYPER
+typedef struct pypy_rpy_string0 RPyString;
+typedef struct pypy_list0 RPyListOfString;
+typedef struct pypy_tuple2_0 RPyFREXP_RESULT;
+typedef struct pypy_tuple2_1 RPyMODF_RESULT;
+typedef struct pypy_tuple10_0 RPySTAT_RESULT;
+typedef struct pypy_tuple2_2 RPyPIPE_RESULT;
+typedef struct pypy_tuple2_2 RPyWAITPID_RESULT;
+#define	_RPyListOfString_SetItem	pypy_g__RPyListOfString_SetItem__listPtr_Signed_rpy_str
+#define	_RPyListOfString_GetItem	pypy_g__RPyListOfString_GetItem__listPtr_Signed
+#define	RPyString_New	pypy_g_RPyString_New__Signed
+#define	_RPyListOfString_New	pypy_g__RPyListOfString_New__Signed
+#define	_RPyListOfString_Length	pypy_g__RPyListOfString_Length__listPtr
+typedef struct pypy_object_vtable0 *RPYTHON_EXCEPTION_VTABLE;
+typedef struct pypy_object0 *RPYTHON_EXCEPTION;
+#define	RPYTHON_EXCEPTION_MATCH	pypy_g_ll_issubclass__object_vtablePtr_object_vtablePtr
+#define	RPYTHON_TYPE_OF_EXC_INST	pypy_g_ll_type__objectPtr
+#define	RPYTHON_RAISE_OSERROR	pypy_g_ll_raise_OSError__Signed
+#define	_RPyExceptionOccurred	pypy_g__RPyExceptionOccurred
+#define	RPyExceptionOccurred1	pypy_g_RPyExceptionOccurred
+#define	RPyFetchExceptionType	pypy_g_RPyFetchExceptionType
+#define	RPyFetchExceptionValue	pypy_g_RPyFetchExceptionValue
+#define	RPyClearException	pypy_g_RPyClearException
+#define	RPyRaiseException	pypy_g_RPyRaiseException
+#define	RPyExc_KeyError	(&pypy_g_exceptions_KeyError.ke_super.le_super.se_super.e_super)
+#define	RPyExc_RuntimeError	(&pypy_g_exceptions_RuntimeError.re_super.se_super.e_super)
+#define	RPyExc_MemoryError	(&pypy_g_exceptions_MemoryError.me_super.se_super.e_super)
+#define	RPyExc_ZeroDivisionError	(&pypy_g_exceptions_ZeroDivisionError.zde_super.ae_super.se_super.e_super)
+#define	RPyExc_IOError	(&pypy_g_exceptions_IOError.ioe_super.ee_super.se_super.e_super)
+#define	RPyExc_StopIteration	(&pypy_g_exceptions_StopIteration.si_super.e_super)
+#define	RPyExc_OverflowError	(&pypy_g_exceptions_OverflowError.oe_super.ae_super.se_super.e_super)
+#define	RPyExc_TypeError	(&pypy_g_exceptions_TypeError.te_super.se_super.e_super)
+#define	RPyExc_OSError	(&pypy_g_exceptions_EnvironmentError.ee_super.se_super.e_super)
+#define	RPyExc_thread_error	(&pypy_g_object)
+#define	RPyExc_AssertionError	(&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super)
+#define	RPyExc_ValueError	(&pypy_g_exceptions_ValueError.ve_super.se_super.e_super)
+#define	RPyExc_IndexError	(&pypy_g_exceptions_IndexError.ie_super.le_super.se_super.e_super)
+
+#include "src/g_include.h"
+
+/*/*/
+long pypy_g_entry_point(struct pypy_list0 *l_argv_0) {
+	bool_t l_v12; bool_t l_v17; bool_t l_v20; bool_t l_v26; bool_t l_v28;
+	bool_t l_v30; bool_t l_v33; bool_t l_v36; bool_t l_v39; bool_t l_v42;
+	bool_t l_v5; bool_t l_v9; long l_v0; long l_v11; long l_v16;
+	long l_v19; long l_v2; long l_v43; long l_v4; long l_v8;
+	struct pypy_array0 *l_v14; struct pypy_array0 *l_v22;
+	struct pypy_object_vtable0 *l_v25; struct pypy_object_vtable0 *l_v27;
+	struct pypy_object_vtable0 *l_v29; struct pypy_object_vtable0 *l_v32;
+	struct pypy_object_vtable0 *l_v35; struct pypy_object_vtable0 *l_v38;
+	struct pypy_object_vtable0 *l_v41; struct pypy_rpy_string0 *l_v1;
+	struct pypy_rpy_string0 *l_v23; struct pypy_rpy_string0 *l_v3;
+
+    block0:
+	l_v4 = l_argv_0->l_length;
+	OP_INT_NE(l_v4, 3L, l_v5);
+	/* kept alive: l_argv_0 */ ;
+	if (l_v5) {
+		goto block7;
+	}
+	goto block1;
+
+    block1:
+	RPyAssert(1, "unexpectedly negative list getitem index");
+	l_v8 = l_argv_0->l_length;
+	OP_INT_LT(1L, l_v8, l_v9);
+	RPyAssert(l_v9, "list getitem index out of bound");
+	l_v11 = l_argv_0->l_length;
+	OP_INT_LT(1L, l_v11, l_v12);
+	RPyAssert(l_v12, "getitem out of bounds");
+	l_v14 = l_argv_0->l_items;
+	l_v3 = l_v14->items[1L];
+	RPyAssert(1, "unexpectedly negative list getitem index");
+	l_v16 = l_argv_0->l_length;
+	OP_INT_LT(2L, l_v16, l_v17);
+	RPyAssert(l_v17, "list getitem index out of bound");
+	l_v19 = l_argv_0->l_length;
+	OP_INT_LT(2L, l_v19, l_v20);
+	RPyAssert(l_v20, "getitem out of bounds");
+	l_v22 = l_argv_0->l_items;
+	l_v23 = l_v22->items[2L];
+	/* kept alive: l_argv_0 */ ;
+	l_v2 = pypy_g_ll_int__rpy_stringPtr_Signed(l_v23, 10L);
+	l_v25 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v26 = (l_v25 == NULL);
+	if (!l_v26) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	goto block2;
+
+    block2:
+	l_v0 = pypy_g_interpret(l_v3, l_v2);
+	l_v27 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v28 = (l_v27 == NULL);
+	if (!l_v28) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	goto block3;
+
+    block3:
+	l_v1 = pypy_g_ll_int2dec__Signed(l_v0);
+	l_v29 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v30 = (l_v29 == NULL);
+	if (!l_v30) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	goto block4;
+
+    block4:
+	pypy_g_rpython_print_item(l_v1);
+	l_v32 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v33 = (l_v32 == NULL);
+	if (!l_v33) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	goto block5;
+
+    block5:
+	pypy_g_rpython_print_newline();
+	l_v35 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v36 = (l_v35 == NULL);
+	if (!l_v36) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	l_v43 = 0L;
+	goto block6;
+
+    block6:
+	RPY_DEBUG_RETURN();
+	return l_v43;
+
+    block7:
+	pypy_g_rpython_print_item(((struct pypy_rpy_string0 *)(void*)(&pypy_g_rpy_string)));
+	l_v38 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v39 = (l_v38 == NULL);
+	if (!l_v39) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	goto block8;
+
+    block8:
+	pypy_g_rpython_print_newline();
+	l_v41 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v42 = (l_v41 == NULL);
+	if (!l_v42) {
+		l_v43 = -1L;
+		goto block6;
+	}
+	l_v43 = 2L;
+	goto block6;
+}
+/*/*/
+void pypy_g__RPyListOfString_SetItem__listPtr_Signed_rpy_str(struct pypy_list0 *l_l_0, long l_index_0, struct pypy_rpy_string0 *l_newstring_0) {
+
+    block0:
+	pypy_g_ll_setitem_nonneg__dum_nocheckConst_listPtr_Sign(l_l_0, l_index_0, l_newstring_0);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+}
+/*/*/
+struct pypy_rpy_string0 *pypy_g__RPyListOfString_GetItem__listPtr_Signed(struct pypy_list0 *l_l_1, long l_index_1) {
+	struct pypy_rpy_string0 *l_v46;
+
+    block0:
+	l_v46 = pypy_g_ll_getitem_fast__listPtr_Signed(l_l_1, l_index_1);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v46;
+}
+/*/*/
+struct pypy_rpy_string0 *pypy_g_RPyString_New__Signed(long l_length_0) {
+	struct pypy_rpy_string0 *l_v47;
+
+    block0:
+	l_v47 = pypy_g_mallocstr__Signed(l_length_0);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v47;
+}
+/*/*/
+struct pypy_list0 *pypy_g__RPyListOfString_New__Signed(long l_length_1) {
+	struct pypy_list0 *l_v48;
+
+    block0:
+	l_v48 = pypy_g_ll_newlist__GcStruct_listLlT_Signed(l_length_1);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v48;
+}
+/*/*/
+long pypy_g__RPyListOfString_Length__listPtr(struct pypy_list0 *l_l_2) {
+	long l_v49;
+
+    block0:
+	l_v49 = pypy_g_ll_length__listPtr(l_l_2);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v49;
+}
+/*/*/
+bool_t pypy_g_ll_issubclass__object_vtablePtr_object_vtablePtr(struct pypy_object_vtable0 *l_subcls_0, struct pypy_object_vtable0 *l_cls_0) {
+	bool_t l_v52; bool_t l_v54; bool_t l_v55; long l_v50; long l_v51;
+	long l_v53;
+
+    block0:
+	l_v51 = l_cls_0->ov_subclassrange_min;
+	l_v50 = l_subcls_0->ov_subclassrange_min;
+	OP_INT_LE(l_v51, l_v50, l_v52);
+	if (l_v52) {
+		goto block2;
+	}
+	l_v55 = l_v52;
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v55;
+
+    block2:
+	l_v53 = l_cls_0->ov_subclassrange_max;
+	OP_INT_LE(l_v50, l_v53, l_v54);
+	l_v55 = l_v54;
+	goto block1;
+}
+/*/*/
+struct pypy_object_vtable0 *pypy_g_ll_type__objectPtr(struct pypy_object0 *l_obj_0) {
+	struct pypy_object0 *l_v57; struct pypy_object_vtable0 *l_v56;
+
+    block0:
+	l_v57 = (struct pypy_object0 *)l_obj_0;
+	l_v56 = l_v57->o_typeptr;
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v56;
+}
+/*/*/
+void pypy_g_ll_raise_OSError__Signed(long l_errno_0) {
+	bool_t l_v60; struct pypy_exceptions_OSError0 *l_v58;
+	struct pypy_object0 *l_v61; struct pypy_object_vtable0 *l_v64;
+	void* l_v59;
+
+    block0:
+	l_v59 = pypy_g_ll_malloc_fixedsize_atomic__Signed_funcPtr((sizeof(struct pypy_exceptions_OSError0) * 1), ((void (*)(void*)) NULL));
+	l_v58 = (struct pypy_exceptions_OSError0 *)l_v59;
+	l_v60 = (l_v58 != NULL);
+	if (!l_v60) {
+		goto block2;
+	}
+	goto block1;
+
+    block1:
+	l_v61 = (struct pypy_object0 *)l_v58;
+	l_v61->o_typeptr = (&pypy_g_exceptions_OSError_vtable.ose_super.ee_super.se_super.e_super);
+	l_v58->ose_inst_errno = l_errno_0;
+	l_v64 = l_v61->o_typeptr;
+	pypy_g_RPyRaiseException(l_v64, l_v61);
+	goto block2;
+
+    block2:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+}
+/*/*/
+long pypy_g__RPyExceptionOccurred(void) {
+	bool_t l_v69; long l_v67; struct pypy_object_vtable0 *l_v68;
+
+    block0:
+	l_v68 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v69 = (l_v68 != NULL);
+	OP_CAST_BOOL_TO_INT(l_v69, l_v67);
+	goto block1;
+
+    block1:
+	return l_v67;
+}
+/*/*/
+bool_t pypy_g_RPyExceptionOccurred(void) {
+	bool_t l_v70; struct pypy_object_vtable0 *l_v71;
+
+    block0:
+	l_v71 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v70 = (l_v71 != NULL);
+	goto block1;
+
+    block1:
+	return l_v70;
+}
+/*/*/
+struct pypy_object_vtable0 *pypy_g_RPyFetchExceptionType(void) {
+	struct pypy_object_vtable0 *l_v72;
+
+    block0:
+	l_v72 = (&pypy_g_ExcData)->ed_exc_type;
+	goto block1;
+
+    block1:
+	return l_v72;
+}
+/*/*/
+struct pypy_object0 *pypy_g_RPyFetchExceptionValue(void) {
+	struct pypy_object0 *l_v73;
+
+    block0:
+	l_v73 = (&pypy_g_ExcData)->ed_exc_value;
+	goto block1;
+
+    block1:
+	return l_v73;
+}
+/*/*/
+void pypy_g_RPyClearException(void) {
+
+    block0:
+	(&pypy_g_ExcData)->ed_exc_type = ((struct pypy_object_vtable0 *) NULL);
+	(&pypy_g_ExcData)->ed_exc_value = ((struct pypy_object0 *) NULL);
+	goto block1;
+
+    block1:
+	return /* nothing */;
+}
+/*/*/
+void pypy_g_RPyRaiseException(struct pypy_object_vtable0 *l_etype_0, struct pypy_object0 *l_evalue_0) {
+
+    block0:
+	(&pypy_g_ExcData)->ed_exc_type = l_etype_0;
+	(&pypy_g_ExcData)->ed_exc_value = l_evalue_0;
+	goto block1;
+
+    block1:
+	return /* nothing */;
+}
+/*/*/
+long pypy_g_ll_int__rpy_stringPtr_Signed(struct pypy_rpy_string0 *l_s_2, long l_base_1) {
+	long l_c_0; struct pypy_array1 *l_chars_0; long l_digit_0;
+	struct pypy_object_vtable0 *l_etype_1;
+	struct pypy_object0 *l_evalue_1; long l_i_1; long l_i_2; long l_i_3;
+	long l_oldpos_0; long l_sign_0; long l_strlen_0; bool_t l_v100;
+	bool_t l_v101; bool_t l_v102; bool_t l_v104; bool_t l_v108;
+	bool_t l_v111; bool_t l_v115; bool_t l_v120; bool_t l_v80;
+	bool_t l_v82; bool_t l_v83; bool_t l_v84; bool_t l_v86; bool_t l_v88;
+	bool_t l_v89; bool_t l_v90; bool_t l_v91; bool_t l_v92; bool_t l_v93;
+	bool_t l_v96; bool_t l_v99; char l_v114; char l_v119; char l_v85;
+	char l_v87; char l_v95; char l_v98; long l_v103; long l_v105;
+	long l_v106; long l_v107; long l_v109; long l_v110; long l_v112;
+	long l_v113; long l_v116; long l_v117; long l_v118; long l_v121;
+	long l_v122; long l_v94; long l_v97; long l_val_0;
+
+    block0:
+	OP_INT_LE(2L, l_base_1, l_v80);
+	if (l_v80) {
+		goto block3;
+	}
+	l_etype_1 = (&pypy_g_exceptions_ValueError_vtable.ve_super.se_super.e_super);
+	l_evalue_1 = (&pypy_g_exceptions_ValueError.ve_super.se_super.e_super);
+	goto block1;
+
+    block1:
+	pypy_g_RPyRaiseException(l_etype_1, l_evalue_1);
+	l_v122 = -1L;
+	goto block2;
+
+    block2:
+	RPY_DEBUG_RETURN();
+	return l_v122;
+
+    block3:
+	OP_INT_LE(l_base_1, 36L, l_v82);
+	if (l_v82) {
+		goto block4;
+	}
+	l_etype_1 = (&pypy_g_exceptions_ValueError_vtable.ve_super.se_super.e_super);
+	l_evalue_1 = (&pypy_g_exceptions_ValueError.ve_super.se_super.e_super);
+	goto block1;
+
+    block4:
+	l_chars_0 = &l_s_2->rs_chars;
+	l_strlen_0 = l_chars_0->length;
+	l_i_1 = 0L;
+	goto block5;
+
+    block5:
+	OP_INT_LT(l_i_1, l_strlen_0, l_v83);
+	if (l_v83) {
+		goto block32;
+	}
+	goto block6;
+
+    block6:
+	OP_INT_LT(l_i_1, l_strlen_0, l_v84);
+	if (l_v84) {
+		goto block7;
+	}
+	l_etype_1 = (&pypy_g_exceptions_ValueError_vtable.ve_super.se_super.e_super);
+	l_evalue_1 = (&pypy_g_exceptions_ValueError.ve_super.se_super.e_super);
+	goto block1;
+
+    block7:
+	l_v85 = l_chars_0->items[l_i_1];
+	OP_CHAR_EQ(l_v85, '-', l_v86);
+	if (l_v86) {
+		goto block31;
+	}
+	goto block8;
+
+    block8:
+	l_v87 = l_chars_0->items[l_i_1];
+	OP_CHAR_EQ(l_v87, '+', l_v88);
+	if (l_v88) {
+		goto block30;
+	}
+	l_sign_0 = 1L;
+	l_oldpos_0 = l_i_1;
+	goto block9;
+
+    block9:
+	OP_INT_LT(l_oldpos_0, l_strlen_0, l_v89);
+	if (l_v89) {
+		goto block28;
+	}
+	l_val_0 = 0L;
+	l_i_2 = l_oldpos_0;
+	goto block10;
+
+    block10:
+	OP_INT_LT(l_i_2, l_strlen_0, l_v90);
+	if (l_v90) {
+		goto block17;
+	}
+	goto block11;
+
+    block11:
+	OP_INT_EQ(l_i_2, l_oldpos_0, l_v91);
+	if (l_v91) {
+		l_etype_1 = (&pypy_g_exceptions_ValueError_vtable.ve_super.se_super.e_super);
+		l_evalue_1 = (&pypy_g_exceptions_ValueError.ve_super.se_super.e_super);
+		goto block1;
+	}
+	l_i_3 = l_i_2;
+	goto block12;
+
+    block12:
+	OP_INT_LT(l_i_3, l_strlen_0, l_v92);
+	if (l_v92) {
+		goto block15;
+	}
+	goto block13;
+
+    block13:
+	OP_INT_EQ(l_i_3, l_strlen_0, l_v93);
+	if (l_v93) {
+		goto block14;
+	}
+	l_etype_1 = (&pypy_g_exceptions_ValueError_vtable.ve_super.se_super.e_super);
+	l_evalue_1 = (&pypy_g_exceptions_ValueError.ve_super.se_super.e_super);
+	goto block1;
+
+    block14:
+	OP_INT_MUL(l_sign_0, l_val_0, l_v94);
+	l_v122 = l_v94;
+	goto block2;
+
+    block15:
+	l_v95 = l_chars_0->items[l_i_3];
+	OP_CHAR_EQ(l_v95, ' ', l_v96);
+	if (l_v96) {
+		goto block16;
+	}
+	goto block13;
+
+    block16:
+	OP_INT_ADD(l_i_3, 1L, l_v97);
+	l_i_3 = l_v97;
+	goto block12;
+
+    block17:
+	l_v98 = l_chars_0->items[l_i_2];
+	OP_CAST_CHAR_TO_INT(l_v98, l_c_0);
+	OP_INT_LE(97L, l_c_0, l_v99);
+	if (l_v99) {
+		goto block26;
+	}
+	goto block18;
+
+    block18:
+	OP_INT_LE(65L, l_c_0, l_v100);
+	if (l_v100) {
+		goto block24;
+	}
+	goto block19;
+
+    block19:
+	OP_INT_LE(48L, l_c_0, l_v101);
+	if (l_v101) {
+		goto block20;
+	}
+	goto block11;
+
+    block20:
+	OP_INT_LE(l_c_0, 57L, l_v102);
+	if (l_v102) {
+		goto block21;
+	}
+	goto block11;
+
+    block21:
+	OP_INT_SUB(l_c_0, 48L, l_v103);
+	l_digit_0 = l_v103;
+	goto block22;
+
+    block22:
+	OP_INT_GE(l_digit_0, l_base_1, l_v104);
+	if (l_v104) {
+		goto block11;
+	}
+	goto block23;
+
+    block23:
+	OP_INT_MUL(l_val_0, l_base_1, l_v105);
+	OP_INT_ADD(l_v105, l_digit_0, l_v106);
+	OP_INT_ADD(l_i_2, 1L, l_v107);
+	l_val_0 = l_v106;
+	l_i_2 = l_v107;
+	goto block10;
+
+    block24:
+	OP_INT_LE(l_c_0, 90L, l_v108);
+	if (l_v108) {
+		goto block25;
+	}
+	goto block19;
+
+    block25:
+	OP_INT_SUB(l_c_0, 65L, l_v109);
+	OP_INT_ADD(l_v109, 10L, l_v110);
+	l_digit_0 = l_v110;
+	goto block22;
+
+    block26:
+	OP_INT_LE(l_c_0, 122L, l_v111);
+	if (l_v111) {
+		goto block27;
+	}
+	goto block18;
+
+    block27:
+	OP_INT_SUB(l_c_0, 97L, l_v112);
+	OP_INT_ADD(l_v112, 10L, l_v113);
+	l_digit_0 = l_v113;
+	goto block22;
+
+    block28:
+	l_v114 = l_chars_0->items[l_oldpos_0];
+	OP_CHAR_EQ(l_v114, ' ', l_v115);
+	if (l_v115) {
+		goto block29;
+	}
+	l_val_0 = 0L;
+	l_i_2 = l_oldpos_0;
+	goto block10;
+
+    block29:
+	OP_INT_ADD(l_oldpos_0, 1L, l_v116);
+	l_oldpos_0 = l_v116;
+	goto block9;
+
+    block30:
+	OP_INT_ADD(l_i_1, 1L, l_v117);
+	l_sign_0 = 1L;
+	l_oldpos_0 = l_v117;
+	goto block9;
+
+    block31:
+	OP_INT_ADD(l_i_1, 1L, l_v118);
+	l_sign_0 = -1L;
+	l_oldpos_0 = l_v118;
+	goto block9;
+
+    block32:
+	l_v119 = l_chars_0->items[l_i_1];
+	OP_CHAR_EQ(l_v119, ' ', l_v120);
+	if (l_v120) {
+		goto block33;
+	}
+	goto block6;
+
+    block33:
+	OP_INT_ADD(l_i_1, 1L, l_v121);
+	l_i_1 = l_v121;
+	goto block5;
+}
+/*/*/
+long pypy_g_interpret(struct pypy_rpy_string0 *l_v123, long l_arg_0) {
+	char l_c_1; struct pypy_rpn_State0 *l_state_0; bool_t l_v137;
+	bool_t l_v142; bool_t l_v145; bool_t l_v152; bool_t l_v155;
+	bool_t l_v157; bool_t l_v165; bool_t l_v167; bool_t l_v169;
+	bool_t l_v172; bool_t l_v173; bool_t l_v177; bool_t l_v181;
+	bool_t l_v183; bool_t l_v194; bool_t l_v196; bool_t l_v199;
+	long l_v124; long l_v126; long l_v129; long l_v130; long l_v131;
+	long l_v132; long l_v133; long l_v151; long l_v156; long l_v164;
+	long l_v174; long l_v176; long l_v182; long l_v191; long l_v193;
+	long l_v198; long l_v202; long l_v206; struct pypy_array1 *l_v127;
+	struct pypy_array3 *l_v135; struct pypy_array3 *l_v150;
+	struct pypy_array3 *l_v159; struct pypy_array3 *l_v175;
+	struct pypy_array3 *l_v185; struct pypy_array3 *l_v201;
+	struct pypy_list1 *l_v125; struct pypy_list1 *l_v128;
+	struct pypy_list1 *l_v134; struct pypy_list1 *l_v190;
+	struct pypy_object0 *l_v138; struct pypy_object_vtable0 *l_v154;
+	struct pypy_object_vtable0 *l_v171;
+	struct pypy_object_vtable0 *l_v180; void* l_v136; void* l_v141;
+	void* l_v144;
+
+    block0:
+	l_v136 = pypy_g_ll_malloc_fixedsize__Signed_funcPtr((sizeof(struct pypy_rpn_State0) * 1), ((void (*)(void*)) NULL));
+	l_state_0 = (struct pypy_rpn_State0 *)l_v136;
+	l_v137 = (l_state_0 != NULL);
+	if (!l_v137) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	goto block1;
+
+    block1:
+	l_v138 = (struct pypy_object0 *)l_state_0;
+	l_v138->o_typeptr = (&pypy_g_rpn_State_vtable.s_super);
+	RPyAssert(1, "negative list length");
+	l_v141 = pypy_g_ll_malloc_fixedsize__Signed_funcPtr((sizeof(struct pypy_list1) * 1), ((void (*)(void*)) NULL));
+	l_v134 = (struct pypy_list1 *)l_v141;
+	l_v142 = (l_v134 != NULL);
+	if (!l_v142) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	goto block2;
+
+    block2:
+	l_v134->l_length = 0L;
+	l_v144 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(0L, (offsetof(struct pypy_array3, items) + (sizeof(long) * 0)), (sizeof(long) * 1), offsetof(struct pypy_array3, length));
+	l_v135 = (struct pypy_array3 *)l_v144;
+	l_v145 = (l_v135 != NULL);
+	if (!l_v145) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	goto block3;
+
+    block3:
+	l_v134->l_items = l_v135;
+	l_state_0->s_inst_stack = l_v134;
+	/* kept alive: l_state_0 */ ;
+	l_v125 = l_state_0->s_inst_stack;
+	l_v131 = l_v125->l_length;
+	/* kept alive: l_v125 */ ;
+	OP_INT_ADD(l_v131, 1L, l_v132);
+	l_v150 = l_v125->l_items;
+	l_v151 = l_v150->length;
+	OP_INT_GE(l_v151, l_v132, l_v152);
+	if (l_v152) {
+		goto block17;
+	}
+	goto block4;
+
+    block4:
+	pypy_g__ll_list_resize_really__listPtr_Signed(l_v125, l_v132);
+	l_v154 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v155 = (l_v154 == NULL);
+	if (!l_v155) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	goto block5;
+
+    block5:
+	l_v156 = l_v125->l_length;
+	OP_INT_LT(l_v131, l_v156, l_v157);
+	RPyAssert(l_v157, "setitem out of bounds");
+	l_v159 = l_v125->l_items;
+	l_v159->items[l_v131] = l_arg_0;
+	/* kept alive: l_v125 */ ;
+	/* kept alive: l_state_0 */ ;
+	/* kept alive: l_v123 */ ;
+	l_v133 = 0L;
+	goto block6;
+
+    block6:
+	l_v127 = &l_v123->rs_chars;
+	l_v164 = l_v127->length;
+	OP_INT_GE(l_v133, l_v164, l_v165);
+	/* kept alive: l_v123 */ ;
+	if (l_v165) {
+		goto block16;
+	}
+	goto block7;
+
+    block7:
+	OP_INT_ADD(l_v133, 1L, l_v129);
+	l_c_1 = l_v127->items[l_v133];
+	OP_CHAR_LE('0', l_c_1, l_v167);
+	/* kept alive: l_v123 */ ;
+	if (l_v167) {
+		goto block11;
+	}
+	goto block8;
+
+    block8:
+	OP_CHAR_EQ(l_c_1, '+', l_v169);
+	if (l_v169) {
+		goto block9;
+	}
+	l_v133 = l_v129;
+	goto block6;
+
+    block9:
+	pypy_g_State_add(l_state_0);
+	l_v171 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v172 = (l_v171 == NULL);
+	if (!l_v172) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	l_v133 = l_v129;
+	goto block6;
+
+    block10:
+	RPY_DEBUG_RETURN();
+	return l_v206;
+
+    block11:
+	OP_CHAR_LE(l_c_1, '9', l_v173);
+	if (l_v173) {
+		goto block12;
+	}
+	goto block8;
+
+    block12:
+	OP_CAST_CHAR_TO_INT(l_c_1, l_v174);
+	OP_INT_SUB(l_v174, 48L, l_v124);
+	l_v128 = l_state_0->s_inst_stack;
+	l_v126 = l_v128->l_length;
+	OP_INT_ADD(l_v126, 1L, l_v130);
+	l_v175 = l_v128->l_items;
+	l_v176 = l_v175->length;
+	OP_INT_GE(l_v176, l_v130, l_v177);
+	/* kept alive: l_v128 */ ;
+	if (l_v177) {
+		goto block15;
+	}
+	goto block13;
+
+    block13:
+	pypy_g__ll_list_resize_really__listPtr_Signed(l_v128, l_v130);
+	l_v180 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v181 = (l_v180 == NULL);
+	if (!l_v181) {
+		l_v206 = -1L;
+		goto block10;
+	}
+	goto block14;
+
+    block14:
+	l_v182 = l_v128->l_length;
+	OP_INT_LT(l_v126, l_v182, l_v183);
+	RPyAssert(l_v183, "setitem out of bounds");
+	l_v185 = l_v128->l_items;
+	l_v185->items[l_v126] = l_v124;
+	/* kept alive: l_v128 */ ;
+	/* kept alive: l_state_0 */ ;
+	l_v133 = l_v129;
+	goto block6;
+
+    block15:
+	l_v128->l_length = l_v130;
+	goto block14;
+
+    block16:
+	l_v190 = l_state_0->s_inst_stack;
+	l_v191 = l_v190->l_length;
+	/* kept alive: l_v123 */ ;
+	OP_INT_ADD(-1L, l_v191, l_v193);
+	OP_INT_GE(l_v193, 0L, l_v194);
+	RPyAssert(l_v194, "negative list getitem index out of bound");
+	OP_INT_LT(l_v193, l_v191, l_v196);
+	RPyAssert(l_v196, "list getitem index out of bound");
+	l_v198 = l_v190->l_length;
+	OP_INT_LT(l_v193, l_v198, l_v199);
+	RPyAssert(l_v199, "getitem out of bounds");
+	l_v201 = l_v190->l_items;
+	l_v202 = l_v201->items[l_v193];
+	/* kept alive: l_v190 */ ;
+	/* kept alive: l_state_0 */ ;
+	l_v206 = l_v202;
+	goto block10;
+
+    block17:
+	l_v125->l_length = l_v132;
+	goto block5;
+}
+/*/*/
+struct pypy_rpy_string0 *pypy_g_ll_int2dec__Signed(long l_i_0) {
+	unsigned long l_i_4; unsigned long l_i_5; long l_j_0; long l_len_0;
+	long l_sign_1; bool_t l_v211; bool_t l_v212; bool_t l_v214;
+	bool_t l_v215; bool_t l_v216; bool_t l_v219; bool_t l_v220;
+	bool_t l_v223; bool_t l_v224; char l_v227; char l_v236; long l_v209;
+	long l_v225; long l_v226; long l_v230; long l_v235; long l_v239;
+	long l_v241; long l_v244; struct pypy_array1 *l_v228;
+	struct pypy_array1 *l_v231; struct pypy_array4 *l_v207;
+	struct pypy_rpy_string0 *l_v208; struct pypy_rpy_string0 *l_v243;
+	unsigned long l_v213; unsigned long l_v233; unsigned long l_v234;
+	unsigned long l_v238; unsigned long l_v242; void* l_v210;
+	void* l_v218;
+
+    block0:
+	l_v210 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(20L, (offsetof(struct pypy_array4, items) + (sizeof(char) * 0)), (sizeof(char) * 1), offsetof(struct pypy_array4, length));
+	l_v207 = (struct pypy_array4 *)l_v210;
+	l_v211 = (l_v207 != NULL);
+	if (!l_v211) {
+		l_v243 = ((struct pypy_rpy_string0 *) NULL);
+		goto block10;
+	}
+	goto block1;
+
+    block1:
+	OP_INT_LT(l_i_0, 0L, l_v212);
+	if (l_v212) {
+		goto block15;
+	}
+	goto block2;
+
+    block2:
+	OP_CAST_INT_TO_UINT(l_i_0, l_v213);
+	l_sign_1 = 0L;
+	l_i_5 = l_v213;
+	goto block3;
+
+    block3:
+	OP_UINT_EQ(l_i_5, 0UL, l_v214);
+	if (l_v214) {
+		goto block14;
+	}
+	l_len_0 = 0L;
+	l_i_4 = l_i_5;
+	goto block4;
+
+    block4:
+	OP_UINT_IS_TRUE(l_i_4, l_v215);
+	if (l_v215) {
+		goto block13;
+	}
+	l_v244 = l_len_0;
+	goto block5;
+
+    block5:
+	OP_INT_ADD(l_v244, l_sign_1, l_v209);
+	OP_INT_GE(l_v209, 0L, l_v216);
+	RPyAssert(l_v216, "negative string length");
+	l_v218 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_v209, (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, items) + (sizeof(char) * 1)), (sizeof(char) * 1), (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, length)));
+	l_v208 = (struct pypy_rpy_string0 *)l_v218;
+	l_v219 = (l_v208 != NULL);
+	if (!l_v219) {
+		l_v243 = ((struct pypy_rpy_string0 *) NULL);
+		goto block10;
+	}
+	goto block6;
+
+    block6:
+	OP_INT_IS_TRUE(MALLOC_ZERO_FILLED, l_v220);
+	if (l_v220) {
+		goto block8;
+	}
+	goto block7;
+
+    block7:
+	l_v208->rs_hash = 0L;
+	goto block8;
+
+    block8:
+	l_v208->rs_hash = 0L;
+	OP_INT_IS_TRUE(l_sign_1, l_v223);
+	if (l_v223) {
+		goto block12;
+	}
+	l_j_0 = 0L;
+	goto block9;
+
+    block9:
+	OP_INT_LT(l_j_0, l_v209, l_v224);
+	if (l_v224) {
+		goto block11;
+	}
+	l_v243 = l_v208;
+	goto block10;
+
+    block10:
+	RPY_DEBUG_RETURN();
+	return l_v243;
+
+    block11:
+	OP_INT_SUB(l_v209, l_j_0, l_v225);
+	OP_INT_SUB(l_v225, 1L, l_v226);
+	l_v227 = l_v207->items[l_v226];
+	l_v228 = &l_v208->rs_chars;
+	l_v228->items[l_j_0] = l_v227;
+	OP_INT_ADD(l_j_0, 1L, l_v230);
+	l_j_0 = l_v230;
+	goto block9;
+
+    block12:
+	l_v231 = &l_v208->rs_chars;
+	l_v231->items[0L] = '-';
+	l_j_0 = 1L;
+	goto block9;
+
+    block13:
+	OP_UINT_MOD(l_i_4, 10UL, l_v233);
+	OP_UINT_ADD(l_v233, 48UL, l_v234);
+	OP_CAST_UINT_TO_INT(l_v234, l_v235);
+	OP_CAST_INT_TO_CHAR(l_v235, l_v236);
+	l_v207->items[l_len_0] = l_v236;
+	OP_UINT_FLOORDIV(l_i_4, 10UL, l_v238);
+	OP_INT_ADD(l_len_0, 1L, l_v239);
+	l_len_0 = l_v239;
+	l_i_4 = l_v238;
+	goto block4;
+
+    block14:
+	l_v207->items[0L] = '0';
+	l_v244 = 1L;
+	goto block5;
+
+    block15:
+	OP_INT_NEG(l_i_0, l_v241);
+	OP_CAST_INT_TO_UINT(l_v241, l_v242);
+	l_sign_1 = 1L;
+	l_i_5 = l_v242;
+	goto block3;
+}
+/*/*/
+void pypy_g_rpython_print_item(struct pypy_rpy_string0 *l_v247) {
+	bool_t l_v256; bool_t l_v260; bool_t l_v265; bool_t l_v267;
+	bool_t l_v275; bool_t l_v280; bool_t l_v282; char l_v245;
+	long l_v246; long l_v248; long l_v249; long l_v251; long l_v252;
+	long l_v253; long l_v255; long l_v259; long l_v266; long l_v274;
+	long l_v281; struct pypy_array1 *l_v250; struct pypy_array5 *l_v258;
+	struct pypy_array5 *l_v269; struct pypy_array5 *l_v273;
+	struct pypy_array5 *l_v284; struct pypy_object_vtable0 *l_v264;
+	struct pypy_object_vtable0 *l_v279;
+
+    block0:
+	/* kept alive: l_v247 */ ;
+	l_v251 = 0L;
+	goto block1;
+
+    block1:
+	l_v250 = &l_v247->rs_chars;
+	l_v255 = l_v250->length;
+	OP_INT_GE(l_v251, l_v255, l_v256);
+	/* kept alive: l_v247 */ ;
+	if (l_v256) {
+		goto block7;
+	}
+	goto block2;
+
+    block2:
+	OP_INT_ADD(l_v251, 1L, l_v246);
+	l_v245 = l_v250->items[l_v251];
+	l_v248 = (&pypy_g_list)->l_length;
+	OP_INT_ADD(l_v248, 1L, l_v252);
+	l_v258 = (&pypy_g_list)->l_items;
+	l_v259 = l_v258->length;
+	OP_INT_GE(l_v259, l_v252, l_v260);
+	/* kept alive: l_v247 */ ;
+	/* kept alive: (&pypy_g_list) */ ;
+	if (l_v260) {
+		goto block6;
+	}
+	goto block3;
+
+    block3:
+	pypy_g__ll_list_resize_really__listPtr_Signed_1((&pypy_g_list), l_v252);
+	l_v264 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v265 = (l_v264 == NULL);
+	if (!l_v265) {
+		goto block5;
+	}
+	goto block4;
+
+    block4:
+	l_v266 = (&pypy_g_list)->l_length;
+	OP_INT_LT(l_v248, l_v266, l_v267);
+	RPyAssert(l_v267, "setitem out of bounds");
+	l_v269 = (&pypy_g_list)->l_items;
+	l_v269->items[l_v248] = l_v245;
+	/* kept alive: (&pypy_g_list) */ ;
+	l_v251 = l_v246;
+	goto block1;
+
+    block5:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+
+    block6:
+	(&pypy_g_list)->l_length = l_v252;
+	goto block4;
+
+    block7:
+	l_v249 = (&pypy_g_list)->l_length;
+	OP_INT_ADD(l_v249, 1L, l_v253);
+	l_v273 = (&pypy_g_list)->l_items;
+	l_v274 = l_v273->length;
+	OP_INT_GE(l_v274, l_v253, l_v275);
+	/* kept alive: l_v247 */ ;
+	/* kept alive: (&pypy_g_list) */ ;
+	if (l_v275) {
+		goto block10;
+	}
+	goto block8;
+
+    block8:
+	pypy_g__ll_list_resize_really__listPtr_Signed_1((&pypy_g_list), l_v253);
+	l_v279 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v280 = (l_v279 == NULL);
+	if (!l_v280) {
+		goto block5;
+	}
+	goto block9;
+
+    block9:
+	l_v281 = (&pypy_g_list)->l_length;
+	OP_INT_LT(l_v249, l_v281, l_v282);
+	RPyAssert(l_v282, "setitem out of bounds");
+	l_v284 = (&pypy_g_list)->l_items;
+	l_v284->items[l_v249] = ' ';
+	/* kept alive: (&pypy_g_list) */ ;
+	goto block5;
+
+    block10:
+	(&pypy_g_list)->l_length = l_v253;
+	goto block9;
+}
+/*/*/
+void pypy_g_rpython_print_newline(void) {
+	long l_i_6; struct pypy_array1 *l_res_chars_0; bool_t l_v293;
+	bool_t l_v297; bool_t l_v299; bool_t l_v302; bool_t l_v307;
+	bool_t l_v310; bool_t l_v311; bool_t l_v313; bool_t l_v318;
+	bool_t l_v324; bool_t l_v327; char l_v329; long l_v291; long l_v292;
+	long l_v294; long l_v295; long l_v296; long l_v301; long l_v316;
+	long l_v321; long l_v322; long l_v323; long l_v331;
+	struct pypy_array5 *l_v289; struct pypy_array5 *l_v304;
+	struct pypy_array5 *l_v320; struct pypy_object_vtable0 *l_v326;
+	struct pypy_rpy_string0 *l_v290; struct pypy_rpy_string0 *l_v333;
+	void* l_v309;
+
+    block0:
+	l_v292 = (&pypy_g_list)->l_length;
+	OP_INT_NE(l_v292, 0L, l_v293);
+	if (l_v293) {
+		goto block3;
+	}
+	l_v333 = (&pypy_g_rpy_string_1);
+	goto block1;
+
+    block1:
+	l_v294 = pypy_g_os_write_lltypeimpl(1L, l_v333);
+	goto block2;
+
+    block2:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+
+    block3:
+	l_v295 = (&pypy_g_list)->l_length;
+	OP_INT_ADD(-1L, l_v295, l_v296);
+	OP_INT_GE(l_v296, 0L, l_v297);
+	RPyAssert(l_v297, "negative list setitem index out of bound");
+	OP_INT_LT(l_v296, l_v295, l_v299);
+	RPyAssert(l_v299, "list setitem index out of bound");
+	l_v301 = (&pypy_g_list)->l_length;
+	OP_INT_LT(l_v296, l_v301, l_v302);
+	RPyAssert(l_v302, "setitem out of bounds");
+	l_v304 = (&pypy_g_list)->l_items;
+	l_v304->items[l_v296] = 10;
+	/* kept alive: (&pypy_g_list) */ ;
+	l_v291 = (&pypy_g_list)->l_length;
+	l_v289 = (&pypy_g_list)->l_items;
+	OP_INT_GE(l_v291, 0L, l_v307);
+	RPyAssert(l_v307, "negative string length");
+	l_v309 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_v291, (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, items) + (sizeof(char) * 1)), (sizeof(char) * 1), (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, length)));
+	l_v290 = (struct pypy_rpy_string0 *)l_v309;
+	l_v310 = (l_v290 != NULL);
+	if (!l_v310) {
+		goto block2;
+	}
+	goto block4;
+
+    block4:
+	OP_INT_IS_TRUE(MALLOC_ZERO_FILLED, l_v311);
+	if (l_v311) {
+		goto block6;
+	}
+	goto block5;
+
+    block5:
+	l_v290->rs_hash = 0L;
+	goto block6;
+
+    block6:
+	l_res_chars_0 = &l_v290->rs_chars;
+	l_i_6 = 0L;
+	goto block7;
+
+    block7:
+	OP_INT_LT(l_i_6, l_v291, l_v313);
+	if (l_v313) {
+		goto block11;
+	}
+	goto block8;
+
+    block8:
+	/* kept alive: l_v289 */ ;
+	RPyAssert(1, "del l[start:] with unexpectedly negative start");
+	l_v316 = (&pypy_g_list)->l_length;
+	/* kept alive: (&pypy_g_list) */ ;
+	OP_INT_LE(0L, l_v316, l_v318);
+	RPyAssert(l_v318, "del l[start:] with start > len(l)");
+	l_v320 = (&pypy_g_list)->l_items;
+	l_v321 = l_v320->length;
+	OP_INT_RSHIFT(l_v321, 1L, l_v322);
+	OP_INT_SUB(l_v322, 5L, l_v323);
+	OP_INT_GE(0L, l_v323, l_v324);
+	if (l_v324) {
+		goto block10;
+	}
+	goto block9;
+
+    block9:
+	pypy_g__ll_list_resize_really__listPtr_Signed_1((&pypy_g_list), 0L);
+	l_v326 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v327 = (l_v326 == NULL);
+	if (!l_v327) {
+		goto block2;
+	}
+	l_v333 = l_v290;
+	goto block1;
+
+    block10:
+	(&pypy_g_list)->l_length = 0L;
+	l_v333 = l_v290;
+	goto block1;
+
+    block11:
+	l_v329 = l_v289->items[l_i_6];
+	l_res_chars_0->items[l_i_6] = l_v329;
+	OP_INT_ADD(l_i_6, 1L, l_v331);
+	l_i_6 = l_v331;
+	goto block7;
+}
+/*/*/
+void pypy_g_ll_setitem_nonneg__dum_nocheckConst_listPtr_Sign(struct pypy_list0 *l_l_3, long l_index_2, struct pypy_rpy_string0 *l_newitem_0) {
+	bool_t l_v334; bool_t l_v338; long l_v337; struct pypy_list0 *l_v336;
+	struct pypy_list0 *l_v340;
+
+    block0:
+	OP_INT_GE(l_index_2, 0L, l_v334);
+	RPyAssert(l_v334, "unexpectedly negative list setitem index");
+	l_v336 = l_l_3;
+	l_v337 = pypy_g_ll_length__listPtr(l_v336);
+	OP_INT_LT(l_index_2, l_v337, l_v338);
+	RPyAssert(l_v338, "list setitem index out of bound");
+	l_v340 = l_l_3;
+	pypy_g_ll_setitem_fast__listPtr_Signed_rpy_stringPtr(l_v340, l_index_2, l_newitem_0);
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+}
+/*/*/
+struct pypy_rpy_string0 *pypy_g_ll_getitem_fast__listPtr_Signed(struct pypy_list0 *l_l_4, long l_index_3) {
+	bool_t l_v345; long l_v344; struct pypy_array0 *l_v347;
+	struct pypy_rpy_string0 *l_v343;
+
+    block0:
+	l_v344 = l_l_4->l_length;
+	OP_INT_LT(l_index_3, l_v344, l_v345);
+	RPyAssert(l_v345, "getitem out of bounds");
+	l_v347 = l_l_4->l_items;
+	/* kept alive: l_l_4 */ ;
+	l_v343 = l_v347->items[l_index_3];
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v343;
+}
+/*/*/
+struct pypy_rpy_string0 *pypy_g_mallocstr__Signed(long l_length_2) {
+	bool_t l_v350; bool_t l_v353; bool_t l_v354;
+	struct pypy_rpy_string0 *l_v349; struct pypy_rpy_string0 *l_v356;
+	void* l_v352;
+
+    block0:
+	OP_INT_GE(l_length_2, 0L, l_v350);
+	RPyAssert(l_v350, "negative string length");
+	l_v352 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_length_2, (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, items) + (sizeof(char) * 1)), (sizeof(char) * 1), (offsetof(struct pypy_rpy_string0, rs_chars) + offsetof(struct pypy_array1, length)));
+	l_v349 = (struct pypy_rpy_string0 *)l_v352;
+	l_v353 = (l_v349 != NULL);
+	if (!l_v353) {
+		l_v356 = ((struct pypy_rpy_string0 *) NULL);
+		goto block3;
+	}
+	goto block1;
+
+    block1:
+	OP_INT_IS_TRUE(MALLOC_ZERO_FILLED, l_v354);
+	if (l_v354) {
+		l_v356 = l_v349;
+		goto block3;
+	}
+	goto block2;
+
+    block2:
+	l_v349->rs_hash = 0L;
+	l_v356 = l_v349;
+	goto block3;
+
+    block3:
+	RPY_DEBUG_RETURN();
+	return l_v356;
+}
+/*/*/
+struct pypy_list0 *pypy_g_ll_newlist__GcStruct_listLlT_Signed(long l_length_3) {
+	bool_t l_v359; bool_t l_v362; bool_t l_v367;
+	struct pypy_array0 *l_v358; struct pypy_list0 *l_v357;
+	struct pypy_list0 *l_v369; void* l_v361; void* l_v366;
+
+    block0:
+	OP_INT_GE(l_length_3, 0L, l_v359);
+	RPyAssert(l_v359, "negative list length");
+	l_v361 = pypy_g_ll_malloc_fixedsize__Signed_funcPtr((sizeof(struct pypy_list0) * 1), ((void (*)(void*)) NULL));
+	l_v357 = (struct pypy_list0 *)l_v361;
+	l_v362 = (l_v357 != NULL);
+	if (!l_v362) {
+		l_v369 = ((struct pypy_list0 *) NULL);
+		goto block3;
+	}
+	goto block1;
+
+    block1:
+	l_v357->l_length = l_length_3;
+
+
+	l_v366 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_length_3, (offsetof(struct pypy_array0, items) + (sizeof(struct pypy_rpy_string0 *) * 0)), (sizeof(struct pypy_rpy_string0 *) * 1), offsetof(struct pypy_array0, length));
+	l_v358 = (struct pypy_array0 *)l_v366;
+	l_v367 = (l_v358 != NULL);
+	if (!l_v367) {
+		l_v369 = ((struct pypy_list0 *) NULL);
+		goto block3;
+	}
+	goto block2;
+
+    block2:
+	l_v357->l_items = l_v358;
+	l_v369 = l_v357;
+	goto block3;
+
+    block3:
+	RPY_DEBUG_RETURN();
+	return l_v369;
+}
+/*/*/
+long pypy_g_ll_length__listPtr(struct pypy_list0 *l_l_5) {
+	long l_v370;
+
+    block0:
+	l_v370 = l_l_5->l_length;
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v370;
+}
+/*/*/
+void* pypy_g_ll_malloc_fixedsize_atomic__Signed_funcPtr(long l_size_0, void (*l_finalizer_2)(void*)) {
+	struct pypy_object_vtable0 *l_etype_2;
+	struct pypy_object0 *l_evalue_2; void* l_result_0; bool_t l_v371;
+	bool_t l_v373; void* l_v375;
+
+    block0:
+	OP_BOEHM_ZERO_MALLOC(l_size_0, l_result_0, void*, 1, 0);
+	OP_ADR_NE(l_result_0, NULL, l_v371);
+	if (l_v371) {
+		goto block3;
+	}
+	l_etype_2 = (&pypy_g_exceptions_MemoryError_vtable.me_super.se_super.e_super);
+	l_evalue_2 = (&pypy_g_exceptions_MemoryError_1.me_super.se_super.e_super);
+	goto block1;
+
+    block1:
+	pypy_g_RPyRaiseException(l_etype_2, l_evalue_2);
+	l_v375 = NULL;
+	goto block2;
+
+    block2:
+	RPY_DEBUG_RETURN();
+	return l_v375;
+
+    block3:
+	l_v373 = (l_finalizer_2 != NULL);
+	if (l_v373) {
+		goto block4;
+	}
+	l_v375 = l_result_0;
+	goto block2;
+
+    block4:
+	GC_REGISTER_FINALIZER(l_result_0, (GC_finalization_proc)l_finalizer_2, NULL, NULL, NULL);
+	l_v375 = l_result_0;
+	goto block2;
+}
+/*/*/
+void* pypy_g_ll_malloc_fixedsize__Signed_funcPtr(long l_size_1, void (*l_finalizer_1)(void*)) {
+	struct pypy_object_vtable0 *l_etype_3;
+	struct pypy_object0 *l_evalue_3; bool_t l_v377; bool_t l_v379;
+	void* l_v376; void* l_v381;
+
+    block0:
+	OP_BOEHM_ZERO_MALLOC(l_size_1, l_v376, void*, 0, 0);
+	OP_ADR_NE(l_v376, NULL, l_v377);
+	if (l_v377) {
+		goto block3;
+	}
+	l_etype_3 = (&pypy_g_exceptions_MemoryError_vtable.me_super.se_super.e_super);
+	l_evalue_3 = (&pypy_g_exceptions_MemoryError_1.me_super.se_super.e_super);
+	goto block1;
+
+    block1:
+	pypy_g_RPyRaiseException(l_etype_3, l_evalue_3);
+	l_v381 = NULL;
+	goto block2;
+
+    block2:
+	RPY_DEBUG_RETURN();
+	return l_v381;
+
+    block3:
+	l_v379 = (l_finalizer_1 != NULL);
+	if (l_v379) {
+		goto block4;
+	}
+	l_v381 = l_v376;
+	goto block2;
+
+    block4:
+	GC_REGISTER_FINALIZER(l_v376, (GC_finalization_proc)l_finalizer_1, NULL, NULL, NULL);
+	l_v381 = l_v376;
+	goto block2;
+}
+/*/*/
+void* pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(long l_length_4, long l_size_2, long l_itemsize_0, long l_lengthoffset_0) {
+	struct pypy_object_vtable0 *l_etype_4;
+	struct pypy_object0 *l_evalue_4; bool_t l_v386; bool_t l_v388;
+	bool_t l_v389; long l_v382; long l_v383; struct pypy_object0 *l_v393;
+	struct pypy_object0 *l_v398; struct pypy_object_vtable0 *l_v385;
+	struct pypy_object_vtable0 *l_v387;
+	struct pypy_object_vtable0 *l_v394;
+	struct pypy_object_vtable0 *l_v399; void* l_v384; void* l_v391;
+	void* l_v403;
+
+    block0:
+	OP_INT_MUL_OVF(l_itemsize_0, l_length_4, l_v382);
+	l_v385 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v386 = (l_v385 == NULL);
+	if (!l_v386) {
+		goto block7;
+	}
+	goto block1;
+
+    block1:
+	OP_INT_ADD_OVF(l_size_2, l_v382, l_v383);
+	l_v387 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v388 = (l_v387 == NULL);
+	if (!l_v388) {
+		goto block6;
+	}
+	goto block2;
+
+    block2:
+	OP_BOEHM_ZERO_MALLOC(l_v383, l_v384, void*, 0, 0);
+	OP_ADR_NE(l_v384, NULL, l_v389);
+	if (l_v389) {
+		goto block5;
+	}
+	l_evalue_4 = (&pypy_g_exceptions_MemoryError_1.me_super.se_super.e_super);
+	l_etype_4 = (&pypy_g_exceptions_MemoryError_vtable.me_super.se_super.e_super);
+	goto block3;
+
+    block3:
+	pypy_g_RPyRaiseException(l_etype_4, l_evalue_4);
+	l_v403 = NULL;
+	goto block4;
+
+    block4:
+	RPY_DEBUG_RETURN();
+	return l_v403;
+
+    block5:
+	OP_ADR_ADD(l_v384, l_lengthoffset_0, l_v391);
+	*(((long *) l_v391 ) + 0L) = l_length_4;
+	l_v403 = l_v384;
+	goto block4;
+
+    block6:
+	l_v393 = (&pypy_g_ExcData)->ed_exc_value;
+	l_v394 = (&pypy_g_ExcData)->ed_exc_type;
+	(&pypy_g_ExcData)->ed_exc_value = ((struct pypy_object0 *) NULL);
+	(&pypy_g_ExcData)->ed_exc_type = ((struct pypy_object_vtable0 *) NULL);
+	/* kept alive: l_v393 */ ;
+	l_evalue_4 = (&pypy_g_exceptions_MemoryError_1.me_super.se_super.e_super);
+	l_etype_4 = (&pypy_g_exceptions_MemoryError_vtable.me_super.se_super.e_super);
+	goto block3;
+
+    block7:
+	l_v398 = (&pypy_g_ExcData)->ed_exc_value;
+	l_v399 = (&pypy_g_ExcData)->ed_exc_type;
+	(&pypy_g_ExcData)->ed_exc_value = ((struct pypy_object0 *) NULL);
+	(&pypy_g_ExcData)->ed_exc_type = ((struct pypy_object_vtable0 *) NULL);
+	/* kept alive: l_v398 */ ;
+	l_evalue_4 = (&pypy_g_exceptions_MemoryError_1.me_super.se_super.e_super);
+	l_etype_4 = (&pypy_g_exceptions_MemoryError_vtable.me_super.se_super.e_super);
+	goto block3;
+}
+/*/*/
+void pypy_g__ll_list_resize_really__listPtr_Signed(struct pypy_list1 *l_l_10, long l_newsize_2) {
+	long l_new_allocated_0; long l_p_0; long l_some_0; bool_t l_v407;
+	bool_t l_v411; bool_t l_v413; bool_t l_v414; bool_t l_v416;
+	long l_v404; long l_v408; long l_v409; long l_v410; long l_v415;
+	long l_v419; long l_v421; long l_v422; struct pypy_array3 *l_v405;
+	struct pypy_array3 *l_v406; void* l_v412;
+
+    block0:
+	OP_INT_LT(l_newsize_2, 9L, l_v407);
+	if (l_v407) {
+		l_some_0 = 3L;
+		goto block1;
+	}
+	l_some_0 = 6L;
+	goto block1;
+
+    block1:
+	OP_INT_RSHIFT(l_newsize_2, 3L, l_v408);
+	OP_INT_ADD(l_v408, l_some_0, l_v409);
+	OP_INT_ADD(l_v409, l_newsize_2, l_v410);
+	OP_INT_EQ(l_newsize_2, 0L, l_v411);
+	if (l_v411) {
+		l_new_allocated_0 = 0L;
+		goto block2;
+	}
+	l_new_allocated_0 = l_v410;
+	goto block2;
+
+    block2:
+	l_v405 = l_l_10->l_items;
+	l_v412 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_new_allocated_0, (offsetof(struct pypy_array3, items) + (sizeof(long) * 0)), (sizeof(long) * 1), offsetof(struct pypy_array3, length));
+	l_v406 = (struct pypy_array3 *)l_v412;
+	l_v413 = (l_v406 != NULL);
+	if (!l_v413) {
+		goto block7;
+	}
+	goto block3;
+
+    block3:
+	l_v404 = l_l_10->l_length;
+	OP_INT_LT(l_v404, l_new_allocated_0, l_v414);
+	if (l_v414) {
+		goto block9;
+	}
+	goto block4;
+
+    block4:
+	OP_INT_SUB(l_new_allocated_0, 1L, l_v415);
+	l_p_0 = l_v415;
+	goto block5;
+
+    block5:
+	OP_INT_GE(l_p_0, 0L, l_v416);
+	if (l_v416) {
+		goto block8;
+	}
+	goto block6;
+
+    block6:
+	l_l_10->l_length = l_newsize_2;
+	l_l_10->l_items = l_v406;
+	goto block7;
+
+    block7:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+
+    block8:
+	l_v419 = l_v405->items[l_p_0];
+	l_v406->items[l_p_0] = l_v419;
+	OP_INT_SUB(l_p_0, 1L, l_v421);
+	l_p_0 = l_v421;
+	goto block5;
+
+    block9:
+	OP_INT_SUB(l_v404, 1L, l_v422);
+	l_p_0 = l_v422;
+	goto block5;
+}
+/*/*/
+void pypy_g_State_add(struct pypy_rpn_State0 *l_self_1) {
+	bool_t l_v435; bool_t l_v438; bool_t l_v446; bool_t l_v449;
+	bool_t l_v451; bool_t l_v455; bool_t l_v463; bool_t l_v466;
+	bool_t l_v469; bool_t l_v474; bool_t l_v476; long l_v425;
+	long l_v426; long l_v428; long l_v429; long l_v430; long l_v432;
+	long l_v433; long l_v434; long l_v437; long l_v443; long l_v444;
+	long l_v445; long l_v450; long l_v454; long l_v460; long l_v461;
+	long l_v462; long l_v468; long l_v475; struct pypy_array3 *l_v440;
+	struct pypy_array3 *l_v442; struct pypy_array3 *l_v457;
+	struct pypy_array3 *l_v459; struct pypy_array3 *l_v467;
+	struct pypy_array3 *l_v478; struct pypy_list1 *l_v424;
+	struct pypy_list1 *l_v427; struct pypy_list1 *l_v431;
+	struct pypy_object_vtable0 *l_v448;
+	struct pypy_object_vtable0 *l_v465;
+	struct pypy_object_vtable0 *l_v473;
+
+    block0:
+	l_v431 = l_self_1->s_inst_stack;
+	l_v434 = l_v431->l_length;
+	OP_INT_GT(l_v434, 0L, l_v435);
+	RPyAssert(l_v435, "pop from empty list");
+	OP_INT_SUB(l_v434, 1L, l_v429);
+	l_v437 = l_v431->l_length;
+	OP_INT_LT(l_v429, l_v437, l_v438);
+	RPyAssert(l_v438, "getitem out of bounds");
+	l_v440 = l_v431->l_items;
+	l_v433 = l_v440->items[l_v429];
+	/* kept alive: l_v431 */ ;
+	l_v442 = l_v431->l_items;
+	l_v443 = l_v442->length;
+	OP_INT_RSHIFT(l_v443, 1L, l_v444);
+	OP_INT_SUB(l_v444, 5L, l_v445);
+	OP_INT_GE(l_v429, l_v445, l_v446);
+	if (l_v446) {
+		goto block10;
+	}
+	goto block1;
+
+    block1:
+	pypy_g__ll_list_resize_really__listPtr_Signed(l_v431, l_v429);
+	l_v448 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v449 = (l_v448 == NULL);
+	if (!l_v449) {
+		goto block7;
+	}
+	goto block2;
+
+    block2:
+	l_v427 = l_self_1->s_inst_stack;
+	l_v450 = l_v427->l_length;
+	OP_INT_GT(l_v450, 0L, l_v451);
+	/* kept alive: l_v431 */ ;
+	RPyAssert(l_v451, "pop from empty list");
+	OP_INT_SUB(l_v450, 1L, l_v432);
+	l_v454 = l_v427->l_length;
+	OP_INT_LT(l_v432, l_v454, l_v455);
+	RPyAssert(l_v455, "getitem out of bounds");
+	l_v457 = l_v427->l_items;
+	l_v430 = l_v457->items[l_v432];
+	/* kept alive: l_v427 */ ;
+	l_v459 = l_v427->l_items;
+	l_v460 = l_v459->length;
+	OP_INT_RSHIFT(l_v460, 1L, l_v461);
+	OP_INT_SUB(l_v461, 5L, l_v462);
+	OP_INT_GE(l_v432, l_v462, l_v463);
+	if (l_v463) {
+		goto block9;
+	}
+	goto block3;
+
+    block3:
+	pypy_g__ll_list_resize_really__listPtr_Signed(l_v427, l_v432);
+	l_v465 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v466 = (l_v465 == NULL);
+	if (!l_v466) {
+		goto block7;
+	}
+	goto block4;
+
+    block4:
+	l_v424 = l_self_1->s_inst_stack;
+	OP_INT_ADD(l_v430, l_v433, l_v426);
+	l_v428 = l_v424->l_length;
+	OP_INT_ADD(l_v428, 1L, l_v425);
+	l_v467 = l_v424->l_items;
+	l_v468 = l_v467->length;
+	OP_INT_GE(l_v468, l_v425, l_v469);
+	/* kept alive: l_v427 */ ;
+	/* kept alive: l_v424 */ ;
+	if (l_v469) {
+		goto block8;
+	}
+	goto block5;
+
+    block5:
+	pypy_g__ll_list_resize_really__listPtr_Signed(l_v424, l_v425);
+	l_v473 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v474 = (l_v473 == NULL);
+	if (!l_v474) {
+		goto block7;
+	}
+	goto block6;
+
+    block6:
+	l_v475 = l_v424->l_length;
+	OP_INT_LT(l_v428, l_v475, l_v476);
+	RPyAssert(l_v476, "setitem out of bounds");
+	l_v478 = l_v424->l_items;
+	l_v478->items[l_v428] = l_v426;
+	/* kept alive: l_v424 */ ;
+	goto block7;
+
+    block7:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+
+    block8:
+	l_v424->l_length = l_v425;
+	goto block6;
+
+    block9:
+	l_v427->l_length = l_v432;
+	goto block4;
+
+    block10:
+	l_v431->l_length = l_v429;
+	goto block2;
+}
+/*/*/
+void pypy_g__ll_list_resize_really__listPtr_Signed_1(struct pypy_list2 *l_l_11, long l_newsize_3) {
+	long l_new_allocated_1; long l_p_1; long l_some_1; bool_t l_v488;
+	bool_t l_v492; bool_t l_v494; bool_t l_v495; bool_t l_v497;
+	char l_v500; long l_v486; long l_v489; long l_v490; long l_v491;
+	long l_v496; long l_v502; long l_v503; struct pypy_array5 *l_v485;
+	struct pypy_array5 *l_v487; void* l_v493;
+
+    block0:
+	OP_INT_LT(l_newsize_3, 9L, l_v488);
+	if (l_v488) {
+		l_some_1 = 3L;
+		goto block1;
+	}
+	l_some_1 = 6L;
+	goto block1;
+
+    block1:
+	OP_INT_RSHIFT(l_newsize_3, 3L, l_v489);
+	OP_INT_ADD(l_v489, l_some_1, l_v490);
+	OP_INT_ADD(l_v490, l_newsize_3, l_v491);
+	OP_INT_EQ(l_newsize_3, 0L, l_v492);
+	if (l_v492) {
+		l_new_allocated_1 = 0L;
+		goto block2;
+	}
+	l_new_allocated_1 = l_v491;
+	goto block2;
+
+    block2:
+	l_v487 = l_l_11->l_items;
+	l_v493 = pypy_g_ll_malloc_varsize__Signed_Signed_Signed_Signed(l_new_allocated_1, (offsetof(struct pypy_array5, items) + (sizeof(char) * 0)), (sizeof(char) * 1), offsetof(struct pypy_array5, length));
+	l_v485 = (struct pypy_array5 *)l_v493;
+	l_v494 = (l_v485 != NULL);
+	if (!l_v494) {
+		goto block7;
+	}
+	goto block3;
+
+    block3:
+	l_v486 = l_l_11->l_length;
+	OP_INT_LT(l_v486, l_new_allocated_1, l_v495);
+	if (l_v495) {
+		goto block9;
+	}
+	goto block4;
+
+    block4:
+	OP_INT_SUB(l_new_allocated_1, 1L, l_v496);
+	l_p_1 = l_v496;
+	goto block5;
+
+    block5:
+	OP_INT_GE(l_p_1, 0L, l_v497);
+	if (l_v497) {
+		goto block8;
+	}
+	goto block6;
+
+    block6:
+	l_l_11->l_length = l_newsize_3;
+	l_l_11->l_items = l_v485;
+	goto block7;
+
+    block7:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+
+    block8:
+	l_v500 = l_v487->items[l_p_1];
+	l_v485->items[l_p_1] = l_v500;
+	OP_INT_SUB(l_p_1, 1L, l_v502);
+	l_p_1 = l_v502;
+	goto block5;
+
+    block9:
+	OP_INT_SUB(l_v486, 1L, l_v503);
+	l_p_1 = l_v503;
+	goto block5;
+}
+/*/*/
+long pypy_g_os_write_lltypeimpl(long l_fd_1, struct pypy_rpy_string0 *l_data_1) {
+	struct pypy_array6 *l_outbuf_0; bool_t l_v514; bool_t l_v516;
+	bool_t l_v519; bool_t l_v522; bool_t l_v525; bool_t l_v536;
+	bool_t l_v538; bool_t l_v541; char l_v527; long l_v505; long l_v509;
+	long l_v510; long l_v511; long l_v518; long l_v524; long l_v555;
+	struct pypy_array1 *l_v512; struct pypy_array1 *l_v517;
+	struct pypy_array1 *l_v521;
+	struct pypy_exceptions_Exception0 *l_v546;
+	struct pypy_exceptions_Exception0 *l_v554;
+	struct pypy_exceptions_Exception0 *l_v557;
+	struct pypy_exceptions_OSError0 *l_v508; struct pypy_object0 *l_v532;
+	struct pypy_object0 *l_v542; struct pypy_object0 *l_v548;
+	struct pypy_object_vtable0 *l_v513;
+	struct pypy_object_vtable0 *l_v535;
+	struct pypy_object_vtable0 *l_v545;
+	struct pypy_object_vtable0 *l_v549;
+	struct pypy_object_vtable0 *l_v556; unsigned long l_v506;
+	unsigned long l_v507; void* l_v540;
+
+    block0:
+	l_v512 = &l_data_1->rs_chars;
+	l_v509 = l_v512->length;
+	IF_VARSIZE_OVERFLOW(l_v509, char, l_outbuf_0)
+	else {
+	OP_RAW_MALLOC(sizeof(struct pypy_array6)-sizeof(char)+l_v509*sizeof(char), l_outbuf_0, struct pypy_array6 *);
+	}
+	l_v513 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v514 = (l_v513 == NULL);
+	if (!l_v514) {
+		l_v555 = -1L;
+		goto block7;
+	}
+	goto block1;
+
+    block1:
+	/* kept alive: l_data_1 */ ;
+	l_v505 = 0L;
+	goto block2;
+
+    block2:
+	OP_INT_GE(l_v505, l_v509, l_v516);
+	if (l_v516) {
+		goto block8;
+	}
+	goto block3;
+
+    block3:
+	OP_INT_ADD(l_v505, 1L, l_v510);
+	l_v517 = &l_data_1->rs_chars;
+	l_v518 = l_v517->length;
+	OP_INT_GE(l_v505, l_v518, l_v519);
+	/* kept alive: l_data_1 */ ;
+	if (l_v519) {
+		goto block5;
+	}
+	goto block4;
+
+    block4:
+	l_v521 = &l_data_1->rs_chars;
+	OP_INT_GE(l_v505, 0L, l_v522);
+	RPyAssert(l_v522, "negative str getitem index");
+	l_v524 = l_v521->length;
+	OP_INT_LT(l_v505, l_v524, l_v525);
+	RPyAssert(l_v525, "str getitem index out of bound");
+	l_v527 = l_v521->items[l_v505];
+	/* kept alive: l_data_1 */ ;
+	l_outbuf_0->items[l_v505] = l_v527;
+	l_v505 = l_v510;
+	goto block2;
+
+    block5:
+	/* kept alive: l_data_1 */ ;
+	l_v557 = (&pypy_g_exceptions_IndexError.ie_super.le_super.se_super);
+	l_v556 = (&pypy_g_exceptions_IndexError_vtable.ie_super.le_super.se_super.e_super);
+	goto block6;
+
+    block6:
+	OP_RAW_FREE(l_outbuf_0, /* nothing */)
+	l_v532 = (struct pypy_object0 *)l_v557;
+	pypy_g_RPyRaiseException(l_v556, l_v532);
+	l_v555 = -1L;
+	goto block7;
+
+    block7:
+	RPY_DEBUG_RETURN();
+	return l_v555;
+
+    block8:
+	OP_CAST_INT_TO_UINT(l_v509, l_v506);
+	/* kept alive: l_data_1 */ ;
+	l_v507 = write(l_fd_1, l_outbuf_0, l_v506);
+	l_v535 = (&pypy_g_ExcData)->ed_exc_type;
+	l_v536 = (l_v535 == NULL);
+	if (!l_v536) {
+		goto block13;
+	}
+	goto block9;
+
+    block9:
+	/* kept alive: l_data_1 */ ;
+	OP_CAST_UINT_TO_INT(l_v507, l_v511);
+	OP_INT_LT(l_v511, 0L, l_v538);
+	if (l_v538) {
+		goto block11;
+	}
+	goto block10;
+
+    block10:
+	OP_RAW_FREE(l_outbuf_0, /* nothing */)
+	l_v555 = l_v511;
+	goto block7;
+
+    block11:
+	l_v540 = pypy_g_ll_malloc_fixedsize_atomic__Signed_funcPtr((sizeof(struct pypy_exceptions_OSError0) * 1), ((void (*)(void*)) NULL));
+	l_v508 = (struct pypy_exceptions_OSError0 *)l_v540;
+	l_v541 = (l_v508 != NULL);
+	if (!l_v541) {
+		l_v555 = -1L;
+		goto block7;
+	}
+	goto block12;
+
+    block12:
+	l_v542 = (struct pypy_object0 *)l_v508;
+	l_v542->o_typeptr = (&pypy_g_exceptions_OSError_vtable.ose_super.ee_super.se_super.e_super);
+	l_v508->ose_inst_errno = errno;
+	l_v545 = l_v542->o_typeptr;
+	l_v546 = (struct pypy_exceptions_Exception0 *)l_v508;
+	/* kept alive: l_v508 */ ;
+	l_v557 = l_v546;
+	l_v556 = l_v545;
+	goto block6;
+
+    block13:
+	l_v548 = (&pypy_g_ExcData)->ed_exc_value;
+	l_v549 = (&pypy_g_ExcData)->ed_exc_type;
+	(&pypy_g_ExcData)->ed_exc_value = ((struct pypy_object0 *) NULL);
+	(&pypy_g_ExcData)->ed_exc_type = ((struct pypy_object_vtable0 *) NULL);
+	/* kept alive: l_v548 */ ;
+	/* kept alive: l_data_1 */ ;
+	l_v554 = (struct pypy_exceptions_Exception0 *)l_v548;
+	l_v557 = l_v554;
+	l_v556 = l_v549;
+	goto block6;
+}
+/*/*/
+void pypy_g_ll_setitem_fast__listPtr_Signed_rpy_stringPtr(struct pypy_list0 *l_l_8, long l_index_4, struct pypy_rpy_string0 *l_item_0) {
+	bool_t l_v559; long l_v558; struct pypy_array0 *l_v562;
+	struct pypy_list0 *l_v561;
+
+    block0:
+	l_v558 = l_l_8->l_length;
+	OP_INT_LT(l_index_4, l_v558, l_v559);
+	RPyAssert(l_v559, "setitem out of bounds");
+	l_v561 = l_l_8;
+	l_v562 = pypy_g_ll_items__listPtr(l_v561);
+	l_v562->items[l_index_4] = l_item_0;
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return /* nothing */;
+}
+/*/*/
+
+/*/*/
+struct pypy_array0 *pypy_g_ll_items__listPtr(struct pypy_list0 *l_l_9) {
+	struct pypy_array0 *l_v565;
+
+    block0:
+	l_v565 = l_l_9->l_items;
+	goto block1;
+
+    block1:
+	RPY_DEBUG_RETURN();
+	return l_v565;
+}
+/*/*/
+/***********************************************************/

Added: pypy/extradoc/talk/sfi2008/demo/rpn.j
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/rpn.j	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,786 @@
+.class public pypy/interpret_35
+.super java/lang/Object
+.method public <init>()V
+  ;      load_jvm_jar: jvartype=Class<Lpypy/interpret_35;> varidx=0
+    .line 0
+    aload_0                                                     
+    .line 1
+    invokespecial java/lang/Object/<init>()V                    
+    .line 2
+    return                                                      
+.limit stack 100
+.limit locals 1
+.end method
+.method public static invoke(Ljava/lang/String;I)I
+  BasicBlock_16:
+  ; v24 = new((<Instance(rpn.State)>))
+    .line 1
+    new pypy/rpn/State_36                                       
+    .line 2
+    dup                                                         
+    .line 3
+    invokespecial pypy/rpn/State_36/<init>()V                   
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=2
+    .line 4
+    astore_2                                                    
+  ; v25 = oosetfield(v24, ('meta'), (<'Object_meta' view of...6726ec>))
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=2
+    .line 5
+    aload_2                                                     
+    .line 6
+    getstatic pypy/Constant/pypy_rpn_State_meta_38__37 Lpypy/rpn/State_meta_38;
+    .line 7
+    checkcast pypy/Object_meta_12                               
+    .line 8
+    putfield pypy/Object_10/meta Lpypy/Object_meta_12;          
+  ; v26 = new((<List(Signed)>))
+    .line 9
+    new java/util/ArrayList                                     
+    .line 10
+    dup                                                         
+    .line 11
+    invokespecial java/util/ArrayList/<init>()V                 
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=3
+    .line 12
+    astore_3                                                    
+  ; v27 = oosend(('_ll_resize'), v26, (0))
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=3
+    .line 13
+    aload_3                                                     
+    .line 14
+    iconst_0                                                    
+    .line 15
+    invokestatic pypy/PyPy/_ll_resize(Ljava/util/ArrayList;I)V  
+  ; v28 = oosetfield(v24, ('ostack'), v26)
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=2
+    .line 16
+    aload_2                                                     
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=3
+    .line 17
+    aload_3                                                     
+    .line 18
+    putfield pypy/rpn/State_36/ostack Ljava/util/ArrayList;     
+  ; v29 = oogetfield(v24, ('ostack'))
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=2
+    .line 19
+    aload_2                                                     
+    .line 20
+    getfield pypy/rpn/State_36/ostack Ljava/util/ArrayList;     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=4
+    .line 21
+    astore 4                                                    
+  ; v30 = oosend(('ll_length'), v29)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=4
+    .line 22
+    aload 4                                                     
+    .line 23
+    invokevirtual java/util/ArrayList/size()I                   
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=5
+    .line 24
+    istore 5                                                    
+  ; v31 = int_add(v30, (1))
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=5
+    .line 25
+    iload 5                                                     
+    .line 26
+    iconst_1                                                    
+    .line 27
+    iadd                                                        
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=6
+    .line 28
+    istore 6                                                    
+  ; v32 = oosend(('_ll_resize_ge'), v29, v31)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=4
+    .line 29
+    aload 4                                                     
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=6
+    .line 30
+    iload 6                                                     
+    .line 31
+    invokestatic pypy/PyPy/_ll_resize_ge(Ljava/util/ArrayList;I)V
+  ; v33 = oosend(('ll_setitem_fast'), v29, v30, arg_0)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=4
+    .line 32
+    aload 4                                                     
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=5
+    .line 33
+    iload 5                                                     
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=1
+    .line 34
+    iload_1                                                     
+    .line 35
+    invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
+    .line 36
+    invokestatic pypy/PyPy/ll_setitem_fast(Ljava/util/ArrayList;ILjava/lang/Object;)V
+  ; (0) --> v34
+    .line 37
+    iconst_0                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=7
+    .line 38
+    istore 7                                                    
+  ; code_0 --> v35
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=0
+    .line 39
+    aload_0                                                     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 40
+    astore 8                                                    
+  ; v24 --> state_0
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=2
+    .line 41
+    aload_2                                                     
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 42
+    astore 9                                                    
+    .line 43
+    goto BasicBlock_17                                          
+  BasicBlock_17:
+  ; v36 = oosend(('ll_strlen'), v35)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 45
+    aload 8                                                     
+    .line 46
+    invokevirtual java/lang/String/length()I                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=10
+    .line 47
+    istore 10                                                   
+  ; v37 = int_ge(v34, v36)
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=7
+    .line 48
+    iload 7                                                     
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=10
+    .line 49
+    iload 10                                                    
+    .line 50
+    if_icmpge cmpop_18                                          
+    .line 51
+    iconst_0                                                    
+    .line 52
+    goto cmpop_19                                               
+  cmpop_18:
+    .line 54
+    iconst_1                                                    
+  cmpop_19:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=11
+    .line 56
+    istore 11                                                   
+  ; v35 --> v38
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 57
+    aload 8                                                     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=12
+    .line 58
+    astore 12                                                   
+  ; v34 --> index_0
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=7
+    .line 59
+    iload 7                                                     
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=13
+    .line 60
+    istore 13                                                   
+  ; v35 --> string_0
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 61
+    aload 8                                                     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=14
+    .line 62
+    astore 14                                                   
+  ; state_0 --> state_1
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 63
+    aload 9                                                     
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=15
+    .line 64
+    astore 15                                                   
+  ;      load_jvm_jar: jvartype=JvmScalarType<Z> varidx=11
+    .line 65
+    iload 11                                                    
+    .line 66
+    ifeq BasicBlock_20                                          
+  ; state_0 --> state_2
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 67
+    aload 9                                                     
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=16
+    .line 68
+    astore 16                                                   
+    .line 69
+    goto BasicBlock_21                                          
+  BasicBlock_20:
+  ; v39 = int_add(index_0, (1))
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=13
+    .line 71
+    iload 13                                                    
+    .line 72
+    iconst_1                                                    
+    .line 73
+    iadd                                                        
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=17
+    .line 74
+    istore 17                                                   
+  ; v40 = oosend(('ll_stritem_nonneg'), string_0, index_0)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=14
+    .line 75
+    aload 14                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=13
+    .line 76
+    iload 13                                                    
+    .line 77
+    invokevirtual java/lang/String/charAt(I)C                   
+  ;      store_jvm_jar: vartype=JvmScalarType<C> varidx=18
+    .line 78
+    istore 18                                                   
+  ; v41 = char_le(('0'), v40)
+    .line 79
+    ldc 48                                                      
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=18
+    .line 80
+    iload 18                                                    
+    .line 81
+    if_icmple cmpop_22                                          
+    .line 82
+    iconst_0                                                    
+    .line 83
+    goto cmpop_23                                               
+  cmpop_22:
+    .line 85
+    iconst_1                                                    
+  cmpop_23:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=19
+    .line 87
+    istore 19                                                   
+  ; state_1 --> state_3
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=15
+    .line 88
+    aload 15                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=20
+    .line 89
+    astore 20                                                   
+  ; v39 --> v42
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=17
+    .line 90
+    iload 17                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=21
+    .line 91
+    istore 21                                                   
+  ; v38 --> v43
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=12
+    .line 92
+    aload 12                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=22
+    .line 93
+    astore 22                                                   
+  ; v40 --> v44
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=18
+    .line 94
+    iload 18                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<C> varidx=23
+    .line 95
+    istore 23                                                   
+  ;      load_jvm_jar: jvartype=JvmScalarType<Z> varidx=19
+    .line 96
+    iload 19                                                    
+    .line 97
+    ifeq BasicBlock_24                                          
+  ; v40 --> c_0
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=18
+    .line 98
+    iload 18                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<C> varidx=24
+    .line 99
+    istore 24                                                   
+  ; state_1 --> state_4
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=15
+    .line 100
+    aload 15                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=25
+    .line 101
+    astore 25                                                   
+  ; v39 --> v45
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=17
+    .line 102
+    iload 17                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=26
+    .line 103
+    istore 26                                                   
+  ; v38 --> v46
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=12
+    .line 104
+    aload 12                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=27
+    .line 105
+    astore 27                                                   
+    .line 106
+    goto BasicBlock_25                                          
+  BasicBlock_24:
+  ; v47 = char_eq(v44, ('+'))
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=23
+    .line 108
+    iload 23                                                    
+    .line 109
+    ldc 43                                                      
+    .line 110
+    if_icmpeq cmpop_26                                          
+    .line 111
+    iconst_0                                                    
+    .line 112
+    goto cmpop_27                                               
+  cmpop_26:
+    .line 114
+    iconst_1                                                    
+  cmpop_27:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=28
+    .line 116
+    istore 28                                                   
+  ; v42 --> v34
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=21
+    .line 117
+    iload 21                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=7
+    .line 118
+    istore 7                                                    
+  ; v43 --> v35
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=22
+    .line 119
+    aload 22                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 120
+    astore 8                                                    
+  ; state_3 --> state_0
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=20
+    .line 121
+    aload 20                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 122
+    astore 9                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<Z> varidx=28
+    .line 123
+    iload 28                                                    
+    .line 124
+    ifeq BasicBlock_17                                          
+  ; state_3 --> state_5
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=20
+    .line 125
+    aload 20                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=29
+    .line 126
+    astore 29                                                   
+  ; v42 --> v48
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=21
+    .line 127
+    iload 21                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=30
+    .line 128
+    istore 30                                                   
+  ; v43 --> v49
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=22
+    .line 129
+    aload 22                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=31
+    .line 130
+    astore 31                                                   
+    .line 131
+    goto BasicBlock_28                                          
+  BasicBlock_28:
+  ; v50 = oosend(('oadd'), state_5)
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=29
+    .line 133
+    aload 29                                                    
+    .line 134
+    invokevirtual pypy/rpn/State_36/oadd()V                     
+  ; v48 --> v34
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=30
+    .line 135
+    iload 30                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=7
+    .line 136
+    istore 7                                                    
+  ; v49 --> v35
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=31
+    .line 137
+    aload 31                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 138
+    astore 8                                                    
+  ; state_5 --> state_0
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=29
+    .line 139
+    aload 29                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 140
+    astore 9                                                    
+    .line 141
+    goto BasicBlock_17                                          
+  BasicBlock_25:
+  ; v51 = char_le(c_0, ('9'))
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=24
+    .line 143
+    iload 24                                                    
+    .line 144
+    ldc 57                                                      
+    .line 145
+    if_icmple cmpop_29                                          
+    .line 146
+    iconst_0                                                    
+    .line 147
+    goto cmpop_30                                               
+  cmpop_29:
+    .line 149
+    iconst_1                                                    
+  cmpop_30:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=32
+    .line 151
+    istore 32                                                   
+  ; state_4 --> state_3
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=25
+    .line 152
+    aload 25                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=20
+    .line 153
+    astore 20                                                   
+  ; v45 --> v42
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=26
+    .line 154
+    iload 26                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=21
+    .line 155
+    istore 21                                                   
+  ; v46 --> v43
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=27
+    .line 156
+    aload 27                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=22
+    .line 157
+    astore 22                                                   
+  ; c_0 --> v44
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=24
+    .line 158
+    iload 24                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<C> varidx=23
+    .line 159
+    istore 23                                                   
+  ;      load_jvm_jar: jvartype=JvmScalarType<Z> varidx=32
+    .line 160
+    iload 32                                                    
+    .line 161
+    ifeq BasicBlock_24                                          
+  ; c_0 --> c_1
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=24
+    .line 162
+    iload 24                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<C> varidx=33
+    .line 163
+    istore 33                                                   
+  ; state_4 --> state_6
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=25
+    .line 164
+    aload 25                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=34
+    .line 165
+    astore 34                                                   
+  ; v45 --> v52
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=26
+    .line 166
+    iload 26                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=35
+    .line 167
+    istore 35                                                   
+  ; v46 --> v53
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=27
+    .line 168
+    aload 27                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=36
+    .line 169
+    astore 36                                                   
+    .line 170
+    goto BasicBlock_31                                          
+  BasicBlock_31:
+  ; v54 = cast_char_to_int(c_1)
+  ;      load_jvm_jar: jvartype=JvmScalarType<C> varidx=33
+    .line 172
+    iload 33                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=37
+    .line 173
+    istore 37                                                   
+  ; v55 = int_sub(v54, (48))
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=37
+    .line 174
+    iload 37                                                    
+    .line 175
+    ldc 48                                                      
+    .line 176
+    isub                                                        
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=38
+    .line 177
+    istore 38                                                   
+  ; v56 = oogetfield(state_6, ('ostack'))
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=34
+    .line 178
+    aload 34                                                    
+    .line 179
+    getfield pypy/rpn/State_36/ostack Ljava/util/ArrayList;     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=39
+    .line 180
+    astore 39                                                   
+  ; v57 = oosend(('ll_length'), v56)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=39
+    .line 181
+    aload 39                                                    
+    .line 182
+    invokevirtual java/util/ArrayList/size()I                   
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=40
+    .line 183
+    istore 40                                                   
+  ; v58 = int_add(v57, (1))
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=40
+    .line 184
+    iload 40                                                    
+    .line 185
+    iconst_1                                                    
+    .line 186
+    iadd                                                        
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=41
+    .line 187
+    istore 41                                                   
+  ; v59 = oosend(('_ll_resize_ge'), v56, v58)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=39
+    .line 188
+    aload 39                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=41
+    .line 189
+    iload 41                                                    
+    .line 190
+    invokestatic pypy/PyPy/_ll_resize_ge(Ljava/util/ArrayList;I)V
+  ; v60 = oosend(('ll_setitem_fast'), v56, v57, v55)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=39
+    .line 191
+    aload 39                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=40
+    .line 192
+    iload 40                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=38
+    .line 193
+    iload 38                                                    
+    .line 194
+    invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
+    .line 195
+    invokestatic pypy/PyPy/ll_setitem_fast(Ljava/util/ArrayList;ILjava/lang/Object;)V
+  ; v52 --> v34
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=35
+    .line 196
+    iload 35                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=7
+    .line 197
+    istore 7                                                    
+  ; v53 --> v35
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/lang/String;> varidx=36
+    .line 198
+    aload 36                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/lang/String;> varidx=8
+    .line 199
+    astore 8                                                    
+  ; state_6 --> state_0
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=34
+    .line 200
+    aload 34                                                    
+  ;      store_jvm_jar: vartype=Class<Lpypy/rpn/State_36;> varidx=9
+    .line 201
+    astore 9                                                    
+    .line 202
+    goto BasicBlock_17                                          
+  BasicBlock_21:
+  ; v61 = oogetfield(state_2, ('ostack'))
+  ;      load_jvm_jar: jvartype=Class<Lpypy/rpn/State_36;> varidx=16
+    .line 204
+    aload 16                                                    
+    .line 205
+    getfield pypy/rpn/State_36/ostack Ljava/util/ArrayList;     
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=42
+    .line 206
+    astore 42                                                   
+  ; v62 = oosend(('ll_length'), v61)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=42
+    .line 207
+    aload 42                                                    
+    .line 208
+    invokevirtual java/util/ArrayList/size()I                   
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=43
+    .line 209
+    istore 43                                                   
+  ; v63 = int_lt((-1), (0))
+    .line 210
+    iconst_m1                                                   
+    .line 211
+    iconst_0                                                    
+    .line 212
+    if_icmplt cmpop_32                                          
+    .line 213
+    iconst_0                                                    
+    .line 214
+    goto cmpop_33                                               
+  cmpop_32:
+    .line 216
+    iconst_1                                                    
+  cmpop_33:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=44
+    .line 218
+    istore 44                                                   
+  ; v61 --> l_0
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=42
+    .line 219
+    aload 42                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=45
+    .line 220
+    astore 45                                                   
+  ; (-1) --> index_1
+    .line 221
+    iconst_m1                                                   
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=46
+    .line 222
+    istore 46                                                   
+  ; v62 --> length_0
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=43
+    .line 223
+    iload 43                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=47
+    .line 224
+    istore 47                                                   
+  ;      load_jvm_jar: jvartype=JvmScalarType<Z> varidx=44
+    .line 225
+    iload 44                                                    
+    .line 226
+    ifeq BasicBlock_34                                          
+  ; v61 --> l_1
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=42
+    .line 227
+    aload 42                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=48
+    .line 228
+    astore 48                                                   
+  ; v62 --> length_1
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=43
+    .line 229
+    iload 43                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=49
+    .line 230
+    istore 49                                                   
+  ; (-1) --> v64
+    .line 231
+    iconst_m1                                                   
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=50
+    .line 232
+    istore 50                                                   
+    .line 233
+    goto BasicBlock_35                                          
+  BasicBlock_34:
+  ; v65 = int_ge(index_1, (0))
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=46
+    .line 235
+    iload 46                                                    
+    .line 236
+    iconst_0                                                    
+    .line 237
+    if_icmpge cmpop_36                                          
+    .line 238
+    iconst_0                                                    
+    .line 239
+    goto cmpop_37                                               
+  cmpop_36:
+    .line 241
+    iconst_1                                                    
+  cmpop_37:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=51
+    .line 243
+    istore 51                                                   
+  ; v66 = debug_assert(v65, ('negative list getitem index out of bound'))
+  ; v67 = int_lt(index_1, length_0)
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=46
+    .line 244
+    iload 46                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=47
+    .line 245
+    iload 47                                                    
+    .line 246
+    if_icmplt cmpop_38                                          
+    .line 247
+    iconst_0                                                    
+    .line 248
+    goto cmpop_39                                               
+  cmpop_38:
+    .line 250
+    iconst_1                                                    
+  cmpop_39:
+  ;      store_jvm_jar: vartype=JvmScalarType<Z> varidx=52
+    .line 252
+    istore 52                                                   
+  ; v68 = debug_assert(v67, ('list getitem index out of bound'))
+  ; v69 = oosend(('ll_getitem_fast'), l_0, index_1)
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=45
+    .line 253
+    aload 45                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=46
+    .line 254
+    iload 46                                                    
+    .line 255
+    invokevirtual java/util/ArrayList/get(I)Ljava/lang/Object;  
+    .line 256
+    checkcast java/lang/Integer                                 
+    .line 257
+    invokevirtual java/lang/Integer/intValue()I                 
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=53
+    .line 258
+    istore 53                                                   
+  ; v69 --> v70
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=53
+    .line 259
+    iload 53                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=54
+    .line 260
+    istore 54                                                   
+    .line 261
+    goto BasicBlock_40                                          
+  BasicBlock_35:
+  ; v71 = int_add(v64, length_1)
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=50
+    .line 263
+    iload 50                                                    
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=49
+    .line 264
+    iload 49                                                    
+    .line 265
+    iadd                                                        
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=55
+    .line 266
+    istore 55                                                   
+  ; l_1 --> l_0
+  ;      load_jvm_jar: jvartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=48
+    .line 267
+    aload 48                                                    
+  ;      store_jvm_jar: vartype=JvmBuiltInType<Ljava/util/ArrayList;> varidx=45
+    .line 268
+    astore 45                                                   
+  ; v71 --> index_1
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=55
+    .line 269
+    iload 55                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=46
+    .line 270
+    istore 46                                                   
+  ; length_1 --> length_0
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=49
+    .line 271
+    iload 49                                                    
+  ;      store_jvm_jar: vartype=JvmScalarType<I> varidx=47
+    .line 272
+    istore 47                                                   
+    .line 273
+    goto BasicBlock_34                                          
+  BasicBlock_40:
+  ;      load_jvm_jar: jvartype=JvmScalarType<I> varidx=54
+    .line 275
+    iload 54                                                    
+    .line 276
+    ireturn                                                     
+.limit stack 100
+.limit locals 56
+.end method

Added: pypy/extradoc/talk/sfi2008/demo/rpn.js
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/rpn.js	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,1343 @@
+// starts hand written code
+MALLOC_ZERO_FILLED = 0
+
+try {
+    log;
+    print = log;
+} catch(e) {
+}
+
+Function.prototype.method = function (name, func) {
+    this.prototype[name] = func;
+    return this;
+};
+
+function inherits(child, parent) {
+    child.parent = parent;
+    for (i in parent.prototype) {
+        if (!child.prototype[i]) {
+            child.prototype[i] = parent.prototype[i];
+        }
+    }
+}
+
+function isinstanceof(self, what) {
+    if (!self) {
+        return (false);
+    }
+    t = self.constructor;
+    while ( t ) {
+        if (t == what) {
+            return (true);
+        }
+        t = t.parent;
+    }
+    return (false);
+}
+
+/*function delitem(fn, l, i) {
+    for(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 (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 (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 (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 DictIter() {
+}
+
+DictIter.prototype.ll_go_next = function () {
+    var ret = this.l.length != 0;
+    this.current_key = this.l.pop();
+    return ret;
+}
+
+DictIter.prototype.ll_current_key = function () {
+    return this.current_key;
+}
+
+function dict_items_iterator(d) {
+    var d2 = new DictIter();
+    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 StringBuilder() {
+    this.l = [];
+}
+
+StringBuilder.prototype.ll_append_char = function(s) {
+    this.l.length += 1;
+    this.l[this.l.length - 1] = s;
+}
+
+StringBuilder.prototype.ll_append = function(s) {
+    this.l.push(s);
+}
+
+StringBuilder.prototype.ll_allocate = function(t) {
+}
+
+StringBuilder.prototype.ll_build = function() {
+    var s;
+    s = "";
+    for (i in this.l) {
+        s += this.l[i];
+    }
+    return (s);
+}
+
+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;
+    } 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);
+    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 (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());
+}    
+// ends hand written code
+function entry_point (argv_0) {
+    var v0,v1,v2,v3,v4;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v1 = ll_getitem_nonneg__dum_nocheckConst_List_String__Signed ( argv_0,1 );
+            v2 = ll_getitem_nonneg__dum_nocheckConst_List_String__Signed ( argv_0,2 );
+            v3 = ll_int__String_Signed ( v2,10 );
+            v4 = interpret ( v1,v3 );
+            v0 = 0;
+            block = 1;
+            break;
+            case 1:
+            return ( v0 );
+        }
+    }
+}
+
+function interpret (code_0,arg_0) {
+    var v117,v118,v121,v123,state_0,v124,v125,last_exc_value_0,c_8,state_1,v126,v127,v128,state_2,v129,v130,v131,v132,state_3,v133,v134,c_9,state_4,v136,v137,c_10,state_5,v138,v139,v140,c_11,state_6,v141,v142,v143,v144,v146,v147,v148;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v118 = new rpn_State();
+            v118.meta = __consts_0.rpn_State_meta;
+            State___init__ ( v118 );
+            v118.opush(arg_0);
+            v123 = ll_striter__String ( code_0 );
+            state_0 = v118;
+            v124 = v123;
+            block = 1;
+            break;
+            case 1:
+            try {
+                v125 = ll_strnext__Record_index__Signed__string__ ( v124 );
+                c_8 = v125;
+                state_1 = state_0;
+                v126 = v124;
+                block = 2;
+                break;
+            }
+            catch (exc){
+                if (isinstanceof(exc, exceptions_StopIteration))
+                {
+                    v146 = state_0;
+                    block = 8;
+                    break;
+                }
+                throw(exc);
+            }
+            case 2:
+            v127 = ('0'<=c_8);
+            state_2 = state_1;
+            v129 = v126;
+            v130 = c_8;
+            if (v127 == false)
+            {
+                block = 3;
+                break;
+            }
+            c_9 = c_8;
+            state_4 = state_1;
+            v136 = v126;
+            block = 5;
+            break;
+            case 3:
+            v131 = (v130=='+');
+            state_0 = state_2;
+            v124 = v129;
+            if (v131 == false)
+            {
+                block = 1;
+                break;
+            }
+            state_3 = state_2;
+            v133 = v129;
+            block = 4;
+            break;
+            case 4:
+            state_3.oadd();
+            state_0 = state_3;
+            v124 = v133;
+            block = 1;
+            break;
+            case 5:
+            v137 = (c_9<='9');
+            c_10 = c_9;
+            state_5 = state_4;
+            v138 = v136;
+            v139 = v137;
+            block = 6;
+            break;
+            case 6:
+            state_2 = state_5;
+            v129 = v138;
+            v130 = c_10;
+            if (v139 == false)
+            {
+                block = 3;
+                break;
+            }
+            c_11 = c_10;
+            state_6 = state_5;
+            v141 = v138;
+            block = 7;
+            break;
+            case 7:
+            v143 = c_11.charCodeAt(0);
+            v144 = (v143-48);
+            state_6.opush(v144);
+            state_0 = state_6;
+            v124 = v141;
+            block = 1;
+            break;
+            case 8:
+            v148 = v146.ogetresult();
+            v117 = v148;
+            block = 9;
+            break;
+            case 9:
+            return ( v117 );
+        }
+    }
+}
+
+function ll_strnext__Record_index__Signed__string__ (iter_0) {
+    var v157,v158,v159,v160,v161,v162,v163,iter_1,index_3,string_1,v164,v166,v167,v168,v169,v170,etype_1,evalue_1;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v158 = iter_0.string;
+            v159 = iter_0.index;
+            v161 = v158.length;
+            v162 = (v159>=v161);
+            iter_1 = iter_0;
+            index_3 = v159;
+            string_1 = v158;
+            if (v162 == false)
+            {
+                block = 1;
+                break;
+            }
+            block = 3;
+            break;
+            case 1:
+            v164 = (index_3+1);
+            iter_1.index = v164;
+            v167 = string_1.charAt(index_3);
+            v157 = v167;
+            block = 2;
+            break;
+            case 3:
+            v168 = __consts_0.exceptions_StopIteration;
+            v169 = v168.meta;
+            etype_1 = v169;
+            evalue_1 = v168;
+            block = 4;
+            break;
+            case 4:
+            throw(evalue_1);
+            case 2:
+            return ( v157 );
+        }
+    }
+}
+
+function rpn_State () {
+    this.ostack = __consts_0.const_list;
+}
+
+rpn_State.prototype.toString = function (){
+    return ( '<rpn.State object>' );
+}
+
+inherits(rpn_State,Object);
+rpn_State.prototype.oadd = function (){
+    var v172,v173,v174,v175,v176,v177,v178,v179,v180;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v172 = this.ostack;
+            v174 = ll_pop_default__dum_nocheckConst_List_Signed_ ( v172 );
+            v175 = this.ostack;
+            v177 = ll_pop_default__dum_nocheckConst_List_Signed_ ( v175 );
+            v178 = this.ostack;
+            v180 = (v177+v174);
+            ll_append__List_Signed__Signed ( v178,v180 );
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+rpn_State.prototype.ogetresult = function (){
+    var v202,v203,v204;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v203 = this.ostack;
+            v204 = ll_getitem__dum_nocheckConst_List_Signed__Signed ( v203,-1 );
+            v202 = v204;
+            block = 1;
+            break;
+            case 1:
+            return ( v202 );
+        }
+    }
+}
+
+rpn_State.prototype.opush = function (value_0){
+    var v220,v221;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v220 = this.ostack;
+            ll_append__List_Signed__Signed ( v220,value_0 );
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+rpn_State.prototype.o__init__ = function (){
+    var v150;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v150 = new Array();
+            v150.length = 0;
+            this.ostack = v150;
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+function ll_getitem_nonneg__dum_nocheckConst_List_String__Signed (l_0,index_0) {
+    var v5,v6,l_1,index_1,v8,v9,v10,index_2,v12,v13,v14;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v6 = (index_0>=0);
+            l_1 = l_0;
+            index_1 = index_0;
+            block = 1;
+            break;
+            case 1:
+            v9 = l_1.length;
+            v10 = (index_1<v9);
+            index_2 = index_1;
+            v12 = l_1;
+            block = 2;
+            break;
+            case 2:
+            v14 = v12[index_2];
+            v5 = v14;
+            block = 3;
+            break;
+            case 3:
+            return ( v5 );
+        }
+    }
+}
+
+function Object_meta () {
+    this.class_ = __consts_0.None;
+}
+
+Object_meta.prototype.toString = function (){
+    return ( '<Object_meta object>' );
+}
+
+function rpn_State_meta () {
+}
+
+rpn_State_meta.prototype.toString = function (){
+    return ( '<rpn.State_meta object>' );
+}
+
+inherits(rpn_State_meta,Object_meta);
+function ll_pop_default__dum_nocheckConst_List_Signed_ (l_2) {
+    var v182,v183,v184,l_3,length_0,v185,v187,v188,v189,res_0,newlength_0,v191,v192;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v184 = l_2.length;
+            l_3 = l_2;
+            length_0 = v184;
+            block = 1;
+            break;
+            case 1:
+            v185 = (length_0>0);
+            v187 = (length_0-1);
+            v189 = l_3[v187];
+            ll_null_item__List_Signed_ ( l_3 );
+            res_0 = v189;
+            newlength_0 = v187;
+            v191 = l_3;
+            block = 2;
+            break;
+            case 2:
+            v191.length = newlength_0;
+            v182 = res_0;
+            block = 3;
+            break;
+            case 3:
+            return ( v182 );
+        }
+    }
+}
+
+function exceptions_Exception () {
+}
+
+exceptions_Exception.prototype.toString = function (){
+    return ( '<exceptions.Exception object>' );
+}
+
+inherits(exceptions_Exception,Object);
+function ll_getitem__dum_nocheckConst_List_Signed__Signed (l_5,index_4) {
+    var v205,v206,v207,v208,v209,l_6,index_5,length_1,v210,v212,index_6,v214,v215,v216,l_7,length_2,v217,v218;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v207 = l_5.length;
+            v208 = (index_4<0);
+            l_6 = l_5;
+            index_5 = index_4;
+            length_1 = v207;
+            if (v208 == false)
+            {
+                block = 1;
+                break;
+            }
+            l_7 = l_5;
+            length_2 = v207;
+            v217 = index_4;
+            block = 4;
+            break;
+            case 1:
+            v210 = (index_5>=0);
+            v212 = (index_5<length_1);
+            index_6 = index_5;
+            v214 = l_6;
+            block = 2;
+            break;
+            case 2:
+            v216 = v214[index_6];
+            v205 = v216;
+            block = 3;
+            break;
+            case 4:
+            v218 = (v217+length_2);
+            l_6 = l_7;
+            index_5 = v218;
+            length_1 = length_2;
+            block = 1;
+            break;
+            case 3:
+            return ( v205 );
+        }
+    }
+}
+
+function ll_append__List_Signed__Signed (l_4,newitem_0) {
+    var v195,v196,v197,v198,v200;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v196 = l_4.length;
+            v198 = (v196+1);
+            l_4.length = v198;
+            l_4[v196]=newitem_0;
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+function ll_int__String_Signed (s_0,base_0) {
+    var v15,v16,v17,v18,v19,v20,etype_0,evalue_0,s_1,base_1,v21,s_2,base_2,v22,v23,s_3,base_3,v24,v25,s_4,base_4,i_0,strlen_0,v26,v27,s_5,base_5,i_1,strlen_1,v28,v29,v30,v31,v32,s_6,base_6,i_2,strlen_2,v33,v34,v35,v36,s_7,base_7,i_3,strlen_3,v37,v38,v39,v40,s_8,base_8,i_4,sign_0,strlen_4,v41,v42,s_9,base_9,val_0,i_5,sign_1,oldpos_0,strlen_5,v43,v44,s_10,val_1,i_6,sign_2,strlen_6,v45,v46,v47,s_11,val_2,i_7,sign_3,strlen_7,v48,v49,val_3,sign_4,v50,v51,v52,v53,v54,v55,v56,v57,v58,v59,s_12,val_4,i_8,sign_5,strlen_8,v60,v61,v62,v63,s_13,val_5,sign_6,strlen_9,v64,v65,v66,v67,v68,s_14,base_10,val_6,i_9,sign_7,oldpos_1,strlen_10,v69,v70,v71,v72,v73,s_15,base_11,c_0,val_7,i_10,sign_8,oldpos_2,strlen_11,v74,v75,s_16,base_12,c_1,val_8,i_11,sign_9,oldpos_3,strlen_12,v76,v77,s_17,base_13,c_2,val_9,i_12,sign_10,oldpos_4,strlen_13,v78,s_18,base_14,c_3,val_10,i_13,sign_11,oldpos_5,strlen_14,v79,v80,s_19,base_15,val_11,i_14,sign_12,oldpos_6,strlen_15,v81,v82,s_20,base_16,val_12,i_15,digit_0,sign_13,oldpos_7,strlen_16,v83,v84,s_21,base_17,i_16,digit_1,sign_14,oldpos_8,strlen_17,v85,v86,v87,v88,s_22,base_18,c_4,val_13,i_17,sign_15,oldpos_9,strlen_18,v89,s_23,base_19,c_5,val_14,i_18,sign_16,oldpos_10,strlen_19,v90,v91,s_24,base_20,val_15,i_19,sign_17,oldpos_11,strlen_20,v92,v93,v94,s_25,base_21,c_6,val_16,i_20,sign_18,oldpos_12,strlen_21,v95,s_26,base_22,c_7,val_17,i_21,sign_19,oldpos_13,strlen_22,v96,v97,s_27,base_23,val_18,i_22,sign_20,oldpos_14,strlen_23,v98,v99,v100,s_28,base_24,i_23,sign_21,strlen_24,v101,v102,v103,v104,s_29,base_25,sign_22,strlen_25,v105,v106,s_30,base_26,strlen_26,v107,v108,s_31,base_27,strlen_27,v109,v110,s_32,base_28,i_24,strlen_28,v111,v112,v113,v114,s_33,base_29,strlen_29,v115,v116;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v16 = (2<=base_0);
+            if (v16 == false)
+            {
+                block = 1;
+                break;
+            }
+            s_1 = s_0;
+            base_1 = base_0;
+            block = 3;
+            break;
+            case 1:
+            v18 = __consts_0.exceptions_ValueError;
+            v19 = v18.meta;
+            etype_0 = v19;
+            evalue_0 = v18;
+            block = 2;
+            break;
+            case 3:
+            v21 = (base_1<=36);
+            s_2 = s_1;
+            base_2 = base_1;
+            v22 = v21;
+            block = 4;
+            break;
+            case 4:
+            if (v22 == false)
+            {
+                block = 1;
+                break;
+            }
+            s_3 = s_2;
+            base_3 = base_2;
+            block = 5;
+            break;
+            case 5:
+            v25 = s_3.length;
+            s_4 = s_3;
+            base_4 = base_3;
+            i_0 = 0;
+            strlen_0 = v25;
+            block = 6;
+            break;
+            case 6:
+            v26 = (i_0<strlen_0);
+            s_5 = s_4;
+            base_5 = base_4;
+            i_1 = i_0;
+            strlen_1 = strlen_0;
+            if (v26 == false)
+            {
+                block = 7;
+                break;
+            }
+            s_32 = s_4;
+            base_28 = base_4;
+            i_24 = i_0;
+            strlen_28 = strlen_0;
+            block = 40;
+            break;
+            case 7:
+            v28 = (i_1<strlen_1);
+            if (v28 == false)
+            {
+                block = 8;
+                break;
+            }
+            s_6 = s_5;
+            base_6 = base_5;
+            i_2 = i_1;
+            strlen_2 = strlen_1;
+            block = 9;
+            break;
+            case 8:
+            v30 = __consts_0.exceptions_ValueError;
+            v31 = v30.meta;
+            etype_0 = v31;
+            evalue_0 = v30;
+            block = 2;
+            break;
+            case 9:
+            v34 = s_6.charAt(i_2);
+            v35 = (v34=='-');
+            s_7 = s_6;
+            base_7 = base_6;
+            i_3 = i_2;
+            strlen_3 = strlen_2;
+            if (v35 == false)
+            {
+                block = 10;
+                break;
+            }
+            s_31 = s_6;
+            base_27 = base_6;
+            strlen_27 = strlen_2;
+            v109 = i_2;
+            block = 39;
+            break;
+            case 10:
+            v38 = s_7.charAt(i_3);
+            v39 = (v38=='+');
+            s_8 = s_7;
+            base_8 = base_7;
+            i_4 = i_3;
+            sign_0 = 1;
+            strlen_4 = strlen_3;
+            if (v39 == false)
+            {
+                block = 11;
+                break;
+            }
+            s_30 = s_7;
+            base_26 = base_7;
+            strlen_26 = strlen_3;
+            v107 = i_3;
+            block = 38;
+            break;
+            case 11:
+            v41 = (i_4<strlen_4);
+            s_9 = s_8;
+            base_9 = base_8;
+            val_0 = 0;
+            i_5 = i_4;
+            sign_1 = sign_0;
+            oldpos_0 = i_4;
+            strlen_5 = strlen_4;
+            if (v41 == false)
+            {
+                block = 12;
+                break;
+            }
+            s_28 = s_8;
+            base_24 = base_8;
+            i_23 = i_4;
+            sign_21 = sign_0;
+            strlen_24 = strlen_4;
+            block = 36;
+            break;
+            case 12:
+            v43 = (i_5<strlen_5);
+            s_10 = s_9;
+            val_1 = val_0;
+            i_6 = i_5;
+            sign_2 = sign_1;
+            strlen_6 = strlen_5;
+            v45 = oldpos_0;
+            if (v43 == false)
+            {
+                block = 13;
+                break;
+            }
+            s_14 = s_9;
+            base_10 = base_9;
+            val_6 = val_0;
+            i_9 = i_5;
+            sign_7 = sign_1;
+            oldpos_1 = oldpos_0;
+            strlen_10 = strlen_5;
+            block = 22;
+            break;
+            case 13:
+            v46 = (i_6==v45);
+            s_11 = s_10;
+            val_2 = val_1;
+            i_7 = i_6;
+            sign_3 = sign_2;
+            strlen_7 = strlen_6;
+            if (v46 == false)
+            {
+                block = 14;
+                break;
+            }
+            block = 21;
+            break;
+            case 14:
+            v48 = (i_7<strlen_7);
+            val_3 = val_2;
+            sign_4 = sign_3;
+            v50 = i_7;
+            v51 = strlen_7;
+            if (v48 == false)
+            {
+                block = 15;
+                break;
+            }
+            s_12 = s_11;
+            val_4 = val_2;
+            i_8 = i_7;
+            sign_5 = sign_3;
+            strlen_8 = strlen_7;
+            block = 19;
+            break;
+            case 15:
+            v52 = (v50==v51);
+            if (v52 == false)
+            {
+                block = 16;
+                break;
+            }
+            v57 = sign_4;
+            v58 = val_3;
+            block = 17;
+            break;
+            case 16:
+            v54 = __consts_0.exceptions_ValueError;
+            v55 = v54.meta;
+            etype_0 = v55;
+            evalue_0 = v54;
+            block = 2;
+            break;
+            case 17:
+            v59 = (v57*v58);
+            v15 = v59;
+            block = 18;
+            break;
+            case 19:
+            v61 = s_12.charAt(i_8);
+            v62 = (v61==' ');
+            val_3 = val_4;
+            sign_4 = sign_5;
+            v50 = i_8;
+            v51 = strlen_8;
+            if (v62 == false)
+            {
+                block = 15;
+                break;
+            }
+            s_13 = s_12;
+            val_5 = val_4;
+            sign_6 = sign_5;
+            strlen_9 = strlen_8;
+            v64 = i_8;
+            block = 20;
+            break;
+            case 20:
+            v65 = (v64+1);
+            s_11 = s_13;
+            val_2 = val_5;
+            i_7 = v65;
+            sign_3 = sign_6;
+            strlen_7 = strlen_9;
+            block = 14;
+            break;
+            case 21:
+            v66 = __consts_0.exceptions_ValueError;
+            v67 = v66.meta;
+            etype_0 = v67;
+            evalue_0 = v66;
+            block = 2;
+            break;
+            case 22:
+            v70 = s_14.charAt(i_9);
+            v71 = v70.charCodeAt(0);
+            v72 = (97<=v71);
+            s_15 = s_14;
+            base_11 = base_10;
+            c_0 = v71;
+            val_7 = val_6;
+            i_10 = i_9;
+            sign_8 = sign_7;
+            oldpos_2 = oldpos_1;
+            strlen_11 = strlen_10;
+            if (v72 == false)
+            {
+                block = 23;
+                break;
+            }
+            s_25 = s_14;
+            base_21 = base_10;
+            c_6 = v71;
+            val_16 = val_6;
+            i_20 = i_9;
+            sign_18 = sign_7;
+            oldpos_12 = oldpos_1;
+            strlen_21 = strlen_10;
+            block = 33;
+            break;
+            case 23:
+            v74 = (65<=c_0);
+            s_16 = s_15;
+            base_12 = base_11;
+            c_1 = c_0;
+            val_8 = val_7;
+            i_11 = i_10;
+            sign_9 = sign_8;
+            oldpos_3 = oldpos_2;
+            strlen_12 = strlen_11;
+            if (v74 == false)
+            {
+                block = 24;
+                break;
+            }
+            s_22 = s_15;
+            base_18 = base_11;
+            c_4 = c_0;
+            val_13 = val_7;
+            i_17 = i_10;
+            sign_15 = sign_8;
+            oldpos_9 = oldpos_2;
+            strlen_18 = strlen_11;
+            block = 30;
+            break;
+            case 24:
+            v76 = (48<=c_1);
+            s_10 = s_16;
+            val_1 = val_8;
+            i_6 = i_11;
+            sign_2 = sign_9;
+            strlen_6 = strlen_12;
+            v45 = oldpos_3;
+            if (v76 == false)
+            {
+                block = 13;
+                break;
+            }
+            s_17 = s_16;
+            base_13 = base_12;
+            c_2 = c_1;
+            val_9 = val_8;
+            i_12 = i_11;
+            sign_10 = sign_9;
+            oldpos_4 = oldpos_3;
+            strlen_13 = strlen_12;
+            block = 25;
+            break;
+            case 25:
+            v78 = (c_2<=57);
+            s_18 = s_17;
+            base_14 = base_13;
+            c_3 = c_2;
+            val_10 = val_9;
+            i_13 = i_12;
+            sign_11 = sign_10;
+            oldpos_5 = oldpos_4;
+            strlen_14 = strlen_13;
+            v79 = v78;
+            block = 26;
+            break;
+            case 26:
+            s_10 = s_18;
+            val_1 = val_10;
+            i_6 = i_13;
+            sign_2 = sign_11;
+            strlen_6 = strlen_14;
+            v45 = oldpos_5;
+            if (v79 == false)
+            {
+                block = 13;
+                break;
+            }
+            s_19 = s_18;
+            base_15 = base_14;
+            val_11 = val_10;
+            i_14 = i_13;
+            sign_12 = sign_11;
+            oldpos_6 = oldpos_5;
+            strlen_15 = strlen_14;
+            v81 = c_3;
+            block = 27;
+            break;
+            case 27:
+            v82 = (v81-48);
+            s_20 = s_19;
+            base_16 = base_15;
+            val_12 = val_11;
+            i_15 = i_14;
+            digit_0 = v82;
+            sign_13 = sign_12;
+            oldpos_7 = oldpos_6;
+            strlen_16 = strlen_15;
+            block = 28;
+            break;
+            case 28:
+            v83 = (digit_0>=base_16);
+            s_21 = s_20;
+            base_17 = base_16;
+            i_16 = i_15;
+            digit_1 = digit_0;
+            sign_14 = sign_13;
+            oldpos_8 = oldpos_7;
+            strlen_17 = strlen_16;
+            v85 = val_12;
+            if (v83 == false)
+            {
+                block = 29;
+                break;
+            }
+            s_10 = s_20;
+            val_1 = val_12;
+            i_6 = i_15;
+            sign_2 = sign_13;
+            strlen_6 = strlen_16;
+            v45 = oldpos_7;
+            block = 13;
+            break;
+            case 29:
+            v86 = (v85*base_17);
+            v87 = (v86+digit_1);
+            v88 = (i_16+1);
+            s_9 = s_21;
+            base_9 = base_17;
+            val_0 = v87;
+            i_5 = v88;
+            sign_1 = sign_14;
+            oldpos_0 = oldpos_8;
+            strlen_5 = strlen_17;
+            block = 12;
+            break;
+            case 30:
+            v89 = (c_4<=90);
+            s_23 = s_22;
+            base_19 = base_18;
+            c_5 = c_4;
+            val_14 = val_13;
+            i_18 = i_17;
+            sign_16 = sign_15;
+            oldpos_10 = oldpos_9;
+            strlen_19 = strlen_18;
+            v90 = v89;
+            block = 31;
+            break;
+            case 31:
+            s_16 = s_23;
+            base_12 = base_19;
+            c_1 = c_5;
+            val_8 = val_14;
+            i_11 = i_18;
+            sign_9 = sign_16;
+            oldpos_3 = oldpos_10;
+            strlen_12 = strlen_19;
+            if (v90 == false)
+            {
+                block = 24;
+                break;
+            }
+            s_24 = s_23;
+            base_20 = base_19;
+            val_15 = val_14;
+            i_19 = i_18;
+            sign_17 = sign_16;
+            oldpos_11 = oldpos_10;
+            strlen_20 = strlen_19;
+            v92 = c_5;
+            block = 32;
+            break;
+            case 32:
+            v93 = (v92-65);
+            v94 = (v93+10);
+            s_20 = s_24;
+            base_16 = base_20;
+            val_12 = val_15;
+            i_15 = i_19;
+            digit_0 = v94;
+            sign_13 = sign_17;
+            oldpos_7 = oldpos_11;
+            strlen_16 = strlen_20;
+            block = 28;
+            break;
+            case 33:
+            v95 = (c_6<=122);
+            s_26 = s_25;
+            base_22 = base_21;
+            c_7 = c_6;
+            val_17 = val_16;
+            i_21 = i_20;
+            sign_19 = sign_18;
+            oldpos_13 = oldpos_12;
+            strlen_22 = strlen_21;
+            v96 = v95;
+            block = 34;
+            break;
+            case 34:
+            s_15 = s_26;
+            base_11 = base_22;
+            c_0 = c_7;
+            val_7 = val_17;
+            i_10 = i_21;
+            sign_8 = sign_19;
+            oldpos_2 = oldpos_13;
+            strlen_11 = strlen_22;
+            if (v96 == false)
+            {
+                block = 23;
+                break;
+            }
+            s_27 = s_26;
+            base_23 = base_22;
+            val_18 = val_17;
+            i_22 = i_21;
+            sign_20 = sign_19;
+            oldpos_14 = oldpos_13;
+            strlen_23 = strlen_22;
+            v98 = c_7;
+            block = 35;
+            break;
+            case 35:
+            v99 = (v98-97);
+            v100 = (v99+10);
+            s_20 = s_27;
+            base_16 = base_23;
+            val_12 = val_18;
+            i_15 = i_22;
+            digit_0 = v100;
+            sign_13 = sign_20;
+            oldpos_7 = oldpos_14;
+            strlen_16 = strlen_23;
+            block = 28;
+            break;
+            case 36:
+            v102 = s_28.charAt(i_23);
+            v103 = (v102==' ');
+            s_9 = s_28;
+            base_9 = base_24;
+            val_0 = 0;
+            i_5 = i_23;
+            sign_1 = sign_21;
+            oldpos_0 = i_23;
+            strlen_5 = strlen_24;
+            if (v103 == false)
+            {
+                block = 12;
+                break;
+            }
+            s_29 = s_28;
+            base_25 = base_24;
+            sign_22 = sign_21;
+            strlen_25 = strlen_24;
+            v105 = i_23;
+            block = 37;
+            break;
+            case 37:
+            v106 = (v105+1);
+            s_8 = s_29;
+            base_8 = base_25;
+            i_4 = v106;
+            sign_0 = sign_22;
+            strlen_4 = strlen_25;
+            block = 11;
+            break;
+            case 38:
+            v108 = (v107+1);
+            s_8 = s_30;
+            base_8 = base_26;
+            i_4 = v108;
+            sign_0 = 1;
+            strlen_4 = strlen_26;
+            block = 11;
+            break;
+            case 39:
+            v110 = (v109+1);
+            s_8 = s_31;
+            base_8 = base_27;
+            i_4 = v110;
+            sign_0 = -1;
+            strlen_4 = strlen_27;
+            block = 11;
+            break;
+            case 40:
+            v112 = s_32.charAt(i_24);
+            v113 = (v112==' ');
+            s_5 = s_32;
+            base_5 = base_28;
+            i_1 = i_24;
+            strlen_1 = strlen_28;
+            if (v113 == false)
+            {
+                block = 7;
+                break;
+            }
+            s_33 = s_32;
+            base_29 = base_28;
+            strlen_29 = strlen_28;
+            v115 = i_24;
+            block = 41;
+            break;
+            case 41:
+            v116 = (v115+1);
+            s_4 = s_33;
+            base_4 = base_29;
+            i_0 = v116;
+            strlen_0 = strlen_29;
+            block = 6;
+            break;
+            case 2:
+            throw(evalue_0);
+            case 18:
+            return ( v15 );
+        }
+    }
+}
+
+function ll_null_item__List_Signed_ (lst_0) {
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            undefined;
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+function exceptions_StandardError () {
+}
+
+exceptions_StandardError.prototype.toString = function (){
+    return ( '<exceptions.StandardError object>' );
+}
+
+inherits(exceptions_StandardError,exceptions_Exception);
+function exceptions_ValueError () {
+}
+
+exceptions_ValueError.prototype.toString = function (){
+    return ( '<exceptions.ValueError object>' );
+}
+
+inherits(exceptions_ValueError,exceptions_StandardError);
+function State___init__ (self_0) {
+    var v150;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v150 = new Array();
+            v150.length = 0;
+            self_0.ostack = v150;
+            block = 1;
+            break;
+            case 1:
+            return ( undefined );
+        }
+    }
+}
+
+function ll_striter__String (string_0) {
+    var v153,v154;
+    var block = 0;
+    for(;;){
+        switch(block){
+            case 0:
+            v154 = new Object();
+            v154.string = string_0;
+            v154.index = 0;
+            v153 = v154;
+            block = 1;
+            break;
+            case 1:
+            return ( v153 );
+        }
+    }
+}
+
+function exceptions_StopIteration () {
+}
+
+exceptions_StopIteration.prototype.toString = function (){
+    return ( '<exceptions.StopIteration object>' );
+}
+
+inherits(exceptions_StopIteration,exceptions_Exception);
+function exceptions_Exception_meta () {
+}
+
+exceptions_Exception_meta.prototype.toString = function (){
+    return ( '<exceptions.Exception_meta object>' );
+}
+
+inherits(exceptions_Exception_meta,Object_meta);
+function exceptions_StandardError_meta () {
+}
+
+exceptions_StandardError_meta.prototype.toString = function (){
+    return ( '<exceptions.StandardError_meta object>' );
+}
+
+inherits(exceptions_StandardError_meta,exceptions_Exception_meta);
+function exceptions_StopIteration_meta () {
+}
+
+exceptions_StopIteration_meta.prototype.toString = function (){
+    return ( '<exceptions.StopIteration_meta object>' );
+}
+
+inherits(exceptions_StopIteration_meta,exceptions_Exception_meta);
+function exceptions_ValueError_meta () {
+}
+
+exceptions_ValueError_meta.prototype.toString = function (){
+    return ( '<exceptions.ValueError_meta object>' );
+}
+
+inherits(exceptions_ValueError_meta,exceptions_StandardError_meta);
+__consts_0 = {};
+__consts_0.exceptions_ValueError__5 = exceptions_ValueError;
+__consts_0.exceptions_ValueError_meta = new exceptions_ValueError_meta();
+__consts_0.exceptions_ValueError = new exceptions_ValueError();
+__consts_0.exceptions_StopIteration__7 = exceptions_StopIteration;
+__consts_0.rpn_State = rpn_State;
+__consts_0.rpn_State_meta = new rpn_State_meta();
+__consts_0.exceptions_StopIteration_meta = new exceptions_StopIteration_meta();
+__consts_0.exceptions_StopIteration = new exceptions_StopIteration();
+__consts_0.const_list = undefined;
+__consts_0.exceptions_ValueError_meta.class_ = __consts_0.exceptions_ValueError__5;
+__consts_0.exceptions_ValueError.meta = __consts_0.exceptions_ValueError_meta;
+__consts_0.rpn_State_meta.class_ = __consts_0.rpn_State;
+__consts_0.exceptions_StopIteration_meta.class_ = __consts_0.exceptions_StopIteration__7;
+__consts_0.exceptions_StopIteration.meta = __consts_0.exceptions_StopIteration_meta;

Added: pypy/extradoc/talk/sfi2008/demo/rpn.py
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/rpn.py	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,47 @@
+from pypy.rlib.jit import hint
+
+# ____________________________________________________________
+
+class State:
+
+    def __init__(self):
+        self.stack = []
+
+    def push(self, value):
+        self.stack.append(value)
+
+    def add(self):
+        y = self.stack.pop()
+        x = self.stack.pop()
+        self.stack.append(x + y)
+
+    def getresult(self):
+        return self.stack[-1]
+
+
+def interpret(code, arg):
+    state = State()
+    state.push(arg)
+    i = 0
+    while i < len(code):
+        c = code[i]
+        i = i + 1
+        c = hint(c, concrete=True)       #  hint for the JIT
+        if '0' <= c <= '9':
+            state.push(ord(c) - ord('0'))
+        elif c == '+':
+            state.add()
+    return state.getresult()
+
+# ____________________________________________________________
+
+def test_run():
+    assert interpret("2 4 + + 3 +", 100) == 109
+
+def test_lltype():
+    from pypy.translator.interactive import Translation
+    t = Translation(interpret)
+    t.annotate([str, int])
+    t.viewcg()
+    t.rtype(type_system="lltype")
+    t.viewcg()

Added: pypy/extradoc/talk/sfi2008/demo/targetrpn.py
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/targetrpn.py	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,14 @@
+import rpn
+
+# __________  Entry point  __________
+
+def entry_point(argv):
+    code = argv[1]
+    arg = int(argv[2])
+    res = rpn.interpret(code, arg)
+    return 0
+
+# _____ Define and setup target ___
+
+def target(*args):
+    return entry_point, None

Added: pypy/extradoc/talk/sfi2008/demo/view-jit-graphs
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/sfi2008/demo/view-jit-graphs	Wed Mar  5 11:32:00 2008
@@ -0,0 +1,16 @@
+#! /usr/bin/env python
+
+impo