Bug in oopq prevents image restart if undertaker queue not empty (#116)
Bug in oopq prevents image restart if undertaker queue not empty (#116)

* Fix #113: Stepping into method with args that ^true/false/nil, corrupts SP

* Compiler eval of simple const expressions can avoid dispatch to Smalltalk

STL uses ## expressions a lot for references to classes embedded in the
array of literals, and this makes compiling the resource methods slow.
This is a simple optimisation to speed up this particular case by avoiding
the unecessary callback into Smalltalk to execute expressions where the
result is already available to the compiler.

* Bug in oopq prevents image restart if undertaker queue not empty

The VM's OopQueue class wraps the circular buffers used for the
memory manager finalization and weak notification queues. It has to
re-establish the head and tail of the queue on image load, but has an
off-by-one error for non-empty queues and includes an empty slot (which
will contain nil) as one of the queue elements. This is benign for the
finalization queue, but causes a "nil DNU #elementsExpired:" error for the
weak notifications queue.

blairmcg/Dolphin,shoshanatech/Dolphin,shoshanatech/Dolphin,objectarts/Dolphin,blairmcg/Dolphin,shoshanatech/Dolphin,objectarts/DolphinVM,objectarts/DolphinVM,dolphinsmalltalk/Dolphin,dolphinsmalltalk/DolphinVM,jgfoster/Dolphin,jgfoster/Dolphin,blairmcg/Dolphin,jgfoster/Dolphin,dolphinsmalltalk/Dolphin,dolphinsmalltalk/Dolphin,blairmcg/Dolphin,shoshanatech/Dolphin,dolphinsmalltalk/Dolphin,objectarts/Dolphin,dolphinsmalltalk/DolphinVM,jgfoster/Dolphin