[interp] Optimize enum Hasflag (mono/mono#14173)
authorVlad Brezae <brezaevlad@gmail.com>
Sat, 27 Apr 2019 09:14:16 +0000 (12:14 +0300)
committerGitHub <noreply@github.com>
Sat, 27 Apr 2019 09:14:16 +0000 (12:14 +0300)
commit638a4c61b259d559fe953c76394d31913f6f29c7
tree8407f5cdd2f8a15837766c454c37399ef36e9820
parent26cd59d84d9a6b57ee346abd85f0074ff4e81e17
[interp] Optimize enum Hasflag (mono/mono#14173)

* [interp] Optimize enum.HasFlag for csc pattern

Avoid boxing and slow call. Makes it 100x faster.

* [interp] Optimize enum.HasFlag for mcs pattern

* [interp] Transform ldc.i4 + conv.i8 into ldc.i8

Simplifies code, making enum.HasFlag optimization work for long enums.

Commit migrated from https://github.com/mono/mono/commit/6d9c4c24d243b850381ff724cef7bd3e2054deb1
src/mono/mono/mini/interp/interp.c
src/mono/mono/mini/interp/mintops.def
src/mono/mono/mini/interp/transform.c