summaryrefslogtreecommitdiff
path: root/coroutine/arm64/Context.h
AgeCommit message (Collapse)Author
2024-12-17Win32: Add coroutine for mswin on arm64Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/12367
2024-12-17Fix coroutine implementaion on Windows-Arm64Lars Kanis
When setjmp/longjmp/exceptions are used on Windows it's necessary to store+restore additional information from the TEB. I didn't find any official documentation about the values to be saved, but found the corresponding boost/context implemenataion: https://github.com/boostorg/context/commit/abf8e04e23cf05a499594e674d1c90db39117662 This is similar to the special TIB handling on x86/x86_64 on Windows. Without this fix an exception in a fiber segfaults without any output: ruby -e "Fiber.new{ raise 'test' }.resume" Notes: Merged: https://github.com/ruby/ruby/pull/12363
2024-10-08Cast via `uintptr_t` function pointer between object pointerNobuyoshi Nakada
- ISO C forbids conversion of function pointer to object pointer type - ISO C forbids conversion of object pointer to function pointer type
2024-02-06Use `__asm` instead of `asm`Nobuyoshi Nakada
With `--std=c99` option coroutine/arm64/Context.h errs: ``` In file included from cont.c:26: coroutine/arm64/Context.h:59:5: error: call to undeclared function 'asm'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 59 | asm ("hint #8;" : "+r"(r17) : "r"(r16)); | ^ ``` Also move the common function header.
2023-12-22coroutine/arm64: Skip saving/restoring x30 twice and use `autiasp`Yuta Saito
We don't need to save/restore x30 twice, and we can just use `ret`, which uses x30 as return address register instead of explicit `ret <reg>` instruction. This also allows us to use `autiasp` instead of `autia1716` and we can skip setting SP/LR to x16/x17. Also the size of register save area is shrunk by 16 bytes due to the removal of extra x30 save/restore.
2023-12-22coroutine/arm64: Sign return address if PAC enabledYuta Saito
2022-05-25Add support for address sanitizer for amd64 and arm64.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/5926
2021-07-01Replace copy coroutine with pthread implementation.Samuel Williams
2021-01-22Added include guards to coroutine headersNobuyoshi Nakada
2019-12-28Remove "All Rights Reserved." from Copyright statement.Samuel Williams
2019-12-26decouple internal.h headers卜部昌平
Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies). Notes: Merged: https://github.com/ruby/ruby/pull/2711
2019-06-26Add `ucontext` coroutine implementation for generic fallback.Samuel Williams
2019-05-16Make COROUTINE_REGISTERS compile-time only not to be a global symbolNobuyoshi Nakada
2018-11-20Fix indentation.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Prefer "static inline" to avoid duplicate symbols.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Ensure start function has correct declaration.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Mark COROUTINE as noreturn.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Tidy up comments.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Native implementation of coroutines to improve performance of fiberssamuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e