Evgueni, Please also test on Linux. This looks like a reasonable patch to me. Regarding the 16-bit CAS. A long time ago, there was a 16-bit, byte-aligned field for thread ID. monenter() would do a 16-bit CAS. Maybe this is left over from old monenter()??
On 10/19/06, Artem Aliev <[EMAIL PROTECTED]> wrote:
Eugeny, > The problem can be easily fixed by changing int16 to unit16 in > atomic16_dec. Do you think this is accaptable way to fix the problem. > BTW, could somebody explain why 16-bit atomic operation is used for > 32-bit value? The suspend_request could be 16bit value some time ago. Could you please file a JIRA issue with a patch. It looks reasonable to replace inc16 by inc32 as a fix. Thanks Artem On 10/19/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote: > Hi, > > Today, I had several hangs of cunit tests. It turned out to be > infinite cycling in > while loop of atomic16_inc/atomic16_dec (see > vm/thread/src/thread_native_suspend.c) > > Here is a snip of assembler code produced by msvc for atomic16_dec: > > call port_atomic_cas16 (10004A90h) > add esp,0Ch > movzx edx,ax <-----------------------------zero extention > movsx eax,word ptr [old_value] <----sign extention > cmp edx,eax > je atomic16_inc+45h (10004A15h) > > The problem can be easily fixed by changing int16 to unit16 in > atomic16_dec. Do you think this is accaptable way to fix the problem. > > BTW, could somebody explain why 16-bit atomic operation is used for > 32-bit value? > > Thanks > Evgueni > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Weldon Washburn Intel Middleware Products Division