This commit is contained in:
Phil Race 2018-07-19 10:53:38 -07:00
commit f921743302
437 changed files with 4422 additions and 5350 deletions

View File

@ -495,4 +495,7 @@ e1b3def126240d5433902f3cb0e91a4c27f6db50 jdk-11+18
9816d7cc655e53ba081f938b656e31971b8f097a jdk-11+20
14708e1acdc3974f4539027cbbcfa6d69f83cf51 jdk-11+21
00b16d0457e43d23f6ca5ade6b243edce62750a0 jdk-12+1
9937ef7499dcd7673714517fd5e450410c14ba4e jdk-11+22
1edcf36fe15f79d6228d1a63eb680878e2386480 jdk-11+23
69b438908512d3dfef5852c6a843a5778333a309 jdk-12+2
990db216e7199b2ba9989d8fa20b657e0ca7d969 jdk-12+3

View File

@ -106,11 +106,17 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
[
# By default don't set any specific assembler debug
# info flags for toolchains unless we know they work.
# See JDK-8207057.
ASFLAGS_DEBUG_SYMBOLS=""
# Debug symbols
if test "x$TOOLCHAIN_TYPE" = xgcc; then
CFLAGS_DEBUG_SYMBOLS="-g"
ASFLAGS_DEBUG_SYMBOLS="-g"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
CFLAGS_DEBUG_SYMBOLS="-g"
ASFLAGS_DEBUG_SYMBOLS="-g"
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
# -g0 enables debug symbols without disabling inlining.
CFLAGS_DEBUG_SYMBOLS="-g0 -xs"
@ -121,6 +127,7 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
fi
AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
AC_SUBST(ASFLAGS_DEBUG_SYMBOLS)
])
AC_DEFUN([FLAGS_SETUP_WARNINGS],

View File

@ -500,7 +500,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
# Enable features depending on variant.
JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci $JVM_FEATURES_aot $JVM_FEATURES_graal"
JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci"
JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES"
JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES"
JVM_FEATURES_minimal="compiler1 minimal serialgc $JVM_FEATURES $JVM_FEATURES_link_time_opt"
JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES"

View File

@ -532,6 +532,7 @@ COPY_DEBUG_SYMBOLS := @COPY_DEBUG_SYMBOLS@
ZIP_EXTERNAL_DEBUG_SYMBOLS := @ZIP_EXTERNAL_DEBUG_SYMBOLS@
CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
ASFLAGS_DEBUG_SYMBOLS:=@ASFLAGS_DEBUG_SYMBOLS@
#
# Compress (or not) jars

View File

@ -1015,7 +1015,7 @@ ExecuteWithLog = \
$(call LogCmdlines, Exececuting: [$(strip $2)]) \
$(call MakeDir, $(dir $(strip $1))) \
$(call WriteFile, $2, $(strip $1).cmdline) \
( $(strip $2) > >($(TEE) $(strip $1).log) 2> >($(TEE) $(strip $1).log >&2) || \
( $(RM) $(strip $1).log && $(strip $2) > >($(TEE) -a $(strip $1).log) 2> >($(TEE) -a $(strip $1).log >&2) || \
( exitcode=$(DOLLAR)? && \
$(CP) $(strip $1).log $(MAKESUPPORT_OUTPUTDIR)/failure-logs/$(subst /,_,$(patsubst $(OUTPUTDIR)/%,%,$(strip $1))).log && \
$(CP) $(strip $1).cmdline $(MAKESUPPORT_OUTPUTDIR)/failure-logs/$(subst /,_,$(patsubst $(OUTPUTDIR)/%,%,$(strip $1))).cmdline && \

View File

@ -251,6 +251,7 @@ define SetupCompileNativeFileBody
$$($$($1_BASE)_SYSROOT_CFLAGS)
$1_BASE_CXXFLAGS := $$($$($1_BASE)_CXXFLAGS) $$($$($1_BASE)_EXTRA_CXXFLAGS) \
$$($$($1_BASE)_SYSROOT_CFLAGS) $$($1_EXTRA_CXXFLAGS)
$1_BASE_ASFLAGS := $$($$($1_BASE)_ASFLAGS) $$($$($1_BASE)_EXTRA_ASFLAGS)
ifneq ($$(filter %.c, $$($1_FILENAME)), )
# Compile as a C file
@ -266,7 +267,7 @@ define SetupCompileNativeFileBody
$1_DEP_FLAG := $(C_FLAG_DEPS)
else ifneq ($$(filter %.s %.S, $$($1_FILENAME)), )
# Compile as assembler file
$1_FLAGS := $$($$($1_BASE)_ASFLAGS)
$1_FLAGS := $$($1_BASE_ASFLAGS)
$1_COMPILER := $(AS)
$1_DEP_FLAG :=
else ifneq ($$(filter %.cpp %.cc %.mm, $$($1_FILENAME)), )
@ -576,6 +577,7 @@ define SetupNativeCompilationBody
ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
$1_EXTRA_CFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_CXXFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_ASFLAGS += $$(ASFLAGS_DEBUG_SYMBOLS)
endif
ifneq ($$($1_REORDER), )

View File

@ -1,890 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name java/io/Closeable
header extends java/lang/Object flags 601
class name java/io/File
-method name toPath descriptor ()Ljava/nio/file/Path;
class name java/io/FileOutputStream
-method name write descriptor (I)V
method name write descriptor (I)V thrownTypes java/io/IOException flags 101
class name java/io/ObjectInput
header extends java/lang/Object implements java/io/DataInput flags 601
class name java/io/ObjectOutput
header extends java/lang/Object implements java/io/DataOutput flags 601
class name java/lang/AssertionError
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V
-class name java/lang/AutoCloseable
class name java/lang/Boolean
-method name compare descriptor (ZZ)I
-class name java/lang/BootstrapMethodError
class name java/lang/Byte
-method name compare descriptor (BB)I
class name java/lang/Character
header extends java/lang/Object implements java/io/Serializable,java/lang/Comparable flags 31 signature Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Character;>;
innerclass innerClass java/lang/Character$Subset outerClass java/lang/Character innerClassName Subset flags 9
innerclass innerClass java/lang/Character$UnicodeBlock outerClass java/lang/Character innerClassName UnicodeBlock flags 19
-method name isBmpCodePoint descriptor (I)Z
-method name isSurrogate descriptor (C)Z
-method name highSurrogate descriptor (I)C
-method name lowSurrogate descriptor (I)C
-method name isAlphabetic descriptor (I)Z
-method name isIdeographic descriptor (I)Z
-method name compare descriptor (CC)I
-method name getName descriptor (I)Ljava/lang/String;
class name java/lang/Character$UnicodeBlock
-field name ARABIC_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name NKO descriptor Ljava/lang/Character$UnicodeBlock;
-field name SAMARITAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name MANDAIC descriptor Ljava/lang/Character$UnicodeBlock;
-field name ETHIOPIC_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED descriptor Ljava/lang/Character$UnicodeBlock;
-field name NEW_TAI_LUE descriptor Ljava/lang/Character$UnicodeBlock;
-field name BUGINESE descriptor Ljava/lang/Character$UnicodeBlock;
-field name TAI_THAM descriptor Ljava/lang/Character$UnicodeBlock;
-field name BALINESE descriptor Ljava/lang/Character$UnicodeBlock;
-field name SUNDANESE descriptor Ljava/lang/Character$UnicodeBlock;
-field name BATAK descriptor Ljava/lang/Character$UnicodeBlock;
-field name LEPCHA descriptor Ljava/lang/Character$UnicodeBlock;
-field name OL_CHIKI descriptor Ljava/lang/Character$UnicodeBlock;
-field name VEDIC_EXTENSIONS descriptor Ljava/lang/Character$UnicodeBlock;
-field name PHONETIC_EXTENSIONS_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name COMBINING_DIACRITICAL_MARKS_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name GLAGOLITIC descriptor Ljava/lang/Character$UnicodeBlock;
-field name LATIN_EXTENDED_C descriptor Ljava/lang/Character$UnicodeBlock;
-field name COPTIC descriptor Ljava/lang/Character$UnicodeBlock;
-field name GEORGIAN_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name TIFINAGH descriptor Ljava/lang/Character$UnicodeBlock;
-field name ETHIOPIC_EXTENDED descriptor Ljava/lang/Character$UnicodeBlock;
-field name CYRILLIC_EXTENDED_A descriptor Ljava/lang/Character$UnicodeBlock;
-field name SUPPLEMENTAL_PUNCTUATION descriptor Ljava/lang/Character$UnicodeBlock;
-field name CJK_STROKES descriptor Ljava/lang/Character$UnicodeBlock;
-field name LISU descriptor Ljava/lang/Character$UnicodeBlock;
-field name VAI descriptor Ljava/lang/Character$UnicodeBlock;
-field name CYRILLIC_EXTENDED_B descriptor Ljava/lang/Character$UnicodeBlock;
-field name BAMUM descriptor Ljava/lang/Character$UnicodeBlock;
-field name MODIFIER_TONE_LETTERS descriptor Ljava/lang/Character$UnicodeBlock;
-field name LATIN_EXTENDED_D descriptor Ljava/lang/Character$UnicodeBlock;
-field name SYLOTI_NAGRI descriptor Ljava/lang/Character$UnicodeBlock;
-field name COMMON_INDIC_NUMBER_FORMS descriptor Ljava/lang/Character$UnicodeBlock;
-field name PHAGS_PA descriptor Ljava/lang/Character$UnicodeBlock;
-field name SAURASHTRA descriptor Ljava/lang/Character$UnicodeBlock;
-field name DEVANAGARI_EXTENDED descriptor Ljava/lang/Character$UnicodeBlock;
-field name KAYAH_LI descriptor Ljava/lang/Character$UnicodeBlock;
-field name REJANG descriptor Ljava/lang/Character$UnicodeBlock;
-field name HANGUL_JAMO_EXTENDED_A descriptor Ljava/lang/Character$UnicodeBlock;
-field name JAVANESE descriptor Ljava/lang/Character$UnicodeBlock;
-field name CHAM descriptor Ljava/lang/Character$UnicodeBlock;
-field name MYANMAR_EXTENDED_A descriptor Ljava/lang/Character$UnicodeBlock;
-field name TAI_VIET descriptor Ljava/lang/Character$UnicodeBlock;
-field name ETHIOPIC_EXTENDED_A descriptor Ljava/lang/Character$UnicodeBlock;
-field name MEETEI_MAYEK descriptor Ljava/lang/Character$UnicodeBlock;
-field name HANGUL_JAMO_EXTENDED_B descriptor Ljava/lang/Character$UnicodeBlock;
-field name VERTICAL_FORMS descriptor Ljava/lang/Character$UnicodeBlock;
-field name ANCIENT_GREEK_NUMBERS descriptor Ljava/lang/Character$UnicodeBlock;
-field name ANCIENT_SYMBOLS descriptor Ljava/lang/Character$UnicodeBlock;
-field name PHAISTOS_DISC descriptor Ljava/lang/Character$UnicodeBlock;
-field name LYCIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name CARIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name OLD_PERSIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name IMPERIAL_ARAMAIC descriptor Ljava/lang/Character$UnicodeBlock;
-field name PHOENICIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name LYDIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name KHAROSHTHI descriptor Ljava/lang/Character$UnicodeBlock;
-field name OLD_SOUTH_ARABIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name AVESTAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name INSCRIPTIONAL_PARTHIAN descriptor Ljava/lang/Character$UnicodeBlock;
-field name INSCRIPTIONAL_PAHLAVI descriptor Ljava/lang/Character$UnicodeBlock;
-field name OLD_TURKIC descriptor Ljava/lang/Character$UnicodeBlock;
-field name RUMI_NUMERAL_SYMBOLS descriptor Ljava/lang/Character$UnicodeBlock;
-field name BRAHMI descriptor Ljava/lang/Character$UnicodeBlock;
-field name KAITHI descriptor Ljava/lang/Character$UnicodeBlock;
-field name CUNEIFORM descriptor Ljava/lang/Character$UnicodeBlock;
-field name CUNEIFORM_NUMBERS_AND_PUNCTUATION descriptor Ljava/lang/Character$UnicodeBlock;
-field name EGYPTIAN_HIEROGLYPHS descriptor Ljava/lang/Character$UnicodeBlock;
-field name BAMUM_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name KANA_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name ANCIENT_GREEK_MUSICAL_NOTATION descriptor Ljava/lang/Character$UnicodeBlock;
-field name COUNTING_ROD_NUMERALS descriptor Ljava/lang/Character$UnicodeBlock;
-field name MAHJONG_TILES descriptor Ljava/lang/Character$UnicodeBlock;
-field name DOMINO_TILES descriptor Ljava/lang/Character$UnicodeBlock;
-field name PLAYING_CARDS descriptor Ljava/lang/Character$UnicodeBlock;
-field name ENCLOSED_ALPHANUMERIC_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name ENCLOSED_IDEOGRAPHIC_SUPPLEMENT descriptor Ljava/lang/Character$UnicodeBlock;
-field name MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS descriptor Ljava/lang/Character$UnicodeBlock;
-field name EMOTICONS descriptor Ljava/lang/Character$UnicodeBlock;
-field name TRANSPORT_AND_MAP_SYMBOLS descriptor Ljava/lang/Character$UnicodeBlock;
-field name ALCHEMICAL_SYMBOLS descriptor Ljava/lang/Character$UnicodeBlock;
-field name CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C descriptor Ljava/lang/Character$UnicodeBlock;
-field name CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D descriptor Ljava/lang/Character$UnicodeBlock;
-class name java/lang/Character$UnicodeScript
class name java/lang/ClassLoader
-method name loadClass descriptor (Ljava/lang/String;Z)Ljava/lang/Class;
-method name getClassLoadingLock descriptor (Ljava/lang/String;)Ljava/lang/Object;
-method name setDefaultAssertionStatus descriptor (Z)V
-method name setPackageAssertionStatus descriptor (Ljava/lang/String;Z)V
-method name setClassAssertionStatus descriptor (Ljava/lang/String;Z)V
-method name clearAssertionStatus descriptor ()V
-method name registerAsParallelCapable descriptor ()Z
method name loadClass descriptor (Ljava/lang/String;Z)Ljava/lang/Class; thrownTypes java/lang/ClassNotFoundException flags 24 signature (Ljava/lang/String;Z)Ljava/lang/Class<*>;
method name setDefaultAssertionStatus descriptor (Z)V flags 21
method name setPackageAssertionStatus descriptor (Ljava/lang/String;Z)V flags 21
method name setClassAssertionStatus descriptor (Ljava/lang/String;Z)V flags 21
method name clearAssertionStatus descriptor ()V flags 21
class name java/lang/ClassNotFoundException
header extends java/lang/Exception flags 21
-class name java/lang/ClassValue
class name java/lang/Deprecated
header extends java/lang/Object implements java/lang/annotation/Annotation flags 2601 runtimeAnnotations @Ljava/lang/annotation/Documented;@Ljava/lang/annotation/Retention;(value=eLjava/lang/annotation/RetentionPolicy;RUNTIME;)
class name java/lang/Error
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
class name java/lang/Exception
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
class name java/lang/IllegalAccessException
header extends java/lang/Exception flags 21
class name java/lang/InstantiationException
header extends java/lang/Exception flags 21
class name java/lang/Integer
-method name compare descriptor (II)I
class name java/lang/LinkageError
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V
class name java/lang/Long
-method name compare descriptor (JJ)I
class name java/lang/NoSuchFieldException
header extends java/lang/Exception flags 21
class name java/lang/NoSuchMethodException
header extends java/lang/Exception flags 21
class name java/lang/ProcessBuilder
header extends java/lang/Object flags 31
-method name redirectInput descriptor (Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;
-method name redirectOutput descriptor (Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;
-method name redirectError descriptor (Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;
-method name redirectInput descriptor (Ljava/io/File;)Ljava/lang/ProcessBuilder;
-method name redirectOutput descriptor (Ljava/io/File;)Ljava/lang/ProcessBuilder;
-method name redirectError descriptor (Ljava/io/File;)Ljava/lang/ProcessBuilder;
-method name redirectInput descriptor ()Ljava/lang/ProcessBuilder$Redirect;
-method name redirectOutput descriptor ()Ljava/lang/ProcessBuilder$Redirect;
-method name redirectError descriptor ()Ljava/lang/ProcessBuilder$Redirect;
-method name inheritIO descriptor ()Ljava/lang/ProcessBuilder;
-class name java/lang/ProcessBuilder$Redirect
-class name java/lang/ProcessBuilder$Redirect$Type
-class name java/lang/ReflectiveOperationException
class name java/lang/RuntimeException
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
-class name java/lang/SafeVarargs
class name java/lang/Short
-method name compare descriptor (SS)I
class name java/lang/StrictMath
-method name ceil descriptor (D)D
-method name floor descriptor (D)D
method name ceil descriptor (D)D flags 109
method name floor descriptor (D)D flags 109
class name java/lang/System
-method name lineSeparator descriptor ()Ljava/lang/String;
class name java/lang/Thread
-method name clone descriptor ()Ljava/lang/Object;
class name java/lang/Throwable
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
-method name getCause descriptor ()Ljava/lang/Throwable;
-method name fillInStackTrace descriptor ()Ljava/lang/Throwable;
-method name addSuppressed descriptor (Ljava/lang/Throwable;)V
-method name getSuppressed descriptor ()[Ljava/lang/Throwable;
method name getCause descriptor ()Ljava/lang/Throwable; flags 1
method name fillInStackTrace descriptor ()Ljava/lang/Throwable; flags 121
-class name java/lang/invoke/CallSite
-class name java/lang/invoke/ConstantCallSite
-class name java/lang/invoke/MethodHandle
-class name java/lang/invoke/MethodHandleProxies
-class name java/lang/invoke/MethodHandles
-class name java/lang/invoke/MethodHandles$Lookup
-class name java/lang/invoke/MethodType
-class name java/lang/invoke/MutableCallSite
-class name java/lang/invoke/SwitchPoint
-class name java/lang/invoke/VolatileCallSite
-class name java/lang/invoke/WrongMethodTypeException
class name java/lang/reflect/InvocationTargetException
header extends java/lang/Exception flags 21
class name java/lang/reflect/Modifier
-method name classModifiers descriptor ()I
-method name interfaceModifiers descriptor ()I
-method name constructorModifiers descriptor ()I
-method name methodModifiers descriptor ()I
-method name fieldModifiers descriptor ()I
class name java/net/DatagramSocket
header extends java/lang/Object flags 21
class name java/net/HttpCookie
-method name isHttpOnly descriptor ()Z
-method name setHttpOnly descriptor (Z)V
class name java/net/HttpURLConnection
-field name fixedContentLengthLong descriptor J
-method name setFixedLengthStreamingMode descriptor (J)V
class name java/net/InetAddress
-method name getLoopbackAddress descriptor ()Ljava/net/InetAddress;
class name java/net/InetSocketAddress
-method name getHostString descriptor ()Ljava/lang/String;
class name java/net/NetworkInterface
-method name getIndex descriptor ()I
-method name getByIndex descriptor (I)Ljava/net/NetworkInterface;
-class name java/net/ProtocolFamily
class name java/net/ServerSocket
header extends java/lang/Object flags 21
class name java/net/Socket
header extends java/lang/Object flags 21
-class name java/net/SocketOption
-class name java/net/StandardProtocolFamily
-class name java/net/StandardSocketOptions
class name java/net/URLClassLoader
header extends java/security/SecureClassLoader flags 21
-method name getResourceAsStream descriptor (Ljava/lang/String;)Ljava/io/InputStream;
-method name close descriptor ()V
class name java/net/URLConnection
-method name getContentLengthLong descriptor ()J
-method name getHeaderFieldLong descriptor (Ljava/lang/String;J)J
class name java/nio/CharBuffer
-method name subSequence descriptor (II)Ljava/nio/CharBuffer;
-method name subSequence descriptor (II)Ljava/lang/CharSequence;
method name subSequence descriptor (II)Ljava/lang/CharSequence; flags 401
-class name java/nio/channels/AcceptPendingException
-class name java/nio/channels/AlreadyBoundException
-class name java/nio/channels/AsynchronousByteChannel
-class name java/nio/channels/AsynchronousChannel
-class name java/nio/channels/AsynchronousChannelGroup
-class name java/nio/channels/AsynchronousFileChannel
-class name java/nio/channels/AsynchronousServerSocketChannel
-class name java/nio/channels/AsynchronousSocketChannel
class name java/nio/channels/Channels
-method name newInputStream descriptor (Ljava/nio/channels/AsynchronousByteChannel;)Ljava/io/InputStream;
-method name newOutputStream descriptor (Ljava/nio/channels/AsynchronousByteChannel;)Ljava/io/OutputStream;
-class name java/nio/channels/CompletionHandler
class name java/nio/channels/DatagramChannel
header extends java/nio/channels/spi/AbstractSelectableChannel implements java/nio/channels/ByteChannel,java/nio/channels/ScatteringByteChannel,java/nio/channels/GatheringByteChannel flags 421
-method name open descriptor (Ljava/net/ProtocolFamily;)Ljava/nio/channels/DatagramChannel;
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/DatagramChannel;
-method name getRemoteAddress descriptor ()Ljava/net/SocketAddress;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/NetworkChannel;
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/NetworkChannel;
class name java/nio/channels/FileChannel
header extends java/nio/channels/spi/AbstractInterruptibleChannel implements java/nio/channels/ByteChannel,java/nio/channels/GatheringByteChannel,java/nio/channels/ScatteringByteChannel flags 421
innerclass innerClass java/nio/channels/FileChannel$MapMode outerClass java/nio/channels/FileChannel innerClassName MapMode flags 9
-method name open descriptor (Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;
-method name open descriptor (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel;
-method name truncate descriptor (J)Ljava/nio/channels/SeekableByteChannel;
-method name position descriptor (J)Ljava/nio/channels/SeekableByteChannel;
class name java/nio/channels/FileLock
header extends java/lang/Object flags 421
-method name <init> descriptor (Ljava/nio/channels/AsynchronousFileChannel;JJZ)V
-method name acquiredBy descriptor ()Ljava/nio/channels/Channel;
-method name close descriptor ()V
-class name java/nio/channels/IllegalChannelGroupException
-class name java/nio/channels/InterruptedByTimeoutException
-class name java/nio/channels/MembershipKey
-class name java/nio/channels/MulticastChannel
-class name java/nio/channels/NetworkChannel
-class name java/nio/channels/ReadPendingException
-class name java/nio/channels/SeekableByteChannel
class name java/nio/channels/Selector
header extends java/lang/Object flags 421
class name java/nio/channels/ServerSocketChannel
header extends java/nio/channels/spi/AbstractSelectableChannel flags 421
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/ServerSocketChannel;
-method name bind descriptor (Ljava/net/SocketAddress;I)Ljava/nio/channels/ServerSocketChannel;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/ServerSocketChannel;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/NetworkChannel;
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/NetworkChannel;
-class name java/nio/channels/ShutdownChannelGroupException
class name java/nio/channels/SocketChannel
header extends java/nio/channels/spi/AbstractSelectableChannel implements java/nio/channels/ByteChannel,java/nio/channels/ScatteringByteChannel,java/nio/channels/GatheringByteChannel flags 421
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
-method name shutdownInput descriptor ()Ljava/nio/channels/SocketChannel;
-method name shutdownOutput descriptor ()Ljava/nio/channels/SocketChannel;
-method name getRemoteAddress descriptor ()Ljava/net/SocketAddress;
-method name setOption descriptor (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/NetworkChannel;
-method name bind descriptor (Ljava/net/SocketAddress;)Ljava/nio/channels/NetworkChannel;
-class name java/nio/channels/WritePendingException
-class name java/nio/channels/spi/AsynchronousChannelProvider
class name java/nio/channels/spi/SelectorProvider
-method name openDatagramChannel descriptor (Ljava/net/ProtocolFamily;)Ljava/nio/channels/DatagramChannel;
-class name java/nio/charset/StandardCharsets
-class name java/nio/file/AccessDeniedException
-class name java/nio/file/AccessMode
-class name java/nio/file/AtomicMoveNotSupportedException
-class name java/nio/file/ClosedDirectoryStreamException
-class name java/nio/file/ClosedFileSystemException
-class name java/nio/file/ClosedWatchServiceException
-class name java/nio/file/CopyOption
-class name java/nio/file/DirectoryIteratorException
-class name java/nio/file/DirectoryNotEmptyException
-class name java/nio/file/DirectoryStream
-class name java/nio/file/DirectoryStream$Filter
-class name java/nio/file/FileAlreadyExistsException
-class name java/nio/file/FileStore
-class name java/nio/file/FileSystem
-class name java/nio/file/FileSystemAlreadyExistsException
-class name java/nio/file/FileSystemException
-class name java/nio/file/FileSystemLoopException
-class name java/nio/file/FileSystemNotFoundException
-class name java/nio/file/FileSystems
-class name java/nio/file/FileVisitOption
-class name java/nio/file/FileVisitResult
-class name java/nio/file/FileVisitor
-class name java/nio/file/Files
-class name java/nio/file/InvalidPathException
-class name java/nio/file/LinkOption
-class name java/nio/file/LinkPermission
-class name java/nio/file/NoSuchFileException
-class name java/nio/file/NotDirectoryException
-class name java/nio/file/NotLinkException
-class name java/nio/file/OpenOption
-class name java/nio/file/Path
-class name java/nio/file/PathMatcher
-class name java/nio/file/Paths
-class name java/nio/file/ProviderMismatchException
-class name java/nio/file/ProviderNotFoundException
-class name java/nio/file/ReadOnlyFileSystemException
-class name java/nio/file/SecureDirectoryStream
-class name java/nio/file/SimpleFileVisitor
-class name java/nio/file/StandardCopyOption
-class name java/nio/file/StandardOpenOption
-class name java/nio/file/StandardWatchEventKinds
-class name java/nio/file/WatchEvent
-class name java/nio/file/WatchEvent$Kind
-class name java/nio/file/WatchEvent$Modifier
-class name java/nio/file/WatchKey
-class name java/nio/file/WatchService
-class name java/nio/file/Watchable
-class name java/nio/file/attribute/AclEntry
-class name java/nio/file/attribute/AclEntry$Builder
-class name java/nio/file/attribute/AclEntryFlag
-class name java/nio/file/attribute/AclEntryPermission
-class name java/nio/file/attribute/AclEntryType
-class name java/nio/file/attribute/AclFileAttributeView
-class name java/nio/file/attribute/AttributeView
-class name java/nio/file/attribute/BasicFileAttributeView
-class name java/nio/file/attribute/BasicFileAttributes
-class name java/nio/file/attribute/DosFileAttributeView
-class name java/nio/file/attribute/DosFileAttributes
-class name java/nio/file/attribute/FileAttribute
-class name java/nio/file/attribute/FileAttributeView
-class name java/nio/file/attribute/FileOwnerAttributeView
-class name java/nio/file/attribute/FileStoreAttributeView
-class name java/nio/file/attribute/FileTime
-class name java/nio/file/attribute/GroupPrincipal
-class name java/nio/file/attribute/PosixFileAttributeView
-class name java/nio/file/attribute/PosixFileAttributes
-class name java/nio/file/attribute/PosixFilePermission
-class name java/nio/file/attribute/PosixFilePermissions
-class name java/nio/file/attribute/UserDefinedFileAttributeView
-class name java/nio/file/attribute/UserPrincipal
-class name java/nio/file/attribute/UserPrincipalLookupService
-class name java/nio/file/attribute/UserPrincipalNotFoundException
-class name java/nio/file/spi/FileSystemProvider
-class name java/nio/file/spi/FileTypeDetector
-class name java/security/AlgorithmConstraints
-class name java/security/CryptoPrimitive
-class name java/security/cert/CRLReason
class name java/security/cert/CertPathValidatorException
header extends java/security/GeneralSecurityException flags 21
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;ILjava/security/cert/CertPathValidatorException$Reason;)V
-method name getReason descriptor ()Ljava/security/cert/CertPathValidatorException$Reason;
-class name java/security/cert/CertPathValidatorException$BasicReason
-class name java/security/cert/CertPathValidatorException$Reason
-class name java/security/cert/CertificateRevokedException
-class name java/security/cert/Extension
-class name java/security/cert/PKIXReason
class name java/security/cert/X509CRLEntry
-method name getRevocationReason descriptor ()Ljava/security/cert/CRLReason;
class name java/util/ArrayList
-method name removeAll descriptor (Ljava/util/Collection;)Z
-method name retainAll descriptor (Ljava/util/Collection;)Z
-method name listIterator descriptor (I)Ljava/util/ListIterator;
-method name listIterator descriptor ()Ljava/util/ListIterator;
-method name iterator descriptor ()Ljava/util/Iterator;
-method name subList descriptor (II)Ljava/util/List;
class name java/util/Arrays
-method name asList descriptor ([Ljava/lang/Object;)Ljava/util/List;
method name asList descriptor ([Ljava/lang/Object;)Ljava/util/List; flags 89 signature <T:Ljava/lang/Object;>([TT;)Ljava/util/List<TT;>;
class name java/util/BitSet
-method name valueOf descriptor ([J)Ljava/util/BitSet;
-method name valueOf descriptor (Ljava/nio/LongBuffer;)Ljava/util/BitSet;
-method name valueOf descriptor ([B)Ljava/util/BitSet;
-method name valueOf descriptor (Ljava/nio/ByteBuffer;)Ljava/util/BitSet;
-method name toByteArray descriptor ()[B
-method name toLongArray descriptor ()[J
-method name previousSetBit descriptor (I)I
-method name previousClearBit descriptor (I)I
class name java/util/Calendar
-method name isWeekDateSupported descriptor ()Z
-method name getWeekYear descriptor ()I
-method name setWeekDate descriptor (III)V
-method name getWeeksInWeekYear descriptor ()I
class name java/util/Collections
-method name emptyIterator descriptor ()Ljava/util/Iterator;
-method name emptyListIterator descriptor ()Ljava/util/ListIterator;
-method name emptyEnumeration descriptor ()Ljava/util/Enumeration;
-method name addAll descriptor (Ljava/util/Collection;[Ljava/lang/Object;)Z
method name addAll descriptor (Ljava/util/Collection;[Ljava/lang/Object;)Z flags 89 signature <T:Ljava/lang/Object;>(Ljava/util/Collection<-TT;>;[TT;)Z
class name java/util/ConcurrentModificationException
-method name <init> descriptor (Ljava/lang/Throwable;)V
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V
class name java/util/Currency
-method name getAvailableCurrencies descriptor ()Ljava/util/Set;
-method name getNumericCode descriptor ()I
-method name getDisplayName descriptor ()Ljava/lang/String;
-method name getDisplayName descriptor (Ljava/util/Locale;)Ljava/lang/String;
class name java/util/EnumMap
-method name hashCode descriptor ()I
class name java/util/EnumSet
-method name of descriptor (Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet;
method name of descriptor (Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet; flags 89 signature <E:Ljava/lang/Enum<TE;>;>(TE;[TE;)Ljava/util/EnumSet<TE;>;
class name java/util/EventListenerProxy
header extends java/lang/Object implements java/util/EventListener flags 421
-method name <init> descriptor (Ljava/util/EventListener;)V
-method name getListener descriptor ()Ljava/util/EventListener;
method name <init> descriptor (Ljava/util/EventListener;)V flags 1
method name getListener descriptor ()Ljava/util/EventListener; flags 1
class name java/util/GregorianCalendar
-method name isWeekDateSupported descriptor ()Z
-method name getWeekYear descriptor ()I
-method name setWeekDate descriptor (III)V
-method name getWeeksInWeekYear descriptor ()I
-class name java/util/IllformedLocaleException
class name java/util/Locale
header extends java/lang/Object implements java/lang/Cloneable,java/io/Serializable flags 31
-field name PRIVATE_USE_EXTENSION descriptor C
-field name UNICODE_LOCALE_EXTENSION descriptor C
-method name getDefault descriptor (Ljava/util/Locale$Category;)Ljava/util/Locale;
-method name setDefault descriptor (Ljava/util/Locale$Category;Ljava/util/Locale;)V
-method name getScript descriptor ()Ljava/lang/String;
-method name getExtension descriptor (C)Ljava/lang/String;
-method name getExtensionKeys descriptor ()Ljava/util/Set;
-method name getUnicodeLocaleAttributes descriptor ()Ljava/util/Set;
-method name getUnicodeLocaleType descriptor (Ljava/lang/String;)Ljava/lang/String;
-method name getUnicodeLocaleKeys descriptor ()Ljava/util/Set;
-method name toLanguageTag descriptor ()Ljava/lang/String;
-method name forLanguageTag descriptor (Ljava/lang/String;)Ljava/util/Locale;
-method name getDisplayScript descriptor ()Ljava/lang/String;
-method name getDisplayScript descriptor (Ljava/util/Locale;)Ljava/lang/String;
-class name java/util/Locale$Builder
-class name java/util/Locale$Category
-class name java/util/Objects
class name java/util/Properties
-method name save descriptor (Ljava/io/OutputStream;Ljava/lang/String;)V
-method name storeToXML descriptor (Ljava/io/OutputStream;Ljava/lang/String;)V
-method name storeToXML descriptor (Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V
method name save descriptor (Ljava/io/OutputStream;Ljava/lang/String;)V flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;
method name storeToXML descriptor (Ljava/io/OutputStream;Ljava/lang/String;)V thrownTypes java/io/IOException flags 21
method name storeToXML descriptor (Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V thrownTypes java/io/IOException flags 21
class name java/util/Scanner
header extends java/lang/Object implements java/util/Iterator flags 31 signature Ljava/lang/Object;Ljava/util/Iterator<Ljava/lang/String;>;
-method name <init> descriptor (Ljava/nio/file/Path;)V
-method name <init> descriptor (Ljava/nio/file/Path;Ljava/lang/String;)V
class name java/util/SimpleTimeZone
-method name observesDaylightTime descriptor ()Z
class name java/util/TimeZone
-method name observesDaylightTime descriptor ()Z
class name java/util/Vector
-method name listIterator descriptor (I)Ljava/util/ListIterator;
-method name listIterator descriptor ()Ljava/util/ListIterator;
-method name iterator descriptor ()Ljava/util/Iterator;
-class name java/util/concurrent/ConcurrentLinkedDeque
class name java/util/concurrent/ConcurrentLinkedQueue
-method name addAll descriptor (Ljava/util/Collection;)Z
-class name java/util/concurrent/ForkJoinPool
-class name java/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory
-class name java/util/concurrent/ForkJoinPool$ManagedBlocker
-class name java/util/concurrent/ForkJoinTask
-class name java/util/concurrent/ForkJoinWorkerThread
class name java/util/concurrent/LinkedBlockingQueue
-method name contains descriptor (Ljava/lang/Object;)Z
-class name java/util/concurrent/LinkedTransferQueue
-class name java/util/concurrent/Phaser
-class name java/util/concurrent/RecursiveAction
-class name java/util/concurrent/RecursiveTask
class name java/util/concurrent/ScheduledThreadPoolExecutor
-method name setRemoveOnCancelPolicy descriptor (Z)V
-method name getRemoveOnCancelPolicy descriptor ()Z
method name remove descriptor (Ljava/lang/Runnable;)Z flags 1
-class name java/util/concurrent/ThreadLocalRandom
class name java/util/concurrent/ThreadPoolExecutor
-method name toString descriptor ()Ljava/lang/String;
-class name java/util/concurrent/TransferQueue
class name java/util/concurrent/locks/AbstractQueuedLongSynchronizer
-method name hasQueuedPredecessors descriptor ()Z
class name java/util/concurrent/locks/AbstractQueuedSynchronizer
-method name hasQueuedPredecessors descriptor ()Z
class name java/util/regex/Matcher
-method name group descriptor (Ljava/lang/String;)Ljava/lang/String;
class name java/util/regex/Pattern
-field name UNICODE_CHARACTER_CLASS descriptor I
class name java/util/spi/CurrencyNameProvider
-method name getDisplayName descriptor (Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
class name java/util/spi/LocaleNameProvider
-method name getDisplayScript descriptor (Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
class name java/util/zip/Deflater
-field name NO_FLUSH descriptor I
-field name SYNC_FLUSH descriptor I
-field name FULL_FLUSH descriptor I
-method name setInput descriptor ([BII)V
-method name setDictionary descriptor ([BII)V
-method name setStrategy descriptor (I)V
-method name setLevel descriptor (I)V
-method name finish descriptor ()V
-method name finished descriptor ()Z
-method name deflate descriptor ([BII)I
-method name deflate descriptor ([BIII)I
-method name getAdler descriptor ()I
-method name getBytesRead descriptor ()J
-method name getBytesWritten descriptor ()J
-method name reset descriptor ()V
-method name end descriptor ()V
method name setInput descriptor ([BII)V flags 21
method name setDictionary descriptor ([BII)V flags 21
method name setStrategy descriptor (I)V flags 21
method name setLevel descriptor (I)V flags 21
method name finish descriptor ()V flags 21
method name finished descriptor ()Z flags 21
method name deflate descriptor ([BII)I flags 21
method name getAdler descriptor ()I flags 21
method name getBytesRead descriptor ()J flags 21
method name getBytesWritten descriptor ()J flags 21
method name reset descriptor ()V flags 21
method name end descriptor ()V flags 21
class name java/util/zip/DeflaterOutputStream
-method name <init> descriptor (Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V
-method name <init> descriptor (Ljava/io/OutputStream;Ljava/util/zip/Deflater;Z)V
-method name <init> descriptor (Ljava/io/OutputStream;Z)V
-method name flush descriptor ()V
class name java/util/zip/GZIPOutputStream
-method name <init> descriptor (Ljava/io/OutputStream;IZ)V
-method name <init> descriptor (Ljava/io/OutputStream;Z)V
class name java/util/zip/Inflater
-method name setInput descriptor ([BII)V
-method name setDictionary descriptor ([BII)V
-method name getRemaining descriptor ()I
-method name needsInput descriptor ()Z
-method name needsDictionary descriptor ()Z
-method name finished descriptor ()Z
-method name inflate descriptor ([BII)I
-method name getAdler descriptor ()I
-method name getBytesRead descriptor ()J
-method name getBytesWritten descriptor ()J
-method name reset descriptor ()V
-method name end descriptor ()V
method name setInput descriptor ([BII)V flags 21
method name setDictionary descriptor ([BII)V flags 21
method name getRemaining descriptor ()I flags 21
method name needsInput descriptor ()Z flags 21
method name needsDictionary descriptor ()Z flags 21
method name finished descriptor ()Z flags 21
method name inflate descriptor ([BII)I thrownTypes java/util/zip/DataFormatException flags 21
method name getAdler descriptor ()I flags 21
method name getBytesRead descriptor ()J flags 21
method name getBytesWritten descriptor ()J flags 21
method name reset descriptor ()V flags 21
method name end descriptor ()V flags 21
class name java/util/zip/ZipFile
header extends java/lang/Object implements java/util/zip/ZipConstants flags 21
-method name <init> descriptor (Ljava/io/File;ILjava/nio/charset/Charset;)V
-method name <init> descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)V
-method name <init> descriptor (Ljava/io/File;Ljava/nio/charset/Charset;)V
-method name getComment descriptor ()Ljava/lang/String;
class name java/util/zip/ZipInputStream
-method name <init> descriptor (Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
class name java/util/zip/ZipOutputStream
-method name <init> descriptor (Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
-class name javax/crypto/AEADBadTagException
class name javax/crypto/Cipher
-method name updateAAD descriptor ([B)V
-method name updateAAD descriptor ([BII)V
-method name updateAAD descriptor (Ljava/nio/ByteBuffer;)V
class name javax/crypto/CipherSpi
-method name engineUpdateAAD descriptor ([BII)V
-method name engineUpdateAAD descriptor (Ljava/nio/ByteBuffer;)V
-class name javax/crypto/spec/GCMParameterSpec
-class name javax/net/ssl/ExtendedSSLSession
class name javax/net/ssl/SSLEngine
-method name getHandshakeSession descriptor ()Ljavax/net/ssl/SSLSession;
class name javax/net/ssl/SSLEngineResult
header extends java/lang/Object flags 21
innerclass innerClass javax/net/ssl/SSLEngineResult$HandshakeStatus outerClass javax/net/ssl/SSLEngineResult innerClassName HandshakeStatus flags 4019
innerclass innerClass javax/net/ssl/SSLEngineResult$Status outerClass javax/net/ssl/SSLEngineResult innerClassName Status flags 4019
class name javax/net/ssl/SSLParameters
-method name getAlgorithmConstraints descriptor ()Ljava/security/AlgorithmConstraints;
-method name setAlgorithmConstraints descriptor (Ljava/security/AlgorithmConstraints;)V
-method name getEndpointIdentificationAlgorithm descriptor ()Ljava/lang/String;
-method name setEndpointIdentificationAlgorithm descriptor (Ljava/lang/String;)V
class name javax/net/ssl/SSLServerSocket
-method name getSSLParameters descriptor ()Ljavax/net/ssl/SSLParameters;
-method name setSSLParameters descriptor (Ljavax/net/ssl/SSLParameters;)V
class name javax/net/ssl/SSLSocket
-method name getHandshakeSession descriptor ()Ljavax/net/ssl/SSLSession;
-class name javax/net/ssl/X509ExtendedTrustManager
class name javax/security/auth/login/Configuration
-method name getConfiguration descriptor ()Ljavax/security/auth/login/Configuration;
method name getConfiguration descriptor ()Ljavax/security/auth/login/Configuration; flags 29

View File

@ -1,102 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/lang/model/SourceVersion
-field name RELEASE_7 descriptor Ljavax/lang/model/SourceVersion;
-class name javax/lang/model/UnknownEntityException
class name javax/lang/model/element/ElementKind
-field name RESOURCE_VARIABLE descriptor Ljavax/lang/model/element/ElementKind;
class name javax/lang/model/element/ExecutableElement
header extends java/lang/Object implements javax/lang/model/element/Element flags 601
-method name getSimpleName descriptor ()Ljavax/lang/model/element/Name;
class name javax/lang/model/element/PackageElement
header extends java/lang/Object implements javax/lang/model/element/Element flags 601
-method name getSimpleName descriptor ()Ljavax/lang/model/element/Name;
-method name getEnclosingElement descriptor ()Ljavax/lang/model/element/Element;
-class name javax/lang/model/element/Parameterizable
-class name javax/lang/model/element/QualifiedNameable
class name javax/lang/model/element/TypeElement
header extends java/lang/Object implements javax/lang/model/element/Element flags 601
-method name getEnclosedElements descriptor ()Ljava/util/List;
-method name getSimpleName descriptor ()Ljavax/lang/model/element/Name;
-method name getEnclosingElement descriptor ()Ljavax/lang/model/element/Element;
class name javax/lang/model/element/TypeParameterElement
-method name getEnclosingElement descriptor ()Ljavax/lang/model/element/Element;
class name javax/lang/model/element/UnknownAnnotationValueException
header extends java/lang/RuntimeException flags 21
class name javax/lang/model/element/UnknownElementException
header extends java/lang/RuntimeException flags 21
class name javax/lang/model/type/MirroredTypeException
header extends java/lang/RuntimeException flags 21
class name javax/lang/model/type/TypeKind
-field name UNION descriptor Ljavax/lang/model/type/TypeKind;
class name javax/lang/model/type/TypeVisitor
-method name visitUnion descriptor (Ljavax/lang/model/type/UnionType;Ljava/lang/Object;)Ljava/lang/Object;
-class name javax/lang/model/type/UnionType
class name javax/lang/model/type/UnknownTypeException
header extends java/lang/RuntimeException flags 21
-class name javax/lang/model/util/AbstractAnnotationValueVisitor7
-class name javax/lang/model/util/AbstractElementVisitor7
class name javax/lang/model/util/AbstractTypeVisitor6
-method name visitUnion descriptor (Ljavax/lang/model/type/UnionType;Ljava/lang/Object;)Ljava/lang/Object;
-class name javax/lang/model/util/AbstractTypeVisitor7
class name javax/lang/model/util/ElementKindVisitor6
-method name visitVariableAsResourceVariable descriptor (Ljavax/lang/model/element/VariableElement;Ljava/lang/Object;)Ljava/lang/Object;
-class name javax/lang/model/util/ElementKindVisitor7
-class name javax/lang/model/util/ElementScanner7
-class name javax/lang/model/util/SimpleAnnotationValueVisitor7
-class name javax/lang/model/util/SimpleElementVisitor7
-class name javax/lang/model/util/SimpleTypeVisitor7
-class name javax/lang/model/util/TypeKindVisitor7

File diff suppressed because it is too large Load Diff

View File

@ -1,49 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name java/util/logging/Logger
-method name getGlobal descriptor ()Ljava/util/logging/Logger;
-method name getAnonymousLogger descriptor ()Ljava/util/logging/Logger;
-method name addHandler descriptor (Ljava/util/logging/Handler;)V
-method name removeHandler descriptor (Ljava/util/logging/Handler;)V
-method name getHandlers descriptor ()[Ljava/util/logging/Handler;
-method name setUseParentHandlers descriptor (Z)V
-method name getUseParentHandlers descriptor ()Z
-method name getLogger descriptor (Ljava/lang/String;)Ljava/util/logging/Logger;
-method name getLogger descriptor (Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-method name getAnonymousLogger descriptor (Ljava/lang/String;)Ljava/util/logging/Logger;
method name getLogger descriptor (Ljava/lang/String;)Ljava/util/logging/Logger; flags 29
method name getLogger descriptor (Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger; flags 29
method name getAnonymousLogger descriptor ()Ljava/util/logging/Logger; flags 29
method name getAnonymousLogger descriptor (Ljava/lang/String;)Ljava/util/logging/Logger; flags 29
method name addHandler descriptor (Ljava/util/logging/Handler;)V thrownTypes java/lang/SecurityException flags 21
method name removeHandler descriptor (Ljava/util/logging/Handler;)V thrownTypes java/lang/SecurityException flags 21
method name getHandlers descriptor ()[Ljava/util/logging/Handler; flags 21
method name setUseParentHandlers descriptor (Z)V flags 21
method name getUseParentHandlers descriptor ()Z flags 21

View File

@ -1,122 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name java/lang/management/BufferPoolMXBean
class name java/lang/management/ClassLoadingMXBean
header extends java/lang/Object flags 601
class name java/lang/management/CompilationMXBean
header extends java/lang/Object flags 601
class name java/lang/management/ManagementFactory
-method name getPlatformMXBean descriptor (Ljava/lang/Class;)Ljava/lang/management/PlatformManagedObject;
-method name getPlatformMXBeans descriptor (Ljava/lang/Class;)Ljava/util/List;
-method name getPlatformMXBean descriptor (Ljavax/management/MBeanServerConnection;Ljava/lang/Class;)Ljava/lang/management/PlatformManagedObject;
-method name getPlatformMXBeans descriptor (Ljavax/management/MBeanServerConnection;Ljava/lang/Class;)Ljava/util/List;
-method name getPlatformManagementInterfaces descriptor ()Ljava/util/Set;
class name java/lang/management/MemoryMXBean
header extends java/lang/Object flags 601
class name java/lang/management/MemoryManagerMXBean
header extends java/lang/Object flags 601
class name java/lang/management/MemoryPoolMXBean
header extends java/lang/Object flags 601
class name java/lang/management/OperatingSystemMXBean
header extends java/lang/Object flags 601
-class name java/lang/management/PlatformLoggingMXBean
-class name java/lang/management/PlatformManagedObject
class name java/lang/management/RuntimeMXBean
header extends java/lang/Object flags 601
class name java/lang/management/ThreadMXBean
header extends java/lang/Object flags 601
class name javax/management/AttributeValueExp
-method name setMBeanServer descriptor (Ljavax/management/MBeanServer;)V
method name setMBeanServer descriptor (Ljavax/management/MBeanServer;)V flags 1
class name javax/management/DefaultLoaderRepository
-method name loadClass descriptor (Ljava/lang/String;)Ljava/lang/Class;
-method name loadClassWithout descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;
method name loadClass descriptor (Ljava/lang/String;)Ljava/lang/Class; thrownTypes java/lang/ClassNotFoundException flags 9
method name loadClassWithout descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class; thrownTypes java/lang/ClassNotFoundException flags 9
class name javax/management/MBeanConstructorInfo
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;)V
method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;)V flags 1
class name javax/management/MBeanServerNotification
-method name toString descriptor ()Ljava/lang/String;
class name javax/management/ObjectName
-method name getInstance descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljavax/management/ObjectName;
-method name getInstance descriptor (Ljava/lang/String;Ljava/util/Hashtable;)Ljavax/management/ObjectName;
-method name getInstance descriptor (Ljavax/management/ObjectName;)Ljavax/management/ObjectName;
-method name <init> descriptor (Ljava/lang/String;)V
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-method name <init> descriptor (Ljava/lang/String;Ljava/util/Hashtable;)V
-method name isPropertyValuePattern descriptor (Ljava/lang/String;)Z
-method name getKeyProperty descriptor (Ljava/lang/String;)Ljava/lang/String;
-method name quote descriptor (Ljava/lang/String;)Ljava/lang/String;
-method name unquote descriptor (Ljava/lang/String;)Ljava/lang/String;
-method name apply descriptor (Ljavax/management/ObjectName;)Z
method name getInstance descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljavax/management/ObjectName; thrownTypes javax/management/MalformedObjectNameException,java/lang/NullPointerException flags 9
method name getInstance descriptor (Ljava/lang/String;Ljava/util/Hashtable;)Ljavax/management/ObjectName; thrownTypes javax/management/MalformedObjectNameException,java/lang/NullPointerException flags 9 signature (Ljava/lang/String;Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)Ljavax/management/ObjectName;
method name getInstance descriptor (Ljavax/management/ObjectName;)Ljavax/management/ObjectName; thrownTypes java/lang/NullPointerException flags 9
method name <init> descriptor (Ljava/lang/String;)V thrownTypes javax/management/MalformedObjectNameException,java/lang/NullPointerException flags 1
method name <init> descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V thrownTypes javax/management/MalformedObjectNameException,java/lang/NullPointerException flags 1
method name <init> descriptor (Ljava/lang/String;Ljava/util/Hashtable;)V thrownTypes javax/management/MalformedObjectNameException,java/lang/NullPointerException flags 1 signature (Ljava/lang/String;Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V
method name isPropertyValuePattern descriptor (Ljava/lang/String;)Z thrownTypes java/lang/NullPointerException,java/lang/IllegalArgumentException flags 1
method name getKeyProperty descriptor (Ljava/lang/String;)Ljava/lang/String; thrownTypes java/lang/NullPointerException flags 1
method name quote descriptor (Ljava/lang/String;)Ljava/lang/String; thrownTypes java/lang/NullPointerException flags 9
method name unquote descriptor (Ljava/lang/String;)Ljava/lang/String; thrownTypes java/lang/IllegalArgumentException,java/lang/NullPointerException flags 9
method name apply descriptor (Ljavax/management/ObjectName;)Z thrownTypes java/lang/NullPointerException flags 1
class name javax/management/StringValueExp
-method name setMBeanServer descriptor (Ljavax/management/MBeanServer;)V
method name setMBeanServer descriptor (Ljavax/management/MBeanServer;)V flags 1
class name javax/management/loading/DefaultLoaderRepository
-method name loadClass descriptor (Ljava/lang/String;)Ljava/lang/Class;
-method name loadClassWithout descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;
method name loadClass descriptor (Ljava/lang/String;)Ljava/lang/Class; thrownTypes java/lang/ClassNotFoundException flags 9
method name loadClassWithout descriptor (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class; thrownTypes java/lang/ClassNotFoundException flags 9
class name javax/management/modelmbean/ModelMBeanConstructorInfo
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;)V
-method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;Ljavax/management/Descriptor;)V
method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;)V flags 1
method name <init> descriptor (Ljava/lang/String;Ljava/lang/reflect/Constructor;Ljavax/management/Descriptor;)V flags 1

View File

@ -1,31 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/rmi/ssl/SslRMIServerSocketFactory
-method name <init> descriptor (Ljavax/net/ssl/SSLContext;[Ljava/lang/String;[Ljava/lang/String;Z)V

View File

@ -1,30 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name javax/security/auth/kerberos/KeyTab

View File

@ -1,65 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name java/sql/CallableStatement
-method name getObject descriptor (ILjava/lang/Class;)Ljava/lang/Object;
-method name getObject descriptor (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
class name java/sql/Connection
header extends java/lang/Object implements java/sql/Wrapper flags 601
-method name setSchema descriptor (Ljava/lang/String;)V
-method name getSchema descriptor ()Ljava/lang/String;
-method name abort descriptor (Ljava/util/concurrent/Executor;)V
-method name setNetworkTimeout descriptor (Ljava/util/concurrent/Executor;I)V
-method name getNetworkTimeout descriptor ()I
class name java/sql/DatabaseMetaData
-method name getPseudoColumns descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
-method name generatedKeyAlwaysReturned descriptor ()Z
class name java/sql/Driver
-method name getParentLogger descriptor ()Ljava/util/logging/Logger;
-class name java/sql/PseudoColumnUsage
class name java/sql/ResultSet
header extends java/lang/Object implements java/sql/Wrapper flags 601
-method name getObject descriptor (ILjava/lang/Class;)Ljava/lang/Object;
-method name getObject descriptor (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
class name java/sql/Statement
header extends java/lang/Object implements java/sql/Wrapper flags 601
-method name closeOnCompletion descriptor ()V
-method name isCloseOnCompletion descriptor ()Z
class name java/sql/Timestamp
-method name hashCode descriptor ()I
class name javax/sql/CommonDataSource
-method name getParentLogger descriptor ()Ljava/util/logging/Logger;

View File

@ -1,74 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/sql/rowset/CachedRowSet
-field name COMMIT_ON_ACCEPT_CHANGES descriptor Z
field name COMMIT_ON_ACCEPT_CHANGES descriptor Z constantValue true flags 19
-class name javax/sql/rowset/RowSetFactory
-class name javax/sql/rowset/RowSetProvider
class name javax/sql/rowset/WebRowSet
-field name PUBLIC_XML_SCHEMA descriptor Ljava/lang/String;
field name PUBLIC_XML_SCHEMA descriptor Ljava/lang/String; constantValue --//Sun\u0020;Microsystems,\u0020;Inc.//XSD\u0020;Schema//EN flags 19
class name javax/sql/rowset/spi/SyncFactory
-field name ROWSET_SYNC_PROVIDER descriptor Ljava/lang/String;
-field name ROWSET_SYNC_VENDOR descriptor Ljava/lang/String;
-field name ROWSET_SYNC_PROVIDER_VERSION descriptor Ljava/lang/String;
field name ROWSET_SYNC_PROVIDER descriptor Ljava/lang/String; flags 9
field name ROWSET_SYNC_VENDOR descriptor Ljava/lang/String; flags 9
field name ROWSET_SYNC_PROVIDER_VERSION descriptor Ljava/lang/String; flags 9
-method name setJNDIContext descriptor (Ljavax/naming/Context;)V
method name setJNDIContext descriptor (Ljavax/naming/Context;)V thrownTypes javax/sql/rowset/spi/SyncFactoryException flags 9
class name javax/sql/rowset/spi/SyncProvider
-field name GRADE_NONE descriptor I
-field name GRADE_CHECK_MODIFIED_AT_COMMIT descriptor I
-field name GRADE_CHECK_ALL_AT_COMMIT descriptor I
-field name GRADE_LOCK_WHEN_MODIFIED descriptor I
-field name GRADE_LOCK_WHEN_LOADED descriptor I
-field name DATASOURCE_NO_LOCK descriptor I
-field name DATASOURCE_ROW_LOCK descriptor I
-field name DATASOURCE_TABLE_LOCK descriptor I
-field name DATASOURCE_DB_LOCK descriptor I
-field name UPDATABLE_VIEW_SYNC descriptor I
-field name NONUPDATABLE_VIEW_SYNC descriptor I
field name GRADE_NONE descriptor I flags 9
field name GRADE_CHECK_MODIFIED_AT_COMMIT descriptor I flags 9
field name GRADE_CHECK_ALL_AT_COMMIT descriptor I flags 9
field name GRADE_LOCK_WHEN_MODIFIED descriptor I flags 9
field name GRADE_LOCK_WHEN_LOADED descriptor I flags 9
field name DATASOURCE_NO_LOCK descriptor I flags 9
field name DATASOURCE_ROW_LOCK descriptor I flags 9
field name DATASOURCE_TABLE_LOCK descriptor I flags 9
field name DATASOURCE_DB_LOCK descriptor I flags 9
field name UPDATABLE_VIEW_SYNC descriptor I flags 9
field name NONUPDATABLE_VIEW_SYNC descriptor I flags 9

View File

@ -1,61 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/xml/parsers/FactoryConfigurationError
-method name getCause descriptor ()Ljava/lang/Throwable;
class name javax/xml/stream/FactoryConfigurationError
-method name getCause descriptor ()Ljava/lang/Throwable;
class name javax/xml/stream/XMLEventFactory
-method name newFactory descriptor ()Ljavax/xml/stream/XMLEventFactory;
-method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLEventFactory;
-method name newFactory descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLEventFactory;
method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLEventFactory; thrownTypes javax/xml/stream/FactoryConfigurationError flags 9
class name javax/xml/stream/XMLInputFactory
-method name newFactory descriptor ()Ljavax/xml/stream/XMLInputFactory;
-method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory;
-method name newFactory descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory;
method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory; thrownTypes javax/xml/stream/FactoryConfigurationError flags 9
class name javax/xml/stream/XMLOutputFactory
-method name newFactory descriptor ()Ljavax/xml/stream/XMLOutputFactory;
-method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory;
-method name newFactory descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLOutputFactory;
method name newInstance descriptor (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory; thrownTypes javax/xml/stream/FactoryConfigurationError flags 9
class name javax/xml/transform/TransformerFactoryConfigurationError
-method name getCause descriptor ()Ljava/lang/Throwable;
class name org/xml/sax/SAXException
-method name getCause descriptor ()Ljava/lang/Throwable;
class name org/xml/sax/SAXParseException
-method name toString descriptor ()Ljava/lang/String;

View File

@ -1,37 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name javax/xml/bind/JAXBPermission
class name javax/xml/bind/annotation/XmlElement
header extends java/lang/Object implements java/lang/annotation/Annotation flags 2601 runtimeAnnotations @Ljava/lang/annotation/Retention;(value=eLjava/lang/annotation/RetentionPolicy;RUNTIME;)@Ljava/lang/annotation/Target;(value={eLjava/lang/annotation/ElementType;FIELD;eLjava/lang/annotation/ElementType;METHOD;})
innerclass innerClass javax/xml/bind/annotation/XmlElement$DEFAULT outerClass javax/xml/bind/annotation/XmlElement innerClassName DEFAULT flags 19
class name javax/xml/bind/annotation/XmlElementRef
-method name required descriptor ()Z

View File

@ -1,103 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/xml/ws/Endpoint
-method name create descriptor (Ljava/lang/Object;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
-method name create descriptor (Ljava/lang/String;Ljava/lang/Object;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
-method name publish descriptor (Ljava/lang/String;Ljava/lang/Object;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
-method name publish descriptor (Ljavax/xml/ws/spi/http/HttpContext;)V
-method name setEndpointContext descriptor (Ljavax/xml/ws/EndpointContext;)V
-class name javax/xml/ws/EndpointContext
class name javax/xml/ws/FaultAction
-method name className descriptor ()Ljava/lang/Class;
method name className descriptor ()Ljava/lang/Class; flags 401
class name javax/xml/ws/Holder
header extends java/lang/Object flags 31 signature <T:Ljava/lang/Object;>Ljava/lang/Object;
class name javax/xml/ws/RequestWrapper
-method name partName descriptor ()Ljava/lang/String;
class name javax/xml/ws/RespectBinding
header extends java/lang/Object implements java/lang/annotation/Annotation flags 2601 runtimeAnnotations @Ljava/lang/annotation/Target;(value={eLjava/lang/annotation/ElementType;TYPE;})@Ljava/lang/annotation/Retention;(value=eLjava/lang/annotation/RetentionPolicy;RUNTIME;)@Ljava/lang/annotation/Documented;@Ljavax/xml/ws/spi/WebServiceFeatureAnnotation;(id="javax.xml.ws.RespectBindingFeature",bean=cLjavax/xml/ws/RespectBindingFeature;)
class name javax/xml/ws/ResponseWrapper
-method name partName descriptor ()Ljava/lang/String;
class name javax/xml/ws/Service
-method name <init> descriptor (Ljava/net/URL;Ljavax/xml/namespace/QName;[Ljavax/xml/ws/WebServiceFeature;)V
-method name create descriptor (Ljava/net/URL;Ljavax/xml/namespace/QName;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Service;
-method name create descriptor (Ljavax/xml/namespace/QName;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Service;
class name javax/xml/ws/WebFault
-method name messageName descriptor ()Ljava/lang/String;
class name javax/xml/ws/WebServiceRef
-method name type descriptor ()Ljava/lang/Class;
-method name value descriptor ()Ljava/lang/Class;
-method name lookup descriptor ()Ljava/lang/String;
method name type descriptor ()Ljava/lang/Class; annotationDefaultValue cLjava/lang/Object; flags 401
method name value descriptor ()Ljava/lang/Class; annotationDefaultValue cLjava/lang/Object; flags 401
class name javax/xml/ws/soap/Addressing
header extends java/lang/Object implements java/lang/annotation/Annotation flags 2601 runtimeAnnotations @Ljava/lang/annotation/Target;(value={eLjava/lang/annotation/ElementType;TYPE;})@Ljava/lang/annotation/Retention;(value=eLjava/lang/annotation/RetentionPolicy;RUNTIME;)@Ljava/lang/annotation/Documented;@Ljavax/xml/ws/spi/WebServiceFeatureAnnotation;(id="http://www.w3.org/2005/08/addressing/module",bean=cLjavax/xml/ws/soap/AddressingFeature;)
-method name responses descriptor ()Ljavax/xml/ws/soap/AddressingFeature$Responses;
class name javax/xml/ws/soap/AddressingFeature
header extends javax/xml/ws/WebServiceFeature flags 31
-method name <init> descriptor (ZZLjavax/xml/ws/soap/AddressingFeature$Responses;)V
-method name getResponses descriptor ()Ljavax/xml/ws/soap/AddressingFeature$Responses;
-class name javax/xml/ws/soap/AddressingFeature$Responses
class name javax/xml/ws/soap/MTOM
header extends java/lang/Object implements java/lang/annotation/Annotation flags 2601 runtimeAnnotations @Ljava/lang/annotation/Target;(value={eLjava/lang/annotation/ElementType;TYPE;})@Ljava/lang/annotation/Retention;(value=eLjava/lang/annotation/RetentionPolicy;RUNTIME;)@Ljava/lang/annotation/Documented;@Ljavax/xml/ws/spi/WebServiceFeatureAnnotation;(id="http://www.w3.org/2004/08/soap/features/http-optimization",bean=cLjavax/xml/ws/soap/MTOMFeature;)
-class name javax/xml/ws/spi/Invoker
class name javax/xml/ws/spi/Provider
-method name createServiceDelegate descriptor (Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)Ljavax/xml/ws/spi/ServiceDelegate;
-method name createServiceDelegate descriptor (Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/spi/ServiceDelegate;
-method name createW3CEndpointReference descriptor (Ljava/lang/String;Ljavax/xml/namespace/QName;Ljavax/xml/namespace/QName;Ljavax/xml/namespace/QName;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/Map;)Ljavax/xml/ws/wsaddressing/W3CEndpointReference;
-method name createAndPublishEndpoint descriptor (Ljava/lang/String;Ljava/lang/Object;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
-method name createEndpoint descriptor (Ljava/lang/String;Ljava/lang/Object;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
-method name createEndpoint descriptor (Ljava/lang/String;Ljava/lang/Class;Ljavax/xml/ws/spi/Invoker;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Endpoint;
method name createServiceDelegate descriptor (Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)Ljavax/xml/ws/spi/ServiceDelegate; flags 401
-class name javax/xml/ws/spi/http/HttpContext
-class name javax/xml/ws/spi/http/HttpExchange
-class name javax/xml/ws/spi/http/HttpHandler
-class name javax/xml/ws/wsaddressing/W3CEndpointReference
-class name javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder

View File

@ -1,31 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name javax/annotation/Resource
-method name lookup descriptor ()Ljava/lang/String;

View File

@ -1,39 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name com/sun/management/GarbageCollectionNotificationInfo
class name com/sun/management/HotSpotDiagnosticMXBean
header extends java/lang/Object flags 601
class name com/sun/management/OperatingSystemMXBean
-method name getSystemCpuLoad descriptor ()D
-method name getProcessCpuLoad descriptor ()D
-class name com/sun/management/ThreadMXBean

View File

@ -1,70 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name com/sun/nio/sctp/AbstractNotificationHandler
-class name com/sun/nio/sctp/Association
-class name com/sun/nio/sctp/AssociationChangeNotification
-class name com/sun/nio/sctp/AssociationChangeNotification$AssocChangeEvent
-class name com/sun/nio/sctp/HandlerResult
-class name com/sun/nio/sctp/IllegalReceiveException
-class name com/sun/nio/sctp/IllegalUnbindException
-class name com/sun/nio/sctp/InvalidStreamException
-class name com/sun/nio/sctp/MessageInfo
-class name com/sun/nio/sctp/Notification
-class name com/sun/nio/sctp/NotificationHandler
-class name com/sun/nio/sctp/PeerAddressChangeNotification
-class name com/sun/nio/sctp/PeerAddressChangeNotification$AddressChangeEvent
-class name com/sun/nio/sctp/SctpChannel
-class name com/sun/nio/sctp/SctpMultiChannel
-class name com/sun/nio/sctp/SctpServerChannel
-class name com/sun/nio/sctp/SctpSocketOption
-class name com/sun/nio/sctp/SctpStandardSocketOptions
-class name com/sun/nio/sctp/SctpStandardSocketOptions$InitMaxStreams
-class name com/sun/nio/sctp/SendFailedNotification
-class name com/sun/nio/sctp/ShutdownNotification

View File

@ -1,36 +0,0 @@
#
# Copyright (c) 2015, 2017, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
-class name com/sun/security/jgss/AuthorizationDataEntry
-class name com/sun/security/jgss/ExtendedGSSContext
-class name com/sun/security/jgss/InquireSecContextPermission
-class name com/sun/security/jgss/InquireType

View File

@ -29,9 +29,8 @@
#command used to generate this file:
#build.tools.symbolgenerator.CreateSymbols build-description-incremental symbols include.list
#
generate platforms 6:7:8:9:A
generate platforms 7:8:9:A
platform version 8 files java.activation-8.sym.txt:java.base-8.sym.txt:java.compiler-8.sym.txt:java.corba-8.sym.txt:java.datatransfer-8.sym.txt:java.desktop-8.sym.txt:java.instrument-8.sym.txt:java.logging-8.sym.txt:java.management-8.sym.txt:java.management.rmi-8.sym.txt:java.naming-8.sym.txt:java.prefs-8.sym.txt:java.rmi-8.sym.txt:java.scripting-8.sym.txt:java.security.jgss-8.sym.txt:java.security.sasl-8.sym.txt:java.sql-8.sym.txt:java.sql.rowset-8.sym.txt:java.transaction-8.sym.txt:java.xml-8.sym.txt:java.xml.bind-8.sym.txt:java.xml.crypto-8.sym.txt:java.xml.ws-8.sym.txt:java.xml.ws.annotation-8.sym.txt:jdk.httpserver-8.sym.txt:jdk.management-8.sym.txt:jdk.scripting.nashorn-8.sym.txt:jdk.sctp-8.sym.txt:jdk.security.auth-8.sym.txt:jdk.security.jgss-8.sym.txt
platform version 7 base 8 files java.base-7.sym.txt:java.compiler-7.sym.txt:java.datatransfer-7.sym.txt:java.desktop-7.sym.txt:java.logging-7.sym.txt:java.management-7.sym.txt:java.naming-7.sym.txt:java.prefs-7.sym.txt:java.rmi-7.sym.txt:java.scripting-7.sym.txt:java.security.jgss-7.sym.txt:java.security.sasl-7.sym.txt:java.sql-7.sym.txt:java.sql.rowset-7.sym.txt:java.xml-7.sym.txt:java.xml.bind-7.sym.txt:java.xml.ws.annotation-7.sym.txt:jdk.httpserver-7.sym.txt:jdk.management-7.sym.txt:jdk.scripting.nashorn-7.sym.txt:jdk.sctp-7.sym.txt:jdk.security.auth-7.sym.txt:jdk.security.jgss-7.sym.txt
platform version 6 base 7 files java.base-6.sym.txt:java.compiler-6.sym.txt:java.desktop-6.sym.txt:java.logging-6.sym.txt:java.management-6.sym.txt:java.rmi-6.sym.txt:java.security.jgss-6.sym.txt:java.sql-6.sym.txt:java.sql.rowset-6.sym.txt:java.xml-6.sym.txt:java.xml.bind-6.sym.txt:java.xml.ws-6.sym.txt:java.xml.ws.annotation-6.sym.txt:jdk.management-6.sym.txt:jdk.sctp-6.sym.txt:jdk.security.jgss-6.sym.txt
platform version 9 base 8 files java.activation-9.sym.txt:java.base-9.sym.txt:java.compiler-9.sym.txt:java.corba-9.sym.txt:java.datatransfer-9.sym.txt:java.desktop-9.sym.txt:java.instrument-9.sym.txt:java.logging-9.sym.txt:java.management-9.sym.txt:java.management.rmi-9.sym.txt:java.naming-9.sym.txt:java.prefs-9.sym.txt:java.rmi-9.sym.txt:java.scripting-9.sym.txt:java.se-9.sym.txt:java.se.ee-9.sym.txt:java.security.jgss-9.sym.txt:java.security.sasl-9.sym.txt:java.smartcardio-9.sym.txt:java.sql-9.sym.txt:java.sql.rowset-9.sym.txt:java.transaction-9.sym.txt:java.xml-9.sym.txt:java.xml.bind-9.sym.txt:java.xml.crypto-9.sym.txt:java.xml.ws-9.sym.txt:java.xml.ws.annotation-9.sym.txt:jdk.accessibility-9.sym.txt:jdk.attach-9.sym.txt:jdk.charsets-9.sym.txt:jdk.compiler-9.sym.txt:jdk.crypto.cryptoki-9.sym.txt:jdk.crypto.ec-9.sym.txt:jdk.dynalink-9.sym.txt:jdk.editpad-9.sym.txt:jdk.hotspot.agent-9.sym.txt:jdk.httpserver-9.sym.txt:jdk.incubator.httpclient-9.sym.txt:jdk.jartool-9.sym.txt:jdk.javadoc-9.sym.txt:jdk.jcmd-9.sym.txt:jdk.jconsole-9.sym.txt:jdk.jdeps-9.sym.txt:jdk.jdi-9.sym.txt:jdk.jdwp.agent-9.sym.txt:jdk.jlink-9.sym.txt:jdk.jshell-9.sym.txt:jdk.jsobject-9.sym.txt:jdk.jstatd-9.sym.txt:jdk.localedata-9.sym.txt:jdk.management-9.sym.txt:jdk.management.agent-9.sym.txt:jdk.naming.dns-9.sym.txt:jdk.naming.rmi-9.sym.txt:jdk.net-9.sym.txt:jdk.pack-9.sym.txt:jdk.policytool-9.sym.txt:jdk.rmic-9.sym.txt:jdk.scripting.nashorn-9.sym.txt:jdk.sctp-9.sym.txt:jdk.security.auth-9.sym.txt:jdk.security.jgss-9.sym.txt:jdk.unsupported-9.sym.txt:jdk.xml.dom-9.sym.txt:jdk.zipfs-9.sym.txt
platform version A base 9 files java.activation-A.sym.txt:java.base-A.sym.txt:java.compiler-A.sym.txt:java.corba-A.sym.txt:java.datatransfer-A.sym.txt:java.desktop-A.sym.txt:java.instrument-A.sym.txt:java.logging-A.sym.txt:java.management-A.sym.txt:java.management.rmi-A.sym.txt:java.naming-A.sym.txt:java.prefs-A.sym.txt:java.rmi-A.sym.txt:java.scripting-A.sym.txt:java.se-A.sym.txt:java.se.ee-A.sym.txt:java.security.jgss-A.sym.txt:java.security.sasl-A.sym.txt:java.smartcardio-A.sym.txt:java.sql-A.sym.txt:java.sql.rowset-A.sym.txt:java.transaction-A.sym.txt:java.xml-A.sym.txt:java.xml.bind-A.sym.txt:java.xml.crypto-A.sym.txt:java.xml.ws-A.sym.txt:java.xml.ws.annotation-A.sym.txt:jdk.accessibility-A.sym.txt:jdk.attach-A.sym.txt:jdk.charsets-A.sym.txt:jdk.compiler-A.sym.txt:jdk.crypto.cryptoki-A.sym.txt:jdk.crypto.ec-A.sym.txt:jdk.dynalink-A.sym.txt:jdk.editpad-A.sym.txt:jdk.hotspot.agent-A.sym.txt:jdk.httpserver-A.sym.txt:jdk.incubator.httpclient-A.sym.txt:jdk.jartool-A.sym.txt:jdk.javadoc-A.sym.txt:jdk.jcmd-A.sym.txt:jdk.jconsole-A.sym.txt:jdk.jdeps-A.sym.txt:jdk.jdi-A.sym.txt:jdk.jdwp.agent-A.sym.txt:jdk.jlink-A.sym.txt:jdk.jshell-A.sym.txt:jdk.jsobject-A.sym.txt:jdk.jstatd-A.sym.txt:jdk.localedata-A.sym.txt:jdk.management-A.sym.txt:jdk.management.agent-A.sym.txt:jdk.naming.dns-A.sym.txt:jdk.naming.rmi-A.sym.txt:jdk.net-A.sym.txt:jdk.pack-A.sym.txt:jdk.policytool-A.sym.txt:jdk.rmic-A.sym.txt:jdk.scripting.nashorn-A.sym.txt:jdk.sctp-A.sym.txt:jdk.security.auth-A.sym.txt:jdk.security.jgss-A.sym.txt:jdk.unsupported-A.sym.txt:jdk.xml.dom-A.sym.txt:jdk.zipfs-A.sym.txt

View File

@ -27,7 +27,7 @@
# Build tools needed for the JFR source code generation
JFR_TOOLS_SRCDIR := $(TOPDIR)/make/src/classes
JFR_TOOLS_OUTPUTDIR := $(OUTPUTDIR)/buildtools/tools_classes
JFR_TOOLS_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/buildtools/tools_classes
$(eval $(call SetupJavaCompiler, GENERATE_JFRBYTECODE, \
JAVAC := $(JAVAC), \

View File

@ -24,9 +24,6 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp"
#include "gc/g1/c1/g1BarrierSetC1.hpp"
#include "gc/g1/g1BarrierSet.hpp"
#include "gc/g1/g1BarrierSetAssembler.hpp"
#include "gc/g1/g1BarrierSetRuntime.hpp"
@ -38,6 +35,11 @@
#include "runtime/thread.hpp"
#include "interpreter/interp_masm.hpp"
#include "runtime/sharedRuntime.hpp"
#ifdef COMPILER1
#include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp"
#include "gc/g1/c1/g1BarrierSetC1.hpp"
#endif
#define __ masm->

View File

@ -164,7 +164,7 @@ define_pd_global(intx, InlineSmallCode, 1000);
product(int, SoftwarePrefetchHintDistance, -1, \
"Use prfm hint with specified distance in compiled code." \
"Value -1 means off.") \
range(-1, 32760)
range(-1, 4096)
#endif

View File

@ -739,11 +739,19 @@ address MacroAssembler::trampoline_call(Address entry, CodeBuffer *cbuf) {
|| entry.rspec().type() == relocInfo::static_call_type
|| entry.rspec().type() == relocInfo::virtual_call_type, "wrong reloc type");
unsigned int start_offset = offset();
if (far_branches() && !Compile::current()->in_scratch_emit_size()) {
address stub = emit_trampoline_stub(start_offset, entry.target());
if (stub == NULL) {
return NULL; // CodeCache is full
// We need a trampoline if branches are far.
if (far_branches()) {
// We don't want to emit a trampoline if C2 is generating dummy
// code during its branch shortening phase.
CompileTask* task = ciEnv::current()->task();
bool in_scratch_emit_size =
(task != NULL && is_c2_compile(task->comp_level()) &&
Compile::current()->in_scratch_emit_size());
if (!in_scratch_emit_size) {
address stub = emit_trampoline_stub(offset(), entry.target());
if (stub == NULL) {
return NULL; // CodeCache is full
}
}
}

View File

@ -1635,6 +1635,7 @@ class Assembler : public AbstractAssembler {
// TEXASR bit description
enum transaction_failure_reason {
// Upper half (TEXASRU):
tm_failure_code = 0, // The Failure Code is copied from tabort or treclaim operand.
tm_failure_persistent = 7, // The failure is likely to recur on each execution.
tm_disallowed = 8, // The instruction is not permitted.
tm_nesting_of = 9, // The maximum transaction level was exceeded.
@ -1650,6 +1651,7 @@ class Assembler : public AbstractAssembler {
tm_failure_summary = 36, // Failure has been detected and recorded.
tm_tfiar_exact = 37, // Value in the TFIAR is exact.
tm_rot = 38, // Rollback-only transaction.
tm_transaction_level = 52, // Transaction level (nesting depth + 1).
};
// PPC 1, section 2.4.1 Branch Instructions

View File

@ -2412,7 +2412,7 @@ void MacroAssembler::atomic_ori_int(Register addr, Register result, int uimm16)
// Update rtm_counters based on abort status
// input: abort_status
// rtm_counters (RTMLockingCounters*)
// rtm_counters_Reg (RTMLockingCounters*)
void MacroAssembler::rtm_counters_update(Register abort_status, Register rtm_counters_Reg) {
// Mapping to keep PreciseRTMLockingStatistics similar to x86.
// x86 ppc (! means inverted, ? means not the same)
@ -2422,52 +2422,96 @@ void MacroAssembler::rtm_counters_update(Register abort_status, Register rtm_cou
// 3 10 Set if an internal buffer overflowed.
// 4 ?12 Set if a debug breakpoint was hit.
// 5 ?32 Set if an abort occurred during execution of a nested transaction.
const int tm_failure_bit[] = {Assembler::tm_tabort, // Note: Seems like signal handler sets this, too.
Assembler::tm_failure_persistent, // inverted: transient
Assembler::tm_trans_cf,
Assembler::tm_footprint_of,
Assembler::tm_non_trans_cf,
Assembler::tm_suspended};
const bool tm_failure_inv[] = {false, true, false, false, false, false};
assert(sizeof(tm_failure_bit)/sizeof(int) == RTMLockingCounters::ABORT_STATUS_LIMIT, "adapt mapping!");
const int failure_bit[] = {tm_tabort, // Signal handler will set this too.
tm_failure_persistent,
tm_non_trans_cf,
tm_trans_cf,
tm_footprint_of,
tm_failure_code,
tm_transaction_level};
const Register addr_Reg = R0;
// Keep track of offset to where rtm_counters_Reg had pointed to.
const int num_failure_bits = sizeof(failure_bit) / sizeof(int);
const int num_counters = RTMLockingCounters::ABORT_STATUS_LIMIT;
const int bit2counter_map[][num_counters] =
// 0 = no map; 1 = mapped, no inverted logic; -1 = mapped, inverted logic
// Inverted logic means that if a bit is set don't count it, or vice-versa.
// Care must be taken when mapping bits to counters as bits for a given
// counter must be mutually exclusive. Otherwise, the counter will be
// incremented more than once.
// counters:
// 0 1 2 3 4 5
// abort , persist, conflict, overflow, debug , nested bits:
{{ 1 , 0 , 0 , 0 , 0 , 0 }, // abort
{ 0 , -1 , 0 , 0 , 0 , 0 }, // failure_persistent
{ 0 , 0 , 1 , 0 , 0 , 0 }, // non_trans_cf
{ 0 , 0 , 1 , 0 , 0 , 0 }, // trans_cf
{ 0 , 0 , 0 , 1 , 0 , 0 }, // footprint_of
{ 0 , 0 , 0 , 0 , -1 , 0 }, // failure_code = 0xD4
{ 0 , 0 , 0 , 0 , 0 , 1 }}; // transaction_level > 1
// ...
// Move abort_status value to R0 and use abort_status register as a
// temporary register because R0 as third operand in ld/std is treated
// as base address zero (value). Likewise, R0 as second operand in addi
// is problematic because it amounts to li.
const Register temp_Reg = abort_status;
const Register abort_status_R0 = R0;
mr(abort_status_R0, abort_status);
// Increment total abort counter.
int counters_offs = RTMLockingCounters::abort_count_offset();
addi(addr_Reg, rtm_counters_Reg, counters_offs);
const Register temp_Reg = rtm_counters_Reg;
//atomic_inc_ptr(addr_Reg, temp_Reg); We don't increment atomically
ldx(temp_Reg, addr_Reg);
ld(temp_Reg, counters_offs, rtm_counters_Reg);
addi(temp_Reg, temp_Reg, 1);
stdx(temp_Reg, addr_Reg);
std(temp_Reg, counters_offs, rtm_counters_Reg);
// Increment specific abort counters.
if (PrintPreciseRTMLockingStatistics) {
int counters_offs_delta = RTMLockingCounters::abortX_count_offset() - counters_offs;
//mftexasr(abort_status); done by caller
for (int i = 0; i < RTMLockingCounters::ABORT_STATUS_LIMIT; i++) {
counters_offs += counters_offs_delta;
li(temp_Reg, counters_offs_delta); // can't use addi with R0
add(addr_Reg, addr_Reg, temp_Reg); // point to next counter
counters_offs_delta = sizeof(uintx);
// #0 counter offset.
int abortX_offs = RTMLockingCounters::abortX_count_offset();
Label check_abort;
rldicr_(temp_Reg, abort_status, tm_failure_bit[i], 0);
if (tm_failure_inv[i]) {
bne(CCR0, check_abort);
} else {
beq(CCR0, check_abort);
for (int nbit = 0; nbit < num_failure_bits; nbit++) {
for (int ncounter = 0; ncounter < num_counters; ncounter++) {
if (bit2counter_map[nbit][ncounter] != 0) {
Label check_abort;
int abort_counter_offs = abortX_offs + (ncounter << 3);
if (failure_bit[nbit] == tm_transaction_level) {
// Don't check outer transaction, TL = 1 (bit 63). Hence only
// 11 bits in the TL field are checked to find out if failure
// occured in a nested transaction. This check also matches
// the case when nesting_of = 1 (nesting overflow).
rldicr_(temp_Reg, abort_status_R0, failure_bit[nbit], 10);
} else if (failure_bit[nbit] == tm_failure_code) {
// Check failure code for trap or illegal caught in TM.
// Bits 0:7 are tested as bit 7 (persistent) is copied from
// tabort or treclaim source operand.
// On Linux: trap or illegal is TM_CAUSE_SIGNAL (0xD4).
rldicl(temp_Reg, abort_status_R0, 8, 56);
cmpdi(CCR0, temp_Reg, 0xD4);
} else {
rldicr_(temp_Reg, abort_status_R0, failure_bit[nbit], 0);
}
if (bit2counter_map[nbit][ncounter] == 1) {
beq(CCR0, check_abort);
} else {
bne(CCR0, check_abort);
}
// We don't increment atomically.
ld(temp_Reg, abort_counter_offs, rtm_counters_Reg);
addi(temp_Reg, temp_Reg, 1);
std(temp_Reg, abort_counter_offs, rtm_counters_Reg);
bind(check_abort);
}
}
//atomic_inc_ptr(addr_Reg, temp_Reg); We don't increment atomically
ldx(temp_Reg, addr_Reg);
addi(temp_Reg, temp_Reg, 1);
stdx(temp_Reg, addr_Reg);
bind(check_abort);
}
}
li(temp_Reg, -counters_offs); // can't use addi with R0
add(rtm_counters_Reg, addr_Reg, temp_Reg); // restore
// Restore abort_status.
mr(abort_status, abort_status_R0);
}
// Branch if (random & (count-1) != 0), count is 2^n
@ -2569,8 +2613,28 @@ void MacroAssembler::rtm_profiling(Register abort_status_Reg, Register temp_Reg,
void MacroAssembler::rtm_retry_lock_on_abort(Register retry_count_Reg, Register abort_status_Reg,
Label& retryLabel, Label* checkRetry) {
Label doneRetry;
// Don't retry if failure is persistent.
// The persistent bit is set when a (A) Disallowed operation is performed in
// transactional state, like for instance trying to write the TFHAR after a
// transaction is started; or when there is (B) a Nesting Overflow (too many
// nested transactions); or when (C) the Footprint overflows (too many
// addressess touched in TM state so there is no more space in the footprint
// area to track them); or in case of (D) a Self-Induced Conflict, i.e. a
// store is performed to a given address in TM state, then once in suspended
// state the same address is accessed. Failure (A) is very unlikely to occur
// in the JVM. Failure (D) will never occur because Suspended state is never
// used in the JVM. Thus mostly (B) a Nesting Overflow or (C) a Footprint
// Overflow will set the persistent bit.
rldicr_(R0, abort_status_Reg, tm_failure_persistent, 0);
bne(CCR0, doneRetry);
// Don't retry if transaction was deliberately aborted, i.e. caused by a
// tabort instruction.
rldicr_(R0, abort_status_Reg, tm_tabort, 0);
bne(CCR0, doneRetry);
// Retry if transaction aborted due to a conflict with another thread.
if (checkRetry) { bind(*checkRetry); }
addic_(retry_count_Reg, retry_count_Reg, -1);
blt(CCR0, doneRetry);

View File

@ -2029,6 +2029,13 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
// --------------------------------------------------------------------------
vep_start_pc = (intptr_t)__ pc();
if (UseRTMLocking) {
// Abort RTM transaction before calling JNI
// because critical section can be large and
// abort anyway. Also nmethod can be deoptimized.
__ tabort_();
}
__ save_LR_CR(r_temp_1);
__ generate_stack_overflow_check(frame_size_in_bytes); // Check before creating frame.
__ mr(r_callers_sp, R1_SP); // Remember frame pointer.
@ -2947,6 +2954,11 @@ void SharedRuntime::generate_uncommon_trap_blob() {
InterpreterMacroAssembler* masm = new InterpreterMacroAssembler(&buffer);
address start = __ pc();
if (UseRTMLocking) {
// Abort RTM transaction before possible nmethod deoptimization.
__ tabort_();
}
Register unroll_block_reg = R21_tmp1;
Register klass_index_reg = R22_tmp2;
Register unc_trap_reg = R23_tmp3;
@ -3090,6 +3102,13 @@ SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_t
return_pc_location = RegisterSaver::return_pc_is_thread_saved_exception_pc;
}
if (UseRTMLocking) {
// Abort RTM transaction before calling runtime
// because critical section can be large and so
// will abort anyway. Also nmethod can be deoptimized.
__ tabort_();
}
// Save registers, fpu state, and flags. Set R31 = return pc.
map = RegisterSaver::push_frame_reg_args_and_save_live_registers(masm,
&frame_size_in_bytes,

View File

@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "jvm.h"
#include "asm/macroAssembler.hpp"
#include "compiler/disassembler.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
@ -35,7 +36,7 @@
#include "runtime/frame.inline.hpp"
#include "utilities/preserveException.hpp"
#define __ _masm->
#define __ Disassembler::hook<MacroAssembler>(__FILE__, __LINE__, _masm)->
#ifdef PRODUCT
#define BLOCK_COMMENT(str) /* nothing */

View File

@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "compiler/disassembler.hpp"
#include "gc/shared/barrierSetAssembler.hpp"
#include "interpreter/bytecodeHistogram.hpp"
#include "interpreter/interp_masm.hpp"
@ -48,7 +49,7 @@
#include "utilities/debug.hpp"
#include "utilities/macros.hpp"
#define __ _masm->
#define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
// Size of interpreter code. Increase if too small. Interpreter will
// fail with a guarantee ("not enough space for interpreter generation");
@ -1774,18 +1775,30 @@ void TemplateInterpreterGenerator::set_vtos_entry_points(Template* t,
address& vep) {
assert(t->is_valid() && t->tos_in() == vtos, "illegal template");
Label L;
aep = __ pc(); __ push_ptr(); __ jmp(L);
aep = __ pc(); // atos entry point
__ push_ptr();
__ jmp(L);
#ifndef _LP64
fep = __ pc(); __ push(ftos); __ jmp(L);
dep = __ pc(); __ push(dtos); __ jmp(L);
fep = __ pc(); // ftos entry point
__ push(ftos);
__ jmp(L);
dep = __ pc(); // dtos entry point
__ push(dtos);
__ jmp(L);
#else
fep = __ pc(); __ push_f(xmm0); __ jmp(L);
dep = __ pc(); __ push_d(xmm0); __ jmp(L);
fep = __ pc(); // ftos entry point
__ push_f(xmm0);
__ jmp(L);
dep = __ pc(); // dtos entry point
__ push_d(xmm0);
__ jmp(L);
#endif // _LP64
lep = __ pc(); __ push_l(); __ jmp(L);
bep = cep = sep =
iep = __ pc(); __ push_i();
vep = __ pc();
lep = __ pc(); // ltos entry point
__ push_l();
__ jmp(L);
bep = cep = sep = iep = __ pc(); // [bcsi]tos entry point
__ push_i();
vep = __ pc(); // vtos entry point
__ bind(L);
generate_and_dispatch(t);
}

View File

@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "compiler/disassembler.hpp"
#include "interpreter/interp_masm.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
@ -31,7 +32,7 @@
#include "runtime/arguments.hpp"
#include "runtime/sharedRuntime.hpp"
#define __ _masm->
#define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
address TemplateInterpreterGenerator::generate_slow_signature_handler() {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2018, 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
@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "compiler/disassembler.hpp"
#include "interpreter/interp_masm.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
@ -31,7 +32,7 @@
#include "runtime/arguments.hpp"
#include "runtime/sharedRuntime.hpp"
#define __ _masm->
#define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
#ifdef _WIN64
address TemplateInterpreterGenerator::generate_slow_signature_handler() {

View File

@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "compiler/disassembler.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
#include "interpreter/interp_masm.hpp"
@ -40,7 +41,7 @@
#include "runtime/synchronizer.hpp"
#include "utilities/macros.hpp"
#define __ _masm->
#define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
// Global Register Names
static const Register rbcp = LP64_ONLY(r13) NOT_LP64(rsi);

View File

@ -470,8 +470,8 @@ int VM_Version_Ext::cpu_extended_brand_string(char* const buf, size_t buf_len) {
}
size_t VM_Version_Ext::cpu_write_support_string(char* const buf, size_t buf_len) {
assert(buf != NULL, "buffer is NULL!");
assert(buf_len > 0, "buffer len not enough!");
guarantee(buf != NULL, "buffer is NULL!");
guarantee(buf_len > 0, "buffer len not enough!");
unsigned int flag = 0;
unsigned int fi = 0;
@ -481,8 +481,7 @@ size_t VM_Version_Ext::cpu_write_support_string(char* const buf, size_t buf_len)
#define WRITE_TO_BUF(string) \
{ \
int res = jio_snprintf(&buf[written], buf_len - written, "%s%s", prefix, string); \
if (res < 0 || (size_t) res >= buf_len - 1) { \
buf[buf_len-1] = '\0'; \
if (res < 0) { \
return buf_len - 1; \
} \
written += res; \
@ -592,7 +591,7 @@ int VM_Version_Ext::cpu_detailed_description(char* const buf, size_t buf_len) {
_cpuid_info.ext_cpuid1_edx);
if (outputLen < 0 || (size_t) outputLen >= buf_len - 1) {
buf[buf_len-1] = '\0';
if (buf_len > 0) { buf[buf_len-1] = '\0'; }
return OS_ERR;
}

View File

@ -63,6 +63,7 @@ class VM_Version_Ext : public VM_Version {
static bool cpu_is_em64t(void);
static bool is_netburst(void);
// Returns bytes written excluding termninating null byte.
static size_t cpu_write_support_string(char* const buf, size_t buf_len);
static void resolve_cpu_information_details(void);
static jlong max_qualified_cpu_freq_from_brand_string(void);

View File

@ -1,5 +1,5 @@
//
// Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 2011, 2018, 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
@ -1444,6 +1444,7 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
case Op_CMoveVF:
if (vlen != 8)
ret_value = false;
break;
case Op_CMoveVD:
if (vlen != 4)
ret_value = false;

View File

@ -49,16 +49,3 @@ void MiscUtils::leave_critsect(MiscUtils::critsect_t* cs) {
const int rc = pthread_mutex_unlock(cs);
assert0(rc == 0);
}
bool MiscUtils::is_readable_pointer(const void* p) {
if (!CanUseSafeFetch32()) {
return true;
}
int* const aligned = (int*) align_down(p, 4);
int cafebabe = 0xcafebabe;
int deadbeef = 0xdeadbeef;
return (SafeFetch32(aligned, cafebabe) != cafebabe) ||
(SafeFetch32(aligned, deadbeef) != deadbeef);
}

View File

@ -88,13 +88,6 @@ namespace MiscUtils {
_pcsobj->leave();
}
};
// Returns true if pointer can be dereferenced without triggering a segment
// violation. Returns false if pointer is invalid.
// Note: Depends on stub routines; prior to stub routine generation, will
// always return true. Use CanUseSafeFetch32 to handle this case.
bool is_readable_pointer(const void* p);
}
#endif // OS_AIX_VM_MISC_AIX_HPP

View File

@ -3733,8 +3733,7 @@ bool os::dir_is_empty(const char* path) {
/* Scan the directory */
bool result = true;
char buf[sizeof(struct dirent) + MAX_PATH];
while (result && (ptr = ::readdir(dir)) != NULL) {
while (result && (ptr = readdir(dir)) != NULL) {
if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0) {
result = false;
}

View File

@ -74,17 +74,6 @@ inline void os::dll_unload(void *lib) {
inline const int os::default_file_open_flags() { return 0;}
inline DIR* os::opendir(const char* dirname) {
assert(dirname != NULL, "just checking");
return ::opendir(dirname);
}
inline int os::readdir_buf_size(const char *path) {
// According to aix sys/limits, NAME_MAX must be retrieved at runtime.
const long my_NAME_MAX = pathconf(path, _PC_NAME_MAX);
return my_NAME_MAX + sizeof(dirent) + 1;
}
inline jlong os::lseek(int fd, jlong offset, int whence) {
return (jlong) ::lseek64(fd, offset, whence);
}
@ -97,23 +86,6 @@ inline int os::ftruncate(int fd, jlong length) {
return ::ftruncate64(fd, length);
}
inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf) {
dirent* p = NULL;
assert(dirp != NULL, "just checking");
// AIX: slightly different from POSIX.
// On AIX, readdir_r returns 0 or != 0 and error details in errno.
if (::readdir_r(dirp, dbuf, &p) != 0) {
return NULL;
}
return p;
}
inline int os::closedir(DIR *dirp) {
assert(dirp != NULL, "argument is NULL");
return ::closedir(dirp);
}
// macros for restartable system calls
#define RESTARTABLE(_cmd, _result) do { \

View File

@ -893,21 +893,14 @@ int SystemProcessInterface::SystemProcesses::ProcessIterator::current(SystemProc
}
int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
struct dirent* entry;
if (!is_valid()) {
return OS_ERR;
}
do {
entry = os::readdir(_dir, _entry);
if (entry == NULL) {
// error
_valid = false;
return OS_ERR;
}
_entry = os::readdir(_dir);
if (_entry == NULL) {
// reached end
// Error or reached end. Could use errno to distinguish those cases.
_valid = false;
return OS_ERR;
}
@ -929,11 +922,8 @@ bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
}
SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
if (_entry != NULL) {
FREE_C_HEAP_ARRAY(char, _entry);
}
if (_dir != NULL) {
closedir(_dir);
os::closedir(_dir);
}
}

View File

@ -617,9 +617,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
// to determine the user name for the process id.
//
struct dirent* dentry;
char* tdbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(tmpdirname), mtInternal);
errno = 0;
while ((dentry = os::readdir(tmpdirp, (struct dirent *)tdbuf)) != NULL) {
while ((dentry = os::readdir(tmpdirp)) != NULL) {
// check if the directory entry is a hsperfdata file
if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) {
@ -653,9 +652,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
struct dirent* udentry;
char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal);
errno = 0;
while ((udentry = os::readdir(subdirp, (struct dirent *)udbuf)) != NULL) {
while ((udentry = os::readdir(subdirp)) != NULL) {
if (filename_to_pid(udentry->d_name) == vmid) {
struct stat statbuf;
@ -699,11 +697,9 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
}
os::closedir(subdirp);
FREE_C_HEAP_ARRAY(char, udbuf);
FREE_C_HEAP_ARRAY(char, usrdir_name);
}
os::closedir(tmpdirp);
FREE_C_HEAP_ARRAY(char, tdbuf);
return(oldest_user);
}
@ -779,10 +775,8 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// loop under these conditions is dependent upon the implementation of
// opendir/readdir.
struct dirent* entry;
char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal);
errno = 0;
while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) {
while ((entry = os::readdir(dirp)) != NULL) {
pid_t pid = filename_to_pid(entry->d_name);
@ -820,8 +814,6 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// Close the directory and reset the current working directory.
close_directory_secure_cwd(dirp, saved_cwd_fd);
FREE_C_HEAP_ARRAY(char, dbuf);
}
// Make the user specific temporary directory. Returns true if

View File

@ -142,7 +142,7 @@ bool AixSymbols::get_function_name (
// in that case I try reading the traceback table unsafe - I rather risk secondary crashes in
// error files than not having a callstack.)
#define CHECK_POINTER_READABLE(p) \
if (!MiscUtils::is_readable_pointer(p)) { \
if (!os::is_readable_pointer(p)) { \
trcVerbose("pc not readable"); \
return false; \
}
@ -230,7 +230,7 @@ bool AixSymbols::get_function_name (
const short l = MIN2<short>(*((short*)pc2), namelen - 1);
// Be very careful.
int i = 0; char* const p = (char*)pc2 + sizeof(short);
while (i < l && MiscUtils::is_readable_pointer(p + i)) {
while (i < l && os::is_readable_pointer(p + i)) {
p_name[i] = p[i];
i++;
}
@ -489,7 +489,7 @@ static void print_info_for_pc (outputStream* st, codeptr_t pc, char* buf,
const struct tbtable* tb = NULL;
int displacement = -1;
if (!MiscUtils::is_readable_pointer(pc)) {
if (!os::is_readable_pointer(pc)) {
st->print("(invalid)");
return;
}
@ -697,7 +697,7 @@ void AixNativeCallstack::print_callstack_for_context(outputStream* st, const uco
print_info_for_pc(st, cur_iar, buf, buf_size, demangle);
st->cr();
if (cur_iar && MiscUtils::is_readable_pointer(cur_iar)) {
if (cur_iar && os::is_readable_pointer(cur_iar)) {
decode_instructions_at_pc(
"Decoded instructions at iar:",
cur_iar, 32, 16, st);
@ -710,7 +710,7 @@ void AixNativeCallstack::print_callstack_for_context(outputStream* st, const uco
print_info_for_pc(st, cur_lr, buf, buf_size, demangle);
st->cr();
if (cur_lr && MiscUtils::is_readable_pointer(cur_lr)) {
if (cur_lr && os::is_readable_pointer(cur_lr)) {
decode_instructions_at_pc(
"Decoded instructions at lr:",
cur_lr, 32, 16, st);
@ -729,7 +729,7 @@ void AixNativeCallstack::print_callstack_for_context(outputStream* st, const uco
// Check and print rtoc.
st->print("rtoc: " PTR64_FORMAT " ", p2i(cur_rtoc));
if (cur_rtoc == NULL || cur_rtoc == (codeptr_t)-1 ||
!MiscUtils::is_readable_pointer(cur_rtoc)) {
!os::is_readable_pointer(cur_rtoc)) {
st->print("(invalid)");
} else if (((uintptr_t)cur_rtoc) & 0x7) {
st->print("(unaligned)");

View File

@ -3506,8 +3506,7 @@ bool os::dir_is_empty(const char* path) {
// Scan the directory
bool result = true;
char buf[sizeof(struct dirent) + MAX_PATH];
while (result && (ptr = ::readdir(dir)) != NULL) {
while (result && (ptr = readdir(dir)) != NULL) {
if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0) {
result = false;
}

View File

@ -77,17 +77,6 @@ inline void os::dll_unload(void *lib) {
inline const int os::default_file_open_flags() { return 0;}
inline DIR* os::opendir(const char* dirname)
{
assert(dirname != NULL, "just checking");
return ::opendir(dirname);
}
inline int os::readdir_buf_size(const char *path)
{
return NAME_MAX + sizeof(dirent) + 1;
}
inline jlong os::lseek(int fd, jlong offset, int whence) {
return (jlong) ::lseek(fd, offset, whence);
}
@ -100,28 +89,6 @@ inline int os::ftruncate(int fd, jlong length) {
return ::ftruncate(fd, length);
}
inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
{
dirent* p;
int status;
assert(dirp != NULL, "just checking");
// NOTE: Bsd readdir_r (on RH 6.2 and 7.2 at least) is NOT like the POSIX
// version. Here is the doc for this function:
// http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_262.html
if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
errno = status;
return NULL;
} else
return p;
}
inline int os::closedir(DIR *dirp) {
assert(dirp != NULL, "argument is NULL");
return ::closedir(dirp);
}
// macros for restartable system calls
#define RESTARTABLE(_cmd, _result) do { \

View File

@ -535,9 +535,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
// to determine the user name for the process id.
//
struct dirent* dentry;
char* tdbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(tmpdirname), mtInternal);
errno = 0;
while ((dentry = os::readdir(tmpdirp, (struct dirent *)tdbuf)) != NULL) {
while ((dentry = os::readdir(tmpdirp)) != NULL) {
// check if the directory entry is a hsperfdata file
if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) {
@ -559,9 +558,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
struct dirent* udentry;
char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal);
errno = 0;
while ((udentry = os::readdir(subdirp, (struct dirent *)udbuf)) != NULL) {
while ((udentry = os::readdir(subdirp)) != NULL) {
if (filename_to_pid(udentry->d_name) == vmid) {
struct stat statbuf;
@ -605,11 +603,9 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
}
os::closedir(subdirp);
FREE_C_HEAP_ARRAY(char, udbuf);
FREE_C_HEAP_ARRAY(char, usrdir_name);
}
os::closedir(tmpdirp);
FREE_C_HEAP_ARRAY(char, tdbuf);
return(oldest_user);
}
@ -688,10 +684,8 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// opendir/readdir.
//
struct dirent* entry;
char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal);
errno = 0;
while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) {
while ((entry = os::readdir(dirp)) != NULL) {
pid_t pid = filename_to_pid(entry->d_name);
@ -730,8 +724,6 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// close the directory and reset the current working directory
close_directory_secure_cwd(dirp, saved_cwd_fd);
FREE_C_HEAP_ARRAY(char, dbuf);
}
// make the user specific temporary directory. Returns true if

View File

@ -2093,7 +2093,9 @@ void os::get_summary_os_info(char* buf, size_t buflen) {
// special case for debian
if (file_exists("/etc/debian_version")) {
strncpy(buf, "Debian ", buflen);
parse_os_info(&buf[7], buflen-7, "/etc/debian_version");
if (buflen > 7) {
parse_os_info(&buf[7], buflen-7, "/etc/debian_version");
}
} else {
strncpy(buf, "Linux", buflen);
}
@ -2805,8 +2807,8 @@ int os::numa_get_group_id() {
}
int os::Linux::get_existing_num_nodes() {
size_t node;
size_t highest_node_number = Linux::numa_max_node();
int node;
int highest_node_number = Linux::numa_max_node();
int num_nodes = 0;
// Get the total number of nodes in the system including nodes without memory.
@ -2819,14 +2821,14 @@ int os::Linux::get_existing_num_nodes() {
}
size_t os::numa_get_leaf_groups(int *ids, size_t size) {
size_t highest_node_number = Linux::numa_max_node();
int highest_node_number = Linux::numa_max_node();
size_t i = 0;
// Map all node ids in which is possible to allocate memory. Also nodes are
// Map all node ids in which it is possible to allocate memory. Also nodes are
// not always consecutively available, i.e. available from 0 to the highest
// node number.
for (size_t node = 0; node <= highest_node_number; node++) {
if (Linux::isnode_in_configured_nodes(node)) {
for (int node = 0; node <= highest_node_number; node++) {
if (Linux::isnode_in_configured_nodes((unsigned int)node)) {
ids[i++] = node;
}
}
@ -5373,8 +5375,7 @@ bool os::dir_is_empty(const char* path) {
// Scan the directory
bool result = true;
char buf[sizeof(struct dirent) + MAX_PATH];
while (result && (ptr = ::readdir(dir)) != NULL) {
while (result && (ptr = readdir(dir)) != NULL) {
if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0) {
result = false;
}

View File

@ -69,17 +69,6 @@ inline void os::dll_unload(void *lib) {
inline const int os::default_file_open_flags() { return 0;}
inline DIR* os::opendir(const char* dirname)
{
assert(dirname != NULL, "just checking");
return ::opendir(dirname);
}
inline int os::readdir_buf_size(const char *path)
{
return NAME_MAX + sizeof(dirent) + 1;
}
inline jlong os::lseek(int fd, jlong offset, int whence) {
return (jlong) ::lseek64(fd, offset, whence);
}
@ -92,17 +81,6 @@ inline int os::ftruncate(int fd, jlong length) {
return ::ftruncate64(fd, length);
}
inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
{
assert(dirp != NULL, "just checking");
return ::readdir(dirp);
}
inline int os::closedir(DIR *dirp) {
assert(dirp != NULL, "argument is NULL");
return ::closedir(dirp);
}
// macros for restartable system calls
#define RESTARTABLE(_cmd, _result) do { \

View File

@ -895,21 +895,14 @@ int SystemProcessInterface::SystemProcesses::ProcessIterator::current(SystemProc
}
int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
struct dirent* entry;
if (!is_valid()) {
return OS_ERR;
}
do {
entry = os::readdir(_dir, _entry);
if (entry == NULL) {
// error
_valid = false;
return OS_ERR;
}
_entry = os::readdir(_dir);
if (_entry == NULL) {
// reached end
// Error or reached end. Could use errno to distinguish those cases.
_valid = false;
return OS_ERR;
}
@ -926,11 +919,8 @@ SystemProcessInterface::SystemProcesses::ProcessIterator::ProcessIterator() {
}
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
_dir = opendir("/proc");
_entry = (struct dirent*)NEW_C_HEAP_ARRAY(char, sizeof(struct dirent) + NAME_MAX + 1, mtInternal);
if (NULL == _entry) {
return false;
}
_dir = os::opendir("/proc");
_entry = NULL;
_valid = true;
next_process();
@ -938,11 +928,8 @@ bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
}
SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
if (_entry != NULL) {
FREE_C_HEAP_ARRAY(char, _entry);
}
if (_dir != NULL) {
closedir(_dir);
os::closedir(_dir);
}
}

View File

@ -534,15 +534,14 @@ static char* get_user_name_slow(int vmid, int nspid, TRAPS) {
// directory search
char* oldest_user = NULL;
time_t oldest_ctime = 0;
char buffer[TMP_BUFFER_LEN];
char buffer[MAXPATHLEN + 1];
int searchpid;
char* tmpdirname = (char *)os::get_temp_directory();
assert(strlen(tmpdirname) == 4, "No longer using /tmp - update buffer size");
if (nspid == -1) {
searchpid = vmid;
}
else {
} else {
jio_snprintf(buffer, MAXPATHLEN, "/proc/%d/root%s", vmid, tmpdirname);
tmpdirname = buffer;
searchpid = nspid;
@ -562,9 +561,8 @@ static char* get_user_name_slow(int vmid, int nspid, TRAPS) {
// to determine the user name for the process id.
//
struct dirent* dentry;
char* tdbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(tmpdirname), mtInternal);
errno = 0;
while ((dentry = os::readdir(tmpdirp, (struct dirent *)tdbuf)) != NULL) {
while ((dentry = os::readdir(tmpdirp)) != NULL) {
// check if the directory entry is a hsperfdata file
if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) {
@ -598,9 +596,8 @@ static char* get_user_name_slow(int vmid, int nspid, TRAPS) {
}
struct dirent* udentry;
char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal);
errno = 0;
while ((udentry = os::readdir(subdirp, (struct dirent *)udbuf)) != NULL) {
while ((udentry = os::readdir(subdirp)) != NULL) {
if (filename_to_pid(udentry->d_name) == searchpid) {
struct stat statbuf;
@ -644,11 +641,9 @@ static char* get_user_name_slow(int vmid, int nspid, TRAPS) {
}
}
os::closedir(subdirp);
FREE_C_HEAP_ARRAY(char, udbuf);
FREE_C_HEAP_ARRAY(char, usrdir_name);
}
os::closedir(tmpdirp);
FREE_C_HEAP_ARRAY(char, tdbuf);
return(oldest_user);
}
@ -770,10 +765,8 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// opendir/readdir.
//
struct dirent* entry;
char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal);
errno = 0;
while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) {
while ((entry = os::readdir(dirp)) != NULL) {
pid_t pid = filename_to_pid(entry->d_name);
@ -810,8 +803,6 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// close the directory and reset the current working directory
close_directory_secure_cwd(dirp, saved_cwd_fd);
FREE_C_HEAP_ARRAY(char, dbuf);
}
// make the user specific temporary directory. Returns true if

View File

@ -35,6 +35,7 @@
#include "utilities/macros.hpp"
#include "utilities/vmError.hpp"
#include <dirent.h>
#include <dlfcn.h>
#include <pthread.h>
#include <signal.h>
@ -527,6 +528,21 @@ void os::funlockfile(FILE* fp) {
::funlockfile(fp);
}
DIR* os::opendir(const char* dirname) {
assert(dirname != NULL, "just checking");
return ::opendir(dirname);
}
struct dirent* os::readdir(DIR* dirp) {
assert(dirp != NULL, "just checking");
return ::readdir(dirp);
}
int os::closedir(DIR *dirp) {
assert(dirp != NULL, "just checking");
return ::closedir(dirp);
}
// Builds a platform dependent Agent_OnLoad_<lib_name> function name
// which is used to find statically linked in agents.
// Parameters:

View File

@ -604,15 +604,14 @@ int SystemProcessInterface::SystemProcesses::ProcessIterator::current(SystemProc
}
int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
struct dirent* entry;
if (!is_valid()) {
return OS_ERR;
}
do {
if ((entry = os::readdir(_dir, _entry)) == NULL) {
// error
_entry = os::readdir(_dir);
if (_entry == NULL) {
// Error or reached end. Could use errno to distinguish those cases.
_valid = false;
return OS_ERR;
}
@ -629,11 +628,8 @@ SystemProcessInterface::SystemProcesses::ProcessIterator::ProcessIterator() {
}
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
_dir = opendir("/proc");
_entry = (struct dirent*)NEW_C_HEAP_ARRAY(char, sizeof(struct dirent) + _PC_NAME_MAX + 1, mtInternal);
if (NULL == _entry) {
return false;
}
_dir = os::opendir("/proc");
_entry = NULL;
_valid = true;
next_process();
@ -641,12 +637,8 @@ bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
}
SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
if (_entry != NULL) {
FREE_C_HEAP_ARRAY(char, _entry);
}
if (_dir != NULL) {
closedir(_dir);
os::closedir(_dir);
}
}

View File

@ -4308,9 +4308,7 @@ bool os::dir_is_empty(const char* path) {
// Scan the directory
bool result = true;
char buf[sizeof(struct dirent) + MAX_PATH];
struct dirent *dbuf = (struct dirent *) buf;
while (result && (ptr = readdir(dir, dbuf)) != NULL) {
while (result && (ptr = readdir(dir)) != NULL) {
if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0) {
result = false;
}

View File

@ -68,34 +68,6 @@ inline void os::dll_unload(void *lib) { ::dlclose(lib); }
inline const int os::default_file_open_flags() { return 0;}
inline DIR* os::opendir(const char* dirname) {
assert(dirname != NULL, "just checking");
return ::opendir(dirname);
}
inline int os::readdir_buf_size(const char *path) {
int size = pathconf(path, _PC_NAME_MAX);
return (size < 0 ? MAXPATHLEN : size) + sizeof(dirent) + 1;
}
inline struct dirent* os::readdir(DIR* dirp, dirent* dbuf) {
assert(dirp != NULL, "just checking");
dirent* p;
int status;
if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
errno = status;
return NULL;
} else {
return p;
}
}
inline int os::closedir(DIR *dirp) {
assert(dirp != NULL, "argument is NULL");
return ::closedir(dirp);
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

View File

@ -523,9 +523,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
// to determine the user name for the process id.
//
struct dirent* dentry;
char* tdbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(tmpdirname), mtInternal);
errno = 0;
while ((dentry = os::readdir(tmpdirp, (struct dirent *)tdbuf)) != NULL) {
while ((dentry = os::readdir(tmpdirp)) != NULL) {
// check if the directory entry is a hsperfdata file
if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) {
@ -559,9 +558,8 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
struct dirent* udentry;
char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal);
errno = 0;
while ((udentry = os::readdir(subdirp, (struct dirent *)udbuf)) != NULL) {
while ((udentry = os::readdir(subdirp)) != NULL) {
if (filename_to_pid(udentry->d_name) == vmid) {
struct stat statbuf;
@ -605,11 +603,9 @@ static char* get_user_name_slow(int vmid, TRAPS) {
}
}
os::closedir(subdirp);
FREE_C_HEAP_ARRAY(char, udbuf);
FREE_C_HEAP_ARRAY(char, usrdir_name);
}
os::closedir(tmpdirp);
FREE_C_HEAP_ARRAY(char, tdbuf);
return(oldest_user);
}
@ -736,10 +732,8 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// opendir/readdir.
//
struct dirent* entry;
char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal);
errno = 0;
while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) {
while ((entry = os::readdir(dirp)) != NULL) {
pid_t pid = filename_to_pid(entry->d_name);
@ -778,8 +772,6 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// close the directory and reset the current working directory
close_directory_secure_cwd(dirp, saved_cwd_fd);
FREE_C_HEAP_ARRAY(char, dbuf);
}
// make the user specific temporary directory. Returns true if

View File

@ -1170,11 +1170,10 @@ DIR * os::opendir(const char *dirname) {
return dirp;
}
// parameter dbuf unused on Windows
struct dirent * os::readdir(DIR *dirp, dirent *dbuf) {
struct dirent * os::readdir(DIR *dirp) {
assert(dirp != NULL, "just checking"); // hotspot change
if (dirp->handle == INVALID_HANDLE_VALUE) {
return 0;
return NULL;
}
strcpy(dirp->dirent.d_name, dirp->find_data.cFileName);
@ -1182,7 +1181,7 @@ struct dirent * os::readdir(DIR *dirp, dirent *dbuf) {
if (!FindNextFile(dirp->handle, &dirp->find_data)) {
if (GetLastError() == ERROR_INVALID_HANDLE) {
errno = EBADF;
return 0;
return NULL;
}
FindClose(dirp->handle);
dirp->handle = INVALID_HANDLE_VALUE;

View File

@ -57,14 +57,6 @@ inline bool os::must_commit_stack_guard_pages() {
return true;
}
inline int os::readdir_buf_size(const char *path)
{
/* As Windows doesn't use the directory entry buffer passed to
os::readdir() this can be as short as possible */
return 1;
}
// Bang the shadow pages if they need to be touched to be mapped.
inline void os::map_stack_shadow_pages(address sp) {
// Write to each page of our new frame to force OS mapping.

View File

@ -318,9 +318,8 @@ static char* get_user_name_slow(int vmid) {
// to determine the user name for the process id.
//
struct dirent* dentry;
char* tdbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(tmpdirname), mtInternal);
errno = 0;
while ((dentry = os::readdir(tmpdirp, (struct dirent *)tdbuf)) != NULL) {
while ((dentry = os::readdir(tmpdirp)) != NULL) {
// check if the directory entry is a hsperfdata file
if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) {
@ -353,9 +352,8 @@ static char* get_user_name_slow(int vmid) {
}
struct dirent* udentry;
char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal);
errno = 0;
while ((udentry = os::readdir(subdirp, (struct dirent *)udbuf)) != NULL) {
while ((udentry = os::readdir(subdirp)) != NULL) {
if (filename_to_pid(udentry->d_name) == vmid) {
struct stat statbuf;
@ -407,11 +405,9 @@ static char* get_user_name_slow(int vmid) {
}
}
os::closedir(subdirp);
FREE_C_HEAP_ARRAY(char, udbuf);
FREE_C_HEAP_ARRAY(char, usrdir_name);
}
os::closedir(tmpdirp);
FREE_C_HEAP_ARRAY(char, tdbuf);
return(latest_user);
}
@ -642,9 +638,8 @@ static void cleanup_sharedmem_resources(const char* dirname) {
// opendir/readdir.
//
struct dirent* entry;
char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal);
errno = 0;
while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) {
while ((entry = os::readdir(dirp)) != NULL) {
int pid = filename_to_pid(entry->d_name);
@ -685,7 +680,6 @@ static void cleanup_sharedmem_resources(const char* dirname) {
errno = 0;
}
os::closedir(dirp);
FREE_C_HEAP_ARRAY(char, dbuf);
}
// create a file mapping object with the requested name, and size

View File

@ -82,7 +82,7 @@ template<size_t byte_size>
struct OrderAccess::PlatformOrderedLoad<byte_size, X_ACQUIRE>
{
template <typename T>
T operator()(const volatile T* p) const { register T t = Atomic::load(p); inlasm_acquire_reg(t); return t; }
T operator()(const volatile T* p) const { T t = Atomic::load(p); inlasm_acquire_reg(t); return t; }
};
#undef inlasm_sync

View File

@ -279,11 +279,11 @@
address os::current_stack_pointer() {
#if defined(__clang__) || defined(__llvm__)
register void *esp;
void *esp;
__asm__("mov %%" SPELL_REG_SP ", %0":"=r"(esp));
return (address) esp;
#elif defined(SPARC_WORKS)
register void *esp;
void *esp;
__asm__("mov %%" SPELL_REG_SP ", %0":"=r"(esp));
return (address) ((char*)esp + sizeof(long)*2);
#else
@ -415,7 +415,7 @@ frame os::get_sender_for_C_frame(frame* fr) {
intptr_t* _get_previous_fp() {
#if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__)
register intptr_t **ebp;
intptr_t **ebp;
__asm__("mov %%" SPELL_REG_FP ", %0":"=r"(ebp));
#else
register intptr_t **ebp __asm__ (SPELL_REG_FP);

View File

@ -85,7 +85,7 @@ template<size_t byte_size>
struct OrderAccess::PlatformOrderedLoad<byte_size, X_ACQUIRE>
{
template <typename T>
T operator()(const volatile T* p) const { register T t = Atomic::load(p); inlasm_acquire_reg(t); return t; }
T operator()(const volatile T* p) const { T t = Atomic::load(p); inlasm_acquire_reg(t); return t; }
};
#undef inlasm_sync

View File

@ -603,7 +603,9 @@ void os::print_register_info(outputStream *st, const void *context) {
st->print_cr("Register to memory mapping:");
st->cr();
// this is only for the "general purpose" registers
st->print("pc ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->nip);
st->print("lr ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->link);
st->print("ctr ="); print_location(st, (intptr_t)uc->uc_mcontext.regs->ctr);
for (int i = 0; i < 32; i++) {
st->print("r%-2d=", i);
print_location(st, uc->uc_mcontext.regs->gpr[i]);

View File

@ -79,7 +79,7 @@ template<size_t byte_size>
struct OrderAccess::PlatformOrderedLoad<byte_size, X_ACQUIRE>
{
template <typename T>
T operator()(const volatile T* p) const { register T t = *p; inlasm_zarch_acquire(); return t; }
T operator()(const volatile T* p) const { T t = *p; inlasm_zarch_acquire(); return t; }
};
#undef inlasm_compiler_barrier

View File

@ -628,7 +628,19 @@ void os::print_context(outputStream *st, const void *context) {
}
void os::print_register_info(outputStream *st, const void *context) {
st->print("Not ported\n");
if (context == NULL) return;
const ucontext_t *uc = (const ucontext_t*)context;
st->print_cr("Register to memory mapping:");
st->cr();
st->print("pc ="); print_location(st, (intptr_t)uc->uc_mcontext.psw.addr);
for (int i = 0; i < 16; i++) {
st->print("r%-2d=", i);
print_location(st, uc->uc_mcontext.gregs[i]);
}
st->cr();
}
#ifndef PRODUCT

View File

@ -95,11 +95,11 @@
address os::current_stack_pointer() {
#ifdef SPARC_WORKS
register void *esp;
void *esp;
__asm__("mov %%" SPELL_REG_SP ", %0":"=r"(esp));
return (address) ((char*)esp + sizeof(long)*2);
#elif defined(__clang__)
intptr_t* esp;
void* esp;
__asm__ __volatile__ ("mov %%" SPELL_REG_SP ", %0":"=r"(esp):);
return (address) esp;
#else
@ -233,7 +233,7 @@ frame os::get_sender_for_C_frame(frame* fr) {
intptr_t* _get_previous_fp() {
#ifdef SPARC_WORKS
register intptr_t **ebp;
intptr_t **ebp;
__asm__("mov %%" SPELL_REG_FP ", %0":"=r"(ebp));
#elif defined(__clang__)
intptr_t **ebp;

View File

@ -4564,7 +4564,7 @@ char *ADLParser::get_paren_expr(const char *description, bool include_location)
// string(still inside the file buffer). Returns a pointer to the string or
// NULL if some other token is found instead.
char *ADLParser::get_ident_common(bool do_preproc) {
register char c;
char c;
char *start; // Pointer to start of token
char *end; // Pointer to end of token
@ -4762,7 +4762,7 @@ char *ADLParser::get_unique_ident(FormDict& dict, const char* nameDescription){
// invokes a parse_err if the next token is not an integer.
// This routine does not leave the integer null-terminated.
int ADLParser::get_int(void) {
register char c;
char c;
char *start; // Pointer to start of token
char *end; // Pointer to end of token
int result; // Storage for integer result

View File

@ -1,5 +1,5 @@
//
// Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
// Copyright (c) 1997, 2018, 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
@ -543,14 +543,18 @@ void ArchDesc::buildMList(MatchNode *node, const char *rootOp,
}
// Identify index position among ideal operands
intptr_t index = _last_opcode;
const char *indexStr = node ? node->_opType : (char *) " ";
index = (intptr_t)_idealIndex[indexStr];
intptr_t index = _last_opcode;
const char *indexStr = node ? node->_opType : (char *) " ";
index = (intptr_t)_idealIndex[indexStr];
if (index == 0) {
fprintf(stderr, "error: operand \"%s\" not found\n", indexStr);
assert(0, "fatal error");
}
if (node == NULL) {
fprintf(stderr, "error: node is NULL\n");
assert(0, "fatal error");
}
// Build MatchLists for children
// Check each child for an internal operand name, and use that name
// for the parent's matchlist entry if it exists

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2018, 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
@ -43,7 +43,7 @@ void Chunk::chop() {
while( k ) {
Chunk *tmp = k->_next;
// clear out this chunk (to detect allocation bugs)
memset(k, 0xBAADBABE, k->_len);
memset(k, 0xBE, k->_len);
free(k); // Free chunk (was malloc'd)
k = tmp;
}
@ -79,7 +79,7 @@ Arena::Arena( Arena *a )
// Total of all Chunks in arena
size_t Arena::used() const {
size_t sum = _chunk->_len - (_max-_hwm); // Size leftover in this Chunk
register Chunk *k = _first;
Chunk *k = _first;
while( k != _chunk) { // Whilst have Chunks in a row
sum += k->_len; // Total size of this Chunk
k = k->_next; // Bump along to next Chunk
@ -93,7 +93,7 @@ void* Arena::grow( size_t x ) {
// Get minimal required size. Either real big, or even bigger for giant objs
size_t len = max(x, Chunk::size);
register Chunk *k = _chunk; // Get filled-up chunk address
Chunk *k = _chunk; // Get filled-up chunk address
_chunk = new (len) Chunk(len);
if( k ) k->_next = _chunk; // Append new chunk to end of linked list

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2018, 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
@ -502,9 +502,11 @@ class dfa_shared_preds {
case '"': // such as: #line 10 "myfile.ad"\n mypredicate
return true;
case '|':
if( prev != pred && *(prev-1) == '|' ) return true;
if (prev != pred && *(prev-1) == '|') return true;
break;
case '&':
if( prev != pred && *(prev-1) == '&' ) return true;
if (prev != pred && *(prev-1) == '&') return true;
break;
default:
return false;
}
@ -717,21 +719,21 @@ const char *Expr::compute_external(const Expr *c1, const Expr *c2) {
// Preserve use of external name which has a zero value
if( c1->_external_name != NULL ) {
sprintf( string_buffer, "%s", c1->as_string());
sprintf(string_buffer, "%s", c1->as_string());
if( !c2->is_zero() ) {
strcat( string_buffer, "+");
strcat( string_buffer, c2->as_string());
strncat(string_buffer, "+", STRING_BUFFER_LENGTH);
strncat(string_buffer, c2->as_string(), STRING_BUFFER_LENGTH);
}
result = strdup(string_buffer);
}
else if( c2->_external_name != NULL ) {
if( !c1->is_zero() ) {
sprintf( string_buffer, "%s", c1->as_string());
strcat( string_buffer, " + ");
sprintf(string_buffer, "%s", c1->as_string());
strncat(string_buffer, " + ", STRING_BUFFER_LENGTH);
} else {
string_buffer[0] = '\0';
}
strcat( string_buffer, c2->_external_name );
strncat(string_buffer, c2->_external_name, STRING_BUFFER_LENGTH);
result = strdup(string_buffer);
}
return result;
@ -741,8 +743,8 @@ const char *Expr::compute_expr(const Expr *c1, const Expr *c2) {
if( !c1->is_zero() ) {
sprintf( string_buffer, "%s", c1->_expr);
if( !c2->is_zero() ) {
strcat( string_buffer, "+");
strcat( string_buffer, c2->_expr);
strncat(string_buffer, "+", STRING_BUFFER_LENGTH);
strncat(string_buffer, c2->_expr, STRING_BUFFER_LENGTH);
}
}
else if( !c2->is_zero() ) {

View File

@ -283,9 +283,9 @@ void Dict::print(PrintKeyOrValue print_key, PrintKeyOrValue print_value) {
// limited to MAXID characters in length. Experimental evidence on 150K of
// C text shows excellent spreading of values for any size hash table.
int hashstr(const void *t) {
register char c, k = 0;
register int sum = 0;
register const char *s = (const char *)t;
char c, k = 0;
int sum = 0;
const char *s = (const char *)t;
while (((c = s[k]) != '\0') && (k < MAXID-1)) { // Get characters till nul
c = (char) ((c << 1) + 1); // Characters are always odd!

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2018, 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
@ -95,8 +95,11 @@ void FileBuff::file_error(int flag, int linenum, const char *fmt, ...)
va_start(args, fmt);
switch (flag) {
case 0: _AD._warnings += _AD.emit_msg(0, flag, linenum, fmt, args);
break;
case 1: _AD._syntax_errs += _AD.emit_msg(0, flag, linenum, fmt, args);
break;
case 2: _AD._semantic_errs += _AD.emit_msg(0, flag, linenum, fmt, args);
break;
default: assert(0, ""); break;
}
va_end(args);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2018, 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
@ -3634,7 +3634,7 @@ int MatchNode::cisc_spill_match(FormDict& globals, RegisterForm* registers, Matc
&& (is_load_from_memory(mRule2->_opType) == data_type) // reg vs. (load memory)
&& (name_left != NULL) // NOT (load)
&& (name_right == NULL) ) { // NOT (load memory foo)
const Form *form2_left = name_left ? globals[name_left] : NULL;
const Form *form2_left = globals[name_left];
if( form2_left && form2_left->is_cisc_mem(globals) ) {
cisc_spillable = Is_cisc_spillable;
operand = _name;
@ -3645,7 +3645,7 @@ int MatchNode::cisc_spill_match(FormDict& globals, RegisterForm* registers, Matc
}
}
// Detect reg vs memory
else if( form->is_cisc_reg(globals) && form2->is_cisc_mem(globals) ) {
else if (form->is_cisc_reg(globals) && form2 != NULL && form2->is_cisc_mem(globals)) {
cisc_spillable = Is_cisc_spillable;
operand = _name;
reg_type = _result;
@ -3710,8 +3710,12 @@ int MatchRule::matchrule_cisc_spill_match(FormDict& globals, RegisterForm* regi
}
// Check right operands: recursive walk to identify reg->mem operand
if( (_rChild == NULL) && (mRule2->_rChild == NULL) ) {
right_spillable = Maybe_cisc_spillable;
if (_rChild == NULL) {
if (mRule2->_rChild == NULL) {
right_spillable = Maybe_cisc_spillable;
} else {
assert(0, "_rChild should not be NULL");
}
} else {
right_spillable = _rChild->cisc_spill_match(globals, registers, mRule2->_rChild, operand, reg_type);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2018, 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,7 +58,7 @@ int main(int argc, char *argv[])
// Read command line arguments and file names
for( int i = 1; i < argc; i++ ) { // For all arguments
register char *s = argv[i]; // Get option/filename
char *s = argv[i]; // Get option/filename
if( *s++ == '-' ) { // It's a flag? (not a filename)
if( !*s ) { // Stand-alone `-' means stdin
@ -142,7 +142,7 @@ int main(int argc, char *argv[])
const char *base = strip_ext(strdup(argv[i]));
char *temp = base_plus_suffix("dfa_",base);
AD._DFA_file._name = base_plus_suffix(temp,".cpp");
delete temp;
delete[] temp;
temp = base_plus_suffix("ad_",base);
AD._CPP_file._name = base_plus_suffix(temp,".cpp");
AD._CPP_CLONE_file._name = base_plus_suffix(temp,"_clone.cpp");
@ -153,13 +153,13 @@ int main(int argc, char *argv[])
AD._CPP_PEEPHOLE_file._name = base_plus_suffix(temp,"_peephole.cpp");
AD._CPP_PIPELINE_file._name = base_plus_suffix(temp,"_pipeline.cpp");
AD._HPP_file._name = base_plus_suffix(temp,".hpp");
delete temp;
delete[] temp;
temp = base_plus_suffix("adGlobals_",base);
AD._VM_file._name = base_plus_suffix(temp,".hpp");
delete temp;
delete[] temp;
temp = base_plus_suffix("bugs_",base);
AD._bug_file._name = base_plus_suffix(temp,".out");
delete temp;
delete[] temp;
} // End of files vs options...
} // End of while have command line arguments

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2018, 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
@ -1936,6 +1936,7 @@ public:
_AD.syntax_err( _ins_encode._linenum,
"Parameter %s not passed to enc_class %s from instruct %s.\n",
rep_var, _encoding._name, _inst._ident);
assert(false, "inst_rep_var == NULL, cannot continue.");
}
// Check if instruction's actual parameter is a local name in the instruction
@ -1976,8 +1977,8 @@ public:
}
else {
// Check for unimplemented functionality before hard failure
assert( strcmp(opc->_ident,"label")==0, "Unimplemented() Label");
assert( false, "ShouldNotReachHere()");
assert(opc != NULL && strcmp(opc->_ident, "label") == 0, "Unimplemented Label");
assert(false, "ShouldNotReachHere()");
}
} // done checking which operand this is.
} else {
@ -2450,8 +2451,8 @@ private:
}
else {
// Check for unimplemented functionality before hard failure
assert( strcmp(opc->_ident,"label")==0, "Unimplemented() Label");
assert( false, "ShouldNotReachHere()");
assert(opc != NULL && strcmp(opc->_ident, "label") == 0, "Unimplemented Label");
assert(false, "ShouldNotReachHere()");
}
// all done
}
@ -3305,9 +3306,11 @@ void ArchDesc::defineClasses(FILE *fp) {
// Output the definitions for machine node specific pipeline data
_machnodes.reset();
for ( ; (machnode = (MachNodeForm*)_machnodes.iter()) != NULL; ) {
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %sNode::pipeline() const { return (&pipeline_class_%03d); }\n",
machnode->_ident, ((class PipeClassForm *)_pipeline->_classdict[machnode->_machnode_pipe])->_num);
if (_pipeline != NULL) {
for ( ; (machnode = (MachNodeForm*)_machnodes.iter()) != NULL; ) {
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %sNode::pipeline() const { return (&pipeline_class_%03d); }\n",
machnode->_ident, ((class PipeClassForm *)_pipeline->_classdict[machnode->_machnode_pipe])->_num);
}
}
fprintf(_CPP_PIPELINE_file._fp, "\n");
@ -3315,13 +3318,15 @@ void ArchDesc::defineClasses(FILE *fp) {
// Output the definitions for instruction pipeline static data references
_instructions.reset();
for ( ; (instr = (InstructForm*)_instructions.iter()) != NULL; ) {
if (instr->_ins_pipe && _pipeline->_classlist.search(instr->_ins_pipe)) {
fprintf(_CPP_PIPELINE_file._fp, "\n");
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline_class() { return (&pipeline_class_%03d); }\n",
max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num);
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline() const { return (&pipeline_class_%03d); }\n",
max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num);
if (_pipeline != NULL) {
for ( ; (instr = (InstructForm*)_instructions.iter()) != NULL; ) {
if (instr->_ins_pipe && _pipeline->_classlist.search(instr->_ins_pipe)) {
fprintf(_CPP_PIPELINE_file._fp, "\n");
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline_class() { return (&pipeline_class_%03d); }\n",
max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num);
fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline() const { return (&pipeline_class_%03d); }\n",
max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num);
}
}
}
}

View File

@ -450,6 +450,7 @@ void AOTCodeHeap::link_shared_runtime_symbols() {
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_object_notify", address, JVMCIRuntime::object_notify);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_object_notifyAll", address, JVMCIRuntime::object_notifyAll);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_OSR_migration_end", address, SharedRuntime::OSR_migration_end);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_enable_stack_reserved_zone", address, SharedRuntime::enable_stack_reserved_zone);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_resolve_dynamic_invoke", address, CompilerRuntime::resolve_dynamic_invoke);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_resolve_string_by_symbol", address, CompilerRuntime::resolve_string_by_symbol);
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_resolve_klass_by_symbol", address, CompilerRuntime::resolve_klass_by_symbol);
@ -549,7 +550,7 @@ void AOTCodeHeap::link_global_lib_symbols() {
_lib_symbols_initialized = true;
CollectedHeap* heap = Universe::heap();
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_card_table_address", address, ci_card_table_address());
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_card_table_address", address, (BarrierSet::barrier_set()->is_a(BarrierSet::CardTableBarrierSet) ? ci_card_table_address() : NULL));
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_heap_top_address", address, (heap->supports_inline_contig_alloc() ? heap->top_addr() : NULL));
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_heap_end_address", address, (heap->supports_inline_contig_alloc() ? heap->end_addr() : NULL));
SET_AOT_GLOBAL_SYMBOL_VALUE("_aot_polling_page", address, os::get_polling_page());

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2018, 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
@ -187,7 +187,7 @@ void CodeBuffer::freeze_section(CodeSection* cs) {
cs->_limit = new_limit;
cs->_locs_limit = new_locs_limit;
cs->_frozen = true;
if (!next_cs->is_allocated() && !next_cs->is_frozen()) {
if (next_cs != NULL && !next_cs->is_allocated() && !next_cs->is_frozen()) {
// Give remaining buffer space to the following section.
next_cs->initialize(new_limit, old_limit - new_limit);
next_cs->initialize_shared_locs(new_locs_limit,
@ -494,10 +494,13 @@ void CodeBuffer::compute_final_layout(CodeBuffer* dest) const {
// Compute initial padding; assign it to the previous non-empty guy.
// Cf. figure_expanded_capacities.
csize_t padding = cs->align_at_start(buf_offset) - buf_offset;
if (padding != 0) {
buf_offset += padding;
assert(prev_dest_cs != NULL, "sanity");
prev_dest_cs->_limit += padding;
if (prev_dest_cs != NULL) {
if (padding != 0) {
buf_offset += padding;
prev_dest_cs->_limit += padding;
}
} else {
guarantee(padding == 0, "In first iteration no padding should be needed.");
}
#ifdef ASSERT
if (prev_cs != NULL && prev_cs->is_frozen() && n < (SECT_LIMIT - 1)) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2018, 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
@ -1386,7 +1386,7 @@ void SubstitutionResolver::block_do(BlockBegin* block) {
n->values_do(this);
// need to remove this instruction from the instruction stream
if (n->subst() != n) {
assert(last != NULL, "must have last");
guarantee(last != NULL, "must have last");
last->set_next(n->next());
} else {
last = n;

View File

@ -2311,7 +2311,9 @@ void LIRGenerator::do_TableSwitch(TableSwitch* x) {
if (compilation()->env()->comp_level() == CompLevel_full_profile && UseSwitchProfiling) {
ciMethod* method = x->state()->scope()->method();
ciMethodData* md = method->method_data_or_null();
assert(md != NULL, "Sanity");
ciProfileData* data = md->bci_to_data(x->state()->bci());
assert(data != NULL, "must have profiling data");
assert(data->is_MultiBranchData(), "bad profile data?");
int default_count_offset = md->byte_offset_of_slot(data, MultiBranchData::default_count_offset());
LIR_Opr md_reg = new_register(T_METADATA);
@ -2367,7 +2369,9 @@ void LIRGenerator::do_LookupSwitch(LookupSwitch* x) {
if (compilation()->env()->comp_level() == CompLevel_full_profile && UseSwitchProfiling) {
ciMethod* method = x->state()->scope()->method();
ciMethodData* md = method->method_data_or_null();
assert(md != NULL, "Sanity");
ciProfileData* data = md->bci_to_data(x->state()->bci());
assert(data != NULL, "must have profiling data");
assert(data->is_MultiBranchData(), "bad profile data?");
int default_count_offset = md->byte_offset_of_slot(data, MultiBranchData::default_count_offset());
LIR_Opr md_reg = new_register(T_METADATA);
@ -3076,6 +3080,7 @@ void LIRGenerator::profile_arguments(ProfileCall* x) {
if (compilation()->profile_arguments()) {
int bci = x->bci_of_invoke();
ciMethodData* md = x->method()->method_data_or_null();
assert(md != NULL, "Sanity");
ciProfileData* data = md->bci_to_data(bci);
if (data != NULL) {
if ((data->is_CallTypeData() && data->as_CallTypeData()->has_arguments()) ||
@ -3212,6 +3217,7 @@ void LIRGenerator::do_ProfileCall(ProfileCall* x) {
void LIRGenerator::do_ProfileReturnType(ProfileReturnType* x) {
int bci = x->bci_of_invoke();
ciMethodData* md = x->method()->method_data_or_null();
assert(md != NULL, "Sanity");
ciProfileData* data = md->bci_to_data(bci);
if (data != NULL) {
assert(data->is_CallTypeData() || data->is_VirtualCallTypeData(), "wrong profile data type");

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2018, 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
@ -3954,7 +3954,7 @@ void MoveResolver::resolve_mappings() {
if (!processed_interval) {
// no move could be processed because there is a cycle in the move list
// (e.g. r1 -> r2, r2 -> r1), so one interval must be spilled to memory
assert(spill_candidate != -1, "no interval in register for spilling found");
guarantee(spill_candidate != -1, "no interval in register for spilling found");
// create a new spill interval and assign a stack slot to it
Interval* from_interval = _mapping_from.at(spill_candidate);
@ -6301,7 +6301,8 @@ void ControlFlowOptimizer::delete_unnecessary_jumps(BlockList* code) {
assert(prev_branch->cond() == prev_cmp->condition(), "should be the same");
}
}
assert(prev_cmp != NULL, "should have found comp instruction for branch");
// Guarantee because it is dereferenced below.
guarantee(prev_cmp != NULL, "should have found comp instruction for branch");
if (prev_branch->block() == code->at(i + 1) && prev_branch->info() == NULL) {
TRACE_LINEAR_SCAN(3, tty->print_cr("Negating conditional branch and deleting unconditional branch at end of block B%d", block->block_id()));

View File

@ -48,14 +48,13 @@ ClassListParser::ClassListParser(const char* file) {
_instance = this;
_classlist_file = file;
_file = fopen(file, "r");
_line_no = 0;
_interfaces = new (ResourceObj::C_HEAP, mtClass) GrowableArray<int>(10, true);
if (_file == NULL) {
char errmsg[JVM_MAXPATHLEN];
os::lasterror(errmsg, JVM_MAXPATHLEN);
vm_exit_during_initialization("Loading classlist failed", errmsg);
}
_line_no = 0;
_interfaces = new (ResourceObj::C_HEAP, mtClass) GrowableArray<int>(10, true);
}
ClassListParser::~ClassListParser() {

View File

@ -4129,37 +4129,6 @@ oop java_lang_ClassLoader::unnamedModule(oop loader) {
return loader->obj_field(unnamedModule_offset);
}
// Caller needs ResourceMark.
const char* java_lang_ClassLoader::describe_external(const oop loader) {
ClassLoaderData *cld = ClassLoaderData::class_loader_data(loader);
const char* name = cld->loader_name_and_id();
// bootstrap loader
if (loader == NULL) {
return name;
}
bool well_known_loader = SystemDictionary::is_system_class_loader(loader) ||
SystemDictionary::is_platform_class_loader(loader);
stringStream ss;
ss.print("%s (instance of %s", name, loader->klass()->external_name());
if (!well_known_loader) {
oop pl = java_lang_ClassLoader::parent(loader);
ClassLoaderData *pl_cld = ClassLoaderData::class_loader_data(pl);
const char* parentName = pl_cld->loader_name_and_id();
if (pl != NULL) {
ss.print(", child of %s %s", parentName, pl->klass()->external_name());
} else {
// bootstrap loader
ss.print(", child of %s", parentName);
}
}
ss.print(")");
return ss.as_string();
}
// Support for java_lang_System
//
#define SYSTEM_FIELDS_DO(macro) \

View File

@ -1310,12 +1310,6 @@ class java_lang_ClassLoader : AllStatic {
// Debugging
friend class JavaClasses;
friend class ClassFileParser; // access to number_of_fake_fields
// Describe ClassLoader for exceptions, tracing ...
// Prints "<name>" (instance of <classname>, child of "<name>" <classname>).
// If a classloader has no name, it prints <unnamed> instead. The output
// for well known loaders (system/platform) is abbreviated.
static const char* describe_external(const oop loader);
};

View File

@ -387,7 +387,8 @@ ModuleEntry* ModuleEntryTable::new_entry(unsigned int hash, Handle module_handle
entry->set_is_patched();
if (log_is_enabled(Trace, module, patch)) {
ResourceMark rm;
log_trace(module, patch)("Marked module %s as patched from --patch-module", name->as_C_string());
log_trace(module, patch)("Marked module %s as patched from --patch-module",
name != NULL ? name->as_C_string() : UNNAMED_MODULE);
}
}

View File

@ -1364,18 +1364,18 @@ InstanceKlass* SystemDictionary::load_shared_class(InstanceKlass* ik,
// notify a class loaded from shared object
ClassLoadingService::notify_class_loaded(ik, true /* shared class */);
}
ik->set_has_passed_fingerprint_check(false);
if (UseAOT && ik->supers_have_passed_fingerprint_checks()) {
uint64_t aot_fp = AOTLoader::get_saved_fingerprint(ik);
uint64_t cds_fp = ik->get_stored_fingerprint();
if (aot_fp != 0 && aot_fp == cds_fp) {
// This class matches with a class saved in an AOT library
ik->set_has_passed_fingerprint_check(true);
} else {
ResourceMark rm;
log_info(class, fingerprint)("%s : expected = " PTR64_FORMAT " actual = " PTR64_FORMAT, ik->external_name(), aot_fp, cds_fp);
ik->set_has_passed_fingerprint_check(false);
if (UseAOT && ik->supers_have_passed_fingerprint_checks()) {
uint64_t aot_fp = AOTLoader::get_saved_fingerprint(ik);
uint64_t cds_fp = ik->get_stored_fingerprint();
if (aot_fp != 0 && aot_fp == cds_fp) {
// This class matches with a class saved in an AOT library
ik->set_has_passed_fingerprint_check(true);
} else {
ResourceMark rm;
log_info(class, fingerprint)("%s : expected = " PTR64_FORMAT " actual = " PTR64_FORMAT, ik->external_name(), aot_fp, cds_fp);
}
}
}
return ik;
@ -2084,9 +2084,9 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
assert(check->is_instance_klass(), "noninstance in systemdictionary");
if ((defining == true) || (k != check)) {
throwException = true;
ss.print("loader %s", java_lang_ClassLoader::describe_external(class_loader()));
ss.print(" attempted duplicate %s definition for %s.",
k->external_kind(), k->external_name());
ss.print("loader %s", loader_data->loader_name_and_id());
ss.print(" attempted duplicate %s definition for %s. (%s)",
k->external_kind(), k->external_name(), k->class_in_module_of_loader(false, true));
} else {
return;
}
@ -2100,15 +2100,17 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
if (throwException == false) {
if (constraints()->check_or_update(k, class_loader, name) == false) {
throwException = true;
ss.print("loader constraint violation: loader %s",
java_lang_ClassLoader::describe_external(class_loader()));
ss.print("loader constraint violation: loader %s", loader_data->loader_name_and_id());
ss.print(" wants to load %s %s.",
k->external_kind(), k->external_name());
Klass *existing_klass = constraints()->find_constrained_klass(name, class_loader);
if (existing_klass->class_loader() != class_loader()) {
ss.print(" A different %s with the same name was previously loaded by %s.",
ss.print(" A different %s with the same name was previously loaded by %s. (%s)",
existing_klass->external_kind(),
java_lang_ClassLoader::describe_external(existing_klass->class_loader()));
existing_klass->class_loader_data()->loader_name_and_id(),
existing_klass->class_in_module_of_loader(false, true));
} else {
ss.print(" (%s)", k->class_in_module_of_loader(false, true));
}
}
}

View File

@ -766,10 +766,11 @@ bool SystemDictionaryShared::add_verification_constraint(Klass* k, Symbol* name,
SharedDictionaryEntry* entry = ((SharedDictionary*)(k->class_loader_data()->dictionary()))->find_entry_for(k);
ResourceMark rm;
// Lambda classes are not archived and will be regenerated at runtime.
if (entry == NULL && strstr(k->name()->as_C_string(), "Lambda$") != NULL) {
if (entry == NULL) {
guarantee(strstr(k->name()->as_C_string(), "Lambda$") != NULL,
"class should be in dictionary before being verified");
return true;
}
assert(entry != NULL, "class should be in dictionary before being verified");
entry->add_verification_constraint(name, from_name, from_field_is_protected,
from_is_array, from_is_object);
if (entry->is_builtin()) {

View File

@ -719,7 +719,8 @@ void ClassVerifier::verify_method(const methodHandle& m, TRAPS) {
ResourceMark rm(THREAD);
LogStream ls(lt);
current_frame.print_on(&ls);
lt.print("offset = %d, opcode = %s", bci, Bytecodes::name(opcode));
lt.print("offset = %d, opcode = %s", bci,
opcode == Bytecodes::_illegal ? "illegal" : Bytecodes::name(opcode));
}
// Make sure wide instruction is in correct format

View File

@ -1363,22 +1363,22 @@ void CodeCache::report_codemem_full(int code_blob_type, bool print) {
const char *msg1 = msg1_stream.as_string();
const char *msg2 = msg2_stream.as_string();
log_warning(codecache)(msg1);
log_warning(codecache)(msg2);
warning(msg1);
warning(msg2);
log_warning(codecache)("%s", msg1);
log_warning(codecache)("%s", msg2);
warning("%s", msg1);
warning("%s", msg2);
} else {
const char *msg1 = "CodeCache is full. Compiler has been disabled.";
const char *msg2 = "Try increasing the code cache size using -XX:ReservedCodeCacheSize=";
log_warning(codecache)(msg1);
log_warning(codecache)(msg2);
warning(msg1);
warning(msg2);
log_warning(codecache)("%s", msg1);
log_warning(codecache)("%s", msg2);
warning("%s", msg1);
warning("%s", msg2);
}
ResourceMark rm;
stringStream s;
// Dump code cache into a buffer before locking the tty,
// Dump code cache into a buffer before locking the tty.
{
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
print_summary(&s);

View File

@ -117,23 +117,24 @@
_outbuf->print("%s", termString);
#endif
const char blobTypeChar[] = {' ', 'N', 'I', 'X', 'Z', 'U', 'R', '?', 'D', 'T', 'E', 'S', 'A', 'M', 'B', 'L' };
const char blobTypeChar[] = {' ', 'C', 'N', 'I', 'X', 'Z', 'U', 'R', '?', 'D', 'T', 'E', 'S', 'A', 'M', 'B', 'L' };
const char* blobTypeName[] = {"noType"
, "nMethod (active)"
, "nMethod (inactive)"
, "nMethod (deopt)"
, "nMethod (zombie)"
, "nMethod (unloaded)"
, "runtime stub"
, "ricochet stub"
, "deopt stub"
, "uncommon trap stub"
, "exception stub"
, "safepoint stub"
, "adapter blob"
, "MH adapter blob"
, "buffer blob"
, "lastType"
, "nMethod (under construction)"
, "nMethod (active)"
, "nMethod (inactive)"
, "nMethod (deopt)"
, "nMethod (zombie)"
, "nMethod (unloaded)"
, "runtime stub"
, "ricochet stub"
, "deopt stub"
, "uncommon trap stub"
, "exception stub"
, "safepoint stub"
, "adapter blob"
, "MH adapter blob"
, "buffer blob"
, "lastType"
};
const char* compTypeName[] = { "none", "c1", "c2", "jvmci" };
@ -156,7 +157,8 @@ static unsigned int nBlocks_t1 = 0; // counting "in_use" nmethods on
static unsigned int nBlocks_t2 = 0; // counting "in_use" nmethods only.
static unsigned int nBlocks_alive = 0; // counting "not_used" and "not_entrant" nmethods only.
static unsigned int nBlocks_dead = 0; // counting "zombie" and "unloaded" methods only.
static unsigned int nBlocks_unloaded = 0; // counting "unloaded" nmethods only. This is a transien state.
static unsigned int nBlocks_inconstr = 0; // counting "inconstruction" nmethods only. This is a transient state.
static unsigned int nBlocks_unloaded = 0; // counting "unloaded" nmethods only. This is a transient state.
static unsigned int nBlocks_stub = 0;
static struct FreeBlk* FreeArray = NULL;
@ -226,6 +228,7 @@ void CodeHeapState::get_HeapStatGlobals(outputStream* out, const char* heapName)
nBlocks_t2 = CodeHeapStatArray[ix].nBlocks_t2;
nBlocks_alive = CodeHeapStatArray[ix].nBlocks_alive;
nBlocks_dead = CodeHeapStatArray[ix].nBlocks_dead;
nBlocks_inconstr = CodeHeapStatArray[ix].nBlocks_inconstr;
nBlocks_unloaded = CodeHeapStatArray[ix].nBlocks_unloaded;
nBlocks_stub = CodeHeapStatArray[ix].nBlocks_stub;
FreeArray = CodeHeapStatArray[ix].FreeArray;
@ -248,6 +251,7 @@ void CodeHeapState::get_HeapStatGlobals(outputStream* out, const char* heapName)
nBlocks_t2 = 0;
nBlocks_alive = 0;
nBlocks_dead = 0;
nBlocks_inconstr = 0;
nBlocks_unloaded = 0;
nBlocks_stub = 0;
FreeArray = NULL;
@ -274,6 +278,7 @@ void CodeHeapState::set_HeapStatGlobals(outputStream* out, const char* heapName)
CodeHeapStatArray[ix].nBlocks_t2 = nBlocks_t2;
CodeHeapStatArray[ix].nBlocks_alive = nBlocks_alive;
CodeHeapStatArray[ix].nBlocks_dead = nBlocks_dead;
CodeHeapStatArray[ix].nBlocks_inconstr = nBlocks_inconstr;
CodeHeapStatArray[ix].nBlocks_unloaded = nBlocks_unloaded;
CodeHeapStatArray[ix].nBlocks_stub = nBlocks_stub;
CodeHeapStatArray[ix].FreeArray = FreeArray;
@ -554,6 +559,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
nBlocks_t2 = 0;
nBlocks_alive = 0;
nBlocks_dead = 0;
nBlocks_inconstr = 0;
nBlocks_unloaded = 0;
nBlocks_stub = 0;
@ -587,6 +593,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
size_t disconnSpace = 0;
size_t notentrSpace = 0;
size_t deadSpace = 0;
size_t inconstrSpace = 0;
size_t unloadedSpace = 0;
size_t stubSpace = 0;
size_t freeSpace = 0;
@ -692,6 +699,10 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
nBlocks_dead++;
deadSpace += hb_bytelen;
break;
case nMethod_inconstruction:
nBlocks_inconstr++;
inconstrSpace += hb_bytelen;
break;
default:
break;
}
@ -846,6 +857,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
StatArray[ix_beg].level = comp_lvl;
StatArray[ix_beg].compiler = cType;
break;
case nMethod_inconstruction: // let's count "in construction" nmethods here.
case nMethod_alive:
StatArray[ix_beg].tx_count++;
StatArray[ix_beg].tx_space += (unsigned short)hb_len;
@ -902,6 +914,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
StatArray[ix_end].level = comp_lvl;
StatArray[ix_end].compiler = cType;
break;
case nMethod_inconstruction: // let's count "in construction" nmethods here.
case nMethod_alive:
StatArray[ix_beg].tx_count++;
StatArray[ix_beg].tx_space += (unsigned short)beg_space;
@ -949,6 +962,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
StatArray[ix].level = comp_lvl;
StatArray[ix].compiler = cType;
break;
case nMethod_inconstruction: // let's count "in construction" nmethods here.
case nMethod_alive:
StatArray[ix].tx_count++;
StatArray[ix].tx_space += (unsigned short)(granule_size>>log2_seg_size);
@ -971,11 +985,6 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
}
}
}
if (n_methods > 0) {
avgTemp = hotnessAccumulator/n_methods;
} else {
avgTemp = 0;
}
done = true;
if (!insane) {
@ -990,6 +999,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
ast->print_cr(" Alive Space = " SIZE_FORMAT_W(8) "k, nBlocks_alive = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", aliveSpace/(size_t)K, nBlocks_alive, (100.0*aliveSpace)/size, (100.0*aliveSpace)/res_size);
ast->print_cr(" disconnected = " SIZE_FORMAT_W(8) "k, nBlocks_disconn = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", disconnSpace/(size_t)K, nBlocks_disconn, (100.0*disconnSpace)/size, (100.0*disconnSpace)/res_size);
ast->print_cr(" not entrant = " SIZE_FORMAT_W(8) "k, nBlocks_notentr = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", notentrSpace/(size_t)K, nBlocks_notentr, (100.0*notentrSpace)/size, (100.0*notentrSpace)/res_size);
ast->print_cr(" inconstrSpace = " SIZE_FORMAT_W(8) "k, nBlocks_inconstr = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", inconstrSpace/(size_t)K, nBlocks_inconstr, (100.0*inconstrSpace)/size, (100.0*inconstrSpace)/res_size);
ast->print_cr(" unloadedSpace = " SIZE_FORMAT_W(8) "k, nBlocks_unloaded = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", unloadedSpace/(size_t)K, nBlocks_unloaded, (100.0*unloadedSpace)/size, (100.0*unloadedSpace)/res_size);
ast->print_cr(" deadSpace = " SIZE_FORMAT_W(8) "k, nBlocks_dead = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", deadSpace/(size_t)K, nBlocks_dead, (100.0*deadSpace)/size, (100.0*deadSpace)/res_size);
ast->print_cr(" stubSpace = " SIZE_FORMAT_W(8) "k, nBlocks_stub = %6d, %10.3f%% of capacity, %10.3f%% of max_capacity", stubSpace/(size_t)K, nBlocks_stub, (100.0*stubSpace)/size, (100.0*stubSpace)/res_size);
@ -1009,9 +1019,15 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
printBox(ast, '-', "Method hotness information at time of this analysis", NULL);
ast->print_cr("Highest possible method temperature: %12d", reset_val);
ast->print_cr("Threshold for method to be considered 'cold': %12.3f", -reset_val + reverse_free_ratio * NmethodSweepActivity);
ast->print_cr("min. hotness = %6d", minTemp);
ast->print_cr("avg. hotness = %6d", avgTemp);
ast->print_cr("max. hotness = %6d", maxTemp);
if (n_methods > 0) {
avgTemp = hotnessAccumulator/n_methods;
ast->print_cr("min. hotness = %6d", minTemp);
ast->print_cr("avg. hotness = %6d", avgTemp);
ast->print_cr("max. hotness = %6d", maxTemp);
} else {
avgTemp = 0;
ast->print_cr("No hotness data available");
}
STRINGSTREAM_FLUSH("\n")
// This loop is intentionally printing directly to "out".
@ -1024,6 +1040,9 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
if (StatArray[ix].t2_count > granule_segs) {
out->print_cr("t2_count[%d] = %d", ix, StatArray[ix].t2_count);
}
if (StatArray[ix].tx_count > granule_segs) {
out->print_cr("tx_count[%d] = %d", ix, StatArray[ix].tx_count);
}
if (StatArray[ix].stub_count > granule_segs) {
out->print_cr("stub_count[%d] = %d", ix, StatArray[ix].stub_count);
}
@ -1036,6 +1055,9 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
if (StatArray[ix].t2_space > granule_segs) {
out->print_cr("t2_space[%d] = %d", ix, StatArray[ix].t2_space);
}
if (StatArray[ix].tx_space > granule_segs) {
out->print_cr("tx_space[%d] = %d", ix, StatArray[ix].tx_space);
}
if (StatArray[ix].stub_space > granule_segs) {
out->print_cr("stub_space[%d] = %d", ix, StatArray[ix].stub_space);
}
@ -1043,11 +1065,11 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
out->print_cr("dead_space[%d] = %d", ix, StatArray[ix].dead_space);
}
// this cast is awful! I need it because NT/Intel reports a signed/unsigned mismatch.
if ((size_t)(StatArray[ix].t1_count+StatArray[ix].t2_count+StatArray[ix].stub_count+StatArray[ix].dead_count) > granule_segs) {
out->print_cr("t1_count[%d] = %d, t2_count[%d] = %d, stub_count[%d] = %d", ix, StatArray[ix].t1_count, ix, StatArray[ix].t2_count, ix, StatArray[ix].stub_count);
if ((size_t)(StatArray[ix].t1_count+StatArray[ix].t2_count+StatArray[ix].tx_count+StatArray[ix].stub_count+StatArray[ix].dead_count) > granule_segs) {
out->print_cr("t1_count[%d] = %d, t2_count[%d] = %d, tx_count[%d] = %d, stub_count[%d] = %d", ix, StatArray[ix].t1_count, ix, StatArray[ix].t2_count, ix, StatArray[ix].tx_count, ix, StatArray[ix].stub_count);
}
if ((size_t)(StatArray[ix].t1_space+StatArray[ix].t2_space+StatArray[ix].stub_space+StatArray[ix].dead_space) > granule_segs) {
out->print_cr("t1_space[%d] = %d, t2_space[%d] = %d, stub_space[%d] = %d", ix, StatArray[ix].t1_space, ix, StatArray[ix].t2_space, ix, StatArray[ix].stub_space);
if ((size_t)(StatArray[ix].t1_space+StatArray[ix].t2_space+StatArray[ix].tx_space+StatArray[ix].stub_space+StatArray[ix].dead_space) > granule_segs) {
out->print_cr("t1_space[%d] = %d, t2_space[%d] = %d, tx_space[%d] = %d, stub_space[%d] = %d", ix, StatArray[ix].t1_space, ix, StatArray[ix].t2_space, ix, StatArray[ix].tx_space, ix, StatArray[ix].stub_space);
}
}
@ -1131,7 +1153,7 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, const char* gra
if (!done || (nBlocks_free == 0)) {
if (nBlocks_free == 0) {
printBox(ast, '-', "no free blocks found in", heapName);
printBox(ast, '-', "no free blocks found in ", heapName);
} else if (!done) {
ast->print_cr("Free block count mismatch could not be resolved.");
ast->print_cr("Try to run \"aggregate\" function to update counters");
@ -1261,9 +1283,10 @@ void CodeHeapState::print_usedSpace(outputStream* out, CodeHeap* heap) {
ast->print("%5d", nm->hotness_counter());
//---< name and signature >---
ast->fill_to(67+6);
if (nm->is_in_use()) {blob_name = nm->method()->name_and_sig_as_C_string(); }
if (nm->is_not_entrant()) {blob_name = nm->method()->name_and_sig_as_C_string(); }
if (nm->is_zombie()) {ast->print("%14s", " zombie method"); }
if (nm->is_in_use()) {blob_name = nm->method()->name_and_sig_as_C_string(); }
if (nm->is_not_entrant()) {blob_name = nm->method()->name_and_sig_as_C_string(); }
if (nm->is_not_installed()) {ast->print("%s", " not (yet) installed method "); }
if (nm->is_zombie()) {ast->print("%s", " zombie method "); }
ast->print("%s", blob_name);
} else {
//---< block size in hex >---
@ -1657,7 +1680,7 @@ void CodeHeapState::print_count(outputStream* out, CodeHeap* heap) {
{
if (nBlocks_alive > 0) {
printBox(ast, '-', "not_used/not_entrant nMethod count only, 0x1..0xf. '*' indicates >= 16 blocks, ' ' indicates empty", NULL);
printBox(ast, '-', "not_used/not_entrant/not_installed nMethod count only, 0x1..0xf. '*' indicates >= 16 blocks, ' ' indicates empty", NULL);
STRINGSTREAM_FLUSH_LOCKED("")
granules_per_line = 128;
@ -1846,7 +1869,7 @@ void CodeHeapState::print_space(outputStream* out, CodeHeap* heap) {
{
if (nBlocks_alive > 0) {
printBox(ast, '-', "not_used/not_entrant space consumption. ' ' indicates empty, '*' indicates full", NULL);
printBox(ast, '-', "not_used/not_entrant/not_installed space consumption. ' ' indicates empty, '*' indicates full", NULL);
granules_per_line = 128;
for (unsigned int ix = 0; ix < alloc_granules; ix++) {
@ -2016,7 +2039,7 @@ void CodeHeapState::print_age(outputStream* out, CodeHeap* heap) {
{
if (nBlocks_alive > 0) {
printBox(ast, '-', "not_used/not_entrant age distribution. '0' indicates youngest 1/256, '8': oldest half, ' ': no age information", NULL);
printBox(ast, '-', "not_used/not_entrant/not_installed age distribution. '0' indicates youngest 1/256, '8': oldest half, ' ': no age information", NULL);
STRINGSTREAM_FLUSH_LOCKED("")
granules_per_line = 128;
@ -2106,8 +2129,8 @@ void CodeHeapState::print_names(outputStream* out, CodeHeap* heap) {
bool blob_initialized = (this_blob != NULL) && (this_blob->header_size() >= 0) && (this_blob->relocation_size() >= 0) &&
((address)this_blob + this_blob->header_size() == (address)(this_blob->relocation_begin())) &&
((address)this_blob + CodeBlob::align_code_offset(this_blob->header_size() + this_blob->relocation_size()) == (address)(this_blob->content_begin())) &&
is_readable_pointer((address)(this_blob->relocation_begin())) &&
is_readable_pointer(this_blob->content_begin());
os::is_readable_pointer((address)(this_blob->relocation_begin())) &&
os::is_readable_pointer(this_blob->content_begin());
// blob could have been flushed, freed, and merged.
// this_blob < last_blob is an indicator for that.
if (blob_initialized && (this_blob > last_blob)) {
@ -2122,7 +2145,7 @@ void CodeHeapState::print_names(outputStream* out, CodeHeap* heap) {
}
// this_blob->name() could return NULL if no name was given to CTOR. Inlined, maybe invisible on stack
const char* blob_name = this_blob->name();
if ((blob_name == NULL) || !is_readable_pointer(blob_name)) {
if ((blob_name == NULL) || !os::is_readable_pointer(blob_name)) {
blob_name = "<unavailable>";
}
@ -2146,8 +2169,8 @@ void CodeHeapState::print_names(outputStream* out, CodeHeap* heap) {
// this_blob->as_nmethod_or_null() is safe. Inlined, maybe invisible on stack.
nmethod* nm = this_blob->as_nmethod_or_null();
Method* method = (nm == NULL) ? NULL : nm->method(); // may be uninitialized, i.e. != NULL, but invalid
if ((nm != NULL) && (method != NULL) && (cbType != nMethod_dead) &&
is_readable_pointer(method) && is_readable_pointer(method->constants())) {
if ((nm != NULL) && (method != NULL) && (cbType != nMethod_dead) && (cbType != nMethod_inconstruction) &&
os::is_readable_pointer(method) && os::is_readable_pointer(method->constants())) {
ResourceMark rm;
//---< collect all data to locals as quickly as possible >---
unsigned int total_size = nm->total_size();
@ -2346,7 +2369,7 @@ void CodeHeapState::print_line_delim(outputStream* out, bufferedStream* ast, cha
}
CodeHeapState::blobType CodeHeapState::get_cbType(CodeBlob* cb) {
if ((cb != NULL) && is_readable_pointer(cb)) {
if ((cb != NULL) && os::is_readable_pointer(cb)) {
if (cb->is_runtime_stub()) return runtimeStub;
if (cb->is_deoptimization_stub()) return deoptimizationStub;
if (cb->is_uncommon_trap_stub()) return uncommonTrapStub;
@ -2358,27 +2381,14 @@ CodeHeapState::blobType CodeHeapState::get_cbType(CodeBlob* cb) {
nmethod* nm = cb->as_nmethod_or_null();
if (nm != NULL) { // no is_readable check required, nm = (nmethod*)cb.
if (nm->is_not_installed()) return nMethod_inconstruction;
if (nm->is_zombie()) return nMethod_dead;
if (nm->is_unloaded()) return nMethod_unloaded;
if (nm->is_in_use()) return nMethod_inuse;
if (nm->is_alive() && !(nm->is_not_entrant())) return nMethod_notused;
if (nm->is_alive()) return nMethod_alive;
if (nm->is_in_use()) return nMethod_inuse;
return nMethod_dead;
}
}
return noType;
}
// Check if pointer can be read from (4-byte read access).
// Helps to prove validity of a not-NULL pointer.
// Returns true in very early stages of VM life when stub is not yet generated.
#define SAFEFETCH_DEFAULT true
bool CodeHeapState::is_readable_pointer(const void* p) {
if (!CanUseSafeFetch32()) {
return SAFEFETCH_DEFAULT;
}
int* const aligned = (int*) align_down((intptr_t)p, 4);
int cafebabe = 0xcafebabe; // tester value 1
int deadbeef = 0xdeadbeef; // tester value 2
return (SafeFetch32(aligned, cafebabe) != cafebabe) || (SafeFetch32(aligned, deadbeef) != deadbeef);
}

View File

@ -43,26 +43,28 @@ class CodeHeapState : public CHeapObj<mtCode> {
};
enum blobType {
noType = 0, // must be! due to initialization by memset to zero
// The nMethod_* values correspond 1:1 to the CompiledMethod enum values.
nMethod_inuse, // executable. This is the "normal" state for a nmethod.
nMethod_notused, // assumed inactive, marked not entrant. Could be revived if necessary.
nMethod_notentrant, // no new activations allowed, marked for deoptimization. Old activations may still exist.
// Will transition to "zombie" after all activations are gone.
nMethod_zombie, // No more activations exist, ready for purge (remove from code cache).
nMethod_unloaded, // No activations exist, should not be called. Transient state on the way to "zombie".
nMethod_alive = nMethod_notentrant, // Combined state: nmethod may have activations, thus can't be purged.
nMethod_dead = nMethod_zombie, // Combined state: nmethod does not have any activations.
runtimeStub = nMethod_unloaded + 1,
ricochetStub,
deoptimizationStub,
uncommonTrapStub,
exceptionStub,
safepointStub,
adapterBlob,
mh_adapterBlob,
bufferBlob,
lastType
noType = 0, // must be! due to initialization by memset to zero
// The nMethod_* values correspond to the CompiledMethod enum values.
// We can't use the CompiledMethod values 1:1 because we depend on noType == 0.
nMethod_inconstruction, // under construction. Very soon, the type will transition to "in_use".
nMethod_inuse, // executable. This is the "normal" state for a nmethod.
nMethod_notused, // assumed inactive, marked not entrant. Could be revived if necessary.
nMethod_notentrant, // no new activations allowed, marked for deoptimization. Old activations may still exist.
// Will transition to "zombie" after all activations are gone.
nMethod_zombie, // No more activations exist, ready for purge (remove from code cache).
nMethod_unloaded, // No activations exist, should not be called. Transient state on the way to "zombie".
nMethod_alive = nMethod_notentrant, // Combined state: nmethod may have activations, thus can't be purged.
nMethod_dead = nMethod_zombie, // Combined state: nmethod does not have any activations.
runtimeStub = nMethod_unloaded + 1,
ricochetStub,
deoptimizationStub,
uncommonTrapStub,
exceptionStub,
safepointStub,
adapterBlob,
mh_adapterBlob,
bufferBlob,
lastType
};
private:
@ -93,7 +95,6 @@ class CodeHeapState : public CHeapObj<mtCode> {
static void print_line_delim(outputStream* out, bufferedStream *sst, char* low_bound, unsigned int ix, unsigned int gpl);
static void print_line_delim(outputStream* out, outputStream *sst, char* low_bound, unsigned int ix, unsigned int gpl);
static blobType get_cbType(CodeBlob* cb);
static bool is_readable_pointer(const void* p);
public:
static void discard(outputStream* out, CodeHeap* heap);
@ -214,6 +215,7 @@ struct CodeHeapStat {
unsigned int nBlocks_t2;
unsigned int nBlocks_alive;
unsigned int nBlocks_dead;
unsigned int nBlocks_inconstr;
unsigned int nBlocks_unloaded;
unsigned int nBlocks_stub;
// FreeBlk data

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2018, 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
@ -217,14 +217,17 @@ void CompileLog::finish_log_on_error(outputStream* file, char* buf, int buflen)
file->print_raw_cr("'>");
size_t nr; // number read into buf from partial log
// In case of unsuccessful completion, read returns -1.
ssize_t bytes_read;
// Copy data up to the end of the last <event> element:
julong to_read = log->_file_end;
while (to_read > 0) {
if (to_read < (julong)buflen)
nr = (size_t)to_read;
else nr = buflen;
nr = read(partial_fd, buf, (int)nr);
if (nr <= 0) break;
bytes_read = read(partial_fd, buf, (int)nr);
if (bytes_read <= 0) break;
nr = bytes_read;
to_read -= (julong)nr;
file->write(buf, nr);
}
@ -232,7 +235,8 @@ void CompileLog::finish_log_on_error(outputStream* file, char* buf, int buflen)
// Copy any remaining data inside a quote:
bool saw_slop = false;
int end_cdata = 0; // state machine [0..2] watching for too many "]]"
while ((nr = read(partial_fd, buf, buflen-1)) > 0) {
while ((bytes_read = read(partial_fd, buf, buflen-1)) > 0) {
nr = bytes_read;
buf[buflen-1] = '\0';
if (!saw_slop) {
file->print_raw_cr("<fragment>");

View File

@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "ci/ciUtilities.hpp"
#include "classfile/javaClasses.hpp"
#include "code/codeCache.hpp"
@ -36,6 +37,7 @@
#include "runtime/os.hpp"
#include "runtime/stubCodeGenerator.hpp"
#include "runtime/stubRoutines.hpp"
#include "utilities/resourceHash.hpp"
#include CPU_HEADER(depChecker)
void* Disassembler::_library = NULL;
@ -49,7 +51,7 @@ static const char hsdis_library_name[] = "hsdis-" HOTSPOT_LIB_ARCH;
static const char decode_instructions_virtual_name[] = "decode_instructions_virtual";
static const char decode_instructions_name[] = "decode_instructions";
static bool use_new_version = true;
#define COMMENT_COLUMN 40 LP64_ONLY(+8) /*could be an option*/
#define COMMENT_COLUMN 52 LP64_ONLY(+8) /*could be an option*/
#define BYTES_COMMENT ";..." /* funky byte display comment */
bool Disassembler::load_library() {
@ -122,7 +124,7 @@ bool Disassembler::load_library() {
_decode_instructions_virtual = CAST_TO_FN_PTR(Disassembler::decode_func_virtual,
os::dll_lookup(_library, decode_instructions_virtual_name));
}
if (_decode_instructions_virtual == NULL) {
if (_decode_instructions_virtual == NULL && _library != NULL) {
// could not spot in new version, try old version
_decode_instructions = CAST_TO_FN_PTR(Disassembler::decode_func,
os::dll_lookup(_library, decode_instructions_name));
@ -163,6 +165,7 @@ class decode_env {
bool _print_bytes;
address _cur_insn;
int _bytes_per_line; // arch-specific formatting option
bool _print_file_name;
static bool match(const char* event, const char* tag) {
size_t taglen = strlen(tag);
@ -191,6 +194,51 @@ class decode_env {
void print_insn_bytes(address pc0, address pc);
void print_address(address value);
struct SourceFileInfo {
struct Link : public CHeapObj<mtCode> {
const char* file;
int line;
Link* next;
Link(const char* f, int l) : file(f), line(l), next(NULL) {}
};
Link *head, *tail;
static unsigned hash(const address& a) {
return primitive_hash<address>(a);
}
static bool equals(const address& a0, const address& a1) {
return primitive_equals<address>(a0, a1);
}
void append(const char* file, int line) {
if (tail != NULL && tail->file == file && tail->line == line) {
// Don't print duplicated lines at the same address. This could happen with C
// macros that end up having multiple "__" tokens on the same __LINE__.
return;
}
Link *link = new Link(file, line);
if (head == NULL) {
head = tail = link;
} else {
tail->next = link;
tail = link;
}
}
SourceFileInfo(const char* file, int line) : head(NULL), tail(NULL) {
append(file, line);
}
};
typedef ResourceHashtable<
address, SourceFileInfo,
SourceFileInfo::hash,
SourceFileInfo::equals,
15889, // prime number
ResourceObj::C_HEAP> SourceFileInfoTable;
static SourceFileInfoTable _src_table;
static const char* _cached_src;
static GrowableArray<const char*>* _cached_src_lines;
public:
decode_env(CodeBlob* code, outputStream* output,
CodeStrings c = CodeStrings(), ptrdiff_t offset = 0);
@ -212,6 +260,7 @@ class decode_env {
_nm->print_code_comment_on(st, COMMENT_COLUMN, pc0, pc);
// this calls reloc_string_for which calls oop::print_value_on
}
print_hook_comments(pc0, _nm != NULL);
// follow each complete insn by a nice newline
st->cr();
}
@ -221,8 +270,96 @@ class decode_env {
outputStream* output() { return _output; }
address cur_insn() { return _cur_insn; }
const char* options() { return _option_buf; }
static void hook(const char* file, int line, address pc);
void print_hook_comments(address pc, bool newline);
};
decode_env::SourceFileInfoTable decode_env::_src_table;
const char* decode_env::_cached_src = NULL;
GrowableArray<const char*>* decode_env::_cached_src_lines = NULL;
void decode_env::hook(const char* file, int line, address pc) {
// For simplication, we never free from this table. It's really not
// necessary as we add to the table only when PrintInterpreter is true,
// which means we are debugging the VM and a little bit of extra
// memory usage doesn't matter.
SourceFileInfo* found = _src_table.get(pc);
if (found != NULL) {
found->append(file, line);
} else {
SourceFileInfo sfi(file, line);
_src_table.put(pc, sfi); // sfi is copied by value
}
}
void decode_env::print_hook_comments(address pc, bool newline) {
SourceFileInfo* found = _src_table.get(pc);
outputStream* st = output();
if (found != NULL) {
for (SourceFileInfo::Link *link = found->head; link; link = link->next) {
const char* file = link->file;
int line = link->line;
if (_cached_src == NULL || strcmp(_cached_src, file) != 0) {
FILE* fp;
// _cached_src_lines is a single cache of the lines of a source file, and we refill this cache
// every time we need to print a line from a different source file. It's not the fastest,
// but seems bearable.
if (_cached_src_lines != NULL) {
for (int i=0; i<_cached_src_lines->length(); i++) {
os::free((void*)_cached_src_lines->at(i));
}
_cached_src_lines->clear();
} else {
_cached_src_lines = new (ResourceObj::C_HEAP, mtCode)GrowableArray<const char*>(0, true);
}
if ((fp = fopen(file, "r")) == NULL) {
_cached_src = NULL;
return;
}
_cached_src = file;
char line[500]; // don't write lines that are too long in your source files!
while (fgets(line, sizeof(line), fp) != NULL) {
size_t len = strlen(line);
if (len > 0 && line[len-1] == '\n') {
line[len-1] = '\0';
}
_cached_src_lines->append(os::strdup(line));
}
fclose(fp);
_print_file_name = true;
}
if (_print_file_name) {
// We print the file name whenever we switch to a new file, or when
// Disassembler::decode is called to disassemble a new block of code.
_print_file_name = false;
if (newline) {
st->cr();
}
st->move_to(COMMENT_COLUMN);
st->print(";;@FILE: %s", file);
newline = true;
}
int index = line - 1; // 1-based line number -> 0-based index.
if (index >= _cached_src_lines->length()) {
// This could happen if source file is mismatched.
} else {
const char* source_line = _cached_src_lines->at(index);
if (newline) {
st->cr();
}
st->move_to(COMMENT_COLUMN);
st->print(";;%5d: %s", line, source_line);
newline = true;
}
}
}
}
decode_env::decode_env(CodeBlob* code, outputStream* output, CodeStrings c,
ptrdiff_t offset) {
memset(this, 0, sizeof(*this)); // Beware, this zeroes bits of fields.
@ -237,6 +374,7 @@ decode_env::decode_env(CodeBlob* code, outputStream* output, CodeStrings c,
_print_pc = true;
_print_bytes = false;
_bytes_per_line = Disassembler::pd_instruction_alignment();
_print_file_name= true;
// parse the global option string:
collect_options(Disassembler::pd_cpu_opts());
@ -558,3 +696,9 @@ void Disassembler::decode(nmethod* nm, outputStream* st) {
env.decode_instructions(p, end);
}
// To prevent excessive code expansion in the interpreter generator, we
// do not inline this function into Disassembler::hook().
void Disassembler::_hook(const char* file, int line, MacroAssembler* masm) {
decode_env::hook(file, line, masm->code_section()->end());
}

View File

@ -77,6 +77,17 @@ class Disassembler {
static void decode(nmethod* nm, outputStream* st = NULL);
static void decode(address begin, address end, outputStream* st = NULL,
CodeStrings c = CodeStrings(), ptrdiff_t offset = 0);
static void _hook(const char* file, int line, class MacroAssembler* masm);
// This functions makes it easy to generate comments in the generated
// interpreter code, by riding on the customary __ macro in the interpreter generator.
// See templateTable_x86.cpp for an example.
template<class T> inline static T* hook(const char* file, int line, T* masm) {
if (PrintInterpreter) {
_hook(file, line, masm);
}
return masm;
}
};
#endif // SHARE_VM_COMPILER_DISASSEMBLER_HPP

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2018, 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
@ -484,7 +484,7 @@ MethodLivenessResult MethodLiveness::get_liveness_at(int entry_bci) {
while (block == NULL && t > 0) {
block = _block_map->at(--t);
}
assert( block != NULL, "invalid bytecode index; must be instruction index" );
guarantee(block != NULL, "invalid bytecode index; must be instruction index");
assert(bci >= block->start_bci() && bci < block->limit_bci(), "block must contain bci.");
answer = block->get_liveness_at(method(), bci);

View File

@ -571,14 +571,14 @@ bool OopMap::equals(const OopMap* other) const {
const ImmutableOopMap* ImmutableOopMapSet::find_map_at_offset(int pc_offset) const {
ImmutableOopMapPair* pairs = get_pairs();
ImmutableOopMapPair* last = NULL;
for (int i = 0; i < _count; ++i) {
int i;
for (i = 0; i < _count; ++i) {
if (pairs[i].pc_offset() >= pc_offset) {
last = &pairs[i];
break;
}
}
ImmutableOopMapPair* last = &pairs[i];
assert(last->pc_offset() == pc_offset, "oopmap not found");
return last->get_from(this);

View File

@ -494,13 +494,13 @@ BytecodeInterpreter::run(interpreterState istate) {
interpreterState orig = istate;
#endif
register intptr_t* topOfStack = (intptr_t *)istate->stack(); /* access with STACK macros */
register address pc = istate->bcp();
register jubyte opcode;
register intptr_t* locals = istate->locals();
register ConstantPoolCache* cp = istate->constants(); // method()->constants()->cache()
intptr_t* topOfStack = (intptr_t *)istate->stack(); /* access with STACK macros */
address pc = istate->bcp();
jubyte opcode;
intptr_t* locals = istate->locals();
ConstantPoolCache* cp = istate->constants(); // method()->constants()->cache()
#ifdef LOTS_OF_REGS
register JavaThread* THREAD = istate->thread();
JavaThread* THREAD = istate->thread();
#else
#undef THREAD
#define THREAD istate->thread()
@ -589,7 +589,7 @@ BytecodeInterpreter::run(interpreterState istate) {
/* 0xF8 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
/* 0xFC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default
};
register uintptr_t *dispatch_table = (uintptr_t*)&opclabels_data[0];
uintptr_t *dispatch_table = (uintptr_t*)&opclabels_data[0];
#endif /* USELABELS */
#ifdef ASSERT

View File

@ -669,23 +669,28 @@ void LinkResolver::check_method_loader_constraints(const LinkInfo& link_info,
SystemDictionary::check_signature_loaders(link_info.signature(), current_loader,
resolved_loader, true, CHECK);
if (failed_type_symbol != NULL) {
const char* msg = "loader constraint violation: when resolving %s"
" \"%s\" the class loader %s of the current class, %s,"
" and the class loader %s for the method's defining class, %s, have"
" different Class objects for the type %s used in the signature";
char* sig = link_info.method_string();
const char* loader1_name = java_lang_ClassLoader::describe_external(current_loader());
char* current = link_info.current_klass()->name()->as_C_string();
const char* loader2_name = java_lang_ClassLoader::describe_external(resolved_loader());
char* target = resolved_method->method_holder()->name()->as_C_string();
char* failed_type_name = failed_type_symbol->as_C_string();
size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1_name) +
strlen(current) + strlen(loader2_name) + strlen(target) +
strlen(failed_type_name) + strlen(method_type) + 1;
char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen);
jio_snprintf(buf, buflen, msg, method_type, sig, loader1_name, current, loader2_name,
target, failed_type_name);
THROW_MSG(vmSymbols::java_lang_LinkageError(), buf);
Klass* current_class = link_info.current_klass();
ClassLoaderData* current_loader_data = current_class->class_loader_data();
assert(current_loader_data != NULL, "current class has no class loader data");
Klass* resolved_method_class = resolved_method->method_holder();
ClassLoaderData* target_loader_data = resolved_method_class->class_loader_data();
assert(target_loader_data != NULL, "resolved method's class has no class loader data");
stringStream ss;
ss.print("loader constraint violation: when resolving %s"
" \"%s\" the class loader %s of the current class, %s,"
" and the class loader %s for the method's defining class, %s, have"
" different Class objects for the type %s used in the signature (%s; %s)",
method_type,
link_info.method_string(),
current_loader_data->loader_name_and_id(),
current_class->name()->as_C_string(),
target_loader_data->loader_name_and_id(),
resolved_method_class->name()->as_C_string(),
failed_type_symbol->as_C_string(),
current_class->class_in_module_of_loader(false, true),
resolved_method_class->class_in_module_of_loader(false, true));
THROW_MSG(vmSymbols::java_lang_LinkageError(), ss.as_string());
}
}
@ -702,23 +707,23 @@ void LinkResolver::check_field_loader_constraints(Symbol* field, Symbol* sig,
false,
CHECK);
if (failed_type_symbol != NULL) {
const char* msg = "loader constraint violation: when resolving field"
" \"%s\" of type %s, the class loader %s of the current class, "
"%s, and the class loader %s for the field's defining "
"type, %s, have different Class objects for type %s";
const char* field_name = field->as_C_string();
const char* loader1_name = java_lang_ClassLoader::describe_external(ref_loader());
const char* sel = sel_klass->external_name();
const char* loader2_name = java_lang_ClassLoader::describe_external(sel_loader());
stringStream ss;
const char* failed_type_name = failed_type_symbol->as_klass_external_name();
const char* curr_klass_name = current_klass->external_name();
size_t buflen = strlen(msg) + strlen(field_name) + 2 * strlen(failed_type_name) +
strlen(loader1_name) + strlen(curr_klass_name) +
strlen(loader2_name) + strlen(sel) + 1;
char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen);
jio_snprintf(buf, buflen, msg, field_name, failed_type_name, loader1_name,
curr_klass_name, loader2_name, sel, failed_type_name);
THROW_MSG(vmSymbols::java_lang_LinkageError(), buf);
ss.print("loader constraint violation: when resolving field"
" \"%s\" of type %s, the class loader %s of the current class, "
"%s, and the class loader %s for the field's defining "
"type, %s, have different Class objects for type %s (%s; %s)",
field->as_C_string(),
failed_type_name,
current_klass->class_loader_data()->loader_name_and_id(),
current_klass->external_name(),
sel_klass->class_loader_data()->loader_name_and_id(),
sel_klass->external_name(),
failed_type_name,
current_klass->class_in_module_of_loader(false, true),
sel_klass->class_in_module_of_loader(false, true));
THROW_MSG(vmSymbols::java_lang_LinkageError(), ss.as_string());
}
}

View File

@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
#include "compiler/disassembler.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
#include "interpreter/interp_masm.hpp"
@ -33,7 +34,7 @@
#ifndef CC_INTERP
# define __ _masm->
#define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
TemplateInterpreterGenerator::TemplateInterpreterGenerator(StubQueue* _code): AbstractInterpreterGenerator(_code) {
_unimplemented_bytecode = NULL;

View File

@ -241,11 +241,7 @@ RepositoryIterator::RepositoryIterator(const char* repository, size_t repository
return;
}
struct dirent* dentry;
char* dir_buffer = NEW_RESOURCE_ARRAY_RETURN_NULL(char, os::readdir_buf_size(_repo));
if (dir_buffer == NULL) {
return;
}
while ((dentry = os::readdir(dirp, (struct dirent*)dir_buffer)) != NULL) {
while ((dentry = os::readdir(dirp)) != NULL) {
const char* const entry_path = filter(dentry->d_name);
if (NULL != entry_path) {
_files->append(entry_path);

Some files were not shown because too many files have changed in this diff Show More