diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:39:06 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:39:06 +0000 |
commit | 68f959497b06cdc05045ce637db6bfa206d5931d (patch) | |
tree | 753775bd3fb216e28cdfcb6063a015d8fecbd34a /gcc/ada/exp_disp.ads | |
parent | 357dd91a6c639dd87c1a82918d6709a674b27e96 (diff) | |
download | gcc-68f959497b06cdc05045ce637db6bfa206d5931d.tar.gz |
2006-02-13 Javier Miranda <miranda@adacore.com>
* exp_disp.ads, exp_disp.adb (Expand_Dispatching_Call): If the
controlling argument of the dispatching call is an abstract interface
class-wide type then we use it directly.
Check No_Dispatching_Calls restriction.
(Default_Prim_Op_Position): Remove the code that looks for the last
entity in the list of aliased subprograms. This code was wrong in
case of renamings.
(Fill_DT_Entry): Add assertion to avoid the use of this subprogram
when the source is compiled with the No_Dispatching_Calls restriction.
(Init_Predefined_Interface_Primitives): No need to inherit primitives
if we are compiling with restriction No_Dispatching_Calls.
(Make_Disp_XXX): Addition of assertion to avoid the use of all these
subprograms if we are compiling under No_Dispatching_Calls restriction.
(Make_DT): Generate a dispatch table with a single dummy entry if
we are compiling with the No_Dispatching_Calls restriction. In
addition, in this case we don't generate code that calls to the
following run-time subprograms: Set_Type_Kind, Inherit_DT.
(Make_Select_Specific_Data_Table): Add assertion to avoid the use
of this subprogram if compiling with the No_Dispatching_Calls
restriction.
(Expand_Type_Conversion): Instead of using the actual parameter,
the argument passed as parameter to the conversion function was
erroneously referenced by the expander.
(Ada_Actions): Addition of Get_Predefined_Prim_Op_Address,
Set_Predefined_Primitive_Op_Address and Set_Signature.
(Expand_Dispatching_Call): Generate call to
Get_Predefined_Prim_Op_Address for predefined primitives.
(Fill_DT_Entry): Generate call to Set_Predefined_Prim_Op_Address for
predefined primitives.
(Make_DT, Make_Secondary_DT): If the tagged type has no user defined
primitives we reserve one dummy entry to ensure that the tag does not
point to some memory that is associated with some other object. In
addition, remove all the old code that generated the assignments
associated with the signature of the dispatch table and replace them
by a call to the new subprogram Set_Signature.
(Set_All_DT_Position): Change the algorithm because now we have a
separate dispatch table associated with predefined primitive operations.
(Expand_Interface_Conversion): In case of non-static offset_to_top
add explicit dereference to get access to the object after the call
to displace the pointer to the object.
(Expand_Interface_Thunk): Modify the generation of the actual used
in the calls to the run-time function Offset_To_Top to fulfil its
new interface.
(Make_DT): Add the new actuals required to call Set_Offset_To_Top.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111064 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_disp.ads')
-rw-r--r-- | gcc/ada/exp_disp.ads | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/gcc/ada/exp_disp.ads b/gcc/ada/exp_disp.ads index a0f6b18672d..50f1a6b2f26 100644 --- a/gcc/ada/exp_disp.ads +++ b/gcc/ada/exp_disp.ads @@ -136,12 +136,8 @@ package Exp_Disp is -- Guidelines for addition of new predefined primitive operations - -- Update the value of constant Default_Prim_Op_Count in Exp_Disp.ads - -- to reflect the new number of PPOs. - -- Update the value of constant Default_Prim_Op_Count in A-Tags.ads - -- to reflect the new number of PPOs. This value should be the same - -- as the one in Exp_Disp.ads. + -- to reflect the new number of PPOs. -- Introduce a new predefined name for the new PPO in Snames.ads and -- Snames.adb. @@ -149,9 +145,6 @@ package Exp_Disp is -- Categorize the new PPO name as predefined by adding an entry in -- Is_Predefined_Dispatching_Operation in Exp_Util.adb. - -- Reserve a dispatch table position for the new PPO by adding an entry - -- in Default_Prim_Op_Position in Exp_Disp.adb. - -- Generate the specification of the new PPO in Make_Predefined_ -- Primitive_Spec in Exp_Ch3.adb. The Is_Internal flag of the defining -- identifier of the specification must be set to True. @@ -174,8 +167,6 @@ package Exp_Disp is -- Exp_Disp.Default_Prim_Op_Position - indirect use -- Exp_Disp.Set_All_DT_Position - direct use - Default_Prim_Op_Count : constant Int := 15; - type DT_Access_Action is (CW_Membership, IW_Membership, @@ -184,6 +175,7 @@ package Exp_Disp is Get_Access_Level, Get_Entry_Index, Get_External_Tag, + Get_Predefined_Prim_Op_Address, Get_Prim_Op_Address, Get_Prim_Op_Kind, Get_RC_Offset, @@ -200,10 +192,12 @@ package Exp_Disp is Set_Interface_Table, Set_Offset_Index, Set_OSD, + Set_Predefined_Prim_Op_Address, Set_Prim_Op_Address, Set_Prim_Op_Kind, Set_RC_Offset, Set_Remotely_Callable, + Set_Signature, Set_SSD, Set_TSD, Set_Tagged_Kind, |