diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-07 09:42:10 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-07 09:42:10 +0000 |
commit | e1c20931c7c1473851ea4b05e4d1aec6a74ec5aa (patch) | |
tree | 638e14e666a1b32a2339a40ce7405fbcc3e2c6e4 /gcc/ada/exp_disp.ads | |
parent | 0ac6f3b3f98435ab28c9cdc020c75d7134ea8ca7 (diff) | |
download | gcc-e1c20931c7c1473851ea4b05e4d1aec6a74ec5aa.tar.gz |
2005-07-07 Javier Miranda <miranda@adacore.com>
* exp_ch3.adb (Build_Record_Init_Proc/Freeze_Record_Type):
Reimplementation of the support for abstract interface types in order
to leave the code more clear and easy to maintain.
* exp_ch6.adb (Freeze_Subprogram): Reimplementation of the support for
abstract interface types in order to leave the code clearer and easier
to maintain.
* exp_disp.ads, exp_disp.adb (Fill_DT_Entry): Part of its functionality
is now implemented by the new subprogram Fill_Secondary_DT_Entry.
(Fill_Secondary_DT_Entry): Generate the code necessary to fill the
appropriate entry of the secondary dispatch table.
(Make_DT): Add code to inherit the secondary dispatch tables of
the ancestors.
* exp_util.adb (Find_Interface_Tag/Find_Interface_ADT): Instead of
implementing both functionalities by means of a common routine, each
routine has its own code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101694 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_disp.ads')
-rw-r--r-- | gcc/ada/exp_disp.ads | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ada/exp_disp.ads b/gcc/ada/exp_disp.ads index 0da765b904d..10900d04103 100644 --- a/gcc/ada/exp_disp.ads +++ b/gcc/ada/exp_disp.ads @@ -55,12 +55,20 @@ package Exp_Disp is TSD_Prologue_Size); function Fill_DT_Entry - (Loc : Source_Ptr; - Prim : Entity_Id; - Thunk_Id : Entity_Id := Empty) return Node_Id; + (Loc : Source_Ptr; + Prim : Entity_Id) return Node_Id; -- Generate the code necessary to fill the appropriate entry of the -- dispatch table of Prim's controlling type with Prim's address. + function Fill_Secondary_DT_Entry + (Loc : Source_Ptr; + Prim : Entity_Id; + Thunk_Id : Entity_Id; + Iface_DT_Ptr : Entity_Id) return Node_Id; + -- (Ada 2005): Generate the code necessary to fill the appropriate entry of + -- the secondary dispatch table of Prim's controlling type with Thunk_Id's + -- address. + procedure Make_Abstract_Interface_DT (AI_Tag : Entity_Id; Acc_Disp_Tables : in out Elist_Id; @@ -102,9 +110,10 @@ package Exp_Disp is -- secondary dispatch table function Expand_Interface_Thunk - (N : Node_Id; - Thunk_Id : Entity_Id; - Iface_Tag : Entity_Id) return Node_Id; + (N : Node_Id; + Thunk_Alias : Node_Id; + Thunk_Id : Entity_Id; + Iface_Tag : Entity_Id) return Node_Id; -- Ada 2005 (AI-251): When a tagged type implements abstract interfaces we -- generate additional subprograms (thunks) to have a layout compatible -- with the C++ ABI. The thunk modifies the value of the first actual of |