@@ -2,44 +2,30 @@ use std::collections::hash_map::Entry;
22use std:: collections:: HashMap ;
33use std:: sync:: { Arc , Mutex } ;
44
5- use num_traits:: FromPrimitive ;
65use anyhow:: anyhow;
76use cid:: Cid ;
7+ use num_traits:: FromPrimitive ;
88
9- use fvm2:: call_manager:: {
10- DefaultCallManager as DefaultCallManager2 ,
11- backtrace:: Cause as Cause2 ,
12- } ;
9+ use fvm2:: call_manager:: { backtrace:: Cause as Cause2 , DefaultCallManager as DefaultCallManager2 } ;
1310use fvm3:: call_manager:: {
11+ backtrace:: Backtrace , backtrace:: Cause , backtrace:: Frame ,
1412 DefaultCallManager as DefaultCallManager3 ,
15- backtrace:: Cause ,
16- backtrace:: Backtrace ,
17- backtrace:: Frame ,
1813} ;
1914
20- use fvm2:: trace:: {
21- ExecutionEvent as ExecutionEvent2 ,
22- } ;
23- use fvm3:: trace:: {
24- ExecutionEvent ,
25- } ;
15+ use fvm2:: trace:: ExecutionEvent as ExecutionEvent2 ;
16+ use fvm3:: trace:: ExecutionEvent ;
2617
27- use fvm3:: gas:: {
28- Gas ,
29- GasCharge ,
30- } ;
31-
32- use fvm3:: kernel:: {
33- SyscallError
34- } ;
18+ use fvm3:: gas:: { Gas , GasCharge } ;
3519
20+ use fvm3:: kernel:: SyscallError ;
3621
3722use fvm2:: executor:: {
38- ApplyKind as ApplyKind2 , ApplyFailure as ApplyFailure2 , DefaultExecutor as DefaultExecutor2 ,
23+ ApplyFailure as ApplyFailure2 , ApplyKind as ApplyKind2 , DefaultExecutor as DefaultExecutor2 ,
3924 ThreadedExecutor as ThreadedExecutor2 ,
4025} ;
4126use fvm3:: executor:: {
42- ApplyKind , ApplyRet , ApplyFailure , DefaultExecutor as DefaultExecutor3 , ThreadedExecutor as ThreadedExecutor3 ,
27+ ApplyFailure , ApplyKind , ApplyRet , DefaultExecutor as DefaultExecutor3 ,
28+ ThreadedExecutor as ThreadedExecutor3 ,
4329} ;
4430
4531use fvm2:: machine:: {
@@ -57,24 +43,17 @@ use fvm2::gas::PriceList as PriceList2;
5743use fvm3:: gas:: PriceList as PriceList3 ;
5844
5945use fvm3_shared:: {
60- message:: Message ,
61- receipt:: Receipt ,
62- version:: NetworkVersion ,
63- error:: ExitCode ,
64- error:: ErrorNumber ,
65- econ:: TokenAmount ,
66- address:: Address ,
46+ address:: Address , econ:: TokenAmount , error:: ErrorNumber , error:: ExitCode , message:: Message ,
47+ receipt:: Receipt , version:: NetworkVersion ,
6748} ;
6849
6950use fvm2_shared:: {
70- econ:: TokenAmount as TokenAmount2 , message:: Message as Message2 ,
51+ address :: Address as Address2 , econ:: TokenAmount as TokenAmount2 , message:: Message as Message2 ,
7152 version:: NetworkVersion as NetworkVersion2 ,
72- address:: Address as Address2 ,
7353} ;
7454
75-
76- use fvm3_ipld_encoding:: RawBytes ;
7755use fvm2_ipld_encoding:: RawBytes as RawBytes2 ;
56+ use fvm3_ipld_encoding:: RawBytes ;
7857
7958use super :: blockstore:: { CgoBlockstore , OverlayBlockstore } ;
8059use super :: externs:: CgoExterns ;
@@ -152,65 +131,98 @@ impl CgoExecutor for CgoExecutor2 {
152131 raw_length,
153132 ) ;
154133 match res {
155- Ok ( ret) => Ok (
156- ApplyRet {
157- msg_receipt : Receipt {
158- exit_code : ExitCode :: new ( ret. msg_receipt . exit_code . value ( ) ) ,
159- return_data : RawBytes :: from ( ret. msg_receipt . return_data . to_vec ( ) ) ,
160- gas_used : ret. msg_receipt . gas_used ,
161- } ,
162- penalty : TokenAmount :: from_atto ( ret. penalty . atto ( ) . clone ( ) ) ,
163- miner_tip : TokenAmount :: from_atto ( ret. miner_tip . atto ( ) . clone ( ) ) ,
164- base_fee_burn : TokenAmount :: from_atto ( ret. base_fee_burn . atto ( ) . clone ( ) ) ,
165- over_estimation_burn : TokenAmount :: from_atto ( ret. over_estimation_burn . atto ( ) . clone ( ) ) ,
166- refund : TokenAmount :: from_atto ( ret. refund . atto ( ) . clone ( ) ) ,
167- gas_refund : ret. gas_refund ,
168- gas_burned : ret. gas_burned ,
169- failure_info : ret. failure_info . map ( |failure| {
170- match failure {
171- ApplyFailure2 :: MessageBacktrace ( bt) => ApplyFailure :: MessageBacktrace (
172- Backtrace {
173- frames : bt. frames . iter ( ) . map ( |f| Frame {
174- source : f. source ,
175- method : f. method ,
176- code : ExitCode :: new ( f. code . value ( ) ) ,
177- message : f. message . clone ( ) ,
178- } ) . collect ( ) ,
179- cause : bt. cause . map ( |cause| {
180- match cause {
181- Cause2 :: Syscall { module, function, error, message } => Cause :: Syscall { module, function, error : ErrorNumber :: from_u32 ( error as u32 ) . unwrap ( ) , message } ,
182- Cause2 :: Fatal { error_msg, backtrace } => Cause :: Fatal { error_msg, backtrace } ,
183- }
184- } ) ,
134+ Ok ( ret) => Ok ( ApplyRet {
135+ msg_receipt : Receipt {
136+ exit_code : ExitCode :: new ( ret. msg_receipt . exit_code . value ( ) ) ,
137+ return_data : RawBytes :: from ( ret. msg_receipt . return_data . to_vec ( ) ) ,
138+ gas_used : ret. msg_receipt . gas_used ,
139+ } ,
140+ penalty : TokenAmount :: from_atto ( ret. penalty . atto ( ) . clone ( ) ) ,
141+ miner_tip : TokenAmount :: from_atto ( ret. miner_tip . atto ( ) . clone ( ) ) ,
142+ base_fee_burn : TokenAmount :: from_atto ( ret. base_fee_burn . atto ( ) . clone ( ) ) ,
143+ over_estimation_burn : TokenAmount :: from_atto (
144+ ret. over_estimation_burn . atto ( ) . clone ( ) ,
145+ ) ,
146+ refund : TokenAmount :: from_atto ( ret. refund . atto ( ) . clone ( ) ) ,
147+ gas_refund : ret. gas_refund ,
148+ gas_burned : ret. gas_burned ,
149+ failure_info : ret. failure_info . map ( |failure| match failure {
150+ ApplyFailure2 :: MessageBacktrace ( bt) => {
151+ ApplyFailure :: MessageBacktrace ( Backtrace {
152+ frames : bt
153+ . frames
154+ . iter ( )
155+ . map ( |f| Frame {
156+ source : f. source ,
157+ method : f. method ,
158+ code : ExitCode :: new ( f. code . value ( ) ) ,
159+ message : f. message . clone ( ) ,
160+ } )
161+ . collect ( ) ,
162+ cause : bt. cause . map ( |cause| match cause {
163+ Cause2 :: Syscall {
164+ module,
165+ function,
166+ error,
167+ message,
168+ } => Cause :: Syscall {
169+ module,
170+ function,
171+ error : ErrorNumber :: from_u32 ( error as u32 ) . unwrap ( ) ,
172+ message,
185173 } ,
186- ) ,
187- ApplyFailure2 :: PreValidation ( s) => ApplyFailure :: PreValidation ( s) ,
188- }
189- } ) ,
190- exec_trace : ret. exec_trace . iter ( ) . filter_map ( |tr| match tr {
191- ExecutionEvent2 :: GasCharge ( charge) => Some (
192- ExecutionEvent :: GasCharge ( GasCharge {
174+ Cause2 :: Fatal {
175+ error_msg,
176+ backtrace,
177+ } => Cause :: Fatal {
178+ error_msg,
179+ backtrace,
180+ } ,
181+ } ) ,
182+ } )
183+ }
184+ ApplyFailure2 :: PreValidation ( s) => ApplyFailure :: PreValidation ( s) ,
185+ } ) ,
186+ exec_trace : ret
187+ . exec_trace
188+ . iter ( )
189+ . filter_map ( |tr| match tr {
190+ ExecutionEvent2 :: GasCharge ( charge) => {
191+ Some ( ExecutionEvent :: GasCharge ( GasCharge {
193192 name : charge. name . clone ( ) ,
194- compute_gas : Gas :: from_milligas ( charge. compute_gas . as_milligas ( ) ) ,
195- storage_gas : Gas :: from_milligas ( charge. storage_gas . as_milligas ( ) ) ,
196- } ) ) ,
197- ExecutionEvent2 :: Call { from, to, method, params, value} => Some (
198- ExecutionEvent :: Call {
193+ compute_gas : Gas :: from_milligas ( charge. compute_gas . as_milligas ( ) ) ,
194+ storage_gas : Gas :: from_milligas ( charge. storage_gas . as_milligas ( ) ) ,
195+ } ) )
196+ }
197+ ExecutionEvent2 :: Call {
198+ from,
199+ to,
200+ method,
201+ params,
202+ value,
203+ } => Some ( ExecutionEvent :: Call {
199204 from : * from,
200205 to : Address :: from_bytes ( & to. to_bytes ( ) ) . unwrap ( ) ,
201206 method : * method,
202207 params : RawBytes :: from ( params. to_vec ( ) ) ,
203208 value : TokenAmount :: from_atto ( value. atto ( ) . clone ( ) ) ,
204- } ) ,
205- ExecutionEvent2 :: CallReturn ( ret) => Some (
206- ExecutionEvent :: CallReturn ( RawBytes :: from ( ret. to_vec ( ) ) ) ) ,
207- ExecutionEvent2 :: CallAbort ( ec) => Some (
208- ExecutionEvent :: CallAbort ( ExitCode :: new ( ec. value ( ) ) ) ) ,
209- ExecutionEvent2 :: CallError ( err) => Some (
210- ExecutionEvent :: CallError ( SyscallError ( err. 0 . clone ( ) , ErrorNumber :: from_u32 ( err. 1 as u32 ) . unwrap ( ) ) ) ) ,
209+ } ) ,
210+ ExecutionEvent2 :: CallReturn ( ret) => {
211+ Some ( ExecutionEvent :: CallReturn ( RawBytes :: from ( ret. to_vec ( ) ) ) )
212+ }
213+ ExecutionEvent2 :: CallAbort ( ec) => {
214+ Some ( ExecutionEvent :: CallAbort ( ExitCode :: new ( ec. value ( ) ) ) )
215+ }
216+ ExecutionEvent2 :: CallError ( err) => {
217+ Some ( ExecutionEvent :: CallError ( SyscallError (
218+ err. 0 . clone ( ) ,
219+ ErrorNumber :: from_u32 ( err. 1 as u32 ) . unwrap ( ) ,
220+ ) ) )
221+ }
211222 _ => None ,
212- } ) . collect ( ) ,
213- } ) ,
223+ } )
224+ . collect ( ) ,
225+ } ) ,
214226 Err ( x) => Err ( x) ,
215227 }
216228 }
0 commit comments