@@ -1046,10 +1046,6 @@ where
1046
1046
} else {
1047
1047
Scheduler :: new ( tx_data, version, self . syscalls_generator . clone ( ) )
1048
1048
} ;
1049
- let map_vm_internal_error = |error : VMInternalError | match error {
1050
- VMInternalError :: CyclesExceeded => ScriptError :: ExceededMaximumCycles ( max_cycles) ,
1051
- _ => ScriptError :: VMInternalError ( error) ,
1052
- } ;
1053
1049
let previous_cycles = scheduler. consumed_cycles ( ) ;
1054
1050
let res = scheduler. run ( RunMode :: LimitCycles ( max_cycles) ) ;
1055
1051
match res {
@@ -1068,10 +1064,12 @@ where
1068
1064
}
1069
1065
Err ( error) => match error {
1070
1066
VMInternalError :: CyclesExceeded | VMInternalError :: Pause => {
1071
- let snapshot = scheduler. suspend ( ) . map_err ( map_vm_internal_error) ?;
1067
+ let snapshot = scheduler
1068
+ . suspend ( )
1069
+ . map_err ( |err| self . map_vm_internal_error ( err, max_cycles) ) ?;
1072
1070
Ok ( ChunkState :: suspended ( snapshot) )
1073
1071
}
1074
- _ => Err ( map_vm_internal_error ( error) ) ,
1072
+ _ => Err ( self . map_vm_internal_error ( error, max_cycles ) ) ,
1075
1073
} ,
1076
1074
}
1077
1075
}
@@ -1149,13 +1147,9 @@ where
1149
1147
max_cycles : Cycle ,
1150
1148
) -> Result < ( i8 , Cycle ) , ScriptError > {
1151
1149
let mut scheduler = self . create_scheduler ( script_group) ?;
1152
- let map_vm_internal_error = |error : VMInternalError | match error {
1153
- VMInternalError :: CyclesExceeded => ScriptError :: ExceededMaximumCycles ( max_cycles) ,
1154
- _ => ScriptError :: VMInternalError ( error) ,
1155
- } ;
1156
1150
scheduler
1157
1151
. run ( RunMode :: LimitCycles ( max_cycles) )
1158
- . map_err ( map_vm_internal_error)
1152
+ . map_err ( |err| self . map_vm_internal_error ( err , max_cycles ) )
1159
1153
}
1160
1154
1161
1155
fn run ( & self , script_group : & ScriptGroup , max_cycles : Cycle ) -> Result < Cycle , ScriptError > {
@@ -1168,6 +1162,14 @@ where
1168
1162
}
1169
1163
}
1170
1164
1165
+ fn map_vm_internal_error ( & self , error : VMInternalError , max_cycles : Cycle ) -> ScriptError {
1166
+ match error {
1167
+ VMInternalError :: CyclesExceeded => ScriptError :: ExceededMaximumCycles ( max_cycles) ,
1168
+ VMInternalError :: External ( reason) if reason. eq ( "stopped" ) => ScriptError :: Interrupts ,
1169
+ _ => ScriptError :: VMInternalError ( error) ,
1170
+ }
1171
+ }
1172
+
1171
1173
#[ cfg( not( target_family = "wasm" ) ) ]
1172
1174
async fn chunk_run_with_signal (
1173
1175
& self ,
@@ -1184,12 +1186,6 @@ where
1184
1186
} ;
1185
1187
let version = self . select_version ( & script_group. script ) ?;
1186
1188
let mut scheduler = Scheduler :: new ( tx_data, version, self . syscalls_generator . clone ( ) ) ;
1187
- let map_vm_internal_error = |error : VMInternalError | match error {
1188
- VMInternalError :: CyclesExceeded => ScriptError :: ExceededMaximumCycles ( max_cycles) ,
1189
- VMInternalError :: External ( reason) if reason. eq ( "stopped" ) => ScriptError :: Interrupts ,
1190
- _ => ScriptError :: VMInternalError ( error) ,
1191
- } ;
1192
-
1193
1189
let mut pause = VMPause :: new ( ) ;
1194
1190
let child_pause = pause. clone ( ) ;
1195
1191
let ( finish_tx, mut finish_rx) = oneshot:: channel :: < Result < ( i8 , Cycle ) , ckb_vm:: Error > > ( ) ;
@@ -1264,7 +1260,7 @@ where
1264
1260
exit_code
1265
1261
) ) } ,
1266
1262
Err ( err) => {
1267
- return Err ( map_vm_internal_error( err) ) ;
1263
+ return Err ( self . map_vm_internal_error( err, max_cycles ) ) ;
1268
1264
}
1269
1265
}
1270
1266
0 commit comments