summaryrefslogtreecommitdiff
path: root/embed.fnc
diff options
context:
space:
mode:
authorsyber <syber@crazypanda.ru>2014-12-07 03:26:04 +0300
committerFather Chrysostomos <sprout@cpan.org>2014-12-06 19:44:07 -0800
commitc6afe6664edd0f72ba320c7d17ab247876849084 (patch)
treecf75a38dfb4ee4b11a047b4dd65b50a05fcf2fcd /embed.fnc
parent15c41403d2d0c2e464b1c4bf8497d45d28917282 (diff)
downloadperl-c6afe6664edd0f72ba320c7d17ab247876849084.tar.gz
gv_fetchmeth_sv now supports SV shared hashes
gv_fetchmeth_internal added, which receives method name both as SV and const char. Now it calls hv_common instead of hv_fetch. gv_fetchmeth_pvn and gv_fetchmeth_sv are now just wrappers for gv_fetchmeth_internal Result: x2 speedup for gv_fetchmeth_sv new SV is a shared hash BEFORE PVN - 28.5 Mcalls/s SV SHARED HASH - 26 Mcalls/s AFTER PVN - 29.4 Mcalls/s SV SHARED HASH - 51 Mcalls/s
Diffstat (limited to 'embed.fnc')
-rw-r--r--embed.fnc6
1 files changed, 4 insertions, 2 deletions
diff --git a/embed.fnc b/embed.fnc
index 8a534270e5..0af427ebd8 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -546,8 +546,10 @@ p |void |gv_setref |NN SV *const dstr|NN SV *const sstr
Apd |HV* |gv_stashpv |NN const char* name|I32 flags
Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags
#if defined(PERL_IN_GV_C)
-i |HV* |gv_stashpvn_internal|NN const char* name|U32 namelen|I32 flags
-i |HV* |gv_stashsvpvn_cached|NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
+i |HV* |gv_stashpvn_internal |NN const char* name|U32 namelen|I32 flags
+i |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
+i |GV* |gv_fetchmeth_internal |NULLOK HV* stash|NULLOK SV* meth|NULLOK const char* name \
+ |STRLEN len|I32 level|U32 flags
#endif
Apd |HV* |gv_stashsv |NN SV* sv|I32 flags
Apd |void |hv_clear |NULLOK HV *hv