Bert Freudenberg uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-bf.673.mcz==================== Summary ====================
Name: Kernel-bf.673
Author: bf
Time: 19 March 2012, 8:07:23.064 pm
UUID: ed8f09cb-8fd5-4bbe-b9a6-1aab2d7f0dc0
Ancestors: Kernel-cmm.672
Fix decompileWithTemps (moving the better logic the Browser used into CompiledMethod), and use it when getting a method node. This makes the Debugger see the same decompiled source as the Browser.
=============== Diff against Kernel-cmm.672 ===============
Item was changed:
----- Method: CompiledMethod>>decompileWithTemps (in category 'decompiling') -----
decompileWithTemps
"Return the decompiled parse tree that represents self, but get the temp names
by compiling the sourcecode..."
+ | class selector tempNames |
- | class selector |
class := self methodClass ifNil: [Object].
selector := self selector ifNil: [self defaultSelector].
(self fileIndex > 0 and: [(SourceFiles at: self fileIndex) isNil]) ifTrue: [
"Emergency or no source file -- decompile without temp names "
^self decompile.
].
+ tempNames := (class newCompiler
+ parse: self getSourceFromFile asString
+ in: class
+ notifying: nil)
+ generate: CompiledMethodTrailer defaultMethodTrailer;
+ schematicTempNamesString.
+ ^((self decompilerClass new withTempNames: tempNames)
- ^((self decompilerClass new withTempNames: self methodNode schematicTempNamesString)
decompile: selector
in: class
method: self methodForDecompile)!
Item was changed:
----- Method: CompiledMethod>>methodNode (in category 'decompiling') -----
methodNode
"Return the parse tree that represents self. If parsing fails, decompile the method."
| aClass source |
aClass := self methodClass.
source := self
getSourceFor: (self selector ifNil: [self defaultSelector])
in: aClass.
^[(aClass newParser
encoderClass: (self isBlueBookCompiled
ifTrue: [EncoderForV3]
ifFalse: [EncoderForV3PlusClosures]);
parse: source class: aClass)
sourceText: source;
yourself]
on: SyntaxErrorNotification
+ do: [:ex | ex return: self decompileWithTemps].!
- do: [:ex | ex return: self decompile].!