[squeak-dev] The Trunk: Compiler-rss.72.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Aug 23 20:24:43 UTC 2009


Andreas Raab uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-rss.72.mcz

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

Name: Compiler-rss.72
Author: rss
Time: 23 August 2009, 1:10:39 am
UUID: 8e73baaa-38e9-4fa1-9f55-025566fee18e
Ancestors: Compiler-ar.71

Collections-rss.118

=============== Diff against Compiler-ar.71 ===============

Item was changed:
  ParseNode subclass: #MessageNode
  	instanceVariableNames: 'receiver selector precedence special arguments sizes equalNode caseErrorNode'
+ 	classVariableNames: 'MacroEmitters MacroPrinters MacroSelectors MacroSizers MacroTransformers NewStyleMacroEmitters NewStyleMacroSizers StdTypers ThenFlag'
- 	classVariableNames: 'MacroSelectors MacroEmitters MacroTransformers StdTypers NewStyleMacroEmitters MacroSizers ThenFlag NewStyleMacroSizers MacroPrinters'
  	poolDictionaries: ''
  	category: 'Compiler-ParseNodes'!
  
  !MessageNode commentStamp: '<historical>' prior: 0!
  I represent a receiver and its message.
  	
  Precedence codes:
  	1 unary
  	2 binary
  	3 keyword
  	4 other
  	
  If special>0, I compile special code in-line instead of sending messages with literal methods as remotely copied contexts.!

Item was added:
+ ----- Method: Compiler>>format:in:notifying: (in category 'public access') -----
+ format: textOrStream in: aClass notifying: aRequestor
+ 	"Compile a parse tree from the argument, textOrStream. Answer a string containing the original code, formatted nicely.  If aBoolean is true, then decorate the resulting text with color and hypertext actions"
+ 
+ 	| aNode |
+ 	self from: textOrStream
+ 		class: aClass
+ 		context: nil
+ 		notifying: aRequestor.
+ 	aNode := self format: sourceStream noPattern: false ifFail: [^ nil].
+ 
+ 	"aSymbol == #colorPrint ifTrue:
+ 		[^aNode asColorizedSmalltalk80Text]." "deprecating #colorPrint in favor of Shout --Ron Spengler"
+ 
+ 	^aNode decompileString!

Item was changed:
  Object subclass: #ParseNode
  	instanceVariableNames: 'comment pc'
+ 	classVariableNames: 'Bfp BtpLong CodeBases CodeLimits DblExtDoAll Dup EndMethod EndRemote Jmp JmpLimit JmpLong LdFalse LdInstLong LdInstType LdLitIndType LdLitType LdMinus1 LdNil LdSelf LdSuper LdTempType LdThisContext LdTrue LoadLong LongLongDoAll NodeFalse NodeNil NodeSelf NodeSuper NodeThisContext NodeTrue Pop Send SendLimit SendLong SendLong2 SendPlus SendType ShortStoP StdLiterals StdSelectors StdVariables Store StorePop'
- 	classVariableNames: 'Jmp SendType Store Dup JmpLong EndRemote Send NodeSelf LdTrue BtpLong LdInstLong SendLong StdLiterals StdVariables LdThisContext StorePop SendLimit JmpLimit SendPlus Pop NodeNil LdLitIndType SendLong2 DblExtDoAll LoadLong LdLitType NodeTrue LdNil EndMethod LongLongDoAll LdSelf LdSuper NodeSuper CodeLimits LdMinus1 LdTempType StdSelectors LdFalse CodeBases ShortStoP NodeFalse NodeThisContext LdInstType Bfp'
  	poolDictionaries: ''
  	category: 'Compiler-ParseNodes'!
  
  !ParseNode commentStamp: '<historical>' prior: 0!
  This superclass of most compiler/decompiler classes declares common class variables, default messages, and the code emitters for jumps. Some of the class variables are initialized here; the rest are initialized in class VariableNode.!

Item was changed:
  InstructionStream subclass: #Decompiler
  	instanceVariableNames: 'constructor method instVars tempVars constTable stack statements lastPc exit caseExits lastJumpPc lastReturnPc limit hasValue blockStackBase numLocalTemps'
+ 	classVariableNames: 'ArgumentFlag CascadeFlag CaseFlag IfNilFlag'
- 	classVariableNames: 'ArgumentFlag CascadeFlag IfNilFlag CaseFlag'
  	poolDictionaries: ''
  	category: 'Compiler-Kernel'!
  
  !Decompiler commentStamp: '<historical>' prior: 0!
  I decompile a method in three phases:
  	Reverser: postfix byte codes -> prefix symbolic codes (nodes and atoms)
  	Parser: prefix symbolic codes -> node tree (same as the compiler)
  	Printer: node tree -> text (done by the nodes)
  	
  
  instance vars:
  
  	constructor
  	method
  	instVars
  	tempVars
  	constTable
  	stack
  	statements
  	lastPc
  	exit
  	caseExits	- stack of exit addresses that have been seen in the branches of caseOf:'s
  	lastJumpPc
  	lastReturnPc
  	limit
  	hasValue
  	blockStackBase
  	numLocaltemps - number of temps local to a block; also a flag indicating decompiling a block!

Item was added:
+ ----- Method: Compiler class>>format:in:notifying: (in category 'evaluating') -----
+ format: textOrStream in: aClass notifying: aRequestor
+ 	^self new format: textOrStream in: aClass notifying: aRequestor!

Item was removed:
- ----- Method: Compiler>>format:in:notifying:contentsSymbol: (in category 'public access') -----
- format: textOrStream in: aClass notifying: aRequestor contentsSymbol: aSymbol
- 	"Compile a parse tree from the argument, textOrStream. Answer a string containing the original code, formatted nicely.  If aBoolean is true, then decorate the resulting text with color and hypertext actions"
- 
- 	| aNode |
- 	self from: textOrStream
- 		class: aClass
- 		context: nil
- 		notifying: aRequestor.
- 	aNode := self format: sourceStream noPattern: false ifFail: [^ nil].
- 
- 	aSymbol == #colorPrint ifTrue:
- 		[^aNode asColorizedSmalltalk80Text].
- 
- 	^aNode decompileString!

Item was removed:
- ----- Method: Compiler class>>format:in:notifying:contentsSymbol: (in category 'evaluating') -----
- format: textOrStream in: aClass notifying: aRequestor contentsSymbol: aSymbol
- 	^self new format: textOrStream in: aClass notifying: aRequestor contentsSymbol: aSymbol!




More information about the Squeak-dev mailing list