This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add op_comp field to regexp_engine API
authorDavid Mitchell <davem@iabyn.com>
Tue, 13 Dec 2011 12:00:12 +0000 (12:00 +0000)
committerDavid Mitchell <davem@iabyn.com>
Wed, 13 Jun 2012 12:32:47 +0000 (13:32 +0100)
commit3c13cae629d936c43bca9d992cc445d93287af8e
tree9263b480e25f43e75b0f9a6cfb160579e3588571
parent3b16d10d72cd916e1907c4161cc52322040c227a
add op_comp field to regexp_engine API

Perl's internal function for compiling regexes that knows about code
blocks, Perl_re_op_compile, isn't part of the engine API. However, the
way that regcomp.c is dual-lifed as ext/re/re_comp.c with debugging
compiled in, means that Perl_re_op_compile is also compiled as
my_re_op_compile. These days days the mechanism to choose whether to call
the main functions or the debugging my_* functions when 'use re debug' is
in scope, is the re engine API jump table. Ergo, to ensure that
my_re_op_compile gets called appropriately, this method needs adding to
the jump table.

So, I've added it, but documented as 'for perl internal use only, set to
null in your engine'.

I've also updated current_re_engine() to always return a pointer to a jump
table, even if we're using the internal engine (formerly it returned
null). This then allows us to use the simple condition (eng->op_comp)
to determine whether the current engine supports code blocks.
embed.fnc
embed.h
ext/re/re.xs
op.c
pod/perlreapi.pod
pp_ctl.c
proto.h
regcomp.c
regcomp.h
regexp.h