Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.380.mcz
==================== Summary ====================
Name: Compiler-eem.380
Author: eem
Time: 20 March 2018, 3:30:10.256928 pm
UUID: 3133d60f-54b2-410e-92ae-ef5cc782ab9c
Ancestors: Compiler-eem.379
Rename Encoder's addedSelectorAndMethodClassLiterals, a name which is now misleading given the new full block support, to addedExtraLiterals. Requires Compiler-eem.379.
=============== Diff against Compiler-eem.379 ===============
Item was changed:
----- Method: BytecodeEncoder>>allLiteralsForBlockMethod (in category 'results') -----
allLiteralsForBlockMethod
+ addedExtraLiterals ifFalse:
+ [addedExtraLiterals := true.
- "N.B. addedSelectorAndMethodClassLiterals is a misnomer. It should be something like
- addedImplicitLiterals or addedExtraLiterals."
- addedSelectorAndMethodClassLiterals ifFalse:
- [addedSelectorAndMethodClassLiterals := true.
"Put the optimized selectors in literals so as to browse senders more easily"
optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].
optimizedSelectors isEmpty ifFalse: [
"Use one entry per literal if enough room, else make anArray"
literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals
ifTrue: [self litIndex: optimizedSelectors asArray]
ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].
"Add a slot for outerCode"
self litIndex: nil].
^literalStream contents!
Item was changed:
----- Method: BytecodeEncoder>>resetForFullBlockGeneration (in category 'code generation') -----
resetForFullBlockGeneration
literalStream := WriteStream on: (Array new: 8).
+ addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
optimizedSelectors := Set new!
Item was changed:
----- Method: BytecodeEncoder>>resetLiteralStreamForFullBlock (in category 'code generation') -----
resetLiteralStreamForFullBlock
literalStream := WriteStream on: (Array new: 32).
+ addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
optimizedSelectors := Set new!
Item was changed:
ParseNode subclass: #Encoder
+ instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedExtraLiterals optimizedSelectors cue'
- instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedSelectorAndMethodClassLiterals optimizedSelectors cue'
classVariableNames: ''
poolDictionaries: ''
category: 'Compiler-Kernel'!
!Encoder commentStamp: 'cwp 12/26/2012 23:29' prior: 0!
I encode names and literals into tree nodes with byte codes for the compiler. Byte codes for literals are not assigned until the tree-sizing pass of the compiler, because only then is it known which literals are actually needed. I also keep track of sourceCode ranges during parsing and code generation so I can provide an inverse map for the debugger.!
Item was changed:
----- Method: Encoder>>allLiterals (in category 'results') -----
allLiterals
+ addedExtraLiterals ifFalse:
+ [addedExtraLiterals := true.
- addedSelectorAndMethodClassLiterals ifFalse:
- [addedSelectorAndMethodClassLiterals := true.
"Put the optimized selectors in literals so as to browse senders more easily"
optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].
optimizedSelectors isEmpty ifFalse: [
"Use one entry per literal if enough room, else make anArray"
literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals
ifTrue: [self litIndex: optimizedSelectors asArray]
ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].
"Add a slot for selector or MethodProperties"
self litIndex: nil.
self litIndex: self associationForClass].
^literalStream contents!
Item was changed:
----- Method: Encoder>>initScopeAndLiteralTables (in category 'initialize-release') -----
initScopeAndLiteralTables
scopeTable := StdVariables copy.
litSet := StdLiterals copy.
"comments can be left hanging on nodes from previous compilations.
probably better than this hack fix is to create the nodes afresh on each compilation."
scopeTable do:
[:varNode| varNode comment: nil].
litSet do:
[:varNode| varNode comment: nil].
selectorSet := StdSelectors copy.
litIndSet := Dictionary new: 16.
literalStream := WriteStream on: (Array new: 32).
+ addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
optimizedSelectors := Set new!
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.379.mcz
==================== Summary ====================
Name: Compiler-eem.379
Author: eem
Time: 20 March 2018, 3:27:27.12646 pm
UUID: b3856f24-9d98-478a-936f-c6d24d667be4
Ancestors: Compiler-eem.378
Add initialization of the Undeclared variable addedExtraLiterals which is soon to be a replacement for Encoder's addedSelectorAndMethodClassLiterals, a name which is now misleading given the new full block support. By adding the initialization of the Undeclared variable the compiler is not broken as the instance variable is renamed and Encoder's methods are recompiled.
=============== Diff against Compiler-eem.378 ===============
Item was changed:
----- Method: BytecodeEncoder>>resetForFullBlockGeneration (in category 'code generation') -----
resetForFullBlockGeneration
literalStream := WriteStream on: (Array new: 8).
+ addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := false.
optimizedSelectors := Set new!
Item was changed:
----- Method: BytecodeEncoder>>resetLiteralStreamForFullBlock (in category 'code generation') -----
resetLiteralStreamForFullBlock
literalStream := WriteStream on: (Array new: 32).
+ addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := false.
optimizedSelectors := Set new!
Item was changed:
----- Method: Encoder>>initScopeAndLiteralTables (in category 'initialize-release') -----
initScopeAndLiteralTables
scopeTable := StdVariables copy.
litSet := StdLiterals copy.
"comments can be left hanging on nodes from previous compilations.
probably better than this hack fix is to create the nodes afresh on each compilation."
scopeTable do:
[:varNode| varNode comment: nil].
litSet do:
[:varNode| varNode comment: nil].
selectorSet := StdSelectors copy.
litIndSet := Dictionary new: 16.
literalStream := WriteStream on: (Array new: 32).
+ addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
- addedSelectorAndMethodClassLiterals := false.
optimizedSelectors := Set new!
David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.1162.mcz
==================== Summary ====================
Name: Kernel-dtl.1162
Author: dtl
Time: 17 March 2018, 3:11:04.807847 pm
UUID: 46f46dde-06c6-4189-a8e6-4a07eda959bf
Ancestors: Kernel-eem.1161
Use #rootClasses introduced in Environments-fbs.27
=============== Diff against Kernel-eem.1161 ===============
Item was changed:
----- Method: Class class>>rootsOfTheWorld (in category 'inquiries') -----
rootsOfTheWorld
"return a collection of classes which have a nil superclass"
+ ^Smalltalk globals rootClasses!
- ^(Smalltalk globals select: [:each | each isBehavior and: [each superclass isNil]]) asOrderedCollection!
David T. Lewis uploaded a new version of Environments to project The Trunk:
http://source.squeak.org/trunk/Environments-dtl.72.mcz
==================== Summary ====================
Name: Environments-dtl.72
Author: dtl
Time: 17 March 2018, 3:09:49.564301 pm
UUID: e9aed004-8798-41c0-83f9-a04f5963dd55
Ancestors: Environments-jr.71, Environments-fbs.27
Merge Environments-fbs.27
=============== Diff against Environments-jr.71 ===============
Item was added:
+ ----- Method: Environment>>rootClasses (in category 'accessing') -----
+ rootClasses
+ "return a collection of classes which have a nil superclass"
+ ^ (self select: [:each | each isBehavior and: [each superclass isNil]]) asOrderedCollection.!
David T. Lewis uploaded a new version of Environments to project The Trunk:
http://source.squeak.org/trunk/Environments-fbs.27.mcz
==================== Summary ====================
Name: Environments-fbs.27
Author: fbs
Time: 9 May 2013, 10:39:28.736 pm
UUID: 8fe75259-bf86-4dfd-82f5-e57c4fbbca68
Ancestors: Environments-fbs.26
Like what Class rootsOfTheWorld does, only just for one Environment.
=============== Diff against Environments-fbs.26 ===============
Item was added:
+ ----- Method: Environment>>rootClasses (in category 'accessing') -----
+ rootClasses
+ "return a collection of classes which have a nil superclass"
+ ^ (self select: [:each | each isBehavior and: [each superclass isNil]]) asOrderedCollection.!
David T. Lewis uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-tcj.801.mcz
==================== Summary ====================
Name: Tools-tcj.801
Author: tcj
Time: 14 March 2018, 9:23:29.964076 pm
UUID: a2b6925f-cc1b-41ed-a14d-b2341f1eb942
Ancestors: Tools-eem.800
Remove deprecated method from MethodFinder's list of sent messages.
Fix typo in InspectorBrowser class comment.
=============== Diff against Tools-eem.800 ===============
Item was changed:
Inspector subclass: #InspectorBrowser
instanceVariableNames: 'fieldList msgList msgListIndex'
classVariableNames: ''
poolDictionaries: ''
category: 'Tools-Inspector'!
+ !InspectorBrowser commentStamp: 'tcj 3/12/2018 07:55' prior: 0!
+ I am an inspector that also shows all messages the inspected objects can understand. I combine inspector and code browser.
- !InspectorBrowser commentStamp: 'mt 4/12/2016 17:29' prior: 0!
- I am an inspector that also shows all messages the inspected objects can understand. I combine inspetor and code browser.
InspectorBrowser openOn: Smalltalk!
Item was changed:
----- Method: MethodFinder>>initialize (in category 'initialize') -----
(excessive size, no diff calculated)
David T. Lewis uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-tcj.394.mcz
==================== Summary ====================
Name: Graphics-tcj.394
Author: tcj
Time: 14 March 2018, 7:45:50.629337 pm
UUID: 320ef8b2-0718-4507-89d6-e89306c51fa2
Ancestors: Graphics-ul.393
Fix example usage comment in GIFReadWriter
=============== Diff against Graphics-ul.393 ===============
Item was changed:
----- Method: GIFReadWriter class>>grabScreenAndSaveOnDisk (in category 'examples') -----
grabScreenAndSaveOnDisk
+ "GIFReadWriter grabScreenAndSaveOnDisk"
- "GIFReaderWriter grabScreenAndSaveOnDisk"
| form fileName |
form := Form fromUser.
form bits size = 0 ifTrue: [^Beeper beep].
fileName := FileDirectory default nextNameFor: 'Squeak' extension: 'gif'.
UIManager default informUser: 'Writing ' , fileName
during: [GIFReadWriter putForm: form onFileNamed: fileName]!