# HG changeset patch # User amurillo # Date 1469575104 25200 # Node ID 5a91f84138ede5166690fb9f87dc39f6cce2db2f # Parent e8373543a3f0f60589b7d72b1f9b172721124caf# Parent d16ad782f775d8bf71c524dfc5ef65ef39327c6b Merge diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/compiledMethodLoad/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/compiledMethodLoad/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/compiledMethodLoad/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,12 +45,12 @@ LIBNAME=compiledMethodLoad SOURCES=compiledMethodLoad.c ../agent_util/agent_util.c -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/gctest/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/gctest/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/gctest/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,12 +45,12 @@ LIBNAME=gctest SOURCES=gctest.c ../agent_util/agent_util.c -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/heapTracker/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/heapTracker/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/heapTracker/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -49,12 +49,12 @@ # Name of jar file that needs to be created JARFILE=heapTracker.jar -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/heapViewer/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/heapViewer/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/heapViewer/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,12 +45,12 @@ LIBNAME=heapViewer SOURCES=heapViewer.c ../agent_util/agent_util.c -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/java_crw_demo/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/java_crw_demo/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/java_crw_demo/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,12 +45,12 @@ LIBNAME=java_crw_demo SOURCES=java_crw_demo.c -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/minst/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/minst/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/minst/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -49,12 +49,12 @@ # Name of jar file that needs to be created JARFILE=minst.jar -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/mtrace/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/mtrace/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/mtrace/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -49,12 +49,12 @@ # Name of jar file that needs to be created JARFILE=mtrace.jar -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/demo/share/jvmti/versionCheck/sample.makefile.txt --- a/jdk/src/demo/share/jvmti/versionCheck/sample.makefile.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/demo/share/jvmti/versionCheck/sample.makefile.txt Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,12 +45,12 @@ LIBNAME=versionCheck SOURCES=versionCheck.c ../agent_util/agent_util.c -# Solaris Sun C Compiler Version 5.5 +# Solaris Studio C Compiler Version 12.4 ifeq ($(OSNAME), solaris) # Sun Solaris Compiler options needed COMMON_FLAGS=-mt -KPIC # Options that help find errors - COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + COMMON_FLAGS+= -Xa -v -xc99=%none # Check LIBARCH for any special compiler options LIBARCH=$(shell uname -p) ifeq ($(LIBARCH), sparc) diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.base/share/classes/java/nio/Bits.java --- a/jdk/src/java.base/share/classes/java/nio/Bits.java Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.base/share/classes/java/nio/Bits.java Tue Jul 26 16:18:24 2016 -0700 @@ -25,14 +25,14 @@ package java.nio; -import java.util.concurrent.atomic.AtomicLong; - +import jdk.internal.misc.JavaLangRefAccess; import jdk.internal.misc.JavaNioAccess; -import jdk.internal.misc.JavaLangRefAccess; import jdk.internal.misc.SharedSecrets; import jdk.internal.misc.Unsafe; import jdk.internal.misc.VM; +import java.util.concurrent.atomic.AtomicLong; + /** * Access to bits, native and otherwise. */ @@ -61,504 +61,10 @@ } - // -- get/put char -- - - private static char makeChar(byte b1, byte b0) { - return (char)((b1 << 8) | (b0 & 0xff)); - } - - static char getCharL(ByteBuffer bb, int bi) { - return makeChar(bb._get(bi + 1), - bb._get(bi )); - } - - static char getCharL(long a) { - return makeChar(_get(a + 1), - _get(a )); - } - - static char getCharB(ByteBuffer bb, int bi) { - return makeChar(bb._get(bi ), - bb._get(bi + 1)); - } - - static char getCharB(long a) { - return makeChar(_get(a ), - _get(a + 1)); - } - - static char getChar(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getCharB(bb, bi) : getCharL(bb, bi); - } - - static char getChar(long a, boolean bigEndian) { - return bigEndian ? getCharB(a) : getCharL(a); - } - - private static byte char1(char x) { return (byte)(x >> 8); } - private static byte char0(char x) { return (byte)(x ); } - - static void putCharL(ByteBuffer bb, int bi, char x) { - bb._put(bi , char0(x)); - bb._put(bi + 1, char1(x)); - } - - static void putCharL(long a, char x) { - _put(a , char0(x)); - _put(a + 1, char1(x)); - } - - static void putCharB(ByteBuffer bb, int bi, char x) { - bb._put(bi , char1(x)); - bb._put(bi + 1, char0(x)); - } - - static void putCharB(long a, char x) { - _put(a , char1(x)); - _put(a + 1, char0(x)); - } - - static void putChar(ByteBuffer bb, int bi, char x, boolean bigEndian) { - if (bigEndian) - putCharB(bb, bi, x); - else - putCharL(bb, bi, x); - } - - static void putChar(long a, char x, boolean bigEndian) { - if (bigEndian) - putCharB(a, x); - else - putCharL(a, x); - } - - - // -- get/put short -- - - private static short makeShort(byte b1, byte b0) { - return (short)((b1 << 8) | (b0 & 0xff)); - } - - static short getShortL(ByteBuffer bb, int bi) { - return makeShort(bb._get(bi + 1), - bb._get(bi )); - } - - static short getShortL(long a) { - return makeShort(_get(a + 1), - _get(a )); - } - - static short getShortB(ByteBuffer bb, int bi) { - return makeShort(bb._get(bi ), - bb._get(bi + 1)); - } - - static short getShortB(long a) { - return makeShort(_get(a ), - _get(a + 1)); - } - - static short getShort(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getShortB(bb, bi) : getShortL(bb, bi); - } - - static short getShort(long a, boolean bigEndian) { - return bigEndian ? getShortB(a) : getShortL(a); - } - - private static byte short1(short x) { return (byte)(x >> 8); } - private static byte short0(short x) { return (byte)(x ); } - - static void putShortL(ByteBuffer bb, int bi, short x) { - bb._put(bi , short0(x)); - bb._put(bi + 1, short1(x)); - } - - static void putShortL(long a, short x) { - _put(a , short0(x)); - _put(a + 1, short1(x)); - } - - static void putShortB(ByteBuffer bb, int bi, short x) { - bb._put(bi , short1(x)); - bb._put(bi + 1, short0(x)); - } - - static void putShortB(long a, short x) { - _put(a , short1(x)); - _put(a + 1, short0(x)); - } - - static void putShort(ByteBuffer bb, int bi, short x, boolean bigEndian) { - if (bigEndian) - putShortB(bb, bi, x); - else - putShortL(bb, bi, x); - } - - static void putShort(long a, short x, boolean bigEndian) { - if (bigEndian) - putShortB(a, x); - else - putShortL(a, x); - } - - - // -- get/put int -- - - private static int makeInt(byte b3, byte b2, byte b1, byte b0) { - return (((b3 ) << 24) | - ((b2 & 0xff) << 16) | - ((b1 & 0xff) << 8) | - ((b0 & 0xff) )); - } - - static int getIntL(ByteBuffer bb, int bi) { - return makeInt(bb._get(bi + 3), - bb._get(bi + 2), - bb._get(bi + 1), - bb._get(bi )); - } - - static int getIntL(long a) { - return makeInt(_get(a + 3), - _get(a + 2), - _get(a + 1), - _get(a )); - } - - static int getIntB(ByteBuffer bb, int bi) { - return makeInt(bb._get(bi ), - bb._get(bi + 1), - bb._get(bi + 2), - bb._get(bi + 3)); - } - - static int getIntB(long a) { - return makeInt(_get(a ), - _get(a + 1), - _get(a + 2), - _get(a + 3)); - } - - static int getInt(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getIntB(bb, bi) : getIntL(bb, bi) ; - } - - static int getInt(long a, boolean bigEndian) { - return bigEndian ? getIntB(a) : getIntL(a) ; - } - - private static byte int3(int x) { return (byte)(x >> 24); } - private static byte int2(int x) { return (byte)(x >> 16); } - private static byte int1(int x) { return (byte)(x >> 8); } - private static byte int0(int x) { return (byte)(x ); } - - static void putIntL(ByteBuffer bb, int bi, int x) { - bb._put(bi + 3, int3(x)); - bb._put(bi + 2, int2(x)); - bb._put(bi + 1, int1(x)); - bb._put(bi , int0(x)); - } - - static void putIntL(long a, int x) { - _put(a + 3, int3(x)); - _put(a + 2, int2(x)); - _put(a + 1, int1(x)); - _put(a , int0(x)); - } - - static void putIntB(ByteBuffer bb, int bi, int x) { - bb._put(bi , int3(x)); - bb._put(bi + 1, int2(x)); - bb._put(bi + 2, int1(x)); - bb._put(bi + 3, int0(x)); - } - - static void putIntB(long a, int x) { - _put(a , int3(x)); - _put(a + 1, int2(x)); - _put(a + 2, int1(x)); - _put(a + 3, int0(x)); - } - - static void putInt(ByteBuffer bb, int bi, int x, boolean bigEndian) { - if (bigEndian) - putIntB(bb, bi, x); - else - putIntL(bb, bi, x); - } - - static void putInt(long a, int x, boolean bigEndian) { - if (bigEndian) - putIntB(a, x); - else - putIntL(a, x); - } - - - // -- get/put long -- - - private static long makeLong(byte b7, byte b6, byte b5, byte b4, - byte b3, byte b2, byte b1, byte b0) - { - return ((((long)b7 ) << 56) | - (((long)b6 & 0xff) << 48) | - (((long)b5 & 0xff) << 40) | - (((long)b4 & 0xff) << 32) | - (((long)b3 & 0xff) << 24) | - (((long)b2 & 0xff) << 16) | - (((long)b1 & 0xff) << 8) | - (((long)b0 & 0xff) )); - } - - static long getLongL(ByteBuffer bb, int bi) { - return makeLong(bb._get(bi + 7), - bb._get(bi + 6), - bb._get(bi + 5), - bb._get(bi + 4), - bb._get(bi + 3), - bb._get(bi + 2), - bb._get(bi + 1), - bb._get(bi )); - } - - static long getLongL(long a) { - return makeLong(_get(a + 7), - _get(a + 6), - _get(a + 5), - _get(a + 4), - _get(a + 3), - _get(a + 2), - _get(a + 1), - _get(a )); - } - - static long getLongB(ByteBuffer bb, int bi) { - return makeLong(bb._get(bi ), - bb._get(bi + 1), - bb._get(bi + 2), - bb._get(bi + 3), - bb._get(bi + 4), - bb._get(bi + 5), - bb._get(bi + 6), - bb._get(bi + 7)); - } - - static long getLongB(long a) { - return makeLong(_get(a ), - _get(a + 1), - _get(a + 2), - _get(a + 3), - _get(a + 4), - _get(a + 5), - _get(a + 6), - _get(a + 7)); - } - - static long getLong(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getLongB(bb, bi) : getLongL(bb, bi); - } - - static long getLong(long a, boolean bigEndian) { - return bigEndian ? getLongB(a) : getLongL(a); - } - - private static byte long7(long x) { return (byte)(x >> 56); } - private static byte long6(long x) { return (byte)(x >> 48); } - private static byte long5(long x) { return (byte)(x >> 40); } - private static byte long4(long x) { return (byte)(x >> 32); } - private static byte long3(long x) { return (byte)(x >> 24); } - private static byte long2(long x) { return (byte)(x >> 16); } - private static byte long1(long x) { return (byte)(x >> 8); } - private static byte long0(long x) { return (byte)(x ); } - - static void putLongL(ByteBuffer bb, int bi, long x) { - bb._put(bi + 7, long7(x)); - bb._put(bi + 6, long6(x)); - bb._put(bi + 5, long5(x)); - bb._put(bi + 4, long4(x)); - bb._put(bi + 3, long3(x)); - bb._put(bi + 2, long2(x)); - bb._put(bi + 1, long1(x)); - bb._put(bi , long0(x)); - } - - static void putLongL(long a, long x) { - _put(a + 7, long7(x)); - _put(a + 6, long6(x)); - _put(a + 5, long5(x)); - _put(a + 4, long4(x)); - _put(a + 3, long3(x)); - _put(a + 2, long2(x)); - _put(a + 1, long1(x)); - _put(a , long0(x)); - } - - static void putLongB(ByteBuffer bb, int bi, long x) { - bb._put(bi , long7(x)); - bb._put(bi + 1, long6(x)); - bb._put(bi + 2, long5(x)); - bb._put(bi + 3, long4(x)); - bb._put(bi + 4, long3(x)); - bb._put(bi + 5, long2(x)); - bb._put(bi + 6, long1(x)); - bb._put(bi + 7, long0(x)); - } - - static void putLongB(long a, long x) { - _put(a , long7(x)); - _put(a + 1, long6(x)); - _put(a + 2, long5(x)); - _put(a + 3, long4(x)); - _put(a + 4, long3(x)); - _put(a + 5, long2(x)); - _put(a + 6, long1(x)); - _put(a + 7, long0(x)); - } - - static void putLong(ByteBuffer bb, int bi, long x, boolean bigEndian) { - if (bigEndian) - putLongB(bb, bi, x); - else - putLongL(bb, bi, x); - } - - static void putLong(long a, long x, boolean bigEndian) { - if (bigEndian) - putLongB(a, x); - else - putLongL(a, x); - } - - - // -- get/put float -- - - static float getFloatL(ByteBuffer bb, int bi) { - return Float.intBitsToFloat(getIntL(bb, bi)); - } - - static float getFloatL(long a) { - return Float.intBitsToFloat(getIntL(a)); - } - - static float getFloatB(ByteBuffer bb, int bi) { - return Float.intBitsToFloat(getIntB(bb, bi)); - } - - static float getFloatB(long a) { - return Float.intBitsToFloat(getIntB(a)); - } - - static float getFloat(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getFloatB(bb, bi) : getFloatL(bb, bi); - } - - static float getFloat(long a, boolean bigEndian) { - return bigEndian ? getFloatB(a) : getFloatL(a); - } - - static void putFloatL(ByteBuffer bb, int bi, float x) { - putIntL(bb, bi, Float.floatToRawIntBits(x)); - } - - static void putFloatL(long a, float x) { - putIntL(a, Float.floatToRawIntBits(x)); - } - - static void putFloatB(ByteBuffer bb, int bi, float x) { - putIntB(bb, bi, Float.floatToRawIntBits(x)); - } - - static void putFloatB(long a, float x) { - putIntB(a, Float.floatToRawIntBits(x)); - } - - static void putFloat(ByteBuffer bb, int bi, float x, boolean bigEndian) { - if (bigEndian) - putFloatB(bb, bi, x); - else - putFloatL(bb, bi, x); - } - - static void putFloat(long a, float x, boolean bigEndian) { - if (bigEndian) - putFloatB(a, x); - else - putFloatL(a, x); - } - - - // -- get/put double -- - - static double getDoubleL(ByteBuffer bb, int bi) { - return Double.longBitsToDouble(getLongL(bb, bi)); - } - - static double getDoubleL(long a) { - return Double.longBitsToDouble(getLongL(a)); - } - - static double getDoubleB(ByteBuffer bb, int bi) { - return Double.longBitsToDouble(getLongB(bb, bi)); - } - - static double getDoubleB(long a) { - return Double.longBitsToDouble(getLongB(a)); - } - - static double getDouble(ByteBuffer bb, int bi, boolean bigEndian) { - return bigEndian ? getDoubleB(bb, bi) : getDoubleL(bb, bi); - } - - static double getDouble(long a, boolean bigEndian) { - return bigEndian ? getDoubleB(a) : getDoubleL(a); - } - - static void putDoubleL(ByteBuffer bb, int bi, double x) { - putLongL(bb, bi, Double.doubleToRawLongBits(x)); - } - - static void putDoubleL(long a, double x) { - putLongL(a, Double.doubleToRawLongBits(x)); - } - - static void putDoubleB(ByteBuffer bb, int bi, double x) { - putLongB(bb, bi, Double.doubleToRawLongBits(x)); - } - - static void putDoubleB(long a, double x) { - putLongB(a, Double.doubleToRawLongBits(x)); - } - - static void putDouble(ByteBuffer bb, int bi, double x, boolean bigEndian) { - if (bigEndian) - putDoubleB(bb, bi, x); - else - putDoubleL(bb, bi, x); - } - - static void putDouble(long a, double x, boolean bigEndian) { - if (bigEndian) - putDoubleB(a, x); - else - putDoubleL(a, x); - } - - // -- Unsafe access -- private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static byte _get(long a) { - return unsafe.getByte(a); - } - - private static void _put(long a, byte b) { - unsafe.putByte(a, b); - } - static Unsafe unsafe() { return unsafe; } diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template --- a/jdk/src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,8 @@ package java.nio; +import jdk.internal.misc.Unsafe; + class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private extends {#if[ro]?ByteBufferAs}$Type$Buffer{#if[ro]?$BO$} @@ -34,6 +36,9 @@ #if[rw] + // Cached unsafe-access object + private static final Unsafe unsafe = Bits.unsafe(); + protected final ByteBuffer bb; protected final int offset; @@ -107,17 +112,27 @@ return (i << $LG_BYTES_PER_VALUE$) + offset; } + private long byteOffset(long i) { + return (i << $LG_BYTES_PER_VALUE$) + bb.address + offset; + } + public $type$ get() { - return Bits.get$Type$$BO$(bb, ix(nextGetIndex())); + $memtype$ x = unsafe.get$Memtype$Unaligned(bb.hb, byteOffset(nextGetIndex()), + {#if[boB]?true:false}); + return $fromBits$(x); } public $type$ get(int i) { - return Bits.get$Type$$BO$(bb, ix(checkIndex(i))); + $memtype$ x = unsafe.get$Memtype$Unaligned(bb.hb, byteOffset(checkIndex(i)), + {#if[boB]?true:false}); + return $fromBits$(x); } #if[streamableType] $type$ getUnchecked(int i) { - return Bits.get$Type$$BO$(bb, ix(i)); + $memtype$ x = unsafe.get$Memtype$Unaligned(bb.hb, byteOffset(i), + {#if[boB]?true:false}); + return $fromBits$(x); } #end[streamableType] @@ -125,7 +140,9 @@ public $Type$Buffer put($type$ x) { #if[rw] - Bits.put$Type$$BO$(bb, ix(nextPutIndex()), x); + $memtype$ y = $toBits$(x); + unsafe.put$Memtype$Unaligned(bb.hb, byteOffset(nextPutIndex()), y, + {#if[boB]?true:false}); return this; #else[rw] throw new ReadOnlyBufferException(); @@ -134,7 +151,9 @@ public $Type$Buffer put(int i, $type$ x) { #if[rw] - Bits.put$Type$$BO$(bb, ix(checkIndex(i)), x); + $memtype$ y = $toBits$(x); + unsafe.put$Memtype$Unaligned(bb.hb, byteOffset(checkIndex(i)), y, + {#if[boB]?true:false}); return this; #else[rw] throw new ReadOnlyBufferException(); diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer-bin.java.template --- a/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer-bin.java.template Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer-bin.java.template Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,11 +32,8 @@ #if[rw] private $type$ get$Type$(long a) { - if (unaligned) { - $memtype$ x = unsafe.get$Memtype$(a); - return $fromBits$(nativeByteOrder ? x : Bits.swap(x)); - } - return Bits.get$Type$(a, bigEndian); + $memtype$ x = unsafe.get$Memtype$Unaligned(null, a, bigEndian); + return $fromBits$(x); } public $type$ get$Type$() { @@ -51,12 +48,8 @@ private ByteBuffer put$Type$(long a, $type$ x) { #if[rw] - if (unaligned) { - $memtype$ y = $toBits$(x); - unsafe.put$Memtype$(a, (nativeByteOrder ? y : Bits.swap(y))); - } else { - Bits.put$Type$(a, x, bigEndian); - } + $memtype$ y = $toBits$(x); + unsafe.put$Memtype$Unaligned(null, a, y, bigEndian); return this; #else[rw] throw new ReadOnlyBufferException(); diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c --- a/jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -46,6 +45,12 @@ #include #include +/* For POSIX-compliant getpwuid_r on Solaris */ +#if defined(__solaris__) +#define _POSIX_PTHREAD_SEMANTICS +#endif +#include + #ifdef _AIX #include #endif @@ -468,12 +473,7 @@ } else { struct passwd pwent; struct passwd* p = NULL; - -#ifdef __solaris__ - RESTARTABLE_RETURN_PTR(getpwuid_r(uid, &pwent, pwbuf, (size_t)getpw_buf_size), p); -#else RESTARTABLE(getpwuid_r(uid, &pwent, pwbuf, (size_t)getpw_buf_size, &p), result); -#endif // Create the Java String if a name was found if (result == 0 && p != NULL && diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c --- a/jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,8 +29,6 @@ #include #include #include -#include -#include #include #include #include @@ -43,6 +41,13 @@ #endif #include +/* For POSIX-compliant getpwuid_r, getgrgid_r on Solaris */ +#if defined(__solaris__) +#define _POSIX_PTHREAD_SEMANTICS +#endif +#include +#include + #ifdef __solaris__ #include #endif @@ -1022,11 +1027,7 @@ int res = 0; errno = 0; - #ifdef __solaris__ - RESTARTABLE_RETURN_PTR(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen), p); - #else - RESTARTABLE(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p), res); - #endif + RESTARTABLE(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p), res); if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { /* not found or error */ @@ -1071,11 +1072,7 @@ } errno = 0; - #ifdef __solaris__ - RESTARTABLE_RETURN_PTR(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen), g); - #else - RESTARTABLE(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g), res); - #endif + RESTARTABLE(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g), res); retry = 0; if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { @@ -1126,11 +1123,7 @@ const char* name = (const char*)jlong_to_ptr(nameAddress); errno = 0; - #ifdef __solaris__ - RESTARTABLE_RETURN_PTR(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen), p); - #else - RESTARTABLE(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p), res); - #endif + RESTARTABLE(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p), res); if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { /* not found or error */ @@ -1171,11 +1164,7 @@ } errno = 0; - #ifdef __solaris__ - RESTARTABLE_RETURN_PTR(getgrnam_r(name, &grent, grbuf, (size_t)buflen), g); - #else - RESTARTABLE(getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g), res); - #endif + RESTARTABLE(getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g), res); retry = 0; if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java --- a/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java Tue Jul 26 16:18:24 2016 -0700 @@ -771,6 +771,14 @@ * Type * * + * moduleName + * {@code java.lang.String} + * + * + * moduleVersion + * {@code java.lang.String} + * + * * className * {@code java.lang.String} * diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/jdk.security.auth/solaris/native/libjaas/Solaris.c --- a/jdk/src/jdk.security.auth/solaris/native/libjaas/Solaris.c Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/jdk.security.auth/solaris/native/libjaas/Solaris.c Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,10 +26,14 @@ #include #include "com_sun_security_auth_module_SolarisSystem.h" #include -#include #include #include #include + +/* For POSIX-compliant getpwuid_r on Solaris */ +#if defined(__solaris__) +#define _POSIX_PTHREAD_SEMANTICS +#endif #include static void throwIllegalArgumentException(JNIEnv *env, const char *msg) { @@ -43,8 +47,10 @@ (JNIEnv *env, jobject obj) { int i; - char pwd_buf[1024]; + long pwd_bufsize; + char *pwd_buf = NULL; struct passwd pwd; + struct passwd* p = NULL; jsize numSuppGroups = getgroups(0, NULL); jfieldID fid; jstring jstr; @@ -53,20 +59,31 @@ gid_t *groups; jclass cls; + pwd_bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); + if (pwd_bufsize == -1) { + pwd_bufsize = 1024; + } + pwd_buf = (char *)malloc(pwd_bufsize); groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t)); - if (groups == NULL) { - jclass cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError"); - if (cls != NULL) + if (pwd_buf == NULL || groups == NULL) { + if (pwd_buf != NULL) { + free(pwd_buf); + } + if (groups != NULL) { + free(groups); + } + cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError"); + if (cls != NULL) { (*env)->ThrowNew(env, cls, NULL); + } return; } cls = (*env)->GetObjectClass(env, obj); - memset(pwd_buf, 0, sizeof(pwd_buf)); - if (getpwuid_r(getuid(), &pwd, pwd_buf, sizeof(pwd_buf)) != NULL && - getgroups(numSuppGroups, groups) != -1) { + if (getpwuid_r(getuid(), &pwd, pwd_buf, sizeof(pwd_buf), &p) != 0 && + p != NULL && getgroups(numSuppGroups, groups) != -1) { /* * set username @@ -129,7 +146,7 @@ (*env)->SetObjectField(env, obj, fid, jgroups); } cleanupAndReturn: + free(pwd_buf); free(groups); - return; } diff -r e8373543a3f0 -r 5a91f84138ed jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c --- a/jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c Tue Jul 26 16:18:24 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,20 +23,21 @@ * questions. */ -#ifdef __solaris__ -#define _POSIX_C_SOURCE 199506L -#endif - #include #include "jni_util.h" #include "com_sun_security_auth_module_UnixSystem.h" #include -#include #include #include #include #include +/* For POSIX-compliant getpwuid_r on Solaris */ +#if defined(__solaris__) +#define _POSIX_PTHREAD_SEMANTICS +#endif +#include + /* * Declare library specific JNI_Onload entry if static build */ diff -r e8373543a3f0 -r 5a91f84138ed jdk/test/ProblemList.txt --- a/jdk/test/ProblemList.txt Wed Jul 05 22:00:06 2017 +0200 +++ b/jdk/test/ProblemList.txt Tue Jul 26 16:18:24 2016 -0700 @@ -344,6 +344,8 @@ com/sun/jdi/GetLocalVariables4Test.sh 8067354 windows-all +com/sun/jdi/sde/SourceDebugExtensionTest.java 8158066 windows-all + ############################################################################ # jdk_time @@ -368,6 +370,10 @@ sun/tools/jcmd/TestJcmdSanity.java 8031482 windows-all +sun/tools/jhsdb/BasicLauncherTest.java 8160376 macosx-all + +sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java 8160376 macosx-all + sun/tools/jmap/heapconfig/JMapHeapConfigTest.java 8072131,8132452 generic-all sun/tools/jstatd/TestJstatdExternalRegistry.java 8046285 generic-all diff -r e8373543a3f0 -r 5a91f84138ed jdk/test/sun/misc/GetSunMiscUnsafe.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/misc/GetSunMiscUnsafe.java Tue Jul 26 16:18:24 2016 -0700 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4495577 + * @summary Ensure that sun.misc.Unsafe cannot (easily) + * be accessed from user code + * @modules jdk.unsupported + */ + + +public class GetSunMiscUnsafe { + + public static void main(String[] args) throws Exception { + try { + sun.misc.Unsafe.getUnsafe(); + } catch (SecurityException x) { + System.err.println("Thrown as expected: " + x); + return; + } + throw new Exception("No exception thrown"); + } + +} diff -r e8373543a3f0 -r 5a91f84138ed jdk/test/sun/misc/Safe.java --- a/jdk/test/sun/misc/Safe.java Wed Jul 05 22:00:06 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - * @bug 4495577 - * @summary Ensure that sun.misc.Unsafe cannot (easily) - * be accessed from user code - * @modules jdk.unsupported - */ - - -public class Safe { - - public static void main(String[] args) throws Exception { - try { - sun.misc.Unsafe.getUnsafe(); - } catch (Exception x) { - System.err.println("Thrown as expected: " + x); - return; - } - throw new Exception("No exception thrown"); - } - -}