We had an experimental capabilities allowing something like
child (A or new something ())
to work so that so "A or new someting ()) would first be evaluated on all
child nodes without the allocator as to try to find a match without
allocating, then with the allocator. This ended up only serving very
specific cases - being overall confusing and complicating the code. This
capability is now removed, and the above can be easily refactored into a
more explicit expression:
child (A) or child (new something ())
This uncovered a few hidden errors in the management of frames and
frame contexts:
- Pop_Frame_Context was missing when capturing a closure
- Top_Object was not updated when pushing or popping a frame
- Top_Oject was not properly retreived in function calls