From 1e28790e99642d959af2e97bc40a4392916e88b7 Mon Sep 17 00:00:00 2001 From: nickysn Date: Thu, 28 Mar 2013 15:44:50 +0000 Subject: [PATCH] * fpc_PushExceptAddr's parameter Ft changed from LongInt to SmallInt on 16-bit CPUs for better efficiency git-svn-id: branches/i8086@24036 - --- compiler/ncgutil.pas | 4 +++- rtl/inc/compproc.inc | 2 +- rtl/inc/except.inc | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index 4609ee568b..3115d34d2c 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -422,8 +422,10 @@ implementation procedure new_exception(list:TAsmList;const t:texceptiontemps;exceptlabel:tasmlabel); const {$ifdef cpu16bitalu} + pushexceptaddr_frametype_cgsize = OS_S16; setjmp_result_cgsize = OS_S16; {$else cpu16bitalu} + pushexceptaddr_frametype_cgsize = OS_S32; setjmp_result_cgsize = OS_S32; {$endif cpu16bitalu} var @@ -440,7 +442,7 @@ implementation cg.a_loadaddr_ref_cgpara(list,t.envbuf,paraloc3); cg.a_loadaddr_ref_cgpara(list,t.jmpbuf,paraloc2); { push type of exceptionframe } - cg.a_load_const_cgpara(list,OS_S32,1,paraloc1); + cg.a_load_const_cgpara(list,pushexceptaddr_frametype_cgsize,1,paraloc1); paramanager.freecgpara(list,paraloc3); paramanager.freecgpara(list,paraloc2); paramanager.freecgpara(list,paraloc1); diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc index 4d3eef8e23..5c7a257842 100644 --- a/rtl/inc/compproc.inc +++ b/rtl/inc/compproc.inc @@ -559,7 +559,7 @@ procedure fpc_dispatch_by_id(Result: Pointer; const Dispatch: pointer;DispDesc: {$ifdef FPC_HAS_FEATURE_EXCEPTIONS} -Function fpc_PushExceptAddr (Ft: Longint;_buf,_newaddr : pointer): PJmp_buf ; compilerproc; +Function fpc_PushExceptAddr (Ft: {$ifdef CPU16}SmallInt{$else}Longint{$endif};_buf,_newaddr : pointer): PJmp_buf ; compilerproc; Function fpc_Raiseexception (Obj : TObject; AnAddr,AFrame : Pointer) : TObject; compilerproc; Procedure fpc_PopAddrStack; compilerproc; function fpc_PopObjectStack : TObject; compilerproc; diff --git a/rtl/inc/except.inc b/rtl/inc/except.inc index db17794ddc..04e02ff0ec 100644 --- a/rtl/inc/except.inc +++ b/rtl/inc/except.inc @@ -85,7 +85,7 @@ begin end; -Function fpc_PushExceptAddr (Ft: Longint;_buf,_newaddr : pointer): PJmp_buf ; +Function fpc_PushExceptAddr (Ft: {$ifdef CPU16}SmallInt{$else}Longint{$endif};_buf,_newaddr : pointer): PJmp_buf ; [Public, Alias : 'FPC_PUSHEXCEPTADDR'];compilerproc; var _ExceptAddrstack : ^PExceptAddr;