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 080ff29dd31..c94df9106bc 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 @@ -26,10 +26,10 @@ library { script { pub entry fn __entry() -> __ptr never, !3 { entry(): - v829v1 = call main_0(), !6 - v832v1 = const u64 0, !7 - v833v1 = const u64 0, !8 - retd v832v1 v833v1, !9 + v850v1 = call main_0(), !6 + v853v1 = const u64 0, !7 + v854v1 = const u64 0, !8 + retd v853v1 v854v1, !9 } entry_orig fn main_0() -> (), !13 { @@ -53,132 +53,132 @@ script { local [u8; 1] array entry(): - v1594v1 = get_local __ptr [u8; 5], __ret_val - v1595v1 = call array_repeat_zero_small_u8_1(v1594v1) - v1601v1 = get_local __ptr [u64; 5], __ret_val0 - v1602v1 = call array_repeat_zero_small_u16_2(v1601v1) - v1604v1 = get_local __ptr [u64; 5], __ret_val1 - v1605v1 = call array_repeat_zero_small_u16_2(v1604v1) - v1607v1 = get_local __ptr [u64; 5], __ret_val2 - v1608v1 = call array_repeat_zero_small_u16_2(v1607v1) - v1614v1 = get_local __ptr [u256; 5], __ret_val3 - v1615v1 = call array_repeat_zero_small_u256_5(v1614v1) - v1621v1 = get_local __ptr [b256; 5], __ret_val4 - v1622v1 = call array_repeat_zero_small_b256_6(v1621v1) - v1628v1 = get_local __ptr [bool; 5], __ret_val5 - v1629v1 = call array_repeat_zero_small_bool_7(v1628v1) - v1635v1 = get_local __ptr [u8; 25], __ret_val6 - v1636v1 = call array_repeat_zero_big_u8_8(v1635v1) - v1642v1 = get_local __ptr [u64; 25], __ret_val7 - v1643v1 = call array_repeat_zero_big_u32_10(v1642v1) - v1645v1 = get_local __ptr [u64; 25], __ret_val8 - v1646v1 = call array_repeat_zero_big_u32_10(v1645v1) - v1648v1 = get_local __ptr [u64; 25], __ret_val9 - v1649v1 = call array_repeat_zero_big_u32_10(v1648v1) - v1655v1 = get_local __ptr [u256; 25], __ret_val10 - v1656v1 = call array_repeat_zero_big_u256_12(v1655v1) - v1662v1 = get_local __ptr [b256; 25], __ret_val11 - v1663v1 = call array_repeat_zero_big_b256_13(v1662v1) - v1669v1 = get_local __ptr [bool; 25], __ret_val12 - v1670v1 = call array_repeat_zero_big_bool_14(v1669v1) - v1676v1 = get_local __ptr [bool; 5], __ret_val13 - v1677v1 = call small_array_repeat_15(v1676v1) - v1683v1 = get_local __ptr [bool; 25], __ret_val14 - v1684v1 = call big_array_repeat_16(v1683v1) - v1690v1 = get_local __ptr [u8; 262145], __ret_val15 - v1691v1 = call u8_array_bigger_than_18_bits_17(v1690v1) + v1631v1 = get_local __ptr [u8; 5], __ret_val + v1632v1 = call array_repeat_zero_small_u8_1(v1631v1) + v1638v1 = get_local __ptr [u64; 5], __ret_val0 + v1639v1 = call array_repeat_zero_small_u16_2(v1638v1) + v1641v1 = get_local __ptr [u64; 5], __ret_val1 + v1642v1 = call array_repeat_zero_small_u16_2(v1641v1) + v1644v1 = get_local __ptr [u64; 5], __ret_val2 + v1645v1 = call array_repeat_zero_small_u16_2(v1644v1) + v1651v1 = get_local __ptr [u256; 5], __ret_val3 + v1652v1 = call array_repeat_zero_small_u256_5(v1651v1) + v1658v1 = get_local __ptr [b256; 5], __ret_val4 + v1659v1 = call array_repeat_zero_small_b256_6(v1658v1) + v1665v1 = get_local __ptr [bool; 5], __ret_val5 + v1666v1 = call array_repeat_zero_small_bool_7(v1665v1) + v1672v1 = get_local __ptr [u8; 25], __ret_val6 + v1673v1 = call array_repeat_zero_big_u8_8(v1672v1) + v1679v1 = get_local __ptr [u64; 25], __ret_val7 + v1680v1 = call array_repeat_zero_big_u32_10(v1679v1) + v1682v1 = get_local __ptr [u64; 25], __ret_val8 + v1683v1 = call array_repeat_zero_big_u32_10(v1682v1) + v1685v1 = get_local __ptr [u64; 25], __ret_val9 + v1686v1 = call array_repeat_zero_big_u32_10(v1685v1) + v1692v1 = get_local __ptr [u256; 25], __ret_val10 + v1693v1 = call array_repeat_zero_big_u256_12(v1692v1) + v1699v1 = get_local __ptr [b256; 25], __ret_val11 + v1700v1 = call array_repeat_zero_big_b256_13(v1699v1) + v1706v1 = get_local __ptr [bool; 25], __ret_val12 + v1707v1 = call array_repeat_zero_big_bool_14(v1706v1) + v1713v1 = get_local __ptr [bool; 5], __ret_val13 + v1714v1 = call small_array_repeat_15(v1713v1) + v1720v1 = get_local __ptr [bool; 25], __ret_val14 + v1721v1 = call big_array_repeat_16(v1720v1) + v1727v1 = get_local __ptr [u8; 262145], __ret_val15 + v1728v1 = call u8_array_bigger_than_18_bits_17(v1727v1) v236v1 = call arrays_with_const_length_18(), !16 - v1697v1 = get_local __ptr [u8; 1], array - v1698v1 = call decode_array_19(v1697v1) - v820v1 = get_local __ptr [u8; 1], array, !17 - v821v1 = const u64 0, !18 - v822v1 = get_elem_ptr v820v1, __ptr u8, v821v1, !19 - v823v1 = load v822v1 - v824v1 = const u8 255, !20 - v1560v1 = cmp eq v823v1 v824v1, !29 - v601v1 = const bool false, !30 - v1564v1 = cmp eq v1560v1 v601v1, !33 - cbr v1564v1, assert_eq_38_block0(), assert_eq_38_block1(), !34 + v1734v1 = get_local __ptr [u8; 1], array + v1735v1 = call decode_array_19(v1734v1) + v841v1 = get_local __ptr [u8; 1], array, !17 + v842v1 = const u64 0, !18 + v843v1 = get_elem_ptr v841v1, __ptr u8, v842v1, !19 + v844v1 = load v843v1 + v845v1 = const u8 255, !20 + v1571v1 = cmp eq v844v1 v845v1, !29 + v628v1 = const bool false, !30 + v1575v1 = cmp eq v1571v1 v628v1, !33 + cbr v1575v1, assert_eq_42_block0(), assert_eq_42_block1(), !34 - assert_eq_38_block0(): - v1571v1 = call log_42(v823v1), !37 - v1573v1 = call log_42(v824v1), !40 - v846v1 = const u64 18446744073709486083 - revert v846v1, !45 + assert_eq_42_block0(): + v1582v1 = call log_46(v844v1), !37 + v1584v1 = call log_46(v845v1), !40 + v867v1 = const u64 18446744073709486083 + revert v867v1, !45 - assert_eq_38_block1(): - v827v1 = const unit () - ret () v827v1 + assert_eq_42_block1(): + v848v1 = const unit () + ret () v848v1 } fn array_repeat_zero_small_u8_1(__ret_value: __ptr [u8; 5]) -> (), !49 { entry(__ret_value: __ptr [u8; 5]): mem_clear_val __ret_value - v1592v1 = const unit () - ret () v1592v1 + v1629v1 = const unit () + ret () v1629v1 } fn array_repeat_zero_small_u16_2(__ret_value: __ptr [u64; 5]) -> (), !52 { entry(__ret_value: __ptr [u64; 5]): mem_clear_val __ret_value - v1599v1 = const unit () - ret () v1599v1 + v1636v1 = const unit () + ret () v1636v1 } fn array_repeat_zero_small_u256_5(__ret_value: __ptr [u256; 5]) -> (), !55 { entry(__ret_value: __ptr [u256; 5]): mem_clear_val __ret_value - v1612v1 = const unit () - ret () v1612v1 + v1649v1 = const unit () + ret () v1649v1 } fn array_repeat_zero_small_b256_6(__ret_value: __ptr [b256; 5]) -> (), !58 { entry(__ret_value: __ptr [b256; 5]): mem_clear_val __ret_value - v1619v1 = const unit () - ret () v1619v1 + v1656v1 = const unit () + ret () v1656v1 } fn array_repeat_zero_small_bool_7(__ret_value: __ptr [bool; 5]) -> (), !61 { entry(__ret_value: __ptr [bool; 5]): mem_clear_val __ret_value - v1626v1 = const unit () - ret () v1626v1 + v1663v1 = const unit () + ret () v1663v1 } fn array_repeat_zero_big_u8_8(__ret_value: __ptr [u8; 25]) -> (), !64 { entry(__ret_value: __ptr [u8; 25]): mem_clear_val __ret_value - v1633v1 = const unit () - ret () v1633v1 + v1670v1 = const unit () + ret () v1670v1 } fn array_repeat_zero_big_u32_10(__ret_value: __ptr [u64; 25]) -> (), !67 { entry(__ret_value: __ptr [u64; 25]): mem_clear_val __ret_value - v1640v1 = const unit () - ret () v1640v1 + v1677v1 = const unit () + ret () v1677v1 } fn array_repeat_zero_big_u256_12(__ret_value: __ptr [u256; 25]) -> (), !70 { entry(__ret_value: __ptr [u256; 25]): mem_clear_val __ret_value - v1653v1 = const unit () - ret () v1653v1 + v1690v1 = const unit () + ret () v1690v1 } fn array_repeat_zero_big_b256_13(__ret_value: __ptr [b256; 25]) -> (), !73 { entry(__ret_value: __ptr [b256; 25]): mem_clear_val __ret_value - v1660v1 = const unit () - ret () v1660v1 + v1697v1 = const unit () + ret () v1697v1 } fn array_repeat_zero_big_bool_14(__ret_value: __ptr [bool; 25]) -> (), !76 { entry(__ret_value: __ptr [bool; 25]): mem_clear_val __ret_value - v1667v1 = const unit () - ret () v1667v1 + v1704v1 = const unit () + ret () v1704v1 } fn small_array_repeat_15(__ret_value: __ptr [bool; 5]) -> (), !79 { @@ -199,8 +199,8 @@ script { v141v1 = const u64 4 v142v1 = get_elem_ptr __ret_value, __ptr bool, v141v1 store v128v1 to v142v1, !81 - v1674v1 = const unit () - ret () v1674v1 + v1711v1 = const unit () + ret () v1711v1 } fn big_array_repeat_16(__ret_value: __ptr [bool; 25]) -> (), !84 { @@ -219,15 +219,15 @@ script { cbr v159v1, array_init_loop(v157v1), array_init_exit() array_init_exit(): - v1681v1 = const unit () - ret () v1681v1 + v1718v1 = const unit () + ret () v1718v1 } fn u8_array_bigger_than_18_bits_17(__ret_value: __ptr [u8; 262145]) -> (), !89 { entry(__ret_value: __ptr [u8; 262145]): mem_clear_val __ret_value - v1688v1 = const unit () - ret () v1688v1 + v1725v1 = const unit () + ret () v1725v1 } fn arrays_with_const_length_18() -> (), !92 { @@ -260,15 +260,15 @@ script { v295v1 = get_elem_ptr v292v1, __ptr u8, v294v1 v293v1 = const u8 255, !101 store v293v1 to v295v1, !100 - v1581v1 = get_local __ptr [u8; 1], __anon_0 - v1704v1 = get_local __ptr slice, s - v1705v1 = call to_slice_20(v1581v1, v1704v1) - v1586v1 = get_local __ptr slice, s - v1711v1 = get_local __ptr [u8; 1], __ret_val0 - v1712v1 = call abi_decode_24(v1586v1, v1711v1) - mem_copy_val __ret_value, v1711v1 - v1695v1 = const unit () - ret () v1695v1 + v1618v1 = get_local __ptr [u8; 1], __anon_0 + v1741v1 = get_local __ptr slice, s + v1742v1 = call to_slice_20(v1618v1, v1741v1) + v1623v1 = get_local __ptr slice, s + v1748v1 = get_local __ptr [u8; 1], __ret_val0 + v1749v1 = call abi_decode_24(v1623v1, v1748v1) + mem_copy_val __ret_value, v1748v1 + v1732v1 = const unit () + ret () v1732v1 } fn to_slice_20(array: __ptr [u8; 1], __ret_value: __ptr slice) -> (), !104 { @@ -281,150 +281,97 @@ script { mem_copy_val v240v1, array v286v1 = get_local __ptr [u8; 1], array_, !105 v287v1 = cast_ptr v286v1 to ptr, !106 - v877v1 = get_local __ptr { ptr, u64 }, parts_, !112 - v1770v1 = const u64 0 - v1771v1 = get_elem_ptr v877v1, __ptr ptr, v1770v1 - store v287v1 to v1771v1 - v1773v1 = const u64 1 - v1774v1 = get_elem_ptr v877v1, __ptr u64, v1773v1 - v869v1 = const u64 1, !115 - store v869v1 to v1774v1 - v879v1 = get_local __ptr { ptr, u64 }, parts_, !117 - v1714v1 = asm(ptr: v879v1) -> __ptr slice ptr { + v898v1 = get_local __ptr { ptr, u64 }, parts_, !112 + v1797v1 = const u64 0 + v1798v1 = get_elem_ptr v898v1, __ptr ptr, v1797v1 + store v287v1 to v1798v1 + v1800v1 = const u64 1 + v1801v1 = get_elem_ptr v898v1, __ptr u64, v1800v1 + v890v1 = const u64 1, !115 + store v890v1 to v1801v1 + v900v1 = get_local __ptr { ptr, u64 }, parts_, !117 + v1751v1 = asm(ptr: v900v1) -> __ptr slice ptr { } - v1743v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v1743v1, v1714v1 - mem_copy_val __ret_value, v1743v1 - v1702v1 = const unit () - ret () v1702v1 + v1778v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v1778v1, v1751v1 + mem_copy_val __ret_value, v1778v1 + v1739v1 = const unit () + ret () v1739v1 } 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]): - v302v1 = get_local __ptr slice, data_ - mem_copy_val v302v1, data - v337v1 = get_local __ptr slice, data_, !122 - v1147v1 = get_local __ptr slice, self_, !125 - mem_copy_val v1147v1, v337v1 - v1149v1 = get_local __ptr slice, self_, !127 - v1151v1 = get_local __ptr slice, slice_, !130 - mem_copy_val v1151v1, v1149v1 - v1153v1 = get_local __ptr slice, slice_, !132 - v1716v1 = asm(ptr: v1153v1) -> __ptr { ptr, u64 } ptr { + v1594v1 = get_local __ptr slice, slice_0, !126 + mem_copy_val v1594v1, data + v1596v1 = get_local __ptr slice, slice_0, !128 + v1753v1 = asm(ptr: v1596v1) -> __ptr { ptr, u64 } ptr { } - v1749v1 = get_local __ptr { ptr, u64 }, __aggr_memcpy_0 - mem_copy_val v1749v1, v1716v1 - v1157v1 = get_local __ptr { ptr, u64 }, __anon_0, !125 - mem_copy_val v1157v1, v1749v1 + v1803v1 = const u64 0 + v1804v1 = get_elem_ptr v1753v1, __ptr ptr, v1803v1 + v1805v1 = load v1804v1 + v1806v1 = const u64 1 + v1807v1 = get_elem_ptr v1753v1, __ptr u64, v1806v1 + v1808v1 = load v1807v1 + v1598v1 = get_local __ptr { ptr, u64 }, __anon_02, !129 + v1817v1 = const u64 0 + v1818v1 = get_elem_ptr v1598v1, __ptr ptr, v1817v1 + store v1805v1 to v1818v1 + v1820v1 = const u64 1 + v1821v1 = get_elem_ptr v1598v1, __ptr u64, v1820v1 + store v1808v1 to v1821v1 v333v1 = const u64 0 - v1159v1 = get_elem_ptr v1157v1, __ptr ptr, v333v1, !134 - v366v1 = get_local __ptr slice, data_, !135 - v1164v1 = get_local __ptr slice, self_0, !138 - mem_copy_val v1164v1, v366v1 - v1166v1 = get_local __ptr slice, self_0, !140 - v1168v1 = get_local __ptr slice, slice_0, !143 - mem_copy_val v1168v1, v1166v1 - v1170v1 = get_local __ptr slice, slice_0, !144 - v1718v1 = asm(ptr: v1170v1) -> __ptr { ptr, u64 } ptr { - } - v1754v1 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 - mem_copy_val v1754v1, v1718v1 - v1174v1 = get_local __ptr { ptr, u64 }, __anon_00, !138 - mem_copy_val v1174v1, v1754v1 - v1188v1 = get_local __ptr { ptr }, __anon_01, !148 - v313v1 = const u64 0 - v1189v1 = get_elem_ptr v1188v1, __ptr ptr, v313v1, !149 - mem_copy_val v1189v1, v1159v1 - v370v1 = get_local __ptr { ptr }, buffer, !150 - mem_copy_val v370v1, v1188v1 - v573v1 = get_local __ptr { ptr }, buffer, !151 - v1205v1 = get_local __ptr [u8; 1], __anon_02, !155 - mem_clear_val v1205v1, !156 - v1208v1 = get_local __ptr [u8; 1], array, !158 - mem_copy_val v1208v1, v1205v1 - v1210v1 = get_local __ptr [u8; 1], array, !160 - v1211v1 = cast_ptr v1210v1 to __ptr [u8; 1], !156 - v390v1 = const u64 0, !161 - br abi_decode_30_while(v390v1), !156 - - abi_decode_30_while(v575v3: u64): - v408v1 = const u64 1 - v1220v1 = cmp lt v575v3 v408v1, !164 - cbr v1220v1, abi_decode_30_while_body(), abi_decode_30_end_while(), !156 - - abi_decode_30_while_body(): - v414v1 = const u64 1 - v1228v1 = asm(idx: v575v3, elem_ir_type_size: v414v1, ptr: v1211v1, offset_temp, ptr_out) -> __ptr u8 ptr_out, !156 { - mul offset_temp idx elem_ir_type_size - add ptr_out ptr offset_temp + v1600v1 = get_elem_ptr v1598v1, __ptr ptr, v333v1, !131 + v1601v1 = load v1600v1, !129 + v313v1 = const u64 1 + v340v1 = asm(size: v313v1, src: v1601v1) -> __ptr [u8; 1] hp, !132 { + aloc size, !133 + mcp hp src size, !134 } - v471v1 = const u64 0 - v1265v1 = get_elem_ptr v573v1, __ptr ptr, v471v1, !172 - v1266v1 = load v1265v1, !173 - v1267v1 = asm(ptr: v1266v1, val) -> u8 val, !175 { - lb val ptr i0, !176 - } - v1271v1 = load v1265v1, !177 - v1272v1 = const u64 1, !178 - v1273v1 = add v1271v1, v1272v1, !179 - store v1273v1 to v1265v1, !181 - store v1267v1 to v1228v1, !183 - v559v1 = const u64 1, !184 - v1306v1 = add v575v3, v559v1, !187 - br abi_decode_30_while(v1306v1), !156 - - abi_decode_30_end_while(): - mem_copy_val __ret_value, v1211v1 - v1709v1 = const unit () - ret () v1709v1 + v1823v1 = const u64 0 + v1824v1 = get_elem_ptr v340v1, __ptr u8, v1823v1 + v1825v1 = load v1824v1 + v1830v1 = const u64 0 + v1831v1 = get_elem_ptr __ret_value, __ptr u8, v1830v1 + store v1825v1 to v1831v1 + v1746v1 = const unit () + ret () v1746v1 } - 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): - v1411v1 = get_local __ptr u8, item_, !193 - store value to v1411v1, !193 - v1509v1 = get_local __ptr u8, item_, !195 - v645v1 = const u64 1 - v1510v1 = asm(size: v645v1, src: v1509v1) -> ptr hp, !197 { - aloc size, !198 - mcp hp src size, !199 + v1430v1 = get_local __ptr u8, item_, !140 + store value to v1430v1, !140 + v1520v1 = get_local __ptr u8, item_, !142 + v666v1 = const u64 1 + v1521v1 = asm(size: v666v1, src: v1520v1) -> ptr hp, !144 { + aloc size, !145 + mcp hp src size, !146 } - v1514v1 = get_local __ptr { ptr, u64 }, __anon_0, !201 - v659v1 = const u64 0 - v1515v1 = get_elem_ptr v1514v1, __ptr ptr, v659v1, !202 - store v1510v1 to v1515v1, !203 - v662v1 = const u64 1 - v1517v1 = get_elem_ptr v1514v1, __ptr u64, v662v1, !204 - store v645v1 to v1517v1, !205 - v1723v1 = asm(s: v1514v1) -> __ptr slice s { + v1525v1 = get_local __ptr { ptr, u64 }, __anon_0, !148 + v680v1 = const u64 0 + v1526v1 = get_elem_ptr v1525v1, __ptr ptr, v680v1, !149 + store v1521v1 to v1526v1, !150 + v683v1 = const u64 1 + v1528v1 = get_elem_ptr v1525v1, __ptr u64, v683v1, !151 + store v666v1 to v1528v1, !152 + v1758v1 = asm(s: v1525v1) -> __ptr slice s { } - v1761v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v1761v1, v1723v1 - v1720v1 = get_local __ptr slice, __log_arg - mem_copy_val v1720v1, v1761v1 - v790v1 = const u64 14454674236531057292 - log __ptr slice v1720v1, v790v1 - v793v1 = const unit () - ret () v793v1 + v1788v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v1788v1, v1758v1 + v1755v1 = get_local __ptr slice, __log_arg + mem_copy_val v1755v1, v1788v1 + v811v1 = const u64 14454674236531057292 + log __ptr slice v1755v1, v811v1 + v814v1 = const unit () + ret () v814v1 } } @@ -547,93 +494,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 +633,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 +850,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 +913,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 +1009,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 +1226,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 +1382,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 +1390,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 aab7d5e2512..27633b5b645 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 @@ -17,63 +17,38 @@ 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): - v416v1 = get_local __ptr { ptr }, buffer, !14 - v114v1 = const u64 0 - v417v1 = get_elem_ptr v416v1, __ptr ptr, v114v1, !15 - store ptr to v417v1, !16 - v171v1 = get_local __ptr { ptr }, buffer, !17 - v136v1 = const u64 0 - v423v3 = get_elem_ptr v171v1, __ptr ptr, v136v1, !25 - v613v1 = load v423v3, !26 - v614v1 = asm(ptr: v613v1, val) -> u64 val, !28 { - lw val ptr i0, !29 - } - v616v1 = load v423v3, !30 - v617v1 = const u64 8, !31 - v618v1 = add v616v1, v617v1, !32 - store v618v1 to v423v3, !34 - v424v1 = get_local __ptr { u64 }, temp, !36 - v166v1 = const u64 0 - v425v1 = get_elem_ptr v424v1, __ptr u64, v166v1, !37 - store v614v1 to v425v1, !38 - v178v1 = get_local __ptr { u64 }, temp, !39 - v179v1 = cast_ptr v178v1 to ptr, !40 - v180v1 = const u64 8 - v181v1 = asm(target: target, temp: v179v1, size: v180v1) -> (), !41 { - mcp target temp size, !42 + v138v1 = asm(src: ptr, target: target, len: len) -> (), !11 { + mcp target src len, !12 } - v182v1 = const unit () - ret () v182v1 + v220v1 = const unit () + ret () v220v1 } - pub entry fn __entry() -> __ptr never, !46 { - local u64 item_ + pub entry fn __entry() -> __ptr never, !16 { + local u64 _result entry(): - v254v1 = call main_8(), !49 - v527v1 = get_local __ptr u64, item_, !52 - store v254v1 to v527v1, !52 - v609v1 = get_local __ptr u64, item_, !54 - v283v1 = const u64 8 - retd v609v1 v283v1, !56 + v314v1 = call main_15(), !19 + v315v1 = get_local __ptr u64, _result, !20 + store v314v1 to v315v1, !20 + v438v1 = get_local __ptr u64, _result, !21 + v325v1 = const u64 8 + retd v438v1 v325v1, !25 } - entry_orig fn main_8() -> u64, !59 { + entry_orig fn main_15() -> u64, !28 { entry(): - v244v1 = get_config __ptr { u64 }, WRAPPED, !60 - v245v1 = const u64 0 - v246v1 = get_elem_ptr v244v1, __ptr u64, v245v1, !61 - v247v1 = load v246v1 - v248v1 = get_config __ptr { u64 }, TUPLE, !62 - v249v1 = const u64 0 - v250v1 = get_elem_ptr v248v1, __ptr u64, v249v1, !63 - v251v1 = load v250v1 - v457v1 = add v247v1, v251v1, !66 - ret u64 v457v1 + v304v1 = get_config __ptr { u64 }, WRAPPED, !29 + v305v1 = const u64 0 + v306v1 = get_elem_ptr v304v1, __ptr u64, v305v1, !30 + v307v1 = load v306v1 + v308v1 = get_config __ptr { u64 }, TUPLE, !31 + v309v1 = const u64 0 + v310v1 = get_elem_ptr v308v1, __ptr u64, v309v1, !32 + v311v1 = load v310v1 + v563v1 = add v307v1, v311v1, !35 + ret u64 v563v1 } } @@ -81,69 +56,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 +111,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 +139,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 179c124c371..0afd9575256 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 @@ -71,7 +71,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.808 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [37.512 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 87e9a9b0d7c..24a5a2ed35b 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 @@ -16,18 +16,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(): - v1420v1 = call main_0(), !6 - v3380v1 = get_local __ptr u64, item_, !9 - store v1420v1 to v3380v1, !9 - v3409v1 = get_local __ptr u64, item_, !12 - v1437v1 = const u64 8 - retd v3409v1 v1437v1, !14 + v1464v1 = call main_0(), !6 + v1465v1 = get_local __ptr u64, _result, !7 + store v1464v1 to v1465v1, !7 + v1506v1 = get_local __ptr u64, _result, !8 + v1471v1 = const u64 8 + retd v1506v1 v1471v1, !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 @@ -41,148 +41,148 @@ script { local mut { { ptr, u64 }, u64 } e entry(): - v3412v1 = get_local __ptr u256, __const - v193v1 = const u64 0, !19 - v194v1 = call local_log_1(v193v1), !22 - v202v1 = const u64 0, !24 - v3356v1 = alloc u64 x v202v1, !33 - v3358v1 = get_local __ptr { ptr, u64 }, __anon_000, !35 - v206v1 = const u64 0 - v3359v1 = get_elem_ptr v3358v1, __ptr ptr, v206v1, !36 - store v3356v1 to v3359v1, !37 - v209v1 = const u64 1 - v3361v1 = get_elem_ptr v3358v1, __ptr u64, v209v1, !38 - v204v1 = const u64 0, !39 - store v204v1 to v3361v1, !40 - v3365v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !42 - v217v1 = const u64 0 - v3366v1 = get_elem_ptr v3365v1, __ptr { ptr, u64 }, v217v1, !43 - mem_copy_val v3366v1, v3358v1 - v220v1 = const u64 1 - v3368v1 = get_elem_ptr v3365v1, __ptr u64, v220v1, !43 - v215v1 = const u64 0, !44 - store v215v1 to v3368v1, !45 - v497v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !46 - v499v1 = const u64 1, !47 - v500v1 = call push_10(v497v1, v499v1), !50 - v501v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !51 - v503v1 = const u64 2, !52 - v504v1 = call push_10(v501v1, v503v1), !55 - v505v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !56 - v507v1 = const u64 3, !57 - v508v1 = call push_10(v505v1, v507v1), !60 - v1067v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !61 - v1070v1 = get_global __ptr string<4>, __const_global - v1071v1 = cast_ptr v1070v1 to ptr, !62 - v1073v1 = get_local __ptr { ptr, u64 }, __anon_0, !62 - v1074v1 = const u64 0 - v1075v1 = get_elem_ptr v1073v1, __ptr ptr, v1074v1 - store v1071v1 to v1075v1, !62 - v1077v1 = const u64 1 - v1078v1 = get_elem_ptr v1073v1, __ptr u64, v1077v1 - v1072v1 = const u64 4 - store v1072v1 to v1078v1, !62 - v1080v1 = get_local __ptr slice, __anon_1, !62 - mem_copy_bytes v1080v1, v1073v1, 16 - v1086v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg, !63 - v1087v1 = const u64 0 - v1088v1 = get_elem_ptr v1086v1, __ptr u64, v1087v1 - v1063v1 = const u64 1, !64 - store v1063v1 to v1088v1, !63 - v1090v1 = const u64 1 - v1091v1 = get_elem_ptr v1086v1, __ptr u64, v1090v1 - v1064v1 = const u64 2, !65 - store v1064v1 to v1091v1, !63 - v1093v1 = const u64 2 - v1094v1 = get_elem_ptr v1086v1, __ptr u64, v1093v1 - v1065v1 = const u64 3, !66 - store v1065v1 to v1094v1, !63 - v1096v1 = const u64 3 - v1097v1 = get_elem_ptr v1086v1, __ptr u8, v1096v1 - v1066v1 = const u8 4, !67 - store v1066v1 to v1097v1, !63 - v1099v1 = const u64 4 - v1100v1 = get_elem_ptr v1086v1, __ptr { { ptr, u64 }, u64 }, v1099v1 - mem_copy_val v1100v1, v1067v1 - v1102v1 = const u64 5 - v1103v1 = get_elem_ptr v1086v1, __ptr slice, v1102v1 - mem_copy_val v1103v1, v1080v1 - v1105v1 = const u64 6 - v1106v1 = get_elem_ptr v1086v1, __ptr u256, v1105v1 - mem_copy_val v1106v1, v3412v1 - v3444v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg - v3446v1 = call local_log_19(v3444v1) - v1190v1 = get_local __ptr { u64 }, __tmp_arg0, !68 - v1191v1 = const u64 0 - v1192v1 = get_elem_ptr v1190v1, __ptr u64, v1191v1 - v1189v1 = const u64 1, !69 - store v1189v1 to v1192v1, !68 - v3449v1 = get_local __ptr { u64 }, __tmp_arg0 - v3451v1 = call local_log_32(v3449v1) - v1320v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1, !70 - v1321v1 = const u64 0 - v1322v1 = get_elem_ptr v1320v1, __ptr u64, v1321v1, !70 - v1319v1 = const u64 0, !70 - store v1319v1 to v1322v1, !70 - v1325v1 = get_local __ptr { u64 }, __anon_5, !71 - v1326v1 = const u64 0 - v1327v1 = get_elem_ptr v1325v1, __ptr u64, v1326v1 - v1324v1 = const u64 1, !72 - store v1324v1 to v1327v1, !71 - v1330v1 = const u64 1 - v1331v1 = const u64 0 - v1332v1 = get_elem_ptr v1320v1, __ptr { u64 }, v1330v1, v1331v1, !70 - mem_copy_val v1332v1, v1325v1 - v3463v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1 - v3465v1 = call local_log_35(v3463v1) - v1337v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2, !70 - v1338v1 = const u64 0 - v1339v1 = get_elem_ptr v1337v1, __ptr u64, v1338v1, !70 - v1336v1 = const u64 1, !70 - store v1336v1 to v1339v1, !70 - v3466v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2 - v3468v1 = call local_log_35(v3466v1) - v3477v1 = get_local __ptr { }, __tmp_arg3 - v3479v1 = call local_log_38(v3477v1) - v1418v1 = const u64 1, !73 - ret u64 v1418v1 + v3774v1 = get_local __ptr u256, __const + v175v1 = const u64 0, !18 + v176v1 = call local_log_1(v175v1), !21 + v184v1 = const u64 0, !23 + v3727v1 = alloc u64 x v184v1, !32 + v3729v1 = get_local __ptr { ptr, u64 }, __anon_000, !34 + v188v1 = const u64 0 + v3730v1 = get_elem_ptr v3729v1, __ptr ptr, v188v1, !35 + store v3727v1 to v3730v1, !36 + v191v1 = const u64 1 + v3732v1 = get_elem_ptr v3729v1, __ptr u64, v191v1, !37 + v186v1 = const u64 0, !38 + store v186v1 to v3732v1, !39 + v3736v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !41 + v199v1 = const u64 0 + v3737v1 = get_elem_ptr v3736v1, __ptr { ptr, u64 }, v199v1, !42 + mem_copy_val v3737v1, v3729v1 + v202v1 = const u64 1 + v3739v1 = get_elem_ptr v3736v1, __ptr u64, v202v1, !42 + v197v1 = const u64 0, !43 + store v197v1 to v3739v1, !44 + v491v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !45 + v493v1 = const u64 1, !46 + v494v1 = call push_11(v491v1, v493v1), !49 + v495v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !50 + v497v1 = const u64 2, !51 + v498v1 = call push_11(v495v1, v497v1), !54 + v499v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !55 + v501v1 = const u64 3, !56 + v502v1 = call push_11(v499v1, v501v1), !59 + v1109v1 = get_local __ptr { { ptr, u64 }, u64 }, e, !60 + v1112v1 = get_global __ptr string<4>, __const_global + v1113v1 = cast_ptr v1112v1 to ptr, !61 + v1115v1 = get_local __ptr { ptr, u64 }, __anon_0, !61 + v1116v1 = const u64 0 + v1117v1 = get_elem_ptr v1115v1, __ptr ptr, v1116v1 + store v1113v1 to v1117v1, !61 + v1119v1 = const u64 1 + v1120v1 = get_elem_ptr v1115v1, __ptr u64, v1119v1 + v1114v1 = const u64 4 + store v1114v1 to v1120v1, !61 + v1122v1 = get_local __ptr slice, __anon_1, !61 + mem_copy_bytes v1122v1, v1115v1, 16 + v1128v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg, !62 + v1129v1 = const u64 0 + v1130v1 = get_elem_ptr v1128v1, __ptr u64, v1129v1 + v1105v1 = const u64 1, !63 + store v1105v1 to v1130v1, !62 + v1132v1 = const u64 1 + v1133v1 = get_elem_ptr v1128v1, __ptr u64, v1132v1 + v1106v1 = const u64 2, !64 + store v1106v1 to v1133v1, !62 + v1135v1 = const u64 2 + v1136v1 = get_elem_ptr v1128v1, __ptr u64, v1135v1 + v1107v1 = const u64 3, !65 + store v1107v1 to v1136v1, !62 + v1138v1 = const u64 3 + v1139v1 = get_elem_ptr v1128v1, __ptr u8, v1138v1 + v1108v1 = const u8 4, !66 + store v1108v1 to v1139v1, !62 + v1141v1 = const u64 4 + v1142v1 = get_elem_ptr v1128v1, __ptr { { ptr, u64 }, u64 }, v1141v1 + mem_copy_val v1142v1, v1109v1 + v1144v1 = const u64 5 + v1145v1 = get_elem_ptr v1128v1, __ptr slice, v1144v1 + mem_copy_val v1145v1, v1122v1 + v1147v1 = const u64 6 + v1148v1 = get_elem_ptr v1128v1, __ptr u256, v1147v1 + mem_copy_val v1148v1, v3774v1 + v3812v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg + v3814v1 = call local_log_21(v3812v1) + v1232v1 = get_local __ptr { u64 }, __tmp_arg0, !67 + v1233v1 = const u64 0 + v1234v1 = get_elem_ptr v1232v1, __ptr u64, v1233v1 + v1231v1 = const u64 1, !68 + store v1231v1 to v1234v1, !67 + v3823v1 = get_local __ptr { u64 }, __tmp_arg0 + v3825v1 = call local_log_48(v3823v1) + v1370v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1, !69 + v1371v1 = const u64 0 + v1372v1 = get_elem_ptr v1370v1, __ptr u64, v1371v1, !69 + v1369v1 = const u64 0, !69 + store v1369v1 to v1372v1, !69 + v1375v1 = get_local __ptr { u64 }, __anon_5, !70 + v1376v1 = const u64 0 + v1377v1 = get_elem_ptr v1375v1, __ptr u64, v1376v1 + v1374v1 = const u64 1, !71 + store v1374v1 to v1377v1, !70 + v1380v1 = const u64 1 + v1381v1 = const u64 0 + v1382v1 = get_elem_ptr v1370v1, __ptr { u64 }, v1380v1, v1381v1, !69 + mem_copy_val v1382v1, v1375v1 + v3837v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1 + v3839v1 = call local_log_53(v3837v1) + v1387v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2, !69 + v1388v1 = const u64 0 + v1389v1 = get_elem_ptr v1387v1, __ptr u64, v1388v1, !69 + v1386v1 = const u64 1, !69 + store v1386v1 to v1389v1, !69 + v3840v1 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2 + v3842v1 = call local_log_53(v3840v1) + v3857v1 = get_local __ptr { }, __tmp_arg3 + v3859v1 = call local_log_60(v3857v1) + v1462v1 = const u64 1, !72 + ret u64 v1462v1 } - fn local_log_1(item !74: u64) -> (), !78 { + fn local_log_1(item !73: u64) -> (), !77 { local mut slice __aggr_memcpy_0 local { ptr, u64 } __anon_0 local slice __log_arg local u64 item_0 entry(item: u64): - v1492v1 = get_local __ptr u64, item_0, !79 - store item to v1492v1, !79 - v1517v1 = get_local __ptr u64, item_0, !81 - v43v1 = const u64 8 - v1518v1 = asm(size: v43v1, src: v1517v1) -> ptr hp, !83 { - aloc size, !84 - mcp hp src size, !85 + v1530v1 = get_local __ptr u64, item_0, !78 + store item to v1530v1, !78 + v1547v1 = get_local __ptr u64, item_0, !80 + v25v1 = const u64 8 + v1548v1 = asm(size: v25v1, src: v1547v1) -> ptr hp, !82 { + aloc size, !83 + mcp hp src size, !84 } - v1522v1 = get_local __ptr { ptr, u64 }, __anon_0, !87 - v57v1 = const u64 0 - v1523v1 = get_elem_ptr v1522v1, __ptr ptr, v57v1, !88 - store v1518v1 to v1523v1, !89 - v60v1 = const u64 1 - v1525v1 = get_elem_ptr v1522v1, __ptr u64, v60v1, !90 - store v43v1 to v1525v1, !91 - v3533v1 = asm(s: v1522v1) -> __ptr slice s { + v1552v1 = get_local __ptr { ptr, u64 }, __anon_0, !86 + v39v1 = const u64 0 + v1553v1 = get_elem_ptr v1552v1, __ptr ptr, v39v1, !87 + store v1548v1 to v1553v1, !88 + v42v1 = const u64 1 + v1555v1 = get_elem_ptr v1552v1, __ptr u64, v42v1, !89 + store v25v1 to v1555v1, !90 + v3922v1 = asm(s: v1552v1) -> __ptr slice s { } - v3594v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v3594v1, v3533v1 - v3530v1 = get_local __ptr slice, __log_arg - mem_copy_val v3530v1, v3594v1 - v188v1 = const u64 1515152261580153489 - log __ptr slice v3530v1, v188v1 - v191v1 = const unit () - ret () v191v1 + v3985v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v3985v1, v3922v1 + v3919v1 = get_local __ptr slice, __log_arg + mem_copy_val v3919v1, v3985v1 + v170v1 = const u64 1515152261580153489 + log __ptr slice v3919v1, v170v1 + v173v1 = const unit () + ret () v173v1 } - pub fn abi_encode_4(self !92: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !95 { + pub fn abi_encode_5(self !91: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !94 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local { ptr, u64, u64 } __anon_0 @@ -191,222 +191,224 @@ script { local { { ptr, u64, u64 } } buffer_ entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): - v69v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ - mem_copy_val v69v1, buffer - v71v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !96 - v72v1 = const u64 0 - v73v1 = get_elem_ptr v71v1, __ptr { ptr, u64, u64 }, v72v1, !97 - v3535v1 = asm(buffer: v73v1) -> __ptr { ptr, u64, u64 } buffer { + v51v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + mem_copy_val v51v1, buffer + v53v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !95 + v54v1 = const u64 0 + v55v1 = get_elem_ptr v53v1, __ptr { ptr, u64, u64 }, v54v1, !96 + v3924v1 = asm(buffer: v55v1) -> __ptr { ptr, u64, u64 } buffer { } - v3598v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v3598v1, v3535v1 - v76v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 - mem_copy_val v76v1, v3598v1 - v78v1 = const u64 0 - v79v1 = get_elem_ptr v76v1, __ptr ptr, v78v1 - v80v1 = load v79v1 - v81v1 = const u64 1 - v82v1 = get_elem_ptr v76v1, __ptr u64, v81v1 - v83v1 = load v82v1 - v84v1 = const u64 2 - v85v1 = get_elem_ptr v76v1, __ptr u64, v84v1 - v86v1 = load v85v1 - v89v1 = const u64 8 - v92v1 = add v86v1, v89v1 - v93v1 = cmp gt v92v1 v83v1 - cbr v93v1, block1(), block0(v80v1, v83v1) - - block0(v90v1: ptr, v91v1: u64): - v101v1 = add v90v1, v86v1 - v102v1 = cast_ptr v101v1 to __ptr u64 - store self to v102v1 - v106v1 = get_local __ptr { ptr, u64, u64 }, __anon_1 - v107v1 = const u64 0 - v108v1 = get_elem_ptr v106v1, __ptr ptr, v107v1 - store v90v1 to v108v1 - v110v1 = const u64 1 - v111v1 = get_elem_ptr v106v1, __ptr u64, v110v1 - store v91v1 to v111v1 - v113v1 = const u64 2 - v114v1 = get_elem_ptr v106v1, __ptr u64, v113v1 - store v92v1 to v114v1 - v3537v1 = asm(buffer: v106v1) -> __ptr { ptr, u64, u64 } buffer { + v3989v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v3989v1, v3924v1 + v58v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 + mem_copy_val v58v1, v3989v1 + v60v1 = const u64 0 + v61v1 = get_elem_ptr v58v1, __ptr ptr, v60v1 + v62v1 = load v61v1 + v63v1 = const u64 1 + v64v1 = get_elem_ptr v58v1, __ptr u64, v63v1 + v65v1 = load v64v1 + v66v1 = const u64 2 + v67v1 = get_elem_ptr v58v1, __ptr u64, v66v1 + v68v1 = load v67v1 + v71v1 = const u64 8 + v74v1 = add v68v1, v71v1 + v75v1 = cmp gt v74v1 v65v1 + cbr v75v1, block1(), block0(v62v1, v65v1) + + block0(v72v1: ptr, v73v1: u64): + v83v1 = add v72v1, v68v1 + v84v1 = cast_ptr v83v1 to __ptr u64 + store self to v84v1 + v88v1 = get_local __ptr { ptr, u64, u64 }, __anon_1 + v89v1 = const u64 0 + v90v1 = get_elem_ptr v88v1, __ptr ptr, v89v1 + store v72v1 to v90v1 + v92v1 = const u64 1 + v93v1 = get_elem_ptr v88v1, __ptr u64, v92v1 + store v73v1 to v93v1 + v95v1 = const u64 2 + v96v1 = get_elem_ptr v88v1, __ptr u64, v95v1 + store v74v1 to v96v1 + v3926v1 = asm(buffer: v88v1) -> __ptr { ptr, u64, u64 } buffer { } - v3601v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v3601v1, v3537v1 - v117v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !98 - v118v1 = const u64 0 - v119v1 = get_elem_ptr v117v1, __ptr { ptr, u64, u64 }, v118v1 - mem_copy_val v119v1, v3601v1 - mem_copy_val __ret_value, v117v1 - v3483v1 = const unit () - ret () v3483v1 + v3992v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v3992v1, v3926v1 + v99v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !97 + v100v1 = const u64 0 + v101v1 = get_elem_ptr v99v1, __ptr { ptr, u64, u64 }, v100v1 + mem_copy_val v101v1, v3992v1 + mem_copy_val __ret_value, v99v1 + v3863v1 = const unit () + ret () v3863v1 block1(): - v95v1 = const u64 2 - v96v1 = mul v83v1, v95v1 - v97v1 = add v96v1, v89v1 - v98v1 = asm(new_cap: v97v1, old_ptr: v80v1, len: v86v1) -> __ptr u8 hp { + v77v1 = const u64 2 + v78v1 = mul v65v1, v77v1 + v79v1 = add v78v1, v71v1 + v80v1 = asm(new_cap: v79v1, old_ptr: v62v1, len: v68v1) -> __ptr u8 hp { aloc new_cap mcp hp old_ptr len } - br block0(v98v1, v97v1) + br block0(v80v1, v79v1) } - pub fn new_5(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !101 { + pub fn new_6(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !100 { local mut { ptr, u64, u64 } __aggr_memcpy_0 local { ptr, u64, u64 } __anon_0 local { { ptr, u64, u64 } } __anon_1 entry(__ret_value: __ptr { { ptr, u64, u64 } }): - v125v1 = const u64 1024 - v126v1 = asm(cap: v125v1) -> ptr hp { + v107v1 = const u64 1024 + v108v1 = asm(cap: v107v1) -> ptr hp { aloc cap } - v128v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 - v129v1 = const u64 0 - v130v1 = get_elem_ptr v128v1, __ptr ptr, v129v1 - store v126v1 to v130v1 - v132v1 = const u64 1 - v133v1 = get_elem_ptr v128v1, __ptr u64, v132v1 - store v125v1 to v133v1 - v135v1 = const u64 2 - v136v1 = get_elem_ptr v128v1, __ptr u64, v135v1 - v127v1 = const u64 0 - store v127v1 to v136v1 - v3539v1 = asm(buffer: v128v1) -> __ptr { ptr, u64, u64 } buffer { + v110v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 + v111v1 = const u64 0 + v112v1 = get_elem_ptr v110v1, __ptr ptr, v111v1 + store v108v1 to v112v1 + v114v1 = const u64 1 + v115v1 = get_elem_ptr v110v1, __ptr u64, v114v1 + store v107v1 to v115v1 + v117v1 = const u64 2 + v118v1 = get_elem_ptr v110v1, __ptr u64, v117v1 + v109v1 = const u64 0 + store v109v1 to v118v1 + v3928v1 = asm(buffer: v110v1) -> __ptr { ptr, u64, u64 } buffer { } - v3605v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v3605v1, v3539v1 - v139v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !102 - v140v1 = const u64 0 - v141v1 = get_elem_ptr v139v1, __ptr { ptr, u64, u64 }, v140v1 - mem_copy_val v141v1, v3605v1 - mem_copy_val __ret_value, v139v1 - v3505v1 = const unit () - ret () v3505v1 + v3996v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v3996v1, v3928v1 + v121v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !101 + v122v1 = const u64 0 + v123v1 = get_elem_ptr v121v1, __ptr { ptr, u64, u64 }, v122v1 + mem_copy_val v123v1, v3996v1 + mem_copy_val __ret_value, v121v1 + v3888v1 = const unit () + ret () v3888v1 } - pub fn as_raw_slice_6(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice) -> (), !105 { + pub fn as_raw_slice_7(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice) -> (), !104 { local mut slice __aggr_memcpy_00 local { ptr, u64 } __anon_1 local { { ptr, u64, u64 } } self_ entry(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice): - v150v1 = get_local __ptr { { ptr, u64, u64 } }, self_ - mem_copy_val v150v1, self - v152v1 = get_local __ptr { { ptr, u64, u64 } }, self_, !106 - v153v1 = const u64 0 - v154v1 = get_elem_ptr v152v1, __ptr { ptr, u64, u64 }, v153v1, !97 - v3541v1 = asm(buffer: v154v1) -> __ptr { ptr, u64, u64 } buffer { + v132v1 = get_local __ptr { { ptr, u64, u64 } }, self_ + mem_copy_val v132v1, self + v134v1 = get_local __ptr { { ptr, u64, u64 } }, self_, !105 + v135v1 = const u64 0 + v136v1 = get_elem_ptr v134v1, __ptr { ptr, u64, u64 }, v135v1, !96 + v3930v1 = asm(buffer: v136v1) -> __ptr { ptr, u64, u64 } buffer { } - v3710v1 = const u64 0 - v3711v1 = get_elem_ptr v3541v1, __ptr ptr, v3710v1 - v3712v1 = load v3711v1 - v3716v1 = const u64 2 - v3717v1 = get_elem_ptr v3541v1, __ptr u64, v3716v1 - v3718v1 = load v3717v1 - v168v1 = get_local __ptr { ptr, u64 }, __anon_1 - v169v1 = const u64 0 - v170v1 = get_elem_ptr v168v1, __ptr ptr, v169v1 - store v3712v1 to v170v1 - v172v1 = const u64 1 - v173v1 = get_elem_ptr v168v1, __ptr u64, v172v1 - store v3718v1 to v173v1 - v3543v1 = asm(s: v168v1) -> __ptr slice s { + v4113v1 = const u64 0 + v4114v1 = get_elem_ptr v3930v1, __ptr ptr, v4113v1 + v4115v1 = load v4114v1 + v4119v1 = const u64 2 + v4120v1 = get_elem_ptr v3930v1, __ptr u64, v4119v1 + v4121v1 = load v4120v1 + v150v1 = get_local __ptr { ptr, u64 }, __anon_1 + v151v1 = const u64 0 + v152v1 = get_elem_ptr v150v1, __ptr ptr, v151v1 + store v4115v1 to v152v1 + v154v1 = const u64 1 + v155v1 = get_elem_ptr v150v1, __ptr u64, v154v1 + store v4121v1 to v155v1 + v3932v1 = asm(s: v150v1) -> __ptr slice s { } - v3615v1 = get_local __ptr slice, __aggr_memcpy_00 - mem_copy_val v3615v1, v3543v1 - mem_copy_val __ret_value, v3615v1 - v3515v1 = const unit () - ret () v3515v1 + v4006v1 = get_local __ptr slice, __aggr_memcpy_00 + mem_copy_val v4006v1, v3932v1 + mem_copy_val __ret_value, v4006v1 + v3901v1 = const unit () + ret () v3901v1 } - pub fn push_10(self !107: __ptr { { ptr, u64 }, u64 }, value !108: u64) -> (), !111 { + pub fn push_11(self !106: __ptr { { ptr, u64 }, u64 }, value !107: u64) -> (), !110 { entry(self: __ptr { { ptr, u64 }, u64 }, value: u64): + v229v1 = const u64 1 + v230v1 = get_elem_ptr self, __ptr u64, v229v1, !111 + v231v1 = load v230v1 + v233v1 = const u64 0 + v234v1 = get_elem_ptr self, __ptr { ptr, u64 }, v233v1, !112 v235v1 = const u64 1 - v236v1 = get_elem_ptr self, __ptr u64, v235v1, !112 + v236v1 = get_elem_ptr v234v1, __ptr u64, v235v1, !113 v237v1 = load v236v1 - v239v1 = const u64 0 - v240v1 = get_elem_ptr self, __ptr { ptr, u64 }, v239v1, !113 - v241v1 = const u64 1 - v242v1 = get_elem_ptr v240v1, __ptr u64, v241v1, !114 - v243v1 = load v242v1 - v1667v1 = cmp eq v237v1 v243v1, !117 - cbr v1667v1, block0(), block2(), !115 + v1697v1 = cmp eq v231v1 v237v1, !116 + cbr v1697v1, block0(), block2(), !114 block0(): - v1683v1 = load v242v1, !120 - v252v1 = const u64 0, !121 - v1688v1 = cmp eq v1683v1 v252v1, !124 - v254v1 = const u64 1, !125 - cbr v1688v1, grow_11_block2(v254v1), grow_11_block1(), !126 - - grow_11_block1(): - v1693v1 = load v242v1, !120 - v267v1 = const u64 2, !127 - v1698v1 = mul v267v1, v1693v1, !130 - br grow_11_block2(v1698v1), !120 - - grow_11_block2(v1671v1: u64): - v362v1 = const u64 0 - v1704v1 = get_elem_ptr v240v1, __ptr ptr, v362v1, !132 - v1705v1 = load v1704v1, !120 - v1708v1 = load v242v1, !120 - v1719v1 = cmp gt v1671v1 v1708v1, !137 - cbr v1719v1, grow_11_realloc_13_block0(), grow_11_realloc_13_block5(v1705v1), !138 - - grow_11_realloc_13_block0(): - v1727v1 = alloc u64 x v1671v1, !141 - v312v1 = const u64 0, !142 - v1735v1 = cmp gt v1708v1 v312v1, !145 - cbr v1735v1, grow_11_realloc_13_block1(), grow_11_realloc_13_block5(v1727v1), !146 - - grow_11_realloc_13_block1(): - v325v1 = const u64 8 - v1750v1 = mul v1708v1, v325v1, !152 - v1756v1 = asm(dst: v1727v1, src: v1705v1, len: v1750v1) -> (), !154 { - mcp dst src len, !155 + v1713v1 = load v236v1, !119 + v246v1 = const u64 0, !120 + v1718v1 = cmp eq v1713v1 v246v1, !123 + v248v1 = const u64 1, !124 + cbr v1718v1, grow_13_block2(v248v1), grow_13_block1(), !125 + + grow_13_block1(): + v1723v1 = load v236v1, !119 + v261v1 = const u64 2, !126 + v1728v1 = mul v261v1, v1723v1, !129 + br grow_13_block2(v1728v1), !119 + + grow_13_block2(v1701v1: u64): + v356v1 = const u64 0 + v1734v1 = get_elem_ptr v234v1, __ptr ptr, v356v1, !131 + v1735v1 = load v1734v1, !119 + v1738v1 = load v236v1, !119 + v1749v1 = cmp gt v1701v1 v1738v1, !136 + cbr v1749v1, grow_13_realloc_15_block0(), grow_13_realloc_15_block5(v1735v1), !137 + + grow_13_realloc_15_block0(): + v1757v1 = alloc u64 x v1701v1, !140 + v306v1 = const u64 0, !141 + v1765v1 = cmp gt v1738v1 v306v1, !144 + cbr v1765v1, grow_13_realloc_15_block1(), grow_13_realloc_15_block5(v1757v1), !145 + + grow_13_realloc_15_block1(): + v319v1 = const u64 8 + v1780v1 = mul v1738v1, v319v1, !151 + v1786v1 = asm(dst: v1757v1, src: v1735v1, len: v1780v1) -> (), !153 { + mcp dst src len, !154 } - br grow_11_realloc_13_block5(v1727v1), !156 + br grow_13_realloc_15_block5(v1757v1), !155 - grow_11_realloc_13_block5(v1678v1: ptr): - store v1678v1 to v1704v1, !158 - store v1671v1 to v242v1, !160 + grow_13_realloc_15_block5(v1708v1: ptr): + store v1708v1 to v1734v1, !157 + store v1701v1 to v236v1, !159 br block2() block2(): - v415v1 = const u64 0 - v416v1 = get_elem_ptr v240v1, __ptr ptr, v415v1, !131 - v417v1 = load v416v1 - v421v1 = load v236v1 - v404v1 = const u64 8 - v1774v1 = mul v404v1, v421v1, !163 - v1775v1 = add v417v1, v1774v1, !163 - v1792v1 = asm(ptr: v1775v1, val: value) -> (), !167 { - sw ptr val i0, !168 + v409v1 = const u64 0 + v410v1 = get_elem_ptr v234v1, __ptr ptr, v409v1, !130 + v411v1 = load v410v1 + v415v1 = load v230v1 + v398v1 = const u64 8 + v1804v1 = mul v398v1, v415v1, !162 + v1805v1 = add v411v1, v1804v1, !162 + v1822v1 = asm(ptr: v1805v1, val: value) -> (), !166 { + sw ptr val i0, !167 } - v486v1 = load v236v1 - v487v1 = const u64 1, !169 - v1809v1 = add v486v1, v487v1, !172 - store v1809v1 to v236v1, !170 - v495v1 = const unit () - ret () v495v1 + v480v1 = load v230v1 + v481v1 = const u64 1, !168 + v1839v1 = add v480v1, v481v1, !171 + store v1839v1 to v230v1, !169 + v489v1 = const unit () + ret () v489v1 } - fn local_log_19(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }) -> (), !173 { - local mut { ptr, u64, u64 } __aggr_memcpy_0 + fn local_log_21(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }) -> (), !172 { + 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 @@ -437,6 +439,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 @@ -462,336 +465,394 @@ script { local u256 self_5 entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): - v510v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ - mem_copy_val v510v1, item - v1055v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !79 - v2653v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !79 - mem_copy_val v2653v1, v1055v1 - v2666v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !175 - v3507v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 - v3508v1 = call new_5(v3507v1) - v2669v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !178 - mem_copy_val v2669v1, v2666v1 - v2671v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !179 - mem_copy_val v2671v1, v3507v1 - v2673v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !181 - v555v1 = const u64 0 - v2674v1 = get_elem_ptr v2673v1, __ptr u64, v555v1, !183 - v2675v1 = load v2674v1, !184 - v2676v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !186 - v3416v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg - mem_copy_val v3416v1, v2676v1 - v3485v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val - v3486v1 = call abi_encode_4(v2675v1, v3416v1, v3485v1) - v2679v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !188 - mem_copy_val v2679v1, v3485v1 - v2681v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !190 - v627v1 = const u64 1 - v2682v1 = get_elem_ptr v2681v1, __ptr u64, v627v1, !192 - v2684v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !194 - v2687v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !197 - mem_copy_val v2687v1, v2684v1 - v2689v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !199 - v570v1 = const u64 0 - v2690v1 = get_elem_ptr v2689v1, __ptr { ptr, u64, u64 }, v570v1, !200 - v3548v1 = asm(buffer: v2690v1) -> __ptr { ptr, u64, u64 } buffer { + v504v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ + mem_copy_val v504v1, item + v1097v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !78 + v2844v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !78 + mem_copy_val v2844v1, v1097v1 + v2850v1 = const bool false, !179 + cbr v2850v1, encode_22_is_encode_trivial_23_is_encode_trivial_24_block4(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v2850v1), !181 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block4(): + v1399v1 = const bool false, !182 + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v1399v1), !183 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block5(v2802v1: bool): + cbr v2802v1, encode_22_is_encode_trivial_23_is_encode_trivial_24_block6(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v2802v1), !185 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block6(): + v534v1 = const bool true, !186 + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v534v1), !187 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block7(v2805v1: bool): + cbr v2805v1, encode_22_is_encode_trivial_23_is_encode_trivial_24_block8(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v2805v1), !189 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block8(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v1399v1), !190 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block9(v2808v1: bool): + cbr v2808v1, encode_22_is_encode_trivial_23_is_encode_trivial_24_block10(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v2808v1), !192 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block10(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v1399v1), !193 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block11(v2811v1: bool): + cbr v2811v1, encode_22_is_encode_trivial_23_is_encode_trivial_24_block12(), encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v2811v1), !195 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block12(): + br encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v534v1), !196 + + encode_22_is_encode_trivial_23_is_encode_trivial_24_block13(v2814v1: bool): + cbr v2814v1, encode_22_block0(), encode_22_block1(), !197 + + encode_22_block0(): + v3260v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !198 + v568v1 = const u64 104 + v3261v1 = asm(size: v568v1, src: v3260v1) -> ptr hp, !199 { + aloc size, !83 + mcp hp src size, !84 + } + v3265v1 = get_local __ptr { ptr, u64 }, __anon_0, !200 + v582v1 = const u64 0 + v3266v1 = get_elem_ptr v3265v1, __ptr ptr, v582v1, !201 + store v3261v1 to v3266v1, !202 + v585v1 = const u64 1 + v3268v1 = get_elem_ptr v3265v1, __ptr u64, v585v1, !203 + store v568v1 to v3268v1, !204 + v3937v1 = asm(s: v3265v1) -> __ptr slice s { } - v3625v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v3625v1, v3548v1 - v2693v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !201 - mem_copy_val v2693v1, v3625v1 - v576v1 = const u64 0 - v2695v1 = get_elem_ptr v2693v1, __ptr ptr, v576v1, !202 - v2696v1 = load v2695v1, !203 - v579v1 = const u64 1 - v2697v1 = get_elem_ptr v2693v1, __ptr u64, v579v1, !204 - v2698v1 = load v2697v1, !205 - v582v1 = const u64 2 - v2699v1 = get_elem_ptr v2693v1, __ptr u64, v582v1, !206 - v2700v1 = load v2699v1, !207 - v587v1 = const u64 4 - v2702v1 = add v2700v1, v587v1, !208 - v2703v1 = cmp gt v2702v1 v2698v1, !209 - cbr v2703v1, encode_20_abi_encode_21_abi_encode_22_block1(), encode_20_abi_encode_21_abi_encode_22_block0(v2696v1, v2698v1), !210 - - encode_20_abi_encode_21_abi_encode_22_block0(v2626v1: ptr, v2627v1: u64): - v2710v1 = get_local __ptr u64, __anon_1, !211 - mem_copy_val v2710v1, v2682v1 - v601v1 = const u64 4 - v2712v1 = add v2710v1, v601v1, !212 - v2713v1 = cast_ptr v2712v1 to __ptr u8, !213 - v2714v1 = add v2626v1, v2700v1, !214 - v2715v1 = cast_ptr v2714v1 to __ptr u8, !215 - mem_copy_bytes v2715v1, v2713v1, 4, !216 - v2718v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !217 - v610v1 = const u64 0 - v2719v1 = get_elem_ptr v2718v1, __ptr ptr, v610v1, !218 - store v2626v1 to v2719v1, !219 - v613v1 = const u64 1 - v2721v1 = get_elem_ptr v2718v1, __ptr u64, v613v1, !220 - store v2627v1 to v2721v1, !221 - v616v1 = const u64 2 - v2723v1 = get_elem_ptr v2718v1, __ptr u64, v616v1, !222 - store v2702v1 to v2723v1, !223 - v3550v1 = asm(buffer: v2718v1) -> __ptr { ptr, u64, u64 } buffer { + v4011v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v4011v1, v3937v1 + v3819v1 = get_local __ptr slice, __tmp_block_arg + mem_copy_val v3819v1, v4011v1 + br encode_22_block2(v3819v1), !78 + + encode_22_block1(): + v2883v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !206 + v3890v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v3891v1 = call new_6(v3890v1) + v2886v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !209 + mem_copy_val v2886v1, v2883v1 + v2888v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !210 + mem_copy_val v2888v1, v3890v1 + v2890v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !212 + v597v1 = const u64 0 + v2891v1 = get_elem_ptr v2890v1, __ptr u64, v597v1, !214 + v2892v1 = load v2891v1, !215 + v2893v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !217 + v3778v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v3778v1, v2893v1 + v3865v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v3866v1 = call abi_encode_5(v2892v1, v3778v1, v3865v1) + v2896v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !219 + mem_copy_val v2896v1, v3865v1 + v2898v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !221 + v669v1 = const u64 1 + v2899v1 = get_elem_ptr v2898v1, __ptr u64, v669v1, !223 + v2901v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !225 + v2904v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !228 + mem_copy_val v2904v1, v2901v1 + v2906v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !230 + v612v1 = const u64 0 + v2907v1 = get_elem_ptr v2906v1, __ptr { ptr, u64, u64 }, v612v1, !231 + v3939v1 = asm(buffer: v2907v1) -> __ptr { ptr, u64, u64 } buffer { } - v3629v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v3629v1, v3550v1 - v2726v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_3, !225 - v621v1 = const u64 0 - v2727v1 = get_elem_ptr v2726v1, __ptr { ptr, u64, u64 }, v621v1, !226 - mem_copy_val v2727v1, v3629v1 - v2731v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !228 - mem_copy_val v2731v1, v2726v1 - v2733v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !230 - v699v1 = const u64 2 - v2734v1 = get_elem_ptr v2733v1, __ptr u64, v699v1, !232 - v2736v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !234 - v2739v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !237 - mem_copy_val v2739v1, v2736v1 - v2741v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !239 - v642v1 = const u64 0 - v2742v1 = get_elem_ptr v2741v1, __ptr { ptr, u64, u64 }, v642v1, !240 - v3552v1 = asm(buffer: v2742v1) -> __ptr { ptr, u64, u64 } buffer { + v4019v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v4019v1, v3939v1 + v2910v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !232 + mem_copy_val v2910v1, v4019v1 + v618v1 = const u64 0 + v2912v1 = get_elem_ptr v2910v1, __ptr ptr, v618v1, !233 + v2913v1 = load v2912v1, !234 + v621v1 = const u64 1 + v2914v1 = get_elem_ptr v2910v1, __ptr u64, v621v1, !235 + v2915v1 = load v2914v1, !236 + v624v1 = const u64 2 + v2916v1 = get_elem_ptr v2910v1, __ptr u64, v624v1, !237 + v2917v1 = load v2916v1, !238 + v629v1 = const u64 4 + v2919v1 = add v2917v1, v629v1, !239 + v2920v1 = cmp gt v2919v1 v2915v1, !240 + cbr v2920v1, encode_22_abi_encode_37_abi_encode_38_block1(), encode_22_abi_encode_37_abi_encode_38_block0(v2913v1, v2915v1), !241 + + encode_22_abi_encode_37_abi_encode_38_block0(v2817v1: ptr, v2818v1: u64): + v2927v1 = get_local __ptr u64, __anon_1, !242 + mem_copy_val v2927v1, v2899v1 + v643v1 = const u64 4 + v2929v1 = add v2927v1, v643v1, !243 + v2930v1 = cast_ptr v2929v1 to __ptr u8, !244 + v2931v1 = add v2817v1, v2917v1, !245 + v2932v1 = cast_ptr v2931v1 to __ptr u8, !246 + mem_copy_bytes v2932v1, v2930v1, 4, !247 + v2935v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !248 + v652v1 = const u64 0 + v2936v1 = get_elem_ptr v2935v1, __ptr ptr, v652v1, !249 + store v2817v1 to v2936v1, !250 + v655v1 = const u64 1 + v2938v1 = get_elem_ptr v2935v1, __ptr u64, v655v1, !251 + store v2818v1 to v2938v1, !252 + v658v1 = const u64 2 + v2940v1 = get_elem_ptr v2935v1, __ptr u64, v658v1, !253 + store v2919v1 to v2940v1, !254 + v3941v1 = asm(buffer: v2935v1) -> __ptr { ptr, u64, u64 } buffer { } - v3634v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v3634v1, v3552v1 - v2745v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !241 - mem_copy_val v2745v1, v3634v1 - v648v1 = const u64 0 - v2747v1 = get_elem_ptr v2745v1, __ptr ptr, v648v1, !242 - v2748v1 = load v2747v1, !243 - v651v1 = const u64 1 - v2749v1 = get_elem_ptr v2745v1, __ptr u64, v651v1, !244 - v2750v1 = load v2749v1, !245 - v654v1 = const u64 2 - v2751v1 = get_elem_ptr v2745v1, __ptr u64, v654v1, !246 - v2752v1 = load v2751v1, !247 - v659v1 = const u64 2 - v2754v1 = add v2752v1, v659v1, !248 - v2755v1 = cmp gt v2754v1 v2750v1, !249 - cbr v2755v1, encode_20_abi_encode_21_abi_encode_23_block1(), encode_20_abi_encode_21_abi_encode_23_block0(v2748v1, v2750v1), !250 - - encode_20_abi_encode_21_abi_encode_22_block1(): - v593v1 = const u64 2 - v2706v1 = mul v2698v1, v593v1, !251 - v2707v1 = add v2706v1, v587v1, !252 - v2708v1 = asm(new_cap: v2707v1, old_ptr: v2696v1, len: v2700v1) -> __ptr u8 hp, !253 { + v4023v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v4023v1, v3941v1 + v2943v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_3, !256 + v663v1 = const u64 0 + v2944v1 = get_elem_ptr v2943v1, __ptr { ptr, u64, u64 }, v663v1, !257 + mem_copy_val v2944v1, v4023v1 + v2948v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !259 + mem_copy_val v2948v1, v2943v1 + v2950v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !261 + v741v1 = const u64 2 + v2951v1 = get_elem_ptr v2950v1, __ptr u64, v741v1, !263 + v2953v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !265 + v2956v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !268 + mem_copy_val v2956v1, v2953v1 + v2958v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !270 + v684v1 = const u64 0 + v2959v1 = get_elem_ptr v2958v1, __ptr { ptr, u64, u64 }, v684v1, !271 + v3943v1 = asm(buffer: v2959v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4028v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 + mem_copy_val v4028v1, v3943v1 + v2962v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !272 + mem_copy_val v2962v1, v4028v1 + v690v1 = const u64 0 + v2964v1 = get_elem_ptr v2962v1, __ptr ptr, v690v1, !273 + v2965v1 = load v2964v1, !274 + v693v1 = const u64 1 + v2966v1 = get_elem_ptr v2962v1, __ptr u64, v693v1, !275 + v2967v1 = load v2966v1, !276 + v696v1 = const u64 2 + v2968v1 = get_elem_ptr v2962v1, __ptr u64, v696v1, !277 + v2969v1 = load v2968v1, !278 + v701v1 = const u64 2 + v2971v1 = add v2969v1, v701v1, !279 + v2972v1 = cmp gt v2971v1 v2967v1, !280 + cbr v2972v1, encode_22_abi_encode_37_abi_encode_39_block1(), encode_22_abi_encode_37_abi_encode_39_block0(v2965v1, v2967v1), !281 + + encode_22_abi_encode_37_abi_encode_38_block1(): + v635v1 = const u64 2 + v2923v1 = mul v2915v1, v635v1, !282 + v2924v1 = add v2923v1, v629v1, !283 + v2925v1 = asm(new_cap: v2924v1, old_ptr: v2913v1, len: v2917v1) -> __ptr u8 hp, !284 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_22_block0(v2708v1, v2707v1), !254 - - encode_20_abi_encode_21_abi_encode_23_block0(v2629v1: ptr, v2630v1: u64): - v2762v1 = get_local __ptr u64, __anon_10, !255 - mem_copy_val v2762v1, v2734v1 - v673v1 = const u64 6 - v2764v1 = add v2762v1, v673v1, !256 - v2765v1 = cast_ptr v2764v1 to __ptr u8, !257 - v2766v1 = add v2629v1, v2752v1, !258 - v2767v1 = cast_ptr v2766v1 to __ptr u8, !259 - mem_copy_bytes v2767v1, v2765v1, 2, !260 - v2770v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !261 - v682v1 = const u64 0 - v2771v1 = get_elem_ptr v2770v1, __ptr ptr, v682v1, !262 - store v2629v1 to v2771v1, !263 - v685v1 = const u64 1 - v2773v1 = get_elem_ptr v2770v1, __ptr u64, v685v1, !264 - store v2630v1 to v2773v1, !265 - v688v1 = const u64 2 - v2775v1 = get_elem_ptr v2770v1, __ptr u64, v688v1, !266 - store v2754v1 to v2775v1, !267 - v3554v1 = asm(buffer: v2770v1) -> __ptr { ptr, u64, u64 } buffer { + br encode_22_abi_encode_37_abi_encode_38_block0(v2925v1, v2924v1), !285 + + encode_22_abi_encode_37_abi_encode_39_block0(v2820v1: ptr, v2821v1: u64): + v2979v1 = get_local __ptr u64, __anon_10, !286 + mem_copy_val v2979v1, v2951v1 + v715v1 = const u64 6 + v2981v1 = add v2979v1, v715v1, !287 + v2982v1 = cast_ptr v2981v1 to __ptr u8, !288 + v2983v1 = add v2820v1, v2969v1, !289 + v2984v1 = cast_ptr v2983v1 to __ptr u8, !290 + mem_copy_bytes v2984v1, v2982v1, 2, !291 + v2987v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !292 + v724v1 = const u64 0 + v2988v1 = get_elem_ptr v2987v1, __ptr ptr, v724v1, !293 + store v2820v1 to v2988v1, !294 + v727v1 = const u64 1 + v2990v1 = get_elem_ptr v2987v1, __ptr u64, v727v1, !295 + store v2821v1 to v2990v1, !296 + v730v1 = const u64 2 + v2992v1 = get_elem_ptr v2987v1, __ptr u64, v730v1, !297 + store v2971v1 to v2992v1, !298 + v3945v1 = asm(buffer: v2987v1) -> __ptr { ptr, u64, u64 } buffer { } - v3638v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 - mem_copy_val v3638v1, v3554v1 - v2778v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !269 - v693v1 = const u64 0 - v2779v1 = get_elem_ptr v2778v1, __ptr { ptr, u64, u64 }, v693v1, !270 - mem_copy_val v2779v1, v3638v1 - v2783v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !272 - mem_copy_val v2783v1, v2778v1 - v2785v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !274 - v766v1 = const u64 3 - v2786v1 = get_elem_ptr v2785v1, __ptr u8, v766v1, !276 - v2787v1 = load v2786v1, !277 - v2788v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !279 - v2791v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !282 - mem_copy_val v2791v1, v2788v1 - v2793v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !284 - v714v1 = const u64 0 - v2794v1 = get_elem_ptr v2793v1, __ptr { ptr, u64, u64 }, v714v1, !285 - v3556v1 = asm(buffer: v2794v1) -> __ptr { ptr, u64, u64 } buffer { + v4032v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 + mem_copy_val v4032v1, v3945v1 + v2995v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !300 + v735v1 = const u64 0 + v2996v1 = get_elem_ptr v2995v1, __ptr { ptr, u64, u64 }, v735v1, !301 + mem_copy_val v2996v1, v4032v1 + v3000v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !303 + mem_copy_val v3000v1, v2995v1 + v3002v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !305 + v808v1 = const u64 3 + v3003v1 = get_elem_ptr v3002v1, __ptr u8, v808v1, !307 + v3004v1 = load v3003v1, !308 + v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !310 + v3008v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !313 + mem_copy_val v3008v1, v3005v1 + v3010v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !315 + v756v1 = const u64 0 + v3011v1 = get_elem_ptr v3010v1, __ptr { ptr, u64, u64 }, v756v1, !316 + v3947v1 = asm(buffer: v3011v1) -> __ptr { ptr, u64, u64 } buffer { } - v3643v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 - mem_copy_val v3643v1, v3556v1 - v2797v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !286 - mem_copy_val v2797v1, v3643v1 - v720v1 = const u64 0 - v2799v1 = get_elem_ptr v2797v1, __ptr ptr, v720v1, !287 - v2800v1 = load v2799v1, !288 - v723v1 = const u64 1 - v2801v1 = get_elem_ptr v2797v1, __ptr u64, v723v1, !289 - v2802v1 = load v2801v1, !290 - v726v1 = const u64 2 - v2803v1 = get_elem_ptr v2797v1, __ptr u64, v726v1, !291 - v2804v1 = load v2803v1, !292 - v731v1 = const u64 1 - v2806v1 = add v2804v1, v731v1, !293 - v2807v1 = cmp gt v2806v1 v2802v1, !294 - cbr v2807v1, encode_20_abi_encode_21_abi_encode_24_block1(), encode_20_abi_encode_21_abi_encode_24_block0(v2800v1, v2802v1), !295 - - encode_20_abi_encode_21_abi_encode_23_block1(): - v665v1 = const u64 2 - v2758v1 = mul v2750v1, v665v1, !296 - v2759v1 = add v2758v1, v659v1, !297 - v2760v1 = asm(new_cap: v2759v1, old_ptr: v2748v1, len: v2752v1) -> __ptr u8 hp, !298 { + v4037v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 + mem_copy_val v4037v1, v3947v1 + v3014v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !317 + mem_copy_val v3014v1, v4037v1 + v762v1 = const u64 0 + v3016v1 = get_elem_ptr v3014v1, __ptr ptr, v762v1, !318 + v3017v1 = load v3016v1, !319 + v765v1 = const u64 1 + v3018v1 = get_elem_ptr v3014v1, __ptr u64, v765v1, !320 + v3019v1 = load v3018v1, !321 + v768v1 = const u64 2 + v3020v1 = get_elem_ptr v3014v1, __ptr u64, v768v1, !322 + v3021v1 = load v3020v1, !323 + v773v1 = const u64 1 + v3023v1 = add v3021v1, v773v1, !324 + v3024v1 = cmp gt v3023v1 v3019v1, !325 + cbr v3024v1, encode_22_abi_encode_37_abi_encode_40_block1(), encode_22_abi_encode_37_abi_encode_40_block0(v3017v1, v3019v1), !326 + + encode_22_abi_encode_37_abi_encode_39_block1(): + v707v1 = const u64 2 + v2975v1 = mul v2967v1, v707v1, !327 + v2976v1 = add v2975v1, v701v1, !328 + v2977v1 = asm(new_cap: v2976v1, old_ptr: v2965v1, len: v2969v1) -> __ptr u8 hp, !329 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_23_block0(v2760v1, v2759v1), !299 - - encode_20_abi_encode_21_abi_encode_24_block0(v2632v1: ptr, v2633v1: u64): - v2814v1 = add v2632v1, v2804v1, !300 - v2815v1 = cast_ptr v2814v1 to __ptr u8, !301 - store v2787v1 to v2815v1, !302 - v2818v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !303 - v749v1 = const u64 0 - v2819v1 = get_elem_ptr v2818v1, __ptr ptr, v749v1, !304 - store v2632v1 to v2819v1, !305 - v752v1 = const u64 1 - v2821v1 = get_elem_ptr v2818v1, __ptr u64, v752v1, !306 - store v2633v1 to v2821v1, !307 - v755v1 = const u64 2 - v2823v1 = get_elem_ptr v2818v1, __ptr u64, v755v1, !308 - store v2806v1 to v2823v1, !309 - v3558v1 = asm(buffer: v2818v1) -> __ptr { ptr, u64, u64 } buffer { + br encode_22_abi_encode_37_abi_encode_39_block0(v2977v1, v2976v1), !330 + + encode_22_abi_encode_37_abi_encode_40_block0(v2823v1: ptr, v2824v1: u64): + v3031v1 = add v2823v1, v3021v1, !331 + v3032v1 = cast_ptr v3031v1 to __ptr u8, !332 + store v3004v1 to v3032v1, !333 + v3035v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !334 + v791v1 = const u64 0 + v3036v1 = get_elem_ptr v3035v1, __ptr ptr, v791v1, !335 + store v2823v1 to v3036v1, !336 + v794v1 = const u64 1 + v3038v1 = get_elem_ptr v3035v1, __ptr u64, v794v1, !337 + store v2824v1 to v3038v1, !338 + v797v1 = const u64 2 + v3040v1 = get_elem_ptr v3035v1, __ptr u64, v797v1, !339 + store v3023v1 to v3040v1, !340 + v3949v1 = asm(buffer: v3035v1) -> __ptr { ptr, u64, u64 } buffer { } - v3646v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 - mem_copy_val v3646v1, v3558v1 - v2826v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_21, !311 - v760v1 = const u64 0 - v2827v1 = get_elem_ptr v2826v1, __ptr { ptr, u64, u64 }, v760v1, !312 - mem_copy_val v2827v1, v3646v1 - v2831v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !314 - mem_copy_val v2831v1, v2826v1 - v2833v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !316 - v887v1 = const u64 4 - v2834v1 = get_elem_ptr v2833v1, __ptr { { ptr, u64 }, u64 }, v887v1, !318 - v2836v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !320 - v2838v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !323 - mem_copy_val v2838v1, v2834v1 - v2840v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !324 - mem_copy_val v2840v1, v2836v1 - v2842v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !326 - v781v1 = const u64 1 - v2843v1 = get_elem_ptr v2842v1, __ptr u64, v781v1, !327 - v2844v1 = load v2843v1, !328 - v2847v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !330 - v3419v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 - mem_copy_val v3419v1, v2847v1 - v3488v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 - v3489v1 = call abi_encode_4(v2844v1, v3419v1, v3488v1) - v2850v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !332 - mem_copy_val v2850v1, v3488v1 - v793v1 = const u64 0, !333 - br encode_20_abi_encode_21_abi_encode_25_while(v793v1), !334 - - encode_20_abi_encode_21_abi_encode_24_block1(): - v737v1 = const u64 2 - v2810v1 = mul v2802v1, v737v1, !335 - v2811v1 = add v2810v1, v731v1, !336 - v2812v1 = asm(new_cap: v2811v1, old_ptr: v2800v1, len: v2804v1) -> __ptr u8 hp, !337 { + v4040v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 + mem_copy_val v4040v1, v3949v1 + v3043v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_21, !342 + v802v1 = const u64 0 + v3044v1 = get_elem_ptr v3043v1, __ptr { ptr, u64, u64 }, v802v1, !343 + mem_copy_val v3044v1, v4040v1 + v3048v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !345 + mem_copy_val v3048v1, v3043v1 + v3050v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !347 + v929v1 = const u64 4 + v3051v1 = get_elem_ptr v3050v1, __ptr { { ptr, u64 }, u64 }, v929v1, !349 + v3053v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !351 + v3055v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !354 + mem_copy_val v3055v1, v3051v1 + v3057v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !355 + mem_copy_val v3057v1, v3053v1 + v3059v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !357 + v823v1 = const u64 1 + v3060v1 = get_elem_ptr v3059v1, __ptr u64, v823v1, !358 + v3061v1 = load v3060v1, !359 + v3064v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !361 + v3781v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v3781v1, v3064v1 + v3868v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v3869v1 = call abi_encode_5(v3061v1, v3781v1, v3868v1) + v3067v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !363 + mem_copy_val v3067v1, v3868v1 + v835v1 = const u64 0, !364 + br encode_22_abi_encode_37_abi_encode_41_while(v835v1), !365 + + encode_22_abi_encode_37_abi_encode_40_block1(): + v779v1 = const u64 2 + v3027v1 = mul v3019v1, v779v1, !366 + v3028v1 = add v3027v1, v773v1, !367 + v3029v1 = asm(new_cap: v3028v1, old_ptr: v3017v1, len: v3021v1) -> __ptr u8 hp, !368 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_24_block0(v2812v1, v2811v1), !338 - - encode_20_abi_encode_21_abi_encode_25_while(v2635v1: u64): - v2860v1 = cmp lt v2635v1 v2844v1, !341 - cbr v2860v1, encode_20_abi_encode_21_abi_encode_25_while_body(), encode_20_abi_encode_21_abi_encode_25_end_while(), !342 - - encode_20_abi_encode_21_abi_encode_25_while_body(): - v2986v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !344 - v2989v1 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !347 - mem_copy_val v2989v1, v2986v1 - v2992v1 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !349 - v846v1 = const u64 0 - v2993v1 = get_elem_ptr v2992v1, __ptr { ptr, u64 }, v846v1, !350 - v848v1 = const u64 0 - v2994v1 = get_elem_ptr v2993v1, __ptr ptr, v848v1, !351 - v2995v1 = load v2994v1, !352 - v404v1 = const u64 8 - v3001v1 = mul v404v1, v2635v1, !355 - v3002v1 = add v2995v1, v3001v1, !356 - v3014v1 = asm(ptr: v3002v1, val) -> u64 val, !360 { - lw val ptr i0, !361 + br encode_22_abi_encode_37_abi_encode_40_block0(v3029v1, v3028v1), !369 + + encode_22_abi_encode_37_abi_encode_41_while(v2826v1: u64): + v3077v1 = cmp lt v2826v1 v3061v1, !372 + cbr v3077v1, encode_22_abi_encode_37_abi_encode_41_while_body(), encode_22_abi_encode_37_abi_encode_41_end_while(), !373 + + encode_22_abi_encode_37_abi_encode_41_while_body(): + v3203v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !375 + v3206v1 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !378 + mem_copy_val v3206v1, v3203v1 + v3209v1 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !380 + v888v1 = const u64 0 + v3210v1 = get_elem_ptr v3209v1, __ptr { ptr, u64 }, v888v1, !381 + v890v1 = const u64 0 + v3211v1 = get_elem_ptr v3210v1, __ptr ptr, v890v1, !382 + v3212v1 = load v3211v1, !383 + v398v1 = const u64 8 + v3218v1 = mul v398v1, v2826v1, !386 + v3219v1 = add v3212v1, v3218v1, !387 + v3231v1 = asm(ptr: v3219v1, val) -> u64 val, !391 { + lw val ptr i0, !392 } - v3027v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !363 - v3422v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 - mem_copy_val v3422v1, v3027v1 - v3491v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v3492v1 = call abi_encode_4(v3014v1, v3422v1, v3491v1) - v3030v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !365 - mem_copy_val v3030v1, v3491v1 - v873v1 = const u64 1, !366 - v3037v1 = add v2635v1, v873v1, !369 - br encode_20_abi_encode_21_abi_encode_25_while(v3037v1), !370 - - encode_20_abi_encode_21_abi_encode_25_end_while(): - v2863v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !372 - v2866v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !374 - mem_copy_val v2866v1, v2863v1 - v2868v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !376 - v961v1 = const u64 5 - v2869v1 = get_elem_ptr v2868v1, __ptr slice, v961v1, !378 - v2871v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !380 - v2873v1 = get_local __ptr slice, self_4, !383 - mem_copy_val v2873v1, v2869v1 - v2875v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !384 - mem_copy_val v2875v1, v2871v1 - v2877v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !386 - v902v1 = const u64 0 - v2878v1 = get_elem_ptr v2877v1, __ptr { ptr, u64, u64 }, v902v1, !387 - v3560v1 = asm(buffer: v2878v1) -> __ptr { ptr, u64, u64 } buffer { + v3244v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !394 + v3784v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v3784v1, v3244v1 + v3871v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v3872v1 = call abi_encode_5(v3231v1, v3784v1, v3871v1) + v3247v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !396 + mem_copy_val v3247v1, v3871v1 + v915v1 = const u64 1, !397 + v3254v1 = add v2826v1, v915v1, !400 + br encode_22_abi_encode_37_abi_encode_41_while(v3254v1), !401 + + encode_22_abi_encode_37_abi_encode_41_end_while(): + v3080v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !403 + v3083v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !405 + mem_copy_val v3083v1, v3080v1 + v3085v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !407 + v1003v1 = const u64 5 + v3086v1 = get_elem_ptr v3085v1, __ptr slice, v1003v1, !409 + v3088v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !411 + v3090v1 = get_local __ptr slice, self_4, !414 + mem_copy_val v3090v1, v3086v1 + v3092v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !415 + mem_copy_val v3092v1, v3088v1 + v3094v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !417 + v944v1 = const u64 0 + v3095v1 = get_elem_ptr v3094v1, __ptr { ptr, u64, u64 }, v944v1, !418 + v3951v1 = asm(buffer: v3095v1) -> __ptr { ptr, u64, u64 } buffer { } - v3660v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 - mem_copy_val v3660v1, v3560v1 - v2881v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !388 - mem_copy_val v2881v1, v3660v1 - v908v1 = const u64 0 - v2883v1 = get_elem_ptr v2881v1, __ptr ptr, v908v1, !389 - v2884v1 = load v2883v1, !390 - v911v1 = const u64 1 - v2885v1 = get_elem_ptr v2881v1, __ptr u64, v911v1, !391 - v2886v1 = load v2885v1, !392 - v914v1 = const u64 2 - v2887v1 = get_elem_ptr v2881v1, __ptr u64, v914v1, !393 - v2888v1 = load v2887v1, !394 - v2889v1 = get_local __ptr slice, self_4, !396 - v3666v1 = get_local __ptr slice, __aggr_memcpy_07 - mem_copy_val v3666v1, v2889v1 - v3562v1 = asm(item: v2889v1) -> __ptr { u64, u64 } item { + v4054v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_06 + mem_copy_val v4054v1, v3951v1 + v3098v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !419 + mem_copy_val v3098v1, v4054v1 + v950v1 = const u64 0 + v3100v1 = get_elem_ptr v3098v1, __ptr ptr, v950v1, !420 + v3101v1 = load v3100v1, !421 + v953v1 = const u64 1 + v3102v1 = get_elem_ptr v3098v1, __ptr u64, v953v1, !422 + v3103v1 = load v3102v1, !423 + v956v1 = const u64 2 + v3104v1 = get_elem_ptr v3098v1, __ptr u64, v956v1, !424 + v3105v1 = load v3104v1, !425 + v3106v1 = get_local __ptr slice, self_4, !427 + v4060v1 = get_local __ptr slice, __aggr_memcpy_08 + mem_copy_val v4060v1, v3106v1 + v3953v1 = asm(item: v3106v1) -> __ptr { u64, u64 } item { } - v3663v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_06 - mem_copy_val v3663v1, v3562v1 - v2892v1 = get_local __ptr { u64, u64 }, __anon_12, !397 - mem_copy_val v2892v1, v3663v1 - v922v1 = const u64 1 - v2894v1 = get_elem_ptr v2892v1, __ptr u64, v922v1, !398 - v2895v1 = load v2894v1, !399 - v925v1 = const u64 8 - v2896v1 = add v2895v1, v925v1, !400 - v2897v1 = add v2888v1, v2896v1, !401 - v2898v1 = cmp gt v2897v1 v2886v1, !402 - cbr v2898v1, encode_20_abi_encode_21_abi_encode_29_block1(), encode_20_abi_encode_21_abi_encode_29_block0(v2884v1, v2886v1), !403 - - encode_20_abi_encode_21_abi_encode_29_block0(v2645v1: ptr, v2646v1: u64): - v2905v1 = get_local __ptr slice, __anon_22, !404 - mem_copy_val v2905v1, v3666v1 - v2907v1 = add v2645v1, v2888v1, !405 - v2908v1 = cast_ptr v2907v1 to __ptr u8, !406 - v2909v1 = asm(item_ptr: v2905v1, len: v2888v1, addr: v2908v1, data_ptr, item_len, new_len) -> u64 new_len, !407 { + v4057v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_07 + mem_copy_val v4057v1, v3953v1 + v3109v1 = get_local __ptr { u64, u64 }, __anon_12, !428 + mem_copy_val v3109v1, v4057v1 + v964v1 = const u64 1 + v3111v1 = get_elem_ptr v3109v1, __ptr u64, v964v1, !429 + v3112v1 = load v3111v1, !430 + v967v1 = const u64 8 + v3113v1 = add v3112v1, v967v1, !431 + v3114v1 = add v3105v1, v3113v1, !432 + v3115v1 = cmp gt v3114v1 v3103v1, !433 + cbr v3115v1, encode_22_abi_encode_37_abi_encode_45_block1(), encode_22_abi_encode_37_abi_encode_45_block0(v3101v1, v3103v1), !434 + + encode_22_abi_encode_37_abi_encode_45_block0(v2836v1: ptr, v2837v1: u64): + v3122v1 = get_local __ptr slice, __anon_22, !435 + mem_copy_val v3122v1, v4060v1 + v3124v1 = add v2836v1, v3105v1, !436 + v3125v1 = cast_ptr v3124v1 to __ptr u8, !437 + v3126v1 = asm(item_ptr: v3122v1, len: v3105v1, addr: v3125v1, data_ptr, item_len, new_len) -> u64 new_len, !438 { lw item_len item_ptr i1 sw addr item_len i0 addi addr addr i8 @@ -800,121 +861,126 @@ script { addi new_len len i8 add new_len new_len item_len } - v2910v1 = get_local __ptr { ptr, u64, u64 }, __anon_31, !408 - v944v1 = const u64 0 - v2911v1 = get_elem_ptr v2910v1, __ptr ptr, v944v1, !409 - store v2645v1 to v2911v1, !410 - v947v1 = const u64 1 - v2913v1 = get_elem_ptr v2910v1, __ptr u64, v947v1, !411 - store v2646v1 to v2913v1, !412 - v950v1 = const u64 2 - v2915v1 = get_elem_ptr v2910v1, __ptr u64, v950v1, !413 - store v2909v1 to v2915v1, !414 - v3564v1 = asm(buffer: v2910v1) -> __ptr { ptr, u64, u64 } buffer { + v3127v1 = get_local __ptr { ptr, u64, u64 }, __anon_31, !439 + v986v1 = const u64 0 + v3128v1 = get_elem_ptr v3127v1, __ptr ptr, v986v1, !440 + store v2836v1 to v3128v1, !441 + v989v1 = const u64 1 + v3130v1 = get_elem_ptr v3127v1, __ptr u64, v989v1, !442 + store v2837v1 to v3130v1, !443 + v992v1 = const u64 2 + v3132v1 = get_elem_ptr v3127v1, __ptr u64, v992v1, !444 + store v3126v1 to v3132v1, !445 + v3955v1 = asm(buffer: v3127v1) -> __ptr { ptr, u64, u64 } buffer { } - v3669v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_08 - mem_copy_val v3669v1, v3564v1 - v2918v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_4, !416 - v955v1 = const u64 0 - v2919v1 = get_elem_ptr v2918v1, __ptr { ptr, u64, u64 }, v955v1, !417 - mem_copy_val v2919v1, v3669v1 - v2923v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !419 - mem_copy_val v2923v1, v2918v1 - v2925v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !421 - v1030v1 = const u64 6 - v2926v1 = get_elem_ptr v2925v1, __ptr u256, v1030v1, !423 - v2928v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !425 - v2930v1 = get_local __ptr u256, self_5, !428 - mem_copy_val v2930v1, v2926v1 - v2932v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !429 - mem_copy_val v2932v1, v2928v1 - v2934v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !431 - v976v1 = const u64 0 - v2935v1 = get_elem_ptr v2934v1, __ptr { ptr, u64, u64 }, v976v1, !432 - v3566v1 = asm(buffer: v2935v1) -> __ptr { ptr, u64, u64 } buffer { + v4063v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_09 + mem_copy_val v4063v1, v3955v1 + v3135v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_4, !447 + v997v1 = const u64 0 + v3136v1 = get_elem_ptr v3135v1, __ptr { ptr, u64, u64 }, v997v1, !448 + mem_copy_val v3136v1, v4063v1 + v3140v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !450 + mem_copy_val v3140v1, v3135v1 + v3142v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !452 + v1072v1 = const u64 6 + v3143v1 = get_elem_ptr v3142v1, __ptr u256, v1072v1, !454 + v3145v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !456 + v3147v1 = get_local __ptr u256, self_5, !459 + mem_copy_val v3147v1, v3143v1 + v3149v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !460 + mem_copy_val v3149v1, v3145v1 + v3151v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !462 + v1018v1 = const u64 0 + v3152v1 = get_elem_ptr v3151v1, __ptr { ptr, u64, u64 }, v1018v1, !463 + v3957v1 = asm(buffer: v3152v1) -> __ptr { ptr, u64, u64 } buffer { } - v3675v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_09 - mem_copy_val v3675v1, v3566v1 - v2938v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !433 - mem_copy_val v2938v1, v3675v1 - v982v1 = const u64 0 - v2940v1 = get_elem_ptr v2938v1, __ptr ptr, v982v1, !434 - v2941v1 = load v2940v1, !435 - v985v1 = const u64 1 - v2942v1 = get_elem_ptr v2938v1, __ptr u64, v985v1, !436 - v2943v1 = load v2942v1, !437 - v988v1 = const u64 2 - v2944v1 = get_elem_ptr v2938v1, __ptr u64, v988v1, !438 - v2945v1 = load v2944v1, !439 - v2946v1 = get_local __ptr u256, self_5, !441 - v993v1 = const u64 32 - v2948v1 = add v2945v1, v993v1, !442 - v2949v1 = cmp gt v2948v1 v2943v1, !443 - cbr v2949v1, encode_20_abi_encode_21_abi_encode_30_block1(), encode_20_abi_encode_21_abi_encode_30_block0(v2941v1, v2943v1), !444 - - encode_20_abi_encode_21_abi_encode_29_block1(): - v932v1 = const u64 2 - v2901v1 = mul v2886v1, v932v1, !445 - v2902v1 = add v2901v1, v2896v1, !446 - v2903v1 = asm(new_cap: v2902v1, old_ptr: v2884v1, len: v2888v1) -> __ptr u8 hp, !447 { + v4069v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 + mem_copy_val v4069v1, v3957v1 + v3155v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !464 + mem_copy_val v3155v1, v4069v1 + v1024v1 = const u64 0 + v3157v1 = get_elem_ptr v3155v1, __ptr ptr, v1024v1, !465 + v3158v1 = load v3157v1, !466 + v1027v1 = const u64 1 + v3159v1 = get_elem_ptr v3155v1, __ptr u64, v1027v1, !467 + v3160v1 = load v3159v1, !468 + v1030v1 = const u64 2 + v3161v1 = get_elem_ptr v3155v1, __ptr u64, v1030v1, !469 + v3162v1 = load v3161v1, !470 + v3163v1 = get_local __ptr u256, self_5, !472 + v1035v1 = const u64 32 + v3165v1 = add v3162v1, v1035v1, !473 + v3166v1 = cmp gt v3165v1 v3160v1, !474 + cbr v3166v1, encode_22_abi_encode_37_abi_encode_46_block1(), encode_22_abi_encode_37_abi_encode_46_block0(v3158v1, v3160v1), !475 + + encode_22_abi_encode_37_abi_encode_45_block1(): + v974v1 = const u64 2 + v3118v1 = mul v3103v1, v974v1, !476 + v3119v1 = add v3118v1, v3113v1, !477 + v3120v1 = asm(new_cap: v3119v1, old_ptr: v3101v1, len: v3105v1) -> __ptr u8 hp, !478 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_29_block0(v2903v1, v2902v1), !448 - - encode_20_abi_encode_21_abi_encode_30_block0(v2648v1: ptr, v2649v1: u64): - v2956v1 = get_local __ptr u256, __anon_13, !449 - mem_copy_val v2956v1, v2946v1 - v2958v1 = add v2648v1, v2945v1, !450 - v2959v1 = cast_ptr v2958v1 to __ptr u8, !451 - mem_copy_bytes v2959v1, v2956v1, 32, !452 - v2962v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !453 - v1013v1 = const u64 0 - v2963v1 = get_elem_ptr v2962v1, __ptr ptr, v1013v1, !454 - store v2648v1 to v2963v1, !455 - v1016v1 = const u64 1 - v2965v1 = get_elem_ptr v2962v1, __ptr u64, v1016v1, !456 - store v2649v1 to v2965v1, !457 - v1019v1 = const u64 2 - v2967v1 = get_elem_ptr v2962v1, __ptr u64, v1019v1, !458 - store v2948v1 to v2967v1, !459 - v3568v1 = asm(buffer: v2962v1) -> __ptr { ptr, u64, u64 } buffer { + br encode_22_abi_encode_37_abi_encode_45_block0(v3120v1, v3119v1), !479 + + encode_22_abi_encode_37_abi_encode_46_block0(v2839v1: ptr, v2840v1: u64): + v3173v1 = get_local __ptr u256, __anon_13, !480 + mem_copy_val v3173v1, v3163v1 + v3175v1 = add v2839v1, v3162v1, !481 + v3176v1 = cast_ptr v3175v1 to __ptr u8, !482 + mem_copy_bytes v3176v1, v3173v1, 32, !483 + v3179v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !484 + v1055v1 = const u64 0 + v3180v1 = get_elem_ptr v3179v1, __ptr ptr, v1055v1, !485 + store v2839v1 to v3180v1, !486 + v1058v1 = const u64 1 + v3182v1 = get_elem_ptr v3179v1, __ptr u64, v1058v1, !487 + store v2840v1 to v3182v1, !488 + v1061v1 = const u64 2 + v3184v1 = get_elem_ptr v3179v1, __ptr u64, v1061v1, !489 + store v3165v1 to v3184v1, !490 + v3959v1 = asm(buffer: v3179v1) -> __ptr { ptr, u64, u64 } buffer { } - v3679v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 - mem_copy_val v3679v1, v3568v1 - v2970v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_32, !461 - v1024v1 = const u64 0 - v2971v1 = get_elem_ptr v2970v1, __ptr { ptr, u64, u64 }, v1024v1, !462 - mem_copy_val v2971v1, v3679v1 - v2975v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !464 - mem_copy_val v2975v1, v2970v1 - v2977v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !466 - v2980v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !468 - mem_copy_val v2980v1, v2977v1 - v2982v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !470 - v3436v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 - mem_copy_val v3436v1, v2982v1 - v3517v1 = get_local __ptr slice, __ret_val3 - v3518v1 = call as_raw_slice_6(v3436v1, v3517v1) - v3545v1 = get_local __ptr slice, __log_arg - mem_copy_val v3545v1, v3517v1 - v1058v1 = const u64 4579537983717831593 - log __ptr slice v3545v1, v1058v1 - v1061v1 = const unit () - ret () v1061v1 - - encode_20_abi_encode_21_abi_encode_30_block1(): - v999v1 = const u64 2 - v2952v1 = mul v2943v1, v999v1, !471 - v2953v1 = add v2952v1, v993v1, !472 - v2954v1 = asm(new_cap: v2953v1, old_ptr: v2941v1, len: v2945v1) -> __ptr u8 hp, !473 { + v4073v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_011 + mem_copy_val v4073v1, v3959v1 + v3187v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_32, !492 + v1066v1 = const u64 0 + v3188v1 = get_elem_ptr v3187v1, __ptr { ptr, u64, u64 }, v1066v1, !493 + mem_copy_val v3188v1, v4073v1 + v3192v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !495 + mem_copy_val v3192v1, v3187v1 + v3194v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !497 + v3197v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !499 + mem_copy_val v3197v1, v3194v1 + v3199v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !501 + v3801v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v3801v1, v3199v1 + v3903v1 = get_local __ptr slice, __ret_val3 + v3904v1 = call as_raw_slice_7(v3801v1, v3903v1) + v3817v1 = get_local __ptr slice, __tmp_block_arg + mem_copy_val v3817v1, v3903v1 + br encode_22_block2(v3817v1), !78 + + encode_22_abi_encode_37_abi_encode_46_block1(): + v1041v1 = const u64 2 + v3169v1 = mul v3160v1, v1041v1, !502 + v3170v1 = add v3169v1, v1035v1, !503 + v3171v1 = asm(new_cap: v3170v1, old_ptr: v3158v1, len: v3162v1) -> __ptr u8 hp, !504 { aloc new_cap mcp hp old_ptr len } - br encode_20_abi_encode_21_abi_encode_30_block0(v2954v1, v2953v1), !474 + br encode_22_abi_encode_37_abi_encode_46_block0(v3171v1, v3170v1), !505 + + encode_22_block2(v3815v1: __ptr slice): + v3934v1 = get_local __ptr slice, __log_arg + mem_copy_val v3934v1, v3815v1 + v1100v1 = const u64 4579537983717831593 + log __ptr slice v3934v1, v1100v1 + v1103v1 = const unit () + ret () v1103v1 } - fn local_log_32(item: __ptr { u64 }) -> (), !475 { + fn local_log_48(item: __ptr { u64 }) -> (), !506 { local mut slice __aggr_memcpy_0 local { ptr, u64 } __anon_0 local slice __log_arg @@ -922,672 +988,804 @@ script { local { u64 } item_0 entry(item: __ptr { u64 }): - v1111v1 = get_local __ptr { u64 }, item_ - mem_copy_val v1111v1, item - v1181v1 = get_local __ptr { u64 }, item_, !79 - v3065v1 = get_local __ptr { u64 }, item_0, !79 - mem_copy_val v3065v1, v1181v1 - v3090v1 = get_local __ptr { u64 }, item_0, !476 - v1127v1 = const u64 8 - v3091v1 = asm(size: v1127v1, src: v3090v1) -> ptr hp, !477 { - aloc size, !84 - mcp hp src size, !85 + v1153v1 = get_local __ptr { u64 }, item_ + mem_copy_val v1153v1, item + v1223v1 = get_local __ptr { u64 }, item_, !78 + v3322v1 = get_local __ptr { u64 }, item_0, !78 + mem_copy_val v3322v1, v1223v1 + v3349v1 = get_local __ptr { u64 }, item_0, !507 + v1169v1 = const u64 8 + v3350v1 = asm(size: v1169v1, src: v3349v1) -> ptr hp, !508 { + aloc size, !83 + mcp hp src size, !84 } - v3095v1 = get_local __ptr { ptr, u64 }, __anon_0, !478 - v1141v1 = const u64 0 - v3096v1 = get_elem_ptr v3095v1, __ptr ptr, v1141v1, !479 - store v3091v1 to v3096v1, !480 - v1144v1 = const u64 1 - v3098v1 = get_elem_ptr v3095v1, __ptr u64, v1144v1, !481 - store v1127v1 to v3098v1, !482 - v3573v1 = asm(s: v3095v1) -> __ptr slice s { + v3354v1 = get_local __ptr { ptr, u64 }, __anon_0, !509 + v1183v1 = const u64 0 + v3355v1 = get_elem_ptr v3354v1, __ptr ptr, v1183v1, !510 + store v3350v1 to v3355v1, !511 + v1186v1 = const u64 1 + v3357v1 = get_elem_ptr v3354v1, __ptr u64, v1186v1, !512 + store v1169v1 to v3357v1, !513 + v3964v1 = asm(s: v3354v1) -> __ptr slice s { } - v3688v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v3688v1, v3573v1 - v3570v1 = get_local __ptr slice, __log_arg - mem_copy_val v3570v1, v3688v1 - v1184v1 = const u64 16566583104751091389 - log __ptr slice v3570v1, v1184v1 - v1187v1 = const unit () - ret () v1187v1 + v4083v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v4083v1, v3964v1 + v3961v1 = get_local __ptr slice, __log_arg + mem_copy_val v3961v1, v4083v1 + v1226v1 = const u64 16566583104751091389 + log __ptr slice v3961v1, v1226v1 + v1229v1 = const unit () + ret () v1229v1 } - pub fn abi_encode_34(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !485 { + pub fn abi_encode_52(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !516 { entry(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): - v1156v1 = const u64 0 - v1157v1 = get_elem_ptr self, __ptr u64, v1156v1, !486 - v1158v1 = load v1157v1 - v3495v1 = call abi_encode_4(v1158v1, buffer, __ret_value) - v3525v1 = const unit () - ret () v3525v1 + v1198v1 = const u64 0 + v1199v1 = get_elem_ptr self, __ptr u64, v1198v1, !517 + v1200v1 = load v1199v1 + v3875v1 = call abi_encode_5(v1200v1, buffer, __ret_value) + v3914v1 = const unit () + ret () v3914v1 } - fn local_log_35(item: __ptr { u64, ( { u64 } | () ) }) -> (), !487 { + fn local_log_53(item: __ptr { u64, ( { u64 } | () ) }) -> (), !518 { + 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 } | () ) }): - v3510v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ - v3511v1 = call new_5(v3510v1) - v3214v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !489 - mem_copy_val v3214v1, item - v1246v1 = const u64 0 - v3704v1 = get_elem_ptr item, __ptr u64, v1246v1 - v3218v1 = load v3704v1, !490 - v1249v1 = const u64 0, !491 - v3223v1 = cmp eq v3218v1 v1249v1, !494 - cbr v3223v1, encode_36_abi_encode_37_block0(), encode_36_abi_encode_37_block1(), !495 - - encode_36_abi_encode_37_block0(): - v3242v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !496 - v1252v1 = const u64 1 - v1253v1 = const u64 0 - v3243v1 = get_elem_ptr v3242v1, __ptr { u64 }, v1252v1, v1253v1, !497 - v3247v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !499 - v3497v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v1258v1 = const u64 0, !500 - v3498v1 = call abi_encode_4(v1258v1, v3247v1, v3497v1) - v3458v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v3527v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v3528v1 = call abi_encode_34(v3243v1, v3458v1, v3527v1) - v3473v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_36_abi_encode_37_block5(v3473v1), !501 - - encode_36_abi_encode_37_block1(): - v3226v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !502 - v1274v1 = const u64 0 - v3227v1 = get_elem_ptr v3226v1, __ptr u64, v1274v1, !503 - v3228v1 = load v3227v1, !504 - v1277v1 = const u64 1, !491 - v3233v1 = cmp eq v3228v1 v1277v1, !507 - cbr v3233v1, encode_36_abi_encode_37_block2(), encode_36_abi_encode_37_block3(), !508 - - encode_36_abi_encode_37_block2(): - v3237v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !510 - v3500v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v1279v1 = const u64 1, !511 - v3501v1 = call abi_encode_4(v1279v1, v3237v1, v3500v1) - v3471v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_36_abi_encode_37_block5(v3471v1), !512 - - encode_36_abi_encode_37_block3(): - v1283v1 = const u64 14757395258967588866, !488 - revert v1283v1, !513 - - encode_36_abi_encode_37_block5(v3469v1: __ptr { { ptr, u64, u64 } }): - v3520v1 = get_local __ptr slice, __log_arg - v3521v1 = call as_raw_slice_6(v3469v1, v3520v1) - v3575v1 = get_local __ptr slice, __log_arg - v1314v1 = const u64 5087777005172090899 - log __ptr slice v3575v1, v1314v1 - v1317v1 = const unit () - ret () v1317v1 + v1239v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_ + mem_copy_val v1239v1, item + v1361v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_, !78 + v3557v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !78 + mem_copy_val v3557v1, v1361v1 + v3563v1 = const bool false, !519 + cbr v3563v1, encode_54_block0(), encode_54_block1(), !520 + + encode_54_block0(): + v3656v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !521 + v1263v1 = const u64 16 + v3657v1 = asm(size: v1263v1, src: v3656v1) -> ptr hp, !522 { + aloc size, !83 + mcp hp src size, !84 + } + v3661v1 = get_local __ptr { ptr, u64 }, __anon_0, !523 + v1277v1 = const u64 0 + v3662v1 = get_elem_ptr v3661v1, __ptr ptr, v1277v1, !524 + store v3657v1 to v3662v1, !525 + v1280v1 = const u64 1 + v3664v1 = get_elem_ptr v3661v1, __ptr u64, v1280v1, !526 + store v1263v1 to v3664v1, !527 + v3969v1 = asm(s: v3661v1) -> __ptr slice s { + } + v4090v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v4090v1, v3969v1 + v3853v1 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v3853v1, v4090v1 + br encode_54_block2(v3853v1), !78 + + encode_54_block1(): + v3586v1 = get_local __ptr { u64, ( { u64 } | () ) }, item_0, !528 + v3893v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v3894v1 = call new_6(v3893v1) + v3589v1 = get_local __ptr { u64, ( { u64 } | () ) }, self_1, !529 + mem_copy_val v3589v1, v3586v1 + v3591v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !530 + mem_copy_val v3591v1, v3893v1 + v3593v1 = get_local __ptr { u64, ( { u64 } | () ) }, self_1, !532 + v3595v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !534 + mem_copy_val v3595v1, v3593v1 + v3597v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !535 + v1296v1 = const u64 0 + v3598v1 = get_elem_ptr v3597v1, __ptr u64, v1296v1, !536 + v3599v1 = load v3598v1, !537 + v1299v1 = const u64 0, !531 + v3604v1 = cmp eq v3599v1 v1299v1, !540 + cbr v3604v1, encode_54_abi_encode_59_block0(), encode_54_abi_encode_59_block1(), !541 + + encode_54_abi_encode_59_block0(): + v3623v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !542 + v1302v1 = const u64 1 + v1303v1 = const u64 0 + v3624v1 = get_elem_ptr v3623v1, __ptr { u64 }, v1302v1, v1303v1, !543 + v3626v1 = get_local __ptr { u64 }, value, !545 + mem_copy_val v3626v1, v3624v1 + v3628v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !547 + v3790v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v3790v1, v3628v1 + v3877v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v1308v1 = const u64 0, !548 + v3878v1 = call abi_encode_5(v1308v1, v3790v1, v3877v1) + v3631v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !550 + mem_copy_val v3631v1, v3877v1 + v3633v1 = get_local __ptr { u64 }, value, !552 + v3635v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !554 + v3830v1 = get_local __ptr { u64 }, __tmp_arg2 + mem_copy_val v3830v1, v3633v1 + v3832v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg3 + mem_copy_val v3832v1, v3635v1 + v3916v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 + v3917v1 = call abi_encode_52(v3830v1, v3832v1, v3916v1) + v3638v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !556 + mem_copy_val v3638v1, v3916v1 + v3640v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !558 + v3847v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v3847v1, v3640v1 + br encode_54_abi_encode_59_block5(v3847v1), !559 + + encode_54_abi_encode_59_block1(): + v3607v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !560 + v1324v1 = const u64 0 + v3608v1 = get_elem_ptr v3607v1, __ptr u64, v1324v1, !561 + v3609v1 = load v3608v1, !562 + v1327v1 = const u64 1, !531 + v3614v1 = cmp eq v3609v1 v1327v1, !565 + cbr v3614v1, encode_54_abi_encode_59_block2(), encode_54_abi_encode_59_block3(), !566 + + encode_54_abi_encode_59_block2(): + v3618v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !568 + v3793v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v3793v1, v3618v1 + v3880v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v1329v1 = const u64 1, !569 + v3881v1 = call abi_encode_5(v1329v1, v3793v1, v3880v1) + v3845v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v3845v1, v3880v1 + br encode_54_abi_encode_59_block5(v3845v1), !570 + + encode_54_abi_encode_59_block3(): + v1333v1 = const u64 14757395258967588866, !533 + revert v1333v1, !571 + + encode_54_abi_encode_59_block5(v3843v1: __ptr { { ptr, u64, u64 } }): + v3643v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !573 + mem_copy_val v3643v1, v3843v1 + v3645v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !575 + v3648v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !576 + mem_copy_val v3648v1, v3645v1 + v3650v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !577 + v3804v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v3804v1, v3650v1 + v3906v1 = get_local __ptr slice, __ret_val2 + v3907v1 = call as_raw_slice_7(v3804v1, v3906v1) + v3851v1 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v3851v1, v3906v1 + br encode_54_block2(v3851v1), !78 + + encode_54_block2(v3849v1: __ptr slice): + v3966v1 = get_local __ptr slice, __log_arg + mem_copy_val v3966v1, v3849v1 + v1364v1 = const u64 5087777005172090899 + log __ptr slice v3966v1, v1364v1 + v1367v1 = const unit () + ret () v1367v1 } - fn local_log_38(item: __ptr { }) -> (), !514 { - local mut slice __aggr_memcpy_0 - local { ptr, u64 } __anon_0 + fn local_log_60(item: __ptr { }) -> (), !578 { local slice __log_arg - local { } item_ - local { } item_0 + local { { ptr, u64, u64 } } buffer + local { { ptr, u64, u64 } } buffer_ entry(item: __ptr { }): - v1344v1 = get_local __ptr { }, item_ - mem_copy_val v1344v1, item - v1407v1 = get_local __ptr { }, item_, !79 - v3306v1 = get_local __ptr { }, item_0, !79 - mem_copy_val v3306v1, v1407v1 - v3338v1 = get_local __ptr { }, item_0, !515 - v1360v1 = const u64 0 - v3339v1 = asm(size: v1360v1, src: v3338v1) -> ptr hp, !516 { - aloc size, !84 - mcp hp src size, !85 - } - v3343v1 = get_local __ptr { ptr, u64 }, __anon_0, !517 - v1374v1 = const u64 0 - v3344v1 = get_elem_ptr v3343v1, __ptr ptr, v1374v1, !518 - store v3339v1 to v3344v1, !519 - v1377v1 = const u64 1 - v3346v1 = get_elem_ptr v3343v1, __ptr u64, v1377v1, !520 - store v1360v1 to v3346v1, !521 - v3581v1 = asm(s: v3343v1) -> __ptr slice s { - } - v3707v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v3707v1, v3581v1 - v3578v1 = get_local __ptr slice, __log_arg - mem_copy_val v3578v1, v3707v1 - v1410v1 = const u64 5555909392781521367 - log __ptr slice v3578v1, v1410v1 - v1413v1 = const unit () - ret () v1413v1 + v3896v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + v3897v1 = call new_6(v3896v1) + v3796v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + v3883v1 = get_local __ptr { { ptr, u64, u64 } }, buffer + v1432v1 = const u64 77, !579 + v3884v1 = call abi_encode_5(v1432v1, v3796v1, v3883v1) + v3807v1 = get_local __ptr { { ptr, u64, u64 } }, buffer + v3909v1 = get_local __ptr slice, __log_arg + v3910v1 = call as_raw_slice_7(v3807v1, v3909v1) + v3971v1 = get_local __ptr slice, __log_arg + v1454v1 = const u64 5555909392781521367 + log __ptr slice v3971v1, v1454v1 + v1457v1 = const unit () + ret () v1457v1 } } !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 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/vec.sw" -!24 = span !23 785 786 -!25 = span !15 606 616 -!26 = fn_call_path_span !15 606 614 -!27 = span !23 4111 4124 -!28 = fn_call_path_span !23 4111 4122 -!29 = span !23 774 787 -!30 = fn_call_path_span !23 774 779 -!31 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/alloc.sw" -!32 = span !31 1777 1796 -!33 = (!25 !26 !27 !28 !29 !30 !32) -!34 = span !23 750 818 -!35 = (!25 !26 !27 !28 !34) -!36 = (!25 !26 !27 !28) -!37 = (!25 !26 !27 !28 !34) -!38 = (!25 !26 !27 !28) -!39 = span !23 806 807 -!40 = (!25 !26 !27 !28 !34) -!41 = span !23 4087 4155 -!42 = (!25 !26 !41) -!43 = (!25 !26) -!44 = span !23 4143 4144 -!45 = (!25 !26 !41) -!46 = span !15 622 623 -!47 = span !15 629 630 -!48 = span !15 622 631 -!49 = fn_call_path_span !15 624 628 -!50 = (!48 !49) -!51 = span !15 637 638 -!52 = span !15 644 645 -!53 = span !15 637 646 -!54 = fn_call_path_span !15 639 643 -!55 = (!53 !54) -!56 = span !15 652 653 -!57 = span !15 659 660 -!58 = span !15 652 661 -!59 = fn_call_path_span !15 654 658 -!60 = (!58 !59) -!61 = span !15 745 746 -!62 = span !15 759 765 -!63 = span !15 678 795 -!64 = span !15 692 693 -!65 = span !15 706 707 -!66 = span !15 720 721 -!67 = span !15 734 735 -!68 = span !15 812 838 -!69 = span !15 828 832 -!70 = span !15 203 239 -!71 = span !15 860 886 -!72 = span !15 876 880 -!73 = span !15 951 952 -!74 = span !15 499 503 -!75 = span !15 483 547 -!76 = fn_name_span !15 486 495 -!77 = inline "never" -!78 = (!75 !76 !77) -!79 = span !15 539 543 -!80 = span !10 71080 71084 -!81 = (!79 !80) -!82 = span !10 71058 71173 -!83 = (!79 !82) -!84 = span !10 71100 71109 -!85 = span !10 71123 71138 -!86 = span !10 71190 71201 -!87 = (!79 !86) -!88 = (!79 !86) -!89 = (!79 !86) -!90 = (!79 !86) -!91 = (!79 !86) -!92 = span !10 4732 4736 -!93 = span !10 4718 4863 -!94 = fn_name_span !10 4721 4731 -!95 = (!93 !94) -!96 = span !10 4826 4832 -!97 = span !10 87 114 -!98 = span !10 4774 4857 -!99 = span !10 160 260 -!100 = fn_name_span !10 167 170 -!101 = (!99 !100) -!102 = span !10 191 254 -!103 = span !10 499 591 -!104 = fn_name_span !10 502 514 -!105 = (!103 !104) -!106 = span !10 573 577 -!107 = span !23 5760 5764 -!108 = span !23 5766 5771 -!109 = span !23 5740 6205 -!110 = fn_name_span !23 5747 5751 -!111 = (!109 !110) -!112 = span !23 3543 3551 -!113 = span !23 3523 3537 -!114 = span !23 375 383 -!115 = span !23 5852 5876 -!116 = fn_call_path_span !23 5861 5863 -!117 = (!115 !116) -!118 = span !23 5891 5906 -!119 = fn_call_path_span !23 5900 5904 -!120 = (!118 !119) -!121 = span !23 2990 2991 -!122 = span !23 2978 2991 -!123 = fn_call_path_span !23 2987 2989 -!124 = (!118 !119 !122 !123) -!125 = span !23 2994 2995 -!126 = (!118 !119 !122) -!127 = span !23 3005 3006 -!128 = span !23 3005 3017 -!129 = fn_call_path_span !23 3007 3008 -!130 = (!118 !119 !128 !129) -!131 = span !23 357 369 -!132 = (!118 !119 !131) -!133 = span !23 3041 3082 -!134 = fn_call_path_span !23 3041 3048 -!135 = span !31 2578 2595 -!136 = fn_call_path_span !31 2588 2589 -!137 = (!118 !119 !133 !134 !135 !136) -!138 = (!118 !119 !133 !134 !135) -!139 = span !31 2620 2641 -!140 = fn_call_path_span !31 2620 2625 -!141 = (!118 !119 !133 !134 !139 !140 !32) -!142 = span !31 2662 2663 -!143 = span !31 2654 2663 -!144 = fn_call_path_span !31 2660 2661 -!145 = (!118 !119 !133 !134 !143 !144) -!146 = (!118 !119 !133 !134 !143) -!147 = span !31 2678 2710 -!148 = fn_call_path_span !31 2682 2689 -!149 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" -!150 = span !149 3413 3437 -!151 = fn_call_path_span !149 3419 3420 -!152 = (!118 !119 !133 !134 !147 !148 !150 !151) -!153 = span !149 3447 3522 -!154 = (!118 !119 !133 !134 !147 !148 !153) -!155 = span !149 3496 3511 -!156 = (!118 !119 !133 !134) -!157 = span !23 3030 3082 -!158 = (!118 !119 !157) -!159 = span !23 3092 3110 -!160 = (!118 !119 !159) -!161 = span !23 6040 6071 -!162 = fn_call_path_span !23 6053 6056 -!163 = (!161 !162) -!164 = span !23 6124 6145 -!165 = fn_call_path_span !23 6128 6133 -!166 = span !149 4228 4299 -!167 = (!164 !165 !166) -!168 = span !149 4271 4284 -!169 = span !23 6197 6198 -!170 = span !23 6185 6198 -!171 = fn_call_path_span !23 6194 6196 -!172 = (!170 !171) -!173 = (!75 !76 !77) -!174 = span !10 71274 71278 -!175 = (!79 !174) -!176 = span !10 71274 71304 -!177 = fn_call_path_span !10 71279 71289 -!178 = (!79 !176 !177) -!179 = (!79 !176 !177) -!180 = span !0 204 208 -!181 = (!79 !176 !177 !180) -!182 = span !15 116 122 -!183 = (!79 !176 !177 !182) -!184 = (!79 !176 !177) -!185 = span !0 222 228 -!186 = (!79 !176 !177 !185) -!187 = span !0 191 230 -!188 = (!79 !176 !177 !187) -!189 = span !0 244 248 -!190 = (!79 !176 !177 !189) -!191 = span !15 128 134 -!192 = (!79 !176 !177 !191) -!193 = span !0 262 268 -!194 = (!79 !176 !177 !193) -!195 = span !0 244 269 -!196 = fn_call_path_span !0 251 261 -!197 = (!79 !176 !177 !195 !196) -!198 = span !10 5004 5010 -!199 = (!79 !176 !177 !195 !196 !198) -!200 = (!79 !176 !177 !195 !196 !97) -!201 = (!79 !176 !177 !195 !196) -!202 = (!79 !176 !177 !195 !196) -!203 = (!79 !176 !177 !195 !196) -!204 = (!79 !176 !177 !195 !196) -!205 = (!79 !176 !177 !195 !196) -!206 = (!79 !176 !177 !195 !196) -!207 = (!79 !176 !177 !195 !196) -!208 = (!79 !176 !177 !195 !196) -!209 = (!79 !176 !177 !195 !196) -!210 = (!79 !176 !177 !195 !196) -!211 = (!79 !176 !177 !195 !196) -!212 = (!79 !176 !177 !195 !196) -!213 = (!79 !176 !177 !195 !196) -!214 = (!79 !176 !177 !195 !196) -!215 = (!79 !176 !177 !195 !196) -!216 = (!79 !176 !177 !195 !196) -!217 = (!79 !176 !177 !195 !196) -!218 = (!79 !176 !177 !195 !196) -!219 = (!79 !176 !177 !195 !196) -!220 = (!79 !176 !177 !195 !196) -!221 = (!79 !176 !177 !195 !196) -!222 = (!79 !176 !177 !195 !196) -!223 = (!79 !176 !177 !195 !196) -!224 = span !10 4952 5035 -!225 = (!79 !176 !177 !195 !196 !224) -!226 = (!79 !176 !177 !195 !196) -!227 = span !0 231 270 -!228 = (!79 !176 !177 !227) -!229 = span !0 284 288 -!230 = (!79 !176 !177 !229) -!231 = span !15 140 146 -!232 = (!79 !176 !177 !231) -!233 = span !0 302 308 -!234 = (!79 !176 !177 !233) -!235 = span !0 284 309 -!236 = fn_call_path_span !0 291 301 -!237 = (!79 !176 !177 !235 !236) -!238 = span !10 5182 5188 -!239 = (!79 !176 !177 !235 !236 !238) -!240 = (!79 !176 !177 !235 !236 !97) -!241 = (!79 !176 !177 !235 !236) -!242 = (!79 !176 !177 !235 !236) -!243 = (!79 !176 !177 !235 !236) -!244 = (!79 !176 !177 !235 !236) -!245 = (!79 !176 !177 !235 !236) -!246 = (!79 !176 !177 !235 !236) -!247 = (!79 !176 !177 !235 !236) -!248 = (!79 !176 !177 !235 !236) -!249 = (!79 !176 !177 !235 !236) -!250 = (!79 !176 !177 !235 !236) -!251 = (!79 !176 !177 !195 !196) -!252 = (!79 !176 !177 !195 !196) -!253 = (!79 !176 !177 !195 !196) -!254 = (!79 !176 !177 !195 !196) -!255 = (!79 !176 !177 !235 !236) -!256 = (!79 !176 !177 !235 !236) -!257 = (!79 !176 !177 !235 !236) -!258 = (!79 !176 !177 !235 !236) -!259 = (!79 !176 !177 !235 !236) -!260 = (!79 !176 !177 !235 !236) -!261 = (!79 !176 !177 !235 !236) -!262 = (!79 !176 !177 !235 !236) -!263 = (!79 !176 !177 !235 !236) -!264 = (!79 !176 !177 !235 !236) -!265 = (!79 !176 !177 !235 !236) -!266 = (!79 !176 !177 !235 !236) -!267 = (!79 !176 !177 !235 !236) -!268 = span !10 5130 5213 -!269 = (!79 !176 !177 !235 !236 !268) -!270 = (!79 !176 !177 !235 !236) -!271 = span !0 271 310 -!272 = (!79 !176 !177 !271) -!273 = span !0 324 328 -!274 = (!79 !176 !177 !273) -!275 = span !15 152 157 -!276 = (!79 !176 !177 !275) -!277 = (!79 !176 !177) -!278 = span !0 342 348 -!279 = (!79 !176 !177 !278) -!280 = span !0 324 349 -!281 = fn_call_path_span !0 331 341 -!282 = (!79 !176 !177 !280 !281) -!283 = span !10 5359 5365 -!284 = (!79 !176 !177 !280 !281 !283) -!285 = (!79 !176 !177 !280 !281 !97) -!286 = (!79 !176 !177 !280 !281) -!287 = (!79 !176 !177 !280 !281) -!288 = (!79 !176 !177 !280 !281) -!289 = (!79 !176 !177 !280 !281) -!290 = (!79 !176 !177 !280 !281) -!291 = (!79 !176 !177 !280 !281) -!292 = (!79 !176 !177 !280 !281) -!293 = (!79 !176 !177 !280 !281) -!294 = (!79 !176 !177 !280 !281) -!295 = (!79 !176 !177 !280 !281) -!296 = (!79 !176 !177 !235 !236) -!297 = (!79 !176 !177 !235 !236) -!298 = (!79 !176 !177 !235 !236) -!299 = (!79 !176 !177 !235 !236) -!300 = (!79 !176 !177 !280 !281) -!301 = (!79 !176 !177 !280 !281) -!302 = (!79 !176 !177 !280 !281) -!303 = (!79 !176 !177 !280 !281) -!304 = (!79 !176 !177 !280 !281) -!305 = (!79 !176 !177 !280 !281) -!306 = (!79 !176 !177 !280 !281) -!307 = (!79 !176 !177 !280 !281) -!308 = (!79 !176 !177 !280 !281) -!309 = (!79 !176 !177 !280 !281) -!310 = span !10 5307 5390 -!311 = (!79 !176 !177 !280 !281 !310) -!312 = (!79 !176 !177 !280 !281) -!313 = span !0 311 350 -!314 = (!79 !176 !177 !313) -!315 = span !0 364 368 -!316 = (!79 !176 !177 !315) -!317 = span !15 163 174 -!318 = (!79 !176 !177 !317) -!319 = span !0 382 388 -!320 = (!79 !176 !177 !319) -!321 = span !0 364 389 -!322 = fn_call_path_span !0 371 381 -!323 = (!79 !176 !177 !321 !322) -!324 = (!79 !176 !177 !321 !322) -!325 = span !23 21296 21300 -!326 = (!79 !176 !177 !321 !322 !325) -!327 = (!79 !176 !177 !321 !322 !112) -!328 = (!79 !176 !177 !321 !322) -!329 = span !23 21346 21352 -!330 = (!79 !176 !177 !321 !322 !329) -!331 = span !23 21314 21354 -!332 = (!79 !176 !177 !321 !322 !331) -!333 = span !23 21376 21377 -!334 = (!79 !176 !177 !321 !322) -!335 = (!79 !176 !177 !280 !281) -!336 = (!79 !176 !177 !280 !281) -!337 = (!79 !176 !177 !280 !281) -!338 = (!79 !176 !177 !280 !281) -!339 = span !23 21393 21400 -!340 = fn_call_path_span !23 21395 21396 -!341 = (!79 !176 !177 !321 !322 !339 !340) -!342 = (!79 !176 !177 !321 !322) -!343 = span !23 21426 21430 -!344 = (!79 !176 !177 !321 !322 !343) -!345 = span !23 21426 21447 -!346 = fn_call_path_span !23 21431 21444 -!347 = (!79 !176 !177 !321 !322 !345 !346) -!348 = span !23 8256 8260 -!349 = (!79 !176 !177 !321 !322 !345 !346 !348) -!350 = (!79 !176 !177 !321 !322 !345 !346 !113) -!351 = (!79 !176 !177 !321 !322 !345 !346 !131) -!352 = (!79 !176 !177 !321 !322 !345 !346) -!353 = span !23 8256 8284 -!354 = fn_call_path_span !23 8269 8272 -!355 = (!79 !176 !177 !321 !322 !345 !346 !353 !354) -!356 = (!79 !176 !177 !321 !322 !345 !346 !353 !354) -!357 = span !23 8256 8296 -!358 = fn_call_path_span !23 8285 8289 -!359 = span !149 2650 2739 -!360 = (!79 !176 !177 !321 !322 !345 !346 !357 !358 !359) -!361 = span !149 2688 2701 -!362 = span !23 21486 21492 -!363 = (!79 !176 !177 !321 !322 !362) -!364 = span !23 21461 21493 -!365 = (!79 !176 !177 !321 !322 !364) -!366 = span !23 21512 21513 -!367 = span !23 21507 21513 -!368 = fn_call_path_span !23 21509 21511 -!369 = (!79 !176 !177 !321 !322 !367 !368) -!370 = (!79 !176 !177 !321 !322) -!371 = span !23 21534 21540 -!372 = (!79 !176 !177 !321 !322 !371) -!373 = span !0 351 390 -!374 = (!79 !176 !177 !373) -!375 = span !0 404 408 -!376 = (!79 !176 !177 !375) -!377 = span !15 180 186 -!378 = (!79 !176 !177 !377) -!379 = span !0 422 428 -!380 = (!79 !176 !177 !379) -!381 = span !0 404 429 -!382 = fn_call_path_span !0 411 421 -!383 = (!79 !176 !177 !381 !382) -!384 = (!79 !176 !177 !381 !382) -!385 = span !10 5573 5579 -!386 = (!79 !176 !177 !381 !382 !385) -!387 = (!79 !176 !177 !381 !382 !97) -!388 = (!79 !176 !177 !381 !382) -!389 = (!79 !176 !177 !381 !382) -!390 = (!79 !176 !177 !381 !382) -!391 = (!79 !176 !177 !381 !382) -!392 = (!79 !176 !177 !381 !382) -!393 = (!79 !176 !177 !381 !382) -!394 = (!79 !176 !177 !381 !382) -!395 = span !10 5588 5592 -!396 = (!79 !176 !177 !381 !382 !395) -!397 = (!79 !176 !177 !381 !382) -!398 = (!79 !176 !177 !381 !382) -!399 = (!79 !176 !177 !381 !382) -!400 = (!79 !176 !177 !381 !382) -!401 = (!79 !176 !177 !381 !382) -!402 = (!79 !176 !177 !381 !382) -!403 = (!79 !176 !177 !381 !382) -!404 = (!79 !176 !177 !381 !382) -!405 = (!79 !176 !177 !381 !382) -!406 = (!79 !176 !177 !381 !382) -!407 = (!79 !176 !177 !381 !382) -!408 = (!79 !176 !177 !381 !382) -!409 = (!79 !176 !177 !381 !382) -!410 = (!79 !176 !177 !381 !382) -!411 = (!79 !176 !177 !381 !382) -!412 = (!79 !176 !177 !381 !382) -!413 = (!79 !176 !177 !381 !382) -!414 = (!79 !176 !177 !381 !382) -!415 = span !10 5521 5604 -!416 = (!79 !176 !177 !381 !382 !415) -!417 = (!79 !176 !177 !381 !382) -!418 = span !0 391 430 -!419 = (!79 !176 !177 !418) -!420 = span !0 444 448 -!421 = (!79 !176 !177 !420) -!422 = span !15 192 199 -!423 = (!79 !176 !177 !422) -!424 = span !0 462 468 -!425 = (!79 !176 !177 !424) -!426 = span !0 444 469 -!427 = fn_call_path_span !0 451 461 -!428 = (!79 !176 !177 !426 !427) -!429 = (!79 !176 !177 !426 !427) -!430 = span !10 4648 4654 -!431 = (!79 !176 !177 !426 !427 !430) -!432 = (!79 !176 !177 !426 !427 !97) -!433 = (!79 !176 !177 !426 !427) -!434 = (!79 !176 !177 !426 !427) -!435 = (!79 !176 !177 !426 !427) -!436 = (!79 !176 !177 !426 !427) -!437 = (!79 !176 !177 !426 !427) -!438 = (!79 !176 !177 !426 !427) -!439 = (!79 !176 !177 !426 !427) -!440 = span !10 4663 4667 -!441 = (!79 !176 !177 !426 !427 !440) -!442 = (!79 !176 !177 !426 !427) -!443 = (!79 !176 !177 !426 !427) -!444 = (!79 !176 !177 !426 !427) -!445 = (!79 !176 !177 !381 !382) -!446 = (!79 !176 !177 !381 !382) -!447 = (!79 !176 !177 !381 !382) -!448 = (!79 !176 !177 !381 !382) -!449 = (!79 !176 !177 !426 !427) -!450 = (!79 !176 !177 !426 !427) -!451 = (!79 !176 !177 !426 !427) -!452 = (!79 !176 !177 !426 !427) -!453 = (!79 !176 !177 !426 !427) -!454 = (!79 !176 !177 !426 !427) -!455 = (!79 !176 !177 !426 !427) -!456 = (!79 !176 !177 !426 !427) -!457 = (!79 !176 !177 !426 !427) -!458 = (!79 !176 !177 !426 !427) -!459 = (!79 !176 !177 !426 !427) -!460 = span !10 4596 4679 -!461 = (!79 !176 !177 !426 !427 !460) -!462 = (!79 !176 !177 !426 !427) -!463 = span !0 431 470 -!464 = (!79 !176 !177 !463) -!465 = span !0 492 498 -!466 = (!79 !176 !177 !465) -!467 = span !10 71261 71305 -!468 = (!79 !467) -!469 = span !10 71314 71320 -!470 = (!79 !469) -!471 = (!79 !176 !177 !426 !427) -!472 = (!79 !176 !177 !426 !427) -!473 = (!79 !176 !177 !426 !427) -!474 = (!79 !176 !177 !426 !427) -!475 = (!75 !76 !77) -!476 = (!79 !80) -!477 = (!79 !82) -!478 = (!79 !86) -!479 = (!79 !86) -!480 = (!79 !86) -!481 = (!79 !86) -!482 = (!79 !86) -!483 = span !0 152 306 -!484 = fn_name_span !0 155 165 -!485 = (!483 !484) -!486 = span !15 92 97 -!487 = (!75 !76 !77) -!488 = span !0 204 498 -!489 = (!79 !176 !177 !488) -!490 = (!79 !176 !177) -!491 = span !0 210 214 -!492 = span !0 217 412 -!493 = fn_call_path_span !0 217 412 -!494 = (!79 !176 !177 !492 !493) -!495 = (!79 !176 !177 !492) -!496 = (!79 !176 !177 !491) -!497 = (!79 !176 !177) -!498 = span !0 287 293 -!499 = (!79 !176 !177 !498) -!500 = span !0 271 275 -!501 = (!79 !176 !177) -!502 = (!79 !176 !177 !491) -!503 = (!79 !176 !177 !491) -!504 = (!79 !176 !177) -!505 = span !0 414 494 -!506 = fn_call_path_span !0 414 494 -!507 = (!79 !176 !177 !505 !506) -!508 = (!79 !176 !177 !505) -!509 = span !0 464 470 -!510 = (!79 !176 !177 !509) -!511 = span !0 448 452 -!512 = (!79 !176 !177) -!513 = (!79 !176 !177 !488) -!514 = (!75 !76 !77) -!515 = (!79 !80) -!516 = (!79 !82) -!517 = (!79 !86) -!518 = (!79 !86) -!519 = (!79 !86) -!520 = (!79 !86) -!521 = (!79 !86) +!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 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/vec.sw" +!23 = span !22 785 786 +!24 = span !14 651 661 +!25 = fn_call_path_span !14 651 659 +!26 = span !22 4111 4124 +!27 = fn_call_path_span !22 4111 4122 +!28 = span !22 774 787 +!29 = fn_call_path_span !22 774 779 +!30 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/alloc.sw" +!31 = span !30 1777 1796 +!32 = (!24 !25 !26 !27 !28 !29 !31) +!33 = span !22 750 818 +!34 = (!24 !25 !26 !27 !33) +!35 = (!24 !25 !26 !27) +!36 = (!24 !25 !26 !27 !33) +!37 = (!24 !25 !26 !27) +!38 = span !22 806 807 +!39 = (!24 !25 !26 !27 !33) +!40 = span !22 4087 4155 +!41 = (!24 !25 !40) +!42 = (!24 !25) +!43 = span !22 4143 4144 +!44 = (!24 !25 !40) +!45 = span !14 667 668 +!46 = span !14 674 675 +!47 = span !14 667 676 +!48 = fn_call_path_span !14 669 673 +!49 = (!47 !48) +!50 = span !14 682 683 +!51 = span !14 689 690 +!52 = span !14 682 691 +!53 = fn_call_path_span !14 684 688 +!54 = (!52 !53) +!55 = span !14 697 698 +!56 = span !14 704 705 +!57 = span !14 697 706 +!58 = fn_call_path_span !14 699 703 +!59 = (!57 !58) +!60 = span !14 790 791 +!61 = span !14 804 810 +!62 = span !14 723 840 +!63 = span !14 737 738 +!64 = span !14 751 752 +!65 = span !14 765 766 +!66 = span !14 779 780 +!67 = span !14 857 883 +!68 = span !14 873 877 +!69 = span !14 203 239 +!70 = span !14 905 931 +!71 = span !14 921 925 +!72 = span !14 996 997 +!73 = span !14 544 548 +!74 = span !14 528 592 +!75 = fn_name_span !14 531 540 +!76 = inline "never" +!77 = (!74 !75 !76) +!78 = span !14 584 588 +!79 = span !11 92817 92821 +!80 = (!78 !79) +!81 = span !11 92795 92910 +!82 = (!78 !81) +!83 = span !11 92837 92846 +!84 = span !11 92860 92875 +!85 = span !11 92927 92938 +!86 = (!78 !85) +!87 = (!78 !85) +!88 = (!78 !85) +!89 = (!78 !85) +!90 = (!78 !85) +!91 = span !11 4642 4646 +!92 = span !11 4628 4773 +!93 = fn_name_span !11 4631 4641 +!94 = (!92 !93) +!95 = span !11 4736 4742 +!96 = span !11 87 114 +!97 = span !11 4684 4767 +!98 = span !11 160 260 +!99 = fn_name_span !11 167 170 +!100 = (!98 !99) +!101 = span !11 191 254 +!102 = span !11 499 591 +!103 = fn_name_span !11 502 514 +!104 = (!102 !103) +!105 = span !11 573 577 +!106 = span !22 5760 5764 +!107 = span !22 5766 5771 +!108 = span !22 5740 6205 +!109 = fn_name_span !22 5747 5751 +!110 = (!108 !109) +!111 = span !22 3543 3551 +!112 = span !22 3523 3537 +!113 = span !22 375 383 +!114 = span !22 5852 5876 +!115 = fn_call_path_span !22 5861 5863 +!116 = (!114 !115) +!117 = span !22 5891 5906 +!118 = fn_call_path_span !22 5900 5904 +!119 = (!117 !118) +!120 = span !22 2990 2991 +!121 = span !22 2978 2991 +!122 = fn_call_path_span !22 2987 2989 +!123 = (!117 !118 !121 !122) +!124 = span !22 2994 2995 +!125 = (!117 !118 !121) +!126 = span !22 3005 3006 +!127 = span !22 3005 3017 +!128 = fn_call_path_span !22 3007 3008 +!129 = (!117 !118 !127 !128) +!130 = span !22 357 369 +!131 = (!117 !118 !130) +!132 = span !22 3041 3082 +!133 = fn_call_path_span !22 3041 3048 +!134 = span !30 2578 2595 +!135 = fn_call_path_span !30 2588 2589 +!136 = (!117 !118 !132 !133 !134 !135) +!137 = (!117 !118 !132 !133 !134) +!138 = span !30 2620 2641 +!139 = fn_call_path_span !30 2620 2625 +!140 = (!117 !118 !132 !133 !138 !139 !31) +!141 = span !30 2662 2663 +!142 = span !30 2654 2663 +!143 = fn_call_path_span !30 2660 2661 +!144 = (!117 !118 !132 !133 !142 !143) +!145 = (!117 !118 !132 !133 !142) +!146 = span !30 2678 2710 +!147 = fn_call_path_span !30 2682 2689 +!148 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" +!149 = span !148 3413 3437 +!150 = fn_call_path_span !148 3419 3420 +!151 = (!117 !118 !132 !133 !146 !147 !149 !150) +!152 = span !148 3447 3522 +!153 = (!117 !118 !132 !133 !146 !147 !152) +!154 = span !148 3496 3511 +!155 = (!117 !118 !132 !133) +!156 = span !22 3030 3082 +!157 = (!117 !118 !156) +!158 = span !22 3092 3110 +!159 = (!117 !118 !158) +!160 = span !22 6040 6071 +!161 = fn_call_path_span !22 6053 6056 +!162 = (!160 !161) +!163 = span !22 6124 6145 +!164 = fn_call_path_span !22 6128 6133 +!165 = span !148 4228 4299 +!166 = (!163 !164 !165) +!167 = span !148 4271 4284 +!168 = span !22 6197 6198 +!169 = span !22 6185 6198 +!170 = fn_call_path_span !22 6194 6196 +!171 = (!169 !170) +!172 = (!74 !75 !76) +!173 = span !11 92713 92737 +!174 = fn_call_path_span !11 92713 92730 +!175 = span !11 3576 3598 +!176 = fn_call_path_span !11 3576 3596 +!177 = span !0 156 213 +!178 = fn_call_path_span !0 183 185 +!179 = (!78 !173 !174 !175 !176 !177 !178) +!180 = span !0 156 303 +!181 = (!78 !173 !174 !175 !176 !180) +!182 = span !14 365 370 +!183 = (!78 !173 !174 !175 !176 !180) +!184 = span !0 156 332 +!185 = (!78 !173 !174 !175 !176 !184) +!186 = span !11 5316 5320 +!187 = (!78 !173 !174 !175 !176 !184) +!188 = span !0 156 367 +!189 = (!78 !173 !174 !175 !176 !188) +!190 = (!78 !173 !174 !175 !176 !188) +!191 = span !0 156 397 +!192 = (!78 !173 !174 !175 !176 !191) +!193 = (!78 !173 !174 !175 !176 !191) +!194 = span !0 156 428 +!195 = (!78 !173 !174 !175 !176 !194) +!196 = (!78 !173 !174 !175 !176 !194) +!197 = (!78 !173) +!198 = (!78 !79) +!199 = (!78 !81) +!200 = (!78 !85) +!201 = (!78 !85) +!202 = (!78 !85) +!203 = (!78 !85) +!204 = (!78 !85) +!205 = span !11 93011 93015 +!206 = (!78 !205) +!207 = span !11 93011 93041 +!208 = fn_call_path_span !11 93016 93026 +!209 = (!78 !207 !208) +!210 = (!78 !207 !208) +!211 = span !0 576 580 +!212 = (!78 !207 !208 !211) +!213 = span !14 116 122 +!214 = (!78 !207 !208 !213) +!215 = (!78 !207 !208) +!216 = span !0 594 600 +!217 = (!78 !207 !208 !216) +!218 = span !0 563 602 +!219 = (!78 !207 !208 !218) +!220 = span !0 616 620 +!221 = (!78 !207 !208 !220) +!222 = span !14 128 134 +!223 = (!78 !207 !208 !222) +!224 = span !0 634 640 +!225 = (!78 !207 !208 !224) +!226 = span !0 616 641 +!227 = fn_call_path_span !0 623 633 +!228 = (!78 !207 !208 !226 !227) +!229 = span !11 4971 4977 +!230 = (!78 !207 !208 !226 !227 !229) +!231 = (!78 !207 !208 !226 !227 !96) +!232 = (!78 !207 !208 !226 !227) +!233 = (!78 !207 !208 !226 !227) +!234 = (!78 !207 !208 !226 !227) +!235 = (!78 !207 !208 !226 !227) +!236 = (!78 !207 !208 !226 !227) +!237 = (!78 !207 !208 !226 !227) +!238 = (!78 !207 !208 !226 !227) +!239 = (!78 !207 !208 !226 !227) +!240 = (!78 !207 !208 !226 !227) +!241 = (!78 !207 !208 !226 !227) +!242 = (!78 !207 !208 !226 !227) +!243 = (!78 !207 !208 !226 !227) +!244 = (!78 !207 !208 !226 !227) +!245 = (!78 !207 !208 !226 !227) +!246 = (!78 !207 !208 !226 !227) +!247 = (!78 !207 !208 !226 !227) +!248 = (!78 !207 !208 !226 !227) +!249 = (!78 !207 !208 !226 !227) +!250 = (!78 !207 !208 !226 !227) +!251 = (!78 !207 !208 !226 !227) +!252 = (!78 !207 !208 !226 !227) +!253 = (!78 !207 !208 !226 !227) +!254 = (!78 !207 !208 !226 !227) +!255 = span !11 4919 5002 +!256 = (!78 !207 !208 !226 !227 !255) +!257 = (!78 !207 !208 !226 !227) +!258 = span !0 603 642 +!259 = (!78 !207 !208 !258) +!260 = span !0 656 660 +!261 = (!78 !207 !208 !260) +!262 = span !14 140 146 +!263 = (!78 !207 !208 !262) +!264 = span !0 674 680 +!265 = (!78 !207 !208 !264) +!266 = span !0 656 681 +!267 = fn_call_path_span !0 663 673 +!268 = (!78 !207 !208 !266 !267) +!269 = span !11 5206 5212 +!270 = (!78 !207 !208 !266 !267 !269) +!271 = (!78 !207 !208 !266 !267 !96) +!272 = (!78 !207 !208 !266 !267) +!273 = (!78 !207 !208 !266 !267) +!274 = (!78 !207 !208 !266 !267) +!275 = (!78 !207 !208 !266 !267) +!276 = (!78 !207 !208 !266 !267) +!277 = (!78 !207 !208 !266 !267) +!278 = (!78 !207 !208 !266 !267) +!279 = (!78 !207 !208 !266 !267) +!280 = (!78 !207 !208 !266 !267) +!281 = (!78 !207 !208 !266 !267) +!282 = (!78 !207 !208 !226 !227) +!283 = (!78 !207 !208 !226 !227) +!284 = (!78 !207 !208 !226 !227) +!285 = (!78 !207 !208 !226 !227) +!286 = (!78 !207 !208 !266 !267) +!287 = (!78 !207 !208 !266 !267) +!288 = (!78 !207 !208 !266 !267) +!289 = (!78 !207 !208 !266 !267) +!290 = (!78 !207 !208 !266 !267) +!291 = (!78 !207 !208 !266 !267) +!292 = (!78 !207 !208 !266 !267) +!293 = (!78 !207 !208 !266 !267) +!294 = (!78 !207 !208 !266 !267) +!295 = (!78 !207 !208 !266 !267) +!296 = (!78 !207 !208 !266 !267) +!297 = (!78 !207 !208 !266 !267) +!298 = (!78 !207 !208 !266 !267) +!299 = span !11 5154 5237 +!300 = (!78 !207 !208 !266 !267 !299) +!301 = (!78 !207 !208 !266 !267) +!302 = span !0 643 682 +!303 = (!78 !207 !208 !302) +!304 = span !0 696 700 +!305 = (!78 !207 !208 !304) +!306 = span !14 152 157 +!307 = (!78 !207 !208 !306) +!308 = (!78 !207 !208) +!309 = span !0 714 720 +!310 = (!78 !207 !208 !309) +!311 = span !0 696 721 +!312 = fn_call_path_span !0 703 713 +!313 = (!78 !207 !208 !311 !312) +!314 = span !11 5439 5445 +!315 = (!78 !207 !208 !311 !312 !314) +!316 = (!78 !207 !208 !311 !312 !96) +!317 = (!78 !207 !208 !311 !312) +!318 = (!78 !207 !208 !311 !312) +!319 = (!78 !207 !208 !311 !312) +!320 = (!78 !207 !208 !311 !312) +!321 = (!78 !207 !208 !311 !312) +!322 = (!78 !207 !208 !311 !312) +!323 = (!78 !207 !208 !311 !312) +!324 = (!78 !207 !208 !311 !312) +!325 = (!78 !207 !208 !311 !312) +!326 = (!78 !207 !208 !311 !312) +!327 = (!78 !207 !208 !266 !267) +!328 = (!78 !207 !208 !266 !267) +!329 = (!78 !207 !208 !266 !267) +!330 = (!78 !207 !208 !266 !267) +!331 = (!78 !207 !208 !311 !312) +!332 = (!78 !207 !208 !311 !312) +!333 = (!78 !207 !208 !311 !312) +!334 = (!78 !207 !208 !311 !312) +!335 = (!78 !207 !208 !311 !312) +!336 = (!78 !207 !208 !311 !312) +!337 = (!78 !207 !208 !311 !312) +!338 = (!78 !207 !208 !311 !312) +!339 = (!78 !207 !208 !311 !312) +!340 = (!78 !207 !208 !311 !312) +!341 = span !11 5387 5470 +!342 = (!78 !207 !208 !311 !312 !341) +!343 = (!78 !207 !208 !311 !312) +!344 = span !0 683 722 +!345 = (!78 !207 !208 !344) +!346 = span !0 736 740 +!347 = (!78 !207 !208 !346) +!348 = span !14 163 174 +!349 = (!78 !207 !208 !348) +!350 = span !0 754 760 +!351 = (!78 !207 !208 !350) +!352 = span !0 736 761 +!353 = fn_call_path_span !0 743 753 +!354 = (!78 !207 !208 !352 !353) +!355 = (!78 !207 !208 !352 !353) +!356 = span !22 21353 21357 +!357 = (!78 !207 !208 !352 !353 !356) +!358 = (!78 !207 !208 !352 !353 !111) +!359 = (!78 !207 !208 !352 !353) +!360 = span !22 21403 21409 +!361 = (!78 !207 !208 !352 !353 !360) +!362 = span !22 21371 21411 +!363 = (!78 !207 !208 !352 !353 !362) +!364 = span !22 21433 21434 +!365 = (!78 !207 !208 !352 !353) +!366 = (!78 !207 !208 !311 !312) +!367 = (!78 !207 !208 !311 !312) +!368 = (!78 !207 !208 !311 !312) +!369 = (!78 !207 !208 !311 !312) +!370 = span !22 21450 21457 +!371 = fn_call_path_span !22 21452 21453 +!372 = (!78 !207 !208 !352 !353 !370 !371) +!373 = (!78 !207 !208 !352 !353) +!374 = span !22 21483 21487 +!375 = (!78 !207 !208 !352 !353 !374) +!376 = span !22 21483 21504 +!377 = fn_call_path_span !22 21488 21501 +!378 = (!78 !207 !208 !352 !353 !376 !377) +!379 = span !22 8256 8260 +!380 = (!78 !207 !208 !352 !353 !376 !377 !379) +!381 = (!78 !207 !208 !352 !353 !376 !377 !112) +!382 = (!78 !207 !208 !352 !353 !376 !377 !130) +!383 = (!78 !207 !208 !352 !353 !376 !377) +!384 = span !22 8256 8284 +!385 = fn_call_path_span !22 8269 8272 +!386 = (!78 !207 !208 !352 !353 !376 !377 !384 !385) +!387 = (!78 !207 !208 !352 !353 !376 !377 !384 !385) +!388 = span !22 8256 8296 +!389 = fn_call_path_span !22 8285 8289 +!390 = span !148 2650 2739 +!391 = (!78 !207 !208 !352 !353 !376 !377 !388 !389 !390) +!392 = span !148 2688 2701 +!393 = span !22 21543 21549 +!394 = (!78 !207 !208 !352 !353 !393) +!395 = span !22 21518 21550 +!396 = (!78 !207 !208 !352 !353 !395) +!397 = span !22 21569 21570 +!398 = span !22 21564 21570 +!399 = fn_call_path_span !22 21566 21568 +!400 = (!78 !207 !208 !352 !353 !398 !399) +!401 = (!78 !207 !208 !352 !353) +!402 = span !22 21591 21597 +!403 = (!78 !207 !208 !352 !353 !402) +!404 = span !0 723 762 +!405 = (!78 !207 !208 !404) +!406 = span !0 776 780 +!407 = (!78 !207 !208 !406) +!408 = span !14 180 186 +!409 = (!78 !207 !208 !408) +!410 = span !0 794 800 +!411 = (!78 !207 !208 !410) +!412 = span !0 776 801 +!413 = fn_call_path_span !0 783 793 +!414 = (!78 !207 !208 !412 !413) +!415 = (!78 !207 !208 !412 !413) +!416 = span !11 5710 5716 +!417 = (!78 !207 !208 !412 !413 !416) +!418 = (!78 !207 !208 !412 !413 !96) +!419 = (!78 !207 !208 !412 !413) +!420 = (!78 !207 !208 !412 !413) +!421 = (!78 !207 !208 !412 !413) +!422 = (!78 !207 !208 !412 !413) +!423 = (!78 !207 !208 !412 !413) +!424 = (!78 !207 !208 !412 !413) +!425 = (!78 !207 !208 !412 !413) +!426 = span !11 5725 5729 +!427 = (!78 !207 !208 !412 !413 !426) +!428 = (!78 !207 !208 !412 !413) +!429 = (!78 !207 !208 !412 !413) +!430 = (!78 !207 !208 !412 !413) +!431 = (!78 !207 !208 !412 !413) +!432 = (!78 !207 !208 !412 !413) +!433 = (!78 !207 !208 !412 !413) +!434 = (!78 !207 !208 !412 !413) +!435 = (!78 !207 !208 !412 !413) +!436 = (!78 !207 !208 !412 !413) +!437 = (!78 !207 !208 !412 !413) +!438 = (!78 !207 !208 !412 !413) +!439 = (!78 !207 !208 !412 !413) +!440 = (!78 !207 !208 !412 !413) +!441 = (!78 !207 !208 !412 !413) +!442 = (!78 !207 !208 !412 !413) +!443 = (!78 !207 !208 !412 !413) +!444 = (!78 !207 !208 !412 !413) +!445 = (!78 !207 !208 !412 !413) +!446 = span !11 5658 5741 +!447 = (!78 !207 !208 !412 !413 !446) +!448 = (!78 !207 !208 !412 !413) +!449 = span !0 763 802 +!450 = (!78 !207 !208 !449) +!451 = span !0 816 820 +!452 = (!78 !207 !208 !451) +!453 = span !14 192 199 +!454 = (!78 !207 !208 !453) +!455 = span !0 834 840 +!456 = (!78 !207 !208 !455) +!457 = span !0 816 841 +!458 = fn_call_path_span !0 823 833 +!459 = (!78 !207 !208 !457 !458) +!460 = (!78 !207 !208 !457 !458) +!461 = span !11 4502 4508 +!462 = (!78 !207 !208 !457 !458 !461) +!463 = (!78 !207 !208 !457 !458 !96) +!464 = (!78 !207 !208 !457 !458) +!465 = (!78 !207 !208 !457 !458) +!466 = (!78 !207 !208 !457 !458) +!467 = (!78 !207 !208 !457 !458) +!468 = (!78 !207 !208 !457 !458) +!469 = (!78 !207 !208 !457 !458) +!470 = (!78 !207 !208 !457 !458) +!471 = span !11 4517 4521 +!472 = (!78 !207 !208 !457 !458 !471) +!473 = (!78 !207 !208 !457 !458) +!474 = (!78 !207 !208 !457 !458) +!475 = (!78 !207 !208 !457 !458) +!476 = (!78 !207 !208 !412 !413) +!477 = (!78 !207 !208 !412 !413) +!478 = (!78 !207 !208 !412 !413) +!479 = (!78 !207 !208 !412 !413) +!480 = (!78 !207 !208 !457 !458) +!481 = (!78 !207 !208 !457 !458) +!482 = (!78 !207 !208 !457 !458) +!483 = (!78 !207 !208 !457 !458) +!484 = (!78 !207 !208 !457 !458) +!485 = (!78 !207 !208 !457 !458) +!486 = (!78 !207 !208 !457 !458) +!487 = (!78 !207 !208 !457 !458) +!488 = (!78 !207 !208 !457 !458) +!489 = (!78 !207 !208 !457 !458) +!490 = (!78 !207 !208 !457 !458) +!491 = span !11 4450 4533 +!492 = (!78 !207 !208 !457 !458 !491) +!493 = (!78 !207 !208 !457 !458) +!494 = span !0 803 842 +!495 = (!78 !207 !208 !494) +!496 = span !0 864 870 +!497 = (!78 !207 !208 !496) +!498 = span !11 92998 93042 +!499 = (!78 !498) +!500 = span !11 93051 93057 +!501 = (!78 !500) +!502 = (!78 !207 !208 !457 !458) +!503 = (!78 !207 !208 !457 !458) +!504 = (!78 !207 !208 !457 !458) +!505 = (!78 !207 !208 !457 !458) +!506 = (!74 !75 !76) +!507 = (!78 !79) +!508 = (!78 !81) +!509 = (!78 !85) +!510 = (!78 !85) +!511 = (!78 !85) +!512 = (!78 !85) +!513 = (!78 !85) +!514 = span !0 337 491 +!515 = fn_name_span !0 340 350 +!516 = (!514 !515) +!517 = span !14 92 97 +!518 = (!74 !75 !76) +!519 = (!78 !173 !174 !175 !176 !177 !178) +!520 = (!78 !173) +!521 = (!78 !79) +!522 = (!78 !81) +!523 = (!78 !85) +!524 = (!78 !85) +!525 = (!78 !85) +!526 = (!78 !85) +!527 = (!78 !85) +!528 = (!78 !205) +!529 = (!78 !207 !208) +!530 = (!78 !207 !208) +!531 = span !0 430 434 +!532 = (!78 !207 !208 !531) +!533 = span !0 424 718 +!534 = (!78 !207 !208 !533) +!535 = (!78 !207 !208 !531) +!536 = (!78 !207 !208 !531) +!537 = (!78 !207 !208) +!538 = span !0 437 632 +!539 = fn_call_path_span !0 437 632 +!540 = (!78 !207 !208 !538 !539) +!541 = (!78 !207 !208 !538) +!542 = (!78 !207 !208 !531) +!543 = (!78 !207 !208) +!544 = span !0 442 447 +!545 = (!78 !207 !208 !544) +!546 = span !0 507 513 +!547 = (!78 !207 !208 !546) +!548 = span !0 491 495 +!549 = span !0 478 515 +!550 = (!78 !207 !208 !549) +!551 = span !0 553 558 +!552 = (!78 !207 !208 !551) +!553 = span !0 570 576 +!554 = (!78 !207 !208 !553) +!555 = span !0 540 578 +!556 = (!78 !207 !208 !555) +!557 = span !0 603 609 +!558 = (!78 !207 !208 !557) +!559 = (!78 !207 !208) +!560 = (!78 !207 !208 !531) +!561 = (!78 !207 !208 !531) +!562 = (!78 !207 !208) +!563 = span !0 634 714 +!564 = fn_call_path_span !0 634 714 +!565 = (!78 !207 !208 !563 !564) +!566 = (!78 !207 !208 !563) +!567 = span !0 684 690 +!568 = (!78 !207 !208 !567) +!569 = span !0 668 672 +!570 = (!78 !207 !208) +!571 = (!78 !207 !208 !533) +!572 = span !0 411 719 +!573 = (!78 !207 !208 !572) +!574 = span !0 740 746 +!575 = (!78 !207 !208 !574) +!576 = (!78 !498) +!577 = (!78 !500) +!578 = (!74 !75 !76) +!579 = span !14 433 438 warning --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 @@ -1614,46 +1812,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: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 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 @@ -1662,10 +1872,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". | @@ -1698,51 +1908,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: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 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 4ed710821ec..486cb8cc9f9 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 @@ -25,114 +25,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(): - v8v1 = const u64 0, !5 - v397v1 = gtf v8v1, 10, !11 - v398v1 = bitcast v397v1 to ptr, !12 - v404v1 = get_local __ptr { ptr }, buffer, !14 - v21v1 = const u64 0 - v405v1 = get_elem_ptr v404v1, __ptr ptr, v21v1, !15 - store v398v1 to v405v1, !16 - v411v1 = get_local __ptr { ptr }, buffer, !18 - v39v1 = const u64 0 - v419v1 = get_elem_ptr v411v1, __ptr ptr, v39v1, !26 - v420v1 = load v419v1, !27 - v421v1 = asm(ptr: v420v1, val) -> u64 val, !29 { - lw val ptr i0, !30 - } - v425v1 = load v419v1, !31 - v426v1 = const u64 8, !32 - v427v1 = add v425v1, v426v1, !33 - store v427v1 to v419v1, !35 - v434v1 = get_local __ptr { u64 }, args, !37 - v69v1 = const u64 0 - v435v1 = get_elem_ptr v434v1, __ptr u64, v69v1, !38 - store v421v1 to v435v1, !39 - v101v1 = get_local __ptr { u64 }, args, !40 - v102v1 = const u64 0 - v103v1 = get_elem_ptr v101v1, __ptr u64, v102v1, !41 - v104v1 = load v103v1 - v105v1 = call main_5(v104v1), !44 - v445v1 = get_local __ptr u64, item_, !47 - store v105v1 to v445v1, !47 - v527v1 = get_local __ptr u64, item_, !49 - v134v1 = const u64 8 - retd v527v1 v134v1, !51 + v108v1 = const u64 0, !5 + v526v1 = gtf v108v1, 10, !11 + v527v1 = bitcast v526v1 to ptr, !12 + v580v1 = cast_ptr v527v1 to __ptr { u64 }, !15 + v672v1 = get_local __ptr { u64 }, __aggr_memcpy_0 + mem_copy_val v672v1, v580v1 + v116v1 = get_local __ptr { u64 }, args, !16 + mem_copy_val v116v1, v672v1 + v138v1 = get_local __ptr { u64 }, args, !17 + v139v1 = const u64 0 + v140v1 = get_elem_ptr v138v1, __ptr u64, v139v1, !18 + v141v1 = load v140v1 + v142v1 = call main_11(v141v1), !21 + v143v1 = get_local __ptr u64, _result, !22 + store v142v1 to v143v1, !22 + v266v1 = get_local __ptr u64, _result, !23 + v153v1 = const u64 8 + retd v266v1 v153v1, !27 } - entry_orig fn main_5(baba !53: u64) -> u64, !56 { + entry_orig fn main_11(baba !29: u64) -> u64, !32 { entry(baba: u64): - v98v1 = const u64 1, !57 - v328v1 = add baba, v98v1, !60 - ret u64 v328v1 + v135v1 = const u64 1, !33 + v452v1 = add baba, v135v1, !36 + ret u64 v452v1 } } !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 +111,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 +136,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 5a66dc4e24f..4cd10725cc0 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 @@ -25,140 +25,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(): - v8v1 = const u64 0, !5 - v373v1 = gtf v8v1, 10, !11 - v374v1 = bitcast v373v1 to ptr, !12 - v380v1 = get_local __ptr { ptr }, buffer, !14 - v21v1 = const u64 0 - v381v1 = get_elem_ptr v380v1, __ptr ptr, v21v1, !15 - store v374v1 to v381v1, !16 - v387v1 = get_local __ptr { ptr }, buffer, !18 - v39v1 = const u64 0 - v391v3 = get_elem_ptr v387v1, __ptr ptr, v39v1, !26 - v493v1 = load v391v3, !27 - v494v1 = asm(ptr: v493v1, val) -> u64 val, !29 { - lw val ptr i0, !30 + v118v1 = const u64 0, !5 + v517v1 = gtf v118v1, 10, !11 + v518v1 = bitcast v517v1 to ptr, !12 + v28v1 = const bool true, !13 + cbr v28v1, 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(): + v561v1 = cast_ptr v518v1 to __ptr { u64, u64 }, !18 + v679v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_0 + mem_copy_val v679v1, v561v1 + v674v1 = get_local __ptr { u64, u64 }, __tmp_block_arg + mem_copy_val v674v1, v679v1 + br decode_script_data_0_decode_from_raw_ptr_1_block2(v674v1), !19 + + decode_script_data_0_decode_from_raw_ptr_1_block1(): + v539v1 = get_local __ptr { ptr }, __anon_0, !21 + v53v1 = const u64 0 + v540v1 = get_elem_ptr v539v1, __ptr ptr, v53v1, !22 + store v518v1 to v540v1, !23 + v543v1 = get_local __ptr { ptr }, buffer, !25 + mem_copy_val v543v1, v539v1 + v545v1 = get_local __ptr { ptr }, buffer, !27 + v69v1 = const u64 0 + v549v3 = get_elem_ptr v545v1, __ptr ptr, v69v1, !35 + v653v1 = load v549v3, !36 + v654v1 = asm(ptr: v653v1, val) -> u64 val, !38 { + lw val ptr i0, !39 } - v496v1 = load v391v3, !31 - v497v1 = const u64 8, !32 - v498v1 = add v496v1, v497v1, !33 - store v498v1 to v391v3, !35 - v503v1 = load v391v3, !38 - v504v1 = asm(ptr: v503v1, val) -> u64 val, !39 { - lw val ptr i0, !30 + v656v1 = load v549v3, !40 + v657v1 = const u64 8, !41 + v658v1 = add v656v1, v657v1, !42 + store v658v1 to v549v3, !44 + v663v1 = load v549v3, !47 + v664v1 = asm(ptr: v663v1, val) -> u64 val, !48 { + lw val ptr i0, !39 } - v506v1 = load v391v3, !40 - v507v1 = const u64 8, !41 - v508v1 = add v506v1, v507v1, !42 - store v508v1 to v391v3, !43 - v394v1 = get_local __ptr { u64, u64 }, args, !45 - v72v1 = const u64 0 - v395v1 = get_elem_ptr v394v1, __ptr u64, v72v1, !46 - store v494v1 to v395v1, !47 - v75v1 = const u64 1 - v397v1 = get_elem_ptr v394v1, __ptr u64, v75v1, !48 - store v504v1 to v397v1, !49 - v111v1 = get_local __ptr { u64, u64 }, args, !50 - v112v1 = const u64 0 - v113v1 = get_elem_ptr v111v1, __ptr u64, v112v1, !51 - v114v1 = load v113v1 - v115v1 = get_local __ptr { u64, u64 }, args, !52 - v116v1 = const u64 1 - v117v1 = get_elem_ptr v115v1, __ptr u64, v116v1, !53 - v118v1 = load v117v1 - v119v1 = call main_5(v114v1, v118v1), !56 - v407v1 = get_local __ptr u64, item_, !59 - store v119v1 to v407v1, !59 - v489v1 = get_local __ptr u64, item_, !61 - v148v1 = const u64 8 - retd v489v1 v148v1, !63 + v666v1 = load v549v3, !49 + v667v1 = const u64 8, !50 + v668v1 = add v666v1, v667v1, !51 + store v668v1 to v549v3, !52 + v552v1 = get_local __ptr { u64, u64 }, __anon_00, !54 + v102v1 = const u64 0 + v553v1 = get_elem_ptr v552v1, __ptr u64, v102v1, !55 + store v654v1 to v553v1, !56 + v105v1 = const u64 1 + v555v1 = get_elem_ptr v552v1, __ptr u64, v105v1, !57 + store v664v1 to v555v1, !58 + v676v1 = get_local __ptr { u64, u64 }, __tmp_block_arg + mem_copy_val v676v1, v552v1 + br decode_script_data_0_decode_from_raw_ptr_1_block2(v676v1), !59 + + decode_script_data_0_decode_from_raw_ptr_1_block2(v672v1: __ptr { u64, u64 }): + v126v1 = get_local __ptr { u64, u64 }, args, !60 + mem_copy_val v126v1, v672v1 + v152v1 = get_local __ptr { u64, u64 }, args, !61 + v153v1 = const u64 0 + v154v1 = get_elem_ptr v152v1, __ptr u64, v153v1, !62 + v155v1 = load v154v1 + v156v1 = get_local __ptr { u64, u64 }, args, !63 + v157v1 = const u64 1 + v158v1 = get_elem_ptr v156v1, __ptr u64, v157v1, !64 + v159v1 = load v158v1 + v160v1 = call main_11(v155v1, v159v1), !67 + v161v1 = get_local __ptr u64, _result, !68 + store v160v1 to v161v1, !68 + v284v1 = get_local __ptr u64, _result, !69 + v171v1 = const u64 8 + retd v284v1 v171v1, !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): - v306v1 = add baba, keke, !72 - ret u64 v306v1 + v442v1 = add baba, keke, !82 + ret u64 v442v1 } } !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 +208,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 +239,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 c2fc1ea7ca4..b0ed1a1684f 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 @@ -30,68 +30,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(): - v96v1 = const u64 0, !5 - v2621v1 = gtf v96v1, 10, !11 - v2622v1 = bitcast v2621v1 to ptr, !12 - v2628v1 = get_local __ptr { ptr }, buffer, !14 - v109v1 = const u64 0 - v2629v1 = get_elem_ptr v2628v1, __ptr ptr, v109v1, !15 - store v2622v1 to v2629v1, !16 - v2635v1 = get_local __ptr { ptr }, buffer, !18 - v2832v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first - v2833v1 = call decode_4(v2635v1, v2832v1) - v2644v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !24 - v2645v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first, !26 - v356v1 = const u64 0 - v2647v1 = get_elem_ptr v2644v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v356v1, !27 - mem_copy_val v2647v1, v2645v1 - v359v1 = const u64 1 - v2649v1 = get_elem_ptr v2644v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v359v1, !28 - mem_copy_val v2649v1, v2645v1 - v365v1 = const u64 1, !29 - br decode_script_data_0_abi_decode_2_abi_decode_3_while(v365v1), !30 + v484v1 = const u64 0, !5 + v3594v1 = gtf v484v1, 10, !11 + v3595v1 = bitcast v3594v1 to ptr, !12 + v3638v1 = get_local __ptr { ptr }, buffer, !16 + v169v1 = const u64 0 + v3639v1 = get_elem_ptr v3638v1, __ptr ptr, v169v1, !17 + store v3595v1 to v3639v1, !18 + v3644v1 = get_local __ptr { ptr }, buffer, !20 + v3865v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first + v3866v1 = call decode_17(v3644v1, v3865v1) + v3653v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !26 + v3654v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first, !28 + v402v1 = const u64 0 + v3656v1 = get_elem_ptr v3653v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v402v1, !29 + mem_copy_val v3656v1, v3654v1 + v405v1 = const u64 1 + v3658v1 = get_elem_ptr v3653v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v405v1, !30 + mem_copy_val v3658v1, v3654v1 + v411v1 = const u64 1, !31 + br decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while(v411v1), !32 - decode_script_data_0_abi_decode_2_abi_decode_3_while(v2616v1: u64): - v383v1 = const u64 2, !31 - v2661v1 = cmp lt v2616v1 v383v1, !34 - cbr v2661v1, 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(v3587v1: u64): + v429v1 = const u64 2, !33 + v3670v1 = cmp lt v3587v1 v429v1, !36 + cbr v3670v1, 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(): - v2835v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __ret_val0 - v2836v1 = call decode_4(v2635v1, v2835v1) - v2675v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !37 - v2677v1 = get_elem_ptr v2675v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v2616v1, !38 - mem_copy_val v2677v1, v2835v1 - v408v1 = const u64 1, !39 - v2684v1 = add v2616v1, v408v1, !42 - br decode_script_data_0_abi_decode_2_abi_decode_3_while(v2684v1), !43 + decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while_body(): + v3868v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __ret_val0 + v3869v1 = call decode_17(v3644v1, v3868v1) + v3684v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !39 + v3686v1 = get_elem_ptr v3684v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v3587v1, !40 + mem_copy_val v3686v1, v3868v1 + v454v1 = const u64 1, !41 + v3693v1 = add v3587v1, v454v1, !44 + br decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_while(v3693v1), !45 - decode_script_data_0_abi_decode_2_abi_decode_3_end_while(): - v2664v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !45 - v2667v1 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !47 - v425v1 = const u64 0 - v2668v1 = get_elem_ptr v2667v1, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v425v1, !48 - mem_copy_val v2668v1, v2664v1 - v1027v1 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !49 - v1028v1 = const u64 0 - v1029v1 = get_elem_ptr v1027v1, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v1028v1, !50 - v2790v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __tmp_arg - mem_copy_val v2790v1, v1029v1 - v2842v1 = get_local __ptr { u64 }, item_ - v2843v1 = call main_19(v2790v1, v2842v1) - v2733v1 = get_local __ptr { u64 }, item_, !54 - v1048v1 = const u64 8 - retd v2733v1 v1048v1, !56 + decode_script_data_0_decode_from_raw_ptr_1_abi_decode_15_abi_decode_16_end_while(): + v3673v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !47 + v3676v1 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !49 + v471v1 = const u64 0 + v3677v1 = get_elem_ptr v3676v1, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v471v1, !50 + mem_copy_val v3677v1, v3673v1 + v1124v1 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !51 + v1125v1 = const u64 0 + v1126v1 = get_elem_ptr v1124v1, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v1125v1, !52 + v3817v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __tmp_arg + mem_copy_val v3817v1, v1126v1 + v3875v1 = get_local __ptr { u64 }, _result + v3876v1 = call main_32(v3817v1, v3875v1) + v1198v1 = get_local __ptr { u64 }, _result, !53 + v1145v1 = const u64 8 + retd v1198v1 v1145v1, !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 @@ -108,137 +108,139 @@ script { local slice slice_ entry(self: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }): - v145v1 = const u64 0 - v1449v1 = get_elem_ptr self, __ptr ptr, v145v1, !70 - v1452v1 = get_local __ptr { ptr, u64 }, __anon_000, !72 - v151v1 = const u64 0 - v1453v1 = get_elem_ptr v1452v1, __ptr ptr, v151v1, !73 - mem_copy_val v1453v1, v1449v1 - v154v1 = const u64 1 - v1455v1 = get_elem_ptr v1452v1, __ptr u64, v154v1, !74 - v180v1 = const u64 3, !75 - store v180v1 to v1455v1, !76 - v2868v1 = asm(ptr: v1452v1) -> __ptr slice ptr { + v203v1 = const u64 0 + v1818v1 = get_elem_ptr self, __ptr ptr, v203v1, !71 + v1821v1 = get_local __ptr { ptr, u64 }, __anon_000, !73 + v209v1 = const u64 0 + v1822v1 = get_elem_ptr v1821v1, __ptr ptr, v209v1, !74 + mem_copy_val v1822v1, v1818v1 + v212v1 = const u64 1 + v1824v1 = get_elem_ptr v1821v1, __ptr u64, v212v1, !75 + v238v1 = const u64 3, !76 + store v238v1 to v1824v1, !77 + v3901v1 = asm(ptr: v1821v1) -> __ptr slice ptr { } - v2905v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v2905v1, v2868v1 - v1459v1 = get_local __ptr slice, slice, !78 - mem_copy_val v1459v1, v2905v1 - v1463v1 = load v1449v1, !79 - v1465v1 = const u64 3, !80 - v1466v1 = add v1463v1, v1465v1, !81 - store v1466v1 to v1449v1, !83 - v1470v1 = get_local __ptr slice, slice, !85 - v1473v1 = get_local __ptr slice, data, !87 - mem_copy_val v1473v1, v1470v1 - v1475v1 = get_local __ptr slice, data, !89 - v1477v1 = get_local __ptr slice, self_000, !92 - mem_copy_val v1477v1, v1475v1 - v1479v1 = get_local __ptr slice, self_000, !95 - v1481v1 = get_local __ptr slice, slice_, !98 - mem_copy_val v1481v1, v1479v1 - v1483v1 = get_local __ptr slice, slice_, !100 - v2870v1 = asm(ptr: v1483v1) -> __ptr { ptr, u64 } ptr { + v3939v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v3939v1, v3901v1 + v1828v1 = get_local __ptr slice, slice, !79 + mem_copy_val v1828v1, v3939v1 + v1832v1 = load v1818v1, !80 + v1834v1 = const u64 3, !81 + v1835v1 = add v1832v1, v1834v1, !82 + store v1835v1 to v1818v1, !84 + v1839v1 = get_local __ptr slice, slice, !86 + v1842v1 = get_local __ptr slice, data, !88 + mem_copy_val v1842v1, v1839v1 + v1844v1 = get_local __ptr slice, data, !90 + v1846v1 = get_local __ptr slice, self_000, !93 + mem_copy_val v1846v1, v1844v1 + v1848v1 = get_local __ptr slice, self_000, !96 + v1850v1 = get_local __ptr slice, slice_, !99 + mem_copy_val v1850v1, v1848v1 + v1852v1 = get_local __ptr slice, slice_, !101 + v3903v1 = asm(ptr: v1852v1) -> __ptr { ptr, u64 } ptr { } - v2911v1 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 - mem_copy_val v2911v1, v2870v1 - v1487v1 = get_local __ptr { ptr, u64 }, __anon_0000, !101 - mem_copy_val v1487v1, v2911v1 - v199v1 = const u64 0 - v1489v1 = get_elem_ptr v1487v1, __ptr ptr, v199v1, !103 - v1490v1 = load v1489v1, !104 - v2872v1 = asm(s: v1490v1) -> __ptr string<3> s { + v3945v1 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 + mem_copy_val v3945v1, v3903v1 + v1856v1 = get_local __ptr { ptr, u64 }, __anon_0000, !102 + mem_copy_val v1856v1, v3945v1 + v257v1 = const u64 0 + v1858v1 = get_elem_ptr v1856v1, __ptr ptr, v257v1, !104 + v1859v1 = load v1858v1, !105 + v3905v1 = asm(s: v1859v1) -> __ptr string<3> s { } - v2914v1 = get_local __ptr string<3>, __aggr_memcpy_01 - mem_copy_val v2914v1, v2872v1 - v1495v1 = get_local __ptr { string<3> }, __anon_00, !106 - v216v1 = const u64 0 - v1496v1 = get_elem_ptr v1495v1, __ptr string<3>, v216v1, !107 - mem_copy_val v1496v1, v2914v1 - v2737v1 = load v1449v1, !114 - v2738v1 = asm(ptr: v2737v1, val) -> u64 val, !116 { - lw val ptr i0, !117 + v3948v1 = get_local __ptr string<3>, __aggr_memcpy_01 + mem_copy_val v3948v1, v3905v1 + v1864v1 = get_local __ptr { string<3> }, __anon_00, !107 + v274v1 = const u64 0 + v1865v1 = get_elem_ptr v1864v1, __ptr string<3>, v274v1, !108 + mem_copy_val v1865v1, v3948v1 + v3764v1 = load v1818v1, !115 + v3765v1 = asm(ptr: v3764v1, val) -> u64 val, !117 { + lw val ptr i0, !118 } - v2740v1 = load v1449v1, !118 - v2741v1 = const u64 8, !119 - v2742v1 = add v2740v1, v2741v1, !120 - store v2742v1 to v1449v1, !122 - v290v1 = const u64 0, !123 - v1512v1 = cmp eq v2738v1 v290v1, !126 - cbr v1512v1, abi_decode_5_abi_decode_12_block0(), abi_decode_5_abi_decode_12_block1(), !127 + v3767v1 = load v1818v1, !119 + v3768v1 = const u64 8, !120 + v3769v1 = add v3767v1, v3768v1, !121 + store v3769v1 to v1818v1, !123 + v336v1 = const u64 0, !124 + v1881v1 = cmp eq v3765v1 v336v1, !127 + cbr v1881v1, abi_decode_18_abi_decode_25_block0(), abi_decode_18_abi_decode_25_block1(), !128 - abi_decode_5_abi_decode_12_block0(): - v1534v1 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_01, !130 - v294v1 = const u64 0 - v1535v1 = get_elem_ptr v1534v1, __ptr u64, v294v1, !131 - v292v1 = const u64 0, !129 - store v292v1 to v1535v1, !132 - v2747v1 = load v1449v1, !135 - v2748v1 = asm(ptr: v2747v1, val) -> u64 val, !136 { - lw val ptr i0, !117 + abi_decode_18_abi_decode_25_block0(): + v1903v1 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_01, !131 + v340v1 = const u64 0 + v1904v1 = get_elem_ptr v1903v1, __ptr u64, v340v1, !132 + v338v1 = const u64 0, !130 + store v338v1 to v1904v1, !133 + v3774v1 = load v1818v1, !136 + v3775v1 = asm(ptr: v3774v1, val) -> u64 val, !137 { + lw val ptr i0, !118 } - v2750v1 = load v1449v1, !137 - v2751v1 = const u64 8, !138 - v2752v1 = add v2750v1, v2751v1, !139 - store v2752v1 to v1449v1, !140 - v300v1 = const u64 1 - v301v1 = const u64 0 - v1539v1 = get_elem_ptr v1534v1, __ptr u64, v300v1, v301v1, !141 - store v2748v1 to v1539v1, !142 - v2784v1 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg - mem_copy_val v2784v1, v1534v1 - br abi_decode_5_abi_decode_12_block5(v2784v1), !143 + v3777v1 = load v1818v1, !138 + v3778v1 = const u64 8, !139 + v3779v1 = add v3777v1, v3778v1, !140 + store v3779v1 to v1818v1, !141 + v346v1 = const u64 1 + v347v1 = const u64 0 + v1908v1 = get_elem_ptr v1903v1, __ptr u64, v346v1, v347v1, !142 + store v3775v1 to v1908v1, !143 + v3813v1 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg + mem_copy_val v3813v1, v1903v1 + br abi_decode_18_abi_decode_25_block5(v3813v1), !144 - abi_decode_5_abi_decode_12_block1(): - v307v1 = const u64 1, !144 - v1520v1 = cmp eq v2738v1 v307v1, !147 - cbr v1520v1, abi_decode_5_abi_decode_12_block2(), abi_decode_5_abi_decode_12_block3(), !148 + abi_decode_18_abi_decode_25_block1(): + v353v1 = const u64 1, !145 + v1889v1 = cmp eq v3765v1 v353v1, !148 + cbr v1889v1, abi_decode_18_abi_decode_25_block2(), abi_decode_18_abi_decode_25_block3(), !149 - abi_decode_5_abi_decode_12_block2(): - v1524v1 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_1, !149 - v311v1 = const u64 0 - v1525v1 = get_elem_ptr v1524v1, __ptr u64, v311v1, !150 - v309v1 = const u64 1, !129 - store v309v1 to v1525v1, !151 - v2757v1 = load v1449v1, !154 - v2758v1 = asm(ptr: v2757v1, val) -> u64 val, !155 { - lw val ptr i0, !117 + abi_decode_18_abi_decode_25_block2(): + v1893v1 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_1, !150 + v357v1 = const u64 0 + v1894v1 = get_elem_ptr v1893v1, __ptr u64, v357v1, !151 + v355v1 = const u64 1, !130 + store v355v1 to v1894v1, !152 + v3784v1 = load v1818v1, !155 + v3785v1 = asm(ptr: v3784v1, val) -> u64 val, !156 { + lw val ptr i0, !118 } - v2760v1 = load v1449v1, !156 - v2761v1 = const u64 8, !157 - v2762v1 = add v2760v1, v2761v1, !158 - store v2762v1 to v1449v1, !159 - v317v1 = const u64 1 - v318v1 = const u64 1 - v1529v1 = get_elem_ptr v1524v1, __ptr u64, v317v1, v318v1, !160 - store v2758v1 to v1529v1, !161 - v2786v1 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg - mem_copy_val v2786v1, v1524v1 - br abi_decode_5_abi_decode_12_block5(v2786v1), !162 + v3787v1 = load v1818v1, !157 + v3788v1 = const u64 8, !158 + v3789v1 = add v3787v1, v3788v1, !159 + store v3789v1 to v1818v1, !160 + v363v1 = const u64 1 + v364v1 = const u64 1 + v1898v1 = get_elem_ptr v1893v1, __ptr u64, v363v1, v364v1, !161 + store v3785v1 to v1898v1, !162 + v3811v1 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg + mem_copy_val v3811v1, v1893v1 + br abi_decode_18_abi_decode_25_block5(v3811v1), !163 - abi_decode_5_abi_decode_12_block3(): - v322v1 = const u64 0, !163 - revert v322v1, !165 + abi_decode_18_abi_decode_25_block3(): + v368v1 = const u64 0, !164 + revert v368v1, !166 - abi_decode_5_abi_decode_12_block5(v2782v1: __ptr { u64, ( u64 | u64 ) }): - v1544v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __anon_0, !167 - v336v1 = const u64 0 - v1545v1 = get_elem_ptr v1544v1, __ptr { string<3> }, v336v1, !168 - mem_copy_val v1545v1, v1495v1 - v339v1 = const u64 1 - v1547v1 = get_elem_ptr v1544v1, __ptr { u64, ( u64 | u64 ) }, v339v1, !169 - mem_copy_val v1547v1, v2782v1 - mem_copy_val __ret_value, v1544v1 - v2830v1 = const unit () - ret () v2830v1 + abi_decode_18_abi_decode_25_block5(v3809v1: __ptr { u64, ( u64 | u64 ) }): + v1913v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __anon_0, !168 + v382v1 = const u64 0 + v1914v1 = get_elem_ptr v1913v1, __ptr { string<3> }, v382v1, !169 + mem_copy_val v1914v1, v1864v1 + v385v1 = const u64 1 + v1916v1 = get_elem_ptr v1913v1, __ptr { u64, ( u64 | u64 ) }, v385v1, !170 + mem_copy_val v1916v1, v3809v1 + mem_copy_val __ret_value, v1913v1 + v3863v1 = const unit () + ret () v3863v1 } - 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 +269,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 +287,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 }): - v438v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ - mem_copy_val v438v1, ops - v825v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !173 - v2317v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !173 - mem_copy_val v2317v1, v825v1 - v2330v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !175 - v2865v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 - v2866v1 = call new_27(v2865v1) - v2333v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !178 - mem_copy_val v2333v1, v2330v1 - v2335v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !179 - mem_copy_val v2335v1, v2865v1 - v2337v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !181 - v2339v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !183 - mem_copy_val v2339v1, v2337v1 - v486v1 = const u64 0, !184 - br encode_20_abi_encode_21_while(v486v1), !185 + v495v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ + mem_copy_val v495v1, ops + v922v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !174 + v3202v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !174 + mem_copy_val v3202v1, v922v1 + v3208v1 = const bool false, !183 + cbr v3208v1, encode_33_block0(), encode_33_block1(), !184 + + encode_33_block0(): + v3467v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !186 + v551v1 = const u64 48 + v3468v1 = asm(size: v551v1, src: v3467v1) -> ptr hp, !188 { + aloc size, !189 + mcp hp src size, !190 + } + v3472v1 = get_local __ptr { ptr, u64 }, __anon_00, !192 + v565v1 = const u64 0 + v3473v1 = get_elem_ptr v3472v1, __ptr ptr, v565v1, !193 + store v3468v1 to v3473v1, !194 + v568v1 = const u64 1 + v3475v1 = get_elem_ptr v3472v1, __ptr u64, v568v1, !195 + store v551v1 to v3475v1, !196 + v3910v1 = asm(s: v3472v1) -> __ptr slice s { + } + v3958v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v3958v1, v3910v1 + v3828v1 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v3828v1, v3958v1 + br encode_33_block2(v3828v1), !174 + + encode_33_block1(): + v3247v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !198 + v3898v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 + v3899v1 = call new_52(v3898v1) + v3250v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !201 + mem_copy_val v3250v1, v3247v1 + v3252v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !202 + mem_copy_val v3252v1, v3898v1 + v3254v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !204 + v3256v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !206 + mem_copy_val v3256v1, v3254v1 + v583v1 = const u64 0, !207 + br encode_33_abi_encode_46_while(v583v1), !208 - encode_20_abi_encode_21_while(v2301v1: u64): - v492v1 = const u64 2, !186 - v2348v1 = cmp lt v2301v1 v492v1, !189 - cbr v2348v1, encode_20_abi_encode_21_while_body(), encode_20_abi_encode_21_end_while(), !190 + encode_33_abi_encode_46_while(v3186v1: u64): + v589v1 = const u64 2, !209 + v3265v1 = cmp lt v3186v1 v589v1, !212 + cbr v3265v1, encode_33_abi_encode_46_while_body(), encode_33_abi_encode_46_end_while(), !213 - encode_20_abi_encode_21_while_body(): - v2380v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !192 - v2382v1 = get_elem_ptr v2380v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v2301v1, !194 - v2384v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !196 - v2386v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !199 - mem_copy_val v2386v1, v2382v1 - v2388v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !200 - mem_copy_val v2388v1, v2384v1 - v2390v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !202 - v579v1 = const u64 0 - v2391v1 = get_elem_ptr v2390v1, __ptr { string<3> }, v579v1, !204 - v2393v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !206 - v2395v1 = get_local __ptr { string<3> }, self_000, !209 - mem_copy_val v2395v1, v2391v1 - v2397v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !210 - mem_copy_val v2397v1, v2393v1 - v2399v1 = get_local __ptr { string<3> }, self_000, !212 - v567v1 = const u64 0 - v2400v1 = get_elem_ptr v2399v1, __ptr string<3>, v567v1, !214 - v2402v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !216 - v2404v1 = get_local __ptr string<3>, self_0000, !219 - mem_copy_val v2404v1, v2400v1 - v2406v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !220 - mem_copy_val v2406v1, v2402v1 - v2408v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !222 - v513v1 = const u64 0 - v2409v1 = get_elem_ptr v2408v1, __ptr { ptr, u64, u64 }, v513v1, !224 - v2877v1 = asm(buffer: v2409v1) -> __ptr { ptr, u64, u64 } buffer { + encode_33_abi_encode_46_while_body(): + v3297v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !215 + v3299v1 = get_elem_ptr v3297v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v3186v1, !217 + v3301v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !219 + v3303v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !222 + mem_copy_val v3303v1, v3299v1 + v3305v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !223 + mem_copy_val v3305v1, v3301v1 + v3307v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !225 + v676v1 = const u64 0 + v3308v1 = get_elem_ptr v3307v1, __ptr { string<3> }, v676v1, !227 + v3310v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !229 + v3312v1 = get_local __ptr { string<3> }, self_000, !232 + mem_copy_val v3312v1, v3308v1 + v3314v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !233 + mem_copy_val v3314v1, v3310v1 + v3316v1 = get_local __ptr { string<3> }, self_000, !235 + v664v1 = const u64 0 + v3317v1 = get_elem_ptr v3316v1, __ptr string<3>, v664v1, !237 + v3319v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !239 + v3321v1 = get_local __ptr string<3>, self_0000, !242 + mem_copy_val v3321v1, v3317v1 + v3323v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !243 + mem_copy_val v3323v1, v3319v1 + v3325v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !245 + v610v1 = const u64 0 + v3326v1 = get_elem_ptr v3325v1, __ptr { ptr, u64, u64 }, v610v1, !247 + v3912v1 = asm(buffer: v3326v1) -> __ptr { ptr, u64, u64 } buffer { } - v2933v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v2933v1, v2877v1 - v2412v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !225 - mem_copy_val v2412v1, v2933v1 - v519v1 = const u64 0 - v2414v1 = get_elem_ptr v2412v1, __ptr ptr, v519v1, !226 - v2415v1 = load v2414v1, !227 - v522v1 = const u64 1 - v2416v1 = get_elem_ptr v2412v1, __ptr u64, v522v1, !228 - v2417v1 = load v2416v1, !229 - v525v1 = const u64 2 - v2418v1 = get_elem_ptr v2412v1, __ptr u64, v525v1, !230 - v2419v1 = load v2418v1, !231 - v2420v1 = get_local __ptr string<3>, self_0000, !233 - v530v1 = const u64 3 - v2422v1 = add v2419v1, v530v1, !234 - v2423v1 = cmp gt v2422v1 v2417v1, !235 - cbr v2423v1, 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(v2415v1, v2417v1), !236 + v3970v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v3970v1, v3912v1 + v3329v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !248 + mem_copy_val v3329v1, v3970v1 + v616v1 = const u64 0 + v3331v1 = get_elem_ptr v3329v1, __ptr ptr, v616v1, !249 + v3332v1 = load v3331v1, !250 + v619v1 = const u64 1 + v3333v1 = get_elem_ptr v3329v1, __ptr u64, v619v1, !251 + v3334v1 = load v3333v1, !252 + v622v1 = const u64 2 + v3335v1 = get_elem_ptr v3329v1, __ptr u64, v622v1, !253 + v3336v1 = load v3335v1, !254 + v3337v1 = get_local __ptr string<3>, self_0000, !256 + v627v1 = const u64 3 + v3339v1 = add v3336v1, v627v1, !257 + v3340v1 = cmp gt v3339v1 v3334v1, !258 + cbr v3340v1, 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(v3332v1, v3334v1), !259 - encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v2303v1: ptr, v2304v1: u64): - v2430v1 = get_local __ptr string<3>, __anon_10, !237 - mem_copy_val v2430v1, v2420v1 - v2432v1 = add v2303v1, v2419v1, !238 - v2433v1 = cast_ptr v2432v1 to __ptr u8, !239 - mem_copy_bytes v2433v1, v2430v1, 3, !240 - v2436v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !241 - v550v1 = const u64 0 - v2437v1 = get_elem_ptr v2436v1, __ptr ptr, v550v1, !242 - store v2303v1 to v2437v1, !243 - v553v1 = const u64 1 - v2439v1 = get_elem_ptr v2436v1, __ptr u64, v553v1, !244 - store v2304v1 to v2439v1, !245 - v556v1 = const u64 2 - v2441v1 = get_elem_ptr v2436v1, __ptr u64, v556v1, !246 - store v2422v1 to v2441v1, !247 - v2879v1 = asm(buffer: v2436v1) -> __ptr { ptr, u64, u64 } buffer { + encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3188v1: ptr, v3189v1: u64): + v3347v1 = get_local __ptr string<3>, __anon_10, !260 + mem_copy_val v3347v1, v3337v1 + v3349v1 = add v3188v1, v3336v1, !261 + v3350v1 = cast_ptr v3349v1 to __ptr u8, !262 + mem_copy_bytes v3350v1, v3347v1, 3, !263 + v3353v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !264 + v647v1 = const u64 0 + v3354v1 = get_elem_ptr v3353v1, __ptr ptr, v647v1, !265 + store v3188v1 to v3354v1, !266 + v650v1 = const u64 1 + v3356v1 = get_elem_ptr v3353v1, __ptr u64, v650v1, !267 + store v3189v1 to v3356v1, !268 + v653v1 = const u64 2 + v3358v1 = get_elem_ptr v3353v1, __ptr u64, v653v1, !269 + store v3339v1 to v3358v1, !270 + v3914v1 = asm(buffer: v3353v1) -> __ptr { ptr, u64, u64 } buffer { } - v2937v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v2937v1, v2879v1 - v2444v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !249 - v561v1 = const u64 0 - v2445v1 = get_elem_ptr v2444v1, __ptr { ptr, u64, u64 }, v561v1, !250 - mem_copy_val v2445v1, v2937v1 - v2449v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !252 - mem_copy_val v2449v1, v2444v1 - v2451v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !254 - v2454v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !256 - mem_copy_val v2454v1, v2451v1 - v2456v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !258 - v726v1 = const u64 1 - v2457v1 = get_elem_ptr v2456v1, __ptr { u64, ( u64 | u64 ) }, v726v1, !260 - v2459v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !262 - v2461v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !265 - mem_copy_val v2461v1, v2457v1 - v2463v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !266 - mem_copy_val v2463v1, v2459v1 - v2465v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !268 - v2467v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !270 - mem_copy_val v2467v1, v2465v1 - v2469v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !271 - v598v1 = const u64 0 - v2470v1 = get_elem_ptr v2469v1, __ptr u64, v598v1, !272 - v2471v1 = load v2470v1, !273 - v601v1 = const u64 0, !267 - v2476v1 = cmp eq v2471v1 v601v1, !276 - cbr v2476v1, 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 + v3974v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v3974v1, v3914v1 + v3361v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !272 + v658v1 = const u64 0 + v3362v1 = get_elem_ptr v3361v1, __ptr { ptr, u64, u64 }, v658v1, !273 + mem_copy_val v3362v1, v3974v1 + v3366v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !275 + mem_copy_val v3366v1, v3361v1 + v3368v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !277 + v3371v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !279 + mem_copy_val v3371v1, v3368v1 + v3373v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !281 + v823v1 = const u64 1 + v3374v1 = get_elem_ptr v3373v1, __ptr { u64, ( u64 | u64 ) }, v823v1, !283 + v3376v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !285 + v3378v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !288 + mem_copy_val v3378v1, v3374v1 + v3380v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !289 + mem_copy_val v3380v1, v3376v1 + v3382v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !291 + v3384v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !293 + mem_copy_val v3384v1, v3382v1 + v3386v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !294 + v695v1 = const u64 0 + v3387v1 = get_elem_ptr v3386v1, __ptr u64, v695v1, !295 + v3388v1 = load v3387v1, !296 + v698v1 = const u64 0, !290 + v3393v1 = cmp eq v3388v1 v698v1, !299 + cbr v3393v1, 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(): - v536v1 = const u64 2 - v2426v1 = mul v2417v1, v536v1, !278 - v2427v1 = add v2426v1, v530v1, !279 - v2428v1 = asm(new_cap: v2427v1, old_ptr: v2415v1, len: v2419v1) -> __ptr u8 hp, !280 { + encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(): + v633v1 = const u64 2 + v3343v1 = mul v3334v1, v633v1, !301 + v3344v1 = add v3343v1, v627v1, !302 + v3345v1 = asm(new_cap: v3344v1, old_ptr: v3332v1, len: v3336v1) -> __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(v2428v1, v2427v1), !281 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3345v1, v3344v1), !304 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block0(): - v2509v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !282 - v604v1 = const u64 1 - v605v1 = const u64 0 - v2510v1 = get_elem_ptr v2509v1, __ptr u64, v604v1, v605v1, !283 - v2511v1 = load v2510v1, !284 - v2513v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !286 - v2801v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg - mem_copy_val v2801v1, v2513v1 - v2849v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val - v668v1 = const u64 0, !287 - v2850v1 = call abi_encode_26(v668v1, v2801v1, v2849v1) - v2516v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !289 - mem_copy_val v2516v1, v2849v1 - v2519v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !291 - v2804v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 - mem_copy_val v2804v1, v2519v1 - v2852v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 - v2853v1 = call abi_encode_26(v2511v1, v2804v1, v2852v1) - v2522v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !293 - mem_copy_val v2522v1, v2852v1 - v2524v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !295 - v2795v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v2795v1, v2524v1 - br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v2795v1), !296 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(): + v3426v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !305 + v701v1 = const u64 1 + v702v1 = const u64 0 + v3427v1 = get_elem_ptr v3426v1, __ptr u64, v701v1, v702v1, !306 + v3428v1 = load v3427v1, !307 + v3430v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !309 + v3834v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v3834v1, v3430v1 + v3882v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v765v1 = const u64 0, !310 + v3883v1 = call abi_encode_51(v765v1, v3834v1, v3882v1) + v3433v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !312 + mem_copy_val v3433v1, v3882v1 + v3436v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !314 + v3837v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v3837v1, v3436v1 + v3885v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v3886v1 = call abi_encode_51(v3428v1, v3837v1, v3885v1) + v3439v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !316 + mem_copy_val v3439v1, v3885v1 + v3441v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !318 + v3824v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v3824v1, v3441v1 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v3824v1), !319 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block1(): - v2479v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !297 - v684v1 = const u64 0 - v2480v1 = get_elem_ptr v2479v1, __ptr u64, v684v1, !298 - v2481v1 = load v2480v1, !299 - v687v1 = const u64 1, !267 - v2486v1 = cmp eq v2481v1 v687v1, !302 - cbr v2486v1, 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(): + v3396v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !320 + v781v1 = const u64 0 + v3397v1 = get_elem_ptr v3396v1, __ptr u64, v781v1, !321 + v3398v1 = load v3397v1, !322 + v784v1 = const u64 1, !290 + v3403v1 = cmp eq v3398v1 v784v1, !325 + cbr v3403v1, 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(): - v2490v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !304 - v690v1 = const u64 1 - v691v1 = const u64 1 - v2491v1 = get_elem_ptr v2490v1, __ptr u64, v690v1, v691v1, !305 - v2492v1 = load v2491v1, !306 - v2494v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !308 - v2807v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 - mem_copy_val v2807v1, v2494v1 - v2855v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v696v1 = const u64 1, !309 - v2856v1 = call abi_encode_26(v696v1, v2807v1, v2855v1) - v2497v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !311 - mem_copy_val v2497v1, v2855v1 - v2500v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !313 - v2810v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 - mem_copy_val v2810v1, v2500v1 - v2858v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 - v2859v1 = call abi_encode_26(v2492v1, v2810v1, v2858v1) - v2503v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !315 - mem_copy_val v2503v1, v2858v1 - v2505v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !317 - v2797v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v2797v1, v2505v1 - br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v2797v1), !318 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(): + v3407v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !327 + v787v1 = const u64 1 + v788v1 = const u64 1 + v3408v1 = get_elem_ptr v3407v1, __ptr u64, v787v1, v788v1, !328 + v3409v1 = load v3408v1, !329 + v3411v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !331 + v3840v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v3840v1, v3411v1 + v3888v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v793v1 = const u64 1, !332 + v3889v1 = call abi_encode_51(v793v1, v3840v1, v3888v1) + v3414v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !334 + mem_copy_val v3414v1, v3888v1 + v3417v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !336 + v3843v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v3843v1, v3417v1 + v3891v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v3892v1 = call abi_encode_51(v3409v1, v3843v1, v3891v1) + v3420v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !338 + mem_copy_val v3420v1, v3891v1 + v3422v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !340 + v3822v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v3822v1, v3422v1 + br encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v3822v1), !341 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block3(): - v711v1 = const u64 14757395258967588866, !269 - revert v711v1, !319 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(): + v808v1 = const u64 14757395258967588866, !292 + revert v808v1, !342 - encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v2793v1: __ptr { { ptr, u64, u64 } }): - v2527v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !321 - mem_copy_val v2527v1, v2793v1 - v2529v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !323 - v2532v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !325 - mem_copy_val v2532v1, v2529v1 - v2534v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !327 - v2537v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !329 - mem_copy_val v2537v1, v2534v1 - v750v1 = const u64 1, !330 - v2544v1 = add v2301v1, v750v1, !333 - br encode_20_abi_encode_21_while(v2544v1), !334 + encode_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v3820v1: __ptr { { ptr, u64, u64 } }): + v3444v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !344 + mem_copy_val v3444v1, v3820v1 + v3446v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !346 + v3449v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !348 + mem_copy_val v3449v1, v3446v1 + v3451v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !350 + v3454v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !352 + mem_copy_val v3454v1, v3451v1 + v847v1 = const u64 1, !353 + v3461v1 = add v3186v1, v847v1, !356 + br encode_33_abi_encode_46_while(v3461v1), !357 - encode_20_abi_encode_21_end_while(): - v2351v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !336 - v2354v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !338 - mem_copy_val v2354v1, v2351v1 - v2356v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !340 - v2358v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !343 - mem_copy_val v2358v1, v2356v1 - v2360v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !345 - v793v1 = const u64 0 - v2361v1 = get_elem_ptr v2360v1, __ptr { ptr, u64, u64 }, v793v1, !346 - v2881v1 = asm(buffer: v2361v1) -> __ptr { ptr, u64, u64 } buffer { + encode_33_abi_encode_46_end_while(): + v3268v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !359 + v3271v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !361 + mem_copy_val v3271v1, v3268v1 + v3273v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !363 + v3275v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !366 + mem_copy_val v3275v1, v3273v1 + v3277v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !368 + v890v1 = const u64 0 + v3278v1 = get_elem_ptr v3277v1, __ptr { ptr, u64, u64 }, v890v1, !369 + v3916v1 = asm(buffer: v3278v1) -> __ptr { ptr, u64, u64 } buffer { } - v2960v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v2960v1, v2881v1 - v2364v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !347 - mem_copy_val v2364v1, v2960v1 - v799v1 = const u64 0 - v2366v1 = get_elem_ptr v2364v1, __ptr ptr, v799v1, !348 - v805v1 = const u64 2 - v2370v1 = get_elem_ptr v2364v1, __ptr u64, v805v1, !349 - v2372v1 = get_local __ptr { ptr, u64 }, __anon_100, !350 - v809v1 = const u64 0 - v2373v1 = get_elem_ptr v2372v1, __ptr ptr, v809v1, !351 - mem_copy_val v2373v1, v2366v1 - v812v1 = const u64 1 - v2375v1 = get_elem_ptr v2372v1, __ptr u64, v812v1, !352 - mem_copy_val v2375v1, v2370v1 - v2883v1 = asm(s: v2372v1) -> __ptr slice s { + v3997v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 + mem_copy_val v3997v1, v3916v1 + v3281v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !370 + mem_copy_val v3281v1, v3997v1 + v896v1 = const u64 0 + v3283v1 = get_elem_ptr v3281v1, __ptr ptr, v896v1, !371 + v902v1 = const u64 2 + v3287v1 = get_elem_ptr v3281v1, __ptr u64, v902v1, !372 + v3289v1 = get_local __ptr { ptr, u64 }, __anon_100, !373 + v906v1 = const u64 0 + v3290v1 = get_elem_ptr v3289v1, __ptr ptr, v906v1, !374 + mem_copy_val v3290v1, v3283v1 + v909v1 = const u64 1 + v3292v1 = get_elem_ptr v3289v1, __ptr u64, v909v1, !375 + mem_copy_val v3292v1, v3287v1 + v3918v1 = asm(s: v3289v1) -> __ptr slice s { } - v2965v1 = get_local __ptr slice, __aggr_memcpy_02 - mem_copy_val v2965v1, v2883v1 - v2874v1 = get_local __ptr slice, __log_arg - mem_copy_val v2874v1, v2965v1 - v828v1 = const u64 3647243719605075626 - log __ptr slice v2874v1, v828v1 - v908v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !353 - v909v1 = const u64 0, !354 - v910v1 = get_elem_ptr v908v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v909v1, !355 - v911v1 = const u64 0 - v912v1 = get_elem_ptr v910v1, __ptr { string<3> }, v911v1, !356 - v913v1 = const u64 0 - v914v1 = get_elem_ptr v912v1, __ptr string<3>, v913v1, !213 - v917v1 = get_global __ptr string<3>, __const_global - v918v1 = cast_ptr v917v1 to ptr, !357 - v920v1 = get_local __ptr { ptr, u64 }, __anon_0, !357 - v921v1 = const u64 0 - v922v1 = get_elem_ptr v920v1, __ptr ptr, v921v1 - store v918v1 to v922v1, !357 - v924v1 = const u64 1 - v925v1 = get_elem_ptr v920v1, __ptr u64, v924v1 - v919v1 = const u64 3 - store v919v1 to v925v1, !357 - v927v1 = get_local __ptr slice, __anon_1, !357 - mem_copy_bytes v927v1, v920v1, 16 - v2817v1 = get_local __ptr string<3>, __tmp_arg3 - mem_copy_val v2817v1, v914v1 - v2819v1 = get_local __ptr slice, __tmp_arg4 - mem_copy_val v2819v1, v927v1 - v2821v1 = call eq_str_3_32(v2817v1, v2819v1) - v838v1 = const bool false, !359 - v931v3 = cmp eq v2821v1 v838v1, !365 - cbr v931v3, assert_29_block0(), assert_29_block1(), !366 + v4002v1 = get_local __ptr slice, __aggr_memcpy_03 + mem_copy_val v4002v1, v3918v1 + v3830v1 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v3830v1, v4002v1 + br encode_33_block2(v3830v1), !174 - assert_29_block0(): - v1107v1 = const u64 18446744073709486084 - revert v1107v1, !371 + encode_33_block2(v3826v1: __ptr slice): + v3907v1 = get_local __ptr slice, __log_arg + mem_copy_val v3907v1, v3826v1 + v925v1 = const u64 3647243719605075626 + log __ptr slice v3907v1, v925v1 + v1005v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !376 + v1006v1 = const u64 0, !377 + v1007v1 = get_elem_ptr v1005v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1006v1, !378 + v1008v1 = const u64 0 + v1009v1 = get_elem_ptr v1007v1, __ptr { string<3> }, v1008v1, !379 + v1010v1 = const u64 0 + v1011v1 = get_elem_ptr v1009v1, __ptr string<3>, v1010v1, !236 + v1014v1 = get_global __ptr string<3>, __const_global + v1015v1 = cast_ptr v1014v1 to ptr, !380 + v1017v1 = get_local __ptr { ptr, u64 }, __anon_0, !380 + v1018v1 = const u64 0 + v1019v1 = get_elem_ptr v1017v1, __ptr ptr, v1018v1 + store v1015v1 to v1019v1, !380 + v1021v1 = const u64 1 + v1022v1 = get_elem_ptr v1017v1, __ptr u64, v1021v1 + v1016v1 = const u64 3 + store v1016v1 to v1022v1, !380 + v1024v1 = get_local __ptr slice, __anon_1, !380 + mem_copy_bytes v1024v1, v1017v1, 16 + v3850v1 = get_local __ptr string<3>, __tmp_arg3 + mem_copy_val v3850v1, v1011v1 + v3852v1 = get_local __ptr slice, __tmp_arg4 + mem_copy_val v3852v1, v1024v1 + v3854v1 = call eq_str_3_57(v3850v1, v3852v1) + v935v1 = const bool false, !382 + v1028v3 = cmp eq v3854v1 v935v1, !388 + cbr v1028v3, assert_54_block0(), assert_54_block1(), !389 - assert_29_block1(): - v932v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !372 - v933v1 = const u64 0, !373 - v934v1 = get_elem_ptr v932v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v933v1, !374 - v935v1 = const u64 1 - v936v1 = get_elem_ptr v934v1, __ptr { u64, ( u64 | u64 ) }, v935v1, !375 - v938v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !376 - mem_copy_val v938v1, v936v1 - v940v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 - v941v1 = const u64 0 - v942v1 = get_elem_ptr v940v1, __ptr u64, v941v1, !377 - v943v1 = load v942v1 - v944v1 = const u64 0, !377 - v2568v1 = cmp eq v943v1 v944v1, !380 - cbr v2568v1, block0(), block1(), !378 + assert_54_block0(): + v1209v1 = const u64 18446744073709486084 + revert v1209v1, !394 + + assert_54_block1(): + v1029v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !395 + v1030v1 = const u64 0, !396 + v1031v1 = get_elem_ptr v1029v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1030v1, !397 + v1032v1 = const u64 1 + v1033v1 = get_elem_ptr v1031v1, __ptr { u64, ( u64 | u64 ) }, v1032v1, !398 + v1035v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !399 + mem_copy_val v1035v1, v1033v1 + v1037v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !400 + v1038v1 = const u64 0 + v1039v1 = get_elem_ptr v1037v1, __ptr u64, v1038v1, !400 + v1040v1 = load v1039v1 + v1041v1 = const u64 0, !400 + v3485v1 = cmp eq v1040v1 v1041v1, !403 + cbr v3485v1, block0(), block1(), !401 block0(): - v946v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 - v947v1 = const u64 1 - v948v1 = const u64 0 - v949v1 = get_elem_ptr v946v1, __ptr u64, v947v1, v948v1 - v950v1 = load v949v1 - v961v1 = const u64 1338, !381 - v2577v1 = cmp eq v950v1 v961v1, !384 - v963v3 = cmp eq v2577v1 v838v1, !387 - cbr v963v3, assert_29_block015(), assert_29_block116(), !388 + v1043v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !400 + v1044v1 = const u64 1 + v1045v1 = const u64 0 + v1046v1 = get_elem_ptr v1043v1, __ptr u64, v1044v1, v1045v1 + v1047v1 = load v1046v1 + v1058v1 = const u64 1338, !404 + v3494v1 = cmp eq v1047v1 v1058v1, !407 + v1060v3 = cmp eq v3494v1 v935v1, !410 + cbr v1060v3, assert_54_block015(), assert_54_block116(), !411 - assert_29_block015(): - revert v1107v1, !389 + assert_54_block015(): + revert v1209v1, !412 - assert_29_block116(): - v964v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !390 - v965v1 = const u64 1, !391 - v966v1 = get_elem_ptr v964v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v965v1, !392 - v967v1 = const u64 0 - v968v1 = get_elem_ptr v966v1, __ptr { string<3> }, v967v1, !393 - v969v1 = const u64 0 - v970v1 = get_elem_ptr v968v1, __ptr string<3>, v969v1, !213 - v973v1 = get_global __ptr string<3>, __const_global0 - v974v1 = cast_ptr v973v1 to ptr, !394 - v976v1 = get_local __ptr { ptr, u64 }, __anon_2, !394 - v977v1 = const u64 0 - v978v1 = get_elem_ptr v976v1, __ptr ptr, v977v1 - store v974v1 to v978v1, !394 - v980v1 = const u64 1 - v981v1 = get_elem_ptr v976v1, __ptr u64, v980v1 - v975v1 = const u64 3 - store v975v1 to v981v1, !394 - v983v1 = get_local __ptr slice, __anon_3, !394 - mem_copy_bytes v983v1, v976v1, 16 - v2822v1 = get_local __ptr string<3>, __tmp_arg5 - mem_copy_val v2822v1, v970v1 - v2824v1 = get_local __ptr slice, __tmp_arg6 - mem_copy_val v2824v1, v983v1 - v2826v1 = call eq_str_3_32(v2822v1, v2824v1) - v987v3 = cmp eq v2826v1 v838v1, !397 - cbr v987v3, assert_29_block018(), assert_29_block119(), !398 + assert_54_block116(): + v1061v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !413 + v1062v1 = const u64 1, !414 + v1063v1 = get_elem_ptr v1061v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1062v1, !415 + v1064v1 = const u64 0 + v1065v1 = get_elem_ptr v1063v1, __ptr { string<3> }, v1064v1, !416 + v1066v1 = const u64 0 + v1067v1 = get_elem_ptr v1065v1, __ptr string<3>, v1066v1, !236 + v1070v1 = get_global __ptr string<3>, __const_global0 + v1071v1 = cast_ptr v1070v1 to ptr, !417 + v1073v1 = get_local __ptr { ptr, u64 }, __anon_2, !417 + v1074v1 = const u64 0 + v1075v1 = get_elem_ptr v1073v1, __ptr ptr, v1074v1 + store v1071v1 to v1075v1, !417 + v1077v1 = const u64 1 + v1078v1 = get_elem_ptr v1073v1, __ptr u64, v1077v1 + v1072v1 = const u64 3 + store v1072v1 to v1078v1, !417 + v1080v1 = get_local __ptr slice, __anon_3, !417 + mem_copy_bytes v1080v1, v1073v1, 16 + v3855v1 = get_local __ptr string<3>, __tmp_arg5 + mem_copy_val v3855v1, v1067v1 + v3857v1 = get_local __ptr slice, __tmp_arg6 + mem_copy_val v3857v1, v1080v1 + v3859v1 = call eq_str_3_57(v3855v1, v3857v1) + v1084v3 = cmp eq v3859v1 v935v1, !420 + cbr v1084v3, assert_54_block018(), assert_54_block119(), !421 - assert_29_block018(): - revert v1107v1, !399 + assert_54_block018(): + revert v1209v1, !422 - assert_29_block119(): - v988v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !400 - v989v1 = const u64 1, !401 - v990v1 = get_elem_ptr v988v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v989v1, !402 - v991v1 = const u64 1 - v992v1 = get_elem_ptr v990v1, __ptr { u64, ( u64 | u64 ) }, v991v1, !403 - v994v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !404 - mem_copy_val v994v1, v992v1 - v996v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 - v997v1 = const u64 0 - v998v1 = get_elem_ptr v996v1, __ptr u64, v997v1, !405 - v999v1 = load v998v1 - v1000v1 = const u64 1, !405 - v2583v1 = cmp eq v999v1 v1000v1, !408 - cbr v2583v1, block3(), block4(), !406 + assert_54_block119(): + v1085v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !423 + v1086v1 = const u64 1, !424 + v1087v1 = get_elem_ptr v1085v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1086v1, !425 + v1088v1 = const u64 1 + v1089v1 = get_elem_ptr v1087v1, __ptr { u64, ( u64 | u64 ) }, v1088v1, !426 + v1091v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !427 + mem_copy_val v1091v1, v1089v1 + v1093v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !428 + v1094v1 = const u64 0 + v1095v1 = get_elem_ptr v1093v1, __ptr u64, v1094v1, !428 + v1096v1 = load v1095v1 + v1097v1 = const u64 1, !428 + v3500v1 = cmp eq v1096v1 v1097v1, !431 + cbr v3500v1, block3(), block4(), !429 block1(): - v955v1 = const u64 1, !409 - revert v955v1, !412 + v1052v1 = const u64 1, !432 + revert v1052v1, !435 block3(): - v1002v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 - v1003v1 = const u64 1 - v1004v1 = const u64 1 - v1005v1 = get_elem_ptr v1002v1, __ptr u64, v1003v1, v1004v1 - v1006v1 = load v1005v1 - v1017v1 = const u64 1, !413 - v2592v1 = cmp eq v1006v1 v1017v1, !416 - v1019v3 = cmp eq v2592v1 v838v1, !419 - cbr v1019v3, assert_29_block021(), assert_29_block122(), !420 + v1099v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !428 + v1100v1 = const u64 1 + v1101v1 = const u64 1 + v1102v1 = get_elem_ptr v1099v1, __ptr u64, v1100v1, v1101v1 + v1103v1 = load v1102v1 + v1114v1 = const u64 1, !436 + v3509v1 = cmp eq v1103v1 v1114v1, !439 + v1116v3 = cmp eq v3509v1 v935v1, !442 + cbr v1116v3, assert_54_block021(), assert_54_block122(), !443 - assert_29_block021(): - revert v1107v1, !421 + assert_54_block021(): + revert v1209v1, !444 - assert_29_block122(): - v1021v1 = get_local __ptr { u64 }, __anon_4, !422 - v1022v1 = const u64 0 - v1023v1 = get_elem_ptr v1021v1, __ptr u64, v1022v1 - v1020v1 = const u64 1, !423 - store v1020v1 to v1023v1, !422 - mem_copy_val __ret_value, v1021v1 - v2840v1 = const unit () - ret () v2840v1 + assert_54_block122(): + v1118v1 = get_local __ptr { u64 }, __anon_4, !445 + v1119v1 = const u64 0 + v1120v1 = get_elem_ptr v1118v1, __ptr u64, v1119v1 + v1117v1 = const u64 1, !446 + store v1117v1 to v1120v1, !445 + mem_copy_val __ret_value, v1118v1 + v3873v1 = const unit () + ret () v3873v1 block4(): - v1011v1 = const u64 2, !424 - revert v1011v1, !427 + v1108v1 = const u64 2, !447 + revert v1108v1, !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 @@ -685,596 +719,619 @@ script { local { { ptr, u64, u64 } } buffer_ entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): - v614v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ - mem_copy_val v614v1, buffer - v616v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !432 - v617v1 = const u64 0 - v618v1 = get_elem_ptr v616v1, __ptr { ptr, u64, u64 }, v617v1, !223 - v2885v1 = asm(buffer: v618v1) -> __ptr { ptr, u64, u64 } buffer { + v711v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + mem_copy_val v711v1, buffer + v713v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !455 + v714v1 = const u64 0 + v715v1 = get_elem_ptr v713v1, __ptr { ptr, u64, u64 }, v714v1, !246 + v3920v1 = asm(buffer: v715v1) -> __ptr { ptr, u64, u64 } buffer { } - v2976v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v2976v1, v2885v1 - v621v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 - mem_copy_val v621v1, v2976v1 - v623v1 = const u64 0 - v624v1 = get_elem_ptr v621v1, __ptr ptr, v623v1 - v625v1 = load v624v1 - v626v1 = const u64 1 - v627v1 = get_elem_ptr v621v1, __ptr u64, v626v1 - v628v1 = load v627v1 - v629v1 = const u64 2 - v630v1 = get_elem_ptr v621v1, __ptr u64, v629v1 - v631v1 = load v630v1 - v634v1 = const u64 8 - v637v1 = add v631v1, v634v1 - v638v1 = cmp gt v637v1 v628v1 - cbr v638v1, block1(), block0(v625v1, v628v1) + v4014v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v4014v1, v3920v1 + v718v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 + mem_copy_val v718v1, v4014v1 + v720v1 = const u64 0 + v721v1 = get_elem_ptr v718v1, __ptr ptr, v720v1 + v722v1 = load v721v1 + v723v1 = const u64 1 + v724v1 = get_elem_ptr v718v1, __ptr u64, v723v1 + v725v1 = load v724v1 + v726v1 = const u64 2 + v727v1 = get_elem_ptr v718v1, __ptr u64, v726v1 + v728v1 = load v727v1 + v731v1 = const u64 8 + v734v1 = add v728v1, v731v1 + v735v1 = cmp gt v734v1 v725v1 + cbr v735v1, block1(), block0(v722v1, v725v1) - block0(v635v1: ptr, v636v1: u64): - v646v1 = add v635v1, v631v1 - v647v1 = cast_ptr v646v1 to __ptr u64 - store self to v647v1 - v651v1 = get_local __ptr { ptr, u64, u64 }, __anon_1 - v652v1 = const u64 0 - v653v1 = get_elem_ptr v651v1, __ptr ptr, v652v1 - store v635v1 to v653v1 - v655v1 = const u64 1 - v656v1 = get_elem_ptr v651v1, __ptr u64, v655v1 - store v636v1 to v656v1 - v658v1 = const u64 2 - v659v1 = get_elem_ptr v651v1, __ptr u64, v658v1 - store v637v1 to v659v1 - v2887v1 = asm(buffer: v651v1) -> __ptr { ptr, u64, u64 } buffer { + block0(v732v1: ptr, v733v1: u64): + v743v1 = add v732v1, v728v1 + v744v1 = cast_ptr v743v1 to __ptr u64 + store self to v744v1 + v748v1 = get_local __ptr { ptr, u64, u64 }, __anon_1 + v749v1 = const u64 0 + v750v1 = get_elem_ptr v748v1, __ptr ptr, v749v1 + store v732v1 to v750v1 + v752v1 = const u64 1 + v753v1 = get_elem_ptr v748v1, __ptr u64, v752v1 + store v733v1 to v753v1 + v755v1 = const u64 2 + v756v1 = get_elem_ptr v748v1, __ptr u64, v755v1 + store v734v1 to v756v1 + v3922v1 = asm(buffer: v748v1) -> __ptr { ptr, u64, u64 } buffer { } - v2979v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v2979v1, v2887v1 - v662v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !433 - v663v1 = const u64 0 - v664v1 = get_elem_ptr v662v1, __ptr { ptr, u64, u64 }, v663v1 - mem_copy_val v664v1, v2979v1 - mem_copy_val __ret_value, v662v1 - v2847v1 = const unit () - ret () v2847v1 + v4017v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v4017v1, v3922v1 + v759v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !456 + v760v1 = const u64 0 + v761v1 = get_elem_ptr v759v1, __ptr { ptr, u64, u64 }, v760v1 + mem_copy_val v761v1, v4017v1 + mem_copy_val __ret_value, v759v1 + v3880v1 = const unit () + ret () v3880v1 block1(): - v640v1 = const u64 2 - v641v1 = mul v628v1, v640v1 - v642v1 = add v641v1, v634v1 - v643v1 = asm(new_cap: v642v1, old_ptr: v625v1, len: v631v1) -> __ptr u8 hp { + v737v1 = const u64 2 + v738v1 = mul v725v1, v737v1 + v739v1 = add v738v1, v731v1 + v740v1 = asm(new_cap: v739v1, old_ptr: v722v1, len: v728v1) -> __ptr u8 hp { aloc new_cap mcp hp old_ptr len } - br block0(v643v1, v642v1) + br block0(v740v1, v739v1) } - 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 entry(__ret_value: __ptr { { ptr, u64, u64 } }): - v765v1 = const u64 1024 - v766v1 = asm(cap: v765v1) -> ptr hp { + v862v1 = const u64 1024 + v863v1 = asm(cap: v862v1) -> ptr hp { aloc cap } - v768v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 - v769v1 = const u64 0 - v770v1 = get_elem_ptr v768v1, __ptr ptr, v769v1 - store v766v1 to v770v1 - v772v1 = const u64 1 - v773v1 = get_elem_ptr v768v1, __ptr u64, v772v1 - store v765v1 to v773v1 - v775v1 = const u64 2 - v776v1 = get_elem_ptr v768v1, __ptr u64, v775v1 - v767v1 = const u64 0 - store v767v1 to v776v1 - v2889v1 = asm(buffer: v768v1) -> __ptr { ptr, u64, u64 } buffer { + v865v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 + v866v1 = const u64 0 + v867v1 = get_elem_ptr v865v1, __ptr ptr, v866v1 + store v863v1 to v867v1 + v869v1 = const u64 1 + v870v1 = get_elem_ptr v865v1, __ptr u64, v869v1 + store v862v1 to v870v1 + v872v1 = const u64 2 + v873v1 = get_elem_ptr v865v1, __ptr u64, v872v1 + v864v1 = const u64 0 + store v864v1 to v873v1 + v3924v1 = asm(buffer: v865v1) -> __ptr { ptr, u64, u64 } buffer { } - v2983v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v2983v1, v2889v1 - v779v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !437 - v780v1 = const u64 0 - v781v1 = get_elem_ptr v779v1, __ptr { ptr, u64, u64 }, v780v1 - mem_copy_val v781v1, v2983v1 - mem_copy_val __ret_value, v779v1 - v2863v1 = const unit () - ret () v2863v1 + v4021v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v4021v1, v3924v1 + v876v1 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !460 + v877v1 = const u64 0 + v878v1 = get_elem_ptr v876v1, __ptr { ptr, u64, u64 }, v877v1 + mem_copy_val v878v1, v4021v1 + mem_copy_val __ret_value, v876v1 + v3896v1 = const unit () + ret () v3896v1 } - 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_ entry(a: __ptr string<3>, b: __ptr slice): - v865v1 = get_local __ptr string<3>, a_ - mem_copy_val v865v1, a - v898v3 = get_local __ptr slice, self_, !443 - mem_copy_val v898v3, b - v2274v1 = get_local __ptr slice, self_, !446 - v2891v1 = asm(s: v2274v1) -> __ptr { ptr, u64 } s { + v962v1 = get_local __ptr string<3>, a_ + mem_copy_val v962v1, a + v995v3 = get_local __ptr slice, self_, !466 + mem_copy_val v995v3, b + v3138v1 = get_local __ptr slice, self_, !469 + v3926v1 = asm(s: v3138v1) -> __ptr { ptr, u64 } s { } - v2993v1 = const u64 0 - v2994v1 = get_elem_ptr v2891v1, __ptr ptr, v2993v1 - v2995v1 = load v2994v1 - v2996v1 = const u64 1 - v2997v1 = get_elem_ptr v2891v1, __ptr u64, v2996v1 - v2998v1 = load v2997v1 - v2281v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !448 - v3015v1 = const u64 0 - v3016v1 = get_elem_ptr v2281v1, __ptr ptr, v3015v1 - store v2995v1 to v3016v1 - v3018v1 = const u64 1 - v3019v1 = get_elem_ptr v2281v1, __ptr u64, v3018v1 - store v2998v1 to v3019v1 - v2283v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !449 - v882v1 = const u64 0 - v2284v1 = get_elem_ptr v2283v1, __ptr ptr, v882v1, !450 - v2285v1 = load v2284v1, !443 - v901v1 = get_local __ptr string<3>, a_, !451 - v905v1 = const u64 3, !452 - v906v1 = asm(a: v901v1, b: v2285v1, len: v905v1, r) -> bool r, !453 { - meq r a b len, !454 + v4031v1 = const u64 0 + v4032v1 = get_elem_ptr v3926v1, __ptr ptr, v4031v1 + v4033v1 = load v4032v1 + v4034v1 = const u64 1 + v4035v1 = get_elem_ptr v3926v1, __ptr u64, v4034v1 + v4036v1 = load v4035v1 + v3145v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !471 + v4053v1 = const u64 0 + v4054v1 = get_elem_ptr v3145v1, __ptr ptr, v4053v1 + store v4033v1 to v4054v1 + v4056v1 = const u64 1 + v4057v1 = get_elem_ptr v3145v1, __ptr u64, v4056v1 + store v4036v1 to v4057v1 + v3147v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !472 + v979v1 = const u64 0 + v3148v1 = get_elem_ptr v3147v1, __ptr ptr, v979v1, !473 + v3149v1 = load v3148v1, !466 + v998v1 = get_local __ptr string<3>, a_, !474 + v1002v1 = const u64 3, !475 + v1003v1 = asm(a: v998v1, b: v3149v1, len: v1002v1, r) -> bool r, !476 { + meq r a b len, !477 } - ret bool v906v1 + ret bool v1003v1 } } !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 435 439 +!291 = (!174 !199 !200 !220 !221 !286 !287 !290) +!292 = span !0 429 868 +!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 442 652 +!298 = fn_call_path_span !0 442 652 +!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 527 533 +!309 = (!174 !199 !200 !220 !221 !286 !287 !308) +!310 = span !0 511 515 +!311 = span !0 498 535 +!312 = (!174 !199 !200 !220 !221 !286 !287 !311) +!313 = span !0 590 596 +!314 = (!174 !199 !200 !220 !221 !286 !287 !313) +!315 = span !0 560 598 +!316 = (!174 !199 !200 !220 !221 !286 !287 !315) +!317 = span !0 623 629 +!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 654 864 +!324 = fn_call_path_span !0 654 864 +!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 739 745 +!331 = (!174 !199 !200 !220 !221 !286 !287 !330) +!332 = span !0 723 727 +!333 = span !0 710 747 +!334 = (!174 !199 !200 !220 !221 !286 !287 !333) +!335 = span !0 802 808 +!336 = (!174 !199 !200 !220 !221 !286 !287 !335) +!337 = span !0 772 810 +!338 = (!174 !199 !200 !220 !221 !286 !287 !337) +!339 = span !0 835 841 +!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 416 869 +!344 = (!174 !199 !200 !220 !221 !286 !287 !343) +!345 = span !0 890 896 +!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 +1348,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 +1368,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 +1393,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 +1474,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 +addi $r0 $$locbase i88 ; get offset to local __ptr slice mcpi $r0 $r2 i16 ; copy memory -addi $r1 $$locbase i280 ; get offset to local __ptr slice +addi $r1 $$locbase i664 ; 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 -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 -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 +1561,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 +1796,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 +1818,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 +1841,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 +1879,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 +1986,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..f1131b94e15 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 @@ -18,12 +18,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.32 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 +31,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 +55,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.32 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 (???, 1135 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 (???, 1105 gas) + test failing_panic_error_enum_arg_with_empty_msg ... FAILED (???, 1262 gas) + test failing_panic_error_enum_arg_with_whitespace_msg ... FAILED (???, 1291 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 +149,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 +162,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 +202,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 +215,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 +281,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 +306,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 363de93ca43..62165207965 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 = 0xdae54c680dc72a588b7728e1617aab103e9d70f747d225269a303b7e4495c4de; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release +const CONTRACT_ID = 0x7f5ec7d86b169020ea0b0acbffcb6c2f322ec86424a2682edcbe50cc7862180a; // 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 } } diff --git a/test/update-contract-ids.sh b/test/update-contract-ids.sh index c4fa4b41647..20742830a3a 100755 --- a/test/update-contract-ids.sh +++ b/test/update-contract-ids.sh @@ -105,7 +105,7 @@ $grep --include \*.sw -Hno "// AUTO-CONTRACT-ID" . -R | while read line ; do fi else echo -e " ${BOLD_RED}error${NC}" - cargo r -p forc --release -- contract-id --release + cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS popd >> /dev/null fi fi

() + } 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::