On 25 Nov 2013, at 17:56, Clément Bera <bera.clem...@gmail.com> wrote:
> Yeah you cannot compile without inlining specific messages. You can disable > inlining of #timesRepeat: at image level because we added it for fun to see > if it was easy to do in Opal. Now all other optimizations were in the old > compiler and are mandatories. However, you can now in Opal disable these > optimized messages in a restricted area (such as a class and its subclasses). > > To me, it is kind of a bug that we cannot disable those optimizations, we > should be able to do it (so 1 day in the very very far future we could have > the JIT inlining these control structure allowing us to implement all these > inlined messages in all classes). But one thing is that some methods such as > #whileTrue are not implemented in a way they really work (they have not stop > condition, so if the compiler does not inline it, it gives you an infinite > loop). Another thing is the interrupt point problem as Marcus said. > > I don't think your other bug is related Opal optimization, only #timesRepeat: > is new and therefore can be faulty (and in this case, the bytecode is > correct, so I guess it is faulty because it removes an interrupt point). It is a bit scary that there is no explicit, crystal clear list of those interrupt critical points, especially if skipping them can lead to VM crashes. > 2013/11/25 Marcus Denker <marcus.den...@inria.fr> > > On 25 Nov 2013, at 16:26, Max Leske <maxle...@gmail.com> wrote: > > > Thanks Clément, that seems to be it. Disabling the timesRepeat inlining > > makes most of the builds run through but not all of them. It seems like > > there’s another (Opal related?) problem (with the exact same symptoms…). > > > > I’ve tried disabling all options, just to see what happens: all builds fail > > with SegFaults… > > You can not compile without optimisations. There are places in the image that > would not work with e.g. whileTrue: optimisation disabled as it would e.g. > add an interrupt point where none is now > And other things, like performance, or e.g. the loop that goes over all > objects, if that creates objects while running you have a problem… > > Marcus >