Skip to content

Commit 32dd806

Browse files
committed
remove backendApi
1 parent 4662816 commit 32dd806

File tree

3 files changed

+42
-87
lines changed

3 files changed

+42
-87
lines changed

packages/vm/src/calls.rs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1+
use crate::cache::Cache;
12
use crate::error::Error;
23
use crate::imports::create_import_object;
34
use crate::store::make_store;
45
use crate::vm::{Environment, Querier};
5-
use crate::{cache::Cache, vm::BackendApi};
66

77
use std::ptr::NonNull;
88
use wasmer_middlewares::metering::{get_remaining_points, MeteringPoints};
99

10-
pub fn run<A, Q>(
10+
pub fn run<Q>(
1111
cache: &mut Cache,
1212
code: &[u8],
1313
gas_limit: u64,
1414
is_prepare: bool,
15-
api: A,
1615
querier: Q,
1716
) -> Result<u64, Error>
1817
where
19-
A: BackendApi + 'static,
2018
Q: Querier + 'static,
2119
{
22-
let owasm_env = Environment::new(api, querier);
20+
let owasm_env = Environment::new(querier);
2321
let store = make_store();
2422
let import_object = create_import_object(&store, owasm_env.clone());
2523

@@ -57,18 +55,13 @@ where
5755
#[cfg(test)]
5856
mod test {
5957
use crate::cache::CacheOptions;
60-
use crate::vm::BackendApi;
6158

6259
use super::*;
6360
use crate::compile::compile;
6461
use std::io::{Read, Write};
6562
use std::process::Command;
6663
use tempfile::NamedTempFile;
6764

68-
pub struct MockApi {}
69-
70-
impl BackendApi for MockApi {}
71-
7265
pub struct MockQuerier {}
7366

7467
impl Querier for MockQuerier {
@@ -149,10 +142,9 @@ mod test {
149142
);
150143
let code = compile(&wasm).unwrap();
151144
let mut cache = Cache::new(CacheOptions { cache_size: 10000 });
152-
let api = MockApi {};
153145
let querier = MockQuerier {};
154-
let gas_used = run(&mut cache, &code, u64::MAX, true, api, querier).unwrap();
155-
assert_eq!(gas_used, 687519375000 as u64);
146+
let gas_used = run(&mut cache, &code, u64::MAX, true, querier).unwrap();
147+
assert_eq!(gas_used, 705019550000 as u64);
156148
}
157149

158150
#[test]
@@ -188,10 +180,9 @@ mod test {
188180

189181
let code = compile(&wasm).unwrap();
190182
let mut cache = Cache::new(CacheOptions { cache_size: 10000 });
191-
let api = MockApi {};
192183
let querier = MockQuerier {};
193-
let gas_used = run(&mut cache, &code, u64::MAX, true, api, querier).unwrap();
194-
assert_eq!(gas_used, 687524375000 as u64);
184+
let gas_used = run(&mut cache, &code, u64::MAX, true, querier).unwrap();
185+
assert_eq!(gas_used, 706724650000 as u64);
195186
}
196187

197188
#[test]
@@ -219,9 +210,8 @@ mod test {
219210
);
220211
let code = compile(&wasm).unwrap();
221212
let mut cache = Cache::new(CacheOptions { cache_size: 10000 });
222-
let api = MockApi {};
223213
let querier = MockQuerier {};
224-
let out_of_gas_err = run(&mut cache, &code, 0, true, api, querier).unwrap_err();
214+
let out_of_gas_err = run(&mut cache, &code, 0, true, querier).unwrap_err();
225215
assert_eq!(out_of_gas_err, Error::OutOfGasError);
226216
}
227217
}

packages/vm/src/imports.rs

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::error::Error;
2-
use crate::vm::{BackendApi, Environment, Querier};
2+
use crate::vm::{Environment, Querier};
33

44
use wasmer::{imports, Function, ImportObject, Store};
55

@@ -12,27 +12,24 @@ fn require_mem_range(max_range: usize, require_range: usize) -> Result<(), Error
1212
Ok(())
1313
}
1414

15-
fn do_gas<A, Q>(env: &Environment<A, Q>, _gas: u32) -> Result<(), Error>
15+
fn do_gas<Q>(env: &Environment<Q>, _gas: u32) -> Result<(), Error>
1616
where
17-
A: BackendApi + 'static,
1817
Q: Querier + 'static,
1918
{
2019
env.decrease_gas_left(750_000_000)?;
2120
Ok(())
2221
}
2322

24-
fn do_get_span_size<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
23+
fn do_get_span_size<Q>(env: &Environment<Q>) -> Result<i64, Error>
2524
where
26-
A: BackendApi + 'static,
2725
Q: Querier + 'static,
2826
{
2927
env.decrease_gas_left(750_000_000)?;
3028
Ok(env.with_querier_from_context(|querier| querier.get_span_size()))
3129
}
3230

33-
fn do_read_calldata<A, Q>(env: &Environment<A, Q>, ptr: i64) -> Result<i64, Error>
31+
fn do_read_calldata<Q>(env: &Environment<Q>, ptr: i64) -> Result<i64, Error>
3432
where
35-
A: BackendApi + 'static,
3633
Q: Querier + 'static,
3734
{
3835
env.with_querier_from_context(|querier| {
@@ -52,9 +49,8 @@ where
5249
})
5350
}
5451

55-
fn do_set_return_data<A, Q>(env: &Environment<A, Q>, ptr: i64, len: i64) -> Result<(), Error>
52+
fn do_set_return_data<Q>(env: &Environment<Q>, ptr: i64, len: i64) -> Result<(), Error>
5653
where
57-
A: BackendApi + 'static,
5854
Q: Querier + 'static,
5955
{
6056
env.with_querier_from_context(|querier| {
@@ -76,60 +72,54 @@ where
7672
})
7773
}
7874

79-
fn do_get_ask_count<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
75+
fn do_get_ask_count<Q>(env: &Environment<Q>) -> Result<i64, Error>
8076
where
81-
A: BackendApi + 'static,
8277
Q: Querier + 'static,
8378
{
8479
env.decrease_gas_left(750_000_000)?;
8580
Ok(env.with_querier_from_context(|querier| querier.get_ask_count()))
8681
}
8782

88-
fn do_get_min_count<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
83+
fn do_get_min_count<Q>(env: &Environment<Q>) -> Result<i64, Error>
8984
where
90-
A: BackendApi + 'static,
9185
Q: Querier + 'static,
9286
{
9387
env.decrease_gas_left(750_000_000)?;
9488
Ok(env.with_querier_from_context(|querier| querier.get_min_count()))
9589
}
9690

97-
fn do_get_prepare_time<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
91+
fn do_get_prepare_time<Q>(env: &Environment<Q>) -> Result<i64, Error>
9892
where
99-
A: BackendApi + 'static,
10093
Q: Querier + 'static,
10194
{
10295
env.decrease_gas_left(750_000_000)?;
10396
Ok(env.with_querier_from_context(|querier| querier.get_prepare_time()))
10497
}
10598

106-
fn do_get_execute_time<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
99+
fn do_get_execute_time<Q>(env: &Environment<Q>) -> Result<i64, Error>
107100
where
108-
A: BackendApi + 'static,
109101
Q: Querier + 'static,
110102
{
111103
env.decrease_gas_left(750_000_000)?;
112104
env.with_querier_from_context(|querier| querier.get_execute_time())
113105
}
114106

115-
fn do_get_ans_count<A, Q>(env: &Environment<A, Q>) -> Result<i64, Error>
107+
fn do_get_ans_count<Q>(env: &Environment<Q>) -> Result<i64, Error>
116108
where
117-
A: BackendApi + 'static,
118109
Q: Querier + 'static,
119110
{
120111
env.decrease_gas_left(750_000_000)?;
121112
env.with_querier_from_context(|querier| querier.get_ans_count())
122113
}
123114

124-
fn do_ask_external_data<A, Q>(
125-
env: &Environment<A, Q>,
115+
fn do_ask_external_data<Q>(
116+
env: &Environment<Q>,
126117
eid: i64,
127118
did: i64,
128119
ptr: i64,
129120
len: i64,
130121
) -> Result<(), Error>
131122
where
132-
A: BackendApi + 'static,
133123
Q: Querier + 'static,
134124
{
135125
env.with_querier_from_context(|querier| {
@@ -151,27 +141,21 @@ where
151141
})
152142
}
153143

154-
fn do_get_external_data_status<A, Q>(
155-
env: &Environment<A, Q>,
156-
eid: i64,
157-
vid: i64,
158-
) -> Result<i64, Error>
144+
fn do_get_external_data_status<Q>(env: &Environment<Q>, eid: i64, vid: i64) -> Result<i64, Error>
159145
where
160-
A: BackendApi + 'static,
161146
Q: Querier + 'static,
162147
{
163148
env.decrease_gas_left(750_000_000)?;
164149
env.with_querier_from_context(|querier| querier.get_external_data_status(eid, vid))
165150
}
166151

167-
fn do_read_external_data<A, Q>(
168-
env: &Environment<A, Q>,
152+
fn do_read_external_data<Q>(
153+
env: &Environment<Q>,
169154
eid: i64,
170155
vid: i64,
171156
ptr: i64,
172157
) -> Result<i64, Error>
173158
where
174-
A: BackendApi + 'static,
175159
Q: Querier + 'static,
176160
{
177161
env.with_querier_from_context(|querier| {
@@ -191,18 +175,17 @@ where
191175
})
192176
}
193177

194-
fn get_from_mem<A, Q>(env: &Environment<A, Q>, ptr: i64, len: i64) -> Result<Vec<u8>, Error>
178+
fn get_from_mem<Q>(env: &Environment<Q>, ptr: i64, len: i64) -> Result<Vec<u8>, Error>
195179
where
196-
A: BackendApi + 'static,
197180
Q: Querier + 'static,
198181
{
199182
let memory = env.memory()?;
200183
require_mem_range(memory.size().bytes().0, (ptr + len) as usize)?;
201184
Ok(memory.view()[ptr as usize..(ptr + len) as usize].iter().map(|cell| cell.get()).collect())
202185
}
203186

204-
fn do_ecvrf_verify<A, Q>(
205-
env: &Environment<A, Q>,
187+
fn do_ecvrf_verify<Q>(
188+
env: &Environment<Q>,
206189
y_ptr: i64,
207190
y_len: i64,
208191
pi_ptr: i64,
@@ -211,7 +194,6 @@ fn do_ecvrf_verify<A, Q>(
211194
alpha_len: i64,
212195
) -> Result<u32, Error>
213196
where
214-
A: BackendApi + 'static,
215197
Q: Querier + 'static,
216198
{
217199
// consume gas relatively to the function running time (~12ms)
@@ -222,9 +204,8 @@ where
222204
Ok(ecvrf::ecvrf_verify(&y, &pi, &alpha) as u32)
223205
}
224206

225-
pub fn create_import_object<A, Q>(store: &Store, owasm_env: Environment<A, Q>) -> ImportObject
207+
pub fn create_import_object<Q>(store: &Store, owasm_env: Environment<Q>) -> ImportObject
226208
where
227-
A: BackendApi + 'static,
228209
Q: Querier + 'static,
229210
{
230211
imports! {
@@ -253,7 +234,6 @@ mod test {
253234
use crate::cache::{Cache, CacheOptions};
254235
use crate::compile::compile;
255236
use crate::store::make_store;
256-
use crate::vm::BackendApi;
257237

258238
use std::io::{Read, Write};
259239
use std::process::Command;
@@ -264,10 +244,6 @@ mod test {
264244
use wasmer::Instance;
265245
use wasmer::ValType::{I32, I64};
266246

267-
pub struct MockApi {}
268-
269-
impl BackendApi for MockApi {}
270-
271247
pub struct MockQuerier {}
272248

273249
impl Querier for MockQuerier {
@@ -323,7 +299,7 @@ mod test {
323299
wasm
324300
}
325301

326-
fn create_owasm_env() -> (Environment<MockApi, MockQuerier>, Instance) {
302+
fn create_owasm_env() -> (Environment<MockQuerier>, Instance) {
327303
let wasm = wat2wasm(
328304
r#"(module
329305
(func
@@ -338,9 +314,8 @@ mod test {
338314
);
339315
let code = compile(&wasm).unwrap();
340316

341-
let api = MockApi {};
342317
let querier = MockQuerier {};
343-
let owasm_env = Environment::new(api, querier);
318+
let owasm_env = Environment::new(querier);
344319
let store = make_store();
345320
let import_object = create_import_object(&store, owasm_env.clone());
346321
let mut cache = Cache::new(CacheOptions { cache_size: 10000 });
@@ -351,9 +326,8 @@ mod test {
351326

352327
#[test]
353328
fn test_import_object_function_type() {
354-
let api = MockApi {};
355329
let querier = MockQuerier {};
356-
let owasm_env = Environment::new(api, querier);
330+
let owasm_env = Environment::new(querier);
357331
let store = make_store();
358332
assert_eq!(create_import_object(&store, owasm_env.clone()).externs_vec().len(), 13);
359333

0 commit comments

Comments
 (0)