compiler/PPCInliningVisitor.st
changeset 534 a949c4fe44df
parent 532 132d7898a2a1
equal deleted inserted replaced
533:666372dbe307 534:a949c4fe44df
     1 "{ Package: 'stx:goodies/petitparser/compiler' }"
     1 "{ Package: 'stx:goodies/petitparser/compiler' }"
     2 
     2 
     3 "{ NameSpace: Smalltalk }"
     3 "{ NameSpace: Smalltalk }"
     4 
     4 
     5 PPCPass subclass:#PPCInliningVisitor
     5 PPCPassVisitor subclass:#PPCInliningVisitor
     6 	instanceVariableNames:'canInline acceptedNodes'
     6 	instanceVariableNames:'canInline acceptedNodes'
     7 	classVariableNames:''
     7 	classVariableNames:''
     8 	poolDictionaries:''
     8 	poolDictionaries:''
     9 	category:'PetitCompiler-Visitors'
     9 	category:'PetitCompiler-Visitors'
    10 !
    10 !
    11 
    11 
    12 
    12 
    13 !PPCInliningVisitor methodsFor:'initialization'!
    13 !PPCInliningVisitor methodsFor:'initialization'!
    14 
    14 
    15 initialize
    15 initialize
    16     super 	initialize.
    16     super initialize.        
    17         
       
    18     acceptedNodes := 0
    17     acceptedNodes := 0
       
    18 
       
    19     "Modified (format): / 29-08-2015 / 07:40:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    19 ! !
    20 ! !
    20 
    21 
    21 !PPCInliningVisitor methodsFor:'testing'!
    22 !PPCInliningVisitor methodsFor:'testing'!
    22 
    23 
    23 canInline
    24 canInline
   101 
   102 
   102 visitStarMessagePredicateNode: node
   103 visitStarMessagePredicateNode: node
   103     ^ self markForInline: node
   104     ^ self markForInline: node
   104 !
   105 !
   105 
   106 
   106 visitTokenConsumeNode: node
       
   107     "super visitTokenConsumeNode: node."
       
   108 
       
   109     node name isNil ifTrue: [ 
       
   110         self markForInline: node
       
   111     ].
       
   112 
       
   113     ^ node
       
   114 !
       
   115 
       
   116 visitTokenStarMessagePredicateNode: node
   107 visitTokenStarMessagePredicateNode: node
   117     ^ self markForInline: node
   108     ^ self markForInline: node
   118 !
   109 !
   119 
   110 
   120 visitTokenStarSeparatorNode: node
   111 visitTokenStarSeparatorNode: node