I've found a fix for something that has annoyed me for a long time - but I can't determine what it might break.1. In Workspace I evaluate the following���� �� Halt enableHaltOnce.�� ����a := 1.�� ����self halt.�� ����b := 2.�� ����self haltOnce.�� ����c := 3.�� ����Transcript show: a + b + c.��2. In the debugger after it stops at the #halt, it takes a SINGLE <Step Over> to move to d:=2 - no problem. ����3. Now <Restart> and then <Step Over> down to c:=3 and observe:* the #halt now takes EIGHT (used to be SIXTEEN) steps to traverse (ouch!)* the #haltOnce takes THREE steps to traverse (good)Tracing through for both #halt and #haltOnce��it seems that the specific conditional reference to #halt in Halt>>signalerContext is the difference! Removing that condition results in the #halt behaving like #haltOnce, taking only THREE <Step Over>s to traverse a restarted #halt.������ Halt>>signalerContext�� �� �� �� ^ signalContext findContextSuchThat: [ :context |�� �� �� �� �� �� (context receiver == self���� �� �� �� �� ����or: [ (context receiver == self class)���� �� �� �� �� ����or: [ context method selector = #halt ]]) not ]
Now #haltOnce seems to have been operating without a problem for a long timer, so presumably its okay to make #halt behave the same way.�� But this is deep stuff I don't fully understand.�� Anyone see a problem with removing that last condition?cheers -ben