Spaces:
Running
Running
| inlining | |
| doBasicInlining: inlineFlag | |
| "Inline the bodies of all methods that are suitable for inlining. | |
| This method does only the basic inlining suitable for both the core VM and plugins - no bytecode inlining etc" | |
| | pass progress max | | |
| inlineFlag ifFalse: [^self]. | |
| self collectInlineList. | |
| pass := 0. | |
| max := 12. "More than this is probably due to infinite recursion" | |
| progress := true. | |
| [progress] whileTrue: [ | |
| "repeatedly attempt to inline methods until no further progress is made" | |
| progress := false. | |
| pass > max | |
| ifTrue: [self notify: 'too many inlining steps, inlining terminated'] | |
| ifFalse: [('Inlining pass ', (pass := pass + 1) printString, '...') | |
| displayProgressAt: Sensor cursorPoint | |
| from: 0 to: methods size | |
| during: [:bar | | |
| (self sortMethods: methods) doWithIndex: [:m :i | | |
| bar value: i. | |
| currentMethod := m. | |
| (m tryToInlineMethodsIn: self) | |
| ifTrue: [progress := true]]]]]. | |