The Trunk: Kernel-bf.673.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Kernel-bf.673.mcz

commits-2
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].!