From eed4d9df12633f09bafe2231f1c252dec27ec839 Mon Sep 17 00:00:00 2001 From: clearloop Date: Sun, 24 Dec 2023 03:40:05 +0800 Subject: [PATCH] refactor(codegen): re-export module wasm --- codegen/src/codegen/{code/mod.rs => code.rs} | 14 +++++++--- codegen/src/codegen/code/func.rs | 27 -------------------- codegen/src/codegen/constructor.rs | 5 +++- codegen/src/codegen/dispatcher.rs | 5 ++-- codegen/src/codegen/func.rs | 3 ++- codegen/src/jump/relocate.rs | 3 ++- codegen/src/lib.rs | 1 - codegen/src/local.rs | 5 +++- codegen/src/masm/integer.rs | 2 +- codegen/src/masm/mod.rs | 6 ++++- codegen/src/masm/ret.rs | 2 +- codegen/src/visitor/log.rs | 2 +- codegen/src/wasm/func.rs | 2 +- compiler/src/compiler.rs | 3 ++- compiler/src/parser.rs | 2 +- 15 files changed, 38 insertions(+), 44 deletions(-) rename codegen/src/codegen/{code/mod.rs => code.rs} (86%) delete mode 100644 codegen/src/codegen/code/func.rs diff --git a/codegen/src/codegen/code/mod.rs b/codegen/src/codegen/code.rs similarity index 86% rename from codegen/src/codegen/code/mod.rs rename to codegen/src/codegen/code.rs index fa38d7bc2..3b443c159 100644 --- a/codegen/src/codegen/code/mod.rs +++ b/codegen/src/codegen/code.rs @@ -1,10 +1,7 @@ //! Table for the code section. -pub use func::ExtFunc; use indexmap::IndexMap; -mod func; - /// Code section for EVM. #[derive(Clone, Default, Debug)] pub struct Code { @@ -68,3 +65,14 @@ impl Code { code } } + +/// External function in code section. +#[derive(PartialEq, Eq, Debug, Clone, Hash)] +pub struct ExtFunc { + /// Stack input. + pub stack_out: u8, + /// Stack output. + pub stack_in: u8, + /// The bytecode of the external function. + pub bytecode: Vec, +} diff --git a/codegen/src/codegen/code/func.rs b/codegen/src/codegen/code/func.rs deleted file mode 100644 index 06a042a05..000000000 --- a/codegen/src/codegen/code/func.rs +++ /dev/null @@ -1,27 +0,0 @@ -//! External Function for the code section. -use opcodes::ShangHai as OpCode; - -trait OpCodesToBytes { - fn to_bytes(self) -> Vec; -} - -impl OpCodesToBytes for &[OpCode] { - fn to_bytes(self) -> Vec { - [&[OpCode::JUMPDEST], self] - .concat() - .iter() - .map(|op| (*op).into()) - .collect() - } -} - -/// External function in code section. -#[derive(PartialEq, Eq, Debug, Clone, Hash)] -pub struct ExtFunc { - /// Stack input. - pub stack_out: u8, - /// Stack output. - pub stack_in: u8, - /// The bytecode of the external function. - pub bytecode: Vec, -} diff --git a/codegen/src/codegen/constructor.rs b/codegen/src/codegen/constructor.rs index ba8ecb05d..16c50db56 100644 --- a/codegen/src/codegen/constructor.rs +++ b/codegen/src/codegen/constructor.rs @@ -1,6 +1,9 @@ //! Contract constructor. -use crate::{wasm, Buffer, Function, JumpTable, MacroAssembler, Result, ToLSBytes}; +use crate::{ + wasm::{self, ToLSBytes}, + Buffer, Function, JumpTable, MacroAssembler, Result, +}; /// Contract constructor. /// diff --git a/codegen/src/codegen/dispatcher.rs b/codegen/src/codegen/dispatcher.rs index 6c4c15752..582c5c53d 100644 --- a/codegen/src/codegen/dispatcher.rs +++ b/codegen/src/codegen/dispatcher.rs @@ -1,8 +1,9 @@ //! Code generator for EVM dispatcher. use crate::{ - codegen::code::ExtFunc, wasm, Data, Error, Exports, Functions, Imports, JumpTable, - MacroAssembler, Result, ToLSBytes, + codegen::code::ExtFunc, + wasm::{self, Data, Exports, Functions, Imports, ToLSBytes}, + Error, JumpTable, MacroAssembler, Result, }; use wasmparser::{FuncType, Operator}; use zabi::Abi; diff --git a/codegen/src/codegen/func.rs b/codegen/src/codegen/func.rs index 9c3ef74ba..b876db278 100644 --- a/codegen/src/codegen/func.rs +++ b/codegen/src/codegen/func.rs @@ -6,7 +6,8 @@ use crate::{ local::{LocalSlot, LocalSlotType, Locals}, masm::MacroAssembler, validator::ValidateThenVisit, - Buffer, Data, Error, Imports, Result, + wasm::{Data, Imports}, + Buffer, Error, Result, }; use wasmparser::{FuncType, FuncValidator, LocalsReader, OperatorsReader, ValidatorResources}; diff --git a/codegen/src/jump/relocate.rs b/codegen/src/jump/relocate.rs index 34cef189f..9bb08eec5 100644 --- a/codegen/src/jump/relocate.rs +++ b/codegen/src/jump/relocate.rs @@ -2,7 +2,8 @@ use crate::{ jump::{relocate, JumpTable}, - Buffer, Error, Result, ToLSBytes, BUFFER_LIMIT, + wasm::ToLSBytes, + Buffer, Error, Result, BUFFER_LIMIT, }; use opcodes::ShangHai as OpCode; diff --git a/codegen/src/lib.rs b/codegen/src/lib.rs index 53f90e986..2e1665770 100644 --- a/codegen/src/lib.rs +++ b/codegen/src/lib.rs @@ -10,7 +10,6 @@ pub use crate::{ local::{LocalSlot, Locals}, masm::MacroAssembler, result::{Error, Result}, - wasm::{Data, Exports, Functions, HostFunc, Imports, ToLSBytes, Type}, }; use smallvec::SmallVec; diff --git a/codegen/src/local.rs b/codegen/src/local.rs index 8dae50d60..664c2b229 100644 --- a/codegen/src/local.rs +++ b/codegen/src/local.rs @@ -1,6 +1,9 @@ //! WASM local slot. -use crate::{Error, Result, ToLSBytes, Type}; +use crate::{ + wasm::{ToLSBytes, Type}, + Error, Result, +}; use smallvec::SmallVec; use wasmparser::ValType; diff --git a/codegen/src/masm/integer.rs b/codegen/src/masm/integer.rs index ff65c2575..a0087dd53 100644 --- a/codegen/src/masm/integer.rs +++ b/codegen/src/masm/integer.rs @@ -1,6 +1,6 @@ // Integer instructions -use crate::{MacroAssembler, Result, ToLSBytes}; +use crate::{wasm::ToLSBytes, MacroAssembler, Result}; use wasmparser::{Ieee32, Ieee64}; impl MacroAssembler { diff --git a/codegen/src/masm/mod.rs b/codegen/src/masm/mod.rs index a0d9ec624..5f0ff72ed 100644 --- a/codegen/src/masm/mod.rs +++ b/codegen/src/masm/mod.rs @@ -1,6 +1,10 @@ //! MacroAssembler used by the code generation. -use crate::{asm::Assembler, Error, Result, ToLSBytes, Type}; +use crate::{ + asm::Assembler, + wasm::{ToLSBytes, Type}, + Error, Result, +}; use smallvec::SmallVec; use std::ops::{Deref, DerefMut}; diff --git a/codegen/src/masm/ret.rs b/codegen/src/masm/ret.rs index 05b7741b8..cf9fadd9e 100644 --- a/codegen/src/masm/ret.rs +++ b/codegen/src/masm/ret.rs @@ -1,6 +1,6 @@ //! Return handlers -use crate::{Error, MacroAssembler, Result, ToLSBytes}; +use crate::{wasm::ToLSBytes, Error, MacroAssembler, Result}; use wasmparser::ValType; impl MacroAssembler { diff --git a/codegen/src/visitor/log.rs b/codegen/src/visitor/log.rs index b8fe9bef6..3704df5f1 100644 --- a/codegen/src/visitor/log.rs +++ b/codegen/src/visitor/log.rs @@ -1,6 +1,6 @@ //! System instructions -use crate::{masm::MemoryInfo, Error, Function, Result, ToLSBytes}; +use crate::{masm::MemoryInfo, wasm::ToLSBytes, Error, Function, Result}; impl Function { /// Parse log data from the bytecode. diff --git a/codegen/src/wasm/func.rs b/codegen/src/wasm/func.rs index 6d391fa7c..46c190e73 100644 --- a/codegen/src/wasm/func.rs +++ b/codegen/src/wasm/func.rs @@ -1,5 +1,5 @@ //! Function handler -use crate::{Error, Exports, Result}; +use crate::{wasm::Exports, Error, Result}; use std::{ collections::BTreeMap, ops::{Deref, DerefMut}, diff --git a/compiler/src/compiler.rs b/compiler/src/compiler.rs index 4ebf69a16..4f9f91da3 100644 --- a/compiler/src/compiler.rs +++ b/compiler/src/compiler.rs @@ -3,7 +3,8 @@ use crate::{parser::Parser, Config, Error, Result}; use zabi::Abi; use zingen::{ - wasm, Buffer, Constructor, Data, Dispatcher, Function, Imports, JumpTable, BUFFER_LIMIT, + wasm::{self, Data, Imports}, + Buffer, Constructor, Dispatcher, Function, JumpTable, BUFFER_LIMIT, }; /// Zink Compiler diff --git a/compiler/src/parser.rs b/compiler/src/parser.rs index 759e75233..baf5cc8c5 100644 --- a/compiler/src/parser.rs +++ b/compiler/src/parser.rs @@ -6,7 +6,7 @@ use wasmparser::{ Data, DataKind, Export, ExternalKind, Import, Operator, Payload, SectionLimited, TypeRef, ValidPayload, Validator, }; -use zingen::{wasm, Data as DataSet, Exports, Functions, HostFunc, Imports}; +use zingen::wasm::{self, Data as DataSet, Exports, Functions, HostFunc, Imports}; /// WASM module parser #[derive(Default)]