the decompiler

Tim Olson tim at jumpnet.com
Tue Mar 3 18:47:05 UTC 1998


>
>Hi--
>
>	Why not just make decompiled method sources have a friendly little method
>comment, saying something like "This is decompiled code." or somesuch,
>perhaps even with a hyperlink to instructions on setting up the sources
>databases?


This can be done by modifying a single method:

'From Squeak 1.31 of Feb 4, 1998 on 3 March 1998 at 12:45:32 pm'!

!DecompilerConstructor methodsFor: 'constructor' stamp: 'tao 3/3/98 
12:45'!
codeMethod: selector block: block tempVars: vars primitive: primitive 
class: class 
	| node precedence regenComment |
	node _ self codeSelector: selector code: nil.
	precedence _ selector isInfix
				ifTrue: [2]
				ifFalse: [selector isKeyword
						ifTrue: [3]
						ifFalse: [1]].
	tempVars _ vars.
	node _ MethodNode new
				selector: node
				arguments: (tempVars copyFrom: 1 to: nArgs)
				precedence: precedence
				temporaries: (tempVars copyFrom: nArgs + 1 to: tempVars size)
				block: block
				encoder: (Encoder new initScopeAndLiteralTables
						nTemps: tempVars size
						literals: literalValues
						class: class)
				primitive: primitive.
	regenComment _ OrderedCollection
		with: 'source automatically re-generated by the Decompiler'
		with: 'temporary variable names may have been substituted with t1, 
t2...'.
	node comment:
		(node comment isNil
			ifTrue: [regenComment]
			ifFalse: [node comment addAllFirst: regenComment; yourself]).
	^ node! !


     -- tim





More information about the Squeak-dev mailing list