Nicolas I'm convinced marcus and clement will be definitively interested! Open tickets :). Opal is not fully polished yet. It has a nice skeleton but requires more love to really shine. This is great that it was pushed in Pharo so that we can all have a look. For us this is the infrastructure for a new generation open-compiler so this is nice to hear that from you. :)
Stef > Opal is fun. > I have a few simplifications to propose for the AST->BC OCASTTranslator > > 1) instead of testing isEffectTranslator or refining in subclass, most often > we could just let self visit the node. Indeed, self will already be either a > Translator ForEffect or ForValue. > > For example, this could apply to emitIfFalseIfTrue: emitIfNilIfNotNil: > visitCascadeNode: > > This might also remove a few useless pushNil; pop BC sequences. > > > 2) I think we can simplify the #visitBlockNode: / #visitSequenceNode: pair. > > Indeed, visitSequenceNode: tests if its parent isBlock, and if so will > emitValue, else emitEffect. > Inversely visitBlockNode: always ask to emitEffect, but since it contains a > SequenceNode, this is a big lie. > > I suggest to always let the valueTranslator emitValue visitBlockNode: and > simplify #visitSequenceNode: to just let (self visitNode: statements last). > > > 3) I suggest changing the BC generated for or: and and: > > instead of: > > valueTranslator visitNode: aMessageNode receiver. > methodBuilder > jumpAheadTo: #else if: false; > pushLiteral: true; > jumpAheadTo: #end; > jumpAheadTarget: #else. > valueTranslator visitInlinedBlockNode: aMessageNode arguments first. > methodBuilder jumpAheadTarget: #end. > > We could just use dup and thus remove a jump: > > valueTranslator visitNode: aMessageNode receiver. > methodBuilder > pushDup; > jumpAheadTo: #end if: true; > popTop. > self visitInlinedBlockNode: aMessageNode arguments first. > methodBuilder jumpAheadTarget: #end. > > ForEffect, this would just be > > self emitIfFalse: aMessageNode > > Of course, that last change might disturb the Decompiler a bit, but since we > care far less now... > > I can open 1 or more issues if there is an interest. > > Nicolas