Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
30e3681
[core] remove get_runtime_storage and invoke_runtime
Robbepop Jul 23, 2020
6ab2037
[core] invalidate all implementations and usages of ext functions
Robbepop Jul 23, 2020
cfb45b7
[core] adjust ext_ functions in ext.rs
Robbepop Jul 23, 2020
7d375cb
[core] add ReturnFlags to public API
Robbepop Jul 23, 2020
a94c397
[core] remove off-chain impls for get_runtime_storage and invoke_runtime
Robbepop Jul 23, 2020
f69bd94
[core] rename ext::ext_input -> ext::input
Robbepop Jul 23, 2020
bcce3b5
[core] change return type of get_contract_storage
Robbepop Jul 23, 2020
7a66772
[core] add conversion from ext::Error to EnvError
Robbepop Jul 23, 2020
c38648f
[core] on-chain: add new utilities for static buffer modifications
Robbepop Jul 23, 2020
4d6444b
[core] add impls for on-chain property getters
Robbepop Jul 23, 2020
a30387e
[core] remove no longer needed utiltiy function
Robbepop Jul 23, 2020
3061018
[core] on-chain: new impl for invoke_contract and eval_contract
Robbepop Jul 23, 2020
6db759c
[core] on-chain: new impl for get_contract_storage
Robbepop Jul 23, 2020
efff63f
[core] on-chain: new impl for decode_input
Robbepop Jul 23, 2020
4de4c3f
[core] on-chain: new impl for output
Robbepop Jul 23, 2020
fcb3965
[core] on-chain: new impl for instantiate_contract
Robbepop Jul 23, 2020
753732b
[core] on-chain: remove unused API
Robbepop Jul 24, 2020
3a0fd5c
[core] on-chain: move EncodeScope and ScopedBuffer to buffer.rs
Robbepop Jul 24, 2020
88eb1d7
[core] on-chain: implement rest of the on-chain API
Robbepop Jul 24, 2020
7a79031
[core] add ScopedBuffer::take_bytes
Robbepop Jul 24, 2020
f98500e
[core] Add Env::call_chain_extension trait method
Robbepop Jul 24, 2020
bc476eb
[core] remove unused helper methods
Robbepop Jul 24, 2020
7bd94e2
[core] on-chain: simplify static buffer
Robbepop Jul 24, 2020
a375469
[core] add env::call_chain_extension public API
Robbepop Jul 24, 2020
b535def
[core] rename Env::output -> return_value
Robbepop Jul 24, 2020
03e252d
[core] off-chain: adjust a bunch of off-chain methods to new interfaces
Robbepop Jul 24, 2020
fc5a9a5
[core] off-chain: adjust get_contract_storage return type
Robbepop Jul 24, 2020
559bb83
[core] off-chain: remove RuntimeCallHandler and RuntimeStorage facili…
Robbepop Jul 24, 2020
4bd3d1f
[core] off-chain: adjust some tests
Robbepop Jul 24, 2020
184bcee
[core] off-chain: remove OffCall utility type
Robbepop Jul 24, 2020
89318e8
[core] off-chain: implement chain extension handler
Robbepop Jul 24, 2020
c6fb977
[core] adjust panic message
Robbepop Jul 24, 2020
51ec933
[core] apply rustfmt
Robbepop Jul 24, 2020
a223d09
[core] apply clippy suggestion
Robbepop Jul 24, 2020
57a9eec
[core] off-chain: re-export ChainExtension and ChainSpec types from t…
Robbepop Jul 24, 2020
3839a5f
[core] on-chain: retain panic messages
Robbepop Jul 24, 2020
2d4af76
[core] rename ext_ to seal_ for all on-chain functions
Robbepop Aug 24, 2020
a1f3ce1
[alloc] fix some warnings and add some minor comments
Robbepop Aug 24, 2020
49f0e66
[core] add wasm_import_module = "seal0"
Robbepop Aug 24, 2020
71acbf5
[core] introduce new Seal error codes
Robbepop Aug 25, 2020
45d58b4
[core] directly return ReturnCode from C-FII
Robbepop Aug 25, 2020
df9ba20
[core] make transfer return Result
Robbepop Aug 25, 2020
91e5025
[core] improve some doc comments
Robbepop Aug 25, 2020
515fecf
rename some old errors to their new names
Robbepop Aug 25, 2020
294fe0b
[core] remove unused env errors and rename some off-chain errors
Robbepop Aug 25, 2020
9e90b61
[core] fix bug in ReturnFlags::set_reverted (formerly known as set_tr…
Robbepop Aug 25, 2020
8ee6899
[core] avoid From impl for () for OffChainError
Robbepop Aug 25, 2020
48bae3a
[lang] adjust lang layer for changes in core
Robbepop Aug 25, 2020
e3b8a3e
[core] turn redundant asserts into debug_assert
Robbepop Aug 25, 2020
4b6c243
[core] be more strict when handling ext::get_storage error
Robbepop Aug 25, 2020
bde67f7
[core] implement clippy suggestion
Robbepop Aug 25, 2020
fcd8cca
[examples] remove no longer useful runtime-storage contract
Robbepop Aug 25, 2020
c71223f
[core] disable chain extensions by default
Robbepop Aug 25, 2020
526075d
[lang] apply clippy suggestion to use matches! macro
Robbepop Aug 25, 2020
e14e378
[core] fix docs for ext_return
Robbepop Aug 25, 2020
8a18087
[core] fix return type of api::return_value
Robbepop Aug 25, 2020
a69bac1
[core] fix doc comment of Env::return_value
Robbepop Aug 25, 2020
08981a1
Merge branch 'sync-substrate-rc5' of github.com:paritytech/ink into s…
Robbepop Aug 25, 2020
fcedd58
[core] introduce RawReturnCode as a layer between Seal error codes an…
Robbepop Aug 25, 2020
52a3fbc
[alloc] make #[alloc_error_handler] private
Robbepop Aug 25, 2020
b6d2145
[alloc, core] move alloc_handler from ink_alloc to ink_core
Robbepop Aug 25, 2020
03e3108
[core] replace useless intermediate ReturnCode type
Robbepop Aug 25, 2020
ddce2f7
[core] rename RawReturnCode -> ReturnCode
Robbepop Aug 25, 2020
5b7d672
[core] apply rustfmt
Robbepop Aug 25, 2020
fc11ce4
[core] apply rustfmt
Robbepop Aug 25, 2020
d22b2cd
[core] off-chain: rename invoke -> eval for chain extension calling
Robbepop Aug 25, 2020
8c84b1d
[core] use Ptr32 and Ptr32Mut to encapsulate pointer -> u32 conversions
Robbepop Aug 25, 2020
402728d
[core] make new Ptr32 and Ptr32Mut abstractions more type safe
Robbepop Aug 25, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[core] directly return ReturnCode from C-FII
  • Loading branch information
Robbepop committed Aug 25, 2020
commit 45d58b421b3b630cfdc68a37c05318458f064e6c
36 changes: 11 additions & 25 deletions core/src/env/engine/on_chain/ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,7 @@ macro_rules! define_error_codes {
UnknownError,
}

impl From<u32> for ReturnCode {
/// Returns a new return code from the given raw value if valid.
///
/// Returns `None` if the raw value is not a valid discriminant.
#[inline]
fn from(raw: u32) -> Self {
match raw {
0 => Self::Success,
$(
$discr => Self::$name,
)*
_ => Self::UnknownError,
}
}
}

/// Every error that can be returned from a runtime API call.
/// Every error that can be returned to a contract when it calls any of the host functions.
#[repr(u32)]
pub enum Error {
$(
Expand Down Expand Up @@ -109,6 +93,8 @@ define_error_codes! {
type Result = core::result::Result<(), Error>;

mod sys {
use super::ReturnCode;

#[link(wasm_import_module = "seal0")]
extern "C" {
pub fn seal_instantiate(
Expand All @@ -123,7 +109,7 @@ mod sys {
address_len_ptr: u32,
output_ptr: u32,
output_len_ptr: u32,
) -> u32;
) -> ReturnCode;

pub fn seal_call(
callee_ptr: u32,
Expand All @@ -135,14 +121,14 @@ mod sys {
input_len: u32,
output_ptr: u32,
output_len_ptr: u32,
) -> u32;
) -> ReturnCode;

pub fn seal_transfer(
account_id_ptr: u32,
account_id_len: u32,
transferred_value_ptr: u32,
transferred_value_len: u32,
);
) -> ReturnCode;

pub fn seal_deposit_event(
topics_ptr: u32,
Expand All @@ -153,7 +139,7 @@ mod sys {

pub fn seal_set_storage(key_ptr: u32, value_ptr: u32, value_len: u32);
pub fn seal_get_storage(key_ptr: u32, output_ptr: u32, output_len_ptr: u32)
-> u32;
-> ReturnCode;
pub fn seal_clear_storage(key_ptr: u32);

pub fn seal_restore_to(
Expand All @@ -174,7 +160,7 @@ mod sys {
input_len: u32,
output_ptr: u32,
output_len_ptr: u32,
) -> u32;
) -> ReturnCode;

pub fn seal_input(buf_ptr: u32, buf_len_ptr: u32);
pub fn seal_return(flags: u32, data_ptr: u32, data_len: u32) -> !;
Expand Down Expand Up @@ -245,7 +231,7 @@ pub fn instantiate(
};
extract_from_slice(out_address, address_len as usize);
extract_from_slice(out_return_value, return_value_len as usize);
ReturnCode::from(ret_code).into()
ret_code.into()
}

pub fn call(
Expand Down Expand Up @@ -273,7 +259,7 @@ pub fn call(
}
};
extract_from_slice(output, output_len as usize);
ReturnCode::from(ret_code).into()
ret_code.into()
}

pub fn transfer(account_id: &[u8], value: &[u8]) {
Expand Down Expand Up @@ -325,7 +311,7 @@ pub fn get_storage(key: &[u8], output: &mut &mut [u8]) -> Result {
}
};
extract_from_slice(output, output_len as usize);
ReturnCode::from(ret_code).into()
ret_code.into()
}

/// Restores a tombstone to the original smart contract.
Expand Down