diff --git a/libraries/chain/CMakeLists.txt b/libraries/chain/CMakeLists.txt index 62aa87f6385a2d5ef4feb3b292f05c6210cdc4b9..3c69132b0485822a6812f284ce44553ac8129cf9 100644 --- a/libraries/chain/CMakeLists.txt +++ b/libraries/chain/CMakeLists.txt @@ -27,7 +27,7 @@ add_library( eosio_chain contracts/genesis_state.cpp contracts/abi_serializer.cpp - webassembly/jit.cpp + webassembly/wavm.cpp ${HEADERS} transaction_metadata.cpp) diff --git a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp index 3186ec23848de21cf682ebadbbd33bec9f4fb3bd..a35ebdbb46bfa3ab38efe8860ffca3ef77e2fd7d 100644 --- a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp +++ b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include using namespace fc; using namespace eosio::chain::webassembly; @@ -9,12 +9,12 @@ using namespace eosio::chain::webassembly; namespace eosio { namespace chain { struct wasm_cache::entry { - entry(jit::entry&& jit) - : jit(std::forward(jit)) + entry(wavm::entry&& wavm) + : wavm(std::forward(wavm)) { } - jit::entry jit; + wavm::entry wavm; }; struct wasm_interface_impl { @@ -22,7 +22,7 @@ namespace eosio { namespace chain { }; #define _REGISTER_INTRINSIC_EXPLICIT(CLS, METHOD, WASM_SIG, NAME, SIG)\ - _REGISTER_JIT_INTRINSIC(CLS, METHOD, WASM_SIG, NAME, SIG) + _REGISTER_WAVM_INTRINSIC(CLS, METHOD, WASM_SIG, NAME, SIG) #define _REGISTER_INTRINSIC4(CLS, METHOD, WASM_SIG, NAME, SIG)\ _REGISTER_INTRINSIC_EXPLICIT(CLS, METHOD, WASM_SIG, NAME, SIG ) diff --git a/libraries/chain/include/eosio/chain/webassembly/jit.hpp b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp similarity index 98% rename from libraries/chain/include/eosio/chain/webassembly/jit.hpp rename to libraries/chain/include/eosio/chain/webassembly/wavm.hpp index cbdc4c0bd669d40a6eef5768ba3d75628b656c1b..ede6a323b8a30d2926ae19843f2a1cc2ae939d84 100644 --- a/libraries/chain/include/eosio/chain/webassembly/jit.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp @@ -10,7 +10,7 @@ using namespace Runtime; using namespace fc; using namespace eosio::chain::webassembly::common; -namespace eosio { namespace chain { namespace webassembly { namespace jit { +namespace eosio { namespace chain { namespace webassembly { namespace wavm { struct info; class entry { @@ -42,14 +42,14 @@ class entry { }; struct info { - info( const entry &jit ) + info( const entry &wavm ) { - MemoryInstance* current_memory = Runtime::getDefaultMemory(jit.instance); - default_sbrk_bytes = jit.sbrk_bytes; + MemoryInstance* current_memory = Runtime::getDefaultMemory(wavm.instance); + default_sbrk_bytes = wavm.sbrk_bytes; if(current_memory) { char *mem_ptr = &memoryRef(current_memory, 0); - const auto allocated_memory = Runtime::getDefaultMemorySize(jit.instance); + const auto allocated_memory = Runtime::getDefaultMemorySize(wavm.instance); for (uint64_t i = 0; i < allocated_memory; ++i) { if (mem_ptr[i]) mem_end = i + 1; @@ -658,12 +658,12 @@ struct intrinsic_function_invoker_wrapper::type(),\ - (void *)eosio::chain::webassembly::jit::intrinsic_function_invoker_wrapper::type::fn<&CLS::METHOD>()\ + eosio::chain::webassembly::wavm::wasm_function_type_provider::type(),\ + (void *)eosio::chain::webassembly::wavm::intrinsic_function_invoker_wrapper::type::fn<&CLS::METHOD>()\ );\ -} } } }// eosio::chain::webassembly::jit +} } } }// eosio::chain::webassembly::wavm diff --git a/libraries/chain/wasm_interface.cpp b/libraries/chain/wasm_interface.cpp index d42fb3ee05caceea7999e08c6d34e6e29cd5674f..a99a4db9b5fe881c49d98011e2c48a981c517c3f 100644 --- a/libraries/chain/wasm_interface.cpp +++ b/libraries/chain/wasm_interface.cpp @@ -73,8 +73,8 @@ namespace eosio { namespace chain { * the instance handed out to other threads */ struct code_info { - explicit code_info(jit::info&& jit_info) :jit_info(jit_info) {} - jit::info jit_info; + explicit code_info(wavm::info&& wavm_info) :wavm_info(wavm_info) {} + wavm::info wavm_info; // all existing instances of this code vector> instances; @@ -156,13 +156,13 @@ namespace eosio { namespace chain { if (!pending_result) { // time to compile a brand new (maybe first) copy of this code - fc::optional jit; - fc::optional jit_info; + fc::optional wavm; + fc::optional wavm_info; try { /// TODO: make validation generic - jit = jit::entry::build(wasm_binary, wasm_binary_size); - jit_info.emplace(*jit); + wavm = wavm::entry::build(wasm_binary, wasm_binary_size); + wavm_info.emplace(*wavm); } catch (...) { pending_error = std::current_exception(); @@ -172,9 +172,9 @@ namespace eosio { namespace chain { // grab the lock and put this in the cache as unavailble with_lock(_cache_lock, [&,this]() { // find or create a new entry - auto iter = _cache.emplace(code_id, code_info(std::move(*jit_info))).first; + auto iter = _cache.emplace(code_id, code_info(std::move(*wavm_info))).first; - iter->second.instances.emplace_back(std::make_unique(std::move(*jit))); + iter->second.instances.emplace_back(std::make_unique(std::move(*wavm))); pending_result = optional_entry_ref(*iter->second.instances.back().get()); }); } @@ -209,7 +209,7 @@ namespace eosio { namespace chain { void return_entry(const digest_type& code_id, wasm_cache::entry& entry) { // sanitize by reseting the memory that may now be dirty auto& info = (*fetch_info(code_id)).get(); - entry.jit.reset(info.jit_info); + entry.wavm.reset(info.wavm_info); // under a lock, put this entry back in the available instances side of the instances vector with_lock(_cache_lock, [&,this](){ @@ -254,7 +254,7 @@ namespace eosio { namespace chain { void wasm_cache::checkin(const digest_type& code_id, entry& code ) { - MemoryInstance* default_mem = Runtime::getDefaultMemory(code.jit.instance); + MemoryInstance* default_mem = Runtime::getDefaultMemory(code.wavm.instance); if(default_mem) Runtime::shrinkMemory(default_mem, Runtime::getMemoryNumPages(default_mem) - 1); _my->return_entry(code_id, code); @@ -292,12 +292,12 @@ namespace eosio { namespace chain { void wasm_interface::apply( wasm_cache::entry& code, apply_context& context ) { auto context_guard = scoped_context(my->current_context, code, context); - code.jit.call_apply(context); + code.wavm.call_apply(context); } void wasm_interface::error( wasm_cache::entry& code, apply_context& context ) { auto context_guard = scoped_context(my->current_context, code, context); - code.jit.call_error(context); + code.wavm.call_error(context); } wasm_context& common::intrinsics_accessor::get_context(wasm_interface &wasm) { @@ -305,8 +305,8 @@ namespace eosio { namespace chain { return *wasm.my->current_context; } - const jit::entry& jit::entry::get(wasm_interface& wasm) { - return common::intrinsics_accessor::get_context(wasm).code.jit; + const wavm::entry& wavm::entry::get(wasm_interface& wasm) { + return common::intrinsics_accessor::get_context(wasm).code.wavm; } #if defined(assert) @@ -833,7 +833,7 @@ class memory_api : public context_aware_api { } uint32_t sbrk(int num_bytes) { - return code.jit.sbrk(num_bytes); + return code.wavm.sbrk(num_bytes); } }; diff --git a/libraries/chain/webassembly/jit.cpp b/libraries/chain/webassembly/wavm.cpp similarity index 98% rename from libraries/chain/webassembly/jit.cpp rename to libraries/chain/webassembly/wavm.cpp index 2e3dbec9a1f646c8f37873f4c585cb8b36f09800..669f0a6a3045e5da8905d713906cf9cefb275847 100644 --- a/libraries/chain/webassembly/jit.cpp +++ b/libraries/chain/webassembly/wavm.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -14,7 +14,7 @@ using namespace IR; using namespace Runtime; -namespace eosio { namespace chain { namespace webassembly { namespace jit { +namespace eosio { namespace chain { namespace webassembly { namespace wavm { /** * Integration with the WASM Linker to resolve our intrinsics