13 messages in org.perl.perl5-portersRe: Find the line number of the curre...
FromSent OnAttachments
Tim BunceMay 2, 2007 4:56 pm 
Artur BergmanMay 2, 2007 6:59 pm 
Dave MitchellMay 3, 2007 3:43 am 
Paul JohnsonMay 3, 2007 4:07 am 
Tim BunceMay 3, 2007 4:15 am 
Artur BergmanMay 3, 2007 10:34 am 
Artur BergmanMay 3, 2007 10:49 am 
Tim BunceMay 3, 2007 1:46 pm 
Tim BunceAug 8, 2007 6:13 am 
Tim BunceAug 8, 2007 6:33 am 
Dave MitchellAug 8, 2007 8:33 am 
Tim BunceJul 16, 2008 2:59 pm 
Paul JohnsonJul 17, 2008 2:48 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Find the line number of the current block from XS code?Actions...
From:Tim Bunce (Tim.@pobox.com)
Date:May 3, 2007 4:15:03 am
List:org.perl.perl5-porters

On Wed, May 02, 2007 at 06:59:27PM -0700, Artur Bergman wrote:

On May 2, 2007, at 4:56 PM, Tim Bunce wrote:

I'm not very familar with this part of perl guts...

How can I find the line number of the start of the current block/ scope? Or, more likely, the line number of the first statement in the block/scope?

This is with the -d option, so PL_perldb would be set.

Of the top of my head, PL_curop>

just guessing at CopLINE(PL_copline)

Umm. PL_copline looks like it's compile-time only. And CopLINE(PL_curop) gives the line number of the current statement, not the first statement of the current block/scope.

With a bit of digging the nearest I've seen (or guessed at) so far is CopLINE(cxstack[cxstack_ix].blk_oldcop) which I think will give me the line number of the start of the current subroutine, eval, or loop.

Right?

Loop level would be handy but I'd still like to get down to block/scope level.

Tim.