Ilmir Usmanov
da80ac008b
Make CHECKCAST not break TCO
...
So, treat CHECKCASTs as { POP, Unit } sequences. If the CHECKCAST is
between suspension point and ARETURN, put check for COROUTINE_SUSPENDED
before it and return if the suspension point is suspended.
This is safe, since if the function throws CCE, it will be thrown from
the last state in state-machine and we cannot reenter the function
during resume. So, in case of CHECKCAST throwing CCE the behavior is the
same, whether we have state-machine or not.
We do not need to disable TCO in some cases, as we do for functions,
returning Unit, since in latter case suspend function, returning Unit
might appear as returning non-Unit during resumption due to missing
{ POP, Unit } sequence, which is not executed, since the function is
tail-call. However, in case of functions, returning non-Unit there is
no such concern, since we do not POP result of suspension point, but
rather, return it after CHECKCAST.
#KT-50835 Fixed
2022-01-25 03:30:22 +01:00
..
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-20 03:37:31 +03:00
2021-12-07 21:33:28 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-20 03:37:31 +03:00
2021-12-01 16:50:16 +03:00
2021-12-07 21:33:28 +03:00
2020-05-28 18:00:35 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2022-01-25 03:30:22 +01:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-23 13:49:45 +01:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2020-05-09 21:11:40 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-20 03:37:31 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-12-06 17:29:59 +01:00
2021-12-16 06:40:22 +00:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-12-13 14:13:34 +00:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-20 03:37:31 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2020-08-10 10:16:24 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00
2021-11-17 15:26:38 +03:00