Class { #name : 'PPCPassVisitor', #superclass : 'PPCNodeVisitor', #instVars : [ 'context' ], #category : 'PetitCompiler-Visitors' } { #category : 'converting' } PPCPassVisitor class >> asPPCPass [ ^ self new "Created: / 29-08-2015 / 07:12:54 / Jan Vrany " ] { #category : 'converting' } PPCPassVisitor >> asPPCPass [ ^ self "Created: / 29-08-2015 / 07:13:12 / Jan Vrany " ] { #category : 'accessing' } PPCPassVisitor >> context [ ^ context ] { #category : 'accessing' } PPCPassVisitor >> context: aPPCCompilationContext [ context := aPPCCompilationContext. "Created: / 26-08-2015 / 22:05:38 / Jan Vrany " ] { #category : 'history' } PPCPassVisitor >> copyPassResult: result [ ^ result transform: [ :e | e copy ] ] { #category : 'history' } PPCPassVisitor >> passName [ ^ self class name ] { #category : 'history' } PPCPassVisitor >> rememberResult: result to: history [ | key value | key := self passName. value := self copyPassResult: result. history add: key -> value ] { #category : 'running' } PPCPassVisitor >> run: ir [ "Actually run the pass on given IR (tree of PPCNode) and return (possibly transformed or completely new) another IR." context isNil ifTrue:[ PPCCompilationError new signal: 'oops, no context set, use #context: before running a pass!'. ]. ^ self visit: ir. "Created: / 26-08-2015 / 22:30:21 / Jan Vrany " ] { #category : 'running' } PPCPassVisitor >> run: ir in: ctx [ "Actually run the pass on given IR (tree of PPCNode) in given compilation context and return (possibly transformed or completely new) another IR." context := ctx. ^ self run: ir. "Created: / 26-08-2015 / 22:33:27 / Jan Vrany " ]