RFR: JDK-8189611: JarFile versioned stream and real name support

Martin Buchholz martinrb at google.com
Thu Nov 30 00:03:39 UTC 2017


+    private static boolean isASCII(byte[] ba, int off, int len) {+
    for (int i = off; i < off + len; i++) {+            if (ba[i] <
0)+                return false;+        }+        return true;+    }

I see that StringCoding has

    @HotSpotIntrinsicCandidate
    public static boolean hasNegatives(byte[] ba, int off, int len) {
        for (int i = off; i < off + len; i++) {
            if (ba[i] < 0) {
                return true;
            }
        }
        return false;
    }

and in hotspot-land I see that MacroAssembler::has_negatives has 200 lines
of hairy assemblerese.  Let's reuse that enormous effort!  And not just in
ZipCoder.java - needing to check a byte sequence for Ascii-ness is a bit
goofy but important enough to be a public API  (I've used optimized
versions of this in other languages).  I don't know where it belongs (could
add a method to CharsetDecoder, intrinsified for US_ASCII), but we can find
one.  Even without that, surely today we should be able to reuse this
intrinsic from somewhere else within the java.base module.

(Keeping high-performance intrinsics hidden is a top reason why java
developers use jdk internals)

(Not directed at Xueming in particular)


More information about the core-libs-dev mailing list