@@ -138,12 +138,12 @@ pub(crate) fn hq(
138
138
) -> WasmtimeResult < u32 > {
139
139
let env = fenv. data_mut ( ) ;
140
140
141
- let mut instance = env. self_instance ( ) ;
141
+ let 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 mut instance = env. self_instance ( ) ;
166
+ let 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 mut instance = env. self_instance ( ) ;
197
+ let 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,8 +222,12 @@ pub(crate) fn c(
222
222
& memory[ mod_id_ofs..] [ ..std:: mem:: size_of :: < ContractId > ( ) ] ,
223
223
) ;
224
224
225
- let mut callee = env. instance ( mod_id) ?;
226
- env. push_callstack ( mod_id, callee_limit, callee. mem_len ( ) ) ;
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" ) ;
227
231
228
232
callee. snap ( ) . map_err ( |err| Error :: MemorySnapshotFailure {
229
233
reason : None ,
@@ -238,7 +242,7 @@ pub(crate) fn c(
238
242
let ret_len = callee
239
243
. call ( name, arg. len ( ) as u32 , callee_limit)
240
244
. map_err ( Error :: normalize) ?;
241
- check_arg ( & callee, ret_len as u32 ) ?;
245
+ check_arg ( callee, ret_len as u32 ) ?;
242
246
243
247
// copy back result
244
248
callee. read_argument ( & mut memory[ argbuf_ofs..] [ ..ret_len as usize ] ) ;
@@ -287,8 +291,8 @@ pub(crate) fn emit(
287
291
288
292
let topic_len = topic_len as usize ;
289
293
290
- check_ptr ( & instance, topic_ofs, topic_len) ?;
291
- check_arg ( & instance, arg_len) ?;
294
+ check_ptr ( instance, topic_ofs, topic_len) ?;
295
+ check_arg ( instance, arg_len) ?;
292
296
293
297
let data = instance. with_arg_buf ( |buf| {
294
298
let arg_len = arg_len as usize ;
@@ -323,7 +327,7 @@ fn feed(mut fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
323
327
let env = fenv. data_mut ( ) ;
324
328
let instance = env. self_instance ( ) ;
325
329
326
- check_arg ( & instance, arg_len) ?;
330
+ check_arg ( instance, arg_len) ?;
327
331
328
332
let data = instance. with_arg_buf ( |buf| {
329
333
let arg_len = arg_len as usize ;
@@ -338,7 +342,7 @@ fn hdebug(mut fenv: Caller<Env>, msg_len: u32) -> WasmtimeResult<()> {
338
342
let env = fenv. data_mut ( ) ;
339
343
let instance = env. self_instance ( ) ;
340
344
341
- check_arg ( & instance, msg_len) ?;
345
+ check_arg ( instance, msg_len) ?;
342
346
343
347
Ok ( instance. with_arg_buf ( |buf| {
344
348
let slice = & buf[ ..msg_len as usize ] ;
@@ -361,7 +365,7 @@ fn limit(fenv: Caller<Env>) -> u64 {
361
365
362
366
fn spent ( fenv : Caller < Env > ) -> u64 {
363
367
let env = fenv. data ( ) ;
364
- let mut instance = env. self_instance ( ) ;
368
+ let instance = env. self_instance ( ) ;
365
369
366
370
let limit = env. limit ( ) ;
367
371
let remaining = instance. get_remaining_gas ( ) ;
@@ -373,7 +377,7 @@ fn panic(fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
373
377
let env = fenv. data ( ) ;
374
378
let instance = env. self_instance ( ) ;
375
379
376
- check_arg ( & instance, arg_len) ?;
380
+ check_arg ( instance, arg_len) ?;
377
381
378
382
Ok ( instance. with_arg_buf ( |buf| {
379
383
let slice = & buf[ ..arg_len as usize ] ;
@@ -388,7 +392,7 @@ fn panic(fenv: Caller<Env>, arg_len: u32) -> WasmtimeResult<()> {
388
392
}
389
393
390
394
fn owner ( fenv : Caller < Env > , mod_id_ofs : usize ) -> WasmtimeResult < i32 > {
391
- check_ptr ( & fenv. data ( ) . self_instance ( ) , mod_id_ofs, CONTRACT_ID_BYTES ) ?;
395
+ check_ptr ( fenv. data ( ) . self_instance ( ) , mod_id_ofs, CONTRACT_ID_BYTES ) ?;
392
396
393
397
let env = fenv. data ( ) ;
394
398
0 commit comments