Skip to content
This repository was archived by the owner on Apr 8, 2026. It is now read-only.

Commit c818948

Browse files
committed
update rust
1 parent d9a34b3 commit c818948

5 files changed

Lines changed: 7 additions & 33 deletions

File tree

bindings/rust/evmc-declare-tests/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ impl EvmcVm for FooVM {
3131
fn execute(
3232
&self,
3333
_revision: evmc_sys::evmc_revision,
34-
_code: &[u8],
3534
_message: &ExecutionMessage,
3635
_context: Option<&mut ExecutionContext>,
3736
) -> ExecutionResult {

bindings/rust/evmc-declare/src/lib.rs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
//! ExampleVM {}
2222
//! }
2323
//!
24-
//! fn execute(&self, revision: evmc_vm::ffi::evmc_revision, code: &[u8], message: &evmc_vm::ExecutionMessage, context: Option<&mut evmc_vm::ExecutionContext>) -> evmc_vm::ExecutionResult {
24+
//! fn execute(&self, revision: evmc_vm::ffi::evmc_revision, message: &evmc_vm::ExecutionMessage, context: Option<&mut evmc_vm::ExecutionContext>) -> evmc_vm::ExecutionResult {
2525
//! evmc_vm::ExecutionResult::success(1337, 0, None)
2626
//! }
2727
//! }
@@ -395,52 +395,34 @@ fn build_execute_fn(names: &VMNameSet) -> proc_macro2::TokenStream {
395395
host: *const ::evmc_vm::ffi::evmc_host_interface,
396396
context: *mut ::evmc_vm::ffi::evmc_host_context,
397397
revision: ::evmc_vm::ffi::evmc_revision,
398-
msg: *const ::evmc_vm::ffi::evmc_message,
399-
code: *const u8,
400-
code_size: usize
398+
msg: *const ::evmc_vm::ffi::evmc_message
401399
) -> ::evmc_vm::ffi::evmc_result
402400
{
403401
use evmc_vm::EvmcVm;
404402

405-
// TODO: context is optional in case of the "precompiles" capability
406-
if instance.is_null() || msg.is_null() || (code.is_null() && code_size != 0) {
407-
// These are irrecoverable errors that violate the EVMC spec.
408-
std::process::abort();
409-
}
410-
411403
assert!(!instance.is_null());
412404
assert!(!msg.is_null());
413405

414406
let execution_message: ::evmc_vm::ExecutionMessage = unsafe {
415407
msg.as_ref().expect("EVMC message is null").into()
416408
};
417409

418-
let empty_code = [0u8;0];
419-
let code_ref: &[u8] = if code.is_null() {
420-
assert_eq!(code_size, 0);
421-
&empty_code
422-
} else {
423-
unsafe {
424-
::std::slice::from_raw_parts(code, code_size)
425-
}
426-
};
427-
428410
let container = unsafe {
429411
// Acquire ownership from EVMC.
430412
::evmc_vm::EvmcContainer::<#type_name_ident>::from_ffi_pointer(instance)
431413
};
432414

433415
let result = ::std::panic::catch_unwind(|| {
434416
if host.is_null() {
435-
container.execute(revision, code_ref, &execution_message, None)
417+
container.execute(revision, &execution_message, None)
436418
} else {
437419
let mut execution_context = unsafe {
438420
::evmc_vm::ExecutionContext::new(
439421
host.as_ref().expect("EVMC host is null"),
440422
context,
441423
)
442424
};
443-
container.execute(revision, code_ref, &execution_message, Some(&mut execution_context))
425+
container.execute(revision, &execution_message, Some(&mut execution_context))
444426
}
445427
});
446428

bindings/rust/evmc-vm/src/container.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ mod tests {
8181
fn execute(
8282
&self,
8383
_revision: evmc_sys::evmc_revision,
84-
_code: &[u8],
8584
_message: &ExecutionMessage,
8685
_context: Option<&mut ExecutionContext>,
8786
) -> ExecutionResult {
@@ -120,8 +119,6 @@ mod tests {
120119
set_option: None,
121120
};
122121

123-
let code = [0u8; 0];
124-
125122
let message = ::evmc_sys::evmc_message {
126123
kind: ::evmc_sys::evmc_call_kind::EVMC_CALL,
127124
flags: 0,
@@ -165,7 +162,6 @@ mod tests {
165162
container
166163
.execute(
167164
evmc_sys::evmc_revision::EVMC_PETERSBURG,
168-
&code,
169165
&message,
170166
Some(&mut context)
171167
)
@@ -181,7 +177,6 @@ mod tests {
181177
container
182178
.execute(
183179
evmc_sys::evmc_revision::EVMC_PETERSBURG,
184-
&code,
185180
&message,
186181
Some(&mut context)
187182
)

bindings/rust/evmc-vm/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ pub trait EvmcVm {
2929
fn execute<'a>(
3030
&self,
3131
revision: Revision,
32-
code: &'a [u8],
3332
message: &'a ExecutionMessage,
3433
context: Option<&'a mut ExecutionContext<'a>>,
3534
) -> ExecutionResult;
@@ -368,7 +367,7 @@ impl<'a> ExecutionContext<'a> {
368367
create2_salt: *message.create2_salt(),
369368
code_address: *message.code_address(),
370369
code: code_data,
371-
code_size,
370+
code_size: code_size,
372371
};
373372
unsafe {
374373
assert!((*self.host).call.is_some());

examples/example-rust-vm/src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ impl EvmcVm for ExampleRustVM {
3636
fn execute<'a>(
3737
&self,
3838
_revision: Revision,
39-
_code: &'a [u8],
4039
message: &'a ExecutionMessage,
4140
_context: Option<&'a mut ExecutionContext<'a>>,
4241
) -> ExecutionResult {
@@ -53,7 +52,7 @@ impl EvmcVm for ExampleRustVM {
5352
return ExecutionResult::failure();
5453
}
5554

56-
if _code.is_empty() {
55+
if message.code().unwrap().is_empty() {
5756
return ExecutionResult::failure();
5857
}
5958

@@ -63,7 +62,7 @@ impl EvmcVm for ExampleRustVM {
6362
0x43, 0x60, 0x00, 0x55, 0x43, 0x60, 0x00, 0x52, 0x59, 0x60, 0x00, 0xf3,
6463
];
6564

66-
if save_return_block_number != _code {
65+
if save_return_block_number != *message.code().unwrap() {
6766
return ExecutionResult::failure();
6867
}
6968

0 commit comments

Comments
 (0)