@@ -860,6 +860,61 @@ public String toString() {
860
860
return toStringBuff .toString ();
861
861
}
862
862
863
+ public void setResult (Runtime runtime ) {
864
+ RuntimeException exception = runtime .getResult ().getException ();
865
+ if (Objects .isNull (exception ) && StringUtils
866
+ .isEmpty (runtime .getRuntimeError ()) && !runtime .getResult ().isRevert ()) {
867
+ this .setResultCode (contractResult .SUCCESS );
868
+ return ;
869
+ }
870
+ if (runtime .getResult ().isRevert ()) {
871
+ this .setResultCode (contractResult .REVERT );
872
+ return ;
873
+ }
874
+ if (exception instanceof IllegalOperationException ) {
875
+ this .setResultCode (contractResult .ILLEGAL_OPERATION );
876
+ return ;
877
+ }
878
+ if (exception instanceof OutOfEnergyException ) {
879
+ this .setResultCode (contractResult .OUT_OF_ENERGY );
880
+ return ;
881
+ }
882
+ if (exception instanceof BadJumpDestinationException ) {
883
+ this .setResultCode (contractResult .BAD_JUMP_DESTINATION );
884
+ return ;
885
+ }
886
+ if (exception instanceof OutOfTimeException ) {
887
+ this .setResultCode (contractResult .OUT_OF_TIME );
888
+ return ;
889
+ }
890
+ if (exception instanceof OutOfMemoryException ) {
891
+ this .setResultCode (contractResult .OUT_OF_MEMORY );
892
+ return ;
893
+ }
894
+ if (exception instanceof PrecompiledContractException ) {
895
+ this .setResultCode (contractResult .PRECOMPILED_CONTRACT );
896
+ return ;
897
+ }
898
+ if (exception instanceof StackTooSmallException ) {
899
+ this .setResultCode (contractResult .STACK_TOO_SMALL );
900
+ return ;
901
+ }
902
+ if (exception instanceof StackTooLargeException ) {
903
+ this .setResultCode (contractResult .STACK_TOO_LARGE );
904
+ return ;
905
+ }
906
+ if (exception instanceof JVMStackOverFlowException ) {
907
+ this .setResultCode (contractResult .JVM_STACK_OVER_FLOW );
908
+ return ;
909
+ }
910
+ if (exception instanceof Program .TransferException ) {
911
+ this .setResultCode (contractResult .TRANSFER_FAILED );
912
+ return ;
913
+ }
914
+ this .setResultCode (contractResult .UNKNOWN );
915
+ return ;
916
+ }
917
+
863
918
public void setResultCode (contractResult code ) {
864
919
Result ret = Result .newBuilder ().setContractRet (code ).build ();
865
920
if (this .transaction .getRetCount () > 0 ) {
0 commit comments