- IRTempStore
changed: #version_SVN
- IRAccess
changed: #version_SVN
- IRMethod
changed: #version_SVN
- IRPrinter
changed: #version_SVN
- IRTempRead
changed: #version_SVN
- IRLiteralVariableRead
changed: #version_SVN
- IRLine
changed: #version_SVN
- IRClosure
changed: #version_SVN
- IRFunction
changed: #version_SVN
- IRDup
changed: #version_SVN
- IRTranslator
changed: #version_SVN
- IRInterpreter
changed: #version_SVN
- IRBuilder
changed: #version_SVN
- IRBytecodeGenerator
changed: #version_SVN
- IRJumpOverBlock
changed: #version_SVN
- IRBlockReturnTop
changed: #version_SVN
- IRSequence
changed: #version_SVN
- IRDecompiler
changed: #version_SVN
- IRInstVarStore
changed: #version_SVN
- cvut_stx_goodies_newcompiler
added:
#excludedFromPreRequisites
#extensionsVersion_SVN
#svnRepositoryUrlString
changed:
#preRequisites
#svnRevisionNr
#version_SVN
- IRLiteralVariableAccess
changed: #version_SVN
- IRTransformTest
changed: #version_SVN
- IRStackCount
changed: #version_SVN
- IRInstVarAccess
changed: #version_SVN
- IRLiteralVariableStore
changed: #version_SVN
- IRBuilderTest
changed: #version_SVN
- IRInstruction
changed: #version_SVN
- IRTempAccess
changed: #version_SVN
- IRConstant
changed: #version_SVN
- IRSend
changed: #version_SVN
- IRInstVarRead
changed: #version_SVN
- IRPop
changed: #version_SVN
- IRReturn
changed: #version_SVN
- IRJump
changed: #version_SVN
- IRJumpIf
changed: #version_SVN
- extensions
...
"{ Package: 'cvut:stx/goodies/newcompiler' }"
Object subclass:#IRInterpreter
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'NewCompiler-IR'
!
IRInterpreter comment:'I visit each IRInstruction in an IRMethod in order. Each instruction sends its instruction message to me upon being visited. See my ''instructions'' method category for complete list of instructions. Subclasses should override them.'
!
!IRInterpreter methodsFor:'instructions'!
blockReturnTop
!
goto: seqNum
!
if: bool goto: seqNum1 otherwise: seqNum2
!
jumpOverBlock: blockSeq to: dest
!
label: seqNum
!
line: line
"Created: / 02-12-2008 / 09:00:27 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
popTop
!
pushBlock: irMethod
!
pushBlockMethod: irMethod
!
pushDup
!
pushInstVar: aSmallInteger
!
pushLiteral: object
!
pushLiteralVariable: object
!
pushTemp: index kind: kind level: level
"Created: / 30-03-2009 / 14:02:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
remoteReturn
!
returnTop
!
send: selector numArgs: numArgs
"Created: / 01-12-2008 / 19:40:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
send: selector numArgs: numArgs toSuperOf: behavior
"Modified: / 01-12-2008 / 19:45:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
storeIntoLiteralVariable: index
"Created: / 11-05-2009 / 22:38:37 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
storeTemp: index kind: kind level: level
"Created: / 30-03-2009 / 14:05:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!IRInterpreter methodsFor:'interpret'!
interpret: ir
self interpretAll: ir allSequences
!
interpretAll: irSequences
irSequences do: [:seq | self interpretSequence: seq]
!
interpretInstruction: irInstruction
irInstruction executeOn: self
!
interpretSequence: instructionSequence
self label: instructionSequence orderNumber.
instructionSequence do: [:instr | self interpretInstruction: instr].
! !
!IRInterpreter class methodsFor:'documentation'!
version
^ '$Id$'
!
version_CVS
^ '§Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRInterpreter.st,v 1.3 2009/10/08 11:58:54 fm Exp §'
!
version_SVN
^ '$Id:: $'
! !