| 804 | } |
| 805 | |
| 806 | pub fn config(&mut self, pooling_allocator_default: Option<bool>) -> Result<Config> { |
| 807 | self.configure()?; |
| 808 | let mut config = Config::new(); |
| 809 | |
| 810 | match_feature! { |
| 811 | ["cranelift" : self.codegen.compiler] |
| 812 | strategy => config.strategy(strategy), |
| 813 | _ => err, |
| 814 | } |
| 815 | match_feature! { |
| 816 | ["gc" : self.codegen.collector] |
| 817 | collector => config.collector(collector), |
| 818 | _ => err, |
| 819 | } |
| 820 | if let Some(target) = &self.target { |
| 821 | config.target(target)?; |
| 822 | } |
| 823 | match_feature! { |
| 824 | ["cranelift" : self.codegen.cranelift_debug_verifier] |
| 825 | enable => config.cranelift_debug_verifier(enable), |
| 826 | true => err, |
| 827 | } |
| 828 | if let Some(enable) = self.debug.debug_info { |
| 829 | config.debug_info(enable); |
| 830 | } |
| 831 | match_feature! { |
| 832 | ["debug" : self.debug.guest_debug] |
| 833 | enable => config.guest_debug(enable), |
| 834 | _ => err, |
| 835 | } |
| 836 | if self.debug.coredump.is_some() { |
| 837 | #[cfg(feature = "coredump")] |
| 838 | config.coredump_on_trap(true); |
| 839 | #[cfg(not(feature = "coredump"))] |
| 840 | bail!("support for coredumps disabled at compile time"); |
| 841 | } |
| 842 | match_feature! { |
| 843 | ["cranelift" : self.opts.opt_level] |
| 844 | level => config.cranelift_opt_level(level), |
| 845 | _ => err, |
| 846 | } |
| 847 | match_feature! { |
| 848 | ["cranelift": self.opts.regalloc_algorithm] |
| 849 | algo => config.cranelift_regalloc_algorithm(algo), |
| 850 | _ => err, |
| 851 | } |
| 852 | match_feature! { |
| 853 | ["cranelift" : self.wasm.nan_canonicalization] |
| 854 | enable => config.cranelift_nan_canonicalization(enable), |
| 855 | true => err, |
| 856 | } |
| 857 | |
| 858 | self.enable_wasm_features(&mut config)?; |
| 859 | |
| 860 | #[cfg(feature = "cranelift")] |
| 861 | for (name, value) in self.codegen.cranelift.iter() { |
| 862 | let name = name.replace('-', "_"); |
| 863 | unsafe { |