[squeak-dev] debugging bug

Bert Freudenberg bert at freudenbergs.de
Wed Aug 22 22:56:21 UTC 2018

On Mon, 20 Aug 2018 at 16:06, Chris Muller <asqueaker at gmail.com> wrote:

> I would never have guessed that fix.  It seems better, thanks.  I
> think the ifNil: check is not quite working, it seems to "stay" on the
> assignment for two steps, then skips over the #ifNil: check.
> It does now highlight the cases its checking, which is very nice.

The debugger's highlighting is actually very simple: It looks up which
parse node has the current context's pc, and uses the source map to find
the interval (a.k.a. source range) in the source code to highlight.

This information comes from the compiler. It's parsing the source code into
a tree of parse nodes, while its encoder records their source range. Then
the compiler traverses that tree to emit byte code, recording the pc in
each node.

To fix the highlighting we just need to ensure that when the debugger stops
on a pc, that pc is actually found in the right parse node, and the node
has the right source range associated.

I was about to do a fix for ifNil etc. but I see Eliot beat me to it
in Compiler-eem.391. That's a one-line fix too, the recorded pc was just
too far ahead.

- Bert -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180822/1aac6dca/attachment.html>

More information about the Squeak-dev mailing list