Hi, two points that come directly to my mind when i checked the code:
1) An Error in the description. + // If plast >= plen then restrictedPkg is longer than pkg by at + // least one char. This means pkg cannot start with restrictedPkg, + // since restrictedPkg will be longer than pkg. + // + // Similarly if plast != plen, then pkg + "." cannot be the same + // as restrictedPkg, since pkg + "." will have a different length + // than restrictedPkg. If this would be correct then where would never be an match because !(plast >= plen) && !(plast != plen) must be true for an possible match. That could be rewriten to (plast < plen) && (plast == plen) and this is always FALSE. 2) Would it be worth to use the state Engine instead of looping over the array ? Gruß Thomas On 16.06.2015 16:54, Sean Mullan wrote: > This is the sixth in a series of fixes for JEP 232 (Improve Secure > Application Performance) [1]. > > webrev: http://cr.openjdk.java.net/~mullan/webrevs/8072692/webrev.00/ > bug: https://bugs.openjdk.java.net/browse/JDK-8072692 > > This fix adds several optimizations to the package matching algorithm > used by the SecurityManager.checkPackageAcccess method. These > improvements result in a 5-7x increase in throughput of this method. A > performance chart has been attached to the bug with more information. > > A new test is included which uses a state machine to verify that the > matching algorithm is working correctly. > > Special thanks to Daniel Fuchs for contributing this fix and the test. > > Thanks, > Sean > > [1] http://openjdk.java.net/jeps/232