START_EXTERN_C
+
+#define OP_NAME(o) (o->op_type == OP_CUSTOM ? custom_op_name(o) : \\
+ PL_op_name[o->op_type])
+#define OP_DESC(o) (o->op_type == OP_CUSTOM ? custom_op_desc(o) : \\
+ PL_op_desc[o->op_type])
+
#ifndef DOINIT
EXT char *PL_op_name[];
#else
END
for (@ops) {
- print "\tMEMBER_TO_FPTR(Perl_pp_$_),\n";
+ print "\tMEMBER_TO_FPTR(Perl_pp_$_),\n" unless $_ eq "custom";
}
print <<END;
$argsum |= 32 if $flags =~ /I/; # has corresponding int op
$argsum |= 64 if $flags =~ /d/; # danger, unknown side effects
$argsum |= 128 if $flags =~ /u/; # defaults to $_
-
$flags =~ /([\W\d_])/ or die qq[Opcode "$_" has no class indicator];
$argsum |= $opclass{$1} << 9;
$mul = 0x2000; # 2 ^ OASHIFT
for (@ops) {
next if /^i_(pre|post)(inc|dec)$/;
+ next if /^custom$/;
print PP "PERL_PPDEF(Perl_pp_$_)\n";
print PPSYM "Perl_pp_$_\n";
}
backtick quoted execution (``, qx) ck_open t%
# glob defaults its first arg to $_
glob glob ck_glob t@ S?
-readline <HANDLE> ck_fun t% F
+readline <HANDLE> ck_null t% F?
rcatline append I/O operator ck_null t%
# Bindable operators.
# Control (contd.)
setstate set statement info ck_null s;
method_named method with known name ck_null d$
+
+custom unknown custom operator ck_null 0