Lars Kanis
853d91a04a
Fix coroutine support on win32
...
Ruby master branch currently fails on win32 MINGW at this spec:
https://github.com/ruby/spec/blob/master/core/thread/element_set_spec.rb
MINGW makes use of setjmp3() implemented in MSVCRT.DLL.
This function traverses the SEH list up to a terminating pointer 0xFFFFFFFF.
It therefore currently segfaults on NULL.
The SEH linked list must be terminated by 0xFFFFFFFF instead of NULL.
This fixes the issue mentioned here:
https://github.com/ruby/ruby/pull/2279#issuecomment-509508810
2019-11-05 15:31:21 +09:00
Samuel Williams
e14f5762c5
Add assertions to `coroutine_initialize_main`.
2019-07-19 15:55:34 +12:00
Samuel Williams
dd0e33f083
Split assertions to check which one fails.
2019-07-19 15:53:47 +12:00
Samuel Williams
001f187ed6
Make fiber_pool more conservative on platforms with limited address space.
...
We use COROUTINE_LIMITED_ADDRESS_SPACE to select platforms where address
space is 32-bits or less. Fiber pool implementation enables more book
keeping, and reduces upper limits, in order to minimise address space
utilisation.
2019-07-18 20:54:55 +12:00
Samuel Williams
91aae651bf
Stack copying implementation of coroutines.
2019-07-18 20:54:54 +12:00
Lars Kanis
68e5804022
Add coroutine context switch for i386-mingw32
...
It's essentially a translation of Context.asm from Intel
to AT&T syntax.
2019-07-07 21:33:47 +12:00
Samuel Williams
acb67472c7
Restore updated implementation of arm32 coroutine code, but prefer ucontext.
2019-06-26 22:02:28 +12:00
Yusuke Endoh
28eeaed8a9
Revert "coroutine/arm32/Context.S: save/restore the registers via stack"
...
This reverts commit 6df1814c08
.
It caused a SEGV again:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190626T051707Z.fail.html.gz
2019-06-26 17:23:00 +09:00
Samuel Williams
6c6bf9ffcb
Add `ucontext` coroutine implementation for generic fallback.
2019-06-26 20:19:53 +12:00
Yusuke Endoh
6df1814c08
coroutine/arm32/Context.S: save/restore the registers via stack
...
Retry of 518adcca0a
and dbe232e24e
2019-06-26 14:08:10 +09:00
Yusuke Endoh
730aeb2523
Revert 518adcca0a
and dbe232e24e
...
518adcca0a: "Try using arm32 implementation for fibers."
dbe232e24e: "Order of arguments might be incorrect in arm32 coroutine implementation."
It seems to cause SEGV consistently on Ubuntu armv7l eabihf:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T081710Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T111708Z.fail.html.gz
2019-06-25 23:32:26 +09:00
Samuel Williams
dbe232e24e
Order of arguments might be incorrect in arm32 coroutine implementation.
2019-06-25 17:04:04 +12:00
Nobuyoshi Nakada
e29a85a96c
Make COROUTINE_XMM_REGISTERS compile-time only too
2019-05-17 13:16:39 +09:00
Nobuyoshi Nakada
e0f0ab959e
Remove unused symbols
2019-05-16 21:58:42 +09:00
Nobuyoshi Nakada
a160b2f567
Make COROUTINE_REGISTERS compile-time only not to be a global symbol
2019-05-16 15:52:09 +09:00
samuel
dc6908ab44
Ensure x86 stack is fortified, fixed #15335 .
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-11 23:49:33 +00:00
odaira
3a5cc345f8
Native coroutine implementation for ppc64le Linux
...
* configure.ac: enable fiber coroutine for powerpc64le-linux
* coroutine/ppc64le/Context.S: coroutine_transfer implementation
* coroutine/ppc64le/Context.h: coroutine implementation
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-10 23:22:56 +00:00
nobu
c5fe904f6e
Fix for coroutine/win32/Context.obj
...
* coroutine/win32/Context.asm: old ml version 9 needs CPU
directive before `.model` directive.
* win32/Makefile.sub: specify object directories to separate Win32
and Win64 targets. Win32 rule was overridden by Win64 rule and
just ignored.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-28 01:04:39 +00:00
samuel
f33adbc11e
Ensure stack is correctly protected
...
See https://bugs.ruby-lang.org/issues/15335 for more details.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24 11:35:34 +00:00
samuel
e64f71f812
Change Makefile rule for assembly to use .S rather than .s
...
It is more conventional to use compiler to pre-process and
assemble the `.S` file rather than forcing Makefile to use `.s`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24 11:35:29 +00:00
samuel
6459112852
Fix argument order.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24 02:31:11 +00:00
samuel
26adef94fa
Fix indentation.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 20:09:38 +00:00
samuel
495dffba43
GAS style assembly for win64 (mingw).
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:18:16 +00:00
samuel
0ba0ad8b41
Fix struct usage.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:18:01 +00:00
samuel
49e920855a
Fix line endings.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:49 +00:00
samuel
0b5e1442f5
Initial support for x64-mingw32
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:44 +00:00
samuel
d97c928067
Better (?) support for Windows TIB.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:39 +00:00
svn
cdb8f3f996
* expand tabs.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:19 +00:00
samuel
ae3c8c2085
Prefer "static inline" to avoid duplicate symbols.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:17 +00:00
samuel
a3de4a092d
Remove trailing whitespace.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:12 +00:00
samuel
83c84182ad
Formatting changes.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:17:00 +00:00
samuel
9481461cc3
Ensure start function has correct declaration.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:16:54 +00:00
samuel
99346f74a4
Mark COROUTINE as noreturn.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:16:41 +00:00
samuel
3710dedc12
Tidy up comments.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:16:29 +00:00
svn
d4a5883886
* expand tabs.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:14:03 +00:00
samuel
3e9beaf72b
Initial effort to support 32-bit Linux.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:13:59 +00:00
samuel
ec0d3ba19e
Restore return value assignment
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 09:59:23 +00:00
samuel
07a324a0f6
Native implementation of coroutines to improve performance of fibers
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 09:59:10 +00:00