… | |
… | |
88 | used for coroutine creation. |
88 | used for coroutine creation. |
89 | |
89 | |
90 | a Handcoded assembly. This is the fastest and most compatible method |
90 | a Handcoded assembly. This is the fastest and most compatible method |
91 | with the least side effects, if it works, that is. It has been tested |
91 | with the least side effects, if it works, that is. It has been tested |
92 | on GNU/Linux x86 and x86_64 systems and should work on all x86/x86_64 |
92 | on GNU/Linux x86 and x86_64 systems and should work on all x86/x86_64 |
93 | systems using the SVR ELF ABI. This is the recommended method on |
93 | systems using the SVR ELF ABI (it is also reported to be working on |
|
|
94 | Strawberry Perl for Windows using MinGW). This is the recommended |
94 | supported platforms. Note that you usually have to compile this module |
95 | method on supported platforms. Note that you usually have to compile |
95 | with optimisation enabled for this method to work, and also more |
96 | this module with optimisation enabled for this method to work, and |
96 | esoteric switches such as -fomit-leaf-frame-pointer might be required. |
97 | also more esoteric switches such as -fomit-leaf-frame-pointer might be |
97 | When i doubt, use another method, such as (s)etjmp/longjmp. |
98 | required. When i doubt, use another method, such as (s)etjmp/longjmp. |
98 | |
99 | |
99 | l GNU/Linux. Very old GNU/Linux systems (glibc-2.1 and below) need |
100 | l GNU/Linux. Very old GNU/Linux systems (glibc-2.1 and below) need |
100 | this hack. Since it is very linux-specific it is also quite fast and |
101 | this hack. Since it is very linux-specific it is also quite fast and |
101 | recommended even for newer versions; when it works, that is (currently |
102 | recommended even for newer versions; when it works, that is (currently |
102 | x86 and a few others only. If it compiles, it's usually ok). Newer |
103 | x86 and a few others only. If it compiles, it's usually ok). Newer |
… | |
… | |
104 | |
105 | |
105 | i IRIX. For some reason, SGI really does not like to follow the single |
106 | i IRIX. For some reason, SGI really does not like to follow the single |
106 | unix specification (does that surprise you?), so this workaround might |
107 | unix specification (does that surprise you?), so this workaround might |
107 | be needed (it's fast), although [s] and [u] should also work now. |
108 | be needed (it's fast), although [s] and [u] should also work now. |
108 | |
109 | |
109 | w Microsoft Windows. Try this on Microsoft Windows, although, as there is |
110 | w Microsoft Windows. Try this on Microsoft Windows when using Cygwin or |
110 | no standard on how to do this under windows, this might work only on |
111 | the MSVC compilers (e.g. ActiveState Perl, but see "a" for Strawberry |
111 | cygwin or specific versions of msvc. Your problem, your fix, our patch. |
112 | Perl), although, as there is no standard on how to do this under |
|
|
113 | windows, different enviroments might work differently. Doh. |
112 | |
114 | |
113 | p Use pthread API. Try to avoid this option, it was only created to make |
115 | p Use pthread API. Try to avoid this option, it was only created to make |
114 | a point about the programming language shootout and might leak threads. |
116 | a point about the programming language shootout and might leak threads. |
115 | It might work fine as a last resort, however. |
117 | It might work fine as a last resort, however. |
116 | |
118 | |