comparison src/share/vm/c1/c1_GraphBuilder.cpp @ 13021:4d3575d37a07

8026735: Stream tests throw java.lang.IncompatibleClassChangeError Summary: Put a band-aid to disable CHA-based inlining for interfaces with default methods in C1 Reviewed-by: kvn, twisti
author iveresov
date Wed, 30 Oct 2013 22:55:11 -0700
parents 0d1661d63d70
children 144b23411b51
comparison
equal deleted inserted replaced
13020:60a32bb8ff99 13021:4d3575d37a07
1871 // equal to the number of implementors for target->holder() so 1871 // equal to the number of implementors for target->holder() so
1872 // if number of implementors of target->holder() == 1 then 1872 // if number of implementors of target->holder() == 1 then
1873 // number of implementors for decl_interface is 0 or 1. If 1873 // number of implementors for decl_interface is 0 or 1. If
1874 // it's 0 then no class implements decl_interface and there's 1874 // it's 0 then no class implements decl_interface and there's
1875 // no point in inlining. 1875 // no point in inlining.
1876 if (!holder->is_loaded() || decl_interface->nof_implementors() != 1) { 1876 if (!holder->is_loaded() || decl_interface->nof_implementors() != 1 || decl_interface->has_default_methods()) {
1877 singleton = NULL; 1877 singleton = NULL;
1878 } 1878 }
1879 } 1879 }
1880 if (singleton) { 1880 if (singleton) {
1881 cha_monomorphic_target = target->find_monomorphic_target(calling_klass, target->holder(), singleton); 1881 cha_monomorphic_target = target->find_monomorphic_target(calling_klass, target->holder(), singleton);