It Works, *AND* Its Fast(er)
[gitmo/Moose.git] / lib / Moose.pm
index fa6b012..632ec6c 100644 (file)
@@ -36,6 +36,7 @@ use Moose::Util::TypeConstraints;
         subtype $class
             => as 'Object'
             => where { $_->isa($class) }
+            => optimize_as { blessed($_[0]) && $_[0]->isa($class) }
         unless find_type_constraint($class);
 
         my $meta;
@@ -248,6 +249,26 @@ sub _is_class_already_loaded {
        return 0;
 }
 
+## make 'em all immutable
+
+$_->meta->make_immutable(
+    inline_constructor => 0,
+    inline_accessors   => 0,    
+) for (
+    'Moose::Meta::Attribute',
+    'Moose::Meta::Class',
+    'Moose::Meta::Instance',
+
+    'Moose::Meta::TypeConstraint',
+    'Moose::Meta::TypeConstraint::Union',
+    'Moose::Meta::TypeCoercion',
+
+    'Moose::Meta::Method',
+    'Moose::Meta::Method::Accessor',
+    'Moose::Meta::Method::Constructor',
+    'Moose::Meta::Method::Overriden',
+);
+
 1;
 
 __END__