Dmitry Petrov
e0cea468fa
KT-15862 Inline generic functions can unexpectedly box primitives
...
Previous version of the boxing/unboxing analysis treated merging boxed and non-boxed values as a hazard.
If such merged values are not used (e.g., early return + local variables reused in inlined calls),
corresponding boxing/unboxing operations still can be optimized out.
All information related to boxed value usage by instructions is moved to 'BoxedValueDescriptor'.
Introduce "tainted" (and "clean") boxed values, with the following rules:
merge(B, B) = B, if unboxed types are compatible,
T, otherwise
merge(B, X) = T
merge(T, X) = T
where
X is a non-boxed value,
B is a "clean" boxed value,
T is a "tainted" boxed value.
Postpone decision about value merge hazards until a "tainted" value is used.
2017-02-06 16:22:26 +03:00
..
2017-02-03 19:35:15 +03:00
2016-12-28 22:28:30 +03:00
2017-01-11 11:50:33 +01:00
2016-12-28 22:28:30 +03:00
2017-02-06 16:22:26 +03:00
2016-12-28 22:28:30 +03:00
2016-12-29 16:15:49 +03:00
2017-01-24 20:09:32 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-27 14:09:13 +01:00
2017-02-03 11:09:10 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-12 18:12:36 +03:00
2017-02-03 19:35:15 +03:00
2017-01-13 18:01:05 +01:00
2016-12-28 22:28:30 +03:00
2017-01-10 11:44:51 +03:00
2016-12-28 22:28:30 +03:00
2017-01-24 16:59:47 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-23 20:09:36 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-13 10:31:07 +03:00
2017-01-10 11:44:51 +03:00
2016-12-28 22:28:30 +03:00
2017-02-02 16:31:49 +01:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-02-01 18:20:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-27 14:09:13 +01:00
2017-02-03 19:35:15 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-02-03 19:35:15 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-12 18:12:38 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-02-03 19:35:15 +03:00
2016-12-29 16:15:49 +03:00
2016-12-28 22:28:30 +03:00
2017-02-03 19:35:16 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-25 18:09:23 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-02-01 17:14:50 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2016-12-28 22:28:30 +03:00
2017-01-24 15:17:47 +01:00