
hi Am 08.11.2011 18:22, schrieb GOODHART, TAYLOR:
1.) Impressive performance. Did you write some assembly for each platform to avoid having to swap out the signal masks and floating point context?
yes - currently supported: i386, x86_64, mips, arm, powerpc store/restore of the signal mask is not done and only required floating point stuff is preserved (like x87 control word on x86 etc.)
Cons: 1.) Void * argument passing. Perhaps there's some limitation that requires this. If so, then I'd be curious to read about it in the Rationale section. Even then, some syntactical sugar to hide the static cast may not be bad. 2.) Function pointers only? It looks like the library only accepts function pointers, not bound functions, functors, or lambdas. I suspect this is related to the fact that makecontext() accepts raw function pointers. Nevertheless, I've come to expect the ability to pass an arbitrary "callable" argument to boost libraries. If this is unreasonable, then I'd be curious to learn why in the Rationale section.
maybe you refer to the basic API boost_fcontext_jump()/boost_fcontext_make() etc? this interface is intended to be small as possible and was modelled like makecontext()/swapcontext() stuff. function pointers, bound functions, functors etc. can be used with the boost::context class (ctor similiar to boost::thread). the docu contains some out-dated infos - I've to update it. Oliver