... and people asking , why it has huge impact on our future :)
that's why.

On 17 April 2013 23:06, Marcus Denker <marcus.den...@inria.fr> wrote:
>
> On Apr 17, 2013, at 10:44 PM, stephane ducasse <stephane.duca...@free.fr> 
> wrote:
>
>>
>> On Apr 17, 2013, at 10:29 PM, Camillo Bruni <camillobr...@gmail.com> wrote:
>>
>>> I really really like this :)
>>>
>>> very simple yet powerful!
>>
>> Yes this will massively simplify the debugger :)
>> So we will be able to get a debugger really working without needing an 
>> magician to fix
>> its bugs.
>
> Yes, just the AST with Semantic Analysis information (Scope and Semantic 
> Variables), plus
> bytecodelevel IR that provides the bridge to the low-level pc (bytecode 
> mapping) data…
>
> e.g. to get the highlight in the debugger, this is now just this in 
> DebuggerMethodMapOpal:
>
>
> rangeForPC: aPC contextIsActiveContext: contextIsActive
>         "return the debug highlight for aPC"
>         | pc |
>
>         "When on the top of the stack the pc is pointing to right 
> instruction, but deeper in the stack
>         the pc was already advanced one bytecode, so we need to go back this 
> one bytecode, which
>         can consist of multiple bytes. But on IR, we record the *last* 
> bytecode offset as the offset of the
>         IR instruction, which means we can just go back one"
>
>         pc := contextIsActive ifTrue: [aPC] ifFalse: [aPC - 1].
>         ^(methodNode ir instructionForPC:  pc) sourceNode debugHighlightRange
>
>
>
> more helper methods will simplify this even more, e.g. we should have a method
> on RBMethodNode like #nodeForPC:
>
>
> rangeForPC: aPC contextIsActiveContext: contextIsActive
>         "return the debug highlight for aPC"
>         | pc |
>
>         "When on the top of the stack the pc is pointing to right 
> instruction, but deeper in the stack
>         the pc was already advanced one bytecode, so we need to go back this 
> one bytecode, which
>         can consist of multiple bytes. But on IR, we record the *last* 
> bytecode offset as the offset of the
>         IR instruction, which means we can just go back one"
>
>         pc := contextIsActive ifTrue: [aPC] ifFalse: [aPC - 1].
>         ^(methodNode nodeForPC:  pc) debugHighlightRange
>
>
> And this method one then can just implement on MethodContext itself.
> (Caching is handled by ASTCache).
>
>         Marcus
>
>
>



-- 
Best regards,
Igor Stasenko.

Reply via email to