Levente Uzonyi uploaded a new version of HelpSystem-Tests to project The Trunk:
http://source.squeak.org/trunk/HelpSystem-Tests-ul.18.mcz
==================== Summary ====================
Name: HelpSystem-Tests-ul.18
Author: ul
Time: 26 April 2016, 2:13:51.893987 am
UUID: 332f327a-0a72-45fb-98e1-5c7c1b5758d7
Ancestors: HelpSystem-Tests-kfr.17
Don't leave the window open after running HelpBrowserTest >> #testOpen.
=============== Diff against HelpSystem-Tests-kfr.17 ===============
Item was changed:
----- Method: HelpBrowserTest>>testOpen (in category 'testing') -----
testOpen
+
+ | browser |
+ [
+ "This should not throw an exception."
+ browser := self defaultTestClass open.
+ World doOneCycleNow ]
+ ensure: [
+ browser ifNotNil: [ browser delete ] ]!
- |browser|
- "This should not throw an exception."
- browser := self defaultTestClass open.
- World doOneCycleNow.
- browser changed: #close.!
(For those of you not on G+) Take a look at www.raspberrypi.org for the latest blog about Pi Squeak progress.
tim
--
tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Spero nos familiares mansuros. = I hope we'll still be friends.
Hi Guys,
source.squeak.org/trunk's Morphic-eem.740(cmm.739).mcd is empty. How
do we fix it?
On a related note is there any way to get the updater to download full
packages, avoiding the diffy versions? e.g a preference?
--
best,
Eliot
Hi Eliot,
I just found a way to reproduce it: Maximise the window by holding alt and click the green window button.
Cheers,
Bernhard
> Am 24.04.2016 um 10:38 schrieb Bernhard Pieber <bernhard(a)pieber.com>:
>
> Hi Eliot,
>
> Thanks for your VMs.
>
> I just had a crash on OS X 10.11.4. Maybe it’s helpful:
> <crash.dmp.zip>
>
> Cheers,
> Bernhard
>
>> Am 23.04.2016 um 21:48 schrieb Eliot Miranda <eliot.miranda(a)gmail.com>:
>>
>> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3684
>>
>> CogVM binaries as per VMMaker.oscog-eem.1834/r3684
>>
>> General:
>> Correct undue sign extension wile promoting 32 to 64 bits int in
>> fetchLong64:ofObject: This was causing trouble in non spur object memory (V3).
>>
>> Fix slowdown of update on 64-bit x64 by using int variables for the tides in
>> sqExternalSemaphores.c and inline assembler for the sqCompareAndSwap in
>> sqAtomicOps.h.
>>
>> Fix slips in offset time primitives. They need to pop argumentCount + 1, not
>> argumentCount.
>>
>> Define an optional primitive as the fast primitive fail code so that unselected
>> optional primitives are in the prmitiveTable as fast primitive fails.
>>
>>
>> Spur:
>> Have WideString>>at: fail to answer an out-of-range character in the
>> interpreter primitive (as well as in the JIT).
>>
>> Fix bug in following state on primitive failure. The old code would
>> always follow to depth 1, even if the accessor depth was 0.
>> Hard-code primitiveSize's depth to 0 (accessing length in at:[put:]
>> and size causes the stack depth computation to answer 1 instead of
>> 0 for these primitives.
>>
>> Fix assert and dequeueMourner for case where mournQueue is nil.
>>
>> - fixed a bug in receiver accessing in immutability primitive for
>> mirror primitive.
>>
>> - change primitiveSetOrHasIdentityHash to patch the class table if
>> the new hash is set to a behavior (the primitive knows it's a
>> behavior if the second (optional) argument is true)
>> For example:
>> FullBlockClosure tryPrimitive: 161 withArgs: {38.true}
>>
>> No longer follow the method and context fields in a closure in
>> activateNewClosureMethod:numArgs:mayContextSwitch:; the caller will
>> have failed if these are forwarders, so no need to check again.
>>
>>
>> Cogit:
>> Add a primitive that answers pc map data for methods which can be
>> used to better decorate methods in the VM Profiler. Refactor the pc
>> map enumeration facilities so that the Sista pic data primitive can
>> share the same enumerator. Do this by collapsing the
>> isBackwardBranch and annotation parameters into a single parameter.
>>
>> Follow selectors in the openPICList post Spur become.
>>
>> Fix the ARM's caller-saved register mask now that we can name all the actual
>> registers.
>>
>> Reworked machine code generation of immutability so for common stores it
>> uses a single trampoline for both store checks and immutability checks.
>>
>> - improved support for register allocation: branch merge
>> successfully compiled with register moved instead of spilling.
>>
>> Sista Cogit:
>> Don't bother to add counters to conditional jumps implementing and:
>> and or:. Added the remote inst var access bytecode in sista V1
>> bytecode set without interfering with existing code.
>>
>>
>> Plugins:
>> Upgrade LargeIntegersPlugin to v2.0
>> LargeInteger primitives now deal with 32-bits digits. No change to image code.
>>
>> Memory is 8 bytes aligned on Spur. When storing 32/64 bits large
>> integers values, allways fill the eight bytes whatever the
>> effectivily used size, rather than bother with dissertion of size.
>>
>> Generate integer type checking as C macros rather than direct/indirect
>> interpreterProxy function call in plugins. This, and 32-bit accessing mean
>> singificantly faster large integer arithmetic.
>>
>> Fix primAlienReplace to use positiveMachineIntegerValueOf: instead of
>> positive32BitValueOf:.
>>
>> BitBltPlugin operates on 32bit word units, therefore it's better to declare its
>> operands as 'unsigned int' rather than sqInt. On 32bit VM, this doesn't change
>> anything, but on 64bits spur, it makes this snippet work:
>>
>> | wideString source pos blt expectedWideString |
>> source := #[1 64 255 14 1 64 48 251].
>> expectedWideString := WideString fromByteArray: source.
>> wideString := WideString new: source size // 4.
>> pos := 0.
>> blt := (BitBlt
>> toForm: (Form new hackBits: wideString))
>> sourceForm: (Form new hackBits: source).
>> blt
>> combinationRule: Form over;
>> sourceX: 0;
>> sourceY: pos // 4;
>> height: wideString byteSize // 4;
>> width: 4;
>> destX: 0;
>> destY: 0;
>> copyBits.
>> wideString restoreEndianness.
>> self assert: wideString = expectedWideString
>>
>> Hence it fixes loading/diffing MCZ with wide character.
>>
>>
>> Mac OS Builds:
>> Don't link with -fvisibility=hidden; it breaks external plugins. Use
>> -fvisibility=default instead. This fixes e.g. UnixOSProcessPlugin on Mac OS X.
>>
>>
>> Windows Builds:
>> The Windows VMs are no longer "dpiAware". If you want one-to-one pixel mapping check the README for ins ructions. It's a simple edit.
>> _,,,^..^,,,_
>> best, Eliot
>
Oops !
It seems that I updated from 5.0 repository rather than trunk.
I've been away too long, let me redo it...
2016-04-23 23:34 GMT+02:00 <commits(a)source.squeak.org>:
> Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-nice.939.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-nice.939
> Author: nice
> Time: 23 April 2016, 11:32:52.246 pm
> UUID: 4bdcd7ec-9c52-4b77-94e1-cf87a2ee35d5
> Ancestors: Kernel-mt.938
>
> Accelerate bitAnd: in case of negative small integer receiver and
> LargePositiveInteger operand.
>
> The timings before and after are:
>
> [(-1234 bitAnd: 5678)] bench.
> 161,000,000 per second. 6.22 nanoseconds per run.
> 161,000,000 per second. 6.2 nanoseconds per run.
> [(-1234 bitAnd: 5678125641253)] bench.
> 1,120,000 per second. 892 nanoseconds per run.
> 5,020,000 per second. 199 nanoseconds per run.
> [(-1234 bitAnd: -5678125641253)] bench.
> 1,830,000 per second. 547 nanoseconds per run.
> 1,790,000 per second. 557 nanoseconds per run.
> [(-1234 bitAnd: 567812564128976768553)] bench.
> 984,000 per second. 1.02 microseconds per run.
> 2,320,000 per second. 431 nanoseconds per run.
> [(-1234 bitAnd: -567812564128976768553)] bench.
> 1,790,000 per second. 559 nanoseconds per run.
> 1,690,000 per second. 593 nanoseconds per run.
>
> =============== Diff against Kernel-cmm.937 ===============
>
> Item was changed:
> ----- Method: Process>>stepToHome: (in category 'changing suspended
> state') -----
> stepToHome: aContext
> "Resume self until the home of top context is aContext. Top
> context may be a block context.
> Catch any UnhandledErrors that are created while stepping,
> answering the relevant signalerContext
> if so. Note that this will cause weird effects if using through
> to step through UnhandledError
> code, but as the doctor ordered, don't do that; use over or into
> instead."
>
> ^Processor activeProcess
> evaluate:
> [| home anError |
> home := aContext home.
> [suspendedContext := suspendedContext step.
> home == suspendedContext home or: [home isDead]]
> whileFalse:
> [(suspendedContext selector ==
> #signalForException:
> + and: [(suspendedContext receiver
> isBehavior and: [
> + suspendedContext receiver
> includesBehavior: UnhandledError])
> - and: [suspendedContext receiver ==
> UnhandledError
> and: [anError := suspendedContext tempAt:
> 1.
> ((suspendedContext objectClass:
> anError) includesBehavior: Exception)
> and: [anError
> canSearchForSignalerContext]]]) ifTrue:
> [anError signalerContext ifNotNil:
>
> [:unhandledErrorSignalerContext|
>
> [unhandledErrorSignalerContext == suspendedContext] whileFalse:
> [self
> completeStep: suspendedContext].
> "Give a debugger a chance
> to update its title to reflect the new exception"
> Notification new
> tag:
> {unhandledErrorSignalerContext. anError};
> signal.
>
> ^unhandledErrorSignalerContext]]].
> suspendedContext]
> onBehalfOf: self!
>
> Item was changed:
> ----- Method: SmallInteger>>bitAnd: (in category 'bit manipulation')
> -----
> bitAnd: arg
> "Primitive. Answer an Integer whose bits are the logical OR of the
> receiver's bits and those of the argument, arg.
> Numbers are interpreted as having 2's-complement representation.
> Essential. See Object documentation whatIsAPrimitive."
>
> <primitive: 14>
> self >= 0 ifTrue: [^ arg bitAnd: self].
> + ^ arg < 0
> + ifTrue: [(arg bitInvert bitOr: self bitInvert) bitInvert]
> + ifFalse: [arg bitClear: self bitInvert]!
> - ^ (self bitInvert bitOr: arg bitInvert) bitInvert!
>
> Item was changed:
> Exception subclass: #UnhandledError
> instanceVariableNames: 'exception'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Kernel-Exceptions'!
> +
> + !UnhandledError commentStamp: 'mt 8/25/2015 14:42' prior: 0!
> + This is a wrapper for an unhandled error. Having this, process stepping
> is able to correctly fire other unhandled errors. See Process >>
> #stepToHome: for further explanations.!
>
> Item was changed:
> ----- Method: UnhandledError class>>signalForException: (in category 'as
> yet unclassified') -----
> signalForException: anError
> + "Very important entry point for analysis stack when stepping in a
> debugging session. See Process >> #stepToHome: for further explanations."
> +
> -
> ^ self new
> exception: anError;
> signal!
>
> Item was changed:
> + ----- Method: UnhandledError>>exception (in category 'accessing') -----
> - ----- Method: UnhandledError>>exception (in category 'as yet
> unclassified') -----
> exception
>
> ^ exception!
>
> Item was changed:
> + ----- Method: UnhandledError>>exception: (in category 'accessing') -----
> - ----- Method: UnhandledError>>exception: (in category 'as yet
> unclassified') -----
> exception: anError
>
> exception := anError!
>
> Item was added:
> + UnhandledError subclass: #UnhandledWarning
> + instanceVariableNames: ''
> + classVariableNames: ''
> + poolDictionaries: ''
> + category: 'Kernel-Exceptions'!
>
>
>
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.1015.mcz
==================== Summary ====================
Name: Kernel-nice.1015
Author: nice
Time: 24 April 2016, 12:01:32.68707 am
UUID: e62fa41e-9258-4cf7-a855-fd85b2070131
Ancestors: Kernel-mt.1014
Accelerate bitAnd: in case of negative small integer receiver and LargePositiveInteger operand.
The timings on CogSpur32 r3684 before and after the change are:
[(-1234 bitAnd: 5678)] bench.
161,000,000 per second. 6.22 nanoseconds per run.
161,000,000 per second. 6.2 nanoseconds per run.
[(-1234 bitAnd: 5678125641253)] bench.
1,120,000 per second. 892 nanoseconds per run.
5,020,000 per second. 199 nanoseconds per run.
[(-1234 bitAnd: -5678125641253)] bench.
1,830,000 per second. 547 nanoseconds per run.
1,790,000 per second. 557 nanoseconds per run.
[(-1234 bitAnd: 567812564128976768553)] bench.
984,000 per second. 1.02 microseconds per run.
2,320,000 per second. 431 nanoseconds per run.
[(-1234 bitAnd: -567812564128976768553)] bench.
1,790,000 per second. 559 nanoseconds per run.
1,690,000 per second. 593 nanoseconds per run.
=============== Diff against Kernel-mt.1014 ===============
Item was changed:
----- Method: SmallInteger>>bitAnd: (in category 'bit manipulation') -----
bitAnd: arg
"Primitive. Answer an Integer whose bits are the logical OR of the
receiver's bits and those of the argument, arg.
Numbers are interpreted as having 2's-complement representation.
Essential. See Object documentation whatIsAPrimitive."
<primitive: 14>
self >= 0 ifTrue: [^ arg bitAnd: self].
+ ^ arg < 0
+ ifTrue: [(arg bitInvert bitOr: self bitInvert) bitInvert]
+ ifFalse: [arg bitClear: self bitInvert]!
- ^ (self bitInvert bitOr: arg bitInvert) bitInvert!
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.939.mcz
==================== Summary ====================
Name: Kernel-nice.939
Author: nice
Time: 23 April 2016, 11:32:52.246 pm
UUID: 4bdcd7ec-9c52-4b77-94e1-cf87a2ee35d5
Ancestors: Kernel-mt.938
Accelerate bitAnd: in case of negative small integer receiver and LargePositiveInteger operand.
The timings before and after are:
[(-1234 bitAnd: 5678)] bench.
161,000,000 per second. 6.22 nanoseconds per run.
161,000,000 per second. 6.2 nanoseconds per run.
[(-1234 bitAnd: 5678125641253)] bench.
1,120,000 per second. 892 nanoseconds per run.
5,020,000 per second. 199 nanoseconds per run.
[(-1234 bitAnd: -5678125641253)] bench.
1,830,000 per second. 547 nanoseconds per run.
1,790,000 per second. 557 nanoseconds per run.
[(-1234 bitAnd: 567812564128976768553)] bench.
984,000 per second. 1.02 microseconds per run.
2,320,000 per second. 431 nanoseconds per run.
[(-1234 bitAnd: -567812564128976768553)] bench.
1,790,000 per second. 559 nanoseconds per run.
1,690,000 per second. 593 nanoseconds per run.
=============== Diff against Kernel-cmm.937 ===============
Item was changed:
----- Method: Process>>stepToHome: (in category 'changing suspended state') -----
stepToHome: aContext
"Resume self until the home of top context is aContext. Top context may be a block context.
Catch any UnhandledErrors that are created while stepping, answering the relevant signalerContext
if so. Note that this will cause weird effects if using through to step through UnhandledError
code, but as the doctor ordered, don't do that; use over or into instead."
^Processor activeProcess
evaluate:
[| home anError |
home := aContext home.
[suspendedContext := suspendedContext step.
home == suspendedContext home or: [home isDead]] whileFalse:
[(suspendedContext selector == #signalForException:
+ and: [(suspendedContext receiver isBehavior and: [
+ suspendedContext receiver includesBehavior: UnhandledError])
- and: [suspendedContext receiver == UnhandledError
and: [anError := suspendedContext tempAt: 1.
((suspendedContext objectClass: anError) includesBehavior: Exception)
and: [anError canSearchForSignalerContext]]]) ifTrue:
[anError signalerContext ifNotNil:
[:unhandledErrorSignalerContext|
[unhandledErrorSignalerContext == suspendedContext] whileFalse:
[self completeStep: suspendedContext].
"Give a debugger a chance to update its title to reflect the new exception"
Notification new
tag: {unhandledErrorSignalerContext. anError};
signal.
^unhandledErrorSignalerContext]]].
suspendedContext]
onBehalfOf: self!
Item was changed:
----- Method: SmallInteger>>bitAnd: (in category 'bit manipulation') -----
bitAnd: arg
"Primitive. Answer an Integer whose bits are the logical OR of the
receiver's bits and those of the argument, arg.
Numbers are interpreted as having 2's-complement representation.
Essential. See Object documentation whatIsAPrimitive."
<primitive: 14>
self >= 0 ifTrue: [^ arg bitAnd: self].
+ ^ arg < 0
+ ifTrue: [(arg bitInvert bitOr: self bitInvert) bitInvert]
+ ifFalse: [arg bitClear: self bitInvert]!
- ^ (self bitInvert bitOr: arg bitInvert) bitInvert!
Item was changed:
Exception subclass: #UnhandledError
instanceVariableNames: 'exception'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Exceptions'!
+
+ !UnhandledError commentStamp: 'mt 8/25/2015 14:42' prior: 0!
+ This is a wrapper for an unhandled error. Having this, process stepping is able to correctly fire other unhandled errors. See Process >> #stepToHome: for further explanations.!
Item was changed:
----- Method: UnhandledError class>>signalForException: (in category 'as yet unclassified') -----
signalForException: anError
+ "Very important entry point for analysis stack when stepping in a debugging session. See Process >> #stepToHome: for further explanations."
+
-
^ self new
exception: anError;
signal!
Item was changed:
+ ----- Method: UnhandledError>>exception (in category 'accessing') -----
- ----- Method: UnhandledError>>exception (in category 'as yet unclassified') -----
exception
^ exception!
Item was changed:
+ ----- Method: UnhandledError>>exception: (in category 'accessing') -----
- ----- Method: UnhandledError>>exception: (in category 'as yet unclassified') -----
exception: anError
exception := anError!
Item was added:
+ UnhandledError subclass: #UnhandledWarning
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Kernel-Exceptions'!
Hi All,
I've been working in SecureSession
(http://www.squeaksource.com/Cryptography) and I have worked on
redefining the Vintage message definitions over these past months to a
new frame specification that may be good to use across uses: internet,
telecomm, multicore and with 4 tag bits, hoping that's helpful in some
way with the vm. I have been thinking more about whether what I came up
with could be improved. My apologies for fomenting such change in the
spec. This spec can be found here: http://jmp.sh/zASyHlK.
The issue I face with the vintage protocol is there is no identifying
information compared to the frame messageVersion to differentiate it as
a vintage msg. I had not looked at the ASN1DER encoding of those vintage
messages critically; on a quick look it looks like the "timeSent" field
lines up with the messageVersion of the frame definition. This would be
great if we could repurpose the timeSent as a msgVersion then send
vintage traffic along with frame traffic, together.
On the frame definition of the 8 byte msgSpec, I think perhaps some
changes would be good. In analysis, we don't need 6 bits for msgVersion,
perhaps only 3 bits, so the multicast could go to 9 bits. The 8 bits of
hash could be recast as the channel, or circuit, so we can multiplex
traffic. This still leaves 64 different header type values for
differentiation and allows 256 channels and 512 multicasts. What do you
think? Are these good changes?
Old frame msgSpec definition: 8 bytes bit encoded
* 1st word, 4 bytes
o 4 bits : tags
o 6 bits : multicast
o 6 bits : messageVersion
o 2 bits : priority
o 6 bits : headerType
o 8 bits : hash
* 2nd word, 4 bytes
o 32 bits : messageSize (payload bytes = (messageSize - headerSize
- 8 bytes msgSpec))
Proposed msgSpec definition: 8 bytes bit encoded
* 1st word, 4 bytes
o 4 bits : tags
o 9 bits : multicast
o 3 bits : messageVersion
o 2 bits : priority
o 6 bits : headerType
o 8 bits : channel
* 2nd word, 4 bytes
* 32 bits : messageSize (payload bytes = (messageSize - headerSize - 8
bytes msgSpec))
Best,
Robert
--
Robert
. .. ... ^,^