Merge
This commit is contained in:
commit
f921743302
3
.hgtags
3
.hgtags
@ -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
|
||||
|
@ -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],
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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 && \
|
||||
|
@ -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), )
|
||||
|
@ -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
|
||||
|
@ -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
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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), \
|
||||
|
@ -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->
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 { \
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)");
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 { \
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 { \
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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]);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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() ) {
|
||||
|
@ -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!
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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)) {
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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()));
|
||||
|
@ -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() {
|
||||
|
@ -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) \
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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()) {
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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>");
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user