|
@@ -542,7 +542,7 @@ implementation
|
|
|
{ we must also destroy the address frame which guards
|
|
|
the exception object }
|
|
|
cexceptionstatehandler.popaddrstack(list);
|
|
|
- hlcg.g_exception_reason_discard(list,setjmpresulttype,excepttemps.reasonbuf);
|
|
|
+ hlcg.g_exception_reason_discard(list,exceptionreasontype,excepttemps.reasonbuf);
|
|
|
if frametype=ft_except then
|
|
|
begin
|
|
|
cexceptionstatehandler.cleanupobjectstack(list);
|
|
@@ -875,8 +875,8 @@ implementation
|
|
|
procedure tcgtryfinallynode.emit_jump_out_of_try_finally_frame(list: TasmList; const reason: byte; const finallycodelabel: tasmlabel; var excepttemps: tcgexceptionstatehandler.texceptiontemps; framelabel: tasmlabel);
|
|
|
begin
|
|
|
hlcg.a_label(list,framelabel);
|
|
|
- hlcg.g_exception_reason_discard(list,setjmpresulttype,excepttemps.reasonbuf);
|
|
|
- hlcg.g_exception_reason_save_const(list,setjmpresulttype,reason,excepttemps.reasonbuf);
|
|
|
+ hlcg.g_exception_reason_discard(list,exceptionreasontype,excepttemps.reasonbuf);
|
|
|
+ hlcg.g_exception_reason_save_const(list,exceptionreasontype,reason,excepttemps.reasonbuf);
|
|
|
hlcg.a_jmp_always(list,finallycodelabel);
|
|
|
end;
|
|
|
|
|
@@ -936,13 +936,13 @@ implementation
|
|
|
procedure handle_breakcontinueexit(const finallycode: tasmlabel; doreraise: boolean);
|
|
|
begin
|
|
|
{ no exception happened, but maybe break/continue/exit }
|
|
|
- hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,setjmpresulttype,OC_EQ,0,reasonreg,endfinallylabel);
|
|
|
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,exceptionreasontype,OC_EQ,0,reasonreg,endfinallylabel);
|
|
|
if fc_exit in finallyexceptionstate.newflowcontrol then
|
|
|
- hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,setjmpresulttype,OC_EQ,2,reasonreg,oldCurrExitLabel);
|
|
|
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,exceptionreasontype,OC_EQ,2,reasonreg,oldCurrExitLabel);
|
|
|
if fc_break in finallyexceptionstate.newflowcontrol then
|
|
|
- hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,setjmpresulttype,OC_EQ,3,reasonreg,oldBreakLabel);
|
|
|
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,exceptionreasontype,OC_EQ,3,reasonreg,oldBreakLabel);
|
|
|
if fc_continue in finallyexceptionstate.newflowcontrol then
|
|
|
- hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,setjmpresulttype,OC_EQ,4,reasonreg,oldContinueLabel);
|
|
|
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,exceptionreasontype,OC_EQ,4,reasonreg,oldContinueLabel);
|
|
|
if doreraise then
|
|
|
cexceptionstatehandler.handle_reraise(current_asmdata.CurrAsmList,excepttemps,finallyexceptionstate,tek_normalfinally)
|
|
|
else
|
|
@@ -1019,8 +1019,8 @@ implementation
|
|
|
exit;
|
|
|
if not implicitframe then
|
|
|
current_asmdata.CurrAsmList.concat(tai_marker.create(mark_NoLineInfoStart));
|
|
|
- reasonreg:=hlcg.getintregister(current_asmdata.CurrAsmList,setjmpresulttype);
|
|
|
- hlcg.g_exception_reason_load(current_asmdata.CurrAsmList,setjmpresulttype,setjmpresulttype,excepttemps.reasonbuf,reasonreg);
|
|
|
+ reasonreg:=hlcg.getintregister(current_asmdata.CurrAsmList,exceptionreasontype);
|
|
|
+ hlcg.g_exception_reason_load(current_asmdata.CurrAsmList,exceptionreasontype,exceptionreasontype,excepttemps.reasonbuf,reasonreg);
|
|
|
handle_breakcontinueexit(finallyNoExceptionLabel,false);
|
|
|
|
|
|
current_asmdata.CurrAsmList.concatList(tmplist);
|
|
@@ -1058,11 +1058,11 @@ implementation
|
|
|
if not assigned(third) then
|
|
|
begin
|
|
|
{ the value should now be in the exception handler }
|
|
|
- reasonreg:=hlcg.getintregister(current_asmdata.CurrAsmList,setjmpresulttype);
|
|
|
- hlcg.g_exception_reason_load(current_asmdata.CurrAsmList,setjmpresulttype,setjmpresulttype,excepttemps.reasonbuf,reasonreg);
|
|
|
+ reasonreg:=hlcg.getintregister(current_asmdata.CurrAsmList,exceptionreasontype);
|
|
|
+ hlcg.g_exception_reason_load(current_asmdata.CurrAsmList,exceptionreasontype,exceptionreasontype,excepttemps.reasonbuf,reasonreg);
|
|
|
if implicitframe then
|
|
|
begin
|
|
|
- hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,setjmpresulttype,OC_EQ,0,reasonreg,endfinallylabel);
|
|
|
+ hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,exceptionreasontype,OC_EQ,0,reasonreg,endfinallylabel);
|
|
|
{ finally code only needed to be executed on exception (-> in
|
|
|
if-branch -> fc_inflowcontrol) }
|
|
|
if current_procinfo.procdef.generate_safecall_wrapper then
|