diff --git a/forc-plugins/forc-client/tests/deploy.rs b/forc-plugins/forc-client/tests/deploy.rs index 6d2f6d66608..4b5c65fc644 100644 --- a/forc-plugins/forc-client/tests/deploy.rs +++ b/forc-plugins/forc-client/tests/deploy.rs @@ -377,7 +377,7 @@ async fn test_simple_deploy() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", + "6d59c621e41a1648b637b1392505cd34501613108100bedf5f30b0020770b74a", ) .unwrap(), proxy: None, @@ -421,7 +421,7 @@ async fn test_deploy_submit_only() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", + "6d59c621e41a1648b637b1392505cd34501613108100bedf5f30b0020770b74a", ) .unwrap(), proxy: None, @@ -468,12 +468,12 @@ async fn test_deploy_fresh_proxy() { node.kill().unwrap(); let impl_contract = DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", + "6d59c621e41a1648b637b1392505cd34501613108100bedf5f30b0020770b74a", ) .unwrap(), proxy: Some( ContractId::from_str( - "92343c25e373958aee4cecfe58ab6533261b5f54de471291c22ee05182d39122", + "49bde7ba2bd4bdd593411bdf2080026588df8a97546b48fe4cd4f03bd4bf916d", ) .unwrap(), ), diff --git a/forc/tests/cli_integration.rs b/forc/tests/cli_integration.rs index adc6de09689..651b84fb7f0 100644 --- a/forc/tests/cli_integration.rs +++ b/forc/tests/cli_integration.rs @@ -51,10 +51,10 @@ fn test_forc_test_raw_logs() -> Result<(), rexpect::error::Error> { // Assert that the output is correct process.exp_string(" test test_log_4")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11432,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11432,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) @@ -77,12 +77,12 @@ fn test_forc_test_both_logs() -> Result<(), rexpect::error::Error> { process.exp_string("decoded log values:")?; process.exp_string("4, log rb: 1515152261580153489")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11432,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("decoded log values:")?; process.exp_string("2, log rb: 1515152261580153489")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11432,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) } diff --git a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs index 8ff53dd15e3..f6c643c69e9 100644 --- a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs +++ b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs @@ -31,6 +31,7 @@ where name: &BaseIdent, type_parameters: &[TypeParameter], body: String, + is_trivial_body: &str, ) -> String { let type_parameters_declaration_expanded = self.generate_type_parameters_declaration_code(type_parameters, true); @@ -43,6 +44,8 @@ where if body.is_empty() { format!("#[allow(dead_code, deprecated)] impl{type_parameters_declaration_expanded} AbiEncode for {name}{type_parameters_declaration}{type_parameters_constraints} {{ + #[allow(dead_code, deprecated)] + fn is_encode_trivial() -> bool {{ {is_trivial_body} }} #[allow(dead_code, deprecated)] fn abi_encode(self, buffer: Buffer) -> Buffer {{ buffer @@ -50,6 +53,8 @@ where }}") } else { format!("#[allow(dead_code, deprecated)] impl{type_parameters_declaration_expanded} AbiEncode for {name}{type_parameters_declaration}{type_parameters_constraints} {{ + #[allow(dead_code, deprecated)] + fn is_encode_trivial() -> bool {{ {is_trivial_body} }} #[allow(dead_code, deprecated)] fn abi_encode(self, buffer: Buffer) -> Buffer {{ {body} @@ -64,6 +69,7 @@ where name: &BaseIdent, type_parameters: &[TypeParameter], body: String, + is_trivial_body: &str, ) -> String { let type_parameters_declaration_expanded = self.generate_type_parameters_declaration_code(type_parameters, true); @@ -76,6 +82,8 @@ where if body == "Self { }" { format!("#[allow(dead_code, deprecated)] impl{type_parameters_declaration_expanded} AbiDecode for {name}{type_parameters_declaration}{type_parameters_constraints} {{ + #[allow(dead_code, deprecated)] + fn is_decode_trivial() -> bool {{ {is_trivial_body} }} #[allow(dead_code, deprecated)] fn abi_decode(ref mut _buffer: BufferReader) -> Self {{ {body} @@ -83,6 +91,8 @@ where }}") } else { format!("#[allow(dead_code, deprecated)] impl{type_parameters_declaration_expanded} AbiDecode for {name}{type_parameters_declaration}{type_parameters_constraints} {{ + #[allow(dead_code, deprecated)] + fn is_decode_trivial() -> bool {{ {is_trivial_body} }} #[allow(dead_code, deprecated)] fn abi_decode(ref mut buffer: BufferReader) -> Self {{ {body} @@ -114,7 +124,7 @@ where code.push_str(&format!( "{field_name}: buffer.decode::<{field_type_name}>(),", field_name = f.name.as_raw_ident_str(), - field_type_name = Self::generate_type(engines, &f.type_argument)?, + field_type_name = Self::generate_type(engines, &f.type_argument), )); } @@ -136,7 +146,7 @@ where format!("{} => {}::{}, \n", x.tag, enum_name, name) }, _ => { - let variant_type_name = Self::generate_type(engines, &x.type_argument)?; + let variant_type_name = Self::generate_type(engines, &x.type_argument); format!("{tag_value} => {enum_name}::{variant_name}(buffer.decode::<{variant_type}>()), \n", tag_value = x.tag, enum_name = enum_name, @@ -213,11 +223,23 @@ where let implementing_for_decl_id = decl.to_struct_decl(&Handler::default(), engines).unwrap(); let struct_decl = self.ctx.engines().de().get(&implementing_for_decl_id); + let fields_types = struct_decl + .fields + .iter() + .map(|x| Self::generate_type(engines, &x.type_argument)); + let mut is_encode_trivial = + "__runtime_mem_id::() == __encoding_mem_id::()".to_string(); + for field_type in fields_types { + is_encode_trivial.push_str(" && "); + is_encode_trivial.push_str(&format!("is_encode_trivial::<{}>()", field_type)); + } + let abi_encode_body = self.generate_abi_encode_struct_body(engines, &struct_decl); let abi_encode_code = self.generate_abi_encode_code( struct_decl.name(), &struct_decl.generic_parameters, abi_encode_body, + &is_encode_trivial, ); let abi_encode_node = self.parse_impl_trait_to_ty_ast_node( engines, @@ -226,11 +248,23 @@ where crate::build_config::DbgGeneration::None, ); + let fields_types = struct_decl + .fields + .iter() + .map(|x| Self::generate_type(engines, &x.type_argument)); + let mut is_decode_trivial = + "__runtime_mem_id::() == __encoding_mem_id::()".to_string(); + for field_type in fields_types { + is_decode_trivial.push_str(" && "); + is_decode_trivial.push_str(&format!("is_decode_trivial::<{}>()", field_type)); + } + let abi_decode_body = self.generate_abi_decode_struct_body(engines, &struct_decl); let abi_decode_code = self.generate_abi_decode_code( struct_decl.name(), &struct_decl.generic_parameters, abi_decode_body?, + &is_decode_trivial, ); let abi_decode_node = self.parse_impl_trait_to_ty_ast_node( engines, @@ -260,11 +294,23 @@ where let enum_decl_id = decl.to_enum_id(&Handler::default(), engines).unwrap(); let enum_decl = self.ctx.engines().de().get(&enum_decl_id); + let variant_types = enum_decl + .variants + .iter() + .map(|x| Self::generate_type(engines, &x.type_argument)); + let mut is_encode_trivial = + "__runtime_mem_id::() == __encoding_mem_id::()".to_string(); + for variant_type in variant_types { + is_encode_trivial.push_str(" && "); + is_encode_trivial.push_str(&format!("is_encode_trivial::<{}>()", variant_type)); + } + let abi_encode_body = self.generate_abi_encode_enum_body(engines, &enum_decl); let abi_encode_code = self.generate_abi_encode_code( enum_decl.name(), &enum_decl.generic_parameters, abi_encode_body, + &is_encode_trivial, ); let abi_encode_node = self.parse_impl_trait_to_ty_ast_node( engines, @@ -278,6 +324,7 @@ where enum_decl.name(), &enum_decl.generic_parameters, abi_decode_body?, + "false", ); let abi_decode_node = self.parse_impl_trait_to_ty_ast_node( engines, @@ -348,17 +395,10 @@ where } } - let Some(args_types) = decl + let args_types = decl .parameters .iter() - .map(|x| Self::generate_type(engines, &x.type_argument)) - .collect::>>() - else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + .map(|x| Self::generate_type(engines, &x.type_argument)); let args_types = itertools::intersperse(args_types, ", ".into()).collect::(); let args_types = if args_types.is_empty() { @@ -376,12 +416,7 @@ where ) .collect::(); - let Some(return_type) = Self::generate_type(engines, &decl.return_type) else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + let return_type = Self::generate_type(engines, &decl.return_type); let method_name = decl.name.as_str(); let offset = if let Some(offset) = method_names.find(method_name) { @@ -405,7 +440,7 @@ where )); } else { code.push_str(&format!( - "let args: {args_types} = _buffer.decode::<{args_types}>(); + "let args: {args_types} = decode_from_raw_ptr::<{args_types}>(_buffer_ptr); let _result: {return_type} = __contract_entry_{method_name}({expanded_args});\n" )); } @@ -413,10 +448,7 @@ where if return_type == "()" { code.push_str("__contract_ret(asm() { zero: raw_ptr }, 0);"); } else { - code.push_str(&format!( - "let _result: raw_slice = encode::<{return_type}>(_result); - __contract_ret(_result.ptr(), _result.len::());" - )); + code.push_str(&format!("encode_and_return::<{return_type}>(&_result);")); } code.push_str("\n}\n"); @@ -439,12 +471,7 @@ where let fallback = if let Some(fallback_fn) = fallback_fn { let fallback_fn = engines.de().get(&fallback_fn); - let Some(return_type) = Self::generate_type(engines, &fallback_fn.return_type) else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + let return_type = Self::generate_type(engines, &fallback_fn.return_type); let method_name = fallback_fn.name.as_raw_ident_str(); match fallback_fn.purity { Purity::Pure => {} @@ -475,12 +502,15 @@ where let code = format!( "{att} pub fn __entry() {{ let _method_names = \"{method_names}\"; - let mut _buffer = BufferReader::from_second_parameter(); - - let mut _first_param_buffer = BufferReader::from_first_parameter(); - let _method_len = _first_param_buffer.read::(); - let _method_name_ptr = _first_param_buffer.ptr(); let _method_names_ptr = _method_names.as_ptr(); + + let mut _buffer_ptr = BufferReader::from_second_parameter(); + + let _method_name_ptr = BufferReader::from_first_parameter(); + let mut _method_name = BufferReader {{ ptr: _method_name_ptr }}; + let _method_len = _method_name.read::(); + let _method_name_ptr = _method_name.ptr(); + {code} {fallback} }}" @@ -512,17 +542,10 @@ where decl: &TyFunctionDecl, handler: &Handler, ) -> Result { - let Some(args_types) = decl + let args_types = decl .parameters .iter() - .map(|x| Self::generate_type(engines, &x.type_argument)) - .collect::>>() - else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + .map(|x| Self::generate_type(engines, &x.type_argument)); let args_types = itertools::intersperse(args_types, ", ".into()).collect::(); let expanded_args = itertools::intersperse( @@ -604,17 +627,10 @@ where decl: &TyFunctionDecl, handler: &Handler, ) -> Result { - let Some(args_types) = decl + let args_types = decl .parameters .iter() - .map(|x| Self::generate_type(engines, &x.type_argument)) - .collect::>>() - else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + .map(|x| Self::generate_type(engines, &x.type_argument)); let args_types = itertools::intersperse(args_types, ", ".into()).collect::(); let args_types = if args_types.is_empty() { "()".into() @@ -631,17 +647,12 @@ where ) .collect::(); - let Some(return_type) = Self::generate_type(engines, &decl.return_type) else { - let err = handler.emit_err(CompileError::UnknownType { - span: Span::dummy(), - }); - return Err(err); - }; + let return_type = Self::generate_type(engines, &decl.return_type); let return_encode = if return_type == "()" { "__contract_ret(0, 0)".to_string() } else { - format!("encode_and_return::<{return_type}>(_result)") + format!("encode_and_return::<{return_type}>(&_result)") }; let code = if args_types == "()" { diff --git a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/mod.rs b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/mod.rs index 34f7888375b..30705c7d3e6 100644 --- a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/mod.rs +++ b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/mod.rs @@ -319,13 +319,13 @@ where /// The safest way would be to return a canonical fully qualified type path. /// We do not have a way to do this at the moment, so the best way is to use /// exactly what was typed by the user, to accommodate aliased imports. - fn generate_type(engines: &Engines, ta: &GenericTypeArgument) -> Option { + fn generate_type(engines: &Engines, ta: &GenericTypeArgument) -> String { match &*engines.te().get(ta.type_id) { // A special case for function return type. // When a function does not define a return type, the span points to the whole signature. - TypeInfo::Tuple(v) if v.is_empty() => Some("()".into()), + TypeInfo::Tuple(v) if v.is_empty() => "()".into(), // Otherwise, take the type from the span. - _ => Some(ta.span.as_str().to_string()), + _ => ta.span.as_str().to_string(), } } } diff --git a/sway-core/src/transform/to_parsed_lang/convert_parse_tree.rs b/sway-core/src/transform/to_parsed_lang/convert_parse_tree.rs index 2d3f13e1aee..fcce7b1bd97 100644 --- a/sway-core/src/transform/to_parsed_lang/convert_parse_tree.rs +++ b/sway-core/src/transform/to_parsed_lang/convert_parse_tree.rs @@ -3265,7 +3265,10 @@ fn configurable_field_to_configurable_declaration( call_path_binding: TypeBinding { inner: CallPath { prefixes: vec![], - suffix: Ident::new_with_override("encode".into(), span.clone()), + suffix: Ident::new_with_override( + "encode_configurable".into(), + span.clone(), + ), callpath_type: CallPathType::Ambiguous, }, type_arguments: TypeArgs::Regular(vec![GenericArgument::Type( diff --git a/sway-lib-std/generate.sh b/sway-lib-std/generate.sh index 15ea3020774..21fbfd0090c 100755 --- a/sway-lib-std/generate.sh +++ b/sway-lib-std/generate.sh @@ -13,7 +13,7 @@ remove_generated_code "ARRAY_ENCODE" "codec.sw" START=1 END=64 for ((i=END;i>=START;i--)); do - CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiEncode for [T; $i] where T: AbiEncode { fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; while i < $i { buffer = self[i].abi_encode(buffer); i += 1; }; buffer } }" + CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiEncode for [T; $i] where T: AbiEncode { fn is_encode_trivial() -> bool { is_encode_trivial::() } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; while i < $i { buffer = self[i].abi_encode(buffer); i += 1; }; buffer } }" sed -i "s/\/\/ BEGIN ARRAY_ENCODE/\/\/ BEGIN ARRAY_ENCODE\n$CODE/g" ./src/codec.sw done @@ -21,7 +21,7 @@ remove_generated_code "ARRAY_DECODE" "codec.sw" START=1 END=64 for ((i=END;i>=START;i--)); do - CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiDecode for [T; $i] where T: AbiDecode { fn abi_decode(ref mut buffer: BufferReader) -> [T; $i] { let first: T = buffer.decode::(); let mut array = [first; $i]; let mut i = 1; while i < $i { array[i] = buffer.decode::(); i += 1; }; array } }" + CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiDecode for [T; $i] where T: AbiDecode { fn is_decode_trivial() -> bool { is_decode_trivial::() } fn abi_decode(ref mut buffer: BufferReader) -> [T; $i] { let first: T = buffer.decode::(); let mut array = [first; $i]; let mut i = 1; while i < $i { array[i] = buffer.decode::(); i += 1; }; array } }" sed -i "s/\/\/ BEGIN ARRAY_DECODE/\/\/ BEGIN ARRAY_DECODE\n$CODE/g" ./src/codec.sw done @@ -29,7 +29,7 @@ remove_generated_code "STRARRAY_ENCODE" "codec.sw" START=1 END=64 for ((i=END;i>=START;i--)); do - CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiEncode for str[$i] { fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self) } } }" + CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiEncode for str[$i] { fn is_encode_trivial() -> bool { false } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self) } } }" sed -i "s/\/\/ BEGIN STRARRAY_ENCODE/\/\/ BEGIN STRARRAY_ENCODE\n$CODE/g" ./src/codec.sw done @@ -37,7 +37,7 @@ remove_generated_code "STRARRAY_DECODE" "codec.sw" START=1 END=64 for ((i=END;i>=START;i--)); do - CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiDecode for str[$i] { fn abi_decode(ref mut buffer: BufferReader) -> str[$i] { let data = buffer.read_bytes($i); asm(s: data.ptr()) { s: str[$i] } } }" + CODE="#[cfg(experimental_const_generics = false)]\nimpl AbiDecode for str[$i] { fn is_decode_trivial() -> bool { false } fn abi_decode(ref mut buffer: BufferReader) -> str[$i] { let data = buffer.read_bytes($i); asm(s: data.ptr()) { s: str[$i] } } }" sed -i "s/\/\/ BEGIN STRARRAY_DECODE/\/\/ BEGIN STRARRAY_DECODE\n$CODE/g" ./src/codec.sw done @@ -64,7 +64,13 @@ generate_tuple_encode() { CODE="$CODE $element: AbiEncode, " done - CODE="$CODE{ fn abi_encode(self, buffer: Buffer) -> Buffer { " + ISTRIVIAL="" + for element in ${elements[@]} + do + ISTRIVIAL="$ISTRIVIAL \&\& is_encode_trivial::<$element>()" + done + + CODE="$CODE{ fn is_encode_trivial() -> bool { __runtime_mem_id::() == __encoding_mem_id::() $ISTRIVIAL } fn abi_encode(self, buffer: Buffer) -> Buffer { " i=0 for element in ${elements[@]} @@ -129,7 +135,13 @@ generate_tuple_decode() { CODE="$CODE $element: AbiDecode, " done - CODE="$CODE{ fn abi_decode(ref mut buffer: BufferReader) -> Self { (" + ISTRIVIAL="" + for element in ${elements[@]} + do + ISTRIVIAL="$ISTRIVIAL \&\& is_decode_trivial::<$element>()" + done + + CODE="$CODE{ fn is_decode_trivial() -> bool { __runtime_mem_id::() == __encoding_mem_id::() $ISTRIVIAL } fn abi_decode(ref mut buffer: BufferReader) -> Self { (" for element in ${elements[@]} do diff --git a/sway-lib-std/src/bytes.sw b/sway-lib-std/src/bytes.sw index 344fef624cb..fda7bdb0af8 100644 --- a/sway-lib-std/src/bytes.sw +++ b/sway-lib-std/src/bytes.sw @@ -1240,12 +1240,18 @@ impl Clone for Bytes { } impl AbiEncode for Bytes { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { self.as_raw_slice().abi_encode(buffer) } } impl AbiDecode for Bytes { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> Bytes { raw_slice::abi_decode(buffer).into() } diff --git a/sway-lib-std/src/codec.sw b/sway-lib-std/src/codec.sw index 5ef6d2cb2f2..b239565361e 100644 --- a/sway-lib-std/src/codec.sw +++ b/sway-lib-std/src/codec.sw @@ -34,7 +34,7 @@ impl AsRawSlice for Buffer { } pub struct BufferReader { - ptr: raw_ptr, + pub ptr: raw_ptr, } impl BufferReader { @@ -42,7 +42,8 @@ impl BufferReader { BufferReader { ptr } } - pub fn from_first_parameter() -> BufferReader { + #[inline(always)] + pub fn from_first_parameter() -> raw_ptr { const FIRST_PARAMETER_OFFSET: u64 = 73; let ptr = asm() { @@ -51,14 +52,13 @@ impl BufferReader { let ptr = ptr.add::(FIRST_PARAMETER_OFFSET); let ptr = ptr.read::(); - BufferReader { - ptr: asm(ptr: ptr) { - ptr: raw_ptr - }, + asm(ptr: ptr) { + ptr: raw_ptr } } - pub fn from_second_parameter() -> BufferReader { + #[inline(always)] + pub fn from_second_parameter() -> raw_ptr { const SECOND_PARAMETER_OFFSET: u64 = 74; let ptr = asm() { @@ -67,20 +67,18 @@ impl BufferReader { let ptr = ptr.add::(SECOND_PARAMETER_OFFSET); let ptr = ptr.read::(); - BufferReader { - ptr: asm(ptr: ptr) { - ptr: raw_ptr - }, + asm(ptr: ptr) { + ptr: raw_ptr } } - pub fn from_script_data() -> BufferReader { - let ptr = __gtf::(0, 0xA); // SCRIPT_DATA - let _len = __gtf::(0, 0x4); // SCRIPT_DATA_LEN - BufferReader { ptr } + #[inline(always)] + pub fn from_script_data() -> raw_ptr { + __gtf::(0, 0xA) } - pub fn from_predicate_data() -> BufferReader { + #[inline(always)] + pub fn from_predicate_data() -> raw_ptr { let predicate_index = asm(r1) { gm r1 i3; // GET_VERIFYING_PREDICATE r1: u64 @@ -88,18 +86,11 @@ impl BufferReader { Self::from_predicate_data_by_index(predicate_index) } - pub fn from_predicate_data_by_index(predicate_index: u64) -> BufferReader { + #[inline(always)] + pub fn from_predicate_data_by_index(predicate_index: u64) -> raw_ptr { match __gtf::(predicate_index, 0x200) { // GTF_INPUT_TYPE - 0u8 => { - let ptr = __gtf::(predicate_index, 0x20C); // INPUT_COIN_PREDICATE_DATA - let _len = __gtf::(predicate_index, 0x20A); // INPUT_COIN_PREDICATE_DATA_LENGTH - BufferReader { ptr } - }, - 2u8 => { - let ptr = __gtf::(predicate_index, 0x24A); // INPUT_MESSAGE_PREDICATE_DATA - let _len = __gtf::(predicate_index, 0x247); // INPUT_MESSAGE_PREDICATE_DATA_LENGTH - BufferReader { ptr } - }, + 0u8 => __gtf::(predicate_index, 0x20C), + 2u8 => __gtf::(predicate_index, 0x24A), _ => __revert(0), } } @@ -162,13 +153,33 @@ impl BufferReader { } } +// is trivial? + +pub fn is_encode_trivial() -> bool +where + T: AbiEncode, +{ + T::is_encode_trivial() +} + +pub fn is_decode_trivial() -> bool +where + T: AbiDecode, +{ + T::is_decode_trivial() +} + // Encode pub trait AbiEncode { + fn is_encode_trivial() -> bool; fn abi_encode(self, buffer: Buffer) -> Buffer; } impl AbiEncode for bool { + fn is_encode_trivial() -> bool { + true + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -179,6 +190,9 @@ impl AbiEncode for bool { // Encode Numbers impl AbiEncode for b256 { + fn is_encode_trivial() -> bool { + true + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -187,6 +201,9 @@ impl AbiEncode for b256 { } impl AbiEncode for u256 { + fn is_encode_trivial() -> bool { + true + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -195,6 +212,9 @@ impl AbiEncode for u256 { } impl AbiEncode for u64 { + fn is_encode_trivial() -> bool { + true + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -203,6 +223,9 @@ impl AbiEncode for u64 { } impl AbiEncode for u32 { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -211,6 +234,9 @@ impl AbiEncode for u32 { } impl AbiEncode for u16 { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -219,6 +245,9 @@ impl AbiEncode for u16 { } impl AbiEncode for u8 { + fn is_encode_trivial() -> bool { + true + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -229,6 +258,9 @@ impl AbiEncode for u8 { // Encode str slice and str arrays impl AbiEncode for str { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -238,6 +270,11 @@ impl AbiEncode for str { #[cfg(experimental_const_generics = true)] impl AbiEncode for str[N] { + // str[N] have alignments and paddings that make them not trivial + // for more information see comments on a test named: string_array + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -247,6 +284,9 @@ impl AbiEncode for str[N] { #[cfg(experimental_const_generics = false)] impl AbiEncode for str[0] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { buffer } @@ -255,6 +295,9 @@ impl AbiEncode for str[0] { // BEGIN STRARRAY_ENCODE #[cfg(experimental_const_generics = false)] impl AbiEncode for str[1] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -263,6 +306,9 @@ impl AbiEncode for str[1] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[2] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -271,6 +317,9 @@ impl AbiEncode for str[2] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[3] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -279,6 +328,9 @@ impl AbiEncode for str[3] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[4] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -287,6 +339,9 @@ impl AbiEncode for str[4] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[5] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -295,6 +350,9 @@ impl AbiEncode for str[5] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[6] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -303,6 +361,9 @@ impl AbiEncode for str[6] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[7] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -311,6 +372,9 @@ impl AbiEncode for str[7] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[8] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -319,6 +383,9 @@ impl AbiEncode for str[8] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[9] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -327,6 +394,9 @@ impl AbiEncode for str[9] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[10] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -335,6 +405,9 @@ impl AbiEncode for str[10] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[11] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -343,6 +416,9 @@ impl AbiEncode for str[11] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[12] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -351,6 +427,9 @@ impl AbiEncode for str[12] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[13] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -359,6 +438,9 @@ impl AbiEncode for str[13] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[14] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -367,6 +449,9 @@ impl AbiEncode for str[14] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[15] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -375,6 +460,9 @@ impl AbiEncode for str[15] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[16] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -383,6 +471,9 @@ impl AbiEncode for str[16] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[17] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -391,6 +482,9 @@ impl AbiEncode for str[17] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[18] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -399,6 +493,9 @@ impl AbiEncode for str[18] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[19] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -407,6 +504,9 @@ impl AbiEncode for str[19] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[20] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -415,6 +515,9 @@ impl AbiEncode for str[20] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[21] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -423,6 +526,9 @@ impl AbiEncode for str[21] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[22] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -431,6 +537,9 @@ impl AbiEncode for str[22] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[23] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -439,6 +548,9 @@ impl AbiEncode for str[23] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[24] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -447,6 +559,9 @@ impl AbiEncode for str[24] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[25] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -455,6 +570,9 @@ impl AbiEncode for str[25] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[26] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -463,6 +581,9 @@ impl AbiEncode for str[26] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[27] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -471,6 +592,9 @@ impl AbiEncode for str[27] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[28] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -479,6 +603,9 @@ impl AbiEncode for str[28] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[29] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -487,6 +614,9 @@ impl AbiEncode for str[29] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[30] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -495,6 +625,9 @@ impl AbiEncode for str[30] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[31] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -503,6 +636,9 @@ impl AbiEncode for str[31] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[32] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -511,6 +647,9 @@ impl AbiEncode for str[32] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[33] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -519,6 +658,9 @@ impl AbiEncode for str[33] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[34] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -527,6 +669,9 @@ impl AbiEncode for str[34] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[35] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -535,6 +680,9 @@ impl AbiEncode for str[35] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[36] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -543,6 +691,9 @@ impl AbiEncode for str[36] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[37] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -551,6 +702,9 @@ impl AbiEncode for str[37] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[38] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -559,6 +713,9 @@ impl AbiEncode for str[38] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[39] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -567,6 +724,9 @@ impl AbiEncode for str[39] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[40] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -575,6 +735,9 @@ impl AbiEncode for str[40] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[41] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -583,6 +746,9 @@ impl AbiEncode for str[41] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[42] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -591,6 +757,9 @@ impl AbiEncode for str[42] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[43] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -599,6 +768,9 @@ impl AbiEncode for str[43] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[44] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -607,6 +779,9 @@ impl AbiEncode for str[44] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[45] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -615,6 +790,9 @@ impl AbiEncode for str[45] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[46] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -623,6 +801,9 @@ impl AbiEncode for str[46] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[47] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -631,6 +812,9 @@ impl AbiEncode for str[47] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[48] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -639,6 +823,9 @@ impl AbiEncode for str[48] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[49] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -647,6 +834,9 @@ impl AbiEncode for str[49] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[50] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -655,6 +845,9 @@ impl AbiEncode for str[50] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[51] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -663,6 +856,9 @@ impl AbiEncode for str[51] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[52] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -671,6 +867,9 @@ impl AbiEncode for str[52] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[53] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -679,6 +878,9 @@ impl AbiEncode for str[53] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[54] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -687,6 +889,9 @@ impl AbiEncode for str[54] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[55] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -695,6 +900,9 @@ impl AbiEncode for str[55] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[56] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -703,6 +911,9 @@ impl AbiEncode for str[56] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[57] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -711,6 +922,9 @@ impl AbiEncode for str[57] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[58] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -719,6 +933,9 @@ impl AbiEncode for str[58] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[59] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -727,6 +944,9 @@ impl AbiEncode for str[59] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[60] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -735,6 +955,9 @@ impl AbiEncode for str[60] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[61] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -743,6 +966,9 @@ impl AbiEncode for str[61] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[62] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -751,6 +977,9 @@ impl AbiEncode for str[62] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[63] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -759,6 +988,9 @@ impl AbiEncode for str[63] { } #[cfg(experimental_const_generics = false)] impl AbiEncode for str[64] { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -770,6 +1002,9 @@ impl AbiEncode for str[64] { // Encode Arrays and Slices impl AbiEncode for raw_slice { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { Buffer { buffer: __encode_buffer_append(buffer.buffer, self), @@ -782,6 +1017,9 @@ impl AbiEncode for [T; N] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -800,6 +1038,9 @@ impl AbiEncode for [T; 0] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { buffer } @@ -811,6 +1052,9 @@ impl AbiEncode for [T; 1] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -826,6 +1070,9 @@ impl AbiEncode for [T; 2] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -841,6 +1088,9 @@ impl AbiEncode for [T; 3] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -856,6 +1106,9 @@ impl AbiEncode for [T; 4] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -871,6 +1124,9 @@ impl AbiEncode for [T; 5] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -886,6 +1142,9 @@ impl AbiEncode for [T; 6] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -901,6 +1160,9 @@ impl AbiEncode for [T; 7] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -916,6 +1178,9 @@ impl AbiEncode for [T; 8] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -931,6 +1196,9 @@ impl AbiEncode for [T; 9] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -946,6 +1214,9 @@ impl AbiEncode for [T; 10] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -961,6 +1232,9 @@ impl AbiEncode for [T; 11] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -976,6 +1250,9 @@ impl AbiEncode for [T; 12] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -991,6 +1268,9 @@ impl AbiEncode for [T; 13] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1006,6 +1286,9 @@ impl AbiEncode for [T; 14] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1021,6 +1304,9 @@ impl AbiEncode for [T; 15] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1036,6 +1322,9 @@ impl AbiEncode for [T; 16] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1051,6 +1340,9 @@ impl AbiEncode for [T; 17] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1066,6 +1358,9 @@ impl AbiEncode for [T; 18] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1081,6 +1376,9 @@ impl AbiEncode for [T; 19] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1096,6 +1394,9 @@ impl AbiEncode for [T; 20] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1111,6 +1412,9 @@ impl AbiEncode for [T; 21] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1126,6 +1430,9 @@ impl AbiEncode for [T; 22] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1141,6 +1448,9 @@ impl AbiEncode for [T; 23] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1156,6 +1466,9 @@ impl AbiEncode for [T; 24] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1171,6 +1484,9 @@ impl AbiEncode for [T; 25] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1186,6 +1502,9 @@ impl AbiEncode for [T; 26] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1201,6 +1520,9 @@ impl AbiEncode for [T; 27] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1216,6 +1538,9 @@ impl AbiEncode for [T; 28] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1231,6 +1556,9 @@ impl AbiEncode for [T; 29] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1246,6 +1574,9 @@ impl AbiEncode for [T; 30] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1261,6 +1592,9 @@ impl AbiEncode for [T; 31] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1276,6 +1610,9 @@ impl AbiEncode for [T; 32] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1291,6 +1628,9 @@ impl AbiEncode for [T; 33] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1306,6 +1646,9 @@ impl AbiEncode for [T; 34] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1321,6 +1664,9 @@ impl AbiEncode for [T; 35] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1336,6 +1682,9 @@ impl AbiEncode for [T; 36] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1351,6 +1700,9 @@ impl AbiEncode for [T; 37] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1366,6 +1718,9 @@ impl AbiEncode for [T; 38] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1381,6 +1736,9 @@ impl AbiEncode for [T; 39] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1396,6 +1754,9 @@ impl AbiEncode for [T; 40] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1411,6 +1772,9 @@ impl AbiEncode for [T; 41] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1426,6 +1790,9 @@ impl AbiEncode for [T; 42] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1441,6 +1808,9 @@ impl AbiEncode for [T; 43] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1456,6 +1826,9 @@ impl AbiEncode for [T; 44] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1471,6 +1844,9 @@ impl AbiEncode for [T; 45] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1486,6 +1862,9 @@ impl AbiEncode for [T; 46] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1501,6 +1880,9 @@ impl AbiEncode for [T; 47] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1516,6 +1898,9 @@ impl AbiEncode for [T; 48] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1531,6 +1916,9 @@ impl AbiEncode for [T; 49] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1546,6 +1934,9 @@ impl AbiEncode for [T; 50] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1561,6 +1952,9 @@ impl AbiEncode for [T; 51] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1576,6 +1970,9 @@ impl AbiEncode for [T; 52] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1591,6 +1988,9 @@ impl AbiEncode for [T; 53] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1606,6 +2006,9 @@ impl AbiEncode for [T; 54] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1621,6 +2024,9 @@ impl AbiEncode for [T; 55] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1636,6 +2042,9 @@ impl AbiEncode for [T; 56] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1651,6 +2060,9 @@ impl AbiEncode for [T; 57] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1666,6 +2078,9 @@ impl AbiEncode for [T; 58] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1681,6 +2096,9 @@ impl AbiEncode for [T; 59] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1696,6 +2114,9 @@ impl AbiEncode for [T; 60] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1711,6 +2132,9 @@ impl AbiEncode for [T; 61] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1726,6 +2150,9 @@ impl AbiEncode for [T; 62] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1741,6 +2168,9 @@ impl AbiEncode for [T; 63] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1756,6 +2186,9 @@ impl AbiEncode for [T; 64] where T: AbiEncode, { + fn is_encode_trivial() -> bool { + is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let mut buffer = buffer; let mut i = 0; @@ -1771,6 +2204,9 @@ where // Encode Tuples impl AbiEncode for () { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { buffer } @@ -1781,6 +2217,9 @@ impl AbiEncode for (A, ) where A: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); buffer @@ -1791,6 +2230,9 @@ where A: AbiEncode, B: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1803,6 +2245,9 @@ where B: AbiEncode, C: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1817,6 +2262,9 @@ where C: AbiEncode, D: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1833,6 +2281,9 @@ where D: AbiEncode, E: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1851,6 +2302,9 @@ where E: AbiEncode, F: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1871,6 +2325,9 @@ where F: AbiEncode, G: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1893,6 +2350,9 @@ where G: AbiEncode, H: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1917,6 +2377,9 @@ where H: AbiEncode, I: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1943,6 +2406,9 @@ where I: AbiEncode, J: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -1971,6 +2437,9 @@ where J: AbiEncode, K: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2001,6 +2470,9 @@ where K: AbiEncode, L: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2033,6 +2505,9 @@ where L: AbiEncode, M: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2067,6 +2542,9 @@ where M: AbiEncode, N: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2103,6 +2581,9 @@ where N: AbiEncode, O: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2141,6 +2622,9 @@ where O: AbiEncode, P: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2223,6 +2710,9 @@ where Q: AbiEncode, R: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2267,6 +2757,9 @@ where R: AbiEncode, S: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2313,6 +2806,9 @@ where S: AbiEncode, T: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2361,6 +2857,9 @@ where T: AbiEncode, U: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2411,6 +2910,9 @@ where U: AbiEncode, V: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2463,6 +2965,9 @@ where V: AbiEncode, W: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2517,6 +3022,9 @@ where W: AbiEncode, X: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2573,6 +3081,9 @@ where X: AbiEncode, Y: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2631,6 +3142,9 @@ where Y: AbiEncode, Z: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::

() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2667,10 +3181,7 @@ pub fn encode(item: T) -> raw_slice where T: AbiEncode, { - let RMI: u64 = __runtime_mem_id::(); - let EMI: u64 = __encoding_mem_id::(); - - if RMI == EMI { + if is_encode_trivial::() { let size = __size_of::(); let ptr = asm(size: size, src: &item) { aloc size; @@ -2686,29 +3197,45 @@ where } } -pub fn encode_and_return(item: T) -> ! +pub fn encode_and_return(item: &T) -> ! where T: AbiEncode, { - let RMI: u64 = __runtime_mem_id::(); - let EMI: u64 = __encoding_mem_id::(); - - if RMI == EMI { + if is_encode_trivial::() { let size = __size_of::(); - __contract_ret(&item, size); + __contract_ret(item, size); } else { + let item = *item; let buffer = item.abi_encode(Buffer::new()); __contract_ret(buffer.buffer.0, buffer.buffer.2); } } +pub fn encode_configurable(item: T) -> raw_slice +where + T: AbiEncode, +{ + let buffer = item.abi_encode(Buffer::new()); + buffer.as_raw_slice() +} + #[inline(never)] pub fn abi_decode(data: raw_slice) -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_parts(data.ptr(), data.len::()); - T::abi_decode(buffer) + if is_decode_trivial::() { + let size = __size_of::(); + let item: &T = asm(size: size, src: data.ptr()) { + aloc size; + mcp hp src size; + hp: &T + }; + *item + } else { + let mut buffer = BufferReader::from_parts(data.ptr(), data.len::()); + T::abi_decode(buffer) + } } #[inline(never)] @@ -2716,36 +3243,52 @@ pub fn abi_decode_in_place(ptr: raw_ptr, len: u64, target: raw_ptr) where T: AbiDecode, { - let mut buffer = BufferReader::from_parts(ptr, len); - let temp = T::abi_decode(buffer); - asm( - target: target, - temp: __addr_of(temp), - size: __size_of::(), - ) { - mcp target temp size; + if is_decode_trivial::() { + asm(src: ptr, target: target, len: len) { + mcp target src len; + } + } else { + let mut buffer = BufferReader::from_parts(ptr, len); + let temp = T::abi_decode(buffer); + asm( + target: target, + temp: __addr_of(temp), + size: __size_of::(), + ) { + mcp target temp size; + } } } // Decode pub trait AbiDecode { + fn is_decode_trivial() -> bool; fn abi_decode(ref mut buffer: BufferReader) -> Self; } impl AbiDecode for b256 { + fn is_decode_trivial() -> bool { + true + } fn abi_decode(ref mut buffer: BufferReader) -> b256 { buffer.read_32_bytes::() } } impl AbiDecode for u256 { + fn is_decode_trivial() -> bool { + true + } fn abi_decode(ref mut buffer: BufferReader) -> u256 { buffer.read_32_bytes::() } } impl AbiDecode for u64 { + fn is_decode_trivial() -> bool { + true + } fn abi_decode(ref mut buffer: BufferReader) -> u64 { buffer.read_8_bytes::() } @@ -2764,6 +3307,9 @@ pub fn as_u32(input: u8) -> u32 { } impl AbiDecode for u32 { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> u32 { let a = as_u32(buffer.read::()); let b = as_u32(buffer.read::()); @@ -2774,6 +3320,9 @@ impl AbiDecode for u32 { } impl AbiDecode for u16 { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> u16 { let a = as_u16(buffer.read::()); let b = as_u16(buffer.read::()); @@ -2782,12 +3331,18 @@ impl AbiDecode for u16 { } impl AbiDecode for u8 { + fn is_decode_trivial() -> bool { + true + } fn abi_decode(ref mut buffer: BufferReader) -> u8 { buffer.read::() } } impl AbiDecode for bool { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> bool { match buffer.read::() { 0 => false, @@ -2798,6 +3353,9 @@ impl AbiDecode for bool { } impl AbiDecode for raw_slice { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> raw_slice { let len = buffer.read_8_bytes::(); buffer.read_bytes(len) @@ -2805,6 +3363,9 @@ impl AbiDecode for raw_slice { } impl AbiDecode for str { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str { let len = buffer.read_8_bytes::(); let data = buffer.read_bytes(len); @@ -2816,6 +3377,10 @@ impl AbiDecode for str { #[cfg(experimental_const_generics = true)] impl AbiDecode for str[N] { + // see comments on `is_encode_trivial` for str[N] above + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[N] { let data = buffer.read_bytes(N); asm(s: data.ptr()) { @@ -2826,6 +3391,9 @@ impl AbiDecode for str[N] { #[cfg(experimental_const_generics = false)] impl AbiDecode for str[0] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut _buffer: BufferReader) -> str[0] { __to_str_array("") } @@ -2834,6 +3402,9 @@ impl AbiDecode for str[0] { // BEGIN STRARRAY_DECODE #[cfg(experimental_const_generics = false)] impl AbiDecode for str[1] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[1] { let data = buffer.read_bytes(1); asm(s: data.ptr()) { @@ -2843,6 +3414,9 @@ impl AbiDecode for str[1] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[2] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[2] { let data = buffer.read_bytes(2); asm(s: data.ptr()) { @@ -2852,6 +3426,9 @@ impl AbiDecode for str[2] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[3] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[3] { let data = buffer.read_bytes(3); asm(s: data.ptr()) { @@ -2861,6 +3438,9 @@ impl AbiDecode for str[3] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[4] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[4] { let data = buffer.read_bytes(4); asm(s: data.ptr()) { @@ -2870,6 +3450,9 @@ impl AbiDecode for str[4] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[5] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[5] { let data = buffer.read_bytes(5); asm(s: data.ptr()) { @@ -2879,6 +3462,9 @@ impl AbiDecode for str[5] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[6] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[6] { let data = buffer.read_bytes(6); asm(s: data.ptr()) { @@ -2888,6 +3474,9 @@ impl AbiDecode for str[6] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[7] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[7] { let data = buffer.read_bytes(7); asm(s: data.ptr()) { @@ -2897,6 +3486,9 @@ impl AbiDecode for str[7] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[8] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[8] { let data = buffer.read_bytes(8); asm(s: data.ptr()) { @@ -2906,6 +3498,9 @@ impl AbiDecode for str[8] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[9] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[9] { let data = buffer.read_bytes(9); asm(s: data.ptr()) { @@ -2915,6 +3510,9 @@ impl AbiDecode for str[9] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[10] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[10] { let data = buffer.read_bytes(10); asm(s: data.ptr()) { @@ -2924,6 +3522,9 @@ impl AbiDecode for str[10] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[11] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[11] { let data = buffer.read_bytes(11); asm(s: data.ptr()) { @@ -2933,6 +3534,9 @@ impl AbiDecode for str[11] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[12] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[12] { let data = buffer.read_bytes(12); asm(s: data.ptr()) { @@ -2942,6 +3546,9 @@ impl AbiDecode for str[12] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[13] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[13] { let data = buffer.read_bytes(13); asm(s: data.ptr()) { @@ -2951,6 +3558,9 @@ impl AbiDecode for str[13] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[14] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[14] { let data = buffer.read_bytes(14); asm(s: data.ptr()) { @@ -2960,6 +3570,9 @@ impl AbiDecode for str[14] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[15] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[15] { let data = buffer.read_bytes(15); asm(s: data.ptr()) { @@ -2969,6 +3582,9 @@ impl AbiDecode for str[15] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[16] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[16] { let data = buffer.read_bytes(16); asm(s: data.ptr()) { @@ -2978,6 +3594,9 @@ impl AbiDecode for str[16] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[17] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[17] { let data = buffer.read_bytes(17); asm(s: data.ptr()) { @@ -2987,6 +3606,9 @@ impl AbiDecode for str[17] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[18] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[18] { let data = buffer.read_bytes(18); asm(s: data.ptr()) { @@ -2996,6 +3618,9 @@ impl AbiDecode for str[18] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[19] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[19] { let data = buffer.read_bytes(19); asm(s: data.ptr()) { @@ -3005,6 +3630,9 @@ impl AbiDecode for str[19] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[20] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[20] { let data = buffer.read_bytes(20); asm(s: data.ptr()) { @@ -3014,6 +3642,9 @@ impl AbiDecode for str[20] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[21] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[21] { let data = buffer.read_bytes(21); asm(s: data.ptr()) { @@ -3023,6 +3654,9 @@ impl AbiDecode for str[21] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[22] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[22] { let data = buffer.read_bytes(22); asm(s: data.ptr()) { @@ -3032,6 +3666,9 @@ impl AbiDecode for str[22] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[23] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[23] { let data = buffer.read_bytes(23); asm(s: data.ptr()) { @@ -3041,6 +3678,9 @@ impl AbiDecode for str[23] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[24] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[24] { let data = buffer.read_bytes(24); asm(s: data.ptr()) { @@ -3050,6 +3690,9 @@ impl AbiDecode for str[24] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[25] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[25] { let data = buffer.read_bytes(25); asm(s: data.ptr()) { @@ -3059,6 +3702,9 @@ impl AbiDecode for str[25] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[26] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[26] { let data = buffer.read_bytes(26); asm(s: data.ptr()) { @@ -3068,6 +3714,9 @@ impl AbiDecode for str[26] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[27] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[27] { let data = buffer.read_bytes(27); asm(s: data.ptr()) { @@ -3077,6 +3726,9 @@ impl AbiDecode for str[27] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[28] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[28] { let data = buffer.read_bytes(28); asm(s: data.ptr()) { @@ -3086,6 +3738,9 @@ impl AbiDecode for str[28] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[29] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[29] { let data = buffer.read_bytes(29); asm(s: data.ptr()) { @@ -3095,6 +3750,9 @@ impl AbiDecode for str[29] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[30] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[30] { let data = buffer.read_bytes(30); asm(s: data.ptr()) { @@ -3104,6 +3762,9 @@ impl AbiDecode for str[30] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[31] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[31] { let data = buffer.read_bytes(31); asm(s: data.ptr()) { @@ -3113,6 +3774,9 @@ impl AbiDecode for str[31] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[32] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[32] { let data = buffer.read_bytes(32); asm(s: data.ptr()) { @@ -3122,6 +3786,9 @@ impl AbiDecode for str[32] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[33] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[33] { let data = buffer.read_bytes(33); asm(s: data.ptr()) { @@ -3131,6 +3798,9 @@ impl AbiDecode for str[33] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[34] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[34] { let data = buffer.read_bytes(34); asm(s: data.ptr()) { @@ -3140,6 +3810,9 @@ impl AbiDecode for str[34] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[35] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[35] { let data = buffer.read_bytes(35); asm(s: data.ptr()) { @@ -3149,6 +3822,9 @@ impl AbiDecode for str[35] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[36] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[36] { let data = buffer.read_bytes(36); asm(s: data.ptr()) { @@ -3158,6 +3834,9 @@ impl AbiDecode for str[36] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[37] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[37] { let data = buffer.read_bytes(37); asm(s: data.ptr()) { @@ -3167,6 +3846,9 @@ impl AbiDecode for str[37] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[38] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[38] { let data = buffer.read_bytes(38); asm(s: data.ptr()) { @@ -3176,6 +3858,9 @@ impl AbiDecode for str[38] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[39] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[39] { let data = buffer.read_bytes(39); asm(s: data.ptr()) { @@ -3185,6 +3870,9 @@ impl AbiDecode for str[39] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[40] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[40] { let data = buffer.read_bytes(40); asm(s: data.ptr()) { @@ -3194,6 +3882,9 @@ impl AbiDecode for str[40] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[41] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[41] { let data = buffer.read_bytes(41); asm(s: data.ptr()) { @@ -3203,6 +3894,9 @@ impl AbiDecode for str[41] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[42] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[42] { let data = buffer.read_bytes(42); asm(s: data.ptr()) { @@ -3212,6 +3906,9 @@ impl AbiDecode for str[42] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[43] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[43] { let data = buffer.read_bytes(43); asm(s: data.ptr()) { @@ -3221,6 +3918,9 @@ impl AbiDecode for str[43] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[44] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[44] { let data = buffer.read_bytes(44); asm(s: data.ptr()) { @@ -3230,6 +3930,9 @@ impl AbiDecode for str[44] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[45] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[45] { let data = buffer.read_bytes(45); asm(s: data.ptr()) { @@ -3239,6 +3942,9 @@ impl AbiDecode for str[45] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[46] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[46] { let data = buffer.read_bytes(46); asm(s: data.ptr()) { @@ -3248,6 +3954,9 @@ impl AbiDecode for str[46] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[47] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[47] { let data = buffer.read_bytes(47); asm(s: data.ptr()) { @@ -3257,6 +3966,9 @@ impl AbiDecode for str[47] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[48] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[48] { let data = buffer.read_bytes(48); asm(s: data.ptr()) { @@ -3266,6 +3978,9 @@ impl AbiDecode for str[48] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[49] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[49] { let data = buffer.read_bytes(49); asm(s: data.ptr()) { @@ -3275,6 +3990,9 @@ impl AbiDecode for str[49] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[50] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[50] { let data = buffer.read_bytes(50); asm(s: data.ptr()) { @@ -3284,6 +4002,9 @@ impl AbiDecode for str[50] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[51] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[51] { let data = buffer.read_bytes(51); asm(s: data.ptr()) { @@ -3293,6 +4014,9 @@ impl AbiDecode for str[51] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[52] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[52] { let data = buffer.read_bytes(52); asm(s: data.ptr()) { @@ -3302,6 +4026,9 @@ impl AbiDecode for str[52] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[53] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[53] { let data = buffer.read_bytes(53); asm(s: data.ptr()) { @@ -3311,6 +4038,9 @@ impl AbiDecode for str[53] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[54] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[54] { let data = buffer.read_bytes(54); asm(s: data.ptr()) { @@ -3320,6 +4050,9 @@ impl AbiDecode for str[54] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[55] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[55] { let data = buffer.read_bytes(55); asm(s: data.ptr()) { @@ -3329,6 +4062,9 @@ impl AbiDecode for str[55] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[56] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[56] { let data = buffer.read_bytes(56); asm(s: data.ptr()) { @@ -3338,6 +4074,9 @@ impl AbiDecode for str[56] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[57] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[57] { let data = buffer.read_bytes(57); asm(s: data.ptr()) { @@ -3347,6 +4086,9 @@ impl AbiDecode for str[57] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[58] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[58] { let data = buffer.read_bytes(58); asm(s: data.ptr()) { @@ -3356,6 +4098,9 @@ impl AbiDecode for str[58] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[59] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[59] { let data = buffer.read_bytes(59); asm(s: data.ptr()) { @@ -3365,6 +4110,9 @@ impl AbiDecode for str[59] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[60] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[60] { let data = buffer.read_bytes(60); asm(s: data.ptr()) { @@ -3374,6 +4122,9 @@ impl AbiDecode for str[60] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[61] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[61] { let data = buffer.read_bytes(61); asm(s: data.ptr()) { @@ -3383,6 +4134,9 @@ impl AbiDecode for str[61] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[62] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[62] { let data = buffer.read_bytes(62); asm(s: data.ptr()) { @@ -3392,6 +4146,9 @@ impl AbiDecode for str[62] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[63] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[63] { let data = buffer.read_bytes(63); asm(s: data.ptr()) { @@ -3401,6 +4158,9 @@ impl AbiDecode for str[63] { } #[cfg(experimental_const_generics = false)] impl AbiDecode for str[64] { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> str[64] { let data = buffer.read_bytes(64); asm(s: data.ptr()) { @@ -3415,6 +4175,9 @@ impl AbiDecode for [T; N] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; N] { const LENGTH: u64 = __size_of::() * N; let mut array = [0u8; LENGTH]; @@ -3437,6 +4200,9 @@ impl AbiDecode for [T; 0] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut _buffer: BufferReader) -> [T; 0] { [] } @@ -3448,6 +4214,9 @@ impl AbiDecode for [T; 1] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 1] { let first: T = buffer.decode::(); let mut array = [first; 1]; @@ -3464,6 +4233,9 @@ impl AbiDecode for [T; 2] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 2] { let first: T = buffer.decode::(); let mut array = [first; 2]; @@ -3480,6 +4252,9 @@ impl AbiDecode for [T; 3] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 3] { let first: T = buffer.decode::(); let mut array = [first; 3]; @@ -3496,6 +4271,9 @@ impl AbiDecode for [T; 4] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 4] { let first: T = buffer.decode::(); let mut array = [first; 4]; @@ -3512,6 +4290,9 @@ impl AbiDecode for [T; 5] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 5] { let first: T = buffer.decode::(); let mut array = [first; 5]; @@ -3528,6 +4309,9 @@ impl AbiDecode for [T; 6] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 6] { let first: T = buffer.decode::(); let mut array = [first; 6]; @@ -3544,6 +4328,9 @@ impl AbiDecode for [T; 7] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 7] { let first: T = buffer.decode::(); let mut array = [first; 7]; @@ -3560,6 +4347,9 @@ impl AbiDecode for [T; 8] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 8] { let first: T = buffer.decode::(); let mut array = [first; 8]; @@ -3576,6 +4366,9 @@ impl AbiDecode for [T; 9] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 9] { let first: T = buffer.decode::(); let mut array = [first; 9]; @@ -3592,6 +4385,9 @@ impl AbiDecode for [T; 10] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 10] { let first: T = buffer.decode::(); let mut array = [first; 10]; @@ -3608,6 +4404,9 @@ impl AbiDecode for [T; 11] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 11] { let first: T = buffer.decode::(); let mut array = [first; 11]; @@ -3624,6 +4423,9 @@ impl AbiDecode for [T; 12] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 12] { let first: T = buffer.decode::(); let mut array = [first; 12]; @@ -3640,6 +4442,9 @@ impl AbiDecode for [T; 13] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 13] { let first: T = buffer.decode::(); let mut array = [first; 13]; @@ -3656,6 +4461,9 @@ impl AbiDecode for [T; 14] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 14] { let first: T = buffer.decode::(); let mut array = [first; 14]; @@ -3672,6 +4480,9 @@ impl AbiDecode for [T; 15] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 15] { let first: T = buffer.decode::(); let mut array = [first; 15]; @@ -3688,6 +4499,9 @@ impl AbiDecode for [T; 16] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 16] { let first: T = buffer.decode::(); let mut array = [first; 16]; @@ -3704,6 +4518,9 @@ impl AbiDecode for [T; 17] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 17] { let first: T = buffer.decode::(); let mut array = [first; 17]; @@ -3720,6 +4537,9 @@ impl AbiDecode for [T; 18] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 18] { let first: T = buffer.decode::(); let mut array = [first; 18]; @@ -3736,6 +4556,9 @@ impl AbiDecode for [T; 19] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 19] { let first: T = buffer.decode::(); let mut array = [first; 19]; @@ -3752,6 +4575,9 @@ impl AbiDecode for [T; 20] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 20] { let first: T = buffer.decode::(); let mut array = [first; 20]; @@ -3768,6 +4594,9 @@ impl AbiDecode for [T; 21] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 21] { let first: T = buffer.decode::(); let mut array = [first; 21]; @@ -3784,6 +4613,9 @@ impl AbiDecode for [T; 22] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 22] { let first: T = buffer.decode::(); let mut array = [first; 22]; @@ -3800,6 +4632,9 @@ impl AbiDecode for [T; 23] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 23] { let first: T = buffer.decode::(); let mut array = [first; 23]; @@ -3816,6 +4651,9 @@ impl AbiDecode for [T; 24] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 24] { let first: T = buffer.decode::(); let mut array = [first; 24]; @@ -3832,6 +4670,9 @@ impl AbiDecode for [T; 25] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 25] { let first: T = buffer.decode::(); let mut array = [first; 25]; @@ -3848,6 +4689,9 @@ impl AbiDecode for [T; 26] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 26] { let first: T = buffer.decode::(); let mut array = [first; 26]; @@ -3864,6 +4708,9 @@ impl AbiDecode for [T; 27] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 27] { let first: T = buffer.decode::(); let mut array = [first; 27]; @@ -3880,6 +4727,9 @@ impl AbiDecode for [T; 28] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 28] { let first: T = buffer.decode::(); let mut array = [first; 28]; @@ -3896,6 +4746,9 @@ impl AbiDecode for [T; 29] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 29] { let first: T = buffer.decode::(); let mut array = [first; 29]; @@ -3912,6 +4765,9 @@ impl AbiDecode for [T; 30] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 30] { let first: T = buffer.decode::(); let mut array = [first; 30]; @@ -3928,6 +4784,9 @@ impl AbiDecode for [T; 31] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 31] { let first: T = buffer.decode::(); let mut array = [first; 31]; @@ -3944,6 +4803,9 @@ impl AbiDecode for [T; 32] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 32] { let first: T = buffer.decode::(); let mut array = [first; 32]; @@ -3960,6 +4822,9 @@ impl AbiDecode for [T; 33] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 33] { let first: T = buffer.decode::(); let mut array = [first; 33]; @@ -3976,6 +4841,9 @@ impl AbiDecode for [T; 34] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 34] { let first: T = buffer.decode::(); let mut array = [first; 34]; @@ -3992,6 +4860,9 @@ impl AbiDecode for [T; 35] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 35] { let first: T = buffer.decode::(); let mut array = [first; 35]; @@ -4008,6 +4879,9 @@ impl AbiDecode for [T; 36] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 36] { let first: T = buffer.decode::(); let mut array = [first; 36]; @@ -4024,6 +4898,9 @@ impl AbiDecode for [T; 37] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 37] { let first: T = buffer.decode::(); let mut array = [first; 37]; @@ -4040,6 +4917,9 @@ impl AbiDecode for [T; 38] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 38] { let first: T = buffer.decode::(); let mut array = [first; 38]; @@ -4056,6 +4936,9 @@ impl AbiDecode for [T; 39] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 39] { let first: T = buffer.decode::(); let mut array = [first; 39]; @@ -4072,6 +4955,9 @@ impl AbiDecode for [T; 40] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 40] { let first: T = buffer.decode::(); let mut array = [first; 40]; @@ -4088,6 +4974,9 @@ impl AbiDecode for [T; 41] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 41] { let first: T = buffer.decode::(); let mut array = [first; 41]; @@ -4104,6 +4993,9 @@ impl AbiDecode for [T; 42] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 42] { let first: T = buffer.decode::(); let mut array = [first; 42]; @@ -4120,6 +5012,9 @@ impl AbiDecode for [T; 43] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 43] { let first: T = buffer.decode::(); let mut array = [first; 43]; @@ -4136,6 +5031,9 @@ impl AbiDecode for [T; 44] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 44] { let first: T = buffer.decode::(); let mut array = [first; 44]; @@ -4152,6 +5050,9 @@ impl AbiDecode for [T; 45] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 45] { let first: T = buffer.decode::(); let mut array = [first; 45]; @@ -4168,6 +5069,9 @@ impl AbiDecode for [T; 46] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 46] { let first: T = buffer.decode::(); let mut array = [first; 46]; @@ -4184,6 +5088,9 @@ impl AbiDecode for [T; 47] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 47] { let first: T = buffer.decode::(); let mut array = [first; 47]; @@ -4200,6 +5107,9 @@ impl AbiDecode for [T; 48] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 48] { let first: T = buffer.decode::(); let mut array = [first; 48]; @@ -4216,6 +5126,9 @@ impl AbiDecode for [T; 49] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 49] { let first: T = buffer.decode::(); let mut array = [first; 49]; @@ -4232,6 +5145,9 @@ impl AbiDecode for [T; 50] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 50] { let first: T = buffer.decode::(); let mut array = [first; 50]; @@ -4248,6 +5164,9 @@ impl AbiDecode for [T; 51] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 51] { let first: T = buffer.decode::(); let mut array = [first; 51]; @@ -4264,6 +5183,9 @@ impl AbiDecode for [T; 52] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 52] { let first: T = buffer.decode::(); let mut array = [first; 52]; @@ -4280,6 +5202,9 @@ impl AbiDecode for [T; 53] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 53] { let first: T = buffer.decode::(); let mut array = [first; 53]; @@ -4296,6 +5221,9 @@ impl AbiDecode for [T; 54] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 54] { let first: T = buffer.decode::(); let mut array = [first; 54]; @@ -4312,6 +5240,9 @@ impl AbiDecode for [T; 55] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 55] { let first: T = buffer.decode::(); let mut array = [first; 55]; @@ -4328,6 +5259,9 @@ impl AbiDecode for [T; 56] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 56] { let first: T = buffer.decode::(); let mut array = [first; 56]; @@ -4344,6 +5278,9 @@ impl AbiDecode for [T; 57] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 57] { let first: T = buffer.decode::(); let mut array = [first; 57]; @@ -4360,6 +5297,9 @@ impl AbiDecode for [T; 58] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 58] { let first: T = buffer.decode::(); let mut array = [first; 58]; @@ -4376,6 +5316,9 @@ impl AbiDecode for [T; 59] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 59] { let first: T = buffer.decode::(); let mut array = [first; 59]; @@ -4392,6 +5335,9 @@ impl AbiDecode for [T; 60] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 60] { let first: T = buffer.decode::(); let mut array = [first; 60]; @@ -4408,6 +5354,9 @@ impl AbiDecode for [T; 61] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 61] { let first: T = buffer.decode::(); let mut array = [first; 61]; @@ -4424,6 +5373,9 @@ impl AbiDecode for [T; 62] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 62] { let first: T = buffer.decode::(); let mut array = [first; 62]; @@ -4440,6 +5392,9 @@ impl AbiDecode for [T; 63] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 63] { let first: T = buffer.decode::(); let mut array = [first; 63]; @@ -4456,6 +5411,9 @@ impl AbiDecode for [T; 64] where T: AbiDecode, { + fn is_decode_trivial() -> bool { + is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> [T; 64] { let first: T = buffer.decode::(); let mut array = [first; 64]; @@ -4470,6 +5428,9 @@ where // END ARRAY_DECODE impl AbiDecode for () { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut _buffer: BufferReader) -> () { () } @@ -4480,6 +5441,9 @@ impl AbiDecode for (A, ) where A: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { (A::abi_decode(buffer), ) } @@ -4489,6 +5453,9 @@ where A: AbiDecode, B: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { (A::abi_decode(buffer), B::abi_decode(buffer)) } @@ -4499,6 +5466,9 @@ where B: AbiDecode, C: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { (A::abi_decode(buffer), B::abi_decode(buffer), C::abi_decode(buffer)) } @@ -4510,6 +5480,9 @@ where C: AbiDecode, D: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4527,6 +5500,9 @@ where D: AbiDecode, E: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4546,6 +5522,9 @@ where E: AbiDecode, F: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4567,6 +5546,9 @@ where F: AbiDecode, G: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4590,6 +5572,9 @@ where G: AbiDecode, H: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4615,6 +5600,9 @@ where H: AbiDecode, I: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4642,6 +5630,9 @@ where I: AbiDecode, J: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4671,6 +5662,9 @@ where J: AbiDecode, K: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4702,6 +5696,9 @@ where K: AbiDecode, L: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4735,6 +5732,9 @@ where L: AbiDecode, M: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4770,6 +5770,9 @@ where M: AbiDecode, N: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4807,6 +5810,9 @@ where N: AbiDecode, O: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4846,6 +5852,9 @@ where O: AbiDecode, P: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4887,6 +5896,9 @@ where P: AbiDecode, Q: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4930,6 +5942,9 @@ where Q: AbiDecode, R: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -4975,6 +5990,9 @@ where R: AbiDecode, S: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5022,6 +6040,9 @@ where S: AbiDecode, T: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5071,6 +6092,9 @@ where T: AbiDecode, U: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5122,6 +6146,9 @@ where U: AbiDecode, V: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5175,6 +6202,9 @@ where V: AbiDecode, W: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5230,6 +6260,9 @@ where W: AbiDecode, X: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5287,6 +6320,9 @@ where X: AbiDecode, Y: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5346,6 +6382,9 @@ where Y: AbiDecode, Z: AbiDecode, { + fn is_decode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::

() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() && is_decode_trivial::() + } fn abi_decode(ref mut buffer: BufferReader) -> Self { ( A::abi_decode(buffer), @@ -5407,57 +6446,61 @@ where let ptr = asm() { ret: raw_ptr }; - let len = asm() { - retl: u64 - }; - let mut buffer = BufferReader::from_parts(ptr, len); - T::abi_decode(buffer) + decode_from_raw_ptr::(ptr) +} + +#[inline(always)] +pub fn decode_from_raw_ptr(ptr: raw_ptr) -> T +where + T: AbiDecode, +{ + if is_decode_trivial::() { + let ptr: &T = __transmute::(ptr); + *ptr + } else { + let mut buffer = BufferReader { ptr }; + T::abi_decode(buffer) + } } pub fn decode_script_data() -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_script_data(); - T::abi_decode(buffer) + decode_from_raw_ptr::(BufferReader::from_script_data()) } pub fn decode_predicate_data() -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_predicate_data(); - T::abi_decode(buffer) + decode_from_raw_ptr::(BufferReader::from_predicate_data()) } pub fn decode_predicate_data_by_index(index: u64) -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_predicate_data_by_index(index); - T::abi_decode(buffer) + decode_from_raw_ptr::(BufferReader::from_predicate_data_by_index(index)) } pub fn decode_first_param() -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_first_parameter(); - T::abi_decode(buffer) + decode_from_raw_ptr::(BufferReader::from_first_parameter()) } pub fn decode_second_param() -> T where T: AbiDecode, { - let mut buffer = BufferReader::from_second_parameter(); - T::abi_decode(buffer) + decode_from_raw_ptr::(BufferReader::from_second_parameter()) } // Tests - fn assert_encoding(value: T, expected: SLICE) where T: AbiEncode, diff --git a/sway-lib-std/src/string.sw b/sway-lib-std/src/string.sw index e946593b9ee..54869c93a27 100644 --- a/sway-lib-std/src/string.sw +++ b/sway-lib-std/src/string.sw @@ -376,12 +376,18 @@ impl Hash for String { } impl AbiEncode for String { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { self.bytes.abi_encode(buffer) } } impl AbiDecode for String { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> Self { String { bytes: Bytes::abi_decode(buffer), diff --git a/sway-lib-std/src/vec.sw b/sway-lib-std/src/vec.sw index 5b7183b0951..c0f0c94a96b 100644 --- a/sway-lib-std/src/vec.sw +++ b/sway-lib-std/src/vec.sw @@ -818,6 +818,9 @@ impl AbiEncode for Vec where T: AbiEncode, { + fn is_encode_trivial() -> bool { + false + } fn abi_encode(self, buffer: Buffer) -> Buffer { let len = self.len; let mut buffer = len.abi_encode(buffer); @@ -837,6 +840,9 @@ impl AbiDecode for Vec where T: AbiDecode, { + fn is_decode_trivial() -> bool { + false + } fn abi_decode(ref mut buffer: BufferReader) -> Vec { let len = u64::abi_decode(buffer); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index 95263d45937..7902c446148 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --ir final --asm final --bytecode --release exit status: 0 @@ -98,15 +99,15 @@ script { v42 = cmp eq v40 v41, !29 v43 = const bool false, !30 v44 = cmp eq v42 v43, !33 - cbr v44, assert_eq_38_block0(), assert_eq_38_block1(), !34 + cbr v44, assert_eq_42_block0(), assert_eq_42_block1(), !34 - assert_eq_38_block0(): - v45 = call log_42(v40), !37 - v46 = call log_42(v41), !40 + assert_eq_42_block0(): + v45 = call log_46(v40), !37 + v46 = call log_46(v41), !40 v47 = const u64 18446744073709486083 revert v47, !45 - assert_eq_38_block1(): + assert_eq_42_block1(): v48 = const unit () ret () v48 } @@ -300,121 +301,68 @@ script { } pub fn abi_decode_24(data: __ptr slice, __ret_value: __ptr [u8; 1]) -> (), !121 { - local mut { ptr, u64 } __aggr_memcpy_0 - local mut { ptr, u64 } __aggr_memcpy_00 - local { ptr, u64 } __anon_0 - local { ptr, u64 } __anon_00 - local { ptr } __anon_01 - local [u8; 1] __anon_02 - local mut [u8; 1] array - local mut { ptr } buffer - local slice data_ - local slice self_ - local slice self_0 - local slice slice_ + local { ptr, u64 } __anon_02 local slice slice_0 entry(data: __ptr slice, __ret_value: __ptr [u8; 1]): - v0 = get_local __ptr slice, data_ + v0 = get_local __ptr slice, slice_0, !126 mem_copy_val v0, data - v1 = get_local __ptr slice, data_, !122 - v2 = get_local __ptr slice, self_, !125 - mem_copy_val v2, v1 - v3 = get_local __ptr slice, self_, !127 - v4 = get_local __ptr slice, slice_, !130 - mem_copy_val v4, v3 - v5 = get_local __ptr slice, slice_, !132 - v6 = asm(ptr: v5) -> __ptr { ptr, u64 } ptr { - } - v7 = get_local __ptr { ptr, u64 }, __aggr_memcpy_0 - mem_copy_val v7, v6 - v8 = get_local __ptr { ptr, u64 }, __anon_0, !125 - mem_copy_val v8, v7 - v9 = const u64 0 - v10 = get_elem_ptr v8, __ptr ptr, v9, !134 - v11 = get_local __ptr slice, data_, !135 - v12 = get_local __ptr slice, self_0, !138 - mem_copy_val v12, v11 - v13 = get_local __ptr slice, self_0, !140 - v14 = get_local __ptr slice, slice_0, !143 - mem_copy_val v14, v13 - v15 = get_local __ptr slice, slice_0, !144 - v16 = asm(ptr: v15) -> __ptr { ptr, u64 } ptr { - } - v17 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 - mem_copy_val v17, v16 - v18 = get_local __ptr { ptr, u64 }, __anon_00, !138 - mem_copy_val v18, v17 - v19 = get_local __ptr { ptr }, __anon_01, !148 - v20 = const u64 0 - v21 = get_elem_ptr v19, __ptr ptr, v20, !149 - mem_copy_val v21, v10 - v22 = get_local __ptr { ptr }, buffer, !150 - mem_copy_val v22, v19 - v23 = get_local __ptr { ptr }, buffer, !151 - v24 = get_local __ptr [u8; 1], __anon_02, !155 - mem_clear_val v24, !156 - v25 = get_local __ptr [u8; 1], array, !158 - mem_copy_val v25, v24 - v26 = get_local __ptr [u8; 1], array, !160 - v27 = cast_ptr v26 to __ptr [u8; 1], !156 - v28 = const u64 0, !161 - br abi_decode_30_while(v28), !156 - - abi_decode_30_while(v29: u64): - v30 = const u64 1 - v31 = cmp lt v29 v30, !164 - cbr v31, abi_decode_30_while_body(), abi_decode_30_end_while(), !156 - - abi_decode_30_while_body(): - v32 = const u64 1 - v33 = asm(idx: v29, elem_ir_type_size: v32, ptr: v27, offset_temp, ptr_out) -> __ptr u8 ptr_out, !156 { - mul offset_temp idx elem_ir_type_size - add ptr_out ptr offset_temp + v1 = get_local __ptr slice, slice_0, !128 + v2 = asm(ptr: v1) -> __ptr { ptr, u64 } ptr { } - v34 = const u64 0 - v35 = get_elem_ptr v23, __ptr ptr, v34, !172 - v36 = load v35, !173 - v37 = asm(ptr: v36, val) -> u8 val, !175 { - lb val ptr i0, !176 + v3 = const u64 0 + v4 = get_elem_ptr v2, __ptr ptr, v3 + v5 = load v4 + v6 = const u64 1 + v7 = get_elem_ptr v2, __ptr u64, v6 + v8 = load v7 + v9 = get_local __ptr { ptr, u64 }, __anon_02, !129 + v10 = const u64 0 + v11 = get_elem_ptr v9, __ptr ptr, v10 + store v5 to v11 + v12 = const u64 1 + v13 = get_elem_ptr v9, __ptr u64, v12 + store v8 to v13 + v14 = const u64 0 + v15 = get_elem_ptr v9, __ptr ptr, v14, !131 + v16 = load v15, !129 + v17 = const u64 1 + v18 = asm(size: v17, src: v16) -> __ptr [u8; 1] hp, !132 { + aloc size, !133 + mcp hp src size, !134 } - v38 = load v35, !177 - v39 = const u64 1, !178 - v40 = add v38, v39, !179 - store v40 to v35, !181 - store v37 to v33, !183 - v41 = const u64 1, !184 - v42 = add v29, v41, !187 - br abi_decode_30_while(v42), !156 - - abi_decode_30_end_while(): - mem_copy_val __ret_value, v27 - v43 = const unit () - ret () v43 + v19 = const u64 0 + v20 = get_elem_ptr v18, __ptr u8, v19 + v21 = load v20 + v22 = const u64 0 + v23 = get_elem_ptr __ret_value, __ptr u8, v22 + store v21 to v23 + v24 = const unit () + ret () v24 } - pub fn log_42(value !189: u8) -> (), !192 { + pub fn log_46(value !136: u8) -> (), !139 { local mut slice __aggr_memcpy_0 local { ptr, u64 } __anon_0 local slice __log_arg local u8 item_ entry(value: u8): - v0 = get_local __ptr u8, item_, !193 - store value to v0, !193 - v1 = get_local __ptr u8, item_, !195 + v0 = get_local __ptr u8, item_, !140 + store value to v0, !140 + v1 = get_local __ptr u8, item_, !142 v2 = const u64 1 - v3 = asm(size: v2, src: v1) -> ptr hp, !197 { - aloc size, !198 - mcp hp src size, !199 + v3 = asm(size: v2, src: v1) -> ptr hp, !144 { + aloc size, !145 + mcp hp src size, !146 } - v4 = get_local __ptr { ptr, u64 }, __anon_0, !201 + v4 = get_local __ptr { ptr, u64 }, __anon_0, !148 v5 = const u64 0 - v6 = get_elem_ptr v4, __ptr ptr, v5, !202 - store v3 to v6, !203 + v6 = get_elem_ptr v4, __ptr ptr, v5, !149 + store v3 to v6, !150 v7 = const u64 1 - v8 = get_elem_ptr v4, __ptr u64, v7, !204 - store v2 to v8, !205 + v8 = get_elem_ptr v4, __ptr u64, v7, !151 + store v2 to v8, !152 v9 = asm(s: v4) -> __ptr slice s { } v10 = get_local __ptr slice, __aggr_memcpy_0 @@ -547,93 +495,40 @@ script { !116 = span !109 1257 1262 !117 = (!107 !108 !110 !111 !116) !118 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" -!119 = span !118 71747 71920 -!120 = fn_name_span !118 71754 71764 +!119 = span !118 93590 94015 +!120 = fn_name_span !118 93597 93607 !121 = (!119 !120 !48) -!122 = span !118 71862 71866 -!123 = span !118 71862 71872 -!124 = fn_call_path_span !118 71867 71870 -!125 = (!123 !124) -!126 = span !109 2922 2926 -!127 = (!123 !124 !126) -!128 = span !109 2911 2927 -!129 = fn_call_path_span !109 2911 2921 -!130 = (!123 !124 !128 !129) -!131 = span !109 1633 1638 -!132 = (!123 !124 !128 !129 !131) -!133 = span !109 2928 2929 -!134 = (!123 !124 !133) -!135 = span !118 71874 71878 -!136 = span !118 71874 71890 -!137 = fn_call_path_span !118 71879 71882 -!138 = (!136 !137) -!139 = span !109 3420 3424 -!140 = (!136 !137 !139) -!141 = span !109 3409 3425 -!142 = fn_call_path_span !109 3409 3419 -!143 = (!136 !137 !141 !142) -!144 = (!136 !137 !141 !142 !131) -!145 = span !118 71837 71891 -!146 = fn_call_path_span !118 71837 71861 -!147 = span !118 735 755 -!148 = (!145 !146 !147) -!149 = (!145 !146) -!150 = span !118 71820 71892 -!151 = span !118 71911 71917 -!152 = span !118 71897 71918 -!153 = fn_call_path_span !118 71897 71910 -!154 = span !118 90639 90652 -!155 = (!152 !153 !154) -!156 = (!152 !153) -!157 = span !118 90623 90653 -!158 = (!152 !153 !157) -!159 = span !118 90738 90743 -!160 = (!152 !153 !159) -!161 = span !118 90767 90768 -!162 = span !118 90785 90790 -!163 = fn_call_path_span !118 90787 90788 -!164 = (!152 !153 !162 !163) -!165 = span !118 90865 90885 -!166 = fn_call_path_span !118 90872 90878 -!167 = span !118 3959 3978 -!168 = fn_call_path_span !118 3959 3972 -!169 = span !118 73537 73556 -!170 = fn_call_path_span !118 73544 73548 -!171 = span !118 625 637 -!172 = (!152 !153 !165 !166 !167 !168 !169 !170 !171) -!173 = (!152 !153 !165 !166 !167 !168 !169 !170) -!174 = span !118 3640 3733 -!175 = (!152 !153 !165 !166 !167 !168 !169 !170 !174) -!176 = span !118 3682 3695 -!177 = (!152 !153 !165 !166 !167 !168 !169 !170) -!178 = (!152 !153 !165 !166 !167 !168 !169 !170) -!179 = (!152 !153 !165 !166 !167 !168 !169 !170) -!180 = span !118 3747 3786 -!181 = (!152 !153 !165 !166 !167 !168 !169 !170 !180) -!182 = span !118 90857 90885 -!183 = (!152 !153 !182) -!184 = span !118 90904 90905 -!185 = span !118 90899 90905 -!186 = fn_call_path_span !118 90901 90903 -!187 = (!152 !153 !185 !186) -!188 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" -!189 = span !188 591 596 -!190 = span !188 577 651 -!191 = fn_name_span !188 584 587 -!192 = (!190 !191) -!193 = span !188 642 647 -!194 = span !118 71080 71084 -!195 = (!193 !194) -!196 = span !118 71058 71173 -!197 = (!193 !196) -!198 = span !118 71100 71109 -!199 = span !118 71123 71138 -!200 = span !118 71190 71201 -!201 = (!193 !200) -!202 = (!193 !200) -!203 = (!193 !200) -!204 = (!193 !200) -!205 = (!193 !200) +!122 = span !118 93774 93784 +!123 = fn_call_path_span !118 93779 93782 +!124 = span !109 2911 2927 +!125 = fn_call_path_span !109 2911 2921 +!126 = (!122 !123 !124 !125) +!127 = span !109 1633 1638 +!128 = (!122 !123 !124 !125 !127) +!129 = (!122 !123) +!130 = span !109 2928 2929 +!131 = (!122 !123 !130) +!132 = span !118 93753 93868 +!133 = span !118 93800 93809 +!134 = span !118 93823 93838 +!135 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" +!136 = span !135 591 596 +!137 = span !135 577 651 +!138 = fn_name_span !135 584 587 +!139 = (!137 !138) +!140 = span !135 642 647 +!141 = span !118 92817 92821 +!142 = (!140 !141) +!143 = span !118 92795 92910 +!144 = (!140 !143) +!145 = span !118 92837 92846 +!146 = span !118 92860 92875 +!147 = span !118 92927 92938 +!148 = (!140 !147) +!149 = (!140 !147) +!150 = (!140 !147) +!151 = (!140 !147) +!152 = (!140 !147) ;; ASM: Final program ;; Program kind: Script @@ -739,10 +634,10 @@ eq $r2 $r2 $zero jnzf $r2 $zero i1 jmpf $zero i7 move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i276 ; [call]: call log_42 +jal $$reta $pc i244 ; [call]: call log_46 movi $r0 i255 ; initialize constant into register move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i273 ; [call]: call log_42 +jal $$reta $pc i241 ; [call]: call log_46 load $r0 data_NonConfigurable_0; load constant from data section rvrt $r0 cfsi i264920 ; free 264920 bytes for locals and 0 slots for extra call arguments @@ -956,68 +851,36 @@ move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 popl i7 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i255 ; save registers 16..40 +pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function abi_decode_24 -cfei i176 ; allocate 176 bytes for locals and 0 slots for call arguments +cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments move $r0 $$arg1 ; save argument 1 (__ret_value) move $r1 $$reta ; save return address -addi $r2 $$locbase i96 ; get offset to local __ptr slice +addi $r2 $$locbase i16 ; get offset to local __ptr slice mcpi $r2 $$arg0 i16 ; copy memory -addi $r2 $$locbase i96 ; get offset to local __ptr slice -addi $r3 $$locbase i112 ; get offset to local __ptr slice -mcpi $r3 $r2 i16 ; copy memory -addi $r2 $$locbase i112 ; get offset to local __ptr slice -addi $r3 $$locbase i144 ; get offset to local __ptr slice -mcpi $r3 $r2 i16 ; copy memory -addi $r2 $$locbase i144 ; get offset to local __ptr slice -mcpi $$locbase $r2 i16 ; copy memory -addi $r2 $$locbase i32 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $$locbase i16 ; copy memory -addi $r3 $$locbase i96 ; get offset to local __ptr slice -addi $r4 $$locbase i128 ; get offset to local __ptr slice -mcpi $r4 $r3 i16 ; copy memory -addi $r3 $$locbase i128 ; get offset to local __ptr slice -addi $r4 $$locbase i160 ; get offset to local __ptr slice -mcpi $r4 $r3 i16 ; copy memory -addi $r3 $$locbase i160 ; get offset to local __ptr slice -addi $r4 $$locbase i16 ; get offset to local __ptr { ptr, u64 } -mcpi $r4 $r3 i16 ; copy memory -addi $r3 $$locbase i48 ; get offset to local __ptr { ptr, u64 } -mcpi $r3 $r4 i16 ; copy memory -addi $r3 $$locbase i64 ; get offset to local __ptr { ptr } -mcpi $r3 $r2 i8 ; copy memory -addi $r2 $$locbase i88 ; get offset to local __ptr { ptr } -mcpi $r2 $r3 i8 ; copy memory -addi $r2 $$locbase i88 ; get offset to local __ptr { ptr } -addi $r3 $$locbase i72 ; get offset to local __ptr [u8; 1] -mcli $r3 i1 ; clear memory [u8; 1], 1 bytes -addi $r4 $$locbase i80 ; get offset to local __ptr [u8; 1] -mcpi $r4 $r3 i1 ; copy memory -addi $r3 $$locbase i80 ; get offset to local __ptr [u8; 1] -move $r7 $zero ; move parameter from branch to block argument -lt $r4 $r7 $one -jnzf $r4 $zero i2 -mcpi $r0 $r3 i1 ; copy memory -jmpf $zero i10 -mul $r4 $r7 $one -add $r4 $r3 $r4 -lw $r5 $r2 i0 ; load word -lb $r5 $r5 i0 ; lb val ptr i0 -lw $r6 $r2 i0 ; load word -add $r6 $r6 $one -sw $r2 $r6 i0 ; store word -sb $r4 $r5 i0 ; store byte -add $r7 $r7 $one -jmpb $zero i12 -cfsi i176 ; free 176 bytes for locals and 0 slots for extra call arguments +lw $r2 $$locbase i2 ; load word +lw $r3 $$locbase i3 ; load word +sw $$locbase $r2 i0 ; store word +sw $$locbase $r3 i1 ; store word +lw $r2 $$locbase i0 ; load word +move $r3 $one ; copy ASM block argument's constant initial value to register +aloc $one ; aloc size +mcp $hp $r2 $r3 ; mcp hp src size +mul $r2 $zero $one ; get offset to array element +add $r2 $hp $r2 ; add array element offset to array base +lb $r2 $r2 i0 ; load byte +mul $r3 $zero $one ; get offset to array element +add $r3 $r0 $r3 ; add array element offset to array base +sb $r3 $r2 i0 ; store byte +cfsi i32 ; free 32 bytes for locals and 0 slots for extra call arguments move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 -popl i255 ; restore registers 16..40 +popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function log_42 +move $$locbase $sp ; save locals base register for function log_46 cfei i56 ; allocate 56 bytes for locals and 0 slots for call arguments move $r0 $$reta ; save return address addi $r1 $$locbase i48 ; get offset to local __ptr u8 @@ -1051,7 +914,7 @@ data_NonConfigurable_2 .word 14454674236531057292 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 6, 72] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 5, 200] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] @@ -1147,10 +1010,10 @@ data_NonConfigurable_2 .word 14454674236531057292 0x00000184 JNZF R18 $zero 0x1 ;; [118, 72, 0, 1] 0x00000188 JMPF $zero 0x7 ;; [116, 0, 0, 7] 0x0000018c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000190 JAL R62 $pc 0x114 ;; [153, 248, 49, 20] +0x00000190 JAL R62 $pc 0xf4 ;; [153, 248, 48, 244] 0x00000194 MOVI $writable 0xff ;; [114, 64, 0, 255] 0x00000198 MOVE R58 $writable ;; [26, 233, 0, 0] -0x0000019c JAL R62 $pc 0x111 ;; [153, 248, 49, 17] +0x0000019c JAL R62 $pc 0xf1 ;; [153, 248, 48, 241] 0x000001a0 LW $writable R63 0x0 ;; [93, 67, 240, 0] 0x000001a4 RVRT $writable ;; [54, 64, 0, 0] 0x000001a8 CFSI 0x40ad8 ;; [146, 4, 10, 216] @@ -1364,95 +1227,63 @@ data_NonConfigurable_2 .word 14454674236531057292 0x000004e8 POPH 0x80000 ;; [152, 8, 0, 0] 0x000004ec POPL 0x7 ;; [151, 0, 0, 7] 0x000004f0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000004f4 PSHL 0xff ;; [149, 0, 0, 255] +0x000004f4 PSHL 0xf ;; [149, 0, 0, 15] 0x000004f8 PSHH 0x80000 ;; [150, 8, 0, 0] 0x000004fc MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000500 CFEI 0xb0 ;; [145, 0, 0, 176] +0x00000500 CFEI 0x20 ;; [145, 0, 0, 32] 0x00000504 MOVE $writable R57 ;; [26, 67, 144, 0] 0x00000508 MOVE R17 R62 ;; [26, 71, 224, 0] -0x0000050c ADDI R18 R59 0x60 ;; [80, 75, 176, 96] +0x0000050c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] 0x00000510 MCPI R18 R58 0x10 ;; [96, 75, 160, 16] -0x00000514 ADDI R18 R59 0x60 ;; [80, 75, 176, 96] -0x00000518 ADDI R19 R59 0x70 ;; [80, 79, 176, 112] -0x0000051c MCPI R19 R18 0x10 ;; [96, 77, 32, 16] -0x00000520 ADDI R18 R59 0x70 ;; [80, 75, 176, 112] -0x00000524 ADDI R19 R59 0x90 ;; [80, 79, 176, 144] -0x00000528 MCPI R19 R18 0x10 ;; [96, 77, 32, 16] -0x0000052c ADDI R18 R59 0x90 ;; [80, 75, 176, 144] -0x00000530 MCPI R59 R18 0x10 ;; [96, 237, 32, 16] -0x00000534 ADDI R18 R59 0x20 ;; [80, 75, 176, 32] -0x00000538 MCPI R18 R59 0x10 ;; [96, 75, 176, 16] -0x0000053c ADDI R19 R59 0x60 ;; [80, 79, 176, 96] -0x00000540 ADDI R20 R59 0x80 ;; [80, 83, 176, 128] -0x00000544 MCPI R20 R19 0x10 ;; [96, 81, 48, 16] -0x00000548 ADDI R19 R59 0x80 ;; [80, 79, 176, 128] -0x0000054c ADDI R20 R59 0xa0 ;; [80, 83, 176, 160] -0x00000550 MCPI R20 R19 0x10 ;; [96, 81, 48, 16] -0x00000554 ADDI R19 R59 0xa0 ;; [80, 79, 176, 160] -0x00000558 ADDI R20 R59 0x10 ;; [80, 83, 176, 16] -0x0000055c MCPI R20 R19 0x10 ;; [96, 81, 48, 16] -0x00000560 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] -0x00000564 MCPI R19 R20 0x10 ;; [96, 77, 64, 16] -0x00000568 ADDI R19 R59 0x40 ;; [80, 79, 176, 64] -0x0000056c MCPI R19 R18 0x8 ;; [96, 77, 32, 8] -0x00000570 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] -0x00000574 MCPI R18 R19 0x8 ;; [96, 73, 48, 8] -0x00000578 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] -0x0000057c ADDI R19 R59 0x48 ;; [80, 79, 176, 72] -0x00000580 MCLI R19 0x1 ;; [112, 76, 0, 1] -0x00000584 ADDI R20 R59 0x50 ;; [80, 83, 176, 80] -0x00000588 MCPI R20 R19 0x1 ;; [96, 81, 48, 1] -0x0000058c ADDI R19 R59 0x50 ;; [80, 79, 176, 80] -0x00000590 MOVE R23 $zero ;; [26, 92, 0, 0] -0x00000594 LT R20 R23 $one ;; [22, 81, 112, 64] -0x00000598 JNZF R20 $zero 0x2 ;; [118, 80, 0, 2] -0x0000059c MCPI $writable R19 0x1 ;; [96, 65, 48, 1] -0x000005a0 JMPF $zero 0xa ;; [116, 0, 0, 10] -0x000005a4 MUL R20 R23 $one ;; [27, 81, 112, 64] -0x000005a8 ADD R20 R19 R20 ;; [16, 81, 53, 0] -0x000005ac LW R21 R18 0x0 ;; [93, 85, 32, 0] -0x000005b0 LB R21 R21 0x0 ;; [92, 85, 80, 0] -0x000005b4 LW R22 R18 0x0 ;; [93, 89, 32, 0] -0x000005b8 ADD R22 R22 $one ;; [16, 89, 96, 64] -0x000005bc SW R18 R22 0x0 ;; [95, 73, 96, 0] -0x000005c0 SB R20 R21 0x0 ;; [94, 81, 80, 0] -0x000005c4 ADD R23 R23 $one ;; [16, 93, 112, 64] -0x000005c8 JMPB $zero 0xc ;; [117, 0, 0, 12] -0x000005cc CFSI 0xb0 ;; [146, 0, 0, 176] -0x000005d0 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000005d4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000005d8 POPL 0xff ;; [151, 0, 0, 255] -0x000005dc JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000005e0 PSHL 0xf ;; [149, 0, 0, 15] -0x000005e4 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000005e8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000005ec CFEI 0x38 ;; [145, 0, 0, 56] -0x000005f0 MOVE $writable R62 ;; [26, 67, 224, 0] -0x000005f4 ADDI R17 R59 0x30 ;; [80, 71, 176, 48] -0x000005f8 SB R17 R58 0x0 ;; [94, 71, 160, 0] -0x000005fc ADDI R17 R59 0x30 ;; [80, 71, 176, 48] -0x00000600 MOVE R18 $one ;; [26, 72, 16, 0] -0x00000604 ALOC $one ;; [38, 4, 0, 0] -0x00000608 MCP $hp R17 R18 ;; [40, 29, 20, 128] -0x0000060c ADDI R17 R59 0x10 ;; [80, 71, 176, 16] -0x00000610 SW R59 $hp 0x2 ;; [95, 236, 112, 2] -0x00000614 SW R59 $one 0x3 ;; [95, 236, 16, 3] -0x00000618 MCPI R59 R17 0x10 ;; [96, 237, 16, 16] -0x0000061c ADDI R17 R59 0x20 ;; [80, 71, 176, 32] -0x00000620 MCPI R17 R59 0x10 ;; [96, 71, 176, 16] -0x00000624 LW R17 R63 0x2 ;; [93, 71, 240, 2] -0x00000628 LW R18 R59 0x4 ;; [93, 75, 176, 4] -0x0000062c LW R19 R59 0x5 ;; [93, 79, 176, 5] -0x00000630 LOGD $zero R17 R18 R19 ;; [52, 1, 20, 147] -0x00000634 CFSI 0x38 ;; [146, 0, 0, 56] -0x00000638 MOVE R62 $writable ;; [26, 249, 0, 0] -0x0000063c POPH 0x80000 ;; [152, 8, 0, 0] -0x00000640 POPL 0xf ;; [151, 0, 0, 15] -0x00000644 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000514 LW R18 R59 0x2 ;; [93, 75, 176, 2] +0x00000518 LW R19 R59 0x3 ;; [93, 79, 176, 3] +0x0000051c SW R59 R18 0x0 ;; [95, 237, 32, 0] +0x00000520 SW R59 R19 0x1 ;; [95, 237, 48, 1] +0x00000524 LW R18 R59 0x0 ;; [93, 75, 176, 0] +0x00000528 MOVE R19 $one ;; [26, 76, 16, 0] +0x0000052c ALOC $one ;; [38, 4, 0, 0] +0x00000530 MCP $hp R18 R19 ;; [40, 29, 36, 192] +0x00000534 MUL R18 $zero $one ;; [27, 72, 0, 64] +0x00000538 ADD R18 $hp R18 ;; [16, 72, 116, 128] +0x0000053c LB R18 R18 0x0 ;; [92, 73, 32, 0] +0x00000540 MUL R19 $zero $one ;; [27, 76, 0, 64] +0x00000544 ADD R19 $writable R19 ;; [16, 77, 4, 192] +0x00000548 SB R19 R18 0x0 ;; [94, 77, 32, 0] +0x0000054c CFSI 0x20 ;; [146, 0, 0, 32] +0x00000550 MOVE R62 R17 ;; [26, 249, 16, 0] +0x00000554 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000558 POPL 0xf ;; [151, 0, 0, 15] +0x0000055c JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000560 PSHL 0xf ;; [149, 0, 0, 15] +0x00000564 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000568 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000056c CFEI 0x38 ;; [145, 0, 0, 56] +0x00000570 MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000574 ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x00000578 SB R17 R58 0x0 ;; [94, 71, 160, 0] +0x0000057c ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x00000580 MOVE R18 $one ;; [26, 72, 16, 0] +0x00000584 ALOC $one ;; [38, 4, 0, 0] +0x00000588 MCP $hp R17 R18 ;; [40, 29, 20, 128] +0x0000058c ADDI R17 R59 0x10 ;; [80, 71, 176, 16] +0x00000590 SW R59 $hp 0x2 ;; [95, 236, 112, 2] +0x00000594 SW R59 $one 0x3 ;; [95, 236, 16, 3] +0x00000598 MCPI R59 R17 0x10 ;; [96, 237, 16, 16] +0x0000059c ADDI R17 R59 0x20 ;; [80, 71, 176, 32] +0x000005a0 MCPI R17 R59 0x10 ;; [96, 71, 176, 16] +0x000005a4 LW R17 R63 0x2 ;; [93, 71, 240, 2] +0x000005a8 LW R18 R59 0x4 ;; [93, 75, 176, 4] +0x000005ac LW R19 R59 0x5 ;; [93, 79, 176, 5] +0x000005b0 LOGD $zero R17 R18 R19 ;; [52, 1, 20, 147] +0x000005b4 CFSI 0x38 ;; [146, 0, 0, 56] +0x000005b8 MOVE R62 $writable ;; [26, 249, 0, 0] +0x000005bc POPH 0x80000 ;; [152, 8, 0, 0] +0x000005c0 POPL 0xf ;; [151, 0, 0, 15] +0x000005c4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] .data_section: -0x00000648 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) -0x00000650 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) -0x00000658 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) +0x000005c8 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) +0x000005d0 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) +0x000005d8 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) ;; --- END OF TARGET BYTECODE --- warning @@ -1552,7 +1383,7 @@ warning ____ Compiled script "array_repeat" with 8 warnings. - Finished release [optimized + fuel] target(s) [1.632 KB] in ??? + Finished release [optimized + fuel] target(s) [1.504 KB] in ??? > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --verbose --release exit status: 0 @@ -1560,10 +1391,10 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) - Finished release [optimized + fuel] target(s) [2.864 KB] in ??? + Finished release [optimized + fuel] target(s) [2.736 KB] in ??? script array_repeat - Bytecode size: 2864 bytes (2.864 KB) - Bytecode hash: 0xdc2e29e1f37d24b165bc4b534388fc87ecb1148464b75c6268eb8499f2c9f6df + Bytecode size: 2736 bytes (2.736 KB) + Bytecode hash: 0x9d78b08bc9581aab7480d88e7a54cee359062875d2a0370b6216723c9c5650a0 Running 1 test, filtered 0 tests tested -- array_repeat diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap index 0686973ffb8..9f0b3cfff53 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap @@ -1,6 +1,6 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated --release exit status: 0 @@ -165,22 +165,22 @@ warning: Struct field is deprecated ____ warning: Function is deprecated - --> test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/src/main..sw:12:15 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/src/main..sw:15:15 | ... -12 | let _result = __contract_entry_deprecated_to_be_abi_method(); +15 | let _result = __contract_entry_deprecated_to_be_abi_method(); | -------------------------------------------- Function "deprecated_to_be_abi_method" is deprecated. | ____ warning: Function is deprecated - --> test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/src/main..sw:18:15 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/src/main..sw:21:15 | ... -18 | let _result = __contract_entry_deprecated_abi_provided_method(); +21 | let _result = __contract_entry_deprecated_abi_provided_method(); | ----------------------------------------------- Function "deprecated_abi_provided_method" is deprecated. | ____ Compiled contract "attributes_deprecated" with 19 warnings. - Finished release [optimized + fuel] target(s) [472 B] in ??? + Finished release [optimized + fuel] target(s) [400 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json index de41503e97e..7e69ff26f2d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json @@ -63,97 +63,97 @@ "concreteTypeId": "b760f44fa5965c2474a3b471467a22c43185152129295af588b022ae50b50903", "indirect": false, "name": "BOOL", - "offset": 4704 + "offset": 4272 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "U8", - "offset": 4896 + "offset": 4464 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "ANOTHER_U8", - "offset": 4632 + "offset": 4200 }, { "concreteTypeId": "29881aad8730c5ab11d275376323d8e4ff4179aae8ccb6c13fe4902137e162ef", "indirect": false, "name": "U16", - "offset": 4840 + "offset": 4408 }, { "concreteTypeId": "d7649d428b9ff33d188ecbf38a7e4d8fd167fa01b2e10fe9a8f9308e52f1d7cc", "indirect": false, "name": "U32", - "offset": 4880 + "offset": 4448 }, { "concreteTypeId": "d7649d428b9ff33d188ecbf38a7e4d8fd167fa01b2e10fe9a8f9308e52f1d7cc", "indirect": false, "name": "U64", - "offset": 4888 + "offset": 4456 }, { "concreteTypeId": "1b5759d94094368cfd443019e7ca5ec4074300e544e5ea993a979f5da627261e", "indirect": false, "name": "U256", - "offset": 4848 + "offset": 4416 }, { "concreteTypeId": "7c5ee1cecf5f8eacd1284feb5f0bf2bdea533a51e2f0c9aabe9236d335989f3b", "indirect": false, "name": "B256", - "offset": 4672 + "offset": 4240 }, { "concreteTypeId": "81fc10c4681a3271cf2d66b2ec6fbc8ed007a442652930844fcf11818c295bff", "indirect": false, "name": "CONFIGURABLE_STRUCT", - "offset": 4792 + "offset": 4360 }, { "concreteTypeId": "a2922861f03be8a650595dd76455b95383a61b46dd418f02607fa2e00dc39d5c", "indirect": false, "name": "CONFIGURABLE_ENUM_A", - "offset": 4712 + "offset": 4280 }, { "concreteTypeId": "a2922861f03be8a650595dd76455b95383a61b46dd418f02607fa2e00dc39d5c", "indirect": false, "name": "CONFIGURABLE_ENUM_B", - "offset": 4752 + "offset": 4320 }, { "concreteTypeId": "4926d35d1a5157936b0a29bc126b8aace6d911209a5c130e9b716b0c73643ea6", "indirect": false, "name": "ARRAY_BOOL", - "offset": 4640 + "offset": 4208 }, { "concreteTypeId": "776fb5a3824169d6736138565fdc20aad684d9111266a5ff6d5c675280b7e199", "indirect": false, "name": "ARRAY_U64", - "offset": 4648 + "offset": 4216 }, { "concreteTypeId": "c998ca9a5f221fe7b5c66ae70c8a9562b86d964408b00d17f883c906bc1fe4be", "indirect": false, "name": "TUPLE_BOOL_U64", - "offset": 4824 + "offset": 4392 }, { "concreteTypeId": "94f0fa95c830be5e4f711963e83259fe7e8bc723278ab6ec34449e791a99b53a", "indirect": false, "name": "STR_4", - "offset": 4816 + "offset": 4384 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "NOT_USED", - "offset": 4808 + "offset": 4376 } ], "encodingVersion": "1", diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap index 6a8b52d8204..df13273fa2e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode --release --ir final --asm final exit status: 0 @@ -17,62 +18,37 @@ script { WRAPPED = config { u64 }, abi_decode_in_place_0, 0x0000000000000001, !2 pub fn abi_decode_in_place_0(ptr !4: ptr, len !5: u64, target !6: ptr) -> (), !10 { - local mut { ptr } buffer - local { u64 } temp - entry(ptr: ptr, len: u64, target: ptr): - v0 = get_local __ptr { ptr }, buffer, !14 - v1 = const u64 0 - v2 = get_elem_ptr v0, __ptr ptr, v1, !15 - store ptr to v2, !16 - v3 = get_local __ptr { ptr }, buffer, !17 - v4 = const u64 0 - v5 = get_elem_ptr v3, __ptr ptr, v4, !25 - v6 = load v5, !26 - v7 = asm(ptr: v6, val) -> u64 val, !28 { - lw val ptr i0, !29 - } - v8 = load v5, !30 - v9 = const u64 8, !31 - v10 = add v8, v9, !32 - store v10 to v5, !34 - v11 = get_local __ptr { u64 }, temp, !36 - v12 = const u64 0 - v13 = get_elem_ptr v11, __ptr u64, v12, !37 - store v7 to v13, !38 - v14 = get_local __ptr { u64 }, temp, !39 - v15 = cast_ptr v14 to ptr, !40 - v16 = const u64 8 - v17 = asm(target: target, temp: v15, size: v16) -> (), !41 { - mcp target temp size, !42 + v0 = asm(src: ptr, target: target, len: len) -> (), !11 { + mcp target src len, !12 } - v18 = const unit () - ret () v18 + v1 = const unit () + ret () v1 } - pub entry fn __entry() -> __ptr never, !46 { - local u64 item_ + pub entry fn __entry() -> __ptr never, !16 { + local u64 _result entry(): - v0 = call main_8(), !49 - v1 = get_local __ptr u64, item_, !52 - store v0 to v1, !52 - v2 = get_local __ptr u64, item_, !54 + v0 = call main_15(), !19 + v1 = get_local __ptr u64, _result, !20 + store v0 to v1, !20 + v2 = get_local __ptr u64, _result, !21 v3 = const u64 8 - retd v2 v3, !56 + retd v2 v3, !25 } - entry_orig fn main_8() -> u64, !59 { + entry_orig fn main_15() -> u64, !28 { entry(): - v0 = get_config __ptr { u64 }, WRAPPED, !60 + v0 = get_config __ptr { u64 }, WRAPPED, !29 v1 = const u64 0 - v2 = get_elem_ptr v0, __ptr u64, v1, !61 + v2 = get_elem_ptr v0, __ptr u64, v1, !30 v3 = load v2 - v4 = get_config __ptr { u64 }, TUPLE, !62 + v4 = get_config __ptr { u64 }, TUPLE, !31 v5 = const u64 0 - v6 = get_elem_ptr v4, __ptr u64, v5, !63 + v6 = get_elem_ptr v4, __ptr u64, v5, !32 v7 = load v6 - v8 = add v3, v7, !66 + v8 = add v3, v7, !35 ret u64 v8 } } @@ -81,69 +57,38 @@ script { !1 = span !0 177 182 !2 = span !0 136 143 !3 = "sway-lib-std/src/codec.sw" -!4 = span !3 71969 71972 -!5 = span !3 71983 71986 -!6 = span !3 71993 71999 -!7 = span !3 71939 72272 -!8 = fn_name_span !3 71946 71965 +!4 = span !3 94064 94067 +!5 = span !3 94078 94081 +!6 = span !3 94088 94094 +!7 = span !3 94034 94548 +!8 = fn_name_span !3 94041 94060 !9 = inline "never" !10 = (!7 !8 !9) -!11 = span !3 72057 72091 -!12 = fn_call_path_span !3 72057 72081 -!13 = span !3 735 755 -!14 = (!11 !12 !13) -!15 = (!11 !12) -!16 = (!11 !12 !13) -!17 = span !3 72122 72128 -!18 = span !3 72108 72129 -!19 = fn_call_path_span !3 72108 72121 -!20 = span !3 116142 116163 -!21 = fn_call_path_span !3 116142 116155 -!22 = span !3 72721 72749 -!23 = fn_call_path_span !3 72728 72740 -!24 = span !3 625 637 -!25 = (!18 !19 !20 !21 !22 !23 !24) -!26 = (!18 !19 !20 !21 !22 !23) -!27 = span !3 2766 2847 -!28 = (!18 !19 !20 !21 !22 !23 !27) -!29 = span !3 2804 2817 -!30 = (!18 !19 !20 !21 !22 !23) -!31 = (!18 !19 !20 !21 !22 !23) -!32 = (!18 !19 !20 !21 !22 !23) -!33 = span !3 2857 2896 -!34 = (!18 !19 !20 !21 !22 !23 !33) -!35 = span !3 116141 116166 -!36 = (!18 !19 !35) -!37 = (!18 !19 !35) -!38 = (!18 !19 !35) -!39 = span !3 72188 72192 -!40 = span !3 72178 72193 -!41 = span !3 72135 72270 -!42 = span !3 72243 72263 -!43 = "test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/src/main..sw" -!44 = span !43 0 130 -!45 = fn_name_span !43 7 14 -!46 = (!44 !45) -!47 = span !43 59 65 -!48 = fn_call_path_span !43 59 63 -!49 = (!47 !48) -!50 = span !43 83 116 -!51 = fn_call_path_span !43 83 100 -!52 = (!50 !51) -!53 = span !3 71584 71588 -!54 = (!50 !51 !53) -!55 = span !3 71568 71595 -!56 = (!50 !51 !55) -!57 = span !0 202 246 -!58 = fn_name_span !0 205 209 -!59 = (!57 !58) -!60 = span !0 225 232 -!61 = span !0 30 36 -!62 = span !0 237 242 -!63 = span !0 243 244 -!64 = span !0 225 244 -!65 = fn_call_path_span !0 235 236 -!66 = (!64 !65) +!11 = span !3 94173 94256 +!12 = span !3 94227 94245 +!13 = "test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/src/main..sw" +!14 = span !13 0 131 +!15 = fn_name_span !13 7 14 +!16 = (!14 !15) +!17 = span !13 59 65 +!18 = fn_call_path_span !13 59 63 +!19 = (!17 !18) +!20 = span !13 40 66 +!21 = span !13 109 116 +!22 = span !13 83 117 +!23 = fn_call_path_span !13 83 100 +!24 = span !3 93230 93256 +!25 = (!22 !23 !24) +!26 = span !0 202 246 +!27 = fn_name_span !0 205 209 +!28 = (!26 !27) +!29 = span !0 225 232 +!30 = span !0 30 36 +!31 = span !0 237 242 +!32 = span !0 243 244 +!33 = span !0 225 244 +!34 = fn_call_path_span !0 235 236 +!35 = (!33 !34) ;; ASM: Final program ;; Program kind: Script @@ -167,35 +112,22 @@ addi $$arg2 $ssp i8 ; get pointer to configurable WRAPPED stack addres jal $$reta $pc i7 ; decode configurable WRAPPED move $$locbase $sp ; save locals base register for function __entry cfei i8 ; allocate 8 bytes for locals and 0 slots for call arguments -jal $$reta $pc i26 ; [call]: call main_8 +jal $$reta $pc i13 ; [call]: call main_15 sw $$locbase $$retv i0 ; store word movi $r0 i8 ; initialize constant into register retd $$locbase $r0 -pshl i31 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function abi_decode_in_place_0 -cfei i16 ; allocate 16 bytes for locals and 0 slots for call arguments -move $r2 $$arg2 ; save argument 2 (target) -move $r3 $$reta ; save return address -sw $$locbase $$arg0 i0 ; store word -lw $r0 $$locbase i0 ; load word -lw $r1 $r0 i0 ; lw val ptr i0 -lw $r0 $$locbase i0 ; load word -movi $r4 i8 ; initialize constant into register -add $r0 $r0 $r4 -sw $$locbase $r0 i0 ; store word -sw $$locbase $r1 i1 ; store word -addi $r0 $$locbase i8 ; get offset to local __ptr { u64 } -movi $r1 i8 ; initialize constant into register -mcp $r2 $r0 $r1 ; mcp target temp size -cfsi i16 ; free 16 bytes for locals and 0 slots for extra call arguments -move $$reta $r3 ; restore return address +move $r0 $$reta ; save return address +mcp $$arg2 $$arg0 $$arg1 ; mcp target src len +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i31 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i3 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function main_8 +move $$locbase $sp ; save locals base register for function main_15 lw $r0 $ssp i1 ; load word lw $r1 $ssp i0 ; load word add $r0 $r0 $r1 @@ -208,4 +140,4 @@ data__0 .bytes[8] 00 00 00 00 00 00 00 02 ........ data__1 .bytes[8] 00 00 00 00 00 00 00 01 ........ - Finished release [optimized + fuel] target(s) [248 B] in ??? + Finished release [optimized + fuel] target(s) [192 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap index 76a47eb6e59..899d1288715 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics --release exit status: 1 @@ -410,7 +411,7 @@ warning ____ Compiled script "const_generics" with 2 warnings. - Finished release [optimized + fuel] target(s) [888 B] in ??? + Finished release [optimized + fuel] target(s) [784 B] in ??? Running 1 test, filtered 0 tests tested -- const_generics diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index 7d1f9c4b68a..b94db3cc3b0 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg --asm final | sub ecal ecal $r1 $r0 $zero $zero ; ecal id fd zero zero @@ -71,7 +72,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) - Finished debug [unoptimized + fuel] target(s) [37.856 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [37.56 KB] in ??? Running 1 test, filtered 0 tests tested -- dbg diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw index e935e0cc7f8..5381738711e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw @@ -31,6 +31,7 @@ struct CustomAbiEncode { } impl AbiEncode for CustomAbiEncode { + fn is_encode_trivial() -> bool { false } fn abi_encode(self, buffer: Buffer) -> Buffer { 77u64.abi_encode(buffer) } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap index 3e5f4ad0298..06e6ee3916d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release --ir final exit status: 0 @@ -16,18 +17,18 @@ script { global __const_global : string<4> = const string<4> "sway" pub entry fn __entry() -> __ptr never, !3 { - local u64 item_ + local u64 _result entry(): v0 = call main_0(), !6 - v1 = get_local __ptr u64, item_, !9 - store v0 to v1, !9 - v2 = get_local __ptr u64, item_, !12 + v1 = get_local __ptr u64, _result, !7 + store v0 to v1, !7 + v2 = get_local __ptr u64, _result, !8 v3 = const u64 8 - retd v2 v3, !14 + retd v2 v3, !13 } - entry_orig fn main_0() -> u64, !18 { + entry_orig fn main_0() -> u64, !17 { local { ptr, u64 } __anon_0 local { ptr, u64 } __anon_000 local slice __anon_1 @@ -42,68 +43,68 @@ script { entry(): v0 = get_local __ptr u256, __const - v1 = const u64 0, !19 - v2 = call local_log_1(v1), !22 - v3 = const u64 0, !33 - v4 = asm(size: v3, ptr) -> ptr ptr, !35 { - aloc size, !36 - move ptr hp, !37 + v1 = const u64 0, !18 + v2 = call local_log_1(v1), !21 + v3 = const u64 0, !32 + v4 = asm(size: v3, ptr) -> ptr ptr, !34 { + aloc size, !35 + move ptr hp, !36 } - v5 = get_local __ptr { ptr, u64 }, __anon_000, !39 + v5 = get_local __ptr { ptr, u64 }, __anon_000, !38 v6 = const u64 0 - v7 = get_elem_ptr v5, __ptr ptr, v6, !40 - store v4 to v7, !41 + v7 = get_elem_ptr v5, __ptr ptr, v6, !39 + store v4 to v7, !40 v8 = const u64 1 - v9 = get_elem_ptr v5, __ptr u64, v8, !42 - v10 = const u64 0, !43 - store v10 to v9, !44 - v11 = get_local __ptr { { ptr, u64 }, u64 }, e, !46 + v9 = get_elem_ptr v5, __ptr u64, v8, !41 + v10 = const u64 0, !42 + store v10 to v9, !43 + v11 = get_local __ptr { { ptr, u64 }, u64 }, e, !45 v12 = const u64 0 - v13 = get_elem_ptr v11, __ptr { ptr, u64 }, v12, !47 + v13 = get_elem_ptr v11, __ptr { ptr, u64 }, v12, !46 mem_copy_val v13, v5 v14 = const u64 1 - v15 = get_elem_ptr v11, __ptr u64, v14, !47 - v16 = const u64 0, !48 - store v16 to v15, !49 - v17 = get_local __ptr { { ptr, u64 }, u64 }, e, !50 - v18 = const u64 1, !51 - v19 = call push_11(v17, v18), !54 - v20 = get_local __ptr { { ptr, u64 }, u64 }, e, !55 - v21 = const u64 2, !56 - v22 = call push_11(v20, v21), !59 - v23 = get_local __ptr { { ptr, u64 }, u64 }, e, !60 - v24 = const u64 3, !61 - v25 = call push_11(v23, v24), !64 - v26 = get_local __ptr { { ptr, u64 }, u64 }, e, !65 + v15 = get_elem_ptr v11, __ptr u64, v14, !46 + v16 = const u64 0, !47 + store v16 to v15, !48 + v17 = get_local __ptr { { ptr, u64 }, u64 }, e, !49 + v18 = const u64 1, !50 + v19 = call push_12(v17, v18), !53 + v20 = get_local __ptr { { ptr, u64 }, u64 }, e, !54 + v21 = const u64 2, !55 + v22 = call push_12(v20, v21), !58 + v23 = get_local __ptr { { ptr, u64 }, u64 }, e, !59 + v24 = const u64 3, !60 + v25 = call push_12(v23, v24), !63 + v26 = get_local __ptr { { ptr, u64 }, u64 }, e, !64 v27 = get_global __ptr string<4>, __const_global - v28 = cast_ptr v27 to ptr, !66 - v29 = get_local __ptr { ptr, u64 }, __anon_0, !66 + v28 = cast_ptr v27 to ptr, !65 + v29 = get_local __ptr { ptr, u64 }, __anon_0, !65 v30 = const u64 0 v31 = get_elem_ptr v29, __ptr ptr, v30 - store v28 to v31, !66 + store v28 to v31, !65 v32 = const u64 1 v33 = get_elem_ptr v29, __ptr u64, v32 v34 = const u64 4 - store v34 to v33, !66 - v35 = get_local __ptr slice, __anon_1, !66 + store v34 to v33, !65 + v35 = get_local __ptr slice, __anon_1, !65 mem_copy_bytes v35, v29, 16 - v36 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg, !67 + v36 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg, !66 v37 = const u64 0 v38 = get_elem_ptr v36, __ptr u64, v37 - v39 = const u64 1, !68 - store v39 to v38, !67 + v39 = const u64 1, !67 + store v39 to v38, !66 v40 = const u64 1 v41 = get_elem_ptr v36, __ptr u64, v40 - v42 = const u64 2, !69 - store v42 to v41, !67 + v42 = const u64 2, !68 + store v42 to v41, !66 v43 = const u64 2 v44 = get_elem_ptr v36, __ptr u64, v43 - v45 = const u64 3, !70 - store v45 to v44, !67 + v45 = const u64 3, !69 + store v45 to v44, !66 v46 = const u64 3 v47 = get_elem_ptr v36, __ptr u8, v46 - v48 = const u8 4, !71 - store v48 to v47, !67 + v48 = const u8 4, !70 + store v48 to v47, !66 v49 = const u64 4 v50 = get_elem_ptr v36, __ptr { { ptr, u64 }, u64 }, v49 mem_copy_val v50, v26 @@ -114,65 +115,65 @@ script { v54 = get_elem_ptr v36, __ptr u256, v53 mem_copy_val v54, v0 v55 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg - v56 = call local_log_19(v55) - v57 = get_local __ptr { u64 }, __tmp_arg0, !72 + v56 = call local_log_21(v55) + v57 = get_local __ptr { u64 }, __tmp_arg0, !71 v58 = const u64 0 v59 = get_elem_ptr v57, __ptr u64, v58 - v60 = const u64 1, !73 - store v60 to v59, !72 + v60 = const u64 1, !72 + store v60 to v59, !71 v61 = get_local __ptr { u64 }, __tmp_arg0 - v62 = call local_log_32(v61) - v63 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1, !74 + v62 = call local_log_48(v61) + v63 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1, !73 v64 = const u64 0 - v65 = get_elem_ptr v63, __ptr u64, v64, !74 - v66 = const u64 0, !74 - store v66 to v65, !74 - v67 = get_local __ptr { u64 }, __anon_5, !75 + v65 = get_elem_ptr v63, __ptr u64, v64, !73 + v66 = const u64 0, !73 + store v66 to v65, !73 + v67 = get_local __ptr { u64 }, __anon_5, !74 v68 = const u64 0 v69 = get_elem_ptr v67, __ptr u64, v68 - v70 = const u64 1, !76 - store v70 to v69, !75 + v70 = const u64 1, !75 + store v70 to v69, !74 v71 = const u64 1 v72 = const u64 0 - v73 = get_elem_ptr v63, __ptr { u64 }, v71, v72, !74 + v73 = get_elem_ptr v63, __ptr { u64 }, v71, v72, !73 mem_copy_val v73, v67 v74 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1 - v75 = call local_log_35(v74) - v76 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2, !74 + v75 = call local_log_53(v74) + v76 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2, !73 v77 = const u64 0 - v78 = get_elem_ptr v76, __ptr u64, v77, !74 - v79 = const u64 1, !74 - store v79 to v78, !74 + v78 = get_elem_ptr v76, __ptr u64, v77, !73 + v79 = const u64 1, !73 + store v79 to v78, !73 v80 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2 - v81 = call local_log_35(v80) + v81 = call local_log_53(v80) v82 = get_local __ptr { }, __tmp_arg3 - v83 = call local_log_38(v82) - v84 = const u64 1, !77 + v83 = call local_log_60(v82) + v84 = const u64 1, !76 ret u64 v84 } - fn local_log_1(item !78: u64) -> (), !82 { + fn local_log_1(item !77: u64) -> (), !81 { local mut slice __aggr_memcpy_0 local { ptr, u64 } __anon_0 local slice __log_arg local u64 item_0 entry(item: u64): - v0 = get_local __ptr u64, item_0, !83 - store item to v0, !83 - v1 = get_local __ptr u64, item_0, !85 + v0 = get_local __ptr u64, item_0, !82 + store item to v0, !82 + v1 = get_local __ptr u64, item_0, !84 v2 = const u64 8 - v3 = asm(size: v2, src: v1) -> ptr hp, !87 { - aloc size, !88 - mcp hp src size, !89 + v3 = asm(size: v2, src: v1) -> ptr hp, !86 { + aloc size, !87 + mcp hp src size, !88 } - v4 = get_local __ptr { ptr, u64 }, __anon_0, !91 + v4 = get_local __ptr { ptr, u64 }, __anon_0, !90 v5 = const u64 0 - v6 = get_elem_ptr v4, __ptr ptr, v5, !92 - store v3 to v6, !93 + v6 = get_elem_ptr v4, __ptr ptr, v5, !91 + store v3 to v6, !92 v7 = const u64 1 - v8 = get_elem_ptr v4, __ptr u64, v7, !94 - store v2 to v8, !95 + v8 = get_elem_ptr v4, __ptr u64, v7, !93 + store v2 to v8, !94 v9 = asm(s: v4) -> __ptr slice s { } v10 = get_local __ptr slice, __aggr_memcpy_0 @@ -185,7 +186,7 @@ script { ret () v13 } - pub fn abi_encode_4(self !96: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !99 { + pub fn abi_encode_5(self !95: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !98 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local { ptr, u64, u64 } __anon_0 @@ -196,9 +197,9 @@ script { entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ mem_copy_val v0, buffer - v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !100 + v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !99 v2 = const u64 0 - v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !101 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !100 v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { } v5 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 @@ -237,7 +238,7 @@ script { } v31 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 mem_copy_val v31, v30 - v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !102 + v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !101 v33 = const u64 0 v34 = get_elem_ptr v32, __ptr { ptr, u64, u64 }, v33 mem_copy_val v34, v31 @@ -256,7 +257,7 @@ script { br block0(v39, v38) } - pub fn new_5(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !105 { + pub fn new_6(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !104 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local { ptr, u64, u64 } __anon_0 local { { ptr, u64, u64 } } __anon_1 @@ -281,7 +282,7 @@ script { } v11 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v11, v10 - v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !106 + v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !105 v13 = const u64 0 v14 = get_elem_ptr v12, __ptr { ptr, u64, u64 }, v13 mem_copy_val v14, v11 @@ -290,7 +291,7 @@ script { ret () v15 } - pub fn as_raw_slice_6(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice) -> (), !109 { + pub fn as_raw_slice_7(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice) -> (), !108 { local mut slice __aggr_memcpy_00 local { ptr, u64 } __anon_1 local { { ptr, u64, u64 } } self_ @@ -298,9 +299,9 @@ script { entry(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice): v0 = get_local __ptr { { ptr, u64, u64 } }, self_ mem_copy_val v0, self - v1 = get_local __ptr { { ptr, u64, u64 } }, self_, !110 + v1 = get_local __ptr { { ptr, u64, u64 } }, self_, !109 v2 = const u64 0 - v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !101 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !100 v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { } v5 = const u64 0 @@ -325,96 +326,98 @@ script { ret () v18 } - pub fn push_11(self !111: __ptr { { ptr, u64 }, u64 }, value !112: u64) -> (), !115 { + pub fn push_12(self !110: __ptr { { ptr, u64 }, u64 }, value !111: u64) -> (), !114 { entry(self: __ptr { { ptr, u64 }, u64 }, value: u64): v0 = const u64 1 - v1 = get_elem_ptr self, __ptr u64, v0, !116 + v1 = get_elem_ptr self, __ptr u64, v0, !115 v2 = load v1 v3 = const u64 0 - v4 = get_elem_ptr self, __ptr { ptr, u64 }, v3, !117 + v4 = get_elem_ptr self, __ptr { ptr, u64 }, v3, !116 v5 = const u64 1 - v6 = get_elem_ptr v4, __ptr u64, v5, !118 + v6 = get_elem_ptr v4, __ptr u64, v5, !117 v7 = load v6 - v8 = cmp eq v2 v7, !121 - cbr v8, block0(), block2(), !119 + v8 = cmp eq v2 v7, !120 + cbr v8, block0(), block2(), !118 block0(): - v9 = load v6, !124 - v10 = const u64 0, !125 - v11 = cmp eq v9 v10, !128 - v12 = const u64 1, !129 - cbr v11, grow_12_block2(v12), grow_12_block1(), !130 - - grow_12_block1(): - v13 = load v6, !124 - v14 = const u64 2, !131 - v15 = mul v14, v13, !134 - br grow_12_block2(v15), !124 - - grow_12_block2(v16: u64): + v9 = load v6, !123 + v10 = const u64 0, !124 + v11 = cmp eq v9 v10, !127 + v12 = const u64 1, !128 + cbr v11, grow_14_block2(v12), grow_14_block1(), !129 + + grow_14_block1(): + v13 = load v6, !123 + v14 = const u64 2, !130 + v15 = mul v14, v13, !133 + br grow_14_block2(v15), !123 + + grow_14_block2(v16: u64): v17 = const u64 0 - v18 = get_elem_ptr v4, __ptr ptr, v17, !136 - v19 = load v18, !124 - v20 = load v6, !124 - v21 = cmp gt v16 v20, !141 - cbr v21, grow_12_realloc_13_block0(), grow_12_realloc_13_block5(v19), !142 + v18 = get_elem_ptr v4, __ptr ptr, v17, !135 + v19 = load v18, !123 + v20 = load v6, !123 + v21 = cmp gt v16 v20, !140 + cbr v21, grow_14_realloc_15_block0(), grow_14_realloc_15_block5(v19), !141 - grow_12_realloc_13_block0(): + grow_14_realloc_15_block0(): v22 = const u64 8 - v23 = mul v22, v16, !145 - v24 = asm(size: v23, ptr) -> ptr ptr, !146 { - aloc size, !36 - move ptr hp, !37 + v23 = mul v22, v16, !144 + v24 = asm(size: v23, ptr) -> ptr ptr, !145 { + aloc size, !35 + move ptr hp, !36 } - v25 = const u64 0, !147 - v26 = cmp gt v20 v25, !150 - cbr v26, grow_12_realloc_13_block1(), grow_12_realloc_13_block5(v24), !151 + v25 = const u64 0, !146 + v26 = cmp gt v20 v25, !149 + cbr v26, grow_14_realloc_15_block1(), grow_14_realloc_15_block5(v24), !150 - grow_12_realloc_13_block1(): + grow_14_realloc_15_block1(): v27 = const u64 8 - v28 = mul v20, v27, !157 - v29 = asm(dst: v24, src: v19, len: v28) -> (), !159 { - mcp dst src len, !160 + v28 = mul v20, v27, !156 + v29 = asm(dst: v24, src: v19, len: v28) -> (), !158 { + mcp dst src len, !159 } - br grow_12_realloc_13_block5(v24), !161 + br grow_14_realloc_15_block5(v24), !160 - grow_12_realloc_13_block5(v30: ptr): - store v30 to v18, !163 - store v16 to v6, !165 + grow_14_realloc_15_block5(v30: ptr): + store v30 to v18, !162 + store v16 to v6, !164 br block2() block2(): v31 = const u64 0 - v32 = get_elem_ptr v4, __ptr ptr, v31, !135 + v32 = get_elem_ptr v4, __ptr ptr, v31, !134 v33 = load v32 v34 = load v1 v35 = const u64 8 - v36 = mul v35, v34, !168 - v37 = add v33, v36, !168 - v38 = asm(ptr: v37, val: value) -> (), !172 { - sw ptr val i0, !173 + v36 = mul v35, v34, !167 + v37 = add v33, v36, !167 + v38 = asm(ptr: v37, val: value) -> (), !171 { + sw ptr val i0, !172 } v39 = load v1 - v40 = const u64 1, !174 - v41 = add v39, v40, !177 - store v41 to v1, !175 + v40 = const u64 1, !173 + v41 = add v39, v40, !176 + store v41 to v1, !174 v42 = const unit () ret () v42 } - fn local_log_19(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }) -> (), !178 { - local mut { ptr, u64, u64 } __aggr_memcpy_0 + fn local_log_21(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }) -> (), !177 { + local mut slice __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local mut { ptr, u64, u64 } __aggr_memcpy_01 local mut { ptr, u64, u64 } __aggr_memcpy_010 + local mut { ptr, u64, u64 } __aggr_memcpy_011 local mut { ptr, u64, u64 } __aggr_memcpy_02 local mut { ptr, u64, u64 } __aggr_memcpy_03 local mut { ptr, u64, u64 } __aggr_memcpy_04 local mut { ptr, u64, u64 } __aggr_memcpy_05 - local mut { u64, u64 } __aggr_memcpy_06 - local mut slice __aggr_memcpy_07 - local mut { ptr, u64, u64 } __aggr_memcpy_08 + local mut { ptr, u64, u64 } __aggr_memcpy_06 + local mut { u64, u64 } __aggr_memcpy_07 + local mut slice __aggr_memcpy_08 local mut { ptr, u64, u64 } __aggr_memcpy_09 + local { ptr, u64 } __anon_0 local { ptr, u64, u64 } __anon_00 local { ptr, u64, u64 } __anon_000 local { ptr, u64, u64 } __anon_01 @@ -445,6 +448,7 @@ script { local { { ptr, u64, u64 } } __tmp_arg0 local { { ptr, u64, u64 } } __tmp_arg1 local { { ptr, u64, u64 } } __tmp_arg2 + local slice __tmp_block_arg local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ local { { ptr, u64, u64 } } buffer_0 @@ -472,334 +476,392 @@ script { entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): v0 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ mem_copy_val v0, item - v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !83 - v2 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !83 + v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !82 + v2 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !82 mem_copy_val v2, v1 - v3 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !180 - v4 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 - v5 = call new_5(v4) - v6 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !183 - mem_copy_val v6, v3 - v7 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !184 - mem_copy_val v7, v4 - v8 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !186 - v9 = const u64 0 - v10 = get_elem_ptr v8, __ptr u64, v9, !188 - v11 = load v10, !189 - v12 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !191 - v13 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg - mem_copy_val v13, v12 - v14 = get_local __ptr { { ptr, u64, u64 } }, __ret_val - v15 = call abi_encode_4(v11, v13, v14) - v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 - mem_copy_val v16, v14 - v17 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !195 - v18 = const u64 1 - v19 = get_elem_ptr v17, __ptr u64, v18, !197 - v20 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !199 - v21 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !202 - mem_copy_val v21, v20 - v22 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !204 - v23 = const u64 0 - v24 = get_elem_ptr v22, __ptr { ptr, u64, u64 }, v23, !205 - v25 = asm(buffer: v24) -> __ptr { ptr, u64, u64 } buffer { + v3 = const bool false, !184 + cbr v3, encode_22_is_encode_trivial_23_is_encode_trivial_24_block4(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v3), !186 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block4(): + v4 = const bool false, !187 + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v4), !188 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v5: bool): + cbr v5, encode_22_is_encode_trivial_23_is_encode_trivial_24_block6(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v5), !190 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block6(): + v6 = const bool true, !191 + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v6), !192 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v7: bool): + cbr v7, encode_22_is_encode_trivial_23_is_encode_trivial_24_block8(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v7), !194 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block8(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v4), !195 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v8: bool): + cbr v8, encode_22_is_encode_trivial_23_is_encode_trivial_24_block10(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v8), !197 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block10(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v6), !198 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v9: bool): + cbr v9, encode_22_is_encode_trivial_23_is_encode_trivial_24_block12(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v9), !200 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block12(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v6), !201 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v10: bool): + cbr v10, encode_22_block0(), encode_22_block1(), !202 + + encode_22_block0(): + v11 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !203 + v12 = const u64 104 + v13 = asm(size: v12, src: v11) -> ptr hp, !204 { + aloc size, !87 + mcp hp src size, !88 + } + v14 = get_local __ptr { ptr, u64 }, __anon_0, !205 + v15 = const u64 0 + v16 = get_elem_ptr v14, __ptr ptr, v15, !206 + store v13 to v16, !207 + v17 = const u64 1 + v18 = get_elem_ptr v14, __ptr u64, v17, !208 + store v12 to v18, !209 + v19 = asm(s: v14) -> __ptr slice s { } - v26 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v26, v25 - v27 = get_local __ptr { ptr, u64, u64 }, __anon_00, !206 - mem_copy_val v27, v26 + v20 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v20, v19 + v21 = get_local __ptr slice, __tmp_block_arg + mem_copy_val v21, v20 + br encode_22_block2(v21), !82 + + encode_22_block1(): + v22 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !211 + v23 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v24 = call new_6(v23) + v25 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !214 + mem_copy_val v25, v22 + v26 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !215 + mem_copy_val v26, v23 + v27 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !217 v28 = const u64 0 - v29 = get_elem_ptr v27, __ptr ptr, v28, !207 - v30 = load v29, !208 - v31 = const u64 1 - v32 = get_elem_ptr v27, __ptr u64, v31, !209 - v33 = load v32, !210 - v34 = const u64 2 - v35 = get_elem_ptr v27, __ptr u64, v34, !211 - v36 = load v35, !212 - v37 = const u64 4 - v38 = add v36, v37, !213 - v39 = cmp gt v38 v33, !214 - cbr v39, encode_20_abi_encode_21_abi_encode_22_block1(), encode_20_abi_encode_21_abi_encode_22_block0(v30, v33), !215 - - encode_20_abi_encode_21_abi_encode_22_block0(v40: ptr, v41: u64): - v42 = get_local __ptr u64, __anon_1, !216 - mem_copy_val v42, v19 - v43 = const u64 4 - v44 = add v42, v43, !217 - v45 = cast_ptr v44 to __ptr u8, !218 - v46 = add v40, v36, !219 - v47 = cast_ptr v46 to __ptr u8, !220 - mem_copy_bytes v47, v45, 4, !221 - v48 = get_local __ptr { ptr, u64, u64 }, __anon_2, !222 - v49 = const u64 0 - v50 = get_elem_ptr v48, __ptr ptr, v49, !223 - store v40 to v50, !224 - v51 = const u64 1 - v52 = get_elem_ptr v48, __ptr u64, v51, !225 - store v41 to v52, !226 - v53 = const u64 2 - v54 = get_elem_ptr v48, __ptr u64, v53, !227 - store v38 to v54, !228 - v55 = asm(buffer: v48) -> __ptr { ptr, u64, u64 } buffer { + v29 = get_elem_ptr v27, __ptr u64, v28, !219 + v30 = load v29, !220 + v31 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !222 + v32 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v32, v31 + v33 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v34 = call abi_encode_5(v30, v32, v33) + v35 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !224 + mem_copy_val v35, v33 + v36 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !226 + v37 = const u64 1 + v38 = get_elem_ptr v36, __ptr u64, v37, !228 + v39 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !230 + v40 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !233 + mem_copy_val v40, v39 + v41 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !235 + v42 = const u64 0 + v43 = get_elem_ptr v41, __ptr { ptr, u64, u64 }, v42, !236 + v44 = asm(buffer: v43) -> __ptr { ptr, u64, u64 } buffer { } - v56 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v56, v55 - v57 = get_local __ptr { { ptr, u64, u64 } }, __anon_3, !230 - v58 = const u64 0 - v59 = get_elem_ptr v57, __ptr { ptr, u64, u64 }, v58, !231 - mem_copy_val v59, v56 - v60 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !233 - mem_copy_val v60, v57 - v61 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !235 - v62 = const u64 2 - v63 = get_elem_ptr v61, __ptr u64, v62, !237 - v64 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !239 - v65 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !242 - mem_copy_val v65, v64 - v66 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !244 - v67 = const u64 0 - v68 = get_elem_ptr v66, __ptr { ptr, u64, u64 }, v67, !245 - v69 = asm(buffer: v68) -> __ptr { ptr, u64, u64 } buffer { + v45 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v45, v44 + v46 = get_local __ptr { ptr, u64, u64 }, __anon_00, !237 + mem_copy_val v46, v45 + v47 = const u64 0 + v48 = get_elem_ptr v46, __ptr ptr, v47, !238 + v49 = load v48, !239 + v50 = const u64 1 + v51 = get_elem_ptr v46, __ptr u64, v50, !240 + v52 = load v51, !241 + v53 = const u64 2 + v54 = get_elem_ptr v46, __ptr u64, v53, !242 + v55 = load v54, !243 + v56 = const u64 4 + v57 = add v55, v56, !244 + v58 = cmp gt v57 v52, !245 + cbr v58, encode_22_abi_encode_37_abi_encode_38_block1(), encode_22_abi_encode_37_abi_encode_38_block0(v49, v52), !246 + + encode_22_abi_encode_37_abi_encode_38_block0(v59: ptr, v60: u64): + v61 = get_local __ptr u64, __anon_1, !247 + mem_copy_val v61, v38 + v62 = const u64 4 + v63 = add v61, v62, !248 + v64 = cast_ptr v63 to __ptr u8, !249 + v65 = add v59, v55, !250 + v66 = cast_ptr v65 to __ptr u8, !251 + mem_copy_bytes v66, v64, 4, !252 + v67 = get_local __ptr { ptr, u64, u64 }, __anon_2, !253 + v68 = const u64 0 + v69 = get_elem_ptr v67, __ptr ptr, v68, !254 + store v59 to v69, !255 + v70 = const u64 1 + v71 = get_elem_ptr v67, __ptr u64, v70, !256 + store v60 to v71, !257 + v72 = const u64 2 + v73 = get_elem_ptr v67, __ptr u64, v72, !258 + store v57 to v73, !259 + v74 = asm(buffer: v67) -> __ptr { ptr, u64, u64 } buffer { } - v70 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v70, v69 - v71 = get_local __ptr { ptr, u64, u64 }, __anon_000, !246 - mem_copy_val v71, v70 - v72 = const u64 0 - v73 = get_elem_ptr v71, __ptr ptr, v72, !247 - v74 = load v73, !248 - v75 = const u64 1 - v76 = get_elem_ptr v71, __ptr u64, v75, !249 - v77 = load v76, !250 - v78 = const u64 2 - v79 = get_elem_ptr v71, __ptr u64, v78, !251 - v80 = load v79, !252 + v75 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v75, v74 + v76 = get_local __ptr { { ptr, u64, u64 } }, __anon_3, !261 + v77 = const u64 0 + v78 = get_elem_ptr v76, __ptr { ptr, u64, u64 }, v77, !262 + mem_copy_val v78, v75 + v79 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !264 + mem_copy_val v79, v76 + v80 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !266 v81 = const u64 2 - v82 = add v80, v81, !253 - v83 = cmp gt v82 v77, !254 - cbr v83, encode_20_abi_encode_21_abi_encode_23_block1(), encode_20_abi_encode_21_abi_encode_23_block0(v74, v77), !255 - - encode_20_abi_encode_21_abi_encode_22_block1(): - v84 = const u64 2 - v85 = mul v33, v84, !256 - v86 = add v85, v37, !257 - v87 = asm(new_cap: v86, old_ptr: v30, len: v36) -> __ptr u8 hp, !258 { + v82 = get_elem_ptr v80, __ptr u64, v81, !268 + v83 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !270 + v84 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !273 + mem_copy_val v84, v83 + v85 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !275 + v86 = const u64 0 + v87 = get_elem_ptr v85, __ptr { ptr, u64, u64 }, v86, !276 + v88 = asm(buffer: v87) -> __ptr { ptr, u64, u64 } buffer { + } + v89 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 + mem_copy_val v89, v88 + v90 = get_local __ptr { ptr, u64, u64 }, __anon_000, !277 + mem_copy_val v90, v89 + v91 = const u64 0 + v92 = get_elem_ptr v90, __ptr ptr, v91, !278 + v93 = load v92, !279 + v94 = const u64 1 + v95 = get_elem_ptr v90, __ptr u64, v94, !280 + v96 = load v95, !281 + v97 = const u64 2 + v98 = get_elem_ptr v90, __ptr u64, v97, !282 + v99 = load v98, !283 + v100 = const u64 2 + v101 = add v99, v100, !284 + v102 = cmp gt v101 v96, !285 + cbr v102, encode_22_abi_encode_37_abi_encode_39_block1(), encode_22_abi_encode_37_abi_encode_39_block0(v93, v96), !286 + + encode_22_abi_encode_37_abi_encode_38_block1(): + v103 = const u64 2 + v104 = mul v52, v103, !287 + v105 = add v104, v56, !288 + v106 = asm(new_cap: v105, old_ptr: v49, len: v55) -> __ptr u8 hp, !289 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_22_block0(v87, v86), !259 - - encode_20_abi_encode_21_abi_encode_23_block0(v88: ptr, v89: u64): - v90 = get_local __ptr u64, __anon_10, !260 - mem_copy_val v90, v63 - v91 = const u64 6 - v92 = add v90, v91, !261 - v93 = cast_ptr v92 to __ptr u8, !262 - v94 = add v88, v80, !263 - v95 = cast_ptr v94 to __ptr u8, !264 - mem_copy_bytes v95, v93, 2, !265 - v96 = get_local __ptr { ptr, u64, u64 }, __anon_20, !266 - v97 = const u64 0 - v98 = get_elem_ptr v96, __ptr ptr, v97, !267 - store v88 to v98, !268 - v99 = const u64 1 - v100 = get_elem_ptr v96, __ptr u64, v99, !269 - store v89 to v100, !270 - v101 = const u64 2 - v102 = get_elem_ptr v96, __ptr u64, v101, !271 - store v82 to v102, !272 - v103 = asm(buffer: v96) -> __ptr { ptr, u64, u64 } buffer { - } - v104 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 - mem_copy_val v104, v103 - v105 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !274 - v106 = const u64 0 - v107 = get_elem_ptr v105, __ptr { ptr, u64, u64 }, v106, !275 - mem_copy_val v107, v104 - v108 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !277 - mem_copy_val v108, v105 - v109 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !279 - v110 = const u64 3 - v111 = get_elem_ptr v109, __ptr u8, v110, !281 - v112 = load v111, !282 - v113 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !284 - v114 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !287 - mem_copy_val v114, v113 - v115 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !289 + br encode_22_abi_encode_37_abi_encode_38_block0(v106, v105), !290 + + encode_22_abi_encode_37_abi_encode_39_block0(v107: ptr, v108: u64): + v109 = get_local __ptr u64, __anon_10, !291 + mem_copy_val v109, v82 + v110 = const u64 6 + v111 = add v109, v110, !292 + v112 = cast_ptr v111 to __ptr u8, !293 + v113 = add v107, v99, !294 + v114 = cast_ptr v113 to __ptr u8, !295 + mem_copy_bytes v114, v112, 2, !296 + v115 = get_local __ptr { ptr, u64, u64 }, __anon_20, !297 v116 = const u64 0 - v117 = get_elem_ptr v115, __ptr { ptr, u64, u64 }, v116, !290 - v118 = asm(buffer: v117) -> __ptr { ptr, u64, u64 } buffer { + v117 = get_elem_ptr v115, __ptr ptr, v116, !298 + store v107 to v117, !299 + v118 = const u64 1 + v119 = get_elem_ptr v115, __ptr u64, v118, !300 + store v108 to v119, !301 + v120 = const u64 2 + v121 = get_elem_ptr v115, __ptr u64, v120, !302 + store v101 to v121, !303 + v122 = asm(buffer: v115) -> __ptr { ptr, u64, u64 } buffer { + } + v123 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 + mem_copy_val v123, v122 + v124 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !305 + v125 = const u64 0 + v126 = get_elem_ptr v124, __ptr { ptr, u64, u64 }, v125, !306 + mem_copy_val v126, v123 + v127 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !308 + mem_copy_val v127, v124 + v128 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !310 + v129 = const u64 3 + v130 = get_elem_ptr v128, __ptr u8, v129, !312 + v131 = load v130, !313 + v132 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !315 + v133 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !318 + mem_copy_val v133, v132 + v134 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !320 + v135 = const u64 0 + v136 = get_elem_ptr v134, __ptr { ptr, u64, u64 }, v135, !321 + v137 = asm(buffer: v136) -> __ptr { ptr, u64, u64 } buffer { } - v119 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 - mem_copy_val v119, v118 - v120 = get_local __ptr { ptr, u64, u64 }, __anon_01, !291 - mem_copy_val v120, v119 - v121 = const u64 0 - v122 = get_elem_ptr v120, __ptr ptr, v121, !292 - v123 = load v122, !293 - v124 = const u64 1 - v125 = get_elem_ptr v120, __ptr u64, v124, !294 - v126 = load v125, !295 - v127 = const u64 2 - v128 = get_elem_ptr v120, __ptr u64, v127, !296 - v129 = load v128, !297 - v130 = const u64 1 - v131 = add v129, v130, !298 - v132 = cmp gt v131 v126, !299 - cbr v132, encode_20_abi_encode_21_abi_encode_24_block1(), encode_20_abi_encode_21_abi_encode_24_block0(v123, v126), !300 - - encode_20_abi_encode_21_abi_encode_23_block1(): - v133 = const u64 2 - v134 = mul v77, v133, !301 - v135 = add v134, v81, !302 - v136 = asm(new_cap: v135, old_ptr: v74, len: v80) -> __ptr u8 hp, !303 { + v138 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 + mem_copy_val v138, v137 + v139 = get_local __ptr { ptr, u64, u64 }, __anon_01, !322 + mem_copy_val v139, v138 + v140 = const u64 0 + v141 = get_elem_ptr v139, __ptr ptr, v140, !323 + v142 = load v141, !324 + v143 = const u64 1 + v144 = get_elem_ptr v139, __ptr u64, v143, !325 + v145 = load v144, !326 + v146 = const u64 2 + v147 = get_elem_ptr v139, __ptr u64, v146, !327 + v148 = load v147, !328 + v149 = const u64 1 + v150 = add v148, v149, !329 + v151 = cmp gt v150 v145, !330 + cbr v151, encode_22_abi_encode_37_abi_encode_40_block1(), encode_22_abi_encode_37_abi_encode_40_block0(v142, v145), !331 + + encode_22_abi_encode_37_abi_encode_39_block1(): + v152 = const u64 2 + v153 = mul v96, v152, !332 + v154 = add v153, v100, !333 + v155 = asm(new_cap: v154, old_ptr: v93, len: v99) -> __ptr u8 hp, !334 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_23_block0(v136, v135), !304 - - encode_20_abi_encode_21_abi_encode_24_block0(v137: ptr, v138: u64): - v139 = add v137, v129, !305 - v140 = cast_ptr v139 to __ptr u8, !306 - store v112 to v140, !307 - v141 = get_local __ptr { ptr, u64, u64 }, __anon_11, !308 - v142 = const u64 0 - v143 = get_elem_ptr v141, __ptr ptr, v142, !309 - store v137 to v143, !310 - v144 = const u64 1 - v145 = get_elem_ptr v141, __ptr u64, v144, !311 - store v138 to v145, !312 - v146 = const u64 2 - v147 = get_elem_ptr v141, __ptr u64, v146, !313 - store v131 to v147, !314 - v148 = asm(buffer: v141) -> __ptr { ptr, u64, u64 } buffer { + br encode_22_abi_encode_37_abi_encode_39_block0(v155, v154), !335 + + encode_22_abi_encode_37_abi_encode_40_block0(v156: ptr, v157: u64): + v158 = add v156, v148, !336 + v159 = cast_ptr v158 to __ptr u8, !337 + store v131 to v159, !338 + v160 = get_local __ptr { ptr, u64, u64 }, __anon_11, !339 + v161 = const u64 0 + v162 = get_elem_ptr v160, __ptr ptr, v161, !340 + store v156 to v162, !341 + v163 = const u64 1 + v164 = get_elem_ptr v160, __ptr u64, v163, !342 + store v157 to v164, !343 + v165 = const u64 2 + v166 = get_elem_ptr v160, __ptr u64, v165, !344 + store v150 to v166, !345 + v167 = asm(buffer: v160) -> __ptr { ptr, u64, u64 } buffer { } - v149 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 - mem_copy_val v149, v148 - v150 = get_local __ptr { { ptr, u64, u64 } }, __anon_21, !316 - v151 = const u64 0 - v152 = get_elem_ptr v150, __ptr { ptr, u64, u64 }, v151, !317 - mem_copy_val v152, v149 - v153 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !319 - mem_copy_val v153, v150 - v154 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !321 - v155 = const u64 4 - v156 = get_elem_ptr v154, __ptr { { ptr, u64 }, u64 }, v155, !323 - v157 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !325 - v158 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !328 - mem_copy_val v158, v156 - v159 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !329 - mem_copy_val v159, v157 - v160 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !331 - v161 = const u64 1 - v162 = get_elem_ptr v160, __ptr u64, v161, !332 - v163 = load v162, !333 - v164 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !335 - v165 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 - mem_copy_val v165, v164 - v166 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 - v167 = call abi_encode_4(v163, v165, v166) - v168 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !337 - mem_copy_val v168, v166 - v169 = const u64 0, !338 - br encode_20_abi_encode_21_abi_encode_25_while(v169), !339 - - encode_20_abi_encode_21_abi_encode_24_block1(): - v170 = const u64 2 - v171 = mul v126, v170, !340 - v172 = add v171, v130, !341 - v173 = asm(new_cap: v172, old_ptr: v123, len: v129) -> __ptr u8 hp, !342 { + v168 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 + mem_copy_val v168, v167 + v169 = get_local __ptr { { ptr, u64, u64 } }, __anon_21, !347 + v170 = const u64 0 + v171 = get_elem_ptr v169, __ptr { ptr, u64, u64 }, v170, !348 + mem_copy_val v171, v168 + v172 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !350 + mem_copy_val v172, v169 + v173 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !352 + v174 = const u64 4 + v175 = get_elem_ptr v173, __ptr { { ptr, u64 }, u64 }, v174, !354 + v176 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !356 + v177 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !359 + mem_copy_val v177, v175 + v178 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !360 + mem_copy_val v178, v176 + v179 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !362 + v180 = const u64 1 + v181 = get_elem_ptr v179, __ptr u64, v180, !363 + v182 = load v181, !364 + v183 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !366 + v184 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v184, v183 + v185 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v186 = call abi_encode_5(v182, v184, v185) + v187 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !368 + mem_copy_val v187, v185 + v188 = const u64 0, !369 + br encode_22_abi_encode_37_abi_encode_41_while(v188), !370 + + encode_22_abi_encode_37_abi_encode_40_block1(): + v189 = const u64 2 + v190 = mul v145, v189, !371 + v191 = add v190, v149, !372 + v192 = asm(new_cap: v191, old_ptr: v142, len: v148) -> __ptr u8 hp, !373 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_24_block0(v173, v172), !343 - - encode_20_abi_encode_21_abi_encode_25_while(v174: u64): - v175 = cmp lt v174 v163, !346 - cbr v175, encode_20_abi_encode_21_abi_encode_25_while_body(), encode_20_abi_encode_21_abi_encode_25_end_while(), !347 - - encode_20_abi_encode_21_abi_encode_25_while_body(): - v176 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !349 - v177 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !352 - mem_copy_val v177, v176 - v178 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !354 - v179 = const u64 0 - v180 = get_elem_ptr v178, __ptr { ptr, u64 }, v179, !355 - v181 = const u64 0 - v182 = get_elem_ptr v180, __ptr ptr, v181, !356 - v183 = load v182, !357 - v184 = const u64 8 - v185 = mul v184, v174, !360 - v186 = add v183, v185, !361 - v187 = asm(ptr: v186, val) -> u64 val, !365 { - lw val ptr i0, !366 - } - v188 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !368 - v189 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 - mem_copy_val v189, v188 - v190 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v191 = call abi_encode_4(v187, v189, v190) - v192 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !370 - mem_copy_val v192, v190 - v193 = const u64 1, !371 - v194 = add v174, v193, !374 - br encode_20_abi_encode_21_abi_encode_25_while(v194), !375 - - encode_20_abi_encode_21_abi_encode_25_end_while(): - v195 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !377 - v196 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !379 + br encode_22_abi_encode_37_abi_encode_40_block0(v192, v191), !374 + + encode_22_abi_encode_37_abi_encode_41_while(v193: u64): + v194 = cmp lt v193 v182, !377 + cbr v194, encode_22_abi_encode_37_abi_encode_41_while_body(), encode_22_abi_encode_37_abi_encode_41_end_while(), !378 + + encode_22_abi_encode_37_abi_encode_41_while_body(): + v195 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !380 + v196 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !383 mem_copy_val v196, v195 - v197 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !381 - v198 = const u64 5 - v199 = get_elem_ptr v197, __ptr slice, v198, !383 - v200 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !385 - v201 = get_local __ptr slice, self_4, !388 - mem_copy_val v201, v199 - v202 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !389 - mem_copy_val v202, v200 - v203 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !391 - v204 = const u64 0 - v205 = get_elem_ptr v203, __ptr { ptr, u64, u64 }, v204, !392 - v206 = asm(buffer: v205) -> __ptr { ptr, u64, u64 } buffer { + v197 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !385 + v198 = const u64 0 + v199 = get_elem_ptr v197, __ptr { ptr, u64 }, v198, !386 + v200 = const u64 0 + v201 = get_elem_ptr v199, __ptr ptr, v200, !387 + v202 = load v201, !388 + v203 = const u64 8 + v204 = mul v203, v193, !391 + v205 = add v202, v204, !392 + v206 = asm(ptr: v205, val) -> u64 val, !396 { + lw val ptr i0, !397 } - v207 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 - mem_copy_val v207, v206 - v208 = get_local __ptr { ptr, u64, u64 }, __anon_02, !393 + v207 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !399 + v208 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 mem_copy_val v208, v207 - v209 = const u64 0 - v210 = get_elem_ptr v208, __ptr ptr, v209, !394 - v211 = load v210, !395 - v212 = const u64 1 - v213 = get_elem_ptr v208, __ptr u64, v212, !396 - v214 = load v213, !397 - v215 = const u64 2 - v216 = get_elem_ptr v208, __ptr u64, v215, !398 - v217 = load v216, !399 - v218 = get_local __ptr slice, self_4, !401 - v219 = get_local __ptr slice, __aggr_memcpy_07 - mem_copy_val v219, v218 - v220 = asm(item: v218) -> __ptr { u64, u64 } item { + v209 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v210 = call abi_encode_5(v206, v208, v209) + v211 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !401 + mem_copy_val v211, v209 + v212 = const u64 1, !402 + v213 = add v193, v212, !405 + br encode_22_abi_encode_37_abi_encode_41_while(v213), !406 + + encode_22_abi_encode_37_abi_encode_41_end_while(): + v214 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !408 + v215 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !410 + mem_copy_val v215, v214 + v216 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !412 + v217 = const u64 5 + v218 = get_elem_ptr v216, __ptr slice, v217, !414 + v219 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !416 + v220 = get_local __ptr slice, self_4, !419 + mem_copy_val v220, v218 + v221 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !420 + mem_copy_val v221, v219 + v222 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !422 + v223 = const u64 0 + v224 = get_elem_ptr v222, __ptr { ptr, u64, u64 }, v223, !423 + v225 = asm(buffer: v224) -> __ptr { ptr, u64, u64 } buffer { + } + v226 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_06 + mem_copy_val v226, v225 + v227 = get_local __ptr { ptr, u64, u64 }, __anon_02, !424 + mem_copy_val v227, v226 + v228 = const u64 0 + v229 = get_elem_ptr v227, __ptr ptr, v228, !425 + v230 = load v229, !426 + v231 = const u64 1 + v232 = get_elem_ptr v227, __ptr u64, v231, !427 + v233 = load v232, !428 + v234 = const u64 2 + v235 = get_elem_ptr v227, __ptr u64, v234, !429 + v236 = load v235, !430 + v237 = get_local __ptr slice, self_4, !432 + v238 = get_local __ptr slice, __aggr_memcpy_08 + mem_copy_val v238, v237 + v239 = asm(item: v237) -> __ptr { u64, u64 } item { } - v221 = get_local __ptr { u64, u64 }, __aggr_memcpy_06 - mem_copy_val v221, v220 - v222 = get_local __ptr { u64, u64 }, __anon_12, !402 - mem_copy_val v222, v221 - v223 = const u64 1 - v224 = get_elem_ptr v222, __ptr u64, v223, !403 - v225 = load v224, !404 - v226 = const u64 8 - v227 = add v225, v226, !405 - v228 = add v217, v227, !406 - v229 = cmp gt v228 v214, !407 - cbr v229, encode_20_abi_encode_21_abi_encode_29_block1(), encode_20_abi_encode_21_abi_encode_29_block0(v211, v214), !408 - - encode_20_abi_encode_21_abi_encode_29_block0(v230: ptr, v231: u64): - v232 = get_local __ptr slice, __anon_22, !409 - mem_copy_val v232, v219 - v233 = add v230, v217, !410 - v234 = cast_ptr v233 to __ptr u8, !411 - v235 = asm(item_ptr: v232, len: v217, addr: v234, data_ptr, item_len, new_len) -> u64 new_len, !412 { + v240 = get_local __ptr { u64, u64 }, __aggr_memcpy_07 + mem_copy_val v240, v239 + v241 = get_local __ptr { u64, u64 }, __anon_12, !433 + mem_copy_val v241, v240 + v242 = const u64 1 + v243 = get_elem_ptr v241, __ptr u64, v242, !434 + v244 = load v243, !435 + v245 = const u64 8 + v246 = add v244, v245, !436 + v247 = add v236, v246, !437 + v248 = cmp gt v247 v233, !438 + cbr v248, encode_22_abi_encode_37_abi_encode_45_block1(), encode_22_abi_encode_37_abi_encode_45_block0(v230, v233), !439 + + encode_22_abi_encode_37_abi_encode_45_block0(v249: ptr, v250: u64): + v251 = get_local __ptr slice, __anon_22, !440 + mem_copy_val v251, v238 + v252 = add v249, v236, !441 + v253 = cast_ptr v252 to __ptr u8, !442 + v254 = asm(item_ptr: v251, len: v236, addr: v253, data_ptr, item_len, new_len) -> u64 new_len, !443 { lw item_len item_ptr i1 sw addr item_len i0 addi addr addr i8 @@ -808,121 +870,126 @@ script { addi new_len len i8 add new_len new_len item_len } - v236 = get_local __ptr { ptr, u64, u64 }, __anon_31, !413 - v237 = const u64 0 - v238 = get_elem_ptr v236, __ptr ptr, v237, !414 - store v230 to v238, !415 - v239 = const u64 1 - v240 = get_elem_ptr v236, __ptr u64, v239, !416 - store v231 to v240, !417 - v241 = const u64 2 - v242 = get_elem_ptr v236, __ptr u64, v241, !418 - store v235 to v242, !419 - v243 = asm(buffer: v236) -> __ptr { ptr, u64, u64 } buffer { - } - v244 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_08 - mem_copy_val v244, v243 - v245 = get_local __ptr { { ptr, u64, u64 } }, __anon_4, !421 - v246 = const u64 0 - v247 = get_elem_ptr v245, __ptr { ptr, u64, u64 }, v246, !422 - mem_copy_val v247, v244 - v248 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !424 - mem_copy_val v248, v245 - v249 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !426 - v250 = const u64 6 - v251 = get_elem_ptr v249, __ptr u256, v250, !428 - v252 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !430 - v253 = get_local __ptr u256, self_5, !433 - mem_copy_val v253, v251 - v254 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !434 - mem_copy_val v254, v252 - v255 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !436 + v255 = get_local __ptr { ptr, u64, u64 }, __anon_31, !444 v256 = const u64 0 - v257 = get_elem_ptr v255, __ptr { ptr, u64, u64 }, v256, !437 - v258 = asm(buffer: v257) -> __ptr { ptr, u64, u64 } buffer { + v257 = get_elem_ptr v255, __ptr ptr, v256, !445 + store v249 to v257, !446 + v258 = const u64 1 + v259 = get_elem_ptr v255, __ptr u64, v258, !447 + store v250 to v259, !448 + v260 = const u64 2 + v261 = get_elem_ptr v255, __ptr u64, v260, !449 + store v254 to v261, !450 + v262 = asm(buffer: v255) -> __ptr { ptr, u64, u64 } buffer { } - v259 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_09 - mem_copy_val v259, v258 - v260 = get_local __ptr { ptr, u64, u64 }, __anon_03, !438 - mem_copy_val v260, v259 - v261 = const u64 0 - v262 = get_elem_ptr v260, __ptr ptr, v261, !439 - v263 = load v262, !440 - v264 = const u64 1 - v265 = get_elem_ptr v260, __ptr u64, v264, !441 - v266 = load v265, !442 - v267 = const u64 2 - v268 = get_elem_ptr v260, __ptr u64, v267, !443 - v269 = load v268, !444 - v270 = get_local __ptr u256, self_5, !446 - v271 = const u64 32 - v272 = add v269, v271, !447 - v273 = cmp gt v272 v266, !448 - cbr v273, encode_20_abi_encode_21_abi_encode_30_block1(), encode_20_abi_encode_21_abi_encode_30_block0(v263, v266), !449 - - encode_20_abi_encode_21_abi_encode_29_block1(): - v274 = const u64 2 - v275 = mul v214, v274, !450 - v276 = add v275, v227, !451 - v277 = asm(new_cap: v276, old_ptr: v211, len: v217) -> __ptr u8 hp, !452 { + v263 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_09 + mem_copy_val v263, v262 + v264 = get_local __ptr { { ptr, u64, u64 } }, __anon_4, !452 + v265 = const u64 0 + v266 = get_elem_ptr v264, __ptr { ptr, u64, u64 }, v265, !453 + mem_copy_val v266, v263 + v267 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !455 + mem_copy_val v267, v264 + v268 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !457 + v269 = const u64 6 + v270 = get_elem_ptr v268, __ptr u256, v269, !459 + v271 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !461 + v272 = get_local __ptr u256, self_5, !464 + mem_copy_val v272, v270 + v273 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !465 + mem_copy_val v273, v271 + v274 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !467 + v275 = const u64 0 + v276 = get_elem_ptr v274, __ptr { ptr, u64, u64 }, v275, !468 + v277 = asm(buffer: v276) -> __ptr { ptr, u64, u64 } buffer { + } + v278 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 + mem_copy_val v278, v277 + v279 = get_local __ptr { ptr, u64, u64 }, __anon_03, !469 + mem_copy_val v279, v278 + v280 = const u64 0 + v281 = get_elem_ptr v279, __ptr ptr, v280, !470 + v282 = load v281, !471 + v283 = const u64 1 + v284 = get_elem_ptr v279, __ptr u64, v283, !472 + v285 = load v284, !473 + v286 = const u64 2 + v287 = get_elem_ptr v279, __ptr u64, v286, !474 + v288 = load v287, !475 + v289 = get_local __ptr u256, self_5, !477 + v290 = const u64 32 + v291 = add v288, v290, !478 + v292 = cmp gt v291 v285, !479 + cbr v292, encode_22_abi_encode_37_abi_encode_46_block1(), encode_22_abi_encode_37_abi_encode_46_block0(v282, v285), !480 + + encode_22_abi_encode_37_abi_encode_45_block1(): + v293 = const u64 2 + v294 = mul v233, v293, !481 + v295 = add v294, v246, !482 + v296 = asm(new_cap: v295, old_ptr: v230, len: v236) -> __ptr u8 hp, !483 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_29_block0(v277, v276), !453 - - encode_20_abi_encode_21_abi_encode_30_block0(v278: ptr, v279: u64): - v280 = get_local __ptr u256, __anon_13, !454 - mem_copy_val v280, v270 - v281 = add v278, v269, !455 - v282 = cast_ptr v281 to __ptr u8, !456 - mem_copy_bytes v282, v280, 32, !457 - v283 = get_local __ptr { ptr, u64, u64 }, __anon_23, !458 - v284 = const u64 0 - v285 = get_elem_ptr v283, __ptr ptr, v284, !459 - store v278 to v285, !460 - v286 = const u64 1 - v287 = get_elem_ptr v283, __ptr u64, v286, !461 - store v279 to v287, !462 - v288 = const u64 2 - v289 = get_elem_ptr v283, __ptr u64, v288, !463 - store v272 to v289, !464 - v290 = asm(buffer: v283) -> __ptr { ptr, u64, u64 } buffer { + br encode_22_abi_encode_37_abi_encode_45_block0(v296, v295), !484 + + encode_22_abi_encode_37_abi_encode_46_block0(v297: ptr, v298: u64): + v299 = get_local __ptr u256, __anon_13, !485 + mem_copy_val v299, v289 + v300 = add v297, v288, !486 + v301 = cast_ptr v300 to __ptr u8, !487 + mem_copy_bytes v301, v299, 32, !488 + v302 = get_local __ptr { ptr, u64, u64 }, __anon_23, !489 + v303 = const u64 0 + v304 = get_elem_ptr v302, __ptr ptr, v303, !490 + store v297 to v304, !491 + v305 = const u64 1 + v306 = get_elem_ptr v302, __ptr u64, v305, !492 + store v298 to v306, !493 + v307 = const u64 2 + v308 = get_elem_ptr v302, __ptr u64, v307, !494 + store v291 to v308, !495 + v309 = asm(buffer: v302) -> __ptr { ptr, u64, u64 } buffer { } - v291 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 - mem_copy_val v291, v290 - v292 = get_local __ptr { { ptr, u64, u64 } }, __anon_32, !466 - v293 = const u64 0 - v294 = get_elem_ptr v292, __ptr { ptr, u64, u64 }, v293, !467 - mem_copy_val v294, v291 - v295 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !469 - mem_copy_val v295, v292 - v296 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !471 - v297 = get_local __ptr { { ptr, u64, u64 } }, buffer, !473 - mem_copy_val v297, v296 - v298 = get_local __ptr { { ptr, u64, u64 } }, buffer, !475 - v299 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 - mem_copy_val v299, v298 - v300 = get_local __ptr slice, __ret_val3 - v301 = call as_raw_slice_6(v299, v300) - v302 = get_local __ptr slice, __log_arg - mem_copy_val v302, v300 - v303 = const u64 4579537983717831593 - log __ptr slice v302, v303 - v304 = const unit () - ret () v304 - - encode_20_abi_encode_21_abi_encode_30_block1(): - v305 = const u64 2 - v306 = mul v266, v305, !476 - v307 = add v306, v271, !477 - v308 = asm(new_cap: v307, old_ptr: v263, len: v269) -> __ptr u8 hp, !478 { + v310 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_011 + mem_copy_val v310, v309 + v311 = get_local __ptr { { ptr, u64, u64 } }, __anon_32, !497 + v312 = const u64 0 + v313 = get_elem_ptr v311, __ptr { ptr, u64, u64 }, v312, !498 + mem_copy_val v313, v310 + v314 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !500 + mem_copy_val v314, v311 + v315 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !502 + v316 = get_local __ptr { { ptr, u64, u64 } }, buffer, !504 + mem_copy_val v316, v315 + v317 = get_local __ptr { { ptr, u64, u64 } }, buffer, !506 + v318 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v318, v317 + v319 = get_local __ptr slice, __ret_val3 + v320 = call as_raw_slice_7(v318, v319) + v321 = get_local __ptr slice, __tmp_block_arg + mem_copy_val v321, v319 + br encode_22_block2(v321), !82 + + encode_22_abi_encode_37_abi_encode_46_block1(): + v322 = const u64 2 + v323 = mul v285, v322, !507 + v324 = add v323, v290, !508 + v325 = asm(new_cap: v324, old_ptr: v282, len: v288) -> __ptr u8 hp, !509 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_30_block0(v308, v307), !479 + br encode_22_abi_encode_37_abi_encode_46_block0(v325, v324), !510 + + encode_22_block2(v326: __ptr slice): + v327 = get_local __ptr slice, __log_arg + mem_copy_val v327, v326 + v328 = const u64 4579537983717831593 + log __ptr slice v327, v328 + v329 = const unit () + ret () v329 } - fn local_log_32(item: __ptr { u64 }) -> (), !480 { + fn local_log_48(item: __ptr { u64 }) -> (), !511 { local mut slice __aggr_memcpy_0 local { ptr, u64 } __anon_0 local slice __log_arg @@ -932,22 +999,22 @@ script { entry(item: __ptr { u64 }): v0 = get_local __ptr { u64 }, item_ mem_copy_val v0, item - v1 = get_local __ptr { u64 }, item_, !83 - v2 = get_local __ptr { u64 }, item_0, !83 + v1 = get_local __ptr { u64 }, item_, !82 + v2 = get_local __ptr { u64 }, item_0, !82 mem_copy_val v2, v1 - v3 = get_local __ptr { u64 }, item_0, !481 + v3 = get_local __ptr { u64 }, item_0, !512 v4 = const u64 8 - v5 = asm(size: v4, src: v3) -> ptr hp, !482 { - aloc size, !88 - mcp hp src size, !89 + v5 = asm(size: v4, src: v3) -> ptr hp, !513 { + aloc size, !87 + mcp hp src size, !88 } - v6 = get_local __ptr { ptr, u64 }, __anon_0, !483 + v6 = get_local __ptr { ptr, u64 }, __anon_0, !514 v7 = const u64 0 - v8 = get_elem_ptr v6, __ptr ptr, v7, !484 - store v5 to v8, !485 + v8 = get_elem_ptr v6, __ptr ptr, v7, !515 + store v5 to v8, !516 v9 = const u64 1 - v10 = get_elem_ptr v6, __ptr u64, v9, !486 - store v4 to v10, !487 + v10 = get_elem_ptr v6, __ptr u64, v9, !517 + store v4 to v10, !518 v11 = asm(s: v6) -> __ptr slice s { } v12 = get_local __ptr slice, __aggr_memcpy_0 @@ -960,647 +1027,779 @@ script { ret () v15 } - pub fn abi_encode_34(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !490 { + pub fn abi_encode_52(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !521 { entry(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): v0 = const u64 0 - v1 = get_elem_ptr self, __ptr u64, v0, !491 + v1 = get_elem_ptr self, __ptr u64, v0, !522 v2 = load v1 - v3 = call abi_encode_4(v2, buffer, __ret_value) + v3 = call abi_encode_5(v2, buffer, __ret_value) v4 = const unit () ret () v4 } - fn local_log_35(item: __ptr { u64, ( { u64 } | () ) }) -> (), !492 { + fn local_log_53(item: __ptr { u64, ( { u64 } | () ) }) -> (), !523 { + local mut slice __aggr_memcpy_0 + local { ptr, u64 } __anon_0 local slice __log_arg local { u64, ( { u64 } | () ) } __matched_value_1 + local { { ptr, u64, u64 } } __ret_val + local { { ptr, u64, u64 } } __ret_val0 + local { { ptr, u64, u64 } } __ret_val1 + local slice __ret_val2 + local { { ptr, u64, u64 } } __ret_val3 + local { { ptr, u64, u64 } } __tmp_arg + local { { ptr, u64, u64 } } __tmp_arg0 + local { { ptr, u64, u64 } } __tmp_arg1 + local { u64 } __tmp_arg2 + local { { ptr, u64, u64 } } __tmp_arg3 local { { ptr, u64, u64 } } __tmp_block_arg + local slice __tmp_block_arg0 + local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ local { { ptr, u64, u64 } } buffer__ + local { { ptr, u64, u64 } } buffer___ + local { { ptr, u64, u64 } } buffer____ + local { u64, ( { u64 } | () ) } item_ + local { u64, ( { u64 } | () ) } item_0 + local { u64, ( { u64 } | () ) } self_1 + local { u64 } value entry(item: __ptr { u64, ( { u64 } | () ) }): - v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ - v1 = call new_5(v0) - v2 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !494 - mem_copy_val v2, item - v3 = const u64 0 - v4 = get_elem_ptr item, __ptr u64, v3 - v5 = load v4, !495 - v6 = const u64 0, !496 - v7 = cmp eq v5 v6, !499 - cbr v7, encode_36_abi_encode_37_block0(), encode_36_abi_encode_37_block1(), !500 - - encode_36_abi_encode_37_block0(): - v8 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !501 - v9 = const u64 1 - v10 = const u64 0 - v11 = get_elem_ptr v8, __ptr { u64 }, v9, v10, !502 - v12 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !504 - v13 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v14 = const u64 0, !505 - v15 = call abi_encode_4(v14, v12, v13) - v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v17 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v18 = call abi_encode_34(v11, v16, v17) - v19 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_36_abi_encode_37_block5(v19), !506 - - encode_36_abi_encode_37_block1(): - v20 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !507 - v21 = const u64 0 - v22 = get_elem_ptr v20, __ptr u64, v21, !508 - v23 = load v22, !509 - v24 = const u64 1, !496 - v25 = cmp eq v23 v24, !512 - cbr v25, encode_36_abi_encode_37_block2(), encode_36_abi_encode_37_block3(), !513 - - encode_36_abi_encode_37_block2(): - v26 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !515 - v27 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v28 = const u64 1, !516 - v29 = call abi_encode_4(v28, v26, v27) - v30 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_36_abi_encode_37_block5(v30), !517 - - encode_36_abi_encode_37_block3(): - v31 = const u64 14757395258967588866, !493 - revert v31, !518 - - encode_36_abi_encode_37_block5(v32: __ptr { { ptr, u64, u64 } }): - v33 = get_local __ptr slice, __log_arg - v34 = call as_raw_slice_6(v32, v33) - v35 = get_local __ptr slice, __log_arg - v36 = const u64 5087777005172090899 - log __ptr slice v35, v36 - v37 = const unit () - ret () v37 - } - - fn local_log_38(item: __ptr { }) -> (), !519 { - local mut slice __aggr_memcpy_0 - local { ptr, u64 } __anon_0 - local slice __log_arg - local { } item_ - local { } item_0 - - entry(item: __ptr { }): - v0 = get_local __ptr { }, item_ + v0 = get_local __ptr { u64, ( { u64 } | () ) }, item_ mem_copy_val v0, item - v1 = get_local __ptr { }, item_, !83 - v2 = get_local __ptr { }, item_0, !83 + v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_, !82 + v2 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !82 mem_copy_val v2, v1 - v3 = get_local __ptr { }, item_0, !520 - v4 = const u64 0 - v5 = asm(size: v4, src: v3) -> ptr hp, !521 { - aloc size, !88 - mcp hp src size, !89 + v3 = const bool false, !524 + cbr v3, encode_54_block0(), encode_54_block1(), !525 + + encode_54_block0(): + v4 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !526 + v5 = const u64 16 + v6 = asm(size: v5, src: v4) -> ptr hp, !527 { + aloc size, !87 + mcp hp src size, !88 } - v6 = get_local __ptr { ptr, u64 }, __anon_0, !522 - v7 = const u64 0 - v8 = get_elem_ptr v6, __ptr ptr, v7, !523 - store v5 to v8, !524 - v9 = const u64 1 - v10 = get_elem_ptr v6, __ptr u64, v9, !525 - store v4 to v10, !526 - v11 = asm(s: v6) -> __ptr slice s { + v7 = get_local __ptr { ptr, u64 }, __anon_0, !528 + v8 = const u64 0 + v9 = get_elem_ptr v7, __ptr ptr, v8, !529 + store v6 to v9, !530 + v10 = const u64 1 + v11 = get_elem_ptr v7, __ptr u64, v10, !531 + store v5 to v11, !532 + v12 = asm(s: v7) -> __ptr slice s { } - v12 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v12, v11 - v13 = get_local __ptr slice, __log_arg + v13 = get_local __ptr slice, __aggr_memcpy_0 mem_copy_val v13, v12 - v14 = const u64 5555909392781521367 - log __ptr slice v13, v14 - v15 = const unit () - ret () v15 + v14 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v14, v13 + br encode_54_block2(v14), !82 + + encode_54_block1(): + v15 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !533 + v16 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v17 = call new_6(v16) + v18 = get_local __ptr { u64, ( { u64 } | () ) }, self_1, !534 + mem_copy_val v18, v15 + v19 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !535 + mem_copy_val v19, v16 + v20 = get_local __ptr { u64, ( { u64 } | () ) }, self_1, !537 + v21 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !539 + mem_copy_val v21, v20 + v22 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !540 + v23 = const u64 0 + v24 = get_elem_ptr v22, __ptr u64, v23, !541 + v25 = load v24, !542 + v26 = const u64 0, !536 + v27 = cmp eq v25 v26, !545 + cbr v27, encode_54_abi_encode_59_block0(), encode_54_abi_encode_59_block1(), !546 + + encode_54_abi_encode_59_block0(): + v28 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !547 + v29 = const u64 1 + v30 = const u64 0 + v31 = get_elem_ptr v28, __ptr { u64 }, v29, v30, !548 + v32 = get_local __ptr { u64 }, value, !550 + mem_copy_val v32, v31 + v33 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !552 + v34 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v34, v33 + v35 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v36 = const u64 0, !553 + v37 = call abi_encode_5(v36, v34, v35) + v38 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !555 + mem_copy_val v38, v35 + v39 = get_local __ptr { u64 }, value, !557 + v40 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !559 + v41 = get_local __ptr { u64 }, __tmp_arg2 + mem_copy_val v41, v39 + v42 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg3 + mem_copy_val v42, v40 + v43 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 + v44 = call abi_encode_52(v41, v42, v43) + v45 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !561 + mem_copy_val v45, v43 + v46 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !563 + v47 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v47, v46 + br encode_54_abi_encode_59_block5(v47), !564 + + encode_54_abi_encode_59_block1(): + v48 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !565 + v49 = const u64 0 + v50 = get_elem_ptr v48, __ptr u64, v49, !566 + v51 = load v50, !567 + v52 = const u64 1, !536 + v53 = cmp eq v51 v52, !570 + cbr v53, encode_54_abi_encode_59_block2(), encode_54_abi_encode_59_block3(), !571 + + encode_54_abi_encode_59_block2(): + v54 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !573 + v55 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v55, v54 + v56 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v57 = const u64 1, !574 + v58 = call abi_encode_5(v57, v55, v56) + v59 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v59, v56 + br encode_54_abi_encode_59_block5(v59), !575 + + encode_54_abi_encode_59_block3(): + v60 = const u64 14757395258967588866, !538 + revert v60, !576 + + encode_54_abi_encode_59_block5(v61: __ptr { { ptr, u64, u64 } }): + v62 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !578 + mem_copy_val v62, v61 + v63 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !580 + v64 = get_local __ptr { { ptr, u64, u64 } }, buffer, !581 + mem_copy_val v64, v63 + v65 = get_local __ptr { { ptr, u64, u64 } }, buffer, !582 + v66 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v66, v65 + v67 = get_local __ptr slice, __ret_val2 + v68 = call as_raw_slice_7(v66, v67) + v69 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v69, v67 + br encode_54_block2(v69), !82 + + encode_54_block2(v70: __ptr slice): + v71 = get_local __ptr slice, __log_arg + mem_copy_val v71, v70 + v72 = const u64 5087777005172090899 + log __ptr slice v71, v72 + v73 = const unit () + ret () v73 + } + + fn local_log_60(item: __ptr { }) -> (), !583 { + local slice __log_arg + local { { ptr, u64, u64 } } buffer + local { { ptr, u64, u64 } } buffer_ + + entry(item: __ptr { }): + v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + v1 = call new_6(v0) + v2 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + v3 = get_local __ptr { { ptr, u64, u64 } }, buffer + v4 = const u64 77, !584 + v5 = call abi_encode_5(v4, v2, v3) + v6 = get_local __ptr { { ptr, u64, u64 } }, buffer + v7 = get_local __ptr slice, __log_arg + v8 = call as_raw_slice_7(v6, v7) + v9 = get_local __ptr slice, __log_arg + v10 = const u64 5555909392781521367 + log __ptr slice v9, v10 + v11 = const unit () + ret () v11 } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main..sw" -!1 = span !0 0 130 +!1 = span !0 0 131 !2 = fn_name_span !0 7 14 !3 = (!1 !2) !4 = span !0 59 65 !5 = fn_call_path_span !0 59 63 !6 = (!4 !5) -!7 = span !0 83 116 -!8 = fn_call_path_span !0 83 100 -!9 = (!7 !8) -!10 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/codec.sw" -!11 = span !10 71584 71588 -!12 = (!7 !8 !11) -!13 = span !10 71568 71595 -!14 = (!7 !8 !13) -!15 = "test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw" -!16 = span !15 549 954 -!17 = fn_name_span !15 552 556 -!18 = (!16 !17) -!19 = span !15 582 586 -!20 = span !15 572 587 -!21 = fn_call_path_span !15 572 581 -!22 = (!20 !21) -!23 = span !15 606 616 -!24 = fn_call_path_span !15 606 614 -!25 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/vec.sw" -!26 = span !25 4111 4124 -!27 = fn_call_path_span !25 4111 4122 -!28 = span !25 774 787 -!29 = fn_call_path_span !25 774 779 -!30 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/alloc.sw" -!31 = span !30 1787 1811 -!32 = fn_call_path_span !30 1804 1805 -!33 = (!23 !24 !26 !27 !28 !29 !31 !32) -!34 = span !30 1777 1886 -!35 = (!23 !24 !26 !27 !28 !29 !34) -!36 = span !30 1828 1837 -!37 = span !30 1847 1858 -!38 = span !25 750 818 -!39 = (!23 !24 !26 !27 !38) -!40 = (!23 !24 !26 !27) -!41 = (!23 !24 !26 !27 !38) -!42 = (!23 !24 !26 !27) -!43 = span !25 806 807 -!44 = (!23 !24 !26 !27 !38) -!45 = span !25 4087 4155 -!46 = (!23 !24 !45) -!47 = (!23 !24) -!48 = span !25 4143 4144 -!49 = (!23 !24 !45) -!50 = span !15 622 623 -!51 = span !15 629 630 -!52 = span !15 622 631 -!53 = fn_call_path_span !15 624 628 -!54 = (!52 !53) -!55 = span !15 637 638 -!56 = span !15 644 645 -!57 = span !15 637 646 -!58 = fn_call_path_span !15 639 643 -!59 = (!57 !58) -!60 = span !15 652 653 -!61 = span !15 659 660 -!62 = span !15 652 661 -!63 = fn_call_path_span !15 654 658 -!64 = (!62 !63) -!65 = span !15 745 746 -!66 = span !15 759 765 -!67 = span !15 678 795 -!68 = span !15 692 693 -!69 = span !15 706 707 -!70 = span !15 720 721 -!71 = span !15 734 735 -!72 = span !15 812 838 -!73 = span !15 828 832 -!74 = span !15 203 239 -!75 = span !15 860 886 -!76 = span !15 876 880 -!77 = span !15 951 952 -!78 = span !15 499 503 -!79 = span !15 483 547 -!80 = fn_name_span !15 486 495 -!81 = inline "never" -!82 = (!79 !80 !81) -!83 = span !15 539 543 -!84 = span !10 71080 71084 -!85 = (!83 !84) -!86 = span !10 71058 71173 -!87 = (!83 !86) -!88 = span !10 71100 71109 -!89 = span !10 71123 71138 -!90 = span !10 71190 71201 -!91 = (!83 !90) -!92 = (!83 !90) -!93 = (!83 !90) -!94 = (!83 !90) -!95 = (!83 !90) -!96 = span !10 4732 4736 -!97 = span !10 4718 4863 -!98 = fn_name_span !10 4721 4731 -!99 = (!97 !98) -!100 = span !10 4826 4832 -!101 = span !10 87 114 -!102 = span !10 4774 4857 -!103 = span !10 160 260 -!104 = fn_name_span !10 167 170 -!105 = (!103 !104) -!106 = span !10 191 254 -!107 = span !10 499 591 -!108 = fn_name_span !10 502 514 -!109 = (!107 !108) -!110 = span !10 573 577 -!111 = span !25 5760 5764 -!112 = span !25 5766 5771 -!113 = span !25 5740 6205 -!114 = fn_name_span !25 5747 5751 -!115 = (!113 !114) -!116 = span !25 3543 3551 -!117 = span !25 3523 3537 -!118 = span !25 375 383 -!119 = span !25 5852 5876 -!120 = fn_call_path_span !25 5861 5863 -!121 = (!119 !120) -!122 = span !25 5891 5906 -!123 = fn_call_path_span !25 5900 5904 -!124 = (!122 !123) -!125 = span !25 2990 2991 -!126 = span !25 2978 2991 -!127 = fn_call_path_span !25 2987 2989 -!128 = (!122 !123 !126 !127) -!129 = span !25 2994 2995 -!130 = (!122 !123 !126) -!131 = span !25 3005 3006 -!132 = span !25 3005 3017 -!133 = fn_call_path_span !25 3007 3008 -!134 = (!122 !123 !132 !133) -!135 = span !25 357 369 -!136 = (!122 !123 !135) -!137 = span !25 3041 3082 -!138 = fn_call_path_span !25 3041 3048 -!139 = span !30 2668 2685 -!140 = fn_call_path_span !30 2678 2679 -!141 = (!122 !123 !137 !138 !139 !140) -!142 = (!122 !123 !137 !138 !139) -!143 = span !30 2710 2731 -!144 = fn_call_path_span !30 2710 2715 -!145 = (!122 !123 !137 !138 !143 !144 !31 !32) -!146 = (!122 !123 !137 !138 !143 !144 !34) -!147 = span !30 2752 2753 -!148 = span !30 2744 2753 -!149 = fn_call_path_span !30 2750 2751 -!150 = (!122 !123 !137 !138 !148 !149) -!151 = (!122 !123 !137 !138 !148) -!152 = span !30 2768 2800 -!153 = fn_call_path_span !30 2772 2779 -!154 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" -!155 = span !154 3413 3437 -!156 = fn_call_path_span !154 3419 3420 -!157 = (!122 !123 !137 !138 !152 !153 !155 !156) -!158 = span !154 3447 3522 -!159 = (!122 !123 !137 !138 !152 !153 !158) -!160 = span !154 3496 3511 -!161 = (!122 !123 !137 !138) -!162 = span !25 3030 3082 -!163 = (!122 !123 !162) -!164 = span !25 3092 3110 -!165 = (!122 !123 !164) -!166 = span !25 6040 6071 -!167 = fn_call_path_span !25 6053 6056 -!168 = (!166 !167) -!169 = span !25 6124 6145 -!170 = fn_call_path_span !25 6128 6133 -!171 = span !154 4228 4299 -!172 = (!169 !170 !171) -!173 = span !154 4271 4284 -!174 = span !25 6197 6198 -!175 = span !25 6185 6198 -!176 = fn_call_path_span !25 6194 6196 -!177 = (!175 !176) -!178 = (!79 !80 !81) -!179 = span !10 71274 71278 -!180 = (!83 !179) -!181 = span !10 71274 71304 -!182 = fn_call_path_span !10 71279 71289 -!183 = (!83 !181 !182) -!184 = (!83 !181 !182) -!185 = span !0 204 208 -!186 = (!83 !181 !182 !185) -!187 = span !15 116 122 -!188 = (!83 !181 !182 !187) -!189 = (!83 !181 !182) -!190 = span !0 222 228 -!191 = (!83 !181 !182 !190) -!192 = span !0 191 230 -!193 = (!83 !181 !182 !192) -!194 = span !0 244 248 -!195 = (!83 !181 !182 !194) -!196 = span !15 128 134 -!197 = (!83 !181 !182 !196) -!198 = span !0 262 268 -!199 = (!83 !181 !182 !198) -!200 = span !0 244 269 -!201 = fn_call_path_span !0 251 261 -!202 = (!83 !181 !182 !200 !201) -!203 = span !10 5004 5010 -!204 = (!83 !181 !182 !200 !201 !203) -!205 = (!83 !181 !182 !200 !201 !101) -!206 = (!83 !181 !182 !200 !201) -!207 = (!83 !181 !182 !200 !201) -!208 = (!83 !181 !182 !200 !201) -!209 = (!83 !181 !182 !200 !201) -!210 = (!83 !181 !182 !200 !201) -!211 = (!83 !181 !182 !200 !201) -!212 = (!83 !181 !182 !200 !201) -!213 = (!83 !181 !182 !200 !201) -!214 = (!83 !181 !182 !200 !201) -!215 = (!83 !181 !182 !200 !201) -!216 = (!83 !181 !182 !200 !201) -!217 = (!83 !181 !182 !200 !201) -!218 = (!83 !181 !182 !200 !201) -!219 = (!83 !181 !182 !200 !201) -!220 = (!83 !181 !182 !200 !201) -!221 = (!83 !181 !182 !200 !201) -!222 = (!83 !181 !182 !200 !201) -!223 = (!83 !181 !182 !200 !201) -!224 = (!83 !181 !182 !200 !201) -!225 = (!83 !181 !182 !200 !201) -!226 = (!83 !181 !182 !200 !201) -!227 = (!83 !181 !182 !200 !201) -!228 = (!83 !181 !182 !200 !201) -!229 = span !10 4952 5035 -!230 = (!83 !181 !182 !200 !201 !229) -!231 = (!83 !181 !182 !200 !201) -!232 = span !0 231 270 -!233 = (!83 !181 !182 !232) -!234 = span !0 284 288 -!235 = (!83 !181 !182 !234) -!236 = span !15 140 146 -!237 = (!83 !181 !182 !236) -!238 = span !0 302 308 -!239 = (!83 !181 !182 !238) -!240 = span !0 284 309 -!241 = fn_call_path_span !0 291 301 -!242 = (!83 !181 !182 !240 !241) -!243 = span !10 5182 5188 -!244 = (!83 !181 !182 !240 !241 !243) -!245 = (!83 !181 !182 !240 !241 !101) -!246 = (!83 !181 !182 !240 !241) -!247 = (!83 !181 !182 !240 !241) -!248 = (!83 !181 !182 !240 !241) -!249 = (!83 !181 !182 !240 !241) -!250 = (!83 !181 !182 !240 !241) -!251 = (!83 !181 !182 !240 !241) -!252 = (!83 !181 !182 !240 !241) -!253 = (!83 !181 !182 !240 !241) -!254 = (!83 !181 !182 !240 !241) -!255 = (!83 !181 !182 !240 !241) -!256 = (!83 !181 !182 !200 !201) -!257 = (!83 !181 !182 !200 !201) -!258 = (!83 !181 !182 !200 !201) -!259 = (!83 !181 !182 !200 !201) -!260 = (!83 !181 !182 !240 !241) -!261 = (!83 !181 !182 !240 !241) -!262 = (!83 !181 !182 !240 !241) -!263 = (!83 !181 !182 !240 !241) -!264 = (!83 !181 !182 !240 !241) -!265 = (!83 !181 !182 !240 !241) -!266 = (!83 !181 !182 !240 !241) -!267 = (!83 !181 !182 !240 !241) -!268 = (!83 !181 !182 !240 !241) -!269 = (!83 !181 !182 !240 !241) -!270 = (!83 !181 !182 !240 !241) -!271 = (!83 !181 !182 !240 !241) -!272 = (!83 !181 !182 !240 !241) -!273 = span !10 5130 5213 -!274 = (!83 !181 !182 !240 !241 !273) -!275 = (!83 !181 !182 !240 !241) -!276 = span !0 271 310 -!277 = (!83 !181 !182 !276) -!278 = span !0 324 328 -!279 = (!83 !181 !182 !278) -!280 = span !15 152 157 -!281 = (!83 !181 !182 !280) -!282 = (!83 !181 !182) -!283 = span !0 342 348 -!284 = (!83 !181 !182 !283) -!285 = span !0 324 349 -!286 = fn_call_path_span !0 331 341 -!287 = (!83 !181 !182 !285 !286) -!288 = span !10 5359 5365 -!289 = (!83 !181 !182 !285 !286 !288) -!290 = (!83 !181 !182 !285 !286 !101) -!291 = (!83 !181 !182 !285 !286) -!292 = (!83 !181 !182 !285 !286) -!293 = (!83 !181 !182 !285 !286) -!294 = (!83 !181 !182 !285 !286) -!295 = (!83 !181 !182 !285 !286) -!296 = (!83 !181 !182 !285 !286) -!297 = (!83 !181 !182 !285 !286) -!298 = (!83 !181 !182 !285 !286) -!299 = (!83 !181 !182 !285 !286) -!300 = (!83 !181 !182 !285 !286) -!301 = (!83 !181 !182 !240 !241) -!302 = (!83 !181 !182 !240 !241) -!303 = (!83 !181 !182 !240 !241) -!304 = (!83 !181 !182 !240 !241) -!305 = (!83 !181 !182 !285 !286) -!306 = (!83 !181 !182 !285 !286) -!307 = (!83 !181 !182 !285 !286) -!308 = (!83 !181 !182 !285 !286) -!309 = (!83 !181 !182 !285 !286) -!310 = (!83 !181 !182 !285 !286) -!311 = (!83 !181 !182 !285 !286) -!312 = (!83 !181 !182 !285 !286) -!313 = (!83 !181 !182 !285 !286) -!314 = (!83 !181 !182 !285 !286) -!315 = span !10 5307 5390 -!316 = (!83 !181 !182 !285 !286 !315) -!317 = (!83 !181 !182 !285 !286) -!318 = span !0 311 350 -!319 = (!83 !181 !182 !318) -!320 = span !0 364 368 -!321 = (!83 !181 !182 !320) -!322 = span !15 163 174 -!323 = (!83 !181 !182 !322) -!324 = span !0 382 388 -!325 = (!83 !181 !182 !324) -!326 = span !0 364 389 -!327 = fn_call_path_span !0 371 381 -!328 = (!83 !181 !182 !326 !327) -!329 = (!83 !181 !182 !326 !327) -!330 = span !25 21296 21300 -!331 = (!83 !181 !182 !326 !327 !330) -!332 = (!83 !181 !182 !326 !327 !116) -!333 = (!83 !181 !182 !326 !327) -!334 = span !25 21346 21352 -!335 = (!83 !181 !182 !326 !327 !334) -!336 = span !25 21314 21354 -!337 = (!83 !181 !182 !326 !327 !336) -!338 = span !25 21376 21377 -!339 = (!83 !181 !182 !326 !327) -!340 = (!83 !181 !182 !285 !286) -!341 = (!83 !181 !182 !285 !286) -!342 = (!83 !181 !182 !285 !286) -!343 = (!83 !181 !182 !285 !286) -!344 = span !25 21393 21400 -!345 = fn_call_path_span !25 21395 21396 -!346 = (!83 !181 !182 !326 !327 !344 !345) -!347 = (!83 !181 !182 !326 !327) -!348 = span !25 21426 21430 -!349 = (!83 !181 !182 !326 !327 !348) -!350 = span !25 21426 21447 -!351 = fn_call_path_span !25 21431 21444 -!352 = (!83 !181 !182 !326 !327 !350 !351) -!353 = span !25 8256 8260 -!354 = (!83 !181 !182 !326 !327 !350 !351 !353) -!355 = (!83 !181 !182 !326 !327 !350 !351 !117) -!356 = (!83 !181 !182 !326 !327 !350 !351 !135) -!357 = (!83 !181 !182 !326 !327 !350 !351) -!358 = span !25 8256 8284 -!359 = fn_call_path_span !25 8269 8272 -!360 = (!83 !181 !182 !326 !327 !350 !351 !358 !359) -!361 = (!83 !181 !182 !326 !327 !350 !351 !358 !359) -!362 = span !25 8256 8296 -!363 = fn_call_path_span !25 8285 8289 -!364 = span !154 2650 2739 -!365 = (!83 !181 !182 !326 !327 !350 !351 !362 !363 !364) -!366 = span !154 2688 2701 -!367 = span !25 21486 21492 -!368 = (!83 !181 !182 !326 !327 !367) -!369 = span !25 21461 21493 -!370 = (!83 !181 !182 !326 !327 !369) -!371 = span !25 21512 21513 -!372 = span !25 21507 21513 -!373 = fn_call_path_span !25 21509 21511 -!374 = (!83 !181 !182 !326 !327 !372 !373) -!375 = (!83 !181 !182 !326 !327) -!376 = span !25 21534 21540 -!377 = (!83 !181 !182 !326 !327 !376) -!378 = span !0 351 390 -!379 = (!83 !181 !182 !378) -!380 = span !0 404 408 -!381 = (!83 !181 !182 !380) -!382 = span !15 180 186 -!383 = (!83 !181 !182 !382) -!384 = span !0 422 428 -!385 = (!83 !181 !182 !384) -!386 = span !0 404 429 -!387 = fn_call_path_span !0 411 421 -!388 = (!83 !181 !182 !386 !387) -!389 = (!83 !181 !182 !386 !387) -!390 = span !10 5573 5579 -!391 = (!83 !181 !182 !386 !387 !390) -!392 = (!83 !181 !182 !386 !387 !101) -!393 = (!83 !181 !182 !386 !387) -!394 = (!83 !181 !182 !386 !387) -!395 = (!83 !181 !182 !386 !387) -!396 = (!83 !181 !182 !386 !387) -!397 = (!83 !181 !182 !386 !387) -!398 = (!83 !181 !182 !386 !387) -!399 = (!83 !181 !182 !386 !387) -!400 = span !10 5588 5592 -!401 = (!83 !181 !182 !386 !387 !400) -!402 = (!83 !181 !182 !386 !387) -!403 = (!83 !181 !182 !386 !387) -!404 = (!83 !181 !182 !386 !387) -!405 = (!83 !181 !182 !386 !387) -!406 = (!83 !181 !182 !386 !387) -!407 = (!83 !181 !182 !386 !387) -!408 = (!83 !181 !182 !386 !387) -!409 = (!83 !181 !182 !386 !387) -!410 = (!83 !181 !182 !386 !387) -!411 = (!83 !181 !182 !386 !387) -!412 = (!83 !181 !182 !386 !387) -!413 = (!83 !181 !182 !386 !387) -!414 = (!83 !181 !182 !386 !387) -!415 = (!83 !181 !182 !386 !387) -!416 = (!83 !181 !182 !386 !387) -!417 = (!83 !181 !182 !386 !387) -!418 = (!83 !181 !182 !386 !387) -!419 = (!83 !181 !182 !386 !387) -!420 = span !10 5521 5604 -!421 = (!83 !181 !182 !386 !387 !420) -!422 = (!83 !181 !182 !386 !387) -!423 = span !0 391 430 -!424 = (!83 !181 !182 !423) -!425 = span !0 444 448 -!426 = (!83 !181 !182 !425) -!427 = span !15 192 199 -!428 = (!83 !181 !182 !427) -!429 = span !0 462 468 -!430 = (!83 !181 !182 !429) -!431 = span !0 444 469 -!432 = fn_call_path_span !0 451 461 -!433 = (!83 !181 !182 !431 !432) -!434 = (!83 !181 !182 !431 !432) -!435 = span !10 4648 4654 -!436 = (!83 !181 !182 !431 !432 !435) -!437 = (!83 !181 !182 !431 !432 !101) -!438 = (!83 !181 !182 !431 !432) -!439 = (!83 !181 !182 !431 !432) -!440 = (!83 !181 !182 !431 !432) -!441 = (!83 !181 !182 !431 !432) -!442 = (!83 !181 !182 !431 !432) -!443 = (!83 !181 !182 !431 !432) -!444 = (!83 !181 !182 !431 !432) -!445 = span !10 4663 4667 -!446 = (!83 !181 !182 !431 !432 !445) -!447 = (!83 !181 !182 !431 !432) -!448 = (!83 !181 !182 !431 !432) -!449 = (!83 !181 !182 !431 !432) -!450 = (!83 !181 !182 !386 !387) -!451 = (!83 !181 !182 !386 !387) -!452 = (!83 !181 !182 !386 !387) -!453 = (!83 !181 !182 !386 !387) -!454 = (!83 !181 !182 !431 !432) -!455 = (!83 !181 !182 !431 !432) -!456 = (!83 !181 !182 !431 !432) -!457 = (!83 !181 !182 !431 !432) -!458 = (!83 !181 !182 !431 !432) -!459 = (!83 !181 !182 !431 !432) -!460 = (!83 !181 !182 !431 !432) -!461 = (!83 !181 !182 !431 !432) -!462 = (!83 !181 !182 !431 !432) -!463 = (!83 !181 !182 !431 !432) -!464 = (!83 !181 !182 !431 !432) -!465 = span !10 4596 4679 -!466 = (!83 !181 !182 !431 !432 !465) -!467 = (!83 !181 !182 !431 !432) -!468 = span !0 431 470 -!469 = (!83 !181 !182 !468) -!470 = span !0 492 498 -!471 = (!83 !181 !182 !470) -!472 = span !10 71261 71305 -!473 = (!83 !472) -!474 = span !10 71314 71320 -!475 = (!83 !474) -!476 = (!83 !181 !182 !431 !432) -!477 = (!83 !181 !182 !431 !432) -!478 = (!83 !181 !182 !431 !432) -!479 = (!83 !181 !182 !431 !432) -!480 = (!79 !80 !81) -!481 = (!83 !84) -!482 = (!83 !86) -!483 = (!83 !90) -!484 = (!83 !90) -!485 = (!83 !90) -!486 = (!83 !90) -!487 = (!83 !90) -!488 = span !0 152 306 -!489 = fn_name_span !0 155 165 -!490 = (!488 !489) -!491 = span !15 92 97 -!492 = (!79 !80 !81) -!493 = span !0 204 498 -!494 = (!83 !181 !182 !493) -!495 = (!83 !181 !182) -!496 = span !0 210 214 -!497 = span !0 217 412 -!498 = fn_call_path_span !0 217 412 -!499 = (!83 !181 !182 !497 !498) -!500 = (!83 !181 !182 !497) -!501 = (!83 !181 !182 !496) -!502 = (!83 !181 !182) -!503 = span !0 287 293 -!504 = (!83 !181 !182 !503) -!505 = span !0 271 275 -!506 = (!83 !181 !182) -!507 = (!83 !181 !182 !496) -!508 = (!83 !181 !182 !496) -!509 = (!83 !181 !182) -!510 = span !0 414 494 -!511 = fn_call_path_span !0 414 494 -!512 = (!83 !181 !182 !510 !511) -!513 = (!83 !181 !182 !510) -!514 = span !0 464 470 -!515 = (!83 !181 !182 !514) -!516 = span !0 448 452 -!517 = (!83 !181 !182) -!518 = (!83 !181 !182 !493) -!519 = (!79 !80 !81) -!520 = (!83 !84) -!521 = (!83 !86) -!522 = (!83 !90) -!523 = (!83 !90) -!524 = (!83 !90) -!525 = (!83 !90) -!526 = (!83 !90) +!7 = span !0 40 66 +!8 = span !0 109 116 +!9 = span !0 83 117 +!10 = fn_call_path_span !0 83 100 +!11 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/codec.sw" +!12 = span !11 93230 93256 +!13 = (!9 !10 !12) +!14 = "test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw" +!15 = span !14 594 999 +!16 = fn_name_span !14 597 601 +!17 = (!15 !16) +!18 = span !14 627 631 +!19 = span !14 617 632 +!20 = fn_call_path_span !14 617 626 +!21 = (!19 !20) +!22 = span !14 651 661 +!23 = fn_call_path_span !14 651 659 +!24 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/vec.sw" +!25 = span !24 4111 4124 +!26 = fn_call_path_span !24 4111 4122 +!27 = span !24 774 787 +!28 = fn_call_path_span !24 774 779 +!29 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/alloc.sw" +!30 = span !29 1787 1811 +!31 = fn_call_path_span !29 1804 1805 +!32 = (!22 !23 !25 !26 !27 !28 !30 !31) +!33 = span !29 1777 1886 +!34 = (!22 !23 !25 !26 !27 !28 !33) +!35 = span !29 1828 1837 +!36 = span !29 1847 1858 +!37 = span !24 750 818 +!38 = (!22 !23 !25 !26 !37) +!39 = (!22 !23 !25 !26) +!40 = (!22 !23 !25 !26 !37) +!41 = (!22 !23 !25 !26) +!42 = span !24 806 807 +!43 = (!22 !23 !25 !26 !37) +!44 = span !24 4087 4155 +!45 = (!22 !23 !44) +!46 = (!22 !23) +!47 = span !24 4143 4144 +!48 = (!22 !23 !44) +!49 = span !14 667 668 +!50 = span !14 674 675 +!51 = span !14 667 676 +!52 = fn_call_path_span !14 669 673 +!53 = (!51 !52) +!54 = span !14 682 683 +!55 = span !14 689 690 +!56 = span !14 682 691 +!57 = fn_call_path_span !14 684 688 +!58 = (!56 !57) +!59 = span !14 697 698 +!60 = span !14 704 705 +!61 = span !14 697 706 +!62 = fn_call_path_span !14 699 703 +!63 = (!61 !62) +!64 = span !14 790 791 +!65 = span !14 804 810 +!66 = span !14 723 840 +!67 = span !14 737 738 +!68 = span !14 751 752 +!69 = span !14 765 766 +!70 = span !14 779 780 +!71 = span !14 857 883 +!72 = span !14 873 877 +!73 = span !14 203 239 +!74 = span !14 905 931 +!75 = span !14 921 925 +!76 = span !14 996 997 +!77 = span !14 544 548 +!78 = span !14 528 592 +!79 = fn_name_span !14 531 540 +!80 = inline "never" +!81 = (!78 !79 !80) +!82 = span !14 584 588 +!83 = span !11 92817 92821 +!84 = (!82 !83) +!85 = span !11 92795 92910 +!86 = (!82 !85) +!87 = span !11 92837 92846 +!88 = span !11 92860 92875 +!89 = span !11 92927 92938 +!90 = (!82 !89) +!91 = (!82 !89) +!92 = (!82 !89) +!93 = (!82 !89) +!94 = (!82 !89) +!95 = span !11 4642 4646 +!96 = span !11 4628 4773 +!97 = fn_name_span !11 4631 4641 +!98 = (!96 !97) +!99 = span !11 4736 4742 +!100 = span !11 87 114 +!101 = span !11 4684 4767 +!102 = span !11 160 260 +!103 = fn_name_span !11 167 170 +!104 = (!102 !103) +!105 = span !11 191 254 +!106 = span !11 499 591 +!107 = fn_name_span !11 502 514 +!108 = (!106 !107) +!109 = span !11 573 577 +!110 = span !24 5760 5764 +!111 = span !24 5766 5771 +!112 = span !24 5740 6205 +!113 = fn_name_span !24 5747 5751 +!114 = (!112 !113) +!115 = span !24 3543 3551 +!116 = span !24 3523 3537 +!117 = span !24 375 383 +!118 = span !24 5852 5876 +!119 = fn_call_path_span !24 5861 5863 +!120 = (!118 !119) +!121 = span !24 5891 5906 +!122 = fn_call_path_span !24 5900 5904 +!123 = (!121 !122) +!124 = span !24 2990 2991 +!125 = span !24 2978 2991 +!126 = fn_call_path_span !24 2987 2989 +!127 = (!121 !122 !125 !126) +!128 = span !24 2994 2995 +!129 = (!121 !122 !125) +!130 = span !24 3005 3006 +!131 = span !24 3005 3017 +!132 = fn_call_path_span !24 3007 3008 +!133 = (!121 !122 !131 !132) +!134 = span !24 357 369 +!135 = (!121 !122 !134) +!136 = span !24 3041 3082 +!137 = fn_call_path_span !24 3041 3048 +!138 = span !29 2668 2685 +!139 = fn_call_path_span !29 2678 2679 +!140 = (!121 !122 !136 !137 !138 !139) +!141 = (!121 !122 !136 !137 !138) +!142 = span !29 2710 2731 +!143 = fn_call_path_span !29 2710 2715 +!144 = (!121 !122 !136 !137 !142 !143 !30 !31) +!145 = (!121 !122 !136 !137 !142 !143 !33) +!146 = span !29 2752 2753 +!147 = span !29 2744 2753 +!148 = fn_call_path_span !29 2750 2751 +!149 = (!121 !122 !136 !137 !147 !148) +!150 = (!121 !122 !136 !137 !147) +!151 = span !29 2768 2800 +!152 = fn_call_path_span !29 2772 2779 +!153 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" +!154 = span !153 3413 3437 +!155 = fn_call_path_span !153 3419 3420 +!156 = (!121 !122 !136 !137 !151 !152 !154 !155) +!157 = span !153 3447 3522 +!158 = (!121 !122 !136 !137 !151 !152 !157) +!159 = span !153 3496 3511 +!160 = (!121 !122 !136 !137) +!161 = span !24 3030 3082 +!162 = (!121 !122 !161) +!163 = span !24 3092 3110 +!164 = (!121 !122 !163) +!165 = span !24 6040 6071 +!166 = fn_call_path_span !24 6053 6056 +!167 = (!165 !166) +!168 = span !24 6124 6145 +!169 = fn_call_path_span !24 6128 6133 +!170 = span !153 4228 4299 +!171 = (!168 !169 !170) +!172 = span !153 4271 4284 +!173 = span !24 6197 6198 +!174 = span !24 6185 6198 +!175 = fn_call_path_span !24 6194 6196 +!176 = (!174 !175) +!177 = (!78 !79 !80) +!178 = span !11 92713 92737 +!179 = fn_call_path_span !11 92713 92730 +!180 = span !11 3576 3598 +!181 = fn_call_path_span !11 3576 3596 +!182 = span !0 156 213 +!183 = fn_call_path_span !0 183 185 +!184 = (!82 !178 !179 !180 !181 !182 !183) +!185 = span !0 156 308 +!186 = (!82 !178 !179 !180 !181 !185) +!187 = span !11 5082 5087 +!188 = (!82 !178 !179 !180 !181 !185) +!189 = span !0 156 339 +!190 = (!82 !178 !179 !180 !181 !189) +!191 = span !11 5316 5320 +!192 = (!82 !178 !179 !180 !181 !189) +!193 = span !0 156 369 +!194 = (!82 !178 !179 !180 !181 !193) +!195 = (!82 !178 !179 !180 !181 !193) +!196 = span !0 156 399 +!197 = (!82 !178 !179 !180 !181 !196) +!198 = (!82 !178 !179 !180 !181 !196) +!199 = span !0 156 428 +!200 = (!82 !178 !179 !180 !181 !199) +!201 = (!82 !178 !179 !180 !181 !199) +!202 = (!82 !178) +!203 = (!82 !83) +!204 = (!82 !85) +!205 = (!82 !89) +!206 = (!82 !89) +!207 = (!82 !89) +!208 = (!82 !89) +!209 = (!82 !89) +!210 = span !11 93011 93015 +!211 = (!82 !210) +!212 = span !11 93011 93041 +!213 = fn_call_path_span !11 93016 93026 +!214 = (!82 !212 !213) +!215 = (!82 !212 !213) +!216 = span !0 576 580 +!217 = (!82 !212 !213 !216) +!218 = span !14 116 122 +!219 = (!82 !212 !213 !218) +!220 = (!82 !212 !213) +!221 = span !0 594 600 +!222 = (!82 !212 !213 !221) +!223 = span !0 563 602 +!224 = (!82 !212 !213 !223) +!225 = span !0 616 620 +!226 = (!82 !212 !213 !225) +!227 = span !14 128 134 +!228 = (!82 !212 !213 !227) +!229 = span !0 634 640 +!230 = (!82 !212 !213 !229) +!231 = span !0 616 641 +!232 = fn_call_path_span !0 623 633 +!233 = (!82 !212 !213 !231 !232) +!234 = span !11 4971 4977 +!235 = (!82 !212 !213 !231 !232 !234) +!236 = (!82 !212 !213 !231 !232 !100) +!237 = (!82 !212 !213 !231 !232) +!238 = (!82 !212 !213 !231 !232) +!239 = (!82 !212 !213 !231 !232) +!240 = (!82 !212 !213 !231 !232) +!241 = (!82 !212 !213 !231 !232) +!242 = (!82 !212 !213 !231 !232) +!243 = (!82 !212 !213 !231 !232) +!244 = (!82 !212 !213 !231 !232) +!245 = (!82 !212 !213 !231 !232) +!246 = (!82 !212 !213 !231 !232) +!247 = (!82 !212 !213 !231 !232) +!248 = (!82 !212 !213 !231 !232) +!249 = (!82 !212 !213 !231 !232) +!250 = (!82 !212 !213 !231 !232) +!251 = (!82 !212 !213 !231 !232) +!252 = (!82 !212 !213 !231 !232) +!253 = (!82 !212 !213 !231 !232) +!254 = (!82 !212 !213 !231 !232) +!255 = (!82 !212 !213 !231 !232) +!256 = (!82 !212 !213 !231 !232) +!257 = (!82 !212 !213 !231 !232) +!258 = (!82 !212 !213 !231 !232) +!259 = (!82 !212 !213 !231 !232) +!260 = span !11 4919 5002 +!261 = (!82 !212 !213 !231 !232 !260) +!262 = (!82 !212 !213 !231 !232) +!263 = span !0 603 642 +!264 = (!82 !212 !213 !263) +!265 = span !0 656 660 +!266 = (!82 !212 !213 !265) +!267 = span !14 140 146 +!268 = (!82 !212 !213 !267) +!269 = span !0 674 680 +!270 = (!82 !212 !213 !269) +!271 = span !0 656 681 +!272 = fn_call_path_span !0 663 673 +!273 = (!82 !212 !213 !271 !272) +!274 = span !11 5206 5212 +!275 = (!82 !212 !213 !271 !272 !274) +!276 = (!82 !212 !213 !271 !272 !100) +!277 = (!82 !212 !213 !271 !272) +!278 = (!82 !212 !213 !271 !272) +!279 = (!82 !212 !213 !271 !272) +!280 = (!82 !212 !213 !271 !272) +!281 = (!82 !212 !213 !271 !272) +!282 = (!82 !212 !213 !271 !272) +!283 = (!82 !212 !213 !271 !272) +!284 = (!82 !212 !213 !271 !272) +!285 = (!82 !212 !213 !271 !272) +!286 = (!82 !212 !213 !271 !272) +!287 = (!82 !212 !213 !231 !232) +!288 = (!82 !212 !213 !231 !232) +!289 = (!82 !212 !213 !231 !232) +!290 = (!82 !212 !213 !231 !232) +!291 = (!82 !212 !213 !271 !272) +!292 = (!82 !212 !213 !271 !272) +!293 = (!82 !212 !213 !271 !272) +!294 = (!82 !212 !213 !271 !272) +!295 = (!82 !212 !213 !271 !272) +!296 = (!82 !212 !213 !271 !272) +!297 = (!82 !212 !213 !271 !272) +!298 = (!82 !212 !213 !271 !272) +!299 = (!82 !212 !213 !271 !272) +!300 = (!82 !212 !213 !271 !272) +!301 = (!82 !212 !213 !271 !272) +!302 = (!82 !212 !213 !271 !272) +!303 = (!82 !212 !213 !271 !272) +!304 = span !11 5154 5237 +!305 = (!82 !212 !213 !271 !272 !304) +!306 = (!82 !212 !213 !271 !272) +!307 = span !0 643 682 +!308 = (!82 !212 !213 !307) +!309 = span !0 696 700 +!310 = (!82 !212 !213 !309) +!311 = span !14 152 157 +!312 = (!82 !212 !213 !311) +!313 = (!82 !212 !213) +!314 = span !0 714 720 +!315 = (!82 !212 !213 !314) +!316 = span !0 696 721 +!317 = fn_call_path_span !0 703 713 +!318 = (!82 !212 !213 !316 !317) +!319 = span !11 5439 5445 +!320 = (!82 !212 !213 !316 !317 !319) +!321 = (!82 !212 !213 !316 !317 !100) +!322 = (!82 !212 !213 !316 !317) +!323 = (!82 !212 !213 !316 !317) +!324 = (!82 !212 !213 !316 !317) +!325 = (!82 !212 !213 !316 !317) +!326 = (!82 !212 !213 !316 !317) +!327 = (!82 !212 !213 !316 !317) +!328 = (!82 !212 !213 !316 !317) +!329 = (!82 !212 !213 !316 !317) +!330 = (!82 !212 !213 !316 !317) +!331 = (!82 !212 !213 !316 !317) +!332 = (!82 !212 !213 !271 !272) +!333 = (!82 !212 !213 !271 !272) +!334 = (!82 !212 !213 !271 !272) +!335 = (!82 !212 !213 !271 !272) +!336 = (!82 !212 !213 !316 !317) +!337 = (!82 !212 !213 !316 !317) +!338 = (!82 !212 !213 !316 !317) +!339 = (!82 !212 !213 !316 !317) +!340 = (!82 !212 !213 !316 !317) +!341 = (!82 !212 !213 !316 !317) +!342 = (!82 !212 !213 !316 !317) +!343 = (!82 !212 !213 !316 !317) +!344 = (!82 !212 !213 !316 !317) +!345 = (!82 !212 !213 !316 !317) +!346 = span !11 5387 5470 +!347 = (!82 !212 !213 !316 !317 !346) +!348 = (!82 !212 !213 !316 !317) +!349 = span !0 683 722 +!350 = (!82 !212 !213 !349) +!351 = span !0 736 740 +!352 = (!82 !212 !213 !351) +!353 = span !14 163 174 +!354 = (!82 !212 !213 !353) +!355 = span !0 754 760 +!356 = (!82 !212 !213 !355) +!357 = span !0 736 761 +!358 = fn_call_path_span !0 743 753 +!359 = (!82 !212 !213 !357 !358) +!360 = (!82 !212 !213 !357 !358) +!361 = span !24 21353 21357 +!362 = (!82 !212 !213 !357 !358 !361) +!363 = (!82 !212 !213 !357 !358 !115) +!364 = (!82 !212 !213 !357 !358) +!365 = span !24 21403 21409 +!366 = (!82 !212 !213 !357 !358 !365) +!367 = span !24 21371 21411 +!368 = (!82 !212 !213 !357 !358 !367) +!369 = span !24 21433 21434 +!370 = (!82 !212 !213 !357 !358) +!371 = (!82 !212 !213 !316 !317) +!372 = (!82 !212 !213 !316 !317) +!373 = (!82 !212 !213 !316 !317) +!374 = (!82 !212 !213 !316 !317) +!375 = span !24 21450 21457 +!376 = fn_call_path_span !24 21452 21453 +!377 = (!82 !212 !213 !357 !358 !375 !376) +!378 = (!82 !212 !213 !357 !358) +!379 = span !24 21483 21487 +!380 = (!82 !212 !213 !357 !358 !379) +!381 = span !24 21483 21504 +!382 = fn_call_path_span !24 21488 21501 +!383 = (!82 !212 !213 !357 !358 !381 !382) +!384 = span !24 8256 8260 +!385 = (!82 !212 !213 !357 !358 !381 !382 !384) +!386 = (!82 !212 !213 !357 !358 !381 !382 !116) +!387 = (!82 !212 !213 !357 !358 !381 !382 !134) +!388 = (!82 !212 !213 !357 !358 !381 !382) +!389 = span !24 8256 8284 +!390 = fn_call_path_span !24 8269 8272 +!391 = (!82 !212 !213 !357 !358 !381 !382 !389 !390) +!392 = (!82 !212 !213 !357 !358 !381 !382 !389 !390) +!393 = span !24 8256 8296 +!394 = fn_call_path_span !24 8285 8289 +!395 = span !153 2650 2739 +!396 = (!82 !212 !213 !357 !358 !381 !382 !393 !394 !395) +!397 = span !153 2688 2701 +!398 = span !24 21543 21549 +!399 = (!82 !212 !213 !357 !358 !398) +!400 = span !24 21518 21550 +!401 = (!82 !212 !213 !357 !358 !400) +!402 = span !24 21569 21570 +!403 = span !24 21564 21570 +!404 = fn_call_path_span !24 21566 21568 +!405 = (!82 !212 !213 !357 !358 !403 !404) +!406 = (!82 !212 !213 !357 !358) +!407 = span !24 21591 21597 +!408 = (!82 !212 !213 !357 !358 !407) +!409 = span !0 723 762 +!410 = (!82 !212 !213 !409) +!411 = span !0 776 780 +!412 = (!82 !212 !213 !411) +!413 = span !14 180 186 +!414 = (!82 !212 !213 !413) +!415 = span !0 794 800 +!416 = (!82 !212 !213 !415) +!417 = span !0 776 801 +!418 = fn_call_path_span !0 783 793 +!419 = (!82 !212 !213 !417 !418) +!420 = (!82 !212 !213 !417 !418) +!421 = span !11 5710 5716 +!422 = (!82 !212 !213 !417 !418 !421) +!423 = (!82 !212 !213 !417 !418 !100) +!424 = (!82 !212 !213 !417 !418) +!425 = (!82 !212 !213 !417 !418) +!426 = (!82 !212 !213 !417 !418) +!427 = (!82 !212 !213 !417 !418) +!428 = (!82 !212 !213 !417 !418) +!429 = (!82 !212 !213 !417 !418) +!430 = (!82 !212 !213 !417 !418) +!431 = span !11 5725 5729 +!432 = (!82 !212 !213 !417 !418 !431) +!433 = (!82 !212 !213 !417 !418) +!434 = (!82 !212 !213 !417 !418) +!435 = (!82 !212 !213 !417 !418) +!436 = (!82 !212 !213 !417 !418) +!437 = (!82 !212 !213 !417 !418) +!438 = (!82 !212 !213 !417 !418) +!439 = (!82 !212 !213 !417 !418) +!440 = (!82 !212 !213 !417 !418) +!441 = (!82 !212 !213 !417 !418) +!442 = (!82 !212 !213 !417 !418) +!443 = (!82 !212 !213 !417 !418) +!444 = (!82 !212 !213 !417 !418) +!445 = (!82 !212 !213 !417 !418) +!446 = (!82 !212 !213 !417 !418) +!447 = (!82 !212 !213 !417 !418) +!448 = (!82 !212 !213 !417 !418) +!449 = (!82 !212 !213 !417 !418) +!450 = (!82 !212 !213 !417 !418) +!451 = span !11 5658 5741 +!452 = (!82 !212 !213 !417 !418 !451) +!453 = (!82 !212 !213 !417 !418) +!454 = span !0 763 802 +!455 = (!82 !212 !213 !454) +!456 = span !0 816 820 +!457 = (!82 !212 !213 !456) +!458 = span !14 192 199 +!459 = (!82 !212 !213 !458) +!460 = span !0 834 840 +!461 = (!82 !212 !213 !460) +!462 = span !0 816 841 +!463 = fn_call_path_span !0 823 833 +!464 = (!82 !212 !213 !462 !463) +!465 = (!82 !212 !213 !462 !463) +!466 = span !11 4502 4508 +!467 = (!82 !212 !213 !462 !463 !466) +!468 = (!82 !212 !213 !462 !463 !100) +!469 = (!82 !212 !213 !462 !463) +!470 = (!82 !212 !213 !462 !463) +!471 = (!82 !212 !213 !462 !463) +!472 = (!82 !212 !213 !462 !463) +!473 = (!82 !212 !213 !462 !463) +!474 = (!82 !212 !213 !462 !463) +!475 = (!82 !212 !213 !462 !463) +!476 = span !11 4517 4521 +!477 = (!82 !212 !213 !462 !463 !476) +!478 = (!82 !212 !213 !462 !463) +!479 = (!82 !212 !213 !462 !463) +!480 = (!82 !212 !213 !462 !463) +!481 = (!82 !212 !213 !417 !418) +!482 = (!82 !212 !213 !417 !418) +!483 = (!82 !212 !213 !417 !418) +!484 = (!82 !212 !213 !417 !418) +!485 = (!82 !212 !213 !462 !463) +!486 = (!82 !212 !213 !462 !463) +!487 = (!82 !212 !213 !462 !463) +!488 = (!82 !212 !213 !462 !463) +!489 = (!82 !212 !213 !462 !463) +!490 = (!82 !212 !213 !462 !463) +!491 = (!82 !212 !213 !462 !463) +!492 = (!82 !212 !213 !462 !463) +!493 = (!82 !212 !213 !462 !463) +!494 = (!82 !212 !213 !462 !463) +!495 = (!82 !212 !213 !462 !463) +!496 = span !11 4450 4533 +!497 = (!82 !212 !213 !462 !463 !496) +!498 = (!82 !212 !213 !462 !463) +!499 = span !0 803 842 +!500 = (!82 !212 !213 !499) +!501 = span !0 864 870 +!502 = (!82 !212 !213 !501) +!503 = span !11 92998 93042 +!504 = (!82 !503) +!505 = span !11 93051 93057 +!506 = (!82 !505) +!507 = (!82 !212 !213 !462 !463) +!508 = (!82 !212 !213 !462 !463) +!509 = (!82 !212 !213 !462 !463) +!510 = (!82 !212 !213 !462 !463) +!511 = (!78 !79 !80) +!512 = (!82 !83) +!513 = (!82 !85) +!514 = (!82 !89) +!515 = (!82 !89) +!516 = (!82 !89) +!517 = (!82 !89) +!518 = (!82 !89) +!519 = span !0 337 491 +!520 = fn_name_span !0 340 350 +!521 = (!519 !520) +!522 = span !14 92 97 +!523 = (!78 !79 !80) +!524 = (!82 !178 !179 !180 !181 !182 !183) +!525 = (!82 !178) +!526 = (!82 !83) +!527 = (!82 !85) +!528 = (!82 !89) +!529 = (!82 !89) +!530 = (!82 !89) +!531 = (!82 !89) +!532 = (!82 !89) +!533 = (!82 !210) +!534 = (!82 !212 !213) +!535 = (!82 !212 !213) +!536 = span !0 430 434 +!537 = (!82 !212 !213 !536) +!538 = span !0 424 718 +!539 = (!82 !212 !213 !538) +!540 = (!82 !212 !213 !536) +!541 = (!82 !212 !213 !536) +!542 = (!82 !212 !213) +!543 = span !0 437 632 +!544 = fn_call_path_span !0 437 632 +!545 = (!82 !212 !213 !543 !544) +!546 = (!82 !212 !213 !543) +!547 = (!82 !212 !213 !536) +!548 = (!82 !212 !213) +!549 = span !0 442 447 +!550 = (!82 !212 !213 !549) +!551 = span !0 507 513 +!552 = (!82 !212 !213 !551) +!553 = span !0 491 495 +!554 = span !0 478 515 +!555 = (!82 !212 !213 !554) +!556 = span !0 553 558 +!557 = (!82 !212 !213 !556) +!558 = span !0 570 576 +!559 = (!82 !212 !213 !558) +!560 = span !0 540 578 +!561 = (!82 !212 !213 !560) +!562 = span !0 603 609 +!563 = (!82 !212 !213 !562) +!564 = (!82 !212 !213) +!565 = (!82 !212 !213 !536) +!566 = (!82 !212 !213 !536) +!567 = (!82 !212 !213) +!568 = span !0 634 714 +!569 = fn_call_path_span !0 634 714 +!570 = (!82 !212 !213 !568 !569) +!571 = (!82 !212 !213 !568) +!572 = span !0 684 690 +!573 = (!82 !212 !213 !572) +!574 = span !0 668 672 +!575 = (!82 !212 !213) +!576 = (!82 !212 !213 !538) +!577 = span !0 411 719 +!578 = (!82 !212 !213 !577) +!579 = span !0 740 746 +!580 = (!82 !212 !213 !579) +!581 = (!82 !503) +!582 = (!82 !505) +!583 = (!78 !79 !80) +!584 = span !14 433 438 warning --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 @@ -1627,46 +1826,58 @@ warning ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:35:5 | -32 | 33 | impl AbiEncode for CustomAbiEncode { -34 | fn abi_encode(self, buffer: Buffer) -> Buffer { +34 | fn is_encode_trivial() -> bool { false } +35 | fn abi_encode(self, buffer: Buffer) -> Buffer { | _____- -35 | | 77u64.abi_encode(buffer) -36 | | } +36 | | 77u64.abi_encode(buffer) +37 | | } | |_____- This method is never called. -37 | } -38 | +38 | } +39 | | ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:39:8 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + | +32 | +33 | impl AbiEncode for CustomAbiEncode { +34 | fn is_encode_trivial() -> bool { false } + | ---------------------------------------- This method is never called. +35 | fn abi_encode(self, buffer: Buffer) -> Buffer { +36 | 77u64.abi_encode(buffer) | -37 | } -38 | -39 | struct NotAutoEncodable { +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:8 + | +38 | } +39 | +40 | struct NotAutoEncodable { | ---------------- This struct is never used. -40 | p: raw_ptr -41 | } +41 | p: raw_ptr +42 | } | ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:5 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:41:5 | -38 | -39 | struct NotAutoEncodable { -40 | p: raw_ptr +39 | +40 | struct NotAutoEncodable { +41 | p: raw_ptr | - This struct field is never accessed. -41 | } -42 | +42 | } +43 | | ____ - Compiled script "logging" with 5 warnings. - Finished release [optimized + fuel] target(s) [2.896 KB] in ??? + Compiled script "logging" with 6 warnings. + Finished release [optimized + fuel] target(s) [3.104 KB] in ??? > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release exit status: 0 @@ -1675,10 +1886,10 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling script logging (test/src/e2e_vm_tests/test_programs/should_pass/language/logging) warning: Returned value is ignored - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:79:5 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:80:5 | ... -79 | main(); +80 | main(); | ------ This returns a value which is not assigned to anything and is ignored. | ------ help: The returned value has type "u64". | @@ -1711,51 +1922,63 @@ warning ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:35:5 | -32 | 33 | impl AbiEncode for CustomAbiEncode { -34 | fn abi_encode(self, buffer: Buffer) -> Buffer { +34 | fn is_encode_trivial() -> bool { false } +35 | fn abi_encode(self, buffer: Buffer) -> Buffer { | _____- -35 | | 77u64.abi_encode(buffer) -36 | | } +36 | | 77u64.abi_encode(buffer) +37 | | } | |_____- This method is never called. -37 | } -38 | +38 | } +39 | + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + | +32 | +33 | impl AbiEncode for CustomAbiEncode { +34 | fn is_encode_trivial() -> bool { false } + | ---------------------------------------- This method is never called. +35 | fn abi_encode(self, buffer: Buffer) -> Buffer { +36 | 77u64.abi_encode(buffer) | ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:39:8 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:8 | -37 | } -38 | -39 | struct NotAutoEncodable { +38 | } +39 | +40 | struct NotAutoEncodable { | ---------------- This struct is never used. -40 | p: raw_ptr -41 | } +41 | p: raw_ptr +42 | } | ____ warning - --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:5 + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:41:5 | -38 | -39 | struct NotAutoEncodable { -40 | p: raw_ptr +39 | +40 | struct NotAutoEncodable { +41 | p: raw_ptr | - This struct field is never accessed. -41 | } -42 | +42 | } +43 | | ____ - Compiled script "logging" with 6 warnings. - Finished release [optimized + fuel] target(s) [2.912 KB] in ??? + Compiled script "logging" with 7 warnings. + Finished release [optimized + fuel] target(s) [3.112 KB] in ??? Running 1 test, filtered 0 tests tested -- logging - test call_main ... ok (???, 5560 gas) + test call_main ... ok (???, 5959 gas) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap index 5d3374353f3..9b17d9cf710 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64 --release --ir final --asm final --bytecode exit status: 0 @@ -25,114 +26,76 @@ library { // IR: Final script { pub entry fn __entry() -> __ptr never, !3 { + local mut { u64 } __aggr_memcpy_0 + local u64 _result local { u64 } args - local mut { ptr } buffer - local u64 item_ entry(): v0 = const u64 0, !5 v1 = gtf v0, 10, !11 v2 = bitcast v1 to ptr, !12 - v3 = get_local __ptr { ptr }, buffer, !14 - v4 = const u64 0 - v5 = get_elem_ptr v3, __ptr ptr, v4, !15 - store v2 to v5, !16 - v6 = get_local __ptr { ptr }, buffer, !18 + v3 = cast_ptr v2 to __ptr { u64 }, !15 + v4 = get_local __ptr { u64 }, __aggr_memcpy_0 + mem_copy_val v4, v3 + v5 = get_local __ptr { u64 }, args, !16 + mem_copy_val v5, v4 + v6 = get_local __ptr { u64 }, args, !17 v7 = const u64 0 - v8 = get_elem_ptr v6, __ptr ptr, v7, !26 - v9 = load v8, !27 - v10 = asm(ptr: v9, val) -> u64 val, !29 { - lw val ptr i0, !30 - } - v11 = load v8, !31 - v12 = const u64 8, !32 - v13 = add v11, v12, !33 - store v13 to v8, !35 - v14 = get_local __ptr { u64 }, args, !37 - v15 = const u64 0 - v16 = get_elem_ptr v14, __ptr u64, v15, !38 - store v10 to v16, !39 - v17 = get_local __ptr { u64 }, args, !40 - v18 = const u64 0 - v19 = get_elem_ptr v17, __ptr u64, v18, !41 - v20 = load v19 - v21 = call main_5(v20), !44 - v22 = get_local __ptr u64, item_, !47 - store v21 to v22, !47 - v23 = get_local __ptr u64, item_, !49 - v24 = const u64 8 - retd v23 v24, !51 + v8 = get_elem_ptr v6, __ptr u64, v7, !18 + v9 = load v8 + v10 = call main_11(v9), !21 + v11 = get_local __ptr u64, _result, !22 + store v10 to v11, !22 + v12 = get_local __ptr u64, _result, !23 + v13 = const u64 8 + retd v12 v13, !27 } - entry_orig fn main_5(baba !53: u64) -> u64, !56 { + entry_orig fn main_11(baba !29: u64) -> u64, !32 { entry(baba: u64): - v0 = const u64 1, !57 - v1 = add baba, v0, !60 + v0 = const u64 1, !33 + v1 = add baba, v0, !36 ret u64 v1 } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/src/main..sw" -!1 = span !0 0 203 +!1 = span !0 0 204 !2 = fn_name_span !0 7 14 !3 = (!1 !2) !4 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core/src/codec.sw" -!5 = span !4 1599 1600 +!5 = span !4 1542 1543 !6 = span !0 59 89 !7 = fn_call_path_span !0 59 77 -!8 = span !4 140379 140411 -!9 = fn_call_path_span !4 140379 140409 -!10 = span !4 1582 1606 +!8 = span !4 184944 184976 +!9 = fn_call_path_span !4 184944 184974 +!10 = span !4 1525 1549 !11 = (!6 !7 !8 !9 !10) !12 = (!6 !7 !8 !9 !10) -!13 = span !4 1691 1711 -!14 = (!6 !7 !8 !9 !13) -!15 = (!6 !7 !8 !9) -!16 = (!6 !7 !8 !9 !13) -!17 = span !4 140431 140437 -!18 = (!6 !7 !17) -!19 = span !4 140417 140438 -!20 = fn_call_path_span !4 140417 140430 -!21 = span !4 116142 116163 -!22 = fn_call_path_span !4 116142 116155 -!23 = span !4 72721 72749 -!24 = fn_call_path_span !4 72728 72740 -!25 = span !4 625 637 -!26 = (!6 !7 !19 !20 !21 !22 !23 !24 !25) -!27 = (!6 !7 !19 !20 !21 !22 !23 !24) -!28 = span !4 2766 2847 -!29 = (!6 !7 !19 !20 !21 !22 !23 !24 !28) -!30 = span !4 2804 2817 -!31 = (!6 !7 !19 !20 !21 !22 !23 !24) -!32 = (!6 !7 !19 !20 !21 !22 !23 !24) -!33 = (!6 !7 !19 !20 !21 !22 !23 !24) -!34 = span !4 2857 2896 -!35 = (!6 !7 !19 !20 !21 !22 !23 !24 !34) -!36 = span !4 116141 116166 -!37 = (!6 !7 !19 !20 !36) -!38 = (!6 !7 !19 !20 !36) -!39 = (!6 !7 !19 !20 !36) -!40 = span !0 131 135 -!41 = span !0 136 137 -!42 = span !0 126 138 -!43 = fn_call_path_span !0 126 130 -!44 = (!42 !43) -!45 = span !0 156 189 -!46 = fn_call_path_span !0 156 173 -!47 = (!45 !46) -!48 = span !4 71584 71588 -!49 = (!45 !46 !48) -!50 = span !4 71568 71595 -!51 = (!45 !46 !50) -!52 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/src/main.sw" -!53 = span !52 17 21 -!54 = span !52 9 51 -!55 = fn_name_span !52 12 16 -!56 = (!54 !55) -!57 = span !52 48 49 -!58 = span !52 41 49 -!59 = fn_call_path_span !52 46 47 -!60 = (!58 !59) +!13 = span !4 184919 184977 +!14 = fn_call_path_span !4 184919 184938 +!15 = (!6 !7 !13 !14) +!16 = span !0 40 90 +!17 = span !0 131 135 +!18 = span !0 136 137 +!19 = span !0 126 138 +!20 = fn_call_path_span !0 126 130 +!21 = (!19 !20) +!22 = span !0 107 139 +!23 = span !0 182 189 +!24 = span !0 156 190 +!25 = fn_call_path_span !0 156 173 +!26 = span !4 93230 93256 +!27 = (!24 !25 !26) +!28 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/src/main.sw" +!29 = span !28 17 21 +!30 = span !28 9 51 +!31 = fn_name_span !28 12 16 +!32 = (!30 !31) +!33 = span !28 48 49 +!34 = span !28 41 49 +!35 = fn_call_path_span !28 46 47 +!36 = (!34 !35) ;; ASM: Final program ;; Program kind: Script @@ -149,24 +112,19 @@ cfei i0 ; allocate stack space for globals move $$locbase $sp ; save locals base register for function __entry cfei i24 ; allocate 24 bytes for locals and 0 slots for call arguments gtf $r0 $zero i10 ; get transaction field -sw $$locbase $r0 i1 ; store word -lw $r0 $$locbase i1 ; load word -lw $r0 $r0 i0 ; lw val ptr i0 -lw $r1 $$locbase i1 ; load word -movi $r2 i8 ; initialize constant into register -add $r1 $r1 $r2 -sw $$locbase $r1 i1 ; store word -sw $$locbase $r0 i0 ; store word -lw $r0 $$locbase i0 ; load word +mcpi $$locbase $r0 i8 ; copy memory +addi $r0 $$locbase i16 ; get offset to local __ptr { u64 } +mcpi $r0 $$locbase i8 ; copy memory +lw $r0 $$locbase i2 ; load word move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i5 ; [call]: call main_5 -sw $$locbase $$retv i2 ; store word -addi $r0 $$locbase i16 ; get offset to local __ptr u64 +jal $$reta $pc i5 ; [call]: call main_11 +sw $$locbase $$retv i1 ; store word +addi $r0 $$locbase i8 ; get offset to local __ptr u64 movi $r1 i8 ; initialize constant into register retd $r0 $r1 pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function main_5 +move $$locbase $sp ; save locals base register for function main_11 add $r0 $$arg0 $one move $$retv $r0 ; set return value poph i524288 ; restore registers 40..64 @@ -179,37 +137,33 @@ jal $zero $$reta i0 ; return from call 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 136] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 120] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] 0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] 0x00000024 CFEI 0x18 ;; [145, 0, 0, 24] 0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] -0x0000002c SW R59 $writable 0x1 ;; [95, 237, 0, 1] -0x00000030 LW $writable R59 0x1 ;; [93, 67, 176, 1] -0x00000034 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000038 LW R17 R59 0x1 ;; [93, 71, 176, 1] -0x0000003c MOVI R18 0x8 ;; [114, 72, 0, 8] -0x00000040 ADD R17 R17 R18 ;; [16, 69, 20, 128] -0x00000044 SW R59 R17 0x1 ;; [95, 237, 16, 1] -0x00000048 SW R59 $writable 0x0 ;; [95, 237, 0, 0] -0x0000004c LW $writable R59 0x0 ;; [93, 67, 176, 0] -0x00000050 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000054 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] -0x00000058 SW R59 R61 0x2 ;; [95, 239, 208, 2] -0x0000005c ADDI $writable R59 0x10 ;; [80, 67, 176, 16] -0x00000060 MOVI R17 0x8 ;; [114, 68, 0, 8] -0x00000064 RETD $writable R17 ;; [37, 65, 16, 0] -0x00000068 PSHL 0x1 ;; [149, 0, 0, 1] -0x0000006c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000070 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000074 ADD $writable R58 $one ;; [16, 67, 160, 64] -0x00000078 MOVE R61 $writable ;; [26, 245, 0, 0] -0x0000007c POPH 0x80000 ;; [152, 8, 0, 0] -0x00000080 POPL 0x1 ;; [151, 0, 0, 1] -0x00000084 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000002c MCPI R59 $writable 0x8 ;; [96, 237, 0, 8] +0x00000030 ADDI $writable R59 0x10 ;; [80, 67, 176, 16] +0x00000034 MCPI $writable R59 0x8 ;; [96, 67, 176, 8] +0x00000038 LW $writable R59 0x2 ;; [93, 67, 176, 2] +0x0000003c MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000040 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] +0x00000044 SW R59 R61 0x1 ;; [95, 239, 208, 1] +0x00000048 ADDI $writable R59 0x8 ;; [80, 67, 176, 8] +0x0000004c MOVI R17 0x8 ;; [114, 68, 0, 8] +0x00000050 RETD $writable R17 ;; [37, 65, 16, 0] +0x00000054 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000058 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000005c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000060 ADD $writable R58 $one ;; [16, 67, 160, 64] +0x00000064 MOVE R61 $writable ;; [26, 245, 0, 0] +0x00000068 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000006c POPL 0x1 ;; [151, 0, 0, 1] +0x00000070 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000074 NOOP ;; [71, 0, 0, 0] .data_section: ;; --- END OF TARGET BYTECODE --- - Finished release [optimized + fuel] target(s) [136 B] in ??? + Finished release [optimized + fuel] target(s) [120 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap index dbecaaac712..f9570601e30 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64 --release --ir final --asm final --bytecode exit status: 0 @@ -25,140 +26,175 @@ library { // IR: Final script { pub entry fn __entry() -> __ptr never, !3 { + local mut { u64, u64 } __aggr_memcpy_0 + local { ptr } __anon_0 + local { u64, u64 } __anon_00 + local { u64, u64 } __tmp_block_arg + local u64 _result local { u64, u64 } args local mut { ptr } buffer - local u64 item_ entry(): v0 = const u64 0, !5 v1 = gtf v0, 10, !11 v2 = bitcast v1 to ptr, !12 - v3 = get_local __ptr { ptr }, buffer, !14 - v4 = const u64 0 - v5 = get_elem_ptr v3, __ptr ptr, v4, !15 - store v2 to v5, !16 - v6 = get_local __ptr { ptr }, buffer, !18 - v7 = const u64 0 - v8 = get_elem_ptr v6, __ptr ptr, v7, !26 - v9 = load v8, !27 - v10 = asm(ptr: v9, val) -> u64 val, !29 { - lw val ptr i0, !30 - } - v11 = load v8, !31 - v12 = const u64 8, !32 - v13 = add v11, v12, !33 - store v13 to v8, !35 - v14 = load v8, !38 - v15 = asm(ptr: v14, val) -> u64 val, !39 { - lw val ptr i0, !30 + v3 = const bool true, !13 + cbr v3, decode_script_data_0_decode_from_raw_ptr_1_block0(), decode_script_data_0_decode_from_raw_ptr_1_block1(), !17 + + decode_script_data_0_decode_from_raw_ptr_1_block0(): + v4 = cast_ptr v2 to __ptr { u64, u64 }, !18 + v5 = get_local __ptr { u64, u64 }, __aggr_memcpy_0 + mem_copy_val v5, v4 + v6 = get_local __ptr { u64, u64 }, __tmp_block_arg + mem_copy_val v6, v5 + br decode_script_data_0_decode_from_raw_ptr_1_block2(v6), !19 + + decode_script_data_0_decode_from_raw_ptr_1_block1(): + v7 = get_local __ptr { ptr }, __anon_0, !21 + v8 = const u64 0 + v9 = get_elem_ptr v7, __ptr ptr, v8, !22 + store v2 to v9, !23 + v10 = get_local __ptr { ptr }, buffer, !25 + mem_copy_val v10, v7 + v11 = get_local __ptr { ptr }, buffer, !27 + v12 = const u64 0 + v13 = get_elem_ptr v11, __ptr ptr, v12, !35 + v14 = load v13, !36 + v15 = asm(ptr: v14, val) -> u64 val, !38 { + lw val ptr i0, !39 } - v16 = load v8, !40 + v16 = load v13, !40 v17 = const u64 8, !41 v18 = add v16, v17, !42 - store v18 to v8, !43 - v19 = get_local __ptr { u64, u64 }, args, !45 - v20 = const u64 0 - v21 = get_elem_ptr v19, __ptr u64, v20, !46 - store v10 to v21, !47 - v22 = const u64 1 - v23 = get_elem_ptr v19, __ptr u64, v22, !48 - store v15 to v23, !49 - v24 = get_local __ptr { u64, u64 }, args, !50 + store v18 to v13, !44 + v19 = load v13, !47 + v20 = asm(ptr: v19, val) -> u64 val, !48 { + lw val ptr i0, !39 + } + v21 = load v13, !49 + v22 = const u64 8, !50 + v23 = add v21, v22, !51 + store v23 to v13, !52 + v24 = get_local __ptr { u64, u64 }, __anon_00, !54 v25 = const u64 0 - v26 = get_elem_ptr v24, __ptr u64, v25, !51 - v27 = load v26 - v28 = get_local __ptr { u64, u64 }, args, !52 - v29 = const u64 1 - v30 = get_elem_ptr v28, __ptr u64, v29, !53 - v31 = load v30 - v32 = call main_5(v27, v31), !56 - v33 = get_local __ptr u64, item_, !59 - store v32 to v33, !59 - v34 = get_local __ptr u64, item_, !61 - v35 = const u64 8 - retd v34 v35, !63 + v26 = get_elem_ptr v24, __ptr u64, v25, !55 + store v15 to v26, !56 + v27 = const u64 1 + v28 = get_elem_ptr v24, __ptr u64, v27, !57 + store v20 to v28, !58 + v29 = get_local __ptr { u64, u64 }, __tmp_block_arg + mem_copy_val v29, v24 + br decode_script_data_0_decode_from_raw_ptr_1_block2(v29), !59 + + decode_script_data_0_decode_from_raw_ptr_1_block2(v30: __ptr { u64, u64 }): + v31 = get_local __ptr { u64, u64 }, args, !60 + mem_copy_val v31, v30 + v32 = get_local __ptr { u64, u64 }, args, !61 + v33 = const u64 0 + v34 = get_elem_ptr v32, __ptr u64, v33, !62 + v35 = load v34 + v36 = get_local __ptr { u64, u64 }, args, !63 + v37 = const u64 1 + v38 = get_elem_ptr v36, __ptr u64, v37, !64 + v39 = load v38 + v40 = call main_11(v35, v39), !67 + v41 = get_local __ptr u64, _result, !68 + store v40 to v41, !68 + v42 = get_local __ptr u64, _result, !69 + v43 = const u64 8 + retd v42 v43, !73 } - entry_orig fn main_5(baba !65: u64, keke !66: u64) -> u64, !69 { + entry_orig fn main_11(baba !75: u64, keke !76: u64) -> u64, !79 { entry(baba: u64, keke: u64): - v0 = add baba, keke, !72 + v0 = add baba, keke, !82 ret u64 v0 } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main..sw" -!1 = span !0 0 221 +!1 = span !0 0 222 !2 = fn_name_span !0 7 14 !3 = (!1 !2) !4 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core/src/codec.sw" -!5 = span !4 1599 1600 +!5 = span !4 1542 1543 !6 = span !0 64 99 !7 = fn_call_path_span !0 64 82 -!8 = span !4 140379 140411 -!9 = fn_call_path_span !4 140379 140409 -!10 = span !4 1582 1606 +!8 = span !4 184944 184976 +!9 = fn_call_path_span !4 184944 184974 +!10 = span !4 1525 1549 !11 = (!6 !7 !8 !9 !10) !12 = (!6 !7 !8 !9 !10) -!13 = span !4 1691 1711 -!14 = (!6 !7 !8 !9 !13) -!15 = (!6 !7 !8 !9) -!16 = (!6 !7 !8 !9 !13) -!17 = span !4 140431 140437 -!18 = (!6 !7 !17) -!19 = span !4 140417 140438 -!20 = fn_call_path_span !4 140417 140430 -!21 = span !4 116318 116339 -!22 = fn_call_path_span !4 116318 116331 -!23 = span !4 72721 72749 -!24 = fn_call_path_span !4 72728 72740 -!25 = span !4 625 637 -!26 = (!6 !7 !19 !20 !21 !22 !23 !24 !25) -!27 = (!6 !7 !19 !20 !21 !22 !23 !24) -!28 = span !4 2766 2847 -!29 = (!6 !7 !19 !20 !21 !22 !23 !24 !28) -!30 = span !4 2804 2817 -!31 = (!6 !7 !19 !20 !21 !22 !23 !24) -!32 = (!6 !7 !19 !20 !21 !22 !23 !24) -!33 = (!6 !7 !19 !20 !21 !22 !23 !24) -!34 = span !4 2857 2896 -!35 = (!6 !7 !19 !20 !21 !22 !23 !24 !34) -!36 = span !4 116341 116362 -!37 = fn_call_path_span !4 116341 116354 -!38 = (!6 !7 !19 !20 !36 !37 !23 !24) -!39 = (!6 !7 !19 !20 !36 !37 !23 !24 !28) -!40 = (!6 !7 !19 !20 !36 !37 !23 !24) -!41 = (!6 !7 !19 !20 !36 !37 !23 !24) -!42 = (!6 !7 !19 !20 !36 !37 !23 !24) -!43 = (!6 !7 !19 !20 !36 !37 !23 !24 !34) -!44 = span !4 116317 116363 -!45 = (!6 !7 !19 !20 !44) -!46 = (!6 !7 !19 !20 !44) -!47 = (!6 !7 !19 !20 !44) -!48 = (!6 !7 !19 !20 !44) -!49 = (!6 !7 !19 !20 !44) -!50 = span !0 141 145 -!51 = span !0 146 147 -!52 = span !0 149 153 -!53 = span !0 154 155 -!54 = span !0 136 156 -!55 = fn_call_path_span !0 136 140 -!56 = (!54 !55) -!57 = span !0 174 207 -!58 = fn_call_path_span !0 174 191 -!59 = (!57 !58) -!60 = span !4 71584 71588 -!61 = (!57 !58 !60) -!62 = span !4 71568 71595 -!63 = (!57 !58 !62) -!64 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main.sw" -!65 = span !64 17 21 -!66 = span !64 28 32 -!67 = span !64 9 65 -!68 = fn_name_span !64 12 16 -!69 = (!67 !68) -!70 = span !64 52 63 -!71 = fn_call_path_span !64 57 58 -!72 = (!70 !71) +!13 = span !4 95125 95129 +!14 = span !4 184919 184977 +!15 = fn_call_path_span !4 184919 184938 +!16 = span !4 184659 184683 +!17 = (!6 !7 !14 !15 !16) +!18 = (!6 !7 !14 !15) +!19 = (!6 !7 !14 !15) +!20 = span !4 184792 184812 +!21 = (!6 !7 !14 !15 !20) +!22 = (!6 !7 !14 !15) +!23 = (!6 !7 !14 !15 !20) +!24 = span !4 184775 184813 +!25 = (!6 !7 !14 !15 !24) +!26 = span !4 184836 184842 +!27 = (!6 !7 !14 !15 !26) +!28 = span !4 184822 184843 +!29 = fn_call_path_span !4 184822 184835 +!30 = span !4 148317 148338 +!31 = fn_call_path_span !4 148317 148330 +!32 = span !4 95201 95229 +!33 = fn_call_path_span !4 95208 95220 +!34 = span !4 625 641 +!35 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33 !34) +!36 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33) +!37 = span !4 2212 2293 +!38 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33 !37) +!39 = span !4 2250 2263 +!40 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33) +!41 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33) +!42 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33) +!43 = span !4 2303 2342 +!44 = (!6 !7 !14 !15 !28 !29 !30 !31 !32 !33 !43) +!45 = span !4 148340 148361 +!46 = fn_call_path_span !4 148340 148353 +!47 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33) +!48 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33 !37) +!49 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33) +!50 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33) +!51 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33) +!52 = (!6 !7 !14 !15 !28 !29 !45 !46 !32 !33 !43) +!53 = span !4 148316 148362 +!54 = (!6 !7 !14 !15 !28 !29 !53) +!55 = (!6 !7 !14 !15 !28 !29 !53) +!56 = (!6 !7 !14 !15 !28 !29 !53) +!57 = (!6 !7 !14 !15 !28 !29 !53) +!58 = (!6 !7 !14 !15 !28 !29 !53) +!59 = (!6 !7 !14 !15) +!60 = span !0 40 100 +!61 = span !0 141 145 +!62 = span !0 146 147 +!63 = span !0 149 153 +!64 = span !0 154 155 +!65 = span !0 136 156 +!66 = fn_call_path_span !0 136 140 +!67 = (!65 !66) +!68 = span !0 117 157 +!69 = span !0 200 207 +!70 = span !0 174 208 +!71 = fn_call_path_span !0 174 191 +!72 = span !4 93230 93256 +!73 = (!70 !71 !72) +!74 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main.sw" +!75 = span !74 17 21 +!76 = span !74 28 32 +!77 = span !74 9 65 +!78 = fn_name_span !74 12 16 +!79 = (!77 !78) +!80 = span !74 52 63 +!81 = fn_call_path_span !74 57 58 +!82 = (!80 !81) ;; ASM: Final program ;; Program kind: Script @@ -173,35 +209,25 @@ lw $$ds $$tmp i1 add $$ds $$ds $$tmp cfei i0 ; allocate stack space for globals move $$locbase $sp ; save locals base register for function __entry -cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments +cfei i88 ; allocate 88 bytes for locals and 0 slots for call arguments gtf $r0 $zero i10 ; get transaction field -sw $$locbase $r0 i2 ; store word -lw $r0 $$locbase i2 ; load word -lw $r3 $r0 i0 ; lw val ptr i0 -lw $r0 $$locbase i2 ; load word -movi $r1 i8 ; initialize constant into register -add $r0 $r0 $r1 -sw $$locbase $r0 i2 ; store word -lw $r0 $$locbase i2 ; load word -lw $r0 $r0 i0 ; lw val ptr i0 -lw $r1 $$locbase i2 ; load word -movi $r2 i8 ; initialize constant into register -add $r1 $r1 $r2 -sw $$locbase $r1 i2 ; store word -sw $$locbase $r3 i0 ; store word -sw $$locbase $r0 i1 ; store word -lw $r0 $$locbase i0 ; load word -lw $r1 $$locbase i1 ; load word +mcpi $$locbase $r0 i16 ; copy memory +addi $r0 $$locbase i40 ; get offset to local __ptr { u64, u64 } +mcpi $r0 $$locbase i16 ; copy memory +addi $r1 $$locbase i64 ; get offset to local __ptr { u64, u64 } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i8 ; load word +lw $r1 $$locbase i9 ; load word move $$arg0 $r0 ; [call]: pass argument 0 move $$arg1 $r1 ; [call]: pass argument 1 -jal $$reta $pc i5 ; [call]: call main_5 -sw $$locbase $$retv i3 ; store word -addi $r0 $$locbase i24 ; get offset to local __ptr u64 +jal $$reta $pc i5 ; [call]: call main_11 +sw $$locbase $$retv i7 ; store word +addi $r0 $$locbase i56 ; get offset to local __ptr u64 movi $r1 i8 ; initialize constant into register retd $r0 $r1 pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function main_5 +move $$locbase $sp ; save locals base register for function main_11 add $r0 $$arg0 $$arg1 move $$retv $r0 ; set return value poph i524288 ; restore registers 40..64 @@ -214,47 +240,37 @@ jal $zero $$reta i0 ; return from call 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 176] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 136] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] 0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000024 CFEI 0x20 ;; [145, 0, 0, 32] +0x00000024 CFEI 0x58 ;; [145, 0, 0, 88] 0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] -0x0000002c SW R59 $writable 0x2 ;; [95, 237, 0, 2] -0x00000030 LW $writable R59 0x2 ;; [93, 67, 176, 2] -0x00000034 LW R19 $writable 0x0 ;; [93, 77, 0, 0] -0x00000038 LW $writable R59 0x2 ;; [93, 67, 176, 2] -0x0000003c MOVI R17 0x8 ;; [114, 68, 0, 8] -0x00000040 ADD $writable $writable R17 ;; [16, 65, 4, 64] -0x00000044 SW R59 $writable 0x2 ;; [95, 237, 0, 2] -0x00000048 LW $writable R59 0x2 ;; [93, 67, 176, 2] -0x0000004c LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000050 LW R17 R59 0x2 ;; [93, 71, 176, 2] -0x00000054 MOVI R18 0x8 ;; [114, 72, 0, 8] -0x00000058 ADD R17 R17 R18 ;; [16, 69, 20, 128] -0x0000005c SW R59 R17 0x2 ;; [95, 237, 16, 2] -0x00000060 SW R59 R19 0x0 ;; [95, 237, 48, 0] -0x00000064 SW R59 $writable 0x1 ;; [95, 237, 0, 1] -0x00000068 LW $writable R59 0x0 ;; [93, 67, 176, 0] -0x0000006c LW R17 R59 0x1 ;; [93, 71, 176, 1] -0x00000070 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000074 MOVE R57 R17 ;; [26, 229, 16, 0] -0x00000078 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] -0x0000007c SW R59 R61 0x3 ;; [95, 239, 208, 3] -0x00000080 ADDI $writable R59 0x18 ;; [80, 67, 176, 24] -0x00000084 MOVI R17 0x8 ;; [114, 68, 0, 8] -0x00000088 RETD $writable R17 ;; [37, 65, 16, 0] -0x0000008c PSHL 0x1 ;; [149, 0, 0, 1] -0x00000090 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000094 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000098 ADD $writable R58 R57 ;; [16, 67, 174, 64] -0x0000009c MOVE R61 $writable ;; [26, 245, 0, 0] -0x000000a0 POPH 0x80000 ;; [152, 8, 0, 0] -0x000000a4 POPL 0x1 ;; [151, 0, 0, 1] -0x000000a8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000000ac NOOP ;; [71, 0, 0, 0] +0x0000002c MCPI R59 $writable 0x10 ;; [96, 237, 0, 16] +0x00000030 ADDI $writable R59 0x28 ;; [80, 67, 176, 40] +0x00000034 MCPI $writable R59 0x10 ;; [96, 67, 176, 16] +0x00000038 ADDI R17 R59 0x40 ;; [80, 71, 176, 64] +0x0000003c MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000040 LW $writable R59 0x8 ;; [93, 67, 176, 8] +0x00000044 LW R17 R59 0x9 ;; [93, 71, 176, 9] +0x00000048 MOVE R58 $writable ;; [26, 233, 0, 0] +0x0000004c MOVE R57 R17 ;; [26, 229, 16, 0] +0x00000050 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] +0x00000054 SW R59 R61 0x7 ;; [95, 239, 208, 7] +0x00000058 ADDI $writable R59 0x38 ;; [80, 67, 176, 56] +0x0000005c MOVI R17 0x8 ;; [114, 68, 0, 8] +0x00000060 RETD $writable R17 ;; [37, 65, 16, 0] +0x00000064 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000068 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000006c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000070 ADD $writable R58 R57 ;; [16, 67, 174, 64] +0x00000074 MOVE R61 $writable ;; [26, 245, 0, 0] +0x00000078 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000007c POPL 0x1 ;; [151, 0, 0, 1] +0x00000080 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000084 NOOP ;; [71, 0, 0, 0] .data_section: ;; --- END OF TARGET BYTECODE --- - Finished release [optimized + fuel] target(s) [176 B] in ??? + Finished release [optimized + fuel] target(s) [136 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap index fee4b5281fb..03bba81f0b2 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types --release --ir final --asm final --bytecode exit status: 0 @@ -30,68 +31,68 @@ script { pub entry fn __entry() -> __ptr never, !3 { local { { string<3> }, { u64, ( u64 | u64 ) } } __ret_val0 local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] __tmp_arg + local { u64 } _result local { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } args local mut [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] array local mut { ptr } buffer local { { string<3> }, { u64, ( u64 | u64 ) } } first - local { u64 } item_ entry(): v0 = const u64 0, !5 v1 = gtf v0, 10, !11 v2 = bitcast v1 to ptr, !12 - v3 = get_local __ptr { ptr }, buffer, !14 + v3 = get_local __ptr { ptr }, buffer, !16 v4 = const u64 0 - v5 = get_elem_ptr v3, __ptr ptr, v4, !15 - store v2 to v5, !16 - v6 = get_local __ptr { ptr }, buffer, !18 + v5 = get_elem_ptr v3, __ptr ptr, v4, !17 + store v2 to v5, !18 + v6 = get_local __ptr { ptr }, buffer, !20 v7 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first - v8 = call decode_4(v6, v7) - v9 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !24 - v10 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first, !26 + v8 = call decode_17(v6, v7) + v9 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !26 + v10 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first, !28 v11 = const u64 0 - v12 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v11, !27 + v12 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v11, !29 mem_copy_val v12, v10 v13 = const u64 1 - v14 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v13, !28 + v14 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v13, !30 mem_copy_val v14, v10 - v15 = const u64 1, !29 - br decode_script_data_0_abi_decode_2_abi_decode_3_while(v15), !30 + v15 = const u64 1, !31 + br decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while(v15), !32 - decode_script_data_0_abi_decode_2_abi_decode_3_while(v16: u64): - v17 = const u64 2, !31 - v18 = cmp lt v16 v17, !34 - cbr v18, decode_script_data_0_abi_decode_2_abi_decode_3_while_body(), decode_script_data_0_abi_decode_2_abi_decode_3_end_while(), !35 + decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while(v16: u64): + v17 = const u64 2, !33 + v18 = cmp lt v16 v17, !36 + cbr v18, decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while_body(), decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_end_while(), !37 - decode_script_data_0_abi_decode_2_abi_decode_3_while_body(): + decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while_body(): v19 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __ret_val0 - v20 = call decode_4(v6, v19) - v21 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !37 - v22 = get_elem_ptr v21, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v16, !38 + v20 = call decode_17(v6, v19) + v21 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !39 + v22 = get_elem_ptr v21, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v16, !40 mem_copy_val v22, v19 - v23 = const u64 1, !39 - v24 = add v16, v23, !42 - br decode_script_data_0_abi_decode_2_abi_decode_3_while(v24), !43 + v23 = const u64 1, !41 + v24 = add v16, v23, !44 + br decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while(v24), !45 - decode_script_data_0_abi_decode_2_abi_decode_3_end_while(): - v25 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !45 - v26 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !47 + decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_end_while(): + v25 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !47 + v26 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !49 v27 = const u64 0 - v28 = get_elem_ptr v26, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v27, !48 + v28 = get_elem_ptr v26, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v27, !50 mem_copy_val v28, v25 - v29 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !49 + v29 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !51 v30 = const u64 0 - v31 = get_elem_ptr v29, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v30, !50 + v31 = get_elem_ptr v29, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v30, !52 v32 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __tmp_arg mem_copy_val v32, v31 - v33 = get_local __ptr { u64 }, item_ - v34 = call main_19(v32, v33) - v35 = get_local __ptr { u64 }, item_, !54 + v33 = get_local __ptr { u64 }, _result + v34 = call main_32(v32, v33) + v35 = get_local __ptr { u64 }, _result, !53 v36 = const u64 8 - retd v35 v36, !56 + retd v35 v36, !57 } - pub fn decode_4(self !57: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }) -> (), !60 { + pub fn decode_17(self !58: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }) -> (), !61 { local mut slice __aggr_memcpy_0 local mut { ptr, u64 } __aggr_memcpy_00 local mut string<3> __aggr_memcpy_01 @@ -109,136 +110,138 @@ script { entry(self: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }): v0 = const u64 0 - v1 = get_elem_ptr self, __ptr ptr, v0, !70 - v2 = get_local __ptr { ptr, u64 }, __anon_000, !72 + v1 = get_elem_ptr self, __ptr ptr, v0, !71 + v2 = get_local __ptr { ptr, u64 }, __anon_000, !73 v3 = const u64 0 - v4 = get_elem_ptr v2, __ptr ptr, v3, !73 + v4 = get_elem_ptr v2, __ptr ptr, v3, !74 mem_copy_val v4, v1 v5 = const u64 1 - v6 = get_elem_ptr v2, __ptr u64, v5, !74 - v7 = const u64 3, !75 - store v7 to v6, !76 + v6 = get_elem_ptr v2, __ptr u64, v5, !75 + v7 = const u64 3, !76 + store v7 to v6, !77 v8 = asm(ptr: v2) -> __ptr slice ptr { } v9 = get_local __ptr slice, __aggr_memcpy_0 mem_copy_val v9, v8 - v10 = get_local __ptr slice, slice, !78 + v10 = get_local __ptr slice, slice, !79 mem_copy_val v10, v9 - v11 = load v1, !79 - v12 = const u64 3, !80 - v13 = add v11, v12, !81 - store v13 to v1, !83 - v14 = get_local __ptr slice, slice, !85 - v15 = get_local __ptr slice, data, !87 + v11 = load v1, !80 + v12 = const u64 3, !81 + v13 = add v11, v12, !82 + store v13 to v1, !84 + v14 = get_local __ptr slice, slice, !86 + v15 = get_local __ptr slice, data, !88 mem_copy_val v15, v14 - v16 = get_local __ptr slice, data, !89 - v17 = get_local __ptr slice, self_000, !92 + v16 = get_local __ptr slice, data, !90 + v17 = get_local __ptr slice, self_000, !93 mem_copy_val v17, v16 - v18 = get_local __ptr slice, self_000, !95 - v19 = get_local __ptr slice, slice_, !98 + v18 = get_local __ptr slice, self_000, !96 + v19 = get_local __ptr slice, slice_, !99 mem_copy_val v19, v18 - v20 = get_local __ptr slice, slice_, !100 + v20 = get_local __ptr slice, slice_, !101 v21 = asm(ptr: v20) -> __ptr { ptr, u64 } ptr { } v22 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 mem_copy_val v22, v21 - v23 = get_local __ptr { ptr, u64 }, __anon_0000, !101 + v23 = get_local __ptr { ptr, u64 }, __anon_0000, !102 mem_copy_val v23, v22 v24 = const u64 0 - v25 = get_elem_ptr v23, __ptr ptr, v24, !103 - v26 = load v25, !104 + v25 = get_elem_ptr v23, __ptr ptr, v24, !104 + v26 = load v25, !105 v27 = asm(s: v26) -> __ptr string<3> s { } v28 = get_local __ptr string<3>, __aggr_memcpy_01 mem_copy_val v28, v27 - v29 = get_local __ptr { string<3> }, __anon_00, !106 + v29 = get_local __ptr { string<3> }, __anon_00, !107 v30 = const u64 0 - v31 = get_elem_ptr v29, __ptr string<3>, v30, !107 + v31 = get_elem_ptr v29, __ptr string<3>, v30, !108 mem_copy_val v31, v28 - v32 = load v1, !114 - v33 = asm(ptr: v32, val) -> u64 val, !116 { - lw val ptr i0, !117 + v32 = load v1, !115 + v33 = asm(ptr: v32, val) -> u64 val, !117 { + lw val ptr i0, !118 } - v34 = load v1, !118 - v35 = const u64 8, !119 - v36 = add v34, v35, !120 - store v36 to v1, !122 - v37 = const u64 0, !123 - v38 = cmp eq v33 v37, !126 - cbr v38, abi_decode_5_abi_decode_12_block0(), abi_decode_5_abi_decode_12_block1(), !127 + v34 = load v1, !119 + v35 = const u64 8, !120 + v36 = add v34, v35, !121 + store v36 to v1, !123 + v37 = const u64 0, !124 + v38 = cmp eq v33 v37, !127 + cbr v38, abi_decode_18_abi_decode_25_block0(), abi_decode_18_abi_decode_25_block1(), !128 - abi_decode_5_abi_decode_12_block0(): - v39 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_01, !130 + abi_decode_18_abi_decode_25_block0(): + v39 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_01, !131 v40 = const u64 0 - v41 = get_elem_ptr v39, __ptr u64, v40, !131 - v42 = const u64 0, !129 - store v42 to v41, !132 - v43 = load v1, !135 - v44 = asm(ptr: v43, val) -> u64 val, !136 { - lw val ptr i0, !117 + v41 = get_elem_ptr v39, __ptr u64, v40, !132 + v42 = const u64 0, !130 + store v42 to v41, !133 + v43 = load v1, !136 + v44 = asm(ptr: v43, val) -> u64 val, !137 { + lw val ptr i0, !118 } - v45 = load v1, !137 - v46 = const u64 8, !138 - v47 = add v45, v46, !139 - store v47 to v1, !140 + v45 = load v1, !138 + v46 = const u64 8, !139 + v47 = add v45, v46, !140 + store v47 to v1, !141 v48 = const u64 1 v49 = const u64 0 - v50 = get_elem_ptr v39, __ptr u64, v48, v49, !141 - store v44 to v50, !142 + v50 = get_elem_ptr v39, __ptr u64, v48, v49, !142 + store v44 to v50, !143 v51 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg mem_copy_val v51, v39 - br abi_decode_5_abi_decode_12_block5(v51), !143 + br abi_decode_18_abi_decode_25_block5(v51), !144 - abi_decode_5_abi_decode_12_block1(): - v52 = const u64 1, !144 - v53 = cmp eq v33 v52, !147 - cbr v53, abi_decode_5_abi_decode_12_block2(), abi_decode_5_abi_decode_12_block3(), !148 + abi_decode_18_abi_decode_25_block1(): + v52 = const u64 1, !145 + v53 = cmp eq v33 v52, !148 + cbr v53, abi_decode_18_abi_decode_25_block2(), abi_decode_18_abi_decode_25_block3(), !149 - abi_decode_5_abi_decode_12_block2(): - v54 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_1, !149 + abi_decode_18_abi_decode_25_block2(): + v54 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_1, !150 v55 = const u64 0 - v56 = get_elem_ptr v54, __ptr u64, v55, !150 - v57 = const u64 1, !129 - store v57 to v56, !151 - v58 = load v1, !154 - v59 = asm(ptr: v58, val) -> u64 val, !155 { - lw val ptr i0, !117 + v56 = get_elem_ptr v54, __ptr u64, v55, !151 + v57 = const u64 1, !130 + store v57 to v56, !152 + v58 = load v1, !155 + v59 = asm(ptr: v58, val) -> u64 val, !156 { + lw val ptr i0, !118 } - v60 = load v1, !156 - v61 = const u64 8, !157 - v62 = add v60, v61, !158 - store v62 to v1, !159 + v60 = load v1, !157 + v61 = const u64 8, !158 + v62 = add v60, v61, !159 + store v62 to v1, !160 v63 = const u64 1 v64 = const u64 1 - v65 = get_elem_ptr v54, __ptr u64, v63, v64, !160 - store v59 to v65, !161 + v65 = get_elem_ptr v54, __ptr u64, v63, v64, !161 + store v59 to v65, !162 v66 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg mem_copy_val v66, v54 - br abi_decode_5_abi_decode_12_block5(v66), !162 + br abi_decode_18_abi_decode_25_block5(v66), !163 - abi_decode_5_abi_decode_12_block3(): - v67 = const u64 0, !163 - revert v67, !165 + abi_decode_18_abi_decode_25_block3(): + v67 = const u64 0, !164 + revert v67, !166 - abi_decode_5_abi_decode_12_block5(v68: __ptr { u64, ( u64 | u64 ) }): - v69 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __anon_0, !167 + abi_decode_18_abi_decode_25_block5(v68: __ptr { u64, ( u64 | u64 ) }): + v69 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __anon_0, !168 v70 = const u64 0 - v71 = get_elem_ptr v69, __ptr { string<3> }, v70, !168 + v71 = get_elem_ptr v69, __ptr { string<3> }, v70, !169 mem_copy_val v71, v29 v72 = const u64 1 - v73 = get_elem_ptr v69, __ptr { u64, ( u64 | u64 ) }, v72, !169 + v73 = get_elem_ptr v69, __ptr { u64, ( u64 | u64 ) }, v72, !170 mem_copy_val v73, v68 mem_copy_val __ret_value, v69 v74 = const unit () ret () v74 } - entry_orig fn main_19(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }) -> (), !172 { - local mut { ptr, u64, u64 } __aggr_memcpy_0 + entry_orig fn main_32(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }) -> (), !173 { + local mut slice __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local mut { ptr, u64, u64 } __aggr_memcpy_01 - local mut slice __aggr_memcpy_02 + local mut { ptr, u64, u64 } __aggr_memcpy_02 + local mut slice __aggr_memcpy_03 local { ptr, u64 } __anon_0 + local { ptr, u64 } __anon_00 local { ptr, u64, u64 } __anon_000 local { ptr, u64, u64 } __anon_01 local slice __anon_1 @@ -267,6 +270,7 @@ script { local string<3> __tmp_arg5 local slice __tmp_arg6 local { { ptr, u64, u64 } } __tmp_block_arg + local slice __tmp_block_arg0 local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ local { { ptr, u64, u64 } } buffer_0 @@ -284,399 +288,430 @@ script { local { { ptr, u64, u64 } } buffer______ local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] item_ local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] ops_ - local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] self_0 local { string<3> } self_000 local string<3> self_0000 - local { { string<3> }, { u64, ( u64 | u64 ) } } self_1 - local { u64, ( u64 | u64 ) } self_10 + local { { string<3> }, { u64, ( u64 | u64 ) } } self_10 + local { u64, ( u64 | u64 ) } self_100 + local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] self_2 local { { ptr, u64, u64 } } self_3 entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }): v0 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ mem_copy_val v0, ops - v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !173 - v2 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !173 + v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !174 + v2 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !174 mem_copy_val v2, v1 - v3 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !175 - v4 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 - v5 = call new_27(v4) - v6 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !178 - mem_copy_val v6, v3 - v7 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !179 - mem_copy_val v7, v4 - v8 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !181 - v9 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !183 - mem_copy_val v9, v8 - v10 = const u64 0, !184 - br encode_20_abi_encode_21_while(v10), !185 + v3 = const bool false, !183 + cbr v3, encode_33_block0(), encode_33_block1(), !184 + + encode_33_block0(): + v4 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !186 + v5 = const u64 48 + v6 = asm(size: v5, src: v4) -> ptr hp, !188 { + aloc size, !189 + mcp hp src size, !190 + } + v7 = get_local __ptr { ptr, u64 }, __anon_00, !192 + v8 = const u64 0 + v9 = get_elem_ptr v7, __ptr ptr, v8, !193 + store v6 to v9, !194 + v10 = const u64 1 + v11 = get_elem_ptr v7, __ptr u64, v10, !195 + store v5 to v11, !196 + v12 = asm(s: v7) -> __ptr slice s { + } + v13 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v13, v12 + v14 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v14, v13 + br encode_33_block2(v14), !174 + + encode_33_block1(): + v15 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !198 + v16 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 + v17 = call new_52(v16) + v18 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !201 + mem_copy_val v18, v15 + v19 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !202 + mem_copy_val v19, v16 + v20 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !204 + v21 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !206 + mem_copy_val v21, v20 + v22 = const u64 0, !207 + br encode_33_abi_encode_46_while(v22), !208 - encode_20_abi_encode_21_while(v11: u64): - v12 = const u64 2, !186 - v13 = cmp lt v11 v12, !189 - cbr v13, encode_20_abi_encode_21_while_body(), encode_20_abi_encode_21_end_while(), !190 + encode_33_abi_encode_46_while(v23: u64): + v24 = const u64 2, !209 + v25 = cmp lt v23 v24, !212 + cbr v25, encode_33_abi_encode_46_while_body(), encode_33_abi_encode_46_end_while(), !213 - encode_20_abi_encode_21_while_body(): - v14 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !192 - v15 = get_elem_ptr v14, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v11, !194 - v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !196 - v17 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !199 - mem_copy_val v17, v15 - v18 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !200 - mem_copy_val v18, v16 - v19 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !202 - v20 = const u64 0 - v21 = get_elem_ptr v19, __ptr { string<3> }, v20, !204 - v22 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !206 - v23 = get_local __ptr { string<3> }, self_000, !209 - mem_copy_val v23, v21 - v24 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !210 - mem_copy_val v24, v22 - v25 = get_local __ptr { string<3> }, self_000, !212 - v26 = const u64 0 - v27 = get_elem_ptr v25, __ptr string<3>, v26, !214 - v28 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !216 - v29 = get_local __ptr string<3>, self_0000, !219 + encode_33_abi_encode_46_while_body(): + v26 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !215 + v27 = get_elem_ptr v26, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v23, !217 + v28 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !219 + v29 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !222 mem_copy_val v29, v27 - v30 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !220 + v30 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !223 mem_copy_val v30, v28 - v31 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !222 + v31 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !225 v32 = const u64 0 - v33 = get_elem_ptr v31, __ptr { ptr, u64, u64 }, v32, !224 - v34 = asm(buffer: v33) -> __ptr { ptr, u64, u64 } buffer { + v33 = get_elem_ptr v31, __ptr { string<3> }, v32, !227 + v34 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !229 + v35 = get_local __ptr { string<3> }, self_000, !232 + mem_copy_val v35, v33 + v36 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !233 + mem_copy_val v36, v34 + v37 = get_local __ptr { string<3> }, self_000, !235 + v38 = const u64 0 + v39 = get_elem_ptr v37, __ptr string<3>, v38, !237 + v40 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !239 + v41 = get_local __ptr string<3>, self_0000, !242 + mem_copy_val v41, v39 + v42 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !243 + mem_copy_val v42, v40 + v43 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !245 + v44 = const u64 0 + v45 = get_elem_ptr v43, __ptr { ptr, u64, u64 }, v44, !247 + v46 = asm(buffer: v45) -> __ptr { ptr, u64, u64 } buffer { } - v35 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v35, v34 - v36 = get_local __ptr { ptr, u64, u64 }, __anon_000, !225 - mem_copy_val v36, v35 - v37 = const u64 0 - v38 = get_elem_ptr v36, __ptr ptr, v37, !226 - v39 = load v38, !227 - v40 = const u64 1 - v41 = get_elem_ptr v36, __ptr u64, v40, !228 - v42 = load v41, !229 - v43 = const u64 2 - v44 = get_elem_ptr v36, __ptr u64, v43, !230 - v45 = load v44, !231 - v46 = get_local __ptr string<3>, self_0000, !233 - v47 = const u64 3 - v48 = add v45, v47, !234 - v49 = cmp gt v48 v42, !235 - cbr v49, encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block1(), encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v39, v42), !236 + v47 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v47, v46 + v48 = get_local __ptr { ptr, u64, u64 }, __anon_000, !248 + mem_copy_val v48, v47 + v49 = const u64 0 + v50 = get_elem_ptr v48, __ptr ptr, v49, !249 + v51 = load v50, !250 + v52 = const u64 1 + v53 = get_elem_ptr v48, __ptr u64, v52, !251 + v54 = load v53, !252 + v55 = const u64 2 + v56 = get_elem_ptr v48, __ptr u64, v55, !253 + v57 = load v56, !254 + v58 = get_local __ptr string<3>, self_0000, !256 + v59 = const u64 3 + v60 = add v57, v59, !257 + v61 = cmp gt v60 v54, !258 + cbr v61, encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(), encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v51, v54), !259 - encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v50: ptr, v51: u64): - v52 = get_local __ptr string<3>, __anon_10, !237 - mem_copy_val v52, v46 - v53 = add v50, v45, !238 - v54 = cast_ptr v53 to __ptr u8, !239 - mem_copy_bytes v54, v52, 3, !240 - v55 = get_local __ptr { ptr, u64, u64 }, __anon_20, !241 - v56 = const u64 0 - v57 = get_elem_ptr v55, __ptr ptr, v56, !242 - store v50 to v57, !243 - v58 = const u64 1 - v59 = get_elem_ptr v55, __ptr u64, v58, !244 - store v51 to v59, !245 - v60 = const u64 2 - v61 = get_elem_ptr v55, __ptr u64, v60, !246 - store v48 to v61, !247 - v62 = asm(buffer: v55) -> __ptr { ptr, u64, u64 } buffer { + encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v62: ptr, v63: u64): + v64 = get_local __ptr string<3>, __anon_10, !260 + mem_copy_val v64, v58 + v65 = add v62, v57, !261 + v66 = cast_ptr v65 to __ptr u8, !262 + mem_copy_bytes v66, v64, 3, !263 + v67 = get_local __ptr { ptr, u64, u64 }, __anon_20, !264 + v68 = const u64 0 + v69 = get_elem_ptr v67, __ptr ptr, v68, !265 + store v62 to v69, !266 + v70 = const u64 1 + v71 = get_elem_ptr v67, __ptr u64, v70, !267 + store v63 to v71, !268 + v72 = const u64 2 + v73 = get_elem_ptr v67, __ptr u64, v72, !269 + store v60 to v73, !270 + v74 = asm(buffer: v67) -> __ptr { ptr, u64, u64 } buffer { } - v63 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v63, v62 - v64 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !249 - v65 = const u64 0 - v66 = get_elem_ptr v64, __ptr { ptr, u64, u64 }, v65, !250 - mem_copy_val v66, v63 - v67 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !252 - mem_copy_val v67, v64 - v68 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !254 - v69 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !256 - mem_copy_val v69, v68 - v70 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !258 - v71 = const u64 1 - v72 = get_elem_ptr v70, __ptr { u64, ( u64 | u64 ) }, v71, !260 - v73 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !262 - v74 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !265 - mem_copy_val v74, v72 - v75 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !266 - mem_copy_val v75, v73 - v76 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !268 - v77 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !270 - mem_copy_val v77, v76 - v78 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !271 - v79 = const u64 0 - v80 = get_elem_ptr v78, __ptr u64, v79, !272 - v81 = load v80, !273 - v82 = const u64 0, !267 - v83 = cmp eq v81 v82, !276 - cbr v83, encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block0(), encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block1(), !277 + v75 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v75, v74 + v76 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !272 + v77 = const u64 0 + v78 = get_elem_ptr v76, __ptr { ptr, u64, u64 }, v77, !273 + mem_copy_val v78, v75 + v79 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !275 + mem_copy_val v79, v76 + v80 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !277 + v81 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !279 + mem_copy_val v81, v80 + v82 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !281 + v83 = const u64 1 + v84 = get_elem_ptr v82, __ptr { u64, ( u64 | u64 ) }, v83, !283 + v85 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !285 + v86 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !288 + mem_copy_val v86, v84 + v87 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !289 + mem_copy_val v87, v85 + v88 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !291 + v89 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !293 + mem_copy_val v89, v88 + v90 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !294 + v91 = const u64 0 + v92 = get_elem_ptr v90, __ptr u64, v91, !295 + v93 = load v92, !296 + v94 = const u64 0, !290 + v95 = cmp eq v93 v94, !299 + cbr v95, encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(), encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(), !300 - encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block1(): - v84 = const u64 2 - v85 = mul v42, v84, !278 - v86 = add v85, v47, !279 - v87 = asm(new_cap: v86, old_ptr: v39, len: v45) -> __ptr u8 hp, !280 { + encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(): + v96 = const u64 2 + v97 = mul v54, v96, !301 + v98 = add v97, v59, !302 + v99 = asm(new_cap: v98, old_ptr: v51, len: v57) -> __ptr u8 hp, !303 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v87, v86), !281 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v99, v98), !304 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block0(): - v88 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !282 - v89 = const u64 1 - v90 = const u64 0 - v91 = get_elem_ptr v88, __ptr u64, v89, v90, !283 - v92 = load v91, !284 - v93 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !286 - v94 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg - mem_copy_val v94, v93 - v95 = get_local __ptr { { ptr, u64, u64 } }, __ret_val - v96 = const u64 0, !287 - v97 = call abi_encode_26(v96, v94, v95) - v98 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !289 - mem_copy_val v98, v95 - v99 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !291 - v100 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 - mem_copy_val v100, v99 - v101 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 - v102 = call abi_encode_26(v92, v100, v101) - v103 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !293 - mem_copy_val v103, v101 - v104 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !295 - v105 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v105, v104 - br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v105), !296 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(): + v100 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !305 + v101 = const u64 1 + v102 = const u64 0 + v103 = get_elem_ptr v100, __ptr u64, v101, v102, !306 + v104 = load v103, !307 + v105 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !309 + v106 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v106, v105 + v107 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v108 = const u64 0, !310 + v109 = call abi_encode_51(v108, v106, v107) + v110 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !312 + mem_copy_val v110, v107 + v111 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !314 + v112 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v112, v111 + v113 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v114 = call abi_encode_51(v104, v112, v113) + v115 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !316 + mem_copy_val v115, v113 + v116 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !318 + v117 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v117, v116 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v117), !319 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block1(): - v106 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !297 - v107 = const u64 0 - v108 = get_elem_ptr v106, __ptr u64, v107, !298 - v109 = load v108, !299 - v110 = const u64 1, !267 - v111 = cmp eq v109 v110, !302 - cbr v111, encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block2(), encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block3(), !303 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(): + v118 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !320 + v119 = const u64 0 + v120 = get_elem_ptr v118, __ptr u64, v119, !321 + v121 = load v120, !322 + v122 = const u64 1, !290 + v123 = cmp eq v121 v122, !325 + cbr v123, encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(), encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(), !326 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block2(): - v112 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !304 - v113 = const u64 1 - v114 = const u64 1 - v115 = get_elem_ptr v112, __ptr u64, v113, v114, !305 - v116 = load v115, !306 - v117 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !308 - v118 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 - mem_copy_val v118, v117 - v119 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v120 = const u64 1, !309 - v121 = call abi_encode_26(v120, v118, v119) - v122 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !311 - mem_copy_val v122, v119 - v123 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !313 - v124 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 - mem_copy_val v124, v123 - v125 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 - v126 = call abi_encode_26(v116, v124, v125) - v127 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !315 - mem_copy_val v127, v125 - v128 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !317 - v129 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v129, v128 - br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v129), !318 - - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block3(): - v130 = const u64 14757395258967588866, !269 - revert v130, !319 - - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v131: __ptr { { ptr, u64, u64 } }): - v132 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !321 - mem_copy_val v132, v131 - v133 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !323 - v134 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !325 - mem_copy_val v134, v133 - v135 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !327 - v136 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !329 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(): + v124 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !327 + v125 = const u64 1 + v126 = const u64 1 + v127 = get_elem_ptr v124, __ptr u64, v125, v126, !328 + v128 = load v127, !329 + v129 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !331 + v130 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v130, v129 + v131 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v132 = const u64 1, !332 + v133 = call abi_encode_51(v132, v130, v131) + v134 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !334 + mem_copy_val v134, v131 + v135 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !336 + v136 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 mem_copy_val v136, v135 - v137 = const u64 1, !330 - v138 = add v11, v137, !333 - br encode_20_abi_encode_21_while(v138), !334 + v137 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v138 = call abi_encode_51(v128, v136, v137) + v139 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !338 + mem_copy_val v139, v137 + v140 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !340 + v141 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v141, v140 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v141), !341 - encode_20_abi_encode_21_end_while(): - v139 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !336 - v140 = get_local __ptr { { ptr, u64, u64 } }, buffer, !338 - mem_copy_val v140, v139 - v141 = get_local __ptr { { ptr, u64, u64 } }, buffer, !340 - v142 = get_local __ptr { { ptr, u64, u64 } }, self_3, !343 - mem_copy_val v142, v141 - v143 = get_local __ptr { { ptr, u64, u64 } }, self_3, !345 - v144 = const u64 0 - v145 = get_elem_ptr v143, __ptr { ptr, u64, u64 }, v144, !346 - v146 = asm(buffer: v145) -> __ptr { ptr, u64, u64 } buffer { - } - v147 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v147, v146 - v148 = get_local __ptr { ptr, u64, u64 }, __anon_01, !347 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(): + v142 = const u64 14757395258967588866, !292 + revert v142, !342 + + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v143: __ptr { { ptr, u64, u64 } }): + v144 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !344 + mem_copy_val v144, v143 + v145 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !346 + v146 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !348 + mem_copy_val v146, v145 + v147 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !350 + v148 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !352 mem_copy_val v148, v147 - v149 = const u64 0 - v150 = get_elem_ptr v148, __ptr ptr, v149, !348 - v151 = const u64 2 - v152 = get_elem_ptr v148, __ptr u64, v151, !349 - v153 = get_local __ptr { ptr, u64 }, __anon_100, !350 - v154 = const u64 0 - v155 = get_elem_ptr v153, __ptr ptr, v154, !351 - mem_copy_val v155, v150 - v156 = const u64 1 - v157 = get_elem_ptr v153, __ptr u64, v156, !352 - mem_copy_val v157, v152 - v158 = asm(s: v153) -> __ptr slice s { + v149 = const u64 1, !353 + v150 = add v23, v149, !356 + br encode_33_abi_encode_46_while(v150), !357 + + encode_33_abi_encode_46_end_while(): + v151 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !359 + v152 = get_local __ptr { { ptr, u64, u64 } }, buffer, !361 + mem_copy_val v152, v151 + v153 = get_local __ptr { { ptr, u64, u64 } }, buffer, !363 + v154 = get_local __ptr { { ptr, u64, u64 } }, self_3, !366 + mem_copy_val v154, v153 + v155 = get_local __ptr { { ptr, u64, u64 } }, self_3, !368 + v156 = const u64 0 + v157 = get_elem_ptr v155, __ptr { ptr, u64, u64 }, v156, !369 + v158 = asm(buffer: v157) -> __ptr { ptr, u64, u64 } buffer { } - v159 = get_local __ptr slice, __aggr_memcpy_02 + v159 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 mem_copy_val v159, v158 - v160 = get_local __ptr slice, __log_arg + v160 = get_local __ptr { ptr, u64, u64 }, __anon_01, !370 mem_copy_val v160, v159 - v161 = const u64 3647243719605075626 - log __ptr slice v160, v161 - v162 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !353 - v163 = const u64 0, !354 - v164 = get_elem_ptr v162, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v163, !355 - v165 = const u64 0 - v166 = get_elem_ptr v164, __ptr { string<3> }, v165, !356 - v167 = const u64 0 - v168 = get_elem_ptr v166, __ptr string<3>, v167, !213 - v169 = get_global __ptr string<3>, __const_global - v170 = cast_ptr v169 to ptr, !357 - v171 = get_local __ptr { ptr, u64 }, __anon_0, !357 - v172 = const u64 0 - v173 = get_elem_ptr v171, __ptr ptr, v172 - store v170 to v173, !357 - v174 = const u64 1 - v175 = get_elem_ptr v171, __ptr u64, v174 - v176 = const u64 3 - store v176 to v175, !357 - v177 = get_local __ptr slice, __anon_1, !357 - mem_copy_bytes v177, v171, 16 - v178 = get_local __ptr string<3>, __tmp_arg3 - mem_copy_val v178, v168 - v179 = get_local __ptr slice, __tmp_arg4 - mem_copy_val v179, v177 - v180 = call eq_str_3_32(v178, v179) - v181 = const bool false, !359 - v182 = cmp eq v180 v181, !365 - cbr v182, assert_29_block0(), assert_29_block1(), !366 + v161 = const u64 0 + v162 = get_elem_ptr v160, __ptr ptr, v161, !371 + v163 = const u64 2 + v164 = get_elem_ptr v160, __ptr u64, v163, !372 + v165 = get_local __ptr { ptr, u64 }, __anon_100, !373 + v166 = const u64 0 + v167 = get_elem_ptr v165, __ptr ptr, v166, !374 + mem_copy_val v167, v162 + v168 = const u64 1 + v169 = get_elem_ptr v165, __ptr u64, v168, !375 + mem_copy_val v169, v164 + v170 = asm(s: v165) -> __ptr slice s { + } + v171 = get_local __ptr slice, __aggr_memcpy_03 + mem_copy_val v171, v170 + v172 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v172, v171 + br encode_33_block2(v172), !174 - assert_29_block0(): - v183 = const u64 18446744073709486084 - revert v183, !371 + encode_33_block2(v173: __ptr slice): + v174 = get_local __ptr slice, __log_arg + mem_copy_val v174, v173 + v175 = const u64 3647243719605075626 + log __ptr slice v174, v175 + v176 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !376 + v177 = const u64 0, !377 + v178 = get_elem_ptr v176, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v177, !378 + v179 = const u64 0 + v180 = get_elem_ptr v178, __ptr { string<3> }, v179, !379 + v181 = const u64 0 + v182 = get_elem_ptr v180, __ptr string<3>, v181, !236 + v183 = get_global __ptr string<3>, __const_global + v184 = cast_ptr v183 to ptr, !380 + v185 = get_local __ptr { ptr, u64 }, __anon_0, !380 + v186 = const u64 0 + v187 = get_elem_ptr v185, __ptr ptr, v186 + store v184 to v187, !380 + v188 = const u64 1 + v189 = get_elem_ptr v185, __ptr u64, v188 + v190 = const u64 3 + store v190 to v189, !380 + v191 = get_local __ptr slice, __anon_1, !380 + mem_copy_bytes v191, v185, 16 + v192 = get_local __ptr string<3>, __tmp_arg3 + mem_copy_val v192, v182 + v193 = get_local __ptr slice, __tmp_arg4 + mem_copy_val v193, v191 + v194 = call eq_str_3_57(v192, v193) + v195 = const bool false, !382 + v196 = cmp eq v194 v195, !388 + cbr v196, assert_54_block0(), assert_54_block1(), !389 - assert_29_block1(): - v184 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !372 - v185 = const u64 0, !373 - v186 = get_elem_ptr v184, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v185, !374 - v187 = const u64 1 - v188 = get_elem_ptr v186, __ptr { u64, ( u64 | u64 ) }, v187, !375 - v189 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !376 - mem_copy_val v189, v188 - v190 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 - v191 = const u64 0 - v192 = get_elem_ptr v190, __ptr u64, v191, !377 - v193 = load v192 - v194 = const u64 0, !377 - v195 = cmp eq v193 v194, !380 - cbr v195, block0(), block1(), !378 + assert_54_block0(): + v197 = const u64 18446744073709486084 + revert v197, !394 + + assert_54_block1(): + v198 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !395 + v199 = const u64 0, !396 + v200 = get_elem_ptr v198, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v199, !397 + v201 = const u64 1 + v202 = get_elem_ptr v200, __ptr { u64, ( u64 | u64 ) }, v201, !398 + v203 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !399 + mem_copy_val v203, v202 + v204 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !400 + v205 = const u64 0 + v206 = get_elem_ptr v204, __ptr u64, v205, !400 + v207 = load v206 + v208 = const u64 0, !400 + v209 = cmp eq v207 v208, !403 + cbr v209, block0(), block1(), !401 block0(): - v196 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 - v197 = const u64 1 - v198 = const u64 0 - v199 = get_elem_ptr v196, __ptr u64, v197, v198 - v200 = load v199 - v201 = const u64 1338, !381 - v202 = cmp eq v200 v201, !384 - v203 = cmp eq v202 v181, !387 - cbr v203, assert_29_block015(), assert_29_block116(), !388 + v210 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !400 + v211 = const u64 1 + v212 = const u64 0 + v213 = get_elem_ptr v210, __ptr u64, v211, v212 + v214 = load v213 + v215 = const u64 1338, !404 + v216 = cmp eq v214 v215, !407 + v217 = cmp eq v216 v195, !410 + cbr v217, assert_54_block015(), assert_54_block116(), !411 - assert_29_block015(): - revert v183, !389 + assert_54_block015(): + revert v197, !412 - assert_29_block116(): - v204 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !390 - v205 = const u64 1, !391 - v206 = get_elem_ptr v204, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v205, !392 - v207 = const u64 0 - v208 = get_elem_ptr v206, __ptr { string<3> }, v207, !393 - v209 = const u64 0 - v210 = get_elem_ptr v208, __ptr string<3>, v209, !213 - v211 = get_global __ptr string<3>, __const_global0 - v212 = cast_ptr v211 to ptr, !394 - v213 = get_local __ptr { ptr, u64 }, __anon_2, !394 - v214 = const u64 0 - v215 = get_elem_ptr v213, __ptr ptr, v214 - store v212 to v215, !394 - v216 = const u64 1 - v217 = get_elem_ptr v213, __ptr u64, v216 - v218 = const u64 3 - store v218 to v217, !394 - v219 = get_local __ptr slice, __anon_3, !394 - mem_copy_bytes v219, v213, 16 - v220 = get_local __ptr string<3>, __tmp_arg5 - mem_copy_val v220, v210 - v221 = get_local __ptr slice, __tmp_arg6 - mem_copy_val v221, v219 - v222 = call eq_str_3_32(v220, v221) - v223 = cmp eq v222 v181, !397 - cbr v223, assert_29_block018(), assert_29_block119(), !398 + assert_54_block116(): + v218 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !413 + v219 = const u64 1, !414 + v220 = get_elem_ptr v218, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v219, !415 + v221 = const u64 0 + v222 = get_elem_ptr v220, __ptr { string<3> }, v221, !416 + v223 = const u64 0 + v224 = get_elem_ptr v222, __ptr string<3>, v223, !236 + v225 = get_global __ptr string<3>, __const_global0 + v226 = cast_ptr v225 to ptr, !417 + v227 = get_local __ptr { ptr, u64 }, __anon_2, !417 + v228 = const u64 0 + v229 = get_elem_ptr v227, __ptr ptr, v228 + store v226 to v229, !417 + v230 = const u64 1 + v231 = get_elem_ptr v227, __ptr u64, v230 + v232 = const u64 3 + store v232 to v231, !417 + v233 = get_local __ptr slice, __anon_3, !417 + mem_copy_bytes v233, v227, 16 + v234 = get_local __ptr string<3>, __tmp_arg5 + mem_copy_val v234, v224 + v235 = get_local __ptr slice, __tmp_arg6 + mem_copy_val v235, v233 + v236 = call eq_str_3_57(v234, v235) + v237 = cmp eq v236 v195, !420 + cbr v237, assert_54_block018(), assert_54_block119(), !421 - assert_29_block018(): - revert v183, !399 + assert_54_block018(): + revert v197, !422 - assert_29_block119(): - v224 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !400 - v225 = const u64 1, !401 - v226 = get_elem_ptr v224, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v225, !402 - v227 = const u64 1 - v228 = get_elem_ptr v226, __ptr { u64, ( u64 | u64 ) }, v227, !403 - v229 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !404 - mem_copy_val v229, v228 - v230 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 - v231 = const u64 0 - v232 = get_elem_ptr v230, __ptr u64, v231, !405 - v233 = load v232 - v234 = const u64 1, !405 - v235 = cmp eq v233 v234, !408 - cbr v235, block3(), block4(), !406 + assert_54_block119(): + v238 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !423 + v239 = const u64 1, !424 + v240 = get_elem_ptr v238, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v239, !425 + v241 = const u64 1 + v242 = get_elem_ptr v240, __ptr { u64, ( u64 | u64 ) }, v241, !426 + v243 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !427 + mem_copy_val v243, v242 + v244 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !428 + v245 = const u64 0 + v246 = get_elem_ptr v244, __ptr u64, v245, !428 + v247 = load v246 + v248 = const u64 1, !428 + v249 = cmp eq v247 v248, !431 + cbr v249, block3(), block4(), !429 block1(): - v236 = const u64 1, !409 - revert v236, !412 + v250 = const u64 1, !432 + revert v250, !435 block3(): - v237 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 - v238 = const u64 1 - v239 = const u64 1 - v240 = get_elem_ptr v237, __ptr u64, v238, v239 - v241 = load v240 - v242 = const u64 1, !413 - v243 = cmp eq v241 v242, !416 - v244 = cmp eq v243 v181, !419 - cbr v244, assert_29_block021(), assert_29_block122(), !420 + v251 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !428 + v252 = const u64 1 + v253 = const u64 1 + v254 = get_elem_ptr v251, __ptr u64, v252, v253 + v255 = load v254 + v256 = const u64 1, !436 + v257 = cmp eq v255 v256, !439 + v258 = cmp eq v257 v195, !442 + cbr v258, assert_54_block021(), assert_54_block122(), !443 - assert_29_block021(): - revert v183, !421 + assert_54_block021(): + revert v197, !444 - assert_29_block122(): - v245 = get_local __ptr { u64 }, __anon_4, !422 - v246 = const u64 0 - v247 = get_elem_ptr v245, __ptr u64, v246 - v248 = const u64 1, !423 - store v248 to v247, !422 - mem_copy_val __ret_value, v245 - v249 = const unit () - ret () v249 + assert_54_block122(): + v259 = get_local __ptr { u64 }, __anon_4, !445 + v260 = const u64 0 + v261 = get_elem_ptr v259, __ptr u64, v260 + v262 = const u64 1, !446 + store v262 to v261, !445 + mem_copy_val __ret_value, v259 + v263 = const unit () + ret () v263 block4(): - v250 = const u64 2, !424 - revert v250, !427 + v264 = const u64 2, !447 + revert v264, !450 } - pub fn abi_encode_26(self !428: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !431 { + pub fn abi_encode_51(self !451: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !454 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local { ptr, u64, u64 } __anon_0 @@ -687,9 +722,9 @@ script { entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ mem_copy_val v0, buffer - v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !432 + v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !455 v2 = const u64 0 - v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !223 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !246 v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { } v5 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 @@ -728,7 +763,7 @@ script { } v31 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 mem_copy_val v31, v30 - v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !433 + v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !456 v33 = const u64 0 v34 = get_elem_ptr v32, __ptr { ptr, u64, u64 }, v33 mem_copy_val v34, v31 @@ -747,7 +782,7 @@ script { br block0(v39, v38) } - pub fn new_27(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !436 { + pub fn new_52(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !459 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local { ptr, u64, u64 } __anon_0 local { { ptr, u64, u64 } } __anon_1 @@ -772,7 +807,7 @@ script { } v11 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v11, v10 - v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !437 + v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !460 v13 = const u64 0 v14 = get_elem_ptr v12, __ptr { ptr, u64, u64 }, v13 mem_copy_val v14, v11 @@ -781,7 +816,7 @@ script { ret () v15 } - fn eq_str_3_32(a: __ptr string<3>, b: __ptr slice) -> bool, !440 { + fn eq_str_3_57(a: __ptr string<3>, b: __ptr slice) -> bool, !463 { local { ptr, u64 } __tuple_1_ local string<3> a_ local slice self_ @@ -789,9 +824,9 @@ script { entry(a: __ptr string<3>, b: __ptr slice): v0 = get_local __ptr string<3>, a_ mem_copy_val v0, a - v1 = get_local __ptr slice, self_, !443 + v1 = get_local __ptr slice, self_, !466 mem_copy_val v1, b - v2 = get_local __ptr slice, self_, !446 + v2 = get_local __ptr slice, self_, !469 v3 = asm(s: v2) -> __ptr { ptr, u64 } s { } v4 = const u64 0 @@ -800,481 +835,504 @@ script { v7 = const u64 1 v8 = get_elem_ptr v3, __ptr u64, v7 v9 = load v8 - v10 = get_local __ptr { ptr, u64 }, __tuple_1_, !448 + v10 = get_local __ptr { ptr, u64 }, __tuple_1_, !471 v11 = const u64 0 v12 = get_elem_ptr v10, __ptr ptr, v11 store v6 to v12 v13 = const u64 1 v14 = get_elem_ptr v10, __ptr u64, v13 store v9 to v14 - v15 = get_local __ptr { ptr, u64 }, __tuple_1_, !449 + v15 = get_local __ptr { ptr, u64 }, __tuple_1_, !472 v16 = const u64 0 - v17 = get_elem_ptr v15, __ptr ptr, v16, !450 - v18 = load v17, !443 - v19 = get_local __ptr string<3>, a_, !451 - v20 = const u64 3, !452 - v21 = asm(a: v19, b: v18, len: v20, r) -> bool r, !453 { - meq r a b len, !454 + v17 = get_elem_ptr v15, __ptr ptr, v16, !473 + v18 = load v17, !466 + v19 = get_local __ptr string<3>, a_, !474 + v20 = const u64 3, !475 + v21 = asm(a: v19, b: v18, len: v20, r) -> bool r, !476 { + meq r a b len, !477 } ret bool v21 } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main..sw" -!1 = span !0 0 255 +!1 = span !0 0 256 !2 = fn_name_span !0 7 14 !3 = (!1 !2) !4 = "sway-lib-std/src/codec.sw" -!5 = span !4 1599 1600 +!5 = span !4 1542 1543 !6 = span !0 80 131 !7 = fn_call_path_span !0 80 98 -!8 = span !4 140379 140411 -!9 = fn_call_path_span !4 140379 140409 -!10 = span !4 1582 1606 +!8 = span !4 184944 184976 +!9 = fn_call_path_span !4 184944 184974 +!10 = span !4 1525 1549 !11 = (!6 !7 !8 !9 !10) !12 = (!6 !7 !8 !9 !10) -!13 = span !4 1691 1711 -!14 = (!6 !7 !8 !9 !13) -!15 = (!6 !7 !8 !9) -!16 = (!6 !7 !8 !9 !13) -!17 = span !4 140431 140437 -!18 = (!6 !7 !17) -!19 = span !4 140417 140438 -!20 = fn_call_path_span !4 140417 140430 -!21 = span !4 116142 116163 -!22 = fn_call_path_span !4 116142 116155 -!23 = span !4 91755 91765 -!24 = (!6 !7 !19 !20 !21 !22 !23) -!25 = span !4 91756 91761 -!26 = (!6 !7 !19 !20 !21 !22 !25) -!27 = (!6 !7 !19 !20 !21 !22) -!28 = (!6 !7 !19 !20 !21 !22) -!29 = span !4 91787 91788 -!30 = (!6 !7 !19 !20 !21 !22) -!31 = span !4 91808 91809 -!32 = span !4 91804 91809 -!33 = fn_call_path_span !4 91806 91807 -!34 = (!6 !7 !19 !20 !21 !22 !32 !33) -!35 = (!6 !7 !19 !20 !21 !22) -!36 = span !4 91824 91855 -!37 = (!6 !7 !19 !20 !21 !22 !36) -!38 = (!6 !7 !19 !20 !21 !22 !36) -!39 = span !4 91874 91875 -!40 = span !4 91869 91875 -!41 = fn_call_path_span !4 91871 91873 -!42 = (!6 !7 !19 !20 !21 !22 !40 !41) -!43 = (!6 !7 !19 !20 !21 !22) -!44 = span !4 91896 91901 -!45 = (!6 !7 !19 !20 !21 !22 !44) -!46 = span !4 116141 116166 -!47 = (!6 !7 !19 !20 !46) -!48 = (!6 !7 !19 !20 !46) -!49 = span !0 178 182 -!50 = span !0 183 184 -!51 = span !0 203 241 -!52 = fn_call_path_span !0 203 220 -!53 = span !4 71584 71588 -!54 = (!51 !52 !53) -!55 = span !4 71568 71595 -!56 = (!51 !52 !55) -!57 = span !4 3902 3906 -!58 = span !4 3877 3984 -!59 = fn_name_span !4 3884 3890 -!60 = (!58 !59) -!61 = span !4 3959 3978 -!62 = fn_call_path_span !4 3959 3972 -!63 = span !4 116318 116339 -!64 = fn_call_path_span !4 116318 116331 -!65 = span !0 214 239 -!66 = fn_call_path_span !0 221 227 -!67 = span !4 75296 75316 -!68 = fn_call_path_span !4 75303 75313 -!69 = span !4 625 637 -!70 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !69) -!71 = span !4 3190 3207 -!72 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) -!73 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) -!74 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) -!75 = span !4 75314 75315 -!76 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) -!77 = span !4 3169 3248 -!78 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !77) -!79 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) -!80 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) -!81 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) -!82 = span !4 3257 3300 -!83 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !82) -!84 = span !4 3310 3315 -!85 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !84) -!86 = span !4 75285 75317 -!87 = (!61 !62 !63 !64 !65 !66 !61 !62 !86) -!88 = span !4 75333 75337 -!89 = (!61 !62 !63 !64 !65 !66 !61 !62 !88) -!90 = span !4 75333 75343 -!91 = fn_call_path_span !4 75338 75341 -!92 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) -!93 = "sway-lib-std/src/raw_slice.sw" -!94 = span !93 2922 2926 -!95 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !94) -!96 = span !93 2911 2927 -!97 = fn_call_path_span !93 2911 2921 -!98 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !96 !97) -!99 = span !93 1633 1638 -!100 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !96 !97 !99) -!101 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) -!102 = span !93 2928 2929 -!103 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !102) -!104 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) -!105 = span !0 202 242 -!106 = (!61 !62 !63 !64 !105) -!107 = (!61 !62 !63 !64) -!108 = span !4 116341 116362 -!109 = fn_call_path_span !4 116341 116354 -!110 = span !0 224 246 -!111 = fn_call_path_span !0 231 237 -!112 = span !4 72721 72749 -!113 = fn_call_path_span !4 72728 72740 -!114 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) -!115 = span !4 2766 2847 -!116 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113 !115) -!117 = span !4 2804 2817 -!118 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) -!119 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) -!120 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) -!121 = span !4 2857 2896 -!122 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113 !121) -!123 = span !0 264 265 -!124 = span !0 264 313 -!125 = fn_call_path_span !0 264 313 -!126 = (!61 !62 !108 !109 !124 !125) -!127 = (!61 !62 !108 !109 !124) -!128 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main.sw" -!129 = span !128 204 260 -!130 = (!61 !62 !108 !109 !129) -!131 = (!61 !62 !108 !109 !129) -!132 = (!61 !62 !108 !109 !129) -!133 = span !0 289 311 -!134 = fn_call_path_span !0 296 302 -!135 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) -!136 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113 !115) -!137 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) -!138 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) -!139 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) -!140 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113 !121) -!141 = (!61 !62 !108 !109 !129) -!142 = (!61 !62 !108 !109 !129) -!143 = (!61 !62 !108 !109) -!144 = span !0 315 316 -!145 = span !0 315 364 -!146 = fn_call_path_span !0 315 364 -!147 = (!61 !62 !108 !109 !145 !146) -!148 = (!61 !62 !108 !109 !145) -!149 = (!61 !62 !108 !109 !129) -!150 = (!61 !62 !108 !109 !129) -!151 = (!61 !62 !108 !109 !129) -!152 = span !0 340 362 -!153 = fn_call_path_span !0 347 353 -!154 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) -!155 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113 !115) -!156 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) -!157 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) -!158 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) -!159 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113 !121) -!160 = (!61 !62 !108 !109 !129) -!161 = (!61 !62 !108 !109 !129) -!162 = (!61 !62 !108 !109) -!163 = span !0 381 382 -!164 = span !0 372 383 -!165 = (!61 !62 !108 !109 !164) -!166 = span !4 116317 116363 -!167 = (!61 !62 !166) -!168 = (!61 !62 !166) -!169 = (!61 !62 !166) -!170 = span !128 297 695 -!171 = fn_name_span !128 300 304 -!172 = (!170 !171) -!173 = span !128 360 363 -!174 = span !4 71274 71278 -!175 = (!173 !174) -!176 = span !4 71274 71304 -!177 = fn_call_path_span !4 71279 71289 -!178 = (!173 !176 !177) -!179 = (!173 !176 !177) -!180 = span !4 21706 21712 -!181 = (!173 !176 !177 !180) -!182 = span !4 21689 21713 -!183 = (!173 !176 !177 !182) -!184 = span !4 21734 21735 -!185 = (!173 !176 !177) -!186 = span !4 21755 21756 -!187 = span !4 21751 21756 -!188 = fn_call_path_span !4 21753 21754 -!189 = (!173 !176 !177 !187 !188) -!190 = (!173 !176 !177) -!191 = span !4 21780 21784 -!192 = (!173 !176 !177 !191) -!193 = span !4 21780 21787 -!194 = (!173 !176 !177 !193) -!195 = span !4 21799 21805 -!196 = (!173 !176 !177 !195) -!197 = span !4 21780 21806 -!198 = fn_call_path_span !4 21788 21798 -!199 = (!173 !176 !177 !197 !198) -!200 = (!173 !176 !177 !197 !198) -!201 = span !4 43044 43048 -!202 = (!173 !176 !177 !197 !198 !201) -!203 = span !4 43049 43050 -!204 = (!173 !176 !177 !197 !198 !203) -!205 = span !4 43062 43068 -!206 = (!173 !176 !177 !197 !198 !205) -!207 = span !4 43044 43069 -!208 = fn_call_path_span !4 43051 43061 -!209 = (!173 !176 !177 !197 !198 !207 !208) -!210 = (!173 !176 !177 !197 !198 !207 !208) -!211 = span !0 209 213 -!212 = (!173 !176 !177 !197 !198 !207 !208 !211) -!213 = span !128 282 293 -!214 = (!173 !176 !177 !197 !198 !207 !208 !213) -!215 = span !0 229 235 -!216 = (!173 !176 !177 !197 !198 !207 !208 !215) -!217 = span !0 209 236 -!218 = fn_call_path_span !0 218 228 -!219 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!220 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!221 = span !4 6657 6663 -!222 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !221) -!223 = span !4 87 114 -!224 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !223) -!225 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!226 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!227 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!228 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!229 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!230 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!231 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!232 = span !4 6672 6676 -!233 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !232) -!234 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!235 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!236 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!237 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!238 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!239 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!240 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!241 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!242 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!243 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!244 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!245 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!246 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!247 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!248 = span !4 6605 6688 -!249 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !248) -!250 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!251 = span !0 196 237 -!252 = (!173 !176 !177 !197 !198 !207 !208 !251) -!253 = span !0 259 265 -!254 = (!173 !176 !177 !197 !198 !207 !208 !253) -!255 = span !4 43031 43070 -!256 = (!173 !176 !177 !197 !198 !255) -!257 = span !4 43092 43096 -!258 = (!173 !176 !177 !197 !198 !257) -!259 = span !4 43097 43098 -!260 = (!173 !176 !177 !197 !198 !259) -!261 = span !4 43110 43116 -!262 = (!173 !176 !177 !197 !198 !261) -!263 = span !4 43092 43117 -!264 = fn_call_path_span !4 43099 43109 -!265 = (!173 !176 !177 !197 !198 !263 !264) -!266 = (!173 !176 !177 !197 !198 !263 !264) -!267 = span !0 218 222 -!268 = (!173 !176 !177 !197 !198 !263 !264 !267) -!269 = span !0 212 651 -!270 = (!173 !176 !177 !197 !198 !263 !264 !269) -!271 = (!173 !176 !177 !197 !198 !263 !264 !267) -!272 = (!173 !176 !177 !197 !198 !263 !264 !267) -!273 = (!173 !176 !177 !197 !198 !263 !264) -!274 = span !0 225 435 -!275 = fn_call_path_span !0 225 435 -!276 = (!173 !176 !177 !197 !198 !263 !264 !274 !275) -!277 = (!173 !176 !177 !197 !198 !263 !264 !274) -!278 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!279 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!280 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!281 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) -!282 = (!173 !176 !177 !197 !198 !263 !264 !267) -!283 = (!173 !176 !177 !197 !198 !263 !264) -!284 = (!173 !176 !177 !197 !198 !263 !264) -!285 = span !0 310 316 -!286 = (!173 !176 !177 !197 !198 !263 !264 !285) -!287 = span !0 294 298 -!288 = span !0 281 318 -!289 = (!173 !176 !177 !197 !198 !263 !264 !288) -!290 = span !0 373 379 -!291 = (!173 !176 !177 !197 !198 !263 !264 !290) -!292 = span !0 343 381 -!293 = (!173 !176 !177 !197 !198 !263 !264 !292) -!294 = span !0 406 412 -!295 = (!173 !176 !177 !197 !198 !263 !264 !294) -!296 = (!173 !176 !177 !197 !198 !263 !264) -!297 = (!173 !176 !177 !197 !198 !263 !264 !267) -!298 = (!173 !176 !177 !197 !198 !263 !264 !267) -!299 = (!173 !176 !177 !197 !198 !263 !264) -!300 = span !0 437 647 -!301 = fn_call_path_span !0 437 647 -!302 = (!173 !176 !177 !197 !198 !263 !264 !300 !301) -!303 = (!173 !176 !177 !197 !198 !263 !264 !300) -!304 = (!173 !176 !177 !197 !198 !263 !264 !267) -!305 = (!173 !176 !177 !197 !198 !263 !264) -!306 = (!173 !176 !177 !197 !198 !263 !264) -!307 = span !0 522 528 -!308 = (!173 !176 !177 !197 !198 !263 !264 !307) -!309 = span !0 506 510 -!310 = span !0 493 530 -!311 = (!173 !176 !177 !197 !198 !263 !264 !310) -!312 = span !0 585 591 -!313 = (!173 !176 !177 !197 !198 !263 !264 !312) -!314 = span !0 555 593 -!315 = (!173 !176 !177 !197 !198 !263 !264 !314) -!316 = span !0 618 624 -!317 = (!173 !176 !177 !197 !198 !263 !264 !316) -!318 = (!173 !176 !177 !197 !198 !263 !264) -!319 = (!173 !176 !177 !197 !198 !263 !264 !269) -!320 = span !0 199 652 -!321 = (!173 !176 !177 !197 !198 !263 !264 !320) -!322 = span !0 673 679 -!323 = (!173 !176 !177 !197 !198 !263 !264 !322) -!324 = span !4 43079 43118 -!325 = (!173 !176 !177 !197 !198 !324) -!326 = span !4 43127 43133 -!327 = (!173 !176 !177 !197 !198 !326) -!328 = span !4 21771 21806 -!329 = (!173 !176 !177 !328) -!330 = span !4 21825 21826 -!331 = span !4 21820 21826 -!332 = fn_call_path_span !4 21822 21824 -!333 = (!173 !176 !177 !331 !332) -!334 = (!173 !176 !177) -!335 = span !4 21847 21853 -!336 = (!173 !176 !177 !335) -!337 = span !4 71261 71305 -!338 = (!173 !337) -!339 = span !4 71314 71320 -!340 = (!173 !339) -!341 = span !4 71314 71335 -!342 = fn_call_path_span !4 71321 71333 -!343 = (!173 !341 !342) -!344 = span !4 573 577 -!345 = (!173 !341 !342 !344) -!346 = (!173 !341 !342 !223) -!347 = (!173 !341 !342) -!348 = (!173 !341 !342) -!349 = (!173 !341 !342) -!350 = (!173 !341 !342) -!351 = (!173 !341 !342) -!352 = (!173 !341 !342) -!353 = span !128 386 389 -!354 = span !128 390 391 -!355 = span !128 386 392 -!356 = span !128 393 394 -!357 = span !128 400 405 -!358 = "sway-lib-std/src/ops.sw" -!359 = span !358 12573 12578 -!360 = span !128 370 407 -!361 = fn_call_path_span !128 370 376 -!362 = "sway-lib-std/src/assert.sw" -!363 = span !362 1015 1025 -!364 = fn_call_path_span !362 1015 1016 -!365 = (!360 !361 !363 !364) -!366 = (!360 !361 !363) -!367 = span !362 1036 1064 -!368 = fn_call_path_span !362 1036 1042 -!369 = "sway-lib-std/src/revert.sw" -!370 = span !369 757 771 -!371 = (!360 !361 !367 !368 !370) -!372 = span !128 426 429 -!373 = span !128 430 431 -!374 = span !128 426 432 -!375 = span !128 433 434 -!376 = span !128 420 503 -!377 = span !128 426 434 -!378 = span !128 445 473 -!379 = fn_call_path_span !128 445 473 -!380 = (!378 !379) -!381 = span !128 507 511 -!382 = span !128 420 511 -!383 = fn_call_path_span !128 504 506 -!384 = (!382 !383) -!385 = span !128 413 512 -!386 = fn_call_path_span !128 413 419 -!387 = (!385 !386 !363 !364) -!388 = (!385 !386 !363) -!389 = (!385 !386 !367 !368 !370) -!390 = span !128 535 538 -!391 = span !128 539 540 -!392 = span !128 535 541 -!393 = span !128 542 543 -!394 = span !128 549 554 -!395 = span !128 519 556 -!396 = fn_call_path_span !128 519 525 -!397 = (!395 !396 !363 !364) -!398 = (!395 !396 !363) -!399 = (!395 !396 !367 !368 !370) -!400 = span !128 575 578 -!401 = span !128 579 580 -!402 = span !128 575 581 -!403 = span !128 582 583 -!404 = span !128 569 652 -!405 = span !128 575 583 -!406 = span !128 594 622 -!407 = fn_call_path_span !128 594 622 -!408 = (!406 !407) -!409 = span !128 494 495 -!410 = span !128 487 496 -!411 = fn_call_path_span !128 487 493 -!412 = (!410 !411 !370) -!413 = span !128 656 657 -!414 = span !128 569 657 -!415 = fn_call_path_span !128 653 655 -!416 = (!414 !415) -!417 = span !128 562 658 -!418 = fn_call_path_span !128 562 568 -!419 = (!417 !418 !363 !364) -!420 = (!417 !418 !363) -!421 = (!417 !418 !367 !368 !370) -!422 = span !128 665 693 -!423 = span !128 686 687 -!424 = span !128 643 644 -!425 = span !128 636 645 -!426 = fn_call_path_span !128 636 642 -!427 = (!425 !426 !370) -!428 = span !4 4732 4736 -!429 = span !4 4718 4863 -!430 = fn_name_span !4 4721 4731 +!13 = span !4 184919 184977 +!14 = fn_call_path_span !4 184919 184938 +!15 = span !4 184792 184812 +!16 = (!6 !7 !13 !14 !15) +!17 = (!6 !7 !13 !14) +!18 = (!6 !7 !13 !14 !15) +!19 = span !4 184836 184842 +!20 = (!6 !7 !13 !14 !19) +!21 = span !4 184822 184843 +!22 = fn_call_path_span !4 184822 184835 +!23 = span !4 147976 147997 +!24 = fn_call_path_span !4 147976 147989 +!25 = span !4 118683 118693 +!26 = (!6 !7 !13 !14 !21 !22 !23 !24 !25) +!27 = span !4 118684 118689 +!28 = (!6 !7 !13 !14 !21 !22 !23 !24 !27) +!29 = (!6 !7 !13 !14 !21 !22 !23 !24) +!30 = (!6 !7 !13 !14 !21 !22 !23 !24) +!31 = span !4 118715 118716 +!32 = (!6 !7 !13 !14 !21 !22 !23 !24) +!33 = span !4 118736 118737 +!34 = span !4 118732 118737 +!35 = fn_call_path_span !4 118734 118735 +!36 = (!6 !7 !13 !14 !21 !22 !23 !24 !34 !35) +!37 = (!6 !7 !13 !14 !21 !22 !23 !24) +!38 = span !4 118752 118783 +!39 = (!6 !7 !13 !14 !21 !22 !23 !24 !38) +!40 = (!6 !7 !13 !14 !21 !22 !23 !24 !38) +!41 = span !4 118802 118803 +!42 = span !4 118797 118803 +!43 = fn_call_path_span !4 118799 118801 +!44 = (!6 !7 !13 !14 !21 !22 !23 !24 !42 !43) +!45 = (!6 !7 !13 !14 !21 !22 !23 !24) +!46 = span !4 118824 118829 +!47 = (!6 !7 !13 !14 !21 !22 !23 !24 !46) +!48 = span !4 147975 148000 +!49 = (!6 !7 !13 !14 !21 !22 !48) +!50 = (!6 !7 !13 !14 !21 !22 !48) +!51 = span !0 178 182 +!52 = span !0 183 184 +!53 = span !0 234 241 +!54 = span !0 203 242 +!55 = fn_call_path_span !0 203 220 +!56 = span !4 93230 93256 +!57 = (!54 !55 !56) +!58 = span !4 3348 3352 +!59 = span !4 3323 3430 +!60 = fn_name_span !4 3330 3336 +!61 = (!59 !60) +!62 = span !4 3405 3424 +!63 = fn_call_path_span !4 3405 3418 +!64 = span !4 148317 148338 +!65 = fn_call_path_span !4 148317 148330 +!66 = span !0 404 429 +!67 = fn_call_path_span !0 411 417 +!68 = span !4 98462 98482 +!69 = fn_call_path_span !4 98469 98479 +!70 = span !4 625 641 +!71 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !70) +!72 = span !4 2636 2653 +!73 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !72) +!74 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !72) +!75 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !72) +!76 = span !4 98480 98481 +!77 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !72) +!78 = span !4 2615 2694 +!79 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !78) +!80 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69) +!81 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69) +!82 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69) +!83 = span !4 2703 2746 +!84 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !83) +!85 = span !4 2756 2761 +!86 = (!62 !63 !64 !65 !66 !67 !62 !63 !68 !69 !85) +!87 = span !4 98451 98483 +!88 = (!62 !63 !64 !65 !66 !67 !62 !63 !87) +!89 = span !4 98499 98503 +!90 = (!62 !63 !64 !65 !66 !67 !62 !63 !89) +!91 = span !4 98499 98509 +!92 = fn_call_path_span !4 98504 98507 +!93 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92) +!94 = "sway-lib-std/src/raw_slice.sw" +!95 = span !94 2922 2926 +!96 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92 !95) +!97 = span !94 2911 2927 +!98 = fn_call_path_span !94 2911 2921 +!99 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92 !97 !98) +!100 = span !94 1633 1638 +!101 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92 !97 !98 !100) +!102 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92) +!103 = span !94 2928 2929 +!104 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92 !103) +!105 = (!62 !63 !64 !65 !66 !67 !62 !63 !91 !92) +!106 = span !0 392 432 +!107 = (!62 !63 !64 !65 !106) +!108 = (!62 !63 !64 !65) +!109 = span !4 148340 148361 +!110 = fn_call_path_span !4 148340 148353 +!111 = span !0 329 351 +!112 = fn_call_path_span !0 336 342 +!113 = span !4 95201 95229 +!114 = fn_call_path_span !4 95208 95220 +!115 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114) +!116 = span !4 2212 2293 +!117 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114 !116) +!118 = span !4 2250 2263 +!119 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114) +!120 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114) +!121 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114) +!122 = span !4 2303 2342 +!123 = (!62 !63 !109 !110 !111 !112 !62 !63 !113 !114 !122) +!124 = span !0 369 370 +!125 = span !0 369 418 +!126 = fn_call_path_span !0 369 418 +!127 = (!62 !63 !109 !110 !125 !126) +!128 = (!62 !63 !109 !110 !125) +!129 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main.sw" +!130 = span !129 204 260 +!131 = (!62 !63 !109 !110 !130) +!132 = (!62 !63 !109 !110 !130) +!133 = (!62 !63 !109 !110 !130) +!134 = span !0 394 416 +!135 = fn_call_path_span !0 401 407 +!136 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114) +!137 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114 !116) +!138 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114) +!139 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114) +!140 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114) +!141 = (!62 !63 !109 !110 !134 !135 !62 !63 !113 !114 !122) +!142 = (!62 !63 !109 !110 !130) +!143 = (!62 !63 !109 !110 !130) +!144 = (!62 !63 !109 !110) +!145 = span !0 420 421 +!146 = span !0 420 469 +!147 = fn_call_path_span !0 420 469 +!148 = (!62 !63 !109 !110 !146 !147) +!149 = (!62 !63 !109 !110 !146) +!150 = (!62 !63 !109 !110 !130) +!151 = (!62 !63 !109 !110 !130) +!152 = (!62 !63 !109 !110 !130) +!153 = span !0 445 467 +!154 = fn_call_path_span !0 452 458 +!155 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114) +!156 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114 !116) +!157 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114) +!158 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114) +!159 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114) +!160 = (!62 !63 !109 !110 !153 !154 !62 !63 !113 !114 !122) +!161 = (!62 !63 !109 !110 !130) +!162 = (!62 !63 !109 !110 !130) +!163 = (!62 !63 !109 !110) +!164 = span !0 486 487 +!165 = span !0 477 488 +!166 = (!62 !63 !109 !110 !165) +!167 = span !4 148316 148362 +!168 = (!62 !63 !167) +!169 = (!62 !63 !167) +!170 = (!62 !63 !167) +!171 = span !129 297 695 +!172 = fn_name_span !129 300 304 +!173 = (!171 !172) +!174 = span !129 360 363 +!175 = span !4 92713 92737 +!176 = fn_call_path_span !4 92713 92730 +!177 = span !4 3576 3598 +!178 = fn_call_path_span !4 3576 3596 +!179 = span !4 25980 26004 +!180 = fn_call_path_span !4 25980 25997 +!181 = span !4 52304 52361 +!182 = fn_call_path_span !4 52331 52333 +!183 = (!174 !175 !176 !177 !178 !179 !180 !177 !178 !181 !182) +!184 = (!174 !175) +!185 = span !4 92817 92821 +!186 = (!174 !185) +!187 = span !4 92795 92910 +!188 = (!174 !187) +!189 = span !4 92837 92846 +!190 = span !4 92860 92875 +!191 = span !4 92927 92938 +!192 = (!174 !191) +!193 = (!174 !191) +!194 = (!174 !191) +!195 = (!174 !191) +!196 = (!174 !191) +!197 = span !4 93011 93015 +!198 = (!174 !197) +!199 = span !4 93011 93041 +!200 = fn_call_path_span !4 93016 93026 +!201 = (!174 !199 !200) +!202 = (!174 !199 !200) +!203 = span !4 26088 26094 +!204 = (!174 !199 !200 !203) +!205 = span !4 26071 26095 +!206 = (!174 !199 !200 !205) +!207 = span !4 26116 26117 +!208 = (!174 !199 !200) +!209 = span !4 26137 26138 +!210 = span !4 26133 26138 +!211 = fn_call_path_span !4 26135 26136 +!212 = (!174 !199 !200 !210 !211) +!213 = (!174 !199 !200) +!214 = span !4 26162 26166 +!215 = (!174 !199 !200 !214) +!216 = span !4 26162 26169 +!217 = (!174 !199 !200 !216) +!218 = span !4 26181 26187 +!219 = (!174 !199 !200 !218) +!220 = span !4 26162 26188 +!221 = fn_call_path_span !4 26170 26180 +!222 = (!174 !199 !200 !220 !221) +!223 = (!174 !199 !200 !220 !221) +!224 = span !4 52497 52501 +!225 = (!174 !199 !200 !220 !221 !224) +!226 = span !4 52502 52503 +!227 = (!174 !199 !200 !220 !221 !226) +!228 = span !4 52515 52521 +!229 = (!174 !199 !200 !220 !221 !228) +!230 = span !4 52497 52522 +!231 = fn_call_path_span !4 52504 52514 +!232 = (!174 !199 !200 !220 !221 !230 !231) +!233 = (!174 !199 !200 !220 !221 !230 !231) +!234 = span !0 399 403 +!235 = (!174 !199 !200 !220 !221 !230 !231 !234) +!236 = span !129 282 293 +!237 = (!174 !199 !200 !220 !221 !230 !231 !236) +!238 = span !0 419 425 +!239 = (!174 !199 !200 !220 !221 !230 !231 !238) +!240 = span !0 399 426 +!241 = fn_call_path_span !0 408 418 +!242 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!243 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!244 = span !4 7220 7226 +!245 = (!174 !199 !200 !220 !221 !230 !231 !240 !241 !244) +!246 = span !4 87 114 +!247 = (!174 !199 !200 !220 !221 !230 !231 !240 !241 !246) +!248 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!249 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!250 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!251 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!252 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!253 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!254 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!255 = span !4 7235 7239 +!256 = (!174 !199 !200 !220 !221 !230 !231 !240 !241 !255) +!257 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!258 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!259 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!260 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!261 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!262 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!263 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!264 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!265 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!266 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!267 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!268 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!269 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!270 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!271 = span !4 7168 7251 +!272 = (!174 !199 !200 !220 !221 !230 !231 !240 !241 !271) +!273 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!274 = span !0 386 427 +!275 = (!174 !199 !200 !220 !221 !230 !231 !274) +!276 = span !0 449 455 +!277 = (!174 !199 !200 !220 !221 !230 !231 !276) +!278 = span !4 52484 52523 +!279 = (!174 !199 !200 !220 !221 !278) +!280 = span !4 52545 52549 +!281 = (!174 !199 !200 !220 !221 !280) +!282 = span !4 52550 52551 +!283 = (!174 !199 !200 !220 !221 !282) +!284 = span !4 52563 52569 +!285 = (!174 !199 !200 !220 !221 !284) +!286 = span !4 52545 52570 +!287 = fn_call_path_span !4 52552 52562 +!288 = (!174 !199 !200 !220 !221 !286 !287) +!289 = (!174 !199 !200 !220 !221 !286 !287) +!290 = span !0 405 409 +!291 = (!174 !199 !200 !220 !221 !286 !287 !290) +!292 = span !0 399 838 +!293 = (!174 !199 !200 !220 !221 !286 !287 !292) +!294 = (!174 !199 !200 !220 !221 !286 !287 !290) +!295 = (!174 !199 !200 !220 !221 !286 !287 !290) +!296 = (!174 !199 !200 !220 !221 !286 !287) +!297 = span !0 412 622 +!298 = fn_call_path_span !0 412 622 +!299 = (!174 !199 !200 !220 !221 !286 !287 !297 !298) +!300 = (!174 !199 !200 !220 !221 !286 !287 !297) +!301 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!302 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!303 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!304 = (!174 !199 !200 !220 !221 !230 !231 !240 !241) +!305 = (!174 !199 !200 !220 !221 !286 !287 !290) +!306 = (!174 !199 !200 !220 !221 !286 !287) +!307 = (!174 !199 !200 !220 !221 !286 !287) +!308 = span !0 497 503 +!309 = (!174 !199 !200 !220 !221 !286 !287 !308) +!310 = span !0 481 485 +!311 = span !0 468 505 +!312 = (!174 !199 !200 !220 !221 !286 !287 !311) +!313 = span !0 560 566 +!314 = (!174 !199 !200 !220 !221 !286 !287 !313) +!315 = span !0 530 568 +!316 = (!174 !199 !200 !220 !221 !286 !287 !315) +!317 = span !0 593 599 +!318 = (!174 !199 !200 !220 !221 !286 !287 !317) +!319 = (!174 !199 !200 !220 !221 !286 !287) +!320 = (!174 !199 !200 !220 !221 !286 !287 !290) +!321 = (!174 !199 !200 !220 !221 !286 !287 !290) +!322 = (!174 !199 !200 !220 !221 !286 !287) +!323 = span !0 624 834 +!324 = fn_call_path_span !0 624 834 +!325 = (!174 !199 !200 !220 !221 !286 !287 !323 !324) +!326 = (!174 !199 !200 !220 !221 !286 !287 !323) +!327 = (!174 !199 !200 !220 !221 !286 !287 !290) +!328 = (!174 !199 !200 !220 !221 !286 !287) +!329 = (!174 !199 !200 !220 !221 !286 !287) +!330 = span !0 709 715 +!331 = (!174 !199 !200 !220 !221 !286 !287 !330) +!332 = span !0 693 697 +!333 = span !0 680 717 +!334 = (!174 !199 !200 !220 !221 !286 !287 !333) +!335 = span !0 772 778 +!336 = (!174 !199 !200 !220 !221 !286 !287 !335) +!337 = span !0 742 780 +!338 = (!174 !199 !200 !220 !221 !286 !287 !337) +!339 = span !0 805 811 +!340 = (!174 !199 !200 !220 !221 !286 !287 !339) +!341 = (!174 !199 !200 !220 !221 !286 !287) +!342 = (!174 !199 !200 !220 !221 !286 !287 !292) +!343 = span !0 386 839 +!344 = (!174 !199 !200 !220 !221 !286 !287 !343) +!345 = span !0 860 866 +!346 = (!174 !199 !200 !220 !221 !286 !287 !345) +!347 = span !4 52532 52571 +!348 = (!174 !199 !200 !220 !221 !347) +!349 = span !4 52580 52586 +!350 = (!174 !199 !200 !220 !221 !349) +!351 = span !4 26153 26188 +!352 = (!174 !199 !200 !351) +!353 = span !4 26207 26208 +!354 = span !4 26202 26208 +!355 = fn_call_path_span !4 26204 26206 +!356 = (!174 !199 !200 !354 !355) +!357 = (!174 !199 !200) +!358 = span !4 26229 26235 +!359 = (!174 !199 !200 !358) +!360 = span !4 92998 93042 +!361 = (!174 !360) +!362 = span !4 93051 93057 +!363 = (!174 !362) +!364 = span !4 93051 93072 +!365 = fn_call_path_span !4 93058 93070 +!366 = (!174 !364 !365) +!367 = span !4 573 577 +!368 = (!174 !364 !365 !367) +!369 = (!174 !364 !365 !246) +!370 = (!174 !364 !365) +!371 = (!174 !364 !365) +!372 = (!174 !364 !365) +!373 = (!174 !364 !365) +!374 = (!174 !364 !365) +!375 = (!174 !364 !365) +!376 = span !129 386 389 +!377 = span !129 390 391 +!378 = span !129 386 392 +!379 = span !129 393 394 +!380 = span !129 400 405 +!381 = "sway-lib-std/src/ops.sw" +!382 = span !381 12573 12578 +!383 = span !129 370 407 +!384 = fn_call_path_span !129 370 376 +!385 = "sway-lib-std/src/assert.sw" +!386 = span !385 1015 1025 +!387 = fn_call_path_span !385 1015 1016 +!388 = (!383 !384 !386 !387) +!389 = (!383 !384 !386) +!390 = span !385 1036 1064 +!391 = fn_call_path_span !385 1036 1042 +!392 = "sway-lib-std/src/revert.sw" +!393 = span !392 757 771 +!394 = (!383 !384 !390 !391 !393) +!395 = span !129 426 429 +!396 = span !129 430 431 +!397 = span !129 426 432 +!398 = span !129 433 434 +!399 = span !129 420 503 +!400 = span !129 426 434 +!401 = span !129 445 473 +!402 = fn_call_path_span !129 445 473 +!403 = (!401 !402) +!404 = span !129 507 511 +!405 = span !129 420 511 +!406 = fn_call_path_span !129 504 506 +!407 = (!405 !406) +!408 = span !129 413 512 +!409 = fn_call_path_span !129 413 419 +!410 = (!408 !409 !386 !387) +!411 = (!408 !409 !386) +!412 = (!408 !409 !390 !391 !393) +!413 = span !129 535 538 +!414 = span !129 539 540 +!415 = span !129 535 541 +!416 = span !129 542 543 +!417 = span !129 549 554 +!418 = span !129 519 556 +!419 = fn_call_path_span !129 519 525 +!420 = (!418 !419 !386 !387) +!421 = (!418 !419 !386) +!422 = (!418 !419 !390 !391 !393) +!423 = span !129 575 578 +!424 = span !129 579 580 +!425 = span !129 575 581 +!426 = span !129 582 583 +!427 = span !129 569 652 +!428 = span !129 575 583 +!429 = span !129 594 622 +!430 = fn_call_path_span !129 594 622 !431 = (!429 !430) -!432 = span !4 4826 4832 -!433 = span !4 4774 4857 -!434 = span !4 160 260 -!435 = fn_name_span !4 167 170 -!436 = (!434 !435) -!437 = span !4 191 254 -!438 = span !128 50 202 -!439 = fn_name_span !128 53 61 -!440 = (!438 !439) -!441 = span !128 107 117 -!442 = fn_call_path_span !128 109 115 -!443 = (!441 !442) -!444 = "sway-lib-std/src/str.sw" -!445 = span !444 153 157 -!446 = (!441 !442 !445) -!447 = span !444 131 201 -!448 = (!441 !442 !447) -!449 = (!441 !442 !447) -!450 = (!441 !442 !447) -!451 = span !128 130 131 -!452 = span !128 148 149 -!453 = span !128 123 200 -!454 = span !128 164 177 +!432 = span !129 494 495 +!433 = span !129 487 496 +!434 = fn_call_path_span !129 487 493 +!435 = (!433 !434 !393) +!436 = span !129 656 657 +!437 = span !129 569 657 +!438 = fn_call_path_span !129 653 655 +!439 = (!437 !438) +!440 = span !129 562 658 +!441 = fn_call_path_span !129 562 568 +!442 = (!440 !441 !386 !387) +!443 = (!440 !441 !386) +!444 = (!440 !441 !390 !391 !393) +!445 = span !129 665 693 +!446 = span !129 686 687 +!447 = span !129 643 644 +!448 = span !129 636 645 +!449 = fn_call_path_span !129 636 642 +!450 = (!448 !449 !393) +!451 = span !4 4642 4646 +!452 = span !4 4628 4773 +!453 = fn_name_span !4 4631 4641 +!454 = (!452 !453) +!455 = span !4 4736 4742 +!456 = span !4 4684 4767 +!457 = span !4 160 260 +!458 = fn_name_span !4 167 170 +!459 = (!457 !458) +!460 = span !4 191 254 +!461 = span !129 50 202 +!462 = fn_name_span !129 53 61 +!463 = (!461 !462) +!464 = span !129 107 117 +!465 = fn_call_path_span !129 109 115 +!466 = (!464 !465) +!467 = "sway-lib-std/src/str.sw" +!468 = span !467 153 157 +!469 = (!464 !465 !468) +!470 = span !467 131 201 +!471 = (!464 !465 !470) +!472 = (!464 !465 !470) +!473 = (!464 !465 !470) +!474 = span !129 130 131 +!475 = span !129 148 149 +!476 = span !129 123 200 +!477 = span !129 164 177 ;; ASM: Final program ;; Program kind: Script @@ -1291,14 +1349,14 @@ cfei i0 ; allocate stack space for globals move $$locbase $sp ; save locals base register for function __entry cfei i208 ; allocate 208 bytes for locals and 0 slots for call arguments gtf $r0 $zero i10 ; get transaction field -sw $$locbase $r0 i21 ; store word -addi $r3 $$locbase i168 ; get offset to local __ptr { ptr } -addi $r0 $$locbase i176 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +sw $$locbase $r0 i22 ; store word +addi $r3 $$locbase i176 ; get offset to local __ptr { ptr } +addi $r0 $$locbase i184 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } move $$arg0 $r3 ; [call]: pass argument 0 move $$arg1 $r0 ; [call]: pass argument 1 -jal $$reta $pc i38 ; [call]: call decode_4 -addi $r1 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r2 $$locbase i176 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +jal $$reta $pc i38 ; [call]: call decode_17 +addi $r1 $$locbase i128 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r2 $$locbase i184 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } movi $r0 i24 ; get array element size mul $r0 $zero $r0 ; get offset to array element add $r0 $r1 $r0 ; add array element offset to array base @@ -1311,23 +1369,23 @@ move $r2 $one ; move parameter from branch to block argument movi $r0 i2 ; initialize constant into register lt $r0 $r2 $r0 jnzf $r0 $zero i13 -addi $r0 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r1 $$locbase i72 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } +addi $r0 $$locbase i128 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i80 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } mcpi $r1 $r0 i48 ; copy memory -addi $r0 $$locbase i72 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } +addi $r0 $$locbase i80 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } addi $r1 $$locbase i24 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] mcpi $r1 $r0 i48 ; copy memory -addi $r0 $$locbase i200 ; get offset to local __ptr { u64 } +addi $r0 $$locbase i72 ; get offset to local __ptr { u64 } move $$arg0 $r1 ; [call]: pass argument 0 move $$arg1 $r0 ; [call]: pass argument 1 -jal $$reta $pc i95 ; [call]: call main_19 -addi $r0 $$locbase i200 ; get offset to local __ptr { u64 } +jal $$reta $pc i95 ; [call]: call main_32 +addi $r0 $$locbase i72 ; get offset to local __ptr { u64 } movi $r1 i8 ; initialize constant into register retd $r0 $r1 move $$arg0 $r3 ; [call]: pass argument 0 move $$arg1 $$locbase ; [call]: pass argument 1 -jal $$reta $pc i8 ; [call]: call decode_4 -addi $r0 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +jal $$reta $pc i8 ; [call]: call decode_17 +addi $r0 $$locbase i128 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] movi $r1 i24 ; get array element size mul $r1 $r2 $r1 ; get offset to array element add $r1 $r0 $r1 ; add array element offset to array base @@ -1336,7 +1394,7 @@ add $r2 $r2 $one jmpb $zero i24 pshl i255 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function decode_4 +move $$locbase $sp ; save locals base register for function decode_17 cfei i216 ; allocate 216 bytes for locals and 0 slots for call arguments move $r7 $$arg0 ; save argument 0 (self) move $r6 $$arg1 ; save argument 1 (__ret_value) @@ -1417,166 +1475,80 @@ popl i255 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i511 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function main_19 -cfei i1216 ; allocate 1216 bytes for locals and 0 slots for call arguments +move $$locbase $sp ; save locals base register for function main_32 +cfei i1264 ; allocate 1264 bytes for locals and 0 slots for call arguments move $r4 $$arg1 ; save argument 1 (__ret_value) move $r3 $$reta ; save return address -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] mcpi $r0 $$arg0 i48 ; copy memory -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r1 $$locbase i992 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] mcpi $r1 $r0 i48 ; copy memory -addi $r0 $$locbase i992 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r1 $$locbase i440 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i472 ; get offset to local __ptr { { ptr, u64, u64 } } move $$arg0 $r1 ; [call]: pass argument 0 -jal $$reta $pc i306 ; [call]: call new_27 -addi $r2 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +jal $$reta $pc i310 ; [call]: call new_52 +addi $r2 $$locbase i1192 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] mcpi $r2 $r0 i48 ; copy memory -addi $r0 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory move $r8 $zero ; move parameter from branch to block argument movi $r0 i2 ; initialize constant into register lt $r0 $r8 $r0 -jnzf $r0 $zero i110 -addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i632 ; get offset to local __ptr { { ptr, u64, u64 } } +jnzf $r0 $zero i21 +addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i632 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i1192 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i1240 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i1192 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } +addi $r0 $$locbase i1240 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i64 ; get offset to local __ptr { ptr, u64, u64 } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i128 ; get offset to local __ptr { ptr, u64, u64 } +addi $r0 $$locbase i160 ; get offset to local __ptr { ptr, u64, u64 } mcpi $r0 $r1 i24 ; copy memory addi $r1 $r0 i16 ; get offset to aggregate element -addi $r2 $$locbase i176 ; get offset to local __ptr { ptr, u64 } +addi $r2 $$locbase i208 ; get offset to local __ptr { ptr, u64 } mcpi $r2 $r0 i8 ; copy memory addi $r0 $r2 i8 ; get offset to aggregate element mcpi $r0 $r1 i8 ; copy memory -addi $r0 $$locbase i72 ; get offset to local __ptr slice -mcpi $r0 $r2 i16 ; copy memory -addi $r1 $$locbase i280 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -load $r0 data_NonConfigurable_0; load constant from data section -lw $r1 $$locbase i35 ; load slice pointer for logging data -lw $r2 $$locbase i36 ; load slice size for logging data -logd $zero $r0 $r1 $r2 ; log slice -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -movi $r1 i24 ; get array element size -mul $r1 $zero $r1 ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -addr $r0 data_NonConfigurable_1; get __const_global's address in data section -addi $r2 $$locbase i88 ; get offset to local __ptr { ptr, u64 } -sw $$locbase $r0 i11 ; store word -movi $r0 i3 ; initialize constant into register -sw $$locbase $r0 i12 ; store word -addi $r0 $$locbase i152 ; get offset to local __ptr slice -mcpi $r0 $r2 i16 ; copy memory -addi $r2 $$locbase i560 ; get offset to local __ptr string<3> -mcpi $r2 $r1 i8 ; copy memory -addi $r1 $$locbase i568 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -move $$arg0 $r2 ; [call]: pass argument 0 -move $$arg1 $r1 ; [call]: pass argument 1 -jal $$reta $pc i274 ; [call]: call eq_str_3_32 -eq $r0 $$retv $zero -jnzf $r0 $zero i63 -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -movi $r1 i24 ; get array element size -mul $r1 $zero $r1 ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -addi $r0 $r1 i8 ; get offset to aggregate element -addi $r1 $$locbase i296 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i37 ; load word -eq $r0 $r0 $zero -jnzf $r0 $zero i1 -rvrt $one -lw $r0 $$locbase i38 ; load word -movi $r1 i1338 ; initialize constant into register -eq $r0 $r0 $r1 -eq $r0 $r0 $zero -jnzf $r0 $zero i45 -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -movi $r1 i24 ; get array element size -mul $r1 $one $r1 ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -addr $r0 data_NonConfigurable_2; get __const_global0's address in data section -addi $r2 $$locbase i192 ; get offset to local __ptr { ptr, u64 } -sw $$locbase $r0 i24 ; store word -movi $r0 i3 ; initialize constant into register -sw $$locbase $r0 i25 ; store word -addi $r0 $$locbase i232 ; get offset to local __ptr slice +addi $r0 $$locbase i88 ; get offset to local __ptr slice mcpi $r0 $r2 i16 ; copy memory -addi $r2 $$locbase i584 ; get offset to local __ptr string<3> -mcpi $r2 $r1 i8 ; copy memory -addi $r1 $$locbase i592 ; get offset to local __ptr slice +addi $r1 $$locbase i664 ; get offset to local __ptr slice mcpi $r1 $r0 i16 ; copy memory -move $$arg0 $r2 ; [call]: pass argument 0 -move $$arg1 $r1 ; [call]: pass argument 1 -jal $$reta $pc i237 ; [call]: call eq_str_3_32 -eq $r0 $$retv $zero -jnzf $r0 $zero i22 -addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -movi $r1 i24 ; get array element size -mul $r1 $one $r1 ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -addi $r0 $r1 i8 ; get offset to aggregate element -addi $r1 $$locbase i328 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i41 ; load word -eq $r0 $r0 $one -jnzf $r0 $zero i2 -movi $r0 i2 ; initialize constant into register -rvrt $r0 -lw $r0 $$locbase i42 ; load word -eq $r0 $r0 $one -eq $r0 $r0 $zero -jnzf $r0 $zero i4 -addi $r0 $$locbase i272 ; get offset to local __ptr { u64 } -sw $$locbase $one i34 ; store word -mcpi $r4 $r0 i8 ; copy memory -jmpf $zero i143 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +jmpf $zero i136 +addi $r0 $$locbase i1192 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] movi $r1 i24 ; get array element size mul $r1 $r8 $r1 ; get offset to array element add $r1 $r0 $r1 ; add array element offset to array base -addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } addi $r2 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory addi $r0 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } -addi $r1 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } addi $r2 $$locbase i1136 ; get offset to local __ptr { string<3> } mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory addi $r0 $$locbase i1136 ; get offset to local __ptr { string<3> } -addi $r1 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } addi $r2 $$locbase i1144 ; get offset to local __ptr string<3> mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i16 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i136 ; get offset to local __ptr { ptr, u64, u64 } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $$locbase $r0 i24 ; copy memory -addi $r0 $$locbase i104 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r0 $$locbase i24 ; copy memory -lw $r0 $$locbase i13 ; load word -lw $r7 $$locbase i14 ; load word -lw $r1 $$locbase i15 ; load word +lw $r0 $$locbase i17 ; load word +lw $r7 $$locbase i18 ; load word +lw $r1 $$locbase i19 ; load word addi $r2 $$locbase i1144 ; get offset to local __ptr string<3> movi $r5 i3 ; initialize constant into register add $r5 $r1 $r5 @@ -1590,108 +1562,198 @@ add $r7 $r6 $r7 aloc $r7 mcp $hp $r0 $r1 move $r0 $hp ; move parameter from branch to block argument -addi $r6 $$locbase i168 ; get offset to local __ptr string<3> +addi $r6 $$locbase i200 ; get offset to local __ptr string<3> mcpi $r6 $r2 i8 ; copy memory add $r1 $r0 $r1 mcpi $r1 $r6 i3 ; copy memory -addi $r1 $$locbase i208 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $r0 i26 ; store word -sw $$locbase $r7 i27 ; store word -sw $$locbase $r5 i28 ; store word -addi $r0 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } +addi $r1 $$locbase i240 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $r0 i30 ; store word +sw $$locbase $r7 i31 ; store word +sw $$locbase $r5 i32 ; store word +addi $r0 $$locbase i40 ; get offset to local __ptr { ptr, u64, u64 } mcpi $r0 $r1 i24 ; copy memory -addi $r1 $$locbase i248 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i280 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory addi $r0 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } addi $r0 $r0 i8 ; get offset to aggregate element -addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } addi $r2 $$locbase i1176 ; get offset to local __ptr { u64, ( u64 | u64 ) } mcpi $r2 $r0 i16 ; copy memory -addi $r0 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory addi $r0 $$locbase i1176 ; get offset to local __ptr { u64, ( u64 | u64 ) } -addi $r1 $$locbase i312 ; get offset to local __ptr { u64, ( u64 | u64 ) } +addi $r1 $$locbase i344 ; get offset to local __ptr { u64, ( u64 | u64 ) } mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i39 ; load word +lw $r0 $$locbase i43 ; load word eq $r0 $r0 $zero jnzf $r0 $zero i30 -lw $r0 $$locbase i39 ; load word +lw $r0 $$locbase i43 ; load word eq $r0 $r0 $one jnzf $r0 $zero i2 -load $r0 data_NonConfigurable_4; load constant from data section +load $r0 data_NonConfigurable_0; load constant from data section rvrt $r0 -lw $r0 $$locbase i40 ; load word -addi $r1 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i512 ; get offset to local __ptr { { ptr, u64, u64 } } +lw $r0 $$locbase i44 ; load word +addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i544 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i392 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i424 ; get offset to local __ptr { { ptr, u64, u64 } } move $$arg0 $one ; [call]: pass argument 0 move $$arg1 $r2 ; [call]: pass argument 1 move $$arg2 $r1 ; [call]: pass argument 2 -jal $$reta $pc i56 ; [call]: call abi_encode_26 -addi $r2 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } +jal $$reta $pc i148 ; [call]: call abi_encode_51 +addi $r2 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i536 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i568 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i416 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i448 ; get offset to local __ptr { { ptr, u64, u64 } } move $$arg0 $r0 ; [call]: pass argument 0 move $$arg1 $r2 ; [call]: pass argument 1 move $$arg2 $r1 ; [call]: pass argument 2 -jal $$reta $pc i46 ; [call]: call abi_encode_26 -addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } +jal $$reta $pc i138 ; [call]: call abi_encode_51 +addi $r0 $$locbase i992 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i608 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i992 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i640 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory jmpf $zero i24 -lw $r0 $$locbase i40 ; load word -addi $r1 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i464 ; get offset to local __ptr { { ptr, u64, u64 } } +lw $r0 $$locbase i44 ; load word +addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i496 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i344 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i376 ; get offset to local __ptr { { ptr, u64, u64 } } move $$arg0 $zero ; [call]: pass argument 0 move $$arg1 $r2 ; [call]: pass argument 1 move $$arg2 $r1 ; [call]: pass argument 2 -jal $$reta $pc i31 ; [call]: call abi_encode_26 -addi $r2 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } +jal $$reta $pc i123 ; [call]: call abi_encode_51 +addi $r2 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i488 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i520 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i368 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i400 ; get offset to local __ptr { { ptr, u64, u64 } } move $$arg0 $r0 ; [call]: pass argument 0 move $$arg1 $r2 ; [call]: pass argument 1 move $$arg2 $r1 ; [call]: pass argument 2 -jal $$reta $pc i21 ; [call]: call abi_encode_26 -addi $r0 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } +jal $$reta $pc i113 ; [call]: call abi_encode_51 +addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i608 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i640 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i1016 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i1016 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r0 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } mcpi $r1 $r0 i24 ; copy memory add $r8 $r8 $one -jmpb $zero i246 -cfsi i1216 ; free 1216 bytes for locals and 0 slots for extra call arguments +jmpb $zero i158 +addi $r0 $$locbase i312 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +load $r0 data_NonConfigurable_1; load constant from data section +lw $r1 $$locbase i39 ; load slice pointer for logging data +lw $r2 $$locbase i40 ; load slice size for logging data +logd $zero $r0 $r1 $r2 ; log slice +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $zero $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addr $r0 data_NonConfigurable_2; get __const_global's address in data section +addi $r2 $$locbase i104 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r0 i13 ; store word +movi $r0 i3 ; initialize constant into register +sw $$locbase $r0 i14 ; store word +addi $r0 $$locbase i184 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r2 $$locbase i592 ; get offset to local __ptr string<3> +mcpi $r2 $r1 i8 ; copy memory +addi $r1 $$locbase i600 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +move $$arg0 $r2 ; [call]: pass argument 0 +move $$arg1 $r1 ; [call]: pass argument 1 +jal $$reta $pc i139 ; [call]: call eq_str_3_57 +eq $r0 $$retv $zero +jnzf $r0 $zero i63 +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $zero $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $r1 i8 ; get offset to aggregate element +addi $r1 $$locbase i328 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i41 ; load word +eq $r0 $r0 $zero +jnzf $r0 $zero i1 +rvrt $one +lw $r0 $$locbase i42 ; load word +movi $r1 i1338 ; initialize constant into register +eq $r0 $r0 $r1 +eq $r0 $r0 $zero +jnzf $r0 $zero i45 +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $one $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addr $r0 data_NonConfigurable_3; get __const_global0's address in data section +addi $r2 $$locbase i224 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r0 i28 ; store word +movi $r0 i3 ; initialize constant into register +sw $$locbase $r0 i29 ; store word +addi $r0 $$locbase i264 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r2 $$locbase i616 ; get offset to local __ptr string<3> +mcpi $r2 $r1 i8 ; copy memory +addi $r1 $$locbase i624 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +move $$arg0 $r2 ; [call]: pass argument 0 +move $$arg1 $r1 ; [call]: pass argument 1 +jal $$reta $pc i102 ; [call]: call eq_str_3_57 +eq $r0 $$retv $zero +jnzf $r0 $zero i22 +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $one $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $r1 i8 ; get offset to aggregate element +addi $r1 $$locbase i360 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i45 ; load word +eq $r0 $r0 $one +jnzf $r0 $zero i2 +movi $r0 i2 ; initialize constant into register +rvrt $r0 +lw $r0 $$locbase i46 ; load word +eq $r0 $r0 $one +eq $r0 $r0 $zero +jnzf $r0 $zero i4 +addi $r0 $$locbase i304 ; get offset to local __ptr { u64 } +sw $$locbase $one i38 ; store word +mcpi $r4 $r0 i8 ; copy memory +jmpf $zero i8 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +cfsi i1264 ; free 1264 bytes for locals and 0 slots for extra call arguments move $$reta $r3 ; restore return address poph i524288 ; restore registers 40..64 popl i511 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i255 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function abi_encode_26 +move $$locbase $sp ; save locals base register for function abi_encode_51 cfei i144 ; allocate 144 bytes for locals and 0 slots for call arguments move $r0 $$arg0 ; save argument 0 (self) move $r1 $$arg2 ; save argument 2 (__ret_value) @@ -1735,7 +1797,7 @@ popl i255 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function new_27 +move $$locbase $sp ; save locals base register for function new_52 cfei i72 ; allocate 72 bytes for locals and 0 slots for call arguments move $r0 $$arg0 ; save argument 0 (__ret_value) move $r1 $$reta ; save return address @@ -1757,7 +1819,7 @@ popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function eq_str_3_32 +move $$locbase $sp ; save locals base register for function eq_str_3_57 cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments move $r0 $$arg1 ; save argument 1 (b) move $r1 $$reta ; save return address @@ -1780,32 +1842,32 @@ poph i524288 ; restore registers 40..64 popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call .data: -data_NonConfigurable_0 .word 3647243719605075626 -data_NonConfigurable_1 .bytes[3] 73 65 74 set -data_NonConfigurable_2 .bytes[3] 61 64 64 add -data_NonConfigurable_3 .word 18446744073709486084 -data_NonConfigurable_4 .word 14757395258967588866 +data_NonConfigurable_0 .word 14757395258967588866 +data_NonConfigurable_1 .word 3647243719605075626 +data_NonConfigurable_2 .bytes[3] 73 65 74 set +data_NonConfigurable_3 .bytes[3] 61 64 64 add +data_NonConfigurable_4 .word 18446744073709486084 ;; --- START OF TARGET BYTECODE --- 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 7, 216] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 7, 232] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] 0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] 0x00000024 CFEI 0xd0 ;; [145, 0, 0, 208] 0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] -0x0000002c SW R59 $writable 0x15 ;; [95, 237, 0, 21] -0x00000030 ADDI R19 R59 0xa8 ;; [80, 79, 176, 168] -0x00000034 ADDI $writable R59 0xb0 ;; [80, 67, 176, 176] +0x0000002c SW R59 $writable 0x16 ;; [95, 237, 0, 22] +0x00000030 ADDI R19 R59 0xb0 ;; [80, 79, 176, 176] +0x00000034 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] 0x00000038 MOVE R58 R19 ;; [26, 233, 48, 0] 0x0000003c MOVE R57 $writable ;; [26, 229, 0, 0] 0x00000040 JAL R62 $pc 0x26 ;; [153, 248, 48, 38] -0x00000044 ADDI R17 R59 0x78 ;; [80, 71, 176, 120] -0x00000048 ADDI R18 R59 0xb0 ;; [80, 75, 176, 176] +0x00000044 ADDI R17 R59 0x80 ;; [80, 71, 176, 128] +0x00000048 ADDI R18 R59 0xb8 ;; [80, 75, 176, 184] 0x0000004c MOVI $writable 0x18 ;; [114, 64, 0, 24] 0x00000050 MUL $writable $zero $writable ;; [27, 64, 4, 0] 0x00000054 ADD $writable R17 $writable ;; [16, 65, 20, 0] @@ -1818,23 +1880,23 @@ data_NonConfigurable_4 .word 14757395258967588866 0x00000070 MOVI $writable 0x2 ;; [114, 64, 0, 2] 0x00000074 LT $writable R18 $writable ;; [22, 65, 36, 0] 0x00000078 JNZF $writable $zero 0xd ;; [118, 64, 0, 13] -0x0000007c ADDI $writable R59 0x78 ;; [80, 67, 176, 120] -0x00000080 ADDI R17 R59 0x48 ;; [80, 71, 176, 72] +0x0000007c ADDI $writable R59 0x80 ;; [80, 67, 176, 128] +0x00000080 ADDI R17 R59 0x50 ;; [80, 71, 176, 80] 0x00000084 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] -0x00000088 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x00000088 ADDI $writable R59 0x50 ;; [80, 67, 176, 80] 0x0000008c ADDI R17 R59 0x18 ;; [80, 71, 176, 24] 0x00000090 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] -0x00000094 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] +0x00000094 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] 0x00000098 MOVE R58 R17 ;; [26, 233, 16, 0] 0x0000009c MOVE R57 $writable ;; [26, 229, 0, 0] 0x000000a0 JAL R62 $pc 0x5f ;; [153, 248, 48, 95] -0x000000a4 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] +0x000000a4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] 0x000000a8 MOVI R17 0x8 ;; [114, 68, 0, 8] 0x000000ac RETD $writable R17 ;; [37, 65, 16, 0] 0x000000b0 MOVE R58 R19 ;; [26, 233, 48, 0] 0x000000b4 MOVE R57 R59 ;; [26, 231, 176, 0] 0x000000b8 JAL R62 $pc 0x8 ;; [153, 248, 48, 8] -0x000000bc ADDI $writable R59 0x78 ;; [80, 67, 176, 120] +0x000000bc ADDI $writable R59 0x80 ;; [80, 67, 176, 128] 0x000000c0 MOVI R17 0x18 ;; [114, 68, 0, 24] 0x000000c4 MUL R17 R18 R17 ;; [27, 69, 36, 64] 0x000000c8 ADD R17 $writable R17 ;; [16, 69, 4, 64] @@ -1925,376 +1987,380 @@ data_NonConfigurable_4 .word 14757395258967588866 0x0000021c PSHL 0x1ff ;; [149, 0, 1, 255] 0x00000220 PSHH 0x80000 ;; [150, 8, 0, 0] 0x00000224 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000228 CFEI 0x4c0 ;; [145, 0, 4, 192] +0x00000228 CFEI 0x4f0 ;; [145, 0, 4, 240] 0x0000022c MOVE R20 R57 ;; [26, 83, 144, 0] 0x00000230 MOVE R19 R62 ;; [26, 79, 224, 0] -0x00000234 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x00000234 ADDI $writable R59 0x440 ;; [80, 67, 180, 64] 0x00000238 MCPI $writable R58 0x30 ;; [96, 67, 160, 48] -0x0000023c ADDI $writable R59 0x410 ;; [80, 67, 180, 16] -0x00000240 ADDI R17 R59 0x3e0 ;; [80, 71, 179, 224] +0x0000023c ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x00000240 ADDI R17 R59 0x410 ;; [80, 71, 180, 16] 0x00000244 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] -0x00000248 ADDI $writable R59 0x3e0 ;; [80, 67, 179, 224] -0x0000024c ADDI R17 R59 0x1b8 ;; [80, 71, 177, 184] +0x00000248 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x0000024c ADDI R17 R59 0x1d8 ;; [80, 71, 177, 216] 0x00000250 MOVE R58 R17 ;; [26, 233, 16, 0] -0x00000254 JAL R62 $pc 0x132 ;; [153, 248, 49, 50] -0x00000258 ADDI R18 R59 0x440 ;; [80, 75, 180, 64] +0x00000254 JAL R62 $pc 0x136 ;; [153, 248, 49, 54] +0x00000258 ADDI R18 R59 0x4a8 ;; [80, 75, 180, 168] 0x0000025c MCPI R18 $writable 0x30 ;; [96, 73, 0, 48] -0x00000260 ADDI $writable R59 0x290 ;; [80, 67, 178, 144] +0x00000260 ADDI $writable R59 0x2c0 ;; [80, 67, 178, 192] 0x00000264 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000268 ADDI $writable R59 0x290 ;; [80, 67, 178, 144] -0x0000026c ADDI R17 R59 0x308 ;; [80, 71, 179, 8] +0x00000268 ADDI $writable R59 0x2c0 ;; [80, 67, 178, 192] +0x0000026c ADDI R17 R59 0x338 ;; [80, 71, 179, 56] 0x00000270 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] 0x00000274 MOVE R24 $zero ;; [26, 96, 0, 0] 0x00000278 MOVI $writable 0x2 ;; [114, 64, 0, 2] 0x0000027c LT $writable R24 $writable ;; [22, 65, 132, 0] -0x00000280 JNZF $writable $zero 0x6e ;; [118, 64, 0, 110] -0x00000284 ADDI $writable R59 0x308 ;; [80, 67, 179, 8] -0x00000288 ADDI R17 R59 0x278 ;; [80, 71, 178, 120] +0x00000280 JNZF $writable $zero 0x15 ;; [118, 64, 0, 21] +0x00000284 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] +0x00000288 ADDI R17 R59 0x2a8 ;; [80, 71, 178, 168] 0x0000028c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000290 ADDI $writable R59 0x278 ;; [80, 67, 178, 120] -0x00000294 ADDI R17 R59 0x4a8 ;; [80, 71, 180, 168] +0x00000290 ADDI $writable R59 0x2a8 ;; [80, 67, 178, 168] +0x00000294 ADDI R17 R59 0x4d8 ;; [80, 71, 180, 216] 0x00000298 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x0000029c ADDI $writable R59 0x4a8 ;; [80, 67, 180, 168] -0x000002a0 ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x0000029c ADDI $writable R59 0x4d8 ;; [80, 67, 180, 216] +0x000002a0 ADDI R17 R59 0x40 ;; [80, 71, 176, 64] 0x000002a4 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x000002a8 ADDI $writable R59 0x80 ;; [80, 67, 176, 128] +0x000002a8 ADDI $writable R59 0xa0 ;; [80, 67, 176, 160] 0x000002ac MCPI $writable R17 0x18 ;; [96, 65, 16, 24] 0x000002b0 ADDI R17 $writable 0x10 ;; [80, 69, 0, 16] -0x000002b4 ADDI R18 R59 0xb0 ;; [80, 75, 176, 176] +0x000002b4 ADDI R18 R59 0xd0 ;; [80, 75, 176, 208] 0x000002b8 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] 0x000002bc ADDI $writable R18 0x8 ;; [80, 65, 32, 8] 0x000002c0 MCPI $writable R17 0x8 ;; [96, 65, 16, 8] -0x000002c4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x000002c4 ADDI $writable R59 0x58 ;; [80, 67, 176, 88] 0x000002c8 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] -0x000002cc ADDI R17 R59 0x118 ;; [80, 71, 177, 24] +0x000002cc ADDI R17 R59 0x298 ;; [80, 71, 178, 152] 0x000002d0 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000002d4 LW $writable R63 0x0 ;; [93, 67, 240, 0] -0x000002d8 LW R17 R59 0x23 ;; [93, 71, 176, 35] -0x000002dc LW R18 R59 0x24 ;; [93, 75, 176, 36] -0x000002e0 LOGD $zero $writable R17 R18 ;; [52, 1, 4, 82] -0x000002e4 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] -0x000002e8 MOVI R17 0x18 ;; [114, 68, 0, 24] -0x000002ec MUL R17 $zero R17 ;; [27, 68, 4, 64] -0x000002f0 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x000002f4 MOVI $writable 0x8 ;; [114, 64, 0, 8] -0x000002f8 ADD $writable $writable R63 ;; [16, 65, 15, 192] -0x000002fc ADDI R18 R59 0x58 ;; [80, 75, 176, 88] -0x00000300 SW R59 $writable 0xb ;; [95, 237, 0, 11] -0x00000304 MOVI $writable 0x3 ;; [114, 64, 0, 3] -0x00000308 SW R59 $writable 0xc ;; [95, 237, 0, 12] -0x0000030c ADDI $writable R59 0x98 ;; [80, 67, 176, 152] -0x00000310 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] -0x00000314 ADDI R18 R59 0x230 ;; [80, 75, 178, 48] -0x00000318 MCPI R18 R17 0x8 ;; [96, 73, 16, 8] -0x0000031c ADDI R17 R59 0x238 ;; [80, 71, 178, 56] -0x00000320 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x00000324 MOVE R58 R18 ;; [26, 233, 32, 0] -0x00000328 MOVE R57 R17 ;; [26, 229, 16, 0] -0x0000032c JAL R62 $pc 0x112 ;; [153, 248, 49, 18] -0x00000330 EQ $writable R61 $zero ;; [19, 67, 208, 0] -0x00000334 JNZF $writable $zero 0x3f ;; [118, 64, 0, 63] -0x00000338 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] -0x0000033c MOVI R17 0x18 ;; [114, 68, 0, 24] -0x00000340 MUL R17 $zero R17 ;; [27, 68, 4, 64] -0x00000344 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x00000348 ADDI $writable R17 0x8 ;; [80, 65, 16, 8] -0x0000034c ADDI R17 R59 0x128 ;; [80, 71, 177, 40] -0x00000350 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x00000354 LW $writable R59 0x25 ;; [93, 67, 176, 37] -0x00000358 EQ $writable $writable $zero ;; [19, 65, 0, 0] -0x0000035c JNZF $writable $zero 0x1 ;; [118, 64, 0, 1] -0x00000360 RVRT $one ;; [54, 4, 0, 0] -0x00000364 LW $writable R59 0x26 ;; [93, 67, 176, 38] -0x00000368 MOVI R17 0x53a ;; [114, 68, 5, 58] -0x0000036c EQ $writable $writable R17 ;; [19, 65, 4, 64] -0x00000370 EQ $writable $writable $zero ;; [19, 65, 0, 0] -0x00000374 JNZF $writable $zero 0x2d ;; [118, 64, 0, 45] -0x00000378 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] -0x0000037c MOVI R17 0x18 ;; [114, 68, 0, 24] -0x00000380 MUL R17 $one R17 ;; [27, 68, 20, 64] -0x00000384 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x00000388 MOVI $writable 0x10 ;; [114, 64, 0, 16] -0x0000038c ADD $writable $writable R63 ;; [16, 65, 15, 192] -0x00000390 ADDI R18 R59 0xc0 ;; [80, 75, 176, 192] -0x00000394 SW R59 $writable 0x18 ;; [95, 237, 0, 24] -0x00000398 MOVI $writable 0x3 ;; [114, 64, 0, 3] -0x0000039c SW R59 $writable 0x19 ;; [95, 237, 0, 25] -0x000003a0 ADDI $writable R59 0xe8 ;; [80, 67, 176, 232] -0x000003a4 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] -0x000003a8 ADDI R18 R59 0x248 ;; [80, 75, 178, 72] -0x000003ac MCPI R18 R17 0x8 ;; [96, 73, 16, 8] -0x000003b0 ADDI R17 R59 0x250 ;; [80, 71, 178, 80] -0x000003b4 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000003b8 MOVE R58 R18 ;; [26, 233, 32, 0] -0x000003bc MOVE R57 R17 ;; [26, 229, 16, 0] -0x000003c0 JAL R62 $pc 0xed ;; [153, 248, 48, 237] -0x000003c4 EQ $writable R61 $zero ;; [19, 67, 208, 0] -0x000003c8 JNZF $writable $zero 0x16 ;; [118, 64, 0, 22] -0x000003cc ADDI $writable R59 0x410 ;; [80, 67, 180, 16] -0x000003d0 MOVI R17 0x18 ;; [114, 68, 0, 24] -0x000003d4 MUL R17 $one R17 ;; [27, 68, 20, 64] -0x000003d8 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x000003dc ADDI $writable R17 0x8 ;; [80, 65, 16, 8] -0x000003e0 ADDI R17 R59 0x148 ;; [80, 71, 177, 72] -0x000003e4 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000003e8 LW $writable R59 0x29 ;; [93, 67, 176, 41] -0x000003ec EQ $writable $writable $one ;; [19, 65, 0, 64] -0x000003f0 JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] -0x000003f4 MOVI $writable 0x2 ;; [114, 64, 0, 2] -0x000003f8 RVRT $writable ;; [54, 64, 0, 0] -0x000003fc LW $writable R59 0x2a ;; [93, 67, 176, 42] -0x00000400 EQ $writable $writable $one ;; [19, 65, 0, 64] -0x00000404 EQ $writable $writable $zero ;; [19, 65, 0, 0] -0x00000408 JNZF $writable $zero 0x4 ;; [118, 64, 0, 4] -0x0000040c ADDI $writable R59 0x110 ;; [80, 67, 177, 16] -0x00000410 SW R59 $one 0x22 ;; [95, 236, 16, 34] -0x00000414 MCPI R20 $writable 0x8 ;; [96, 81, 0, 8] -0x00000418 JMPF $zero 0x8f ;; [116, 0, 0, 143] -0x0000041c LW $writable R63 0x3 ;; [93, 67, 240, 3] -0x00000420 RVRT $writable ;; [54, 64, 0, 0] -0x00000424 LW $writable R63 0x3 ;; [93, 67, 240, 3] -0x00000428 RVRT $writable ;; [54, 64, 0, 0] -0x0000042c LW $writable R63 0x3 ;; [93, 67, 240, 3] -0x00000430 RVRT $writable ;; [54, 64, 0, 0] -0x00000434 LW $writable R63 0x3 ;; [93, 67, 240, 3] -0x00000438 RVRT $writable ;; [54, 64, 0, 0] -0x0000043c ADDI $writable R59 0x440 ;; [80, 67, 180, 64] -0x00000440 MOVI R17 0x18 ;; [114, 68, 0, 24] -0x00000444 MUL R17 R24 R17 ;; [27, 69, 132, 64] -0x00000448 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x0000044c ADDI $writable R59 0x308 ;; [80, 67, 179, 8] -0x00000450 ADDI R18 R59 0x480 ;; [80, 75, 180, 128] -0x00000454 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x00000458 ADDI R17 R59 0x2a8 ;; [80, 71, 178, 168] -0x0000045c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000460 ADDI $writable R59 0x480 ;; [80, 67, 180, 128] -0x00000464 ADDI R17 R59 0x2a8 ;; [80, 71, 178, 168] -0x00000468 ADDI R18 R59 0x470 ;; [80, 75, 180, 112] -0x0000046c MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] -0x00000470 ADDI $writable R59 0x2c0 ;; [80, 67, 178, 192] -0x00000474 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000478 ADDI $writable R59 0x470 ;; [80, 67, 180, 112] -0x0000047c ADDI R17 R59 0x2c0 ;; [80, 71, 178, 192] -0x00000480 ADDI R18 R59 0x478 ;; [80, 75, 180, 120] -0x00000484 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] -0x00000488 ADDI $writable R59 0x2d8 ;; [80, 67, 178, 216] -0x0000048c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000490 ADDI $writable R59 0x2d8 ;; [80, 67, 178, 216] -0x00000494 MCPI R59 $writable 0x18 ;; [96, 237, 0, 24] -0x00000498 ADDI $writable R59 0x68 ;; [80, 67, 176, 104] -0x0000049c MCPI $writable R59 0x18 ;; [96, 67, 176, 24] -0x000004a0 LW $writable R59 0xd ;; [93, 67, 176, 13] -0x000004a4 LW R23 R59 0xe ;; [93, 95, 176, 14] -0x000004a8 LW R17 R59 0xf ;; [93, 71, 176, 15] -0x000004ac ADDI R18 R59 0x478 ;; [80, 75, 180, 120] -0x000004b0 MOVI R21 0x3 ;; [114, 84, 0, 3] -0x000004b4 ADD R21 R17 R21 ;; [16, 85, 21, 64] -0x000004b8 GT R22 R21 R23 ;; [21, 89, 85, 192] -0x000004bc JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] -0x000004c0 JMPF $zero 0x7 ;; [116, 0, 0, 7] -0x000004c4 MOVI R22 0x2 ;; [114, 88, 0, 2] -0x000004c8 MUL R22 R23 R22 ;; [27, 89, 117, 128] -0x000004cc MOVI R23 0x3 ;; [114, 92, 0, 3] -0x000004d0 ADD R23 R22 R23 ;; [16, 93, 101, 192] -0x000004d4 ALOC R23 ;; [38, 92, 0, 0] -0x000004d8 MCP $hp $writable R17 ;; [40, 29, 4, 64] -0x000004dc MOVE $writable $hp ;; [26, 64, 112, 0] -0x000004e0 ADDI R22 R59 0xa8 ;; [80, 91, 176, 168] -0x000004e4 MCPI R22 R18 0x8 ;; [96, 89, 32, 8] -0x000004e8 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x000004ec MCPI R17 R22 0x3 ;; [96, 69, 96, 3] -0x000004f0 ADDI R17 R59 0xd0 ;; [80, 71, 176, 208] -0x000004f4 SW R59 $writable 0x1a ;; [95, 237, 0, 26] -0x000004f8 SW R59 R23 0x1b ;; [95, 237, 112, 27] -0x000004fc SW R59 R21 0x1c ;; [95, 237, 80, 28] -0x00000500 ADDI $writable R59 0x18 ;; [80, 67, 176, 24] -0x00000504 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000508 ADDI R17 R59 0xf8 ;; [80, 71, 176, 248] -0x0000050c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000510 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] -0x00000514 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000518 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] -0x0000051c ADDI R17 R59 0x320 ;; [80, 71, 179, 32] -0x00000520 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000524 ADDI $writable R59 0x480 ;; [80, 67, 180, 128] -0x00000528 ADDI $writable $writable 0x8 ;; [80, 65, 0, 8] -0x0000052c ADDI R17 R59 0x320 ;; [80, 71, 179, 32] -0x00000530 ADDI R18 R59 0x498 ;; [80, 75, 180, 152] -0x00000534 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] -0x00000538 ADDI $writable R59 0x2f0 ;; [80, 67, 178, 240] -0x0000053c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000540 ADDI $writable R59 0x498 ;; [80, 67, 180, 152] -0x00000544 ADDI R17 R59 0x138 ;; [80, 71, 177, 56] -0x00000548 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x0000054c LW $writable R59 0x27 ;; [93, 67, 176, 39] -0x00000550 EQ $writable $writable $zero ;; [19, 65, 0, 0] -0x00000554 JNZF $writable $zero 0x1e ;; [118, 64, 0, 30] -0x00000558 LW $writable R59 0x27 ;; [93, 67, 176, 39] -0x0000055c EQ $writable $writable $one ;; [19, 65, 0, 64] -0x00000560 JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] -0x00000564 LW $writable R63 0x4 ;; [93, 67, 240, 4] -0x00000568 RVRT $writable ;; [54, 64, 0, 0] -0x0000056c LW $writable R59 0x28 ;; [93, 67, 176, 40] -0x00000570 ADDI R17 R59 0x2f0 ;; [80, 71, 178, 240] -0x00000574 ADDI R18 R59 0x200 ;; [80, 75, 178, 0] -0x00000578 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x0000057c ADDI R17 R59 0x188 ;; [80, 71, 177, 136] -0x00000580 MOVE R58 $one ;; [26, 232, 16, 0] -0x00000584 MOVE R57 R18 ;; [26, 229, 32, 0] -0x00000588 MOVE R56 R17 ;; [26, 225, 16, 0] -0x0000058c JAL R62 $pc 0x38 ;; [153, 248, 48, 56] -0x00000590 ADDI R18 R59 0x398 ;; [80, 75, 179, 152] -0x00000594 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x00000598 ADDI R17 R59 0x398 ;; [80, 71, 179, 152] -0x0000059c ADDI R18 R59 0x218 ;; [80, 75, 178, 24] -0x000005a0 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x000005a4 ADDI R17 R59 0x1a0 ;; [80, 71, 177, 160] -0x000005a8 MOVE R58 $writable ;; [26, 233, 0, 0] -0x000005ac MOVE R57 R18 ;; [26, 229, 32, 0] -0x000005b0 MOVE R56 R17 ;; [26, 225, 16, 0] -0x000005b4 JAL R62 $pc 0x2e ;; [153, 248, 48, 46] -0x000005b8 ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] -0x000005bc MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x000005c0 ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] -0x000005c4 ADDI R17 R59 0x260 ;; [80, 71, 178, 96] -0x000005c8 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x000005cc JMPF $zero 0x18 ;; [116, 0, 0, 24] -0x000005d0 LW $writable R59 0x28 ;; [93, 67, 176, 40] -0x000005d4 ADDI R17 R59 0x2f0 ;; [80, 71, 178, 240] -0x000005d8 ADDI R18 R59 0x1d0 ;; [80, 75, 177, 208] -0x000005dc MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x000005e0 ADDI R17 R59 0x158 ;; [80, 71, 177, 88] -0x000005e4 MOVE R58 $zero ;; [26, 232, 0, 0] -0x000005e8 MOVE R57 R18 ;; [26, 229, 32, 0] -0x000005ec MOVE R56 R17 ;; [26, 225, 16, 0] -0x000005f0 JAL R62 $pc 0x1f ;; [153, 248, 48, 31] -0x000005f4 ADDI R18 R59 0x350 ;; [80, 75, 179, 80] -0x000005f8 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x000005fc ADDI R17 R59 0x350 ;; [80, 71, 179, 80] -0x00000600 ADDI R18 R59 0x1e8 ;; [80, 75, 177, 232] -0x00000604 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x00000608 ADDI R17 R59 0x170 ;; [80, 71, 177, 112] -0x0000060c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000610 MOVE R57 R18 ;; [26, 229, 32, 0] -0x00000614 MOVE R56 R17 ;; [26, 225, 16, 0] -0x00000618 JAL R62 $pc 0x15 ;; [153, 248, 48, 21] -0x0000061c ADDI $writable R59 0x380 ;; [80, 67, 179, 128] -0x00000620 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000624 ADDI $writable R59 0x380 ;; [80, 67, 179, 128] -0x00000628 ADDI R17 R59 0x260 ;; [80, 71, 178, 96] -0x0000062c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000630 ADDI $writable R59 0x3c8 ;; [80, 67, 179, 200] -0x00000634 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000638 ADDI $writable R59 0x3c8 ;; [80, 67, 179, 200] -0x0000063c ADDI R17 R59 0x368 ;; [80, 71, 179, 104] -0x00000640 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000644 ADDI $writable R59 0x368 ;; [80, 67, 179, 104] -0x00000648 ADDI R17 R59 0x308 ;; [80, 71, 179, 8] -0x0000064c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000650 ADD R24 R24 $one ;; [16, 97, 128, 64] -0x00000654 JMPB $zero 0xf6 ;; [117, 0, 0, 246] -0x00000658 CFSI 0x4c0 ;; [146, 0, 4, 192] -0x0000065c MOVE R62 R19 ;; [26, 249, 48, 0] -0x00000660 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000664 POPL 0x1ff ;; [151, 0, 1, 255] -0x00000668 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000066c PSHL 0xff ;; [149, 0, 0, 255] -0x00000670 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000674 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000678 CFEI 0x90 ;; [145, 0, 0, 144] -0x0000067c MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000680 MOVE R17 R56 ;; [26, 71, 128, 0] -0x00000684 MOVE R18 R62 ;; [26, 75, 224, 0] -0x00000688 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] -0x0000068c MCPI R19 R57 0x18 ;; [96, 79, 144, 24] -0x00000690 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] -0x00000694 MCPI R59 R19 0x18 ;; [96, 237, 48, 24] -0x00000698 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] -0x0000069c MCPI R19 R59 0x18 ;; [96, 79, 176, 24] -0x000006a0 LW R19 R59 0x6 ;; [93, 79, 176, 6] -0x000006a4 LW R23 R59 0x7 ;; [93, 95, 176, 7] -0x000006a8 LW R20 R59 0x8 ;; [93, 83, 176, 8] -0x000006ac MOVI R21 0x8 ;; [114, 84, 0, 8] -0x000006b0 ADD R21 R20 R21 ;; [16, 85, 69, 64] -0x000006b4 GT R22 R21 R23 ;; [21, 89, 85, 192] -0x000006b8 JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] -0x000006bc JMPF $zero 0x7 ;; [116, 0, 0, 7] -0x000006c0 MOVI R22 0x2 ;; [114, 88, 0, 2] -0x000006c4 MUL R22 R23 R22 ;; [27, 89, 117, 128] -0x000006c8 MOVI R23 0x8 ;; [114, 92, 0, 8] -0x000006cc ADD R23 R22 R23 ;; [16, 93, 101, 192] -0x000006d0 ALOC R23 ;; [38, 92, 0, 0] -0x000006d4 MCP $hp R19 R20 ;; [40, 29, 53, 0] -0x000006d8 MOVE R19 $hp ;; [26, 76, 112, 0] -0x000006dc ADD R20 R19 R20 ;; [16, 81, 53, 0] -0x000006e0 SW R20 $writable 0x0 ;; [95, 81, 0, 0] -0x000006e4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] -0x000006e8 SW R59 R19 0x9 ;; [95, 237, 48, 9] -0x000006ec SW R59 R23 0xa ;; [95, 237, 112, 10] -0x000006f0 SW R59 R21 0xb ;; [95, 237, 80, 11] -0x000006f4 ADDI R19 R59 0x18 ;; [80, 79, 176, 24] -0x000006f8 MCPI R19 $writable 0x18 ;; [96, 77, 0, 24] -0x000006fc ADDI $writable R59 0x60 ;; [80, 67, 176, 96] -0x00000700 MCPI $writable R19 0x18 ;; [96, 65, 48, 24] -0x00000704 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000708 CFSI 0x90 ;; [146, 0, 0, 144] -0x0000070c MOVE R62 R18 ;; [26, 249, 32, 0] -0x00000710 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000714 POPL 0xff ;; [151, 0, 0, 255] -0x00000718 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000071c PSHL 0xf ;; [149, 0, 0, 15] -0x00000720 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000724 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000728 CFEI 0x48 ;; [145, 0, 0, 72] -0x0000072c MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000730 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000734 MOVI R18 0x400 ;; [114, 72, 4, 0] -0x00000738 ALOC R18 ;; [38, 72, 0, 0] -0x0000073c ADDI R18 R59 0x18 ;; [80, 75, 176, 24] -0x00000740 SW R59 $hp 0x3 ;; [95, 236, 112, 3] -0x00000744 MOVI R19 0x400 ;; [114, 76, 4, 0] -0x00000748 SW R59 R19 0x4 ;; [95, 237, 48, 4] -0x0000074c SW R59 $zero 0x5 ;; [95, 236, 0, 5] -0x00000750 MCPI R59 R18 0x18 ;; [96, 237, 32, 24] -0x00000754 ADDI R18 R59 0x30 ;; [80, 75, 176, 48] -0x00000758 MCPI R18 R59 0x18 ;; [96, 75, 176, 24] -0x0000075c MCPI $writable R18 0x18 ;; [96, 65, 32, 24] -0x00000760 CFSI 0x48 ;; [146, 0, 0, 72] -0x00000764 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000768 POPH 0x80000 ;; [152, 8, 0, 0] -0x0000076c POPL 0xf ;; [151, 0, 0, 15] -0x00000770 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000774 PSHL 0xf ;; [149, 0, 0, 15] -0x00000778 PSHH 0x80000 ;; [150, 8, 0, 0] -0x0000077c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000780 CFEI 0x28 ;; [145, 0, 0, 40] -0x00000784 MOVE $writable R57 ;; [26, 67, 144, 0] -0x00000788 MOVE R17 R62 ;; [26, 71, 224, 0] -0x0000078c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] -0x00000790 MCPI R18 R58 0x8 ;; [96, 75, 160, 8] -0x00000794 ADDI R18 R59 0x18 ;; [80, 75, 176, 24] -0x00000798 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] -0x0000079c LW $writable R59 0x3 ;; [93, 67, 176, 3] -0x000007a0 LW R18 R59 0x4 ;; [93, 75, 176, 4] -0x000007a4 SW R59 $writable 0x0 ;; [95, 237, 0, 0] -0x000007a8 SW R59 R18 0x1 ;; [95, 237, 32, 1] -0x000007ac LW $writable R59 0x0 ;; [93, 67, 176, 0] -0x000007b0 ADDI R18 R59 0x10 ;; [80, 75, 176, 16] -0x000007b4 MOVI R19 0x3 ;; [114, 76, 0, 3] -0x000007b8 MEQ $writable R18 $writable R19 ;; [41, 65, 36, 19] -0x000007bc MOVE R61 $writable ;; [26, 245, 0, 0] -0x000007c0 CFSI 0x28 ;; [146, 0, 0, 40] -0x000007c4 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000007c8 POPH 0x80000 ;; [152, 8, 0, 0] -0x000007cc POPL 0xf ;; [151, 0, 0, 15] -0x000007d0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000007d4 NOOP ;; [71, 0, 0, 0] +0x000002d4 JMPF $zero 0x88 ;; [116, 0, 0, 136] +0x000002d8 ADDI $writable R59 0x4a8 ;; [80, 67, 180, 168] +0x000002dc MOVI R17 0x18 ;; [114, 68, 0, 24] +0x000002e0 MUL R17 R24 R17 ;; [27, 69, 132, 64] +0x000002e4 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000002e8 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] +0x000002ec ADDI R18 R59 0x480 ;; [80, 75, 180, 128] +0x000002f0 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x000002f4 ADDI R17 R59 0x2d8 ;; [80, 71, 178, 216] +0x000002f8 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000002fc ADDI $writable R59 0x480 ;; [80, 67, 180, 128] +0x00000300 ADDI R17 R59 0x2d8 ;; [80, 71, 178, 216] +0x00000304 ADDI R18 R59 0x470 ;; [80, 75, 180, 112] +0x00000308 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] +0x0000030c ADDI $writable R59 0x2f0 ;; [80, 67, 178, 240] +0x00000310 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000314 ADDI $writable R59 0x470 ;; [80, 67, 180, 112] +0x00000318 ADDI R17 R59 0x2f0 ;; [80, 71, 178, 240] +0x0000031c ADDI R18 R59 0x478 ;; [80, 75, 180, 120] +0x00000320 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] +0x00000324 ADDI $writable R59 0x308 ;; [80, 67, 179, 8] +0x00000328 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x0000032c ADDI $writable R59 0x308 ;; [80, 67, 179, 8] +0x00000330 ADDI R17 R59 0x10 ;; [80, 71, 176, 16] +0x00000334 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000338 ADDI $writable R59 0x88 ;; [80, 67, 176, 136] +0x0000033c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000340 LW $writable R59 0x11 ;; [93, 67, 176, 17] +0x00000344 LW R23 R59 0x12 ;; [93, 95, 176, 18] +0x00000348 LW R17 R59 0x13 ;; [93, 71, 176, 19] +0x0000034c ADDI R18 R59 0x478 ;; [80, 75, 180, 120] +0x00000350 MOVI R21 0x3 ;; [114, 84, 0, 3] +0x00000354 ADD R21 R17 R21 ;; [16, 85, 21, 64] +0x00000358 GT R22 R21 R23 ;; [21, 89, 85, 192] +0x0000035c JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] +0x00000360 JMPF $zero 0x7 ;; [116, 0, 0, 7] +0x00000364 MOVI R22 0x2 ;; [114, 88, 0, 2] +0x00000368 MUL R22 R23 R22 ;; [27, 89, 117, 128] +0x0000036c MOVI R23 0x3 ;; [114, 92, 0, 3] +0x00000370 ADD R23 R22 R23 ;; [16, 93, 101, 192] +0x00000374 ALOC R23 ;; [38, 92, 0, 0] +0x00000378 MCP $hp $writable R17 ;; [40, 29, 4, 64] +0x0000037c MOVE $writable $hp ;; [26, 64, 112, 0] +0x00000380 ADDI R22 R59 0xc8 ;; [80, 91, 176, 200] +0x00000384 MCPI R22 R18 0x8 ;; [96, 89, 32, 8] +0x00000388 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x0000038c MCPI R17 R22 0x3 ;; [96, 69, 96, 3] +0x00000390 ADDI R17 R59 0xf0 ;; [80, 71, 176, 240] +0x00000394 SW R59 $writable 0x1e ;; [95, 237, 0, 30] +0x00000398 SW R59 R23 0x1f ;; [95, 237, 112, 31] +0x0000039c SW R59 R21 0x20 ;; [95, 237, 80, 32] +0x000003a0 ADDI $writable R59 0x28 ;; [80, 67, 176, 40] +0x000003a4 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000003a8 ADDI R17 R59 0x118 ;; [80, 71, 177, 24] +0x000003ac MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000003b0 ADDI $writable R59 0x368 ;; [80, 67, 179, 104] +0x000003b4 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000003b8 ADDI $writable R59 0x368 ;; [80, 67, 179, 104] +0x000003bc ADDI R17 R59 0x350 ;; [80, 71, 179, 80] +0x000003c0 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000003c4 ADDI $writable R59 0x480 ;; [80, 67, 180, 128] +0x000003c8 ADDI $writable $writable 0x8 ;; [80, 65, 0, 8] +0x000003cc ADDI R17 R59 0x350 ;; [80, 71, 179, 80] +0x000003d0 ADDI R18 R59 0x498 ;; [80, 75, 180, 152] +0x000003d4 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] +0x000003d8 ADDI $writable R59 0x320 ;; [80, 67, 179, 32] +0x000003dc MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000003e0 ADDI $writable R59 0x498 ;; [80, 67, 180, 152] +0x000003e4 ADDI R17 R59 0x158 ;; [80, 71, 177, 88] +0x000003e8 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x000003ec LW $writable R59 0x2b ;; [93, 67, 176, 43] +0x000003f0 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x000003f4 JNZF $writable $zero 0x1e ;; [118, 64, 0, 30] +0x000003f8 LW $writable R59 0x2b ;; [93, 67, 176, 43] +0x000003fc EQ $writable $writable $one ;; [19, 65, 0, 64] +0x00000400 JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] +0x00000404 LW $writable R63 0x0 ;; [93, 67, 240, 0] +0x00000408 RVRT $writable ;; [54, 64, 0, 0] +0x0000040c LW $writable R59 0x2c ;; [93, 67, 176, 44] +0x00000410 ADDI R17 R59 0x320 ;; [80, 71, 179, 32] +0x00000414 ADDI R18 R59 0x220 ;; [80, 75, 178, 32] +0x00000418 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x0000041c ADDI R17 R59 0x1a8 ;; [80, 71, 177, 168] +0x00000420 MOVE R58 $one ;; [26, 232, 16, 0] +0x00000424 MOVE R57 R18 ;; [26, 229, 32, 0] +0x00000428 MOVE R56 R17 ;; [26, 225, 16, 0] +0x0000042c JAL R62 $pc 0x94 ;; [153, 248, 48, 148] +0x00000430 ADDI R18 R59 0x3c8 ;; [80, 75, 179, 200] +0x00000434 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000438 ADDI R17 R59 0x3c8 ;; [80, 71, 179, 200] +0x0000043c ADDI R18 R59 0x238 ;; [80, 75, 178, 56] +0x00000440 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000444 ADDI R17 R59 0x1c0 ;; [80, 71, 177, 192] +0x00000448 MOVE R58 $writable ;; [26, 233, 0, 0] +0x0000044c MOVE R57 R18 ;; [26, 229, 32, 0] +0x00000450 MOVE R56 R17 ;; [26, 225, 16, 0] +0x00000454 JAL R62 $pc 0x8a ;; [153, 248, 48, 138] +0x00000458 ADDI $writable R59 0x3e0 ;; [80, 67, 179, 224] +0x0000045c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000460 ADDI $writable R59 0x3e0 ;; [80, 67, 179, 224] +0x00000464 ADDI R17 R59 0x280 ;; [80, 71, 178, 128] +0x00000468 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x0000046c JMPF $zero 0x18 ;; [116, 0, 0, 24] +0x00000470 LW $writable R59 0x2c ;; [93, 67, 176, 44] +0x00000474 ADDI R17 R59 0x320 ;; [80, 71, 179, 32] +0x00000478 ADDI R18 R59 0x1f0 ;; [80, 75, 177, 240] +0x0000047c MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000480 ADDI R17 R59 0x178 ;; [80, 71, 177, 120] +0x00000484 MOVE R58 $zero ;; [26, 232, 0, 0] +0x00000488 MOVE R57 R18 ;; [26, 229, 32, 0] +0x0000048c MOVE R56 R17 ;; [26, 225, 16, 0] +0x00000490 JAL R62 $pc 0x7b ;; [153, 248, 48, 123] +0x00000494 ADDI R18 R59 0x380 ;; [80, 75, 179, 128] +0x00000498 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x0000049c ADDI R17 R59 0x380 ;; [80, 71, 179, 128] +0x000004a0 ADDI R18 R59 0x208 ;; [80, 75, 178, 8] +0x000004a4 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x000004a8 ADDI R17 R59 0x190 ;; [80, 71, 177, 144] +0x000004ac MOVE R58 $writable ;; [26, 233, 0, 0] +0x000004b0 MOVE R57 R18 ;; [26, 229, 32, 0] +0x000004b4 MOVE R56 R17 ;; [26, 225, 16, 0] +0x000004b8 JAL R62 $pc 0x71 ;; [153, 248, 48, 113] +0x000004bc ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] +0x000004c0 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000004c4 ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] +0x000004c8 ADDI R17 R59 0x280 ;; [80, 71, 178, 128] +0x000004cc MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000004d0 ADDI $writable R59 0x3f8 ;; [80, 67, 179, 248] +0x000004d4 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000004d8 ADDI $writable R59 0x3f8 ;; [80, 67, 179, 248] +0x000004dc ADDI R17 R59 0x398 ;; [80, 71, 179, 152] +0x000004e0 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000004e4 ADDI $writable R59 0x398 ;; [80, 67, 179, 152] +0x000004e8 ADDI R17 R59 0x338 ;; [80, 71, 179, 56] +0x000004ec MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000004f0 ADD R24 R24 $one ;; [16, 97, 128, 64] +0x000004f4 JMPB $zero 0x9e ;; [117, 0, 0, 158] +0x000004f8 ADDI $writable R59 0x138 ;; [80, 67, 177, 56] +0x000004fc MCPI $writable R17 0x10 ;; [96, 65, 16, 16] +0x00000500 LW $writable R63 0x1 ;; [93, 67, 240, 1] +0x00000504 LW R17 R59 0x27 ;; [93, 71, 176, 39] +0x00000508 LW R18 R59 0x28 ;; [93, 75, 176, 40] +0x0000050c LOGD $zero $writable R17 R18 ;; [52, 1, 4, 82] +0x00000510 ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x00000514 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x00000518 MUL R17 $zero R17 ;; [27, 68, 4, 64] +0x0000051c ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x00000520 MOVI $writable 0x10 ;; [114, 64, 0, 16] +0x00000524 ADD $writable $writable R63 ;; [16, 65, 15, 192] +0x00000528 ADDI R18 R59 0x68 ;; [80, 75, 176, 104] +0x0000052c SW R59 $writable 0xd ;; [95, 237, 0, 13] +0x00000530 MOVI $writable 0x3 ;; [114, 64, 0, 3] +0x00000534 SW R59 $writable 0xe ;; [95, 237, 0, 14] +0x00000538 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] +0x0000053c MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x00000540 ADDI R18 R59 0x250 ;; [80, 75, 178, 80] +0x00000544 MCPI R18 R17 0x8 ;; [96, 73, 16, 8] +0x00000548 ADDI R17 R59 0x258 ;; [80, 71, 178, 88] +0x0000054c MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000550 MOVE R58 R18 ;; [26, 233, 32, 0] +0x00000554 MOVE R57 R17 ;; [26, 229, 16, 0] +0x00000558 JAL R62 $pc 0x8b ;; [153, 248, 48, 139] +0x0000055c EQ $writable R61 $zero ;; [19, 67, 208, 0] +0x00000560 JNZF $writable $zero 0x3f ;; [118, 64, 0, 63] +0x00000564 ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x00000568 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x0000056c MUL R17 $zero R17 ;; [27, 68, 4, 64] +0x00000570 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x00000574 ADDI $writable R17 0x8 ;; [80, 65, 16, 8] +0x00000578 ADDI R17 R59 0x148 ;; [80, 71, 177, 72] +0x0000057c MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000580 LW $writable R59 0x29 ;; [93, 67, 176, 41] +0x00000584 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x00000588 JNZF $writable $zero 0x1 ;; [118, 64, 0, 1] +0x0000058c RVRT $one ;; [54, 4, 0, 0] +0x00000590 LW $writable R59 0x2a ;; [93, 67, 176, 42] +0x00000594 MOVI R17 0x53a ;; [114, 68, 5, 58] +0x00000598 EQ $writable $writable R17 ;; [19, 65, 4, 64] +0x0000059c EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x000005a0 JNZF $writable $zero 0x2d ;; [118, 64, 0, 45] +0x000005a4 ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x000005a8 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x000005ac MUL R17 $one R17 ;; [27, 68, 20, 64] +0x000005b0 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000005b4 MOVI $writable 0x18 ;; [114, 64, 0, 24] +0x000005b8 ADD $writable $writable R63 ;; [16, 65, 15, 192] +0x000005bc ADDI R18 R59 0xe0 ;; [80, 75, 176, 224] +0x000005c0 SW R59 $writable 0x1c ;; [95, 237, 0, 28] +0x000005c4 MOVI $writable 0x3 ;; [114, 64, 0, 3] +0x000005c8 SW R59 $writable 0x1d ;; [95, 237, 0, 29] +0x000005cc ADDI $writable R59 0x108 ;; [80, 67, 177, 8] +0x000005d0 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x000005d4 ADDI R18 R59 0x268 ;; [80, 75, 178, 104] +0x000005d8 MCPI R18 R17 0x8 ;; [96, 73, 16, 8] +0x000005dc ADDI R17 R59 0x270 ;; [80, 71, 178, 112] +0x000005e0 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x000005e4 MOVE R58 R18 ;; [26, 233, 32, 0] +0x000005e8 MOVE R57 R17 ;; [26, 229, 16, 0] +0x000005ec JAL R62 $pc 0x66 ;; [153, 248, 48, 102] +0x000005f0 EQ $writable R61 $zero ;; [19, 67, 208, 0] +0x000005f4 JNZF $writable $zero 0x16 ;; [118, 64, 0, 22] +0x000005f8 ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x000005fc MOVI R17 0x18 ;; [114, 68, 0, 24] +0x00000600 MUL R17 $one R17 ;; [27, 68, 20, 64] +0x00000604 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x00000608 ADDI $writable R17 0x8 ;; [80, 65, 16, 8] +0x0000060c ADDI R17 R59 0x168 ;; [80, 71, 177, 104] +0x00000610 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000614 LW $writable R59 0x2d ;; [93, 67, 176, 45] +0x00000618 EQ $writable $writable $one ;; [19, 65, 0, 64] +0x0000061c JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] +0x00000620 MOVI $writable 0x2 ;; [114, 64, 0, 2] +0x00000624 RVRT $writable ;; [54, 64, 0, 0] +0x00000628 LW $writable R59 0x2e ;; [93, 67, 176, 46] +0x0000062c EQ $writable $writable $one ;; [19, 65, 0, 64] +0x00000630 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x00000634 JNZF $writable $zero 0x4 ;; [118, 64, 0, 4] +0x00000638 ADDI $writable R59 0x130 ;; [80, 67, 177, 48] +0x0000063c SW R59 $one 0x26 ;; [95, 236, 16, 38] +0x00000640 MCPI R20 $writable 0x8 ;; [96, 81, 0, 8] +0x00000644 JMPF $zero 0x8 ;; [116, 0, 0, 8] +0x00000648 LW $writable R63 0x4 ;; [93, 67, 240, 4] +0x0000064c RVRT $writable ;; [54, 64, 0, 0] +0x00000650 LW $writable R63 0x4 ;; [93, 67, 240, 4] +0x00000654 RVRT $writable ;; [54, 64, 0, 0] +0x00000658 LW $writable R63 0x4 ;; [93, 67, 240, 4] +0x0000065c RVRT $writable ;; [54, 64, 0, 0] +0x00000660 LW $writable R63 0x4 ;; [93, 67, 240, 4] +0x00000664 RVRT $writable ;; [54, 64, 0, 0] +0x00000668 CFSI 0x4f0 ;; [146, 0, 4, 240] +0x0000066c MOVE R62 R19 ;; [26, 249, 48, 0] +0x00000670 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000674 POPL 0x1ff ;; [151, 0, 1, 255] +0x00000678 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000067c PSHL 0xff ;; [149, 0, 0, 255] +0x00000680 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000684 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000688 CFEI 0x90 ;; [145, 0, 0, 144] +0x0000068c MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000690 MOVE R17 R56 ;; [26, 71, 128, 0] +0x00000694 MOVE R18 R62 ;; [26, 75, 224, 0] +0x00000698 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] +0x0000069c MCPI R19 R57 0x18 ;; [96, 79, 144, 24] +0x000006a0 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] +0x000006a4 MCPI R59 R19 0x18 ;; [96, 237, 48, 24] +0x000006a8 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] +0x000006ac MCPI R19 R59 0x18 ;; [96, 79, 176, 24] +0x000006b0 LW R19 R59 0x6 ;; [93, 79, 176, 6] +0x000006b4 LW R23 R59 0x7 ;; [93, 95, 176, 7] +0x000006b8 LW R20 R59 0x8 ;; [93, 83, 176, 8] +0x000006bc MOVI R21 0x8 ;; [114, 84, 0, 8] +0x000006c0 ADD R21 R20 R21 ;; [16, 85, 69, 64] +0x000006c4 GT R22 R21 R23 ;; [21, 89, 85, 192] +0x000006c8 JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] +0x000006cc JMPF $zero 0x7 ;; [116, 0, 0, 7] +0x000006d0 MOVI R22 0x2 ;; [114, 88, 0, 2] +0x000006d4 MUL R22 R23 R22 ;; [27, 89, 117, 128] +0x000006d8 MOVI R23 0x8 ;; [114, 92, 0, 8] +0x000006dc ADD R23 R22 R23 ;; [16, 93, 101, 192] +0x000006e0 ALOC R23 ;; [38, 92, 0, 0] +0x000006e4 MCP $hp R19 R20 ;; [40, 29, 53, 0] +0x000006e8 MOVE R19 $hp ;; [26, 76, 112, 0] +0x000006ec ADD R20 R19 R20 ;; [16, 81, 53, 0] +0x000006f0 SW R20 $writable 0x0 ;; [95, 81, 0, 0] +0x000006f4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x000006f8 SW R59 R19 0x9 ;; [95, 237, 48, 9] +0x000006fc SW R59 R23 0xa ;; [95, 237, 112, 10] +0x00000700 SW R59 R21 0xb ;; [95, 237, 80, 11] +0x00000704 ADDI R19 R59 0x18 ;; [80, 79, 176, 24] +0x00000708 MCPI R19 $writable 0x18 ;; [96, 77, 0, 24] +0x0000070c ADDI $writable R59 0x60 ;; [80, 67, 176, 96] +0x00000710 MCPI $writable R19 0x18 ;; [96, 65, 48, 24] +0x00000714 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000718 CFSI 0x90 ;; [146, 0, 0, 144] +0x0000071c MOVE R62 R18 ;; [26, 249, 32, 0] +0x00000720 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000724 POPL 0xff ;; [151, 0, 0, 255] +0x00000728 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000072c PSHL 0xf ;; [149, 0, 0, 15] +0x00000730 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000734 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000738 CFEI 0x48 ;; [145, 0, 0, 72] +0x0000073c MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000740 MOVE R17 R62 ;; [26, 71, 224, 0] +0x00000744 MOVI R18 0x400 ;; [114, 72, 4, 0] +0x00000748 ALOC R18 ;; [38, 72, 0, 0] +0x0000074c ADDI R18 R59 0x18 ;; [80, 75, 176, 24] +0x00000750 SW R59 $hp 0x3 ;; [95, 236, 112, 3] +0x00000754 MOVI R19 0x400 ;; [114, 76, 4, 0] +0x00000758 SW R59 R19 0x4 ;; [95, 237, 48, 4] +0x0000075c SW R59 $zero 0x5 ;; [95, 236, 0, 5] +0x00000760 MCPI R59 R18 0x18 ;; [96, 237, 32, 24] +0x00000764 ADDI R18 R59 0x30 ;; [80, 75, 176, 48] +0x00000768 MCPI R18 R59 0x18 ;; [96, 75, 176, 24] +0x0000076c MCPI $writable R18 0x18 ;; [96, 65, 32, 24] +0x00000770 CFSI 0x48 ;; [146, 0, 0, 72] +0x00000774 MOVE R62 R17 ;; [26, 249, 16, 0] +0x00000778 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000077c POPL 0xf ;; [151, 0, 0, 15] +0x00000780 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000784 PSHL 0xf ;; [149, 0, 0, 15] +0x00000788 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000078c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000790 CFEI 0x28 ;; [145, 0, 0, 40] +0x00000794 MOVE $writable R57 ;; [26, 67, 144, 0] +0x00000798 MOVE R17 R62 ;; [26, 71, 224, 0] +0x0000079c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x000007a0 MCPI R18 R58 0x8 ;; [96, 75, 160, 8] +0x000007a4 ADDI R18 R59 0x18 ;; [80, 75, 176, 24] +0x000007a8 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] +0x000007ac LW $writable R59 0x3 ;; [93, 67, 176, 3] +0x000007b0 LW R18 R59 0x4 ;; [93, 75, 176, 4] +0x000007b4 SW R59 $writable 0x0 ;; [95, 237, 0, 0] +0x000007b8 SW R59 R18 0x1 ;; [95, 237, 32, 1] +0x000007bc LW $writable R59 0x0 ;; [93, 67, 176, 0] +0x000007c0 ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x000007c4 MOVI R19 0x3 ;; [114, 76, 0, 3] +0x000007c8 MEQ $writable R18 $writable R19 ;; [41, 65, 36, 19] +0x000007cc MOVE R61 $writable ;; [26, 245, 0, 0] +0x000007d0 CFSI 0x28 ;; [146, 0, 0, 40] +0x000007d4 MOVE R62 R17 ;; [26, 249, 16, 0] +0x000007d8 POPH 0x80000 ;; [152, 8, 0, 0] +0x000007dc POPL 0xf ;; [151, 0, 0, 15] +0x000007e0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000007e4 NOOP ;; [71, 0, 0, 0] .data_section: -0x000007d8 .word i3647243719605075626, as hex be bytes ([32, 9D, 9C, D6, CC, 55, BE, AA]) -0x000007e0 .bytes as hex ([73, 65, 74]), len i3, as ascii "set" -0x000007e8 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" -0x000007f0 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) -0x000007f8 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) +0x000007e8 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) +0x000007f0 .word i3647243719605075626, as hex be bytes ([32, 9D, 9C, D6, CC, 55, BE, AA]) +0x000007f8 .bytes as hex ([73, 65, 74]), len i3, as ascii "set" +0x00000800 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" +0x00000808 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) ;; --- END OF TARGET BYTECODE --- - Finished release [optimized + fuel] target(s) [2.048 KB] in ??? + Finished release [optimized + fuel] target(s) [2.064 KB] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap index 053cd575780..56bdf174f99 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests --logs --raw-logs --dbgs --reverts passing_ exit status: 0 @@ -18,12 +19,12 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [8.72 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.312 KB] in ??? Running 2 tests, filtered 18 tests tested -- panic_handling_in_unit_tests - test passing_dbgs_and_logs ... ok (???, 4424 gas) + test passing_dbgs_and_logs ... ok (???, 4362 gas) debug output: [src/main.sw:23:13] "This is a passing test containing `__dbg` outputs." = "This is a passing test containing `__dbg` outputs." [src/main.sw:25:13] x = 42 @@ -31,7 +32,7 @@ tested -- panic_handling_in_unit_tests AsciiString { data: "This is a log from the passing test." }, log rb: 10098701174489624218 42, log rb: 1515152261580153489 raw logs: -[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10820,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15948,"ptr":67107832,"ra":0,"rb":1515152261580153489}}] +[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10820,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15672,"ptr":67107832,"ra":0,"rb":1515152261580153489}}] test passing_no_dbgs_or_logs ... ok (???, 74 gas) test result: OK. 2 passed; 0 failed; finished in ??? @@ -55,31 +56,31 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [8.72 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.312 KB] in ??? Running 20 tests, filtered 0 tests tested -- panic_handling_in_unit_tests - test passing_dbgs_and_logs ... ok (???, 4424 gas) + test passing_dbgs_and_logs ... ok (???, 4362 gas) test passing_no_dbgs_or_logs ... ok (???, 74 gas) test failing_revert_intrinsic ... FAILED (???, 79 gas) - test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 4500 gas) + test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 4470 gas) test failing_error_signal_assert ... FAILED (???, 792 gas) - test failing_error_signal_assert_eq ... FAILED (???, 3104 gas) - test failing_error_signal_assert_ne ... FAILED (???, 3094 gas) - test failing_error_signal_require_str_error ... FAILED (???, 1006 gas) - test failing_error_signal_require_enum_error ... FAILED (???, 1133 gas) - test failing_panic_no_arg ... FAILED (???, 657 gas) - test failing_panic_unit_arg ... FAILED (???, 657 gas) + test failing_error_signal_assert_eq ... FAILED (???, 3010 gas) + test failing_error_signal_assert_ne ... FAILED (???, 3000 gas) + test failing_error_signal_require_str_error ... FAILED (???, 976 gas) + test failing_error_signal_require_enum_error ... FAILED (???, 1131 gas) + test failing_panic_no_arg ... FAILED (???, 771 gas) + test failing_panic_unit_arg ... FAILED (???, 771 gas) test failing_panic_const_eval_str_arg ... FAILED (???, 79 gas) test failing_panic_const_eval_empty_str_arg ... FAILED (???, 79 gas) test failing_panic_const_eval_whitespace_str_arg ... FAILED (???, 79 gas) - test failing_panic_non_const_eval_str_arg ... FAILED (???, 987 gas) - test failing_panic_non_const_eval_str_empty_arg ... FAILED (???, 969 gas) - test failing_panic_non_const_eval_str_whitespace_arg ... FAILED (???, 973 gas) - test failing_panic_error_enum_arg ... FAILED (???, 1103 gas) - test failing_panic_error_enum_arg_with_empty_msg ... FAILED (???, 1260 gas) - test failing_panic_error_enum_arg_with_whitespace_msg ... FAILED (???, 1289 gas) + test failing_panic_non_const_eval_str_arg ... FAILED (???, 957 gas) + test failing_panic_non_const_eval_str_empty_arg ... FAILED (???, 939 gas) + test failing_panic_non_const_eval_str_whitespace_arg ... FAILED (???, 943 gas) + test failing_panic_error_enum_arg ... FAILED (???, 1101 gas) + test failing_panic_error_enum_arg_with_empty_msg ... FAILED (???, 1258 gas) + test failing_panic_error_enum_arg_with_whitespace_msg ... FAILED (???, 1287 gas) failures: test failing_revert_intrinsic, "test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/src/main.sw":34 @@ -149,7 +150,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15948, + "pc": 15672, "ptr": 67107832, "ra": 0, "rb": 1515152261580153489 @@ -162,7 +163,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15948, + "pc": 15672, "ptr": 67107824, "ra": 0, "rb": 1515152261580153489 @@ -202,7 +203,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15948, + "pc": 15672, "ptr": 67107832, "ra": 0, "rb": 1515152261580153489 @@ -215,7 +216,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15948, + "pc": 15672, "ptr": 67107824, "ra": 0, "rb": 1515152261580153489 @@ -281,13 +282,13 @@ B(true), log rb: 8516346929033386016 [ { "LogData": { - "data": "00", - "digest": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", + "data": "", + "digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, - "len": 1, + "len": 0, "pc": 13204, - "ptr": 67108863, + "ptr": 67107840, "ra": 0, "rb": 3330666440490685604 } @@ -306,13 +307,13 @@ B(true), log rb: 8516346929033386016 [ { "LogData": { - "data": "00", - "digest": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", + "data": "", + "digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, - "len": 1, + "len": 0, "pc": 13256, - "ptr": 67108863, + "ptr": 67107840, "ra": 0, "rb": 3330666440490685604 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index 28d644621b1..e464241d2d6 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract --test-threads 1 --logs --reverts exit status: 0 @@ -8,17 +9,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished debug [unoptimized + fuel] target(s) [9.088 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.88 KB] in ??? Running 12 tests, filtered 0 tests tested -- panicking_contract - test test_panicking_in_contract_self_impl ... ok (???, 11141 gas) + test test_panicking_in_contract_self_impl ... ok (???, 11222 gas) revert code: 828000000000000c ├─ panic message: panicking in contract self impl ├─ panicked: in ::panicking_in_contract_self_impl │ └─ at panicking_contract@1.2.3, src/main.sw:22:9 - test test_directly_panicking_method ... ok (???, 12176 gas) + test test_directly_panicking_method ... ok (???, 12263 gas) revert code: 820000000000000b ├─ panic message: Error C. ├─ panic value: C(true) @@ -26,7 +27,7 @@ tested -- panicking_contract │ └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 12910 gas) + test test_nested_panic_inlined ... ok (???, 12997 gas) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -38,7 +39,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 12910 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 12997 gas) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -50,7 +51,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 13020 gas) + test test_nested_panic_non_inlined ... ok (???, 13107 gas) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -62,7 +63,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 13020 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 13107 gas) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -74,7 +75,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 11657 gas) + test test_generic_panic_with_unit ... ok (???, 11852 gas) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -83,7 +84,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 11657 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 11852 gas) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -92,7 +93,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 11960 gas) + test test_generic_panic_with_str ... ok (???, 12011 gas) revert code: 8080000000002804 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -101,7 +102,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:56:9 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 12183 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 12234 gas) revert code: 808000000000d019 ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -110,7 +111,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_contract@1.2.3, src/main.sw:60:9 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 12071 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 12158 gas) revert code: 830000000000700d ├─ panic message: Error A. ├─ panic value: A @@ -120,7 +121,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_contract@1.2.3, src/main.sw:64:9 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 12340 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 12427 gas) revert code: 830000000000e01b ├─ panic message: Error B. ├─ panic value: B(42) @@ -142,17 +143,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished release [optimized + fuel] target(s) [6.496 KB] in ??? + Finished release [optimized + fuel] target(s) [6.48 KB] in ??? Running 12 tests, filtered 0 tests tested -- panicking_contract - test test_panicking_in_contract_self_impl ... ok (???, 10377 gas) + test test_panicking_in_contract_self_impl ... ok (???, 10465 gas) revert code: 8280000000000000 ├─ panic message: panicking in contract self impl └─ panicked: in ::panicking_in_contract_self_impl └─ at panicking_contract@1.2.3, src/main.sw:22:9 - test test_directly_panicking_method ... ok (???, 11297 gas) + test test_directly_panicking_method ... ok (???, 11391 gas) revert code: 8200000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -160,7 +161,7 @@ tested -- panicking_contract └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 11953 gas) + test test_nested_panic_inlined ... ok (???, 12047 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -168,7 +169,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 11953 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 12047 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -176,7 +177,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 12009 gas) + test test_nested_panic_non_inlined ... ok (???, 12103 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -184,7 +185,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 12009 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 12103 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -192,35 +193,35 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 10863 gas) + test test_generic_panic_with_unit ... ok (???, 11047 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 10863 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 11047 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 11144 gas) + test test_generic_panic_with_str ... ok (???, 11232 gas) revert code: 8080000000000000 ├─ panic message: generic panic with string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 11227 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 11315 gas) revert code: 8080000000000000 ├─ panic message: generic panic with different string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 11202 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 11296 gas) revert code: 8300000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -228,7 +229,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 11349 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 11445 gas) revert code: 8300000000000000 ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index 219f8ad09ec..ed52f08fea8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib --test-threads 1 --logs --reverts exit status: 0 @@ -7,12 +8,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished debug [unoptimized + fuel] target(s) [7.824 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [7.816 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 2006 gas) + test test_nested_panic_inlined ... ok (???, 2041 gas) revert code: 8000000000001001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -24,7 +25,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:55:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_inlined_same_revert_code ... ok (???, 2006 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 2041 gas) revert code: 8000000000001801 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -36,7 +37,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:60:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined ... ok (???, 2050 gas) + test test_nested_panic_non_inlined ... ok (???, 2085 gas) revert code: 8080000000002804 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -48,7 +49,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:65:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2050 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2085 gas) revert code: 8080000000003004 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -60,7 +61,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:70:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_generic_panic_with_unit ... ok (???, 673 gas) + test test_generic_panic_with_unit ... ok (???, 787 gas) revert code: 8100000000000007 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -69,7 +70,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:83:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 673 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 787 gas) revert code: 8100000000000008 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -78,7 +79,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:88:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 982 gas) + test test_generic_panic_with_str ... ok (???, 952 gas) revert code: 8180000000000009 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -87,7 +88,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:93:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 983 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 953 gas) revert code: 818000000000000a ├─ panic message: generic panic different string ├─ panicked: in panicking_lib::generic_panic @@ -96,7 +97,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:98:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 1019 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 1054 gas) revert code: 820000000000000b ├─ panic message: Error A. ├─ panic value: A @@ -106,7 +107,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:103:5 decoded log values: A, log rb: 2721958641300806892 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1019 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1054 gas) revert code: 820000000000000c ├─ panic message: Error A. ├─ panic value: A @@ -116,14 +117,14 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:108:5 decoded log values: A, log rb: 2721958641300806892 - test test_panic_without_arg ... ok (???, 657 gas) + test test_panic_without_arg ... ok (???, 771 gas) revert code: 8280000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_without_arg └─ at panicking_lib, src/lib.sw:113:5 decoded log values: (), log rb: 3330666440490685604 - test test_panic_with_unit ... ok (???, 657 gas) + test test_panic_with_unit ... ok (???, 771 gas) revert code: 8300000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_with_unit @@ -135,7 +136,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 - test test_panic_with_error_type_enum ... ok (???, 1219 gas) + test test_panic_with_error_type_enum ... ok (???, 1254 gas) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -143,28 +144,28 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:128:5 decoded log values: C(true), log rb: 2721958641300806892 - test test_panic_with_generic_error_type_enum ... ok (???, 1082 gas) + test test_panic_with_generic_error_type_enum ... ok (???, 1076 gas) revert code: 8480000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum └─ at panicking_lib, src/lib.sw:133:5 decoded log values: A(42), log rb: 12408470889216862137 - test test_panic_with_nested_generic_error_type ... ok (???, 1674 gas) + test test_panic_with_nested_generic_error_type ... ok (???, 1668 gas) revert code: 8500000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type └─ at panicking_lib, src/lib.sw:138:5 decoded log values: B(B(C(true))), log rb: 14988555917426256081 - test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 1082 gas) + test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 1076 gas) revert code: 8580000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum_with_abi_encode └─ at panicking_lib, src/lib.sw:143:5 decoded log values: A(42), log rb: 17388243649088655852 - test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1674 gas) + test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1668 gas) revert code: 8600000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type_enum_with_abi_encode @@ -182,12 +183,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished release [optimized + fuel] target(s) [4.48 KB] in ??? + Finished release [optimized + fuel] target(s) [5.064 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 1718 gas) + test test_nested_panic_inlined ... ok (???, 1773 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -195,7 +196,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1718 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1773 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -203,7 +204,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined ... ok (???, 1752 gas) + test test_nested_panic_non_inlined ... ok (???, 1807 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -211,7 +212,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1752 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1807 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -219,14 +220,14 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_generic_panic_with_unit ... ok (???, 599 gas) + test test_generic_panic_with_unit ... ok (???, 701 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 599 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 701 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic @@ -247,7 +248,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 901 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 956 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -255,7 +256,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 901 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 956 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -263,14 +264,14 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 - test test_panic_without_arg ... ok (???, 599 gas) + test test_panic_without_arg ... ok (???, 701 gas) revert code: 8280000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_without_arg └─ at panicking_lib, src/lib.sw:113:5 decoded log values: (), log rb: 3330666440490685604 - test test_panic_with_unit ... ok (???, 599 gas) + test test_panic_with_unit ... ok (???, 701 gas) revert code: 8300000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_with_unit @@ -282,7 +283,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 - test test_panic_with_error_type_enum ... ok (???, 1067 gas) + test test_panic_with_error_type_enum ... ok (???, 1122 gas) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -290,28 +291,28 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:128:5 decoded log values: C(true), log rb: 2721958641300806892 - test test_panic_with_generic_error_type_enum ... ok (???, 940 gas) + test test_panic_with_generic_error_type_enum ... ok (???, 1020 gas) revert code: 8480000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum └─ at panicking_lib, src/lib.sw:133:5 decoded log values: A(42), log rb: 12408470889216862137 - test test_panic_with_nested_generic_error_type ... ok (???, 1354 gas) + test test_panic_with_nested_generic_error_type ... ok (???, 1510 gas) revert code: 8500000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type └─ at panicking_lib, src/lib.sw:138:5 decoded log values: B(B(C(true))), log rb: 14988555917426256081 - test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 940 gas) + test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 1020 gas) revert code: 8580000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum_with_abi_encode └─ at panicking_lib, src/lib.sw:143:5 decoded log values: A(42), log rb: 17388243649088655852 - test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1354 gas) + test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1510 gas) revert code: 8600000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type_enum_with_abi_encode diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap index 5b6837626e2..438150077f5 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script --test-threads 1 --logs --reverts exit status: 0 @@ -8,12 +9,12 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling script panicking_script (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script) - Finished debug [unoptimized + fuel] target(s) [4.224 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [4.064 KB] in ??? Running 11 tests, filtered 0 tests tested -- panicking_script - test test_panic_in_main ... ok (???, 1141 gas) + test test_panic_in_main ... ok (???, 1147 gas) revert code: 8000000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -21,7 +22,7 @@ tested -- panicking_script └─ at panicking_script, src/main.sw:6:5 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 1960 gas) + test test_nested_panic_inlined ... ok (???, 1966 gas) revert code: 8080000000001001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -33,7 +34,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_script, src/main.sw:16:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1960 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1966 gas) revert code: 8080000000001801 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -45,7 +46,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_script, src/main.sw:21:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 2002 gas) + test test_nested_panic_non_inlined ... ok (???, 2008 gas) revert code: 8100000000002804 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -57,7 +58,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_script, src/main.sw:26:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2002 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2008 gas) revert code: 8100000000003004 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -69,7 +70,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:31:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 661 gas) + test test_generic_panic_with_unit ... ok (???, 775 gas) revert code: 8180000000000007 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -78,7 +79,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:36:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 661 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 775 gas) revert code: 8180000000000008 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -87,7 +88,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:41:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 982 gas) + test test_generic_panic_with_str ... ok (???, 952 gas) revert code: 8200000000000009 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -96,7 +97,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:46:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 985 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 955 gas) revert code: 820000000000000a ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -105,7 +106,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_script, src/main.sw:51:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 971 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 977 gas) revert code: 828000000000000b ├─ panic message: Error A. ├─ panic value: A @@ -115,7 +116,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_script, src/main.sw:56:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1108 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1114 gas) revert code: 828000000000000c ├─ panic message: Error B. ├─ panic value: B(42) @@ -142,7 +143,7 @@ output: tested -- panicking_script - test test_panic_in_main ... ok (???, 1006 gas) + test test_panic_in_main ... ok (???, 1012 gas) revert code: 8000000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -150,7 +151,7 @@ tested -- panicking_script └─ at panicking_script, src/main.sw:6:5 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 1695 gas) + test test_nested_panic_inlined ... ok (???, 1701 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -158,7 +159,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1695 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1701 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -166,7 +167,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 1727 gas) + test test_nested_panic_non_inlined ... ok (???, 1733 gas) revert code: 8100000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -174,7 +175,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1727 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1733 gas) revert code: 8100000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -182,14 +183,14 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 591 gas) + test test_generic_panic_with_unit ... ok (???, 687 gas) revert code: 8180000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 591 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 687 gas) revert code: 8180000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic @@ -210,7 +211,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 876 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 882 gas) revert code: 8280000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -218,7 +219,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 975 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 983 gas) revert code: 8280000000000000 ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json index 99f2b158158..a5ce1fa3e6b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json @@ -10,7 +10,7 @@ "concreteTypeId": "1b5759d94094368cfd443019e7ca5ec4074300e544e5ea993a979f5da627261e", "indirect": false, "name": "SOME_U256", - "offset": 384 + "offset": 304 } ], "encodingVersion": "1", diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap index ae1fdd7d81a..8d7e534dfa3 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap @@ -1,5 +1,6 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions --logs --test-threads 1 exit status: 0 @@ -286,57 +287,57 @@ warning ____ Compiled library "panic_in_non_statement_positions" with 23 warnings. - Finished debug [unoptimized + fuel] target(s) [1.984 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [1.976 KB] in ??? Running 16 tests, filtered 0 tests tested -- panic_in_non_statement_positions - test in_init ... ok (???, 675 gas) + test in_init ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_array ... ok (???, 675 gas) + test in_array ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_1_array ... ok (???, 675 gas) + test in_length_1_array ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_2_array_first ... ok (???, 675 gas) + test in_length_2_array_first ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_2_array_second ... ok (???, 675 gas) + test in_length_2_array_second ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_tuple ... ok (???, 675 gas) + test in_tuple ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_struct ... ok (???, 675 gas) + test in_struct ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_parentheses ... ok (???, 675 gas) + test in_parentheses ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_if_condition ... ok (???, 675 gas) + test in_if_condition ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_while_condition ... ok (???, 675 gas) + test in_while_condition ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_enum ... ok (???, 675 gas) + test in_enum ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_enum_multivariant ... ok (???, 675 gas) + test in_enum_multivariant ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_fun_arg ... ok (???, 675 gas) + test in_fun_arg ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_lazy_and ... ok (???, 675 gas) + test in_lazy_and ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_lazy_or ... ok (???, 675 gas) + test in_lazy_or ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_match_scrutinee ... ok (???, 675 gas) + test in_match_scrutinee ... ok (???, 663 gas) decoded log values: E(42), log rb: 5087777005172090899 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw index 1edcc889e75..b1d00c3e5cf 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x14ed3cd06c2947248f69d54bfa681fe40d26267be84df7e19e253622b7921bbe; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x86d1768b626182f734e91a9f5329519485e8afbae7a5ec3bf772c8c6b7ccff19; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release +const CONTRACT_ID = 0xc4b8bded498f485ba3a464cc4fa5422c46f0075d2deab484a16fb1d5053b578c; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release fn get_address() -> Option { Some(CONTRACT_ID.into()) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw index 1d7d058f6a0..9465aa65e76 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw @@ -9,12 +9,12 @@ use test_fuel_coin_abi::*; #[cfg(experimental_new_encoding = false)] const FUEL_COIN_CONTRACT_ID = 0xec2277ebe007ade87e3d797c3b1e070dcd542d5ef8f038b471f262ef9cebc87c; #[cfg(experimental_new_encoding = true)] -const FUEL_COIN_CONTRACT_ID = 0x445492d9a4b189add3229725dd4be67335748feafa80de945e03616ae915548f; // AUTO-CONTRACT-ID ../../test_contracts/test_fuel_coin_contract --release +const FUEL_COIN_CONTRACT_ID = 0x94b5fec0e420392f8db8c763f7ccd8b9b95395c092c80c073b836f297c74a801; // AUTO-CONTRACT-ID ../../test_contracts/test_fuel_coin_contract --release #[cfg(experimental_new_encoding = false)] const BALANCE_CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const BALANCE_CONTRACT_ID = 0x65edc923c4978fdeb1735cbc0b68da894ef962883dac36a072954ae71688cec5; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const BALANCE_CONTRACT_ID = 0x5f15eb17bbad0c13e6c654891bb3026de5c5bab5a9e430c2512fb07cada88bde; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let default_gas = 1_000_000_000_000; diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw index b9c23182408..41d4cd7aede 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw @@ -5,7 +5,7 @@ use balance_test_abi::BalanceTest; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x65edc923c4978fdeb1735cbc0b68da894ef962883dac36a072954ae71688cec5; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const CONTRACT_ID = 0x5f15eb17bbad0c13e6c654891bb3026de5c5bab5a9e430c2512fb07cada88bde; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let balance_test_contract = abi(BalanceTest, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw index e02babfc1e7..f73238166ac 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw @@ -6,7 +6,7 @@ use abi_with_tuples::{MyContract, Location, Person}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xfdc14550c8aee742cd556d0ab7f378b7be0d3b1e6e086c097352e94590d4ed02; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x77af75bf25a0f69c8430eaae5adbd2dcca0e5a04ce635b0b0a8112f9b567831d; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release +const CONTRACT_ID = 0x19d622bce479672e267405a79c0649efa875af3e4919b2c67d1cc0415bc745b9; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release fn main() -> bool { let the_abi = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw index 9ca07d2bf2e..797903a9e3f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw @@ -4,7 +4,7 @@ use basic_storage_abi::{BasicStorage, Quad}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x94db39f409a31b9f2ebcadeea44378e419208c20de90f5d8e1e33dc1523754cb; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x28dd1312e27716e2175cad2bed614ce2f930fe93dc250a5f57ae11adccc9ec76; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release +const CONTRACT_ID = 0x81b5a3650a3a4517f1830749dfc3d9993a6a6e3cd74861214dea17f51e7420c7; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release fn main() -> u64 { let addr = abi(BasicStorage, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw index 2b80f087698..118468a6572 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw @@ -5,7 +5,7 @@ use contract_with_type_aliases_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x0cbeb6efe3104b460be769bdc4ea101ebf16ccc16f2d7b667ec3e1c7f5ce35b5; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x304b67013ddf3ed734c82f355bac758b59be9f2c1f9a220279f0480a3b2ea4c1; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release +const CONTRACT_ID = 0x1c2546d5740b8cd3439cdfde1f5a4f11684eb1bf5e644ac480fd36fdc366408e; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release fn main() { let caller = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw index 7055ffb1118..7c689c47f21 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw @@ -6,7 +6,7 @@ use dynamic_contract_call::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xd1b4047af7ef111c023ab71069e01dc2abfde487c0a0ce1268e4f447e6c6e4c2; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x16654cef591c88cf55f8363e17d2beee62a11c2453b64fa30099d4e33e7fcd4f; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release +const CONTRACT_ID = 0xe653ffa93aec77d0fe59344134b1fb6253d999886eb8d0f43751a19fccb6f997; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release fn main() -> bool { let the_abi = abi(Incrementor, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw index e38cf87e97f..1b7166ec58c 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw @@ -5,7 +5,7 @@ use storage_enum_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc601d11767195485a6654d566c67774134668863d8c797a8c69e8778fb1f89e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xa09470dbde832b54231e8fca6ce5fb7a8bf051f56c7d0ea0b0b3101983954c5d; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release +const CONTRACT_ID = 0x2cce8767f39272b1321b7847f2e78b23ba475e526837c6af803d16eaeeb07488; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release fn main() -> u64 { let caller = abi(StorageEnum, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw index dcd6924884f..f993e40564a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw @@ -5,7 +5,7 @@ use auth_testing_abi::AuthTesting; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc2eec20491b53aab7232cbd27c31d15417b4e9daf0b89c74cc242ef1295f681f; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x964987560d5b794c9f2cf9a10604d749ac147ec7d5fdd7383d3e41080c5da2f3; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release +const CONTRACT_ID = 0x251dd84ae6824faa56ef5d28b173a30a13ec60927ae9a263d49a782562869a53; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release // should be false in the case of a script fn main() -> bool { diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw index 40f2885f529..2ae267ec95e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw @@ -6,7 +6,7 @@ use context_testing_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x6054c11cda000f5990373a4d61929396165be4dfdd61d5b7bd26da60ab0d8577; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xb3188335bdfa33e8f457a571c8b38b9f0d83e9eef0ad66a50a46b34a8ae228d6; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release +const CONTRACT_ID = 0x92e1b3b103bf5c0e3c5ccf3512337e2c91283b9159a5bd7b55d52b6e7bbd4700; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release fn main() -> bool { let gas: u64 = u64::max(); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw index 9496f1b7804..95a1f74d154 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw @@ -5,7 +5,7 @@ use nested_struct_args_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xe63d33a1b3a6903808b379f6a41a72fa8a370e8b76626775e7d9d2f9c4c5da40; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xd24a80a26cf5857cb572fd82019bcf029724615d401621c41ae2bfb7ba17df2b; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release +const CONTRACT_ID = 0x473ee2deb264bf78b5fa6057e54d48814c3b251fe3df48e5a3d40ba50a25deec; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release fn main() -> bool { let caller = abi(NestedStructArgs, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw index 350b460296d..03a7ed7fa38 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x3bc28acd66d327b8c1b9624c1fabfc07e9ffa1b5d71c2832c3bfaaf8f4b805e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xcb3b3354fd53ae49c831932c4a99b08821ee63ee7c9073a2a1e6a708dc883c61; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release +const CONTRACT_ID = 0x444fb78d9a9f5826fc5a41b88ab544d4cfae5905571fbd7235bb197c46fdb001; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release fn main() -> bool { let caller = abi(StorageAccess, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index 5bdfdeed818..eeabf298dd5 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -1,84 +1,71 @@ --- source: test/src/snapshot/mod.rs +snapshot_kind: text --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call --release --experimental const_generics -exit status: 101 +exit status: 0 output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [25.064 KB] in ??? + Finished release [optimized + fuel] target(s) [20.784 KB] in ??? Running 29 tests, filtered 0 tests tested -- const_of_contract_call - test cost_of_in_bool ... ok (???, 11883 gas) - test cost_of_in_u8 ... ok (???, 11848 gas) - test cost_of_in_u16 ... ok (???, 12160 gas) - test cost_of_in_u32 ... ok (???, 12413 gas) - test cost_of_in_u64 ... ok (???, 11619 gas) - test cost_of_in_u256 ... ok (???, 11700 gas) - test cost_of_in_b256 ... ok (???, 11682 gas) - test cost_of_in_str_0 ... ok (???, 11736 gas) - test cost_of_in_str_1 ... ok (???, 12331 gas) - test cost_of_in_str_8 ... ok (???, 11871 gas) - test cost_of_in_str_16 ... ok (???, 11864 gas) - test cost_of_in_str_32 ... ok (???, 11878 gas) - test cost_of_in_array_0 ... FAILED (???, 11499 gas) - test cost_of_in_array_1 ... ok (???, 11764 gas) - test cost_of_in_array_8 ... ok (???, 12953 gas) - test cost_of_in_array_16 ... ok (???, 12963 gas) - test cost_of_in_array_32 ... ok (???, 14232 gas) - test cost_of_in_array_64 ... ok (???, 16762 gas) - test cost_of_in_tuple_0 ... ok (???, 11454 gas) - test cost_of_in_tuple_1 ... ok (???, 11760 gas) - test cost_of_in_tuple_2 ... ok (???, 11835 gas) - test cost_of_in_tuple_3 ... ok (???, 11877 gas) - test cost_of_in_tuple_4 ... ok (???, 11833 gas) - test in_struct_u64 ... ok (???, 11771 gas) - test in_struct_u64_u64 ... ok (???, 11822 gas) - test in_struct_u64_u64_u64 ... ok (???, 11871 gas) - test in_enum_u64 ... ok (???, 11751 gas) - test in_enum_u64_u64 ... ok (???, 11748 gas) - test in_enum_u64_u64_u64 ... ok (???, 11764 gas) - - failures: - test cost_of_in_array_0, "test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/src/main.sw":347 - revert code: 0 - - - -test result: FAILED. 28 passed; 1 failed; finished in ??? + test cost_of_in_bool ... ok (???, 11304 gas) + test cost_of_in_u8 ... ok (???, 11119 gas) + test cost_of_in_u16 ... ok (???, 11524 gas) + test cost_of_in_u32 ... ok (???, 11777 gas) + test cost_of_in_u64 ... ok (???, 10953 gas) + test cost_of_in_u256 ... ok (???, 11000 gas) + test cost_of_in_b256 ... ok (???, 10982 gas) + test cost_of_in_str_0 ... ok (???, 11512 gas) + test cost_of_in_str_1 ... ok (???, 11691 gas) + test cost_of_in_str_8 ... ok (???, 11710 gas) + test cost_of_in_str_16 ... ok (???, 11703 gas) + test cost_of_in_str_32 ... ok (???, 11717 gas) + test cost_of_in_array_0 ... ok (???, 10917 gas) + test cost_of_in_array_1 ... ok (???, 11012 gas) + test cost_of_in_array_8 ... ok (???, 11685 gas) + test cost_of_in_array_16 ... ok (???, 11303 gas) + test cost_of_in_array_32 ... ok (???, 11612 gas) + test cost_of_in_array_64 ... ok (???, 12221 gas) + test cost_of_in_tuple_0 ... ok (???, 11139 gas) + test cost_of_in_tuple_1 ... ok (???, 11027 gas) + test cost_of_in_tuple_2 ... ok (???, 11110 gas) + test cost_of_in_tuple_3 ... ok (???, 11125 gas) + test cost_of_in_tuple_4 ... ok (???, 11095 gas) + test in_struct_u64 ... ok (???, 11056 gas) + test in_struct_u64_u64 ... ok (???, 11097 gas) + test in_struct_u64_u64_u64 ... ok (???, 11119 gas) + test in_enum_u64 ... ok (???, 11158 gas) + test in_enum_u64_u64 ... ok (???, 11162 gas) + test in_enum_u64_u64_u64 ... ok (???, 11178 gas) + +test result: OK. 29 passed; 0 failed; finished in ??? Finished in ??? -error: Some tests failed. > Block: ARRAY0 > replace-file src/main.sw "fn cost_of_in" "fn isolated_cost_of_in" > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call --release --experimental const_generics -exit status: 101 +exit status: 0 output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [952 B] in ??? + Finished release [optimized + fuel] target(s) [632 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_0 ... FAILED (???, 10293 gas) - - failures: - test isolated_cost_of_in_array_0, "test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/src/main.sw":175 - revert code: 0 + test isolated_cost_of_in_array_0 ... ok (???, 10183 gas) - - -test result: FAILED. 0 passed; 1 failed; finished in ??? +test result: OK. 1 passed; 0 failed; finished in ??? Finished in ??? -error: Some tests failed. > Block: ARRAY1 > replace-file src/main.sw "fn cost_of_in" "fn isolated_cost_of_in" @@ -89,12 +76,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.096 KB] in ??? + Finished release [optimized + fuel] target(s) [752 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_1 ... ok (???, 10540 gas) + test isolated_cost_of_in_array_1 ... ok (???, 10266 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -109,12 +96,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.12 KB] in ??? + Finished release [optimized + fuel] target(s) [768 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_16 ... ok (???, 11742 gas) + test isolated_cost_of_in_array_16 ... ok (???, 10559 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -129,12 +116,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.12 KB] in ??? + Finished release [optimized + fuel] target(s) [768 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_32 ... ok (???, 13003 gas) + test isolated_cost_of_in_array_32 ... ok (???, 10860 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -149,12 +136,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.12 KB] in ??? + Finished release [optimized + fuel] target(s) [768 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_64 ... ok (???, 15527 gas) + test isolated_cost_of_in_array_64 ... ok (???, 11461 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -169,12 +156,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.248 KB] in ??? + Finished release [optimized + fuel] target(s) [856 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_8 ... ok (???, 11726 gas) + test isolated_cost_of_in_array_8 ... ok (???, 10932 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -189,12 +176,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.032 KB] in ??? + Finished release [optimized + fuel] target(s) [728 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_b256 ... ok (???, 10489 gas) + test isolated_cost_of_in_b256 ... ok (???, 10268 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -209,12 +196,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.376 KB] in ??? + Finished release [optimized + fuel] target(s) [1.192 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_bool ... ok (???, 10663 gas) + test isolated_cost_of_in_bool ... ok (???, 10534 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -229,12 +216,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.064 KB] in ??? + Finished release [optimized + fuel] target(s) [912 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64 ... ok (???, 10504 gas) + test in_enum_u64 ... ok (???, 10391 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -249,12 +236,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.104 KB] in ??? + Finished release [optimized + fuel] target(s) [1.432 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64 ... ok (???, 10516 gas) + test in_enum_u64_u64 ... ok (???, 10430 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -269,12 +256,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.176 KB] in ??? + Finished release [optimized + fuel] target(s) [1.568 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64_u64 ... ok (???, 10524 gas) + test in_enum_u64_u64_u64 ... ok (???, 10438 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -289,12 +276,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [928 B] in ??? + Finished release [optimized + fuel] target(s) [1.184 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_0 ... ok (???, 10456 gas) + test isolated_cost_of_in_str_0 ... ok (???, 10662 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -309,12 +296,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.592 KB] in ??? + Finished release [optimized + fuel] target(s) [1.424 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_1 ... ok (???, 11006 gas) + test isolated_cost_of_in_str_1 ... ok (???, 10858 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -329,12 +316,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.144 KB] in ??? + Finished release [optimized + fuel] target(s) [1.472 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_16 ... ok (???, 10604 gas) + test isolated_cost_of_in_str_16 ... ok (???, 10877 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -349,12 +336,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.16 KB] in ??? + Finished release [optimized + fuel] target(s) [1.488 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_32 ... ok (???, 10611 gas) + test isolated_cost_of_in_str_32 ... ok (???, 10882 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -369,12 +356,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.112 KB] in ??? + Finished release [optimized + fuel] target(s) [1.44 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_8 ... ok (???, 10600 gas) + test isolated_cost_of_in_str_8 ... ok (???, 10873 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -389,12 +376,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.016 KB] in ??? + Finished release [optimized + fuel] target(s) [736 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64 ... ok (???, 10454 gas) + test in_struct_u64 ... ok (???, 10260 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -409,12 +396,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.064 KB] in ??? + Finished release [optimized + fuel] target(s) [1.224 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64_u64 ... ok (???, 10493 gas) + test in_struct_u64_u64 ... ok (???, 10303 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -429,12 +416,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.096 KB] in ??? + Finished release [optimized + fuel] target(s) [1.288 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64_u64_u64 ... ok (???, 10530 gas) + test in_struct_u64_u64_u64 ... ok (???, 10309 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -449,12 +436,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [712 B] in ??? + Finished release [optimized + fuel] target(s) [832 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_0 ... ok (???, 10236 gas) + test isolated_cost_of_in_tuple_0 ... ok (???, 10321 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -469,12 +456,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [976 B] in ??? + Finished release [optimized + fuel] target(s) [736 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_1 ... ok (???, 10423 gas) + test isolated_cost_of_in_tuple_1 ... ok (???, 10260 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -489,12 +476,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.048 KB] in ??? + Finished release [optimized + fuel] target(s) [1.208 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_2 ... ok (???, 10492 gas) + test isolated_cost_of_in_tuple_2 ... ok (???, 10302 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -509,12 +496,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.08 KB] in ??? + Finished release [optimized + fuel] target(s) [1.272 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_3 ... ok (???, 10529 gas) + test isolated_cost_of_in_tuple_3 ... ok (???, 10308 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -529,12 +516,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.112 KB] in ??? + Finished release [optimized + fuel] target(s) [1.328 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_4 ... ok (???, 10564 gas) + test isolated_cost_of_in_tuple_4 ... ok (???, 10312 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -549,12 +536,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.448 KB] in ??? + Finished release [optimized + fuel] target(s) [1.28 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u16 ... ok (???, 10932 gas) + test isolated_cost_of_in_u16 ... ok (???, 10783 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -569,12 +556,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.032 KB] in ??? + Finished release [optimized + fuel] target(s) [728 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u256 ... ok (???, 10489 gas) + test isolated_cost_of_in_u256 ... ok (???, 10268 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -589,12 +576,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.56 KB] in ??? + Finished release [optimized + fuel] target(s) [1.384 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u32 ... ok (???, 11175 gas) + test isolated_cost_of_in_u32 ... ok (???, 11026 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -609,12 +596,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [896 B] in ??? + Finished release [optimized + fuel] target(s) [688 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u64 ... ok (???, 10377 gas) + test isolated_cost_of_in_u64 ... ok (???, 10232 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -629,12 +616,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.344 KB] in ??? + Finished release [optimized + fuel] target(s) [984 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u8 ... ok (???, 10647 gas) + test isolated_cost_of_in_u8 ... ok (???, 10353 gas) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/in_language_tests/test_programs/storage_vec_iter_tests/src/impls.sw b/test/src/in_language_tests/test_programs/storage_vec_iter_tests/src/impls.sw index f1c0481f15e..0e99e16e7f0 100644 --- a/test/src/in_language_tests/test_programs/storage_vec_iter_tests/src/impls.sw +++ b/test/src/in_language_tests/test_programs/storage_vec_iter_tests/src/impls.sw @@ -308,6 +308,7 @@ impl TestInstance for RawPtrNewtype { } impl AbiEncode for RawPtrNewtype { + fn is_encode_trivial() -> bool { false } fn abi_encode(self, buffer: Buffer) -> Buffer { let ptr_as_u64 = asm(p: self.ptr) { p: u64 diff --git a/test/src/sdk-harness/test_projects/auth/mod.rs b/test/src/sdk-harness/test_projects/auth/mod.rs index abbc4ced361..2ee0f57d367 100644 --- a/test/src/sdk-harness/test_projects/auth/mod.rs +++ b/test/src/sdk-harness/test_projects/auth/mod.rs @@ -585,7 +585,7 @@ async fn can_get_predicate_address() { // Setup predicate. let hex_predicate_address: &str = - "0x61c2fbc40e1fe1602f8734928a6f1bf76d5d70f9c0407e6dc74e4bfdfb7ac392"; + "0xe549825429a82fde8b7906f216485a8a7641f9dab25252dabed67eb4e6262b29"; let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_data = AuthPredicateEncoder::default() @@ -710,7 +710,7 @@ async fn when_incorrect_predicate_address_passed() { async fn can_get_predicate_address_in_message() { // Setup predicate address. let hex_predicate_address: &str = - "0x61c2fbc40e1fe1602f8734928a6f1bf76d5d70f9c0407e6dc74e4bfdfb7ac392"; + "0xe549825429a82fde8b7906f216485a8a7641f9dab25252dabed67eb4e6262b29"; let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); diff --git a/test/src/sdk-harness/test_projects/result_option_expect/src/main.sw b/test/src/sdk-harness/test_projects/result_option_expect/src/main.sw index cb671e4e03b..10b38d6c9d9 100644 --- a/test/src/sdk-harness/test_projects/result_option_expect/src/main.sw +++ b/test/src/sdk-harness/test_projects/result_option_expect/src/main.sw @@ -12,6 +12,7 @@ enum Error { } impl AbiEncode for Error { + fn is_encode_trivial() -> bool { false } fn abi_encode(self, buffer: Buffer) -> Buffer { buffer } }

() + } fn abi_encode(self, buffer: Buffer) -> Buffer { let buffer = self.0.abi_encode(buffer); let buffer = self.1.abi_encode(buffer); @@ -2181,6 +2665,9 @@ where P: AbiEncode, Q: AbiEncode, { + fn is_encode_trivial() -> bool { + __runtime_mem_id::() == __encoding_mem_id::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::() && is_encode_trivial::