[Mono-devel-list] [PATCH] .Net 2.0 System.Threading.Interlocked, tests and internal improvements
dick at ximian.com
Tue Oct 12 07:22:23 EDT 2004
On Sun, 2004-10-10 at 00:43 +0200, Luca Barbieri wrote:
> This patch implements several new Interlocked* wapi functions and takes
> advantage of them to implement the new .Net 2.0 methods in
> - .Net 2.0 System.Threading.Interlocked
> - Unit tests for existing and new methods of System.Threading.Interlocked
This is very useful. Thanks.
> - A significantly expanded set of Interlocked* functions, with every
> function available for both 32-bit and 64-bit operands
Here we run into problems with the patch. io-layer has to follow the
Windows API, because it's used as a replacement for the native Windows
functions on non-Windows builds. Your patch will cause the Windows
build of mono to break.
You can see the Interlocked API list here:
> - A fast i386 and amd64 (amd64 untested) implementation of the
> functions, with several code paths based on CPU features
> - i386 CPU identification support added to arch.h/arch.c, new io-layer
> files for generic architecture-specific code; identification support in
> the JITs removed
Same problem here.
There already is an arch layer in the JIT; why don't you put your
cpuid() code in there?
> - On amd64, I believe that cmov/fcmov JIT optimizations were disabled
> due to a coding mistake, so I enabled them while moving the cpuid code
> to a central place. This may not be the case.
Be aware that some 686s don't have cmov, it's an optional instruction.
For example, the VIA C3:
vendor_id : CentaurHauls
cpu family : 6
model : 7
model name : VIA Ezra
flags : fpu de tsc msr cx8 mtrr pge mmx 3dnow
Linux ceasterware 2.6.5-7.108-default #1 Wed Aug 25 13:34:40 UTC 2004
i686 i686 i386 GNU/Linux
Hopefully we can rearrange your patch to fit the particular requirements
of the io-layer.
More information about the Mono-devel-list