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

Reply via email to