< prev index next >

src/hotspot/share/code/dependencies.cpp

Print this page




1795 }
1796 
1797 Klass* Dependencies::check_exclusive_concrete_methods(Klass* ctxk,
1798                                                         Method* m1,
1799                                                         Method* m2,
1800                                                         KlassDepChange* changes) {
1801   ClassHierarchyWalker wf(m1);
1802   wf.add_participant(m1->method_holder());
1803   wf.add_participant(m2->method_holder());
1804   return wf.find_witness_definer(ctxk, changes);
1805 }
1806 
1807 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) {
1808   Klass* search_at = ctxk;
1809   if (changes != NULL)
1810     search_at = changes->new_type(); // just look at the new bit
1811   return find_finalizable_subclass(search_at);
1812 }
1813 
1814 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
1815   assert(!oopDesc::is_null(call_site), "sanity");
1816   assert(!oopDesc::is_null(method_handle), "sanity");
1817   assert(call_site->is_a(SystemDictionary::CallSite_klass()),     "sanity");
1818 
1819   if (changes == NULL) {
1820     // Validate all CallSites
1821     if (java_lang_invoke_CallSite::target(call_site) != method_handle)
1822       return call_site->klass();  // assertion failed
1823   } else {
1824     // Validate the given CallSite
1825     if (call_site == changes->call_site() && java_lang_invoke_CallSite::target(call_site) != changes->method_handle()) {
1826       assert(method_handle != changes->method_handle(), "must be");
1827       return call_site->klass();  // assertion failed
1828     }
1829   }
1830   return NULL;  // assertion still valid
1831 }
1832 
1833 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) {
1834   if (witness != NULL) {
1835     if (TraceDependencies) {
1836       print_dependency(witness, /*verbose=*/ true);




1795 }
1796 
1797 Klass* Dependencies::check_exclusive_concrete_methods(Klass* ctxk,
1798                                                         Method* m1,
1799                                                         Method* m2,
1800                                                         KlassDepChange* changes) {
1801   ClassHierarchyWalker wf(m1);
1802   wf.add_participant(m1->method_holder());
1803   wf.add_participant(m2->method_holder());
1804   return wf.find_witness_definer(ctxk, changes);
1805 }
1806 
1807 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) {
1808   Klass* search_at = ctxk;
1809   if (changes != NULL)
1810     search_at = changes->new_type(); // just look at the new bit
1811   return find_finalizable_subclass(search_at);
1812 }
1813 
1814 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
1815   assert(call_site != NULL, "sanity");
1816   assert(method_handle != NULL, "sanity");
1817   assert(call_site->is_a(SystemDictionary::CallSite_klass()),     "sanity");
1818 
1819   if (changes == NULL) {
1820     // Validate all CallSites
1821     if (java_lang_invoke_CallSite::target(call_site) != method_handle)
1822       return call_site->klass();  // assertion failed
1823   } else {
1824     // Validate the given CallSite
1825     if (call_site == changes->call_site() && java_lang_invoke_CallSite::target(call_site) != changes->method_handle()) {
1826       assert(method_handle != changes->method_handle(), "must be");
1827       return call_site->klass();  // assertion failed
1828     }
1829   }
1830   return NULL;  // assertion still valid
1831 }
1832 
1833 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) {
1834   if (witness != NULL) {
1835     if (TraceDependencies) {
1836       print_dependency(witness, /*verbose=*/ true);


< prev index next >