[squeak-dev] The Trunk: Kernel-eem.929.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Jun 2 17:09:09 UTC 2015
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.929.mcz
==================== Summary ====================
Name: Kernel-eem.929
Author: eem
Time: 2 June 2015, 10:08:30.877 am
UUID: c05a273c-9ef2-433f-9106-012dff5a0a4d
Ancestors: Kernel-eem.928
Fix computation of prior position in new
printMethodChunkHistorically:on:moveSource:toFile:
=============== Diff against Kernel-eem.928 ===============
Item was changed:
----- Method: ClassDescription>>printMethodChunkHistorically:on:moveSource:toFile: (in category 'fileIn/Out') -----
printMethodChunkHistorically: selector on: outStream moveSource: moveSource toFile: fileIndex
"Copy all source codes historically for the method associated with selector onto the
fileStream. If moveSource is true, then also set the source code pointer of the method.
N.B. fileIndex is interpreted as follows, 0 => just a fileOut; 1 => condensing sources;
2 => condensing changes; therefore only changes on the chnages file before the last
version in the sources file are recorded."
+ | preamble method newPos category changeList priorPos index |
- | preamble method newPos category changeList prior index |
category := self organization categoryOfElement: selector.
preamble := self name , ' methodsFor: ', category asString printString.
method := self methodDict at: selector.
(method filePosition = 0
or: [method fileIndex = 0
or: [(SourceFiles at: method fileIndex) isNil]])
ifTrue: "no source; must decompile"
[outStream cr; nextPut: $!!; nextChunkPut: preamble; cr.
outStream nextChunkPut: method decompileString.
outStream nextChunkPut: ' '; cr]
ifFalse:
[changeList := ChangeSet directAncestryOfVersions: (ChangeSet
scanVersionsOf: method
class: self
meta: self isMeta
category: category
selector: selector).
+ newPos := priorPos := nil.
- newPos := prior := nil.
(fileIndex = 2 "condensing changes; select changes file code and find last sources file change"
and: [(index := changeList findFirst: [:chgRec| chgRec fileIndex = 1]) > 0]) ifTrue:
+ [priorPos := SourceFiles
+ sourcePointerFromFileIndex: 1
+ andPosition: (changeList at: index) position.
- [prior := changeList at: index.
changeList := changeList copyFrom: 1 to: index - 1].
changeList reverseDo:
[:chgRec|
chgRec file closed ifTrue:
[chgRec file reopen; setToEnd].
outStream copyPreamble: preamble from: chgRec file at: chgRec position.
+ priorPos ifNotNil:
- prior ifNotNil:
[outStream
position: outStream position - 2;
+ nextPutAll: ' prior: '; print: priorPos; nextPut: $!!; cr].
- nextPutAll: ' prior: ';
- print: (SourceFiles
- sourcePointerFromFileIndex: prior fileIndex
- andPosition: prior position);
- nextPut: $!!; cr].
"Copy the method chunk"
newPos := outStream position.
outStream copyMethodChunkFrom: chgRec file at: chgRec position.
chgRec file skipSeparators. "The following chunk may have ]style["
chgRec file peek == $] ifTrue:
[outStream cr; copyMethodChunkFrom: chgRec file].
outStream nextChunkPut: ' '; cr.
chgRec position: newPos.
+ priorPos := SourceFiles
+ sourcePointerFromFileIndex: fileIndex
+ andPosition: newPos].
- prior := chgRec].
moveSource ifTrue:
[method setSourcePosition: newPos inFile: fileIndex]].
^outStream!
More information about the Squeak-dev
mailing list
|