Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
14082957
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
14082957
编写于
12月 20, 2011
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
ed4ddd6b
96c93c69
变更
138
显示空白变更内容
内联
并排
Showing
138 changed file
with
1302 addition
and
1676 deletion
+1302
-1676
make/common/Rules.gmk
make/common/Rules.gmk
+1
-1
make/jprt.properties
make/jprt.properties
+54
-240
make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java
make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java
+1
-1
make/tools/src/build/tools/jdwpgen/OutNode.java
make/tools/src/build/tools/jdwpgen/OutNode.java
+1
-1
src/share/classes/com/sun/jdi/AbsentInformationException.java
...share/classes/com/sun/jdi/AbsentInformationException.java
+1
-0
src/share/classes/com/sun/jdi/ClassNotLoadedException.java
src/share/classes/com/sun/jdi/ClassNotLoadedException.java
+1
-0
src/share/classes/com/sun/jdi/ClassNotPreparedException.java
src/share/classes/com/sun/jdi/ClassNotPreparedException.java
+1
-0
src/share/classes/com/sun/jdi/IncompatibleThreadStateException.java
...classes/com/sun/jdi/IncompatibleThreadStateException.java
+1
-0
src/share/classes/com/sun/jdi/InconsistentDebugInfoException.java
...e/classes/com/sun/jdi/InconsistentDebugInfoException.java
+1
-0
src/share/classes/com/sun/jdi/InternalException.java
src/share/classes/com/sun/jdi/InternalException.java
+1
-0
src/share/classes/com/sun/jdi/InvalidCodeIndexException.java
src/share/classes/com/sun/jdi/InvalidCodeIndexException.java
+1
-0
src/share/classes/com/sun/jdi/InvalidLineNumberException.java
...share/classes/com/sun/jdi/InvalidLineNumberException.java
+1
-0
src/share/classes/com/sun/jdi/InvalidStackFrameException.java
...share/classes/com/sun/jdi/InvalidStackFrameException.java
+1
-0
src/share/classes/com/sun/jdi/InvalidTypeException.java
src/share/classes/com/sun/jdi/InvalidTypeException.java
+1
-0
src/share/classes/com/sun/jdi/InvocationException.java
src/share/classes/com/sun/jdi/InvocationException.java
+1
-0
src/share/classes/com/sun/jdi/JDIPermission.java
src/share/classes/com/sun/jdi/JDIPermission.java
+1
-1
src/share/classes/com/sun/jdi/NativeMethodException.java
src/share/classes/com/sun/jdi/NativeMethodException.java
+1
-0
src/share/classes/com/sun/jdi/ObjectCollectedException.java
src/share/classes/com/sun/jdi/ObjectCollectedException.java
+1
-0
src/share/classes/com/sun/jdi/VMCannotBeModifiedException.java
...hare/classes/com/sun/jdi/VMCannotBeModifiedException.java
+1
-0
src/share/classes/com/sun/jdi/VMDisconnectedException.java
src/share/classes/com/sun/jdi/VMDisconnectedException.java
+1
-0
src/share/classes/com/sun/jdi/VMMismatchException.java
src/share/classes/com/sun/jdi/VMMismatchException.java
+1
-0
src/share/classes/com/sun/jdi/VMOutOfMemoryException.java
src/share/classes/com/sun/jdi/VMOutOfMemoryException.java
+1
-0
src/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java
...m/sun/jdi/connect/IllegalConnectorArgumentsException.java
+1
-0
src/share/classes/com/sun/jdi/connect/TransportTimeoutException.java
...lasses/com/sun/jdi/connect/TransportTimeoutException.java
+1
-1
src/share/classes/com/sun/jdi/connect/VMStartException.java
src/share/classes/com/sun/jdi/connect/VMStartException.java
+1
-0
src/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java
...es/com/sun/jdi/connect/spi/ClosedConnectionException.java
+1
-1
src/share/classes/com/sun/jdi/request/DuplicateRequestException.java
...lasses/com/sun/jdi/request/DuplicateRequestException.java
+1
-0
src/share/classes/com/sun/jdi/request/InvalidRequestStateException.java
...ses/com/sun/jdi/request/InvalidRequestStateException.java
+1
-0
src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java
src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java
+2
-2
src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java
src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java
+4
-4
src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java
src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java
+2
-2
src/share/classes/com/sun/tools/jdi/CharValueImpl.java
src/share/classes/com/sun/tools/jdi/CharValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java
...e/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java
+3
-3
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
+3
-3
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
+6
-6
src/share/classes/com/sun/tools/jdi/ConnectorImpl.java
src/share/classes/com/sun/tools/jdi/ConnectorImpl.java
+8
-8
src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java
src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/EventRequestManagerImpl.java
...re/classes/com/sun/tools/jdi/EventRequestManagerImpl.java
+25
-26
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
+3
-3
src/share/classes/com/sun/tools/jdi/FloatValueImpl.java
src/share/classes/com/sun/tools/jdi/FloatValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/GenericAttachingConnector.java
.../classes/com/sun/tools/jdi/GenericAttachingConnector.java
+1
-1
src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java
src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
+2
-2
src/share/classes/com/sun/tools/jdi/InternalEventHandler.java
...share/classes/com/sun/tools/jdi/InternalEventHandler.java
+2
-2
src/share/classes/com/sun/tools/jdi/JDWPException.java
src/share/classes/com/sun/tools/jdi/JDWPException.java
+1
-1
src/share/classes/com/sun/tools/jdi/LinkedHashMap.java
src/share/classes/com/sun/tools/jdi/LinkedHashMap.java
+0
-904
src/share/classes/com/sun/tools/jdi/LongValueImpl.java
src/share/classes/com/sun/tools/jdi/LongValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/MethodImpl.java
src/share/classes/com/sun/tools/jdi/MethodImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/MirrorImpl.java
src/share/classes/com/sun/tools/jdi/MirrorImpl.java
+4
-4
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
+4
-4
src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java
.../classes/com/sun/tools/jdi/ProcessAttachingConnector.java
+1
-1
src/share/classes/com/sun/tools/jdi/RawCommandLineLauncher.java
...are/classes/com/sun/tools/jdi/RawCommandLineLauncher.java
+1
-1
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
+13
-16
src/share/classes/com/sun/tools/jdi/ShortValueImpl.java
src/share/classes/com/sun/tools/jdi/ShortValueImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java
...are/classes/com/sun/tools/jdi/SunCommandLineLauncher.java
+1
-1
src/share/classes/com/sun/tools/jdi/TargetVM.java
src/share/classes/com/sun/tools/jdi/TargetVM.java
+5
-5
src/share/classes/com/sun/tools/jdi/ThreadAction.java
src/share/classes/com/sun/tools/jdi/ThreadAction.java
+1
-0
src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
...e/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
+1
-1
src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java
src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java
+14
-14
src/share/classes/com/sun/tools/jdi/VMAction.java
src/share/classes/com/sun/tools/jdi/VMAction.java
+2
-0
src/share/classes/com/sun/tools/jdi/VMState.java
src/share/classes/com/sun/tools/jdi/VMState.java
+9
-9
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
+8
-8
src/share/classes/java/lang/Boolean.java
src/share/classes/java/lang/Boolean.java
+2
-1
src/share/classes/java/lang/Byte.java
src/share/classes/java/lang/Byte.java
+1
-0
src/share/classes/java/lang/Character.java
src/share/classes/java/lang/Character.java
+1
-1
src/share/classes/java/lang/CharacterName.java
src/share/classes/java/lang/CharacterName.java
+3
-1
src/share/classes/java/lang/Class.java
src/share/classes/java/lang/Class.java
+13
-5
src/share/classes/java/lang/ClassLoader.java
src/share/classes/java/lang/ClassLoader.java
+2
-1
src/share/classes/java/lang/ConditionalSpecialCasing.java
src/share/classes/java/lang/ConditionalSpecialCasing.java
+6
-6
src/share/classes/java/lang/Double.java
src/share/classes/java/lang/Double.java
+2
-1
src/share/classes/java/lang/EnumConstantNotPresentException.java
...re/classes/java/lang/EnumConstantNotPresentException.java
+1
-0
src/share/classes/java/lang/Float.java
src/share/classes/java/lang/Float.java
+2
-1
src/share/classes/java/lang/Integer.java
src/share/classes/java/lang/Integer.java
+1
-0
src/share/classes/java/lang/Long.java
src/share/classes/java/lang/Long.java
+2
-1
src/share/classes/java/lang/Short.java
src/share/classes/java/lang/Short.java
+1
-0
src/share/classes/java/lang/System.java
src/share/classes/java/lang/System.java
+1
-1
src/share/classes/java/lang/ThreadLocal.java
src/share/classes/java/lang/ThreadLocal.java
+20
-16
src/share/classes/java/lang/Void.java
src/share/classes/java/lang/Void.java
+2
-1
src/share/classes/java/net/HttpCookie.java
src/share/classes/java/net/HttpCookie.java
+51
-4
src/share/classes/java/nio/file/spi/FileSystemProvider.java
src/share/classes/java/nio/file/spi/FileSystemProvider.java
+4
-2
src/share/classes/java/util/Locale.java
src/share/classes/java/util/Locale.java
+18
-28
src/share/classes/java/util/concurrent/ArrayBlockingQueue.java
...hare/classes/java/util/concurrent/ArrayBlockingQueue.java
+10
-4
src/share/classes/java/util/concurrent/ConcurrentHashMap.java
...share/classes/java/util/concurrent/ConcurrentHashMap.java
+23
-22
src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java
...e/classes/java/util/concurrent/ConcurrentLinkedDeque.java
+2
-2
src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java
...e/classes/java/util/concurrent/ConcurrentLinkedQueue.java
+2
-2
src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java
...e/classes/java/util/concurrent/ConcurrentSkipListMap.java
+64
-62
src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java
...e/classes/java/util/concurrent/ConcurrentSkipListSet.java
+9
-10
src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java
...re/classes/java/util/concurrent/CopyOnWriteArrayList.java
+6
-5
src/share/classes/java/util/concurrent/DelayQueue.java
src/share/classes/java/util/concurrent/DelayQueue.java
+1
-1
src/share/classes/java/util/concurrent/Exchanger.java
src/share/classes/java/util/concurrent/Exchanger.java
+12
-8
src/share/classes/java/util/concurrent/ForkJoinPool.java
src/share/classes/java/util/concurrent/ForkJoinPool.java
+2
-2
src/share/classes/java/util/concurrent/ForkJoinTask.java
src/share/classes/java/util/concurrent/ForkJoinTask.java
+1
-1
src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java
...re/classes/java/util/concurrent/ForkJoinWorkerThread.java
+4
-4
src/share/classes/java/util/concurrent/LinkedTransferQueue.java
...are/classes/java/util/concurrent/LinkedTransferQueue.java
+15
-15
src/share/classes/java/util/concurrent/Phaser.java
src/share/classes/java/util/concurrent/Phaser.java
+1
-1
src/share/classes/java/util/concurrent/PriorityBlockingQueue.java
...e/classes/java/util/concurrent/PriorityBlockingQueue.java
+3
-2
src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java
...ses/java/util/concurrent/ScheduledThreadPoolExecutor.java
+45
-43
src/share/classes/java/util/concurrent/SynchronousQueue.java
src/share/classes/java/util/concurrent/SynchronousQueue.java
+42
-31
src/share/classes/java/util/jar/JarFile.java
src/share/classes/java/util/jar/JarFile.java
+10
-10
src/share/classes/java/util/jar/Manifest.java
src/share/classes/java/util/jar/Manifest.java
+5
-5
src/share/classes/java/util/logging/LogManager.java
src/share/classes/java/util/logging/LogManager.java
+14
-14
src/share/classes/java/util/prefs/Preferences.java
src/share/classes/java/util/prefs/Preferences.java
+1
-1
src/share/classes/java/util/prefs/XmlSupport.java
src/share/classes/java/util/prefs/XmlSupport.java
+8
-8
src/share/classes/java/util/regex/Pattern.java
src/share/classes/java/util/regex/Pattern.java
+19
-2
src/share/classes/java/util/zip/ZipEntry.java
src/share/classes/java/util/zip/ZipEntry.java
+2
-0
src/share/classes/javax/script/ScriptException.java
src/share/classes/javax/script/ScriptException.java
+2
-0
src/share/classes/javax/xml/crypto/NodeSetData.java
src/share/classes/javax/xml/crypto/NodeSetData.java
+1
-0
src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java
src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java
+8
-7
src/share/classes/javax/xml/crypto/dsig/Manifest.java
src/share/classes/javax/xml/crypto/dsig/Manifest.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/Reference.java
src/share/classes/javax/xml/crypto/dsig/Reference.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/SignatureProperties.java
...re/classes/javax/xml/crypto/dsig/SignatureProperties.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/SignatureProperty.java
...hare/classes/javax/xml/crypto/dsig/SignatureProperty.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/SignedInfo.java
src/share/classes/javax/xml/crypto/dsig/SignedInfo.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/TransformService.java
...share/classes/javax/xml/crypto/dsig/TransformService.java
+8
-8
src/share/classes/javax/xml/crypto/dsig/XMLObject.java
src/share/classes/javax/xml/crypto/dsig/XMLObject.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/XMLSignature.java
src/share/classes/javax/xml/crypto/dsig/XMLSignature.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java
...re/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java
+11
-0
src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java
src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java
...classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java
+6
-0
src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java
src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java
...lasses/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java
...share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java
+1
-0
src/share/classes/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java
...sses/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java
+12
-6
src/share/classes/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java
...javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java
+9
-3
src/share/classes/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java
.../javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java
+12
-6
src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java
src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java
+12
-6
src/share/classes/sun/misc/JavaNetHttpCookieAccess.java
src/share/classes/sun/misc/JavaNetHttpCookieAccess.java
+44
-0
src/share/classes/sun/misc/SharedSecrets.java
src/share/classes/sun/misc/SharedSecrets.java
+11
-0
src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
.../classes/sun/net/www/protocol/http/HttpURLConnection.java
+83
-9
src/solaris/classes/java/lang/ProcessEnvironment.java
src/solaris/classes/java/lang/ProcessEnvironment.java
+1
-0
src/solaris/native/java/net/Inet4AddressImpl.c
src/solaris/native/java/net/Inet4AddressImpl.c
+6
-5
src/solaris/native/java/net/Inet6AddressImpl.c
src/solaris/native/java/net/Inet6AddressImpl.c
+6
-5
src/windows/classes/java/lang/ProcessEnvironment.java
src/windows/classes/java/lang/ProcessEnvironment.java
+5
-0
test/Makefile
test/Makefile
+20
-5
test/java/nio/file/Files/CustomOptions.java
test/java/nio/file/Files/CustomOptions.java
+112
-0
test/java/util/Collections/EmptyIterator.java
test/java/util/Collections/EmptyIterator.java
+0
-2
test/java/util/regex/RegExTest.java
test/java/util/regex/RegExTest.java
+32
-5
test/sun/net/www/protocol/http/HttpOnly.java
test/sun/net/www/protocol/http/HttpOnly.java
+242
-0
未找到文件。
make/common/Rules.gmk
浏览文件 @
14082957
...
...
@@ -239,7 +239,7 @@ classes : $(CLASSES_INIT) .delete.classlist .compile.classlist
$(CAT) $<.filtered; \
$(ECHO) "# Running javac: $$numfiles files; in $(CURDIR)"; \
$(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
$(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered
;
\
$(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered
&&
\
$(ECHO) "# javac finished"; \
fi
@$(java-vm-cleanup)
...
...
make/jprt.properties
浏览文件 @
14082957
...
...
@@ -25,7 +25,7 @@
# Properties for jprt
#
Release to build for
#
Locked down to jdk8
jprt.tools.default.release
=
jdk8
# The different build flavors we want, we override here so we just get these 2
...
...
@@ -45,247 +45,59 @@ jprt.build.targets= \
# User can select the test set with jprt submit "-testset name" option
jprt.my.test.set
=
${jprt.test.set}
#
Standard vm test target
jprt.
vm.default.test.targets
=
\
solaris_sparc_5.10-product-c1-
jvm98,
\
solaris_sparcv9_5.10-product-c2-
jvm98,
\
solaris_i586_5.10-product-c1-
jvm98,
\
solaris_x64_5.10-product-c2-
jvm98,
\
linux_i586_2.6-product-{c1|c2}-
jvm98,
\
linux_x64_2.6-product-c2-
jvm98,
\
windows_i586_5.1-product-c1-
jvm98,
\
windows_x64_5.2-product-c2-
jvm98
#
Test target list (no fastdebug & limited c2 testing)
jprt.
my.test.target.set
=
\
solaris_sparc_5.10-product-c1-
TESTNAME,
\
solaris_sparcv9_5.10-product-c2-
TESTNAME,
\
solaris_i586_5.10-product-c1-
TESTNAME,
\
solaris_x64_5.10-product-c2-
TESTNAME,
\
linux_i586_2.6-product-{c1|c2}-
TESTNAME,
\
linux_x64_2.6-product-c2-
TESTNAME,
\
windows_i586_5.1-product-c1-
TESTNAME,
\
windows_x64_5.2-product-c2-
TESTNAME
# Select vm testlist to use (allow for testset to be empty too)
jprt.vm.all.test.targets
=
${jprt.vm.default.test.targets}
jprt.vm..test.targets
=
${jprt.vm.default.test.targets}
jprt.test.targets
=
${jprt.vm.${jprt.my.test.set}.test.targets}
# Default vm test targets (testset=default)
jprt.vm.default.test.targets
=
\
${jprt.my.test.target.set:TESTNAME=jvm98}
# Default jdk test targets
in test/Makefile (no fastdebug & limited c2
)
# Default jdk test targets
(testset=default
)
jprt.make.rule.default.test.targets
=
\
\
solaris_sparc_5.10-product-c1-jdk_beans1,
\
solaris_sparcv9_5.10-product-c2-jdk_beans1,
\
solaris_i586_5.10-product-c1-jdk_beans1,
\
solaris_x64_5.10-product-c2-jdk_beans1,
\
linux_i586_2.6-product-{c1|c2}-jdk_beans1,
\
linux_x64_2.6-product-c2-jdk_beans1,
\
windows_i586_5.1-product-c1-jdk_beans1,
\
windows_x64_5.2-product-c2-jdk_beans1,
\
\
solaris_sparc_5.10-product-c1-jdk_io,
\
solaris_sparcv9_5.10-product-c2-jdk_io,
\
solaris_i586_5.10-product-c1-jdk_io,
\
solaris_x64_5.10-product-c2-jdk_io,
\
linux_i586_2.6-product-{c1|c2}-jdk_io,
\
linux_x64_2.6-product-c2-jdk_io,
\
windows_i586_5.1-product-c1-jdk_io,
\
windows_x64_5.2-product-c2-jdk_io,
\
\
solaris_sparc_5.10-product-c1-jdk_lang,
\
solaris_sparcv9_5.10-product-c2-jdk_lang,
\
solaris_i586_5.10-product-c1-jdk_lang,
\
solaris_x64_5.10-product-c2-jdk_lang,
\
linux_i586_2.6-product-{c1|c2}-jdk_lang,
\
linux_x64_2.6-product-c2-jdk_lang,
\
windows_i586_5.1-product-c1-jdk_lang,
\
windows_x64_5.2-product-c2-jdk_lang,
\
\
solaris_sparc_5.10-product-c1-jdk_math,
\
solaris_sparcv9_5.10-product-c2-jdk_math,
\
solaris_i586_5.10-product-c1-jdk_math,
\
solaris_x64_5.10-product-c2-jdk_math,
\
linux_i586_2.6-product-{c1|c2}-jdk_math,
\
linux_x64_2.6-product-c2-jdk_math,
\
windows_i586_5.1-product-c1-jdk_math,
\
windows_x64_5.2-product-c2-jdk_math,
\
\
solaris_sparc_5.10-product-c1-jdk_misc,
\
solaris_sparcv9_5.10-product-c2-jdk_misc,
\
solaris_i586_5.10-product-c1-jdk_misc,
\
solaris_x64_5.10-product-c2-jdk_misc,
\
linux_i586_2.6-product-{c1|c2}-jdk_misc,
\
linux_x64_2.6-product-c2-jdk_misc,
\
windows_i586_5.1-product-c1-jdk_misc,
\
windows_x64_5.2-product-c2-jdk_misc,
\
\
solaris_sparc_5.10-product-c1-jdk_net,
\
solaris_sparcv9_5.10-product-c2-jdk_net,
\
solaris_i586_5.10-product-c1-jdk_net,
\
solaris_x64_5.10-product-c2-jdk_net,
\
linux_i586_2.6-product-{c1|c2}-jdk_net,
\
linux_x64_2.6-product-c2-jdk_net,
\
windows_i586_5.1-product-c1-jdk_net,
\
windows_x64_5.2-product-c2-jdk_net,
\
\
solaris_sparc_5.10-product-c1-jdk_nio1,
\
solaris_sparcv9_5.10-product-c2-jdk_nio1,
\
solaris_i586_5.10-product-c1-jdk_nio1,
\
solaris_x64_5.10-product-c2-jdk_nio1,
\
linux_i586_2.6-product-{c1|c2}-jdk_nio1,
\
linux_x64_2.6-product-c2-jdk_nio1,
\
windows_i586_5.1-product-c1-jdk_nio1,
\
windows_x64_5.2-product-c2-jdk_nio1,
\
\
solaris_sparc_5.10-product-c1-jdk_nio2,
\
solaris_sparcv9_5.10-product-c2-jdk_nio2,
\
solaris_i586_5.10-product-c1-jdk_nio2,
\
solaris_x64_5.10-product-c2-jdk_nio2,
\
linux_i586_2.6-product-{c1|c2}-jdk_nio2,
\
linux_x64_2.6-product-c2-jdk_nio2,
\
windows_i586_5.1-product-c1-jdk_nio2,
\
windows_x64_5.2-product-c2-jdk_nio2,
\
\
solaris_sparc_5.10-product-c1-jdk_nio3,
\
solaris_sparcv9_5.10-product-c2-jdk_nio3,
\
solaris_i586_5.10-product-c1-jdk_nio3,
\
solaris_x64_5.10-product-c2-jdk_nio3,
\
linux_i586_2.6-product-{c1|c2}-jdk_nio3,
\
linux_x64_2.6-product-c2-jdk_nio3,
\
windows_i586_5.1-product-c1-jdk_nio3,
\
windows_x64_5.2-product-c2-jdk_nio3,
\
\
solaris_sparc_5.10-product-c1-jdk_security1,
\
solaris_sparcv9_5.10-product-c2-jdk_security1,
\
solaris_i586_5.10-product-c1-jdk_security1,
\
solaris_x64_5.10-product-c2-jdk_security1,
\
linux_i586_2.6-product-{c1|c2}-jdk_security1,
\
linux_x64_2.6-product-c2-jdk_security1,
\
windows_i586_5.1-product-c1-jdk_security1,
\
windows_x64_5.2-product-c2-jdk_security1,
\
\
solaris_sparc_5.10-product-c1-jdk_text,
\
solaris_sparcv9_5.10-product-c2-jdk_text,
\
solaris_i586_5.10-product-c1-jdk_text,
\
solaris_x64_5.10-product-c2-jdk_text,
\
linux_i586_2.6-product-{c1|c2}-jdk_text,
\
linux_x64_2.6-product-c2-jdk_text,
\
windows_i586_5.1-product-c1-jdk_text,
\
windows_x64_5.2-product-c2-jdk_text,
\
\
solaris_sparc_5.10-product-c1-jdk_tools1,
\
solaris_sparcv9_5.10-product-c2-jdk_tools1,
\
solaris_i586_5.10-product-c1-jdk_tools1,
\
solaris_x64_5.10-product-c2-jdk_tools1,
\
linux_i586_2.6-product-{c1|c2}-jdk_tools1,
\
linux_x64_2.6-product-c2-jdk_tools1,
\
windows_i586_5.1-product-c1-jdk_tools1,
\
windows_x64_5.2-product-c2-jdk_tools1,
\
\
solaris_sparc_5.10-product-c1-jdk_util,
\
solaris_sparcv9_5.10-product-c2-jdk_util,
\
solaris_i586_5.10-product-c1-jdk_util,
\
solaris_x64_5.10-product-c2-jdk_util,
\
linux_i586_2.6-product-{c1|c2}-jdk_util,
\
linux_x64_2.6-product-c2-jdk_util,
\
windows_i586_5.1-product-c1-jdk_util,
\
windows_x64_5.2-product-c2-jdk_util
${jprt.my.test.target.set:TESTNAME=jdk_beans1},
\
${jprt.my.test.target.set:TESTNAME=jdk_io},
\
${jprt.my.test.target.set:TESTNAME=jdk_lang},
\
${jprt.my.test.target.set:TESTNAME=jdk_math},
\
${jprt.my.test.target.set:TESTNAME=jdk_misc},
\
${jprt.my.test.target.set:TESTNAME=jdk_net},
\
${jprt.my.test.target.set:TESTNAME=jdk_nio1},
\
${jprt.my.test.target.set:TESTNAME=jdk_nio2},
\
${jprt.my.test.target.set:TESTNAME=jdk_nio3},
\
${jprt.my.test.target.set:TESTNAME=jdk_security1},
\
${jprt.my.test.target.set:TESTNAME=jdk_text},
\
${jprt.my.test.target.set:TESTNAME=jdk_util}
# All jdk test targets in test/Makefile (still no fastdebug & limited c2)
# All vm test targets (testset=all)
jprt.vm.all.test.targets
=
\
${jprt.vm.default.test.targets},
\
${jprt.my.test.target.set:TESTNAME=runThese},
\
${jprt.my.test.target.set:TESTNAME=jbb_default}
# All jdk test targets (testset=all)
jprt.make.rule.all.test.targets
=
\
\
${jprt.make.rule.default.test.targets},
\
\
solaris_sparc_5.10-product-c1-jdk_awt,
\
solaris_sparcv9_5.10-product-c2-jdk_awt,
\
solaris_i586_5.10-product-c1-jdk_awt,
\
solaris_x64_5.10-product-c2-jdk_awt,
\
linux_i586_2.6-product-{c1|c2}-jdk_awt,
\
linux_x64_2.6-product-c2-jdk_awt,
\
windows_i586_5.1-product-c1-jdk_awt,
\
windows_x64_5.2-product-c2-jdk_awt,
\
\
solaris_sparc_5.10-product-c1-jdk_beans2,
\
solaris_sparcv9_5.10-product-c2-jdk_beans2,
\
solaris_i586_5.10-product-c1-jdk_beans2,
\
solaris_x64_5.10-product-c2-jdk_beans2,
\
linux_i586_2.6-product-{c1|c2}-jdk_beans2,
\
linux_x64_2.6-product-c2-jdk_beans2,
\
windows_i586_5.1-product-c1-jdk_beans2,
\
windows_x64_5.2-product-c2-jdk_beans2,
\
\
solaris_sparc_5.10-product-c1-jdk_beans3,
\
solaris_sparcv9_5.10-product-c2-jdk_beans3,
\
solaris_i586_5.10-product-c1-jdk_beans3,
\
solaris_x64_5.10-product-c2-jdk_beans3,
\
linux_i586_2.6-product-{c1|c2}-jdk_beans3,
\
linux_x64_2.6-product-c2-jdk_beans3,
\
windows_i586_5.1-product-c1-jdk_beans3,
\
windows_x64_5.2-product-c2-jdk_beans3,
\
\
solaris_sparc_5.10-product-c1-jdk_management1,
\
solaris_sparcv9_5.10-product-c2-jdk_management1,
\
solaris_i586_5.10-product-c1-jdk_management1,
\
solaris_x64_5.10-product-c2-jdk_management1,
\
linux_i586_2.6-product-{c1|c2}-jdk_management1,
\
linux_x64_2.6-product-c2-jdk_management1,
\
windows_i586_5.1-product-c1-jdk_management1,
\
windows_x64_5.2-product-c2-jdk_management1,
\
\
solaris_sparc_5.10-product-c1-jdk_management2,
\
solaris_sparcv9_5.10-product-c2-jdk_management2,
\
solaris_i586_5.10-product-c1-jdk_management2,
\
solaris_x64_5.10-product-c2-jdk_management2,
\
linux_i586_2.6-product-{c1|c2}-jdk_management2,
\
linux_x64_2.6-product-c2-jdk_management2,
\
windows_i586_5.1-product-c1-jdk_management2,
\
windows_x64_5.2-product-c2-jdk_management2,
\
\
solaris_sparc_5.10-product-c1-jdk_rmi,
\
solaris_sparcv9_5.10-product-c2-jdk_rmi,
\
solaris_i586_5.10-product-c1-jdk_rmi,
\
solaris_x64_5.10-product-c2-jdk_rmi,
\
linux_i586_2.6-product-{c1|c2}-jdk_rmi,
\
linux_x64_2.6-product-c2-jdk_rmi,
\
windows_i586_5.1-product-c1-jdk_rmi,
\
windows_x64_5.2-product-c2-jdk_rmi,
\
\
solaris_sparc_5.10-product-c1-jdk_security2,
\
solaris_sparcv9_5.10-product-c2-jdk_security2,
\
solaris_i586_5.10-product-c1-jdk_security2,
\
solaris_x64_5.10-product-c2-jdk_security2,
\
linux_i586_2.6-product-{c1|c2}-jdk_security2,
\
linux_x64_2.6-product-c2-jdk_security2,
\
windows_i586_5.1-product-c1-jdk_security2,
\
windows_x64_5.2-product-c2-jdk_security2,
\
\
solaris_sparc_5.10-product-c1-jdk_security3,
\
solaris_sparcv9_5.10-product-c2-jdk_security3,
\
solaris_i586_5.10-product-c1-jdk_security3,
\
solaris_x64_5.10-product-c2-jdk_security3,
\
linux_i586_2.6-product-{c1|c2}-jdk_security3,
\
linux_x64_2.6-product-c2-jdk_security3,
\
windows_i586_5.1-product-c1-jdk_security3,
\
windows_x64_5.2-product-c2-jdk_security3,
\
\
solaris_sparc_5.10-product-c1-jdk_sound,
\
solaris_sparcv9_5.10-product-c2-jdk_sound,
\
solaris_i586_5.10-product-c1-jdk_sound,
\
solaris_x64_5.10-product-c2-jdk_sound,
\
linux_i586_2.6-product-{c1|c2}-jdk_sound,
\
linux_x64_2.6-product-c2-jdk_sound,
\
windows_i586_5.1-product-c1-jdk_sound,
\
windows_x64_5.2-product-c2-jdk_sound,
\
\
solaris_sparc_5.10-product-c1-jdk_swing,
\
solaris_sparcv9_5.10-product-c2-jdk_swing,
\
solaris_i586_5.10-product-c1-jdk_swing,
\
solaris_x64_5.10-product-c2-jdk_swing,
\
linux_i586_2.6-product-{c1|c2}-jdk_swing,
\
linux_x64_2.6-product-c2-jdk_swing,
\
windows_i586_5.1-product-c1-jdk_swing,
\
windows_x64_5.2-product-c2-jdk_swing,
\
\
solaris_sparc_5.10-product-c1-jdk_tools2,
\
solaris_sparcv9_5.10-product-c2-jdk_tools2,
\
solaris_i586_5.10-product-c1-jdk_tools2,
\
solaris_x64_5.10-product-c2-jdk_tools2,
\
linux_i586_2.6-product-{c1|c2}-jdk_tools2,
\
linux_x64_2.6-product-c2-jdk_tools2,
\
windows_i586_5.1-product-c1-jdk_tools2,
\
windows_x64_5.2-product-c2-jdk_tools2
${jprt.my.test.target.set:TESTNAME=jdk_awt},
\
${jprt.my.test.target.set:TESTNAME=jdk_beans2},
\
${jprt.my.test.target.set:TESTNAME=jdk_beans3},
\
${jprt.my.test.target.set:TESTNAME=jdk_management1},
\
${jprt.my.test.target.set:TESTNAME=jdk_management2},
\
${jprt.my.test.target.set:TESTNAME=jdk_rmi},
\
${jprt.my.test.target.set:TESTNAME=jdk_security2},
\
${jprt.my.test.target.set:TESTNAME=jdk_security3},
\
${jprt.my.test.target.set:TESTNAME=jdk_sound},
\
${jprt.my.test.target.set:TESTNAME=jdk_swing},
\
${jprt.my.test.target.set:TESTNAME=jdk_tools1},
\
${jprt.my.test.target.set:TESTNAME=jdk_tools2}
# JCK test targets in test/Makefile (no
fastdebug & limited c2, windows broken
)
# JCK test targets in test/Makefile (no
windows
)
jprt.my.jck.test.target.set
=
\
solaris_sparc_5.10-product-c1-JCK7TESTRULE,
\
solaris_sparcv9_5.10-product-c2-JCK7TESTRULE,
\
...
...
@@ -303,6 +115,8 @@ jprt.make.rule.jck.test.targets= \
# Select list to use (allow for testset to be empty too)
jprt.make.rule..test.targets
=
${jprt.make.rule.default.test.targets}
jprt.make.rule.test.targets
=
${jprt.make.rule.${jprt.my.test.set}.test.targets}
jprt.vm..test.targets
=
${jprt.vm.default.test.targets}
jprt.test.targets
=
${jprt.vm.${jprt.my.test.set}.test.targets}
# Directories to be excluded from the source bundles
jprt.bundle.exclude.src.dirs
=
build dist webrev
...
...
make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java
浏览文件 @
14082957
...
...
@@ -35,7 +35,7 @@ class ArrayRegionTypeNode extends AbstractSimpleTypeNode {
}
String
javaType
()
{
return
"List"
;
return
"List
<?>
"
;
}
public
void
genJavaWrite
(
PrintWriter
writer
,
int
depth
,
...
...
make/tools/src/build/tools/jdwpgen/OutNode.java
浏览文件 @
14082957
...
...
@@ -89,7 +89,7 @@ class OutNode extends AbstractTypeListNode {
if
(
Main
.
genDebug
)
{
indent
(
writer
,
depth
+
1
);
writer
.
println
(
"if ((vm.traceFlags &
vm
.TRACE_SENDS) != 0) {"
);
"if ((vm.traceFlags &
VirtualMachineImpl
.TRACE_SENDS) != 0) {"
);
indent
(
writer
,
depth
+
2
);
writer
.
print
(
"vm.printTrace(\"Sending Command(id=\" + ps.pkt.id + \") "
);
...
...
src/share/classes/com/sun/jdi/AbsentInformationException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
*/
public
class
AbsentInformationException
extends
Exception
{
private
static
final
long
serialVersionUID
=
4988939309582416373L
;
public
AbsentInformationException
()
{
super
();
...
...
src/share/classes/com/sun/jdi/ClassNotLoadedException.java
浏览文件 @
14082957
...
...
@@ -69,6 +69,7 @@ package com.sun.jdi;
*/
public
class
ClassNotLoadedException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
6242978768444298722L
;
private
String
className
;
public
ClassNotLoadedException
(
String
className
)
{
...
...
src/share/classes/com/sun/jdi/ClassNotPreparedException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
ClassNotPreparedException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
6120698967144079642L
;
public
ClassNotPreparedException
()
{
super
();
...
...
src/share/classes/com/sun/jdi/IncompatibleThreadStateException.java
浏览文件 @
14082957
...
...
@@ -34,6 +34,7 @@ package com.sun.jdi;
*/
public
class
IncompatibleThreadStateException
extends
Exception
{
private
static
final
long
serialVersionUID
=
6199174323414551389L
;
public
IncompatibleThreadStateException
()
{
super
();
...
...
src/share/classes/com/sun/jdi/InconsistentDebugInfoException.java
浏览文件 @
14082957
...
...
@@ -35,6 +35,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
InconsistentDebugInfoException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
7964236415376861808L
;
public
InconsistentDebugInfoException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/InternalException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
InternalException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
9171606393104480607L
;
private
int
errorCode
;
public
InternalException
()
{
...
...
src/share/classes/com/sun/jdi/InvalidCodeIndexException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,7 @@ package com.sun.jdi;
*/
@Deprecated
public
class
InvalidCodeIndexException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
7416010225133747805L
;
public
InvalidCodeIndexException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/InvalidLineNumberException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,7 @@ package com.sun.jdi;
*/
@Deprecated
public
class
InvalidLineNumberException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
4048709912372692875L
;
public
InvalidLineNumberException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/InvalidStackFrameException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
InvalidStackFrameException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
1919378296505827922L
;
public
InvalidStackFrameException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/InvalidTypeException.java
浏览文件 @
14082957
...
...
@@ -34,6 +34,7 @@ package com.sun.jdi;
*/
public
class
InvalidTypeException
extends
Exception
{
private
static
final
long
serialVersionUID
=
2256667231949650806L
;
public
InvalidTypeException
()
{
super
();
...
...
src/share/classes/com/sun/jdi/InvocationException.java
浏览文件 @
14082957
...
...
@@ -34,6 +34,7 @@ package com.sun.jdi;
*/
public
class
InvocationException
extends
Exception
{
private
static
final
long
serialVersionUID
=
6066780907971918568L
;
ObjectReference
exception
;
public
InvocationException
(
ObjectReference
exception
)
...
...
src/share/classes/com/sun/jdi/JDIPermission.java
浏览文件 @
14082957
...
...
@@ -79,7 +79,7 @@ package com.sun.jdi;
*/
public
final
class
JDIPermission
extends
java
.
security
.
BasicPermission
{
private
static
final
long
serialVersionUID
=
-
6988461416938786271L
;
/**
* The <code>JDIPermission</code> class represents access rights to the
* <code>VirtualMachineManager</code>
...
...
src/share/classes/com/sun/jdi/NativeMethodException.java
浏览文件 @
14082957
...
...
@@ -34,6 +34,7 @@ package com.sun.jdi;
*/
public
class
NativeMethodException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
3924951669039469992L
;
public
NativeMethodException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/ObjectCollectedException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
ObjectCollectedException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
1928428056197269588L
;
public
ObjectCollectedException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/VMCannotBeModifiedException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.5
*/
public
class
VMCannotBeModifiedException
extends
UnsupportedOperationException
{
private
static
final
long
serialVersionUID
=
-
4063879815130164009L
;
public
VMCannotBeModifiedException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/VMDisconnectedException.java
浏览文件 @
14082957
...
...
@@ -35,6 +35,7 @@ package com.sun.jdi;
*/
public
class
VMDisconnectedException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
2892975269768351637L
;
public
VMDisconnectedException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/VMMismatchException.java
浏览文件 @
14082957
...
...
@@ -34,6 +34,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
VMMismatchException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
289169358790459564L
;
public
VMMismatchException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/VMOutOfMemoryException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi;
* @since 1.3
*/
public
class
VMOutOfMemoryException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
71504228548910686L
;
public
VMOutOfMemoryException
()
{
super
();
}
...
...
src/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java
浏览文件 @
14082957
...
...
@@ -38,6 +38,7 @@ import java.util.Collections;
*/
public
class
IllegalConnectorArgumentsException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
3042212603611350941L
;
List
<
String
>
names
;
/**
...
...
src/share/classes/com/sun/jdi/connect/TransportTimeoutException.java
浏览文件 @
14082957
...
...
@@ -55,7 +55,7 @@ package com.sun.jdi.connect;
* @since 1.5
*/
public
class
TransportTimeoutException
extends
java
.
io
.
IOException
{
private
static
final
long
serialVersionUID
=
4107035242623365074L
;
/**
* Constructs a <tt>TransportTimeoutException</tt> with no detail
* message.
...
...
src/share/classes/com/sun/jdi/connect/VMStartException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,7 @@ package com.sun.jdi.connect;
*/
public
class
VMStartException
extends
Exception
{
private
static
final
long
serialVersionUID
=
6408644824640801020L
;
Process
process
;
public
VMStartException
(
Process
process
)
{
...
...
src/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java
浏览文件 @
14082957
...
...
@@ -46,7 +46,7 @@ package com.sun.jdi.connect.spi;
* @since 1.5
*/
public
class
ClosedConnectionException
extends
java
.
io
.
IOException
{
private
static
final
long
serialVersionUID
=
3877032124297204774L
;
/**
* Constructs a <tt>ClosedConnectionException</tt> with no detail
* message.
...
...
src/share/classes/com/sun/jdi/request/DuplicateRequestException.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ package com.sun.jdi.request;
*/
public
class
DuplicateRequestException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
3719784920313411060L
;
public
DuplicateRequestException
()
{
super
();
...
...
src/share/classes/com/sun/jdi/request/InvalidRequestStateException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,7 @@ package com.sun.jdi.request;
* @since 1.3
*/
public
class
InvalidRequestStateException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
3774632428543322148L
;
public
InvalidRequestStateException
()
{
super
();
...
...
src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java
浏览文件 @
14082957
...
...
@@ -70,8 +70,8 @@ public class ArrayReferenceImpl extends ObjectReferenceImpl
}
public
Value
getValue
(
int
index
)
{
List
list
=
getValues
(
index
,
1
);
return
(
Value
)
list
.
get
(
0
);
List
<
Value
>
list
=
getValues
(
index
,
1
);
return
list
.
get
(
0
);
}
public
List
<
Value
>
getValues
()
{
...
...
src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java
浏览文件 @
14082957
...
...
@@ -61,7 +61,7 @@ public class ArrayTypeImpl extends ReferenceTypeImpl
return
findType
(
componentSignature
());
}
void
addVisibleMethods
(
Map
map
)
{
void
addVisibleMethods
(
Map
<
String
,
Method
>
map
)
{
// arrays don't have methods
}
...
...
@@ -83,10 +83,10 @@ public class ArrayTypeImpl extends ReferenceTypeImpl
if
(
PacketStream
.
isObjectTag
(
tag
))
{
// It's a reference type
JNITypeParser
parser
=
new
JNITypeParser
(
componentSignature
());
List
list
=
vm
.
classesByName
(
parser
.
typeName
());
Iterator
iter
=
list
.
iterator
();
List
<
ReferenceType
>
list
=
vm
.
classesByName
(
parser
.
typeName
());
Iterator
<
ReferenceType
>
iter
=
list
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
(
ReferenceType
)
iter
.
next
();
ReferenceType
type
=
iter
.
next
();
ClassLoaderReference
cl
=
type
.
classLoader
();
if
((
cl
==
null
)?
(
classLoader
()
==
null
)
:
...
...
src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java
浏览文件 @
14082957
...
...
@@ -78,7 +78,7 @@ public class BooleanValueImpl extends PrimitiveValueImpl
}
public
int
intValue
()
{
return
(
int
)((
value
)?
1
:
0
)
;
return
(
value
)?
1
:
0
;
}
public
long
longValue
()
{
...
...
@@ -90,7 +90,7 @@ public class BooleanValueImpl extends PrimitiveValueImpl
}
public
double
doubleValue
()
{
return
(
double
)((
value
)?
1.0
:
0.0
)
;
return
(
value
)?
1.0
:
0.0
;
}
public
String
toString
()
{
...
...
src/share/classes/com/sun/tools/jdi/CharValueImpl.java
浏览文件 @
14082957
...
...
@@ -75,7 +75,7 @@ public class CharValueImpl extends PrimitiveValueImpl
}
public
char
charValue
()
{
return
(
char
)
value
;
return
value
;
}
public
short
shortValue
()
{
...
...
src/share/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java
浏览文件 @
14082957
...
...
@@ -80,7 +80,7 @@ public class ClassLoaderReferenceImpl extends ObjectReferenceImpl
classes
=
Collections
.
unmodifiableList
(
classes
);
if
(
local
!=
null
)
{
local
.
visibleClasses
=
classes
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
description
()
+
" temporarily caching visible classes (count = "
+
classes
.
size
()
+
")"
);
...
...
@@ -95,9 +95,9 @@ public class ClassLoaderReferenceImpl extends ObjectReferenceImpl
Type
findType
(
String
signature
)
throws
ClassNotLoadedException
{
List
<
ReferenceType
>
types
=
visibleClasses
();
Iterator
iter
=
types
.
iterator
();
Iterator
<
ReferenceType
>
iter
=
types
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
(
ReferenceType
)
iter
.
next
();
ReferenceType
type
=
iter
.
next
();
if
(
type
.
signature
().
equals
(
signature
))
{
return
type
;
}
...
...
src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java
浏览文件 @
14082957
...
...
@@ -76,7 +76,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
List
<
InterfaceType
>
immediate
=
interfaces
();
list
.
addAll
(
interfaces
());
Iterator
iter
=
immediate
.
iterator
();
Iterator
<
InterfaceType
>
iter
=
immediate
.
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceTypeImpl
interfaze
=
(
InterfaceTypeImpl
)
iter
.
next
();
interfaze
.
addSuperinterfaces
(
list
);
...
...
@@ -389,7 +389,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
* overwrite them in the hash table
*/
Iterator
iter
=
interfaces
().
iterator
();
Iterator
<
InterfaceType
>
iter
=
interfaces
().
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceTypeImpl
interfaze
=
(
InterfaceTypeImpl
)
iter
.
next
();
interfaze
.
addVisibleMethods
(
methodMap
);
...
...
@@ -411,7 +411,7 @@ public class ClassTypeImpl extends ReferenceTypeImpl
return
true
;
}
else
{
List
<
InterfaceType
>
interfaces
=
interfaces
();
Iterator
iter
=
interfaces
.
iterator
();
Iterator
<
InterfaceType
>
iter
=
interfaces
.
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceTypeImpl
interfaze
=
(
InterfaceTypeImpl
)
iter
.
next
();
if
(
interfaze
.
isAssignableTo
(
type
))
{
...
...
src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java
浏览文件 @
14082957
...
...
@@ -192,7 +192,7 @@ public class ConcreteMethodImpl extends MethodImpl {
return
super
.
codeIndexToLineInfo
(
stratum
,
codeIndex
);
}
Iterator
iter
=
lineLocations
.
iterator
();
Iterator
<
Location
>
iter
=
lineLocations
.
iterator
();
/*
* Treat code before the beginning of the first line table
* entry as part of the first line. javac will generate
...
...
@@ -221,9 +221,9 @@ public class ConcreteMethodImpl extends MethodImpl {
List
<
LocalVariable
>
variables
=
getVariables
();
List
<
LocalVariable
>
retList
=
new
ArrayList
<
LocalVariable
>(
2
);
Iterator
iter
=
variables
.
iterator
();
Iterator
<
LocalVariable
>
iter
=
variables
.
iterator
();
while
(
iter
.
hasNext
())
{
LocalVariable
variable
=
(
LocalVariable
)
iter
.
next
();
LocalVariable
variable
=
iter
.
next
();
if
(
variable
.
name
().
equals
(
name
))
{
retList
.
add
(
variable
);
}
...
...
@@ -235,9 +235,9 @@ public class ConcreteMethodImpl extends MethodImpl {
List
<
LocalVariable
>
variables
=
getVariables
();
List
<
LocalVariable
>
retList
=
new
ArrayList
<
LocalVariable
>(
variables
.
size
());
Iterator
iter
=
variables
.
iterator
();
Iterator
<
LocalVariable
>
iter
=
variables
.
iterator
();
while
(
iter
.
hasNext
())
{
LocalVariable
variable
=
(
LocalVariable
)
iter
.
next
();
LocalVariable
variable
=
iter
.
next
();
if
(
variable
.
isArgument
())
{
retList
.
add
(
variable
);
}
...
...
@@ -291,7 +291,7 @@ public class ConcreteMethodImpl extends MethodImpl {
SDE
.
LineStratum
lastLineStratum
=
null
;
SDE
.
Stratum
baseStratum
=
declaringType
.
stratum
(
SDE
.
BASE_STRATUM_NAME
);
Iterator
it
=
getBaseLocations
().
lineLocations
.
iterator
();
Iterator
<
Location
>
it
=
getBaseLocations
().
lineLocations
.
iterator
();
while
(
it
.
hasNext
())
{
LocationImpl
loc
=
(
LocationImpl
)
it
.
next
();
int
baseLineNumber
=
loc
.
lineNumber
(
baseStratum
);
...
...
src/share/classes/com/sun/tools/jdi/ConnectorImpl.java
浏览文件 @
14082957
...
...
@@ -47,9 +47,9 @@ abstract class ConnectorImpl implements Connector {
public
Map
<
String
,
Argument
>
defaultArguments
()
{
Map
<
String
,
Argument
>
defaults
=
new
java
.
util
.
LinkedHashMap
<
String
,
Argument
>();
Collection
values
=
defaultArguments
.
values
();
Collection
<
Argument
>
values
=
defaultArguments
.
values
();
Iterator
iter
=
values
.
iterator
();
Iterator
<
Argument
>
iter
=
values
.
iterator
();
while
(
iter
.
hasNext
())
{
ArgumentImpl
argument
=
(
ArgumentImpl
)
iter
.
next
();
defaults
.
put
(
argument
.
name
(),
(
Argument
)
argument
.
clone
());
...
...
@@ -96,7 +96,7 @@ abstract class ConnectorImpl implements Connector {
mustSpecify
,
list
));
}
ArgumentImpl
argument
(
String
name
,
Map
arguments
)
ArgumentImpl
argument
(
String
name
,
Map
<
String
,
?
extends
Argument
>
arguments
)
throws
IllegalConnectorArgumentsException
{
ArgumentImpl
argument
=
(
ArgumentImpl
)
arguments
.
get
(
name
);
...
...
@@ -130,7 +130,7 @@ abstract class ConnectorImpl implements Connector {
public
String
toString
()
{
String
string
=
name
()
+
" (defaults: "
;
Iterator
iter
=
defaultArguments
().
values
().
iterator
();
Iterator
<
Argument
>
iter
=
defaultArguments
().
values
().
iterator
();
boolean
first
=
true
;
while
(
iter
.
hasNext
())
{
ArgumentImpl
argument
=
(
ArgumentImpl
)
iter
.
next
();
...
...
@@ -222,7 +222,7 @@ abstract class ConnectorImpl implements Connector {
class
BooleanArgumentImpl
extends
ConnectorImpl
.
ArgumentImpl
implements
Connector
.
BooleanArgument
{
private
static
final
long
serialVersionUID
=
1624542968639361316L
;
BooleanArgumentImpl
(
String
name
,
String
label
,
String
description
,
boolean
value
,
boolean
mustSpecify
)
{
...
...
@@ -277,7 +277,7 @@ abstract class ConnectorImpl implements Connector {
class
IntegerArgumentImpl
extends
ConnectorImpl
.
ArgumentImpl
implements
Connector
.
IntegerArgument
{
private
static
final
long
serialVersionUID
=
763286081923797770L
;
private
final
int
min
;
private
final
int
max
;
...
...
@@ -378,7 +378,7 @@ abstract class ConnectorImpl implements Connector {
class
StringArgumentImpl
extends
ConnectorImpl
.
ArgumentImpl
implements
Connector
.
StringArgument
{
private
static
final
long
serialVersionUID
=
7500484902692107464L
;
StringArgumentImpl
(
String
name
,
String
label
,
String
description
,
String
value
,
boolean
mustSpecify
)
{
...
...
@@ -396,7 +396,7 @@ abstract class ConnectorImpl implements Connector {
class
SelectedArgumentImpl
extends
ConnectorImpl
.
ArgumentImpl
implements
Connector
.
SelectedArgument
{
private
static
final
long
serialVersionUID
=
-
5689584530908382517L
;
private
final
List
<
String
>
choices
;
SelectedArgumentImpl
(
String
name
,
String
label
,
String
description
,
...
...
src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java
浏览文件 @
14082957
...
...
@@ -101,7 +101,7 @@ public class DoubleValueImpl extends PrimitiveValueImpl
}
public
double
doubleValue
()
{
return
(
double
)
value
;
return
value
;
}
byte
checkedByteValue
()
throws
InvalidTypeException
{
...
...
src/share/classes/com/sun/tools/jdi/EventRequestManagerImpl.java
浏览文件 @
14082957
...
...
@@ -43,7 +43,7 @@ import java.util.*;
class
EventRequestManagerImpl
extends
MirrorImpl
implements
EventRequestManager
{
List
[]
requestLists
;
List
<?
extends
EventRequest
>
[]
requestLists
;
private
static
int
methodExitEventCmd
=
0
;
static
int
JDWPtoJDISuspendPolicy
(
byte
jdwpPolicy
)
{
...
...
@@ -91,7 +91,7 @@ class EventRequestManagerImpl extends MirrorImpl
* access/modification should be protected by synchronizing on
* the enclosing instance of EventRequestImpl.
*/
List
filters
=
new
ArrayList
();
List
<
Object
>
filters
=
new
ArrayList
<>
();
boolean
isEnabled
=
false
;
boolean
deleted
=
false
;
...
...
@@ -195,7 +195,6 @@ class EventRequestManagerImpl extends MirrorImpl
*/
synchronized
void
set
()
{
JDWP
.
EventRequest
.
Set
.
Modifier
[]
mods
=
(
JDWP
.
EventRequest
.
Set
.
Modifier
[])
filters
.
toArray
(
new
JDWP
.
EventRequest
.
Set
.
Modifier
[
filters
.
size
()]);
try
{
...
...
@@ -582,10 +581,10 @@ class EventRequestManagerImpl extends MirrorImpl
/*
* Make sure this isn't a duplicate
*/
List
requests
=
stepRequests
();
Iterator
iter
=
requests
.
iterator
();
List
<
StepRequest
>
requests
=
stepRequests
();
Iterator
<
StepRequest
>
iter
=
requests
.
iterator
();
while
(
iter
.
hasNext
())
{
StepRequest
request
=
(
StepRequest
)
iter
.
next
();
StepRequest
request
=
iter
.
next
();
if
((
request
!=
this
)
&&
request
.
isEnabled
()
&&
request
.
thread
().
equals
(
thread
))
{
...
...
@@ -735,7 +734,7 @@ class EventRequestManagerImpl extends MirrorImpl
}
requestLists
=
new
List
[
highest
+
1
];
for
(
int
i
=
0
;
i
<=
highest
;
i
++)
{
requestLists
[
i
]
=
new
ArrayList
();
requestLists
[
i
]
=
new
ArrayList
<>
();
}
}
...
...
@@ -852,7 +851,7 @@ class EventRequestManagerImpl extends MirrorImpl
public
void
deleteEventRequests
(
List
<?
extends
EventRequest
>
eventRequests
)
{
validateMirrors
(
eventRequests
);
// copy the eventRequests to avoid ConcurrentModificationException
Iterator
iter
=
(
new
ArrayList
(
eventRequests
)).
iterator
();
Iterator
<?
extends
EventRequest
>
iter
=
(
new
ArrayList
<>
(
eventRequests
)).
iterator
();
while
(
iter
.
hasNext
())
{
((
EventRequestImpl
)
iter
.
next
()).
delete
();
}
...
...
@@ -869,76 +868,76 @@ class EventRequestManagerImpl extends MirrorImpl
}
public
List
<
StepRequest
>
stepRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
SINGLE_STEP
);
return
(
List
<
StepRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
SINGLE_STEP
);
}
public
List
<
ClassPrepareRequest
>
classPrepareRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
CLASS_PREPARE
);
return
(
List
<
ClassPrepareRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
CLASS_PREPARE
);
}
public
List
<
ClassUnloadRequest
>
classUnloadRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
CLASS_UNLOAD
);
return
(
List
<
ClassUnloadRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
CLASS_UNLOAD
);
}
public
List
<
ThreadStartRequest
>
threadStartRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
THREAD_START
);
return
(
List
<
ThreadStartRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
THREAD_START
);
}
public
List
<
ThreadDeathRequest
>
threadDeathRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
THREAD_DEATH
);
return
(
List
<
ThreadDeathRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
THREAD_DEATH
);
}
public
List
<
ExceptionRequest
>
exceptionRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
EXCEPTION
);
return
(
List
<
ExceptionRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
EXCEPTION
);
}
public
List
<
BreakpointRequest
>
breakpointRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
BREAKPOINT
);
return
(
List
<
BreakpointRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
BREAKPOINT
);
}
public
List
<
AccessWatchpointRequest
>
accessWatchpointRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
FIELD_ACCESS
);
return
(
List
<
AccessWatchpointRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
FIELD_ACCESS
);
}
public
List
<
ModificationWatchpointRequest
>
modificationWatchpointRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
FIELD_MODIFICATION
);
return
(
List
<
ModificationWatchpointRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
FIELD_MODIFICATION
);
}
public
List
<
MethodEntryRequest
>
methodEntryRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
METHOD_ENTRY
);
return
(
List
<
MethodEntryRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
METHOD_ENTRY
);
}
public
List
<
MethodExitRequest
>
methodExitRequests
()
{
return
unmodifiableRequestList
(
return
(
List
<
MethodExitRequest
>)
unmodifiableRequestList
(
EventRequestManagerImpl
.
methodExitEventCmd
);
}
public
List
<
MonitorContendedEnterRequest
>
monitorContendedEnterRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_CONTENDED_ENTER
);
return
(
List
<
MonitorContendedEnterRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_CONTENDED_ENTER
);
}
public
List
<
MonitorContendedEnteredRequest
>
monitorContendedEnteredRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_CONTENDED_ENTERED
);
return
(
List
<
MonitorContendedEnteredRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_CONTENDED_ENTERED
);
}
public
List
<
MonitorWaitRequest
>
monitorWaitRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_WAIT
);
return
(
List
<
MonitorWaitRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_WAIT
);
}
public
List
<
MonitorWaitedRequest
>
monitorWaitedRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_WAITED
);
return
(
List
<
MonitorWaitedRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
MONITOR_WAITED
);
}
public
List
<
VMDeathRequest
>
vmDeathRequests
()
{
return
unmodifiableRequestList
(
JDWP
.
EventKind
.
VM_DEATH
);
return
(
List
<
VMDeathRequest
>)
unmodifiableRequestList
(
JDWP
.
EventKind
.
VM_DEATH
);
}
List
unmodifiableRequestList
(
int
eventCmd
)
{
List
<?
extends
EventRequest
>
unmodifiableRequestList
(
int
eventCmd
)
{
return
Collections
.
unmodifiableList
(
requestList
(
eventCmd
));
}
EventRequest
request
(
int
eventCmd
,
int
requestId
)
{
List
rl
=
requestList
(
eventCmd
);
List
<?
extends
EventRequest
>
rl
=
requestList
(
eventCmd
);
for
(
int
i
=
rl
.
size
()
-
1
;
i
>=
0
;
i
--)
{
EventRequestImpl
er
=
(
EventRequestImpl
)
rl
.
get
(
i
);
if
(
er
.
id
==
requestId
)
{
...
...
src/share/classes/com/sun/tools/jdi/EventSetImpl.java
浏览文件 @
14082957
...
...
@@ -47,7 +47,7 @@ enum EventDestination {UNKNOWN_EVENT, INTERNAL_EVENT, CLIENT_EVENT};
* that is on the queues are all for client requests.
*/
public
class
EventSetImpl
extends
ArrayList
<
Event
>
implements
EventSet
{
private
static
final
long
serialVersionUID
=
-
4857338819787924570L
;
private
VirtualMachineImpl
vm
;
// we implement Mirror
private
Packet
pkt
;
private
byte
suspendPolicy
;
...
...
@@ -607,7 +607,7 @@ public class EventSetImpl extends ArrayList<Event> implements EventSet {
PacketStream
ps
=
new
PacketStream
(
vm
,
pkt
);
JDWP
.
Event
.
Composite
compEvt
=
new
JDWP
.
Event
.
Composite
(
vm
,
ps
);
suspendPolicy
=
compEvt
.
suspendPolicy
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_EVENTS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_EVENTS
)
!=
0
)
{
switch
(
suspendPolicy
)
{
case
JDWP
.
SuspendPolicy
.
ALL
:
vm
.
printTrace
(
"EventSet: SUSPEND_ALL"
);
...
...
@@ -626,7 +626,7 @@ public class EventSetImpl extends ArrayList<Event> implements EventSet {
ThreadReference
fix6485605
=
null
;
for
(
int
i
=
0
;
i
<
compEvt
.
events
.
length
;
i
++)
{
EventImpl
evt
=
createEvent
(
compEvt
.
events
[
i
]);
if
((
vm
.
traceFlags
&
vm
.
TRACE_EVENTS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_EVENTS
)
!=
0
)
{
try
{
vm
.
printTrace
(
"Event: "
+
evt
);
}
catch
(
VMDisconnectedException
ee
)
{
...
...
src/share/classes/com/sun/tools/jdi/FloatValueImpl.java
浏览文件 @
14082957
...
...
@@ -97,7 +97,7 @@ public class FloatValueImpl extends PrimitiveValueImpl
}
public
float
floatValue
()
{
return
(
float
)
value
;
return
value
;
}
public
double
doubleValue
()
{
...
...
src/share/classes/com/sun/tools/jdi/GenericAttachingConnector.java
浏览文件 @
14082957
...
...
@@ -105,7 +105,7 @@ public class GenericAttachingConnector
/**
* Attach to a target VM using the specified address and Connector arguments.
*/
public
VirtualMachine
attach
(
String
address
,
Map
args
)
public
VirtualMachine
attach
(
String
address
,
Map
<
String
,
?
extends
Connector
.
Argument
>
args
)
throws
IOException
,
IllegalConnectorArgumentsException
{
String
ts
=
argument
(
ARG_TIMEOUT
,
args
).
value
();
...
...
src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java
浏览文件 @
14082957
...
...
@@ -83,7 +83,7 @@ public class IntegerValueImpl extends PrimitiveValueImpl
}
public
int
intValue
()
{
return
(
int
)
value
;
return
value
;
}
public
long
longValue
()
{
...
...
src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java
浏览文件 @
14082957
...
...
@@ -128,9 +128,9 @@ public class InterfaceTypeImpl extends ReferenceTypeImpl
* list being built.
*/
List
<
InterfaceType
>
immediate
=
new
ArrayList
<
InterfaceType
>(
superinterfaces
());
Iterator
iter
=
immediate
.
iterator
();
Iterator
<
InterfaceType
>
iter
=
immediate
.
iterator
();
while
(
iter
.
hasNext
())
{
InterfaceType
interfaze
=
(
InterfaceType
)
iter
.
next
();
InterfaceType
interfaze
=
iter
.
next
();
if
(
list
.
contains
(
interfaze
))
{
iter
.
remove
();
}
...
...
src/share/classes/com/sun/tools/jdi/InternalEventHandler.java
浏览文件 @
14082957
...
...
@@ -59,7 +59,7 @@ public class InternalEventHandler implements Runnable
ClassUnloadEvent
cuEvent
=
(
ClassUnloadEvent
)
event
;
vm
.
removeReferenceType
(
cuEvent
.
classSignature
());
if
((
vm
.
traceFlags
&
vm
.
TRACE_EVENTS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_EVENTS
)
!=
0
)
{
vm
.
printTrace
(
"Handled Unload Event for "
+
cuEvent
.
classSignature
());
}
...
...
@@ -68,7 +68,7 @@ public class InternalEventHandler implements Runnable
((
ReferenceTypeImpl
)
cpEvent
.
referenceType
())
.
markPrepared
();
if
((
vm
.
traceFlags
&
vm
.
TRACE_EVENTS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_EVENTS
)
!=
0
)
{
vm
.
printTrace
(
"Handled Prepare Event for "
+
cpEvent
.
referenceType
().
name
());
}
...
...
src/share/classes/com/sun/tools/jdi/JDWPException.java
浏览文件 @
14082957
...
...
@@ -27,7 +27,7 @@ package com.sun.tools.jdi;
import
com.sun.jdi.*
;
class
JDWPException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
6321344442751299874L
;
short
errorCode
;
JDWPException
(
short
errorCode
)
{
...
...
src/share/classes/com/sun/tools/jdi/LinkedHashMap.java
已删除
100644 → 0
浏览文件 @
ed4ddd6b
/*
* Copyright (c) 1998, 2000, 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.
*/
package
com.sun.tools.jdi
;
import
java.io.*
;
import
java.util.*
;
/**
* Hash table based implementation of the Map interface. This implementation
* provides all of the optional Map operations, and permits null values and
* the null key. (HashMap is roughly equivalent to Hashtable, except that it
* is unsynchronized and permits nulls.) In addition, elements in the map are
* ordered and doubly linked together.
* <p>
* This implementation provides constant-time performance for the basic
* operations (get and put), assuming the the hash function disperses the
* elements properly among the buckets. Iteration over Collection views
* requires time proportional to its size (the number of key-value mappings)
* and returns elements in the order they are linked. In a HashMap the
* iteration would require time proportional to the capacity of the map
* plus the map size.
* <p>
* An instance of LinkedHashMap has two parameters that affect its efficiency:
* its <i>capacity</i> and its <i>load factor</i>. The load factor should be
* between 0.0 and 1.0. When the number of mappings in the LinkedHashMap exceeds
* the product of the load factor and the current capacity, the capacity is
* increased by calling the rehash method which requires time proportional
* to the number of key-value mappings in the map. Larger load factors
* use memory more efficiently, at the expense of larger expected time per
* lookup.
* <p>
* If many mappings are to be stored in a LinkedHashMap, creating it with a
* sufficiently large capacity will allow the mappings to be stored more
* efficiently than letting it perform automatic rehashing as needed to grow
* the table.
* <p>
* <strong>Note that this implementation is not synchronized.</strong> If
* multiple threads access a LinkedHashMap concurrently, and at least one of the
* threads modifies the LinkedHashMap structurally, it <em>must</em> be
* synchronized externally. (A structural modification is any operation that
* adds or deletes one or more mappings; merely changing the value associated
* with a key that is already contained in the Table is not a structural
* modification.) This is typically accomplished by synchronizing on some
* object that naturally encapsulates the LinkedHashMap. If no such object
* exists, the LinkedHashMap should be "wrapped" using the
* Collections.synchronizedSet method. This is best done at creation time, to
* prevent accidental unsynchronized access to the LinkedHashMap:
* <pre>
* Map m = Collections.synchronizedMap(new LinkedHashMap(...));
* </pre>
* <p>
* The Iterators returned by the iterator methods of the Collections returned
* by all of LinkedHashMap's "collection view methods" are <em>fail-fast</em>:
* if the LinkedHashMap is structurally modified at any time after the Iterator
* is created, in any way except through the Iterator's own remove or add
* methods, the Iterator will throw a ConcurrentModificationException. Thus,
* in the face of concurrent modification, the Iterator fails quickly and
* cleanly, rather than risking arbitrary, non-deterministic behavior at an
* undetermined time in the future.
*
* @author Josh Bloch
* @author Arthur van Hoff
* @author Zhenghua Li
* @see Object#hashCode()
* @see java.util.Collection
* @see java.util.Map
* @see java.util.TreeMap
* @see java.util.Hashtable
* @see java.util.HashMap
*/
import
java.io.Serializable
;
public
class
LinkedHashMap
extends
AbstractMap
implements
Map
,
Serializable
{
/**
* The hash table data.
*/
private
transient
Entry
table
[];
/**
* The head of the double linked list.
*/
private
transient
Entry
header
;
/**
* The total number of mappings in the hash table.
*/
private
transient
int
count
;
/**
* Rehashes the table when count exceeds this threshold.
*/
private
int
threshold
;
/**
* The load factor for the LinkedHashMap.
*/
private
float
loadFactor
;
/**
* The number of times this LinkedHashMap has been structurally modified
* Structural modifications are those that change the number of mappings in
* the LinkedHashMap or otherwise modify its internal structure (e.g.,
* rehash). This field is used to make iterators on Collection-views of
* the LinkedHashMap fail-fast. (See ConcurrentModificationException).
*/
private
transient
int
modCount
=
0
;
/**
* Constructs a new, empty LinkedHashMap with the specified initial
* capacity and the specified load factor.
*
* @param initialCapacity the initial capacity of the LinkedHashMap.
* @param loadFactor a number between 0.0 and 1.0.
* @exception IllegalArgumentException if the initial capacity is less
* than or equal to zero, or if the load factor is less than
* or equal to zero.
*/
public
LinkedHashMap
(
int
initialCapacity
,
float
loadFactor
)
{
if
(
initialCapacity
<
0
)
throw
new
IllegalArgumentException
(
"Illegal Initial Capacity: "
+
initialCapacity
);
if
((
loadFactor
>
1
)
||
(
loadFactor
<=
0
))
throw
new
IllegalArgumentException
(
"Illegal Load factor: "
+
loadFactor
);
if
(
initialCapacity
==
0
)
initialCapacity
=
1
;
this
.
loadFactor
=
loadFactor
;
table
=
new
Entry
[
initialCapacity
];
threshold
=
(
int
)(
initialCapacity
*
loadFactor
);
header
=
new
Entry
(-
1
,
null
,
null
,
null
);
header
.
before
=
header
.
after
=
header
;
}
/**
* Constructs a new, empty LinkedHashMap with the specified initial capacity
* and default load factor.
*
* @param initialCapacity the initial capacity of the LinkedHashMap.
*/
public
LinkedHashMap
(
int
initialCapacity
)
{
this
(
initialCapacity
,
0.75f
);
}
/**
* Constructs a new, empty LinkedHashMap with a default capacity and load
* factor.
*/
public
LinkedHashMap
()
{
this
(
101
,
0.75f
);
}
/**
* Constructs a new LinkedHashMap with the same mappings as the given
* Map. The LinkedHashMap is created with a capacity of thrice the number
* of mappings in the given Map or 11 (whichever is greater), and a
* default load factor.
*/
public
LinkedHashMap
(
Map
t
)
{
this
(
Math
.
max
(
3
*
t
.
size
(),
11
),
0.75f
);
putAll
(
t
);
}
/**
* Returns the number of key-value mappings in this Map.
*/
public
int
size
()
{
return
count
;
}
/**
* Returns true if this Map contains no key-value mappings.
*/
public
boolean
isEmpty
()
{
return
count
==
0
;
}
/**
* Returns true if this LinkedHashMap maps one or more keys to the specified
* value.
*
* @param value value whose presence in this Map is to be tested.
*/
public
boolean
containsValue
(
Object
value
)
{
if
(
value
==
null
)
{
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
)
if
(
e
.
value
==
null
)
return
true
;
}
else
{
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
)
if
(
value
.
equals
(
e
.
value
))
return
true
;
}
return
false
;
}
/**
* Returns true if this LinkedHashMap contains a mapping for the specified
* key.
*
* @param key key whose presence in this Map is to be tested.
*/
public
boolean
containsKey
(
Object
key
)
{
Entry
tab
[]
=
table
;
if
(
key
!=
null
)
{
int
hash
=
key
.
hashCode
();
int
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
];
e
!=
null
;
e
=
e
.
next
)
if
(
e
.
hash
==
hash
&&
e
.
key
.
equals
(
key
))
return
true
;
}
else
{
for
(
Entry
e
=
tab
[
0
];
e
!=
null
;
e
=
e
.
next
)
if
(
e
.
key
==
null
)
return
true
;
}
return
false
;
}
/**
* Returns the value to which this LinkedHashMap maps the specified key.
* Returns null if the LinkedHashMap contains no mapping for this key.
* A return value of null does not <em>necessarily</em> indicate that the
* LinkedHashMap contains no mapping for the key; it's also possible that
* the LinkedHashMap explicitly maps the key to null. The containsKey
* operation may be used to distinguish these two cases.
*
* @param key key whose associated value is to be returned.
*/
public
Object
get
(
Object
key
)
{
Entry
e
=
getEntry
(
key
);
return
e
==
null
?
null
:
e
.
value
;
}
/**
* Returns the entry associated with the specified key in the LinkedHashMap.
* Returns null if the LinkedHashMap contains no mapping for this key.
*/
private
Entry
getEntry
(
Object
key
)
{
Entry
tab
[]
=
table
;
if
(
key
!=
null
)
{
int
hash
=
key
.
hashCode
();
int
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
];
e
!=
null
;
e
=
e
.
next
)
if
((
e
.
hash
==
hash
)
&&
e
.
key
.
equals
(
key
))
return
e
;
}
else
{
for
(
Entry
e
=
tab
[
0
];
e
!=
null
;
e
=
e
.
next
)
if
(
e
.
key
==
null
)
return
e
;
}
return
null
;
}
/**
* Rehashes the contents of the LinkedHashMap into a LinkedHashMap with a
* larger capacity. This method is called automatically when the
* number of keys in the LinkedHashMap exceeds this LinkedHashMap's capacity
* and load factor.
*/
private
void
rehash
()
{
int
oldCapacity
=
table
.
length
;
Entry
oldMap
[]
=
table
;
int
newCapacity
=
oldCapacity
*
2
+
1
;
Entry
newMap
[]
=
new
Entry
[
newCapacity
];
modCount
++;
threshold
=
(
int
)(
newCapacity
*
loadFactor
);
table
=
newMap
;
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
)
{
int
index
=
(
e
.
hash
&
0x7FFFFFFF
)
%
newCapacity
;
e
.
next
=
newMap
[
index
];
newMap
[
index
]
=
e
;
}
}
/**
* Remove an entry from the linked list.
*/
private
void
listRemove
(
Entry
entry
)
{
if
(
entry
==
null
)
{
return
;
}
entry
.
before
.
after
=
entry
.
after
;
entry
.
after
.
before
=
entry
.
before
;
}
/**
* Add the specified entry before the specified existing entry to
* the linked list.
*/
private
void
listAddBefore
(
Entry
entry
,
Entry
existEntry
)
{
entry
.
after
=
existEntry
;
entry
.
before
=
existEntry
.
before
;
entry
.
before
.
after
=
entry
;
entry
.
after
.
before
=
entry
;
}
/**
* Returns the position of the mapping for the specified key
* in the ordered map.
*
* @param key the specified key.
* @return index of the key mapping.
*/
public
int
indexOf
(
Object
key
)
{
int
i
=
0
;
if
(
key
==
null
)
{
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
,
i
++)
if
(
e
.
key
==
null
)
return
i
;
}
else
{
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
,
i
++)
if
(
key
.
equals
(
e
.
key
))
return
i
;
}
return
-
1
;
}
/**
* Associates the specified value with the specified key in this
* LinkedHashMap. If the LinkedHashMap previously contained a mapping for
* this key, the old value is replaced and the position of this mapping
* entry in the double linked list remains the same. Otherwise, a new
* mapping entry is created and inserted into the list before the specified
* existing mapping entry. The method returns the previous value associated
* with the specified key, or null if there was no mapping for key. A null
* return can also indicate that the LinkedHashMap previously associated
* null with the specified key.
*/
private
Object
putAhead
(
Object
key
,
Object
value
,
Entry
existEntry
)
{
// Makes sure the key is not already in the LinkedHashMap.
Entry
tab
[]
=
table
;
int
hash
=
0
;
int
index
=
0
;
if
(
key
!=
null
)
{
hash
=
key
.
hashCode
();
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
]
;
e
!=
null
;
e
=
e
.
next
)
{
if
((
e
.
hash
==
hash
)
&&
e
.
key
.
equals
(
key
))
{
Object
old
=
e
.
value
;
e
.
value
=
value
;
return
old
;
}
}
}
else
{
for
(
Entry
e
=
tab
[
0
]
;
e
!=
null
;
e
=
e
.
next
)
{
if
(
e
.
key
==
null
)
{
Object
old
=
e
.
value
;
e
.
value
=
value
;
return
old
;
}
}
}
modCount
++;
if
(
count
>=
threshold
)
{
// Rehash the table if the threshold is exceeded
rehash
();
tab
=
table
;
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
}
// Creates the new entry.
Entry
e
=
new
Entry
(
hash
,
key
,
value
,
tab
[
index
]);
tab
[
index
]
=
e
;
listAddBefore
(
e
,
existEntry
);
count
++;
return
null
;
}
/**
* Associates the specified value with the specified key in this
* LinkedHashMap and position the mapping at the specified index.
* If the LinkedHashMap previously contained a mapping for this key,
* the old value is replaced and the position of this mapping entry
* in the double linked list remains the same. Otherwise, a new mapping
* entry is created and inserted into the list at the specified
* position.
*
* @param index the position to put the key-value mapping.
* @param key key with which the specified value is to be associated.
* @param value value to be associated with the specified key.
* @return previous value associated with specified key, or null if there
* was no mapping for key. A null return can also indicate that
* the LinkedHashMap previously associated null with the specified
* key.
*/
public
Object
put
(
int
index
,
Object
key
,
Object
value
)
{
if
(
index
<
0
||
index
>
count
)
throw
new
IndexOutOfBoundsException
();
Entry
e
=
header
.
after
;
if
(
index
==
count
)
return
putAhead
(
key
,
value
,
header
);
//fast approach for append
else
{
for
(
int
i
=
0
;
i
<
index
;
i
++)
e
=
e
.
after
;
return
putAhead
(
key
,
value
,
e
);
}
}
/**
* Associates the specified value with the specified key in this
* LinkedHashMap. If the LinkedHashMap previously contained a mapping for
* this key, the old value is replaced. The mapping entry is also appended
* to the end of the ordered linked list.
*
* @param key key with which the specified value is to be associated.
* @param value value to be associated with the specified key.
* @return previous value associated with specified key, or null if there
* was no mapping for key. A null return can also indicate that
* the LinkedHashMap previously associated null with the specified
* key.
*/
public
Object
put
(
Object
key
,
Object
value
)
{
return
putAhead
(
key
,
value
,
header
);
}
/**
* Removes the mapping for this key from this LinkedHashMap if present.
* The mapping would also be removed from the double linked list.
*
* @param key key whose mapping is to be removed from the Map.
* @return previous value associated with specified key, or null if there
* was no mapping for key. A null return can also indicate that
* the LinkedHashMap previously associated null with the specified
* key.
*/
public
Object
remove
(
Object
key
)
{
Entry
tab
[]
=
table
;
if
(
key
!=
null
)
{
int
hash
=
key
.
hashCode
();
int
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
],
prev
=
null
;
e
!=
null
;
prev
=
e
,
e
=
e
.
next
)
{
if
((
e
.
hash
==
hash
)
&&
e
.
key
.
equals
(
key
))
{
modCount
++;
if
(
prev
!=
null
)
prev
.
next
=
e
.
next
;
else
tab
[
index
]
=
e
.
next
;
count
--;
Object
oldValue
=
e
.
value
;
e
.
value
=
null
;
listRemove
(
e
);
return
oldValue
;
}
}
}
else
{
for
(
Entry
e
=
tab
[
0
],
prev
=
null
;
e
!=
null
;
prev
=
e
,
e
=
e
.
next
)
{
if
(
e
.
key
==
null
)
{
modCount
++;
if
(
prev
!=
null
)
prev
.
next
=
e
.
next
;
else
tab
[
0
]
=
e
.
next
;
count
--;
Object
oldValue
=
e
.
value
;
e
.
value
=
null
;
listRemove
(
e
);
return
oldValue
;
}
}
}
return
null
;
}
/**
* Copies all of the mappings from the specified Map to this LinkedHashMap
* These mappings will replace any mappings that this LinkedHashMap had for
* any of the keys currently in the specified Map.
*
* @param t Mappings to be stored in this Map.
*/
public
void
putAll
(
Map
t
)
{
Iterator
i
=
t
.
entrySet
().
iterator
();
while
(
i
.
hasNext
())
{
Map
.
Entry
e
=
(
Map
.
Entry
)
i
.
next
();
put
(
e
.
getKey
(),
e
.
getValue
());
}
}
/**
* Removes all mappings from this LinkedHashMap.
*/
public
void
clear
()
{
Entry
tab
[]
=
table
;
modCount
++;
for
(
int
index
=
tab
.
length
;
--
index
>=
0
;
)
tab
[
index
]
=
null
;
count
=
0
;
header
.
before
=
header
.
after
=
header
;
}
/**
* Returns a shallow copy of this LinkedHashMap. The keys and values
* themselves are not cloned.
*/
public
Object
clone
()
{
return
new
LinkedHashMap
(
this
);
}
// Views
private
transient
Set
keySet
=
null
;
private
transient
Set
entries
=
null
;
private
transient
Collection
values
=
null
;
/**
* Returns a Set view of the keys contained in this LinkedHashMap. The Set
* is backed by the LinkedHashMap, so changes to the LinkedHashMap are
* reflected in the Set, and vice-versa. The Set supports element removal,
* which removes the corresponding mapping from the LinkedHashMap, via the
* Iterator.remove, Set.remove, removeAll retainAll, and clear operations.
* It does not support the add or addAll operations.
*/
public
Set
keySet
()
{
if
(
keySet
==
null
)
{
keySet
=
new
AbstractSet
()
{
public
Iterator
iterator
()
{
return
new
HashIterator
(
KEYS
);
}
public
int
size
()
{
return
count
;
}
public
boolean
contains
(
Object
o
)
{
return
containsKey
(
o
);
}
public
boolean
remove
(
Object
o
)
{
return
LinkedHashMap
.
this
.
remove
(
o
)
!=
null
;
}
public
void
clear
()
{
LinkedHashMap
.
this
.
clear
();
}
};
}
return
keySet
;
}
/**
* Returns a Collection view of the values contained in this LinkedHashMap.
* The Collection is backed by the LinkedHashMap, so changes to the
* LinkedHashMap are reflected in the Collection, and vice-versa. The
* Collection supports element removal, which removes the corresponding
* mapping from the LinkedHashMap, via the Iterator.remove,
* Collection.remove, removeAll, retainAll and clear operations. It does
* not support the add or addAll operations.
*/
public
Collection
values
()
{
if
(
values
==
null
)
{
values
=
new
AbstractCollection
()
{
public
Iterator
iterator
()
{
return
new
HashIterator
(
VALUES
);
}
public
int
size
()
{
return
count
;
}
public
boolean
contains
(
Object
o
)
{
return
containsValue
(
o
);
}
public
void
clear
()
{
LinkedHashMap
.
this
.
clear
();
}
};
}
return
values
;
}
/**
* Returns a Collection view of the mappings contained in this
* LinkedHashMap. Each element in the returned collection is a Map.Entry.
* The Collection is backed by the LinkedHashMap, so changes to the
* LinkedHashMap are reflected in the Collection, and vice-versa. The
* Collection supports element removal, which removes the corresponding
* mapping from the LinkedHashMap, via the Iterator.remove,
* Collection.remove, removeAll, retainAll and clear operations. It does
* not support the add or addAll operations.
*
* @see java.util.Map.Entry
*/
public
Set
entrySet
()
{
if
(
entries
==
null
)
{
entries
=
new
AbstractSet
()
{
public
Iterator
iterator
()
{
return
new
HashIterator
(
ENTRIES
);
}
public
boolean
contains
(
Object
o
)
{
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
entry
=
(
Map
.
Entry
)
o
;
Object
key
=
entry
.
getKey
();
Entry
tab
[]
=
table
;
int
hash
=
(
key
==
null
?
0
:
key
.
hashCode
());
int
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
];
e
!=
null
;
e
=
e
.
next
)
if
(
e
.
hash
==
hash
&&
e
.
equals
(
entry
))
return
true
;
return
false
;
}
public
boolean
remove
(
Object
o
)
{
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
entry
=
(
Map
.
Entry
)
o
;
Object
key
=
entry
.
getKey
();
Entry
tab
[]
=
table
;
int
hash
=
(
key
==
null
?
0
:
key
.
hashCode
());
int
index
=
(
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
],
prev
=
null
;
e
!=
null
;
prev
=
e
,
e
=
e
.
next
)
{
if
(
e
.
hash
==
hash
&&
e
.
equals
(
entry
))
{
modCount
++;
if
(
prev
!=
null
)
prev
.
next
=
e
.
next
;
else
tab
[
index
]
=
e
.
next
;
count
--;
e
.
value
=
null
;
listRemove
(
e
);
return
true
;
}
}
return
false
;
}
public
int
size
()
{
return
count
;
}
public
void
clear
()
{
LinkedHashMap
.
this
.
clear
();
}
};
}
return
entries
;
}
/**
* Compares the specified Object with this Map for equality.
* Returns true if the given object is also a LinkedHashMap and the two
* Maps represent the same mappings in the same order. More formally,
* two Maps <code>t1</code> and <code>t2</code> represent the same mappings
* if <code>t1.keySet().equals(t2.keySet())</code> and for every
* key <code>k</code> in <code>t1.keySet()</code>, <code>
* (t1.get(k)==null ? t2.get(k)==null : t1.get(k).equals(t2.get(k)))
* </code>.
* <p>
* This implementation first checks if the specified Object is this Map;
* if so it returns true. Then, it checks if the specified Object is
* a Map whose size is identical to the size of this Set; if not, it
* it returns false. If so, it iterates over this Map and the specified
* Map's entrySet() Collection, and checks that the specified Map contains
* each mapping that this Map contains at the same position. If the
* specified Map fails to contain such a mapping in the right order, false
* is returned. If the iteration completes, true is returned.
*
* @param o Object to be compared for equality with this Map.
* @return true if the specified Object is equal to this Map.
*
*/
public
boolean
equals
(
Object
o
)
{
if
(
o
==
this
)
return
true
;
if
(!(
o
instanceof
LinkedHashMap
))
return
false
;
LinkedHashMap
t
=
(
LinkedHashMap
)
o
;
if
(
t
.
size
()
!=
size
())
return
false
;
Iterator
i1
=
entrySet
().
iterator
();
Iterator
i2
=
t
.
entrySet
().
iterator
();
while
(
i1
.
hasNext
())
{
Entry
e1
=
(
Entry
)
i1
.
next
();
Entry
e2
=
(
Entry
)
i2
.
next
();
Object
key1
=
e1
.
getKey
();
Object
value1
=
e1
.
getValue
();
Object
key2
=
e2
.
getKey
();
Object
value2
=
e2
.
getValue
();
if
((
key1
==
null
?
key2
==
null
:
key1
.
equals
(
key2
))
&&
(
value1
==
null
?
value2
==
null
:
value1
.
equals
(
value2
)))
{
continue
;
}
else
{
return
false
;
}
}
return
true
;
}
/**
* LinkedHashMap collision list entry.
*/
private
static
class
Entry
implements
Map
.
Entry
{
int
hash
;
Object
key
;
Object
value
;
Entry
next
;
// These fields comprise the doubly linked list that is used for
// iteration.
Entry
before
,
after
;
Entry
(
int
hash
,
Object
key
,
Object
value
,
Entry
next
)
{
this
.
hash
=
hash
;
this
.
key
=
key
;
this
.
value
=
value
;
this
.
next
=
next
;
}
// Map.Entry Ops
public
Object
getKey
()
{
return
key
;
}
public
Object
getValue
()
{
return
value
;
}
public
Object
setValue
(
Object
value
)
{
Object
oldValue
=
this
.
value
;
this
.
value
=
value
;
return
oldValue
;
}
public
boolean
equals
(
Object
o
)
{
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
e
=
(
Map
.
Entry
)
o
;
return
(
key
==
null
?
e
.
getKey
()==
null
:
key
.
equals
(
e
.
getKey
()))
&&
(
value
==
null
?
e
.
getValue
()==
null
:
value
.
equals
(
e
.
getValue
()));
}
public
int
hashCode
()
{
return
hash
^
(
value
==
null
?
0
:
value
.
hashCode
());
}
public
String
toString
()
{
return
key
+
"="
+
value
;
}
}
// Types of Iterators
private
static
final
int
KEYS
=
0
;
private
static
final
int
VALUES
=
1
;
private
static
final
int
ENTRIES
=
2
;
private
class
HashIterator
implements
Iterator
{
private
Entry
[]
table
=
LinkedHashMap
.
this
.
table
;
private
Entry
entry
=
null
;
private
Entry
lastReturned
=
null
;
private
int
type
;
/**
* The modCount value that the iterator believes that the backing
* List should have. If this expectation is violated, the iterator
* has detected concurrent modification.
*/
private
int
expectedModCount
=
modCount
;
HashIterator
(
int
type
)
{
this
.
type
=
type
;
this
.
entry
=
LinkedHashMap
.
this
.
header
.
after
;
}
public
boolean
hasNext
()
{
return
entry
!=
header
;
}
public
Object
next
()
{
if
(
modCount
!=
expectedModCount
)
throw
new
ConcurrentModificationException
();
if
(
entry
==
LinkedHashMap
.
this
.
header
)
throw
new
NoSuchElementException
();
Entry
e
=
lastReturned
=
entry
;
entry
=
e
.
after
;
return
type
==
KEYS
?
e
.
key
:
(
type
==
VALUES
?
e
.
value
:
e
);
}
public
void
remove
()
{
if
(
lastReturned
==
null
)
throw
new
IllegalStateException
();
if
(
modCount
!=
expectedModCount
)
throw
new
ConcurrentModificationException
();
Entry
[]
tab
=
LinkedHashMap
.
this
.
table
;
int
index
=
(
lastReturned
.
hash
&
0x7FFFFFFF
)
%
tab
.
length
;
for
(
Entry
e
=
tab
[
index
],
prev
=
null
;
e
!=
null
;
prev
=
e
,
e
=
e
.
next
)
{
if
(
e
==
lastReturned
)
{
modCount
++;
expectedModCount
++;
if
(
prev
==
null
)
tab
[
index
]
=
e
.
next
;
else
prev
.
next
=
e
.
next
;
count
--;
listRemove
(
e
);
lastReturned
=
null
;
return
;
}
}
throw
new
ConcurrentModificationException
();
}
}
/**
* Save the state of the LinkedHashMap to a stream (i.e., serialize it).
* The objects will be written out in the order they are linked
* in the list.
*/
private
void
writeObject
(
java
.
io
.
ObjectOutputStream
s
)
throws
IOException
{
// Write out the threshold, loadfactor, and any hidden stuff
s
.
defaultWriteObject
();
// Write out number of buckets
s
.
writeInt
(
table
.
length
);
// Write out size (number of Mappings)
s
.
writeInt
(
count
);
// Write out keys and values (alternating)
for
(
Entry
e
=
header
.
after
;
e
!=
header
;
e
=
e
.
after
)
{
s
.
writeObject
(
e
.
key
);
s
.
writeObject
(
e
.
value
);
}
}
/**
* Reconstitute the LinkedHashMap from a stream (i.e., deserialize it).
*/
private
void
readObject
(
java
.
io
.
ObjectInputStream
s
)
throws
IOException
,
ClassNotFoundException
{
// Read in the threshold, loadfactor, and any hidden stuff
s
.
defaultReadObject
();
// Read in number of buckets and allocate the bucket array;
int
numBuckets
=
s
.
readInt
();
table
=
new
Entry
[
numBuckets
];
header
=
new
Entry
(-
1
,
null
,
null
,
null
);
header
.
before
=
header
;
header
.
after
=
header
;
// Read in size (number of Mappings)
int
size
=
s
.
readInt
();
// Read the keys and values, and put the mappings in the LinkedHashMap
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
Object
key
=
s
.
readObject
();
Object
value
=
s
.
readObject
();
put
(
key
,
value
);
}
}
}
src/share/classes/com/sun/tools/jdi/LongValueImpl.java
浏览文件 @
14082957
...
...
@@ -93,7 +93,7 @@ public class LongValueImpl extends PrimitiveValueImpl
}
public
long
longValue
()
{
return
(
long
)
value
;
return
value
;
}
public
float
floatValue
()
{
...
...
src/share/classes/com/sun/tools/jdi/MethodImpl.java
浏览文件 @
14082957
...
...
@@ -362,7 +362,7 @@ public abstract class MethodImpl extends TypeComponentImpl
int
argSize
=
arguments
.
size
();
JNITypeParser
parser
=
new
JNITypeParser
(
signature
());
List
signatures
=
parser
.
argumentSignatures
();
List
<
String
>
signatures
=
parser
.
argumentSignatures
();
if
(
signatures
.
size
()
!=
argSize
)
{
throw
new
IllegalArgumentException
(
"Invalid argument count: expected "
+
...
...
src/share/classes/com/sun/tools/jdi/MirrorImpl.java
浏览文件 @
14082957
...
...
@@ -83,8 +83,8 @@ abstract class MirrorImpl extends Object implements Mirror {
* Throw NullPointerException on null mirrors.
* Throw VMMismatchException on wrong VM.
*/
void
validateMirrors
(
Collection
mirrors
)
{
Iterator
iter
=
mirrors
.
iterator
();
void
validateMirrors
(
Collection
<?
extends
Mirror
>
mirrors
)
{
Iterator
<?
extends
Mirror
>
iter
=
mirrors
.
iterator
();
while
(
iter
.
hasNext
())
{
MirrorImpl
mirror
=
(
MirrorImpl
)
iter
.
next
();
if
(!
vm
.
equals
(
mirror
.
vm
))
{
...
...
@@ -96,8 +96,8 @@ abstract class MirrorImpl extends Object implements Mirror {
* Allow null mirrors.
* Throw VMMismatchException on wrong VM.
*/
void
validateMirrorsOrNulls
(
Collection
mirrors
)
{
Iterator
iter
=
mirrors
.
iterator
();
void
validateMirrorsOrNulls
(
Collection
<?
extends
Mirror
>
mirrors
)
{
Iterator
<?
extends
Mirror
>
iter
=
mirrors
.
iterator
();
while
(
iter
.
hasNext
())
{
MirrorImpl
mirror
=
(
MirrorImpl
)
iter
.
next
();
if
((
mirror
!=
null
)
&&
!
vm
.
equals
(
mirror
.
vm
))
{
...
...
src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java
浏览文件 @
14082957
...
...
@@ -110,7 +110,7 @@ public class ObjectReferenceImpl extends ValueImpl
public
boolean
vmNotSuspended
(
VMAction
action
)
{
// make sure that cache and listener management are synchronized
synchronized
(
vm
.
state
())
{
if
(
cache
!=
null
&&
(
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
(
cache
!=
null
&&
(
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
"Clearing temporary cache for "
+
description
());
}
disableCache
();
...
...
@@ -163,8 +163,8 @@ public class ObjectReferenceImpl extends ValueImpl
public
Value
getValue
(
Field
sig
)
{
List
<
Field
>
list
=
new
ArrayList
<
Field
>(
1
);
list
.
add
(
sig
);
Map
map
=
getValues
(
list
);
return
(
Value
)
map
.
get
(
sig
);
Map
<
Field
,
Value
>
map
=
getValues
(
list
);
return
map
.
get
(
sig
);
}
public
Map
<
Field
,
Value
>
getValues
(
List
<?
extends
Field
>
theFields
)
{
...
...
@@ -487,7 +487,7 @@ public class ObjectReferenceImpl extends ValueImpl
info
=
JDWP
.
ObjectReference
.
MonitorInfo
.
process
(
vm
,
this
);
if
(
local
!=
null
)
{
local
.
monitorInfo
=
info
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
"ObjectReference "
+
uniqueID
()
+
" temporarily caching monitor info"
);
}
...
...
src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java
浏览文件 @
14082957
...
...
@@ -127,7 +127,7 @@ public class ProcessAttachingConnector
}
else
{
if
(
lib
.
equals
(
"dt_shmem"
))
{
try
{
Class
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
Class
<?>
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
ts
=
(
TransportService
)
c
.
newInstance
();
}
catch
(
Exception
x
)
{
}
}
...
...
src/share/classes/com/sun/tools/jdi/RawCommandLineLauncher.java
浏览文件 @
14082957
...
...
@@ -53,7 +53,7 @@ public class RawCommandLineLauncher extends AbstractLauncher implements Launchin
super
();
try
{
Class
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
Class
<?>
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
transportService
=
(
TransportService
)
c
.
newInstance
();
transport
=
new
Transport
()
{
public
String
name
()
{
...
...
src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java
浏览文件 @
14082957
...
...
@@ -99,7 +99,7 @@ implements ReferenceType {
// Fetch all methods for the class, check performance impact
// Needs no synchronization now, since methods() returns
// unmodifiable local data
Iterator
it
=
methods
().
iterator
();
Iterator
<
Method
>
it
=
methods
().
iterator
();
while
(
it
.
hasNext
())
{
MethodImpl
method
=
(
MethodImpl
)
it
.
next
();
if
(
method
.
ref
()
==
ref
)
{
...
...
@@ -113,7 +113,7 @@ implements ReferenceType {
// Fetch all fields for the class, check performance impact
// Needs no synchronization now, since fields() returns
// unmodifiable local data
Iterator
it
=
fields
().
iterator
();
Iterator
<
Field
>
it
=
fields
().
iterator
();
while
(
it
.
hasNext
())
{
FieldImpl
field
=
(
FieldImpl
)
it
.
next
();
if
(
field
.
ref
()
==
ref
)
{
...
...
@@ -385,7 +385,7 @@ implements ReferenceType {
/* Add inherited, visible fields */
List
<?
extends
ReferenceType
>
types
=
inheritedTypes
();
Iterator
iter
=
types
.
iterator
();
Iterator
<?
extends
ReferenceType
>
iter
=
types
.
iterator
();
while
(
iter
.
hasNext
())
{
/*
* TO DO: Be defensive and check for cyclic interface inheritance
...
...
@@ -419,7 +419,7 @@ implements ReferenceType {
/* Add inherited fields */
List
<?
extends
ReferenceType
>
types
=
inheritedTypes
();
Iterator
iter
=
types
.
iterator
();
Iterator
<?
extends
ReferenceType
>
iter
=
types
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceTypeImpl
type
=
(
ReferenceTypeImpl
)
iter
.
next
();
type
.
addAllFields
(
fieldList
,
typeSet
);
...
...
@@ -434,13 +434,10 @@ implements ReferenceType {
}
public
Field
fieldByName
(
String
fieldName
)
{
java
.
util
.
List
searchList
;
Field
f
;
searchList
=
visibleFields
();
List
<
Field
>
searchList
=
visibleFields
();
for
(
int
i
=
0
;
i
<
searchList
.
size
();
i
++)
{
f
=
(
Field
)
searchList
.
get
(
i
);
Field
f
=
searchList
.
get
(
i
);
if
(
f
.
name
().
equals
(
fieldName
))
{
return
f
;
...
...
@@ -575,13 +572,13 @@ implements ReferenceType {
}
public
List
<
ReferenceType
>
nestedTypes
()
{
List
all
=
vm
.
allClasses
();
List
<
ReferenceType
>
all
=
vm
.
allClasses
();
List
<
ReferenceType
>
nested
=
new
ArrayList
<
ReferenceType
>();
String
outername
=
name
();
int
outerlen
=
outername
.
length
();
Iterator
iter
=
all
.
iterator
();
Iterator
<
ReferenceType
>
iter
=
all
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
refType
=
(
ReferenceType
)
iter
.
next
();
ReferenceType
refType
=
iter
.
next
();
String
name
=
refType
.
name
();
int
len
=
name
.
length
();
/* The separator is historically '$' but could also be '#' */
...
...
@@ -598,8 +595,8 @@ implements ReferenceType {
public
Value
getValue
(
Field
sig
)
{
List
<
Field
>
list
=
new
ArrayList
<
Field
>(
1
);
list
.
add
(
sig
);
Map
map
=
getValues
(
list
);
return
(
Value
)
map
.
get
(
sig
);
Map
<
Field
,
Value
>
map
=
getValues
(
list
);
return
map
.
get
(
sig
);
}
...
...
@@ -847,7 +844,7 @@ implements ReferenceType {
SDE
.
Stratum
stratum
=
stratum
(
stratumID
);
List
<
Location
>
list
=
new
ArrayList
<
Location
>();
// location list
for
(
Iterator
iter
=
methods
().
iterator
();
iter
.
hasNext
();
)
{
for
(
Iterator
<
Method
>
iter
=
methods
().
iterator
();
iter
.
hasNext
();
)
{
MethodImpl
method
=
(
MethodImpl
)
iter
.
next
();
try
{
list
.
addAll
(
...
...
@@ -887,7 +884,7 @@ implements ReferenceType {
List
<
Location
>
list
=
new
ArrayList
<
Location
>();
Iterator
iter
=
methods
.
iterator
();
Iterator
<
Method
>
iter
=
methods
.
iterator
();
while
(
iter
.
hasNext
())
{
MethodImpl
method
=
(
MethodImpl
)
iter
.
next
();
// eliminate native and abstract to eliminate
...
...
src/share/classes/com/sun/tools/jdi/ShortValueImpl.java
浏览文件 @
14082957
...
...
@@ -79,7 +79,7 @@ public class ShortValueImpl extends PrimitiveValueImpl
}
public
short
shortValue
()
{
return
(
short
)
value
;
return
value
;
}
public
int
intValue
()
{
...
...
src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java
浏览文件 @
14082957
...
...
@@ -64,7 +64,7 @@ public class SunCommandLineLauncher extends AbstractLauncher implements Launchin
* transport or the socket transport
*/
try
{
Class
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
Class
<?>
c
=
Class
.
forName
(
"com.sun.tools.jdi.SharedMemoryTransportService"
);
transportService
=
(
TransportService
)
c
.
newInstance
();
transport
=
new
Transport
()
{
public
String
name
()
{
...
...
src/share/classes/com/sun/tools/jdi/TargetVM.java
浏览文件 @
14082957
...
...
@@ -178,7 +178,7 @@ public class TargetVM implements Runnable {
// Closing a queue causes a VMDisconnectEvent to
// be put onto the queue.
synchronized
(
eventQueues
)
{
Iterator
iter
=
eventQueues
.
iterator
();
Iterator
<
EventQueue
>
iter
=
eventQueues
.
iterator
();
while
(
iter
.
hasNext
())
{
((
EventQueueImpl
)
iter
.
next
()).
close
();
}
...
...
@@ -187,9 +187,9 @@ public class TargetVM implements Runnable {
// indirectly throw VMDisconnectedException to
// command requesters.
synchronized
(
waitingQueue
)
{
Iterator
iter
=
waitingQueue
.
values
().
iterator
();
Iterator
<
Packet
>
iter
=
waitingQueue
.
values
().
iterator
();
while
(
iter
.
hasNext
())
{
Packet
packet
=
(
Packet
)
iter
.
next
();
Packet
packet
=
iter
.
next
();
synchronized
(
packet
)
{
packet
.
notify
();
}
...
...
@@ -252,7 +252,7 @@ public class TargetVM implements Runnable {
void
notifyDequeueEventSet
()
{
int
maxQueueSize
=
0
;
synchronized
(
eventQueues
)
{
Iterator
iter
=
eventQueues
.
iterator
();
Iterator
<
EventQueue
>
iter
=
eventQueues
.
iterator
();
while
(
iter
.
hasNext
())
{
EventQueueImpl
queue
=
(
EventQueueImpl
)
iter
.
next
();
maxQueueSize
=
Math
.
max
(
maxQueueSize
,
queue
.
size
());
...
...
@@ -265,7 +265,7 @@ public class TargetVM implements Runnable {
int
maxQueueSize
=
0
;
synchronized
(
eventQueues
)
{
Iterator
iter
=
eventQueues
.
iterator
();
Iterator
<
EventQueue
>
iter
=
eventQueues
.
iterator
();
while
(
iter
.
hasNext
())
{
EventQueueImpl
queue
=
(
EventQueueImpl
)
iter
.
next
();
queue
.
enqueue
(
eventSet
);
...
...
src/share/classes/com/sun/tools/jdi/ThreadAction.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,7 @@ import java.util.EventObject;
* with JDI events.
*/
class
ThreadAction
extends
EventObject
{
private
static
final
long
serialVersionUID
=
5690763191100515283L
;
// Event ids
/*static final int THREAD_SUSPENDED = 1;*/
static
final
int
THREAD_RESUMABLE
=
2
;
...
...
src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java
浏览文件 @
14082957
...
...
@@ -118,7 +118,7 @@ public class ThreadGroupReferenceImpl extends ObjectReferenceImpl
.
process
(
vm
,
this
);
if
(
local
!=
null
)
{
local
.
kids
=
kids
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
description
()
+
" temporarily caching children "
);
}
...
...
src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java
浏览文件 @
14082957
...
...
@@ -240,7 +240,7 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
public
void
stop
(
ObjectReference
throwable
)
throws
InvalidTypeException
{
validateMirror
(
throwable
);
// Verify that the given object is a Throwable instance
List
list
=
vm
.
classesByName
(
"java.lang.Throwable"
);
List
<
ReferenceType
>
list
=
vm
.
classesByName
(
"java.lang.Throwable"
);
ClassTypeImpl
throwableClass
=
(
ClassTypeImpl
)
list
.
get
(
0
);
if
((
throwable
==
null
)
||
!
throwableClass
.
isAssignableFrom
(
throwable
))
{
...
...
@@ -296,10 +296,10 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
try
{
StackFrame
frame
=
frame
(
0
);
Location
location
=
frame
.
location
();
List
requests
=
vm
.
eventRequestManager
().
breakpointRequests
();
Iterator
iter
=
requests
.
iterator
();
List
<
BreakpointRequest
>
requests
=
vm
.
eventRequestManager
().
breakpointRequests
();
Iterator
<
BreakpointRequest
>
iter
=
requests
.
iterator
();
while
(
iter
.
hasNext
())
{
BreakpointRequest
request
=
(
BreakpointRequest
)
iter
.
next
();
BreakpointRequest
request
=
iter
.
next
();
if
(
location
.
equals
(
request
.
location
()))
{
return
true
;
}
...
...
@@ -352,8 +352,8 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
}
public
StackFrame
frame
(
int
index
)
throws
IncompatibleThreadStateException
{
List
list
=
privateFrames
(
index
,
1
);
return
(
StackFrame
)
list
.
get
(
0
);
List
<
StackFrame
>
list
=
privateFrames
(
index
,
1
);
return
list
.
get
(
0
);
}
/**
...
...
@@ -447,7 +447,7 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
snapshot
.
ownedMonitors
=
Arrays
.
asList
(
(
ObjectReference
[])
JDWP
.
ThreadReference
.
OwnedMonitors
.
process
(
vm
,
this
).
owned
);
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
description
()
+
" temporarily caching owned monitors"
+
" (count = "
+
snapshot
.
ownedMonitors
.
size
()
+
")"
);
...
...
@@ -475,7 +475,7 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
process
(
vm
,
this
).
monitor
;
snapshot
.
triedCurrentContended
=
true
;
if
((
snapshot
.
contendedMonitor
!=
null
)
&&
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
))
{
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
))
{
vm
.
printTrace
(
description
()
+
" temporarily caching contended monitor"
+
" (id = "
+
snapshot
.
contendedMonitor
.
uniqueID
()
+
")"
);
...
...
@@ -509,7 +509,7 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
snapshot
.
ownedMonitorsInfo
.
add
(
mon
);
}
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
description
()
+
" temporarily caching owned monitors"
+
" (count = "
+
snapshot
.
ownedMonitorsInfo
.
size
()
+
")"
);
...
...
@@ -601,9 +601,9 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
void
removeListener
(
ThreadListener
listener
)
{
synchronized
(
vm
.
state
())
{
Iterator
iter
=
listeners
.
iterator
();
Iterator
<
WeakReference
<
ThreadListener
>>
iter
=
listeners
.
iterator
();
while
(
iter
.
hasNext
())
{
WeakReference
ref
=
(
WeakReference
)
iter
.
next
();
WeakReference
<
ThreadListener
>
ref
=
iter
.
next
();
if
(
listener
.
equals
(
ref
.
get
()))
{
iter
.
remove
();
break
;
...
...
@@ -619,10 +619,10 @@ public class ThreadReferenceImpl extends ObjectReferenceImpl
*/
private
void
processThreadAction
(
ThreadAction
action
)
{
synchronized
(
vm
.
state
())
{
Iterator
iter
=
listeners
.
iterator
();
Iterator
<
WeakReference
<
ThreadListener
>>
iter
=
listeners
.
iterator
();
while
(
iter
.
hasNext
())
{
WeakReference
ref
=
(
WeakReference
)
iter
.
next
();
ThreadListener
listener
=
(
ThreadListener
)
ref
.
get
();
WeakReference
<
ThreadListener
>
ref
=
iter
.
next
();
ThreadListener
listener
=
ref
.
get
();
if
(
listener
!=
null
)
{
switch
(
action
.
id
())
{
case
ThreadAction
.
THREAD_RESUMABLE
:
...
...
src/share/classes/com/sun/tools/jdi/VMAction.java
浏览文件 @
14082957
...
...
@@ -33,6 +33,8 @@ import java.util.EventObject;
* with JDI events.
*/
class
VMAction
extends
EventObject
{
private
static
final
long
serialVersionUID
=
-
1701944679310296090L
;
// Event ids
static
final
int
VM_SUSPENDED
=
1
;
static
final
int
VM_NOT_SUSPENDED
=
2
;
...
...
src/share/classes/com/sun/tools/jdi/VMState.java
浏览文件 @
14082957
...
...
@@ -34,7 +34,7 @@ class VMState {
private
final
VirtualMachineImpl
vm
;
// Listeners
private
final
List
<
WeakReference
>
listeners
=
new
ArrayList
<
WeakReference
>();
// synchronized (this)
private
final
List
<
WeakReference
<
VMListener
>>
listeners
=
new
ArrayList
<
WeakReference
<
VMListener
>
>();
// synchronized (this)
private
boolean
notifyingListeners
=
false
;
// synchronized (this)
/*
...
...
@@ -129,7 +129,7 @@ class VMState {
*/
synchronized
void
thaw
(
ThreadReference
resumingThread
)
{
if
(
cache
!=
null
)
{
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
"Clearing VM suspended cache"
);
}
disableCache
();
...
...
@@ -142,10 +142,10 @@ class VMState {
// Prevent recursion
notifyingListeners
=
true
;
Iterator
iter
=
listeners
.
iterator
();
Iterator
<
WeakReference
<
VMListener
>>
iter
=
listeners
.
iterator
();
while
(
iter
.
hasNext
())
{
WeakReference
ref
=
(
WeakReference
)
iter
.
next
();
VMListener
listener
=
(
VMListener
)
ref
.
get
();
WeakReference
<
VMListener
>
ref
=
iter
.
next
();
VMListener
listener
=
ref
.
get
();
if
(
listener
!=
null
)
{
boolean
keep
=
true
;
switch
(
action
.
id
())
{
...
...
@@ -178,9 +178,9 @@ class VMState {
}
synchronized
void
removeListener
(
VMListener
listener
)
{
Iterator
iter
=
listeners
.
iterator
();
Iterator
<
WeakReference
<
VMListener
>>
iter
=
listeners
.
iterator
();
while
(
iter
.
hasNext
())
{
WeakReference
ref
=
(
WeakReference
)
iter
.
next
();
WeakReference
<
VMListener
>
ref
=
iter
.
next
();
if
(
listener
.
equals
(
ref
.
get
()))
{
iter
.
remove
();
break
;
...
...
@@ -202,7 +202,7 @@ class VMState {
process
(
vm
).
threads
);
if
(
local
!=
null
)
{
local
.
threads
=
threads
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
"Caching all threads (count = "
+
threads
.
size
()
+
") while VM suspended"
);
}
...
...
@@ -229,7 +229,7 @@ class VMState {
process
(
vm
).
groups
);
if
(
local
!=
null
)
{
local
.
groups
=
groups
;
if
((
vm
.
traceFlags
&
vm
.
TRACE_OBJREFS
)
!=
0
)
{
if
((
vm
.
traceFlags
&
VirtualMachine
.
TRACE_OBJREFS
)
!=
0
)
{
vm
.
printTrace
(
"Caching top level thread groups (count = "
+
groups
.
size
()
+
") while VM suspended"
);
...
...
src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java
浏览文件 @
14082957
...
...
@@ -300,9 +300,9 @@ class VirtualMachineImpl extends MirrorImpl
if
(!
canRedefineClasses
())
{
throw
new
UnsupportedOperationException
();
}
Iterator
it
=
classToBytes
.
entrySet
().
iterator
();
Iterator
<?>
it
=
classToBytes
.
entrySet
().
iterator
();
for
(
int
i
=
0
;
it
.
hasNext
();
i
++)
{
Map
.
Entry
entry
=
(
Map
.
Entry
)
it
.
next
();
Map
.
Entry
<?,?>
entry
=
(
Map
.
Entry
)
it
.
next
();
ReferenceTypeImpl
refType
=
(
ReferenceTypeImpl
)
entry
.
getKey
();
validateMirror
(
refType
);
defs
[
i
]
=
new
JDWP
.
VirtualMachine
.
RedefineClasses
...
...
@@ -801,7 +801,7 @@ class VirtualMachineImpl extends MirrorImpl
* we can't differentiate here, we first remove all
* matching classes from our cache...
*/
Iterator
iter
=
typesBySignature
.
iterator
();
Iterator
<
ReferenceType
>
iter
=
typesBySignature
.
iterator
();
int
matches
=
0
;
while
(
iter
.
hasNext
())
{
ReferenceTypeImpl
type
=
(
ReferenceTypeImpl
)
iter
.
next
();
...
...
@@ -833,7 +833,7 @@ class VirtualMachineImpl extends MirrorImpl
if
(
typesByID
==
null
)
{
return
new
ArrayList
<
ReferenceType
>(
0
);
}
Iterator
iter
=
typesBySignature
.
iterator
();
Iterator
<
ReferenceType
>
iter
=
typesBySignature
.
iterator
();
List
<
ReferenceType
>
list
=
new
ArrayList
<
ReferenceType
>();
while
(
iter
.
hasNext
())
{
ReferenceTypeImpl
type
=
(
ReferenceTypeImpl
)
iter
.
next
();
...
...
@@ -1041,10 +1041,10 @@ class VirtualMachineImpl extends MirrorImpl
}
Type
findBootType
(
String
signature
)
throws
ClassNotLoadedException
{
List
types
=
allClasses
();
Iterator
iter
=
types
.
iterator
();
List
<
ReferenceType
>
types
=
allClasses
();
Iterator
<
ReferenceType
>
iter
=
types
.
iterator
();
while
(
iter
.
hasNext
())
{
ReferenceType
type
=
(
ReferenceType
)
iter
.
next
();
ReferenceType
type
=
iter
.
next
();
if
((
type
.
classLoader
()
==
null
)
&&
(
type
.
signature
().
equals
(
signature
)))
{
return
type
;
...
...
@@ -1227,7 +1227,7 @@ class VirtualMachineImpl extends MirrorImpl
}
private
void
processQueue
()
{
Reference
ref
;
Reference
<?>
ref
;
//if ((traceFlags & TRACE_OBJREFS) != 0) {
// printTrace("Checking for softly reachable objects");
//}
...
...
src/share/classes/java/lang/Boolean.java
浏览文件 @
14082957
...
...
@@ -60,7 +60,8 @@ public final class Boolean implements java.io.Serializable,
*
* @since JDK1.1
*/
public
static
final
Class
<
Boolean
>
TYPE
=
Class
.
getPrimitiveClass
(
"boolean"
);
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Boolean
>
TYPE
=
(
Class
<
Boolean
>)
Class
.
getPrimitiveClass
(
"boolean"
);
/**
* The value of the Boolean.
...
...
src/share/classes/java/lang/Byte.java
浏览文件 @
14082957
...
...
@@ -59,6 +59,7 @@ public final class Byte extends Number implements Comparable<Byte> {
* The {@code Class} instance representing the primitive type
* {@code byte}.
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Byte
>
TYPE
=
(
Class
<
Byte
>)
Class
.
getPrimitiveClass
(
"byte"
);
/**
...
...
src/share/classes/java/lang/Character.java
浏览文件 @
14082957
...
...
@@ -172,7 +172,7 @@ class Character implements java.io.Serializable, Comparable<Character> {
* @since 1.1
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Character
>
TYPE
=
Class
.
getPrimitiveClass
(
"char"
);
public
static
final
Class
<
Character
>
TYPE
=
(
Class
<
Character
>)
Class
.
getPrimitiveClass
(
"char"
);
/*
* Normative general types
...
...
src/share/classes/java/lang/CharacterName.java
浏览文件 @
14082957
...
...
@@ -101,6 +101,8 @@ class CharacterName {
if
(
lookup
[
cp
>>
8
]
==
null
||
(
off
=
lookup
[
cp
>>
8
][
cp
&
0xff
])
==
0
)
return
null
;
return
new
String
(
strPool
,
0
,
off
>>>
8
,
off
&
0xff
);
// ASCII
@SuppressWarnings
(
"deprecation"
)
String
result
=
new
String
(
strPool
,
0
,
off
>>>
8
,
off
&
0xff
);
// ASCII
return
result
;
}
}
src/share/classes/java/lang/Class.java
浏览文件 @
14082957
...
...
@@ -631,6 +631,7 @@ public final
* <cite>The Java™ Virtual Machine Specification</cite>
* @since 1.5
*/
@SuppressWarnings
(
"unchecked"
)
public
TypeVariable
<
Class
<
T
>>[]
getTypeParameters
()
{
if
(
getGenericSignature
()
!=
null
)
return
(
TypeVariable
<
Class
<
T
>>[])
getGenericInfo
().
getTypeParameters
();
...
...
@@ -1303,7 +1304,7 @@ public final
return
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
Class
<?>[]>()
{
public
Class
[]
run
()
{
public
Class
<?>
[]
run
()
{
List
<
Class
<?>>
list
=
new
ArrayList
<>();
Class
<?>
currentClass
=
Class
.
this
;
while
(
currentClass
!=
null
)
{
...
...
@@ -1315,7 +1316,7 @@ public final
}
currentClass
=
currentClass
.
getSuperclass
();
}
return
list
.
toArray
(
new
Class
[
0
]);
return
list
.
toArray
(
new
Class
<?>
[
0
]);
}
});
}
...
...
@@ -2150,7 +2151,7 @@ public final
* Return the Virtual Machine's Class object for the named
* primitive type.
*/
static
native
Class
getPrimitiveClass
(
String
name
);
static
native
Class
<?>
getPrimitiveClass
(
String
name
);
/*
...
...
@@ -2395,7 +2396,9 @@ public final
}
// No cached value available; request value from VM
if
(
isInterface
())
{
res
=
new
Constructor
[
0
];
@SuppressWarnings
(
"unchecked"
)
Constructor
<
T
>[]
temporaryRes
=
(
Constructor
<
T
>[])
new
Constructor
<?>[
0
];
res
=
temporaryRes
;
}
else
{
res
=
getDeclaredConstructors0
(
publicOnly
);
}
...
...
@@ -2951,7 +2954,9 @@ public final
return
null
;
}
});
enumConstants
=
(
T
[])
values
.
invoke
(
null
);
@SuppressWarnings
(
"unchecked"
)
T
[]
temporaryConstants
=
(
T
[])
values
.
invoke
(
null
);
enumConstants
=
temporaryConstants
;
}
// These can happen when users concoct enum-like classes
// that don't comply with the enum spec.
...
...
@@ -2996,6 +3001,7 @@ public final
*
* @since 1.5
*/
@SuppressWarnings
(
"unchecked"
)
public
T
cast
(
Object
obj
)
{
if
(
obj
!=
null
&&
!
isInstance
(
obj
))
throw
new
ClassCastException
(
cannotCastMsg
(
obj
));
...
...
@@ -3026,6 +3032,7 @@ public final
* the class itself).
* @since 1.5
*/
@SuppressWarnings
(
"unchecked"
)
public
<
U
>
Class
<?
extends
U
>
asSubclass
(
Class
<
U
>
clazz
)
{
if
(
clazz
.
isAssignableFrom
(
this
))
return
(
Class
<?
extends
U
>)
this
;
...
...
@@ -3037,6 +3044,7 @@ public final
* @throws NullPointerException {@inheritDoc}
* @since 1.5
*/
@SuppressWarnings
(
"unchecked"
)
public
<
A
extends
Annotation
>
A
getAnnotation
(
Class
<
A
>
annotationClass
)
{
if
(
annotationClass
==
null
)
throw
new
NullPointerException
();
...
...
src/share/classes/java/lang/ClassLoader.java
浏览文件 @
14082957
...
...
@@ -1167,7 +1167,8 @@ public abstract class ClassLoader {
* @since 1.2
*/
public
Enumeration
<
URL
>
getResources
(
String
name
)
throws
IOException
{
Enumeration
[]
tmp
=
new
Enumeration
[
2
];
@SuppressWarnings
(
"unchecked"
)
Enumeration
<
URL
>[]
tmp
=
(
Enumeration
<
URL
>[])
new
Enumeration
<?>[
2
];
if
(
parent
!=
null
)
{
tmp
[
0
]
=
parent
.
getResources
(
name
);
}
else
{
...
...
src/share/classes/java/lang/ConditionalSpecialCasing.java
浏览文件 @
14082957
...
...
@@ -92,15 +92,15 @@ final class ConditionalSpecialCasing {
};
// A hash table that contains the above entries
static
Hashtable
entryTable
=
new
Hashtable
();
static
Hashtable
<
Integer
,
HashSet
<
Entry
>>
entryTable
=
new
Hashtable
<>
();
static
{
// create hashtable from the entry
for
(
int
i
=
0
;
i
<
entry
.
length
;
i
++)
{
Entry
cur
=
entry
[
i
];
Integer
cp
=
new
Integer
(
cur
.
getCodePoint
());
HashSet
set
=
(
HashSet
)
entryTable
.
get
(
cp
);
HashSet
<
Entry
>
set
=
entryTable
.
get
(
cp
);
if
(
set
==
null
)
{
set
=
new
HashSet
();
set
=
new
HashSet
<
Entry
>
();
}
set
.
add
(
cur
);
entryTable
.
put
(
cp
,
set
);
...
...
@@ -151,13 +151,13 @@ final class ConditionalSpecialCasing {
}
private
static
char
[]
lookUpTable
(
String
src
,
int
index
,
Locale
locale
,
boolean
bLowerCasing
)
{
HashSet
set
=
(
HashSet
)
entryTable
.
get
(
new
Integer
(
src
.
codePointAt
(
index
)));
HashSet
<
Entry
>
set
=
entryTable
.
get
(
new
Integer
(
src
.
codePointAt
(
index
)));
if
(
set
!=
null
)
{
Iterator
iter
=
set
.
iterator
();
Iterator
<
Entry
>
iter
=
set
.
iterator
();
String
currentLang
=
locale
.
getLanguage
();
while
(
iter
.
hasNext
())
{
Entry
entry
=
(
Entry
)
iter
.
next
();
Entry
entry
=
iter
.
next
();
String
conditionLang
=
entry
.
getLanguage
();
if
(((
conditionLang
==
null
)
||
(
conditionLang
.
equals
(
currentLang
)))
&&
isConditionMet
(
src
,
index
,
locale
,
entry
.
getCondition
()))
{
...
...
src/share/classes/java/lang/Double.java
浏览文件 @
14082957
...
...
@@ -128,6 +128,7 @@ public final class Double extends Number implements Comparable<Double> {
*
* @since JDK1.1
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Double
>
TYPE
=
(
Class
<
Double
>)
Class
.
getPrimitiveClass
(
"double"
);
/**
...
...
@@ -715,7 +716,7 @@ public final class Double extends Number implements Comparable<Double> {
* @return the {@code double} value represented by this object
*/
public
double
doubleValue
()
{
return
(
double
)
value
;
return
value
;
}
/**
...
...
src/share/classes/java/lang/EnumConstantNotPresentException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,7 @@ package java.lang;
* @see java.lang.reflect.AnnotatedElement
* @since 1.5
*/
@SuppressWarnings
(
"rawtypes"
)
/* rawtypes are part of the public api */
public
class
EnumConstantNotPresentException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
6046998521960521108L
;
...
...
src/share/classes/java/lang/Float.java
浏览文件 @
14082957
...
...
@@ -126,7 +126,8 @@ public final class Float extends Number implements Comparable<Float> {
*
* @since JDK1.1
*/
public
static
final
Class
<
Float
>
TYPE
=
Class
.
getPrimitiveClass
(
"float"
);
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Float
>
TYPE
=
(
Class
<
Float
>)
Class
.
getPrimitiveClass
(
"float"
);
/**
* Returns a string representation of the {@code float}
...
...
src/share/classes/java/lang/Integer.java
浏览文件 @
14082957
...
...
@@ -68,6 +68,7 @@ public final class Integer extends Number implements Comparable<Integer> {
*
* @since JDK1.1
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Integer
>
TYPE
=
(
Class
<
Integer
>)
Class
.
getPrimitiveClass
(
"int"
);
/**
...
...
src/share/classes/java/lang/Long.java
浏览文件 @
14082957
...
...
@@ -66,6 +66,7 @@ public final class Long extends Number implements Comparable<Long> {
*
* @since JDK1.1
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Long
>
TYPE
=
(
Class
<
Long
>)
Class
.
getPrimitiveClass
(
"long"
);
/**
...
...
@@ -734,7 +735,7 @@ public final class Long extends Number implements Comparable<Long> {
* {@code long} value.
*/
public
long
longValue
()
{
return
(
long
)
value
;
return
value
;
}
/**
...
...
src/share/classes/java/lang/Short.java
浏览文件 @
14082957
...
...
@@ -58,6 +58,7 @@ public final class Short extends Number implements Comparable<Short> {
* The {@code Class} instance representing the primitive type
* {@code short}.
*/
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Short
>
TYPE
=
(
Class
<
Short
>)
Class
.
getPrimitiveClass
(
"short"
);
/**
...
...
src/share/classes/java/lang/System.java
浏览文件 @
14082957
...
...
@@ -1032,7 +1032,7 @@ public final class System {
*/
@Deprecated
public
static
void
runFinalizersOnExit
(
boolean
value
)
{
Runtime
.
getRuntime
().
runFinalizersOnExit
(
value
);
Runtime
.
runFinalizersOnExit
(
value
);
}
/**
...
...
src/share/classes/java/lang/ThreadLocal.java
浏览文件 @
14082957
...
...
@@ -144,8 +144,11 @@ public class ThreadLocal<T> {
ThreadLocalMap
map
=
getMap
(
t
);
if
(
map
!=
null
)
{
ThreadLocalMap
.
Entry
e
=
map
.
getEntry
(
this
);
if
(
e
!=
null
)
return
(
T
)
e
.
value
;
if
(
e
!=
null
)
{
@SuppressWarnings
(
"unchecked"
)
T
result
=
(
T
)
e
.
value
;
return
result
;
}
}
return
setInitialValue
();
}
...
...
@@ -268,11 +271,11 @@ public class ThreadLocal<T> {
* entry can be expunged from table. Such entries are referred to
* as "stale entries" in the code that follows.
*/
static
class
Entry
extends
WeakReference
<
ThreadLocal
>
{
static
class
Entry
extends
WeakReference
<
ThreadLocal
<?>
>
{
/** The value associated with this ThreadLocal. */
Object
value
;
Entry
(
ThreadLocal
k
,
Object
v
)
{
Entry
(
ThreadLocal
<?>
k
,
Object
v
)
{
super
(
k
);
value
=
v
;
}
...
...
@@ -325,7 +328,7 @@ public class ThreadLocal<T> {
* ThreadLocalMaps are constructed lazily, so we only create
* one when we have at least one entry to put in it.
*/
ThreadLocalMap
(
ThreadLocal
firstKey
,
Object
firstValue
)
{
ThreadLocalMap
(
ThreadLocal
<?>
firstKey
,
Object
firstValue
)
{
table
=
new
Entry
[
INITIAL_CAPACITY
];
int
i
=
firstKey
.
threadLocalHashCode
&
(
INITIAL_CAPACITY
-
1
);
table
[
i
]
=
new
Entry
(
firstKey
,
firstValue
);
...
...
@@ -348,7 +351,8 @@ public class ThreadLocal<T> {
for
(
int
j
=
0
;
j
<
len
;
j
++)
{
Entry
e
=
parentTable
[
j
];
if
(
e
!=
null
)
{
ThreadLocal
key
=
e
.
get
();
@SuppressWarnings
(
"unchecked"
)
ThreadLocal
<
Object
>
key
=
(
ThreadLocal
<
Object
>)
e
.
get
();
if
(
key
!=
null
)
{
Object
value
=
key
.
childValue
(
e
.
value
);
Entry
c
=
new
Entry
(
key
,
value
);
...
...
@@ -372,7 +376,7 @@ public class ThreadLocal<T> {
* @param key the thread local object
* @return the entry associated with key, or null if no such
*/
private
Entry
getEntry
(
ThreadLocal
key
)
{
private
Entry
getEntry
(
ThreadLocal
<?>
key
)
{
int
i
=
key
.
threadLocalHashCode
&
(
table
.
length
-
1
);
Entry
e
=
table
[
i
];
if
(
e
!=
null
&&
e
.
get
()
==
key
)
...
...
@@ -390,12 +394,12 @@ public class ThreadLocal<T> {
* @param e the entry at table[i]
* @return the entry associated with key, or null if no such
*/
private
Entry
getEntryAfterMiss
(
ThreadLocal
key
,
int
i
,
Entry
e
)
{
private
Entry
getEntryAfterMiss
(
ThreadLocal
<?>
key
,
int
i
,
Entry
e
)
{
Entry
[]
tab
=
table
;
int
len
=
tab
.
length
;
while
(
e
!=
null
)
{
ThreadLocal
k
=
e
.
get
();
ThreadLocal
<?>
k
=
e
.
get
();
if
(
k
==
key
)
return
e
;
if
(
k
==
null
)
...
...
@@ -413,7 +417,7 @@ public class ThreadLocal<T> {
* @param key the thread local object
* @param value the value to be set
*/
private
void
set
(
ThreadLocal
key
,
Object
value
)
{
private
void
set
(
ThreadLocal
<?>
key
,
Object
value
)
{
// We don't use a fast path as with get() because it is at
// least as common to use set() to create new entries as
...
...
@@ -427,7 +431,7 @@ public class ThreadLocal<T> {
for
(
Entry
e
=
tab
[
i
];
e
!=
null
;
e
=
tab
[
i
=
nextIndex
(
i
,
len
)])
{
ThreadLocal
k
=
e
.
get
();
ThreadLocal
<?>
k
=
e
.
get
();
if
(
k
==
key
)
{
e
.
value
=
value
;
...
...
@@ -449,7 +453,7 @@ public class ThreadLocal<T> {
/**
* Remove the entry for key.
*/
private
void
remove
(
ThreadLocal
key
)
{
private
void
remove
(
ThreadLocal
<?>
key
)
{
Entry
[]
tab
=
table
;
int
len
=
tab
.
length
;
int
i
=
key
.
threadLocalHashCode
&
(
len
-
1
);
...
...
@@ -479,7 +483,7 @@ public class ThreadLocal<T> {
* @param staleSlot index of the first stale entry encountered while
* searching for key.
*/
private
void
replaceStaleEntry
(
ThreadLocal
key
,
Object
value
,
private
void
replaceStaleEntry
(
ThreadLocal
<?>
key
,
Object
value
,
int
staleSlot
)
{
Entry
[]
tab
=
table
;
int
len
=
tab
.
length
;
...
...
@@ -501,7 +505,7 @@ public class ThreadLocal<T> {
for
(
int
i
=
nextIndex
(
staleSlot
,
len
);
(
e
=
tab
[
i
])
!=
null
;
i
=
nextIndex
(
i
,
len
))
{
ThreadLocal
k
=
e
.
get
();
ThreadLocal
<?>
k
=
e
.
get
();
// If we find key, then we need to swap it
// with the stale entry to maintain hash table order.
...
...
@@ -563,7 +567,7 @@ public class ThreadLocal<T> {
for
(
i
=
nextIndex
(
staleSlot
,
len
);
(
e
=
tab
[
i
])
!=
null
;
i
=
nextIndex
(
i
,
len
))
{
ThreadLocal
k
=
e
.
get
();
ThreadLocal
<?>
k
=
e
.
get
();
if
(
k
==
null
)
{
e
.
value
=
null
;
tab
[
i
]
=
null
;
...
...
@@ -650,7 +654,7 @@ public class ThreadLocal<T> {
for
(
int
j
=
0
;
j
<
oldLen
;
++
j
)
{
Entry
e
=
oldTab
[
j
];
if
(
e
!=
null
)
{
ThreadLocal
k
=
e
.
get
();
ThreadLocal
<?>
k
=
e
.
get
();
if
(
k
==
null
)
{
e
.
value
=
null
;
// Help the GC
}
else
{
...
...
src/share/classes/java/lang/Void.java
浏览文件 @
14082957
...
...
@@ -40,7 +40,8 @@ class Void {
* The {@code Class} object representing the pseudo-type corresponding to
* the keyword {@code void}.
*/
public
static
final
Class
<
Void
>
TYPE
=
Class
.
getPrimitiveClass
(
"void"
);
@SuppressWarnings
(
"unchecked"
)
public
static
final
Class
<
Void
>
TYPE
=
(
Class
<
Void
>)
Class
.
getPrimitiveClass
(
"void"
);
/*
* The Void class cannot be instantiated.
...
...
src/share/classes/java/net/HttpCookie.java
浏览文件 @
14082957
...
...
@@ -72,6 +72,10 @@ public final class HttpCookie implements Cloneable {
private
boolean
httpOnly
;
// HttpOnly ... i.e. not accessible to scripts
private
int
version
=
1
;
// Version=1 ... RFC 2965 style
// The original header this cookie was consructed from, if it was
// constructed by parsing a header, otherwise null.
private
final
String
header
;
// Hold the creation time (in seconds) of the http cookie for later
// expiration calculation
private
final
long
whenCreated
;
...
...
@@ -128,6 +132,10 @@ public final class HttpCookie implements Cloneable {
* @see #setVersion
*/
public
HttpCookie
(
String
name
,
String
value
)
{
this
(
name
,
value
,
null
/*header*/
);
}
private
HttpCookie
(
String
name
,
String
value
,
String
header
)
{
name
=
name
.
trim
();
if
(
name
.
length
()
==
0
||
!
isToken
(
name
)
||
isReserved
(
name
))
{
throw
new
IllegalArgumentException
(
"Illegal cookie name"
);
...
...
@@ -140,6 +148,7 @@ public final class HttpCookie implements Cloneable {
whenCreated
=
System
.
currentTimeMillis
();
portlist
=
null
;
this
.
header
=
header
;
}
/**
...
...
@@ -163,6 +172,15 @@ public final class HttpCookie implements Cloneable {
* if the header string is {@code null}
*/
public
static
List
<
HttpCookie
>
parse
(
String
header
)
{
return
parse
(
header
,
false
);
}
// Private version of parse() that will store the original header used to
// create the cookie, in the cookie itself. This can be useful for filtering
// Set-Cookie[2] headers, using the internal parsing logic defined in this
// class.
private
static
List
<
HttpCookie
>
parse
(
String
header
,
boolean
retainHeader
)
{
int
version
=
guessCookieVersion
(
header
);
// if header start with set-cookie or set-cookie2, strip it off
...
...
@@ -178,7 +196,7 @@ public final class HttpCookie implements Cloneable {
// so the parse logic is slightly different
if
(
version
==
0
)
{
// Netscape draft cookie
HttpCookie
cookie
=
parseInternal
(
header
);
HttpCookie
cookie
=
parseInternal
(
header
,
retainHeader
);
cookie
.
setVersion
(
0
);
cookies
.
add
(
cookie
);
}
else
{
...
...
@@ -187,7 +205,7 @@ public final class HttpCookie implements Cloneable {
// it'll separate them with comma
List
<
String
>
cookieStrings
=
splitMultiCookies
(
header
);
for
(
String
cookieStr
:
cookieStrings
)
{
HttpCookie
cookie
=
parseInternal
(
cookieStr
);
HttpCookie
cookie
=
parseInternal
(
cookieStr
,
retainHeader
);
cookie
.
setVersion
(
1
);
cookies
.
add
(
cookie
);
}
...
...
@@ -804,7 +822,8 @@ public final class HttpCookie implements Cloneable {
* @throws IllegalArgumentException
* if header string violates the cookie specification
*/
private
static
HttpCookie
parseInternal
(
String
header
)
private
static
HttpCookie
parseInternal
(
String
header
,
boolean
retainHeader
)
{
HttpCookie
cookie
=
null
;
String
namevaluePair
=
null
;
...
...
@@ -819,7 +838,13 @@ public final class HttpCookie implements Cloneable {
if
(
index
!=
-
1
)
{
String
name
=
namevaluePair
.
substring
(
0
,
index
).
trim
();
String
value
=
namevaluePair
.
substring
(
index
+
1
).
trim
();
cookie
=
new
HttpCookie
(
name
,
stripOffSurroundingQuote
(
value
));
if
(
retainHeader
)
cookie
=
new
HttpCookie
(
name
,
stripOffSurroundingQuote
(
value
),
header
);
else
cookie
=
new
HttpCookie
(
name
,
stripOffSurroundingQuote
(
value
));
}
else
{
// no "=" in name-value pair; it's an error
throw
new
IllegalArgumentException
(
"Invalid cookie name-value pair"
);
...
...
@@ -972,6 +997,28 @@ public final class HttpCookie implements Cloneable {
}
}
static
{
sun
.
misc
.
SharedSecrets
.
setJavaNetHttpCookieAccess
(
new
sun
.
misc
.
JavaNetHttpCookieAccess
()
{
public
List
<
HttpCookie
>
parse
(
String
header
)
{
return
HttpCookie
.
parse
(
header
,
true
);
}
public
String
header
(
HttpCookie
cookie
)
{
return
cookie
.
header
;
}
}
);
}
/*
* Returns the original header this cookie was consructed from, if it was
* constructed by parsing a header, otherwise null.
*/
private
String
header
()
{
return
header
;
}
/*
* Constructs a string representation of this cookie. The string format is
* as Netscape spec, but without leading "Cookie:" token.
...
...
src/share/classes/java/nio/file/spi/FileSystemProvider.java
浏览文件 @
14082957
...
...
@@ -373,11 +373,13 @@ public abstract class FileSystemProvider {
{
if
(
options
.
length
>
0
)
{
for
(
OpenOption
opt:
options
)
{
if
(
opt
!=
StandardOpenOption
.
READ
)
// All OpenOption values except for APPEND and WRITE are allowed
if
(
opt
==
StandardOpenOption
.
APPEND
||
opt
==
StandardOpenOption
.
WRITE
)
throw
new
UnsupportedOperationException
(
"'"
+
opt
+
"' not allowed"
);
}
}
return
Channels
.
newInputStream
(
Files
.
newByteChannel
(
path
));
return
Channels
.
newInputStream
(
Files
.
newByteChannel
(
path
,
options
));
}
/**
...
...
src/share/classes/java/util/Locale.java
浏览文件 @
14082957
...
...
@@ -737,10 +737,6 @@ public final class Locale implements Cloneable, Serializable {
*/
public
static
Locale
getDefault
()
{
// do not synchronize this method - see 4071298
// it's OK if more than one default locale happens to be created
if
(
defaultLocale
==
null
)
{
initDefault
();
}
return
defaultLocale
;
}
...
...
@@ -762,16 +758,23 @@ public final class Locale implements Cloneable, Serializable {
*/
public
static
Locale
getDefault
(
Locale
.
Category
category
)
{
// do not synchronize this method - see 4071298
// it's OK if more than one default locale happens to be created
switch
(
category
)
{
case
DISPLAY:
if
(
defaultDisplayLocale
==
null
)
{
initDefault
(
category
);
synchronized
(
Locale
.
class
)
{
if
(
defaultDisplayLocale
==
null
)
{
defaultDisplayLocale
=
initDefault
(
category
);
}
}
}
return
defaultDisplayLocale
;
case
FORMAT:
if
(
defaultFormatLocale
==
null
)
{
initDefault
(
category
);
synchronized
(
Locale
.
class
)
{
if
(
defaultFormatLocale
==
null
)
{
defaultFormatLocale
=
initDefault
(
category
);
}
}
}
return
defaultFormatLocale
;
default
:
...
...
@@ -780,7 +783,7 @@ public final class Locale implements Cloneable, Serializable {
return
getDefault
();
}
private
static
void
initDefault
()
{
private
static
Locale
initDefault
()
{
String
language
,
region
,
script
,
country
,
variant
;
language
=
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
"user.language"
,
"en"
));
...
...
@@ -806,16 +809,12 @@ public final class Locale implements Cloneable, Serializable {
variant
=
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
"user.variant"
,
""
));
}
defaultLocale
=
getInstance
(
language
,
script
,
country
,
variant
,
null
);
}
private
static
void
initDefault
(
Locale
.
Category
category
)
{
// make sure defaultLocale is initialized
if
(
defaultLocale
==
null
)
{
initDefault
();
return
getInstance
(
language
,
script
,
country
,
variant
,
null
);
}
Locale
defaultCategoryLocale
=
getInstance
(
private
static
Locale
initDefault
(
Locale
.
Category
category
)
{
return
getInstance
(
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
category
.
languageKey
,
defaultLocale
.
getLanguage
())),
AccessController
.
doPrivileged
(
...
...
@@ -825,15 +824,6 @@ public final class Locale implements Cloneable, Serializable {
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
category
.
variantKey
,
defaultLocale
.
getVariant
())),
null
);
switch
(
category
)
{
case
DISPLAY:
defaultDisplayLocale
=
defaultCategoryLocale
;
break
;
case
FORMAT:
defaultFormatLocale
=
defaultCategoryLocale
;
break
;
}
}
/**
...
...
@@ -1916,9 +1906,9 @@ public final class Locale implements Cloneable, Serializable {
*/
private
transient
volatile
int
hashCodeValue
=
0
;
private
static
Locale
defaultLocale
=
null
;
private
static
Locale
defaultDisplayLocale
=
null
;
private
static
Locale
defaultFormatLocale
=
null
;
private
volatile
static
Locale
defaultLocale
=
initDefault
()
;
private
volatile
static
Locale
defaultDisplayLocale
=
null
;
private
volatile
static
Locale
defaultFormatLocale
=
null
;
/**
* Return an array of the display names of the variant.
...
...
src/share/classes/java/util/concurrent/ArrayBlockingQueue.java
浏览文件 @
14082957
...
...
@@ -131,8 +131,9 @@ public class ArrayBlockingQueue<E> extends AbstractQueue<E>
/**
* Returns item at index i.
*/
@SuppressWarnings
(
"unchecked"
)
final
E
itemAt
(
int
i
)
{
return
this
.<
E
>
cast
(
items
[
i
])
;
return
(
E
)
items
[
i
]
;
}
/**
...
...
@@ -162,7 +163,8 @@ public class ArrayBlockingQueue<E> extends AbstractQueue<E>
*/
private
E
extract
()
{
final
Object
[]
items
=
this
.
items
;
E
x
=
this
.<
E
>
cast
(
items
[
takeIndex
]);
@SuppressWarnings
(
"unchecked"
)
E
x
=
(
E
)
items
[
takeIndex
];
items
[
takeIndex
]
=
null
;
takeIndex
=
inc
(
takeIndex
);
--
count
;
...
...
@@ -647,7 +649,9 @@ public class ArrayBlockingQueue<E> extends AbstractQueue<E>
int
n
=
0
;
int
max
=
count
;
while
(
n
<
max
)
{
c
.
add
(
this
.<
E
>
cast
(
items
[
i
]));
@SuppressWarnings
(
"unchecked"
)
E
x
=
(
E
)
items
[
i
];
c
.
add
(
x
);
items
[
i
]
=
null
;
i
=
inc
(
i
);
++
n
;
...
...
@@ -684,7 +688,9 @@ public class ArrayBlockingQueue<E> extends AbstractQueue<E>
int
n
=
0
;
int
max
=
(
maxElements
<
count
)
?
maxElements
:
count
;
while
(
n
<
max
)
{
c
.
add
(
this
.<
E
>
cast
(
items
[
i
]));
@SuppressWarnings
(
"unchecked"
)
E
x
=
(
E
)
items
[
i
];
c
.
add
(
x
);
items
[
i
]
=
null
;
i
=
inc
(
i
);
++
n
;
...
...
src/share/classes/java/util/concurrent/ConcurrentHashMap.java
浏览文件 @
14082957
...
...
@@ -37,9 +37,6 @@ package java.util.concurrent;
import
java.util.concurrent.locks.*
;
import
java.util.*
;
import
java.io.Serializable
;
import
java.io.IOException
;
import
java.io.ObjectInputStream
;
import
java.io.ObjectOutputStream
;
/**
* A hash table supporting full concurrency of retrievals and
...
...
@@ -228,7 +225,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
HashEntry
.
class
;
Class
<?>
k
=
HashEntry
.
class
;
nextOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"next"
));
}
catch
(
Exception
e
)
{
...
...
@@ -433,7 +430,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
int
newCapacity
=
oldCapacity
<<
1
;
threshold
=
(
int
)(
newCapacity
*
loadFactor
);
HashEntry
<
K
,
V
>[]
newTable
=
(
HashEntry
<
K
,
V
>[])
new
HashEntry
[
newCapacity
];
(
HashEntry
<
K
,
V
>[])
new
HashEntry
<?,?>
[
newCapacity
];
int
sizeMask
=
newCapacity
-
1
;
for
(
int
i
=
0
;
i
<
oldCapacity
;
i
++)
{
HashEntry
<
K
,
V
>
e
=
oldTable
[
i
];
...
...
@@ -677,7 +674,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
int
cap
=
proto
.
table
.
length
;
float
lf
=
proto
.
loadFactor
;
int
threshold
=
(
int
)(
cap
*
lf
);
HashEntry
<
K
,
V
>[]
tab
=
(
HashEntry
<
K
,
V
>[])
new
HashEntry
[
cap
];
HashEntry
<
K
,
V
>[]
tab
=
(
HashEntry
<
K
,
V
>[])
new
HashEntry
<?,?>
[
cap
];
if
((
seg
=
(
Segment
<
K
,
V
>)
UNSAFE
.
getObjectVolatile
(
ss
,
u
))
==
null
)
{
// recheck
Segment
<
K
,
V
>
s
=
new
Segment
<
K
,
V
>(
lf
,
threshold
,
tab
);
...
...
@@ -694,7 +691,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
// Hash-based segment and entry accesses
/**
* Get
the segment for the given hash
* Get
s the segment for the given hash code.
*/
@SuppressWarnings
(
"unchecked"
)
private
Segment
<
K
,
V
>
segmentForHash
(
int
h
)
{
...
...
@@ -703,7 +700,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
}
/**
* Gets the table entry for the given segment and hash
* Gets the table entry for the given segment and hash
code.
*/
@SuppressWarnings
(
"unchecked"
)
static
final
<
K
,
V
>
HashEntry
<
K
,
V
>
entryForHash
(
Segment
<
K
,
V
>
seg
,
int
h
)
{
...
...
@@ -758,8 +755,8 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
// create segments and segments[0]
Segment
<
K
,
V
>
s0
=
new
Segment
<
K
,
V
>(
loadFactor
,
(
int
)(
cap
*
loadFactor
),
(
HashEntry
<
K
,
V
>[])
new
HashEntry
[
cap
]);
Segment
<
K
,
V
>[]
ss
=
(
Segment
<
K
,
V
>[])
new
Segment
[
ssize
];
(
HashEntry
<
K
,
V
>[])
new
HashEntry
<?,?>
[
cap
]);
Segment
<
K
,
V
>[]
ss
=
(
Segment
<
K
,
V
>[])
new
Segment
<?,?>
[
ssize
];
UNSAFE
.
putOrderedObject
(
ss
,
SBASE
,
s0
);
// ordered write of segments[0]
this
.
segments
=
ss
;
}
...
...
@@ -916,6 +913,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
*
* @throws NullPointerException if the specified key is null
*/
@SuppressWarnings
(
"unchecked"
)
public
V
get
(
Object
key
)
{
Segment
<
K
,
V
>
s
;
// manually integrate access methods to reduce overhead
HashEntry
<
K
,
V
>[]
tab
;
...
...
@@ -1026,7 +1024,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
* full compatibility with class {@link java.util.Hashtable},
* which supported this method prior to introduction of the
* Java Collections framework.
*
* @param value a value to search for
* @return <tt>true</tt> if and only if some key maps to the
* <tt>value</tt> argument in this table as
...
...
@@ -1262,7 +1260,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
}
/**
* Set nextEntry to first node of next non-empty table
* Set
s
nextEntry to first node of next non-empty table
* (in backwards order, to simplify checks).
*/
final
void
advance
()
{
...
...
@@ -1326,12 +1324,14 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
final
class
WriteThroughEntry
extends
AbstractMap
.
SimpleEntry
<
K
,
V
>
{
static
final
long
serialVersionUID
=
7249069246763182397L
;
WriteThroughEntry
(
K
k
,
V
v
)
{
super
(
k
,
v
);
}
/**
* Set
our entry's value and write
through to the map. The
* Set
s our entry's value and writes
through to the map. The
* value to return is somewhat arbitrary here. Since a
* WriteThroughEntry does not necessarily track asynchronous
* changes, the most recent "previous" value could be
...
...
@@ -1427,15 +1427,16 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
/* ---------------- Serialization Support -------------- */
/**
* Save the state of the <tt>ConcurrentHashMap</tt> instance to a
* stream (i.e., serialize it).
* Save
s
the state of the <tt>ConcurrentHashMap</tt> instance to a
* stream (i.e., serialize
s
it).
* @param s the stream
* @serialData
* the key (Object) and value (Object)
* for each key-value mapping, followed by a null pair.
* The key-value mappings are emitted in no particular order.
*/
private
void
writeObject
(
java
.
io
.
ObjectOutputStream
s
)
throws
IOException
{
private
void
writeObject
(
java
.
io
.
ObjectOutputStream
s
)
throws
java
.
io
.
IOException
{
// force all segments for serialization compatibility
for
(
int
k
=
0
;
k
<
segments
.
length
;
++
k
)
ensureSegment
(
k
);
...
...
@@ -1463,13 +1464,13 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
}
/**
* Reconstitute the <tt>ConcurrentHashMap</tt> instance from a
* stream (i.e., deserialize it).
* Reconstitute
s
the <tt>ConcurrentHashMap</tt> instance from a
* stream (i.e., deserialize
s
it).
* @param s the stream
*/
@SuppressWarnings
(
"unchecked"
)
private
void
readObject
(
java
.
io
.
ObjectInputStream
s
)
throws
IOException
,
ClassNotFoundException
{
throws
java
.
io
.
IOException
,
ClassNotFoundException
{
s
.
defaultReadObject
();
// Re-initialize segments to be minimally sized, and let grow.
...
...
@@ -1479,7 +1480,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
Segment
<
K
,
V
>
seg
=
segments
[
k
];
if
(
seg
!=
null
)
{
seg
.
threshold
=
(
int
)(
cap
*
seg
.
loadFactor
);
seg
.
table
=
(
HashEntry
<
K
,
V
>[])
new
HashEntry
[
cap
];
seg
.
table
=
(
HashEntry
<
K
,
V
>[])
new
HashEntry
<?,?>
[
cap
];
}
}
...
...
@@ -1504,8 +1505,8 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
int
ss
,
ts
;
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
tc
=
HashEntry
[].
class
;
Class
sc
=
Segment
[].
class
;
Class
<?>
tc
=
HashEntry
[].
class
;
Class
<?>
sc
=
Segment
[].
class
;
TBASE
=
UNSAFE
.
arrayBaseOffset
(
tc
);
SBASE
=
UNSAFE
.
arrayBaseOffset
(
sc
);
ts
=
UNSAFE
.
arrayIndexScale
(
tc
);
...
...
src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java
浏览文件 @
14082957
...
...
@@ -335,7 +335,7 @@ public class ConcurrentLinkedDeque<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Node
.
class
;
Class
<?>
k
=
Node
.
class
;
prevOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"prev"
));
itemOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -1457,7 +1457,7 @@ public class ConcurrentLinkedDeque<E>
NEXT_TERMINATOR
.
prev
=
NEXT_TERMINATOR
;
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
ConcurrentLinkedDeque
.
class
;
Class
<?>
k
=
ConcurrentLinkedDeque
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
tailOffset
=
UNSAFE
.
objectFieldOffset
...
...
src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java
浏览文件 @
14082957
...
...
@@ -208,7 +208,7 @@ public class ConcurrentLinkedQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Node
.
class
;
Class
<?>
k
=
Node
.
class
;
itemOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"item"
));
nextOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -823,7 +823,7 @@ public class ConcurrentLinkedQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
ConcurrentLinkedQueue
.
class
;
Class
<?>
k
=
ConcurrentLinkedQueue
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
tailOffset
=
UNSAFE
.
objectFieldOffset
...
...
src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java
浏览文件 @
14082957
...
...
@@ -35,7 +35,6 @@
package
java.util.concurrent
;
import
java.util.*
;
import
java.util.concurrent.atomic.*
;
/**
* A scalable concurrent {@link ConcurrentNavigableMap} implementation.
...
...
@@ -90,6 +89,7 @@ import java.util.concurrent.atomic.*;
* @param <V> the type of mapped values
* @since 1.6
*/
@SuppressWarnings
(
"unchecked"
)
public
class
ConcurrentSkipListMap
<
K
,
V
>
extends
AbstractMap
<
K
,
V
>
implements
ConcurrentNavigableMap
<
K
,
V
>,
Cloneable
,
...
...
@@ -352,11 +352,11 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
private
transient
int
randomSeed
;
/** Lazily initialized key set */
private
transient
KeySet
keySet
;
private
transient
KeySet
<
K
>
keySet
;
/** Lazily initialized entry set */
private
transient
EntrySet
entrySet
;
private
transient
EntrySet
<
K
,
V
>
entrySet
;
/** Lazily initialized values collection */
private
transient
Values
values
;
private
transient
Values
<
V
>
values
;
/** Lazily initialized descending key set */
private
transient
ConcurrentNavigableMap
<
K
,
V
>
descendingMap
;
...
...
@@ -517,7 +517,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Node
.
class
;
Class
<?>
k
=
Node
.
class
;
valueOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"value"
));
nextOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -597,7 +597,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Index
.
class
;
Class
<?>
k
=
Index
.
class
;
rightOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"right"
));
}
catch
(
Exception
e
)
{
...
...
@@ -933,7 +933,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
* direction.
*/
level
=
max
+
1
;
Index
<
K
,
V
>[]
idxs
=
(
Index
<
K
,
V
>[])
new
Index
[
level
+
1
];
Index
<
K
,
V
>[]
idxs
=
(
Index
<
K
,
V
>[])
new
Index
<?,?>
[
level
+
1
];
Index
<
K
,
V
>
idx
=
null
;
for
(
int
i
=
1
;
i
<=
level
;
++
i
)
idxs
[
i
]
=
idx
=
new
Index
<
K
,
V
>(
z
,
idx
,
null
);
...
...
@@ -1436,16 +1436,16 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
* @return a shallow copy of this map
*/
public
ConcurrentSkipListMap
<
K
,
V
>
clone
()
{
ConcurrentSkipListMap
<
K
,
V
>
clone
=
null
;
try
{
clone
=
(
ConcurrentSkipListMap
<
K
,
V
>)
super
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
throw
new
InternalError
();
}
@SuppressWarnings
(
"unchecked"
)
ConcurrentSkipListMap
<
K
,
V
>
clone
=
(
ConcurrentSkipListMap
<
K
,
V
>)
super
.
clone
();
clone
.
initialize
();
clone
.
buildFromSorted
(
this
);
return
clone
;
}
catch
(
CloneNotSupportedException
e
)
{
throw
new
InternalError
();
}
}
/**
...
...
@@ -1507,7 +1507,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
/* ---------------- Serialization -------------- */
/**
* Save
the state of this map to a stream
.
* Save
s the state of this map to a stream (that is, serializes it)
.
*
* @serialData The key (Object) and value (Object) for each
* key-value mapping represented by the map, followed by
...
...
@@ -1532,7 +1532,9 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
}
/**
* Reconstitute the map from a stream.
* Reconstitutes the map from a stream (that is, deserializes it).
*
* @param s the stream
*/
private
void
readObject
(
final
java
.
io
.
ObjectInputStream
s
)
throws
java
.
io
.
IOException
,
ClassNotFoundException
{
...
...
@@ -1755,13 +1757,13 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
* @return a navigable set view of the keys in this map
*/
public
NavigableSet
<
K
>
keySet
()
{
KeySet
ks
=
keySet
;
return
(
ks
!=
null
)
?
ks
:
(
keySet
=
new
KeySet
(
this
));
KeySet
<
K
>
ks
=
keySet
;
return
(
ks
!=
null
)
?
ks
:
(
keySet
=
new
KeySet
<
K
>
(
this
));
}
public
NavigableSet
<
K
>
navigableKeySet
()
{
KeySet
ks
=
keySet
;
return
(
ks
!=
null
)
?
ks
:
(
keySet
=
new
KeySet
(
this
));
KeySet
<
K
>
ks
=
keySet
;
return
(
ks
!=
null
)
?
ks
:
(
keySet
=
new
KeySet
<
K
>
(
this
));
}
/**
...
...
@@ -1783,8 +1785,8 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
* reflect any modifications subsequent to construction.
*/
public
Collection
<
V
>
values
()
{
Values
vs
=
values
;
return
(
vs
!=
null
)
?
vs
:
(
values
=
new
Values
(
this
));
Values
<
V
>
vs
=
values
;
return
(
vs
!=
null
)
?
vs
:
(
values
=
new
Values
<
V
>
(
this
));
}
/**
...
...
@@ -1812,8 +1814,8 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
* sorted in ascending key order
*/
public
Set
<
Map
.
Entry
<
K
,
V
>>
entrySet
()
{
EntrySet
es
=
entrySet
;
return
(
es
!=
null
)
?
es
:
(
entrySet
=
new
EntrySet
(
this
));
EntrySet
<
K
,
V
>
es
=
entrySet
;
return
(
es
!=
null
)
?
es
:
(
entrySet
=
new
EntrySet
<
K
,
V
>
(
this
));
}
public
ConcurrentNavigableMap
<
K
,
V
>
descendingMap
()
{
...
...
@@ -2304,8 +2306,8 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
static
final
class
KeySet
<
E
>
extends
AbstractSet
<
E
>
implements
NavigableSet
<
E
>
{
private
final
ConcurrentNavigableMap
<
E
,
Object
>
m
;
KeySet
(
ConcurrentNavigableMap
<
E
,
Object
>
map
)
{
m
=
map
;
}
private
final
ConcurrentNavigableMap
<
E
,
?
>
m
;
KeySet
(
ConcurrentNavigableMap
<
E
,
?
>
map
)
{
m
=
map
;
}
public
int
size
()
{
return
m
.
size
();
}
public
boolean
isEmpty
()
{
return
m
.
isEmpty
();
}
public
boolean
contains
(
Object
o
)
{
return
m
.
containsKey
(
o
);
}
...
...
@@ -2319,11 +2321,11 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
public
E
first
()
{
return
m
.
firstKey
();
}
public
E
last
()
{
return
m
.
lastKey
();
}
public
E
pollFirst
()
{
Map
.
Entry
<
E
,
Object
>
e
=
m
.
pollFirstEntry
();
Map
.
Entry
<
E
,
?
>
e
=
m
.
pollFirstEntry
();
return
(
e
==
null
)
?
null
:
e
.
getKey
();
}
public
E
pollLast
()
{
Map
.
Entry
<
E
,
Object
>
e
=
m
.
pollLastEntry
();
Map
.
Entry
<
E
,
?
>
e
=
m
.
pollLastEntry
();
return
(
e
==
null
)
?
null
:
e
.
getKey
();
}
public
Iterator
<
E
>
iterator
()
{
...
...
@@ -2374,20 +2376,20 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
return
tailSet
(
fromElement
,
true
);
}
public
NavigableSet
<
E
>
descendingSet
()
{
return
new
KeySet
(
m
.
descendingMap
());
return
new
KeySet
<
E
>
(
m
.
descendingMap
());
}
}
static
final
class
Values
<
E
>
extends
AbstractCollection
<
E
>
{
private
final
ConcurrentNavigableMap
<
Object
,
E
>
m
;
Values
(
ConcurrentNavigableMap
<
Object
,
E
>
map
)
{
private
final
ConcurrentNavigableMap
<
?
,
E
>
m
;
Values
(
ConcurrentNavigableMap
<
?
,
E
>
map
)
{
m
=
map
;
}
public
Iterator
<
E
>
iterator
()
{
if
(
m
instanceof
ConcurrentSkipListMap
)
return
((
ConcurrentSkipListMap
<
Object
,
E
>)
m
).
valueIterator
();
return
((
ConcurrentSkipListMap
<
?
,
E
>)
m
).
valueIterator
();
else
return
((
SubMap
<
Object
,
E
>)
m
).
valueIterator
();
return
((
SubMap
<
?
,
E
>)
m
).
valueIterator
();
}
public
boolean
isEmpty
()
{
return
m
.
isEmpty
();
...
...
@@ -2421,14 +2423,14 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
public
boolean
contains
(
Object
o
)
{
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
<
K1
,
V1
>
e
=
(
Map
.
Entry
<
K1
,
V1
>)
o
;
Map
.
Entry
<
?,?>
e
=
(
Map
.
Entry
<?,?
>)
o
;
V1
v
=
m
.
get
(
e
.
getKey
());
return
v
!=
null
&&
v
.
equals
(
e
.
getValue
());
}
public
boolean
remove
(
Object
o
)
{
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
<
K1
,
V1
>
e
=
(
Map
.
Entry
<
K1
,
V1
>)
o
;
Map
.
Entry
<
?,?>
e
=
(
Map
.
Entry
<?,?
>)
o
;
return
m
.
remove
(
e
.
getKey
(),
e
.
getValue
());
}
...
...
@@ -2568,9 +2570,9 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
if
(
lo
==
null
)
return
m
.
findFirst
();
else
if
(
loInclusive
)
return
m
.
findNear
(
lo
,
m
.
GT
|
m
.
EQ
);
return
m
.
findNear
(
lo
,
GT
|
EQ
);
else
return
m
.
findNear
(
lo
,
m
.
GT
);
return
m
.
findNear
(
lo
,
GT
);
}
/**
...
...
@@ -2581,9 +2583,9 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
if
(
hi
==
null
)
return
m
.
findLast
();
else
if
(
hiInclusive
)
return
m
.
findNear
(
hi
,
m
.
LT
|
m
.
EQ
);
return
m
.
findNear
(
hi
,
LT
|
EQ
);
else
return
m
.
findNear
(
hi
,
m
.
LT
);
return
m
.
findNear
(
hi
,
LT
);
}
/**
...
...
@@ -2665,15 +2667,15 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
*/
private
Map
.
Entry
<
K
,
V
>
getNearEntry
(
K
key
,
int
rel
)
{
if
(
isDescending
)
{
// adjust relation for direction
if
((
rel
&
m
.
LT
)
==
0
)
rel
|=
m
.
LT
;
if
((
rel
&
LT
)
==
0
)
rel
|=
LT
;
else
rel
&=
~
m
.
LT
;
rel
&=
~
LT
;
}
if
(
tooLow
(
key
))
return
((
rel
&
m
.
LT
)
!=
0
)
?
null
:
lowestEntry
();
return
((
rel
&
LT
)
!=
0
)
?
null
:
lowestEntry
();
if
(
tooHigh
(
key
))
return
((
rel
&
m
.
LT
)
!=
0
)
?
highestEntry
()
:
null
;
return
((
rel
&
LT
)
!=
0
)
?
highestEntry
()
:
null
;
for
(;;)
{
Node
<
K
,
V
>
n
=
m
.
findNear
(
key
,
rel
);
if
(
n
==
null
||
!
inBounds
(
n
.
key
))
...
...
@@ -2688,13 +2690,13 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
// Almost the same as getNearEntry, except for keys
private
K
getNearKey
(
K
key
,
int
rel
)
{
if
(
isDescending
)
{
// adjust relation for direction
if
((
rel
&
m
.
LT
)
==
0
)
rel
|=
m
.
LT
;
if
((
rel
&
LT
)
==
0
)
rel
|=
LT
;
else
rel
&=
~
m
.
LT
;
rel
&=
~
LT
;
}
if
(
tooLow
(
key
))
{
if
((
rel
&
m
.
LT
)
==
0
)
{
if
((
rel
&
LT
)
==
0
)
{
ConcurrentSkipListMap
.
Node
<
K
,
V
>
n
=
loNode
();
if
(
isBeforeEnd
(
n
))
return
n
.
key
;
...
...
@@ -2702,7 +2704,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
return
null
;
}
if
(
tooHigh
(
key
))
{
if
((
rel
&
m
.
LT
)
!=
0
)
{
if
((
rel
&
LT
)
!=
0
)
{
ConcurrentSkipListMap
.
Node
<
K
,
V
>
n
=
hiNode
();
if
(
n
!=
null
)
{
K
last
=
n
.
key
;
...
...
@@ -2734,7 +2736,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
public
V
get
(
Object
key
)
{
if
(
key
==
null
)
throw
new
NullPointerException
();
K
k
=
(
K
)
key
;
return
(
(!
inBounds
(
k
))
?
null
:
m
.
get
(
k
)
);
return
(
!
inBounds
(
k
))
?
null
:
m
.
get
(
k
);
}
public
V
put
(
K
key
,
V
value
)
{
...
...
@@ -2901,35 +2903,35 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
/* ---------------- Relational methods -------------- */
public
Map
.
Entry
<
K
,
V
>
ceilingEntry
(
K
key
)
{
return
getNearEntry
(
key
,
(
m
.
GT
|
m
.
EQ
)
);
return
getNearEntry
(
key
,
GT
|
EQ
);
}
public
K
ceilingKey
(
K
key
)
{
return
getNearKey
(
key
,
(
m
.
GT
|
m
.
EQ
)
);
return
getNearKey
(
key
,
GT
|
EQ
);
}
public
Map
.
Entry
<
K
,
V
>
lowerEntry
(
K
key
)
{
return
getNearEntry
(
key
,
(
m
.
LT
)
);
return
getNearEntry
(
key
,
LT
);
}
public
K
lowerKey
(
K
key
)
{
return
getNearKey
(
key
,
(
m
.
LT
)
);
return
getNearKey
(
key
,
LT
);
}
public
Map
.
Entry
<
K
,
V
>
floorEntry
(
K
key
)
{
return
getNearEntry
(
key
,
(
m
.
LT
|
m
.
EQ
)
);
return
getNearEntry
(
key
,
LT
|
EQ
);
}
public
K
floorKey
(
K
key
)
{
return
getNearKey
(
key
,
(
m
.
LT
|
m
.
EQ
)
);
return
getNearKey
(
key
,
LT
|
EQ
);
}
public
Map
.
Entry
<
K
,
V
>
higherEntry
(
K
key
)
{
return
getNearEntry
(
key
,
(
m
.
GT
)
);
return
getNearEntry
(
key
,
GT
);
}
public
K
higherKey
(
K
key
)
{
return
getNearKey
(
key
,
(
m
.
GT
)
);
return
getNearKey
(
key
,
GT
);
}
public
K
firstKey
()
{
...
...
@@ -2960,22 +2962,22 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
public
NavigableSet
<
K
>
keySet
()
{
KeySet
<
K
>
ks
=
keySetView
;
return
(
ks
!=
null
)
?
ks
:
(
keySetView
=
new
KeySet
(
this
));
return
(
ks
!=
null
)
?
ks
:
(
keySetView
=
new
KeySet
<
K
>
(
this
));
}
public
NavigableSet
<
K
>
navigableKeySet
()
{
KeySet
<
K
>
ks
=
keySetView
;
return
(
ks
!=
null
)
?
ks
:
(
keySetView
=
new
KeySet
(
this
));
return
(
ks
!=
null
)
?
ks
:
(
keySetView
=
new
KeySet
<
K
>
(
this
));
}
public
Collection
<
V
>
values
()
{
Collection
<
V
>
vs
=
valuesView
;
return
(
vs
!=
null
)
?
vs
:
(
valuesView
=
new
Values
(
this
));
return
(
vs
!=
null
)
?
vs
:
(
valuesView
=
new
Values
<
V
>
(
this
));
}
public
Set
<
Map
.
Entry
<
K
,
V
>>
entrySet
()
{
Set
<
Map
.
Entry
<
K
,
V
>>
es
=
entrySetView
;
return
(
es
!=
null
)
?
es
:
(
entrySetView
=
new
EntrySet
(
this
));
return
(
es
!=
null
)
?
es
:
(
entrySetView
=
new
EntrySet
<
K
,
V
>
(
this
));
}
public
NavigableSet
<
K
>
descendingKeySet
()
{
...
...
@@ -3109,7 +3111,7 @@ public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
ConcurrentSkipListMap
.
class
;
Class
<?>
k
=
ConcurrentSkipListMap
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java
浏览文件 @
14082957
...
...
@@ -35,7 +35,6 @@
package
java.util.concurrent
;
import
java.util.*
;
import
sun.misc.Unsafe
;
/**
* A scalable concurrent {@link NavigableSet} implementation based on
...
...
@@ -158,15 +157,15 @@ public class ConcurrentSkipListSet<E>
* @return a shallow copy of this set
*/
public
ConcurrentSkipListSet
<
E
>
clone
()
{
ConcurrentSkipListSet
<
E
>
clone
=
null
;
try
{
clone
=
(
ConcurrentSkipListSet
<
E
>)
super
.
clone
();
clone
.
setMap
(
new
ConcurrentSkipListMap
(
m
));
@SuppressWarnings
(
"unchecked"
)
ConcurrentSkipListSet
<
E
>
clone
=
(
ConcurrentSkipListSet
<
E
>)
super
.
clone
();
clone
.
setMap
(
new
ConcurrentSkipListMap
<
E
,
Object
>(
m
));
return
clone
;
}
catch
(
CloneNotSupportedException
e
)
{
throw
new
InternalError
();
}
return
clone
;
}
/* ---------------- Set operations -------------- */
...
...
@@ -322,8 +321,8 @@ public class ConcurrentSkipListSet<E>
public
boolean
removeAll
(
Collection
<?>
c
)
{
// Override AbstractSet version to avoid unnecessary call to size()
boolean
modified
=
false
;
for
(
Iterator
<?>
i
=
c
.
iterator
();
i
.
hasNext
();
)
if
(
remove
(
i
.
next
()
))
for
(
Object
e
:
c
)
if
(
remove
(
e
))
modified
=
true
;
return
modified
;
}
...
...
@@ -468,7 +467,7 @@ public class ConcurrentSkipListSet<E>
* @return a reverse order view of this set
*/
public
NavigableSet
<
E
>
descendingSet
()
{
return
new
ConcurrentSkipListSet
(
m
.
descendingMap
());
return
new
ConcurrentSkipListSet
<
E
>
(
m
.
descendingMap
());
}
// Support for resetting map in clone
...
...
@@ -481,7 +480,7 @@ public class ConcurrentSkipListSet<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
ConcurrentSkipListSet
.
class
;
Class
<?>
k
=
ConcurrentSkipListSet
.
class
;
mapOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"m"
));
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java
浏览文件 @
14082957
...
...
@@ -36,7 +36,6 @@
package
java.util.concurrent
;
import
java.util.*
;
import
java.util.concurrent.locks.*
;
import
sun.misc.Unsafe
;
/**
* A thread-safe variant of {@link java.util.ArrayList} in which all mutative
...
...
@@ -281,9 +280,11 @@ public class CopyOnWriteArrayList<E>
*/
public
Object
clone
()
{
try
{
CopyOnWriteArrayList
c
=
(
CopyOnWriteArrayList
)(
super
.
clone
());
c
.
resetLock
();
return
c
;
@SuppressWarnings
(
"unchecked"
)
CopyOnWriteArrayList
<
E
>
clone
=
(
CopyOnWriteArrayList
<
E
>)
super
.
clone
();
clone
.
resetLock
();
return
clone
;
}
catch
(
CloneNotSupportedException
e
)
{
// this shouldn't happen, since we are Cloneable
throw
new
InternalError
();
...
...
@@ -1330,7 +1331,7 @@ public class CopyOnWriteArrayList<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
CopyOnWriteArrayList
.
class
;
Class
<?>
k
=
CopyOnWriteArrayList
.
class
;
lockOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"lock"
));
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/DelayQueue.java
浏览文件 @
14082957
...
...
@@ -531,7 +531,7 @@ public class DelayQueue<E extends Delayed> extends AbstractQueue<E>
// not just a .equals element.
lock
.
lock
();
try
{
for
(
Iterator
it
=
q
.
iterator
();
it
.
hasNext
();
)
{
for
(
Iterator
<
E
>
it
=
q
.
iterator
();
it
.
hasNext
();
)
{
if
(
it
.
next
()
==
x
)
{
it
.
remove
();
return
;
...
...
src/share/classes/java/util/concurrent/Exchanger.java
浏览文件 @
14082957
...
...
@@ -279,6 +279,7 @@ public class Exchanger<V> {
* into hole. This class cannot be parameterized as "V" because
* of the use of non-V CANCEL sentinels.
*/
@SuppressWarnings
(
"serial"
)
private
static
final
class
Node
extends
AtomicReference
<
Object
>
{
/** The element offered by the Thread creating this node. */
public
final
Object
item
;
...
...
@@ -303,6 +304,7 @@ public class Exchanger<V> {
* would improve throughput more than enough to outweigh using
* extra space.
*/
@SuppressWarnings
(
"serial"
)
private
static
final
class
Slot
extends
AtomicReference
<
Object
>
{
// Improve likelihood of isolation on <= 64 byte cache lines
long
q0
,
q1
,
q2
,
q3
,
q4
,
q5
,
q6
,
q7
,
q8
,
q9
,
qa
,
qb
,
qc
,
qd
,
qe
;
...
...
@@ -616,13 +618,14 @@ public class Exchanger<V> {
* @throws InterruptedException if the current thread was
* interrupted while waiting
*/
@SuppressWarnings
(
"unchecked"
)
public
V
exchange
(
V
x
)
throws
InterruptedException
{
if
(!
Thread
.
interrupted
())
{
Object
v
=
doExchange
((
x
==
null
)
?
NULL_ITEM
:
x
,
false
,
0
);
if
(
v
==
NULL_ITEM
)
Object
o
=
doExchange
((
x
==
null
)
?
NULL_ITEM
:
x
,
false
,
0
);
if
(
o
==
NULL_ITEM
)
return
null
;
if
(
v
!=
CANCEL
)
return
(
V
)
v
;
if
(
o
!=
CANCEL
)
return
(
V
)
o
;
Thread
.
interrupted
();
// Clear interrupt status on IE throw
}
throw
new
InterruptedException
();
...
...
@@ -670,15 +673,16 @@ public class Exchanger<V> {
* @throws TimeoutException if the specified waiting time elapses
* before another thread enters the exchange
*/
@SuppressWarnings
(
"unchecked"
)
public
V
exchange
(
V
x
,
long
timeout
,
TimeUnit
unit
)
throws
InterruptedException
,
TimeoutException
{
if
(!
Thread
.
interrupted
())
{
Object
v
=
doExchange
((
x
==
null
)
?
NULL_ITEM
:
x
,
Object
o
=
doExchange
((
x
==
null
)
?
NULL_ITEM
:
x
,
true
,
unit
.
toNanos
(
timeout
));
if
(
v
==
NULL_ITEM
)
if
(
o
==
NULL_ITEM
)
return
null
;
if
(
v
!=
CANCEL
)
return
(
V
)
v
;
if
(
o
!=
CANCEL
)
return
(
V
)
o
;
if
(!
Thread
.
interrupted
())
throw
new
TimeoutException
();
}
...
...
src/share/classes/java/util/concurrent/ForkJoinPool.java
浏览文件 @
14082957
...
...
@@ -2150,7 +2150,7 @@ public class ForkJoinPool extends AbstractExecutorService {
int
s
;
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
ForkJoinPool
.
class
;
Class
<?>
k
=
ForkJoinPool
.
class
;
ctlOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"ctl"
));
stealCountOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -2163,7 +2163,7 @@ public class ForkJoinPool extends AbstractExecutorService {
(
k
.
getDeclaredField
(
"scanGuard"
));
nextWorkerNumberOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"nextWorkerNumber"
));
Class
a
=
ForkJoinTask
[].
class
;
Class
<?>
a
=
ForkJoinTask
[].
class
;
ABASE
=
UNSAFE
.
arrayBaseOffset
(
a
);
s
=
UNSAFE
.
arrayIndexScale
(
a
);
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/ForkJoinTask.java
浏览文件 @
14082957
...
...
@@ -520,7 +520,7 @@ public abstract class ForkJoinTask<V> implements Future<V>, Serializable {
if
(
e
==
null
||
(
ex
=
e
.
ex
)
==
null
)
return
null
;
if
(
e
.
thrower
!=
Thread
.
currentThread
().
getId
())
{
Class
ec
=
ex
.
getClass
();
Class
<?
extends
Throwable
>
ec
=
ex
.
getClass
();
try
{
Constructor
<?>
noArgCtor
=
null
;
Constructor
<?>[]
cs
=
ec
.
getConstructors
();
// public ctors only
...
...
src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java
浏览文件 @
14082957
...
...
@@ -192,7 +192,7 @@ public class ForkJoinWorkerThread extends Thread {
/**
* The work-stealing queue array. Size must be a power of two.
* Initialized when started (as oposed to when constructed), to
* Initialized when started (as op
p
osed to when constructed), to
* improve memory locality.
*/
ForkJoinTask
<?>[]
queue
;
...
...
@@ -360,7 +360,7 @@ public class ForkJoinWorkerThread extends Thread {
*/
protected
void
onStart
()
{
queue
=
new
ForkJoinTask
<?>[
INITIAL_QUEUE_CAPACITY
];
int
r
=
p
ool
.
workerSeedGenerator
.
nextInt
();
int
r
=
ForkJoinP
ool
.
workerSeedGenerator
.
nextInt
();
seed
=
(
r
==
0
)
?
1
:
r
;
// must be nonzero
}
...
...
@@ -984,7 +984,7 @@ public class ForkJoinWorkerThread extends Thread {
int
s
;
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
a
=
ForkJoinTask
[].
class
;
Class
<?>
a
=
ForkJoinTask
[].
class
;
ABASE
=
UNSAFE
.
arrayBaseOffset
(
a
);
s
=
UNSAFE
.
arrayIndexScale
(
a
);
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/LinkedTransferQueue.java
浏览文件 @
14082957
...
...
@@ -330,8 +330,8 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
* of less-contended queues. During spins threads check their
* interrupt status and generate a thread-local random number
* to decide to occasionally perform a Thread.yield. While
* yield has underdefined specs, we assume that
might i
t help,
* and will not hurt in limiting impact of spinning on busy
* yield has underdefined specs, we assume that
it migh
t help,
* and will not hurt
,
in limiting impact of spinning on busy
* systems. We also use smaller (1/2) spins for nodes that are
* not known to be front but whose predecessors have not
* blocked -- these "chained" spins avoid artifacts of
...
...
@@ -542,7 +542,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Node
.
class
;
Class
<?>
k
=
Node
.
class
;
itemOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"item"
));
nextOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -627,7 +627,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
break
;
// unless slack < 2
}
LockSupport
.
unpark
(
p
.
waiter
);
return
this
.<
E
>
cast
(
item
);
return
LinkedTransferQueue
.<
E
>
cast
(
item
);
}
}
Node
n
=
p
.
next
;
...
...
@@ -705,7 +705,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
if
(
item
!=
e
)
{
// matched
// assert item != s;
s
.
forgetContents
();
// avoid garbage
return
this
.<
E
>
cast
(
item
);
return
LinkedTransferQueue
.<
E
>
cast
(
item
);
}
if
((
w
.
isInterrupted
()
||
(
timed
&&
nanos
<=
0
))
&&
s
.
casItem
(
e
,
s
))
{
// cancel
...
...
@@ -786,7 +786,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
Object
item
=
p
.
item
;
if
(
p
.
isData
)
{
if
(
item
!=
null
&&
item
!=
p
)
return
this
.<
E
>
cast
(
item
);
return
LinkedTransferQueue
.<
E
>
cast
(
item
);
}
else
if
(
item
==
null
)
return
null
;
...
...
@@ -1008,7 +1008,6 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
return
false
;
}
/**
* Creates an initially empty {@code LinkedTransferQueue}.
*/
...
...
@@ -1045,7 +1044,8 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
* return {@code false}.
*
* @return {@code true} (as specified by
* {@link BlockingQueue#offer(Object,long,TimeUnit) BlockingQueue.offer})
* {@link java.util.concurrent.BlockingQueue#offer(Object,long,TimeUnit)
* BlockingQueue.offer})
* @throws NullPointerException if the specified element is null
*/
public
boolean
offer
(
E
e
,
long
timeout
,
TimeUnit
unit
)
{
...
...
@@ -1162,8 +1162,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
if
(
c
==
this
)
throw
new
IllegalArgumentException
();
int
n
=
0
;
E
e
;
while
(
(
e
=
poll
())
!=
null
)
{
for
(
E
e
;
(
e
=
poll
())
!=
null
;)
{
c
.
add
(
e
);
++
n
;
}
...
...
@@ -1180,8 +1179,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
if
(
c
==
this
)
throw
new
IllegalArgumentException
();
int
n
=
0
;
E
e
;
while
(
n
<
maxElements
&&
(
e
=
poll
())
!=
null
)
{
for
(
E
e
;
n
<
maxElements
&&
(
e
=
poll
())
!=
null
;)
{
c
.
add
(
e
);
++
n
;
}
...
...
@@ -1288,7 +1286,8 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
* {@code LinkedTransferQueue} is not capacity constrained.
*
* @return {@code Integer.MAX_VALUE} (as specified by
* {@link BlockingQueue#remainingCapacity()})
* {@link java.util.concurrent.BlockingQueue#remainingCapacity()
* BlockingQueue.remainingCapacity})
*/
public
int
remainingCapacity
()
{
return
Integer
.
MAX_VALUE
;
...
...
@@ -1320,7 +1319,8 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
throws
java
.
io
.
IOException
,
ClassNotFoundException
{
s
.
defaultReadObject
();
for
(;;)
{
@SuppressWarnings
(
"unchecked"
)
E
item
=
(
E
)
s
.
readObject
();
@SuppressWarnings
(
"unchecked"
)
E
item
=
(
E
)
s
.
readObject
();
if
(
item
==
null
)
break
;
else
...
...
@@ -1337,7 +1337,7 @@ public class LinkedTransferQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
LinkedTransferQueue
.
class
;
Class
<?>
k
=
LinkedTransferQueue
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
tailOffset
=
UNSAFE
.
objectFieldOffset
...
...
src/share/classes/java/util/concurrent/Phaser.java
浏览文件 @
14082957
...
...
@@ -1142,7 +1142,7 @@ public class Phaser {
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
Phaser
.
class
;
Class
<?>
k
=
Phaser
.
class
;
stateOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"state"
));
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/PriorityBlockingQueue.java
浏览文件 @
14082957
...
...
@@ -94,6 +94,7 @@ import java.util.*;
* @author Doug Lea
* @param <E> the type of elements held in this collection
*/
@SuppressWarnings
(
"unchecked"
)
public
class
PriorityBlockingQueue
<
E
>
extends
AbstractQueue
<
E
>
implements
BlockingQueue
<
E
>,
java
.
io
.
Serializable
{
private
static
final
long
serialVersionUID
=
5595510919245408276L
;
...
...
@@ -168,7 +169,7 @@ public class PriorityBlockingQueue<E> extends AbstractQueue<E>
* to maintain compatibility with previous versions
* of this class. Non-null only during serialization/deserialization.
*/
private
PriorityQueue
q
;
private
PriorityQueue
<
E
>
q
;
/**
* Creates a {@code PriorityBlockingQueue} with the default
...
...
@@ -968,7 +969,7 @@ public class PriorityBlockingQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
PriorityBlockingQueue
.
class
;
Class
<?>
k
=
PriorityBlockingQueue
.
class
;
allocationSpinLockOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"allocationSpinLock"
));
}
catch
(
Exception
e
)
{
...
...
src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java
浏览文件 @
14082957
...
...
@@ -34,8 +34,10 @@
*/
package
java.util.concurrent
;
import
java.util.concurrent.atomic.*
;
import
java.util.concurrent.locks.*
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
NANOSECONDS
;
import
java.util.concurrent.atomic.AtomicLong
;
import
java.util.concurrent.locks.Condition
;
import
java.util.concurrent.locks.ReentrantLock
;
import
java.util.*
;
/**
...
...
@@ -166,7 +168,7 @@ public class ScheduledThreadPoolExecutor
* Sequence number to break scheduling ties, and in turn to
* guarantee FIFO order among tied entries.
*/
private
static
final
AtomicLong
sequencer
=
new
AtomicLong
(
0
);
private
static
final
AtomicLong
sequencer
=
new
AtomicLong
();
/**
* Returns current nanosecond time.
...
...
@@ -231,7 +233,7 @@ public class ScheduledThreadPoolExecutor
}
public
long
getDelay
(
TimeUnit
unit
)
{
return
unit
.
convert
(
time
-
now
(),
TimeUnit
.
NANOSECONDS
);
return
unit
.
convert
(
time
-
now
(),
NANOSECONDS
);
}
public
int
compareTo
(
Delayed
other
)
{
...
...
@@ -249,8 +251,8 @@ public class ScheduledThreadPoolExecutor
else
return
1
;
}
long
d
=
(
getDelay
(
TimeUnit
.
NANOSECONDS
)
-
other
.
getDelay
(
TimeUnit
.
NANOSECONDS
));
long
d
=
(
getDelay
(
NANOSECONDS
)
-
other
.
getDelay
(
NANOSECONDS
));
return
(
d
==
0
)
?
0
:
((
d
<
0
)
?
-
1
:
1
);
}
...
...
@@ -424,7 +426,7 @@ public class ScheduledThreadPoolExecutor
* @throws IllegalArgumentException if {@code corePoolSize < 0}
*/
public
ScheduledThreadPoolExecutor
(
int
corePoolSize
)
{
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
TimeUnit
.
NANOSECONDS
,
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
NANOSECONDS
,
new
DelayedWorkQueue
());
}
...
...
@@ -441,7 +443,7 @@ public class ScheduledThreadPoolExecutor
*/
public
ScheduledThreadPoolExecutor
(
int
corePoolSize
,
ThreadFactory
threadFactory
)
{
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
TimeUnit
.
NANOSECONDS
,
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
NANOSECONDS
,
new
DelayedWorkQueue
(),
threadFactory
);
}
...
...
@@ -458,7 +460,7 @@ public class ScheduledThreadPoolExecutor
*/
public
ScheduledThreadPoolExecutor
(
int
corePoolSize
,
RejectedExecutionHandler
handler
)
{
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
TimeUnit
.
NANOSECONDS
,
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
NANOSECONDS
,
new
DelayedWorkQueue
(),
handler
);
}
...
...
@@ -479,7 +481,7 @@ public class ScheduledThreadPoolExecutor
public
ScheduledThreadPoolExecutor
(
int
corePoolSize
,
ThreadFactory
threadFactory
,
RejectedExecutionHandler
handler
)
{
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
TimeUnit
.
NANOSECONDS
,
super
(
corePoolSize
,
Integer
.
MAX_VALUE
,
0
,
NANOSECONDS
,
new
DelayedWorkQueue
(),
threadFactory
,
handler
);
}
...
...
@@ -508,7 +510,7 @@ public class ScheduledThreadPoolExecutor
private
long
overflowFree
(
long
delay
)
{
Delayed
head
=
(
Delayed
)
super
.
getQueue
().
peek
();
if
(
head
!=
null
)
{
long
headDelay
=
head
.
getDelay
(
TimeUnit
.
NANOSECONDS
);
long
headDelay
=
head
.
getDelay
(
NANOSECONDS
);
if
(
headDelay
<
0
&&
(
delay
-
headDelay
<
0
))
delay
=
Long
.
MAX_VALUE
+
headDelay
;
}
...
...
@@ -616,7 +618,7 @@ public class ScheduledThreadPoolExecutor
* @throws NullPointerException {@inheritDoc}
*/
public
void
execute
(
Runnable
command
)
{
schedule
(
command
,
0
,
TimeUnit
.
NANOSECONDS
);
schedule
(
command
,
0
,
NANOSECONDS
);
}
// Override AbstractExecutorService methods
...
...
@@ -626,7 +628,7 @@ public class ScheduledThreadPoolExecutor
* @throws NullPointerException {@inheritDoc}
*/
public
Future
<?>
submit
(
Runnable
task
)
{
return
schedule
(
task
,
0
,
TimeUnit
.
NANOSECONDS
);
return
schedule
(
task
,
0
,
NANOSECONDS
);
}
/**
...
...
@@ -634,8 +636,7 @@ public class ScheduledThreadPoolExecutor
* @throws NullPointerException {@inheritDoc}
*/
public
<
T
>
Future
<
T
>
submit
(
Runnable
task
,
T
result
)
{
return
schedule
(
Executors
.
callable
(
task
,
result
),
0
,
TimeUnit
.
NANOSECONDS
);
return
schedule
(
Executors
.
callable
(
task
,
result
),
0
,
NANOSECONDS
);
}
/**
...
...
@@ -643,7 +644,7 @@ public class ScheduledThreadPoolExecutor
* @throws NullPointerException {@inheritDoc}
*/
public
<
T
>
Future
<
T
>
submit
(
Callable
<
T
>
task
)
{
return
schedule
(
task
,
0
,
TimeUnit
.
NANOSECONDS
);
return
schedule
(
task
,
0
,
NANOSECONDS
);
}
/**
...
...
@@ -831,8 +832,8 @@ public class ScheduledThreadPoolExecutor
*/
private
static
final
int
INITIAL_CAPACITY
=
16
;
private
RunnableScheduledFuture
[]
queue
=
new
RunnableScheduledFuture
[
INITIAL_CAPACITY
];
private
RunnableScheduledFuture
<?>
[]
queue
=
new
RunnableScheduledFuture
<?>
[
INITIAL_CAPACITY
];
private
final
ReentrantLock
lock
=
new
ReentrantLock
();
private
int
size
=
0
;
...
...
@@ -863,7 +864,7 @@ public class ScheduledThreadPoolExecutor
/**
* Set f's heapIndex if it is a ScheduledFutureTask.
*/
private
void
setIndex
(
RunnableScheduledFuture
f
,
int
idx
)
{
private
void
setIndex
(
RunnableScheduledFuture
<?>
f
,
int
idx
)
{
if
(
f
instanceof
ScheduledFutureTask
)
((
ScheduledFutureTask
)
f
).
heapIndex
=
idx
;
}
...
...
@@ -872,10 +873,10 @@ public class ScheduledThreadPoolExecutor
* Sift element added at bottom up to its heap-ordered spot.
* Call only when holding lock.
*/
private
void
siftUp
(
int
k
,
RunnableScheduledFuture
key
)
{
private
void
siftUp
(
int
k
,
RunnableScheduledFuture
<?>
key
)
{
while
(
k
>
0
)
{
int
parent
=
(
k
-
1
)
>>>
1
;
RunnableScheduledFuture
e
=
queue
[
parent
];
RunnableScheduledFuture
<?>
e
=
queue
[
parent
];
if
(
key
.
compareTo
(
e
)
>=
0
)
break
;
queue
[
k
]
=
e
;
...
...
@@ -890,11 +891,11 @@ public class ScheduledThreadPoolExecutor
* Sift element added at top down to its heap-ordered spot.
* Call only when holding lock.
*/
private
void
siftDown
(
int
k
,
RunnableScheduledFuture
key
)
{
private
void
siftDown
(
int
k
,
RunnableScheduledFuture
<?>
key
)
{
int
half
=
size
>>>
1
;
while
(
k
<
half
)
{
int
child
=
(
k
<<
1
)
+
1
;
RunnableScheduledFuture
c
=
queue
[
child
];
RunnableScheduledFuture
<?>
c
=
queue
[
child
];
int
right
=
child
+
1
;
if
(
right
<
size
&&
c
.
compareTo
(
queue
[
right
])
>
0
)
c
=
queue
[
child
=
right
];
...
...
@@ -959,7 +960,7 @@ public class ScheduledThreadPoolExecutor
setIndex
(
queue
[
i
],
-
1
);
int
s
=
--
size
;
RunnableScheduledFuture
replacement
=
queue
[
s
];
RunnableScheduledFuture
<?>
replacement
=
queue
[
s
];
queue
[
s
]
=
null
;
if
(
s
!=
i
)
{
siftDown
(
i
,
replacement
);
...
...
@@ -990,7 +991,7 @@ public class ScheduledThreadPoolExecutor
return
Integer
.
MAX_VALUE
;
}
public
RunnableScheduledFuture
peek
()
{
public
RunnableScheduledFuture
<?>
peek
()
{
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lock
();
try
{
...
...
@@ -1003,7 +1004,7 @@ public class ScheduledThreadPoolExecutor
public
boolean
offer
(
Runnable
x
)
{
if
(
x
==
null
)
throw
new
NullPointerException
();
RunnableScheduledFuture
e
=
(
RunnableScheduledFuture
)
x
;
RunnableScheduledFuture
<?>
e
=
(
RunnableScheduledFuture
<?>
)
x
;
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lock
();
try
{
...
...
@@ -1045,9 +1046,9 @@ public class ScheduledThreadPoolExecutor
* holding lock.
* @param f the task to remove and return
*/
private
RunnableScheduledFuture
finishPoll
(
RunnableScheduledFuture
f
)
{
private
RunnableScheduledFuture
<?>
finishPoll
(
RunnableScheduledFuture
<?>
f
)
{
int
s
=
--
size
;
RunnableScheduledFuture
x
=
queue
[
s
];
RunnableScheduledFuture
<?>
x
=
queue
[
s
];
queue
[
s
]
=
null
;
if
(
s
!=
0
)
siftDown
(
0
,
x
);
...
...
@@ -1055,12 +1056,12 @@ public class ScheduledThreadPoolExecutor
return
f
;
}
public
RunnableScheduledFuture
poll
()
{
public
RunnableScheduledFuture
<?>
poll
()
{
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lock
();
try
{
RunnableScheduledFuture
first
=
queue
[
0
];
if
(
first
==
null
||
first
.
getDelay
(
TimeUnit
.
NANOSECONDS
)
>
0
)
RunnableScheduledFuture
<?>
first
=
queue
[
0
];
if
(
first
==
null
||
first
.
getDelay
(
NANOSECONDS
)
>
0
)
return
null
;
else
return
finishPoll
(
first
);
...
...
@@ -1069,16 +1070,16 @@ public class ScheduledThreadPoolExecutor
}
}
public
RunnableScheduledFuture
take
()
throws
InterruptedException
{
public
RunnableScheduledFuture
<?>
take
()
throws
InterruptedException
{
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lockInterruptibly
();
try
{
for
(;;)
{
RunnableScheduledFuture
first
=
queue
[
0
];
RunnableScheduledFuture
<?>
first
=
queue
[
0
];
if
(
first
==
null
)
available
.
await
();
else
{
long
delay
=
first
.
getDelay
(
TimeUnit
.
NANOSECONDS
);
long
delay
=
first
.
getDelay
(
NANOSECONDS
);
if
(
delay
<=
0
)
return
finishPoll
(
first
);
else
if
(
leader
!=
null
)
...
...
@@ -1102,21 +1103,21 @@ public class ScheduledThreadPoolExecutor
}
}
public
RunnableScheduledFuture
poll
(
long
timeout
,
TimeUnit
unit
)
public
RunnableScheduledFuture
<?>
poll
(
long
timeout
,
TimeUnit
unit
)
throws
InterruptedException
{
long
nanos
=
unit
.
toNanos
(
timeout
);
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lockInterruptibly
();
try
{
for
(;;)
{
RunnableScheduledFuture
first
=
queue
[
0
];
RunnableScheduledFuture
<?>
first
=
queue
[
0
];
if
(
first
==
null
)
{
if
(
nanos
<=
0
)
return
null
;
else
nanos
=
available
.
awaitNanos
(
nanos
);
}
else
{
long
delay
=
first
.
getDelay
(
TimeUnit
.
NANOSECONDS
);
long
delay
=
first
.
getDelay
(
NANOSECONDS
);
if
(
delay
<=
0
)
return
finishPoll
(
first
);
if
(
nanos
<=
0
)
...
...
@@ -1148,7 +1149,7 @@ public class ScheduledThreadPoolExecutor
lock
.
lock
();
try
{
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
RunnableScheduledFuture
t
=
queue
[
i
];
RunnableScheduledFuture
<?>
t
=
queue
[
i
];
if
(
t
!=
null
)
{
queue
[
i
]
=
null
;
setIndex
(
t
,
-
1
);
...
...
@@ -1164,9 +1165,10 @@ public class ScheduledThreadPoolExecutor
* Return and remove first element only if it is expired.
* Used only by drainTo. Call only when holding lock.
*/
private
RunnableScheduledFuture
pollExpired
()
{
RunnableScheduledFuture
first
=
queue
[
0
];
if
(
first
==
null
||
first
.
getDelay
(
TimeUnit
.
NANOSECONDS
)
>
0
)
private
RunnableScheduledFuture
<?>
pollExpired
()
{
// assert lock.isHeldByCurrentThread();
RunnableScheduledFuture
<?>
first
=
queue
[
0
];
if
(
first
==
null
||
first
.
getDelay
(
NANOSECONDS
)
>
0
)
return
null
;
return
finishPoll
(
first
);
}
...
...
@@ -1179,7 +1181,7 @@ public class ScheduledThreadPoolExecutor
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lock
();
try
{
RunnableScheduledFuture
first
;
RunnableScheduledFuture
<?>
first
;
int
n
=
0
;
while
((
first
=
pollExpired
())
!=
null
)
{
c
.
add
(
first
);
...
...
@@ -1201,7 +1203,7 @@ public class ScheduledThreadPoolExecutor
final
ReentrantLock
lock
=
this
.
lock
;
lock
.
lock
();
try
{
RunnableScheduledFuture
first
;
RunnableScheduledFuture
<?>
first
;
int
n
=
0
;
while
(
n
<
maxElements
&&
(
first
=
pollExpired
())
!=
null
)
{
c
.
add
(
first
);
...
...
src/share/classes/java/util/concurrent/SynchronousQueue.java
浏览文件 @
14082957
...
...
@@ -36,7 +36,6 @@
package
java.util.concurrent
;
import
java.util.concurrent.locks.*
;
import
java.util.concurrent.atomic.*
;
import
java.util.*
;
/**
...
...
@@ -163,7 +162,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
/**
* Shared internal API for dual stacks and queues.
*/
abstract
static
class
Transferer
{
abstract
static
class
Transferer
<
E
>
{
/**
* Performs a put or take.
*
...
...
@@ -177,7 +176,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* the caller can distinguish which of these occurred
* by checking Thread.interrupted.
*/
abstract
Object
transfer
(
Object
e
,
boolean
timed
,
long
nanos
);
abstract
E
transfer
(
E
e
,
boolean
timed
,
long
nanos
);
}
/** The number of CPUs, for spin control */
...
...
@@ -206,7 +205,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
static
final
long
spinForTimeoutThreshold
=
1000L
;
/** Dual stack */
static
final
class
TransferStack
extends
Transferer
{
static
final
class
TransferStack
<
E
>
extends
Transferer
<
E
>
{
/*
* This extends Scherer-Scott dual stack algorithm, differing,
* among other ways, by using "covering" nodes rather than
...
...
@@ -286,7 +285,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
SNode
.
class
;
Class
<?>
k
=
SNode
.
class
;
matchOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"match"
));
nextOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -322,7 +321,8 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
/**
* Puts or takes an item.
*/
Object
transfer
(
Object
e
,
boolean
timed
,
long
nanos
)
{
@SuppressWarnings
(
"unchecked"
)
E
transfer
(
E
e
,
boolean
timed
,
long
nanos
)
{
/*
* Basic algorithm is to loop trying one of three actions:
*
...
...
@@ -363,7 +363,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
}
if
((
h
=
head
)
!=
null
&&
h
.
next
==
s
)
casHead
(
h
,
s
.
next
);
// help s's fulfiller
return
(
mode
==
REQUEST
)
?
m
.
item
:
s
.
item
;
return
(
E
)
((
mode
==
REQUEST
)
?
m
.
item
:
s
.
item
)
;
}
}
else
if
(!
isFulfilling
(
h
.
mode
))
{
// try to fulfill
if
(
h
.
isCancelled
())
// already cancelled
...
...
@@ -379,7 +379,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
SNode
mn
=
m
.
next
;
if
(
m
.
tryMatch
(
s
))
{
casHead
(
s
,
mn
);
// pop both s and m
return
(
mode
==
REQUEST
)
?
m
.
item
:
s
.
item
;
return
(
E
)
((
mode
==
REQUEST
)
?
m
.
item
:
s
.
item
)
;
}
else
// lost match
s
.
casNext
(
m
,
mn
);
// help unlink
}
...
...
@@ -513,7 +513,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
TransferStack
.
class
;
Class
<?>
k
=
TransferStack
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
}
catch
(
Exception
e
)
{
...
...
@@ -523,7 +523,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
}
/** Dual Queue */
static
final
class
TransferQueue
extends
Transferer
{
static
final
class
TransferQueue
<
E
>
extends
Transferer
<
E
>
{
/*
* This extends Scherer-Scott dual queue algorithm, differing,
* among other ways, by using modes within nodes rather than
...
...
@@ -583,7 +583,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
QNode
.
class
;
Class
<?>
k
=
QNode
.
class
;
itemOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"item"
));
nextOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -640,7 +640,8 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
/**
* Puts or takes an item.
*/
Object
transfer
(
Object
e
,
boolean
timed
,
long
nanos
)
{
@SuppressWarnings
(
"unchecked"
)
E
transfer
(
E
e
,
boolean
timed
,
long
nanos
)
{
/* Basic algorithm is to loop trying to take either of
* two actions:
*
...
...
@@ -703,7 +704,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
s
.
item
=
s
;
s
.
waiter
=
null
;
}
return
(
x
!=
null
)
?
x
:
e
;
return
(
x
!=
null
)
?
(
E
)
x
:
e
;
}
else
{
// complementary-mode
QNode
m
=
h
.
next
;
// node to fulfill
...
...
@@ -720,7 +721,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
advanceHead
(
h
,
m
);
// successfully fulfilled
LockSupport
.
unpark
(
m
.
waiter
);
return
(
x
!=
null
)
?
x
:
e
;
return
(
x
!=
null
)
?
(
E
)
x
:
e
;
}
}
}
...
...
@@ -734,7 +735,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* @param nanos timeout value
* @return matched item, or s if cancelled
*/
Object
awaitFulfill
(
QNode
s
,
Object
e
,
boolean
timed
,
long
nanos
)
{
Object
awaitFulfill
(
QNode
s
,
E
e
,
boolean
timed
,
long
nanos
)
{
/* Same idea as TransferStack.awaitFulfill */
long
lastTime
=
timed
?
System
.
nanoTime
()
:
0
;
Thread
w
=
Thread
.
currentThread
();
...
...
@@ -827,7 +828,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
static
{
try
{
UNSAFE
=
sun
.
misc
.
Unsafe
.
getUnsafe
();
Class
k
=
TransferQueue
.
class
;
Class
<?>
k
=
TransferQueue
.
class
;
headOffset
=
UNSAFE
.
objectFieldOffset
(
k
.
getDeclaredField
(
"head"
));
tailOffset
=
UNSAFE
.
objectFieldOffset
...
...
@@ -847,7 +848,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* isn't a noticeable performance penalty for using volatile
* instead of final here.
*/
private
transient
volatile
Transferer
transferer
;
private
transient
volatile
Transferer
<
E
>
transferer
;
/**
* Creates a <tt>SynchronousQueue</tt> with nonfair access policy.
...
...
@@ -863,7 +864,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* access; otherwise the order is unspecified.
*/
public
SynchronousQueue
(
boolean
fair
)
{
transferer
=
fair
?
new
TransferQueue
()
:
new
TransferStack
();
transferer
=
fair
?
new
TransferQueue
<
E
>()
:
new
TransferStack
<
E
>
();
}
/**
...
...
@@ -922,9 +923,9 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* @throws InterruptedException {@inheritDoc}
*/
public
E
take
()
throws
InterruptedException
{
Object
e
=
transferer
.
transfer
(
null
,
false
,
0
);
E
e
=
transferer
.
transfer
(
null
,
false
,
0
);
if
(
e
!=
null
)
return
(
E
)
e
;
return
e
;
Thread
.
interrupted
();
throw
new
InterruptedException
();
}
...
...
@@ -939,9 +940,9 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* @throws InterruptedException {@inheritDoc}
*/
public
E
poll
(
long
timeout
,
TimeUnit
unit
)
throws
InterruptedException
{
Object
e
=
transferer
.
transfer
(
null
,
true
,
unit
.
toNanos
(
timeout
));
E
e
=
transferer
.
transfer
(
null
,
true
,
unit
.
toNanos
(
timeout
));
if
(
e
!=
null
||
!
Thread
.
interrupted
())
return
(
E
)
e
;
return
e
;
throw
new
InterruptedException
();
}
...
...
@@ -953,7 +954,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* element is available.
*/
public
E
poll
()
{
return
(
E
)
transferer
.
transfer
(
null
,
true
,
0
);
return
transferer
.
transfer
(
null
,
true
,
0
);
}
/**
...
...
@@ -1065,8 +1066,19 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
*
* @return an empty iterator
*/
@SuppressWarnings
(
"unchecked"
)
public
Iterator
<
E
>
iterator
()
{
return
Collections
.
emptyIterator
();
return
(
Iterator
<
E
>)
EmptyIterator
.
EMPTY_ITERATOR
;
}
// Replicated from a previous version of Collections
private
static
class
EmptyIterator
<
E
>
implements
Iterator
<
E
>
{
static
final
EmptyIterator
<
Object
>
EMPTY_ITERATOR
=
new
EmptyIterator
<
Object
>();
public
boolean
hasNext
()
{
return
false
;
}
public
E
next
()
{
throw
new
NoSuchElementException
();
}
public
void
remove
()
{
throw
new
IllegalStateException
();
}
}
/**
...
...
@@ -1103,8 +1115,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
if
(
c
==
this
)
throw
new
IllegalArgumentException
();
int
n
=
0
;
E
e
;
while
(
(
e
=
poll
())
!=
null
)
{
for
(
E
e
;
(
e
=
poll
())
!=
null
;)
{
c
.
add
(
e
);
++
n
;
}
...
...
@@ -1123,8 +1134,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
if
(
c
==
this
)
throw
new
IllegalArgumentException
();
int
n
=
0
;
E
e
;
while
(
n
<
maxElements
&&
(
e
=
poll
())
!=
null
)
{
for
(
E
e
;
n
<
maxElements
&&
(
e
=
poll
())
!=
null
;)
{
c
.
add
(
e
);
++
n
;
}
...
...
@@ -1139,6 +1149,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
* object is ever serialized or deserialized.
*/
@SuppressWarnings
(
"serial"
)
static
class
WaitQueue
implements
java
.
io
.
Serializable
{
}
static
class
LifoWaitQueue
extends
WaitQueue
{
private
static
final
long
serialVersionUID
=
-
3633113410248163686L
;
...
...
@@ -1151,7 +1162,7 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
private
WaitQueue
waitingConsumers
;
/**
* Save
the state to a stream (that is, serialize
it).
* Save
s the state to a stream (that is, serializes
it).
*
* @param s the stream
*/
...
...
@@ -1175,9 +1186,9 @@ public class SynchronousQueue<E> extends AbstractQueue<E>
throws
java
.
io
.
IOException
,
ClassNotFoundException
{
s
.
defaultReadObject
();
if
(
waitingProducers
instanceof
FifoWaitQueue
)
transferer
=
new
TransferQueue
();
transferer
=
new
TransferQueue
<
E
>
();
else
transferer
=
new
TransferStack
();
transferer
=
new
TransferStack
<
E
>
();
}
// Unsafe mechanics
...
...
src/share/classes/java/util/jar/JarFile.java
浏览文件 @
14082957
...
...
@@ -183,7 +183,7 @@ class JarFile extends ZipFile {
}
else
{
man
=
new
Manifest
(
super
.
getInputStream
(
manEntry
));
}
manRef
=
new
SoftReference
(
man
);
manRef
=
new
SoftReference
<>
(
man
);
}
}
return
man
;
...
...
@@ -233,13 +233,13 @@ class JarFile extends ZipFile {
* Returns an enumeration of the zip file entries.
*/
public
Enumeration
<
JarEntry
>
entries
()
{
final
Enumeration
enum_
=
super
.
entries
();
final
Enumeration
<?
extends
ZipEntry
>
enum_
=
super
.
entries
();
return
new
Enumeration
<
JarEntry
>()
{
public
boolean
hasMoreElements
()
{
return
enum_
.
hasMoreElements
();
}
public
JarFileEntry
nextElement
()
{
ZipEntry
ze
=
(
ZipEntry
)
enum_
.
nextElement
();
ZipEntry
ze
=
enum_
.
nextElement
();
return
new
JarFileEntry
(
ze
);
}
};
...
...
@@ -608,7 +608,7 @@ class JarFile extends ZipFile {
}
// screen out entries which are never signed
final
Enumeration
enum_
=
super
.
entries
();
final
Enumeration
<?
extends
ZipEntry
>
enum_
=
super
.
entries
();
return
new
Enumeration
<
JarEntry
>()
{
ZipEntry
entry
;
...
...
@@ -618,7 +618,7 @@ class JarFile extends ZipFile {
return
true
;
}
while
(
enum_
.
hasMoreElements
())
{
ZipEntry
ze
=
(
ZipEntry
)
enum_
.
nextElement
();
ZipEntry
ze
=
enum_
.
nextElement
();
if
(
JarVerifier
.
isSigningRelated
(
ze
.
getName
()))
{
continue
;
}
...
...
@@ -649,7 +649,7 @@ class JarFile extends ZipFile {
* JAR file has no signed content. Is there a non-signing
* code source?
*/
Enumeration
unsigned
=
unsignedEntryNames
();
Enumeration
<
String
>
unsigned
=
unsignedEntryNames
();
if
(
unsigned
.
hasMoreElements
())
{
return
new
CodeSource
[]{
JarVerifier
.
getUnsignedCS
(
url
)};
}
else
{
...
...
@@ -658,7 +658,7 @@ class JarFile extends ZipFile {
}
private
Enumeration
<
String
>
unsignedEntryNames
()
{
final
Enumeration
entries
=
entries
();
final
Enumeration
<
JarEntry
>
entries
=
entries
();
return
new
Enumeration
<
String
>()
{
String
name
;
...
...
@@ -673,7 +673,7 @@ class JarFile extends ZipFile {
}
while
(
entries
.
hasMoreElements
())
{
String
value
;
ZipEntry
e
=
(
ZipEntry
)
entries
.
nextElement
();
ZipEntry
e
=
entries
.
nextElement
();
value
=
e
.
getName
();
if
(
e
.
isDirectory
()
||
JarVerifier
.
isSigningRelated
(
value
))
{
continue
;
...
...
@@ -726,11 +726,11 @@ class JarFile extends ZipFile {
}
}
List
getManifestDigests
()
{
List
<
Object
>
getManifestDigests
()
{
ensureInitialization
();
if
(
jv
!=
null
)
{
return
jv
.
getManifestDigests
();
}
return
new
ArrayList
();
return
new
ArrayList
<
Object
>
();
}
}
src/share/classes/java/util/jar/Manifest.java
浏览文件 @
14082957
...
...
@@ -51,7 +51,7 @@ public class Manifest implements Cloneable {
private
Attributes
attr
=
new
Attributes
();
// manifest entries
private
Map
entries
=
new
HashMap
();
private
Map
<
String
,
Attributes
>
entries
=
new
HashMap
<>
();
/**
* Constructs a new, empty Manifest.
...
...
@@ -148,11 +148,11 @@ public class Manifest implements Cloneable {
// Write out the main attributes for the manifest
attr
.
writeMain
(
dos
);
// Now write out the pre-entry attributes
Iterator
it
=
entries
.
entrySet
().
iterator
();
Iterator
<
Map
.
Entry
<
String
,
Attributes
>>
it
=
entries
.
entrySet
().
iterator
();
while
(
it
.
hasNext
())
{
Map
.
Entry
e
=
(
Map
.
Entry
)
it
.
next
();
Map
.
Entry
<
String
,
Attributes
>
e
=
it
.
next
();
StringBuffer
buffer
=
new
StringBuffer
(
"Name: "
);
String
value
=
(
String
)
e
.
getKey
();
String
value
=
e
.
getKey
();
if
(
value
!=
null
)
{
byte
[]
vb
=
value
.
getBytes
(
"UTF8"
);
value
=
new
String
(
vb
,
0
,
0
,
vb
.
length
);
...
...
@@ -161,7 +161,7 @@ public class Manifest implements Cloneable {
buffer
.
append
(
"\r\n"
);
make72Safe
(
buffer
);
dos
.
writeBytes
(
buffer
.
toString
());
((
Attributes
)
e
.
getValue
()
).
write
(
dos
);
e
.
getValue
(
).
write
(
dos
);
}
dos
.
flush
();
}
...
...
src/share/classes/java/util/logging/LogManager.java
浏览文件 @
14082957
...
...
@@ -179,10 +179,10 @@ public class LogManager {
cname
=
System
.
getProperty
(
"java.util.logging.manager"
);
if
(
cname
!=
null
)
{
try
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
cname
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
cname
);
manager
=
(
LogManager
)
clz
.
newInstance
();
}
catch
(
ClassNotFoundException
ex
)
{
Class
clz
=
Thread
.
currentThread
().
getContextClassLoader
().
loadClass
(
cname
);
Class
<?>
clz
=
Thread
.
currentThread
().
getContextClassLoader
().
loadClass
(
cname
);
manager
=
(
LogManager
)
clz
.
newInstance
();
}
}
...
...
@@ -200,8 +200,8 @@ public class LogManager {
// Adding the global Logger. Doing so in the Logger.<clinit>
// would deadlock with the LogManager.<clinit>.
Logger
.
g
lobal
.
setLogManager
(
manager
);
manager
.
addLogger
(
Logger
.
g
lobal
);
Logger
.
g
etGlobal
()
.
setLogManager
(
manager
);
manager
.
addLogger
(
Logger
.
g
etGlobal
()
);
// We don't call readConfiguration() here, as we may be running
// very early in the JVM startup sequence. Instead readConfiguration
...
...
@@ -415,7 +415,7 @@ public class LogManager {
for
(
int
i
=
0
;
i
<
names
.
length
;
i
++)
{
String
word
=
names
[
i
];
try
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
word
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
word
);
Handler
hdl
=
(
Handler
)
clz
.
newInstance
();
try
{
// Check if there is a property defining the
...
...
@@ -782,11 +782,11 @@ public class LogManager {
// responsibility to initialize the logging configuration, by
// calling readConfiguration(InputStream) with a suitable stream.
try
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
cname
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
cname
);
clz
.
newInstance
();
return
;
}
catch
(
ClassNotFoundException
ex
)
{
Class
clz
=
Thread
.
currentThread
().
getContextClassLoader
().
loadClass
(
cname
);
Class
<?>
clz
=
Thread
.
currentThread
().
getContextClassLoader
().
loadClass
(
cname
);
clz
.
newInstance
();
return
;
}
...
...
@@ -837,9 +837,9 @@ public class LogManager {
// the global handlers, if they haven't been initialized yet.
initializedGlobalHandlers
=
true
;
}
Enumeration
enum_
=
getLoggerNames
();
Enumeration
<
String
>
enum_
=
getLoggerNames
();
while
(
enum_
.
hasMoreElements
())
{
String
name
=
(
String
)
enum_
.
nextElement
();
String
name
=
enum_
.
nextElement
();
resetLogger
(
name
);
}
}
...
...
@@ -926,7 +926,7 @@ public class LogManager {
for
(
int
i
=
0
;
i
<
names
.
length
;
i
++)
{
String
word
=
names
[
i
];
try
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
word
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
word
);
clz
.
newInstance
();
}
catch
(
Exception
ex
)
{
System
.
err
.
println
(
"Can't load config class \""
+
word
+
"\""
);
...
...
@@ -1024,7 +1024,7 @@ public class LogManager {
String
val
=
getProperty
(
name
);
try
{
if
(
val
!=
null
)
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
val
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
val
);
return
(
Filter
)
clz
.
newInstance
();
}
}
catch
(
Exception
ex
)
{
...
...
@@ -1045,7 +1045,7 @@ public class LogManager {
String
val
=
getProperty
(
name
);
try
{
if
(
val
!=
null
)
{
Class
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
val
);
Class
<?>
clz
=
ClassLoader
.
getSystemClassLoader
().
loadClass
(
val
);
return
(
Formatter
)
clz
.
newInstance
();
}
}
catch
(
Exception
ex
)
{
...
...
@@ -1163,7 +1163,7 @@ public class LogManager {
// Private method to be called when the configuration has
// changed to apply any level settings to any pre-existing loggers.
synchronized
private
void
setLevelsOnExistingLoggers
()
{
Enumeration
enum_
=
props
.
propertyNames
();
Enumeration
<?>
enum_
=
props
.
propertyNames
();
while
(
enum_
.
hasMoreElements
())
{
String
key
=
(
String
)
enum_
.
nextElement
();
if
(!
key
.
endsWith
(
".level"
))
{
...
...
src/share/classes/java/util/prefs/Preferences.java
浏览文件 @
14082957
...
...
@@ -413,7 +413,7 @@ public abstract class Preferences {
* @throws IllegalArgumentException if the package has node preferences
* node associated with it.
*/
private
static
String
nodeName
(
Class
c
)
{
private
static
String
nodeName
(
Class
<?>
c
)
{
if
(
c
.
isArray
())
throw
new
IllegalArgumentException
(
"Arrays have no associated preferences node."
);
...
...
src/share/classes/java/util/prefs/XmlSupport.java
浏览文件 @
14082957
...
...
@@ -106,7 +106,7 @@ class XmlSupport {
xmlRoot
.
setAttribute
(
"type"
,
(
p
.
isUserNode
()
?
"user"
:
"system"
));
// Get bottom-up list of nodes from p to root, excluding root
List
ancestors
=
new
ArrayList
();
List
<
Preferences
>
ancestors
=
new
ArrayList
<>
();
for
(
Preferences
kid
=
p
,
dad
=
kid
.
parent
();
dad
!=
null
;
kid
=
dad
,
dad
=
kid
.
parent
())
{
...
...
@@ -116,7 +116,7 @@ class XmlSupport {
for
(
int
i
=
ancestors
.
size
()-
1
;
i
>=
0
;
i
--)
{
e
.
appendChild
(
doc
.
createElement
(
"map"
));
e
=
(
Element
)
e
.
appendChild
(
doc
.
createElement
(
"node"
));
e
.
setAttribute
(
"name"
,
((
Preferences
)
ancestors
.
get
(
i
)
).
name
());
e
.
setAttribute
(
"name"
,
ancestors
.
get
(
i
).
name
());
}
putPreferencesInXml
(
e
,
doc
,
p
,
subTree
);
...
...
@@ -339,17 +339,17 @@ class XmlSupport {
* @throws IOException if writing to the specified output stream
* results in an <tt>IOException</tt>.
*/
static
void
exportMap
(
OutputStream
os
,
Map
map
)
throws
IOException
{
static
void
exportMap
(
OutputStream
os
,
Map
<
String
,
String
>
map
)
throws
IOException
{
Document
doc
=
createPrefsDoc
(
"map"
);
Element
xmlMap
=
doc
.
getDocumentElement
(
)
;
xmlMap
.
setAttribute
(
"MAP_XML_VERSION"
,
MAP_XML_VERSION
);
for
(
Iterator
i
=
map
.
entrySet
().
iterator
();
i
.
hasNext
();
)
{
Map
.
Entry
e
=
(
Map
.
Entry
)
i
.
next
();
for
(
Iterator
<
Map
.
Entry
<
String
,
String
>>
i
=
map
.
entrySet
().
iterator
();
i
.
hasNext
();
)
{
Map
.
Entry
<
String
,
String
>
e
=
i
.
next
();
Element
xe
=
(
Element
)
xmlMap
.
appendChild
(
doc
.
createElement
(
"entry"
));
xe
.
setAttribute
(
"key"
,
(
String
)
e
.
getKey
());
xe
.
setAttribute
(
"value"
,
(
String
)
e
.
getValue
());
xe
.
setAttribute
(
"key"
,
e
.
getKey
());
xe
.
setAttribute
(
"value"
,
e
.
getValue
());
}
writeDoc
(
doc
,
os
);
...
...
@@ -368,7 +368,7 @@ class XmlSupport {
* @throws InvalidPreferencesFormatException Data on input stream does not
* constitute a valid XML document with the mandated document type.
*/
static
void
importMap
(
InputStream
is
,
Map
m
)
static
void
importMap
(
InputStream
is
,
Map
<
String
,
String
>
m
)
throws
IOException
,
InvalidPreferencesFormatException
{
try
{
...
...
src/share/classes/java/util/regex/Pattern.java
浏览文件 @
14082957
...
...
@@ -1583,13 +1583,26 @@ loop: for(int x=0, offset=0; x<nCodePoints; x++, offset+=len) {
return
;
int
j
=
i
;
i
+=
2
;
int
[]
newtemp
=
new
int
[
j
+
2
*(
pLen
-
i
)
+
2
];
int
[]
newtemp
=
new
int
[
j
+
3
*(
pLen
-
i
)
+
2
];
System
.
arraycopy
(
temp
,
0
,
newtemp
,
0
,
j
);
boolean
inQuote
=
true
;
boolean
beginQuote
=
true
;
while
(
i
<
pLen
)
{
int
c
=
temp
[
i
++];
if
(!
ASCII
.
isAscii
(
c
)
||
ASCII
.
isAlnum
(
c
))
{
if
(!
ASCII
.
isAscii
(
c
)
||
ASCII
.
isAlpha
(
c
))
{
newtemp
[
j
++]
=
c
;
}
else
if
(
ASCII
.
isDigit
(
c
))
{
if
(
beginQuote
)
{
/*
* A unicode escape \[0xu] could be before this quote,
* and we don't want this numeric char to processed as
* part of the escape.
*/
newtemp
[
j
++]
=
'\\'
;
newtemp
[
j
++]
=
'x'
;
newtemp
[
j
++]
=
'3'
;
}
newtemp
[
j
++]
=
c
;
}
else
if
(
c
!=
'\\'
)
{
if
(
inQuote
)
newtemp
[
j
++]
=
'\\'
;
...
...
@@ -1606,12 +1619,16 @@ loop: for(int x=0, offset=0; x<nCodePoints; x++, offset+=len) {
if
(
temp
[
i
]
==
'Q'
)
{
i
++;
inQuote
=
true
;
beginQuote
=
true
;
continue
;
}
else
{
newtemp
[
j
++]
=
c
;
if
(
i
!=
pLen
)
newtemp
[
j
++]
=
temp
[
i
++];
}
}
beginQuote
=
false
;
}
patternLength
=
j
;
...
...
src/share/classes/java/util/zip/ZipEntry.java
浏览文件 @
14082957
...
...
@@ -281,6 +281,7 @@ class ZipEntry implements ZipConstants, Cloneable {
* Converts DOS time to Java time (number of milliseconds since epoch).
*/
private
static
long
dosToJavaTime
(
long
dtime
)
{
@SuppressWarnings
(
"deprecation"
)
// Use of date constructor.
Date
d
=
new
Date
((
int
)(((
dtime
>>
25
)
&
0x7f
)
+
80
),
(
int
)(((
dtime
>>
21
)
&
0x0f
)
-
1
),
(
int
)((
dtime
>>
16
)
&
0x1f
),
...
...
@@ -293,6 +294,7 @@ class ZipEntry implements ZipConstants, Cloneable {
/*
* Converts Java time to DOS time.
*/
@SuppressWarnings
(
"deprecation"
)
// Use of date methods
private
static
long
javaToDosTime
(
long
time
)
{
Date
d
=
new
Date
(
time
);
int
year
=
d
.
getYear
()
+
1900
;
...
...
src/share/classes/javax/script/ScriptException.java
浏览文件 @
14082957
...
...
@@ -36,6 +36,8 @@ package javax.script;
*/
public
class
ScriptException
extends
Exception
{
private
static
final
long
serialVersionUID
=
8265071037049225001L
;
private
String
fileName
;
private
int
lineNumber
;
private
int
columnNumber
;
...
...
src/share/classes/javax/xml/crypto/NodeSetData.java
浏览文件 @
14082957
...
...
@@ -52,5 +52,6 @@ public interface NodeSetData extends Data {
* @return an <code>Iterator</code> over the nodes in this
* <code>NodeSetData</code> in document order
*/
@SuppressWarnings
(
"rawtypes"
)
Iterator
iterator
();
}
src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java
浏览文件 @
14082957
...
...
@@ -47,13 +47,13 @@ import org.w3c.dom.Element;
*/
public
class
DOMCryptoContext
implements
XMLCryptoContext
{
private
HashMap
nsMap
=
new
HashMap
();
private
HashMap
idMap
=
new
HashMap
();
private
HashMap
objMap
=
new
HashMap
();
private
HashMap
<
String
,
String
>
nsMap
=
new
HashMap
<>
();
private
HashMap
<
String
,
Element
>
idMap
=
new
HashMap
<>
();
private
HashMap
<
Object
,
Object
>
objMap
=
new
HashMap
<>
();
private
String
baseURI
;
private
KeySelector
ks
;
private
URIDereferencer
dereferencer
;
private
HashMap
propMap
=
new
HashMap
();
private
HashMap
<
String
,
Object
>
propMap
=
new
HashMap
<>
();
private
String
defaultPrefix
;
/**
...
...
@@ -73,7 +73,7 @@ public class DOMCryptoContext implements XMLCryptoContext {
if
(
namespaceURI
==
null
)
{
throw
new
NullPointerException
(
"namespaceURI cannot be null"
);
}
String
prefix
=
(
String
)
nsMap
.
get
(
namespaceURI
);
String
prefix
=
nsMap
.
get
(
namespaceURI
);
return
(
prefix
!=
null
?
prefix
:
defaultPrefix
);
}
...
...
@@ -87,7 +87,7 @@ public class DOMCryptoContext implements XMLCryptoContext {
if
(
namespaceURI
==
null
)
{
throw
new
NullPointerException
(
"namespaceURI is null"
);
}
return
(
String
)
nsMap
.
put
(
namespaceURI
,
prefix
);
return
nsMap
.
put
(
namespaceURI
,
prefix
);
}
public
String
getDefaultNamespacePrefix
()
{
...
...
@@ -170,7 +170,7 @@ public class DOMCryptoContext implements XMLCryptoContext {
if
(
idValue
==
null
)
{
throw
new
NullPointerException
(
"idValue is null"
);
}
return
(
Element
)
idMap
.
get
(
idValue
);
return
idMap
.
get
(
idValue
);
}
/**
...
...
@@ -219,6 +219,7 @@ public class DOMCryptoContext implements XMLCryptoContext {
*
* @return a read-only iterator over the set of mappings
*/
@SuppressWarnings
(
"rawtypes"
)
public
Iterator
iterator
()
{
return
Collections
.
unmodifiableMap
(
idMap
).
entrySet
().
iterator
();
}
...
...
src/share/classes/javax/xml/crypto/dsig/Manifest.java
浏览文件 @
14082957
...
...
@@ -86,5 +86,6 @@ public interface Manifest extends XMLStructure {
*
* @return an unmodifiable list of one or more <code>Reference</code>s
*/
@SuppressWarnings
(
"rawtypes"
)
List
getReferences
();
}
src/share/classes/javax/xml/crypto/dsig/Reference.java
浏览文件 @
14082957
...
...
@@ -85,6 +85,7 @@ public interface Reference extends URIReference, XMLStructure {
* @return an unmodifiable list of <code>Transform</code>s
* (may be empty but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
List
getTransforms
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/SignatureProperties.java
浏览文件 @
14082957
...
...
@@ -87,5 +87,6 @@ public interface SignatureProperties extends XMLStructure {
* @return an unmodifiable list of one or more
* <code>SignatureProperty</code>s
*/
@SuppressWarnings
(
"rawtypes"
)
List
getProperties
();
}
src/share/classes/javax/xml/crypto/dsig/SignatureProperty.java
浏览文件 @
14082957
...
...
@@ -91,5 +91,6 @@ public interface SignatureProperty extends XMLStructure {
*
* @return an unmodifiable list of one or more <code>XMLStructure</code>s
*/
@SuppressWarnings
(
"rawtypes"
)
List
getContent
();
}
src/share/classes/javax/xml/crypto/dsig/SignedInfo.java
浏览文件 @
14082957
...
...
@@ -80,6 +80,7 @@ public interface SignedInfo extends XMLStructure {
*
* @return an unmodifiable list of one or more {@link Reference}s
*/
@SuppressWarnings
(
"rawtypes"
)
List
getReferences
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/TransformService.java
浏览文件 @
14082957
...
...
@@ -157,9 +157,9 @@ public abstract class TransformService implements Transform {
if
(
mechanismType
.
equals
(
"DOM"
))
{
dom
=
true
;
}
List
services
=
GetInstance
.
getServices
(
"TransformService"
,
algorithm
);
for
(
Iterator
t
=
services
.
iterator
();
t
.
hasNext
();
)
{
Service
s
=
(
Service
)
t
.
next
();
List
<
Service
>
services
=
GetInstance
.
getServices
(
"TransformService"
,
algorithm
);
for
(
Iterator
<
Service
>
t
=
services
.
iterator
();
t
.
hasNext
();
)
{
Service
s
=
t
.
next
();
String
value
=
s
.
getAttribute
(
"MechanismType"
);
if
((
value
==
null
&&
dom
)
||
(
value
!=
null
&&
value
.
equals
(
mechanismType
)))
{
...
...
@@ -277,7 +277,7 @@ public abstract class TransformService implements Transform {
+
" mechanism not available"
);
}
private
static
class
MechanismMapEntry
implements
Map
.
Entry
{
private
static
class
MechanismMapEntry
implements
Map
.
Entry
<
String
,
String
>
{
private
final
String
mechanism
;
private
final
String
algorithm
;
private
final
String
key
;
...
...
@@ -290,19 +290,19 @@ public abstract class TransformService implements Transform {
if
(!(
o
instanceof
Map
.
Entry
))
{
return
false
;
}
Map
.
Entry
e
=
(
Map
.
Entry
)
o
;
Map
.
Entry
<?,?>
e
=
(
Map
.
Entry
<?,?>
)
o
;
return
(
getKey
()==
null
?
e
.
getKey
()==
null
:
getKey
().
equals
(
e
.
getKey
()))
&&
(
getValue
()==
null
?
e
.
getValue
()==
null
:
getValue
().
equals
(
e
.
getValue
()));
}
public
Object
getKey
()
{
public
String
getKey
()
{
return
key
;
}
public
Object
getValue
()
{
public
String
getValue
()
{
return
mechanism
;
}
public
Object
setValue
(
Object
value
)
{
public
String
setValue
(
String
value
)
{
throw
new
UnsupportedOperationException
();
}
public
int
hashCode
()
{
...
...
src/share/classes/javax/xml/crypto/dsig/XMLObject.java
浏览文件 @
14082957
...
...
@@ -100,6 +100,7 @@ public interface XMLObject extends XMLStructure {
* @return an unmodifiable list of <code>XMLStructure</code>s (may be empty
* but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
List
getContent
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/XMLSignature.java
浏览文件 @
14082957
...
...
@@ -136,6 +136,7 @@ public interface XMLSignature extends XMLStructure {
* @return an unmodifiable list of <code>XMLObject</code>s (may be empty
* but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
List
getObjects
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java
浏览文件 @
14082957
...
...
@@ -365,6 +365,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if any of the <code>objects</code> are not of
* type <code>XMLObject</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
XMLSignature
newXMLSignature
(
SignedInfo
si
,
KeyInfo
ki
,
List
objects
,
String
id
,
String
signatureValueId
);
...
...
@@ -398,6 +399,7 @@ public abstract class XMLSignatureFactory {
* compliant
* @throws NullPointerException if <code>dm</code> is <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
Reference
newReference
(
String
uri
,
DigestMethod
dm
,
List
transforms
,
String
type
,
String
id
);
...
...
@@ -428,6 +430,7 @@ public abstract class XMLSignatureFactory {
* @throws NullPointerException if <code>dm</code> or
* <code>digestValue</code> is <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
Reference
newReference
(
String
uri
,
DigestMethod
dm
,
List
transforms
,
String
type
,
String
id
,
byte
[]
digestValue
);
...
...
@@ -470,6 +473,7 @@ public abstract class XMLSignatureFactory {
* <code>appliedTransforms</code> or <code>result</code> is
* <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
Reference
newReference
(
String
uri
,
DigestMethod
dm
,
List
appliedTransforms
,
Data
result
,
List
transforms
,
String
type
,
String
id
);
...
...
@@ -489,6 +493,7 @@ public abstract class XMLSignatureFactory {
* @throws NullPointerException if any of the parameters
* are <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
SignedInfo
newSignedInfo
(
CanonicalizationMethod
cm
,
SignatureMethod
sm
,
List
references
);
...
...
@@ -507,6 +512,7 @@ public abstract class XMLSignatureFactory {
* @throws NullPointerException if <code>cm</code>, <code>sm</code>, or
* <code>references</code> are <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
SignedInfo
newSignedInfo
(
CanonicalizationMethod
cm
,
SignatureMethod
sm
,
List
references
,
String
id
);
...
...
@@ -524,6 +530,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if <code>content</code> contains any
* entries that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
XMLObject
newXMLObject
(
List
content
,
String
id
,
String
mimeType
,
String
encoding
);
...
...
@@ -540,6 +547,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if <code>references</code> contains any
* entries that are not of type {@link Reference}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
Manifest
newManifest
(
List
references
);
/**
...
...
@@ -556,6 +564,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if <code>references</code> contains any
* entries that are not of type {@link Reference}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
Manifest
newManifest
(
List
references
,
String
id
);
/**
...
...
@@ -574,6 +583,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if <code>content</code> contains any
* entries that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
SignatureProperty
newSignatureProperty
(
List
content
,
String
target
,
String
id
);
...
...
@@ -592,6 +602,7 @@ public abstract class XMLSignatureFactory {
* @throws ClassCastException if <code>properties</code> contains any
* entries that are not of type {@link SignatureProperty}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
SignatureProperties
newSignatureProperties
(
List
properties
,
String
id
);
...
...
src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java
浏览文件 @
14082957
...
...
@@ -94,6 +94,7 @@ public interface KeyInfo extends XMLStructure {
* in this <code>KeyInfo</code>. Never returns <code>null</code> or an
* empty list.
*/
@SuppressWarnings
(
"rawtypes"
)
List
getContent
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java
浏览文件 @
14082957
...
...
@@ -305,6 +305,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>content</code> contains any entries
* that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
KeyInfo
newKeyInfo
(
List
content
);
/**
...
...
@@ -324,6 +325,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>content</code> contains any entries
* that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
KeyInfo
newKeyInfo
(
List
content
,
String
id
);
/**
...
...
@@ -385,6 +387,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>other</code> contains any
* entries that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
PGPData
newPGPData
(
byte
[]
keyId
,
byte
[]
keyPacket
,
List
other
);
...
...
@@ -408,6 +411,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>other</code> contains any
* entries that are not of type {@link XMLStructure}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
PGPData
newPGPData
(
byte
[]
keyPacket
,
List
other
);
/**
...
...
@@ -439,6 +443,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>transforms</code> contains any
* entries that are not of type {@link Transform}
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
RetrievalMethod
newRetrievalMethod
(
String
uri
,
String
type
,
List
transforms
);
...
...
@@ -464,6 +469,7 @@ public abstract class KeyInfoFactory {
* @throws ClassCastException if <code>content</code> contains any entries
* that are not of one of the valid types mentioned above
*/
@SuppressWarnings
(
"rawtypes"
)
public
abstract
X509Data
newX509Data
(
List
content
);
/**
...
...
src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java
浏览文件 @
14082957
...
...
@@ -112,5 +112,6 @@ public interface PGPData extends XMLStructure {
* @return an unmodifiable list of <code>XMLStructure</code>s (may be
* empty, but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
List
getExternalElements
();
}
src/share/classes/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java
浏览文件 @
14082957
...
...
@@ -80,6 +80,7 @@ public interface RetrievalMethod extends URIReference, XMLStructure {
* @return an unmodifiable list of <code>Transform</code> objects (may be
* empty but never <code>null</code>).
*/
@SuppressWarnings
(
"rawtypes"
)
List
getTransforms
();
/**
...
...
src/share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java
浏览文件 @
14082957
...
...
@@ -109,5 +109,6 @@ public interface X509Data extends XMLStructure {
* @return an unmodifiable list of the content in this <code>X509Data</code>
* (never <code>null</code> or empty)
*/
@SuppressWarnings
(
"rawtypes"
)
List
getContent
();
}
src/share/classes/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java
浏览文件 @
14082957
...
...
@@ -59,7 +59,7 @@ import java.util.List;
*/
public
final
class
ExcC14NParameterSpec
implements
C14NMethodParameterSpec
{
private
List
preList
;
private
List
<
String
>
preList
;
/**
* Indicates the default namespace ("#default").
...
...
@@ -71,7 +71,7 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
* list.
*/
public
ExcC14NParameterSpec
()
{
preList
=
Collections
.
EMPTY_LIST
;
preList
=
Collections
.
emptyList
()
;
}
/**
...
...
@@ -86,17 +86,22 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
* @throws ClassCastException if any of the entries in the list are not
* of type <code>String</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
ExcC14NParameterSpec
(
List
prefixList
)
{
if
(
prefixList
==
null
)
{
throw
new
NullPointerException
(
"prefixList cannot be null"
);
}
this
.
preList
=
new
ArrayList
(
prefixList
);
for
(
int
i
=
0
,
size
=
preList
.
size
();
i
<
size
;
i
++)
{
if
(!(
preList
.
get
(
i
)
instanceof
String
))
{
List
<?>
copy
=
new
ArrayList
<>((
List
<?>)
prefixList
);
for
(
int
i
=
0
,
size
=
copy
.
size
();
i
<
size
;
i
++)
{
if
(!(
copy
.
get
(
i
)
instanceof
String
))
{
throw
new
ClassCastException
(
"not a String"
);
}
}
preList
=
Collections
.
unmodifiableList
(
preList
);
@SuppressWarnings
(
"unchecked"
)
List
<
String
>
temp
=
(
List
<
String
>)
copy
;
preList
=
Collections
.
unmodifiableList
(
temp
);
}
/**
...
...
@@ -109,6 +114,7 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
* @return the inclusive namespace prefix list (may be empty but never
* <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
public
List
getPrefixList
()
{
return
preList
;
}
...
...
src/share/classes/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java
浏览文件 @
14082957
...
...
@@ -46,7 +46,7 @@ import javax.xml.crypto.dsig.Transform;
*/
public
final
class
XPathFilter2ParameterSpec
implements
TransformParameterSpec
{
private
final
List
xPathList
;
private
final
List
<
XPathType
>
xPathList
;
/**
* Creates an <code>XPathFilter2ParameterSpec</code>.
...
...
@@ -59,11 +59,12 @@ public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
* @throws NullPointerException if <code>xPathList</code> is
* <code>null</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
XPathFilter2ParameterSpec
(
List
xPathList
)
{
if
(
xPathList
==
null
)
{
throw
new
NullPointerException
(
"xPathList cannot be null"
);
}
List
xPathListCopy
=
new
ArrayList
(
xPathList
);
List
<?>
xPathListCopy
=
new
ArrayList
<>((
List
<?>)
xPathList
);
if
(
xPathListCopy
.
isEmpty
())
{
throw
new
IllegalArgumentException
(
"xPathList cannot be empty"
);
}
...
...
@@ -74,7 +75,11 @@ public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
(
"xPathList["
+
i
+
"] is not a valid type"
);
}
}
this
.
xPathList
=
Collections
.
unmodifiableList
(
xPathListCopy
);
@SuppressWarnings
(
"unchecked"
)
List
<
XPathType
>
temp
=
(
List
<
XPathType
>)
xPathListCopy
;
this
.
xPathList
=
Collections
.
unmodifiableList
(
temp
);
}
/**
...
...
@@ -86,6 +91,7 @@ public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
* @return a <code>List</code> of <code>XPathType</code> objects
* (never <code>null</code> or empty)
*/
@SuppressWarnings
(
"rawtypes"
)
public
List
getXPathList
()
{
return
xPathList
;
}
...
...
src/share/classes/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java
浏览文件 @
14082957
...
...
@@ -52,7 +52,7 @@ import java.util.Map.Entry;
public
final
class
XPathFilterParameterSpec
implements
TransformParameterSpec
{
private
String
xPath
;
private
Map
nsMap
;
private
Map
<
String
,
String
>
nsMap
;
/**
* Creates an <code>XPathFilterParameterSpec</code> with the specified
...
...
@@ -66,7 +66,7 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec {
throw
new
NullPointerException
();
}
this
.
xPath
=
xPath
;
this
.
nsMap
=
Collections
.
EMPTY_MAP
;
this
.
nsMap
=
Collections
.
emptyMap
()
;
}
/**
...
...
@@ -83,21 +83,26 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec {
* @throws ClassCastException if any of the map's keys or entries are not
* of type <code>String</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
XPathFilterParameterSpec
(
String
xPath
,
Map
namespaceMap
)
{
if
(
xPath
==
null
||
namespaceMap
==
null
)
{
throw
new
NullPointerException
();
}
this
.
xPath
=
xPath
;
nsMap
=
new
HashMap
(
namespaceMap
);
Iterator
entries
=
nsMap
.
entrySet
().
iterator
();
Map
<?,?>
copy
=
new
HashMap
<>((
Map
<?,?>)
namespaceMap
);
Iterator
<?
extends
Map
.
Entry
<?,?>>
entries
=
copy
.
entrySet
().
iterator
();
while
(
entries
.
hasNext
())
{
Map
.
Entry
me
=
(
Map
.
Entry
)
entries
.
next
();
Map
.
Entry
<?,?>
me
=
entries
.
next
();
if
(!(
me
.
getKey
()
instanceof
String
)
||
!(
me
.
getValue
()
instanceof
String
))
{
throw
new
ClassCastException
(
"not a String"
);
}
}
nsMap
=
Collections
.
unmodifiableMap
(
nsMap
);
@SuppressWarnings
(
"unchecked"
)
Map
<
String
,
String
>
temp
=
(
Map
<
String
,
String
>)
copy
;
nsMap
=
Collections
.
unmodifiableMap
(
temp
);
}
/**
...
...
@@ -120,6 +125,7 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec {
* @return a <code>Map</code> of namespace prefixes to namespace URIs (may
* be empty, but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
public
Map
getNamespaceMap
()
{
return
nsMap
;
}
...
...
src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java
浏览文件 @
14082957
...
...
@@ -106,7 +106,7 @@ public class XPathType {
private
final
String
expression
;
private
final
Filter
filter
;
private
Map
nsMap
;
private
Map
<
String
,
String
>
nsMap
;
/**
* Creates an <code>XPathType</code> instance with the specified XPath
...
...
@@ -127,7 +127,7 @@ public class XPathType {
}
this
.
expression
=
expression
;
this
.
filter
=
filter
;
this
.
nsMap
=
Collections
.
EMPTY_MAP
;
this
.
nsMap
=
Collections
.
emptyMap
()
;
}
/**
...
...
@@ -147,21 +147,26 @@ public class XPathType {
* @throws ClassCastException if any of the map's keys or entries are
* not of type <code>String</code>
*/
@SuppressWarnings
(
"rawtypes"
)
public
XPathType
(
String
expression
,
Filter
filter
,
Map
namespaceMap
)
{
this
(
expression
,
filter
);
if
(
namespaceMap
==
null
)
{
throw
new
NullPointerException
(
"namespaceMap cannot be null"
);
}
nsMap
=
new
HashMap
(
namespaceMap
);
Iterator
entries
=
nsMap
.
entrySet
().
iterator
();
Map
<?,?>
copy
=
new
HashMap
<>((
Map
<?,?>)
namespaceMap
);
Iterator
<?
extends
Map
.
Entry
<?,?>>
entries
=
copy
.
entrySet
().
iterator
();
while
(
entries
.
hasNext
())
{
Map
.
Entry
me
=
(
Map
.
Entry
)
entries
.
next
();
Map
.
Entry
<?,?>
me
=
entries
.
next
();
if
(!(
me
.
getKey
()
instanceof
String
)
||
!(
me
.
getValue
()
instanceof
String
))
{
throw
new
ClassCastException
(
"not a String"
);
}
}
nsMap
=
Collections
.
unmodifiableMap
(
nsMap
);
@SuppressWarnings
(
"unchecked"
)
Map
<
String
,
String
>
temp
=
(
Map
<
String
,
String
>)
copy
;
nsMap
=
Collections
.
unmodifiableMap
(
temp
);
}
/**
...
...
@@ -193,6 +198,7 @@ public class XPathType {
* @return a <code>Map</code> of namespace prefixes to namespace URIs
* (may be empty, but never <code>null</code>)
*/
@SuppressWarnings
(
"rawtypes"
)
public
Map
getNamespaceMap
()
{
return
nsMap
;
}
...
...
src/share/classes/sun/misc/JavaNetHttpCookieAccess.java
0 → 100644
浏览文件 @
14082957
/*
* Copyright (c) 2011, 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.
*/
package
sun.misc
;
import
java.net.HttpCookie
;
import
java.util.List
;
public
interface
JavaNetHttpCookieAccess
{
/*
* Constructs cookies from Set-Cookie or Set-Cookie2 header string,
* retaining the original header String in the cookie itself.
*/
public
List
<
HttpCookie
>
parse
(
String
header
);
/*
* Returns the original header this cookie was consructed from, if it was
* constructed by parsing a header, otherwise null.
*/
public
String
header
(
HttpCookie
cookie
);
}
src/share/classes/sun/misc/SharedSecrets.java
浏览文件 @
14082957
...
...
@@ -47,6 +47,7 @@ public class SharedSecrets {
private
static
JavaLangAccess
javaLangAccess
;
private
static
JavaIOAccess
javaIOAccess
;
private
static
JavaNetAccess
javaNetAccess
;
private
static
JavaNetHttpCookieAccess
javaNetHttpCookieAccess
;
private
static
JavaNioAccess
javaNioAccess
;
private
static
JavaIOFileDescriptorAccess
javaIOFileDescriptorAccess
;
private
static
JavaSecurityProtectionDomainAccess
javaSecurityProtectionDomainAccess
;
...
...
@@ -81,6 +82,16 @@ public class SharedSecrets {
return
javaNetAccess
;
}
public
static
void
setJavaNetHttpCookieAccess
(
JavaNetHttpCookieAccess
a
)
{
javaNetHttpCookieAccess
=
a
;
}
public
static
JavaNetHttpCookieAccess
getJavaNetHttpCookieAccess
()
{
if
(
javaNetHttpCookieAccess
==
null
)
unsafe
.
ensureClassInitialized
(
java
.
net
.
HttpCookie
.
class
);
return
javaNetHttpCookieAccess
;
}
public
static
void
setJavaNioAccess
(
JavaNioAccess
jna
)
{
javaNioAccess
=
jna
;
}
...
...
src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
浏览文件 @
14082957
...
...
@@ -32,6 +32,7 @@ import java.net.ProtocolException;
import
java.net.HttpRetryException
;
import
java.net.PasswordAuthentication
;
import
java.net.Authenticator
;
import
java.net.HttpCookie
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.net.SocketTimeoutException
;
...
...
@@ -46,6 +47,8 @@ import java.net.SecureCacheResponse;
import
java.net.CacheRequest
;
import
java.net.Authenticator.RequestorType
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.List
;
...
...
@@ -2580,6 +2583,80 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
return
false
;
}
// constant strings represent set-cookie header names
private
final
static
String
SET_COOKIE
=
"set-cookie"
;
private
final
static
String
SET_COOKIE2
=
"set-cookie2"
;
/**
* Returns a filtered version of the given headers value.
*
* Note: The implementation currently only filters out HttpOnly cookies
* from Set-Cookie and Set-Cookie2 headers.
*/
private
String
filterHeaderField
(
String
name
,
String
value
)
{
if
(
value
==
null
)
return
null
;
if
(
SET_COOKIE
.
equalsIgnoreCase
(
name
)
||
SET_COOKIE2
.
equalsIgnoreCase
(
name
))
{
// Filtering only if there is a cookie handler. [Assumption: the
// cookie handler will store/retrieve the HttpOnly cookies]
if
(
cookieHandler
==
null
)
return
value
;
sun
.
misc
.
JavaNetHttpCookieAccess
access
=
sun
.
misc
.
SharedSecrets
.
getJavaNetHttpCookieAccess
();
StringBuilder
retValue
=
new
StringBuilder
();
List
<
HttpCookie
>
cookies
=
access
.
parse
(
value
);
boolean
multipleCookies
=
false
;
for
(
HttpCookie
cookie
:
cookies
)
{
// skip HttpOnly cookies
if
(
cookie
.
isHttpOnly
())
continue
;
if
(
multipleCookies
)
retValue
.
append
(
','
);
// RFC 2965, comma separated
retValue
.
append
(
access
.
header
(
cookie
));
multipleCookies
=
true
;
}
return
retValue
.
length
()
==
0
?
null
:
retValue
.
toString
();
}
return
value
;
}
// Cache the filtered response headers so that they don't need
// to be generated for every getHeaderFields() call.
private
Map
<
String
,
List
<
String
>>
filteredHeaders
;
// null
private
Map
<
String
,
List
<
String
>>
getFilteredHeaderFields
()
{
if
(
filteredHeaders
!=
null
)
return
filteredHeaders
;
filteredHeaders
=
new
HashMap
<>();
Map
<
String
,
List
<
String
>>
headers
;
if
(
cachedHeaders
!=
null
)
headers
=
cachedHeaders
.
getHeaders
();
else
headers
=
responses
.
getHeaders
();
for
(
Map
.
Entry
<
String
,
List
<
String
>>
e:
headers
.
entrySet
())
{
String
key
=
e
.
getKey
();
List
<
String
>
values
=
e
.
getValue
(),
filteredVals
=
new
ArrayList
<>();
for
(
String
value
:
values
)
{
String
fVal
=
filterHeaderField
(
key
,
value
);
if
(
fVal
!=
null
)
filteredVals
.
add
(
fVal
);
}
if
(!
filteredVals
.
isEmpty
())
filteredHeaders
.
put
(
key
,
Collections
.
unmodifiableList
(
filteredVals
));
}
return
filteredHeaders
;
}
/**
* Gets a header field by name. Returns null if not known.
* @param name the name of the header field
...
...
@@ -2591,10 +2668,10 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
}
catch
(
IOException
e
)
{}
if
(
cachedHeaders
!=
null
)
{
return
cachedHeaders
.
findValue
(
name
);
return
filterHeaderField
(
name
,
cachedHeaders
.
findValue
(
name
)
);
}
return
responses
.
findValue
(
name
);
return
filterHeaderField
(
name
,
responses
.
findValue
(
name
)
);
}
/**
...
...
@@ -2613,11 +2690,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
getInputStream
();
}
catch
(
IOException
e
)
{}
if
(
cachedHeaders
!=
null
)
{
return
cachedHeaders
.
getHeaders
();
}
return
responses
.
getHeaders
();
return
getFilteredHeaderFields
();
}
/**
...
...
@@ -2631,9 +2704,10 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
}
catch
(
IOException
e
)
{}
if
(
cachedHeaders
!=
null
)
{
return
cachedHeaders
.
getValue
(
n
);
return
filterHeaderField
(
cachedHeaders
.
getKey
(
n
),
cachedHeaders
.
getValue
(
n
));
}
return
responses
.
getValue
(
n
);
return
filterHeaderField
(
responses
.
getKey
(
n
),
responses
.
getValue
(
n
)
);
}
/**
...
...
src/solaris/classes/java/lang/ProcessEnvironment.java
浏览文件 @
14082957
...
...
@@ -91,6 +91,7 @@ final class ProcessEnvironment
}
/* Only for use by ProcessBuilder.environment() */
@SuppressWarnings
(
"unchecked"
)
static
Map
<
String
,
String
>
environment
()
{
return
new
StringEnvironment
((
Map
<
Variable
,
Value
>)(
theEnvironment
.
clone
()));
...
...
src/solaris/native/java/net/Inet4AddressImpl.c
浏览文件 @
14082957
...
...
@@ -367,11 +367,11 @@ ping4(JNIEnv *env, jint fd, struct sockaddr_in* him, jint timeout,
sizeof
(
struct
sockaddr
));
if
(
n
<
0
&&
errno
!=
EINPROGRESS
)
{
#ifdef __linux__
if
(
errno
!=
EINVAL
)
if
(
errno
!=
EINVAL
&&
errno
!=
EHOSTUNREACH
)
/*
* On some Linuxes, when bound to the loopback interface, sendto
* will fail and errno will be set to EINVAL
. When that happens,
* don't throw an exception, just return false.
* will fail and errno will be set to EINVAL
or EHOSTUNREACH.
*
When that happens,
don't throw an exception, just return false.
*/
#endif
/*__linux__ */
NET_ThrowNew
(
env
,
errno
,
"Can't send ICMP packet"
);
...
...
@@ -525,10 +525,11 @@ Java_java_net_Inet4AddressImpl_isReachable0(JNIEnv *env, jobject this,
case
EADDRNOTAVAIL
:
/* address is not available on the remote machine */
#ifdef __linux__
case
EINVAL
:
case
EHOSTUNREACH
:
/*
* On some Linuxes, when bound to the loopback interface, connect
* will fail and errno will be set to EINVAL
. When that happens,
* don't throw an exception, just return false.
* will fail and errno will be set to EINVAL
or EHOSTUNREACH.
*
When that happens,
don't throw an exception, just return false.
*/
#endif
/* __linux__ */
close
(
fd
);
...
...
src/solaris/native/java/net/Inet6AddressImpl.c
浏览文件 @
14082957
...
...
@@ -502,11 +502,11 @@ ping6(JNIEnv *env, jint fd, struct sockaddr_in6* him, jint timeout,
n
=
sendto
(
fd
,
sendbuf
,
plen
,
0
,
(
struct
sockaddr
*
)
him
,
sizeof
(
struct
sockaddr_in6
));
if
(
n
<
0
&&
errno
!=
EINPROGRESS
)
{
#ifdef __linux__
if
(
errno
!=
EINVAL
)
if
(
errno
!=
EINVAL
&&
errno
!=
EHOSTUNREACH
)
/*
* On some Linuxes, when bound to the loopback interface, sendto
* will fail and errno will be set to EINVAL
. When that happens,
* don't throw an exception, just return false.
* will fail and errno will be set to EINVAL
or EHOSTUNREACH.
*
When that happens,
don't throw an exception, just return false.
*/
#endif
/*__linux__ */
NET_ThrowNew
(
env
,
errno
,
"Can't send ICMP packet"
);
...
...
@@ -670,10 +670,11 @@ Java_java_net_Inet6AddressImpl_isReachable0(JNIEnv *env, jobject this,
case
EADDRNOTAVAIL
:
/* address is not available on the remote machine */
#ifdef __linux__
case
EINVAL
:
case
EHOSTUNREACH
:
/*
* On some Linuxes, when bound to the loopback interface, connect
* will fail and errno will be set to EINVAL
. When that happens,
* don't throw an exception, just return false.
* will fail and errno will be set to EINVAL
or EHOSTUNREACH.
*
When that happens,
don't throw an exception, just return false.
*/
#endif
/* __linux__ */
close
(
fd
);
...
...
src/windows/classes/java/lang/ProcessEnvironment.java
浏览文件 @
14082957
...
...
@@ -68,6 +68,9 @@ import java.util.*;
final
class
ProcessEnvironment
extends
HashMap
<
String
,
String
>
{
private
static
final
long
serialVersionUID
=
-
8017839552603542824L
;
private
static
String
validateName
(
String
name
)
{
// An initial `=' indicates a magic Windows variable name -- OK
if
(
name
.
indexOf
(
'='
,
1
)
!=
-
1
||
...
...
@@ -144,6 +147,7 @@ final class ProcessEnvironment extends HashMap<String,String>
};
}
private
static
Map
.
Entry
<
String
,
String
>
checkedEntry
(
Object
o
)
{
@SuppressWarnings
(
"unchecked"
)
Map
.
Entry
<
String
,
String
>
e
=
(
Map
.
Entry
<
String
,
String
>)
o
;
nonNullString
(
e
.
getKey
());
nonNullString
(
e
.
getValue
());
...
...
@@ -281,6 +285,7 @@ final class ProcessEnvironment extends HashMap<String,String>
}
// Only for use by ProcessBuilder.environment()
@SuppressWarnings
(
"unchecked"
)
static
Map
<
String
,
String
>
environment
()
{
return
(
Map
<
String
,
String
>)
theEnvironment
.
clone
();
}
...
...
test/Makefile
浏览文件 @
14082957
...
...
@@ -322,8 +322,8 @@ BUNDLE_UP_AND_EXIT = \
################################################################
# Default make rule (runs
jtreg_
tests)
all
:
j
treg_tests
# Default make rule (runs
default jdk
tests)
all
:
j
dk_default
@
$(ECHO)
"Testing completed successfully"
# Prep for output
...
...
@@ -422,6 +422,7 @@ endef
# ------------------------------------------------------------------
# Batches of tests (somewhat arbitrary assigments to jdk_* targets)
JDK_DEFAULT_TARGETS
=
JDK_ALL_TARGETS
=
# Stable othervm testruns (minus items from PROBLEM_LIST)
...
...
@@ -433,6 +434,7 @@ jdk_awt: $(call TestDirs, com/sun/awt java/awt sun/awt \
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_beans1
JDK_DEFAULT_TARGETS
+=
jdk_beans1
jdk_beans1
:
$(call TestDirs
,
\
java/beans/beancontext java/beans/PropertyChangeSupport
\
java/beans/Introspector java/beans/Performance
\
...
...
@@ -459,11 +461,13 @@ jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_io
JDK_DEFAULT_TARGETS
+=
jdk_io
jdk_io
:
$(call TestDirs
,
java/io)
$(
call
RunAgentvmBatch
)
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_lang
JDK_DEFAULT_TARGETS
+=
jdk_lang
jdk_lang
:
$(call TestDirs
,
java/lang)
$(
call
RunAgentvmBatch
)
...
...
@@ -485,11 +489,13 @@ jdk_management: jdk_management1 jdk_management2
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_math
JDK_DEFAULT_TARGETS
+=
jdk_math
jdk_math
:
$(call TestDirs
,
java/math)
$(
call
RunAgentvmBatch
)
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_misc
JDK_DEFAULT_TARGETS
+=
jdk_misc
jdk_misc
:
$(call TestDirs
,
\
demo/jvmti demo/zipfs javax/naming javax/script
\
javax/smartcardio com/sun/jndi com/sun/xml sun/misc)
...
...
@@ -497,16 +503,19 @@ jdk_misc: $(call TestDirs, \
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_net
JDK_DEFAULT_TARGETS
+=
jdk_net
jdk_net
:
$(call TestDirs
,
com/sun/net java/net sun/net)
$(
call
RunAgentvmBatch
)
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_nio1
JDK_DEFAULT_TARGETS
+=
jdk_nio1
jdk_nio1
:
$(call TestDirs
,
java/nio/file)
$(
call
RunAgentvmBatch
)
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_nio2
JDK_DEFAULT_TARGETS
+=
jdk_nio2
jdk_nio2
:
$(call TestDirs
,
java/nio/Buffer java/nio/ByteOrder
\
java/nio/channels java/nio/MappedByteBuffer)
$(
call
SharedLibraryPermissions,java/nio/channels
)
...
...
@@ -514,6 +523,7 @@ jdk_nio2: $(call TestDirs, java/nio/Buffer java/nio/ByteOrder \
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_nio3
JDK_DEFAULT_TARGETS
+=
jdk_nio3
jdk_nio3
:
$(call TestDirs
,
sun/nio)
$(
call
RunAgentvmBatch
)
...
...
@@ -533,6 +543,7 @@ jdk_rmi: $(call TestDirs, java/rmi javax/rmi sun/rmi)
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_security1
JDK_DEFAULT_TARGETS
+=
jdk_security1
jdk_security1
:
$(call TestDirs
,
java/security)
$(
call
RunAgentvmBatch
)
...
...
@@ -566,6 +577,7 @@ jdk_swing: $(call TestDirs, javax/swing sun/java2d \
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_text
JDK_DEFAULT_TARGETS
+=
jdk_text
jdk_text
:
$(call TestDirs
,
java/text sun/text)
$(
call
RunAgentvmBatch
)
...
...
@@ -589,15 +601,18 @@ jdk_tools: jdk_tools1 jdk_tools2
# Stable agentvm testruns (minus items from PROBLEM_LIST)
JDK_ALL_TARGETS
+=
jdk_util
JDK_DEFAULT_TARGETS
+=
jdk_util
jdk_util
:
$(call TestDirs
,
java/util sun/util)
$(
call
RunAgentvmBatch
)
# ------------------------------------------------------------------
# Run default tests
jdk_default
:
$(JDK_DEFAULT_TARGETS)
@
$(SummaryInfo)
# Run all tests
FILTER_OUT_LIST
=
jdk_awt jdk_rmi jdk_swing
JDK_ALL_STABLE_TARGETS
:=
$(
filter-out
$(FILTER_OUT_LIST)
,
$(JDK_ALL_TARGETS)
)
jdk_all
:
$(JDK_ALL_STABLE_TARGETS)
jdk_all
:
$(JDK_ALL_TARGETS)
@
$(SummaryInfo)
# These are all phony targets
...
...
test/java/nio/file/Files/CustomOptions.java
0 → 100644
浏览文件 @
14082957
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7087549
* @summary Test custom options with newInputStream.
* @author Brandon Passanisi
* @library ..
* @build CustomOptions PassThroughFileSystem
*/
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URI
;
import
java.nio.file.*
;
import
java.nio.file.attribute.FileAttribute
;
import
java.nio.file.spi.FileSystemProvider
;
import
java.nio.channels.SeekableByteChannel
;
import
java.util.Collections
;
import
java.util.Set
;
import
java.util.Map
;
public
class
CustomOptions
{
// Create a custom option
static
enum
CustomOption
implements
OpenOption
{
IGNORE
,
}
// number of times that IGNORE option is observed
static
int
ignoreCount
;
// A pass through provider that supports a custom open option
static
class
MyCustomProvider
extends
PassThroughFileSystem
.
PassThroughProvider
{
public
MyCustomProvider
()
{
}
@Override
public
SeekableByteChannel
newByteChannel
(
Path
path
,
Set
<?
extends
OpenOption
>
options
,
FileAttribute
<?>...
attrs
)
throws
IOException
{
if
(
options
.
contains
(
CustomOption
.
IGNORE
))
{
ignoreCount
++;
options
.
remove
(
CustomOption
.
IGNORE
);
}
return
super
.
newByteChannel
(
path
,
options
,
attrs
);
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
FileSystemProvider
provider
=
new
MyCustomProvider
();
Map
<
String
,?>
env
=
Collections
.
emptyMap
();
URI
uri
=
URI
.
create
(
"pass:///"
);
FileSystem
fs
=
provider
.
newFileSystem
(
uri
,
env
);
// Create temp dir for testing
Path
dir
=
TestUtil
.
createTemporaryDirectory
();
try
{
// Create temp file for testing
Path
path
=
fs
.
getPath
(
dir
.
resolve
(
"foo"
).
toString
());
Files
.
createFile
(
path
);
// Test custom option
Files
.
newInputStream
(
path
,
CustomOption
.
IGNORE
).
close
();
if
(
ignoreCount
!=
1
)
throw
new
RuntimeException
(
"IGNORE option not passed through"
);
// Test null option
try
{
Files
.
newInputStream
(
path
,
new
OpenOption
[]
{
null
}).
close
();
throw
new
RuntimeException
(
"NullPointerException expected"
);
}
catch
(
NullPointerException
ignore
)
{
}
// Test unsupported options
try
{
Files
.
newInputStream
(
path
,
StandardOpenOption
.
WRITE
).
close
();
throw
new
RuntimeException
(
"UnsupportedOperationException expected"
);
}
catch
(
UnsupportedOperationException
uoe
)
{
}
try
{
Files
.
newInputStream
(
path
,
StandardOpenOption
.
APPEND
).
close
();
throw
new
RuntimeException
(
"UnsupportedOperationException expected"
);
}
catch
(
UnsupportedOperationException
uoe
)
{
}
}
finally
{
// Cleanup
TestUtil
.
removeAll
(
dir
);
}
}
}
test/java/util/Collections/EmptyIterator.java
浏览文件 @
14082957
...
...
@@ -35,8 +35,6 @@ public class EmptyIterator {
void
test
(
String
[]
args
)
throws
Throwable
{
testEmptyCollection
(
Collections
.<
Object
>
emptyList
());
testEmptyCollection
(
Collections
.<
Object
>
emptySet
());
testEmptyCollection
(
new
java
.
util
.
concurrent
.
SynchronousQueue
<
Object
>());
testEmptyMap
(
Collections
.<
Object
,
Object
>
emptyMap
());
...
...
test/java/util/regex/RegExTest.java
浏览文件 @
14082957
...
...
@@ -32,7 +32,7 @@
* 4872664 4803179 4892980 4900747 4945394 4938995 4979006 4994840 4997476
* 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940
* 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133
* 6350801 6676425 6878475 6919132 6931676 6948903 7014645 7039066
* 6350801 6676425 6878475 6919132 6931676 6948903
6990617
7014645 7039066
*/
import
java.util.regex.*
;
...
...
@@ -50,6 +50,7 @@ public class RegExTest {
private
static
Random
generator
=
new
Random
();
private
static
boolean
failure
=
false
;
private
static
int
failCount
=
0
;
private
static
String
firstFailure
=
null
;
/**
* Main to interpret arguments and run several tests.
...
...
@@ -133,16 +134,20 @@ public class RegExTest {
hitEndTest
();
toMatchResultTest
();
surrogatesInClassTest
();
removeQEQuotingTest
();
namedGroupCaptureTest
();
nonBmpClassComplementTest
();
unicodePropertiesTest
();
unicodeHexNotationTest
();
unicodeClassesTest
();
if
(
failure
)
throw
new
RuntimeException
(
"Failure in the RE handling."
);
else
if
(
failure
)
{
throw
new
RuntimeException
(
"RegExTest failed, 1st failure: "
+
firstFailure
);
}
else
{
System
.
err
.
println
(
"OKAY: All tests passed."
);
}
}
// Utility functions
...
...
@@ -215,8 +220,14 @@ public class RegExTest {
String
paddedName
=
paddedNameBuffer
.
toString
();
System
.
err
.
println
(
paddedName
+
": "
+
(
failCount
==
0
?
"Passed"
:
"Failed("
+
failCount
+
")"
));
if
(
failCount
>
0
)
if
(
failCount
>
0
)
{
failure
=
true
;
if
(
firstFailure
==
null
)
{
firstFailure
=
testName
;
}
}
failCount
=
0
;
}
...
...
@@ -295,6 +306,22 @@ public class RegExTest {
Matcher
matcher
=
pattern
.
matcher
(
"\ud834\udd22"
);
if
(!
matcher
.
find
())
failCount
++;
report
(
"Surrogate pair in Unicode escape"
);
}
// This is for bug6990617
// Test if Pattern.RemoveQEQuoting works correctly if the octal unicode
// char encoding is only 2 or 3 digits instead of 4 and the first quoted
// char is an octal digit.
private
static
void
removeQEQuotingTest
()
throws
Exception
{
Pattern
pattern
=
Pattern
.
compile
(
"\\011\\Q1sometext\\E\\011\\Q2sometext\\E"
);
Matcher
matcher
=
pattern
.
matcher
(
"\t1sometext\t2sometext"
);
if
(!
matcher
.
find
())
failCount
++;
report
(
"Remove Q/E Quoting"
);
}
// This is for bug 4988891
...
...
test/sun/net/www/protocol/http/HttpOnly.java
0 → 100644
浏览文件 @
14082957
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 7095980
* @summary Ensure HttpURLConnection (and supporting APIs) don't expose
* HttpOnly cookies
*/
import
java.io.IOException
;
import
java.net.CookieHandler
;
import
java.net.CookieManager
;
import
java.net.CookiePolicy
;
import
java.net.InetAddress
;
import
java.net.InetSocketAddress
;
import
java.net.URI
;
import
java.net.HttpURLConnection
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
com.sun.net.httpserver.Headers
;
import
com.sun.net.httpserver.HttpExchange
;
import
com.sun.net.httpserver.HttpHandler
;
import
com.sun.net.httpserver.HttpServer
;
/*
* 1) start the HTTP server
* 2) populate cookie store with HttpOnly cookies
* 3) make HTTP request that should contain HttpOnly cookies
* 4) check HttpOnly cookies received by server
* 5) server reply with Set-Cookie containing HttpOnly cookie
* 6) check HttpOnly cookies are not accessible from Http client
*/
public
class
HttpOnly
{
static
final
String
URI_PATH
=
"/xxyyzz/"
;
static
final
int
SESSION_ID
=
12345
;
void
test
(
String
[]
args
)
throws
Exception
{
HttpServer
server
=
startHttpServer
();
CookieHandler
previousHandler
=
CookieHandler
.
getDefault
();
try
{
InetSocketAddress
address
=
server
.
getAddress
();
URI
uri
=
new
URI
(
"http://"
+
InetAddress
.
getLocalHost
().
getHostAddress
()
+
":"
+
address
.
getPort
()
+
URI_PATH
);
populateCookieStore
(
uri
);
doClient
(
uri
);
}
finally
{
CookieHandler
.
setDefault
(
previousHandler
);
server
.
stop
(
0
);
}
}
void
populateCookieStore
(
URI
uri
)
throws
IOException
{
CookieManager
cm
=
new
CookieManager
(
null
,
CookiePolicy
.
ACCEPT_ALL
);
CookieHandler
.
setDefault
(
cm
);
Map
<
String
,
List
<
String
>>
header
=
new
HashMap
<>();
List
<
String
>
values
=
new
ArrayList
<>();
values
.
add
(
"JSESSIONID="
+
SESSION_ID
+
"; version=1; Path="
+
URI_PATH
+
"; HttpOnly"
);
values
.
add
(
"CUSTOMER=WILE_E_COYOTE; version=1; Path="
+
URI_PATH
);
header
.
put
(
"Set-Cookie"
,
values
);
cm
.
put
(
uri
,
header
);
}
void
doClient
(
URI
uri
)
throws
Exception
{
HttpURLConnection
uc
=
(
HttpURLConnection
)
uri
.
toURL
().
openConnection
();
int
resp
=
uc
.
getResponseCode
();
check
(
resp
==
200
,
"Unexpected response code. Expected 200, got "
+
resp
);
// TEST 1: check getRequestProperty doesn't return the HttpOnly cookie
// In fact, that it doesn't return any automatically set cookies.
String
cookie
=
uc
.
getRequestProperty
(
"Cookie"
);
check
(
cookie
==
null
,
"Cookie header returned from getRequestProperty, value "
+
cookie
);
// TEST 2: check getRequestProperties doesn't return the HttpOnly cookie.
// In fact, that it doesn't return any automatically set cookies.
Map
<
String
,
List
<
String
>>
reqHeaders
=
uc
.
getRequestProperties
();
Set
<
Map
.
Entry
<
String
,
List
<
String
>>>
entries
=
reqHeaders
.
entrySet
();
for
(
Map
.
Entry
<
String
,
List
<
String
>>
entry
:
entries
)
{
String
header
=
entry
.
getKey
();
check
(!
"Cookie"
.
equalsIgnoreCase
(
header
),
"Cookie header returned from getRequestProperties, value "
+
entry
.
getValue
());
}
// TEST 3: check getHeaderField doesn't return Set-Cookie with HttpOnly
String
setCookie
=
uc
.
getHeaderField
(
"Set-Cookie"
);
if
(
setCookie
!=
null
)
{
debug
(
"Set-Cookie:"
+
setCookie
);
check
(!
setCookie
.
toLowerCase
().
contains
(
"httponly"
),
"getHeaderField returned Set-Cookie header with HttpOnly, "
+
"value = "
+
setCookie
);
}
// TEST 3.5: check getHeaderField doesn't return Set-Cookie2 with HttpOnly
String
setCookie2
=
uc
.
getHeaderField
(
"Set-Cookie2"
);
if
(
setCookie2
!=
null
)
{
debug
(
"Set-Cookie2:"
+
setCookie2
);
check
(!
setCookie2
.
toLowerCase
().
contains
(
"httponly"
),
"getHeaderField returned Set-Cookie2 header with HttpOnly, "
+
"value = "
+
setCookie2
);
}
// TEST 4: check getHeaderFields doesn't return Set-Cookie
// or Set-Cookie2 headers with HttpOnly
Map
<
String
,
List
<
String
>>
respHeaders
=
uc
.
getHeaderFields
();
Set
<
Map
.
Entry
<
String
,
List
<
String
>>>
respEntries
=
respHeaders
.
entrySet
();
for
(
Map
.
Entry
<
String
,
List
<
String
>>
entry
:
respEntries
)
{
String
header
=
entry
.
getKey
();
if
(
"Set-Cookie"
.
equalsIgnoreCase
(
header
))
{
List
<
String
>
setCookieValues
=
entry
.
getValue
();
debug
(
"Set-Cookie:"
+
setCookieValues
);
for
(
String
value
:
setCookieValues
)
check
(!
value
.
toLowerCase
().
contains
(
"httponly"
),
"getHeaderFields returned Set-Cookie header with HttpOnly, "
+
"value = "
+
value
);
}
if
(
"Set-Cookie2"
.
equalsIgnoreCase
(
header
))
{
List
<
String
>
setCookieValues
=
entry
.
getValue
();
debug
(
"Set-Cookie2:"
+
setCookieValues
);
for
(
String
value
:
setCookieValues
)
check
(!
value
.
toLowerCase
().
contains
(
"httponly"
),
"getHeaderFields returned Set-Cookie2 header with HttpOnly, "
+
"value = "
+
value
);
}
}
// Now add some user set cookies into the mix.
uc
=
(
HttpURLConnection
)
uri
.
toURL
().
openConnection
();
uc
.
addRequestProperty
(
"Cookie"
,
"CUSTOMER_ID=CHEGAR;"
);
resp
=
uc
.
getResponseCode
();
check
(
resp
==
200
,
"Unexpected response code. Expected 200, got "
+
resp
);
// TEST 5: check getRequestProperty doesn't return the HttpOnly cookie
cookie
=
uc
.
getRequestProperty
(
"Cookie"
);
check
(!
cookie
.
toLowerCase
().
contains
(
"httponly"
),
"HttpOnly cookie returned from getRequestProperty, value "
+
cookie
);
// TEST 6: check getRequestProperties doesn't return the HttpOnly cookie.
reqHeaders
=
uc
.
getRequestProperties
();
entries
=
reqHeaders
.
entrySet
();
for
(
Map
.
Entry
<
String
,
List
<
String
>>
entry
:
entries
)
{
String
header
=
entry
.
getKey
();
if
(
"Cookie"
.
equalsIgnoreCase
(
header
))
{
for
(
String
val
:
entry
.
getValue
())
check
(!
val
.
toLowerCase
().
contains
(
"httponly"
),
"HttpOnly cookie returned from getRequestProperties,"
+
" value "
+
val
);
}
}
}
// HTTP Server
HttpServer
startHttpServer
()
throws
IOException
{
HttpServer
httpServer
=
HttpServer
.
create
(
new
InetSocketAddress
(
0
),
0
);
httpServer
.
createContext
(
URI_PATH
,
new
SimpleHandler
());
httpServer
.
start
();
return
httpServer
;
}
class
SimpleHandler
implements
HttpHandler
{
@Override
public
void
handle
(
HttpExchange
t
)
throws
IOException
{
Headers
reqHeaders
=
t
.
getRequestHeaders
();
// some small sanity check
List
<
String
>
cookies
=
reqHeaders
.
get
(
"Cookie"
);
for
(
String
cookie
:
cookies
)
{
if
(!
cookie
.
contains
(
"JSESSIONID"
)
||
!
cookie
.
contains
(
"WILE_E_COYOTE"
))
t
.
sendResponseHeaders
(
400
,
-
1
);
}
// return some cookies so we can check getHeaderField(s)
Headers
respHeaders
=
t
.
getResponseHeaders
();
List
<
String
>
values
=
new
ArrayList
<>();
values
.
add
(
"ID=JOEBLOGGS; version=1; Path="
+
URI_PATH
);
values
.
add
(
"NEW_JSESSIONID="
+
(
SESSION_ID
+
1
)
+
"; version=1; Path="
+
URI_PATH
+
"; HttpOnly"
);
values
.
add
(
"NEW_CUSTOMER=WILE_E_COYOTE2; version=1; Path="
+
URI_PATH
);
respHeaders
.
put
(
"Set-Cookie"
,
values
);
values
=
new
ArrayList
<>();
values
.
add
(
"COOKIE2_CUSTOMER=WILE_E_COYOTE2; version=1; Path="
+
URI_PATH
);
respHeaders
.
put
(
"Set-Cookie2"
,
values
);
values
.
add
(
"COOKIE2_JSESSIONID="
+
(
SESSION_ID
+
100
)
+
"; version=1; Path="
+
URI_PATH
+
"; HttpOnly"
);
respHeaders
.
put
(
"Set-Cookie2"
,
values
);
t
.
sendResponseHeaders
(
200
,
-
1
);
t
.
close
();
}
}
volatile
int
passed
=
0
,
failed
=
0
;
boolean
debug
=
false
;
void
pass
()
{
passed
++;}
void
fail
()
{
failed
++;}
void
fail
(
String
msg
)
{
System
.
err
.
println
(
msg
);
fail
();}
void
unexpected
(
Throwable
t
)
{
failed
++;
t
.
printStackTrace
();}
void
debug
(
String
message
)
{
if
(
debug
)
System
.
out
.
println
(
message
);
}
void
check
(
boolean
cond
,
String
failMessage
)
{
if
(
cond
)
pass
();
else
fail
(
failMessage
);}
public
static
void
main
(
String
[]
args
)
throws
Throwable
{
Class
<?>
k
=
new
Object
(){}.
getClass
().
getEnclosingClass
();
try
{
k
.
getMethod
(
"instanceMain"
,
String
[].
class
)
.
invoke
(
k
.
newInstance
(),
(
Object
)
args
);}
catch
(
Throwable
e
)
{
throw
e
.
getCause
();}}
public
void
instanceMain
(
String
[]
args
)
throws
Throwable
{
try
{
test
(
args
);}
catch
(
Throwable
t
)
{
unexpected
(
t
);}
System
.
out
.
printf
(
"%nPassed = %d, failed = %d%n%n"
,
passed
,
failed
);
if
(
failed
>
0
)
throw
new
AssertionError
(
"Some tests failed"
);}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录