@@ -715,7 +715,7 @@ pub(crate) enum RuntimeImport {
715715 } ,
716716}
717717
718- pub type ImportedResources = PrimaryMap < ResourceIndex , ResourceType > ;
718+ pub type ImportedResources = TryPrimaryMap < ResourceIndex , ResourceType > ;
719719
720720impl < ' a > Instantiator < ' a > {
721721 fn new (
@@ -727,7 +727,7 @@ impl<'a> Instantiator<'a> {
727727 let ( modules, engine, breakpoints) = store. modules_and_engine_and_breakpoints_mut ( ) ;
728728 modules. register_component ( component, engine, breakpoints) ?;
729729 let imported_resources: ImportedResources =
730- PrimaryMap :: with_capacity ( env_component. imported_resources . len ( ) ) ;
730+ TryPrimaryMap :: with_capacity ( env_component. imported_resources . len ( ) ) ? ;
731731
732732 let instance = ComponentInstance :: new (
733733 store. store_data ( ) . components . next_component_instance_id ( ) ,
@@ -763,7 +763,7 @@ impl<'a> Instantiator<'a> {
763763 } => ( * ty, NonNull :: from ( dtor_funcref) ) ,
764764 _ => unreachable ! ( ) ,
765765 } ;
766- let i = self . instance_resource_types_mut ( store. 0 ) . push ( ty) ;
766+ let i = self . instance_resource_types_mut ( store. 0 ) . push ( ty) ? ;
767767 assert_eq ! ( i, idx) ;
768768 self . instance_mut ( store. 0 )
769769 . set_resource_destructor ( idx, Some ( func_ref) ) ;
@@ -906,13 +906,13 @@ impl<'a> Instantiator<'a> {
906906 self . extract_post_return ( store. 0 , post_return)
907907 }
908908
909- GlobalInitializer :: Resource ( r) => self . resource ( store. 0 , r) ,
909+ GlobalInitializer :: Resource ( r) => self . resource ( store. 0 , r) ? ,
910910 }
911911 }
912912 Ok ( ( ) )
913913 }
914914
915- fn resource ( & mut self , store : & mut StoreOpaque , resource : & Resource ) {
915+ fn resource ( & mut self , store : & mut StoreOpaque , resource : & Resource ) -> Result < ( ) > {
916916 let dtor = resource
917917 . dtor
918918 . as_ref ( )
@@ -929,8 +929,9 @@ impl<'a> Instantiator<'a> {
929929 let ty = ResourceType :: guest ( store. id ( ) , instance, resource. index ) ;
930930 self . instance_mut ( store)
931931 . set_resource_destructor ( index, dtor) ;
932- let i = self . instance_resource_types_mut ( store) . push ( ty) ;
932+ let i = self . instance_resource_types_mut ( store) . push ( ty) ? ;
933933 debug_assert_eq ! ( i, index) ;
934+ Ok ( ( ) )
934935 }
935936
936937 fn extract_memory ( & mut self , store : & mut StoreOpaque , memory : & ExtractMemory ) {
@@ -1088,7 +1089,7 @@ impl<'a> Instantiator<'a> {
10881089pub struct InstancePre < T : ' static > {
10891090 component : Component ,
10901091 imports : Arc < PrimaryMap < RuntimeImportIndex , RuntimeImport > > ,
1091- resource_types : Arc < PrimaryMap < ResourceIndex , ResourceType > > ,
1092+ resource_types : Arc < TryPrimaryMap < ResourceIndex , ResourceType > > ,
10921093 asyncness : Asyncness ,
10931094 _marker : marker:: PhantomData < fn ( ) -> T > ,
10941095}
@@ -1116,7 +1117,7 @@ impl<T: 'static> InstancePre<T> {
11161117 pub ( crate ) unsafe fn new_unchecked (
11171118 component : Component ,
11181119 imports : Arc < PrimaryMap < RuntimeImportIndex , RuntimeImport > > ,
1119- resource_types : Arc < PrimaryMap < ResourceIndex , ResourceType > > ,
1120+ resource_types : Arc < TryPrimaryMap < ResourceIndex , ResourceType > > ,
11201121 ) -> InstancePre < T > {
11211122 let mut asyncness = Asyncness :: No ;
11221123 for ( _, import) in imports. iter ( ) {
0 commit comments