151 // also possible (for example) that C1 is CX (a concrete class)
152 // and C2 is a proper subtype of C1.
153 abstract_with_exclusive_concrete_subtypes_2,
154
155 // This dependency asserts that MM(CX, M1) is no greater than {M1,M2}.
156 exclusive_concrete_methods_2,
157
158 // This dependency asserts that no instances of class or it's
159 // subclasses require finalization registration.
160 no_finalizable_subclasses,
161
162 // This dependency asserts when the CallSite.target value changed.
163 call_site_target_value,
164
165 TYPE_LIMIT
166 };
167 enum {
168 LG2_TYPE_LIMIT = 4, // assert(TYPE_LIMIT <= (1<<LG2_TYPE_LIMIT))
169
170 // handy categorizations of dependency types:
171 all_types = ((1 << TYPE_LIMIT) - 1) & ((-1) << FIRST_TYPE),
172
173 non_klass_types = (1 << call_site_target_value),
174 klass_types = all_types & ~non_klass_types,
175
176 non_ctxk_types = (1 << evol_method) | (1 << call_site_target_value),
177 implicit_ctxk_types = 0,
178 explicit_ctxk_types = all_types & ~(non_ctxk_types | implicit_ctxk_types),
179
180 max_arg_count = 3, // current maximum number of arguments (incl. ctxk)
181
182 // A "context type" is a class or interface that
183 // provides context for evaluating a dependency.
184 // When present, it is one of the arguments (dep_context_arg).
185 //
186 // If a dependency does not have a context type, there is a
187 // default context, depending on the type of the dependency.
188 // This bit signals that a default context has been compressed away.
189 default_context_type_bit = (1<<LG2_TYPE_LIMIT)
190 };
191
|
151 // also possible (for example) that C1 is CX (a concrete class)
152 // and C2 is a proper subtype of C1.
153 abstract_with_exclusive_concrete_subtypes_2,
154
155 // This dependency asserts that MM(CX, M1) is no greater than {M1,M2}.
156 exclusive_concrete_methods_2,
157
158 // This dependency asserts that no instances of class or it's
159 // subclasses require finalization registration.
160 no_finalizable_subclasses,
161
162 // This dependency asserts when the CallSite.target value changed.
163 call_site_target_value,
164
165 TYPE_LIMIT
166 };
167 enum {
168 LG2_TYPE_LIMIT = 4, // assert(TYPE_LIMIT <= (1<<LG2_TYPE_LIMIT))
169
170 // handy categorizations of dependency types:
171 all_types = ((1 << TYPE_LIMIT) - 1) & (0xffffffff << FIRST_TYPE),
172
173 non_klass_types = (1 << call_site_target_value),
174 klass_types = all_types & ~non_klass_types,
175
176 non_ctxk_types = (1 << evol_method) | (1 << call_site_target_value),
177 implicit_ctxk_types = 0,
178 explicit_ctxk_types = all_types & ~(non_ctxk_types | implicit_ctxk_types),
179
180 max_arg_count = 3, // current maximum number of arguments (incl. ctxk)
181
182 // A "context type" is a class or interface that
183 // provides context for evaluating a dependency.
184 // When present, it is one of the arguments (dep_context_arg).
185 //
186 // If a dependency does not have a context type, there is a
187 // default context, depending on the type of the dependency.
188 // This bit signals that a default context has been compressed away.
189 default_context_type_bit = (1<<LG2_TYPE_LIMIT)
190 };
191
|