This commit is contained in:
Alejandro Murillo 2016-07-29 16:11:57 -07:00
commit 41186dae1b
25 changed files with 153 additions and 664 deletions

View File

@ -350,8 +350,6 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),)
BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w
# initializing a declared 'extern'
BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w
# decimal constant is unsigned only in ISO C90 (JAVASE_EMBEDDED)
BUILD_LIBAWT_XAWT_XToolkit.c_CFLAGS := -w
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \

View File

@ -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)

View File

@ -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)

View File

@ -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 @@ JAVA_SOURCES=HeapTracker.java
# 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)

View File

@ -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)

View File

@ -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)

View File

@ -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 @@ JAVA_SOURCES=Minst.java
# 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)

View File

@ -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 @@ JAVA_SOURCES=Mtrace.java
# 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)

View File

@ -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)

View File

@ -166,10 +166,6 @@ class VersionProps {
ps.print(java_runtime_name + " (" + jdk_debug_level + "build " + java_runtime_version);
if (java_runtime_name.indexOf("Embedded") != -1 && isHeadless) {
// embedded builds report headless state
ps.print(", headless");
}
ps.println(')');
/* Third line: JVM information. */

View File

@ -25,14 +25,14 @@
package java.nio;
import java.util.concurrent.atomic.AtomicLong;
import jdk.internal.misc.JavaNioAccess;
import jdk.internal.misc.JavaLangRefAccess;
import jdk.internal.misc.JavaNioAccess;
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 @@ class Bits { // package-private
}
// -- 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;
}

View File

@ -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 @@ class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private
#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 @@ class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private
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 @@ class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private
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 @@ class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private
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();

View File

@ -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 @@ class XXX {
#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 @@ class XXX {
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();

View File

@ -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 <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <pwd.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
@ -46,6 +45,12 @@
#include <sys/stat.h>
#include <sys/wait.h>
/* For POSIX-compliant getpwuid_r on Solaris */
#if defined(__solaris__)
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include <pwd.h>
#ifdef _AIX
#include <sys/procfs.h>
#endif
@ -468,12 +473,7 @@ void unix_getUserInfo(JNIEnv* env, jobject jinfo, uid_t uid) {
} 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 &&

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
@ -68,11 +68,6 @@
#endif
#endif /* !_ALLBSD_SOURCE */
#ifdef JAVASE_EMBEDDED
#include <dlfcn.h>
#include <sys/stat.h>
#endif
/* Take an array of string pairs (map of key->value) and a string (key).
* Examine each pair in the map to see if the first string (key) matches the
* string. If so, store the second string of the pair (value) in the value and
@ -350,36 +345,6 @@ static int ParseLocale(JNIEnv* env, int cat, char ** std_language, char ** std_s
return 1;
}
#ifdef JAVASE_EMBEDDED
/* Determine the default embedded toolkit based on whether libawt_xawt
* exists in the JRE. This can still be overridden by -Dawt.toolkit=XXX
*/
static char* getEmbeddedToolkit() {
Dl_info dlinfo;
char buf[MAXPATHLEN];
int32_t len;
char *p;
struct stat statbuf;
/* Get address of this library and the directory containing it. */
dladdr((void *)getEmbeddedToolkit, &dlinfo);
realpath((char *)dlinfo.dli_fname, buf);
len = strlen(buf);
p = strrchr(buf, '/');
/* Default AWT Toolkit on Linux and Solaris is XAWT (libawt_xawt.so). */
strncpy(p, "/libawt_xawt.so", MAXPATHLEN-len-1);
/* Check if it exists */
if (stat(buf, &statbuf) == -1 && errno == ENOENT) {
/* No - this is a reduced-headless-jre so use special HToolkit */
return "sun.awt.HToolkit";
}
else {
/* Yes - this is a headful JRE so fallback to SE defaults */
return NULL;
}
}
#endif
/* This function gets called very early, before VM_CALLS are setup.
* Do not use any of the VM_CALLS entries!!!
*/
@ -424,10 +389,6 @@ GetJavaProperties(JNIEnv *env)
sprops.awt_headless = isInAquaSession() ? NULL : "true";
#else
sprops.graphics_env = "sun.awt.X11GraphicsEnvironment";
#ifdef JAVASE_EMBEDDED
sprops.awt_toolkit = getEmbeddedToolkit();
if (sprops.awt_toolkit == NULL) // default as below
#endif
sprops.awt_toolkit = "sun.awt.X11.XToolkit";
#endif

View File

@ -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 <fcntl.h>
#include <dirent.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <errno.h>
#include <dlfcn.h>
#include <sys/types.h>
@ -43,6 +41,13 @@
#endif
#include <sys/time.h>
/* For POSIX-compliant getpwuid_r, getgrgid_r on Solaris */
#if defined(__solaris__)
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include <pwd.h>
#include <grp.h>
#ifdef __solaris__
#include <strings.h>
#endif
@ -1022,11 +1027,7 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid(JNIEnv* env, jclass this, jint uid
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 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid(JNIEnv* env, jclass this, jint gid
}
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 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0(JNIEnv* env, jclass this,
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 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0(JNIEnv* env, jclass this,
}
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') {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
@ -122,11 +122,7 @@ Java_sun_awt_X11_XToolkit_initIDs
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XToolkit_getTrayIconDisplayTimeout
(JNIEnv *env, jclass clazz)
{
#ifndef JAVASE_EMBEDDED
return (jlong) 2000;
#else
return (jlong) 10000;
#endif
}
/*
@ -369,12 +365,7 @@ static uint32_t get_poll_timeout(jlong nextTaskTime);
#define AWT_READPIPE (awt_pipe_fds[0])
#define AWT_WRITEPIPE (awt_pipe_fds[1])
#ifdef JAVASE_EMBEDDED
#define DEF_AWT_MAX_POLL_TIMEOUT ((uint32_t)4000000000) /* milliseconds */
#else
#define DEF_AWT_MAX_POLL_TIMEOUT ((uint32_t)500) /* milliseconds */
#endif
#define DEF_AWT_MAX_POLL_TIMEOUT ((uint32_t)500) /* milliseconds */
#define DEF_AWT_FLUSH_TIMEOUT ((uint32_t)100) /* milliseconds */
#define AWT_MIN_POLL_TIMEOUT ((uint32_t)0) /* milliseconds */
@ -391,11 +382,7 @@ static uint32_t get_poll_timeout(jlong nextTaskTime);
// Static fields
#ifdef JAVASE_EMBEDDED
static int awt_poll_alg = AWT_POLL_AGING_FAST;
#else
static int awt_poll_alg = AWT_POLL_AGING_SLOW;
#endif
static int awt_poll_alg = AWT_POLL_AGING_SLOW;
static uint32_t AWT_FLUSH_TIMEOUT = DEF_AWT_FLUSH_TIMEOUT; /* milliseconds */
static uint32_t AWT_MAX_POLL_TIMEOUT = DEF_AWT_MAX_POLL_TIMEOUT; /* milliseconds */

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -39,10 +39,6 @@ DEF_STATIC_JNI_OnLoad
*/
JNIEXPORT jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt)
{
#if defined(JAVASE_EMBEDDED) && defined(HEADLESS)
/* there are no AWT libs available at all */
return JNI_FALSE;
#else
if (awt == NULL) {
return JNI_FALSE;
}
@ -62,5 +58,4 @@ JNIEXPORT jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt)
}
return JNI_TRUE;
#endif
}

View File

@ -771,6 +771,14 @@ public class ThreadInfo {
* <th align=left>Type</th>
* </tr>
* <tr>
* <td>moduleName</td>
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>moduleVersion</td>
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>className</td>
* <td>{@code java.lang.String}</td>
* </tr>

View File

@ -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 <jni.h>
#include "com_sun_security_auth_module_SolarisSystem.h"
#include <stdio.h>
#include <pwd.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
/* For POSIX-compliant getpwuid_r on Solaris */
#if defined(__solaris__)
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include <pwd.h>
static void throwIllegalArgumentException(JNIEnv *env, const char *msg) {
@ -43,8 +47,10 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo
(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 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo
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 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo
(*env)->SetObjectField(env, obj, fid, jgroups);
}
cleanupAndReturn:
free(pwd_buf);
free(groups);
return;
}

View File

@ -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 <jni.h>
#include "jni_util.h"
#include "com_sun_security_auth_module_UnixSystem.h"
#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
/* For POSIX-compliant getpwuid_r on Solaris */
#if defined(__solaris__)
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include <pwd.h>
/*
* Declare library specific JNI_Onload entry if static build
*/

View File

@ -344,6 +344,8 @@ com/sun/jdi/CatchPatternTest.sh 8068645 generic-
com/sun/jdi/GetLocalVariables4Test.sh 8067354 windows-all
com/sun/jdi/sde/SourceDebugExtensionTest.java 8158066 windows-all
############################################################################
# jdk_time
@ -368,6 +370,10 @@ java/util/BitSet/BitSetStreamTest.java 8079538 generic-
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

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 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
@ -45,6 +45,7 @@ public class VMAnonymousClass {
test.testJavaUtil();
test.testJdkInternalMisc();
test.testJavaLangInvoke();
test.testProhibitedJavaPkg();
System.out.println("TEST PASSED");
}
@ -54,13 +55,29 @@ public class VMAnonymousClass {
@Test public void testJavaUtil() throws Throwable { test("java/util"); }
@Test public void testJdkInternalMisc() throws Throwable { test("jdk/internal/misc"); }
@Test public void testJavaLangInvoke() throws Throwable { test("java/lang/invoke"); }
@Test public void testProhibitedJavaPkg() throws Throwable {
try {
test("java/prohibited");
} catch (SecurityException e) {
return;
}
throw new RuntimeException("Expected SecurityException");
}
private static Unsafe unsafe = getUnsafe();
private static void test(String pkg) throws Throwable {
byte[] bytes = dumpClass(pkg);
// Define VM anonymous class in privileged context (on BCP).
Class anonClass = unsafe.defineAnonymousClass(Object.class, bytes, null);
Class host_class;
if (pkg.equals("java/prohibited")) {
VMAnonymousClass sampleclass = new VMAnonymousClass();
host_class = (Class)sampleclass.getClass();
} else {
host_class = Object.class;
}
// Define VM anonymous class
Class anonClass = unsafe.defineAnonymousClass(host_class, bytes, null);
MethodType t = MethodType.methodType(Object.class, int.class);
MethodHandle target = MethodHandles.lookup().findStatic(anonClass, "get", t);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 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
@ -58,10 +58,6 @@ public class Platform {
return vmName.endsWith(" Minimal VM");
}
public static boolean isEmbedded() {
return vmName.contains("Embedded");
}
public static boolean isTieredSupported() {
return compiler.contains("Tiered Compilers");
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* 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
@ -29,12 +29,12 @@
*/
public class Safe {
public class GetSunMiscUnsafe {
public static void main(String[] args) throws Exception {
try {
sun.misc.Unsafe.getUnsafe();
} catch (Exception x) {
} catch (SecurityException x) {
System.err.println("Thrown as expected: " + x);
return;
}