| 773 | | return false, err(debug.traceback(co, (...)), ...) |
| 774 | | end |
| 775 | | if coroutine.status(co) == 'suspended' then |
| 776 | | return performResume(err, co, coroutine.yield(...)) |
| 777 | | else |
| 778 | | return true, ... |
| 779 | | end |
| | 773 | return false, err(debug.traceback(co, arg1), arg1, arg2, arg3, arg4, arg5) |
| | 774 | end |
| | 775 | |
| | 776 | if coroutine.status(co) ~= 'suspended' then |
| | 777 | return true, arg1, arg2, arg3, arg4, arg5 |
| | 778 | end |
| | 779 | |
| | 780 | return performResume(err, co, coroutine.yield(arg1, arg2, arg3, arg4, arg5)) |
| 783 | | function performResume(err, co, ...) |
| 784 | | if get_memory_limit and get_memory_limit() > 0 and |
| 785 | | collectgarbage("count") > (get_memory_limit() * 0.8) |
| 786 | | then |
| 787 | | collectgarbage("collect") |
| 788 | | end |
| 789 | | |
| 790 | | return handleReturnValue(err, co, coroutine.resume(co, ...)) |
| 791 | | end |
| | 784 | function performResume(err, co, arg1, arg2, arg3, arg4, arg5) |
| | 785 | return handleReturnValue(err, co, coroutine.resume(co, arg1, arg2, arg3, arg4, arg5)) |
| | 786 | end |