mirror of
https://github.com/fluencelabs/marine.git
synced 2025-06-24 12:11:38 +00:00
Fix panics when services have more than 2gb memory allocated (#143)
* add test for allocation at offset more than 2gb * update wasmer-it version and use u32 instead of usize where needed * remove cargo.toml patch
This commit is contained in:
@ -44,6 +44,7 @@ jobs:
|
||||
)
|
||||
(cd ./examples; ./build.sh)
|
||||
(cd ./fluence-faas/tests/wasm_tests; ./build.sh)
|
||||
(cd ./runtime/tests/wasm_tests; ./build.sh)
|
||||
|
||||
cargo test --release -v --all-features -p marine-it-generator -p marine-runtime -p fluence-faas -p fluence-app-service -p marine -p mrepl
|
||||
cargo clippy
|
||||
|
226
Cargo.lock
generated
226
Cargo.lock
generated
@ -47,9 +47,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.53"
|
||||
version = "1.0.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0"
|
||||
checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27"
|
||||
|
||||
[[package]]
|
||||
name = "arguments-passing-test"
|
||||
@ -242,8 +242,8 @@ checksum = "686b97f42c02048850cf72da8a67a42c094d57f50e216b735d94aad32fd3c4c9"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"reqwest 0.11.9",
|
||||
"semver 1.0.5",
|
||||
"reqwest 0.11.10",
|
||||
"semver 1.0.6",
|
||||
"serde",
|
||||
]
|
||||
|
||||
@ -392,9 +392,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.5.2"
|
||||
version = "0.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa"
|
||||
checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"crossbeam-utils",
|
||||
@ -413,10 +413,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.7"
|
||||
version = "0.9.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9"
|
||||
checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if 1.0.0",
|
||||
"crossbeam-utils",
|
||||
"lazy_static",
|
||||
@ -426,9 +427,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.7"
|
||||
version = "0.8.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6"
|
||||
checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"lazy_static",
|
||||
@ -446,9 +447,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ctor"
|
||||
version = "0.1.21"
|
||||
version = "0.1.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa"
|
||||
checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn",
|
||||
@ -644,7 +645,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"redox_users 0.4.0",
|
||||
"redox_users 0.4.2",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
@ -691,9 +692,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "erased-serde"
|
||||
version = "0.3.18"
|
||||
version = "0.3.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56047058e1ab118075ca22f9ecd737bcc961aa3566a3019cb71388afa280bd8a"
|
||||
checksum = "ad132dd8d0d0b546348d7d86cb3191aad14b34e5f979781fc005c80d4ac67ffd"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@ -849,7 +850,7 @@ dependencies = [
|
||||
"serde_with",
|
||||
"thiserror",
|
||||
"toml",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
"wasmer-runtime-core-fl",
|
||||
"wasmer-runtime-fl",
|
||||
"wasmer-wasi-fl",
|
||||
@ -861,7 +862,19 @@ version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "047f670b4807cab8872550a607b1515daff08b3e3bb7576ce8f45971fd811a4e"
|
||||
dependencies = [
|
||||
"it-to-bytes",
|
||||
"it-to-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"nom",
|
||||
"serde",
|
||||
"variant_count",
|
||||
"wast",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fluence-it-types"
|
||||
version = "0.3.1"
|
||||
source = "git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory#72b053b8730066c0f5d3d967d7a314919236c199"
|
||||
dependencies = [
|
||||
"it-to-bytes 0.1.0 (git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory)",
|
||||
"nom",
|
||||
"serde",
|
||||
"variant_count",
|
||||
@ -1014,9 +1027,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.4"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c"
|
||||
checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
@ -1072,9 +1085,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.11"
|
||||
version = "0.3.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e"
|
||||
checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b"
|
||||
dependencies = [
|
||||
"bytes 1.1.0",
|
||||
"fnv",
|
||||
@ -1204,15 +1217,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.14.17"
|
||||
version = "0.14.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd"
|
||||
checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2"
|
||||
dependencies = [
|
||||
"bytes 1.1.0",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2 0.3.11",
|
||||
"h2 0.3.12",
|
||||
"http",
|
||||
"http-body 0.4.4",
|
||||
"httparse",
|
||||
@ -1246,7 +1259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
||||
dependencies = [
|
||||
"bytes 1.1.0",
|
||||
"hyper 0.14.17",
|
||||
"hyper 0.14.18",
|
||||
"native-tls",
|
||||
"tokio 1.17.0",
|
||||
"tokio-native-tls",
|
||||
@ -1332,9 +1345,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.3.1"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
|
||||
checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c"
|
||||
|
||||
[[package]]
|
||||
name = "it-json-serde"
|
||||
@ -1345,7 +1358,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"serde_with",
|
||||
"thiserror",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1354,7 +1367,7 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99ccf40e1e08f6f47ffbafe3cfb2e3adb721ddde80b178240f038d07dc9652fb"
|
||||
dependencies = [
|
||||
"fluence-it-types",
|
||||
"fluence-it-types 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log",
|
||||
"paste",
|
||||
"thiserror",
|
||||
@ -1362,11 +1375,10 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "it-lilo"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4779ed9b3289f03294743f26112366a59eb53c5d05b5b6afbfd7ce8780944cfd"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory#72b053b8730066c0f5d3d967d7a314919236c199"
|
||||
dependencies = [
|
||||
"fluence-it-types",
|
||||
"fluence-it-types 0.3.1 (git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory)",
|
||||
"it-memory-traits",
|
||||
"log",
|
||||
"paste",
|
||||
@ -1375,9 +1387,8 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "it-memory-traits"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b1f9aa4bd18db30d0ed34e0119486f21cf49f08bfe96e44cb54930c4db403af"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory#72b053b8730066c0f5d3d967d7a314919236c199"
|
||||
dependencies = [
|
||||
"thiserror",
|
||||
]
|
||||
@ -1388,6 +1399,11 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "729c74bb4236418898a219c6d96f14cba77456dd7c04a2e99e65e9c643709b56"
|
||||
|
||||
[[package]]
|
||||
name = "it-to-bytes"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory#72b053b8730066c0f5d3d967d7a314919236c199"
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.9.0"
|
||||
@ -1464,9 +1480,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.118"
|
||||
version = "0.2.121"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06e509672465a0504304aa87f9f176f2b2b716ed8fb105ebe5c02dc6dce96a94"
|
||||
checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"
|
||||
|
||||
[[package]]
|
||||
name = "local_storage"
|
||||
@ -1488,9 +1504,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.14"
|
||||
version = "0.4.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
|
||||
checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
@ -1554,7 +1570,7 @@ name = "marine-it-generator"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"cargo_toml",
|
||||
"it-lilo 0.2.0",
|
||||
"it-lilo 0.3.0",
|
||||
"marine-it-parser 0.7.0",
|
||||
"marine-macro-impl",
|
||||
"once_cell",
|
||||
@ -1562,7 +1578,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"walrus",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1580,7 +1596,7 @@ name = "marine-it-interfaces"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"multimap",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1615,7 +1631,7 @@ dependencies = [
|
||||
"serde",
|
||||
"thiserror",
|
||||
"walrus",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
"wasmer-runtime-core-fl",
|
||||
]
|
||||
|
||||
@ -1711,7 +1727,7 @@ dependencies = [
|
||||
"serde",
|
||||
"thiserror",
|
||||
"walrus",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1789,7 +1805,7 @@ dependencies = [
|
||||
"boolinator",
|
||||
"bytes 0.5.6",
|
||||
"bytesize",
|
||||
"it-lilo 0.2.0",
|
||||
"it-lilo 0.3.0",
|
||||
"it-memory-traits",
|
||||
"log",
|
||||
"marine-it-generator 0.6.0",
|
||||
@ -1809,7 +1825,7 @@ dependencies = [
|
||||
"serde",
|
||||
"thiserror",
|
||||
"tokio 0.2.25",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
"wasmer-runtime-core-fl",
|
||||
"wasmer-runtime-fl",
|
||||
"wasmer-wasi-fl",
|
||||
@ -1883,9 +1899,9 @@ dependencies = [
|
||||
"boolinator",
|
||||
"bytesize",
|
||||
"console_error_panic_hook",
|
||||
"fluence-it-types",
|
||||
"fluence-it-types 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"it-json-serde",
|
||||
"it-lilo 0.2.0",
|
||||
"it-lilo 0.3.0",
|
||||
"it-memory-traits",
|
||||
"itertools 0.10.3",
|
||||
"log",
|
||||
@ -1907,7 +1923,7 @@ dependencies = [
|
||||
"thiserror",
|
||||
"toml",
|
||||
"wasm-bindgen",
|
||||
"wasmer-interface-types-fl 0.21.1",
|
||||
"wasmer-interface-types-fl 0.22.0",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
@ -1989,14 +2005,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.0"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2"
|
||||
checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"miow 0.3.7",
|
||||
"ntapi",
|
||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
@ -2192,9 +2209,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.9.0"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
|
||||
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
@ -2441,9 +2458,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.15"
|
||||
version = "1.0.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
|
||||
checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
@ -2500,6 +2517,14 @@ dependencies = [
|
||||
"test-record",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "records-allocation-test"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"marine-rs-sdk",
|
||||
"safe-transmute",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "records-passing-test"
|
||||
version = "0.1.0"
|
||||
@ -2516,9 +2541,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.10"
|
||||
version = "0.2.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
|
||||
checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
@ -2529,7 +2554,7 @@ version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
|
||||
dependencies = [
|
||||
"redox_syscall 0.2.10",
|
||||
"redox_syscall 0.2.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2545,19 +2570,20 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "redox_users"
|
||||
version = "0.4.0"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
|
||||
checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55"
|
||||
dependencies = [
|
||||
"getrandom 0.2.4",
|
||||
"redox_syscall 0.2.10",
|
||||
"getrandom 0.2.5",
|
||||
"redox_syscall 0.2.11",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.5.4"
|
||||
version = "1.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@ -2611,24 +2637,24 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"winreg",
|
||||
"winreg 0.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.11.9"
|
||||
version = "0.11.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87f242f1488a539a79bac6dbe7c8609ae43b7914b7736210f239a37cccb32525"
|
||||
checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bytes 1.1.0",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2 0.3.11",
|
||||
"h2 0.3.12",
|
||||
"http",
|
||||
"http-body 0.4.4",
|
||||
"hyper 0.14.17",
|
||||
"hyper 0.14.18",
|
||||
"hyper-tls 0.5.0",
|
||||
"ipnet",
|
||||
"js-sys",
|
||||
@ -2647,7 +2673,7 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"winreg",
|
||||
"winreg 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2790,9 +2816,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.5"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0486718e92ec9a68fbed73bb5ef687d71103b142595b406835649bebd33f72c7"
|
||||
checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@ -2993,9 +3019,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.86"
|
||||
version = "1.0.89"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
|
||||
checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -3029,7 +3055,7 @@ dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"fastrand",
|
||||
"libc",
|
||||
"redox_syscall 0.2.10",
|
||||
"redox_syscall 0.2.11",
|
||||
"remove_dir_all",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
@ -3047,9 +3073,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.1.2"
|
||||
version = "1.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
|
||||
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
||||
dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
@ -3062,7 +3088,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"numtoa",
|
||||
"redox_syscall 0.2.10",
|
||||
"redox_syscall 0.2.11",
|
||||
"redox_termios",
|
||||
]
|
||||
|
||||
@ -3173,7 +3199,7 @@ dependencies = [
|
||||
"bytes 1.1.0",
|
||||
"libc",
|
||||
"memchr",
|
||||
"mio 0.8.0",
|
||||
"mio 0.8.2",
|
||||
"num_cpus",
|
||||
"pin-project-lite 0.2.8",
|
||||
"socket2 0.4.4",
|
||||
@ -3256,9 +3282,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.31"
|
||||
version = "0.1.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f"
|
||||
checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"log",
|
||||
@ -3268,9 +3294,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.22"
|
||||
version = "0.1.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23"
|
||||
checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
]
|
||||
@ -3413,7 +3439,7 @@ version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
||||
dependencies = [
|
||||
"getrandom 0.2.4",
|
||||
"getrandom 0.2.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3507,6 +3533,12 @@ version = "0.10.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.79"
|
||||
@ -3666,9 +3698,9 @@ version = "0.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14ba3b5a07989987994b96bf5cc7ac2947005f9ff6123d71b7064232f07d28fa"
|
||||
dependencies = [
|
||||
"fluence-it-types",
|
||||
"fluence-it-types 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"it-lilo 0.1.0",
|
||||
"it-to-bytes",
|
||||
"it-to-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"itertools 0.10.3",
|
||||
"log",
|
||||
"nom",
|
||||
@ -3682,14 +3714,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasmer-interface-types-fl"
|
||||
version = "0.21.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b44e5721c2d42996a6ce9aa3ae75fb8b32433e3bb8aa0942fe27087a9966175"
|
||||
version = "0.22.0"
|
||||
source = "git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory#72b053b8730066c0f5d3d967d7a314919236c199"
|
||||
dependencies = [
|
||||
"fluence-it-types",
|
||||
"it-lilo 0.2.0",
|
||||
"fluence-it-types 0.3.1 (git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory)",
|
||||
"it-lilo 0.3.0",
|
||||
"it-memory-traits",
|
||||
"it-to-bytes",
|
||||
"it-to-bytes 0.1.0 (git+https://github.com/fluencelabs/interface-types?branch=use_u32_for_memory)",
|
||||
"itertools 0.10.3",
|
||||
"log",
|
||||
"nom",
|
||||
@ -3888,6 +3919,15 @@ dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
|
||||
dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ws2_32-sys"
|
||||
version = "0.2.1"
|
||||
|
@ -29,6 +29,7 @@ members = [
|
||||
"fluence-faas/tests/wasm_tests/arrays_passing",
|
||||
"fluence-faas/tests/wasm_tests/records_passing",
|
||||
"runtime",
|
||||
"runtime/tests/wasm_tests/records_allocation",
|
||||
"web-runtime",
|
||||
"tools/cli",
|
||||
"tools/repl",
|
||||
|
@ -14,8 +14,8 @@ path = "src/lib.rs"
|
||||
marine-it-parser = { path = "../it-parser", version = "0.7.0"}
|
||||
marine-macro-impl = "0.6.10"
|
||||
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
it-lilo = "0.2.0"
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
it-lilo = "0.3.0"
|
||||
|
||||
thiserror = "1.0.24"
|
||||
walrus = "0.18.0"
|
||||
|
@ -11,5 +11,5 @@ name = "marine_it_interfaces"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
multimap = "0.8.1"
|
||||
|
@ -11,7 +11,7 @@ name = "it_json_serde"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
|
||||
serde = { version = "1.0.118", features = ["derive"] }
|
||||
serde_json = "1.0.53"
|
||||
|
@ -17,7 +17,7 @@ marine-module-interface = { path = "../module-interface", version = "0.2.0" }
|
||||
anyhow = "1.0.31"
|
||||
walrus = "0.18.0"
|
||||
wasmer-core = { package = "wasmer-runtime-core-fl", version = "=0.17.1"}
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1"}
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0"}
|
||||
nom = "5.1"
|
||||
|
||||
itertools = "0.10.0"
|
||||
|
@ -15,7 +15,7 @@ marine-it-interfaces = { path = "../it-interfaces", version = "0.5.0" }
|
||||
|
||||
anyhow = "1.0.31"
|
||||
walrus = "0.18.0"
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1"}
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0"}
|
||||
nom = "5.1"
|
||||
|
||||
itertools = "0.10.0"
|
||||
|
@ -18,7 +18,7 @@ wasmer-runtime = { package = "wasmer-runtime-fl", version = "=0.17.1" }
|
||||
# dynamicfunc-fat-closures allows using state inside DynamicFunc
|
||||
wasmer-core = { package = "wasmer-runtime-core-fl", version = "=0.17.1", features = ["dynamicfunc-fat-closures"] }
|
||||
wasmer-wasi = { package = "wasmer-wasi-fl", version = "0.17.1" }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
|
||||
toml = "0.5.6"
|
||||
serde = { version = "1.0.118", features = ["derive"] }
|
||||
|
@ -53,8 +53,8 @@ pub(crate) fn log_utf8_string(
|
||||
|
||||
#[inline]
|
||||
fn read_string(ctx: &Ctx, offset: i32, size: i32) -> Option<&str> {
|
||||
let wasm_ptr = WasmPtr::<u8, Array>::new(offset as _);
|
||||
wasm_ptr.get_utf8_string(ctx.memory(0), size as _)
|
||||
let wasm_ptr = WasmPtr::<u8, Array>::new(offset as u32);
|
||||
wasm_ptr.get_utf8_string(ctx.memory(0), size as u32)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
@ -22,9 +22,9 @@ marine-min-it-version = { path = "../crates/min-it-version", version = "0.1.0"}
|
||||
wasmer-runtime = { package = "wasmer-runtime-fl", version = "=0.17.1" }
|
||||
# dynamicfunc-fat-closures allows using state inside DynamicFunc
|
||||
wasmer-core = { package = "wasmer-runtime-core-fl", version = "=0.17.1", features = ["dynamicfunc-fat-closures"] }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
it-lilo = "0.2.0"
|
||||
it-memory-traits = "0.1.0"
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
it-lilo = "0.3.0"
|
||||
it-memory-traits = "0.2.0"
|
||||
wasmer-wasi = { package = "wasmer-wasi-fl", version = "0.17.1" }
|
||||
bytesize = "1.1.0"
|
||||
|
||||
|
@ -31,8 +31,8 @@ impl<'c> LoHelper<'c> {
|
||||
}
|
||||
|
||||
impl<'s> Allocatable for LoHelper<'s> {
|
||||
fn allocate(&self, size: u32, type_tag: u32) -> Result<usize, AllocatableError> {
|
||||
fn allocate(&self, size: u32, type_tag: u32) -> Result<u32, AllocatableError> {
|
||||
let offset = call_wasm_func!(self.allocate_func, size as _, type_tag as _);
|
||||
Ok(offset as _)
|
||||
Ok(offset as u32)
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ pub(crate) fn ivalue_to_wvalues<A: Allocatable, MV: for<'a> SequentialMemoryView
|
||||
}
|
||||
Some(IValue::Record(values)) => {
|
||||
let offset = record_lower_memory(lowerer, values)?;
|
||||
vec![WValue::I32(offset)]
|
||||
vec![WValue::I32(offset as i32)]
|
||||
}
|
||||
None => vec![],
|
||||
};
|
||||
|
@ -40,9 +40,9 @@ impl std::ops::Deref for WITMemory {
|
||||
impl WITMemoryView<'_> {
|
||||
fn check_bounds(
|
||||
&self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
memory_size: usize,
|
||||
offset: u32,
|
||||
size: u32,
|
||||
memory_size: u32,
|
||||
) -> Result<(), MemoryAccessError> {
|
||||
if offset + size >= memory_size {
|
||||
Err(MemoryAccessError::OutOfBounds {
|
||||
@ -60,15 +60,11 @@ impl<'s, 'v> wasm::structures::SequentialMemoryView<'v> for WITMemoryView<'s> {
|
||||
type SR = WasmerSequentialReader<'v>;
|
||||
type SW = WasmerSequentialWriter<'v>;
|
||||
|
||||
fn sequential_writer(
|
||||
&'v self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
) -> Result<Self::SW, MemoryAccessError> {
|
||||
fn sequential_writer(&'v self, offset: u32, size: u32) -> Result<Self::SW, MemoryAccessError> {
|
||||
let view = &self.0;
|
||||
let slice = view.deref();
|
||||
|
||||
self.check_bounds(offset, size, slice.len())?;
|
||||
self.check_bounds(offset, size, slice.len() as u32)?;
|
||||
|
||||
let writer = WasmerSequentialWriter {
|
||||
offset,
|
||||
@ -79,15 +75,11 @@ impl<'s, 'v> wasm::structures::SequentialMemoryView<'v> for WITMemoryView<'s> {
|
||||
Ok(writer)
|
||||
}
|
||||
|
||||
fn sequential_reader(
|
||||
&'v self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
) -> Result<Self::SR, MemoryAccessError> {
|
||||
fn sequential_reader(&'v self, offset: u32, size: u32) -> Result<Self::SR, MemoryAccessError> {
|
||||
let view = &self.0;
|
||||
let slice: &[Cell<u8>] = view.deref();
|
||||
|
||||
self.check_bounds(offset, size, slice.len())?;
|
||||
self.check_bounds(offset, size, slice.len() as u32)?;
|
||||
|
||||
let reader = WasmerSequentialReader {
|
||||
memory: slice,
|
||||
|
@ -83,19 +83,19 @@ macro_rules! read_ty {
|
||||
|
||||
pub(crate) struct WasmerSequentialReader<'s> {
|
||||
pub memory: &'s [Cell<u8>],
|
||||
pub offset: Cell<usize>,
|
||||
pub offset: Cell<u32>,
|
||||
}
|
||||
|
||||
pub(crate) struct WasmerSequentialWriter<'s> {
|
||||
pub offset: usize,
|
||||
pub offset: u32,
|
||||
pub slice: &'s [Cell<u8>],
|
||||
pub current_offset: Cell<usize>,
|
||||
pub current_offset: Cell<u32>,
|
||||
}
|
||||
|
||||
impl SequentialReader for WasmerSequentialReader<'_> {
|
||||
fn read_byte(&self) -> u8 {
|
||||
let offset = self.offset.get();
|
||||
let result = self.memory[offset].get();
|
||||
let result = self.memory[offset as usize].get();
|
||||
self.offset.set(offset + 1);
|
||||
result
|
||||
}
|
||||
@ -106,22 +106,22 @@ impl SequentialReader for WasmerSequentialReader<'_> {
|
||||
let offset = self.offset.get();
|
||||
let mut result = [0u8; COUNT];
|
||||
for index in 0..COUNT {
|
||||
result[index] = self.memory[offset + index].get();
|
||||
result[index] = self.memory[offset as usize + index].get();
|
||||
}
|
||||
|
||||
self.offset.set(offset + COUNT);
|
||||
self.offset.set(offset + COUNT as u32);
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
impl SequentialWriter for WasmerSequentialWriter<'_> {
|
||||
fn start_offset(&self) -> usize {
|
||||
fn start_offset(&self) -> u32 {
|
||||
self.offset
|
||||
}
|
||||
|
||||
fn write_u8(&self, value: u8) {
|
||||
let offset = self.current_offset.get();
|
||||
self.slice[offset].set(value);
|
||||
self.slice[offset as usize].set(value);
|
||||
self.current_offset.set(offset + 1);
|
||||
}
|
||||
|
||||
|
@ -63,3 +63,40 @@ pub fn records() {
|
||||
)]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn records_allocation() {
|
||||
let wasm_bytes = std::fs::read(
|
||||
"./tests/wasm_tests/records_allocation/artifacts/records_allocation.wasm",
|
||||
)
|
||||
.expect(
|
||||
"./tests/wasm_tests/records_allocation/artifacts/records_allocation.wasm should be present",
|
||||
);
|
||||
|
||||
let mut marine = Marine::new();
|
||||
|
||||
marine
|
||||
.load_module("records_allocation", &wasm_bytes, <_>::default())
|
||||
.unwrap_or_else(|e| panic!("can't load a module into Marine: {:?}", e));
|
||||
|
||||
let result = marine
|
||||
.call("records_allocation", "fill_2gb_mem", &[])
|
||||
.unwrap_or_else(|e| panic!("can't invoke fill_2gb_mem: {:?}", e));
|
||||
|
||||
assert_eq!(result.len(), 0);
|
||||
|
||||
let args = vec![IValue::Record(
|
||||
wasmer_it::NEVec::new(vec![
|
||||
IValue::S32(1),
|
||||
IValue::S32(1),
|
||||
IValue::S32(1),
|
||||
IValue::S32(1),
|
||||
IValue::S32(1),
|
||||
])
|
||||
.unwrap(),
|
||||
)];
|
||||
|
||||
let result = marine
|
||||
.call("records_allocation", "pass_record", &args)
|
||||
.unwrap_or_else(|e| panic!("can't invoke pass_record: {:?}", e));
|
||||
}
|
||||
|
12
runtime/tests/wasm_tests/build.sh
Executable file
12
runtime/tests/wasm_tests/build.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#/bin/sh
|
||||
|
||||
# This script builds all tests
|
||||
(
|
||||
cd records_allocation || exit;
|
||||
cargo update --aggressive;
|
||||
marine build --release;
|
||||
rm artifacts/* || true;
|
||||
mkdir artifacts
|
||||
)
|
||||
|
||||
cp ../../../target/wasm32-wasi/release/records_allocation.wasm records_allocation/artifacts/
|
14
runtime/tests/wasm_tests/records_allocation/Cargo.toml
Normal file
14
runtime/tests/wasm_tests/records_allocation/Cargo.toml
Normal file
@ -0,0 +1,14 @@
|
||||
[package]
|
||||
name = "records-allocation-test"
|
||||
version = "0.1.0"
|
||||
authors = ["Fluence Labs"]
|
||||
edition = "2018"
|
||||
publish = false
|
||||
|
||||
[[bin]]
|
||||
name = "records_allocation"
|
||||
path = "src/pure.rs"
|
||||
|
||||
[dependencies]
|
||||
marine-rs-sdk ="0.6.13"
|
||||
safe-transmute = "0.11.0"
|
11
runtime/tests/wasm_tests/records_allocation/Config.toml
Normal file
11
runtime/tests/wasm_tests/records_allocation/Config.toml
Normal file
@ -0,0 +1,11 @@
|
||||
modules_dir = "./artifacts/"
|
||||
|
||||
[[module]]
|
||||
name = "records_allocation_effector"
|
||||
max_heap_size = "10 KiB"
|
||||
logger_enabled = true
|
||||
|
||||
[[module]]
|
||||
name = "records_allocation_pure"
|
||||
max_heap_size = "10 KiB"
|
||||
logger_enabled = true
|
47
runtime/tests/wasm_tests/records_allocation/src/pure.rs
Normal file
47
runtime/tests/wasm_tests/records_allocation/src/pure.rs
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2022 Fluence Labs Limited
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#![allow(improper_ctypes)]
|
||||
#![allow(clippy::all)]
|
||||
|
||||
use marine_rs_sdk::marine;
|
||||
static mut DATA: Option<Vec<u8>> = None;
|
||||
|
||||
fn main() {}
|
||||
|
||||
#[marine]
|
||||
pub struct TestRecord {
|
||||
field1: i32,
|
||||
field2: i32,
|
||||
field3: i32,
|
||||
field4: i32,
|
||||
field5: i32,
|
||||
}
|
||||
|
||||
#[marine]
|
||||
pub fn fill_2gb_mem() {
|
||||
unsafe {
|
||||
DATA = Some(Vec::new());
|
||||
let mut data = DATA.as_mut().unwrap();
|
||||
data.reserve_exact(1);
|
||||
let data_offset = std::mem::transmute::<*const u8, usize>(data.as_ptr());
|
||||
let size = 0x80000001 - data_offset;
|
||||
data.reserve_exact(size);
|
||||
}
|
||||
}
|
||||
|
||||
#[marine]
|
||||
pub fn pass_record(_record: TestRecord) {}
|
@ -16,10 +16,10 @@ marine-utils = { path = "../crates/utils", version = "0.4.0" }
|
||||
marine-min-it-version = { path = "../crates/min-it-version", version = "0.1.0"}
|
||||
|
||||
marine-rs-sdk = "0.6.15"
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.21.1" }
|
||||
wasmer-it = { package = "wasmer-interface-types-fl", version = "0.22.0" }
|
||||
fluence-it-types = {version = "0.3.1", features = ["impls"] }
|
||||
it-lilo = "0.2.0"
|
||||
it-memory-traits = "0.1.0"
|
||||
it-lilo = "0.3.0"
|
||||
it-memory-traits = "0.2.0"
|
||||
it-json-serde = { path = "../crates/it-json-serde", version = "0.1.0" }
|
||||
|
||||
wasm-bindgen = "0.2"
|
||||
|
@ -32,11 +32,11 @@ const ALLOCATE_FUNC_NAME: &str = "allocate";
|
||||
#[wasm_bindgen(module = "/marine-js.js")]
|
||||
extern "C" {
|
||||
pub fn call_export(module_name: &JsValue, export_name: &str, args: &str) -> String;
|
||||
pub fn write_byte(module_name: &JsValue, module_offset: usize, value: u8);
|
||||
pub fn read_byte(module_name: &JsValue, module_offset: usize) -> u8;
|
||||
pub fn get_memory_size(module_name: &JsValue) -> i32;
|
||||
pub fn read_byte_range(module_name: &JsValue, module_offset: usize, slice: &mut [u8]);
|
||||
pub fn write_byte_range(module_name: &JsValue, module_offset: usize, slice: &[u8]);
|
||||
pub fn write_byte(module_name: &JsValue, module_offset: u32, value: u8);
|
||||
pub fn read_byte(module_name: &JsValue, module_offset: u32) -> u8;
|
||||
pub fn get_memory_size(module_name: &JsValue) -> u32;
|
||||
pub fn read_byte_range(module_name: &JsValue, module_offset: u32, slice: &mut [u8]);
|
||||
pub fn write_byte_range(module_name: &JsValue, module_offset: u32, slice: &[u8]);
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@ -306,27 +306,27 @@ impl JsWasmMemoryProxy {
|
||||
Self { module_name }
|
||||
}
|
||||
|
||||
pub fn get(&self, index: usize) -> u8 {
|
||||
pub fn get(&self, index: u32) -> u8 {
|
||||
INSTANCE.with(|instance| read_byte(instance.borrow().as_ref().unwrap(), index))
|
||||
}
|
||||
|
||||
pub fn set(&self, index: usize, value: u8) {
|
||||
pub fn set(&self, index: u32, value: u8) {
|
||||
INSTANCE.with(|instance| write_byte(instance.borrow().as_ref().unwrap(), index, value))
|
||||
}
|
||||
|
||||
pub fn len(&self) -> usize {
|
||||
INSTANCE.with(|instance| get_memory_size(instance.borrow().as_ref().unwrap()) as usize)
|
||||
pub fn len(&self) -> u32 {
|
||||
INSTANCE.with(|instance| get_memory_size(instance.borrow().as_ref().unwrap()))
|
||||
}
|
||||
|
||||
pub fn get_range(&self, offset: usize, size: usize) -> Vec<u8> {
|
||||
pub fn get_range(&self, offset: u32, size: u32) -> Vec<u8> {
|
||||
INSTANCE.with(|instance| {
|
||||
let mut result = vec![0; size];
|
||||
let mut result = vec![0; size as usize];
|
||||
read_byte_range(instance.borrow().as_ref().unwrap(), offset, &mut result);
|
||||
result
|
||||
})
|
||||
}
|
||||
|
||||
pub fn set_range(&self, offset: usize, data: &[u8]) {
|
||||
pub fn set_range(&self, offset: u32, data: &[u8]) {
|
||||
INSTANCE.with(|instance| {
|
||||
write_byte_range(instance.borrow().as_ref().unwrap(), offset, data);
|
||||
})
|
||||
|
@ -34,9 +34,9 @@ impl WITMemoryView {
|
||||
|
||||
fn check_bounds(
|
||||
&self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
memory_size: usize,
|
||||
offset: u32,
|
||||
size: u32,
|
||||
memory_size: u32,
|
||||
) -> Result<(), MemoryAccessError> {
|
||||
if offset + size >= memory_size {
|
||||
Err(MemoryAccessError::OutOfBounds {
|
||||
@ -51,20 +51,20 @@ impl WITMemoryView {
|
||||
}
|
||||
|
||||
pub(super) struct JsSequentialReader {
|
||||
offset: Cell<usize>,
|
||||
offset: Cell<u32>,
|
||||
data: Vec<u8>,
|
||||
memory: JsWasmMemoryProxy,
|
||||
start_offset: usize,
|
||||
start_offset: u32,
|
||||
}
|
||||
|
||||
pub(super) struct JsSequentialWriter {
|
||||
offset: usize,
|
||||
current_offset: Cell<usize>,
|
||||
offset: u32,
|
||||
current_offset: Cell<u32>,
|
||||
memory: JsWasmMemoryProxy,
|
||||
}
|
||||
|
||||
impl JsSequentialWriter {
|
||||
pub fn new(offset: usize, memory: JsWasmMemoryProxy) -> Self {
|
||||
pub fn new(offset: u32, memory: JsWasmMemoryProxy) -> Self {
|
||||
Self {
|
||||
offset,
|
||||
current_offset: Cell::new(offset),
|
||||
@ -74,7 +74,7 @@ impl JsSequentialWriter {
|
||||
}
|
||||
|
||||
impl JsSequentialReader {
|
||||
pub fn new(offset: usize, size: usize, memory: JsWasmMemoryProxy) -> Self {
|
||||
pub fn new(offset: u32, size: u32, memory: JsWasmMemoryProxy) -> Self {
|
||||
let data = memory.get_range(offset, size);
|
||||
Self {
|
||||
offset: Cell::new(offset),
|
||||
@ -96,18 +96,18 @@ impl SequentialReader for JsSequentialReader {
|
||||
|
||||
fn read_bytes<const COUNT: usize>(&self) -> [u8; COUNT] {
|
||||
let offset = self.offset.get();
|
||||
let start = offset - self.start_offset;
|
||||
let start = (offset - self.start_offset) as usize;
|
||||
|
||||
let mut result = [0u8; COUNT];
|
||||
result.copy_from_slice(&self.data[start..start + COUNT]);
|
||||
self.offset.set(offset + COUNT);
|
||||
self.offset.set(offset + COUNT as u32);
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
impl SequentialWriter for JsSequentialWriter {
|
||||
fn start_offset(&self) -> usize {
|
||||
fn start_offset(&self) -> u32 {
|
||||
self.offset
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ impl SequentialWriter for JsSequentialWriter {
|
||||
fn write_bytes(&self, bytes: &[u8]) {
|
||||
let offset = self.current_offset.get();
|
||||
self.memory.set_range(offset, bytes);
|
||||
self.current_offset.set(offset + bytes.len());
|
||||
self.current_offset.set(offset + bytes.len() as u32);
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,11 +133,7 @@ impl<'v> wasm::structures::SequentialMemoryView<'v> for WITMemoryView {
|
||||
type SR = JsSequentialReader;
|
||||
type SW = JsSequentialWriter;
|
||||
|
||||
fn sequential_writer(
|
||||
&'v self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
) -> Result<Self::SW, MemoryAccessError> {
|
||||
fn sequential_writer(&'v self, offset: u32, size: u32) -> Result<Self::SW, MemoryAccessError> {
|
||||
let memory = JsWasmMemoryProxy::new(self.module_name.clone());
|
||||
let memory_size = memory.len();
|
||||
|
||||
@ -146,11 +142,7 @@ impl<'v> wasm::structures::SequentialMemoryView<'v> for WITMemoryView {
|
||||
Ok(JsSequentialWriter::new(offset, memory))
|
||||
}
|
||||
|
||||
fn sequential_reader(
|
||||
&'v self,
|
||||
offset: usize,
|
||||
size: usize,
|
||||
) -> Result<Self::SR, MemoryAccessError> {
|
||||
fn sequential_reader(&'v self, offset: u32, size: u32) -> Result<Self::SR, MemoryAccessError> {
|
||||
let memory = JsWasmMemoryProxy::new(self.module_name.clone());
|
||||
let memory_size = memory.len();
|
||||
|
||||
|
Reference in New Issue
Block a user