hotspot/src/share/vm/code/dependencies.hpp
changeset 31037 01a5c5fa5681
parent 30296 95baefac8485
child 33160 c59f1676d27e
equal deleted inserted replaced
31036:e3040e4dde63 31037:01a5c5fa5681
   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]; }