New Cog VMs available

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

New Cog VMs available

Eliot Miranda-2
 


CogVM binaries as per VMMaker.oscog-eem.1746/r3663

General:

Fix loss of signals to e.g. a socket's readSemaphore when data available:
Fix a bug in sqAtomicOps.h where the assumption that the intrinsic atomic add
operation will apply to 16-bit variables is false on clang.  So on x86 and x64
use inline assembly with gcc and clang since this is known to work.
Improve the doSignalSemaphores code in sqExternalSemaphores.c so that the tide
variables are initialized at the right point and so there's only one copy of
the signalling code.

Allow primitiveUtcWithOffset to accept an optional parameter with an
array or object with two or more slots to store UTC posix microseconds
and time zone offset in seconds. Compatibility with VMM trunk.

Add a Smalltalk epoch version of it, primitiveUtcAndTimezoneOffset,
and give it primitive #244.

Fix signed/unsigned arithmetic issues in 64-bit microsecond clock code.
This fixes the bug whereby
Time localMicrosecondClock - Time utcMicrosecondClock // 1000000
would answer something with an odd second, a multiple of 3600 plus 1.

General Integer conversion routines:
Several clean ups to integer conversion routines.

Simplify bit operations using positiveMachineIntegerValueOf:/
positiveMachineIntegerFor: rather than doing 32/64 bits dissertation.


Spur Cogit:
Rewrote identity primitive to check for forwarders only when the identity of
objects is different.  The previous version would crash if the argument was a
forwarder to an immediate.

Spur VMs:
Now that UUIDs are created with purely image-based code in Squeak trunk, make
the UUIDPlugin external in all Squeak Spur VMs.


Plugins:
Make FFI load symbol fail after (when find function fails). 
In Pharo, we allow to load global functions (so we can control world windows
through FFI). 

LargeIntegersPlugin:

Finish 1st round of LargeIntegers refactoring

- simplify the left and right shift
- use as much unsigned arithmetic as possible
- homogenize type declaration within the plugin
- remove unused digitOf:at:


Slang:
Beware: sending abs to an unsigned int will re-interpret the int as signed and
will generate C compiler warnings.  The new version uses SQABS and SQLABS macros
on sqInt and sqLong vars, and fabs and fabsf on double and float args,
respectively, and llabs on long long, __int64 vars.


Mac OS X:
Unswap the Squeak and Newspeak localized strings

_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] New Cog VMs available

Denis Kudriashov
 
Thank's Eliot for good work.

Is it possible that new lock primitives from Ben was integrated too?

2016-03-29 20:59 GMT+02:00 Eliot Miranda <[hidden email]>:


CogVM binaries as per VMMaker.oscog-eem.1746/r3663

General:

Fix loss of signals to e.g. a socket's readSemaphore when data available:
Fix a bug in sqAtomicOps.h where the assumption that the intrinsic atomic add
operation will apply to 16-bit variables is false on clang.  So on x86 and x64
use inline assembly with gcc and clang since this is known to work.
Improve the doSignalSemaphores code in sqExternalSemaphores.c so that the tide
variables are initialized at the right point and so there's only one copy of
the signalling code.

Allow primitiveUtcWithOffset to accept an optional parameter with an
array or object with two or more slots to store UTC posix microseconds
and time zone offset in seconds. Compatibility with VMM trunk.

Add a Smalltalk epoch version of it, primitiveUtcAndTimezoneOffset,
and give it primitive #244.

Fix signed/unsigned arithmetic issues in 64-bit microsecond clock code.
This fixes the bug whereby
Time localMicrosecondClock - Time utcMicrosecondClock // 1000000
would answer something with an odd second, a multiple of 3600 plus 1.

General Integer conversion routines:
Several clean ups to integer conversion routines.

Simplify bit operations using positiveMachineIntegerValueOf:/
positiveMachineIntegerFor: rather than doing 32/64 bits dissertation.


Spur Cogit:
Rewrote identity primitive to check for forwarders only when the identity of
objects is different.  The previous version would crash if the argument was a
forwarder to an immediate.

Spur VMs:
Now that UUIDs are created with purely image-based code in Squeak trunk, make
the UUIDPlugin external in all Squeak Spur VMs.


Plugins:
Make FFI load symbol fail after (when find function fails). 
In Pharo, we allow to load global functions (so we can control world windows
through FFI). 

LargeIntegersPlugin:

Finish 1st round of LargeIntegers refactoring

- simplify the left and right shift
- use as much unsigned arithmetic as possible
- homogenize type declaration within the plugin
- remove unused digitOf:at:


Slang:
Beware: sending abs to an unsigned int will re-interpret the int as signed and
will generate C compiler warnings.  The new version uses SQABS and SQLABS macros
on sqInt and sqLong vars, and fabs and fabsf on double and float args,
respectively, and llabs on long long, __int64 vars.


Mac OS X:
Unswap the Squeak and Newspeak localized strings

_,,,^..^,,,_
best, Eliot




Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] New Cog VMs available

Chris Muller-3
In reply to this post by Eliot Miranda-2
 
> Fix loss of signals to e.g. a socket's readSemaphore when data available:

Woo hoo!  I had infrequently been affected by this, it seemed
impossible to debug.  Now, its probably fixed.  The talent in this
community never ceases to amaze me.
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] New Cog VMs available

Levente Uzonyi
In reply to this post by Eliot Miranda-2
 
Hi Eliot,

I think something went wrong with those semaphores. Connecting to a Socket
seems to wait for the full 45 seconds timeout with this VM. To reproduce,
just try opening any remote MC repository. This happens with
cogspur64linuxht. I haven't tried any other versions yet.

There's another issue with WideStrings where, #at: (primitive 63) fails
for a few instances. This issue is present in 3643 as well. To reproduce
it, open the Monticello Browser, select the Multilingual package,
select the Trunk repository and press Changes. You'll see that two methods
are reported to have changed (even though they haven't). Selecting any of
them will pop up a debugger with the primitive failure. The common symptom
is that #basicAt: will work for the index, for which #at: fails, and it will
return the number 16rD80000FF.

Levente

On Tue, 29 Mar 2016, Eliot Miranda wrote:

> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3663
>
>
> CogVM binaries as per VMMaker.oscog-eem.1746/r3663
>
> General:
>
> Fix loss of signals to e.g. a socket's readSemaphore when data available:
> Fix a bug in sqAtomicOps.h where the assumption that the intrinsic atomic add
> operation will apply to 16-bit variables is false on clang.  So on x86 and x64
> use inline assembly with gcc and clang since this is known to work.
> Improve the doSignalSemaphores code in sqExternalSemaphores.c so that the tide
> variables are initialized at the right point and so there's only one copy of
> the signalling code.
>
> Allow primitiveUtcWithOffset to accept an optional parameter with an
> array or object with two or more slots to store UTC posix microseconds
> and time zone offset in seconds. Compatibility with VMM trunk.
>
> Add a Smalltalk epoch version of it, primitiveUtcAndTimezoneOffset,
> and give it primitive #244.
>
> Fix signed/unsigned arithmetic issues in 64-bit microsecond clock code.
> This fixes the bug whereby
> Time localMicrosecondClock - Time utcMicrosecondClock // 1000000
> would answer something with an odd second, a multiple of 3600 plus 1.
>
> General Integer conversion routines:
> Several clean ups to integer conversion routines.
>
> Simplify bit operations using positiveMachineIntegerValueOf:/
> positiveMachineIntegerFor: rather than doing 32/64 bits dissertation.
>
>
> Spur Cogit:
> Rewrote identity primitive to check for forwarders only when the identity of
> objects is different.  The previous version would crash if the argument was a
> forwarder to an immediate.
>
> Spur VMs:
> Now that UUIDs are created with purely image-based code in Squeak trunk, make
> the UUIDPlugin external in all Squeak Spur VMs.
>
>
> Plugins:
> Make FFI load symbol fail after (when find function fails). 
> In Pharo, we allow to load global functions (so we can control world windows
> through FFI). 
>
> LargeIntegersPlugin:
>
> Finish 1st round of LargeIntegers refactoring
>
> - simplify the left and right shift
> - use as much unsigned arithmetic as possible
> - homogenize type declaration within the plugin
> - remove unused digitOf:at:
>
>
> Slang:
> Beware: sending abs to an unsigned int will re-interpret the int as signed and
> will generate C compiler warnings.  The new version uses SQABS and SQLABS macros
> on sqInt and sqLong vars, and fabs and fabsf on double and float args,
> respectively, and llabs on long long, __int64 vars.
>
>
> Mac OS X:
> Unswap the Squeak and Newspeak localized strings
>
> _,,,^..^,,,_
> best, Eliot
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] New Cog VMs available

Eliot Miranda-2
 
Hi Levente,

On Tue, Mar 29, 2016 at 7:10 PM, Levente Uzonyi <[hidden email]> wrote:
Hi Eliot,

I think something went wrong with those semaphores. Connecting to a Socket seems to wait for the full 45 seconds timeout with this VM. To reproduce, just try opening any remote MC repository. This happens with cogspur64linuxht. I haven't tried any other versions yet.

OK, thanks.  This is 64-bits only thank goodness. I don't see the problem with the 32-bit system. 

There's another issue with WideStrings where, #at: (primitive 63) fails for a few instances. This issue is present in 3643 as well. To reproduce it, open the Monticello Browser, select the Multilingual package, select the Trunk repository and press Changes. You'll see that two methods are reported to have changed (even though they haven't). Selecting any of them will pop up a debugger with the primitive failure. The common symptom is that #basicAt: will work for the index, for which #at: fails, and it will return the number 16rD80000FF.

And I take it this is 64-bits too, right?
 


Levente


On Tue, 29 Mar 2016, Eliot Miranda wrote:

... at http://www.mirandabanda.org/files/Cog/VM/VM.r3663


CogVM binaries as per VMMaker.oscog-eem.1746/r3663

General:

Fix loss of signals to e.g. a socket's readSemaphore when data available:
Fix a bug in sqAtomicOps.h where the assumption that the intrinsic atomic add
operation will apply to 16-bit variables is false on clang.  So on x86 and x64
use inline assembly with gcc and clang since this is known to work.
Improve the doSignalSemaphores code in sqExternalSemaphores.c so that the tide
variables are initialized at the right point and so there's only one copy of
the signalling code.

Allow primitiveUtcWithOffset to accept an optional parameter with an
array or object with two or more slots to store UTC posix microseconds
and time zone offset in seconds. Compatibility with VMM trunk.

Add a Smalltalk epoch version of it, primitiveUtcAndTimezoneOffset,
and give it primitive #244.

Fix signed/unsigned arithmetic issues in 64-bit microsecond clock code.
This fixes the bug whereby
Time localMicrosecondClock - Time utcMicrosecondClock // 1000000
would answer something with an odd second, a multiple of 3600 plus 1.

General Integer conversion routines:
Several clean ups to integer conversion routines.

Simplify bit operations using positiveMachineIntegerValueOf:/
positiveMachineIntegerFor: rather than doing 32/64 bits dissertation.


Spur Cogit:
Rewrote identity primitive to check for forwarders only when the identity of
objects is different.  The previous version would crash if the argument was a
forwarder to an immediate.

Spur VMs:
Now that UUIDs are created with purely image-based code in Squeak trunk, make
the UUIDPlugin external in all Squeak Spur VMs.


Plugins:
Make FFI load symbol fail after (when find function fails). 
In Pharo, we allow to load global functions (so we can control world windows
through FFI). 

LargeIntegersPlugin:

Finish 1st round of LargeIntegers refactoring

- simplify the left and right shift
- use as much unsigned arithmetic as possible
- homogenize type declaration within the plugin
- remove unused digitOf:at:


Slang:
Beware: sending abs to an unsigned int will re-interpret the int as signed and
will generate C compiler warnings.  The new version uses SQABS and SQLABS macros
on sqInt and sqLong vars, and fabs and fabsf on double and float args,
respectively, and llabs on long long, __int64 vars.


Mac OS X:
Unswap the Squeak and Newspeak localized strings

_,,,^..^,,,_
best, Eliot







--
_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] New Cog VMs available

Levente Uzonyi
 
Hi Eliot,

Yes, both issues only appear on 64-bit VMs.

Levente