We merged 18 PRs Lots of improvements related to BlockClosures this week.
First some helper methods on the AST: - #hasNonLocalReturn: check if there is a non-local return - #isConstant: Blocks of the kind [#justSomeLiteral] - #constantValue: return that literal (and nil for empty [] ) - #numArgs for RBBlockNode, as we have already for BlockClosure "[:a | ] sourceNode numArgs" Some improvements for isClean: - unify between AST and BlockClosure - more tests - inlined blocks can be clean, important as it is recursive: [true ifTrue: []] should be clean - cleanup code in CleanBlock, receiver is known to be nil Compiler support for ConstantBlockClosure: - We can specialize clean blocks of the kind [#justSomeLiteral] to execute faster - add ConstantBlockClosure, add compiler support, active when compiling with clean blocks enabled Compiler support for full block without outer context: - we only need the outerContext for non-local returns. - add support to IRBuilder for full blocks without outer context - implement compiler support (option #optionBlockClosureOptionalOuter, false for now) Quick return for Blocks: - Compile quickreturn for CompiledBlock, just like CompiledMethod (e.g. for [^1]). - speeds up execution a little (but of course not creation) Block Closures ============== - AST: add a recursive #hasNonLocalReturn and #isConstant #11882 https://github.com/pharo-project/pharo/pull/11882 - add #numArgs to RBBlockNode #11902 https://github.com/pharo-project/pharo/pull/11902 - CleanBlock cleanup code: there should be no receiver ivar #11884 https://github.com/pharo-project/pharo/pull/11884 - 11881-RBBlockNodeisClean-takes-every-optimized-block-to-be-not-clean #11890 https://github.com/pharo-project/pharo/pull/11890 - 1883-CleanBlockChecker-does-not-recurse-into-the-blocks #11900 https://github.com/pharo-project/pharo/pull/11900 - ConstantBlockClosure: active when compiling with clean blocks enabled #11894 https://github.com/pharo-project/pharo/pull/11894 - CompiledBlocks: compile quick returns #11907 https://github.com/pharo-project/pharo/pull/11907 - IRBuilder: add support for outerContext flag for Closure creation #11905 https://github.com/pharo-project/pharo/pull/11905 - 11911-Compiler-add-compiler-option-for-outerContextNeeded #11917 https://github.com/pharo-project/pharo/pull/11917 Fixes ===== - Register-as-basicInspector #431 https://github.com/pharo-spec/NewTools/pull/431 - 11803 return value of inspect should be the receiver and not a sp window presenter #11886 https://github.com/pharo-project/pharo/pull/11886 - Fixes #429, VersionBrowser: left pane empty #430 https://github.com/pharo-spec/NewTools/pull/430 - Turn off ReLongMethodsRule for test methods #11892 https://github.com/pharo-project/pharo/pull/11892 - ClassParser: Implement #asSlot to return a correct Slot instances for complex slots #11898 https://github.com/pharo-project/pharo/pull/11898 - Fixes #11802 - Adds full consistency checks to class Time #11891 https://github.com/pharo-project/pharo/pull/11891 - Fixing to correctly get the VM for running the tests #11897 https://github.com/pharo-project/pharo/pull/11897 - Fixes #429, VersionBrowser: left pane empty #430 https://github.com/pharo-spec/NewTools/pull/430 Cleanup ======= - 11810-FT2Handle-classstartUp-compiled-code-on-image-startup #11811 https://github.com/pharo-project/pharo/pull/11811 Comments ========= - fixing comments in package Regex #11888 https://github.com/pharo-project/pharo/pull/11888