Alexander Markov
61b5ba7ecf
[vm] Deep clone context when cloning closure
...
_SyncIterable::iterator clones unerlying sync* closure to create a new
Iterator using _Closure._clone(). _Closure._clone() was cloning only
1 level of context, relying on a particular context structure.
In bytecode, contexts are allocated in a different way, so sync*
functions could have more then 1 level of contexts. In such case,
parent contexts were not cloned in _Closure._clone() and were shared
between Iterator instances.
This CL adds deep cloning of contexts into _Closure._clone() native method
in order to handle arbitrary number of levels of contexts in a closure.
Fixes language_2/syncstar_yield_test test in bytecode mode.
Change-Id: Ic5ced4c32fc2e21726db76608cd3a7db7e553472
Reviewed-on: https://dart-review.googlesource.com/70600
Reviewed-by: Régis Crelier <regis@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2018-08-17 22:28:51 +00:00
..
2018-08-16 15:07:51 +00:00
2018-05-30 13:44:43 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2017-07-18 13:29:40 -07:00
2018-06-12 15:12:00 +00:00
2018-08-16 15:07:51 +00:00
2017-07-13 08:08:37 -07:00
2018-06-04 20:10:40 +00:00
2017-02-16 17:43:42 +01:00
2017-10-05 14:05:50 +00:00
2018-03-06 12:50:21 +00:00
2017-08-14 21:54:36 -07:00
2018-08-16 15:07:51 +00:00
2018-07-18 11:21:23 +00:00
2017-08-14 21:54:36 -07:00
2018-06-04 20:10:40 +00:00
2018-06-04 20:10:40 +00:00
2017-11-14 12:59:14 +00:00
2017-07-13 08:08:37 -07:00
2017-10-05 14:05:50 +00:00
2018-03-13 22:24:19 +00:00
2017-07-18 13:29:40 -07:00
2018-08-16 15:07:51 +00:00
2018-04-12 13:16:49 +00:00
2018-06-13 19:51:40 +00:00
2018-08-16 15:07:51 +00:00
2018-08-17 12:37:52 +00:00
2017-09-04 13:13:26 +02:00
2017-10-05 14:05:50 +00:00
2017-10-05 14:05:50 +00:00
2018-08-17 22:28:51 +00:00
2018-08-16 15:07:51 +00:00
2017-09-04 15:15:18 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2016-02-22 08:53:11 -08:00
2018-08-16 15:07:51 +00:00
2018-06-18 18:16:51 +00:00
2018-06-18 18:16:51 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2018-08-17 12:37:52 +00:00
2017-09-28 00:27:24 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2018-06-12 19:38:40 +00:00
2018-08-16 15:07:51 +00:00
2017-02-01 15:55:59 -08:00
2017-09-04 15:15:18 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2018-06-04 20:10:40 +00:00
2018-08-16 15:07:51 +00:00
2018-06-05 20:14:46 +00:00
2017-11-01 15:16:04 +00:00
2017-08-14 21:54:36 -07:00
2018-08-09 18:16:03 +00:00
2016-11-04 12:14:41 -07:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2018-06-20 00:39:49 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2018-06-13 19:51:40 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2017-07-13 08:08:37 -07:00
2018-08-16 15:07:51 +00:00
2017-07-13 08:08:37 -07:00
2018-06-04 14:46:26 +00:00
2018-08-16 15:07:51 +00:00
2017-02-09 15:39:44 -08:00
2017-10-05 14:05:50 +00:00
2017-07-13 08:08:37 -07:00
2017-10-05 14:05:50 +00:00
2018-08-16 15:07:51 +00:00
2017-10-24 11:43:48 +00:00
2017-11-01 15:16:04 +00:00
2017-09-19 23:29:55 +00:00
2018-03-13 22:24:19 +00:00
2018-08-16 15:07:51 +00:00
2017-10-05 14:05:50 +00:00
2018-08-16 15:07:51 +00:00
2018-08-16 15:07:51 +00:00
2017-08-14 21:54:36 -07:00
2017-07-13 10:08:45 -07:00
2018-08-16 15:07:51 +00:00
2017-03-15 13:11:05 -07:00
2017-08-14 21:54:36 -07:00
2018-07-11 19:29:15 +00:00
2017-07-13 08:08:37 -07:00
2018-08-16 15:07:51 +00:00