@@ -138,12 +138,12 @@ pub(crate) fn hq(
138
138
) -> WasmtimeResult < u32 > {
139
139
let env = fenv. data_mut ( ) ;
140
140
141
- let instance = env. self_instance ( ) ;
141
+ let mut instance = env. self_instance ( ) ;
142
142
143
143
let name_len = name_len as usize ;
144
144
145
- check_ptr ( instance, name_ofs, name_len) ?;
146
- check_arg ( instance, arg_len) ?;
145
+ check_ptr ( & instance, name_ofs, name_len) ?;
146
+ check_arg ( & instance, arg_len) ?;
147
147
148
148
let name = instance. with_memory ( |buf| {
149
149
// performance: use a dedicated buffer here?
@@ -163,11 +163,11 @@ pub(crate) fn hd(
163
163
) -> WasmtimeResult < u32 > {
164
164
let env = fenv. data_mut ( ) ;
165
165
166
- let instance = env. self_instance ( ) ;
166
+ let mut instance = env. self_instance ( ) ;
167
167
168
168
let name_len = name_len as usize ;
169
169
170
- check_ptr ( instance, name_ofs, name_len) ?;
170
+ check_ptr ( & instance, name_ofs, name_len) ?;
171
171
172
172
let name = instance. with_memory ( |buf| {
173
173
// performance: use a dedicated buffer here?
@@ -194,13 +194,13 @@ pub(crate) fn c(
194
194
) -> WasmtimeResult < i32 > {
195
195
let env = fenv. data_mut ( ) ;
196
196
197
- let instance = env. self_instance ( ) ;
197
+ let mut instance = env. self_instance ( ) ;
198
198
199
199
let name_len = name_len as usize ;
200
200
201
- check_ptr ( instance, mod_id_ofs, CONTRACT_ID_BYTES ) ?;
202
- check_ptr ( instance, name_ofs, name_len) ?;
203
- check_arg ( instance, arg_len) ?;
201
+ check_ptr ( & instance, mod_id_ofs, CONTRACT_ID_BYTES ) ?;
202
+ check_ptr ( & instance, name_ofs, name_len) ?;
203
+ check_arg ( & instance, arg_len) ?;
204
204
205
205
let argbuf_ofs = instance. arg_buffer_offset ( ) ;
206
206
@@ -222,12 +222,8 @@ pub(crate) fn c(
222
222
& memory[ mod_id_ofs..] [ ..std:: mem:: size_of :: < ContractId > ( ) ] ,
223
223
) ;
224
224
225
- let callee_stack_element = env
226
- . push_callstack ( mod_id, callee_limit)
227
- . expect ( "pushing to the callstack should succeed" ) ;
228
- let callee = env
229
- . instance ( & callee_stack_element. contract_id )
230
- . expect ( "callee instance should exist" ) ;
225
+ let mut callee = env. instance ( mod_id) ?;
226
+ env. push_callstack ( mod_id, callee_limit, callee. mem_len ( ) ) ;
231
227
232
228
callee. snap ( ) . map_err ( |err| Error :: MemorySnapshotFailure {
233
229
reason : None ,
@@ -242,7 +238,7 @@ pub(crate) fn c(
242
238
let ret_len = callee
243
239
. call ( name, arg. len ( ) as u32 , callee_limit)
244
240
. map_err ( Error :: normalize) ?;
245
- check_arg ( callee, ret_len as u32 ) ?;
241
+ check_arg ( & callee, ret_len as u32 ) ?;
246
242
247
243
// copy back result
248
244
callee. read_argument ( & mut memory[ argbuf_ofs..] [ ..ret_len as usize ] ) ;
@@ -291,8 +287,8 @@ pub(crate) fn emit(
291
287
292
288
let topic_len = topic_len as usize ;
293
289
294
- check_ptr ( instance, topic_ofs, topic_len) ?;
295
- check_arg ( instance, arg_len) ?;
290
+ check_ptr ( & instance, topic_ofs, topic_len) ?;
291
+ check_arg ( & instance, arg_len) ?;
296
292
297
293
let data = instance. with_arg_buf ( |buf| {
298
294
let arg_len = arg_len as usize ;
@@ -327,7 +323,7 @@ fn feed(mut fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
327
323
let env = fenv. data_mut ( ) ;
328
324
let instance = env. self_instance ( ) ;
329
325
330
- check_arg ( instance, arg_len) ?;
326
+ check_arg ( & instance, arg_len) ?;
331
327
332
328
let data = instance. with_arg_buf ( |buf| {
333
329
let arg_len = arg_len as usize ;
@@ -342,7 +338,7 @@ fn hdebug(mut fenv: Caller<Env>, msg_len: u32) -> WasmtimeResult<()> {
342
338
let env = fenv. data_mut ( ) ;
343
339
let instance = env. self_instance ( ) ;
344
340
345
- check_arg ( instance, msg_len) ?;
341
+ check_arg ( & instance, msg_len) ?;
346
342
347
343
Ok ( instance. with_arg_buf ( |buf| {
348
344
let slice = & buf[ ..msg_len as usize ] ;
@@ -365,7 +361,7 @@ fn limit(fenv: Caller<Env>) -> u64 {
365
361
366
362
fn spent ( fenv : Caller < Env > ) -> u64 {
367
363
let env = fenv. data ( ) ;
368
- let instance = env. self_instance ( ) ;
364
+ let mut instance = env. self_instance ( ) ;
369
365
370
366
let limit = env. limit ( ) ;
371
367
let remaining = instance. get_remaining_gas ( ) ;
@@ -377,7 +373,7 @@ fn panic(fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
377
373
let env = fenv. data ( ) ;
378
374
let instance = env. self_instance ( ) ;
379
375
380
- check_arg ( instance, arg_len) ?;
376
+ check_arg ( & instance, arg_len) ?;
381
377
382
378
Ok ( instance. with_arg_buf ( |buf| {
383
379
let slice = & buf[ ..arg_len as usize ] ;
@@ -392,7 +388,7 @@ fn panic(fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
392
388
}
393
389
394
390
fn owner ( fenv : Caller < Env > , mod_id_ofs : usize ) -> WasmtimeResult < i32 > {
395
- check_ptr ( fenv. data ( ) . self_instance ( ) , mod_id_ofs, CONTRACT_ID_BYTES ) ?;
391
+ check_ptr ( & fenv. data ( ) . self_instance ( ) , mod_id_ofs, CONTRACT_ID_BYTES ) ?;
396
392
397
393
let env = fenv. data ( ) ;
398
394
0 commit comments