1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT COMPILER COMPONENTS                         --
4--                                                                          --
5--                                A L L O C                                 --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--          Copyright (C) 1992-2021, Free Software Foundation, Inc.         --
10--                                                                          --
11-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12-- terms of the  GNU General Public License as published  by the Free Soft- --
13-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17-- for  more details.  You should have  received  a copy of the GNU General --
18-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
19-- http://www.gnu.org/licenses for a complete copy of the license.          --
20--                                                                          --
21-- GNAT was originally developed  by the GNAT team at  New York University. --
22-- Extensive contributions were provided by Ada Core Technologies Inc.      --
23--                                                                          --
24------------------------------------------------------------------------------
25
26--  This package contains definitions for initial sizes and growth increments
27--  for the various dynamic arrays used for the main compiler data structures.
28--  The indicated initial size is allocated for the start of each file, and
29--  the increment factor is a percentage used to increase the table size when
30--  it needs expanding (e.g. a value of 100 = 100% increase = double)
31
32--  Note: the initial values here are multiplied by Table_Factor as set by the
33--  -gnatTnn switch. This variable is defined in Opt, as is the default value
34--  for the table factor.
35
36package Alloc is
37
38   --  The comment shows the unit in which the tables are defined
39
40   All_Interp_Initial               : constant := 1_000;      -- Sem_Type
41   All_Interp_Increment             : constant := 100;
42
43   Branches_Initial                 : constant := 1_000;      -- Sem_Warn
44   Branches_Increment               : constant := 100;
45
46   Conditionals_Initial             : constant := 1_000;      -- Sem_Warn
47   Conditionals_Increment           : constant := 100;
48
49   Conditional_Stack_Initial        : constant := 50;         -- Sem_Warn
50   Conditional_Stack_Increment      : constant := 100;
51
52   Elists_Initial                   : constant := 200;        -- Elists
53   Elists_Increment                 : constant := 100;
54
55   Elmts_Initial                    : constant := 1_200;      -- Elists
56   Elmts_Increment                  : constant := 100;
57
58   File_Name_Chars_Initial          : constant := 10_000;     -- Osint
59   File_Name_Chars_Increment        : constant := 100;
60
61   In_Out_Warnings_Initial          : constant := 100;        -- Sem_Warn
62   In_Out_Warnings_Increment        : constant := 100;
63
64   Ignored_Ghost_Nodes_Initial      : constant := 100;        -- Ghost
65   Ignored_Ghost_Nodes_Increment    : constant := 100;
66
67   Inlined_Initial                  : constant := 100;        -- Inline
68   Inlined_Increment                : constant := 100;
69
70   Inlined_Bodies_Initial           : constant := 50;         -- Inline
71   Inlined_Bodies_Increment         : constant := 200;
72
73   Interp_Map_Initial               : constant := 200;        -- Sem_Type
74   Interp_Map_Increment             : constant := 100;
75
76   Lines_Initial                    : constant := 500;        -- Sinput
77   Lines_Increment                  : constant := 150;
78
79   Linker_Option_Lines_Initial      : constant := 5;          -- Lib
80   Linker_Option_Lines_Increment    : constant := 200;
81
82   Lists_Initial                    : constant := 4_000;      -- Nlists
83   Lists_Increment                  : constant := 200;
84
85   Load_Stack_Initial               : constant := 10;         -- Lib
86   Load_Stack_Increment             : constant := 100;
87
88   Name_Chars_Initial               : constant := 50_000;     -- Namet
89   Name_Chars_Increment             : constant := 100;
90
91   Name_Qualify_Units_Initial       : constant := 200;        -- Exp_Dbug
92   Name_Qualify_Units_Increment     : constant := 300;
93
94   Names_Initial                    : constant := 6_000;      -- Namet
95   Names_Increment                  : constant := 100;
96
97   Node_Offsets_Initial             : constant := 500_000;    -- Atree, Nlists
98   Node_Offsets_Increment           : constant := 100;
99
100   Slots_Initial                    : constant := 2_000_000;  -- Atree
101   Slots_Increment                  : constant := 100;
102
103   Notes_Initial                    : constant := 100;        -- Lib
104   Notes_Increment                  : constant := 200;
105
106   Obsolescent_Warnings_Initial     : constant := 50;         -- Sem_Prag
107   Obsolescent_Warnings_Increment   : constant := 200;
108
109   Pending_Instantiations_Initial   : constant := 10;         -- Inline
110   Pending_Instantiations_Increment : constant := 100;
111
112   Rep_Table_Initial                : constant := 1000;       -- Repinfo
113   Rep_Table_Increment              : constant := 200;
114
115   Rep_JSON_Table_Initial           : constant := 10;          -- Repinfo
116   Rep_JSON_Table_Increment         : constant := 200;
117
118   Scope_Stack_Initial              : constant := 10;         -- Sem
119   Scope_Stack_Increment            : constant := 200;
120
121   SFN_Table_Initial                : constant := 10;         -- Fname
122   SFN_Table_Increment              : constant := 200;
123
124   Source_File_Initial              : constant := 10;         -- Sinput
125   Source_File_Increment            : constant := 200;
126
127   String_Chars_Initial             : constant := 2_500;      -- Stringt
128   String_Chars_Increment           : constant := 150;
129
130   Strings_Initial                  : constant := 5_00;       -- Stringt
131   Strings_Increment                : constant := 150;
132
133   Successors_Initial               : constant := 2_00;       -- Inline
134   Successors_Increment             : constant := 100;
135
136   Udigits_Initial                  : constant := 10_000;     -- Uintp
137   Udigits_Increment                : constant := 100;
138
139   Uints_Initial                    : constant := 5_000;      -- Uintp
140   Uints_Increment                  : constant := 100;
141
142   Units_Initial                    : constant := 30;         -- Lib
143   Units_Increment                  : constant := 100;
144
145   Ureals_Initial                   : constant := 200;        -- Urealp
146   Ureals_Increment                 : constant := 100;
147
148   Unreferenced_Entities_Initial    : constant := 1_000;      -- Sem_Warn
149   Unreferenced_Entities_Increment  : constant := 100;
150
151   Warnings_Off_Pragmas_Initial     : constant := 500;        -- Sem_Warn
152   Warnings_Off_Pragmas_Increment   : constant := 100;
153
154   With_List_Initial                : constant := 10;         -- Features
155   With_List_Increment              : constant := 300;
156
157   Xrefs_Initial                    : constant := 5_000;      -- Cross-refs
158   Xrefs_Increment                  : constant := 300;
159
160   Drefs_Initial                    : constant := 5;          -- Dereferences
161   Drefs_Increment                  : constant := 1_000;
162
163end Alloc;
164