You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.
But we cannot use the $obj->method type info, because $obj may be a subtype
of the declared type, which may have a different method.
Add several smaller optims:
convert pushmark-gv(packagename)-args-method_named(GV)-entersub
to pushmark-gv(packagename)-args-gv(GV)-entersub
use the faster cvref not the gv. the biggest problem was that destroying &main::BEGIN cleared the attached GV (missing refcount bump):
Not when a static method is allowed to be redefined. perlcc -O3 may disallow this for perf. reasons.
t/op/symbolcache.t wants to redefine a sub at run-time and this can only be caught with the GV, not the old cvref.
convert entersub to enterxssub for XS methods.
detect class subs called as methods at compile-time already.
using a gv ALIAS e.g. *Carp::Import{CV} pointing to &Exporter::import is forbidden. This needs to be resolved by method_named.
This should be merged earlier than the inliner, because the stable parts are needed for other branches to go on. op_clone() is needed to clone roles #311.
The text was updated successfully, but these errors were encountered:
conversion of method_named -> gv done with 4c9c0ae but only for non-threaded perls. still an unknown corruption with that gv on the pad at run-time.
also done: skip if gv alias.
Was CM-885, part of the GH #23 inliner.
See http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html
It is better to do it with the inline peep check, and not in ck_subr. (Now changed back to ck_subr)
So if any stash already contains the method, use it. No other stash can interfer with that during run-time method-dispatch.
But we cannot use the $obj->method type info, because $obj may be a subtype
of the declared type, which may have a different method.
Add several smaller optims:
convert pushmark-gv(packagename)-args-method_named(GV)-entersub
to pushmark-gv(packagename)-args-gv(GV)-entersub
use the faster cvref not the gv. the biggest problem was that destroying &main::BEGIN cleared the attached GV (missing refcount bump):
Not when a static method is allowed to be redefined. perlcc -O3 may disallow this for perf. reasons.
t/op/symbolcache.t wants to redefine a sub at run-time and this can only be caught with the GV, not the old cvref.
convert entersub to enterxssub for XS methods.
detect class subs called as methods at compile-time already.
using a gv ALIAS e.g. *Carp::Import{CV} pointing to &Exporter::import is forbidden. This needs to be resolved by method_named.
This should be merged earlier than the inliner, because the stable parts are needed for other branches to go on.
op_clone()
is needed to clone roles #311.The text was updated successfully, but these errors were encountered: