X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xs-src%2FMouse.xs;h=831e522b8d60430a78b20b96197e014a53dbc369;hb=8d33c73a2e27fce4a8275edc328471932144fd42;hp=32ab97cd2054f897f91b18e758aa6fdc7a5114c7;hpb=48a4a7b4b110db566e37945f215c463736dfa975;p=gitmo%2FMouse.git diff --git a/xs-src/Mouse.xs b/xs-src/Mouse.xs index 32ab97c..831e522 100644 --- a/xs-src/Mouse.xs +++ b/xs-src/Mouse.xs @@ -436,8 +436,8 @@ mouse_get_modifier_storage(pTHX_ return (AV*)SvRV(storage_ref); } -static void -XS_Mouse_value_holder(pTHX_ CV* const cv PERL_UNUSED_DECL) { +static +XSPROTO(XS_Mouse_value_holder) { dVAR; dXSARGS; SV* const value = (SV*)XSANY.any_ptr; assert(value); @@ -624,6 +624,19 @@ CODE: mouse_class_initialize_object(aTHX_ meta, object, args, is_cloning); } +void +_invalidate_metaclass_cache(SV* meta) +CODE: +{ + AV* const xc = mouse_get_xc_if_fresh(aTHX_ meta); + if(xc) { + SV* const gen = MOUSE_xc_gen(xc); + sv_setuv(gen, 0U); + } + delete_slot(meta, newSVpvs_flags("_mouse_cache_", SVs_TEMP)); +} + + MODULE = Mouse PACKAGE = Mouse::Meta::Role BOOT: