[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