Get the package name once as a small optimization
Dave Rolsky [Sun, 8 Aug 2010 09:02:08 +0000 (11:02 +0200)]
lib/Class/MOP/Mixin/HasMethods.pm

index 34a66b4..cd11a8f 100644 (file)
@@ -39,12 +39,14 @@ sub add_method {
     ( defined $method_name && length $method_name )
         || confess "You must define a method name";
 
+    my $package_name = $self->name;
+
     my $body;
     if ( blessed($method) ) {
         $body = $method->body;
-        if ( $method->package_name ne $self->name ) {
+        if ( $method->package_name ne $package_name ) {
             $method = $method->clone(
-                package_name => $self->name,
+                package_name => $package_name,
                 name         => $method_name,
             ) if $method->can('clone');
         }
@@ -62,7 +64,7 @@ sub add_method {
     my ( $current_package, $current_name ) = Class::MOP::get_code_info($body);
 
     if ( !defined $current_name || $current_name =~ /^__ANON__/ ) {
-        my $full_method_name = ( $self->name . '::' . $method_name );
+        my $full_method_name = ( $package_name . '::' . $method_name );
         subname( $full_method_name => $body );
     }