[squeak-dev] The Trunk: Compiler-eem.411.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Oct 8 20:01:31 UTC 2019
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.411.mcz
==================== Summary ====================
Name: Compiler-eem.411
Author: eem
Time: 8 October 2019, 1:01:29.356552 pm
UUID: fb8ba22e-7115-49b7-8a23-52ae58c168cf
Ancestors: Compiler-mt.410
Implement the postRecompileAction convention for rebuilding state affected by a Compiler recompileAll.
Eliminate such a dependency in StdLiterals itsdelf by using a Symbol for performing literalEqual:. Remove Decompiler initialize from the comment; this method doesn;t do anything affected by VariableNode class>>#initialize anymore.
=============== Diff against Compiler-mt.410 ===============
Item was changed:
----- Method: Compiler class>>recompileAll (in category 'utilities') -----
recompileAll "Compiler recompileAll"
+ "Recompile all classes and traits in the system.
+ After recompilation invoke the postRecompileAction on any "
- "Recompile all classes and traits in the system"
+ | classesWithRecompileActions |
+ classesWithRecompileActions := OrderedCollection new.
+ Smalltalk allClassesAndTraits "This is unordered; I find that unsatisfactory and fragile, because
+ if there is a bug it could be difficult to reproduce. eem 10/8/2019"
+ do: [:classOrTrait |
+ classOrTrait compileAll.
+ (classOrTrait class includesSelector: #postRecompileAction) ifTrue:
+ [classesWithRecompileActions addLast: classOrTrait]]
+ displayingProgress:[:classOrTrait| 'Recompiling ', classOrTrait].
- Smalltalk allClassesAndTraits
- do: [:classOrTrait | classOrTrait compileAll]
- displayingProgress:[:classOrTrait| 'Recompiling ', classOrTrait]
+ classesWithRecompileActions do: [:classOrTrait| classOrTrait postRecompileAction]!
-
- !
Item was changed:
----- Method: Compiler class>>recompileAllFrom: (in category 'utilities') -----
recompileAllFrom: firstName
"Recompile all classes, starting with given name."
+ | classesWithRecompileActions |
+ classesWithRecompileActions := OrderedCollection new.
Smalltalk allClassesDo:
+ [:class |
+ class name >= firstName ifTrue:
+ [Transcript show: class name; cr.
+ class compileAll.
+ (class class includesSelector: #postRecompileAction) ifTrue:
+ [classesWithRecompileActions addLast: class]]].
- [:class | class name >= firstName
- ifTrue:
- [Transcript show: class name; cr.
- class compileAll]]
+ classesWithRecompileActions do:
+ [:classOrTrait| classOrTrait postRecompileAction]
+
+ "Compiler recompileAllFrom: 'AAABodyShop'"!
- "Compiler recompileAllFrom: 'AAABodyShop'."
- !
Item was changed:
----- Method: VariableNode class>>initialize (in category 'class initialization') -----
+ initialize "VariableNode initialize"
- initialize "VariableNode initialize. Decompiler initialize"
| encoder |
encoder := Encoder new.
StdVariables := Dictionary new: 16.
encoder
fillDict: StdVariables
with: VariableNode
mapping: #('self' 'thisContext' 'super' 'nil' 'false' 'true' )
to: (Array with: LdSelf with: LdThisContext with: LdSuper)
, (Array with: LdNil with: LdFalse with: LdTrue).
StdSelectors := Dictionary new: 64.
encoder
fillDict: StdSelectors
with: SpecialSelectorNode
mapping: ((1 to: Smalltalk specialSelectorSize) collect:
[:i | Smalltalk specialSelectorAt: i])
to: (1 to: Smalltalk specialSelectorSize) asArray.
+ StdLiterals := PluggableDictionary new equalBlock: #literalEqual:. "This is at least as fast as a block and eliminates a recompileAll dependency. eem 10/8/2019"
- StdLiterals := PluggableDictionary new equalBlock: [ :x :y | x literalEqual: y ].
encoder
fillDict: StdLiterals
with: LiteralNode
mapping: #(-1 0 1 2 )
to: (LdMinus1 to: LdMinus1 + 3).
encoder initScopeAndLiteralTables.
NodeNil := encoder encodeVariable: 'nil'.
NodeTrue := encoder encodeVariable: 'true'.
NodeFalse := encoder encodeVariable: 'false'.
NodeSelf := encoder encodeVariable: 'self'.
NodeThisContext := encoder encodeVariable: 'thisContext'.
NodeSuper := encoder encodeVariable: 'super'!
More information about the Squeak-dev
mailing list
|