
Hi Antony Am 10.01.2012 19:32, schrieb Antony Polukhin:
1) Section "Struct boost_fcontext_t and related functions" misses header name, in which C interface is described. OK
2) Header context/detail/context_base.hpp includes # include<boost/context/detail/context_base_fiber.hpp> # include<boost/context/detail/context_base_uctx.hpp> This headers do not exist in checkout. OK
3) Moving context between threads is described in documentation but is not tested in tests. I'm not shure if it should be tested - it's not the focus of the lib?!
4) Rvalue references sometimes miss forward(). For example bost/context/context.hpp (line 60) must be like:
template< typename Fn, typename Allocator> static base_ptr_t make_context_( Fn&& fn, std::size_t size, flag_unwind_t do_unwind, flag_return_t do_return, Allocator const& alloc) { return base_ptr_t( new detail::context_object< typename remove_reference< Fn
::type, Allocator>( boost::forward<Fn>(fn), alloc, size, do_unwind, do_return) ); }
Also forward() calls are required on lines 76, 151, 156, 161 (instead of static_cast< &&>) Preprocessor generated constructors can also have their parameters forwarded. Test cases can be add for this (create function object that is only movable, and move it to the context instance) I was not aware of forward() - which boost lib contains it?
One more question: does ARM implementation works correctly with/without VFP registers/floating point support? well - at least I tried to accomplish the ARM calling standard for LINUX and because I've no ARM board I was forced to test the code on qemu-arm (ARM926EJ-S). Related to VFP registers/floating point support: AFAIK LINUX does allways software FP but I took the recommendations of the Debian people (ARM port) into account (#if (defined(__VFP_FP__) && !defined(__SOFTFP__))).
regards, Oliver