diff options
author | Nicholas Clark <nick@ccl4.org> | 2008-09-12 00:19:51 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-09-12 00:19:51 +0000 |
commit | a49ba3fcbe357fbacf7b9898df08daa2cbdfc8c4 (patch) | |
tree | 43834e70391760038633daf86cecae00b95fef4e /proto.h | |
parent | c109477dfda0dedbe3c4ffa3d6074085d3b8497a (diff) | |
download | perl-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 'proto.h')
-rw-r--r-- | proto.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -6597,6 +6597,11 @@ PERL_CALLCONV struct refcounted_he * Perl_store_cop_label(pTHX_ struct refcounte #define PERL_ARGS_ASSERT_STORE_COP_LABEL \ assert(label) +PERL_CALLCONV HV * Perl_get_isa_hash(pTHX_ HV *const stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_ISA_HASH \ + assert(stash) + END_EXTERN_C /* |