The Inbox: Compiler-fbs.183.mcz

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

The Inbox: Compiler-fbs.183.mcz

commits-2
A new version of Compiler was added to project The Inbox:
http://source.squeak.org/inbox/Compiler-fbs.183.mcz

==================== Summary ====================

Name: Compiler-fbs.183
Author: fbs
Time: 19 December 2010, 10:28:02.599 pm
UUID: 99e9d7d8-0347-5941-8b10-3a187432806e
Ancestors: Compiler-ul.182

Fix for 7588: Decompiler>>interpretNextInstructionFor: bitrot:

If you change the first statement in the above-mentioned method to

  false ifTrue: [^ super interpretNextInstructionFor: client].

you will print out debug information. Or you would if you didn't get an exception printing out the bytecode. "code copyFrom: 4 to: code size" fails because it tries to make a String of size -2. That's because code at this point is something like '70' if you're currently interpreting bytecode 112.

Changing the offending line to "nextPutAll: '<', code, '>' fixes things.

=============== Diff against Compiler-ul.182 ===============

Item was changed:
  ----- Method: Decompiler>>interpretNextInstructionFor: (in category 'private') -----
  interpretNextInstructionFor: client
 
  | code varNames |
 
  "Change false here will trace all state in Transcript."
  true ifTrue: [^ super interpretNextInstructionFor: client].
 
  varNames := self class allInstVarNames.
  code := (self method at: pc) radix: 16.
  Transcript cr; cr; print: pc; space;
+ nextPutAll: '<' , code, '>'.
- nextPutAll: '<' , (code copyFrom: 4 to: code size), '>'.
  8 to: varNames size do:
  [:i | i <= 10 ifTrue: [Transcript cr]
  ifFalse: [Transcript space; space].
  Transcript nextPutAll: (varNames at: i);
  nextPutAll: ': '; print: (self instVarAt: i)].
  Transcript endEntry.
  ^ super interpretNextInstructionFor: client!