Skip to content

Commit bb492c8

Browse files
authored
Merge pull request #4762 from eval-exec/exec/extract-map_vm_internal_error
Extract `TransactionScriptsVerifier::map_vm_internal_error`
2 parents 62af260 + c02a7ce commit bb492c8

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

script/src/verify.rs

+14-18
Original file line numberDiff line numberDiff line change
@@ -1046,10 +1046,6 @@ where
10461046
} else {
10471047
Scheduler::new(tx_data, version, self.syscalls_generator.clone())
10481048
};
1049-
let map_vm_internal_error = |error: VMInternalError| match error {
1050-
VMInternalError::CyclesExceeded => ScriptError::ExceededMaximumCycles(max_cycles),
1051-
_ => ScriptError::VMInternalError(error),
1052-
};
10531049
let previous_cycles = scheduler.consumed_cycles();
10541050
let res = scheduler.run(RunMode::LimitCycles(max_cycles));
10551051
match res {
@@ -1068,10 +1064,12 @@ where
10681064
}
10691065
Err(error) => match error {
10701066
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))?;
10721070
Ok(ChunkState::suspended(snapshot))
10731071
}
1074-
_ => Err(map_vm_internal_error(error)),
1072+
_ => Err(self.map_vm_internal_error(error, max_cycles)),
10751073
},
10761074
}
10771075
}
@@ -1149,13 +1147,9 @@ where
11491147
max_cycles: Cycle,
11501148
) -> Result<(i8, Cycle), ScriptError> {
11511149
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-
};
11561150
scheduler
11571151
.run(RunMode::LimitCycles(max_cycles))
1158-
.map_err(map_vm_internal_error)
1152+
.map_err(|err| self.map_vm_internal_error(err, max_cycles))
11591153
}
11601154

11611155
fn run(&self, script_group: &ScriptGroup, max_cycles: Cycle) -> Result<Cycle, ScriptError> {
@@ -1168,6 +1162,14 @@ where
11681162
}
11691163
}
11701164

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+
11711173
#[cfg(not(target_family = "wasm"))]
11721174
async fn chunk_run_with_signal(
11731175
&self,
@@ -1184,12 +1186,6 @@ where
11841186
};
11851187
let version = self.select_version(&script_group.script)?;
11861188
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-
11931189
let mut pause = VMPause::new();
11941190
let child_pause = pause.clone();
11951191
let (finish_tx, mut finish_rx) = oneshot::channel::<Result<(i8, Cycle), ckb_vm::Error>>();
@@ -1264,7 +1260,7 @@ where
12641260
exit_code
12651261
))},
12661262
Err(err) => {
1267-
return Err(map_vm_internal_error(err));
1263+
return Err(self.map_vm_internal_error(err, max_cycles));
12681264
}
12691265
}
12701266

0 commit comments

Comments
 (0)