From 86fce01e6774f36ea8aad2ae0310d5d391acc6b7 Mon Sep 17 00:00:00 2001 From: Mike Voronov Date: Wed, 28 Dec 2022 14:09:03 +0300 Subject: [PATCH] chore(execution-engine): more handy way to work with subgraph_complete (#416) --- Cargo.lock | 349 ++++++++---------- .../execution_context/context.rs | 24 +- .../instructions/call/call_result_setter.rs | 2 +- .../instructions/call/prev_result_handler.rs | 6 +- .../instructions/call/resolved_call.rs | 2 +- air/src/execution_step/instructions/canon.rs | 2 +- air/src/execution_step/instructions/fail.rs | 2 +- .../instructions/fold_stream.rs | 4 +- .../fold_stream/completeness_updater.rs | 2 +- air/src/execution_step/instructions/mod.rs | 4 +- air/src/execution_step/instructions/never.rs | 2 +- air/src/execution_step/instructions/next.rs | 6 +- air/src/execution_step/instructions/par.rs | 6 +- .../instructions/par/completeness_updater.rs | 6 +- air/src/execution_step/instructions/seq.rs | 4 +- air/src/execution_step/instructions/xor.rs | 6 +- 16 files changed, 203 insertions(+), 224 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e0ef35c..48b5486d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -379,9 +379,9 @@ checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bimap" @@ -463,9 +463,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.0" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "bytecount" @@ -496,9 +496,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" [[package]] name = "cfg-if" @@ -523,7 +523,7 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time 0.1.44", + "time 0.1.45", "wasm-bindgen", "winapi", ] @@ -581,14 +581,14 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.22" +version = "3.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "bitflags", "clap_lex 0.2.4", "indexmap", - "textwrap 0.15.1", + "textwrap 0.16.0", ] [[package]] @@ -801,7 +801,7 @@ dependencies = [ "atty", "cast", "ciborium", - "clap 3.2.22", + "clap 3.2.23", "criterion-plot 0.5.0", "itertools", "lazy_static", @@ -860,9 +860,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.11" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", "cfg-if 1.0.0", @@ -873,9 +873,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if 1.0.0", ] @@ -930,9 +930,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", "syn", @@ -940,9 +940,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f39818dcfc97d45b03953c1292efc4e80954e1583c4aa770bac1383e2310a4" +checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" dependencies = [ "cc", "cxxbridge-flags", @@ -952,9 +952,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e580d70777c116df50c390d1211993f62d40302881e54d4b79727acb83d0199" +checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" dependencies = [ "cc", "codespan-reporting", @@ -967,15 +967,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56a46460b88d1cec95112c8c363f0e2c39afdb237f60583b0b36343bf627ea9c" +checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" [[package]] name = "cxxbridge-macro" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747b608fecf06b0d72d440f27acc99288207324b793be2c17991839f3d4995ea" +checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" dependencies = [ "proc-macro2", "quote", @@ -984,9 +984,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" dependencies = [ "darling_core", "darling_macro", @@ -994,9 +994,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" dependencies = [ "fnv", "ident_case", @@ -1008,9 +1008,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" dependencies = [ "darling_core", "quote", @@ -1019,9 +1019,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" +checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" [[package]] name = "data-encoding-macro" @@ -1075,9 +1075,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ "block-buffer", "crypto-common", @@ -1134,9 +1134,9 @@ dependencies = [ [[package]] name = "erased-serde" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54558e0ba96fbe24280072642eceb9d7d442e32c7ec0ea9e7ecd7b4ea2cf4e11" +checksum = "e4ca605381c017ec7a5fef5e548f1cfaa419ed0f6df6367339300db74c92aa7d" dependencies = [ "serde", ] @@ -1180,14 +1180,14 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "fluence-app-service" -version = "0.22.1" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4c8f3b177149f19682f5c1498e61bdb914f79529d3301d971027cd2470617c" +checksum = "967bc26939d9a5a0dd09bd8991c9b0df80eacb370723b8d1019184a9c0606936" dependencies = [ "log", "maplit", "marine-min-it-version", - "marine-runtime 0.23.1", + "marine-runtime 0.23.2", "serde", "serde_derive", "serde_json", @@ -1278,9 +1278,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1289,9 +1289,9 @@ dependencies = [ [[package]] name = "ghost" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb19fe8de3ea0920d282f7b77dd4227aea6b8b999b42cdf0ca41b2472b14443a" +checksum = "41973d4c45f7a35af8753ba3457cc99d406d863941fd7f52663cff54a5ab99b3" dependencies = [ "proc-macro2", "quote", @@ -1370,9 +1370,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.51" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1384,9 +1384,9 @@ dependencies = [ [[package]] name = "iana-time-zone-haiku" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde6edd6cef363e9359ed3c98ba64590ba9eecba2293eb5a723ab32aee8926aa" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" dependencies = [ "cxx", "cxx-build", @@ -1412,9 +1412,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown", @@ -1447,19 +1447,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] name = "is-terminal" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330" +checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" dependencies = [ "hermit-abi 0.2.6", "io-lifetimes", "rustix", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -1520,9 +1520,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "js-sys" @@ -1592,24 +1592,24 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.134" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "link-cplusplus" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" dependencies = [ "cc", ] [[package]] name = "linux-raw-sys" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "lock_api" @@ -1647,9 +1647,9 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" [[package]] name = "marine-core" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68e6db433b04a70ebfa7d4f65797863d45d3af0bbbb2865e39ab3de92803c2a" +checksum = "16160d8f2db5186ed94b09e6419096c595ad712346f9f384bd6936e0856b366a" dependencies = [ "anyhow", "boolinator", @@ -1848,15 +1848,15 @@ dependencies = [ [[package]] name = "marine-runtime" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f57e7471e12d4f758f57dc54241fe8a750d2be03725260326f85f18cc0625d" +checksum = "ed92c1e296d3790a78347a49d5519f02ab866d8bc7a2140075c09de6b5562a8c" dependencies = [ "bytesize", "it-json-serde", "itertools", "log", - "marine-core 0.18.0", + "marine-core 0.18.1", "marine-module-interface", "marine-rs-sdk", "marine-rs-sdk-main", @@ -1945,9 +1945,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ "autocfg", ] @@ -1976,7 +1976,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" dependencies = [ "core2", - "digest 0.10.5", + "digest 0.10.6", "multihash-derive", "sha2", "unsigned-varint", @@ -2086,20 +2086,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi 0.1.19", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ + "hermit-abi 0.2.6", "libc", ] @@ -2126,9 +2117,9 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "os_str_bytes" -version = "6.3.0" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" [[package]] name = "output_vt100" @@ -2168,7 +2159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" dependencies = [ "lock_api 0.3.4", - "parking_lot_core 0.7.2", + "parking_lot_core 0.7.3", ] [[package]] @@ -2179,7 +2170,7 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api 0.4.9", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.6", ] [[package]] @@ -2189,14 +2180,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api 0.4.9", - "parking_lot_core 0.9.3", + "parking_lot_core 0.9.5", ] [[package]] name = "parking_lot_core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" +checksum = "b93f386bb233083c799e6e642a9d73db98c24a5deeb95ffc85bf281255dffc98" dependencies = [ "cfg-if 0.1.10", "cloudabi", @@ -2208,9 +2199,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if 1.0.0", "instant", @@ -2222,22 +2213,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.36.1", + "windows-sys", ] [[package]] name = "paste" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" +checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" [[package]] name = "petgraph" @@ -2373,15 +2364,15 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" dependencies = [ "unicode-ident", ] @@ -2405,9 +2396,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -2425,21 +2416,19 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -2468,7 +2457,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", "redox_syscall 0.2.16", "thiserror", ] @@ -2495,9 +2484,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "rustc_version" @@ -2510,29 +2499,29 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb93e85278e08bb5788653183213d3a60fc242b10cb9be96586f5a73dcb67c23" +checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] name = "rustversion" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "safe-transmute" @@ -2557,9 +2546,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" [[package]] name = "semver" @@ -2587,9 +2576,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] @@ -2625,9 +2614,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -2640,7 +2629,7 @@ version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ - "itoa 1.0.4", + "itoa 1.0.5", "ryu", "serde", ] @@ -2658,7 +2647,7 @@ dependencies = [ "serde", "serde_json", "serde_with_macros", - "time 0.3.15", + "time 0.3.17", ] [[package]] @@ -2681,7 +2670,7 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -2818,9 +2807,9 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" @@ -2853,9 +2842,9 @@ dependencies = [ [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -2864,14 +2853,29 @@ dependencies = [ [[package]] name = "time" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ - "itoa 1.0.4", - "libc", - "num_threads", + "itoa 1.0.5", "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", ] [[package]] @@ -2895,9 +2899,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" dependencies = [ "serde", ] @@ -2959,7 +2963,7 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", - "time 0.3.15", + "time 0.3.17", "tracing", "tracing-core", "tracing-serde", @@ -2967,9 +2971,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "typetag" @@ -2997,9 +3001,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-segmentation" @@ -3323,7 +3327,7 @@ dependencies = [ "log", "serde", "thiserror", - "time 0.1.44", + "time 0.1.45", "typetag", "wasmer-runtime-core-fl", "winapi", @@ -3403,19 +3407,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.42.0" @@ -3423,12 +3414,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc", ] [[package]] @@ -3437,48 +3428,24 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.42.0" @@ -3491,12 +3458,6 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.42.0" diff --git a/air/src/execution_step/execution_context/context.rs b/air/src/execution_step/execution_context/context.rs index 7177696b..abe1b3b0 100644 --- a/air/src/execution_step/execution_context/context.rs +++ b/air/src/execution_step/execution_context/context.rs @@ -55,7 +55,7 @@ pub(crate) struct ExecutionCtx<'i> { /// - at least one of xor subgraphs is completed without an error /// - all of seq subgraphs are completed /// - call executed successfully (executed state is Executed) - pub(crate) subgraph_complete: bool, + subgraph_completeness: bool, /// Tracker of all met instructions. pub(crate) tracker: InstructionTracker, @@ -92,7 +92,7 @@ impl<'i> ExecutionCtx<'i> { Self { run_parameters, - subgraph_complete: true, + subgraph_completeness: true, last_call_request_id: prev_ingredients.last_call_request_id, call_results, streams, @@ -115,6 +115,24 @@ impl<'i> ExecutionCtx<'i> { } } +impl ExecutionCtx<'_> { + pub(crate) fn make_subgraph_incomplete(&mut self) { + self.subgraph_completeness = false; + } + + pub(crate) fn is_subgraph_complete(&self) -> bool { + self.subgraph_completeness + } + + pub(crate) fn set_subgraph_completeness(&mut self, subgraph_complete: bool) { + self.subgraph_completeness = subgraph_complete; + } + + pub(crate) fn flush_subgraph_completeness(&mut self) { + self.subgraph_completeness = true; + } +} + /// Helper struct for ExecCtx construction. #[derive(Debug, Clone)] pub(crate) struct ExecCtxIngredients { @@ -160,7 +178,7 @@ impl<'i> Display for ExecutionCtx<'i> { writeln!(f, "current peer id: {}", self.run_parameters.current_peer_id)?; writeln!(f, "init peer id: {}", self.run_parameters.init_peer_id)?; writeln!(f, "timestamp: {}", self.run_parameters.timestamp)?; - writeln!(f, "subgraph complete: {}", self.subgraph_complete)?; + writeln!(f, "subgraph complete: {}", self.subgraph_completeness)?; writeln!(f, "next peer public keys: {:?}", self.next_peer_pks)?; Ok(()) diff --git a/air/src/execution_step/instructions/call/call_result_setter.rs b/air/src/execution_step/instructions/call/call_result_setter.rs index 1bada93f..18ba75e0 100644 --- a/air/src/execution_step/instructions/call/call_result_setter.rs +++ b/air/src/execution_step/instructions/call/call_result_setter.rs @@ -108,7 +108,7 @@ pub(crate) fn populate_context_from_data<'i>( /// Writes an executed state of a particle being sent to remote node. pub(crate) fn handle_remote_call(peer_pk: String, exec_ctx: &mut ExecutionCtx<'_>, trace_ctx: &mut TraceHandler) { exec_ctx.next_peer_pks.push(peer_pk); - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); let new_call_result = CallResult::sent_peer_id(exec_ctx.run_parameters.current_peer_id.clone()); trace_ctx.meet_call_end(new_call_result); diff --git a/air/src/execution_step/instructions/call/prev_result_handler.rs b/air/src/execution_step/instructions/call/prev_result_handler.rs index 36651ec8..635d02ff 100644 --- a/air/src/execution_step/instructions/call/prev_result_handler.rs +++ b/air/src/execution_step/instructions/call/prev_result_handler.rs @@ -50,7 +50,7 @@ pub(super) fn handle_prev_state<'i>( // this call was failed on one of the previous executions, // here it's needed to bubble this special error up CallServiceFailed(ret_code, ref err_msg) => { - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); let err_msg = err_msg.clone(); trace_ctx.meet_call_end(met_result.result); Err(CatchableError::LocalServiceError(ret_code, err_msg).into()) @@ -66,7 +66,7 @@ pub(super) fn handle_prev_state<'i>( } // result hasn't been prepared yet None => { - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); Ok(StateDescriptor::not_ready(met_result.result)) } } @@ -78,7 +78,7 @@ pub(super) fn handle_prev_state<'i>( return Ok(StateDescriptor::can_execute_now(met_result.result)); } - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); Ok(StateDescriptor::cant_execute_now(met_result.result)) } // this instruction's been already executed diff --git a/air/src/execution_step/instructions/call/resolved_call.rs b/air/src/execution_step/instructions/call/resolved_call.rs index d5f3199c..1a946850 100644 --- a/air/src/execution_step/instructions/call/resolved_call.rs +++ b/air/src/execution_step/instructions/call/resolved_call.rs @@ -109,7 +109,7 @@ impl<'i> ResolvedCall<'i> { let call_id = exec_ctx.next_call_request_id(); exec_ctx.call_requests.insert(call_id, request_params); - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); trace_ctx.meet_call_end(CallResult::sent_peer_id_with_call_id( exec_ctx.run_parameters.current_peer_id.clone(), call_id, diff --git a/air/src/execution_step/instructions/canon.rs b/air/src/execution_step/instructions/canon.rs index ae6d4f69..807884aa 100644 --- a/air/src/execution_step/instructions/canon.rs +++ b/air/src/execution_step/instructions/canon.rs @@ -74,7 +74,7 @@ fn handle_unseen_canon( let peer_id = crate::execution_step::instructions::resolve_peer_id_to_string(&ast_canon.peer_id, exec_ctx)?; if exec_ctx.run_parameters.current_peer_id.as_str() != peer_id { - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); exec_ctx.next_peer_pks.push(peer_id); //this branch is executed only when // this canon instruction executes for the first time diff --git a/air/src/execution_step/instructions/fail.rs b/air/src/execution_step/instructions/fail.rs index aac49329..42ce924a 100644 --- a/air/src/execution_step/instructions/fail.rs +++ b/air/src/execution_step/instructions/fail.rs @@ -119,7 +119,7 @@ fn fail_with_error_object( exec_ctx .last_error_descriptor .set_from_error_object(error.clone(), tetraplet); - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); Err(ExecutionError::Catchable(Rc::new(CatchableError::UserError { error }))) } diff --git a/air/src/execution_step/instructions/fold_stream.rs b/air/src/execution_step/instructions/fold_stream.rs index 37f251d1..dd5040e4 100644 --- a/air/src/execution_step/instructions/fold_stream.rs +++ b/air/src/execution_step/instructions/fold_stream.rs @@ -42,7 +42,7 @@ impl<'i> ExecutableInstruction<'i> for FoldStream<'i> { Some(stream) => stream, None => { // having empty streams means that it haven't been met yet, and it's needed to wait - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); return Ok(()); } }; @@ -107,7 +107,7 @@ fn execute_iterations<'i>( trace_ctx, ); trace_to_exec_err!(trace_ctx.meet_generation_end(fold_id), fold_stream)?; - generation_observer.observe_generation_results(exec_ctx.subgraph_complete, result); + generation_observer.observe_generation_results(exec_ctx.is_subgraph_complete(), result); } Ok(()) diff --git a/air/src/execution_step/instructions/fold_stream/completeness_updater.rs b/air/src/execution_step/instructions/fold_stream/completeness_updater.rs index 71d41b8a..0e5c1548 100644 --- a/air/src/execution_step/instructions/fold_stream/completeness_updater.rs +++ b/air/src/execution_step/instructions/fold_stream/completeness_updater.rs @@ -39,7 +39,7 @@ impl FoldGenerationObserver { } pub(super) fn update_completeness(&self, exec_ctx: &mut ExecutionCtx<'_>) { - exec_ctx.subgraph_complete = self.subtree_complete; + exec_ctx.set_subgraph_completeness(self.subtree_complete); } pub(super) fn into_result(self) -> ExecutionResult<()> { diff --git a/air/src/execution_step/instructions/mod.rs b/air/src/execution_step/instructions/mod.rs index d67bb2bc..30053e86 100644 --- a/air/src/execution_step/instructions/mod.rs +++ b/air/src/execution_step/instructions/mod.rs @@ -122,7 +122,7 @@ macro_rules! log_instruction { log::trace!( target: air_log_targets::SUBGRAPH_COMPLETE, " subgraph complete: {}", - $exec_ctx.subgraph_complete + $exec_ctx.is_subgraph_complete() ); log::trace!( @@ -144,7 +144,7 @@ macro_rules! joinable { ($cmd:expr, $exec_ctx:expr, $ok_result:expr) => { match $cmd { Err(e) if e.is_joinable() => { - $exec_ctx.subgraph_complete = false; + $exec_ctx.make_subgraph_incomplete(); return Ok($ok_result); } v => v, diff --git a/air/src/execution_step/instructions/never.rs b/air/src/execution_step/instructions/never.rs index 5a49ea6b..b44715ea 100644 --- a/air/src/execution_step/instructions/never.rs +++ b/air/src/execution_step/instructions/never.rs @@ -24,7 +24,7 @@ use air_parser::ast::Never; impl<'i> super::ExecutableInstruction<'i> for Never { fn execute(&self, exec_ctx: &mut ExecutionCtx<'i>, trace_ctx: &mut TraceHandler) -> ExecutionResult<()> { log_instruction!(null, exec_ctx, trace_ctx); - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); Ok(()) } diff --git a/air/src/execution_step/instructions/next.rs b/air/src/execution_step/instructions/next.rs index 4f51340e..d5f634d1 100644 --- a/air/src/execution_step/instructions/next.rs +++ b/air/src/execution_step/instructions/next.rs @@ -41,16 +41,16 @@ impl<'i> super::ExecutableInstruction<'i> for Next<'i> { // execute last instruction if any if let Some(last_instr) = &fold_state.last_instr_head { let last_instr = last_instr.clone(); - exec_ctx.subgraph_complete = true; // it's needed because of determine_subgraph_complete in par + exec_ctx.flush_subgraph_completeness(); // it's needed because of determine_subgraph_complete in par last_instr.execute(exec_ctx, trace_ctx)?; } else { // if no last instruction, execute never as a fallback for fold over stream (it'll be removed in future) let fold_state = exec_ctx.scalars.get_iterable_mut(iterator_name)?; if !fold_state.back_iteration_started && matches!(fold_state.iterable_type, IterableType::Stream(_)) { + fold_state.back_iteration_started = true; // this set the last iteration of a next to not executed for fold over streams // for more info see https://github.com/fluencelabs/aquavm/issues/333 - exec_ctx.subgraph_complete = false; - fold_state.back_iteration_started = true; + exec_ctx.make_subgraph_incomplete(); } } diff --git a/air/src/execution_step/instructions/par.rs b/air/src/execution_step/instructions/par.rs index dfe1d13a..05c1ba21 100644 --- a/air/src/execution_step/instructions/par.rs +++ b/air/src/execution_step/instructions/par.rs @@ -60,7 +60,7 @@ fn execute_subgraph<'i>( SubgraphType::Left => &par.0, SubgraphType::Right => &par.1, }; - exec_ctx.subgraph_complete = determine_subgraph_complete(subgraph); + exec_ctx.set_subgraph_completeness(determine_subgraph_complete(subgraph)); // execute a subgraph let result = match subgraph.execute(exec_ctx, trace_ctx) { @@ -69,12 +69,12 @@ fn execute_subgraph<'i>( SubgraphResult::Succeeded } Err(e) if e.is_catchable() => { - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); trace_to_exec_err!(trace_ctx.meet_par_subgraph_end(subgraph_type), par)?; SubgraphResult::Failed(e) } Err(e) => { - exec_ctx.subgraph_complete = false; + exec_ctx.make_subgraph_incomplete(); return Err(e); } }; diff --git a/air/src/execution_step/instructions/par/completeness_updater.rs b/air/src/execution_step/instructions/par/completeness_updater.rs index ad0ed9fb..065d1cb7 100644 --- a/air/src/execution_step/instructions/par/completeness_updater.rs +++ b/air/src/execution_step/instructions/par/completeness_updater.rs @@ -33,14 +33,14 @@ impl ParCompletenessUpdater { pub(super) fn observe_completeness(&mut self, exec_ctx: &ExecutionCtx<'_>, subgraph_type: SubgraphType) { match subgraph_type { - SubgraphType::Left => self.left_subgraph_complete = exec_ctx.subgraph_complete, - SubgraphType::Right => self.right_subgraph_complete = exec_ctx.subgraph_complete, + SubgraphType::Left => self.left_subgraph_complete = exec_ctx.is_subgraph_complete(), + SubgraphType::Right => self.right_subgraph_complete = exec_ctx.is_subgraph_complete(), } } pub(super) fn set_completeness(self, exec_ctx: &mut ExecutionCtx<'_>) { // par is completed if at least one of its subgraphs is completed let subgraph_complete = self.left_subgraph_complete || self.right_subgraph_complete; - exec_ctx.subgraph_complete = subgraph_complete; + exec_ctx.set_subgraph_completeness(subgraph_complete); } } diff --git a/air/src/execution_step/instructions/seq.rs b/air/src/execution_step/instructions/seq.rs index 92e61231..04ad1036 100644 --- a/air/src/execution_step/instructions/seq.rs +++ b/air/src/execution_step/instructions/seq.rs @@ -25,10 +25,10 @@ impl<'i> super::ExecutableInstruction<'i> for Seq<'i> { fn execute(&self, exec_ctx: &mut ExecutionCtx<'i>, trace_ctx: &mut TraceHandler) -> ExecutionResult<()> { log_instruction!(seq, exec_ctx, trace_ctx); - exec_ctx.subgraph_complete = true; + exec_ctx.flush_subgraph_completeness(); self.0.execute(exec_ctx, trace_ctx)?; - if exec_ctx.subgraph_complete { + if exec_ctx.is_subgraph_complete() { self.1.execute(exec_ctx, trace_ctx)?; } diff --git a/air/src/execution_step/instructions/xor.rs b/air/src/execution_step/instructions/xor.rs index 347f70cb..f7fd7d35 100644 --- a/air/src/execution_step/instructions/xor.rs +++ b/air/src/execution_step/instructions/xor.rs @@ -26,13 +26,13 @@ impl<'i> super::ExecutableInstruction<'i> for Xor<'i> { fn execute(&self, exec_ctx: &mut ExecutionCtx<'i>, trace_ctx: &mut TraceHandler) -> ExecutionResult<()> { log_instruction!(xor, exec_ctx, trace_ctx); - exec_ctx.subgraph_complete = true; + exec_ctx.flush_subgraph_completeness(); match self.0.execute(exec_ctx, trace_ctx) { Err(e) if e.is_catchable() => { - exec_ctx.subgraph_complete = true; - exec_ctx.last_error_descriptor.meet_xor_right_branch(); print_xor_log(&e); + exec_ctx.flush_subgraph_completeness(); + exec_ctx.last_error_descriptor.meet_xor_right_branch(); self.1.execute(exec_ctx, trace_ctx) } res => res,