Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1064.mcz
==================== Summary ====================
Name: Kernel-eem.1064
Author: eem
Time: 22 March 2017, 9:21:06.777441 am
UUID: 5779c103-0ef2-470d-ae88-a5a759b47510
Ancestors: Kernel-ul.1063
Fix bug in creating new subclasses of #compiledMethod classes.
=============== Diff against Kernel-ul.1063 ===============
Item was changed:
----- Method: ClassBuilder>>superclass:variableByteSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category: (in category 'public') -----
superclass: aClass
+ variableByteSubclass: n instanceVariableNames: f
- variableByteSubclass: 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 in which the subclass is to have indexable 8-bit byte-sized nonpointer variables."
+ | existingOrSuperclass actualType env |
+ aClass instSize > 0 ifTrue:
+ [^self error: 'cannot make a byte subclass of a class with named fields'].
+ (aClass isVariable and: [aClass isBytes not]) ifTrue:
+ [^self error: 'cannot make an 8-bit byte subclass of a class with 16, 32 or 64 bit fields'].
+ (aClass isVariable and: [aClass isPointers]) ifTrue:
+ [^self error: 'cannot make a byte subclass of a class with pointer fields'].
+ existingOrSuperclass := aClass environment at: n ifAbsent: [aClass].
+ actualType := existingOrSuperclass typeOfClass == #compiledMethod
+ ifTrue: [#compiledMethod]
+ ifFalse: [#bytes].
- | oldClassOrNil actualType env |
- aClass instSize > 0
- ifTrue: [^self error: 'cannot make a byte subclass of a class with named fields'].
- (aClass isVariable and: [aClass isBytes not])
- ifTrue: [^self error: 'cannot make an 8-bit byte subclass of a class with 16, 32 or 64 bit fields'].
- (aClass isVariable and: [aClass isPointers])
- ifTrue: [^self error: 'cannot make a byte subclass of a class with pointer fields'].
- oldClassOrNil := aClass environment at: t ifAbsent:[nil].
- actualType := (oldClassOrNil notNil
- and: [oldClassOrNil typeOfClass == #compiledMethod])
- ifTrue: [#compiledMethod]
- ifFalse: [#bytes].
env := CurrentEnvironment signal ifNil: [aClass environment].
^self
+ name: n
- name: t
inEnvironment: env
subclassOf: aClass
type: actualType
instanceVariableNames: f
classVariableNames: d
poolDictionaries: s
category: cat!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.940.mcz
==================== Summary ====================
Name: System-ul.940
Author: ul
Time: 21 March 2017, 6:55:02.32896 pm
UUID: bb942b8d-8893-42f6-b10f-ba058fbda68c
Ancestors: System-ul.939
- SmalltalkImage >> #specialSelectors returns the raw array used by the VM
- introduced SmalltalkImage >> #specialSelectorNames, which returns just the names of the special selectors without their argument count
=============== Diff against System-ul.939 ===============
Item was added:
+ ----- Method: SmalltalkImage>>specialSelectorNames (in category 'special objects') -----
+ specialSelectorNames
+ "Return a collection with the names of the special selectors."
+
+ | arrayOfPairs |
+ arrayOfPairs := self specialSelectors.
+ ^Array new: arrayOfPairs size // 2 streamContents: [ :stream |
+ arrayOfPairs pairsDo: [ :selector :numArgs |
+ stream nextPut: selector ] ]
+ !
Item was changed:
----- Method: SmalltalkImage>>specialSelectors (in category 'special objects') -----
specialSelectors
+ "Return an array with flattened special selector - argument count pairs. VMMaker relies on this."
+ ^self specialObjectsArray at: 24!
- | arrayOfPairs |
- arrayOfPairs := self specialObjectsArray at: 24.
- ^Array new: arrayOfPairs size // 2 streamContents: [ :stream |
- arrayOfPairs pairsDo: [ :selector :numArgs |
- stream nextPut: selector ] ]
- !
Item was changed:
----- Method: SystemNavigation>>allSentMessagesWithout: (in category 'query') -----
allSentMessagesWithout: classesAndMessagesPair
"Answer the set of selectors which are sent somewhere in the system,
computed in the absence of the supplied classes and messages."
| sent absentClasses absentSelectors |
sent := IdentitySet new: CompiledMethod instanceCount.
absentClasses := classesAndMessagesPair first.
absentSelectors := classesAndMessagesPair second.
"sd 29/04/03"
Cursor execute showWhile: [
self environment allClassesAndTraitsDo: [:cls |
((absentClasses includes: cls name)
ifTrue: [{}]
ifFalse: [{cls. cls classSide}])
do: [:each | (absentSelectors isEmpty
ifTrue: [each selectors]
ifFalse: [each selectors copyWithoutAll: absentSelectors])
do: [:sel | "Include all sels, but not if sent by self"
(each compiledMethodAt: sel) literalsDo: [:m |
(m isSymbol)
ifTrue: ["might be sent"
m == sel
ifFalse: [sent add: m]].
(m isMemberOf: Array)
ifTrue: ["might be performed"
m
do: [:x | (x isSymbol)
ifTrue: [x == sel
ifFalse: [sent add: x]]]]]]]]].
"The following may be sent without being in any literal frame"
+ Smalltalk specialSelectorNames do: [:sel | sent add: sel].
- Smalltalk specialSelectors do: [:sel | sent add: sel].
Smalltalk presumedSentMessages do: [:sel | sent add: sel].
^ sent.!
Eliot Miranda uploaded a new version of SystemReporter to project The Trunk:
http://source.squeak.org/trunk/SystemReporter-eem.34.mcz
==================== Summary ====================
Name: SystemReporter-eem.34
Author: eem
Time: 19 March 2017, 5:21:30.625322 pm
UUID: 3c12cf73-1e99-4d84-b9b0-6a16f7533fe9
Ancestors: SystemReporter-ul.33
Update the System Reporter's VM Parameters tab with the latest parameters (idle time and Sista code proportion).
=============== Diff against SystemReporter-ul.33 ===============
Item was changed:
----- Method: SystemReporter>>reportVMParameters: (in category 'reporting') -----
reportVMParameters: aStream
| vmParameters isStack isCog isSpur |
self header: 'Virtual Machine Parameters' on: aStream.
vmParameters := Smalltalk vm getVMParameters.
isStack := (vmParameters at: 42 ifAbsent: [0]) ~= 0. "42 = number of stack pages available"
isCog := isStack and: [(vmParameters at: 46) ~= 0]. "46 is machine code zone size"
isSpur := isStack and: [(vmParameters at: 41) anyMask: 2r10000]. "41 is imageFormatVersion for the VM; bit 16 is the Spur bit"
(isSpur
ifFalse:
[#( 1 'size of old space'
2 'size of young+old space'
3 'size of memory'
4 'allocationCount'
5 'allocations between GCs'
6 'survivor count tenuring threshold')]
ifTrue:
[#( 1 'size of old space'
2 'size of new space'
3 'size of heap')]),
#( 7 'full GCs since startup'
8 'total milliseconds in full GCs since startup'),
(isSpur
ifFalse: [#( 9 'incremental GCs since startup'
10 'total milliseconds in incremental GCs since startup'
11 'tenures of surving objects since startup'),
{12 to: 19. 'specific to the translating VM'}]
ifTrue: [#( 9 'scavenging GCs since startup'
10 'total milliseconds in scavenging GCs since startup'
11 'tenures of surving objects since startup'),
+ {12 to: 15. 'reserved for future use'},
+ #( 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)'
- {12 to: 17. 'reserved for future use'},
- #( 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 startup (if non-zero)'
+ 21 'root/remembered table size (occupancy)'
+ 22 'root/remembered table overflows since startup'
- 21 'root table size'
- 22 'root table overflows since startup'
23 'bytes of extra memory to reserve for VM buffers, plugins, etc.'
24 'free memory threshold above which object memory will be shrunk'
25 'memory headroom when growing object memory'),
(isStack
ifFalse:
[#( 26 'interruptChecksEveryNms - force an ioProcessEvents every N milliseconds, in case the image is not calling getNextEvent often')]
ifTrue:
[#( 26 'heartbeat period (ms; see #58)')]),
(isSpur
ifFalse:
[#( 27 'number of times mark loop iterated for current IGC/FGC includes ALL marking'
28 'number of times sweep loop iterated for current IGC/FGC'
29 'number of times make forward loop iterated for current IGC/FGC'
30 'number of times compact move loop iterated for current IGC/FGC')]
ifTrue: [#()]),
#( 31 'number of grow memory requests'
32 'number of shrink memory requests'),
(isSpur
ifFalse:
[#( 33 'number of root table entries used for current IGC/FGC'
34 'number of allocations done before current IGC/FGC'
35 'number of survivor objects after current IGC/FGC'
36 'millisecond clock when current IGC/FGC completed'
37 'number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC'
38 'milliseconds taken by current IGC'
39 'Number of finalization signals for Weak Objects pending when current IGC/FGC completed')]
ifTrue:
[#( 33 'number of root table entries at last scavenge'
35 'number of survivor objects at last scavenge (if non-zero)'
36 'millisecond clock when current scavenge completed'
38 'milliseconds taken by current scavenge'
39 'Number of finalization signals for Weak Objects pending when current SGC/FGC completed')]),
#( 40 'VM word size - 4 or 8'),
(isStack
ifTrue:
[#(
41 'imageFormatVersion for the VM'
42 'number of stack pages available'
43 'desired number of stack pages (stored in image file header, max 65535)'
44 'size of eden, in bytes'
45 'desired size of eden, in bytes (stored in image file header)'
46 'machine code zone size, in bytes (0 in Stack VM)'
47 'desired machine code zone size (0 => default 1Mb)'
48 'various header flags. See getCogVMFlags.'
49 'max size the image promises to grow the external semaphore table to'),
(isSpur
ifFalse:
+ [{ 50 to: 51. 'reserved for VM parameters that persist in the image (such as size of eden above)'.
+ 52 to: 56. 'specific to Spur' }]
- [{ 50 to: 54. 'reserved for VM parameters that persist in the image (such as size of eden above)'.
- 55 to: 56. 'specific to Spur' }]
ifTrue:
[{ 50 to: 51. 'reserved for VM parameters that persist in the image (such as size of eden above)' },
+ #( 52 'root/remembered table capacity'
- #( 52 'root table capacity'
53 'number of old space segments'
54 'total free old space'
55 'ratio of growth and image size at or above which a GC will be performed post scavenge')]),
#( 56 'number of process switches since startup'
57 'number of ioProcessEvents calls since startup'
58 'number of forceInterruptCheck calls since startup'
59 'number of check event calls since startup'
60 'number of stack page overflows since startup'
61 'number of stack page divorces since startup'
62 'compiled code compactions since startup'),
(isCog
ifFalse:
[#()]
ifTrue:
[#( 63 'total milliseconds in compiled code compactions since startup'
64 'the number of methods that currently have jitted machine-code')]),
#( 65 'whether the VM supports MULTIPLE_BYTECODE_SETS or not.'
66 'the byte size of a stack page'),
(isSpur
ifFalse:
[{ 67 to: 69. 'reserved for more Cog-related info' }]
ifTrue:
[#( 67 'the maximum allowed size of old space (if zero there is no limit)'
68 'the average number of live stack pages when scanned by scavenge/gc/become'
69 'the maximum number of live stack pages when scanned by scavenge/gc/become')]),
#( 70 'the vmProxyMajorVersion (the interpreterProxy VM_MAJOR_VERSION)'
71 'the vmProxyMinorVersion (the interpreterProxy VM_MINOR_VERSION)')]
ifFalse:
[#()])
pairsDo: [:idx :desc | | value values |
aStream nextPut: $#.
idx isInteger
ifTrue:
[value := vmParameters at: idx.
aStream print: idx; tab: (idx < 10 ifTrue: [2] ifFalse: [1]); nextPutAll: ((value isInteger and: [idx ~= 41]) ifTrue: [value asStringWithCommas] ifFalse: [value printString])]
ifFalse:
[value := vmParameters at: idx first.
aStream print: idx first; next: 2 put: $.; print: idx last; tab.
values := idx collect: [:i| vmParameters at: i].
values asSet size = 1
ifTrue: [aStream print: value]
ifFalse: [values do: [:v| aStream print: v] separatedBy: [aStream nextPutAll: ', ']]].
aStream tab; nextPutAll: desc; cr]!
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.937.mcz
==================== Summary ====================
Name: System-ul.937
Author: ul
Time: 20 March 2017, 12:35:03.813931 am
UUID: 01691bb8-181f-4795-83ce-20130031a81d
Ancestors: System-ul.936
Fixed SmalltalkImage >> #specialSelectors. SystemTracer doesn't use it any more, but it's being used by tests, which expect it to return only the selectors without their argument count.
=============== Diff against System-ul.936 ===============
Item was changed:
----- Method: SmalltalkImage>>specialSelectors (in category 'special objects') -----
specialSelectors
+
+ | arrayOfPairs |
+ arrayOfPairs := self specialObjectsArray at: 24.
+ ^Array new: arrayOfPairs size // 2 streamContents: [ :stream |
+ arrayOfPairs pairsDo: [ :selector :numArgs |
+ stream nextPut: selector ] ]
+ !
- "Used by SystemTracer only."
-
- ^SpecialSelectors!