summaryrefslogtreecommitdiff
path: root/embed.fnc
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2008-09-12 00:19:51 +0000
committerNicholas Clark <nick@ccl4.org>2008-09-12 00:19:51 +0000
commita49ba3fcbe357fbacf7b9898df08daa2cbdfc8c4 (patch)
tree43834e70391760038633daf86cecae00b95fef4e /embed.fnc
parentc109477dfda0dedbe3c4ffa3d6074085d3b8497a (diff)
downloadperl-a49ba3fcbe357fbacf7b9898df08daa2cbdfc8c4.tar.gz
Create a direct lookup hash for ->isa() lookup, by retaining the
de-duping hash used by S_mro_get_linear_isa_dfs(). Provide a new function Perl_get_isa_hash() to lazily retrieve this. (Which could actually be static if S_isa_lookup() and Perl_sv_derived_from() moved into mro.c.) Make S_isa_lookup() use this lookup hash in place of a linear walk of the linear isa. This should turn isa lookups from O(n) to O(1), which should make heavy users of ->isa() faster. (eg PPI, and hence Perl Critic). p4raw-id: //depot/perl@34354
Diffstat (limited to 'embed.fnc')
-rw-r--r--embed.fnc1
1 files changed, 1 insertions, 0 deletions
diff --git a/embed.fnc b/embed.fnc
index d680a5b344..a193ab40fe 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1997,6 +1997,7 @@ ApoM |const char *|fetch_cop_label|NULLOK struct refcounted_he *const chain \
|NULLOK STRLEN *len|NULLOK U32 *flags
xpoM |struct refcounted_he *|store_cop_label \
|NULLOK struct refcounted_he *const chain|NN const char *label
+poM |HV * |get_isa_hash |NN HV *const stash
END_EXTERN_C
/*