Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.1315.mcz
==================== Summary ====================
Name: Kernel-nice.1315
Author: nice
Time: 10 March 2020, 1:17:28.155986 am
UUID: 10c5ea97-f473-493c-8598-4bd06316ca6b
Ancestors: Kernel-nice.1314
Fix FullBlockClosure comparison.
Super would compare startpc which is only relevant in super (where startpc point to bytecode sequence in home method).
FullBlockClosure must compare their compiledBlock which live separately.
[:a|1]=[:b|1] = true.
[:a|2]=[:b|1] = false.
=============== Diff against Kernel-nice.1314 ===============
Item was added:
+ ----- Method: FullBlockClosure>>= (in category 'comparing') -----
+ = aClosure
+ self == aClosure ifTrue: [^true].
+ aClosure class = self class ifFalse: [^false].
+ (self method == aClosure method and: [self compiledBlock = aClosure compiledBlock and: [self isClean]])
+ ifTrue: [^true].
+ ^outerContext = aClosure outerContext and: [self compiledBlock = aClosure compiledBlock]!
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.1145.mcz
==================== Summary ====================
Name: System-eem.1145
Author: eem
Time: 9 March 2020, 10:23:49.819867 am
UUID: bba7b532-a5f1-4cd2-9f97-afc85cc7f962
Ancestors: System-nice.1144
Revert a hack fix now that Morphic-eem.1638 has fixed the issue properly.
=============== Diff against System-nice.1144 ===============
Item was changed:
----- Method: Project>>storeOnServer (in category 'file in/out') -----
storeOnServer
"Save to disk as an Export Segment. Then put that file on the server I came from, as a new version. Version is literal piece of file name. Mime encoded and http encoded."
world setProperty: #optimumExtentFromAuthor toValue: world extent.
self validateProjectNameIfOK: [:details |
+ self acceptProjectDetails: details.
- details ifNotNil: [self acceptProjectDetails: details].
self isCurrentProject ifTrue: ["exit, then do the command"
^ self
armsLengthCommand: #storeOnServerAssumingNameValid
withDescription: 'Publishing' translated
].
self storeOnServerWithProgressInfo.
].!
Eliot Miranda uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-eem.1638.mcz
==================== Summary ====================
Name: Morphic-eem.1638
Author: eem
Time: 9 March 2020, 10:22:12.401533 am
UUID: 78cf7862-7ada-4649-b672-aee960413389
Ancestors: Morphic-nice.1637
Fix project publishing; acceptProjectDetails: may be presented with a nil details.
=============== Diff against Morphic-nice.1637 ===============
Item was changed:
----- Method: MorphicProject>>acceptProjectDetails: (in category 'file in/out') -----
acceptProjectDetails: details
"Store project details back into a property of the world, and if a name is provided, make sure the name is properly installed in the project."
self world setProperty: #ProjectDetails toValue: details.
+ details ifNotNil:
+ [details
+ at: 'projectname'
+ ifPresent: [ :newName | self renameTo: newName]]!
- details at: 'projectname' ifPresent: [ :newName |
- self renameTo: newName]!
Eliot Miranda uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-eem.249.mcz
==================== Summary ====================
Name: ST80-eem.249
Author: eem
Time: 9 March 2020, 10:20:40.293918 am
UUID: 0255a615-9465-4a54-90a2-74aeceda1e63
Ancestors: ST80-mt.248
Compatibility to be able to publish MVC projects.
=============== Diff against ST80-mt.248 ===============
Item was added:
+ ----- Method: MVCProject>>acceptProjectDetails: (in category 'file in/out') -----
+ acceptProjectDetails: details
+ "Ignored; here for MorphicProject compatibility."!
Nicolas Cellier uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-nice.1144.mcz
==================== Summary ====================
Name: System-nice.1144
Author: nice
Time: 9 March 2020, 2:06:52.681813 pm
UUID: 3ef71ba0-d586-b04f-b68e-ca65d9a7fa5e
Ancestors: System-mt.1143
Update documentation for vmParameter 48, add documentation for vmParameters 72 to: 74
=============== Diff against System-mt.1143 ===============
Item was changed:
----- Method: SmalltalkImage>>vmParameterAt: (in category 'vm parameters') -----
vmParameterAt: parameterIndex
"parameterIndex is a positive integer corresponding to one of the VM's internal parameter/metric registers.
Answer with the current value of that register. Fail if parameterIndex has no corresponding register.
VM parameters are numbered as follows:
1 byte size of old-space (read-only)
2 byte size of young-space (read-only)
3 byte size of object memory (read-only)
4 allocationCount (read-only; nil in Cog VMs)
5 allocations between GCs (read-write; nil in Cog VMs)
6 survivor count tenuring threshold (read-write)
7 full GCs since startup (read-only)
8 total milliseconds in full GCs since startup (read-only)
9 incremental GCs since startup (read-only; scavenging GCs on Spur)
10 total milliseconds in incremental/scavenging GCs since startup (read-only)
11 tenures of surving objects since startup (read-only)
12-15 specific to the translating VM
16 total microseconds in idle since startup
17 proportion of code zone available for use (Sista VMs only; read-write)
18 total milliseconds in full GC compaction since startup (a portion of parameter 8)
19 scavenge threshold; the effective size of eden
20 utc microseconds at VM start-up (actually at time initialization, which precedes image load) (newer Cog VMs only).
21 root (remembered) table size (read-only)
22 root (remembered) table overflows since startup (read-only)
23 bytes of extra memory to reserve for VM buffers, plugins, etc.
24 memory threshold above which to shrink object memory (read-write)
25 ammount to grow by when growing object memory (read-write)
26 interruptChecksEveryNms - force an ioProcessEvents every N milliseconds (read-write)
27 number of times mark loop iterated for current IGC/FGC (read-only) includes ALL marking
28 number of times sweep loop iterated for current IGC/FGC (read-only)
29 number of times make forward loop iterated for current IGC/FGC (read-only)
30 number of times compact move loop iterated for current IGC/FGC (read-only)
31 number of grow memory requests (read-only)
32 number of shrink memory requests (read-only)
33 number of root table entries used for current IGC/FGC (read-only)
34 bytes allocated in total since start-up or reset (read-write)
35 number of survivor objects after current IGC/FGC (read-only)
36 millisecond clock when current IGC/FGC completed (read-only)
37 number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC (read-only)
38 milliseconds taken by current IGC (read-only)
39 Number of finalization signals for Weak Objects pending when current IGC/FGC completed (read-only)
40 BytesPerWord for this image
41 imageFormatVersion for the VM
42 number of stack pages in use (Cog Stack VM only, otherwise nil)
43 desired number of stack pages (stored in image file header, max 65535; Cog VMs only, otherwise nil)
44 size of eden, in bytes (Cog VMs only, otherwise nil)
45 desired size of eden, in bytes (stored in image file header; Cog VMs only, otherwise nil)
46 size of machine code zone, in bytes (stored in image file header; Cog JIT VM only, otherwise nil)
47 desired size of machine code zone, in bytes (applies at startup only, stored in image file header; Cog JIT VM only)
48 various properties of the Cog VM as an integer encoding an array of bit flags.
Bit 0: tells the VM that the image's Process class has threadId as its 5th inst var (after nextLink, suspendedContext, priority & myList)
Bit 1: on Cog JIT VMs asks the VM to set the flag bit in interpreted methods
Bit 2: if set, preempting a process puts it to the head of its run queue, not the back,
i.e. preempting a process by a higher priority one will not cause the preempted process to yield
to others at the same priority.
Bit 3: in a muilt-threaded VM, if set, the Window system will only be accessed from the first VM thread
Bit 4: in a Spur vm, if set, causes weaklings and ephemerons to be queued individually for finalization
+ Bit 5: if set, implies wheel events will be delivered as such and not mapped to arrow key events
+ Bit 6: if set, implies arithmetic primitives will fail if given arguments of different types (float vs int)
49 the size of the external semaphore table (read-write; Cog VMs only)
50-51 reserved for VM parameters that persist in the image (such as eden above)
52 root (remembered) table maximum size (read-only)
53 the number of oldSpace segments (Spur only, otherwise nil)
54 total size of free old space (Spur only, otherwise nil)
55 ratio of growth and image size at or above which a GC will be performed post scavenge (Spur only, otherwise nil)
56 number of process switches since startup (read-only)
57 number of ioProcessEvents calls since startup (read-only)
58 number of forceInterruptCheck (Cog VMs) or quickCheckInterruptCalls (non-Cog VMs) calls since startup (read-only)
59 number of check event calls since startup (read-only)
60 number of stack page overflows since startup (read-only; Cog VMs only)
61 number of stack page divorces since startup (read-only; Cog VMs only)
62 number of machine code zone compactions since startup (read-only; Cog VMs only)
63 milliseconds taken by machine code zone compactions since startup (read-only; Cog VMs only)
64 current number of machine code methods (read-only; Cog VMs only)
65 In newer Cog VMs a set of flags describing VM features,
if non-zero bit 0 implies multiple bytecode set support;
if non-zero bit 0 implies read-only object support
(read-only; Cog VMs only; nil in older Cog VMs, a boolean answering multiple bytecode support in not so old Cog VMs)
66 the byte size of a stack page in the stack zone (read-only; Cog VMs only)
67 the maximum allowed size of old space in bytes, 0 implies no internal limit (Spur VMs only).
68 the average number of live stack pages when scanned by GC (at scavenge/gc/become et al)
69 the maximum number of live stack pages when scanned by GC (at scavenge/gc/become et al)
70 the value of VM_PROXY_MAJOR (the interpreterProxy major version number)
+ 71 the value of VM_PROXY_MINOR (the interpreterProxy minor version number)
+ 72 total milliseconds in full GCs Mark phase since startup (read-only)
+ 73 total milliseconds in full GCs Sweep phase since startup (read-only, can be 0 depending on compactors)
+ 74 maximum pause time due to segment allocation"
- 71 the value of VM_PROXY_MINOR (the interpreterProxy minor version number)"
<primitive: 254>
self primitiveFailed!
Nicolas Cellier uploaded a new version of 60Deprecated to project The Trunk:
http://source.squeak.org/trunk/60Deprecated-nice.74.mcz
==================== Summary ====================
Name: 60Deprecated-nice.74
Author: nice
Time: 9 March 2020, 12:27:12.189353 am
UUID: b6c835d9-5373-47cd-993a-29050698b28f
Ancestors: 60Deprecated-mt.73
Deprecate Integer>>destinationBuffer:
No sender, sole implementor, no comment, strange timestamp.
This meets enough criteria.
=============== Diff against 60Deprecated-mt.73 ===============
Item was added:
+ ----- Method: Integer>>destinationBuffer: (in category '*60Deprecated-Kernel-Methods') -----
+ destinationBuffer:digitLength
+ digitLength <= 1
+ ifTrue: [self]
+ ifFalse: [LargePositiveInteger new: digitLength].!
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.1314.mcz
==================== Summary ====================
Name: Kernel-nice.1314
Author: nice
Time: 9 March 2020, 12:11:55.571842 am
UUID: e657e32e-7763-49bc-9dec-035556544077
Ancestors: Kernel-nice.1313
Random changes retained by 5.3 release.
- use #substrings or #lines when simpler than #subStrings:
- protect top Context when we want to #findSimilarSender
(I had one such case in Debugger, but forgot which one)
- deprecate Integer>>destinationBuffer: this might belong to a package, but not to Kernel obviously.
- Fix SmallInteger>>digitsAsFloat fallback code, super only deals with magnitude, not sign
=============== Diff against Kernel-nice.1313 ===============
Item was changed:
----- Method: ClassBuilder>>superclass:ephemeronSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category: (in category 'public') -----
superclass: aClass
ephemeronSubclass: t instanceVariableNames: f
classVariableNames: d poolDictionaries: s category: cat
"This is the standard initialization message for creating a new class as a
subclass of an existing class (the receiver) in which the subclass is to
have ephemeron semantics, i.e. where the object will be queued for
finalization when the key (first) inst var is not reachable other than through
the other fields of ephemerons with unreachable keys."
| env |
aClass isPointers ifFalse:
[^self error: 'cannot make a pointer subclass of a class with non-pointer fields'].
+ aClass instSize + f substrings size < 2 ifTrue:
+ [^self error: 'cannot make an ephemeron class with less than two named instance variables'].
- aClass instSize + (f subStrings: ' \' withCRs) size < 2 ifTrue:
- [^self error: 'cannot make an ephemeron class with less than two named instance varaibles'].
env := CurrentEnvironment signal ifNil: [aClass environment].
^self
name: t
inEnvironment: env
subclassOf: aClass
type: #ephemeron
instanceVariableNames: f
classVariableNames: d
poolDictionaries: s
category: cat!
Item was changed:
----- Method: ClassDescription>>chooseVarThenDo: (in category 'instance variables') -----
chooseVarThenDo: aBlock
"Put up a menu of all the instance variables in the receiver, and when
the user chooses one, evaluate aBlock with the chosen variable as its
parameter."
| lines labelStream allVars index |
(self allInstVarNames size + self theNonMetaClass allClassVarNames size) = 0 ifTrue: [ ^ self inform: 'There are no variables.' ].
allVars := OrderedCollection new.
lines := OrderedCollection new.
labelStream := WriteStream on: (String new: 200).
self withAllSuperclasses reverseDo:
[ : class | | vars |
vars := class instVarNames , class theNonMetaClass classVarNames.
vars do:
[ : var | labelStream
nextPutAll: var ;
cr.
allVars add: var ].
vars isEmpty ifFalse: [ lines add: allVars size ] ].
labelStream skip: -1.
"cut last CR"
(lines size > 0 and: [ lines last = allVars size ]) ifTrue: [ lines removeLast ].
"dispense with inelegant line beneath last item"
index := UIManager default
+ chooseFrom: (labelStream contents lines)
- chooseFrom: (labelStream contents subStrings: {Character cr})
lines: lines
title: 'Variables in ' , self name.
index = 0 ifTrue: [ ^ self ].
aBlock value: (allVars at: index)!
Item was changed:
----- Method: Context>>findSimilarSender (in category 'query') -----
findSimilarSender
"Return the closest sender with the same method, return nil if none found"
| meth |
meth := self method.
+ self sender ifNil: [^nil].
^ self sender findContextSuchThat: [:c | c method == meth]!
Item was removed:
- ----- Method: Integer>>destinationBuffer: (in category 'printing') -----
- destinationBuffer:digitLength
- digitLength <= 1
- ifTrue: [self]
- ifFalse: [LargePositiveInteger new: digitLength].!
Item was changed:
----- Method: SmallInteger>>digitsAsFloat (in category 'private') -----
digitsAsFloat
"private - let the primitive take care to answer the nearest float"
<primitive: 40>
+ ^super digitsAsFloat * self sign!
- ^super digitsAsFloat!