Eliot Miranda uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-eem.310.mcz
==================== Summary ====================
Name: Tests-eem.310
Author: eem
Time: 2 February 2015, 5:25:25.875 pm
UUID: f1730180-d653-4951-9fba-d8240f6b38c8
Ancestors: Tests-topa.309
Use classes for the ImageSegmentTest that don't
result in an inoperative SUnit system if the test fails.
Use the inactive UIManager subclasses.
Also, make the test explicitly bring the classes back in, in the test.
=============== Diff against Tests-topa.309 ===============
Item was changed:
----- Method: ImageSegmentTest>>testImageSegmentsShouldBeWritableToaFile (in category 'as yet unclassified') -----
testImageSegmentsShouldBeWritableToaFile
"This should not throw an exception"
+ | classes |
+ classes := UIManager subclasses reject: [:sc| sc isActiveManager].
ImageSegment new
+ copyFromRoots: classes asArray sizeHint: 100;
- copyFromRoots: (Array with: TestCase) sizeHint: 100;
extract;
+ writeToFile: 'InactiveUIManagers';
- writeToFile: 'TestCase';
yourself.
+ "TODO: write assertions showing that something meaningful actually happened."
+
+ "now bring them back in again"
+ classes do: [:ea| ea new]!
- "TODO: write assertions showing that something meaningful actually happened."!
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.701.mcz
==================== Summary ====================
Name: System-eem.701
Author: eem
Time: 2 February 2015, 4:18:29.276 pm
UUID: 26de7d07-79ec-498e-be4c-b56922cfb457
Ancestors: System-eem.700
Invoke super obsolete in ObjectHistory class>>obsolete
=============== Diff against System-eem.700 ===============
Item was changed:
----- Method: ObjectHistory class>>obsolete (in category 'class initialization') -----
obsolete
"Kill the mark process before removing the class."
Current ifNotNil:
[:objectHistory|
+ objectHistory terminate].
+ super obsolete!
- objectHistory terminate]!
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007517.h…
Name: System-eem.700
Ancestors: System-eem.699
MessageTally>>tally:by: should check block nesting.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007518.h…
Name: Kernel.spur-mt.897
Ancestors: Kernel-mt.897, Kernel.spur-eem.896
Kernel-mt.897 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Dynamic variables will not store their default values into the process' env anymore. This supports changing the result of #default without having to terminate that process (or fiddling with the env var directly...)
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007519.h…
Name: System.spur-eem.700
Ancestors: System-eem.700, System.spur-eem.699
System-eem.700 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
MessageTally>>tally:by: should check block nesting.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007520.h…
Name: Kernel-eem.898
Ancestors: Kernel-mt.897
Use the brace construct in becomeForward:. Relax
the comment in the become implementations to
include Spur immediates.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007521.h…
Name: Kernel.spur-eem.898
Ancestors: Kernel-eem.898, Kernel.spur-mt.897
Kernel-eem.898 patched for Spur by SpurBootstrapMonticelloPackagePatcher * Cog-eem.237
Use the brace construct in becomeForward:. Relax
the comment in the become implementations to
include Spur immediates.
=============================================
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.898.mcz
==================== Summary ====================
Name: Kernel-eem.898
Author: eem
Time: 2 February 2015, 1:54:44.676 pm
UUID: ee76d58d-255c-464c-aa5e-0b88a264907c
Ancestors: Kernel-mt.897
Use the brace construct in becomeForward:. Relax
the comment in the become implementations to
include Spur immediates.
=============== Diff against Kernel-mt.897 ===============
Item was changed:
----- Method: ProtoObject>>become: (in category 'system primitives') -----
become: otherObject
"Primitive. Swap the object pointers of the receiver and the argument.
+ All variables in the entire system that used to point to the receiver
+ now point to the argument, and vice-versa.
+ Fails if either object is an immediate such as a SmallInteger."
- All variables in the entire system that used to point to the
- receiver now point to the argument, and vice-versa.
- Fails if either object is a SmallInteger"
{self} elementsExchangeIdentityWith: {otherObject}!
Item was changed:
----- Method: ProtoObject>>becomeForward: (in category 'system primitives') -----
becomeForward: otherObject
"Primitive. All variables in the entire system that used to point
+ to the receiver now point to the argument.
+ Fails if either argument is an immediate such as a SmallInteger."
- to the receiver now point to the argument.
- Fails if either argument is a SmallInteger."
+ {self} elementsForwardIdentityTo: {otherObject}!
- (Array with: self)
- elementsForwardIdentityTo:
- (Array with: otherObject)!
Item was changed:
----- Method: ProtoObject>>becomeForward:copyHash: (in category 'system primitives') -----
becomeForward: otherObject copyHash: copyHash
+ "Primitive. All variables in the entire system that used to point to
+ the receiver now point to the argument. If copyHash is true, the
+ argument's identity hash bits will be set to those of the receiver.
+ Fails if either argument is an immediate such as a SmallInteger."
- "Primitive. All variables in the entire system that used to point to the receiver now point to the argument.
- If copyHash is true, the argument's identity hash bits will be set to those of the receiver.
- Fails if either argument is a SmallInteger."
+ {self}
+ elementsForwardIdentityTo: {otherObject}
+ copyHash: copyHash!
- (Array with: self)
- elementsForwardIdentityTo:
- (Array with: otherObject)
- copyHash: copyHash!
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System.spur-eem.700.mcz
==================== Summary ====================
Name: System.spur-eem.700
Author: eem
Time: 2 February 2015, 10:08:19.311 am
UUID: 282570b4-2301-4b91-bfb5-5a243b9be33e
Ancestors: System-eem.700, System.spur-eem.699
System-eem.700 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
MessageTally>>tally:by: should check block nesting.
=============== Diff against System-eem.700 ===============
Item was removed:
- Object subclass: #ObjectHistory
- instanceVariableNames: 'marks markProcess'
- classVariableNames: 'Current'
- poolDictionaries: ''
- category: 'System-Support'!
-
- !ObjectHistory commentStamp: 'bf 11/16/2012 12:19' prior: 0!
- ObjectHistory holds ObjectHistoryMark objects which are placed in the object memory at regular intervals by its markProcess in the background. Adjacent marks (with no remaining objects inbetween) are coalesced so over time the collection does not grow unnecessarily large.
-
- Using these markers it is possible to determine the age of objects in memory from the time the ObjectHistory was initialized. Try e.g.:
- self oopTimestamp.
- self oopAge.
- ObjectHistory current oopClassesByDate.
-
- Instance Variables
- marks: SortedCollection of ObjectHistoryMark objects
- markProcess: a Process running our markLoop
- !
Item was removed:
- ----- Method: ObjectHistory class>>current (in category 'accessing') -----
- current
- ^ Current ifNil: [Current := self new]!
Item was removed:
- ----- Method: ObjectHistory class>>initialize (in category 'class initialization') -----
- initialize
- self current.
- !
Item was removed:
- ----- Method: ObjectHistory class>>obsolete (in category 'class initialization') -----
- obsolete
- "Kill the mark process before removing the class."
- Current ifNotNil:
- [:objectHistory|
- objectHistory terminate]!
Item was removed:
- ----- Method: ObjectHistory>>ageOf: (in category 'queries') -----
- ageOf: anObject
- "Age of anObject in seconds"
- | timestamp |
- timestamp := self timestampOf: anObject.
- timestamp ifNil: [^0].
- ^(DateAndTime now - timestamp) asSeconds roundTo: self markRate!
Item was removed:
- ----- Method: ObjectHistory>>initialize (in category 'initializing') -----
- initialize
- self restartMarkProcess.
-
- !
Item was removed:
- ----- Method: ObjectHistory>>markLoop (in category 'marking') -----
- markLoop
- [true] whileTrue: [
- self markUpdate.
- (Delay forSeconds: self markRate) wait]!
Item was removed:
- ----- Method: ObjectHistory>>markRate (in category 'marking') -----
- markRate
- "rate of creating ObjectHistoryMarks"
- ^60!
Item was removed:
- ----- Method: ObjectHistory>>markUpdate (in category 'marking') -----
- markUpdate
- "Add a new mark and compact the marks collection"
- | mark prev |
- "lazy init so this happens in the background process"
- marks ifNil: [self reinitMarks].
- "add new mark to object memory"
- mark := self newMark.
- mark timestamp <= marks last timestamp ifTrue: [^self "could happen if clock is wrong"].
- marks addLast: mark.
- "compact the table by removing adjacent marks"
- prev := marks first.
- marks removeAllSuchThat: [:each | | doDelete |
- doDelete := prev objectAfter == each.
- prev := each.
- doDelete].
- "The loop above is O(n) in number of marks, but that number should never become so large to be an issue. Even if the number was large, this is running at system background priority so should not interfere with any user process, not even user background processes. The symptom should only be that the system is less idle.
-
- If we ever get to a point where the number of marks is an issue then the compacting here could be made partial: since old marks rarely get coalesced it would make sense to only check the newer ones often, and the old ones perhaps only at the system startup."!
Item was removed:
- ----- Method: ObjectHistory>>newMark (in category 'private') -----
- newMark
- ^ ObjectHistoryMark new!
Item was removed:
- ----- Method: ObjectHistory>>oopClassesByAge (in category 'stats') -----
- oopClassesByAge
- "Answer collection of (oopAge in seconds -> sorted counts of object classes) sorted from lowest age"
- "ObjectHistory current oopClassesByAge"
-
- | stats prev endOfMemory now bag age obj |
- endOfMemory := Object new.
- stats := OrderedCollection new: 1000.
- prev := nil.
- now := self newMark timestamp.
- marks do: [:mark |
- prev ifNotNil: [
- bag := Bag new.
- obj := prev objectAfter.
- [obj == mark] whileFalse: [
- bag add: obj class.
- obj := obj nextObject.
- obj == endOfMemory ifTrue: [self error: 'should not happen']].
- age := (now - mark timestamp) asSeconds roundTo: self markRate.
- stats addFirst: age -> bag sortedCounts].
- prev := mark].
- ^ stats
- !
Item was removed:
- ----- Method: ObjectHistory>>oopClassesByDate (in category 'stats') -----
- oopClassesByDate
- "Answer collection of (Date -> sorted counts of object classes) sorted from newest date"
- "ObjectHistory current oopClassesByDate"
-
- | stats prev endOfMemory bag date obj thisDate |
- endOfMemory := Object new.
- stats := OrderedCollection new: 1000.
- prev := nil.
- thisDate := nil.
- bag := Bag new.
- marks do: [:mark |
- prev ifNotNil: [
- obj := prev objectAfter.
- [obj == mark] whileFalse: [
- bag add: obj class.
- obj := obj nextObject.
- obj == endOfMemory ifTrue: [self error: 'should not happen']].
- date := mark timestamp asDate.
- thisDate = date ifFalse: [
- stats addFirst: date -> bag sortedCounts.
- bag := Bag new.
- thisDate := date]].
- prev := mark].
- thisDate = date ifFalse: [
- stats addLast: date -> bag sortedCounts].
- ^ stats
- !
Item was removed:
- ----- Method: ObjectHistory>>oopCountsByAge (in category 'stats') -----
- oopCountsByAge
- "Answer collection of (oopAge in seconds -> number of objects) sorted from lowest age"
- "ObjectHistory current oopCountsByAge"
-
- | stats prev endOfMemory now n age obj |
- endOfMemory := Object new.
- stats := OrderedCollection new: 1000.
- prev := nil.
- now := self newMark timestamp.
- marks do: [:mark |
- prev ifNotNil: [
- n := 0.
- obj := prev objectAfter.
- [obj == mark] whileFalse: [
- n := n + 1.
- obj := obj nextObject.
- obj == endOfMemory ifTrue: [self error: 'should not happen']].
- age := (now - mark timestamp) asSeconds roundTo: self markRate.
- stats addFirst: age -> n].
- prev := mark].
- ^ stats
- !
Item was removed:
- ----- Method: ObjectHistory>>reinitMarks (in category 'private') -----
- reinitMarks
- marks := ObjectHistoryMark allInstances asOrderedCollection.
- marks
- ifEmpty: [marks add: self newMark]
- ifNotEmpty: [ | prev |
- prev := nil.
- marks removeAllSuchThat: [:obj |
- prev notNil and: [prev timestamp >= obj timestamp]]].
- !
Item was removed:
- ----- Method: ObjectHistory>>restartMarkProcess (in category 'marking') -----
- restartMarkProcess
- markProcess ifNotNil: [markProcess terminate].
- markProcess := [self markLoop]
- forkAt: Processor systemBackgroundPriority
- named: 'ObjectHistory''s markProcess'.
- !
Item was removed:
- ----- Method: ObjectHistory>>terminate (in category 'private') -----
- terminate
- markProcess ifNotNil:
- [markProcess terminate]!
Item was removed:
- ----- Method: ObjectHistory>>timestampOf: (in category 'queries') -----
- timestampOf: anObject
- "Timestamp of anObject, or nil if too new"
- | endOfMemory mark |
- anObject class == SmallInteger ifTrue: [^nil].
- mark := anObject.
- endOfMemory := Object new.
- [mark class == ObjectHistoryMark] whileFalse: [
- mark := mark nextObject.
- mark == endOfMemory ifTrue: [^nil]].
- ^mark timestamp!
Item was removed:
- Object subclass: #ObjectHistoryMark
- instanceVariableNames: 'timestamp'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'System-Support'!
-
- !ObjectHistoryMark commentStamp: 'bf 11/7/2012 00:12' prior: 0!
- An ObjectHistoryMark is a permanent mark in the object memory. It holds a timestamp.
-
- While the timestamp could be used directly as mark by ObjectHistory, it's conceivable that its format might change in the future, and we do not want the mark's relative position in memory to change (which would be the case if it was migrated to a new format). So we use a distinct object instead (and we protect it against accidental become-ing by overriding those methods).!
Item was removed:
- ----- Method: ObjectHistoryMark>>become: (in category 'mutating') -----
- become: otherObject
- ^self error: 'marks need to stay fixed in the object memory'!
Item was removed:
- ----- Method: ObjectHistoryMark>>becomeForward: (in category 'mutating') -----
- becomeForward: otherObject
- ^self error: 'marks need to stay fixed in the object memory'!
Item was removed:
- ----- Method: ObjectHistoryMark>>initialize (in category 'initialization') -----
- initialize
- timestamp := DateAndTime now floor.
- !
Item was removed:
- ----- Method: ObjectHistoryMark>>objectAfter (in category 'accessing') -----
- objectAfter
- "Answer the next object in memory after me and my timestamp"
- | successor |
- successor := self nextObject.
- successor == timestamp
- ifTrue: [successor := successor nextObject].
- ^ successor!
Item was removed:
- ----- Method: ObjectHistoryMark>>printOn: (in category 'printing') -----
- printOn: aStream
- aStream
- nextPutAll: self class name;
- nextPut: $(;
- print: timestamp;
- nextPut: $)!
Item was removed:
- ----- Method: ObjectHistoryMark>>timestamp (in category 'accessing') -----
- timestamp
- ^timestamp
- !
Item was changed:
----- Method: SmalltalkImage>>compactClassesArray (in category 'special objects') -----
compactClassesArray
"Smalltalk compactClassesArray"
+ "Backward-compatibility support. Spur does not have compact classes."
+ ^{}!
- "Return the array of 31 classes whose instances may be
- represented compactly"
- ^ self specialObjectsArray at: 29!
Item was added:
+ ----- Method: SmalltalkImage>>growMemoryByAtLeast: (in category 'memory space') -----
+ growMemoryByAtLeast: numBytes
+ "Grow memory by at least the requested number of bytes.
+ Primitive. Essential. Fail if no memory is available."
+ <primitive: 180>
+ (numBytes isInteger and: [numBytes > 0]) ifTrue:
+ [OutOfMemory signal].
+ ^self primitiveFailed!
Item was added:
+ ----- Method: SmalltalkImage>>maxIdentityHash (in category 'system attributes') -----
+ maxIdentityHash
+ "Answer the maximum identityHash value supported by the VM."
+ <primitive: 176>
+ ^self primitiveFailed!
Item was changed:
----- Method: SmalltalkImage>>recreateSpecialObjectsArray (in category 'special objects') -----
recreateSpecialObjectsArray
"Smalltalk recreateSpecialObjectsArray"
"To external package developers:
**** DO NOT OVERRIDE THIS METHOD. *****
If you are writing a plugin and need additional special object(s) for your own use,
use addGCRoot() function and use own, separate special objects registry "
"The Special Objects Array is an array of objects used by the Squeak virtual machine.
Its contents are critical and accesses to it by the VM are unchecked, so don't even
think of playing here unless you know what you are doing."
| newArray |
+ newArray := Array new: 60.
- newArray := Array new: 58.
"Nil false and true get used throughout the interpreter"
newArray at: 1 put: nil.
newArray at: 2 put: false.
newArray at: 3 put: true.
"This association holds the active process (a ProcessScheduler)"
newArray at: 4 put: (self specialObjectsArray at: 4) "(self bindingOf: #Processor) but it answers an Alias".
"Numerous classes below used for type checking and instantiation"
newArray at: 5 put: Bitmap.
newArray at: 6 put: SmallInteger.
newArray at: 7 put: ByteString.
newArray at: 8 put: Array.
newArray at: 9 put: Smalltalk.
+ newArray at: 10 put: BoxedFloat64.
+ newArray at: 11 put: (self globals at: #MethodContext ifAbsent: [self globals at: #Context]).
+ newArray at: 12 put: nil. "was BlockContext."
- newArray at: 10 put: Float.
- newArray at: 11 put: MethodContext.
- newArray at: 12 put: BlockContext.
newArray at: 13 put: Point.
newArray at: 14 put: LargePositiveInteger.
newArray at: 15 put: Display.
newArray at: 16 put: Message.
newArray at: 17 put: CompiledMethod.
+ newArray at: 18 put: ((self specialObjectsArray at: 18) ifNil: [Semaphore new]). "low space Semaphore"
- newArray at: 18 put: (self specialObjectsArray at: 18).
- "(low space Semaphore)"
newArray at: 19 put: Semaphore.
newArray at: 20 put: Character.
newArray at: 21 put: #doesNotUnderstand:.
newArray at: 22 put: #cannotReturn:.
newArray at: 23 put: nil. "This is the process signalling low space."
"An array of the 32 selectors that are compiled as special bytecodes,
paired alternately with the number of arguments each takes."
newArray at: 24 put: #( #+ 1 #- 1 #< 1 #> 1 #<= 1 #>= 1 #= 1 #~= 1
#* 1 #/ 1 #\\ 1 #@ 1 #bitShift: 1 #// 1 #bitAnd: 1 #bitOr: 1
#at: 1 #at:put: 2 #size 0 #next 0 #nextPut: 1 #atEnd 0 #== 1 #class 0
#blockCopy: 1 #value 0 #value: 1 #do: 1 #new 0 #new: 1 #x 0 #y 0 ).
"An array of the 255 Characters in ascii order.
+ Cog inlines table into machine code at: prim so do not regenerate it.
+ This is nil in Spur, which has immediate Characters."
- Cog inlines table into machine code at: prim so do not regenerate it."
newArray at: 25 put: (self specialObjectsArray at: 25).
newArray at: 26 put: #mustBeBoolean.
newArray at: 27 put: ByteArray.
newArray at: 28 put: Process.
+ "An array of up to 31 classes whose instances will have compact headers; an empty array in Spur"
- "An array of up to 31 classes whose instances will have compact headers"
newArray at: 29 put: self compactClassesArray.
+ newArray at: 30 put: ((self specialObjectsArray at: 30) ifNil: [Semaphore new]). "delay Semaphore"
+ newArray at: 31 put: ((self specialObjectsArray at: 31) ifNil: [Semaphore new]). "user interrupt Semaphore"
- newArray at: 30 put: (self specialObjectsArray at: 30). "(delay Semaphore)"
- newArray at: 31 put: (self specialObjectsArray at: 31). "(user interrupt Semaphore)"
"Entries 32 - 34 unreferenced. Previously these contained prototype instances to be copied for fast initialization"
+ newArray at: 32 put: nil. "was the prototype Float"
+ newArray at: 33 put: nil. "was the prototype 4-byte LargePositiveInteger"
+ newArray at: 34 put: nil. "was the prototype Point"
- newArray at: 32 put: nil. "was (Float new: 2)"
- newArray at: 33 put: nil. "was (LargePositiveInteger new: 4)"
- newArray at: 34 put: nil. "was Point new"
newArray at: 35 put: #cannotInterpret:.
+ newArray at: 36 put: nil. "was the prototype MethodContext"
- "Note: This must be fixed once we start using context prototypes (yeah, right)"
- "(MethodContext new: CompiledMethod fullFrameSize)."
- newArray at: 36 put: (self specialObjectsArray at: 36). "Is the prototype MethodContext (unused by the VM)"
newArray at: 37 put: BlockClosure.
+ newArray at: 38 put: nil. "was the prototype BlockContext"
- "(BlockContext new: CompiledMethod fullFrameSize)."
- newArray at: 38 put: (self specialObjectsArray at: 38). "Is the prototype BlockContext (unused by the VM)"
"array of objects referred to by external code"
+ newArray at: 39 put: (self specialObjectsArray at: 39). "external semaphores"
- newArray at: 39 put: (self specialObjectsArray at: 39). "preserve external semaphores"
newArray at: 40 put: nil. "Reserved for Mutex in Cog VMs"
+ newArray at: 41 put: ((self specialObjectsArray at: 41) ifNil: [LinkedList new]). "Reserved for a LinkedList instance for overlapped calls in CogMT"
+ newArray at: 42 put: ((self specialObjectsArray at: 42) ifNil: [Semaphore new]). "finalization Semaphore"
- newArray at: 41 put: nil. "Reserved for a LinkedList instance for overlapped calls in CogMT"
- "finalization Semaphore"
- newArray at: 42 put: ((self specialObjectsArray at: 42) ifNil: [Semaphore new]).
newArray at: 43 put: LargeNegativeInteger.
"External objects for callout.
Note: Written so that one can actually completely remove the FFI."
newArray at: 44 put: (self at: #ExternalAddress ifAbsent: []).
newArray at: 45 put: (self at: #ExternalStructure ifAbsent: []).
newArray at: 46 put: (self at: #ExternalData ifAbsent: []).
newArray at: 47 put: (self at: #ExternalFunction ifAbsent: []).
newArray at: 48 put: (self at: #ExternalLibrary ifAbsent: []).
newArray at: 49 put: #aboutToReturn:through:.
newArray at: 50 put: #run:with:in:.
"51 reserved for immutability message"
+ newArray at: 51 put: #attemptToAssign:withIndex:.
- "newArray at: 51 put: #attemptToAssign:withIndex:."
- newArray at: 51 put: (self specialObjectsArray at: 51 ifAbsent: []).
newArray at: 52 put: #(nil "nil => generic error" #'bad receiver'
#'bad argument' #'bad index'
#'bad number of arguments'
#'inappropriate operation' #'unsupported operation'
#'no modification' #'insufficient object memory'
#'insufficient C memory' #'not found' #'bad method'
#'internal error in named primitive machinery'
#'object may move' #'resource limit exceeded'
+ #'object is pinned' #'primitive write beyond end of object').
- #'object is pinned').
"53 to 55 are for Alien"
newArray at: 53 put: (self at: #Alien ifAbsent: []).
+ newArray at: 54 put: #invokeCallbackContext:. "use invokeCallback:stack:registers:jmpbuf: for old Alien callbacks."
- newArray at: 54 put: #invokeCallbackContext::. "use invokeCallback:stack:registers:jmpbuf: for old Alien callbacks."
newArray at: 55 put: (self at: #UnsafeAlien ifAbsent: []).
+ "Used to be WeakFinalizationList for WeakFinalizationList hasNewFinalization, obsoleted by ephemeron support."
+ newArray at: 56 put: nil.
- "Weak reference finalization"
- newArray at: 56 put: (self at: #WeakFinalizationList ifAbsent: []).
"reserved for foreign callback process"
newArray at: 57 put: (self specialObjectsArray at: 57 ifAbsent: []).
newArray at: 58 put: #unusedBytecode.
+ "59 reserved for Sista counter tripped message"
+ newArray at: 59 put: #conditionalBranchCounterTrippedOn:.
+ "60 reserved for Sista class trap message"
+ newArray at: 60 put: #classTrapFor:.
"Now replace the interpreter's reference in one atomic operation"
+ self specialObjectsArray becomeForward: newArray!
- self specialObjectsArray becomeForward: newArray
- !
Item was changed:
----- Method: SmalltalkImage>>setGCParameters (in category 'snapshot and quit') -----
setGCParameters
+ "Adjust the VM's default GC parameters to avoid too much tenuring.
+ Maybe this should be left to the VM?"
- "Adjust the VM's default GC parameters to avoid premature tenuring."
+ | proportion edenSize survivorSize averageObjectSize numObjects |
+ proportion := 0.9. "tenure when 90% of pastSpace is full"
+ edenSize := SmalltalkImage current vmParameterAt: 44.
+ survivorSize := edenSize / 5.0. "David's paper uses 140Kb eden + 2 x 28kb survivor spaces; Spur uses the same ratios :-)"
+ averageObjectSize := 8 * self wordSize. "a good approximation"
+ numObjects := (proportion * survivorSize / averageObjectSize) rounded.
+ SmalltalkImage current vmParameterAt: 6 put: numObjects "tenure when more than this many objects survive the GC"!
- self vmParameterAt: 5 put: 4000. "do an incremental GC after this many allocations"
- self vmParameterAt: 6 put: 2000. "tenure when more than this many objects survive the GC"
- !
Item was changed:
----- Method: SpaceTally>>spaceForInstancesOf: (in category 'instance size') -----
spaceForInstancesOf: aClass
+ "Answer a pair of the number of bytes consumed by all instances of the
+ given class, including their object headers, and the number of instances."
- "Answer the number of bytes consumed by all instances of the given class, including their object headers and the number of instances."
+ | instances total |
+ instances := aClass allInstances.
+ instances isEmpty ifTrue: [^#(0 0)].
- | smallHeaderSize instVarBytes isVariable bytesPerElement total lastInstance instance instanceCount |
- instance := aClass someInstance ifNil: [ ^#(0 0) ].
- smallHeaderSize := aClass isCompact ifTrue: [ 4 ] ifFalse: [ 8 ].
- instVarBytes := aClass instSize * 4.
- isVariable := aClass isVariable.
- bytesPerElement := isVariable
- ifFalse: [ 0 ]
- ifTrue: [ aClass isBytes ifTrue: [ 1 ] ifFalse: [ 4 ] ].
total := 0.
+ aClass isVariable
+ ifTrue:
+ [instances do:
+ [:i| total := total + (aClass byteSizeOfInstanceOfSize: i basicSize)]]
+ ifFalse:
+ [total := instances size * aClass byteSizeOfInstance].
+ ^{ total. instances size }!
- instanceCount := 0.
- "A modified version of #allInstancesDo: is inlined here. It avoids an infinite loop when another process is creating new instances of aClass."
- self flag: #allInstancesDo:.
- lastInstance :=
- aClass == CompiledMethod "CompiledMethod has special format, see its class comment"
- ifTrue: [aClass new]
- ifFalse: [aClass basicNew].
- [ instance == lastInstance ] whileFalse: [
- | contentBytes headerBytes |
- contentBytes := instVarBytes + (isVariable
- ifFalse: [ 0 ]
- ifTrue: [ instance basicSize * bytesPerElement ]).
- headerBytes := contentBytes > 255
- ifTrue: [ 12 ]
- ifFalse: [ smallHeaderSize ].
- total := total + headerBytes + (contentBytes roundUpTo: 4).
- instanceCount := instanceCount + 1.
- instance := instance nextInstance ].
- ^{ total. instanceCount }!
Item was added:
+ ----- Method: SystemDictionary>>growMemoryByAtLeast: (in category 'memory space') -----
+ growMemoryByAtLeast: numBytes
+ "Grow memory by at least the requested number of bytes.
+ Primitive. Fail if no memory is available. Essential."
+ <primitive: 180>
+ ^(numBytes isInteger and: [numBytes > 0])
+ ifTrue: [OutOfMemory signal]
+ ifFalse: [self primitiveFailed]!
Item was added:
+ ----- Method: SystemDictionary>>maxIdentityHash (in category 'system attributes') -----
+ maxIdentityHash
+ "Answer the maximum identityHash value supported by the VM."
+ <primitive: 176>
+ ^self primitiveFailed!
Item was added:
+ ----- Method: SystemDictionary>>setGCParameters (in category 'snapshot and quit') -----
+ setGCParameters
+ "Adjust the VM's default GC parameters to avoid too much tenuring.
+ Maybe this should be left to the VM?"
+
+ | proportion edenSize survivorSize averageObjectSize numObjects |
+ proportion := 0.9. "tenure when 90% of pastSpace is full"
+ edenSize := SmalltalkImage current vmParameterAt: 44.
+ survivorSize := edenSize / 5.0. "David's paper uses 140Kb eden + 2 x 28kb survivor spaces; Spur uses the same ratios :-)"
+ averageObjectSize := 8 * self wordSize. "a good approximation"
+ numObjects := (proportion * survivorSize / averageObjectSize) rounded.
+ SmalltalkImage current vmParameterAt: 6 put: numObjects "tenure when more than this many objects survive the GC"!
Item was added:
+ ----- Method: SystemNavigation>>allObjects (in category 'query') -----
+ allObjects
+ "Answer an Array of all objects in the system. Fail if
+ there isn't enough memory to instantiate the result."
+ <primitive: 178>
+ ^self primitiveFailed!
Item was changed:
----- Method: SystemNavigation>>allObjectsDo: (in category 'query') -----
allObjectsDo: aBlock
+ "Evaluate the argument, aBlock, for each object in the system, excluding immediates
+ such as SmallInteger and Character."
+ self allObjectsOrNil
+ ifNotNil: [:allObjects| allObjects do: aBlock]
+ ifNil:
+ ["Fall back on the old single object primitive code. With closures, this needs
+ to use an end marker (lastObject) since activation of the block will create
+ new contexts and cause an infinite loop. The lastObject must be created
+ before calling someObject, so that the VM can settle the enumeration (e.g.
+ by flushing new space) as a side effect of someObject"
+ | object lastObject |
+ lastObject := Object new.
+ object := self someObject.
+ [lastObject == object or: [0 == object]] whileFalse:
+ [aBlock value: object.
+ object := object nextObject]]!
- "Evaluate the argument, aBlock, for each object in the system
- excluding SmallIntegers. With closures, this needs to use an end
- marker (lastObject) since activation of the block will create new
- contexts and cause an infinite loop."
- | object lastObject |
- object := self someObject.
- lastObject := Object new.
- [lastObject == object or: [0 == object]]
- whileFalse: [aBlock value: object.
- object := object nextObject]!
Item was added:
+ ----- Method: SystemNavigation>>allObjectsOrNil (in category 'query') -----
+ allObjectsOrNil
+ "Answer an Array of all objects in the system. Fail if there isn't
+ enough memory to instantiate the result and answer nil."
+ <primitive: 178>
+ ^nil!
I am having problems opening Monticello repositories from any image running
on any interpreter VM. I do not see the problem when running on Cog. I first
noticed it today, but it may have started some time within the last few days
(I don't recall for sure when I last refreshed a repository).
To reproduce, evaluate this, running this on an interpreter VM:
HTTPSocket httpGet: 'http://source.squeak.org/trunk/?C=M;O=D' args: nil user: '' passwd: ''
The problem is apparently not related to recent image changes or VM changes,
and it happens when trying to open any http repository.
I'm stumped. Is anyone else seeing this?
Dave
ParagraphEditor is in ST-80, so not part of this package. Speaking of
that, is a corresponding change to ParagraphEditor necessary? Is
ParagraphEditor intended to be purged at some point?
On Sun, Feb 1, 2015 at 1:06 PM, <commits(a)source.squeak.org> wrote:
> Chris Muller uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-cmm.756.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-cmm.756
> Author: cmm
> Time: 1 February 2015, 1:06:11.045 pm
> UUID: c1553853-472d-45ca-a182-c07497c6f7a9
> Ancestors: Morphic-cmm.755
>
> - Present the comparison to clipboard text from the context of paste-modification, since that is what the user is determining whether to do with the clipboard contents.
> - Make the same change to ParagraphEditor, for consistency.
>
> =============== Diff against Morphic-cmm.755 ===============
>
> Item was changed:
> ----- Method: TextEditor>>compareToClipboard (in category 'menu messages') -----
> compareToClipboard
> + "If any text is selected, present the modifications that would be made to it if the clipboard contents were pasted over it. If no text is selected, present the differences betwen the entire pane's contents and the clipboard text."
> + | subjectText proposedText |
> + subjectText := self selection string ifEmpty: [ paragraph text string ].
> + proposedText := self clipboardText string.
> + subjectText = proposedText ifTrue: [^ self inform: 'Exact match'].
> + (StringHolder new
> + textContents:
> + (TextDiffBuilder
> + buildDisplayPatchFrom: subjectText
> + to: proposedText)) openLabel: 'Differences with Clipboard Text'!
> - "Check to see if whether the receiver's text is the same as the text currently on the clipboard, and inform the user."
> - | s1 s2 |
> - s1 := self clipboardText string.
> - s2 := self selection string.
> - s1 = s2 ifTrue: [^ self inform: 'Exact match'].
> -
> - (StringHolder new textContents:
> - (TextDiffBuilder buildDisplayPatchFrom: s1 to: s2))
> - openLabel: 'Comparison to Clipboard Text'!
>
>
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007436.ht…
Name: Graphics-kfr.304
Ancestors: Graphics-bf.303
GIFReadWriter>>close caused error since change to read only file stream reading
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007437.ht…
Name: System-kfr.693
Ancestors: System-bf.692
empty log message
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007438.ht…
Name: System-kfr.694
Ancestors: System-kfr.693
empty log message
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007439.ht…
Name: System.spur-kfr.693
Ancestors: System-kfr.693, System.spur-bf.692
System-kfr.693 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.234
empty log message
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007440.ht…
Name: System.spur-kfr.694
Ancestors: System-kfr.694, System.spur-kfr.693
System-kfr.694 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.234
empty log message
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007441.ht…
Name: System-kfr.695
Ancestors: System-kfr.694
Fix a image lock up with preference look up
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007442.ht…
Name: System.spur-kfr.695
Ancestors: System-kfr.695, System.spur-kfr.694
System-kfr.695 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.234
Fix a image lock up with preference look up
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007443.ht…
Name: Graphics-kfr.305
Ancestors: Graphics-kfr.304
Nil return if stream atEnd true
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007444.ht…
Name: Collections-mt.589
Ancestors: Collections-bf.588
comment added to #concatenation
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007445.ht…
Name: CollectionsTests-mt.226
Ancestors: CollectionsTests-bf.225
Tests added for #concatenation
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007446.ht…
Name: Collections-mt.590
Ancestors: Collections-mt.589
Methods added to easily join split strings.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007447.ht…
Name: CollectionsTests-mt.227
Ancestors: CollectionsTests-mt.226
Tests added for #join
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007448.ht…
Name: Collections-mt.591
Ancestors: Collections-mt.590
Added #flatten as special case for #concatenation to remove any nesting except for strings. Very simple implementation with streams and recursion but not as efficient as #concatenation.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007449.ht…
Name: CollectionsTests-mt.228
Ancestors: CollectionsTests-mt.227
Tests added for #flatten.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007450.ht…
Name: Collections.spur-mt.589
Ancestors: Collections-mt.589, Collections.spur-bf.588
Collections-mt.589 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.235
comment added to #concatenation
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007451.ht…
Name: Collections.spur-mt.590
Ancestors: Collections-mt.590, Collections.spur-mt.589
Collections-mt.590 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.235
Methods added to easily join split strings.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007452.ht…
Name: Collections.spur-mt.591
Ancestors: Collections-mt.591, Collections.spur-mt.590
Collections-mt.591 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.235
Added #flatten as special case for #concatenation to remove any nesting except for strings. Very simple implementation with streams and recursion but not as efficient as #concatenation.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007453.ht…
Name: Collections-mt.592
Ancestors: Collections-mt.591
Some nil checks replaced with #notNil because ProtoObject knows it and it is faster (about 15%)
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007454.ht…
Name: Collections-mt.593
Ancestors: Collections-mt.592
New ordered dictionary added, which keeps track of the insertion order.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007455.ht…
Name: CollectionsTests-mt.229
Ancestors: CollectionsTests-mt.228
tests for ordered dictionary added
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007456.ht…
Name: Collections-topa.594
Ancestors: Collections-mt.593
Add #flattened as alias for #flatten.
The former makes it more clear a copy will be returned (cf. #reversed), the latter is more in line with ANSI names (cf. #reverse) and other languages.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007457.ht…
Name: CollectionsTests-topa.230
Ancestors: CollectionsTests-mt.229
Add description to #flatten test.
Add #flattened test (Collections-topa.594)
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007458.ht…
Name: Collections-mt.595
Ancestors: Collections-topa.594
Some fixes to the OrderedDictionary implementation and its class comment was updated.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007459.ht…
Name: Collections-mt.596
Ancestors: Collections-mt.595
some fixes to OrderedDictionary including copy; small part of the protocol of OrderedCollection adopted (#sort, #first, ...).
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007460.ht…
Name: CollectionsTests-mt.231
Ancestors: CollectionsTests-topa.230
More tests for OrderedDictionary
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007461.ht…
Name: Collections-mt.597
Ancestors: Collections-mt.596
Removed non-working #first: from OrderedDictionary. Was committed by accident. ^__^
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007462.ht…
Name: CommandLine-cmm.4
Ancestors: CommandLine-fbs.3
Let Errors print themselves.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007463.ht…
Name: System-cmm.694
Ancestors: System-dtl.693
- #flush stdout and stderr after writing error information to them.
- After that, if the exception is resumable (i.e. a Warning), resume it. Except if its a MessageNotUnderstood -- that is not an error you want to resume in a headless environment.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007464.ht…
Name: System-cmm.696
Ancestors: System-kfr.695, System-cmm.694
- Remove the crazy check for MessageNotUnderstood in Smalltalk #run:.. Headless mode should always exit on any Error.
- In fact, even when not in headless mode, we don't need to halt but simply #pass the Error to the default handler for Errors do what it does, whether that's popping a debugger which could be resumed (if the Error isResumable) or something else.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007465.ht…
Name: Network-ul.158
Ancestors: Network-bf.157
Added Socket >> #setPort:interface:, which lets one bind an UDP socket to the specified IP address and port.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007466.ht…
Name: Kernel-ul.893
Ancestors: Kernel-ul.891, Kernel-nice.892
- Added Delay >> #delayDuration: which allows one to reuse the same Delay instance with a different duration.
- Merged Kernel-ul.891:
- Introduced ThreadSafeRandom, a process-local variable holding a Random instance. Replaced all uses of Collection's RandomForPicking with ThreadSafeRandom value.
- Faster Magnitude >> #between:and:.
- Added an accessor for Semaphore's excessSignals variable.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007467.ht…
Name: Collections-ul.598
Ancestors: Collections-ul.589, Collections-mt.597
- Fix: OrderedCollection >> #asArray returns an Array instead of an instance of the class returned by the class side #arrayType method.
- Slightly more efficient OrderedCollection >> #sort:.
- Merged Collections-ul.589:
- Deprecated Collection class >> #randomForPicking.
- Replaced all accesses to RandomForPicking with ThreadSafeRandom value.
- WeakKeyDictionary >> associationsDo: ignores associations with GC'd keys. This affects all enumerator methods, and makes overriding #keysDo: unnecessary.
- Added a new method SequenceableCollection #>> groupsDo:, which works like #groupsOf:atATimeDo:, but uses the block's argument count as the group size.
Depends on Kernel-ul.893
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007468.ht…
Name: Environments-cmm.53
Ancestors: Environments-cmm.52
- Only change key when it is NOT in the 'bindings' Dictionary, otherwise it would be in a state inconsistent with its new hash.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007469.ht…
Name: Environments-cmm.52
Ancestors: Environments-cmm.51, Environments-nice.47
- Roll back cwp.50 because creating a new binding leaves the CM-literal bindings in their old state.
- Don't signal #binding:removedFrom: because it's becoming the literal in CM's to a newly created Undeclared literal with the old name.
- So since we no longer signal removed: don't signal #binding:addedTo: either.
Renaming is a updating of a binding, not a removing or adding.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007470.ht…
Name: CollectionsTests-ul.232
Ancestors: CollectionsTests-mt.231
- Fixed FloatCollectionTest >> #testAdd. #asArray returns an Array. #asFloatArray returns a FloatArray.
- Added a test for #groupsDo:.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007471.ht…
Name: Collections-mt.599
Ancestors: Collections-ul.598
Implemented "First wins"-strategy wrt. to the order of associations. Allowed for simplifying the code.
Order array does only grow to 75% to mitigate the greediness of the Dictionary.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007472.ht…
Name: CollectionsTests-mt.233
Ancestors: CollectionsTests-ul.232
Tests updated for OrderedDictionary
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007473.ht…
Name: Collections-mt.600
Ancestors: Collections-mt.599
Copy ranges of elements in OrderedDictionary.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007474.ht…
Name: CollectionsTests-mt.234
Ancestors: CollectionsTests-mt.233
Tests about copying ranges added for OrderedDictionary
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007475.ht…
Name: Morphic-mt.754
Ancestors: Morphic-bf.753
Fixed conversion of StringMorph as #imageForm when text color was white.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007476.ht…
Name: Collections-mt.602
Ancestors: Collections-ul.601
Merged improvements for OrderedDictionary from inbox (ul.601).
Fixed problem in (mt.600 version) #copyFrom:to: with memory allocation. Preferred this over ul.601 because it is faster (8 per second vs. 12 per second).
d := OrderedDictionary new.
1 to: 1000000 do: [:ea | d at: ea put: nil].
[d copyFrom: 250000 to: 750000] bench.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007477.ht…
Name: CollectionsTests-mt.235
Ancestors: CollectionsTests-mt.234
Updated tests for OrderedDictionary.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007478.ht…
Name: Tests-topa.307
Ancestors: Tests-dtl.306
Environments: Don't break user code expecting the Dictionary API
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007479.ht…
Name: Tests-topa.308
Ancestors: Tests-topa.307
Environments: The need for fresh bindings on class rename may be a good idea, we don't know yet. Need to talk to cwp, probably.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007480.ht…
Name: Environments-topa.54
Ancestors: Environments-cmm.53
Update literal bindings in compiled methods when renaming a class.
Restores working behavior of pre-Squeak4.5.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007481.ht…
Name: Tests-topa.309
Ancestors: Tests-topa.308
Reinstall the 'new binding' condition in class renames.
Also test that literals still work after renaming.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007482.ht…
Name: Environments-topa.55
Ancestors: Environments-topa.54
3rd attempt at class-rename fixes.
This version
a) avoids #becomeForward:
b) fixes method homes after rename
c) moves the obsolete binding to undeclared but keeps it working.
Effectively, this is the outcome:
| p |
p := Object subclass: #A instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Unknown'.
p compile: 'foo ^ A new'.
" literals of #foo {#A=>A . #foo . #A=>A}"
p rename: #B.
" literals of #foo {#A=>B . #foo . #B=>B}"
p new foo class == p.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007483.ht…
Name: Tools-topa.533
Ancestors: Tools-ul.532
Fix notification about obsolete class references after a class rename
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007484.ht…
Name: Environments-topa.56
Ancestors: Environments-topa.55
Provide more Dictionary protocol for exisiting users of Smalltalk globals.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007485.ht…
Name: Compression-dtl.47
Ancestors: Compression-bf.46
ZipDirectoryMember>>localFileName should use host file system semantics to test for file directory path, it should not assume that unix conventions apply.
This hopefully fixes the problem identified by Tim Oesterreich on squeak-dev: [BUG] ERROR: File not in Directory: [...] while trying to create a SAR-archive on Windows
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007486.ht…
Name: Compiler-topa.292
Ancestors: Compiler-eem.291
Fix super-send DoIts in the debugger.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007487.ht…
Name: Collections.spur-mt.592
Ancestors: Collections-mt.592, Collections.spur-mt.591
Collections-mt.592 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Some nil checks replaced with #notNil because ProtoObject knows it and it is faster (about 15%)
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007488.ht…
Name: Collections.spur-mt.593
Ancestors: Collections-mt.593, Collections.spur-mt.592
Collections-mt.593 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
New ordered dictionary added, which keeps track of the insertion order.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007489.ht…
Name: Collections.spur-topa.594
Ancestors: Collections-topa.594, Collections.spur-mt.593
Collections-topa.594 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Add #flattened as alias for #flatten.
The former makes it more clear a copy will be returned (cf. #reversed), the latter is more in line with ANSI names (cf. #reverse) and other languages.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007490.ht…
Name: Collections.spur-mt.595
Ancestors: Collections-mt.595
Collections-mt.595 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Some fixes to the OrderedDictionary implementation and its class comment was updated.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007491.ht…
Name: Collections.spur-mt.596
Ancestors: Collections-mt.596, Collections.spur-mt.595
Collections-mt.596 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
some fixes to OrderedDictionary including copy; small part of the protocol of OrderedCollection adopted (#sort, #first, ...).
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007492.ht…
Name: Collections.spur-mt.597
Ancestors: Collections-mt.597, Collections.spur-mt.596
Collections-mt.597 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Removed non-working #first: from OrderedDictionary. Was committed by accident. ^__^
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007493.ht…
Name: Collections.spur-ul.598
Ancestors: Collections-ul.598
Collections-ul.598 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
- Fix: OrderedCollection >> #asArray returns an Array instead of an instance of the class returned by the class side #arrayType method.
- Slightly more efficient OrderedCollection >> #sort:.
- Merged Collections-ul.589:
- Deprecated Collection class >> #randomForPicking.
- Replaced all accesses to RandomForPicking with ThreadSafeRandom value.
- WeakKeyDictionary >> associationsDo: ignores associations with GC'd keys. This affects all enumerator methods, and makes overriding #keysDo: unnecessary.
- Added a new method SequenceableCollection #>> groupsDo:, which works like #groupsOf:atATimeDo:, but uses the block's argument count as the group size.
Depends on Kernel-ul.893
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007494.ht…
Name: Collections.spur-mt.599
Ancestors: Collections-mt.599
Collections-mt.599 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Implemented "First wins"-strategy wrt. to the order of associations. Allowed for simplifying the code.
Order array does only grow to 75% to mitigate the greediness of the Dictionary.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007495.ht…
Name: Collections.spur-mt.600
Ancestors: Collections-mt.600, Collections.spur-mt.599
Collections-mt.600 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Copy ranges of elements in OrderedDictionary.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007496.ht…
Name: Compiler.spur-topa.292
Ancestors: Compiler-topa.292, Compiler.spur-eem.291
Compiler-topa.292 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Fix super-send DoIts in the debugger.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007497.ht…
Name: Collections.spur-mt.602
Ancestors: Collections-mt.602
Collections-mt.602 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
Merged improvements for OrderedDictionary from inbox (ul.601).
Fixed problem in (mt.600 version) #copyFrom:to: with memory allocation. Preferred this over ul.601 because it is faster (8 per second vs. 12 per second).
d := OrderedDictionary new.
1 to: 1000000 do: [:ea | d at: ea put: nil].
[d copyFrom: 250000 to: 750000] bench.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007498.ht…
Name: Kernel.spur-ul.893
Ancestors: Kernel-ul.893
Kernel-ul.893 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
- Added Delay >> #delayDuration: which allows one to reuse the same Delay instance with a different duration.
- Merged Kernel-ul.891:
- Introduced ThreadSafeRandom, a process-local variable holding a Random instance. Replaced all uses of Collection's RandomForPicking with ThreadSafeRandom value.
- Faster Magnitude >> #between:and:.
- Added an accessor for Semaphore's excessSignals variable.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007499.ht…
Name: System.spur-cmm.696
Ancestors: System-cmm.696, System.spur-kfr.695
System-cmm.696 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.236
- Remove the crazy check for MessageNotUnderstood in Smalltalk #run:.. Headless mode should always exit on any Error.
- In fact, even when not in headless mode, we don't need to halt but simply #pass the Error to the default handler for Errors do what it does, whether that's popping a debugger which could be resumed (if the Error isResumable) or something else.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007500.ht…
Name: System-mt.697
Ancestors: System-cmm.696
Let message tally ignore #home but just use #sender to handle block closures correctly.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007501.ht…
Name: System-eem.698
Ancestors: System-mt.697
Provide an obsolete method for ObjectHistory that
kills the current ObjectHistory's mark process if the
class is removed. This allows Spur to easily remove
ObjectHistory, which it does not support.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007502.ht…
Name: System-eem.699
Ancestors: System-eem.698
Add block nesting to MessageTally. c.f.
AndreasProfiler-eem.10
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007503.ht…
Name: Kernel-eem.894
Ancestors: Kernel-ul.893
Access a process's environment from effectiveProcess
to provide correct environment access when debugging.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007504.ht…
Name: System.spur-mt.697
Ancestors: System-mt.697, System.spur-cmm.696
System-mt.697 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Let message tally ignore #home but just use #sender to handle block closures correctly.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007505.ht…
Name: System.spur-eem.698
Ancestors: System-eem.698
System-eem.698 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Provide an obsolete method for ObjectHistory that
kills the current ObjectHistory's mark process if the
class is removed. This allows Spur to easily remove
ObjectHistory, which it does not support.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007506.ht…
Name: Kernel.spur-eem.894
Ancestors: Kernel-eem.894, Kernel.spur-ul.893
Kernel-eem.894 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Access a process's environment from effectiveProcess
to provide correct environment access when debugging.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007507.ht…
Name: System.spur-eem.699
Ancestors: System-eem.699, System.spur-eem.698
System-eem.699 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Add block nesting to MessageTally. c.f.
AndreasProfiler-eem.10
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007508.ht…
Name: Kernel-eem.895
Ancestors: Kernel-ul.893
Change Process>>evaluate:onBehalfOf: to update
all non-scheduling variables, such as name and env,
to ensure that access to these variables during
debugging answers those of the debugged process.
This is a smaller, if tricker, change than that in
Kernel-eem.894
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007509.ht…
Name: Kernel-eem.896
Ancestors: Kernel-eem.895
Tweak the write-back of variables in
Process>>evaluate:onBehalfOf: so as not to
smash variables initialized in the process.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007510.ht…
Name: Kernel.spur-eem.895
Ancestors: Kernel-eem.895, Kernel.spur-ul.893
Kernel-eem.895 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Change Process>>evaluate:onBehalfOf: to update
all non-scheduling variables, such as name and env,
to ensure that access to these variables during
debugging answers those of the debugged process.
This is a smaller, if tricker, change than that in
Kernel-eem.894
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007511.ht…
Name: Kernel.spur-eem.896
Ancestors: Kernel-eem.896, Kernel.spur-eem.895
Kernel-eem.896 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.237
Tweak the write-back of variables in
Process>>evaluate:onBehalfOf: so as not to
smash variables initialized in the process.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007512.ht…
Name: Kernel-mt.897
Ancestors: Kernel-eem.896
Dynamic variables will not store their default values into the process' env anymore. This supports changing the result of #default without having to terminate that process (or fiddling with the env var directly...)
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007513.ht…
Name: KernelTests-mt.286
Ancestors: KernelTests-nice.285
new test for dynamic variables added
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007514.ht…
Name: Morphic-cmm.755
Ancestors: Morphic-mt.754
Let the "Compare to Clipboard" function compare just the selected text to the clipboard text.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-January/007515.ht…
Name: Help-Squeak-Project-cmm.21
Ancestors: Help-Squeak-Project-dtl.20
- Update Compare To Clipboard description.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-February/007516.h…
Name: Morphic-cmm.756
Ancestors: Morphic-cmm.755
- Present the comparison to clipboard text from the context of paste-modification, since that is what the user is determining whether to do with the clipboard contents.
- Make the same change to ParagraphEditor, for consistency.
=============================================