@@ -7651,6 +7651,8 @@ mod error_mapping {
7651
7651
use crate :: vm:: types:: ResponseData ;
7652
7652
use crate :: vm:: Value ;
7653
7653
7654
+ use super :: read_identifier_from_wasm;
7655
+
7654
7656
const LOG2_ERROR_MESSAGE : & str = "log2 must be passed a positive integer" ;
7655
7657
const SQRTI_ERROR_MESSAGE : & str = "sqrti must be passed a positive integer" ;
7656
7658
const POW_ERROR_MESSAGE : & str = "Power argument to (pow ...) must be a u32 integer" ;
@@ -7666,6 +7668,7 @@ mod error_mapping {
7666
7668
Panic = 6 ,
7667
7669
ShortReturnAssertionFailure = 7 ,
7668
7670
ArithmeticPowError = 8 ,
7671
+ NameAlreadyUsed = 9 ,
7669
7672
NotMapped = 99 ,
7670
7673
}
7671
7674
@@ -7682,6 +7685,7 @@ mod error_mapping {
7682
7685
6 => ErrorMap :: Panic ,
7683
7686
7 => ErrorMap :: ShortReturnAssertionFailure ,
7684
7687
8 => ErrorMap :: ArithmeticPowError ,
7688
+ 9 => ErrorMap :: NameAlreadyUsed ,
7685
7689
_ => ErrorMap :: NotMapped ,
7686
7690
}
7687
7691
}
@@ -7804,6 +7808,34 @@ mod error_mapping {
7804
7808
RuntimeErrorType :: Arithmetic ( POW_ERROR_MESSAGE . into ( ) ) ,
7805
7809
Some ( Vec :: new ( ) ) ,
7806
7810
) ,
7811
+ ErrorMap :: NameAlreadyUsed => {
7812
+ let runtime_error_arg_offset = instance
7813
+ . get_global ( & mut store, "runtime-error-arg-offset" )
7814
+ . and_then ( |glob| glob. get ( & mut store) . i32 ( ) )
7815
+ . unwrap_or_else ( || {
7816
+ panic ! ( "Could not find $runtime-error-arg-offset global with i32 value" )
7817
+ } ) ;
7818
+
7819
+ let runtime_error_arg_len = instance
7820
+ . get_global ( & mut store, "runtime-error-arg-len" )
7821
+ . and_then ( |glob| glob. get ( & mut store) . i32 ( ) )
7822
+ . unwrap_or_else ( || {
7823
+ panic ! ( "Could not find $runtime-error-arg-len global with i32 value" )
7824
+ } ) ;
7825
+
7826
+ let memory = instance
7827
+ . get_memory ( & mut store, "memory" )
7828
+ . unwrap_or_else ( || panic ! ( "Could not find wasm instance memory" ) ) ;
7829
+ let arg_name = read_identifier_from_wasm (
7830
+ memory,
7831
+ & mut store,
7832
+ runtime_error_arg_offset,
7833
+ runtime_error_arg_len,
7834
+ )
7835
+ . unwrap_or_else ( |e| panic ! ( "Could not recover arg_name: {e}" ) ) ;
7836
+
7837
+ Error :: Unchecked ( CheckErrors :: NameAlreadyUsed ( arg_name) )
7838
+ }
7807
7839
_ => panic ! ( "Runtime error code {} not supported" , runtime_error_code) ,
7808
7840
}
7809
7841
}
0 commit comments