compiler/PPCInliningVisitor.st
changeset 515 b5316ef15274
parent 502 1e45d3c96ec5
child 516 3b81c9e53352
child 524 f6f68d32de73
equal deleted inserted replaced
502:1e45d3c96ec5 515:b5316ef15274
    36     ].
    36     ].
    37     ^ node
    37     ^ node
    38 !
    38 !
    39 
    39 
    40 visitActionNode: node
    40 visitActionNode: node
    41     node child markForInline.
    41     "Only mark unnamed sequence nodes for inlining.
       
    42      Named nodes should not be inlined as they should make a method.
       
    43      There's little point in inlining non-sequence nodes, so don't
       
    44      enforce inlining on those. Some (JK :-) may prefer them non-inlined
       
    45      (for debugging purposes)"
       
    46     (node child isSequenceNode and:[node child name isNil]) ifTrue: [ node child markForInline ].
    42     ^ super visitActionNode: node.
    47     ^ super visitActionNode: node.
    43 
    48 
    44     "Created: / 13-05-2015 / 16:25:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    49     "Created: / 13-05-2015 / 16:25:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    50     "Modified: / 31-07-2015 / 08:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    45 !
    51 !
    46 
    52 
    47 visitCharSetPredicateNode: node
    53 visitCharSetPredicateNode: node
    48     ^ self markForInline: node
    54     ^ self markForInline: node
    49 !
    55 !
    95 visitStarMessagePredicateNode: node
   101 visitStarMessagePredicateNode: node
    96     ^ self markForInline: node
   102     ^ self markForInline: node
    97 !
   103 !
    98 
   104 
    99 visitTokenConsumeNode: node
   105 visitTokenConsumeNode: node
   100     super visitTokenConsumeNode: node.
   106     "super visitTokenConsumeNode: node."
       
   107 
   101     node name isNil ifTrue: [ 
   108     node name isNil ifTrue: [ 
   102         self markForInline: node
   109         self flag: 'temporarily disabled'.
       
   110         "self markForInline: node"
   103     ].
   111     ].
       
   112 
   104     ^ node
   113     ^ node
   105 !
   114 !
   106 
   115 
   107 visitTokenStarMessagePredicateNode: node
   116 visitTokenStarMessagePredicateNode: node
   108     ^ self markForInline: node
   117     ^ self markForInline: node
   117     self markForInline: node.
   126     self markForInline: node.
   118     ^ node
   127     ^ node
   119 !
   128 !
   120 
   129 
   121 visitTokenizingParserNode: node
   130 visitTokenizingParserNode: node
   122     self visit: node tokenizer.
   131     "skip tokens"
       
   132     "skip whitespace"
       
   133     "self visit: node whitespace."
       
   134 
   123     self visit: node parser.
   135     self visit: node parser.
       
   136     
   124     ^ node
   137     ^ node
   125 ! !
   138 ! !
   126 
   139