Reduced dependencies to only stx:libbasic and stx:libcomp.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Oct 2014 22:42:40 +0000
changeset 4504a50b0d540a
parent 44 840c68a91cdd
child 46 2fb37cf149fb
Reduced dependencies to only stx:libbasic and stx:libcomp.

The latter will wanish as soon as actual bytecode assemby is implemented.
IRDecompiler.st
IRFunction.st
Make.proto
Make.spec
bc.mak
ctu_ircompiler.st
ircompiler.rc
libInit.cc
tests/tests.rc
     1.1 --- a/IRDecompiler.st	Thu Oct 30 22:27:09 2014 +0000
     1.2 +++ b/IRDecompiler.st	Thu Oct 30 22:42:40 2014 +0000
     1.3 @@ -49,61 +49,65 @@
     1.4  !
     1.5  
     1.6  decompileIR: ir 
     1.7 -	| sequenceNode temps args goto seq value method |
     1.8 -	scope isBlockScope 
     1.9 -		ifTrue:[(scope addTemp: 'parent env') markArg]
    1.10 -		ifFalse:[(scope addTemp: 'self') markArg].
    1.11 -	ir tempKeys do: [:temp | scope tempVarAt: temp].
    1.12 -	0 to: ir numRargs - 1 do: [:i | (scope tempVarAt: i) markArg].
    1.13 -	self interpret: ir.
    1.14 -	
    1.15 -	self addTempToScope: ir.
    1.16 -	self label: #return.
    1.17 -	self Label: #return.
    1.18 -	(self endCase: #lastReturn) ifFalse:[self Label: #return.].
    1.19 -	goto := self Goto.
    1.20 -	value := self ValueOrNone.
    1.21 -	seq := self Sequence.
    1.22 -	self removeClosureCreation: seq.
    1.23 -	sp = 1 ifFalse: [stack explore. self error: 'error'].
    1.24 -	value ifNotNil: [seq addNode: value].
    1.25 -	sequenceNode := (self newBlock: seq return: goto) body.
    1.26 -	temps := scope compactIndexTemps asArray.
    1.27 -	ir tempKeys: temps.
    1.28 -	args := (temps first: ir numRargs) allButFirst.
    1.29 -	args := args collect: [:var | self newVar: var].
    1.30 -	temps := temps allButFirst: ir numRargs.
    1.31 -	sequenceNode temporaries: (temps collect: [:var | self newVar: var]), 
    1.32 -		((scope capturedVars select:[:var | var name ~= 'self' and: [var sourceTemp == nil]]) 
    1.33 -			collect:[:var | self newVar: var]).
    1.34 -	method := (RBMethodNode new)
    1.35 -				selectorParts: (self 
    1.36 -							newSelectorParts: (self class dummySelector: args size));
    1.37 -				arguments: args;
    1.38 -				body: sequenceNode;
    1.39 -				primitiveNode: ir primitiveNode;
    1.40 -				scope: scope.
    1.41 -	sequenceNode parent: method.
    1.42 -	Preferences compileBlocksAsClosures 
    1.43 -		ifFalse: [ASTFixDecompileBlockScope new visitNode: method].
    1.44 -	^ method
    1.45 +"/        | sequenceNode temps args goto seq value method |
    1.46 +"/        scope isBlockScope 
    1.47 +"/                ifTrue:[(scope addTemp: 'parent env') markArg]
    1.48 +"/                ifFalse:[(scope addTemp: 'self') markArg].
    1.49 +"/        ir tempKeys do: [:temp | scope tempVarAt: temp].
    1.50 +"/        0 to: ir numRargs - 1 do: [:i | (scope tempVarAt: i) markArg].
    1.51 +"/        self interpret: ir.
    1.52 +"/        
    1.53 +"/        self addTempToScope: ir.
    1.54 +"/        self label: #return.
    1.55 +"/        self Label: #return.
    1.56 +"/        (self endCase: #lastReturn) ifFalse:[self Label: #return.].
    1.57 +"/        goto := self Goto.
    1.58 +"/        value := self ValueOrNone.
    1.59 +"/        seq := self Sequence.
    1.60 +"/        self removeClosureCreation: seq.
    1.61 +"/        sp = 1 ifFalse: [stack explore. self error: 'error'].
    1.62 +"/        value ifNotNil: [seq addNode: value].
    1.63 +"/        sequenceNode := (self newBlock: seq return: goto) body.
    1.64 +"/        temps := scope compactIndexTemps asArray.
    1.65 +"/        ir tempKeys: temps.
    1.66 +"/        args := (temps first: ir numRargs) allButFirst.
    1.67 +"/        args := args collect: [:var | self newVar: var].
    1.68 +"/        temps := temps allButFirst: ir numRargs.
    1.69 +"/        sequenceNode temporaries: (temps collect: [:var | self newVar: var]), 
    1.70 +"/                ((scope capturedVars select:[:var | var name ~= 'self' and: [var sourceTemp == nil]]) 
    1.71 +"/                        collect:[:var | self newVar: var]).
    1.72 +"/        method := (RBMethodNode new)
    1.73 +"/                                selectorParts: (self 
    1.74 +"/                                                        newSelectorParts: (self class dummySelector: args size));
    1.75 +"/                                arguments: args;
    1.76 +"/                                body: sequenceNode;
    1.77 +"/                                primitiveNode: ir primitiveNode;
    1.78 +"/                                scope: scope.
    1.79 +"/        sequenceNode parent: method.
    1.80 +"/        Preferences compileBlocksAsClosures 
    1.81 +"/                ifFalse: [ASTFixDecompileBlockScope new visitNode: method].
    1.82 +"/        ^ method
    1.83 +
    1.84 +    "Modified: / 30-10-2014 / 22:36:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    1.85  !
    1.86  
    1.87  removeClosureCreation: seq 
    1.88 -	(Preferences compileBlocksAsClosures 
    1.89 -		and: [seq statements size > 0]
    1.90 -		and: [seq statements first isClosureEnvironmentCreation]) ifTrue: [
    1.91 -			seq statements removeFirst.
    1.92 -			(seq statements size > 0
    1.93 -				and: [seq statements first isClosureEnvironmentRegistration])
    1.94 -				ifTrue: [seq statements removeFirst]].
    1.95 -			
    1.96 -	[Preferences compileBlocksAsClosures
    1.97 -		and: [seq statements size > 0]
    1.98 -		and: [seq statements first isClosureRegistrationAndCreation
    1.99 -			or: [seq statements first isSelfClosureRegistration]
   1.100 -			or: [seq statements first isTempClosureRegistration]]]
   1.101 -					whileTrue: [seq statements removeFirst]
   1.102 +        ("Preferences compileBlocksAsClosures"true
   1.103 +                and: [seq statements size > 0]
   1.104 +                and: [seq statements first isClosureEnvironmentCreation]) ifTrue: [
   1.105 +                        seq statements removeFirst.
   1.106 +                        (seq statements size > 0
   1.107 +                                and: [seq statements first isClosureEnvironmentRegistration])
   1.108 +                                ifTrue: [seq statements removeFirst]].
   1.109 +                        
   1.110 +        ["Preferences compileBlocksAsClosures"true
   1.111 +                and: [seq statements size > 0]
   1.112 +                and: [seq statements first isClosureRegistrationAndCreation
   1.113 +                        or: [seq statements first isSelfClosureRegistration]
   1.114 +                        or: [seq statements first isTempClosureRegistration]]]
   1.115 +                                        whileTrue: [seq statements removeFirst]
   1.116 +
   1.117 +    "Modified: / 30-10-2014 / 22:37:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.118  !
   1.119  
   1.120  scope: aLexicalScope
   1.121 @@ -235,7 +239,7 @@
   1.122                  ^self cascade] on: Abort do:[^false]
   1.123          ].
   1.124  
   1.125 -        Preferences compileBlocksAsClosures 
   1.126 +        "Preferences compileBlocksAsClosures"true
   1.127                          ifTrue: [ (rcvr isLiteral and: [selector = #createBlock:]) ifTrue: [
   1.128                                           ^ self block: rcvr value env: args first]]
   1.129                          ifFalse: [ (selector = #blockCopy:) ifTrue: [
   1.130 @@ -247,6 +251,7 @@
   1.131                  arguments: args)).
   1.132  
   1.133      "Created: / 01-12-2008 / 19:40:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
   1.134 +    "Modified: / 30-10-2014 / 22:38:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.135  !
   1.136  
   1.137  send: selector numArgs: numArgs toSuperOf: behavior
   1.138 @@ -383,14 +388,17 @@
   1.139  !IRDecompiler methodsFor:'priv instructions'!
   1.140  
   1.141  addReturn: statements from: goto
   1.142 +"/    |  |
   1.143  
   1.144 -		| ret |
   1.145 -		statements last isReturn ifTrue:[^self].
   1.146 -		ret := RBReturnNode value: statements last.
   1.147 -		Preferences compileBlocksAsClosures ifTrue:[
   1.148 -			scope isHome ifFalse: [ret homeBinding: scope outerEnvScope thisEnvVar]].
   1.149 -		goto mapInstr sourceNode: ret.
   1.150 -		statements atLast: 1 put: ret.
   1.151 +    self error: 'IRDecompiler is an unfinished code'.    
   1.152 +"/    statements last isReturn ifTrue:[^self].
   1.153 +"/    ret := RBReturnNode value: statements last.
   1.154 +"/    Preferences compileBlocksAsClosures ifTrue:[
   1.155 +"/            scope isHome ifFalse: [ret homeBinding: scope outerEnvScope thisEnvVar]].
   1.156 +"/    goto mapInstr sourceNode: ret.
   1.157 +"/    statements atLast: 1 put: ret.
   1.158 +
   1.159 +    "Modified: / 30-10-2014 / 22:35:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.160  !
   1.161  
   1.162  block: method env: envRefNode
   1.163 @@ -779,55 +787,57 @@
   1.164  
   1.165  endToDo: seqNum
   1.166  
   1.167 -	| start limit incr iter step loopBlock o if test limitExpr init |
   1.168 -	[
   1.169 -		start := self Goto destination.
   1.170 -		limit := self Value.
   1.171 -		incr := self Assignment.
   1.172 -		iter := incr variable.
   1.173 -		(incr value isMessage and:
   1.174 -		 [incr value selector == #+ and:
   1.175 -		  [incr value receiver isVariable and: 
   1.176 -		   [incr value receiver binding == iter binding]]]
   1.177 -		) ifFalse: [self abort].
   1.178 -		step := incr value arguments first.
   1.179 -		loopBlock := self Sequence.
   1.180 -		o := self Label destination.
   1.181 -		if := self IfGoto: seqNum otherwise: o.
   1.182 -		test := self Value.
   1.183 -		(test isMessage and:
   1.184 -		 [(test selector == #<= or: [test selector == #>=]) and:
   1.185 -		  [(valueLabelMap at: test arguments first ifAbsent: [self abort]) destination = start]]
   1.186 -		) ifFalse: [self abort].
   1.187 -		limitExpr := test arguments first.
   1.188 -		limitExpr isAssignment ifTrue: [
   1.189 -			(limitExpr variable binding index == limit binding index 
   1.190 -				and:[limitExpr variable binding scope == limit binding scope]) ifFalse: [self abort].
   1.191 -			limitExpr := limitExpr value.
   1.192 -		].
   1.193 -		init := test receiver.
   1.194 -		(init isAssignment and: [init variable binding == iter binding])
   1.195 -			ifFalse: [self abort].
   1.196 -	] on: Abort do: [^ false].
   1.197 -	limit isVariable 
   1.198 -		ifTrue:[scope 
   1.199 -			removeTemp: limit binding 
   1.200 -			ifAbsent:[Preferences compileBlocksAsClosures 
   1.201 -				ifFalse:[scope removeTempFromOldBlock: limit]]].
   1.202 -	loopBlock := self newBlock: loopBlock.
   1.203 -	loopBlock arguments: {iter}.
   1.204 -	self stackPush: ((step isLiteral: [:c | c = 1])
   1.205 -		ifTrue: [RBMessageNode
   1.206 -				receiver: init value
   1.207 -				selector: #to:do:
   1.208 -				arguments: {limitExpr. loopBlock}]
   1.209 -		ifFalse: [RBMessageNode
   1.210 -				receiver: init value
   1.211 -				selector: #to:by:do:
   1.212 -				arguments: {limitExpr. step. loopBlock}]).
   1.213 -	self popTop.
   1.214 -	self goto: seqNum.
   1.215 -	^ true
   1.216 +        | start limit incr iter step loopBlock o if test limitExpr init |
   1.217 +        [
   1.218 +                start := self Goto destination.
   1.219 +                limit := self Value.
   1.220 +                incr := self Assignment.
   1.221 +                iter := incr variable.
   1.222 +                (incr value isMessage and:
   1.223 +                 [incr value selector == #+ and:
   1.224 +                  [incr value receiver isVariable and: 
   1.225 +                   [incr value receiver binding == iter binding]]]
   1.226 +                ) ifFalse: [self abort].
   1.227 +                step := incr value arguments first.
   1.228 +                loopBlock := self Sequence.
   1.229 +                o := self Label destination.
   1.230 +                if := self IfGoto: seqNum otherwise: o.
   1.231 +                test := self Value.
   1.232 +                (test isMessage and:
   1.233 +                 [(test selector == #<= or: [test selector == #>=]) and:
   1.234 +                  [(valueLabelMap at: test arguments first ifAbsent: [self abort]) destination = start]]
   1.235 +                ) ifFalse: [self abort].
   1.236 +                limitExpr := test arguments first.
   1.237 +                limitExpr isAssignment ifTrue: [
   1.238 +                        (limitExpr variable binding index == limit binding index 
   1.239 +                                and:[limitExpr variable binding scope == limit binding scope]) ifFalse: [self abort].
   1.240 +                        limitExpr := limitExpr value.
   1.241 +                ].
   1.242 +                init := test receiver.
   1.243 +                (init isAssignment and: [init variable binding == iter binding])
   1.244 +                        ifFalse: [self abort].
   1.245 +        ] on: Abort do: [^ false].
   1.246 +        limit isVariable 
   1.247 +                ifTrue:[scope 
   1.248 +                        removeTemp: limit binding 
   1.249 +                        ifAbsent:["Preferences compileBlocksAsClosures"true
   1.250 +                                ifFalse:[scope removeTempFromOldBlock: limit]]].
   1.251 +        loopBlock := self newBlock: loopBlock.
   1.252 +        loopBlock arguments: {iter}.
   1.253 +        self stackPush: ((step isLiteral: [:c | c = 1])
   1.254 +                ifTrue: [RBMessageNode
   1.255 +                                receiver: init value
   1.256 +                                selector: #to:do:
   1.257 +                                arguments: {limitExpr. loopBlock}]
   1.258 +                ifFalse: [RBMessageNode
   1.259 +                                receiver: init value
   1.260 +                                selector: #to:by:do:
   1.261 +                                arguments: {limitExpr. step. loopBlock}]).
   1.262 +        self popTop.
   1.263 +        self goto: seqNum.
   1.264 +        ^ true
   1.265 +
   1.266 +    "Modified: / 30-10-2014 / 22:37:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.267  !
   1.268  
   1.269  endWhile2: seqNum
   1.270 @@ -923,11 +933,13 @@
   1.271  
   1.272  isExplicitReturn: goto
   1.273  
   1.274 -	Preferences compileBlocksAsClosures 
   1.275 -		ifTrue:[^ goto isRet 
   1.276 -			and: [goto mapInstr notNil] 
   1.277 -			and: [goto mapInstr isRemote or: [scope isBlockScope not]]]
   1.278 -		ifFalse: [^goto isRet and: [goto mapInstr isBlockReturnTop not]]
   1.279 +        "Preferences compileBlocksAsClosures"true
   1.280 +                ifTrue:[^ goto isRet 
   1.281 +                        and: [goto mapInstr notNil] 
   1.282 +                        and: [goto mapInstr isRemote or: [scope isBlockScope not]]]
   1.283 +                ifFalse: [^goto isRet and: [goto mapInstr isBlockReturnTop not]]
   1.284 +
   1.285 +    "Modified: / 30-10-2014 / 22:37:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.286  !
   1.287  
   1.288  mapNode: node
   1.289 @@ -945,16 +957,18 @@
   1.290  
   1.291  newBlock: sequence return: goto
   1.292  
   1.293 -	| statements block |
   1.294 -	statements := sequence statements.
   1.295 -	(goto notNil and: [self isExplicitReturn: goto]) ifTrue: [
   1.296 -		self addReturn: statements from: goto
   1.297 -	].
   1.298 -	sequence statements: statements.
   1.299 -	block := RBBlockNode body: sequence.
   1.300 -	sequence parent: block.
   1.301 -	Preferences compileBlocksAsClosures ifFalse: [block scope: scope].
   1.302 -	^block
   1.303 +        | statements block |
   1.304 +        statements := sequence statements.
   1.305 +        (goto notNil and: [self isExplicitReturn: goto]) ifTrue: [
   1.306 +                self addReturn: statements from: goto
   1.307 +        ].
   1.308 +        sequence statements: statements.
   1.309 +        block := RBBlockNode body: sequence.
   1.310 +        sequence parent: block.
   1.311 +        "Preferences compileBlocksAsClosures"true ifFalse: [block scope: scope].
   1.312 +        ^block
   1.313 +
   1.314 +    "Modified: / 30-10-2014 / 22:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   1.315  !
   1.316  
   1.317  newLiteral: literal
     2.1 --- a/IRFunction.st	Thu Oct 30 22:27:09 2014 +0000
     2.2 +++ b/IRFunction.st	Thu Oct 30 22:42:40 2014 +0000
     2.3 @@ -172,13 +172,16 @@
     2.4  !IRFunction methodsFor:'debugging support'!
     2.5  
     2.6  inspector2TabIRCode
     2.7 +    <inspector2Tab>
     2.8  
     2.9 -    ^Tools::Inspector2Tab new
    2.10 -	label: 'IR Code';
    2.11 -	priority: 75;
    2.12 -	view: ((ScrollableView for:TextView) contents: self longPrintString; yourself)
    2.13 +    ^(Smalltalk at: #Tools::Inspector2Tab) new
    2.14 +        label: 'IR Code';
    2.15 +        priority: 75;
    2.16 +        text: [ self longPrintString ];
    2.17 +        yourself
    2.18  
    2.19      "Created: / 11-06-2008 / 01:05:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
    2.20 +    "Modified: / 30-10-2014 / 22:33:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    2.21  ! !
    2.22  
    2.23  !IRFunction methodsFor:'decompiling'!
     3.1 --- a/Make.proto	Thu Oct 30 22:27:09 2014 +0000
     3.2 +++ b/Make.proto	Thu Oct 30 22:42:40 2014 +0000
     3.3 @@ -34,7 +34,7 @@
     3.4  # add the path(es) here:,
     3.5  # ********** OPTIONAL: MODIFY the next lines ***
     3.6  # LOCALINCLUDES=-Ifoo -Ibar
     3.7 -LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libcomp -I$(INCLUDE_TOP)/stx/libcompat -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libwidg
     3.8 +LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libcomp
     3.9  
    3.10  
    3.11  # if you need any additional defines for embedded C code,
    3.12 @@ -155,7 +155,6 @@
    3.13  $(OUTDIR)IRAccess.$(O) IRAccess.$(H): IRAccess.st $(INCLUDE_TOP)/ctu/ircompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.14  $(OUTDIR)IRClosure.$(O) IRClosure.$(H): IRClosure.st $(INCLUDE_TOP)/ctu/ircompiler/IRFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.15  $(OUTDIR)IRConstant.$(O) IRConstant.$(H): IRConstant.st $(INCLUDE_TOP)/ctu/ircompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.16 -$(OUTDIR)IRDecompiler.$(O) IRDecompiler.$(H): IRDecompiler.st $(INCLUDE_TOP)/ctu/ircompiler/IRInterpreter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.17  $(OUTDIR)IRDup.$(O) IRDup.$(H): IRDup.st $(INCLUDE_TOP)/ctu/ircompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.18  $(OUTDIR)IRJump.$(O) IRJump.$(H): IRJump.st $(INCLUDE_TOP)/ctu/ircompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    3.19  $(OUTDIR)IRLine.$(O) IRLine.$(H): IRLine.st $(INCLUDE_TOP)/ctu/ircompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     4.1 --- a/Make.spec	Thu Oct 30 22:27:09 2014 +0000
     4.2 +++ b/Make.spec	Thu Oct 30 22:42:40 2014 +0000
     4.3 @@ -61,7 +61,6 @@
     4.4  	IRAccess \
     4.5  	IRClosure \
     4.6  	IRConstant \
     4.7 -	IRDecompiler \
     4.8  	IRDup \
     4.9  	IRJump \
    4.10  	IRLine \
    4.11 @@ -99,7 +98,6 @@
    4.12      $(OUTDIR_SLASH)IRAccess.$(O) \
    4.13      $(OUTDIR_SLASH)IRClosure.$(O) \
    4.14      $(OUTDIR_SLASH)IRConstant.$(O) \
    4.15 -    $(OUTDIR_SLASH)IRDecompiler.$(O) \
    4.16      $(OUTDIR_SLASH)IRDup.$(O) \
    4.17      $(OUTDIR_SLASH)IRJump.$(O) \
    4.18      $(OUTDIR_SLASH)IRLine.$(O) \
     5.1 --- a/bc.mak	Thu Oct 30 22:27:09 2014 +0000
     5.2 +++ b/bc.mak	Thu Oct 30 22:42:40 2014 +0000
     5.3 @@ -34,7 +34,7 @@
     5.4  
     5.5  
     5.6  
     5.7 -LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libcomp -I$(INCLUDE_TOP)\stx\libcompat -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libwidg
     5.8 +LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libcomp
     5.9  LOCALDEFINES=
    5.10  
    5.11  STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
    5.12 @@ -79,7 +79,6 @@
    5.13  $(OUTDIR)IRAccess.$(O) IRAccess.$(H): IRAccess.st $(INCLUDE_TOP)\ctu\ircompiler\IRInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.14  $(OUTDIR)IRClosure.$(O) IRClosure.$(H): IRClosure.st $(INCLUDE_TOP)\ctu\ircompiler\IRFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.15  $(OUTDIR)IRConstant.$(O) IRConstant.$(H): IRConstant.st $(INCLUDE_TOP)\ctu\ircompiler\IRInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.16 -$(OUTDIR)IRDecompiler.$(O) IRDecompiler.$(H): IRDecompiler.st $(INCLUDE_TOP)\ctu\ircompiler\IRInterpreter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.17  $(OUTDIR)IRDup.$(O) IRDup.$(H): IRDup.st $(INCLUDE_TOP)\ctu\ircompiler\IRInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.18  $(OUTDIR)IRJump.$(O) IRJump.$(H): IRJump.st $(INCLUDE_TOP)\ctu\ircompiler\IRInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    5.19  $(OUTDIR)IRLine.$(O) IRLine.$(H): IRLine.st $(INCLUDE_TOP)\ctu\ircompiler\IRInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
     6.1 --- a/ctu_ircompiler.st	Thu Oct 30 22:27:09 2014 +0000
     6.2 +++ b/ctu_ircompiler.st	Thu Oct 30 22:42:40 2014 +0000
     6.3 @@ -21,7 +21,10 @@
     6.4       my classes is considered to be a prerequisite package."
     6.5  
     6.6      ^ #(
     6.7 +        #'stx:goodies/refactoryBrowser/parser'    "RBArrayNode - referenced by IRDecompiler>>endCase:"
     6.8      )
     6.9 +
    6.10 +    "Modified: / 30-10-2014 / 22:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    6.11  !
    6.12  
    6.13  mandatoryPreRequisites
    6.14 @@ -46,10 +49,6 @@
    6.15       by searching all classes (and their packages) which are referenced by my classes."
    6.16  
    6.17      ^ #(
    6.18 -        #'stx:goodies/refactoryBrowser/parser'    "RBArrayNode - referenced by IRDecompiler>>endCase:"
    6.19 -        #'stx:libcompat'    "Preferences - referenced by IRDecompiler>>addReturn:from:"
    6.20 -        #'stx:libtool'    "Tools::Inspector2Tab - referenced by IRFunction>>inspector2TabIRCode"
    6.21 -        #'stx:libwidg'    "ScrollableView - referenced by IRFunction>>inspector2TabIRCode"
    6.22      )
    6.23  !
    6.24  
    6.25 @@ -84,7 +83,7 @@
    6.26          IRAccess
    6.27          IRClosure
    6.28          IRConstant
    6.29 -        IRDecompiler
    6.30 +        (IRDecompiler autoload)
    6.31          IRDup
    6.32          IRJump
    6.33          IRLine
     7.1 --- a/ircompiler.rc	Thu Oct 30 22:27:09 2014 +0000
     7.2 +++ b/ircompiler.rc	Thu Oct 30 22:42:40 2014 +0000
     7.3 @@ -25,7 +25,7 @@
     7.4        VALUE "LegalCopyright", "Copyright Jan Vrany & Mathieu Suen 2008\0"
     7.5        VALUE "ProductName", "NewCompiler\0"
     7.6        VALUE "ProductVersion", "6.2.4.0\0"
     7.7 -      VALUE "ProductDate", "Thu, 30 Oct 2014 22:24:49 GMT\0"
     7.8 +      VALUE "ProductDate", "Thu, 30 Oct 2014 22:40:10 GMT\0"
     7.9      END
    7.10  
    7.11    END
     8.1 --- a/libInit.cc	Thu Oct 30 22:27:09 2014 +0000
     8.2 +++ b/libInit.cc	Thu Oct 30 22:42:40 2014 +0000
     8.3 @@ -38,7 +38,6 @@
     8.4  _IRAccess_Init(pass,__pRT__,snd);
     8.5  _IRClosure_Init(pass,__pRT__,snd);
     8.6  _IRConstant_Init(pass,__pRT__,snd);
     8.7 -_IRDecompiler_Init(pass,__pRT__,snd);
     8.8  _IRDup_Init(pass,__pRT__,snd);
     8.9  _IRJump_Init(pass,__pRT__,snd);
    8.10  _IRLine_Init(pass,__pRT__,snd);
     9.1 --- a/tests/tests.rc	Thu Oct 30 22:27:09 2014 +0000
     9.2 +++ b/tests/tests.rc	Thu Oct 30 22:42:40 2014 +0000
     9.3 @@ -25,7 +25,7 @@
     9.4        VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
     9.5        VALUE "ProductName", "LibraryName\0"
     9.6        VALUE "ProductVersion", "6.2.4.0\0"
     9.7 -      VALUE "ProductDate", "Thu, 30 Oct 2014 22:24:51 GMT\0"
     9.8 +      VALUE "ProductDate", "Thu, 30 Oct 2014 22:40:12 GMT\0"
     9.9      END
    9.10  
    9.11    END