// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . //! Wasm env module bindings use parity_wasm::elements::ValueType::*; use parity_wasm::interpreter::{self, UserFunctionDescriptor}; use parity_wasm::interpreter::UserFunctionDescriptor::*; use super::runtime::Runtime; pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ Static( "_storage_read", &[I32; 2], Some(I32), ), Static( "_storage_write", &[I32; 2], Some(I32), ), Static( "_malloc", &[I32], Some(I32), ), Static( "_free", &[I32], None, ), Static( "gas", &[I32], None, ), Static( "_debug", &[I32; 2], None, ), Static( "_suicide", &[I32], None, ), Static( "_create", &[I32; 4], Some(I32), ), Static( "_ccall", &[I32; 6], Some(I32), ), Static( "_dcall", &[I32; 5], Some(I32), ), Static( "_scall", &[I32; 5], Some(I32), ), Static( "abort", &[I32], None, ), Static( "_emscripten_memcpy_big", &[I32; 3], Some(I32), ), // TODO: Get rid of it also somehow? Static( "_llvm_trap", &[I32; 0], None ), Static( "_llvm_bswap_i64", &[I32; 2], Some(I32) ), ]; pub fn native_bindings<'a>(runtime: &'a mut Runtime) -> interpreter::UserFunctions<'a> { interpreter::UserFunctions { executor: runtime, functions: ::std::borrow::Cow::from(SIGNATURES), } }