From tismer at centera.de Sun Jul 18 18:07:31 2004 From: tismer at centera.de (Christian Tismer) Date: Sun, 18 Jul 2004 18:07:31 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/zlib-1.2.1 zlib1.res, 1.1.1.1, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/zlib-1.2.1 In directory centera.de:/tmp/cvs-serv30234/zlib-1.2.1 Removed Files: zlib1.res Log Message: cleanups, vcproj for testbench --- zlib1.res DELETED --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 9 01:16:01 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 09 Jul 2004 01:16:01 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Objects descrobject.c, 1.16, 1.17 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Objects In directory centera.de:/tmp/cvs-serv15690/Objects Modified Files: descrobject.c Log Message: new channel methods are already there. Meanwhile I had hacked something at home, and I don't know if it is related. Anyway, I get a crash, now. Index: descrobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Objects/descrobject.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** a/descrobject.c 2 Jun 2004 23:03:42 -0000 1.16 --- b/descrobject.c 8 Jul 2004 23:15:59 -0000 1.17 *************** *** 601,605 **** }; ! STACKLESS_DECLARE_METHOD(&PyWrapperDescr_Type, tp_call) static PyDescrObject * --- 601,605 ---- }; ! //STACKLESS_DECLARE_METHOD(&PyWrapperDescr_Type, tp_call) static PyDescrObject * _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 19 01:20:14 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 19 Jul 2004 01:20:14 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core slp_transfer.c, 1.27, 1.28 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv7578/core Modified Files: slp_transfer.c Log Message: started to add real stack switching. I generated some similar slp_switch_stack implementations from the existing includes. Alas, I have no real clue yet, how this will fit the system. There is just a wrong dummy which is not used, yet. Index: slp_transfer.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/slp_transfer.c,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** slp_transfer.c 3 Jun 2004 18:02:11 -0000 1.27 --- slp_transfer.c 18 Jul 2004 23:20:12 -0000 1.28 *************** *** 118,120 **** --- 118,154 ---- #endif + /* experimental feature: + Doing a real stack switch. + I still have no exact clue how to fit this + into the rest of the system... + */ + + #define SLP_STACK_BEGIN(stackref, stsizediff) \ + int stsizeb; \ + \ + stackref += STACK_MAGIC; \ + if (_cstprev != NULL) { \ + if (slp_cstack_new(_cstprev, stackref, _prev) == NULL) \ + return -1; \ + stsizeb = slp_cstack_save(*_cstprev); \ + } \ + else \ + stsizeb = (_cst->startaddr - stackref) * sizeof(int*); \ + if (_cst == NULL) return 0; \ + stsizediff = stsizeb - (_cst->ob_size * sizeof(int*)); + + #define SLP_STACK_END() \ + if (_cst != NULL) { \ + slp_cstack_restore(_cst); \ + } + + #include "platf/slp_switch_stack.h" + + int + slp_transfer_stack(PyCStackObject **cstprev, PyCStackObject *cst) + { + /* this is defunct, no idea how it must be */ + return slp_switch_stack(); + } + #endif _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 19 01:20:14 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 19 Jul 2004 01:20:14 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/platf mkswitch_stack.py, NONE, 1.1 slp_switch_stack.h, NONE, 1.1 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/platf In directory centera.de:/tmp/cvs-serv7578/platf Added Files: mkswitch_stack.py slp_switch_stack.h Log Message: started to add real stack switching. I generated some similar slp_switch_stack implementations from the existing includes. Alas, I have no real clue yet, how this will fit the system. There is just a wrong dummy which is not used, yet. --- NEW FILE: mkswitch_stack.py --- """ mkswitch_stack.py Purpose: Generate an include file from the platform dependant include files mentioned in slp_platformselect.h . The existing slp_switch implementations are calling the macros slp_save_state and slp_restore_state. Now I want to support real stack switching, that is, the stack is not modified in place, but we jump to a different stack, without copying anything. This costs a lot of memory and should be used for a few high-speed tasklets, only. In order to keep things simple, I'm not special-casing the support macroes, but use a different macro set. The machine code is the same, therefore the implementation can be generated from the existing include files. We generate a new include file called slp_switch_stack.h . """ def parse_platformselect(): fin_name = "slp_platformselect.h" fin = file(fin_name) fout_name = "slp_switch_stack.h" fout = file(fout_name, "w") import sys print>>fout, "/* this file is generated by mkswitch_stack.py, don't edit */" print>>fout for line in fin: tokens = line.split() if not tokens: continue tok = tokens[0] if tok == "#endif": print>>fout, line break # done if tok in ("#if", "#elif"): print>>fout, line elif tok == "#include": finc_name = tokens[1][1:-1] txt = parse_switch(finc_name) print>>fout, txt edits = ( ("slp_switch", "slp_switch_stack"), ("SLP_SAVE_STATE", "SLP_STACK_BEGIN"), ("SLP_RESTORE_STATE", "SLP_STACK_END"), ) def parse_switch(fname): f = file(fname) res = [] for line in f: if line.strip() == "static int": res.append(line) break for line in f: res.append(line) if line.rstrip() == "}": break # end of procedure. # now substitute s = "".join(res) for txt, repl in edits: s = s.replace(txt, repl) return s if __name__ == "__main__": parse_platformselect() --- NEW FILE: slp_switch_stack.h --- /* this file is generated by mkswitch_stack.py, don't edit */ #if defined(MS_WIN32) && !defined(MS_WIN64) && defined(_M_IX86) static int slp_switch_stack(void) { register int *stackref, stsizediff; __asm mov stackref, esp; /* modify EBX, ESI and EDI in order to get them preserved */ __asm mov ebx, ebx; __asm xchg esi, edi; { SLP_STACK_BEGIN(stackref, stsizediff); __asm { mov eax, stsizediff add esp, eax add ebp, eax } SLP_STACK_END(); return 0; } } #elif defined(__GNUC__) && defined(__i386__) static int slp_switch_stack(void) { register int *stackref, stsizediff; __asm__ volatile ("" : : : "ebx", "esi", "edi"); __asm__ ("movl %%esp, %0" : "=g" (stackref)); { SLP_STACK_BEGIN(stackref, stsizediff); __asm__ volatile ( "addl %0, %%esp\n" "addl %0, %%ebp\n" : : "r" (stsizediff) ); SLP_STACK_END(); return 0; } __asm__ volatile ("" : : : "ebx", "esi", "edi"); } #elif defined(__GNUC__) && defined(__PPC__) && defined(__linux__) static int slp_switch_stack(void) { register int *stackref, stsizediff; __asm__ volatile ("" : : : REGS_TO_SAVE); __asm__ ("mr %0, 1" : "=g" (stackref) : ); { SLP_STACK_BEGIN(stackref, stsizediff); __asm__ volatile ( "mr 11, %0\n" "add 1, 1, 11\n" "add 30, 30, 11\n" : /* no outputs */ : "g" (stsizediff) : "11" ); SLP_STACK_END(); return 0; } __asm__ volatile ("" : : : REGS_TO_SAVE); } #elif defined(__GNUC__) && defined(__ppc__) && defined(__APPLE__) static int slp_switch_stack(void) { static int x = 0; register int *stackref, stsizediff; __asm__ volatile ( "; asm block 1\n" : /* no outputs */ : "r" (x) : REGS_TO_SAVE ); __asm__ ("; asm block 2\n\tmr %0, r1" : "=g" (stackref) : ); { SLP_STACK_BEGIN(stackref, stsizediff); __asm__ volatile ( "; asm block 3\n" "\tmr r11, %0\n" "\tadd r1, r1, r11\n" "\tadd r30, r30, r11\n" : /* no outputs */ : "g" (stsizediff) : "r11" ); SLP_STACK_END(); return 0; } } #elif defined(__GNUC__) && defined(sparc) && defined(sun) static int slp_switch_stack(void) { register int *stackref, stsizediff; /* Put the stack pointer into stackref */ /* Sparc special: at first, flush register windows */ __asm__ volatile ( "ta %1\n\t" "mov %%sp, %0" : "=r" (stackref) : "i" (ST_FLUSH_WINDOWS)); { /* You shalt put SLP_STACK_BEGIN into a local block */ SLP_STACK_BEGIN(stackref, stsizediff); /* Increment stack and frame pointer by stsizediff */ /* Sparc special: at first load new return address. This cannot be done later, because the stack might be overwritten again just after SLP_STACK_END has finished. BTW: All other registers (l0-l7 and i0-i5) might be clobbered too. */ __asm__ volatile ( "ld [%0+60], %%i7\n\t" "add %1, %%sp, %%sp\n\t" "add %1, %%fp, %%fp" : : "r" (_cst->stack), "r" (stsizediff) : "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7", "%i0", "%i1", "%i2", "%i3", "%i4", "%i5"); SLP_STACK_END(); /* Run far away as fast as possible, don't look back at the sins. * The LORD rained down burning sulfur on Sodom and Gomorra ... */ /* Sparc special: Must make it *very* clear to the CPU that it shouldn't look back into the register windows */ __asm__ volatile ( "ta %0" : : "i" (ST_CLEAN_WINDOWS)); return 0; } } #elif defined(__GNUC__) && defined(__s390__) && defined(__linux__) static int slp_switch_stack(void) { register int *stackref, stsizediff; __asm__ volatile ("" : : : REGS_TO_SAVE); __asm__ ("lr %0, 15" : "=g" (stackref) : ); { SLP_STACK_BEGIN(stackref, stsizediff); __asm__ volatile ( "ar 15, %0" : /* no outputs */ : "g" (stsizediff) ); SLP_STACK_END(); return 0; } __asm__ volatile ("" : : : REGS_TO_SAVE); } #elif defined(__GNUC__) && defined(__s390x__) && defined(__linux__) static int slp_switch_stack(void) { register int *stackref, stsizediff; __asm__ volatile ("" : : : REGS_TO_SAVE); __asm__ ("lr %0, 15" : "=g" (stackref) : ); { SLP_STACK_BEGIN(stackref, stsizediff); __asm__ volatile ( "ar 15, %0" : /* no outputs */ : "g" (stsizediff) ); SLP_STACK_END(); return 0; } __asm__ volatile ("" : : : REGS_TO_SAVE); } #endif _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 16 20:28:08 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 16 Jul 2004 20:28:08 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild psyco.vcproj, 1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv2020/PCbuild Modified Files: psyco.vcproj Log Message: missing bits for release mode Index: psyco.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/psyco.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** psyco.vcproj 15 Jul 2004 18:35:18 -0000 1.1 --- psyco.vcproj 16 Jul 2004 18:28:04 -0000 1.2 *************** *** 42,46 **** Name="VCLinkerTool" AdditionalDependencies="odbc32.lib odbccp32.lib" ! OutputFile="./psyco.pyd" LinkIncremental="1" SuppressStartupBanner="TRUE" --- 42,46 ---- Name="VCLinkerTool" AdditionalDependencies="odbc32.lib odbccp32.lib" ! OutputFile="./_psyco.pyd" LinkIncremental="1" SuppressStartupBanner="TRUE" _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:35:21 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:35:21 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild _bsddb.vcproj, NONE, 1.1 _csv.vcproj, NONE, 1.1 _socket.vcproj, NONE, 1.1 _sre.vcproj, NONE, 1.1 _ssl.vcproj, NONE, 1.1 _symtable.vcproj, NONE, 1.1 _testcapi.vcproj, NONE, 1.1 _tkinter.vcproj, NONE, 1.1 bz2.vcproj, NONE, 1.1 datetime.vcproj, NONE, 1.1 make_versioninfo.vcproj, NONE, 1.1 mmap.vcproj, NONE, 1.1 parser.vcproj, NONE, 1.1 pcbuild.sln, NONE, 1.1 psyco.vcproj, NONE, 1.1 pyexpat.vcproj, NONE, 1.1 python.vcproj, NONE, 1.1 pythoncore.vcproj, NONE, 1.1 pythonw.vcproj, NONE, 1.1 select.vcproj, NONE, 1.1 unicodedata.vcproj, NONE, 1.1 w9xpopen.vcproj, NONE, 1.1 winreg.vcproj, NONE, 1.1 winsound.vcproj, NONE, 1.1 zlib.vcproj, NONE, 1.1 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv31817/PCbuild Added Files: _bsddb.vcproj _csv.vcproj _socket.vcproj _sre.vcproj _ssl.vcproj _symtable.vcproj _testcapi.vcproj _tkinter.vcproj bz2.vcproj datetime.vcproj make_versioninfo.vcproj mmap.vcproj parser.vcproj pcbuild.sln psyco.vcproj pyexpat.vcproj python.vcproj pythoncore.vcproj pythonw.vcproj select.vcproj unicodedata.vcproj w9xpopen.vcproj winreg.vcproj winsound.vcproj zlib.vcproj Log Message: added psyco to supported modules --- NEW FILE: _bsddb.vcproj --- --- NEW FILE: _csv.vcproj --- --- NEW FILE: _socket.vcproj --- --- NEW FILE: _sre.vcproj --- --- NEW FILE: _ssl.vcproj --- --- NEW FILE: _symtable.vcproj --- --- NEW FILE: _testcapi.vcproj --- --- NEW FILE: _tkinter.vcproj --- --- NEW FILE: bz2.vcproj --- --- NEW FILE: datetime.vcproj --- --- NEW FILE: make_versioninfo.vcproj --- --- NEW FILE: mmap.vcproj --- --- NEW FILE: parser.vcproj --- --- NEW FILE: pcbuild.sln --- Microsoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{142F0110-3E27-42BA-84DD-7844FC7D2CCB}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_csv", "_csv.vcproj", "{C9206B32-C2A8-45E7-8316-C077C7B30951}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{3CD0A9A9-4535-495F-9037-4C88044877DA}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sre", "_sre.vcproj", "{227E06E8-160A-4C30-96FA-20C118BCA27F}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}" ProjectSection(ProjectDependencies) = postProject {7A475F34-6ADA-4951-8E19-5EC86AF72BF6} = {7A475F34-6ADA-4951-8E19-5EC86AF72BF6} {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} {227E06E8-160A-4C30-96FA-20C118BCA27F} = {227E06E8-160A-4C30-96FA-20C118BCA27F} {19B1CDEC-8A80-4942-A102-23AD2FCF80CC} = {19B1CDEC-8A80-4942-A102-23AD2FCF80CC} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_symtable", "_symtable.vcproj", "{D628FBA3-51A0-40F5-B692-12D51CBA6D06}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{A3E1A803-02B8-4E2B-9234-0AD8E387798F}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{21A9E626-1E5E-4176-AEE7-D85C80CFFC30}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datetime", "datetime.vcproj", "{95BB9489-709A-409D-A571-E46DD8649BC1}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{A2CFC091-9ED0-43CF-9E89-EA93E79919E3}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmap", "mmap.vcproj", "{F00D62A3-DE27-4C11-9517-0E6FB32FEA27}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser", "parser.vcproj", "{97DE4CE3-756C-4DB6-B554-E21382B67FB0}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{CEB0267A-13F2-4097-BC58-1274BEC823D4}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyghostscript", "..\..\..\..\..\projects\PharmaControl\pyghostscript-0.1\pyghostscript.vcproj", "{DE61CD8F-E271-4853-A9E3-08051359ADCF}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{7A475F34-6ADA-4951-8E19-5EC86AF72BF6}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}" ProjectSection(ProjectDependencies) = postProject {A2CFC091-9ED0-43CF-9E89-EA93E79919E3} = {A2CFC091-9ED0-43CF-9E89-EA93E79919E3} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcproj", "{8E75B590-94B9-4D53-A073-50B5187A2B33}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{F6F2800B-400B-4A61-9A5C-DB6FC559C661}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbench", "..\Stackless\testbench\testbench.vcproj", "{80F8F414-2752-42B5-9950-C895B0F067C1}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{3C917F3B-9DF0-43DB-B75E-35DAA12B266B}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w9xpopen", "w9xpopen.vcproj", "{19B1CDEC-8A80-4942-A102-23AD2FCF80CC}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winreg", "winreg.vcproj", "{5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj", "{EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{C6491CAE-4834-468C-A152-5C4C14DCCE4E}" ProjectSection(ProjectDependencies) = postProject {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} = {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "psyco", "psyco.vcproj", "{96198F1F-0164-43B2-B562-0A545B50E6CA}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release ReleaseOff = ReleaseOff EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.Debug.ActiveCfg = Debug|Win32 {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.Debug.Build.0 = Debug|Win32 {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.Release.ActiveCfg = Release|Win32 {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.Release.Build.0 = Release|Win32 {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.ReleaseOff.ActiveCfg = Release|Win32 {142F0110-3E27-42BA-84DD-7844FC7D2CCB}.ReleaseOff.Build.0 = Release|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.Debug.ActiveCfg = Debug|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.Debug.Build.0 = Debug|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.Release.ActiveCfg = Release|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.Release.Build.0 = Release|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.ReleaseOff.ActiveCfg = Release|Win32 {C9206B32-C2A8-45E7-8316-C077C7B30951}.ReleaseOff.Build.0 = Release|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.Debug.ActiveCfg = Debug|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.Debug.Build.0 = Debug|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.Release.ActiveCfg = Release|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.Release.Build.0 = Release|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.ReleaseOff.ActiveCfg = Release|Win32 {3CD0A9A9-4535-495F-9037-4C88044877DA}.ReleaseOff.Build.0 = Release|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.Debug.ActiveCfg = Debug|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.Debug.Build.0 = Debug|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.Release.ActiveCfg = Release|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.Release.Build.0 = Release|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.ReleaseOff.ActiveCfg = ReleaseOff|Win32 {227E06E8-160A-4C30-96FA-20C118BCA27F}.ReleaseOff.Build.0 = ReleaseOff|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.Debug.ActiveCfg = Debug|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.Debug.Build.0 = Debug|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.Release.ActiveCfg = Release|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.Release.Build.0 = Release|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.ReleaseOff.ActiveCfg = Release|Win32 {F6248B80-99C5-46F1-8418-D6E6A6A5EBEC}.ReleaseOff.Build.0 = Release|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.Debug.ActiveCfg = Debug|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.Debug.Build.0 = Debug|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.Release.ActiveCfg = Release|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.Release.Build.0 = Release|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.ReleaseOff.ActiveCfg = Release|Win32 {D628FBA3-51A0-40F5-B692-12D51CBA6D06}.ReleaseOff.Build.0 = Release|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.Debug.ActiveCfg = Debug|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.Debug.Build.0 = Debug|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.Release.ActiveCfg = Release|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.Release.Build.0 = Release|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.ReleaseOff.ActiveCfg = Release|Win32 {7663E0F5-A3FD-486F-B6C2-D1AD60EA3BDA}.ReleaseOff.Build.0 = Release|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.Debug.ActiveCfg = Debug|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.Debug.Build.0 = Debug|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.Release.ActiveCfg = Release|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.Release.Build.0 = Release|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.ReleaseOff.ActiveCfg = Release|Win32 {A3E1A803-02B8-4E2B-9234-0AD8E387798F}.ReleaseOff.Build.0 = Release|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.Debug.ActiveCfg = Debug|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.Debug.Build.0 = Debug|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.Release.ActiveCfg = Release|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.Release.Build.0 = Release|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.ReleaseOff.ActiveCfg = Release|Win32 {21A9E626-1E5E-4176-AEE7-D85C80CFFC30}.ReleaseOff.Build.0 = Release|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.Debug.ActiveCfg = Debug|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.Debug.Build.0 = Debug|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.Release.ActiveCfg = Release|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.Release.Build.0 = Release|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.ReleaseOff.ActiveCfg = Release|Win32 {95BB9489-709A-409D-A571-E46DD8649BC1}.ReleaseOff.Build.0 = Release|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.Debug.ActiveCfg = Debug|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.Debug.Build.0 = Debug|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.Release.ActiveCfg = Release|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.Release.Build.0 = Release|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.ReleaseOff.ActiveCfg = Release|Win32 {A2CFC091-9ED0-43CF-9E89-EA93E79919E3}.ReleaseOff.Build.0 = Release|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.Debug.ActiveCfg = Debug|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.Debug.Build.0 = Debug|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.Release.ActiveCfg = Release|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.Release.Build.0 = Release|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.ReleaseOff.ActiveCfg = Release|Win32 {F00D62A3-DE27-4C11-9517-0E6FB32FEA27}.ReleaseOff.Build.0 = Release|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.Debug.ActiveCfg = Debug|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.Debug.Build.0 = Debug|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.Release.ActiveCfg = Release|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.Release.Build.0 = Release|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.ReleaseOff.ActiveCfg = Release|Win32 {97DE4CE3-756C-4DB6-B554-E21382B67FB0}.ReleaseOff.Build.0 = Release|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.Debug.ActiveCfg = Debug|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.Debug.Build.0 = Debug|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.Release.ActiveCfg = Release|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.Release.Build.0 = Release|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.ReleaseOff.ActiveCfg = Release|Win32 {CEB0267A-13F2-4097-BC58-1274BEC823D4}.ReleaseOff.Build.0 = Release|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.Debug.ActiveCfg = Debug|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.Debug.Build.0 = Debug|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.Release.ActiveCfg = Release|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.Release.Build.0 = Release|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.ReleaseOff.ActiveCfg = Release|Win32 {DE61CD8F-E271-4853-A9E3-08051359ADCF}.ReleaseOff.Build.0 = Release|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.Debug.ActiveCfg = Debug|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.Debug.Build.0 = Debug|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.Release.ActiveCfg = Release|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.Release.Build.0 = Release|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.ReleaseOff.ActiveCfg = ReleaseOff|Win32 {7A475F34-6ADA-4951-8E19-5EC86AF72BF6}.ReleaseOff.Build.0 = ReleaseOff|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.Debug.ActiveCfg = Debug|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.Debug.Build.0 = Debug|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.Release.ActiveCfg = Release|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.Release.Build.0 = Release|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.ReleaseOff.ActiveCfg = ReleaseOff|Win32 {5D2656CE-ACAA-4C58-9E39-2CA2F12F0A68}.ReleaseOff.Build.0 = ReleaseOff|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.Debug.ActiveCfg = Debug|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.Debug.Build.0 = Debug|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.Release.ActiveCfg = Release|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.Release.Build.0 = Release|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.ReleaseOff.ActiveCfg = Release|Win32 {8E75B590-94B9-4D53-A073-50B5187A2B33}.ReleaseOff.Build.0 = Release|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.Debug.ActiveCfg = Debug|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.Debug.Build.0 = Debug|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.Release.ActiveCfg = Release|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.Release.Build.0 = Release|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.ReleaseOff.ActiveCfg = Release|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.ReleaseOff.Build.0 = Release|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.Debug.ActiveCfg = Debug|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.Debug.Build.0 = Debug|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.Release.ActiveCfg = Release|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.Release.Build.0 = Release|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.ReleaseOff.ActiveCfg = Release|Win32 {80F8F414-2752-42B5-9950-C895B0F067C1}.ReleaseOff.Build.0 = Release|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Debug.ActiveCfg = Debug|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Debug.Build.0 = Debug|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Release.ActiveCfg = Release|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Release.Build.0 = Release|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.ReleaseOff.ActiveCfg = Release|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.ReleaseOff.Build.0 = Release|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.Debug.ActiveCfg = Debug|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.Debug.Build.0 = Debug|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.Release.ActiveCfg = Release|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.Release.Build.0 = Release|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.ReleaseOff.ActiveCfg = Release|Win32 {19B1CDEC-8A80-4942-A102-23AD2FCF80CC}.ReleaseOff.Build.0 = Release|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.Debug.ActiveCfg = Debug|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.Debug.Build.0 = Debug|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.Release.ActiveCfg = Release|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.Release.Build.0 = Release|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.ReleaseOff.ActiveCfg = Release|Win32 {5D832668-9DFF-4A2D-B0EC-3FCFC5C6BCBF}.ReleaseOff.Build.0 = Release|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.Debug.ActiveCfg = Debug|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.Debug.Build.0 = Debug|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.Release.ActiveCfg = Release|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.Release.Build.0 = Release|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.ReleaseOff.ActiveCfg = Release|Win32 {EF9BFC1A-F4C2-4313-8AFE-5E0D5587994F}.ReleaseOff.Build.0 = Release|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.Debug.ActiveCfg = Debug|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.Debug.Build.0 = Debug|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.Release.ActiveCfg = Release|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.Release.Build.0 = Release|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.ReleaseOff.ActiveCfg = Release|Win32 {C6491CAE-4834-468C-A152-5C4C14DCCE4E}.ReleaseOff.Build.0 = Release|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.Debug.ActiveCfg = Debug|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.Debug.Build.0 = Debug|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.Release.ActiveCfg = Release|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.Release.Build.0 = Release|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.ReleaseOff.ActiveCfg = Release|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.ReleaseOff.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal --- NEW FILE: psyco.vcproj --- --- NEW FILE: pyexpat.vcproj --- --- NEW FILE: python.vcproj --- --- NEW FILE: pythoncore.vcproj --- [...3833 lines suppressed...] --- NEW FILE: pythonw.vcproj --- --- NEW FILE: select.vcproj --- --- NEW FILE: unicodedata.vcproj --- --- NEW FILE: w9xpopen.vcproj --- --- NEW FILE: winreg.vcproj --- --- NEW FILE: winsound.vcproj --- --- NEW FILE: zlib.vcproj --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 12 20:56:58 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 12 Jul 2004 20:56:58 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/test taskspeed.py, 1.25, 1.26 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/test In directory centera.de:/tmp/cvs-serv18053/Stackless/test Modified Files: taskspeed.py Log Message: A tiny optimization of oparg fetching for X86. Mainly I started optimizing by keeping interpreters on the stack. This is just a cache-like optimization and gives a few percent. But I think it will really count for generator/iterator situations. Index: taskspeed.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/test/taskspeed.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** taskspeed.py 10 Jul 2004 01:30:40 -0000 1.25 --- taskspeed.py 12 Jul 2004 18:56:55 -0000 1.26 *************** *** 102,105 **** --- 102,132 ---- send(42); send(42); send(42); send(42); send(42); + # alternate, for real application cases + + def channel_sender(chan, nest=0, bulk=0): + if nest: + return channel_sender(chan, nest-1) + if bulk: + data = range(20) + send_seq = chan.send_sequence + send_exc = chan.send_exception + def yielder(): + while 1: + yield 1; yield 1; yield 1; yield 1; yield 1; + yield 1; yield 1; yield 1; yield 1; yield 1; + yield 1; yield 1; yield 1; yield 1; yield 1; + yield 1; yield 1; yield 1; yield 1; yield 1; + send_exc(StopIteration) + # while 1: + # send_seq(yielder()) + # send_exc(StopIteration) + send_seq(yielder()) + send = chan.send + while 1: + send(42); send(42); send(42); send(42); send(42); + send(42); send(42); send(42); send(42); send(42); + send(42); send(42); send(42); send(42); send(42); + send(42); send(42); send(42); send(42); send(42); + def chantest(n, nest=0, use_thread=False, bulk = False): if nest: *************** *** 147,150 **** --- 174,187 ---- if args_given: niter = args_given + + # clear out every runnable that may be left over from something + + if IS_SLP: + while stackless.runcount > 1: + try: + stackless.current.next.kill() + except: + print "*** GHOST ALERT ***" + raise enable_softswitch(0) _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Tue Jul 27 20:42:13 2004 From: tismer at centera.de (Christian Tismer) Date: Tue, 27 Jul 2004 20:42:13 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/bch - Imported sources, NONE, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/bch In directory centera.de:/tmp/cvs-serv11424 Log Message: no message Status: Vendor Tag: avendor Release Tags: arelease N slpdev/src/2.3/bch/ChangeLog N slpdev/src/2.3/bch/MANIFEST N slpdev/src/2.3/bch/README N slpdev/src/2.3/bch/RELEASE N slpdev/src/2.3/bch/setup.py N slpdev/src/2.3/bch/TODO N slpdev/src/2.3/bch/bytecodehacks/assemble.py N slpdev/src/2.3/bch/bytecodehacks/attr_freeze.py N slpdev/src/2.3/bch/bytecodehacks/closure.py N slpdev/src/2.3/bch/bytecodehacks/code_editor.py N slpdev/src/2.3/bch/bytecodehacks/common.py N slpdev/src/2.3/bch/bytecodehacks/dbc.py N slpdev/src/2.3/bch/bytecodehacks/find_function_call.py N slpdev/src/2.3/bch/bytecodehacks/fleshy.py N slpdev/src/2.3/bch/bytecodehacks/iif.py N slpdev/src/2.3/bch/bytecodehacks/inline.py N slpdev/src/2.3/bch/bytecodehacks/label.py N slpdev/src/2.3/bch/bytecodehacks/macro.py N slpdev/src/2.3/bch/bytecodehacks/macros.py N slpdev/src/2.3/bch/bytecodehacks/opbases.py N slpdev/src/2.3/bch/bytecodehacks/ops.py N slpdev/src/2.3/bch/bytecodehacks/rationalize.py N slpdev/src/2.3/bch/bytecodehacks/tailr.py N slpdev/src/2.3/bch/bytecodehacks/xapply.py N slpdev/src/2.3/bch/bytecodehacks/__init__.py N slpdev/src/2.3/bch/bytecodehacks/code_gen/empty_methods N slpdev/src/2.3/bch/bytecodehacks/code_gen/execute_methods N slpdev/src/2.3/bch/bytecodehacks/code_gen/method_spec.py N slpdev/src/2.3/bch/bytecodehacks/code_gen/stack_bump_methods N slpdev/src/2.3/bch/bytecodehacks/code_gen/write_ops.py N slpdev/src/2.3/bch/bytecodehacks/code_gen/__init__.py N slpdev/src/2.3/bch/test/assdemo.pya N slpdev/src/2.3/bch/test/bench.py N slpdev/src/2.3/bch/test/foo_methods N slpdev/src/2.3/bch/test/inline_test.py N slpdev/src/2.3/bch/test/macro_test.py N slpdev/src/2.3/bch/test/Makefile N slpdev/src/2.3/bch/test/method_spec_test.py N slpdev/src/2.3/bch/test/regrtest.py N slpdev/src/2.3/bch/test/test.py N slpdev/src/2.3/bch/test/test_stacktrack.py N slpdev/src/2.3/bch/test/test_support.py N slpdev/src/2.3/bch/test/test_xapply.py N slpdev/src/2.3/bch/test/utils.py N slpdev/src/2.3/bch/test/__init__.py N slpdev/src/2.3/bch/test/output/test_stacktrack N slpdev/src/2.3/bch/test/output/test_xapply No conflicts created by this import --- NEW FILE: - Imported sources --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:35:21 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:35:21 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Python ceval.c, 1.91, 1.92 sysmodule.c, 1.9, 1.10 traceback.c, 1.10, 1.11 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Python In directory centera.de:/tmp/cvs-serv31817/Python Modified Files: ceval.c sysmodule.c traceback.c Log Message: added psyco to supported modules Index: ceval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/ceval.c,v retrieving revision 1.91 retrieving revision 1.92 diff -C2 -d -r1.91 -r1.92 *** ceval.c 12 Jul 2004 18:56:52 -0000 1.91 --- ceval.c 15 Jul 2004 18:35:18 -0000 1.92 *************** *** 3338,3346 **** int what, PyObject *arg) { - #ifdef STACKLESS - register PyThreadState *tstate = PyThreadState_GET(); - #else register PyThreadState *tstate = frame->f_tstate; - #endif int result; if (tstate->tracing) --- 3338,3342 ---- *************** *** 3358,3367 **** _PyEval_CallTracing(PyObject *func, PyObject *args) { - #ifndef STACKLESS PyFrameObject *frame = PyEval_GetFrame(); PyThreadState *tstate = frame->f_tstate; - #else - PyThreadState *tstate = PyThreadState_GET(); - #endif int save_tracing = tstate->tracing; int save_use_tracing = tstate->use_tracing; --- 3354,3359 ---- Index: sysmodule.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/sysmodule.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** sysmodule.c 12 Mar 2004 12:32:11 -0000 1.9 --- sysmodule.c 15 Jul 2004 18:35:18 -0000 1.10 *************** *** 329,337 **** int what, PyObject *arg) { - #ifdef STACKLESS - PyThreadState *tstate = PyThreadState_GET(); - #else PyThreadState *tstate = frame->f_tstate; - #endif PyObject *result; --- 329,333 ---- *************** *** 351,359 **** int what, PyObject *arg) { - #ifdef STACKLESS - PyThreadState *tstate = PyThreadState_GET(); - #else PyThreadState *tstate = frame->f_tstate; - #endif PyObject *callback; PyObject *result; --- 347,351 ---- Index: traceback.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/traceback.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** traceback.c 24 Apr 2004 23:29:39 -0000 1.10 --- traceback.c 15 Jul 2004 18:35:18 -0000 1.11 *************** *** 129,137 **** PyTraceBack_Here(PyFrameObject *frame) { - #ifdef STACKLESS - PyThreadState *tstate = PyThreadState_GET(); - #else PyThreadState *tstate = frame->f_tstate; - #endif tracebackobject *oldtb = (tracebackobject *) tstate->curexc_traceback; tracebackobject *tb = newtracebackobject(oldtb, frame); --- 129,133 ---- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:35:20 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:35:20 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Include frameobject.h, 1.25, 1.26 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Include In directory centera.de:/tmp/cvs-serv31817/Include Modified Files: frameobject.h Log Message: added psyco to supported modules Index: frameobject.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Include/frameobject.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** frameobject.h 24 Apr 2004 23:29:39 -0000 1.25 --- frameobject.h 15 Jul 2004 18:35:18 -0000 1.26 *************** *** 36,42 **** PyObject *f_trace; /* Trace function */ PyObject *f_exc_type, *f_exc_value, *f_exc_traceback; - #ifndef STACKLESS PyThreadState *f_tstate; - #endif int f_lasti; /* Last instruction if called */ /* As of 2.3 f_lineno is only valid when tracing is active (i.e. when --- 36,40 ---- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 22 19:49:44 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 22 Jul 2004 19:49:44 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/psyco-1.2/c cstruct.h, 1.1.1.1, 1.2 psyco.c, 1.1.1.1, 1.2 psyco.h, 1.1.1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/psyco-1.2/c In directory centera.de:/tmp/cvs-serv7665/psyco-1.2/c Modified Files: cstruct.h psyco.c psyco.h Log Message: trying to get psyco disassembly right under Windows. It seems not to work with vc7, since it does pdb files, only. Will need to switch to map file reading. Index: cstruct.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/c/cstruct.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** cstruct.h 15 Jul 2004 18:32:31 -0000 1.1.1.1 --- cstruct.h 22 Jul 2004 17:49:40 -0000 1.2 *************** *** 24,28 **** #define PyCStruct_Check(op) PyObject_TypeCheck(op, &PyCStruct_Type) ! DEFINEFN PyObject* PyCStruct_New(size_t size, destructor d); #define PyCStruct_NEW(TYPE, d) \ ((TYPE*) PyCStruct_New(sizeof(TYPE), (destructor)(d))) --- 24,28 ---- #define PyCStruct_Check(op) PyObject_TypeCheck(op, &PyCStruct_Type) ! EXTERNFN PyObject* PyCStruct_New(size_t size, destructor d); #define PyCStruct_NEW(TYPE, d) \ ((TYPE*) PyCStruct_New(sizeof(TYPE), (destructor)(d))) Index: psyco.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/c/psyco.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** psyco.c 15 Jul 2004 18:32:32 -0000 1.1.1.1 --- psyco.c 22 Jul 2004 17:49:40 -0000 1.2 *************** *** 230,234 **** # define psyco_top_array_count fz_top_array_count #endif ! DEFINEFN void psyco_dump_code_buffers(void) { --- 230,235 ---- # define psyco_top_array_count fz_top_array_count #endif ! ! /* DEFINEFN */ void psyco_dump_code_buffers(void) { Index: psyco.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/c/psyco.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** psyco.h 15 Jul 2004 18:32:32 -0000 1.1.1.1 --- psyco.h 22 Jul 2004 17:49:40 -0000 1.2 *************** *** 132,137 **** --- 132,142 ---- # define INITIALIZATIONFN inline #else + #ifdef _MSC_VER + # define EXTERNVAR __declspec(dllexport) + # define EXTERNFN extern __declspec(dllexport) + #else # define EXTERNVAR # define EXTERNFN + #endif # define DEFINEVAR # define DEFINEFN _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sat Jul 10 03:07:14 2004 From: tismer at centera.de (Christian Tismer) Date: Sat, 10 Jul 2004 03:07:14 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Python ceval.c, 1.89, 1.90 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Python In directory centera.de:/tmp/cvs-serv24408/Python Modified Files: ceval.c Log Message: some changes seem to have vanished from cvs... Index: ceval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/ceval.c,v retrieving revision 1.89 retrieving revision 1.90 diff -C2 -d -r1.89 -r1.90 *** ceval.c 8 Jul 2004 18:30:28 -0000 1.89 --- ceval.c 10 Jul 2004 01:07:10 -0000 1.90 *************** *** 908,911 **** --- 908,920 ---- JUMPBY(oparg); } + else if (PyErr_ExceptionMatches(PyExc_StopIteration)) { + /* this can happen from external re-entry */ + PyErr_Clear(); + /* iterator ended normally */ + retval = POP(); + Py_DECREF(retval); + /* perform the delayed block jump */ + JUMPBY(oparg); + } } else { _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 8 20:30:31 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 08 Jul 2004 20:30:31 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Python ceval.c, 1.88, 1.89 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Python In directory centera.de:/tmp/cvs-serv8821/Python Modified Files: ceval.c Log Message: white space Index: ceval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/ceval.c,v retrieving revision 1.88 retrieving revision 1.89 diff -C2 -d -r1.88 -r1.89 *** a/ceval.c 2 Jun 2004 23:03:42 -0000 1.88 --- b/ceval.c 8 Jul 2004 18:30:28 -0000 1.89 *************** *** 887,892 **** /* this is a return */ PUSH(retval); /* we are back from a function call */ ! } ! else { if (f->f_execute == PyEval_EvalFrame_iter) { /* finalise the for_iter operation */ --- 887,892 ---- /* this is a return */ PUSH(retval); /* we are back from a function call */ ! } ! else { if (f->f_execute == PyEval_EvalFrame_iter) { /* finalise the for_iter operation */ _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Tue Jul 27 20:49:03 2004 From: tismer at centera.de (Christian Tismer) Date: Tue, 27 Jul 2004 20:49:03 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/psyco-1.2/py-utils httpxam.py, 1.1.1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils In directory centera.de:/tmp/cvs-serv11602/psyco-1.2/py-utils Modified Files: httpxam.py Log Message: added a /restart URL Index: httpxam.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils/httpxam.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** httpxam.py 15 Jul 2004 18:32:33 -0000 1.1.1.1 --- httpxam.py 27 Jul 2004 18:49:00 -0000 1.2 *************** *** 202,205 **** --- 202,206 ---- def send_head(self): + global codebufs # CT self.trace_prev = None self.trace_next = None *************** *** 410,417 **** self.end_headers() return f self.send_error(404, "Invalid path") return None ! def donepage(self, title, data): f = cStringIO.StringIO(self.htmlpage(title, data)) --- 411,424 ---- self.end_headers() return f + + ## CT: simple reload feature + if self.path == "/reload": + codebufs = xam.readdump(FILENAME) + self.path = "/all" + return self.send_head() self.send_error(404, "Invalid path") return None ! def donepage(self, title, data): f = cStringIO.StringIO(self.htmlpage(title, data)) *************** *** 436,438 **** --- 443,446 ---- tracefilename = os.path.join(DIRECTORY, 'psyco.trace') codebufs = xam.readdump(filename) + FILENAME = filename # CT hack test(CodeBufHTTPHandler) _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 8 20:58:32 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 08 Jul 2004 20:58:32 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stacklesseval.c, 1.162, 1.163 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv9390/Stackless/core Modified Files: stacklesseval.c Log Message: added iterator support to channels, and sending of sequences. It works, there is just a case missing to make it completely stackless. Changed exceptions to stopiteration in certain places. Very convenient for main, when consuming all of a channel's data with list(ch) Index: stacklesseval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stacklesseval.c,v retrieving revision 1.162 retrieving revision 1.163 diff -C2 -d -r1.162 -r1.163 *** a/stacklesseval.c 6 Jun 2004 15:04:41 -0000 1.162 --- b/stacklesseval.c 8 Jul 2004 18:58:30 -0000 1.163 *************** *** 439,443 **** if (f->f_back == NULL && ! (f->f_back = (PyFrameObject *) slp_cframe_new(gen_iternext_callback, 0)) == NULL) return NULL; --- 439,443 ---- if (f->f_back == NULL && ! (f->f_back = (PyFrameObject *) slp_cframe_new(gen_iternext_callback, 0)) == NULL) return NULL; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:35:21 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:35:21 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Objects frameobject.c, 1.22, 1.23 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Objects In directory centera.de:/tmp/cvs-serv31817/Objects Modified Files: frameobject.c Log Message: added psyco to supported modules Index: frameobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Objects/frameobject.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** frameobject.c 24 May 2004 01:59:34 -0000 1.22 --- frameobject.c 15 Jul 2004 18:35:18 -0000 1.23 *************** *** 650,656 **** f->f_trace = NULL; f->f_exc_type = f->f_exc_value = f->f_exc_traceback = NULL; - #ifndef STACKLESS f->f_tstate = tstate; - #endif f->f_lasti = -1; --- 650,654 ---- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:45:53 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:45:53 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/bzip2-1.0.2 libbz2.001, 1.1, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/bzip2-1.0.2 In directory centera.de:/tmp/cvs-serv32308 Removed Files: libbz2.001 Log Message: cleanup --- libbz2.001 DELETED --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 19 01:20:30 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 19 Jul 2004 01:20:30 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild pythoncore.vcproj, 1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv7654/PCbuild Modified Files: pythoncore.vcproj Log Message: started to add real stack switching. I generated some similar slp_switch_stack implementations from the existing includes. Alas, I have no real clue yet, how this will fit the system. There is just a wrong dummy which is not used, yet. Index: pythoncore.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/pythoncore.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pythoncore.vcproj 15 Jul 2004 18:35:18 -0000 1.1 --- pythoncore.vcproj 18 Jul 2004 23:20:27 -0000 1.2 *************** *** 535,538 **** --- 535,541 ---- + + _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 12 20:56:58 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 12 Jul 2004 20:56:58 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/platf switch_x86_msvc.h, 1.32, 1.33 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/platf In directory centera.de:/tmp/cvs-serv18053/Stackless/platf Modified Files: switch_x86_msvc.h Log Message: A tiny optimization of oparg fetching for X86. Mainly I started optimizing by keeping interpreters on the stack. This is just a cache-like optimization and gives a few percent. But I think it will really count for generator/iterator situations. Index: switch_x86_msvc.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/platf/switch_x86_msvc.h,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** switch_x86_msvc.h 24 Apr 2004 23:29:39 -0000 1.32 --- switch_x86_msvc.h 12 Jul 2004 18:56:55 -0000 1.33 *************** *** 27,30 **** --- 27,34 ---- #define STACK_REFPLUS 1 + /* use faster oparg fetch */ + #define STACKLESS_USE_ENDIAN + + /* switching related stuff */ #ifdef SLP_EVAL _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 23 13:36:35 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 23 Jul 2004 13:36:35 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild pythoncore.vcproj, 1.2, 1.3 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv32522/dev/PCbuild Modified Files: pythoncore.vcproj Log Message: made xam.py work on Windows. I will create an extra sub-package for psyco. Index: pythoncore.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/pythoncore.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** pythoncore.vcproj 18 Jul 2004 23:20:27 -0000 1.2 --- pythoncore.vcproj 23 Jul 2004 11:36:32 -0000 1.3 *************** *** 121,124 **** --- 121,125 ---- GenerateDebugInformation="TRUE" ProgramDatabaseFile=".\./python23.pdb" + GenerateMapFile="TRUE" SubSystem="2" BaseAddress="0x1e000000" _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 22 19:49:44 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 22 Jul 2004 19:49:44 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless stackless_version.h, 1.44, 1.45 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless In directory centera.de:/tmp/cvs-serv7665/dev/Stackless Modified Files: stackless_version.h Log Message: trying to get psyco disassembly right under Windows. It seems not to work with vc7, since it does pdb files, only. Will need to switch to map file reading. Index: stackless_version.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/stackless_version.h,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** stackless_version.h 2 Jun 2004 23:08:47 -0000 1.44 --- stackless_version.h 22 Jul 2004 17:49:42 -0000 1.45 *************** *** 1,7 **** /* * Stackless Python version string ! * created at Thu Jun 03 01:02:25 2004 by mkversion.py */ /* keep this entry up-to-date */ ! #define STACKLESS_VERSION "3.1b3 040603" --- 1,7 ---- /* * Stackless Python version string ! * created at Mon Jul 19 14:47:02 2004 by mkversion.py */ /* keep this entry up-to-date */ ! #define STACKLESS_VERSION "3.1b3 040719" _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 22 19:49:44 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 22 Jul 2004 19:49:44 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild psyco.vcproj, 1.2, 1.3 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv7665/dev/PCbuild Modified Files: psyco.vcproj Log Message: trying to get psyco disassembly right under Windows. It seems not to work with vc7, since it does pdb files, only. Will need to switch to map file reading. Index: psyco.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/psyco.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** psyco.vcproj 16 Jul 2004 18:28:04 -0000 1.2 --- psyco.vcproj 22 Jul 2004 17:49:42 -0000 1.3 *************** *** 21,32 **** Update of /home/cvs/slpdev/src/2.3/dev/Python In directory centera.de:/tmp/cvs-serv18053/Python Modified Files: ceval.c Log Message: A tiny optimization of oparg fetching for X86. Mainly I started optimizing by keeping interpreters on the stack. This is just a cache-like optimization and gives a few percent. But I think it will really count for generator/iterator situations. Index: ceval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Python/ceval.c,v retrieving revision 1.90 retrieving revision 1.91 diff -C2 -d -r1.90 -r1.91 *** ceval.c 10 Jul 2004 01:07:10 -0000 1.90 --- ceval.c 12 Jul 2004 18:56:52 -0000 1.91 *************** *** 667,670 **** --- 667,681 ---- next_instr[1]; next_instr += 3 + #ifdef STACKLESS + #ifdef STACKLESS_USE_ENDIAN + + #undef NEXTARG + #define NEXTARG() (next_instr += 2, ((short *)next_instr)[-1]) + #undef PREDICTED_WITH_ARG + #define PREDICTED_WITH_ARG(op) PRED_##op: next_instr += 3; \ + oparg = ((short *)next_instr)[-1] + #endif + #endif + /* Stack manipulation macros */ *************** *** 848,853 **** #endif - fast_reentry: - #endif /* STACKLESS */ --- 859,862 ---- *************** *** 898,901 **** --- 907,911 ---- } assert(opcode == FOR_ITER); + if (retval != NULL) { PUSH(retval); *************** *** 909,918 **** } else if (PyErr_ExceptionMatches(PyExc_StopIteration)) { ! /* this can happen from external re-entry */ PyErr_Clear(); - /* iterator ended normally */ retval = POP(); Py_DECREF(retval); - /* perform the delayed block jump */ JUMPBY(oparg); } --- 919,929 ---- } else if (PyErr_ExceptionMatches(PyExc_StopIteration)) { ! /* we need to check for stopiteration because ! * somebody might inject this as a real ! * exception. ! */ PyErr_Clear(); retval = POP(); Py_DECREF(retval); JUMPBY(oparg); } *************** *** 2290,2293 **** --- 2301,2305 ---- if (STACKLESS_UNWINDING(x)) goto stackless_iter; + stackless_iter_return: #else x = PyIter_Next(v); *************** *** 2322,2325 **** --- 2334,2338 ---- goto stackless_call; } + stackless_call_return: #endif PUSH(x); *************** *** 2667,2689 **** (look for the word 'Promise' above) */ f->f_lasti = INSTR_OFFSET() - 1; ! f = tstate->frame; ! /* ! * make a fast jump, if the new frame's f_execute is ! * eval_frame, the recursion limit does not impose a problem, ! * and if we don't have to cope with a trace function. ! * Otherwise, it is better to go through the full sequence ! * instead of repeating code, here. ! */ ! if (f && f->f_execute == PyEval_EvalFrame && ! tstate->recursion_depth < recursion_limit && ! ! tstate->use_tracing) { ! ++tstate->recursion_depth; ! f->f_execute = PyEval_EvalFrame_noval; ! STACKLESS_UNPACK(retval); ! goto fast_reentry; } ! return retval; stackless_interrupt_call: --- 2680,2701 ---- (look for the word 'Promise' above) */ f->f_lasti = INSTR_OFFSET() - 1; ! if (tstate->frame->f_back != f) ! return retval; ! STACKLESS_UNPACK(retval); ! retval = tstate->frame->f_execute(tstate->frame, retval); ! if (tstate->frame != f) ! return retval; ! if (STACKLESS_UNWINDING(retval)) ! STACKLESS_UNPACK(retval); ! x = retval; ! f->f_stacktop = NULL; ! if (f->f_execute == PyEval_EvalFrame_iter) { ! next_instr += (oparg >> 16) ? 6 : 3; ! f->f_execute = PyEval_EvalFrame_value; ! goto stackless_iter_return; } ! goto stackless_call_return; stackless_interrupt_call: _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 23 13:36:35 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 23 Jul 2004 13:36:35 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/psyco-1.2/py-utils xam.py, 1.2, 1.3 Message-ID: Update of /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils In directory centera.de:/tmp/cvs-serv32522/psyco-1.2/py-utils Modified Files: xam.py Log Message: made xam.py work on Windows. I will create an extra sub-package for psyco. Index: xam.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils/xam.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** xam.py 22 Jul 2004 17:49:42 -0000 1.2 --- xam.py 23 Jul 2004 11:36:33 -0000 1.3 *************** *** 17,22 **** # psyco_dump_code_buffers() in psyco.c. symbolfiles = [sys.executable] - if sys.platform == "win32": - symbolfiles = [os.environ["SYSTEMROOT"] + r"\SYSTEM32\python23.dll"] try: from psyco import _psyco --- 17,20 ---- *************** *** 30,37 **** if sys.platform == "win32": ! symbollister = r'dumpbin.exe /exports "%s"' ! # must have run vcvars.bat before. ! # popen will not work with spaces in paths ! re_symbolentry = re.compile(r'\s+[0-9a-fA-F]+\s+[0-9a-fA-F]+\s([0-9a-fA-F]+)\s(.*)') re_addr = re.compile(r'[\s,$]0x([0-9a-fA-F]+)') --- 28,68 ---- if sys.platform == "win32": ! # no way to get full info into the executables by ! # VC7. /PDB:NONE no longer supported. ! # so we have to read the map files. ! buildpath = r"d:/slpdev/src/2.3/dev/PCbuild" ! symbolfiles = [os.path.join(buildpath, x) for x in ("python23.map", "_psyco.map")] ! class symbollister: ! def __init__(self, filename): ! self.file = file(filename) ! self.generator = self._readline() ! ! def _readline(self): ! for line in self.file: ! # 0001:000661e0 _PyEval_CallFunction 1e0671e0 f modsupport.obj ! # 0003:0000e770 _PyClass_Type 1e0d8770 classobject.obj ! pieces = line.split() ! if len(pieces) == 5: ! colonadr, name, adr, dummy, obj = pieces ! elif len(pieces) == 4: ! colonadr, name, adr, obj = pieces ! dummy = "d" ! else: ! continue ! if colonadr.count(":") == 1 and obj.endswith(".obj"): ! yield "%s %s %s\n" % (adr, dummy, name[1:]) ! ! def readline(self): ! try: ! return self.generator.next() ! except StopIteration: ! return "" ! ! def close(self): ! self.file.close() ! ! def __iter__(self): ! return self.generator ! re_addr = re.compile(r'[\s,$]0x([0-9a-fA-F]+)') *************** *** 71,75 **** def load_symbol_file(filename, symb1, addr1): d = {} ! g = os.popen(symbollister % filename, "r") while 1: line = g.readline() --- 102,109 ---- def load_symbol_file(filename, symb1, addr1): d = {} ! if type(symbollister) is str: ! g = os.popen(symbollister % filename, "r") ! else: ! g = symbollister(filename) while 1: line = g.readline() _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:32:36 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:32:36 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/psyco-1.2 - Imported sources, NONE, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/psyco-1.2 In directory centera.de:/tmp/cvs-serv31710 Log Message: added psyco to stackless supported modules Status: Vendor Tag: avendor Release Tags: arelease N slpdev/src/2.3/psyco-1.2/COPYING.txt N slpdev/src/2.3/psyco-1.2/INSTALL.txt N slpdev/src/2.3/psyco-1.2/MANIFEST N slpdev/src/2.3/psyco-1.2/README.txt N slpdev/src/2.3/psyco-1.2/setup.py N slpdev/src/2.3/psyco-1.2/c/alarm.c N slpdev/src/2.3/psyco-1.2/c/alarm.h N slpdev/src/2.3/psyco-1.2/c/blockalloc.h N slpdev/src/2.3/psyco-1.2/c/codegen.c N slpdev/src/2.3/psyco-1.2/c/codegen.h N slpdev/src/2.3/psyco-1.2/c/codemanager.c N slpdev/src/2.3/psyco-1.2/c/codemanager.h N slpdev/src/2.3/psyco-1.2/c/cstruct.c N slpdev/src/2.3/psyco-1.2/c/cstruct.h N slpdev/src/2.3/psyco-1.2/c/depend.py N slpdev/src/2.3/psyco-1.2/c/dispatcher.c N slpdev/src/2.3/psyco-1.2/c/dispatcher.h N slpdev/src/2.3/psyco-1.2/c/files.py N slpdev/src/2.3/psyco-1.2/c/initialize.h N slpdev/src/2.3/psyco-1.2/c/linuxmemchk.c N slpdev/src/2.3/psyco-1.2/c/linuxmemchk.h N slpdev/src/2.3/psyco-1.2/c/Makefile N slpdev/src/2.3/psyco-1.2/c/mergepoints.c N slpdev/src/2.3/psyco-1.2/c/mergepoints.h N slpdev/src/2.3/psyco-1.2/c/mkincl.py N slpdev/src/2.3/psyco-1.2/c/mychecker.py N slpdev/src/2.3/psyco-1.2/c/processor.h N slpdev/src/2.3/psyco-1.2/c/profile.c N slpdev/src/2.3/psyco-1.2/c/profile.h N slpdev/src/2.3/psyco-1.2/c/psyco.c N slpdev/src/2.3/psyco-1.2/c/psyco.h N slpdev/src/2.3/psyco-1.2/c/psyfunc.c N slpdev/src/2.3/psyco-1.2/c/psyfunc.h N slpdev/src/2.3/psyco-1.2/c/pycodegen.h N slpdev/src/2.3/psyco-1.2/c/stats.c N slpdev/src/2.3/psyco-1.2/c/stats.h N slpdev/src/2.3/psyco-1.2/c/timing.h N slpdev/src/2.3/psyco-1.2/c/vcompiler.c N slpdev/src/2.3/psyco-1.2/c/vcompiler.h N slpdev/src/2.3/psyco-1.2/c/versionchecker.py N slpdev/src/2.3/psyco-1.2/c/i386/idispatcher.c N slpdev/src/2.3/psyco-1.2/c/i386/idispatcher.h N slpdev/src/2.3/psyco-1.2/c/i386/iencoding.c N slpdev/src/2.3/psyco-1.2/c/i386/iencoding.h N slpdev/src/2.3/psyco-1.2/c/i386/iinitialize.h N slpdev/src/2.3/psyco-1.2/c/i386/iprocessor.c N slpdev/src/2.3/psyco-1.2/c/i386/ipyencoding.c N slpdev/src/2.3/psyco-1.2/c/i386/ipyencoding.h N slpdev/src/2.3/psyco-1.2/c/i386/itiming.h N slpdev/src/2.3/psyco-1.2/c/ivm/idispatcher.c N slpdev/src/2.3/psyco-1.2/c/ivm/idispatcher.h N slpdev/src/2.3/psyco-1.2/c/ivm/iencoding.c N slpdev/src/2.3/psyco-1.2/c/ivm/iencoding.h N slpdev/src/2.3/psyco-1.2/c/ivm/iinitialize.h N slpdev/src/2.3/psyco-1.2/c/ivm/iprocessor.c N slpdev/src/2.3/psyco-1.2/c/ivm/ipyencoding.c N slpdev/src/2.3/psyco-1.2/c/ivm/ipyencoding.h N slpdev/src/2.3/psyco-1.2/c/ivm/itiming.h N slpdev/src/2.3/psyco-1.2/c/ivm/ivm-insns.c N slpdev/src/2.3/psyco-1.2/c/ivm/ivm-insns.h N slpdev/src/2.3/psyco-1.2/c/ivm/localsetup.py N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/ccode.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/detcheck.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-igen-h.i N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-igen-h.i.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-igen.i N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-igen.i.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-switch.i N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-switch.i.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-table.py N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-table.py.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-threaded.i N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns-threaded.i.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/insns.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/Makefile N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/mode_combine.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/mode_combine.pl.default N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/optimize.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/samelines.py N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/utils.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/vm.pl N slpdev/src/2.3/psyco-1.2/c/ivm/prolog/vmwriter.pl N slpdev/src/2.3/psyco-1.2/c/Modules/parray.c N slpdev/src/2.3/psyco-1.2/c/Modules/pmath.c N slpdev/src/2.3/psyco-1.2/c/Objects/pabstract.c N slpdev/src/2.3/psyco-1.2/c/Objects/pabstract.h N slpdev/src/2.3/psyco-1.2/c/Objects/pboolobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pboolobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pclassobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pclassobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pdescrobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pdescrobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pdictobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pdictobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pfloatobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pfloatobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pfuncobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pfuncobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pintobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pintobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/piterobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/piterobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/plistobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/plistobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/plongobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/plongobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pmethodobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pmethodobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/prangeobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/prangeobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pstringobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/pstringobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/pstructmember.c N slpdev/src/2.3/psyco-1.2/c/Objects/pstructmember.h N slpdev/src/2.3/psyco-1.2/c/Objects/ptupleobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/ptupleobject.h N slpdev/src/2.3/psyco-1.2/c/Objects/ptypeobject.c N slpdev/src/2.3/psyco-1.2/c/Objects/ptypeobject.h N slpdev/src/2.3/psyco-1.2/c/Python/frames.c N slpdev/src/2.3/psyco-1.2/c/Python/frames.h N slpdev/src/2.3/psyco-1.2/c/Python/pbltinmodule.c N slpdev/src/2.3/psyco-1.2/c/Python/pbltinmodule.h N slpdev/src/2.3/psyco-1.2/c/Python/pycheader.h N slpdev/src/2.3/psyco-1.2/c/Python/pycinternal.h N slpdev/src/2.3/psyco-1.2/c/Python/pycompiler.c N slpdev/src/2.3/psyco-1.2/c/Python/pycompiler.h N slpdev/src/2.3/psyco-1.2/c/Python/pyver.h N slpdev/src/2.3/psyco-1.2/doc/Makefile N slpdev/src/2.3/psyco-1.2/doc/psycoguide.tex N slpdev/src/2.3/psyco-1.2/psyco/classes.py N slpdev/src/2.3/psyco-1.2/psyco/core.py N slpdev/src/2.3/psyco-1.2/psyco/logger.py N slpdev/src/2.3/psyco-1.2/psyco/profiler.py N slpdev/src/2.3/psyco-1.2/psyco/support.py N slpdev/src/2.3/psyco-1.2/psyco/__init__.py N slpdev/src/2.3/psyco-1.2/py-utils/cvs.py N slpdev/src/2.3/psyco-1.2/py-utils/httpxam.py N slpdev/src/2.3/psyco-1.2/py-utils/ivmdump.py N slpdev/src/2.3/psyco-1.2/py-utils/ivmextract.py N slpdev/src/2.3/psyco-1.2/py-utils/manifest.py N slpdev/src/2.3/psyco-1.2/py-utils/symbols.py N slpdev/src/2.3/psyco-1.2/py-utils/vinfo_dump.py N slpdev/src/2.3/psyco-1.2/py-utils/xam.py N slpdev/src/2.3/psyco-1.2/test/basetests.py N slpdev/src/2.3/psyco-1.2/test/bpnn.py N slpdev/src/2.3/psyco-1.2/test/btrun.py N slpdev/src/2.3/psyco-1.2/test/classicregrtest.py N slpdev/src/2.3/psyco-1.2/test/file1-basetests N slpdev/src/2.3/psyco-1.2/test/file2-basetests.uu N slpdev/src/2.3/psyco-1.2/test/fulltester.py N slpdev/src/2.3/psyco-1.2/test/life-psyco.py N slpdev/src/2.3/psyco-1.2/test/life.py N slpdev/src/2.3/psyco-1.2/test/pystone-jit.py N slpdev/src/2.3/psyco-1.2/test/pystone.py N slpdev/src/2.3/psyco-1.2/test/regrtester.py N slpdev/src/2.3/psyco-1.2/test/regrtester2.py N slpdev/src/2.3/psyco-1.2/test/test1.py N slpdev/src/2.3/psyco-1.2/test/test3.py N slpdev/src/2.3/psyco-1.2/test/test5.py No conflicts created by this import --- NEW FILE: - Imported sources --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sat Jul 10 03:02:06 2004 From: tismer at centera.de (Christian Tismer) Date: Sat, 10 Jul 2004 03:02:06 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stackless_structs.h, 1.64, 1.65 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv23895/core Modified Files: stackless_structs.h Log Message: some changes seem to have vanished from cvs... Index: stackless_structs.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_structs.h,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** stackless_structs.h 8 Jul 2004 23:15:59 -0000 1.64 --- stackless_structs.h 10 Jul 2004 01:02:02 -0000 1.65 *************** *** 204,208 **** #define PyTasklet_CheckExact(op) ((op)->ob_type == PyTasklet_TypePtr) - PyAPI_DATA(PyTypeObject) _PyChannel_Type; PyAPI_DATA(PyTypeObject*) PyChannel_TypePtr; #define PyChannel_Type (*PyChannel_TypePtr) --- 204,207 ---- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 9 14:35:55 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 09 Jul 2004 14:35:55 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/module channelobject.c, 1.52, 1.53 scheduling.c, 1.109, 1.110 stacklessmodule.c, 1.177, 1.178 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv6438 Modified Files: channelobject.c scheduling.c stacklessmodule.c Log Message: channel iterators and sequence sending are ready. Slight speed improvement over direct receive/send, but much less than I hoped. Index: channelobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/channelobject.c,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** channelobject.c 8 Jul 2004 23:15:57 -0000 1.52 --- channelobject.c 9 Jul 2004 12:35:52 -0000 1.53 *************** *** 671,678 **** --- 671,681 ---- channel_iternext(PyChannelObject *self) { + STACKLESS_GETARG(); + if (self->flags.closing && self->balance == 0) { /* signal the end of the iteration */ return NULL; } + STACKLESS_PROMOTE_ALL(); return impl_channel_receive(self); } *************** *** 1031,1037 **** }; ! STACKLESS_DECLARE_METHOD(&_PyChannel_Type, tp_iternext) ! PyTypeObject *PyChannel_TypePtr = NULL; /****************************************************** --- 1034,1040 ---- }; ! STACKLESS_DECLARE_METHOD(PyChannel_TypePtr, tp_iternext) ! PyTypeObject *PyChannel_TypePtr = &_PyChannel_Type; /****************************************************** Index: scheduling.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/scheduling.c,v retrieving revision 1.109 retrieving revision 1.110 diff -C2 -d -r1.109 -r1.110 *** scheduling.c 8 Jul 2004 23:15:58 -0000 1.109 --- scheduling.c 9 Jul 2004 12:35:52 -0000 1.110 *************** *** 1066,1070 **** if (PyBomb_Check(retval)) retval = slp_bomb_explode(ts->st.current); ! while (ts->st.current != NULL) { retval = slp_frame_dispatch_top(retval); retval = tasklet_end(retval); --- 1066,1071 ---- if (PyBomb_Check(retval)) retval = slp_bomb_explode(ts->st.current); ! while (ts->st.main != NULL) { ! /* XXX correct condition? or current? */ retval = slp_frame_dispatch_top(retval); retval = tasklet_end(retval); Index: stacklessmodule.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/stacklessmodule.c,v retrieving revision 1.177 retrieving revision 1.178 diff -C2 -d -r1.177 -r1.178 *** stacklessmodule.c 8 Jul 2004 23:15:58 -0000 1.177 --- stacklessmodule.c 9 Jul 2004 12:35:52 -0000 1.178 *************** *** 1010,1014 **** for (; p->type != NULL; p++) { ! ((signed char *) p->type)[p->offset] = -1; } return 0; --- 1010,1020 ---- for (; p->type != NULL; p++) { ! PyTypeObject *t = p->type; ! int ind = p->offset & MFLAG_IND; ! int ofs = p->offset - ind; ! ! if (ind) ! t = *((PyTypeObject **)t); ! ((signed char *) t)[ofs] = -1; } return 0; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:46:27 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:46:27 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/bzip2-1.0.2 libbz2.def, 1.1, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/bzip2-1.0.2 In directory centera.de:/tmp/cvs-serv32377 Removed Files: libbz2.def Log Message: cleanup --- libbz2.def DELETED --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 16 00:38:27 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 16 Jul 2004 00:38:27 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/zlib-1.2.1 zdll.exp, 1.1.1.1, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/zlib-1.2.1 In directory centera.de:/tmp/cvs-serv6307 Removed Files: zdll.exp Log Message: cleanup --- zdll.exp DELETED --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 9 01:16:01 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 09 Jul 2004 01:16:01 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/module channelobject.c, 1.51, 1.52 scheduling.c, 1.108, 1.109 stacklessmodule.c, 1.176, 1.177 taskletobject.c, 1.115, 1.116 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv15690/Stackless/module Modified Files: channelobject.c scheduling.c stacklessmodule.c taskletobject.c Log Message: new channel methods are already there. Meanwhile I had hacked something at home, and I don't know if it is related. Anyway, I get a crash, now. Index: channelobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/channelobject.c,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** a/channelobject.c 8 Jul 2004 18:58:29 -0000 1.51 --- b/channelobject.c 8 Jul 2004 23:15:57 -0000 1.52 *************** *** 874,877 **** --- 874,943 ---- } + static char channel_reduce__doc__[] = + "channel.__reduce__() -- currently does not distinguish threads."; + + static PyObject * + channel_reduce(PyChannelObject * ch) + { + PyObject *tup = NULL, *lis = NULL; + PyTaskletObject *t; + int i, n; + + lis = PyList_New(0); + if (lis == NULL) goto err_exit; + t = ch->head; + n = abs(ch->balance); + for (i = 0; i < n; i++) { + if (PyList_Append(lis, (PyObject *) t)) goto err_exit; + t = t->next; + } + tup = Py_BuildValue("(O()(iiO))", + &PyChannel_Type, + ch->balance, + ch->flags, + lis + ); + err_exit: + Py_XDECREF(lis); + return tup; + } + + static char channel_setstate__doc__[] = + "channel.__setstate__(balance, flags, [tasklets]) -- currently does not distinguish threads."; + + static PyObject * + channel_setstate(PyObject *self, PyObject *args) + { + PyChannelObject *ch = (PyChannelObject *) self; + PyTaskletObject *t; + PyObject *lis; + int flags, balance; + int dir; + int i, n; + + if (!PyArg_ParseTuple(args, "iiO!:channel", + &balance, + &flags, + &PyList_Type, &lis)) + return NULL; + + channel_clear((PyObject *) ch); + n = PyList_GET_SIZE(lis); + *(int *)&ch->flags = flags; + dir = balance > 0 ? 1 : -1; + + for (i = 0; i < n; i++) { + t = (PyTaskletObject *) PyList_GET_ITEM(lis, i); + + if (PyTasklet_Check(t) && !t->flags.blocked) { + Py_INCREF(t); + slp_channel_insert(ch, t, dir); + } + } + Py_INCREF(self); + return self; + } + + static PyCMethodDef channel_cmethods[] = { *************** *** 891,904 **** static PyMethodDef channel_methods[] = { ! {"send", (PCF)channel_send, METH_OS, channel_send__doc__}, ! {"send_exception", (PCF)channel_send_exception, METH_VS, channel_send_exception__doc__}, ! {"receive", (PCF)channel_receive, METH_NS, channel_receive__doc__}, ! {"close", (PCF)channel_close, METH_NOARGS, channel_close__doc__}, ! {"open", (PCF)channel_open, METH_NOARGS, channel_open__doc__}, {"send_sequence", (PCF)channel_send_sequence, METH_OS, channel_send__doc__}, --- 957,976 ---- static PyMethodDef channel_methods[] = { ! {"send", (PCF)channel_send, METH_OS, channel_send__doc__}, ! {"send_exception", (PCF)channel_send_exception, METH_VS, channel_send_exception__doc__}, ! {"receive", (PCF)channel_receive, METH_NS, channel_receive__doc__}, ! {"close", (PCF)channel_close, METH_NOARGS, channel_close__doc__}, ! {"open", (PCF)channel_open, METH_NOARGS, channel_open__doc__}, + {"__reduce__", (PCF)channel_reduce, METH_NOARGS, + channel_reduce__doc__}, + {"__reduce_ex__", (PCF)channel_reduce, METH_VARARGS, + channel_reduce__doc__}, + {"__setstate__", (PCF)channel_setstate, METH_O, + channel_setstate__doc__}, {"send_sequence", (PCF)channel_send_sequence, METH_OS, channel_send__doc__}, *************** *** 959,962 **** --- 1031,1036 ---- }; + STACKLESS_DECLARE_METHOD(&_PyChannel_Type, tp_iternext) + PyTypeObject *PyChannel_TypePtr = NULL; Index: scheduling.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/scheduling.c,v retrieving revision 1.108 retrieving revision 1.109 diff -C2 -d -r1.108 -r1.109 *** a/scheduling.c 8 Jul 2004 18:58:29 -0000 1.108 --- b/scheduling.c 8 Jul 2004 23:15:58 -0000 1.109 *************** *** 1066,1070 **** if (PyBomb_Check(retval)) retval = slp_bomb_explode(ts->st.current); ! while (ts->st.main != NULL) { retval = slp_frame_dispatch_top(retval); retval = tasklet_end(retval); --- 1066,1070 ---- if (PyBomb_Check(retval)) retval = slp_bomb_explode(ts->st.current); ! while (ts->st.current != NULL) { retval = slp_frame_dispatch_top(retval); retval = tasklet_end(retval); Index: stacklessmodule.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/stacklessmodule.c,v retrieving revision 1.176 retrieving revision 1.177 diff -C2 -d -r1.176 -r1.177 *** a/stacklessmodule.c 6 Jun 2004 15:04:41 -0000 1.176 --- b/stacklessmodule.c 8 Jul 2004 23:15:58 -0000 1.177 *************** *** 272,275 **** --- 272,304 ---- } + static char get_thread_info__doc__[] = + "get_thread_info(thread_id) -- return a 3-tuple of the thread's\n\ + main tasklet, current tasklet and runcount.\n\ + To obtain a list of all thread infos, use\n\ + \n\ + map (stackless.get_thread_info, stackless.threads)"; + + static PyObject * + get_thread_info(PyObject *self, PyObject *args) + { + PyThreadState *ts = PyThreadState_GET(); + PyInterpreterState *interp = ts->interp; + long id = 0; + + if (!PyArg_ParseTuple(args, "|i:get_thread_info", &id)) + return NULL; + for (ts = interp->tstate_head; id && ts != NULL; ts = ts->next) { + if (ts->thread_id == id) + break; + } + if (ts == NULL) + RUNTIME_ERROR("Thread id not found", NULL); + + return Py_BuildValue("(OOi)", + ts->st.main ? (PyObject *) ts->st.main : Py_None, + ts->st.runcount ? (PyObject *) ts->st.current : Py_None, + ts->st.runcount); + } + static PyObject * slpmodule_reduce(PyObject *self) *************** *** 718,721 **** --- 747,752 ---- {"_pickle_moduledict", (PCF)slp_pickle_moduledict, METH_VARARGS, slp_pickle_moduledict__doc__}, + {"get_thread_info", (PCF)get_thread_info, METH_VARARGS, + get_thread_info__doc__}, #ifdef STACKLESS_SPY {"_peek", (PCF)_peek, METH_O, *************** *** 860,863 **** --- 891,913 ---- } + static PyObject * + slpmodule_getthreads(PySlpModuleObject *mod, void *context) + { + PyObject *lis = PyList_New(0); + PyThreadState *ts = PyThreadState_GET(); + PyInterpreterState *interp = ts->interp; + + if (lis == NULL) + return NULL; + + for (ts = interp->tstate_head; ts != NULL; ts = ts->next) { + PyObject *id = PyInt_FromLong(ts->thread_id); + + if (id == NULL || PyList_Append(lis, id)) + return NULL; + } + PyList_Reverse(lis); + return lis; + } *************** *** 881,884 **** --- 931,936 ---- {"uncollectables", (getter)slpmodule_getuncollectables, NULL, uncollectables__doc__}, + {"threads", (getter)slpmodule_getthreads, NULL, + "a list of all thread ids, starting with main."}, {0}, }; Index: taskletobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/taskletobject.c,v retrieving revision 1.115 retrieving revision 1.116 diff -C2 -d -r1.115 -r1.116 *** a/taskletobject.c 3 Jun 2004 17:07:34 -0000 1.115 --- b/taskletobject.c 8 Jul 2004 23:15:58 -0000 1.116 *************** *** 314,319 **** --- 314,323 ---- TASKLET_SETVAL(t, tempval); *(int *)&t->flags = flags; + /* we cannot restore blocked, must be done by a channel */ + t->flags.blocked = 0; /* t->nesting_level = nesting_level; XXX how do we handle this? + XXX to be done: pickle the cstate without a ref to the task. + XXX This should make it not runnable in the future. */ if (nframes > 0) { *************** *** 1201,1204 **** --- 1205,1214 ---- } + static PyObject * + tasklet_thread_id(PyTaskletObject *task) + { + return PyInt_FromLong(task->cstate->tstate->thread_id); + } + static PyMemberDef tasklet_members[] = { {"cstate", T_OBJECT, offsetof(PyTaskletObject, cstate), READONLY, *************** *** 1285,1288 **** --- 1295,1301 ---- "This attribute is computed."}, + {"thread_id", (getter)tasklet_thread_id, NULL, + "Return the thread id of the thread the tasklet belongs to."}, + {0}, }; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sat Jul 10 02:54:26 2004 From: tismer at centera.de (Christian Tismer) Date: Sat, 10 Jul 2004 02:54:26 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core extract_slp_methods.py, 1.1, 1.2 stackless_methods.h, 1.3, 1.4 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv23770/Stackless/core Modified Files: extract_slp_methods.py stackless_methods.h Log Message: forgot to update these... Index: extract_slp_methods.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/extract_slp_methods.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** extract_slp_methods.py 2 Jun 2004 23:14:53 -0000 1.1 --- extract_slp_methods.py 10 Jul 2004 00:54:22 -0000 1.2 *************** *** 45,53 **** typedef struct { ! PyTypeObject *type; size_t offset; } _stackless_method; #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) static _stackless_method _stackless_methtable[] = {\ --- 45,55 ---- typedef struct { ! void *type; size_t offset; } _stackless_method; + #define MFLAG_IND 0x8000 #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) + #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND static _stackless_method _stackless_methtable[] = {\ *************** *** 66,71 **** tabs += "\t" lng += 8 ! print >> f, "\t{%s,%sMFLAG_OFS(%s)}," % \ ! (typ.strip(), tabs, meth.strip()) print >> f, "\t{0, 0} /* sentinel */" print >> f, "};" --- 68,77 ---- tabs += "\t" lng += 8 ! ind = "" ! if typ[0] != "&": ! typ = "&" + typ ! ind = "_IND" ! print >> f, "\t{%s,%sMFLAG_OFS%s(%s)}," % \ ! (typ, tabs, ind, meth) print >> f, "\t{0, 0} /* sentinel */" print >> f, "};" Index: stackless_methods.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_methods.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** stackless_methods.h 10 Jul 2004 00:45:25 -0000 1.3 --- stackless_methods.h 10 Jul 2004 00:54:22 -0000 1.4 *************** *** 6,14 **** typedef struct { ! PyTypeObject *type; size_t offset; } _stackless_method; #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) static _stackless_method _stackless_methtable[] = { --- 6,16 ---- typedef struct { ! void *type; size_t offset; } _stackless_method; + #define MFLAG_IND 0x8000 #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) + #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND static _stackless_method _stackless_methtable[] = { *************** *** 27,31 **** {&PyGenerator_Type, MFLAG_OFS(tp_iternext)}, /* from channelobject.c */ ! {PyChannel_TypePtr, MFLAG_OFS(tp_iternext)}, {0, 0} /* sentinel */ }; --- 29,33 ---- {&PyGenerator_Type, MFLAG_OFS(tp_iternext)}, /* from channelobject.c */ ! {&PyChannel_TypePtr, MFLAG_OFS_IND(tp_iternext)}, {0, 0} /* sentinel */ }; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sat Jul 10 03:30:43 2004 From: tismer at centera.de (Christian Tismer) Date: Sat, 10 Jul 2004 03:30:43 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/test taskspeed.py, 1.24, 1.25 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/test In directory centera.de:/tmp/cvs-serv25187/Stackless/test Modified Files: taskspeed.py Log Message: corrected standard Python mode. Index: taskspeed.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/test/taskspeed.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** taskspeed.py 8 Jul 2004 18:58:30 -0000 1.24 --- taskspeed.py 10 Jul 2004 01:30:40 -0000 1.25 *************** *** 16,19 **** --- 16,20 ---- class stackless: debug = 0 # assume to be tested with normal Python + uncollectables = [] tasklist = [] class tasklet(object): *************** *** 25,28 **** --- 26,32 ---- def run(self): self.func(*self.args) + class channel: + def __init__(self): + raise StacklessError def run(): global tasklist *************** *** 58,64 **** args = (niter / ntasks,) + args diff = 0 - for i in range(ntasks): - tasklet(func)(*args) try: start = clock() run() --- 62,68 ---- args = (niter / ntasks,) + args diff = 0 try: + for i in range(ntasks): + tasklet(func)(*args) start = clock() run() _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sat Jul 10 02:45:56 2004 From: tismer at centera.de (Christian Tismer) Date: Sat, 10 Jul 2004 02:45:56 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stackless_methods.h, 1.2, 1.3 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv23555/Stackless/core Modified Files: stackless_methods.h Log Message: forgot to update these... Index: stackless_methods.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_methods.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** stackless_methods.h 8 Jul 2004 23:15:59 -0000 1.2 --- stackless_methods.h 10 Jul 2004 00:45:25 -0000 1.3 *************** *** 19,23 **** {&PyMethodDescr_Type, MFLAG_OFS(tp_call)}, {&PyClassMethodDescr_Type, MFLAG_OFS(tp_call)}, - {&PyWrapperDescr_Type, MFLAG_OFS(tp_call)}, {&PyMethodWrapper_Type, MFLAG_OFS(tp_call)}, /* from funcobject.c */ --- 19,22 ---- *************** *** 28,32 **** {&PyGenerator_Type, MFLAG_OFS(tp_iternext)}, /* from channelobject.c */ ! {&_PyChannel_Type, MFLAG_OFS(tp_iternext)}, {0, 0} /* sentinel */ }; --- 27,31 ---- {&PyGenerator_Type, MFLAG_OFS(tp_iternext)}, /* from channelobject.c */ ! {PyChannel_TypePtr, MFLAG_OFS(tp_iternext)}, {0, 0} /* sentinel */ }; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 12 20:56:58 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 12 Jul 2004 20:56:58 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core extract_slp_methods.py, 1.2, 1.3 stackless_methods.h, 1.4, 1.5 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv18053/Stackless/core Modified Files: extract_slp_methods.py stackless_methods.h Log Message: A tiny optimization of oparg fetching for X86. Mainly I started optimizing by keeping interpreters on the stack. This is just a cache-like optimization and gives a few percent. But I think it will really count for generator/iterator situations. Index: extract_slp_methods.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/extract_slp_methods.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** extract_slp_methods.py 10 Jul 2004 00:54:22 -0000 1.2 --- extract_slp_methods.py 12 Jul 2004 18:56:55 -0000 1.3 *************** *** 52,56 **** #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND ! static _stackless_method _stackless_methtable[] = {\ """ --- 52,56 ---- #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND ! static _stackless_method _stackless_methtable[] = {\ """ *************** *** 69,75 **** lng += 8 ind = "" ! if typ[0] != "&": ! typ = "&" + typ ind = "_IND" print >> f, "\t{%s,%sMFLAG_OFS%s(%s)}," % \ (typ, tabs, ind, meth) --- 69,76 ---- lng += 8 ind = "" ! if not typ.startswith("&"): ! # indirection flag ind = "_IND" + typ = "&" + typ print >> f, "\t{%s,%sMFLAG_OFS%s(%s)}," % \ (typ, tabs, ind, meth) Index: stackless_methods.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_methods.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** stackless_methods.h 10 Jul 2004 00:54:22 -0000 1.4 --- stackless_methods.h 12 Jul 2004 18:56:55 -0000 1.5 *************** *** 13,17 **** #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND ! static _stackless_method _stackless_methtable[] = { /* from classobject.c */ --- 13,17 ---- #define MFLAG_OFS(meth) offsetof(PyTypeObject, slpflags.meth) #define MFLAG_OFS_IND(meth) MFLAG_OFS(meth) + MFLAG_IND ! static _stackless_method _stackless_methtable[] = { /* from classobject.c */ _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Tue Jul 27 20:43:40 2004 From: tismer at centera.de (Christian Tismer) Date: Tue, 27 Jul 2004 20:43:40 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/mini_c - Imported sources, NONE, NONE Message-ID: Update of /home/cvs/slpdev/src/2.3/mini_c In directory centera.de:/tmp/cvs-serv11485 Log Message: no message Status: Vendor Tag: avendor Release Tags: arelease N slpdev/src/2.3/mini_c/c.py N slpdev/src/2.3/mini_c/clex.py N slpdev/src/2.3/mini_c/cparse.py N slpdev/src/2.3/mini_c/cvisitors.py N slpdev/src/2.3/mini_c/cx86.py N slpdev/src/2.3/mini_c/lex.py N slpdev/src/2.3/mini_c/Makefile N slpdev/src/2.3/mini_c/mini_c.tar N slpdev/src/2.3/mini_c/README N slpdev/src/2.3/mini_c/yacc.py N slpdev/src/2.3/mini_c/samples/foo.c N slpdev/src/2.3/mini_c/samples/foo_lib.c No conflicts created by this import --- NEW FILE: - Imported sources --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jul 26 02:24:16 2004 From: tismer at centera.de (Christian Tismer) Date: Mon, 26 Jul 2004 02:24:16 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild mapfile.py, 1.8, 1.9 psyco.vcproj, 1.3, 1.4 pythoncore.vcproj, 1.3, 1.4 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv17276/dev/PCbuild Modified Files: mapfile.py psyco.vcproj pythoncore.vcproj Log Message: going to add symbol and line info data as pickled dicts to the binaries. Index: mapfile.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/mapfile.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** mapfile.py 29 Dec 2003 01:38:30 -0000 1.8 --- mapfile.py 26 Jul 2004 00:24:13 -0000 1.9 *************** *** 37,44 **** if stackless.debug: CODEDIR = "x86-temp-debug\\pythoncore" ! MAPFILE = CODEDIR + "\\python22_d.map" else: CODEDIR = "x86-temp-release\\pythoncore" ! MAPFILE = CODEDIR + "\\python22.map" # find the code class --- 37,44 ---- if stackless.debug: CODEDIR = "x86-temp-debug\\pythoncore" ! MAPFILE = CODEDIR + "\\python23_d.map" else: CODEDIR = "x86-temp-release\\pythoncore" ! MAPFILE = "python23.map" # find the code class Index: psyco.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/psyco.vcproj,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** psyco.vcproj 22 Jul 2004 17:49:42 -0000 1.3 --- psyco.vcproj 26 Jul 2004 00:24:13 -0000 1.4 *************** *** 21,25 **** Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv30234/dev/PCbuild Modified Files: pcbuild.sln Log Message: cleanups, vcproj for testbench Index: pcbuild.sln =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/pcbuild.sln,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pcbuild.sln 15 Jul 2004 18:35:18 -0000 1.1 --- pcbuild.sln 18 Jul 2004 16:07:27 -0000 1.2 *************** *** 95,102 **** EndProjectSection EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbench", "..\Stackless\testbench\testbench.vcproj", "{80F8F414-2752-42B5-9950-C895B0F067C1}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcproj", "{3C917F3B-9DF0-43DB-B75E-35DAA12B266B}" ProjectSection(ProjectDependencies) = postProject --- 95,98 ---- *************** *** 127,130 **** --- 123,130 ---- EndProjectSection EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbench", "..\Stackless\testbench\testbench.vcproj", "{340169E5-7412-4B8A-B756-D8D868DE716C}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection + EndProject Global GlobalSection(SolutionConfiguration) = preSolution *************** *** 248,257 **** {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.ReleaseOff.ActiveCfg = Release|Win32 {F6F2800B-400B-4A61-9A5C-DB6FC559C661}.ReleaseOff.Build.0 = Release|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.Debug.ActiveCfg = Debug|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.Debug.Build.0 = Debug|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.Release.ActiveCfg = Release|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.Release.Build.0 = Release|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.ReleaseOff.ActiveCfg = Release|Win32 - {80F8F414-2752-42B5-9950-C895B0F067C1}.ReleaseOff.Build.0 = Release|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Debug.ActiveCfg = Debug|Win32 {3C917F3B-9DF0-43DB-B75E-35DAA12B266B}.Debug.Build.0 = Debug|Win32 --- 248,251 ---- *************** *** 290,293 **** --- 284,295 ---- {96198F1F-0164-43B2-B562-0A545B50E6CA}.ReleaseOff.ActiveCfg = Release|Win32 {96198F1F-0164-43B2-B562-0A545B50E6CA}.ReleaseOff.Build.0 = Release|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.Debug.ActiveCfg = Debug|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.Debug.Build.0 = Debug|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.Release.ActiveCfg = Release|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.Release.Build.0 = Release|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.ReleaseOff.ActiveCfg = Release|Win32 + {340169E5-7412-4B8A-B756-D8D868DE716C}.ReleaseOff.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionItems) = postSolution EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 22 19:49:44 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 22 Jul 2004 19:49:44 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/psyco-1.2/py-utils xam.py, 1.1.1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils In directory centera.de:/tmp/cvs-serv7665/psyco-1.2/py-utils Modified Files: xam.py Log Message: trying to get psyco disassembly right under Windows. It seems not to work with vc7, since it does pdb files, only. Will need to switch to map file reading. Index: xam.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/psyco-1.2/py-utils/xam.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** xam.py 15 Jul 2004 18:32:33 -0000 1.1.1.1 --- xam.py 22 Jul 2004 17:49:42 -0000 1.2 *************** *** 9,12 **** --- 9,14 ---- objdump = 'objdump -b binary -m i386 --adjust-vma=%(origin)d -D %(file)s' + if sys.platform == "win32": + objdump = 'c:/cygwin/bin/' + objdump #objdump = 'ndisasm -o %(origin)d -u %(file)s' *************** *** 15,18 **** --- 17,22 ---- # psyco_dump_code_buffers() in psyco.c. symbolfiles = [sys.executable] + if sys.platform == "win32": + symbolfiles = [os.environ["SYSTEMROOT"] + r"\SYSTEM32\python23.dll"] try: from psyco import _psyco *************** *** 25,28 **** --- 29,38 ---- re_symbolentry = re.compile(r'([0-9a-fA-F]+)\s\w\s(.*)') + if sys.platform == "win32": + symbollister = r'dumpbin.exe /exports "%s"' + # must have run vcvars.bat before. + # popen will not work with spaces in paths + re_symbolentry = re.compile(r'\s+[0-9a-fA-F]+\s+[0-9a-fA-F]+\s([0-9a-fA-F]+)\s(.*)') + re_addr = re.compile(r'[\s,$]0x([0-9a-fA-F]+)') re_lineaddr = re.compile(r'\s*0?x?([0-9a-fA-F]+)') _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 15 20:35:21 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 15 Jul 2004 20:35:21 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stacklesseval.c, 1.163, 1.164 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv31817/Stackless/core Modified Files: stacklesseval.c Log Message: added psyco to supported modules Index: stacklesseval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stacklesseval.c,v retrieving revision 1.163 retrieving revision 1.164 diff -C2 -d -r1.163 -r1.164 *** stacklesseval.c 8 Jul 2004 18:58:30 -0000 1.163 --- stacklesseval.c 15 Jul 2004 18:35:18 -0000 1.164 *************** *** 442,445 **** --- 442,447 ---- slp_cframe_new(gen_iternext_callback, 0)) == NULL) return NULL; + /* XXX give the patch to python-dev */ + f->f_tstate = ts; /* Generators always return to their most recent caller, not * necessarily their creator. */ _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 8 20:58:33 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 08 Jul 2004 20:58:33 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/test taskspeed.py, 1.23, 1.24 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/test In directory centera.de:/tmp/cvs-serv9390/Stackless/test Modified Files: taskspeed.py Log Message: added iterator support to channels, and sending of sequences. It works, there is just a case missing to make it completely stackless. Changed exceptions to stopiteration in certain places. Very convenient for main, when consuming all of a channel's data with list(ch) Index: taskspeed.py =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/test/taskspeed.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** a/taskspeed.py 24 May 2004 17:42:14 -0000 1.23 --- b/taskspeed.py 8 Jul 2004 18:58:30 -0000 1.24 *************** *** 81,87 **** for i in gf(n):pass ! def channel_sender(send, nest=0): if nest: ! return channel_sender(send, nest-1) while 1: send(42); send(42); send(42); send(42); send(42); --- 81,95 ---- for i in gf(n):pass ! def channel_sender(chan, nest=0, bulk=0): if nest: ! return channel_sender(chan, nest-1) ! if bulk: ! data = range(20) ! send_seq = chan.send_sequence ! send_exc = chan.send_exception ! while 1: ! send_seq(data) ! send_exc(StopIteration) ! send = chan.send while 1: send(42); send(42); send(42); send(42); send(42); *************** *** 90,94 **** send(42); send(42); send(42); send(42); send(42); ! def chantest(n, nest=0, use_thread=False): if nest: return chantest(n, nest-1, use_thread) --- 98,102 ---- send(42); send(42); send(42); send(42); send(42); ! def chantest(n, nest=0, use_thread=False, bulk = False): if nest: return chantest(n, nest-1, use_thread) *************** *** 96,105 **** chan.preference = 0 # fastest if use_thread: ! thread.start_new_thread(channel_sender, (chan.send,)) # wait for thread while not chan.balance: schedule() else: ! tasklet(channel_sender)(chan.send) recv = chan.receive def xrecv(): --- 104,119 ---- chan.preference = 0 # fastest if use_thread: ! thread.start_new_thread(channel_sender, (chan,)) # wait for thread while not chan.balance: schedule() else: ! tasklet(channel_sender)(chan, nest, bulk) ! if bulk: ! for i in xrange(0, n, 20): ! #list(chan) ! for i in chan: pass ! return ! recv = chan.receive def xrecv(): *************** *** 132,151 **** enable_softswitch(0) res = [] ! res.append(tester(f, niter, (schedule,), "frame switches ")) enable_softswitch(1) ! res.append(tester(f, niter, (schedule,), "frame softswitches ")) ! res.append(tester(f, niter, (sys._getframe,), "cfunction calls ")) ! res.append(tester(test_cframe_nr, niter, (), "cframe softswitches")) enable_softswitch(0) ! res.append(tester(chantest, niter, (), "channel hard top ")) ! res.append(tester(chantest, niter, (3,), "channel hard nest 3")) enable_softswitch(1) ! res.append(tester(chantest, niter, (), "channel soft ")) res.append(tester(chantest, niter//10, (0, 1), "channel real thread")) ! res.append(tester(f, niter, (lambda:0,), "function calls ")) ! res.append(tester(gentest, niter, (), "generator calls ")) ! res.append(tester(test_cframe, niter//10, (), "cframe from outside", 1, test_outside)) ! res.append(tester(test_cframe, niter, (), "cframe switches ")) ! res.append(tester(test_cframe, niter, (100,), "cframe 100 words ")) if IS_SLP: --- 146,166 ---- enable_softswitch(0) res = [] ! res.append(tester(f, niter, (schedule,), "frame switches ")) enable_softswitch(1) ! res.append(tester(f, niter, (schedule,), "frame softswitches ")) ! res.append(tester(f, niter, (sys._getframe,), "cfunction calls ")) ! res.append(tester(test_cframe_nr, niter, (), "cframe softswitches")) enable_softswitch(0) ! res.append(tester(chantest, niter, (), "channel hard top ")) ! res.append(tester(chantest, niter, (3,), "channel hard nest 3")) enable_softswitch(1) ! res.append(tester(chantest, niter, (), "channel soft ")) ! res.append(tester(chantest, niter, (0, 0, 1), "channel iterator ")) res.append(tester(chantest, niter//10, (0, 1), "channel real thread")) ! res.append(tester(f, niter, (lambda:0,), "function calls ")) ! res.append(tester(gentest, niter, (), "generator calls ")) ! res.append(tester(test_cframe, niter//10, (), "cframe from outside", 1, test_outside)) ! res.append(tester(test_cframe, niter, (), "cframe switches ")) ! res.append(tester(test_cframe, niter, (100,), "cframe 100 words ")) if IS_SLP: _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 9 01:16:01 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 09 Jul 2004 01:16:01 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stackless_methods.h, 1.1, 1.2 stackless_structs.h, 1.63, 1.64 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv15690/Stackless/core Modified Files: stackless_methods.h stackless_structs.h Log Message: new channel methods are already there. Meanwhile I had hacked something at home, and I don't know if it is related. Anyway, I get a crash, now. Index: stackless_methods.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_methods.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** a/stackless_methods.h 2 Jun 2004 23:14:53 -0000 1.1 --- b/stackless_methods.h 8 Jul 2004 23:15:59 -0000 1.2 *************** *** 27,30 **** --- 27,32 ---- /* from ceval.c */ {&PyGenerator_Type, MFLAG_OFS(tp_iternext)}, + /* from channelobject.c */ + {&_PyChannel_Type, MFLAG_OFS(tp_iternext)}, {0, 0} /* sentinel */ }; Index: stackless_structs.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_structs.h,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** a/stackless_structs.h 24 May 2004 01:01:20 -0000 1.63 --- b/stackless_structs.h 8 Jul 2004 23:15:59 -0000 1.64 *************** *** 204,207 **** --- 204,208 ---- #define PyTasklet_CheckExact(op) ((op)->ob_type == PyTasklet_TypePtr) + PyAPI_DATA(PyTypeObject) _PyChannel_Type; PyAPI_DATA(PyTypeObject*) PyChannel_TypePtr; #define PyChannel_Type (*PyChannel_TypePtr) _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sun Jul 18 18:07:31 2004 From: tismer at centera.de (Christian Tismer) Date: Sun, 18 Jul 2004 18:07:31 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/testbench testbench.vcproj, NONE, 1.1 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/testbench In directory centera.de:/tmp/cvs-serv30234/dev/Stackless/testbench Added Files: testbench.vcproj Log Message: cleanups, vcproj for testbench --- NEW FILE: testbench.vcproj --- _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Thu Jul 8 20:58:32 2004 From: tismer at centera.de (Christian Tismer) Date: Thu, 08 Jul 2004 20:58:32 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/module channelobject.c, 1.50, 1.51 scheduling.c, 1.107, 1.108 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv9390/Stackless/module Modified Files: channelobject.c scheduling.c Log Message: added iterator support to channels, and sending of sequences. It works, there is just a case missing to make it completely stackless. Changed exceptions to stopiteration in certain places. Very convenient for main, when consuming all of a channel's data with list(ch) Index: channelobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/channelobject.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** a/channelobject.c 2 Jun 2004 23:03:42 -0000 1.50 --- b/channelobject.c 8 Jul 2004 18:58:29 -0000 1.51 *************** *** 454,460 **** RUNTIME_ERROR("this tasklet does not like to be" " blocked.", NULL); ! if (self->flags.closing) ! RUNTIME_ERROR("a closed/closing channel cannot" ! " block.", NULL); slp_current_remove(); slp_channel_insert(self, source, dir); --- 454,461 ---- RUNTIME_ERROR("this tasklet does not like to be" " blocked.", NULL); ! if (self->flags.closing) { ! PyErr_SetNone(PyExc_StopIteration); ! return NULL; ! } slp_current_remove(); slp_channel_insert(self, source, dir); *************** *** 615,618 **** --- 616,850 ---- + /********************************************************* + + Sequences in channels. + + Channels can work as an iterator. This removes all + call overhead on the receiver side and is optimum. + + There is still the sender who has to call a method to + transfer data. + But to my surprize, supporting a sequence protocol + for sending does exactly the desired job. + + Example 1: + + def sender(ch): + while condition: + # compute a bulk of results + ch.send:sequence(results) + + def receiver(ch): + for each in ch: + # process each + + Now, with a little layer, we can even avoid the list + creation, and use a generator to yield the results + into the channel. This is also helpful to overcome + the generator restriction of only one yield level. + + Example 2: + + def sender(ch, src): + + def parser(): + while more_to_parse: + # find next token + if is_simple_token: + yield token + else: + # got nested structure + ch.send_sequence(parser()) + + parser() + + *********************************************************/ + + + /* + * iterator extension. + * This is probably the fastest way to run through a channel + * from Python. + */ + + static PyObject * + channel_iternext(PyChannelObject *self) + { + if (self->flags.closing && self->balance == 0) { + /* signal the end of the iteration */ + return NULL; + } + return impl_channel_receive(self); + } + + static PyObject * + channel_getiter(PyObject *self) + { + Py_INCREF(self); + return self; + } + + /* + * sequence support for sending. + * This is now absolutely unbeatable, because you can + * let a generator yield into the channel, without + * any extra method call. :-) + */ + + static char channel_send_sequence__doc__[] = + "channel.send_sequence(seq) -- sed a stream of values\n\ + over the channel. Combined with a generator, this is\n\ + a very efficient way to build fast pipes."; + + /* + * this is the traight-forward and simple implementation, + * but here we have almost no speedup, since all switches + * are hard. + */ + + static PyObject * + _channel_send_sequence(PyChannelObject *self, PyObject *v) + { + PyChannel_HeapType *t = (PyChannel_HeapType *) self->ob_type; + PyObject *it; + int i; + PyObject *ret; + + it = PyObject_GetIter(v); + if (it == NULL) + return NULL; + + /* Run iterator to exhaustion. */ + for (i = 0; ; i++) { + PyObject *item = PyIter_Next(it); + if (item == NULL) { + if (PyErr_Occurred()) + goto error; + break; + } + ret = t->send(self, item); + Py_DECREF(item); + if (ret == NULL) + goto error; + Py_DECREF(ret); + } + + Py_DECREF(it); + return PyInt_FromLong(i); + + error: + Py_DECREF(it); + return NULL; + + } + + /* + * I tried to make this worker loop look like the simple + * implementation. The problem is to leave and enter + * the loop all the time. Hopefully the idea is still visible. + */ + + static PyObject * + channel_seq_callback(PyFrameObject *_f, PyObject *retval) + { + PyThreadState *ts; + PyCFrameObject *f = (PyCFrameObject *) _f; + PyChannelObject *ch; + PyChannel_HeapType *t; + PyObject *item; + int stage = f->n; + + /* prolog to re-enter the loop */ + if (stage == 1) { + item = retval; + goto back_with_data; + } + if (retval == NULL) + goto exit_frame; + + Py_DECREF(retval); + retval = NULL; + + if (stage == 2) { + goto back_from_send; + } + + /* Run iterator to exhaustion. */ + for (; ; f->i++) { + /* get the data */ + STACKLESS_PROPOSE_ALL(); + item = PyIter_Next(f->ob1); + if (item == NULL) { + if (PyErr_Occurred()) + goto exit_frame; + break; + } + if (STACKLESS_UNWINDING(item)) { + stage = f->n = 1; + return item; + } + + back_with_data: + /* send the data */ + ch = (PyChannelObject *) f->ob2; + t = (PyChannel_HeapType *) ch->ob_type; + STACKLESS_PROPOSE_ALL(); + retval = t->send(ch, item); + Py_DECREF(item); + if (retval == NULL) + goto exit_frame; + if (STACKLESS_UNWINDING(retval)) { + stage = f->n = 2; + return retval; + } + Py_DECREF(retval); + back_from_send: + ; + } + + retval = PyInt_FromLong(f->i); + exit_frame: + + /* epilog to return from the frame */ + ts = PyThreadState_GET(); + ts->frame = f->f_back; + Py_DECREF(f); + return retval; + } + + static PyObject * + channel_send_sequence(PyChannelObject *self, PyObject *v) + { + STACKLESS_GETARG(); + PyThreadState *ts = PyThreadState_GET(); + PyChannel_HeapType *t = (PyChannel_HeapType *) self->ob_type; + PyObject *it; + PyCFrameObject *f; + + if (!stackless) + return _channel_send_sequence(self, v); + + it = PyObject_GetIter(v); + if (it == NULL) + return NULL; + + f = slp_cframe_new(channel_seq_callback, 1); + if (f == NULL) + goto error; + + f->ob1 = it; + Py_INCREF(self); + f->ob2 = (PyObject *) self; + f->i = 0; + f->n = 0; + ts->frame = (PyFrameObject *) f; + Py_INCREF(Py_None); + return STACKLESS_PACK(Py_None); + error: + Py_DECREF(it); + return NULL; + } + + static char channel_close__doc__[] = "channel.close() -- stops the channel from enlarging its queue.\n\ *************** *** 669,672 **** --- 901,906 ---- {"open", (PCF)channel_open, METH_NOARGS, channel_open__doc__}, + {"send_sequence", (PCF)channel_send_sequence, METH_OS, + channel_send__doc__}, {NULL, NULL} /* sentinel */ }; *************** *** 709,714 **** offsetof(PyChannelObject, chan_weakreflist), /* tp_weaklistoffset */ ! 0, /* tp_iter */ ! 0, /* tp_iternext */ channel_methods, /* tp_methods */ channel_members, /* tp_members */ --- 943,948 ---- offsetof(PyChannelObject, chan_weakreflist), /* tp_weaklistoffset */ ! (getiterfunc)channel_getiter, /* tp_iter */ ! (iternextfunc)channel_iternext, /* tp_iternext */ channel_methods, /* tp_methods */ channel_members, /* tp_members */ Index: scheduling.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/scheduling.c,v retrieving revision 1.107 retrieving revision 1.108 diff -C2 -d -r1.107 -r1.108 *** a/scheduling.c 6 Jun 2004 15:04:41 -0000 1.107 --- b/scheduling.c 8 Jul 2004 18:58:29 -0000 1.108 *************** *** 1015,1027 **** if (blocked) { /* main was blocked and nobody can send */ if (blocked < 0) ! RUNTIME_ERROR("the main tasklet is receiving" ! " without a sender available.", NULL); else ! RUNTIME_ERROR("the main tasklet is sending" ! " without a receiver available.", NULL); /* fall through to error handling */ ! retval = NULL; } next = ts->st.main; --- 1015,1031 ---- if (blocked) { + char *txt; /* main was blocked and nobody can send */ if (blocked < 0) ! txt = "the main tasklet is receiving" ! " without a sender available."; else ! txt = "the main tasklet is sending" ! " without a receiver available."; ! PyErr_SetString(PyExc_StopIteration, txt); /* fall through to error handling */ ! retval = slp_curexc_to_bomb(); ! if (retval == NULL) ! return NULL; } next = ts->st.main; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Fri Jul 9 18:52:36 2004 From: tismer at centera.de (Christian Tismer) Date: Fri, 09 Jul 2004 18:52:36 +0200 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/module channelobject.c, 1.53, 1.54 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv12368 Modified Files: channelobject.c Log Message: channel iterators and sequence sending are ready. Slight speed improvement over direct receive/send, but much less than I hoped. Index: channelobject.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/channelobject.c,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** channelobject.c 9 Jul 2004 12:35:52 -0000 1.53 --- channelobject.c 9 Jul 2004 16:52:24 -0000 1.54 *************** *** 778,786 **** STACKLESS_PROPOSE_ALL(); item = PyIter_Next(f->ob1); ! if (item == NULL) { ! if (PyErr_Occurred()) ! goto exit_frame; ! break; ! } if (STACKLESS_UNWINDING(item)) { stage = f->n = 1; --- 778,782 ---- STACKLESS_PROPOSE_ALL(); item = PyIter_Next(f->ob1); ! if (STACKLESS_UNWINDING(item)) { stage = f->n = 1; *************** *** 789,792 **** --- 785,799 ---- back_with_data: + if (item == NULL) { + if (PyErr_Occurred()) { + if (PyErr_ExceptionMatches( + PyExc_StopIteration)) + PyErr_Clear(); + else + goto exit_frame; + } + break; + } + /* send the data */ ch = (PyChannelObject *) f->ob2; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins