feat: implement symmetric coroutines with fiber.call and fiber.run distinction

Add new `fiber.call` method that remembers the calling fiber for symmetric transfer, while `fiber.run` now performs tail-call style switching without preserving the caller. Introduce re-entrancy guards preventing a fiber from being called multiple times, update all test fixtures to use the new API, and add comprehensive test coverage for call semantics including direct/indirect re-entrancy, value passing, and finished fiber errors.
This commit is contained in:
Bob Nystrom
2014-04-14 14:23:05 +00:00
parent 71783400ae
commit 10b19d969b
31 changed files with 276 additions and 63 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ EXPECT_ERROR_PATTERN = re.compile(r'// expect error')
EXPECT_ERROR_LINE_PATTERN = re.compile(r'// expect error line (\d+)')
EXPECT_RUNTIME_ERROR_PATTERN = re.compile(r'// expect runtime error: (.+)')
ERROR_PATTERN = re.compile(r'\[.* line (\d+)\] Error')
STACK_TRACE_PATTERN = re.compile(r'\[.* line (\d+)\] in \(script\)')
STACK_TRACE_PATTERN = re.compile(r'\[.* line (\d+)\] in')
SKIP_PATTERN = re.compile(r'// skip: (.*)')
NONTEST_PATTERN = re.compile(r'// nontest')