From tismer at centera.de Wed Jan 19 20:02:33 2005 From: tismer at centera.de (Christian Tismer) Date: Wed, 19 Jan 2005 20:02:33 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/core stackless_structs.h, 1.66, 1.67 stacklesseval.c, 1.164, 1.165 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/core In directory centera.de:/tmp/cvs-serv4895/src/2.3/dev/Stackless/core Modified Files: stackless_structs.h stacklesseval.c Log Message: Added support for tracing and profiling. Every tasklet keeps track of these when switching. I'm not sure if this is ok for the tracing stuff, but at least it should make it possible to use standard debuggers and profilers with any single tasklet, now. Also corrected an oversight in stack saving on deep recursions. Index: stackless_structs.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stackless_structs.h,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** stackless_structs.h 30 Nov 2004 12:38:10 -0000 1.66 --- stackless_structs.h 19 Jan 2005 19:02:30 -0000 1.67 *************** *** 175,178 **** --- 175,180 ---- PyObject *ob3; long i, n; + void *any1; + void *any2; } PyCFrameObject; Index: stacklesseval.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/core/stacklesseval.c,v retrieving revision 1.164 retrieving revision 1.165 diff -C2 -d -r1.164 -r1.165 *** stacklesseval.c 15 Jul 2004 18:35:18 -0000 1.164 --- stacklesseval.c 19 Jan 2005 19:02:30 -0000 1.165 *************** *** 346,349 **** --- 346,353 ---- cur->cstate = NULL; retval = PyEval_EvalFrame(ts->frame, retval); + if (retval == NULL) + retval = slp_curexc_to_bomb(); + if (retval == NULL) + return NULL; TASKLET_SETVAL_OWN(cur, retval); /* jump back */ _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Wed Jan 19 20:02:33 2005 From: tismer at centera.de (Christian Tismer) Date: Wed, 19 Jan 2005 20:02:33 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/test test_profile.py, NONE, 1.1 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/test In directory centera.de:/tmp/cvs-serv4895/src/2.3/dev/Stackless/test Added Files: test_profile.py Log Message: Added support for tracing and profiling. Every tasklet keeps track of these when switching. I'm not sure if this is ok for the tracing stuff, but at least it should make it possible to use standard debuggers and profilers with any single tasklet, now. Also corrected an oversight in stack saving on deep recursions. --- NEW FILE: test_profile.py --- # testing the new Stackless profile feature. # there is no extra support for Stackless, yet. # The only provided mechanism is that in case # of profiling or tracing, these thread variables # are saved and restored on a per-tasklet basis. from stackless import * import sys sys.setrecursionlimit(sys.maxint) counts = [0, 0] def func1(n): counts[0] += 1 #print "func1 schedule", n schedule() if n: func2(n-1) def func2(n): counts[1] += 1 #print "func2 schedule", n schedule() if n: func1(n-1) tasklet(func1)(123) func1(1000) print "run me under the profiler!" print "true counts:", counts _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Sun Jan 9 20:40:34 2005 From: tismer at centera.de (Christian Tismer) Date: Sun, 09 Jan 2005 20:40:34 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild pythoncore.vcproj, 1.5, 1.6 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv9257/src/2.3/dev/PCbuild Modified Files: pythoncore.vcproj Log Message: small bug with lock allocation. Thanks to Seung Chan Lim! Index: pythoncore.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/pythoncore.vcproj,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** pythoncore.vcproj 30 Nov 2004 12:33:21 -0000 1.5 --- pythoncore.vcproj 9 Jan 2005 19:40:31 -0000 1.6 *************** *** 95,99 **** Optimization="2" InlineFunctionExpansion="1" ! AdditionalIncludeDirectories="..\Include,..\PC,..\Stackless" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;USE_DL_EXPORT" StringPooling="TRUE" --- 95,99 ---- Optimization="2" InlineFunctionExpansion="1" ! AdditionalIncludeDirectories="..\Include;..\PC;..\Stackless" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;USE_DL_EXPORT" StringPooling="TRUE" _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Wed Jan 19 20:02:33 2005 From: tismer at centera.de (Christian Tismer) Date: Wed, 19 Jan 2005 20:02:33 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/PCbuild pcbuild.sln, 1.3, 1.4 zlib.vcproj, 1.1, 1.2 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/PCbuild In directory centera.de:/tmp/cvs-serv4895/src/2.3/dev/PCbuild Modified Files: pcbuild.sln zlib.vcproj Log Message: Added support for tracing and profiling. Every tasklet keeps track of these when switching. I'm not sure if this is ok for the tracing stuff, but at least it should make it possible to use standard debuggers and profilers with any single tasklet, now. Also corrected an oversight in stack saving on deep recursions. Index: pcbuild.sln =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/pcbuild.sln,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** pcbuild.sln 30 Nov 2004 12:33:21 -0000 1.3 --- pcbuild.sln 19 Jan 2005 19:02:30 -0000 1.4 *************** *** 1,86 **** Microsoft Visual Studio Solution File, Format Version 8.00 - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{4FD1D8E5-217D-44F9-AE5D-2425309F83BC}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_csv", "_csv.vcproj", "{CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcproj", "{6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sre", "_sre.vcproj", "{3AD69EFA-B059-4817-9C29-92BA832484EA}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{BE271C87-2732-436E-BF8C-3491942EFD68}" - ProjectSection(ProjectDependencies) = postProject - {F0082FE8-8C93-48E6-BC38-3715C2493F9C} = {F0082FE8-8C93-48E6-BC38-3715C2493F9C} - {3EDD513D-2D10-413D-8D52-DC495EED60A5} = {3EDD513D-2D10-413D-8D52-DC495EED60A5} - {3AD69EFA-B059-4817-9C29-92BA832484EA} = {3AD69EFA-B059-4817-9C29-92BA832484EA} - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_symtable", "_symtable.vcproj", "{40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{38986E75-947A-4519-876B-59BAF3E1F45C}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{A43B61F8-1B91-4338-9914-B8C6982F060C}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{83B21C88-4CB3-432C-A732-9D1673953C76}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datetime", "datetime.vcproj", "{F495C171-B219-434E-948F-3BB3826FCB9B}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_versioninfo", "make_versioninfo.vcproj", "{A5FBFC58-933D-488B-A176-D7AF75297293}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmap", "mmap.vcproj", "{3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser", "parser.vcproj", "{A62639E7-43EA-4B78-BBF2-6DEBC73790BD}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcproj", "{21D1B114-B3C4-4B6F-BAA9-A33116323A58}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyghostscript", "..\..\..\..\..\projects\PharmaControl\pyghostscript-0.1\pyghostscript.vcproj", "{DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection - EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcproj", "{3EDD513D-2D10-413D-8D52-DC495EED60A5}" - ProjectSection(ProjectDependencies) = postProject - {38E29795-0AB8-4981-992D-FF816ED76A91} = {38E29795-0AB8-4981-992D-FF816ED76A91} - EndProjectSection - EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcproj", "{38E29795-0AB8-4981-992D-FF816ED76A91}" ProjectSection(ProjectDependencies) = postProject - {A5FBFC58-933D-488B-A176-D7AF75297293} = {A5FBFC58-933D-488B-A176-D7AF75297293} EndProjectSection EndProject --- 1,5 ---- *************** *** 130,229 **** EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.Debug.ActiveCfg = Debug|Win32 - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.Debug.Build.0 = Debug|Win32 - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.Release.ActiveCfg = Release|Win32 - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.Release.Build.0 = Release|Win32 - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.ReleaseOff.ActiveCfg = Release|Win32 - {4FD1D8E5-217D-44F9-AE5D-2425309F83BC}.ReleaseOff.Build.0 = Release|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.Debug.ActiveCfg = Debug|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.Debug.Build.0 = Debug|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.Release.ActiveCfg = Release|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.Release.Build.0 = Release|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.ReleaseOff.ActiveCfg = Release|Win32 - {CFAE2CDB-FE4D-4F85-A69D-214C88840A6E}.ReleaseOff.Build.0 = Release|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.Debug.ActiveCfg = Debug|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.Debug.Build.0 = Debug|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.Release.ActiveCfg = Release|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.Release.Build.0 = Release|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.ReleaseOff.ActiveCfg = Release|Win32 - {6F793BA0-FCAD-47DD-B5D7-3DF85AEB5722}.ReleaseOff.Build.0 = Release|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.Debug.ActiveCfg = Debug|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.Debug.Build.0 = Debug|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.Release.ActiveCfg = Release|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.Release.Build.0 = Release|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.ReleaseOff.ActiveCfg = ReleaseOff|Win32 - {3AD69EFA-B059-4817-9C29-92BA832484EA}.ReleaseOff.Build.0 = ReleaseOff|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.Debug.ActiveCfg = Debug|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.Debug.Build.0 = Debug|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.Release.ActiveCfg = Release|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.Release.Build.0 = Release|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.ReleaseOff.ActiveCfg = Release|Win32 - {BE271C87-2732-436E-BF8C-3491942EFD68}.ReleaseOff.Build.0 = Release|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.Debug.ActiveCfg = Debug|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.Debug.Build.0 = Debug|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.Release.ActiveCfg = Release|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.Release.Build.0 = Release|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.ReleaseOff.ActiveCfg = Release|Win32 - {40FD3B6A-7D13-44D0-831F-A3F0BEC32BA3}.ReleaseOff.Build.0 = Release|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.Debug.ActiveCfg = Debug|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.Debug.Build.0 = Debug|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.Release.ActiveCfg = Release|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.Release.Build.0 = Release|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.ReleaseOff.ActiveCfg = Release|Win32 - {38986E75-947A-4519-876B-59BAF3E1F45C}.ReleaseOff.Build.0 = Release|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.Debug.ActiveCfg = Debug|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.Debug.Build.0 = Debug|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.Release.ActiveCfg = Release|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.Release.Build.0 = Release|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.ReleaseOff.ActiveCfg = Release|Win32 - {A43B61F8-1B91-4338-9914-B8C6982F060C}.ReleaseOff.Build.0 = Release|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.Debug.ActiveCfg = Debug|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.Debug.Build.0 = Debug|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.Release.ActiveCfg = Release|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.Release.Build.0 = Release|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.ReleaseOff.ActiveCfg = Release|Win32 - {83B21C88-4CB3-432C-A732-9D1673953C76}.ReleaseOff.Build.0 = Release|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.Debug.ActiveCfg = Debug|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.Debug.Build.0 = Debug|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.Release.ActiveCfg = Release|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.Release.Build.0 = Release|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.ReleaseOff.ActiveCfg = Release|Win32 - {F495C171-B219-434E-948F-3BB3826FCB9B}.ReleaseOff.Build.0 = Release|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.Debug.ActiveCfg = Debug|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.Debug.Build.0 = Debug|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.Release.ActiveCfg = Release|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.Release.Build.0 = Release|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.ReleaseOff.ActiveCfg = Release|Win32 - {A5FBFC58-933D-488B-A176-D7AF75297293}.ReleaseOff.Build.0 = Release|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.Debug.ActiveCfg = Debug|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.Debug.Build.0 = Debug|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.Release.ActiveCfg = Release|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.Release.Build.0 = Release|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.ReleaseOff.ActiveCfg = Release|Win32 - {3D68E1BE-9B38-48EB-92CA-59BAF6A2C9AE}.ReleaseOff.Build.0 = Release|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.Debug.ActiveCfg = Debug|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.Debug.Build.0 = Debug|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.Release.ActiveCfg = Release|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.Release.Build.0 = Release|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.ReleaseOff.ActiveCfg = Release|Win32 - {A62639E7-43EA-4B78-BBF2-6DEBC73790BD}.ReleaseOff.Build.0 = Release|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.Debug.ActiveCfg = Debug|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.Debug.Build.0 = Debug|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.Release.ActiveCfg = Release|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.Release.Build.0 = Release|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.ReleaseOff.ActiveCfg = Release|Win32 - {21D1B114-B3C4-4B6F-BAA9-A33116323A58}.ReleaseOff.Build.0 = Release|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.Debug.ActiveCfg = Debug|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.Debug.Build.0 = Debug|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.Release.ActiveCfg = Release|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.Release.Build.0 = Release|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.ReleaseOff.ActiveCfg = Release|Win32 - {DCBCB9C5-F186-4879-B2D8-FEDD843E59A2}.ReleaseOff.Build.0 = Release|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.Debug.ActiveCfg = Debug|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.Debug.Build.0 = Debug|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.Release.ActiveCfg = Release|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.Release.Build.0 = Release|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.ReleaseOff.ActiveCfg = ReleaseOff|Win32 - {3EDD513D-2D10-413D-8D52-DC495EED60A5}.ReleaseOff.Build.0 = ReleaseOff|Win32 {38E29795-0AB8-4981-992D-FF816ED76A91}.Debug.ActiveCfg = Debug|Win32 {38E29795-0AB8-4981-992D-FF816ED76A91}.Debug.Build.0 = Debug|Win32 --- 49,52 ---- Index: zlib.vcproj =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/PCbuild/zlib.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** zlib.vcproj 15 Jul 2004 18:35:18 -0000 1.1 --- zlib.vcproj 19 Jan 2005 19:02:30 -0000 1.2 *************** *** 37,45 **** Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv9257/src/2.3/dev/Stackless/module Modified Files: scheduling.c Log Message: small bug with lock allocation. Thanks to Seung Chan Lim! Index: scheduling.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/scheduling.c,v retrieving revision 1.110 retrieving revision 1.111 diff -C2 -d -r1.110 -r1.111 *** scheduling.c 9 Jul 2004 12:35:52 -0000 1.110 --- scheduling.c 9 Jan 2005 19:40:32 -0000 1.111 *************** *** 655,658 **** --- 655,662 ---- */ + if (nts->st.thread.unlock_lock == NULL) { + if (!(nts->st.thread.unlock_lock = new_lock())) + return NULL; + } unlock_lock = nts->st.thread.unlock_lock; Py_INCREF(unlock_lock); _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Wed Jan 19 20:02:33 2005 From: tismer at centera.de (Christian Tismer) Date: Wed, 19 Jan 2005 20:02:33 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/module scheduling.c, 1.111, 1.112 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/module In directory centera.de:/tmp/cvs-serv4895/src/2.3/dev/Stackless/module Modified Files: scheduling.c Log Message: Added support for tracing and profiling. Every tasklet keeps track of these when switching. I'm not sure if this is ok for the tracing stuff, but at least it should make it possible to use standard debuggers and profilers with any single tasklet, now. Also corrected an oversight in stack saving on deep recursions. Index: scheduling.c =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/module/scheduling.c,v retrieving revision 1.111 retrieving revision 1.112 diff -C2 -d -r1.111 -r1.112 *** scheduling.c 9 Jan 2005 19:40:32 -0000 1.111 --- scheduling.c 19 Jan 2005 19:02:31 -0000 1.112 *************** *** 296,299 **** --- 296,301 ---- unrelated to the current error, and we always swap the data. + Added support for trace/profile as well. + ********************************************************************/ *************** *** 305,308 **** --- 307,319 ---- { PyThreadState *ts = PyThreadState_GET(); + + int tracing = ts->tracing; + int use_tracing = ts->use_tracing; + + Py_tracefunc c_profilefunc = ts->c_profilefunc; + Py_tracefunc c_tracefunc = ts->c_tracefunc; + PyObject *c_profileobj = ts->c_profileobj; + PyObject *c_traceobj = ts->c_traceobj; + PyObject *exc_type = ts->exc_type; PyObject *exc_value = ts->exc_value; *************** *** 311,315 **** --- 322,345 ---- ts->exc_type = ts->exc_value = ts->exc_traceback = NULL; + ts->c_profilefunc = ts->c_tracefunc = NULL; + ts->c_profileobj = ts->c_traceobj = NULL; + ts->use_tracing = ts->tracing = 0; + + /* note that trace/profile are set without ref */ + Py_XINCREF(c_profileobj); + Py_XINCREF(c_traceobj); + ret = slp_transfer(cstprev, cst, prev); + + ts->tracing = tracing; + ts->use_tracing = use_tracing; + + ts->c_profilefunc = c_profilefunc; + ts->c_tracefunc = c_tracefunc; + ts->c_profileobj = c_profileobj; + ts->c_traceobj = c_traceobj; + Py_XDECREF(c_profileobj); + Py_XDECREF(c_traceobj); + ts->exc_type = exc_type; ts->exc_value = exc_value; *************** *** 412,415 **** --- 442,464 ---- } + static PyObject * + restore_tracing(PyFrameObject *f, PyObject *retval) + { + PyThreadState *ts = PyThreadState_GET(); + PyCFrameObject *cf = (PyCFrameObject *) f; + + f = cf->f_back; + ts->c_tracefunc = cf->any1; + ts->c_profilefunc = cf->any2; + ts->c_traceobj = cf->ob1; + ts->c_profileobj = cf->ob2; + ts->tracing = cf->i; + ts->use_tracing = cf->n; + /* the objects *have* extra references here */ + Py_DECREF(cf); + ts->frame = f; + return STACKLESS_PACK(retval); + } + /* jumping from a soft tasklet to a hard switched */ *************** *** 731,734 **** --- 780,784 ---- PyCStackObject **cstprev; PyObject *retval; + int (*transfer)(PyCStackObject **, PyCStackObject *, PyTaskletObject *); if (next == NULL) { *************** *** 736,740 **** } #ifdef WITH_THREAD ! if (next->cstate->tstate != ts) { return schedule_task_unblock(prev, next, stackless); } --- 786,791 ---- } #ifdef WITH_THREAD ! /* note that next->cstate is undefined if it is ourself */ ! if (next->cstate != NULL && next->cstate->tstate != ts) { return schedule_task_unblock(prev, next, stackless); } *************** *** 785,789 **** ts->exc_type = NULL; } ! else if (ts->exc_type != NULL) { /* build a shadow frame */ PyCFrameObject *f = slp_cframe_new(restore_exception, 1); --- 836,840 ---- ts->exc_type = NULL; } ! if (ts->exc_type != NULL) { /* build a shadow frame */ PyCFrameObject *f = slp_cframe_new(restore_exception, 1); *************** *** 797,800 **** --- 848,870 ---- ts->exc_traceback = NULL; } + if (ts->use_tracing || ts->tracing) { + /* build a shadow frame */ + PyCFrameObject *f = slp_cframe_new(restore_tracing, 1); + if (f == NULL) + return NULL; + f->any1 = ts->c_tracefunc; + f->any2 = ts->c_profilefunc; + ts->c_tracefunc = ts->c_profilefunc = NULL; + f->ob1 = ts->c_traceobj; + f->ob2 = ts->c_profileobj; + /* trace/profile does not add references */ + Py_XINCREF(f->ob1); + Py_XINCREF(f->ob2); + ts->c_traceobj = ts->c_profileobj = NULL; + f->i = ts->tracing; + f->n = ts->use_tracing; + ts->tracing = ts->use_tracing = 0; + prev->f.frame = (PyFrameObject *) f; + } ts->frame = next->f.frame; next->f.frame = NULL; *************** *** 842,847 **** ++ts->st.nesting_level; ! if ((ts->exc_type != NULL ? transfer_with_exc : slp_transfer)( ! cstprev, next->cstate, prev) == 0) { --ts->st.nesting_level; retval = prev->tempval; --- 912,921 ---- ++ts->st.nesting_level; ! if (ts->exc_type != NULL || ts->use_tracing || ts->tracing) ! transfer = transfer_with_exc; ! else ! transfer = slp_transfer; ! ! if (transfer(cstprev, next->cstate, prev) == 0) { --ts->st.nesting_level; retval = prev->tempval; _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Mon Jan 3 18:49:56 2005 From: tismer at centera.de (Christian Tismer) Date: Mon, 03 Jan 2005 18:49:56 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/demo handledtasklet.py, NONE, 1.1 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless/demo In directory centera.de:/tmp/cvs-serv23898/src/2.3/dev/Stackless/demo Added Files: handledtasklet.py Log Message: a demo tasklet with a builtin exception handler. --- NEW FILE: handledtasklet.py --- """ This is an example of an exception handled tasklet type. It also shows some flaw in the tasklet design: I don't provide ways to override __init__, because it is not called, and it would also make sense to override bind(). A first version using a def handler(self, *args,**kwds): did not work for some reason. It seems that there are deficiencies in the argument handling of bound methods. Will try to enhance this,soon. """ from stackless import * class HandledTasklet(tasklet): def __new__(self, func): def handler(*args, **kwds): try: func(*args, **kwds) except Exception, e: print "captured", e raise return tasklet.__new__(self, handler) _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins From tismer at centera.de Wed Jan 19 20:02:33 2005 From: tismer at centera.de (Christian Tismer) Date: Wed, 19 Jan 2005 20:02:33 +0100 Subject: [Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless stackless_version.h, 1.46, 1.47 Message-ID: Update of /home/cvs/slpdev/src/2.3/dev/Stackless In directory centera.de:/tmp/cvs-serv4895/src/2.3/dev/Stackless Modified Files: stackless_version.h Log Message: Added support for tracing and profiling. Every tasklet keeps track of these when switching. I'm not sure if this is ok for the tracing stuff, but at least it should make it possible to use standard debuggers and profilers with any single tasklet, now. Also corrected an oversight in stack saving on deep recursions. Index: stackless_version.h =================================================================== RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/stackless_version.h,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** stackless_version.h 30 Nov 2004 12:38:10 -0000 1.46 --- stackless_version.h 19 Jan 2005 19:02:31 -0000 1.47 *************** *** 1,7 **** /* * Stackless Python version string ! * created at Tue Nov 30 12:34:10 2004 by mkversion.py */ /* keep this entry up-to-date */ ! #define STACKLESS_VERSION "3.1b3 041130" --- 1,7 ---- /* * Stackless Python version string ! * created at Wed Jan 19 16:47:29 2005 by mkversion.py */ /* keep this entry up-to-date */ ! #define STACKLESS_VERSION "3.1b3 050119" _______________________________________________ Stackless-checkins mailing list Stackless-checkins at stackless.com http://www.stackless.com/mailman/listinfo/stackless-checkins