} mro_alg;
struct mro_meta {
- AV *mro_linear_dfs; /* cached dfs @ISA linearization */
- AV *mro_linear_c3; /* cached c3 @ISA linearization */
- HV *mro_isarev; /* reverse @ISA dependencies (who depends on us?) */
- HV *mro_nextmethod; /* next::method caching */
- mro_alg mro_which; /* which mro alg is in use? */
- U32 sub_generation; /* Like PL_sub_generation, but stash-local */
- I32 is_universal; /* We are UNIVERSAL or a potentially indirect
- member of @UNIVERSAL::ISA */
- I32 fake; /* setisa made this fake package,
- gv_fetchmeth pays attention to this,
- and "package" sets it back to zero */
+ AV *mro_linear_dfs; /* cached dfs @ISA linearization */
+ AV *mro_linear_c3; /* cached c3 @ISA linearization */
+ HV *mro_nextmethod; /* next::method caching */
+ U32 cache_gen; /* Bumping this invalidates our method cache */
+ U32 pkg_gen; /* Bumps when local methods/@ISA change */
+ mro_alg mro_which; /* which mro alg is in use? */
};
/* Subject to change.
# define HINTS_REFCNT_TERM NOOP
#endif
+/* Hash actions
+ * Passed in PERL_MAGIC_uvar calls
+ */
+#define HV_DELETE -1
+#define HV_FETCH_ISSTORE 0x01
+#define HV_FETCH_ISEXISTS 0x02
+#define HV_FETCH_LVALUE 0x04
+#define HV_FETCH_JUST_SV 0x08
+
/*
* Local variables:
* c-indentation-style: bsd