summaryrefslogtreecommitdiff
path: root/builtin.c
diff options
context:
space:
mode:
authorJames Raspass <jraspass@gmail.com>2022-06-11 23:33:31 +0100
committerTony Cook <tony@develop-help.com>2022-07-05 11:17:31 +1000
commita02b8151f9b69201233f9ca5774db280c34684de (patch)
treec783043e3e74ece3c98f4c71d828aa4eb571adc5 /builtin.c
parentc5327cb77526e4e4c7bb83e24be20ac48e85b1fa (diff)
downloadperl-a02b8151f9b69201233f9ca5774db280c34684de.tar.gz
Add builtin::is_tainted
Also tweak the implementation of the other two boolean builtins (is_bool & is_weak) to be slightly more efficient.
Diffstat (limited to 'builtin.c')
-rw-r--r--builtin.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/builtin.c b/builtin.c
index 9df6630082..c8b9614528 100644
--- a/builtin.c
+++ b/builtin.c
@@ -125,6 +125,10 @@ XS(XS_builtin_func1_scalar)
Perl_pp_floor(aTHX);
break;
+ case OP_IS_TAINTED:
+ Perl_pp_is_tainted(aTHX);
+ break;
+
default:
Perl_die(aTHX_ "panic: unhandled opcode %" IVdf
" for xs_builtin_func1_scalar()", (IV) ix);
@@ -380,16 +384,17 @@ static const struct BuiltinFuncDescriptor builtins[] = {
{ "builtin::false", &XS_builtin_false, &ck_builtin_const, BUILTIN_CONST_FALSE },
/* unary functions */
- { "builtin::is_bool", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_BOOL },
- { "builtin::weaken", &XS_builtin_func1_void, &ck_builtin_func1, OP_WEAKEN },
- { "builtin::unweaken", &XS_builtin_func1_void, &ck_builtin_func1, OP_UNWEAKEN },
- { "builtin::is_weak", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_WEAK },
- { "builtin::blessed", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_BLESSED },
- { "builtin::refaddr", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_REFADDR },
- { "builtin::reftype", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_REFTYPE },
- { "builtin::ceil", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_CEIL },
- { "builtin::floor", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_FLOOR },
- { "builtin::trim", &XS_builtin_trim, NULL, 0 },
+ { "builtin::is_bool", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_BOOL },
+ { "builtin::weaken", &XS_builtin_func1_void, &ck_builtin_func1, OP_WEAKEN },
+ { "builtin::unweaken", &XS_builtin_func1_void, &ck_builtin_func1, OP_UNWEAKEN },
+ { "builtin::is_weak", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_WEAK },
+ { "builtin::blessed", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_BLESSED },
+ { "builtin::refaddr", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_REFADDR },
+ { "builtin::reftype", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_REFTYPE },
+ { "builtin::ceil", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_CEIL },
+ { "builtin::floor", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_FLOOR },
+ { "builtin::is_tainted", &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_TAINTED },
+ { "builtin::trim", &XS_builtin_trim, NULL, 0 },
{ "builtin::created_as_string", &XS_builtin_created_as_string, &ck_builtin_func1, 0 },
{ "builtin::created_as_number", &XS_builtin_created_as_number, &ck_builtin_func1, 0 },