171 all_types = ((1 << TYPE_LIMIT) - 1) & ((-1) << FIRST_TYPE), |
171 all_types = ((1 << TYPE_LIMIT) - 1) & ((-1) << FIRST_TYPE), |
172 |
172 |
173 non_klass_types = (1 << call_site_target_value), |
173 non_klass_types = (1 << call_site_target_value), |
174 klass_types = all_types & ~non_klass_types, |
174 klass_types = all_types & ~non_klass_types, |
175 |
175 |
176 non_ctxk_types = (1 << evol_method), |
176 non_ctxk_types = (1 << evol_method) | (1 << call_site_target_value), |
177 implicit_ctxk_types = 0, |
177 implicit_ctxk_types = 0, |
178 explicit_ctxk_types = all_types & ~(non_ctxk_types | implicit_ctxk_types), |
178 explicit_ctxk_types = all_types & ~(non_ctxk_types | implicit_ctxk_types), |
179 |
179 |
180 max_arg_count = 3, // current maximum number of arguments (incl. ctxk) |
180 max_arg_count = 3, // current maximum number of arguments (incl. ctxk) |
181 |
181 |
328 static Klass* check_abstract_with_exclusive_concrete_subtypes(Klass* ctxk, Klass* k1, Klass* k2, |
328 static Klass* check_abstract_with_exclusive_concrete_subtypes(Klass* ctxk, Klass* k1, Klass* k2, |
329 KlassDepChange* changes = NULL); |
329 KlassDepChange* changes = NULL); |
330 static Klass* check_exclusive_concrete_methods(Klass* ctxk, Method* m1, Method* m2, |
330 static Klass* check_exclusive_concrete_methods(Klass* ctxk, Method* m1, Method* m2, |
331 KlassDepChange* changes = NULL); |
331 KlassDepChange* changes = NULL); |
332 static Klass* check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes = NULL); |
332 static Klass* check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes = NULL); |
333 static Klass* check_call_site_target_value(Klass* recorded_ctxk, oop call_site, oop method_handle, CallSiteDepChange* changes = NULL); |
333 static Klass* check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes = NULL); |
334 // A returned Klass* is NULL if the dependency assertion is still |
334 // A returned Klass* is NULL if the dependency assertion is still |
335 // valid. A non-NULL Klass* is a 'witness' to the assertion |
335 // valid. A non-NULL Klass* is a 'witness' to the assertion |
336 // failure, a point in the class hierarchy where the assertion has |
336 // failure, a point in the class hierarchy where the assertion has |
337 // been proven false. For example, if check_leaf_type returns |
337 // been proven false. For example, if check_leaf_type returns |
338 // non-NULL, the value is a subtype of the supposed leaf type. This |
338 // non-NULL, the value is a subtype of the supposed leaf type. This |
494 } |
494 } |
495 |
495 |
496 bool next(); |
496 bool next(); |
497 |
497 |
498 DepType type() { return _type; } |
498 DepType type() { return _type; } |
499 bool is_oop_argument(int i) { return type() == call_site_target_value && i > 0; } |
499 bool is_oop_argument(int i) { return type() == call_site_target_value; } |
500 uintptr_t get_identifier(int i); |
500 uintptr_t get_identifier(int i); |
501 |
501 |
502 int argument_count() { return dep_args(type()); } |
502 int argument_count() { return dep_args(type()); } |
503 int argument_index(int i) { assert(0 <= i && i < argument_count(), "oob"); |
503 int argument_index(int i) { assert(0 <= i && i < argument_count(), "oob"); |
504 return _xi[i]; } |
504 return _xi[i]; } |