SharedData
| 225 | |
| 226 | // SharedData |
| 227 | Word get_shared_data(Word key_ptr, Word key_size, Word value_ptr_ptr, Word value_size_ptr, |
| 228 | Word cas_ptr) { |
| 229 | auto *context = contextOrEffectiveContext(); |
| 230 | auto key = context->wasmVm()->getMemory(key_ptr, key_size); |
| 231 | if (!key) { |
| 232 | return WasmResult::InvalidMemoryAccess; |
| 233 | } |
| 234 | std::pair<std::string, uint32_t> data; |
| 235 | WasmResult result = context->getSharedData(key.value(), &data); |
| 236 | if (result != WasmResult::Ok) { |
| 237 | return result; |
| 238 | } |
| 239 | if (!context->wasm()->copyToPointerSize(data.first, value_ptr_ptr, value_size_ptr)) { |
| 240 | return WasmResult::InvalidMemoryAccess; |
| 241 | } |
| 242 | if (!context->wasmVm()->setMemory(cas_ptr, sizeof(uint32_t), &data.second)) { |
| 243 | return WasmResult::InvalidMemoryAccess; |
| 244 | } |
| 245 | return WasmResult::Ok; |
| 246 | } |
| 247 | |
| 248 | Word set_shared_data(Word key_ptr, Word key_size, Word value_ptr, Word value_size, Word cas) { |
| 249 | auto *context = contextOrEffectiveContext(); |
no test coverage detected