Merge
This commit is contained in:
commit
8401a88197
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 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
|
||||
@ -26,6 +26,8 @@
|
||||
BUILDDIR = ../../../..
|
||||
PACKAGE = com.sun.net.httpserver
|
||||
PRODUCT = sun
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -26,6 +26,9 @@
|
||||
BUILDDIR = ../../../..
|
||||
PACKAGE = com.sun.net.ssl
|
||||
PRODUCT = sun
|
||||
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -74,6 +74,57 @@ SCRIPT_SUFFIX =
|
||||
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
|
||||
CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
|
||||
|
||||
# Default OBJCOPY comes from GNU Binutils on Linux:
|
||||
DEF_OBJCOPY=/usr/bin/objcopy
|
||||
ifdef CROSS_COMPILE_ARCH
|
||||
# don't try to generate .debuginfo files when cross compiling
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \
|
||||
"skipping .debuginfo generation.")
|
||||
OBJCOPY=
|
||||
else
|
||||
OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
|
||||
ifneq ($(ALT_OBJCOPY),)
|
||||
_JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
|
||||
# disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
|
||||
OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS
|
||||
# The setting of OBJCOPY above enables the JDK build to import
|
||||
# .debuginfo files from the HotSpot build. However, adding FDS
|
||||
# support to the JDK build will occur in phases so a different
|
||||
# make variable is used to indicate that a particular library
|
||||
# supports FDS.
|
||||
|
||||
ifeq ($(OBJCOPY),)
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
|
||||
else
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
|
||||
|
||||
# Library stripping policies for .debuginfo configs:
|
||||
# all_strip - strips everything from the library
|
||||
# min_strip - strips most stuff from the library; leaves minimum symbols
|
||||
# no_strip - does not strip the library at all
|
||||
#
|
||||
# Oracle security policy requires "all_strip". A waiver was granted on
|
||||
# 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
|
||||
#
|
||||
DEF_STRIP_POLICY="min_strip"
|
||||
ifeq ($(ALT_STRIP_POLICY),)
|
||||
STRIP_POLICY=$(DEF_STRIP_POLICY)
|
||||
else
|
||||
STRIP_POLICY=$(ALT_STRIP_POLICY)
|
||||
endif
|
||||
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Default optimization
|
||||
#
|
||||
@ -359,6 +410,7 @@ JA_TARGET_ENCODINGS = UTF-8
|
||||
# Settings for the JDI - Serviceability Agent binding.
|
||||
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
|
||||
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
|
||||
SA_DEBUGINFO_NAME = $(LIB_PREFIX)saproc.debuginfo
|
||||
|
||||
# The JDI - Serviceability Agent binding is not currently supported
|
||||
# on Linux-ia64.
|
||||
|
@ -74,6 +74,69 @@ SCRIPT_SUFFIX =
|
||||
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
|
||||
CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
|
||||
|
||||
ifdef ENABLE_FULL_DEBUG_SYMBOLS
|
||||
# Only check for Full Debug Symbols support on Solaris if it is
|
||||
# specifically enabled. Hopefully, it can be enabled by default
|
||||
# once the .debuginfo size issues are worked out.
|
||||
|
||||
# Default OBJCOPY comes from the SUNWbinutils package:
|
||||
DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
|
||||
ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
|
||||
# On Solaris AMD64/X64, gobjcopy is not happy and fails:
|
||||
#
|
||||
# usr/sfw/bin/gobjcopy --add-gnu-debuglink=<lib>.debuginfo <lib>.so
|
||||
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
|
||||
# /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
|
||||
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
|
||||
# /usr/sfw/bin/gobjcopy: libsaproc.debuginfo: Bad value
|
||||
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
|
||||
# /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: $(DEF_OBJCOPY) is not working on Solaris AMD64/X64")
|
||||
OBJCOPY=
|
||||
else
|
||||
OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
|
||||
ifneq ($(ALT_OBJCOPY),)
|
||||
_JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
|
||||
# disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
|
||||
OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS
|
||||
# The setting of OBJCOPY above enables the JDK build to import
|
||||
# .debuginfo files from the HotSpot build. However, adding FDS
|
||||
# support to the JDK build will occur in phases so a different
|
||||
# make variable is used to indicate that a particular library
|
||||
# supports FDS.
|
||||
|
||||
ifeq ($(OBJCOPY),)
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
|
||||
else
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
|
||||
|
||||
# Library stripping policies for .debuginfo configs:
|
||||
# all_strip - strips everything from the library
|
||||
# min_strip - strips most stuff from the library; leaves minimum symbols
|
||||
# no_strip - does not strip the library at all
|
||||
#
|
||||
# Oracle security policy requires "all_strip". A waiver was granted on
|
||||
# 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
|
||||
#
|
||||
DEF_STRIP_POLICY="min_strip"
|
||||
ifeq ($(ALT_STRIP_POLICY),)
|
||||
STRIP_POLICY=$(DEF_STRIP_POLICY)
|
||||
else
|
||||
STRIP_POLICY=$(ALT_STRIP_POLICY)
|
||||
endif
|
||||
_JUNK_ := $(shell \
|
||||
echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Java default optimization (-x04/-O2) etc. Applies to the VM.
|
||||
#
|
||||
@ -684,5 +747,6 @@ JA_TARGET_ENCODINGS = eucJP UTF-8 PCK
|
||||
# Settings for the JDI - Serviceability Agent binding.
|
||||
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
|
||||
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
|
||||
SA_DEBUGINFO_NAME = $(LIB_PREFIX)saproc.debuginfo
|
||||
INCLUDE_SA=true
|
||||
|
||||
|
@ -208,7 +208,6 @@ JAVA_JAVA_java = \
|
||||
java/util/Observable.java \
|
||||
java/util/Observer.java \
|
||||
java/util/Properties.java \
|
||||
java/util/XMLUtils.java \
|
||||
java/util/InvalidPropertiesFormatException.java \
|
||||
java/util/PropertyPermission.java \
|
||||
java/util/PropertyResourceBundle.java \
|
||||
|
@ -27,6 +27,9 @@ BUILDDIR = ../..
|
||||
PACKAGE = java.net
|
||||
LIBRARY = net
|
||||
PRODUCT = sun
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -206,7 +206,6 @@ FILES_java += \
|
||||
sun/nio/fs/LinuxUserDefinedFileAttributeView.java \
|
||||
sun/nio/fs/LinuxNativeDispatcher.java \
|
||||
sun/nio/fs/LinuxWatchService.java \
|
||||
sun/nio/fs/PollingWatchService.java \
|
||||
sun/nio/fs/UnixChannelFactory.java \
|
||||
sun/nio/fs/UnixCopyFile.java \
|
||||
sun/nio/fs/UnixDirectoryStream.java \
|
||||
|
@ -58,6 +58,11 @@ LIBJSIG_NAME = $(LIB_PREFIX)jsig.$(LIBRARY_SUFFIX)
|
||||
JVMDB_NAME = $(LIB_PREFIX)jvm$(DB_SUFFIX).$(LIBRARY_SUFFIX)
|
||||
JVMDTRACE_NAME = $(LIB_PREFIX)jvm$(DTRACE_SUFFIX).$(LIBRARY_SUFFIX)
|
||||
|
||||
JVM_DEBUGINFO_NAME = $(LIB_PREFIX)jvm.debuginfo
|
||||
LIBJSIG_DEBUGINFO_NAME = $(LIB_PREFIX)jsig.debuginfo
|
||||
JVMDB_DEBUGINFO_NAME = $(LIB_PREFIX)jvm$(DB_SUFFIX).debuginfo
|
||||
JVMDTRACE_DEBUGINFO_NAME = $(LIB_PREFIX)jvm$(DTRACE_SUFFIX).debuginfo
|
||||
|
||||
CLASSSHARINGDATA_DIR = $(BUILDDIR)/tools/sharing
|
||||
|
||||
# Needed to do file copy
|
||||
@ -79,6 +84,12 @@ INTERNAL_IMPORT_LIST = $(LIBDIR)/classlist
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
IMPORT_LIST = $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_NAME) \
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/Xusage.txt
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/$(JVM_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
IMPORT_LIST =
|
||||
endif
|
||||
@ -88,6 +99,12 @@ ifneq ($(ZERO_BUILD), true)
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_CLIENT_PATH)/$(JVM_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -157,16 +174,40 @@ else # PLATFORM
|
||||
# NOT Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv NOT Windows
|
||||
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(LIBJSIG_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJSIG_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain the target of the symlink
|
||||
ifneq ($(wildcard $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJSIG_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM), solaris)
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/$(JVMDB_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
# The conditional can be removed when import JDKs contain these files.
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/$(JVMDTRACE_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDTRACE_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/$(JVMDTRACE_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
$(warning WARNING: $(HOTSPOT_SERVER_PATH)/$(JVMDB_NAME) not found!)
|
||||
endif
|
||||
@ -177,17 +218,37 @@ ifneq ($(ZERO_BUILD), true)
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain the target of the symlink
|
||||
ifneq ($(wildcard $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJSIG_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM), solaris)
|
||||
# solaris vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv solaris
|
||||
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_CLIENT_PATH)/$(JVMDB_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
|
||||
# The conditional can be removed when import JDKs contain these files.
|
||||
ifneq ($(wildcard $(HOTSPOT_CLIENT_PATH)/$(JVMDTRACE_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDTRACE_NAME)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_NAME)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDTRACE_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_CLIENT_PATH)/$(JVMDTRACE_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_DEBUGINFO_NAME)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
$(warning WARNING: $(HOTSPOT_CLIENT_PATH)/$(JVMDTRACE_NAME) not found!)
|
||||
endif
|
||||
@ -196,6 +257,12 @@ ifndef BUILD_CLIENT_ONLY
|
||||
# The conditional can be removed when import JDKs contain these files.
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
$(warning WARNING: $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_NAME) not found!)
|
||||
endif
|
||||
@ -203,6 +270,12 @@ ifndef BUILD_CLIENT_ONLY
|
||||
# The conditional can be removed when import JDKs contain these files.
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/64/$(JVMDTRACE_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDTRACE_NAME)
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_SERVER_PATH)/64/$(JVMDTRACE_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
$(warning WARNING: $(HOTSPOT_SERVER_PATH)/64/$(JVMDTRACE_NAME) not found!)
|
||||
endif
|
||||
@ -229,6 +302,11 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_NAM
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_DEBUGINFO_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
||||
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVM_NAME): $(HOTSPOT_KERNEL_PATH)/$(JVM_NAME)
|
||||
$(install-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
@ -237,15 +315,33 @@ $(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJ
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME): $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJSIG_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) \
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_NAME):
|
||||
@$(prep-target)
|
||||
$(call install-sym-link, ../$(LIBJSIG_NAME))
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME) \
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME):
|
||||
@$(prep-target)
|
||||
$(call install-sym-link, ../$(LIBJSIG_DEBUGINFO_NAME))
|
||||
endif
|
||||
else
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME):
|
||||
@$(prep-target)
|
||||
$(call install-sym-link, ../$(LIBJSIG_NAME))
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_DEBUGINFO_NAME):
|
||||
@$(prep-target)
|
||||
$(call install-sym-link, ../$(LIBJSIG_DEBUGINFO_NAME))
|
||||
endif
|
||||
endif
|
||||
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVMDB_NAME)
|
||||
@ -256,6 +352,14 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_NAME): $(HOTSPOT_CLIENT_PATH)/64/$
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_DEBUGINFO_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVMDB_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_DEBUGINFO_NAME): $(HOTSPOT_CLIENT_PATH)/64/$(JVMDB_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDB_NAME)
|
||||
$(install-import-file)
|
||||
@ -264,6 +368,14 @@ $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDB
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_NAME): $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_NAME)
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_DEBUGINFO_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDB_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_DEBUGINFO_NAME): $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDTRACE_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVMDTRACE_NAME)
|
||||
@ -274,6 +386,14 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDTRACE_NAME): $(HOTSPOT_CLIENT_PATH)/
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDTRACE_DEBUGINFO_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDTRACE_DEBUGINFO_NAME): $(HOTSPOT_CLIENT_PATH)/64/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
||||
ifndef BUILD_CLIENT_ONLY
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDTRACE_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDTRACE_NAME)
|
||||
$(install-import-file)
|
||||
@ -287,6 +407,17 @@ $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_NAME): $(HOTSPOT_SERVER_PATH)/$(JVM_NAM
|
||||
$(install-import-file)
|
||||
@$(call binary_file_verification,$@)
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDTRACE_DEBUGINFO_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDTRACE_DEBUGINFO_NAME): $(HOTSPOT_SERVER_PATH)/64/$(JVMDTRACE_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_DEBUGINFO_NAME): $(HOTSPOT_SERVER_PATH)/$(JVM_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/Xusage.txt : $(HOTSPOT_SERVER_PATH)/Xusage.txt
|
||||
$(install-import-file)
|
||||
endif
|
||||
|
@ -56,6 +56,12 @@ ifeq ($(INCLUDE_SA), true)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SAMAP_NAME) \
|
||||
$(LIB_LOCATION)/$(SAPDB_NAME)
|
||||
endif
|
||||
ifneq ($(OBJCOPY),)
|
||||
# the import JDK may not contain .debuginfo files
|
||||
ifneq ($(wildcard $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(SA_DEBUGINFO_NAME)),)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SA_DEBUGINFO_NAME)
|
||||
endif
|
||||
endif
|
||||
endif # INCLUDE_SA
|
||||
|
||||
|
||||
@ -79,6 +85,11 @@ $(LIB_LOCATION)/$(SAPDB_NAME): $(HOTSPOT_SALIB_PATH)/$(SAPDB_NAME)
|
||||
$(LIB_LOCATION)/$(SAMAP_NAME): $(HOTSPOT_SALIB_PATH)/$(SAMAP_NAME)
|
||||
$(install-import-file)
|
||||
endif # windows
|
||||
|
||||
ifneq ($(OBJCOPY),)
|
||||
$(LIB_LOCATION)/$(SA_DEBUGINFO_NAME): $(HOTSPOT_SALIB_PATH)/$(SA_DEBUGINFO_NAME)
|
||||
$(install-import-file)
|
||||
endif
|
||||
endif # INCLUDE_SA
|
||||
|
||||
all: $(IMPORT_LIST)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1998, 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
|
||||
|
@ -28,7 +28,6 @@
|
||||
#
|
||||
|
||||
BUILDDIR = ../..
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -5,7 +5,7 @@ Working on OpenJDK using NetBeans
|
||||
|
||||
Getting Started
|
||||
In addition to the source bundle for Open JDK, you'll need to download
|
||||
and install copies of the JDK and of NetBeans 6. And if you want to run
|
||||
and install copies of the JDK and of NetBeans. And if you want to run
|
||||
tests on the JDK (you do want to run tests, right?), you'll need to
|
||||
install the jtreg test harness.
|
||||
|
||||
@ -20,30 +20,28 @@ Getting Started
|
||||
|
||||
Downloading the JDK
|
||||
You've probably done this a million times. Download and install it
|
||||
from http://java.sun.com/javase
|
||||
from http://www.oracle.com/technetwork/java/javase/overview/index.html
|
||||
|
||||
Downloading the OpenJDK sources
|
||||
Since you're reading this, d you've already downloaded the OpenJDK
|
||||
source bundle. Later in this document we'll refer to the location
|
||||
where you installed the Open JDK sources as *install-dir*.
|
||||
|
||||
Downloading a pre-built, JDK 7
|
||||
Downloading a pre-built, JDK 8
|
||||
This will be necessary to do builds of some of the projects. In
|
||||
general, you want to download and install a pre-built JDK that
|
||||
corresponds to the OpenJDK sources you download. Building the entire
|
||||
OpenJDK depends on a few parts of the pre-built JDK. Get this from
|
||||
http://download.java.net/jdk7/binaries
|
||||
http://download.java.net/jdk8/binaries
|
||||
|
||||
Note: For working on certain projects, like JMX and JConsole, you
|
||||
may find convenient to use a pre-built version of JDK 7 (or
|
||||
Note: For working on certain projects, like JMX and JConsole, you
|
||||
may find convenient to use a pre-built version of JDK 8 (or
|
||||
OpenJDK) rather than building your own. This will allow you
|
||||
to build only that part of the OpenJDK sources which correspond
|
||||
to that project.
|
||||
to that project.
|
||||
|
||||
NetBeans 6
|
||||
Yep, NetBeans *6*. Nope, not FCS'd yet. We're on the edge here,
|
||||
enjoy it! Get the latest working development build of NetBeans 6
|
||||
from http://netbeans.org
|
||||
NetBeans 7.0 or later
|
||||
Older versions may also work but are unsupported.
|
||||
|
||||
jtreg
|
||||
"jtreg" is the test harness for running OpenJDK's regression tests.
|
||||
@ -51,7 +49,7 @@ Getting Started
|
||||
|
||||
Ant
|
||||
NetBeans comes with ant, but if you use a separately-installed copy
|
||||
please make sure that it is at least version 1.7.0.
|
||||
please make sure that it is at least version 1.8.1.
|
||||
|
||||
Configuring
|
||||
Building OpenJDK is hard and complex. No, strike that. While it's not
|
||||
@ -92,8 +90,8 @@ Configuring
|
||||
situation:
|
||||
|
||||
make.options=\
|
||||
ALT_BOOTDIR=/home/me/bin/jdk1.6.0 \
|
||||
ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.7.0 \
|
||||
ALT_BOOTDIR=/home/me/bin/jdk1.7.0 \
|
||||
ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.8.0 \
|
||||
OPENJDK=true
|
||||
|
||||
The trailing '\' are important, so that make gets the above as a
|
||||
@ -107,7 +105,7 @@ Configuring
|
||||
Windows-specific configuration
|
||||
First, please note that the entire JDK cannot currently be built on
|
||||
Windows platforms. This will likely limit your ability to build
|
||||
make-based projects. See
|
||||
make-based projects. See
|
||||
*install-dir*/jdk/make/README-builds.html
|
||||
for full information on issues with building on the Windows platform.
|
||||
|
||||
@ -141,7 +139,7 @@ Configuring
|
||||
editor.
|
||||
|
||||
Locale Requirements
|
||||
To build the Open JDK sources, be certain that you are using the "C"
|
||||
To build the OpenJDK sources, be certain that you are using the "C"
|
||||
locale on Unix (R) platforms, or "English (United States)" locale on
|
||||
Windows.
|
||||
|
||||
@ -220,13 +218,13 @@ Provided NetBeans projects
|
||||
running and debugging JConsole.
|
||||
|
||||
This ant-based project does *not* require that you build the jdk
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
|
||||
Java (TM) Management Extensions (JMX(TM)) API (directory "jmx")
|
||||
For working on JMX source code. Creates ../dist/lib/jmx.jar.
|
||||
|
||||
This ant-based project does *not* require that you build the jdk
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
|
||||
Jar & Zip (directory "jarzip")
|
||||
For working on jar & zip. It builds the zip library (including
|
||||
@ -242,12 +240,12 @@ Provided NetBeans projects
|
||||
running and debugging the SampleTree demo.
|
||||
|
||||
This ant-based project does *not* require that you build the jdk
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
project first, provided that you use a pre-built version of JDK 7.
|
||||
|
||||
In addition, there are projects for building the compiler, javadoc,
|
||||
and related tools, in the OpenJDK langtools component. These
|
||||
projects are separate from those described here, and have their
|
||||
own set of guidelines and conventions. For more details, see the
|
||||
own set of guidelines and conventions. For more details, see the
|
||||
README files in make/netbeans in the OpenJDK langtools component.
|
||||
|
||||
Running Tests
|
||||
@ -603,13 +601,6 @@ Appendix 1: Customizations
|
||||
* -clean-make
|
||||
|
||||
Known Issues
|
||||
Tests won't run: waiting for lock
|
||||
Occasionally when running tests, there will be a delay, followed by a
|
||||
message like this:
|
||||
Waiting to lock test result cache for
|
||||
/tmp/jdk/build/linux-i586/jtreg/jconsole/JTwork for 20 seconds
|
||||
The workaround is to stop the tests, rm -rf the offending jtreg/<project>
|
||||
directory by hand, and re-run the tests.
|
||||
|
||||
Can't run nor debug a single test in the JConsole test
|
||||
In most projects, you can run a single test by opening it in the editor,
|
||||
|
@ -31,8 +31,8 @@
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
|
||||
<source-folder style="packages">
|
||||
<label>Closed-Source Packages</label>
|
||||
<source-folder style="tree">
|
||||
<label>Closed Sources</label>
|
||||
<location>${root}/src/closed/share/classes</location>
|
||||
<includes>${includes}</includes>
|
||||
<excludes>${excludes}</excludes>
|
||||
|
@ -38,7 +38,12 @@
|
||||
<package-root>${root}/src/solaris/classes</package-root>
|
||||
<classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
|
||||
<built-to>${root}/build/${platform}-${arch}/classes</built-to>
|
||||
<javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
|
||||
<javadoc-built-to>${root}/build/${platform}-${arch}/docs/api</javadoc-built-to>
|
||||
<source-level>1.7</source-level>
|
||||
</compilation-unit>
|
||||
<compilation-unit>
|
||||
<package-root>${root}/test</package-root>
|
||||
<unit-tests/>
|
||||
<source-level>1.7</source-level>
|
||||
</compilation-unit>
|
||||
</java-data>
|
||||
|
@ -36,7 +36,12 @@
|
||||
<package-root>${root}/src/share/classes</package-root>
|
||||
<classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
|
||||
<built-to>${root}/build/${platform}-${arch}/classes</built-to>
|
||||
<javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
|
||||
<javadoc-built-to>${root}/build/${platform}-${arch}/docs/api</javadoc-built-to>
|
||||
<source-level>1.7</source-level>
|
||||
</compilation-unit>
|
||||
<compilation-unit>
|
||||
<package-root>${root}/test</package-root>
|
||||
<unit-tests/>
|
||||
<source-level>1.7</source-level>
|
||||
</compilation-unit>
|
||||
</java-data>
|
||||
|
@ -31,7 +31,7 @@
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
|
||||
<source-folder style="packages">
|
||||
<source-folder style="tree">
|
||||
<label>Tests</label>
|
||||
<location>${root}/test</location>
|
||||
<includes>${jtreg.tests}</includes>
|
||||
|
@ -31,7 +31,7 @@
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
|
||||
<source-folder style="packages">
|
||||
<source-folder style="tree">
|
||||
<label>Samples</label>
|
||||
<location>${root}/src/share/sample</location>
|
||||
<includes>${samples}</includes>
|
||||
|
@ -31,7 +31,7 @@
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
|
||||
<source-folder style="packages">
|
||||
<source-folder style="tree">
|
||||
<label>Sources for All Platforms</label>
|
||||
<location>${root}/src/share/classes</location>
|
||||
<includes>${includes}</includes>
|
||||
|
@ -35,7 +35,7 @@
|
||||
UNIX is a registered trademark in the United States and other countries,
|
||||
exclusively licensed through X/Open Company, Ltd.
|
||||
-->
|
||||
<source-folder style="packages">
|
||||
<source-folder style="tree">
|
||||
<label>Sources for Unix® Platform</label>
|
||||
<location>${root}/src/solaris/classes</location>
|
||||
<includes>${includes}</includes>
|
||||
|
@ -31,7 +31,7 @@
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
|
||||
<source-folder style="packages">
|
||||
<source-folder style="tree">
|
||||
<label>Sources for Windows Platform</label>
|
||||
<location>${root}/src/windows/classes</location>
|
||||
<includes>${includes}</includes>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@ -36,11 +36,13 @@
|
||||
<!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
|
||||
<!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
|
||||
<!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
|
||||
<!ENTITY jtreg-sources SYSTEM "../../common/jtreg-sources.ent">
|
||||
<!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
|
||||
<!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
|
||||
<!ENTITY share-view SYSTEM "../../common/share-view.ent">
|
||||
<!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
|
||||
<!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
|
||||
<!ENTITY jtreg-view SYSTEM "../../common/jtreg-view.ent">
|
||||
<!ENTITY file-view SYSTEM "../../common/file-view.ent">
|
||||
<!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
|
||||
<!ENTITY java-data-native SYSTEM "../../common/java-data-native.ent">
|
||||
@ -59,6 +61,7 @@
|
||||
&unix-sources;
|
||||
&windows-sources;
|
||||
&build-folder;
|
||||
&jtreg-sources;
|
||||
</folders>
|
||||
<ide-actions>
|
||||
<action name="build">
|
||||
@ -82,6 +85,7 @@
|
||||
&share-view;
|
||||
&unix-view;
|
||||
&windows-view;
|
||||
&jtreg-view;
|
||||
&file-view;
|
||||
</items>
|
||||
<context-menu>
|
||||
|
@ -68,7 +68,7 @@ else
|
||||
endif
|
||||
|
||||
# nio need to be compiled before awt to have all charsets ready
|
||||
SUBDIRS = jar security javazic misc net nio text launcher
|
||||
SUBDIRS = jar security javazic misc net nio text util launcher
|
||||
|
||||
ifdef BUILD_HEADLESS_ONLY
|
||||
DISPLAY_LIBS = awt $(HEADLESS_SUBDIR)
|
||||
|
@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2011g
|
||||
tzdata2011j
|
||||
|
@ -80,7 +80,7 @@
|
||||
# I invented the following abbreviations; corrections are welcome!
|
||||
# 2:00 WAST West Africa Summer Time
|
||||
# 2:30 BEAT British East Africa Time (no longer used)
|
||||
# 2:44:45 BEAUT British East Africa Unified Time (no longer used)
|
||||
# 2:45 BEAUT British East Africa Unified Time (no longer used)
|
||||
# 3:00 CAST Central Africa Summer Time (no longer used)
|
||||
# 3:00 SAST South Africa Summer Time (no longer used)
|
||||
# 3:00 EAT East Africa Time
|
||||
@ -418,7 +418,7 @@ Zone Africa/Bissau -1:02:20 - LMT 1911 May 26
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - BEAT 1940
|
||||
2:44:45 - BEAUT 1960
|
||||
2:45 - BEAUT 1960
|
||||
3:00 - EAT
|
||||
|
||||
# Lesotho
|
||||
@ -979,6 +979,11 @@ Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
|
||||
# South Sudan
|
||||
Zone Africa/Juba 2:06:24 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
|
||||
# Swaziland
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
|
||||
@ -988,7 +993,7 @@ Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931
|
||||
3:00 - EAT 1948
|
||||
2:44:45 - BEAUT 1961
|
||||
2:45 - BEAUT 1961
|
||||
3:00 - EAT
|
||||
|
||||
# Togo
|
||||
@ -1114,7 +1119,7 @@ Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
Zone Africa/Kampala 2:09:40 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - BEAT 1948
|
||||
2:44:45 - BEAUT 1957
|
||||
2:45 - BEAUT 1957
|
||||
3:00 - EAT
|
||||
|
||||
# Zambia
|
||||
|
@ -41,18 +41,6 @@
|
||||
# I made up all time zone abbreviations mentioned here; corrections welcome!
|
||||
# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
|
||||
|
||||
# These rules are stolen from the `europe' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule RussAQ 1981 1984 - Apr 1 0:00 1:00 S
|
||||
Rule RussAQ 1981 1983 - Oct 1 0:00 0 -
|
||||
Rule RussAQ 1984 1991 - Sep lastSun 2:00s 0 -
|
||||
Rule RussAQ 1985 1991 - Mar lastSun 2:00s 1:00 S
|
||||
Rule RussAQ 1992 only - Mar lastSat 23:00 1:00 S
|
||||
Rule RussAQ 1992 only - Sep lastSat 23:00 0 -
|
||||
Rule RussAQ 1993 max - Mar lastSun 2:00s 1:00 S
|
||||
Rule RussAQ 1993 1995 - Sep lastSun 2:00s 0 -
|
||||
Rule RussAQ 1996 max - Oct lastSun 2:00s 0 -
|
||||
|
||||
# These rules are stolen from the `southamerica' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
|
||||
|
@ -99,6 +99,10 @@ Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S
|
||||
Rule RussiaAsia 1993 1995 - Sep lastSun 2:00s 0 -
|
||||
Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 -
|
||||
|
||||
# From Arthur David Olson (2011-06-15):
|
||||
# While Russia abandoned DST in 2011, Armenia may choose to
|
||||
# follow Russia's "old" rules.
|
||||
|
||||
# Afghanistan
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Kabul 4:36:48 - LMT 1890
|
||||
|
@ -521,7 +521,7 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
|
||||
# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
|
||||
# </a>
|
||||
|
||||
# From Raymond Hughes (2010-10-07):
|
||||
# From Laupue Raymond Hughes (2010-10-07):
|
||||
# Please see
|
||||
# <a href="http://www.mcil.gov.ws">
|
||||
# http://www.mcil.gov.ws
|
||||
@ -531,7 +531,7 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
|
||||
# to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
|
||||
# backwards from 1:00am to 12:00am"
|
||||
|
||||
# From Raymond Hughes (2011-03-07)
|
||||
# From Laupue Raymond Hughes (2011-03-07):
|
||||
# I believe this will be posted shortly on the website
|
||||
# <a href="http://www.mcil.gov.ws">
|
||||
# www.mcil.gov.ws
|
||||
@ -551,12 +551,74 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
|
||||
# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
|
||||
# INDUSTRY AND LABOUR 28th February 2011
|
||||
|
||||
# From David Zuelke (2011-05-09):
|
||||
# Subject: Samoa to move timezone from east to west of international date line
|
||||
#
|
||||
# <a href="http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963">
|
||||
# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
|
||||
# </a>
|
||||
|
||||
# From Mark Sim-Smith (2011-08-17):
|
||||
# I have been in contact with Leilani Tuala Warren from the Samoa Law
|
||||
# Reform Commission, and she has sent me a copy of the Bill that she
|
||||
# confirmed has been passed...Most of the sections are about maps rather
|
||||
# than the time zone change, but I'll paste the relevant bits below. But
|
||||
# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
|
||||
# changes from UTC-11 to UTC+13:
|
||||
#
|
||||
# International Date Line Bill 2011
|
||||
#
|
||||
# AN ACT to provide for the change to standard time in Samoa and to make
|
||||
# consequential amendments to the position of the International Date
|
||||
# Line, and for related purposes.
|
||||
#
|
||||
# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
|
||||
# assembled as follows:
|
||||
#
|
||||
# 1. Short title and commencement-(1) This Act may be cited as the
|
||||
# International Date Line Act 2011. (2) Except for section 5(3) this Act
|
||||
# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
|
||||
# Section 5(3) commences on the date of assent by the Head of State.
|
||||
#
|
||||
# [snip]
|
||||
#
|
||||
# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
|
||||
# other statute of Samoa which refers to 'Samoa standard time' means the
|
||||
# time 13 hours in advance of Co-ordinated Universal Time.
|
||||
#
|
||||
# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
|
||||
# standard time shall be set at 13 hours in advance of Co-ordinated
|
||||
# Universal Time for the whole of Samoa. (2) All references to Samoa's
|
||||
# time zone and to Samoa standard time in Samoa in all legislation and
|
||||
# instruments after the commencement of this Act shall be references to
|
||||
# Samoa standard time as provided for in this Act. (3) Nothing in this
|
||||
# Act affects the provisions of the Daylight Saving Act 2009, except that
|
||||
# it defines Samoa standard time....
|
||||
|
||||
# From Laupue Raymond Hughes (2011-09-02):
|
||||
# <a href="http://www.mcil.gov.ws/mcil_publications.html">
|
||||
# http://www.mcil.gov.ws/mcil_publications.html
|
||||
# </a>
|
||||
#
|
||||
# here is the official website publication for Samoa DST and dateline change
|
||||
#
|
||||
# DST
|
||||
# Year End Time Start Time
|
||||
# 2011 - - - - - - 24 September 3:00am to 4:00am
|
||||
# 2012 01 April 4:00am to 3:00am - - - - - -
|
||||
#
|
||||
# Dateline Change skip Friday 30th Dec 2011
|
||||
# Thursday 29th December 2011 23:59:59 Hours
|
||||
# Saturday 31st December 2011 00:00:00 Hours
|
||||
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
|
||||
-11:26:56 - LMT 1911
|
||||
-11:30 - SAMT 1950 # Samoa Time
|
||||
-11:00 - WST 2010 Sep 26
|
||||
-11:00 1:00 WSDT 2011 Apr 2 4:00
|
||||
-11:00 - WST
|
||||
-11:00 - WST 2011 Sep 24 3:00
|
||||
-11:00 1:00 WSDT 2011 Dec 30
|
||||
13:00 1:00 WSDT 2012 Apr 1 4:00
|
||||
13:00 - WST
|
||||
|
||||
# Solomon Is
|
||||
# excludes Bougainville, for which see Papua New Guinea
|
||||
@ -1228,7 +1290,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# Lord Howe Island Board (controlling authority for the Island) is
|
||||
# seeking the community's views on various options for summer time
|
||||
# arrangements on the Island, e.g. advance clocks by 1 full hour
|
||||
# instead of only 30 minutes. Dependant on the wishes of residents
|
||||
# instead of only 30 minutes. [Dependent] on the wishes of residents
|
||||
# the Board may approach the NSW government to change the existing
|
||||
# arrangements. The starting date for summer time on the Island will
|
||||
# however always coincide with the rest of NSW.
|
||||
@ -1354,7 +1416,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# From Paul Eggert (1996-01-22):
|
||||
# Today's _Wall Street Journal_ (page 1) reports that Kiribati
|
||||
# ``declared it the same day throught the country as of Jan. 1, 1995''
|
||||
# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
|
||||
# as part of the competition to be first into the 21st century.
|
||||
|
||||
|
||||
|
@ -587,6 +587,26 @@ Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
|
||||
Rule Russia 1993 1995 - Sep lastSun 2:00s 0 -
|
||||
Rule Russia 1996 max - Oct lastSun 2:00s 0 -
|
||||
|
||||
# From Alexander Krivenyshev (2011-06-14):
|
||||
# According to Kremlin press service, Russian President Dmitry Medvedev
|
||||
# signed a federal law "On calculation of time" on June 9, 2011.
|
||||
# According to the law Russia is abolishing daylight saving time.
|
||||
#
|
||||
# Medvedev signed a law "On the Calculation of Time" (in russian):
|
||||
# <a href="http://bmockbe.ru/events/?ID=7583">
|
||||
# http://bmockbe.ru/events/?ID=7583
|
||||
# </a>
|
||||
#
|
||||
# Medvedev signed a law on the calculation of the time (in russian):
|
||||
# <a href="http://www.regnum.ru/news/polit/1413906.html">
|
||||
# http://www.regnum.ru/news/polit/1413906.html
|
||||
# </a>
|
||||
|
||||
# From Arthur David Olson (2011-06-15):
|
||||
# Take "abolishing daylight saving time" to mean that time is now considered
|
||||
# to be standard.
|
||||
# At least for now, keep the "old" Russia rules for the benefit of Belarus.
|
||||
|
||||
# These are for backward compatibility with older versions.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@ -2035,7 +2055,8 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
|
||||
1:00 C-Eur CE%sT 1945
|
||||
2:00 Poland CE%sT 1946
|
||||
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
||||
2:00 Russia EE%sT
|
||||
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
||||
3:00 - KALT
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
# Respublika Adygeya, Arkhangel'skaya oblast',
|
||||
@ -2064,7 +2085,8 @@ Zone Europe/Moscow 2:30:20 - LMT 1880
|
||||
2:00 - EET 1930 Jun 21
|
||||
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
||||
2:00 Russia EE%sT 1992 Jan 19 2:00s
|
||||
3:00 Russia MSK/MSD
|
||||
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
|
||||
4:00 - MSK
|
||||
#
|
||||
# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
|
||||
# Volgogradskaya oblast'. Shanks & Pottenger say Kirov is still at +0400
|
||||
@ -2077,7 +2099,8 @@ Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T
|
||||
3:00 Russia VOL%sT 1991 Mar 31 2:00s
|
||||
4:00 - VOLT 1992 Mar 29 2:00s
|
||||
3:00 Russia VOL%sT
|
||||
3:00 Russia VOL%sT 2011 Mar 27 2:00s
|
||||
4:00 - VOLT
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
# Samarskaya oblast', Udmyrtskaya respublika
|
||||
@ -2089,7 +2112,8 @@ Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00
|
||||
2:00 Russia KUY%sT 1991 Sep 29 2:00s
|
||||
3:00 - KUYT 1991 Oct 20 3:00
|
||||
4:00 Russia SAM%sT 2010 Mar 28 2:00s # Samara Time
|
||||
3:00 Russia SAM%sT
|
||||
3:00 Russia SAM%sT 2011 Mar 27 2:00s
|
||||
4:00 - SAMT
|
||||
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
@ -2102,7 +2126,8 @@ Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00
|
||||
4:00 - SVET 1930 Jun 21 # Sverdlovsk Time
|
||||
5:00 Russia SVE%sT 1991 Mar 31 2:00s
|
||||
4:00 Russia SVE%sT 1992 Jan 19 2:00s
|
||||
5:00 Russia YEK%sT # Yekaterinburg Time
|
||||
5:00 Russia YEK%sT 2011 Mar 27 2:00s
|
||||
6:00 - YEKT # Yekaterinburg Time
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
|
||||
@ -2110,7 +2135,8 @@ Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14
|
||||
5:00 - OMST 1930 Jun 21 # Omsk TIme
|
||||
6:00 Russia OMS%sT 1991 Mar 31 2:00s
|
||||
5:00 Russia OMS%sT 1992 Jan 19 2:00s
|
||||
6:00 Russia OMS%sT
|
||||
6:00 Russia OMS%sT 2011 Mar 27 2:00s
|
||||
7:00 - OMST
|
||||
#
|
||||
# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
|
||||
# not clear when it switched from +7 to +6.
|
||||
@ -2120,7 +2146,8 @@ Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
|
||||
7:00 Russia NOV%sT 1991 Mar 31 2:00s
|
||||
6:00 Russia NOV%sT 1992 Jan 19 2:00s
|
||||
7:00 Russia NOV%sT 1993 May 23 # say Shanks & P.
|
||||
6:00 Russia NOV%sT
|
||||
6:00 Russia NOV%sT 2011 Mar 27 2:00s
|
||||
7:00 - NOVT
|
||||
|
||||
# From Alexander Krivenyshev (2009-10-13):
|
||||
# Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
|
||||
@ -2153,7 +2180,8 @@ Zone Asia/Novokuznetsk 5:48:48 - NMT 1920 Jan 6
|
||||
7:00 Russia KRA%sT 1991 Mar 31 2:00s
|
||||
6:00 Russia KRA%sT 1992 Jan 19 2:00s
|
||||
7:00 Russia KRA%sT 2010 Mar 28 2:00s
|
||||
6:00 Russia NOV%sT # Novosibirsk/Novokuznetsk Time
|
||||
6:00 Russia NOV%sT 2011 Mar 27 2:00s
|
||||
7:00 - NOVT # Novosibirsk/Novokuznetsk Time
|
||||
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
@ -2164,7 +2192,8 @@ Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6
|
||||
6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time
|
||||
7:00 Russia KRA%sT 1991 Mar 31 2:00s
|
||||
6:00 Russia KRA%sT 1992 Jan 19 2:00s
|
||||
7:00 Russia KRA%sT
|
||||
7:00 Russia KRA%sT 2011 Mar 27 2:00s
|
||||
8:00 - KRAT
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
# Respublika Buryatiya, Irkutskaya oblast',
|
||||
@ -2174,7 +2203,8 @@ Zone Asia/Irkutsk 6:57:20 - LMT 1880
|
||||
7:00 - IRKT 1930 Jun 21 # Irkutsk Time
|
||||
8:00 Russia IRK%sT 1991 Mar 31 2:00s
|
||||
7:00 Russia IRK%sT 1992 Jan 19 2:00s
|
||||
8:00 Russia IRK%sT
|
||||
8:00 Russia IRK%sT 2011 Mar 27 2:00s
|
||||
9:00 - IRKT
|
||||
#
|
||||
# From Oscar van Vlijmen (2003-10-18): [This region consists of]
|
||||
# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
|
||||
@ -2197,7 +2227,8 @@ Zone Asia/Yakutsk 8:38:40 - LMT 1919 Dec 15
|
||||
8:00 - YAKT 1930 Jun 21 # Yakutsk Time
|
||||
9:00 Russia YAK%sT 1991 Mar 31 2:00s
|
||||
8:00 Russia YAK%sT 1992 Jan 19 2:00s
|
||||
9:00 Russia YAK%sT
|
||||
9:00 Russia YAK%sT 2011 Mar 27 2:00s
|
||||
10:00 - YAKT
|
||||
#
|
||||
# From Oscar van Vlijmen (2003-10-18): [This region consists of]
|
||||
# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
|
||||
@ -2210,7 +2241,8 @@ Zone Asia/Vladivostok 8:47:44 - LMT 1922 Nov 15
|
||||
9:00 - VLAT 1930 Jun 21 # Vladivostok Time
|
||||
10:00 Russia VLA%sT 1991 Mar 31 2:00s
|
||||
9:00 Russia VLA%sST 1992 Jan 19 2:00s
|
||||
10:00 Russia VLA%sT
|
||||
10:00 Russia VLA%sT 2011 Mar 27 2:00s
|
||||
11:00 - VLAT
|
||||
#
|
||||
# Sakhalinskaya oblast'.
|
||||
# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
|
||||
@ -2220,7 +2252,8 @@ Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
|
||||
11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T.
|
||||
10:00 Russia SAK%sT 1992 Jan 19 2:00s
|
||||
11:00 Russia SAK%sT 1997 Mar lastSun 2:00s
|
||||
10:00 Russia SAK%sT
|
||||
10:00 Russia SAK%sT 2011 Mar 27 2:00s
|
||||
11:00 - SAKT
|
||||
#
|
||||
# From Oscar van Vlijmen (2003-10-18): [This region consists of]
|
||||
# Magadanskaya oblast', Respublika Sakha (Yakutiya).
|
||||
@ -2233,7 +2266,8 @@ Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
|
||||
10:00 - MAGT 1930 Jun 21 # Magadan Time
|
||||
11:00 Russia MAG%sT 1991 Mar 31 2:00s
|
||||
10:00 Russia MAG%sT 1992 Jan 19 2:00s
|
||||
11:00 Russia MAG%sT
|
||||
11:00 Russia MAG%sT 2011 Mar 27 2:00s
|
||||
12:00 - MAGT
|
||||
#
|
||||
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
|
||||
# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
|
||||
@ -2244,7 +2278,8 @@ Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
|
||||
12:00 Russia PET%sT 1991 Mar 31 2:00s
|
||||
11:00 Russia PET%sT 1992 Jan 19 2:00s
|
||||
12:00 Russia PET%sT 2010 Mar 28 2:00s
|
||||
11:00 Russia PET%sT
|
||||
11:00 Russia PET%sT 2011 Mar 27 2:00s
|
||||
12:00 - PETT
|
||||
#
|
||||
# Chukotskij avtonomnyj okrug
|
||||
Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
|
||||
@ -2253,7 +2288,8 @@ Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
|
||||
12:00 Russia ANA%sT 1991 Mar 31 2:00s
|
||||
11:00 Russia ANA%sT 1992 Jan 19 2:00s
|
||||
12:00 Russia ANA%sT 2010 Mar 28 2:00s
|
||||
11:00 Russia ANA%sT
|
||||
11:00 Russia ANA%sT 2011 Mar 27 2:00s
|
||||
12:00 - ANAT
|
||||
|
||||
# Serbia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
|
@ -43,6 +43,9 @@
|
||||
#
|
||||
# Lines beginning with `#' are comments.
|
||||
#
|
||||
# From Arthur David Olson (2011-08-17):
|
||||
# Resynchronized today with the ISO 3166 site (adding SS for South Sudan).
|
||||
#
|
||||
#country-
|
||||
#code country name
|
||||
AD Andorra
|
||||
@ -52,7 +55,6 @@ AG Antigua & Barbuda
|
||||
AI Anguilla
|
||||
AL Albania
|
||||
AM Armenia
|
||||
AN Netherlands Antilles
|
||||
AO Angola
|
||||
AQ Antarctica
|
||||
AR Argentina
|
||||
@ -75,6 +77,7 @@ BL St Barthelemy
|
||||
BM Bermuda
|
||||
BN Brunei
|
||||
BO Bolivia
|
||||
BQ Bonaire Sint Eustatius & Saba
|
||||
BR Brazil
|
||||
BS Bahamas
|
||||
BT Bhutan
|
||||
@ -97,6 +100,7 @@ CO Colombia
|
||||
CR Costa Rica
|
||||
CU Cuba
|
||||
CV Cape Verde
|
||||
CW Curacao
|
||||
CX Christmas Island
|
||||
CY Cyprus
|
||||
CZ Czech Republic
|
||||
@ -251,8 +255,10 @@ SM San Marino
|
||||
SN Senegal
|
||||
SO Somalia
|
||||
SR Suriname
|
||||
SS South Sudan
|
||||
ST Sao Tome & Principe
|
||||
SV El Salvador
|
||||
SX Sint Maarten
|
||||
SY Syria
|
||||
SZ Swaziland
|
||||
TC Turks & Caicos Is
|
||||
|
@ -490,6 +490,10 @@ Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
|
||||
# own time. I asked about daylight saving; they said it wasn't used. I
|
||||
# did not inquire about practices in the past.
|
||||
|
||||
# From Arthur David Olson (2011-08-17):
|
||||
# For lack of better information, assume that Metlakatla's
|
||||
# abandonment of use of daylight saving resulted from the 1983 vote.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Juneau 15:02:19 - LMT 1867 Oct 18
|
||||
-8:57:41 - LMT 1900 Aug 20 12:00
|
||||
@ -515,7 +519,7 @@ Zone America/Metlakatla 15:13:42 - LMT 1867 Oct 18
|
||||
-8:00 US P%sT 1946
|
||||
-8:00 - PST 1969
|
||||
-8:00 US P%sT 1983 Oct 30 2:00
|
||||
-8:00 US MeST
|
||||
-8:00 - MeST
|
||||
Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18
|
||||
-9:18:55 - LMT 1900 Aug 20 12:00
|
||||
-9:00 - YST 1942
|
||||
@ -615,8 +619,8 @@ Zone Pacific/Honolulu -10:31:26 - LMT 1896 Jan 13 12:00 #Schmitt&Cox
|
||||
-10:30 - HST 1933 Apr 30 2:00 #Laws 1933
|
||||
-10:30 1:00 HDT 1933 May 21 12:00 #Laws 1933+12
|
||||
-10:30 - HST 1942 Feb 09 2:00 #Schmitt&Cox+2
|
||||
-10:30 1:00 HDT 1945 Sep 30 2:00 #Schmitt&Fox+2
|
||||
-10:30 US H%sT 1947 Jun 8 2:00 #Schmitt&Fox+2
|
||||
-10:30 1:00 HDT 1945 Sep 30 2:00 #Schmitt&Cox+2
|
||||
-10:30 - HST 1947 Jun 8 2:00 #Schmitt&Cox+2
|
||||
-10:00 - HST
|
||||
|
||||
# Now we turn to US areas that have diverged from the consensus since 1970.
|
||||
@ -1185,12 +1189,39 @@ Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S
|
||||
# From Paul Eggert (2000-10-02):
|
||||
# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
|
||||
# at 00:01 local time. For now, assume it started in 1987.
|
||||
|
||||
# From Michael Pelley (2011-08-05):
|
||||
# The Government of Newfoundland and Labrador has pending changes to
|
||||
# modify the hour for daylight savings time to come into effect in
|
||||
# November 2011. This modification would change the time from 12:01AM to
|
||||
# 2:00AM on the dates of the switches of Daylight Savings Time to/from
|
||||
# Standard Time.
|
||||
#
|
||||
# As a matter of reference, in Canada provinces have the authority of
|
||||
# setting time zone information. The legislation has passed our
|
||||
# legislative body (The House of Assembly) and is awaiting the
|
||||
# proclamation to come into effect. You may find this information at:
|
||||
# <a href="http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm">
|
||||
# http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm
|
||||
# </a>
|
||||
# and
|
||||
# search within that web page for Standard Time (Amendment) Act. The Act
|
||||
# may be found at:
|
||||
# <a href="http://www.assembly.nl.ca/business/bills/Bill1106.htm">
|
||||
# http://www.assembly.nl.ca/business/bills/Bill1106.htm
|
||||
# </a>
|
||||
# ...
|
||||
# MICHAEL PELLEY | Manager of Enterprise Architecture - Solution Delivery
|
||||
# Office of the Chief Information Officer Executive Council Government of
|
||||
# Newfoundland & Labrador P.O. Box 8700, 40 Higgins Line, St. John's NL
|
||||
# A1B 4J6
|
||||
|
||||
Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D
|
||||
Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
|
||||
Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
|
||||
Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
|
||||
Rule StJohns 2007 max - Mar Sun>=8 0:01 1:00 D
|
||||
Rule StJohns 2007 max - Nov Sun>=1 0:01 0 S
|
||||
Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
|
||||
Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
|
||||
#
|
||||
# St John's has an apostrophe, but Posix file names can't have apostrophes.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@ -1200,7 +1231,8 @@ Zone America/St_Johns -3:30:52 - LMT 1884
|
||||
-3:30:52 StJohns N%sT 1935 Mar 30
|
||||
-3:30 StJohns N%sT 1942 May 11
|
||||
-3:30 Canada N%sT 1946
|
||||
-3:30 StJohns N%sT
|
||||
-3:30 StJohns N%sT 2011 Nov
|
||||
-3:30 Canada N%sT
|
||||
|
||||
# most of east Labrador
|
||||
|
||||
@ -1214,7 +1246,8 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
|
||||
-3:30 StJohns N%sT 1942 May 11
|
||||
-3:30 Canada N%sT 1946
|
||||
-3:30 StJohns N%sT 1966 Mar 15 2:00
|
||||
-4:00 StJohns A%sT
|
||||
-4:00 StJohns A%sT 2011 Nov
|
||||
-4:00 Canada A%sT
|
||||
|
||||
|
||||
# west Labrador, Nova Scotia, Prince Edward I
|
||||
@ -1946,20 +1979,69 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884
|
||||
# daylight saving....
|
||||
# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
|
||||
|
||||
# From Chris Walton (2007-03-14):
|
||||
# Today I phoned the "hamlet office" to find out what Resolute was doing with
|
||||
# its clocks.
|
||||
# From Chris Walton (2011-03-21):
|
||||
# Back in 2007 I initiated the creation of a new "zone file" for Resolute
|
||||
# Bay. Resolute Bay is a small community located about 900km north of
|
||||
# the Arctic Circle. The zone file was required because Resolute Bay had
|
||||
# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.
|
||||
#
|
||||
# The individual that answered the phone confirmed that the clocks did not
|
||||
# move at the end of daylight saving on October 29/2006. He also told me that
|
||||
# the clocks did not move this past weekend (March 11/2007)....
|
||||
|
||||
# From Chris Walton (2008-11-13):
|
||||
# ...the residents of Resolute believe that they are changing "time zones"
|
||||
# twice a year. In winter months, local time is qualified with "Eastern
|
||||
# Time" which is really "Eastern Standard Time (UTC-5)". In summer
|
||||
# months, local time is qualified with "Central Time" which is really
|
||||
# "Central Daylight Time (UTC-5)"...
|
||||
# According to new information which I received last week, Resolute Bay
|
||||
# went back to using UTC-6 in the winter of 2007-2008...
|
||||
#
|
||||
# On March 11/2007 most of Canada went onto daylight saving. On March
|
||||
# 14/2007 I phoned the Resolute Bay hamlet office to do a "time check." I
|
||||
# talked to somebody that was both knowledgeable and helpful. I was able
|
||||
# to confirm that Resolute Bay was still operating on UTC-5. It was
|
||||
# explained to me that Resolute Bay had been on the Eastern Time zone
|
||||
# (EST) in the winter, and was now back on the Central Time zone (CDT).
|
||||
# i.e. the time zone had changed twice in the last year but the clocks
|
||||
# had not moved. The residents had to know which time zone they were in
|
||||
# so they could follow the correct TV schedule...
|
||||
#
|
||||
# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I
|
||||
# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature
|
||||
# of the phone call, I decided to seek out an alternate source of
|
||||
# information. I found an e-mail address for somebody by the name of
|
||||
# Stephanie Adams whose job was listed as "Inns North Support Officer for
|
||||
# Arctic Co-operatives." I was under the impression that Stephanie lived
|
||||
# and worked in Resolute Bay...
|
||||
#
|
||||
# On March 14/2011 I phoned the hamlet office again. I was told that
|
||||
# Resolute Bay had been using Central Standard Time over the winter of
|
||||
# 2010-2011 and that the clocks had therefore been moved one hour ahead
|
||||
# on March 13/2011. The person I talked to was aware that Resolute Bay
|
||||
# had previously experimented with Eastern Standard Time but he could not
|
||||
# tell me when the practice had stopped.
|
||||
#
|
||||
# On March 17/2011 I searched the Web to find an e-mail address of
|
||||
# somebody that might be able to tell me exactly when Resolute Bay went
|
||||
# off Eastern Standard Time. I stumbled on the name "Aziz Kheraj." Aziz
|
||||
# used to be the mayor of Resolute Bay and he apparently owns half the
|
||||
# businesses including "South Camp Inn." This website has some info on
|
||||
# Aziz:
|
||||
# <a href="http://www.uphere.ca/node/493">
|
||||
# http://www.uphere.ca/node/493
|
||||
# </a>
|
||||
#
|
||||
# I sent Aziz an e-mail asking when Resolute Bay had stopped using
|
||||
# Eastern Standard Time.
|
||||
#
|
||||
# Aziz responded quickly with this: "hi, The time was not changed for the
|
||||
# 1 year only, the following year, the community went back to the old way
|
||||
# of "spring ahead-fall behind" currently we are zulu plus 5 hrs and in
|
||||
# the winter Zulu plus 6 hrs"
|
||||
#
|
||||
# This of course conflicted with everything I had ascertained in November 2008.
|
||||
#
|
||||
# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz
|
||||
# responded with this: "Hi, Stephanie lives in Winnipeg. I live here, You
|
||||
# may want to check with the weather office in Resolute Bay or do a
|
||||
# search on the weather through Env. Canada. web site"
|
||||
#
|
||||
# If I had realized the Stephanie did not live in Resolute Bay I would
|
||||
# never have contacted her. I now believe that all the information I
|
||||
# obtained in November 2008 should be ignored...
|
||||
# I apologize for reporting incorrect information in 2008.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
|
||||
@ -1987,14 +2069,12 @@ Zone America/Iqaluit 0 - zzz 1942 Aug # Frobisher Bay est.
|
||||
-6:00 Canada C%sT 2000 Oct 29 2:00
|
||||
-5:00 Canada E%sT
|
||||
# aka Qausuittuq
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Resolute 2006 max - Nov Sun>=1 2:00 0 ES
|
||||
Rule Resolute 2007 max - Mar Sun>=8 2:00 0 CD
|
||||
Zone America/Resolute 0 - zzz 1947 Aug 31 # Resolute founded
|
||||
-6:00 NT_YK C%sT 2000 Oct 29 2:00
|
||||
-5:00 - EST 2001 Apr 1 3:00
|
||||
-6:00 Canada C%sT 2006 Oct 29 2:00
|
||||
-5:00 Resolute %sT
|
||||
-5:00 - EST 2007 Mar 11 3:00
|
||||
-6:00 Canada C%sT
|
||||
# aka Kangiqiniq
|
||||
Zone America/Rankin_Inlet 0 - zzz 1957 # Rankin Inlet founded
|
||||
-6:00 NT_YK C%sT 2000 Oct 29 2:00
|
||||
|
@ -1298,6 +1298,14 @@ Zone America/Curacao -4:35:44 - LMT 1912 Feb 12 # Willemstad
|
||||
-4:30 - ANT 1965 # Netherlands Antilles Time
|
||||
-4:00 - AST
|
||||
|
||||
# From Arthur David Olson (2011-06-15):
|
||||
# At least for now, use links for places with new iso3166 codes.
|
||||
# The name "Lower Prince's Quarter" is both longer than fourteen charaters
|
||||
# and contains an apostrophe; use "Lower_Princes" below.
|
||||
|
||||
Link America/Curacao America/Lower_Princes # Sint Maarten
|
||||
Link America/Curacao America/Kralendijk # Bonaire, Sint Estatius and Saba
|
||||
|
||||
# Ecuador
|
||||
#
|
||||
# From Paul Eggert (2007-03-04):
|
||||
|
@ -54,7 +54,6 @@ AG +1703-06148 America/Antigua
|
||||
AI +1812-06304 America/Anguilla
|
||||
AL +4120+01950 Europe/Tirane
|
||||
AM +4011+04430 Asia/Yerevan
|
||||
AN +1211-06900 America/Curacao
|
||||
AO -0848+01314 Africa/Luanda
|
||||
AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
|
||||
AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
|
||||
@ -109,6 +108,7 @@ BL +1753-06251 America/St_Barthelemy
|
||||
BM +3217-06446 Atlantic/Bermuda
|
||||
BN +0456+11455 Asia/Brunei
|
||||
BO -1630-06809 America/La_Paz
|
||||
BQ +120903-0681636 America/Kralendijk
|
||||
BR -0351-03225 America/Noronha Atlantic islands
|
||||
BR -0127-04829 America/Belem Amapa, E Para
|
||||
BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
|
||||
@ -142,7 +142,7 @@ CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did
|
||||
CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
|
||||
CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
|
||||
CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
|
||||
CA +744144-0944945 America/Resolute Eastern Standard Time - Resolute, Nunavut
|
||||
CA +744144-0944945 America/Resolute Central Standard Time - Resolute, Nunavut
|
||||
CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
|
||||
CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut
|
||||
CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
|
||||
@ -177,6 +177,7 @@ CO +0436-07405 America/Bogota
|
||||
CR +0956-08405 America/Costa_Rica
|
||||
CU +2308-08222 America/Havana
|
||||
CV +1455-02331 Atlantic/Cape_Verde
|
||||
CW +1211-06900 America/Curacao
|
||||
CX -1025+10543 Indian/Christmas
|
||||
CY +3510+03322 Asia/Nicosia
|
||||
CZ +5005+01426 Europe/Prague
|
||||
@ -382,8 +383,10 @@ SM +4355+01228 Europe/San_Marino
|
||||
SN +1440-01726 Africa/Dakar
|
||||
SO +0204+04522 Africa/Mogadishu
|
||||
SR +0550-05510 America/Paramaribo
|
||||
SS +0451+03136 Africa/Juba
|
||||
ST +0020+00644 Africa/Sao_Tome
|
||||
SV +1342-08912 America/El_Salvador
|
||||
SX +180305-0630250 America/Lower_Princes
|
||||
SY +3330+03618 Asia/Damascus
|
||||
SZ -2618+03106 Africa/Mbabane
|
||||
TC +2128-07108 America/Grand_Turk
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1995, 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
|
||||
@ -26,6 +26,8 @@
|
||||
BUILDDIR = ../..
|
||||
PACKAGE = sun.net
|
||||
PRODUCT = sun
|
||||
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
|
||||
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
SUBDIRS = others spi
|
||||
|
@ -24,6 +24,8 @@
|
||||
#
|
||||
|
||||
BUILDDIR = ../../..
|
||||
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
|
||||
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
SUBDIRS_misc = nameservice
|
||||
|
@ -28,7 +28,8 @@
|
||||
#
|
||||
|
||||
BUILDDIR = ../../../../..
|
||||
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
# dns should probably be its own module
|
||||
PACKAGE = sun.net.spi.nameservice.dns
|
||||
PRODUCT = sun
|
||||
|
40
jdk/make/sun/util/Makefile
Normal file
40
jdk/make/sun/util/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
BUILDDIR = ../..
|
||||
PACKAGE = sun.util
|
||||
PRODUCT = sun
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
# Files
|
||||
#
|
||||
AUTO_FILES_JAVA_DIRS = sun/util/xml
|
||||
|
||||
#
|
||||
# Rules
|
||||
#
|
||||
include $(BUILDDIR)/common/Classes.gmk
|
||||
|
@ -76,8 +76,8 @@ class Mappings {
|
||||
// If the GMT offset of this Zone will change in some
|
||||
// future time, this Zone is added to the exclude list.
|
||||
boolean isExcluded = false;
|
||||
if (zone.size() > 1) {
|
||||
ZoneRec zrec = zone.get(zone.size()-2);
|
||||
for (int i = 0; i < zone.size(); i++) {
|
||||
ZoneRec zrec = zone.get(i);
|
||||
if ((zrec.getGmtOffset() != rawOffset)
|
||||
&& (zrec.getUntilTime(0) > Time.getCurrentTime())) {
|
||||
if (excludeList == null) {
|
||||
@ -85,6 +85,7 @@ class Mappings {
|
||||
}
|
||||
excludeList.add(zone.getName());
|
||||
isExcluded = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2006, 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
|
||||
@ -54,13 +54,13 @@ public abstract class BasicAuthenticator extends Authenticator {
|
||||
|
||||
public Result authenticate (HttpExchange t)
|
||||
{
|
||||
Headers rmap = (Headers) t.getRequestHeaders();
|
||||
Headers rmap = t.getRequestHeaders();
|
||||
/*
|
||||
* look for auth token
|
||||
*/
|
||||
String auth = rmap.getFirst ("Authorization");
|
||||
if (auth == null) {
|
||||
Headers map = (Headers) t.getResponseHeaders();
|
||||
Headers map = t.getResponseHeaders();
|
||||
map.set ("WWW-Authenticate", "Basic realm=" + "\""+realm+"\"");
|
||||
return new Authenticator.Retry (401);
|
||||
}
|
||||
@ -83,7 +83,7 @@ public abstract class BasicAuthenticator extends Authenticator {
|
||||
} else {
|
||||
/* reject the request again with 401 */
|
||||
|
||||
Headers map = (Headers) t.getResponseHeaders();
|
||||
Headers map = t.getResponseHeaders();
|
||||
map.set ("WWW-Authenticate", "Basic realm=" + "\""+realm+"\"");
|
||||
return new Authenticator.Failure(401);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -117,7 +117,7 @@ public class Headers implements Map<String,List<String>> {
|
||||
* @return the first string value associated with the key
|
||||
*/
|
||||
public String getFirst (String key) {
|
||||
List<String> l = map.get(normalize((String)key));
|
||||
List<String> l = map.get(normalize(key));
|
||||
if (l == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -81,29 +81,27 @@ public abstract class HttpServerProvider {
|
||||
if (cn == null)
|
||||
return false;
|
||||
try {
|
||||
Class c = Class.forName(cn, true,
|
||||
Class<?> c = Class.forName(cn, true,
|
||||
ClassLoader.getSystemClassLoader());
|
||||
provider = (HttpServerProvider)c.newInstance();
|
||||
return true;
|
||||
} catch (ClassNotFoundException x) {
|
||||
throw new ServiceConfigurationError(x);
|
||||
} catch (IllegalAccessException x) {
|
||||
throw new ServiceConfigurationError(x);
|
||||
} catch (InstantiationException x) {
|
||||
throw new ServiceConfigurationError(x);
|
||||
} catch (SecurityException x) {
|
||||
} catch (ClassNotFoundException |
|
||||
IllegalAccessException |
|
||||
InstantiationException |
|
||||
SecurityException x) {
|
||||
throw new ServiceConfigurationError(x);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean loadProviderAsService() {
|
||||
Iterator i = Service.providers(HttpServerProvider.class,
|
||||
@SuppressWarnings("unchecked")
|
||||
Iterator<HttpServerProvider> i = Service.providers(HttpServerProvider.class,
|
||||
ClassLoader.getSystemClassLoader());
|
||||
for (;;) {
|
||||
try {
|
||||
if (!i.hasNext())
|
||||
return false;
|
||||
provider = (HttpServerProvider)i.next();
|
||||
provider = i.next();
|
||||
return true;
|
||||
} catch (ServiceConfigurationError sce) {
|
||||
if (sce.getCause() instanceof SecurityException) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -77,7 +77,7 @@ final class SSLSecurity {
|
||||
{
|
||||
Provider provider = service.getProvider();
|
||||
String className = service.getClassName();
|
||||
Class implClass;
|
||||
Class<?> implClass;
|
||||
try {
|
||||
ClassLoader cl = provider.getClass().getClassLoader();
|
||||
if (cl == null) {
|
||||
@ -133,8 +133,8 @@ final class SSLSecurity {
|
||||
* or someone has removed classes from the jsse.jar file.
|
||||
*/
|
||||
|
||||
Class typeClassJavax;
|
||||
Class typeClassCom;
|
||||
Class<?> typeClassJavax;
|
||||
Class<?> typeClassCom;
|
||||
Object obj = null;
|
||||
|
||||
/*
|
||||
@ -237,7 +237,7 @@ final class SSLSecurity {
|
||||
/*
|
||||
* Checks whether one class is the superclass of another
|
||||
*/
|
||||
private static boolean checkSuperclass(Class subclass, Class superclass) {
|
||||
private static boolean checkSuperclass(Class<?> subclass, Class<?> superclass) {
|
||||
if ((subclass == null) || (superclass == null))
|
||||
return false;
|
||||
|
||||
@ -276,7 +276,6 @@ final class SSLSecurity {
|
||||
* object. This also mean that anything going down into the SPI
|
||||
* needs to be wrapped, as well as anything coming back up.
|
||||
*/
|
||||
|
||||
final class SSLContextSpiWrapper extends SSLContextSpi {
|
||||
|
||||
private javax.net.ssl.SSLContext theSSLContext;
|
||||
|
@ -165,10 +165,10 @@ class VerifierWrapper implements javax.net.ssl.HostnameVerifier {
|
||||
private static String getServername(X509Certificate peerCert) {
|
||||
try {
|
||||
// compare to subjectAltNames if dnsName is present
|
||||
Collection subjAltNames = peerCert.getSubjectAlternativeNames();
|
||||
Collection<List<?>> subjAltNames = peerCert.getSubjectAlternativeNames();
|
||||
if (subjAltNames != null) {
|
||||
for (Iterator itr = subjAltNames.iterator(); itr.hasNext(); ) {
|
||||
List next = (List)itr.next();
|
||||
for (Iterator<List<?>> itr = subjAltNames.iterator(); itr.hasNext(); ) {
|
||||
List<?> next = itr.next();
|
||||
if (((Integer)next.get(0)).intValue() == 2) {
|
||||
// compare dNSName with host in url
|
||||
String dnsName = ((String)next.get(1));
|
||||
|
@ -91,6 +91,9 @@ FileChooser.updateButtonToolTipText=Update directory listing
|
||||
FileChooser.helpButtonToolTipText=FileChooser help
|
||||
FileChooser.directoryOpenButtonToolTipText=Open selected directory
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Preview
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren
|
||||
FileChooser.helpButtonToolTipText=FileChooser-Hilfe
|
||||
FileChooser.directoryOpenButtonToolTipText=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Vorschau
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Actualizar lista de directorios
|
||||
FileChooser.helpButtonToolTipText=Ayuda del Selector de Archivos
|
||||
FileChooser.directoryOpenButtonToolTipText=Abrir directorio seleccionado
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Presentaci\u00F3n Preliminar
|
||||
ColorChooser.okText=Aceptar
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Met \u00E0 jour la liste des r\u00E9pertoire
|
||||
FileChooser.helpButtonToolTipText=Aide du s\u00E9lecteur de fichiers
|
||||
FileChooser.directoryOpenButtonToolTipText=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Aper\u00E7u
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Aggiorna la lista directory
|
||||
FileChooser.helpButtonToolTipText=Guida FileChooser
|
||||
FileChooser.directoryOpenButtonToolTipText=Apre la directory selezionata
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Anteprima
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u
|
||||
FileChooser.helpButtonToolTipText=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059
|
||||
FileChooser.directoryOpenButtonToolTipText=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=\u30D7\u30EC\u30D3\u30E5\u30FC
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uAC31
|
||||
FileChooser.helpButtonToolTipText=FileChooser \uB3C4\uC6C0\uB9D0
|
||||
FileChooser.directoryOpenButtonToolTipText=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=\uBBF8\uB9AC\uBCF4\uAE30
|
||||
ColorChooser.okText=\uD655\uC778
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00F3rios
|
||||
FileChooser.helpButtonToolTipText=Ajuda do FileChooser
|
||||
FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00F3rio selecionado
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Visualizar
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=Uppdatera kataloglistan
|
||||
FileChooser.helpButtonToolTipText=Hj\u00E4lp - Filv\u00E4ljare
|
||||
FileChooser.directoryOpenButtonToolTipText=\u00D6ppna vald katalog
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=Granska
|
||||
ColorChooser.okText=OK
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u5F55\u5217\u8868
|
||||
FileChooser.helpButtonToolTipText=FileChooser \u5E2E\u52A9
|
||||
FileChooser.directoryOpenButtonToolTipText=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=\u9884\u89C8
|
||||
ColorChooser.okText=\u786E\u5B9A
|
||||
|
@ -90,6 +90,9 @@ FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE
|
||||
FileChooser.helpButtonToolTipText=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E
|
||||
FileChooser.directoryOpenButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304
|
||||
|
||||
FileChooser.filesListAccessibleName=Files List
|
||||
FileChooser.filesDetailsAccessibleName=Files Details
|
||||
|
||||
############ COLOR CHOOSER STRINGS #############
|
||||
ColorChooser.previewText=\u9810\u89BD
|
||||
ColorChooser.okText=\u78BA\u5B9A
|
||||
|
@ -777,10 +777,6 @@ public class AWTKeyStroke implements Serializable {
|
||||
*/
|
||||
protected Object readResolve() throws java.io.ObjectStreamException {
|
||||
synchronized (AWTKeyStroke.class) {
|
||||
Class newClass = getClass();
|
||||
if (!newClass.equals(ctor.getDeclaringClass())) {
|
||||
registerSubclass(newClass);
|
||||
}
|
||||
return getCachedStroke(keyChar, keyCode, modifiers, onKeyRelease);
|
||||
}
|
||||
}
|
||||
|
@ -34,8 +34,10 @@ import java.security.AccessController;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
import sun.awt.AWTAutoShutdown;
|
||||
import sun.awt.SunToolkit;
|
||||
import sun.awt.AppContext;
|
||||
|
||||
import java.util.Vector;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
|
||||
import sun.awt.dnd.SunDragSourceContextPeer;
|
||||
@ -66,11 +68,11 @@ class EventDispatchThread extends Thread {
|
||||
|
||||
private EventQueue theQueue;
|
||||
private boolean doDispatch = true;
|
||||
private boolean threadDeathCaught = false;
|
||||
private volatile boolean shutdown = false;
|
||||
|
||||
private static final int ANY_EVENT = -1;
|
||||
|
||||
private Vector<EventFilter> eventFilters = new Vector<EventFilter>();
|
||||
private ArrayList<EventFilter> eventFilters = new ArrayList<EventFilter>();
|
||||
|
||||
EventDispatchThread(ThreadGroup group, String name, EventQueue queue) {
|
||||
super(group, name);
|
||||
@ -84,6 +86,11 @@ class EventDispatchThread extends Thread {
|
||||
doDispatch = false;
|
||||
}
|
||||
|
||||
public void interrupt() {
|
||||
shutdown = true;
|
||||
super.interrupt();
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while (true) {
|
||||
try {
|
||||
@ -93,8 +100,7 @@ class EventDispatchThread extends Thread {
|
||||
}
|
||||
});
|
||||
} finally {
|
||||
EventQueue eq = getEventQueue();
|
||||
if (eq.detachDispatchThread(this) || threadDeathCaught) {
|
||||
if(getEventQueue().detachDispatchThread(this, shutdown)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -124,10 +130,9 @@ class EventDispatchThread extends Thread {
|
||||
void pumpEventsForFilter(int id, Conditional cond, EventFilter filter) {
|
||||
addEventFilter(filter);
|
||||
doDispatch = true;
|
||||
while (doDispatch && cond.evaluate()) {
|
||||
if (isInterrupted() || !pumpOneEventForFilters(id)) {
|
||||
doDispatch = false;
|
||||
}
|
||||
shutdown |= isInterrupted();
|
||||
while (doDispatch && !shutdown && cond.evaluate()) {
|
||||
pumpOneEventForFilters(id);
|
||||
}
|
||||
removeEventFilter(filter);
|
||||
}
|
||||
@ -163,7 +168,7 @@ class EventDispatchThread extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
boolean pumpOneEventForFilters(int id) {
|
||||
void pumpOneEventForFilters(int id) {
|
||||
AWTEvent event = null;
|
||||
boolean eventOK = false;
|
||||
try {
|
||||
@ -212,24 +217,18 @@ class EventDispatchThread extends Thread {
|
||||
if (delegate != null) {
|
||||
delegate.afterDispatch(event, handle);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (ThreadDeath death) {
|
||||
threadDeathCaught = true;
|
||||
return false;
|
||||
|
||||
shutdown = true;
|
||||
throw death;
|
||||
}
|
||||
catch (InterruptedException interruptedException) {
|
||||
return false; // AppContext.dispose() interrupts all
|
||||
// Threads in the AppContext
|
||||
|
||||
shutdown = true; // AppContext.dispose() interrupts all
|
||||
// Threads in the AppContext
|
||||
}
|
||||
catch (Throwable e) {
|
||||
processException(e);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void processException(Throwable e) {
|
||||
|
@ -47,6 +47,7 @@ import sun.awt.AWTAccessor;
|
||||
|
||||
import java.util.concurrent.locks.Condition;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import java.security.AccessControlContext;
|
||||
import java.security.ProtectionDomain;
|
||||
@ -99,12 +100,7 @@ import sun.misc.JavaSecurityAccess;
|
||||
* @since 1.1
|
||||
*/
|
||||
public class EventQueue {
|
||||
|
||||
// From Thread.java
|
||||
private static int threadInitNumber;
|
||||
private static synchronized int nextThreadNum() {
|
||||
return threadInitNumber++;
|
||||
}
|
||||
private static final AtomicInteger threadInitNumber = new AtomicInteger(0);
|
||||
|
||||
private static final int LOW_PRIORITY = 0;
|
||||
private static final int NORM_PRIORITY = 1;
|
||||
@ -175,9 +171,9 @@ public class EventQueue {
|
||||
* Non-zero if a thread is waiting in getNextEvent(int) for an event of
|
||||
* a particular ID to be posted to the queue.
|
||||
*/
|
||||
private int waitForID;
|
||||
private volatile int waitForID;
|
||||
|
||||
private final String name = "AWT-EventQueue-" + nextThreadNum();
|
||||
private final String name = "AWT-EventQueue-" + threadInitNumber.getAndIncrement();
|
||||
|
||||
private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventQueue");
|
||||
|
||||
@ -1030,7 +1026,7 @@ public class EventQueue {
|
||||
}
|
||||
}
|
||||
|
||||
final boolean detachDispatchThread(EventDispatchThread edt) {
|
||||
final boolean detachDispatchThread(EventDispatchThread edt, boolean forceDetach) {
|
||||
/*
|
||||
* This synchronized block is to secure that the event dispatch
|
||||
* thread won't die in the middle of posting a new event to the
|
||||
@ -1049,7 +1045,7 @@ public class EventQueue {
|
||||
* Fix for 4648733. Check both the associated java event
|
||||
* queue and the PostEventQueue.
|
||||
*/
|
||||
if ((peekEvent() != null) || !SunToolkit.isPostEventQueueEmpty()) {
|
||||
if (!forceDetach && (peekEvent() != null) || !SunToolkit.isPostEventQueueEmpty()) {
|
||||
return false;
|
||||
}
|
||||
dispatchThread = null;
|
||||
|
@ -56,16 +56,6 @@ class FileInputStream extends InputStream
|
||||
private final Object closeLock = new Object();
|
||||
private volatile boolean closed = false;
|
||||
|
||||
private static final ThreadLocal<Boolean> runningFinalize =
|
||||
new ThreadLocal<>();
|
||||
|
||||
private static boolean isRunningFinalize() {
|
||||
Boolean val;
|
||||
if ((val = runningFinalize.get()) != null)
|
||||
return val.booleanValue();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a <code>FileInputStream</code> by
|
||||
* opening a connection to an actual file,
|
||||
@ -319,10 +309,10 @@ class FileInputStream extends InputStream
|
||||
int useCount = fd.decrementAndGetUseCount();
|
||||
|
||||
/*
|
||||
* If FileDescriptor is still in use by another stream, the finalizer
|
||||
* If FileDescriptor is still in use by another stream, we
|
||||
* will not close it.
|
||||
*/
|
||||
if ((useCount <= 0) || !isRunningFinalize()) {
|
||||
if (useCount <= 0) {
|
||||
close0();
|
||||
}
|
||||
}
|
||||
@ -391,18 +381,7 @@ class FileInputStream extends InputStream
|
||||
*/
|
||||
protected void finalize() throws IOException {
|
||||
if ((fd != null) && (fd != FileDescriptor.in)) {
|
||||
|
||||
/*
|
||||
* Finalizer should not release the FileDescriptor if another
|
||||
* stream is still using it. If the user directly invokes
|
||||
* close() then the FileDescriptor is also released.
|
||||
*/
|
||||
runningFinalize.set(Boolean.TRUE);
|
||||
try {
|
||||
close();
|
||||
} finally {
|
||||
runningFinalize.set(Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,21 +63,12 @@ class FileOutputStream extends OutputStream
|
||||
private final boolean append;
|
||||
|
||||
/**
|
||||
* The associated channel, initalized lazily.
|
||||
* The associated channel, initialized lazily.
|
||||
*/
|
||||
private FileChannel channel;
|
||||
|
||||
private final Object closeLock = new Object();
|
||||
private volatile boolean closed = false;
|
||||
private static final ThreadLocal<Boolean> runningFinalize =
|
||||
new ThreadLocal<>();
|
||||
|
||||
private static boolean isRunningFinalize() {
|
||||
Boolean val;
|
||||
if ((val = runningFinalize.get()) != null)
|
||||
return val.booleanValue();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a file output stream to write to the file with the
|
||||
@ -355,10 +346,10 @@ class FileOutputStream extends OutputStream
|
||||
int useCount = fd.decrementAndGetUseCount();
|
||||
|
||||
/*
|
||||
* If FileDescriptor is still in use by another stream, the finalizer
|
||||
* If FileDescriptor is still in use by another stream, we
|
||||
* will not close it.
|
||||
*/
|
||||
if ((useCount <= 0) || !isRunningFinalize()) {
|
||||
if (useCount <= 0) {
|
||||
close0();
|
||||
}
|
||||
}
|
||||
@ -424,18 +415,7 @@ class FileOutputStream extends OutputStream
|
||||
if (fd == FileDescriptor.out || fd == FileDescriptor.err) {
|
||||
flush();
|
||||
} else {
|
||||
|
||||
/*
|
||||
* Finalizer should not release the FileDescriptor if another
|
||||
* stream is still using it. If the user directly invokes
|
||||
* close() then the FileDescriptor is also released.
|
||||
*/
|
||||
runningFinalize.set(Boolean.TRUE);
|
||||
try {
|
||||
close();
|
||||
} finally {
|
||||
runningFinalize.set(Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1994, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1994, 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
|
||||
@ -590,8 +590,15 @@ public class RandomAccessFile implements DataOutput, DataInput, Closeable {
|
||||
* Decrement FD use count associated with this stream.
|
||||
* The count got incremented by FileDescriptor during its construction.
|
||||
*/
|
||||
fd.decrementAndGetUseCount();
|
||||
close0();
|
||||
int useCount = fd.decrementAndGetUseCount();
|
||||
|
||||
/*
|
||||
* If FileDescriptor is still in use by another stream, we
|
||||
* will not close it.
|
||||
*/
|
||||
if (useCount <= 0) {
|
||||
close0();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1994, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1994, 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
|
||||
@ -101,7 +101,7 @@ public final class Boolean implements java.io.Serializable,
|
||||
* @param s the string to be converted to a {@code Boolean}.
|
||||
*/
|
||||
public Boolean(String s) {
|
||||
this(toBoolean(s));
|
||||
this(parseBoolean(s));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -118,7 +118,7 @@ public final class Boolean implements java.io.Serializable,
|
||||
* @since 1.5
|
||||
*/
|
||||
public static boolean parseBoolean(String s) {
|
||||
return toBoolean(s);
|
||||
return ((s != null) && s.equalsIgnoreCase("true"));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -159,7 +159,7 @@ public final class Boolean implements java.io.Serializable,
|
||||
* @return the {@code Boolean} value represented by the string.
|
||||
*/
|
||||
public static Boolean valueOf(String s) {
|
||||
return toBoolean(s) ? TRUE : FALSE;
|
||||
return parseBoolean(s) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -229,15 +229,16 @@ public final class Boolean implements java.io.Serializable,
|
||||
*
|
||||
* @param name the system property name.
|
||||
* @return the {@code boolean} value of the system property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
public static boolean getBoolean(String name) {
|
||||
boolean result = false;
|
||||
try {
|
||||
result = toBoolean(System.getProperty(name));
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (NullPointerException e) {
|
||||
result = parseBoolean(System.getProperty(name));
|
||||
} catch (IllegalArgumentException | NullPointerException e) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -275,8 +276,4 @@ public final class Boolean implements java.io.Serializable,
|
||||
public static int compare(boolean x, boolean y) {
|
||||
return (x == y) ? 0 : (x ? 1 : -1);
|
||||
}
|
||||
|
||||
private static boolean toBoolean(String name) {
|
||||
return ((name != null) && name.equalsIgnoreCase("true"));
|
||||
}
|
||||
}
|
||||
|
@ -276,14 +276,14 @@ public final class Double extends Number implements Comparable<Double> {
|
||||
* 7.19.6.1; however, the output of this method is more
|
||||
* tightly specified.
|
||||
*/
|
||||
if (!FpUtils.isFinite(d) )
|
||||
if (!isFinite(d) )
|
||||
// For infinity and NaN, use the decimal output.
|
||||
return Double.toString(d);
|
||||
else {
|
||||
// Initialized to maximum size of output.
|
||||
StringBuffer answer = new StringBuffer(24);
|
||||
|
||||
if (FpUtils.rawCopySign(1.0, d) == -1.0) // value is negative,
|
||||
if (Math.copySign(1.0, d) == -1.0) // value is negative,
|
||||
answer.append("-"); // so append sign info
|
||||
|
||||
answer.append("0x");
|
||||
@ -322,7 +322,7 @@ public final class Double extends Number implements Comparable<Double> {
|
||||
// E_min -1).
|
||||
answer.append("p" + (subnormal ?
|
||||
DoubleConsts.MIN_EXPONENT:
|
||||
FpUtils.getExponent(d) ));
|
||||
Math.getExponent(d) ));
|
||||
}
|
||||
return answer.toString();
|
||||
}
|
||||
@ -548,7 +548,7 @@ public final class Double extends Number implements Comparable<Double> {
|
||||
* @return {@code true} if the value of the argument is NaN;
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
static public boolean isNaN(double v) {
|
||||
public static boolean isNaN(double v) {
|
||||
return (v != v);
|
||||
}
|
||||
|
||||
@ -560,10 +560,24 @@ public final class Double extends Number implements Comparable<Double> {
|
||||
* @return {@code true} if the value of the argument is positive
|
||||
* infinity or negative infinity; {@code false} otherwise.
|
||||
*/
|
||||
static public boolean isInfinite(double v) {
|
||||
public static boolean isInfinite(double v) {
|
||||
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns {@code true} if the argument is a finite floating-point
|
||||
* value; returns {@code false} otherwise (for NaN and infinity
|
||||
* arguments).
|
||||
*
|
||||
* @param d the {@code double} value to be tested
|
||||
* @return {@code true} if the argument is a finite
|
||||
* floating-point value, {@code false} otherwise.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static boolean isFinite(double d) {
|
||||
return Math.abs(d) <= DoubleConsts.MAX_VALUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* The value of the Double.
|
||||
*
|
||||
|
@ -26,7 +26,6 @@
|
||||
package java.lang;
|
||||
|
||||
import sun.misc.FloatingDecimal;
|
||||
import sun.misc.FpUtils;
|
||||
import sun.misc.FloatConsts;
|
||||
import sun.misc.DoubleConsts;
|
||||
|
||||
@ -279,10 +278,10 @@ public final class Float extends Number implements Comparable<Float> {
|
||||
// Adjust exponent to create subnormal double, then
|
||||
// replace subnormal double exponent with subnormal float
|
||||
// exponent
|
||||
String s = Double.toHexString(FpUtils.scalb((double)f,
|
||||
/* -1022+126 */
|
||||
DoubleConsts.MIN_EXPONENT-
|
||||
FloatConsts.MIN_EXPONENT));
|
||||
String s = Double.toHexString(Math.scalb((double)f,
|
||||
/* -1022+126 */
|
||||
DoubleConsts.MIN_EXPONENT-
|
||||
FloatConsts.MIN_EXPONENT));
|
||||
return s.replaceFirst("p-1022$", "p-126");
|
||||
}
|
||||
else // double string will be the same as float string
|
||||
@ -460,7 +459,7 @@ public final class Float extends Number implements Comparable<Float> {
|
||||
* @return {@code true} if the argument is NaN;
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
static public boolean isNaN(float v) {
|
||||
public static boolean isNaN(float v) {
|
||||
return (v != v);
|
||||
}
|
||||
|
||||
@ -472,10 +471,25 @@ public final class Float extends Number implements Comparable<Float> {
|
||||
* @return {@code true} if the argument is positive infinity or
|
||||
* negative infinity; {@code false} otherwise.
|
||||
*/
|
||||
static public boolean isInfinite(float v) {
|
||||
public static boolean isInfinite(float v) {
|
||||
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns {@code true} if the argument is a finite floating-point
|
||||
* value; returns {@code false} otherwise (for NaN and infinity
|
||||
* arguments).
|
||||
*
|
||||
* @param f the {@code float} value to be tested
|
||||
* @return {@code true} if the argument is a finite
|
||||
* floating-point value, {@code false} otherwise.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static boolean isFinite(float f) {
|
||||
return Math.abs(f) <= FloatConsts.MAX_VALUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* The value of the Float.
|
||||
*
|
||||
|
@ -797,6 +797,8 @@ public final class Integer extends Number implements Comparable<Integer> {
|
||||
*
|
||||
* @param nm property name.
|
||||
* @return the {@code Integer} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@ -841,6 +843,8 @@ public final class Integer extends Number implements Comparable<Integer> {
|
||||
* @param nm property name.
|
||||
* @param val default value.
|
||||
* @return the {@code Integer} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@ -881,6 +885,8 @@ public final class Integer extends Number implements Comparable<Integer> {
|
||||
* @param nm property name.
|
||||
* @param val default value.
|
||||
* @return the {@code Integer} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see System#getProperty(java.lang.String)
|
||||
* @see System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -827,6 +827,8 @@ public final class Long extends Number implements Comparable<Long> {
|
||||
*
|
||||
* @param nm property name.
|
||||
* @return the {@code Long} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@ -870,6 +872,8 @@ public final class Long extends Number implements Comparable<Long> {
|
||||
* @param nm property name.
|
||||
* @param val default value.
|
||||
* @return the {@code Long} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@ -917,6 +921,8 @@ public final class Long extends Number implements Comparable<Long> {
|
||||
* @param nm property name.
|
||||
* @param val default value.
|
||||
* @return the {@code Long} value of the property.
|
||||
* @throws SecurityException for the same reasons as
|
||||
* {@link System#getProperty(String) System.getProperty}
|
||||
* @see System#getProperty(java.lang.String)
|
||||
* @see System#getProperty(java.lang.String, java.lang.String)
|
||||
*/
|
||||
|
@ -26,6 +26,8 @@
|
||||
package java.lang;
|
||||
import java.util.Random;
|
||||
|
||||
import sun.misc.FloatConsts;
|
||||
import sun.misc.DoubleConsts;
|
||||
|
||||
/**
|
||||
* The class {@code Math} contains methods for performing basic
|
||||
@ -963,7 +965,31 @@ public final class Math {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static double ulp(double d) {
|
||||
return sun.misc.FpUtils.ulp(d);
|
||||
int exp = getExponent(d);
|
||||
|
||||
switch(exp) {
|
||||
case DoubleConsts.MAX_EXPONENT+1: // NaN or infinity
|
||||
return Math.abs(d);
|
||||
|
||||
case DoubleConsts.MIN_EXPONENT-1: // zero or subnormal
|
||||
return Double.MIN_VALUE;
|
||||
|
||||
default:
|
||||
assert exp <= DoubleConsts.MAX_EXPONENT && exp >= DoubleConsts.MIN_EXPONENT;
|
||||
|
||||
// ulp(x) is usually 2^(SIGNIFICAND_WIDTH-1)*(2^ilogb(x))
|
||||
exp = exp - (DoubleConsts.SIGNIFICAND_WIDTH-1);
|
||||
if (exp >= DoubleConsts.MIN_EXPONENT) {
|
||||
return powerOfTwoD(exp);
|
||||
}
|
||||
else {
|
||||
// return a subnormal result; left shift integer
|
||||
// representation of Double.MIN_VALUE appropriate
|
||||
// number of positions
|
||||
return Double.longBitsToDouble(1L <<
|
||||
(exp - (DoubleConsts.MIN_EXPONENT - (DoubleConsts.SIGNIFICAND_WIDTH-1)) ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -990,7 +1016,31 @@ public final class Math {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static float ulp(float f) {
|
||||
return sun.misc.FpUtils.ulp(f);
|
||||
int exp = getExponent(f);
|
||||
|
||||
switch(exp) {
|
||||
case FloatConsts.MAX_EXPONENT+1: // NaN or infinity
|
||||
return Math.abs(f);
|
||||
|
||||
case FloatConsts.MIN_EXPONENT-1: // zero or subnormal
|
||||
return FloatConsts.MIN_VALUE;
|
||||
|
||||
default:
|
||||
assert exp <= FloatConsts.MAX_EXPONENT && exp >= FloatConsts.MIN_EXPONENT;
|
||||
|
||||
// ulp(x) is usually 2^(SIGNIFICAND_WIDTH-1)*(2^ilogb(x))
|
||||
exp = exp - (FloatConsts.SIGNIFICAND_WIDTH-1);
|
||||
if (exp >= FloatConsts.MIN_EXPONENT) {
|
||||
return powerOfTwoF(exp);
|
||||
}
|
||||
else {
|
||||
// return a subnormal result; left shift integer
|
||||
// representation of FloatConsts.MIN_VALUE appropriate
|
||||
// number of positions
|
||||
return Float.intBitsToFloat(1 <<
|
||||
(exp - (FloatConsts.MIN_EXPONENT - (FloatConsts.SIGNIFICAND_WIDTH-1)) ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1011,7 +1061,7 @@ public final class Math {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static double signum(double d) {
|
||||
return sun.misc.FpUtils.signum(d);
|
||||
return (d == 0.0 || Double.isNaN(d))?d:copySign(1.0, d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1032,7 +1082,7 @@ public final class Math {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static float signum(float f) {
|
||||
return sun.misc.FpUtils.signum(f);
|
||||
return (f == 0.0f || Float.isNaN(f))?f:copySign(1.0f, f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1252,7 +1302,11 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double copySign(double magnitude, double sign) {
|
||||
return sun.misc.FpUtils.rawCopySign(magnitude, sign);
|
||||
return Double.longBitsToDouble((Double.doubleToRawLongBits(sign) &
|
||||
(DoubleConsts.SIGN_BIT_MASK)) |
|
||||
(Double.doubleToRawLongBits(magnitude) &
|
||||
(DoubleConsts.EXP_BIT_MASK |
|
||||
DoubleConsts.SIGNIF_BIT_MASK)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1271,7 +1325,11 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float copySign(float magnitude, float sign) {
|
||||
return sun.misc.FpUtils.rawCopySign(magnitude, sign);
|
||||
return Float.intBitsToFloat((Float.floatToRawIntBits(sign) &
|
||||
(FloatConsts.SIGN_BIT_MASK)) |
|
||||
(Float.floatToRawIntBits(magnitude) &
|
||||
(FloatConsts.EXP_BIT_MASK |
|
||||
FloatConsts.SIGNIF_BIT_MASK)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1289,7 +1347,13 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static int getExponent(float f) {
|
||||
return sun.misc.FpUtils.getExponent(f);
|
||||
/*
|
||||
* Bitwise convert f to integer, mask out exponent bits, shift
|
||||
* to the right and then subtract out float's bias adjust to
|
||||
* get true exponent value
|
||||
*/
|
||||
return ((Float.floatToRawIntBits(f) & FloatConsts.EXP_BIT_MASK) >>
|
||||
(FloatConsts.SIGNIFICAND_WIDTH - 1)) - FloatConsts.EXP_BIAS;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1307,7 +1371,13 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static int getExponent(double d) {
|
||||
return sun.misc.FpUtils.getExponent(d);
|
||||
/*
|
||||
* Bitwise convert d to long, mask out exponent bits, shift
|
||||
* to the right and then subtract out double's bias adjust to
|
||||
* get true exponent value.
|
||||
*/
|
||||
return (int)(((Double.doubleToRawLongBits(d) & DoubleConsts.EXP_BIT_MASK) >>
|
||||
(DoubleConsts.SIGNIFICAND_WIDTH - 1)) - DoubleConsts.EXP_BIAS);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1351,7 +1421,63 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double nextAfter(double start, double direction) {
|
||||
return sun.misc.FpUtils.nextAfter(start, direction);
|
||||
/*
|
||||
* The cases:
|
||||
*
|
||||
* nextAfter(+infinity, 0) == MAX_VALUE
|
||||
* nextAfter(+infinity, +infinity) == +infinity
|
||||
* nextAfter(-infinity, 0) == -MAX_VALUE
|
||||
* nextAfter(-infinity, -infinity) == -infinity
|
||||
*
|
||||
* are naturally handled without any additional testing
|
||||
*/
|
||||
|
||||
// First check for NaN values
|
||||
if (Double.isNaN(start) || Double.isNaN(direction)) {
|
||||
// return a NaN derived from the input NaN(s)
|
||||
return start + direction;
|
||||
} else if (start == direction) {
|
||||
return direction;
|
||||
} else { // start > direction or start < direction
|
||||
// Add +0.0 to get rid of a -0.0 (+0.0 + -0.0 => +0.0)
|
||||
// then bitwise convert start to integer.
|
||||
long transducer = Double.doubleToRawLongBits(start + 0.0d);
|
||||
|
||||
/*
|
||||
* IEEE 754 floating-point numbers are lexicographically
|
||||
* ordered if treated as signed- magnitude integers .
|
||||
* Since Java's integers are two's complement,
|
||||
* incrementing" the two's complement representation of a
|
||||
* logically negative floating-point value *decrements*
|
||||
* the signed-magnitude representation. Therefore, when
|
||||
* the integer representation of a floating-point values
|
||||
* is less than zero, the adjustment to the representation
|
||||
* is in the opposite direction than would be expected at
|
||||
* first .
|
||||
*/
|
||||
if (direction > start) { // Calculate next greater value
|
||||
transducer = transducer + (transducer >= 0L ? 1L:-1L);
|
||||
} else { // Calculate next lesser value
|
||||
assert direction < start;
|
||||
if (transducer > 0L)
|
||||
--transducer;
|
||||
else
|
||||
if (transducer < 0L )
|
||||
++transducer;
|
||||
/*
|
||||
* transducer==0, the result is -MIN_VALUE
|
||||
*
|
||||
* The transition from zero (implicitly
|
||||
* positive) to the smallest negative
|
||||
* signed magnitude value must be done
|
||||
* explicitly.
|
||||
*/
|
||||
else
|
||||
transducer = DoubleConsts.SIGN_BIT_MASK | 1L;
|
||||
}
|
||||
|
||||
return Double.longBitsToDouble(transducer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1394,7 +1520,63 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float nextAfter(float start, double direction) {
|
||||
return sun.misc.FpUtils.nextAfter(start, direction);
|
||||
/*
|
||||
* The cases:
|
||||
*
|
||||
* nextAfter(+infinity, 0) == MAX_VALUE
|
||||
* nextAfter(+infinity, +infinity) == +infinity
|
||||
* nextAfter(-infinity, 0) == -MAX_VALUE
|
||||
* nextAfter(-infinity, -infinity) == -infinity
|
||||
*
|
||||
* are naturally handled without any additional testing
|
||||
*/
|
||||
|
||||
// First check for NaN values
|
||||
if (Float.isNaN(start) || Double.isNaN(direction)) {
|
||||
// return a NaN derived from the input NaN(s)
|
||||
return start + (float)direction;
|
||||
} else if (start == direction) {
|
||||
return (float)direction;
|
||||
} else { // start > direction or start < direction
|
||||
// Add +0.0 to get rid of a -0.0 (+0.0 + -0.0 => +0.0)
|
||||
// then bitwise convert start to integer.
|
||||
int transducer = Float.floatToRawIntBits(start + 0.0f);
|
||||
|
||||
/*
|
||||
* IEEE 754 floating-point numbers are lexicographically
|
||||
* ordered if treated as signed- magnitude integers .
|
||||
* Since Java's integers are two's complement,
|
||||
* incrementing" the two's complement representation of a
|
||||
* logically negative floating-point value *decrements*
|
||||
* the signed-magnitude representation. Therefore, when
|
||||
* the integer representation of a floating-point values
|
||||
* is less than zero, the adjustment to the representation
|
||||
* is in the opposite direction than would be expected at
|
||||
* first.
|
||||
*/
|
||||
if (direction > start) {// Calculate next greater value
|
||||
transducer = transducer + (transducer >= 0 ? 1:-1);
|
||||
} else { // Calculate next lesser value
|
||||
assert direction < start;
|
||||
if (transducer > 0)
|
||||
--transducer;
|
||||
else
|
||||
if (transducer < 0 )
|
||||
++transducer;
|
||||
/*
|
||||
* transducer==0, the result is -MIN_VALUE
|
||||
*
|
||||
* The transition from zero (implicitly
|
||||
* positive) to the smallest negative
|
||||
* signed magnitude value must be done
|
||||
* explicitly.
|
||||
*/
|
||||
else
|
||||
transducer = FloatConsts.SIGN_BIT_MASK | 1;
|
||||
}
|
||||
|
||||
return Float.intBitsToFloat(transducer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1423,7 +1605,13 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double nextUp(double d) {
|
||||
return sun.misc.FpUtils.nextUp(d);
|
||||
if( Double.isNaN(d) || d == Double.POSITIVE_INFINITY)
|
||||
return d;
|
||||
else {
|
||||
d += 0.0d;
|
||||
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
|
||||
((d >= 0.0d)?+1L:-1L));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1452,9 +1640,88 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float nextUp(float f) {
|
||||
return sun.misc.FpUtils.nextUp(f);
|
||||
if( Float.isNaN(f) || f == FloatConsts.POSITIVE_INFINITY)
|
||||
return f;
|
||||
else {
|
||||
f += 0.0f;
|
||||
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
|
||||
((f >= 0.0f)?+1:-1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the floating-point value adjacent to {@code d} in
|
||||
* the direction of negative infinity. This method is
|
||||
* semantically equivalent to {@code nextAfter(d,
|
||||
* Double.NEGATIVE_INFINITY)}; however, a
|
||||
* {@code nextDown} implementation may run faster than its
|
||||
* equivalent {@code nextAfter} call.
|
||||
*
|
||||
* <p>Special Cases:
|
||||
* <ul>
|
||||
* <li> If the argument is NaN, the result is NaN.
|
||||
*
|
||||
* <li> If the argument is negative infinity, the result is
|
||||
* negative infinity.
|
||||
*
|
||||
* <li> If the argument is zero, the result is
|
||||
* {@code -Double.MIN_VALUE}
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* @param d starting floating-point value
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static double nextDown(double d) {
|
||||
if (Double.isNaN(d) || d == Double.NEGATIVE_INFINITY)
|
||||
return d;
|
||||
else {
|
||||
if (d == 0.0)
|
||||
return -Double.MIN_VALUE;
|
||||
else
|
||||
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
|
||||
((d > 0.0d)?-1L:+1L));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the floating-point value adjacent to {@code f} in
|
||||
* the direction of negative infinity. This method is
|
||||
* semantically equivalent to {@code nextAfter(f,
|
||||
* Float.NEGATIVE_INFINITY)}; however, a
|
||||
* {@code nextDown} implementation may run faster than its
|
||||
* equivalent {@code nextAfter} call.
|
||||
*
|
||||
* <p>Special Cases:
|
||||
* <ul>
|
||||
* <li> If the argument is NaN, the result is NaN.
|
||||
*
|
||||
* <li> If the argument is negative infinity, the result is
|
||||
* negative infinity.
|
||||
*
|
||||
* <li> If the argument is zero, the result is
|
||||
* {@code -Float.MIN_VALUE}
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* @param f starting floating-point value
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static float nextDown(float f) {
|
||||
if (Float.isNaN(f) || f == Float.NEGATIVE_INFINITY)
|
||||
return f;
|
||||
else {
|
||||
if (f == 0.0f)
|
||||
return -Float.MIN_VALUE;
|
||||
else
|
||||
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
|
||||
((f > 0.0f)?-1:+1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return {@code d} ×
|
||||
@ -1487,7 +1754,80 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double scalb(double d, int scaleFactor) {
|
||||
return sun.misc.FpUtils.scalb(d, scaleFactor);
|
||||
/*
|
||||
* This method does not need to be declared strictfp to
|
||||
* compute the same correct result on all platforms. When
|
||||
* scaling up, it does not matter what order the
|
||||
* multiply-store operations are done; the result will be
|
||||
* finite or overflow regardless of the operation ordering.
|
||||
* However, to get the correct result when scaling down, a
|
||||
* particular ordering must be used.
|
||||
*
|
||||
* When scaling down, the multiply-store operations are
|
||||
* sequenced so that it is not possible for two consecutive
|
||||
* multiply-stores to return subnormal results. If one
|
||||
* multiply-store result is subnormal, the next multiply will
|
||||
* round it away to zero. This is done by first multiplying
|
||||
* by 2 ^ (scaleFactor % n) and then multiplying several
|
||||
* times by by 2^n as needed where n is the exponent of number
|
||||
* that is a covenient power of two. In this way, at most one
|
||||
* real rounding error occurs. If the double value set is
|
||||
* being used exclusively, the rounding will occur on a
|
||||
* multiply. If the double-extended-exponent value set is
|
||||
* being used, the products will (perhaps) be exact but the
|
||||
* stores to d are guaranteed to round to the double value
|
||||
* set.
|
||||
*
|
||||
* It is _not_ a valid implementation to first multiply d by
|
||||
* 2^MIN_EXPONENT and then by 2 ^ (scaleFactor %
|
||||
* MIN_EXPONENT) since even in a strictfp program double
|
||||
* rounding on underflow could occur; e.g. if the scaleFactor
|
||||
* argument was (MIN_EXPONENT - n) and the exponent of d was a
|
||||
* little less than -(MIN_EXPONENT - n), meaning the final
|
||||
* result would be subnormal.
|
||||
*
|
||||
* Since exact reproducibility of this method can be achieved
|
||||
* without any undue performance burden, there is no
|
||||
* compelling reason to allow double rounding on underflow in
|
||||
* scalb.
|
||||
*/
|
||||
|
||||
// magnitude of a power of two so large that scaling a finite
|
||||
// nonzero value by it would be guaranteed to over or
|
||||
// underflow; due to rounding, scaling down takes takes an
|
||||
// additional power of two which is reflected here
|
||||
final int MAX_SCALE = DoubleConsts.MAX_EXPONENT + -DoubleConsts.MIN_EXPONENT +
|
||||
DoubleConsts.SIGNIFICAND_WIDTH + 1;
|
||||
int exp_adjust = 0;
|
||||
int scale_increment = 0;
|
||||
double exp_delta = Double.NaN;
|
||||
|
||||
// Make sure scaling factor is in a reasonable range
|
||||
|
||||
if(scaleFactor < 0) {
|
||||
scaleFactor = Math.max(scaleFactor, -MAX_SCALE);
|
||||
scale_increment = -512;
|
||||
exp_delta = twoToTheDoubleScaleDown;
|
||||
}
|
||||
else {
|
||||
scaleFactor = Math.min(scaleFactor, MAX_SCALE);
|
||||
scale_increment = 512;
|
||||
exp_delta = twoToTheDoubleScaleUp;
|
||||
}
|
||||
|
||||
// Calculate (scaleFactor % +/-512), 512 = 2^9, using
|
||||
// technique from "Hacker's Delight" section 10-2.
|
||||
int t = (scaleFactor >> 9-1) >>> 32 - 9;
|
||||
exp_adjust = ((scaleFactor + t) & (512 -1)) - t;
|
||||
|
||||
d *= powerOfTwoD(exp_adjust);
|
||||
scaleFactor -= exp_adjust;
|
||||
|
||||
while(scaleFactor != 0) {
|
||||
d *= exp_delta;
|
||||
scaleFactor -= scale_increment;
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1521,6 +1861,49 @@ public final class Math {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float scalb(float f, int scaleFactor) {
|
||||
return sun.misc.FpUtils.scalb(f, scaleFactor);
|
||||
// magnitude of a power of two so large that scaling a finite
|
||||
// nonzero value by it would be guaranteed to over or
|
||||
// underflow; due to rounding, scaling down takes takes an
|
||||
// additional power of two which is reflected here
|
||||
final int MAX_SCALE = FloatConsts.MAX_EXPONENT + -FloatConsts.MIN_EXPONENT +
|
||||
FloatConsts.SIGNIFICAND_WIDTH + 1;
|
||||
|
||||
// Make sure scaling factor is in a reasonable range
|
||||
scaleFactor = Math.max(Math.min(scaleFactor, MAX_SCALE), -MAX_SCALE);
|
||||
|
||||
/*
|
||||
* Since + MAX_SCALE for float fits well within the double
|
||||
* exponent range and + float -> double conversion is exact
|
||||
* the multiplication below will be exact. Therefore, the
|
||||
* rounding that occurs when the double product is cast to
|
||||
* float will be the correctly rounded float result. Since
|
||||
* all operations other than the final multiply will be exact,
|
||||
* it is not necessary to declare this method strictfp.
|
||||
*/
|
||||
return (float)((double)f*powerOfTwoD(scaleFactor));
|
||||
}
|
||||
|
||||
// Constants used in scalb
|
||||
static double twoToTheDoubleScaleUp = powerOfTwoD(512);
|
||||
static double twoToTheDoubleScaleDown = powerOfTwoD(-512);
|
||||
|
||||
/**
|
||||
* Returns a floating-point power of two in the normal range.
|
||||
*/
|
||||
static double powerOfTwoD(int n) {
|
||||
assert(n >= DoubleConsts.MIN_EXPONENT && n <= DoubleConsts.MAX_EXPONENT);
|
||||
return Double.longBitsToDouble((((long)n + (long)DoubleConsts.EXP_BIAS) <<
|
||||
(DoubleConsts.SIGNIFICAND_WIDTH-1))
|
||||
& DoubleConsts.EXP_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a floating-point power of two in the normal range.
|
||||
*/
|
||||
public static float powerOfTwoF(int n) {
|
||||
assert(n >= FloatConsts.MIN_EXPONENT && n <= FloatConsts.MAX_EXPONENT);
|
||||
return Float.intBitsToFloat(((n + FloatConsts.EXP_BIAS) <<
|
||||
(FloatConsts.SIGNIFICAND_WIDTH-1))
|
||||
& FloatConsts.EXP_BIT_MASK);
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +82,7 @@ import java.lang.annotation.*;
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* @since 1.7
|
||||
* @jls 4.7 Reifiable Types
|
||||
* @jls 8.4.1 Formal Parameters
|
||||
*/
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
package java.lang;
|
||||
import java.util.Random;
|
||||
import sun.misc.FpUtils;
|
||||
import sun.misc.DoubleConsts;
|
||||
|
||||
/**
|
||||
@ -428,7 +427,7 @@ public final class StrictMath {
|
||||
* 1.0, which is exact too.
|
||||
*/
|
||||
double twoToThe52 = (double)(1L << 52); // 2^52
|
||||
double sign = FpUtils.rawCopySign(1.0, a); // preserve sign info
|
||||
double sign = Math.copySign(1.0, a); // preserve sign info
|
||||
a = Math.abs(a);
|
||||
|
||||
if (a < twoToThe52) { // E_min <= ilogb(a) <= 51
|
||||
@ -955,7 +954,7 @@ public final class StrictMath {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static double ulp(double d) {
|
||||
return sun.misc.FpUtils.ulp(d);
|
||||
return Math.ulp(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -982,7 +981,7 @@ public final class StrictMath {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static float ulp(float f) {
|
||||
return sun.misc.FpUtils.ulp(f);
|
||||
return Math.ulp(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1003,7 +1002,7 @@ public final class StrictMath {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static double signum(double d) {
|
||||
return sun.misc.FpUtils.signum(d);
|
||||
return Math.signum(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1024,7 +1023,7 @@ public final class StrictMath {
|
||||
* @since 1.5
|
||||
*/
|
||||
public static float signum(float f) {
|
||||
return sun.misc.FpUtils.signum(f);
|
||||
return Math.signum(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1202,7 +1201,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double copySign(double magnitude, double sign) {
|
||||
return sun.misc.FpUtils.copySign(magnitude, sign);
|
||||
return Math.copySign(magnitude, (Double.isNaN(sign)?1.0d:sign));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1218,7 +1217,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float copySign(float magnitude, float sign) {
|
||||
return sun.misc.FpUtils.copySign(magnitude, sign);
|
||||
return Math.copySign(magnitude, (Float.isNaN(sign)?1.0f:sign));
|
||||
}
|
||||
/**
|
||||
* Returns the unbiased exponent used in the representation of a
|
||||
@ -1234,7 +1233,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static int getExponent(float f) {
|
||||
return sun.misc.FpUtils.getExponent(f);
|
||||
return Math.getExponent(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1251,7 +1250,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static int getExponent(double d) {
|
||||
return sun.misc.FpUtils.getExponent(d);
|
||||
return Math.getExponent(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1294,7 +1293,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double nextAfter(double start, double direction) {
|
||||
return sun.misc.FpUtils.nextAfter(start, direction);
|
||||
return Math.nextAfter(start, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1336,7 +1335,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float nextAfter(float start, double direction) {
|
||||
return sun.misc.FpUtils.nextAfter(start, direction);
|
||||
return Math.nextAfter(start, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1365,7 +1364,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double nextUp(double d) {
|
||||
return sun.misc.FpUtils.nextUp(d);
|
||||
return Math.nextUp(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1394,9 +1393,66 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float nextUp(float f) {
|
||||
return sun.misc.FpUtils.nextUp(f);
|
||||
return Math.nextUp(f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the floating-point value adjacent to {@code d} in
|
||||
* the direction of negative infinity. This method is
|
||||
* semantically equivalent to {@code nextAfter(d,
|
||||
* Double.NEGATIVE_INFINITY)}; however, a
|
||||
* {@code nextDown} implementation may run faster than its
|
||||
* equivalent {@code nextAfter} call.
|
||||
*
|
||||
* <p>Special Cases:
|
||||
* <ul>
|
||||
* <li> If the argument is NaN, the result is NaN.
|
||||
*
|
||||
* <li> If the argument is negative infinity, the result is
|
||||
* negative infinity.
|
||||
*
|
||||
* <li> If the argument is zero, the result is
|
||||
* {@code -Double.MIN_VALUE}
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* @param d starting floating-point value
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static double nextDown(double d) {
|
||||
return Math.nextDown(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the floating-point value adjacent to {@code f} in
|
||||
* the direction of negative infinity. This method is
|
||||
* semantically equivalent to {@code nextAfter(f,
|
||||
* Float.NEGATIVE_INFINITY)}; however, a
|
||||
* {@code nextDown} implementation may run faster than its
|
||||
* equivalent {@code nextAfter} call.
|
||||
*
|
||||
* <p>Special Cases:
|
||||
* <ul>
|
||||
* <li> If the argument is NaN, the result is NaN.
|
||||
*
|
||||
* <li> If the argument is negative infinity, the result is
|
||||
* negative infinity.
|
||||
*
|
||||
* <li> If the argument is zero, the result is
|
||||
* {@code -Float.MIN_VALUE}
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* @param f starting floating-point value
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @since 1.8
|
||||
*/
|
||||
public static float nextDown(float f) {
|
||||
return Math.nextDown(f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return {@code d} ×
|
||||
@ -1429,7 +1485,7 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static double scalb(double d, int scaleFactor) {
|
||||
return sun.misc.FpUtils.scalb(d, scaleFactor);
|
||||
return Math.scalb(d, scaleFactor);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1463,6 +1519,6 @@ public final class StrictMath {
|
||||
* @since 1.6
|
||||
*/
|
||||
public static float scalb(float f, int scaleFactor) {
|
||||
return sun.misc.FpUtils.scalb(f, scaleFactor);
|
||||
return Math.scalb(f, scaleFactor);
|
||||
}
|
||||
}
|
||||
|
@ -2919,6 +2919,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
||||
* result with the opposite sign.
|
||||
*
|
||||
* @return this BigInteger converted to an {@code int}.
|
||||
* @see #intValueExact()
|
||||
*/
|
||||
public int intValue() {
|
||||
int result = 0;
|
||||
@ -2939,6 +2940,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
||||
* result with the opposite sign.
|
||||
*
|
||||
* @return this BigInteger converted to a {@code long}.
|
||||
* @see #longValueExact()
|
||||
*/
|
||||
public long longValue() {
|
||||
long result = 0;
|
||||
@ -3382,4 +3384,84 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this {@code BigInteger} to a {@code long}, checking
|
||||
* for lost information. If the value of this {@code BigInteger}
|
||||
* is out of the range of the {@code long} type, then an
|
||||
* {@code ArithmeticException} is thrown.
|
||||
*
|
||||
* @return this {@code BigInteger} converted to a {@code long}.
|
||||
* @throws ArithmeticException if the value of {@code this} will
|
||||
* not exactly fit in a {@code long}.
|
||||
* @see BigInteger#longValue
|
||||
* @since 1.8
|
||||
*/
|
||||
public long longValueExact() {
|
||||
if (mag.length <= 2 && bitLength() <= 63)
|
||||
return longValue();
|
||||
else
|
||||
throw new ArithmeticException("BigInteger out of long range");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this {@code BigInteger} to an {@code int}, checking
|
||||
* for lost information. If the value of this {@code BigInteger}
|
||||
* is out of the range of the {@code int} type, then an
|
||||
* {@code ArithmeticException} is thrown.
|
||||
*
|
||||
* @return this {@code BigInteger} converted to an {@code int}.
|
||||
* @throws ArithmeticException if the value of {@code this} will
|
||||
* not exactly fit in a {@code int}.
|
||||
* @see BigInteger#intValue
|
||||
* @since 1.8
|
||||
*/
|
||||
public int intValueExact() {
|
||||
if (mag.length <= 1 && bitLength() <= 31)
|
||||
return intValue();
|
||||
else
|
||||
throw new ArithmeticException("BigInteger out of int range");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this {@code BigInteger} to a {@code short}, checking
|
||||
* for lost information. If the value of this {@code BigInteger}
|
||||
* is out of the range of the {@code short} type, then an
|
||||
* {@code ArithmeticException} is thrown.
|
||||
*
|
||||
* @return this {@code BigInteger} converted to a {@code short}.
|
||||
* @throws ArithmeticException if the value of {@code this} will
|
||||
* not exactly fit in a {@code short}.
|
||||
* @see BigInteger#shortValue
|
||||
* @since 1.8
|
||||
*/
|
||||
public short shortValueExact() {
|
||||
if (mag.length <= 1 && bitLength() <= 31) {
|
||||
int value = intValue();
|
||||
if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE)
|
||||
return shortValue();
|
||||
}
|
||||
throw new ArithmeticException("BigInteger out of short range");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this {@code BigInteger} to a {@code byte}, checking
|
||||
* for lost information. If the value of this {@code BigInteger}
|
||||
* is out of the range of the {@code byte} type, then an
|
||||
* {@code ArithmeticException} is thrown.
|
||||
*
|
||||
* @return this {@code BigInteger} converted to a {@code byte}.
|
||||
* @throws ArithmeticException if the value of {@code this} will
|
||||
* not exactly fit in a {@code byte}.
|
||||
* @see BigInteger#byteValue
|
||||
* @since 1.8
|
||||
*/
|
||||
public byte byteValueExact() {
|
||||
if (mag.length <= 1 && bitLength() <= 31) {
|
||||
int value = intValue();
|
||||
if (value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE)
|
||||
return byteValue();
|
||||
}
|
||||
throw new ArithmeticException("BigInteger out of byte range");
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,6 @@ package java.net;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.util.Enumeration;
|
||||
import sun.net.ResourceManager;
|
||||
|
||||
/**
|
||||
@ -66,8 +64,8 @@ abstract class AbstractPlainDatagramSocketImpl extends DatagramSocketImpl
|
||||
* Creates a datagram socket
|
||||
*/
|
||||
protected synchronized void create() throws SocketException {
|
||||
fd = new FileDescriptor();
|
||||
ResourceManager.beforeUdpCreate();
|
||||
fd = new FileDescriptor();
|
||||
try {
|
||||
datagramSocketCreate();
|
||||
} catch (SocketException ioe) {
|
||||
@ -153,11 +151,13 @@ abstract class AbstractPlainDatagramSocketImpl extends DatagramSocketImpl
|
||||
* Set the TTL (time-to-live) option.
|
||||
* @param TTL to be set.
|
||||
*/
|
||||
@Deprecated
|
||||
protected abstract void setTTL(byte ttl) throws IOException;
|
||||
|
||||
/**
|
||||
* Get the TTL (time-to-live) option.
|
||||
*/
|
||||
@Deprecated
|
||||
protected abstract byte getTTL() throws IOException;
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -96,7 +96,7 @@ abstract public class ContentHandler {
|
||||
* @exception IOException if an I/O error occurs while reading the object.
|
||||
* @since 1.3
|
||||
*/
|
||||
public Object getContent(URLConnection urlc, Class[] classes) throws IOException {
|
||||
public Object getContent(URLConnection urlc, Class<?>[] classes) throws IOException {
|
||||
Object obj = getContent(urlc);
|
||||
|
||||
for (int i = 0; i < classes.length; i++) {
|
||||
|
@ -249,7 +249,6 @@ public class CookieManager extends CookieHandler
|
||||
return Collections.unmodifiableMap(cookieMap);
|
||||
}
|
||||
|
||||
|
||||
public void
|
||||
put(URI uri, Map<String, List<String>> responseHeaders)
|
||||
throws IOException
|
||||
@ -284,7 +283,7 @@ public class CookieManager extends CookieHandler
|
||||
cookies = HttpCookie.parse(headerValue);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// Bogus header, make an empty list and log the error
|
||||
cookies = java.util.Collections.EMPTY_LIST;
|
||||
cookies = java.util.Collections.emptyList();
|
||||
if (logger.isLoggable(PlatformLogger.SEVERE)) {
|
||||
logger.severe("Invalid cookie for " + uri + ": " + headerValue);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -25,9 +25,7 @@
|
||||
|
||||
package java.net;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.nio.channels.DatagramChannel;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
@ -300,7 +298,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
static Class implClass = null;
|
||||
static Class<?> implClass = null;
|
||||
|
||||
void createImpl() throws SocketException {
|
||||
if (impl == null) {
|
||||
|
@ -535,6 +535,7 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
return responseMessage;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public long getHeaderFieldDate(String name, long Default) {
|
||||
String dateString = getHeaderField(name);
|
||||
try {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -25,9 +25,7 @@
|
||||
|
||||
package java.net;
|
||||
|
||||
import java.security.AccessController;
|
||||
import java.io.ObjectStreamException;
|
||||
import sun.security.action.*;
|
||||
|
||||
/**
|
||||
* This class represents an Internet Protocol version 4 (IPv4) address.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 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
|
||||
@ -59,11 +59,11 @@ class Inet4AddressImpl implements InetAddressImpl {
|
||||
/*
|
||||
* Let's make sure we use an address of the proper family
|
||||
*/
|
||||
java.util.Enumeration it = netif.getInetAddresses();
|
||||
java.util.Enumeration<InetAddress> it = netif.getInetAddresses();
|
||||
InetAddress inetaddr = null;
|
||||
while (!(inetaddr instanceof Inet4Address) &&
|
||||
it.hasMoreElements())
|
||||
inetaddr = (InetAddress) it.nextElement();
|
||||
inetaddr = it.nextElement();
|
||||
if (inetaddr instanceof Inet4Address)
|
||||
ifaddr = inetaddr.getAddress();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -383,9 +383,9 @@ class Inet6Address extends InetAddress {
|
||||
while (en.hasMoreElements()) {
|
||||
NetworkInterface ifc = en.nextElement();
|
||||
if (ifc.getName().equals (ifname)) {
|
||||
Enumeration addresses = ifc.getInetAddresses();
|
||||
Enumeration<InetAddress> addresses = ifc.getInetAddresses();
|
||||
while (addresses.hasMoreElements()) {
|
||||
InetAddress addr = (InetAddress)addresses.nextElement();
|
||||
InetAddress addr = addresses.nextElement();
|
||||
if (!(addr instanceof Inet6Address)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 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
|
||||
@ -54,10 +54,10 @@ class Inet6AddressImpl implements InetAddressImpl {
|
||||
* be either an IPv6 address or an IPv4 address (case of a dual
|
||||
* stack system).
|
||||
*/
|
||||
java.util.Enumeration it = netif.getInetAddresses();
|
||||
java.util.Enumeration<InetAddress> it = netif.getInetAddresses();
|
||||
InetAddress inetaddr = null;
|
||||
while (it.hasMoreElements()) {
|
||||
inetaddr = (InetAddress) it.nextElement();
|
||||
inetaddr = it.nextElement();
|
||||
if (inetaddr.getClass().isInstance(addr)) {
|
||||
ifaddr = inetaddr.getAddress();
|
||||
if (inetaddr instanceof Inet6Address) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -26,7 +26,6 @@
|
||||
package java.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.util.Enumeration;
|
||||
|
||||
/**
|
||||
@ -500,9 +499,9 @@ class MulticastSocket extends DatagramSocket {
|
||||
*/
|
||||
try {
|
||||
NetworkInterface ni = NetworkInterface.getByInetAddress(ia);
|
||||
Enumeration addrs = ni.getInetAddresses();
|
||||
Enumeration<InetAddress> addrs = ni.getInetAddresses();
|
||||
while (addrs.hasMoreElements()) {
|
||||
InetAddress addr = (InetAddress)(addrs.nextElement());
|
||||
InetAddress addr = addrs.nextElement();
|
||||
if (addr.equals(infAddress)) {
|
||||
return infAddress;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -73,7 +73,7 @@ public class Proxy {
|
||||
|
||||
// Creates the proxy that represents a <code>DIRECT</code> connection.
|
||||
private Proxy() {
|
||||
type = type.DIRECT;
|
||||
type = Type.DIRECT;
|
||||
sa = null;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -69,7 +69,7 @@ public abstract class ProxySelector {
|
||||
|
||||
static {
|
||||
try {
|
||||
Class c = Class.forName("sun.net.spi.DefaultProxySelector");
|
||||
Class<?> c = Class.forName("sun.net.spi.DefaultProxySelector");
|
||||
if (c != null && ProxySelector.class.isAssignableFrom(c)) {
|
||||
theProxySelector = (ProxySelector) c.newInstance();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -459,13 +459,10 @@ class Socket implements java.io.Closeable {
|
||||
oldImpl = AccessController.doPrivileged
|
||||
(new PrivilegedAction<Boolean>() {
|
||||
public Boolean run() {
|
||||
Class[] cl = new Class[2];
|
||||
cl[0] = SocketAddress.class;
|
||||
cl[1] = Integer.TYPE;
|
||||
Class clazz = impl.getClass();
|
||||
Class<?> clazz = impl.getClass();
|
||||
while (true) {
|
||||
try {
|
||||
clazz.getDeclaredMethod("connect", cl);
|
||||
clazz.getDeclaredMethod("connect", SocketAddress.class, int.class);
|
||||
return Boolean.FALSE;
|
||||
} catch (NoSuchMethodException e) {
|
||||
clazz = clazz.getSuperclass();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -467,6 +467,7 @@ implements java.io.Serializable
|
||||
* @param action the action string
|
||||
* @return the action mask
|
||||
*/
|
||||
@SuppressWarnings("fallthrough")
|
||||
private static int getMask(String action) {
|
||||
|
||||
if (action == null) {
|
||||
@ -1231,7 +1232,7 @@ final class SocketPermissionCollection extends PermissionCollection
|
||||
implements Serializable
|
||||
{
|
||||
// Not serialized; see serialization section at end of class
|
||||
private transient List perms;
|
||||
private transient List<SocketPermission> perms;
|
||||
|
||||
/**
|
||||
* Create an empty SocketPermissions object.
|
||||
@ -1239,7 +1240,7 @@ implements Serializable
|
||||
*/
|
||||
|
||||
public SocketPermissionCollection() {
|
||||
perms = new ArrayList();
|
||||
perms = new ArrayList<SocketPermission>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1267,7 +1268,7 @@ implements Serializable
|
||||
// optimization to ensure perms most likely to be tested
|
||||
// show up early (4301064)
|
||||
synchronized (this) {
|
||||
perms.add(0, permission);
|
||||
perms.add(0, (SocketPermission)permission);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1296,7 +1297,7 @@ implements Serializable
|
||||
int len = perms.size();
|
||||
//System.out.println("implies "+np);
|
||||
for (int i = 0; i < len; i++) {
|
||||
SocketPermission x = (SocketPermission) perms.get(i);
|
||||
SocketPermission x = perms.get(i);
|
||||
//System.out.println(" trying "+x);
|
||||
if (((needed & x.getMask()) != 0) && x.impliesIgnoreMask(np)) {
|
||||
effective |= x.getMask();
|
||||
@ -1316,10 +1317,11 @@ implements Serializable
|
||||
* @return an enumeration of all the SocketPermission objects.
|
||||
*/
|
||||
|
||||
public Enumeration elements() {
|
||||
@SuppressWarnings("unchecked")
|
||||
public Enumeration<Permission> elements() {
|
||||
// Convert Iterator into Enumeration
|
||||
synchronized (this) {
|
||||
return Collections.enumeration(perms);
|
||||
return Collections.enumeration((List<Permission>)(List)perms);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1353,7 +1355,7 @@ implements Serializable
|
||||
// Don't call out.defaultWriteObject()
|
||||
|
||||
// Write out Vector
|
||||
Vector permissions = new Vector(perms.size());
|
||||
Vector<SocketPermission> permissions = new Vector<>(perms.size());
|
||||
|
||||
synchronized (this) {
|
||||
permissions.addAll(perms);
|
||||
@ -1375,8 +1377,9 @@ implements Serializable
|
||||
ObjectInputStream.GetField gfields = in.readFields();
|
||||
|
||||
// Get the one we want
|
||||
Vector permissions = (Vector)gfields.get("permissions", null);
|
||||
perms = new ArrayList(permissions.size());
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<SocketPermission> permissions = (Vector<SocketPermission>)gfields.get("permissions", null);
|
||||
perms = new ArrayList<SocketPermission>(permissions.size());
|
||||
perms.addAll(permissions);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -27,7 +27,6 @@ package java.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Hashtable;
|
||||
import java.util.StringTokenizer;
|
||||
import sun.security.util.SecurityConstants;
|
||||
@ -1113,7 +1112,7 @@ public final class URL implements java.io.Serializable {
|
||||
/**
|
||||
* A table of protocol handlers.
|
||||
*/
|
||||
static Hashtable handlers = new Hashtable();
|
||||
static Hashtable<String,URLStreamHandler> handlers = new Hashtable<>();
|
||||
private static Object streamHandlerLock = new Object();
|
||||
|
||||
/**
|
||||
@ -1122,7 +1121,7 @@ public final class URL implements java.io.Serializable {
|
||||
*/
|
||||
static URLStreamHandler getURLStreamHandler(String protocol) {
|
||||
|
||||
URLStreamHandler handler = (URLStreamHandler)handlers.get(protocol);
|
||||
URLStreamHandler handler = handlers.get(protocol);
|
||||
if (handler == null) {
|
||||
|
||||
boolean checkedWithFactory = false;
|
||||
@ -1160,7 +1159,7 @@ public final class URL implements java.io.Serializable {
|
||||
try {
|
||||
String clsName = packagePrefix + "." + protocol +
|
||||
".Handler";
|
||||
Class cls = null;
|
||||
Class<?> cls = null;
|
||||
try {
|
||||
cls = Class.forName(clsName);
|
||||
} catch (ClassNotFoundException e) {
|
||||
@ -1185,7 +1184,7 @@ public final class URL implements java.io.Serializable {
|
||||
|
||||
// Check again with hashtable just in case another
|
||||
// thread created a handler since we last checked
|
||||
handler2 = (URLStreamHandler)handlers.get(protocol);
|
||||
handler2 = handlers.get(protocol);
|
||||
|
||||
if (handler2 != null) {
|
||||
return handler2;
|
||||
|
@ -25,14 +25,7 @@
|
||||
|
||||
package java.net;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.lang.ref.*;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.net.URLStreamHandlerFactory;
|
||||
import java.util.Enumeration;
|
||||
import java.util.*;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.jar.JarFile;
|
||||
@ -352,8 +345,8 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
{
|
||||
try {
|
||||
return AccessController.doPrivileged(
|
||||
new PrivilegedExceptionAction<Class>() {
|
||||
public Class run() throws ClassNotFoundException {
|
||||
new PrivilegedExceptionAction<Class<?>>() {
|
||||
public Class<?> run() throws ClassNotFoundException {
|
||||
String path = name.replace('.', '/').concat(".class");
|
||||
Resource res = ucp.getResource(path, false);
|
||||
if (res != null) {
|
||||
@ -406,7 +399,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* Resource. The resulting Class must be resolved before it can be
|
||||
* used.
|
||||
*/
|
||||
private Class defineClass(String name, Resource res) throws IOException {
|
||||
private Class<?> defineClass(String name, Resource res) throws IOException {
|
||||
long t0 = System.nanoTime();
|
||||
int i = name.lastIndexOf('.');
|
||||
URL url = res.getCodeSourceURL();
|
||||
@ -774,7 +767,7 @@ final class FactoryURLClassLoader extends URLClassLoader {
|
||||
super(urls, acc);
|
||||
}
|
||||
|
||||
public final Class loadClass(String name, boolean resolve)
|
||||
public final Class<?> loadClass(String name, boolean resolve)
|
||||
throws ClassNotFoundException
|
||||
{
|
||||
// First check if we have permission to access the package. This
|
||||
|
@ -595,7 +595,7 @@ public abstract class URLConnection {
|
||||
* @since 1.4
|
||||
*/
|
||||
public Map<String,List<String>> getHeaderFields() {
|
||||
return Collections.EMPTY_MAP;
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -659,6 +659,7 @@ public abstract class URLConnection {
|
||||
* <code>Default</code> argument is returned if the field is
|
||||
* missing or malformed.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public long getHeaderFieldDate(String name, long Default) {
|
||||
String value = getHeaderField(name);
|
||||
try {
|
||||
@ -1153,7 +1154,7 @@ public abstract class URLConnection {
|
||||
throw new IllegalStateException("Already connected");
|
||||
|
||||
if (requests == null)
|
||||
return Collections.EMPTY_MAP;
|
||||
return Collections.emptyMap();
|
||||
|
||||
return requests.getHeaders(null);
|
||||
}
|
||||
@ -1236,7 +1237,7 @@ public abstract class URLConnection {
|
||||
factory = fac;
|
||||
}
|
||||
|
||||
private static Hashtable handlers = new Hashtable();
|
||||
private static Hashtable<String, ContentHandler> handlers = new Hashtable<>();
|
||||
|
||||
/**
|
||||
* Gets the Content Handler appropriate for this connection.
|
||||
@ -1250,7 +1251,7 @@ public abstract class URLConnection {
|
||||
if (contentType == null)
|
||||
throw new UnknownServiceException("no content-type");
|
||||
try {
|
||||
handler = (ContentHandler) handlers.get(contentType);
|
||||
handler = handlers.get(contentType);
|
||||
if (handler != null)
|
||||
return handler;
|
||||
} catch(Exception e) {
|
||||
@ -1316,7 +1317,7 @@ public abstract class URLConnection {
|
||||
|
||||
try {
|
||||
String clsName = packagePrefix + "." + contentHandlerClassName;
|
||||
Class cls = null;
|
||||
Class<?> cls = null;
|
||||
try {
|
||||
cls = Class.forName(clsName);
|
||||
} catch (ClassNotFoundException e) {
|
||||
|
@ -50,7 +50,6 @@ import java.text.NumberFormat;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import sun.misc.FpUtils;
|
||||
import sun.misc.DoubleConsts;
|
||||
import sun.misc.FormattedFloatingDecimal;
|
||||
|
||||
@ -3417,24 +3416,24 @@ public final class Formatter implements Closeable, Flushable {
|
||||
// Method assumes that d > 0.
|
||||
private String hexDouble(double d, int prec) {
|
||||
// Let Double.toHexString handle simple cases
|
||||
if(!FpUtils.isFinite(d) || d == 0.0 || prec == 0 || prec >= 13)
|
||||
if(!Double.isFinite(d) || d == 0.0 || prec == 0 || prec >= 13)
|
||||
// remove "0x"
|
||||
return Double.toHexString(d).substring(2);
|
||||
else {
|
||||
assert(prec >= 1 && prec <= 12);
|
||||
|
||||
int exponent = FpUtils.getExponent(d);
|
||||
int exponent = Math.getExponent(d);
|
||||
boolean subnormal
|
||||
= (exponent == DoubleConsts.MIN_EXPONENT - 1);
|
||||
|
||||
// If this is subnormal input so normalize (could be faster to
|
||||
// do as integer operation).
|
||||
if (subnormal) {
|
||||
scaleUp = FpUtils.scalb(1.0, 54);
|
||||
scaleUp = Math.scalb(1.0, 54);
|
||||
d *= scaleUp;
|
||||
// Calculate the exponent. This is not just exponent + 54
|
||||
// since the former is not the normalized exponent.
|
||||
exponent = FpUtils.getExponent(d);
|
||||
exponent = Math.getExponent(d);
|
||||
assert exponent >= DoubleConsts.MIN_EXPONENT &&
|
||||
exponent <= DoubleConsts.MAX_EXPONENT: exponent;
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.BufferedWriter;
|
||||
import java.lang.reflect.*;
|
||||
|
||||
/**
|
||||
* The <code>Properties</code> class represents a persistent set of
|
||||
@ -1111,4 +1112,60 @@ class Properties extends Hashtable<Object,Object> {
|
||||
private static final char[] hexDigit = {
|
||||
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
|
||||
};
|
||||
|
||||
|
||||
private static class XMLUtils {
|
||||
private static Method load = null;
|
||||
private static Method save = null;
|
||||
static {
|
||||
try {
|
||||
// reference sun.util.xml.Utils reflectively
|
||||
// to allow the Properties class be compiled in
|
||||
// the absence of XML
|
||||
Class<?> c = Class.forName("sun.util.xml.XMLUtils", true, null);
|
||||
load = c.getMethod("load", Properties.class, InputStream.class);
|
||||
save = c.getMethod("save", Properties.class, OutputStream.class,
|
||||
String.class, String.class);
|
||||
} catch (ClassNotFoundException cnf) {
|
||||
throw new AssertionError(cnf);
|
||||
} catch (NoSuchMethodException e) {
|
||||
throw new AssertionError(e);
|
||||
}
|
||||
}
|
||||
|
||||
static void invoke(Method m, Object... args) throws IOException {
|
||||
try {
|
||||
m.invoke(null, args);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new AssertionError(e);
|
||||
} catch (InvocationTargetException e) {
|
||||
Throwable t = e.getCause();
|
||||
if (t instanceof RuntimeException)
|
||||
throw (RuntimeException)t;
|
||||
|
||||
if (t instanceof IOException) {
|
||||
throw (IOException)t;
|
||||
} else {
|
||||
throw new AssertionError(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void load(Properties props, InputStream in)
|
||||
throws IOException, InvalidPropertiesFormatException
|
||||
{
|
||||
if (load == null)
|
||||
throw new InternalError("sun.util.xml.XMLUtils not found");
|
||||
invoke(load, props, in);
|
||||
}
|
||||
|
||||
static void save(Properties props, OutputStream os, String comment,
|
||||
String encoding)
|
||||
throws IOException
|
||||
{
|
||||
if (save == null)
|
||||
throw new InternalError("sun.util.xml.XMLUtils not found");
|
||||
invoke(save, props, os, comment, encoding);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ public class ScheduledThreadPoolExecutor
|
||||
remove(task))
|
||||
task.cancel(false);
|
||||
else
|
||||
prestartCoreThread();
|
||||
ensurePrestart();
|
||||
}
|
||||
}
|
||||
|
||||
@ -346,7 +346,7 @@ public class ScheduledThreadPoolExecutor
|
||||
if (!canRunInCurrentRunState(true) && remove(task))
|
||||
task.cancel(false);
|
||||
else
|
||||
prestartCoreThread();
|
||||
ensurePrestart();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1545,6 +1545,18 @@ public class ThreadPoolExecutor extends AbstractExecutorService {
|
||||
addWorker(null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as prestartCoreThread except arranges that at least one
|
||||
* thread is started even if corePoolSize is 0.
|
||||
*/
|
||||
void ensurePrestart() {
|
||||
int wc = workerCountOf(ctl.get());
|
||||
if (wc < corePoolSize)
|
||||
addWorker(null, true);
|
||||
else if (wc == 0)
|
||||
addWorker(null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts all core threads, causing them to idly wait for work. This
|
||||
* overrides the default policy of starting core threads only when
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -87,7 +87,7 @@ public abstract class SSLServerSocketFactory extends ServerSocketFactory
|
||||
if (clsName != null) {
|
||||
log("setting up default SSLServerSocketFactory");
|
||||
try {
|
||||
Class cls = null;
|
||||
Class<?> cls = null;
|
||||
try {
|
||||
cls = Class.forName(clsName);
|
||||
} catch (ClassNotFoundException e) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -95,7 +95,7 @@ public abstract class SSLSocketFactory extends SocketFactory
|
||||
if (clsName != null) {
|
||||
log("setting up default SSLSocketFactory");
|
||||
try {
|
||||
Class cls = null;
|
||||
Class<?> cls = null;
|
||||
try {
|
||||
cls = Class.forName(clsName);
|
||||
} catch (ClassNotFoundException e) {
|
||||
|
@ -792,7 +792,7 @@ public class SwingUtilities implements SwingConstants
|
||||
* @return true if the left mouse button was active
|
||||
*/
|
||||
public static boolean isLeftMouseButton(MouseEvent anEvent) {
|
||||
return ((anEvent.getModifiers() & InputEvent.BUTTON1_MASK) != 0);
|
||||
return (anEvent.getButton() == MouseEvent.BUTTON1);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -802,7 +802,7 @@ public class SwingUtilities implements SwingConstants
|
||||
* @return true if the middle mouse button was active
|
||||
*/
|
||||
public static boolean isMiddleMouseButton(MouseEvent anEvent) {
|
||||
return ((anEvent.getModifiers() & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK);
|
||||
return (anEvent.getButton() == MouseEvent.BUTTON2);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -812,7 +812,7 @@ public class SwingUtilities implements SwingConstants
|
||||
* @return true if the right mouse button was active
|
||||
*/
|
||||
public static boolean isRightMouseButton(MouseEvent anEvent) {
|
||||
return ((anEvent.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK);
|
||||
return (anEvent.getButton() == MouseEvent.BUTTON3);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,5 @@
|
||||
<html>
|
||||
<head>
|
||||
<link href="style.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="primaryColors">Primary Colors</h1>
|
||||
|
@ -157,7 +157,7 @@ public class Oid {
|
||||
return (true);
|
||||
|
||||
if (other instanceof Oid)
|
||||
return this.oid.equals(((Oid) other).oid);
|
||||
return this.oid.equals((Object)((Oid) other).oid);
|
||||
else if (other instanceof ObjectIdentifier)
|
||||
return this.oid.equals(other);
|
||||
else
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
package sun.misc;
|
||||
|
||||
import sun.misc.FpUtils;
|
||||
import sun.misc.DoubleConsts;
|
||||
import sun.misc.FloatConsts;
|
||||
import java.util.regex.*;
|
||||
@ -2297,9 +2296,9 @@ public class FloatingDecimal{
|
||||
significand++;
|
||||
}
|
||||
|
||||
FloatingDecimal fd = new FloatingDecimal(FpUtils.rawCopySign(
|
||||
Double.longBitsToDouble(significand),
|
||||
sign));
|
||||
FloatingDecimal fd = new FloatingDecimal(Math.copySign(
|
||||
Double.longBitsToDouble(significand),
|
||||
sign));
|
||||
|
||||
/*
|
||||
* Set roundingDir variable field of fd properly so
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
package sun.misc;
|
||||
|
||||
import sun.misc.FpUtils;
|
||||
import sun.misc.DoubleConsts;
|
||||
import sun.misc.FloatConsts;
|
||||
import java.util.regex.*;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -125,10 +125,6 @@ public class FpUtils {
|
||||
*/
|
||||
private FpUtils() {}
|
||||
|
||||
// Constants used in scalb
|
||||
static double twoToTheDoubleScaleUp = powerOfTwoD(512);
|
||||
static double twoToTheDoubleScaleDown = powerOfTwoD(-512);
|
||||
|
||||
// Helper Methods
|
||||
|
||||
// The following helper methods are used in the implementation of
|
||||
@ -137,49 +133,22 @@ public class FpUtils {
|
||||
|
||||
/**
|
||||
* Returns unbiased exponent of a {@code double}.
|
||||
* @deprecated Use Math.getExponent.
|
||||
*/
|
||||
@Deprecated
|
||||
public static int getExponent(double d){
|
||||
/*
|
||||
* Bitwise convert d to long, mask out exponent bits, shift
|
||||
* to the right and then subtract out double's bias adjust to
|
||||
* get true exponent value.
|
||||
*/
|
||||
return (int)(((Double.doubleToRawLongBits(d) & DoubleConsts.EXP_BIT_MASK) >>
|
||||
(DoubleConsts.SIGNIFICAND_WIDTH - 1)) - DoubleConsts.EXP_BIAS);
|
||||
return Math.getExponent(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns unbiased exponent of a {@code float}.
|
||||
* @deprecated Use Math.getExponent.
|
||||
*/
|
||||
@Deprecated
|
||||
public static int getExponent(float f){
|
||||
/*
|
||||
* Bitwise convert f to integer, mask out exponent bits, shift
|
||||
* to the right and then subtract out float's bias adjust to
|
||||
* get true exponent value
|
||||
*/
|
||||
return ((Float.floatToRawIntBits(f) & FloatConsts.EXP_BIT_MASK) >>
|
||||
(FloatConsts.SIGNIFICAND_WIDTH - 1)) - FloatConsts.EXP_BIAS;
|
||||
return Math.getExponent(f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a floating-point power of two in the normal range.
|
||||
*/
|
||||
static double powerOfTwoD(int n) {
|
||||
assert(n >= DoubleConsts.MIN_EXPONENT && n <= DoubleConsts.MAX_EXPONENT);
|
||||
return Double.longBitsToDouble((((long)n + (long)DoubleConsts.EXP_BIAS) <<
|
||||
(DoubleConsts.SIGNIFICAND_WIDTH-1))
|
||||
& DoubleConsts.EXP_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a floating-point power of two in the normal range.
|
||||
*/
|
||||
static float powerOfTwoF(int n) {
|
||||
assert(n >= FloatConsts.MIN_EXPONENT && n <= FloatConsts.MAX_EXPONENT);
|
||||
return Float.intBitsToFloat(((n + FloatConsts.EXP_BIAS) <<
|
||||
(FloatConsts.SIGNIFICAND_WIDTH-1))
|
||||
& FloatConsts.EXP_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first floating-point argument with the sign of the
|
||||
@ -195,13 +164,11 @@ public class FpUtils {
|
||||
* @return a value with the magnitude of {@code magnitude}
|
||||
* and the sign of {@code sign}.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.copySign.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double rawCopySign(double magnitude, double sign) {
|
||||
return Double.longBitsToDouble((Double.doubleToRawLongBits(sign) &
|
||||
(DoubleConsts.SIGN_BIT_MASK)) |
|
||||
(Double.doubleToRawLongBits(magnitude) &
|
||||
(DoubleConsts.EXP_BIT_MASK |
|
||||
DoubleConsts.SIGNIF_BIT_MASK)));
|
||||
return Math.copySign(magnitude, sign);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -218,13 +185,11 @@ public class FpUtils {
|
||||
* @return a value with the magnitude of {@code magnitude}
|
||||
* and the sign of {@code sign}.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.copySign.
|
||||
*/
|
||||
@Deprecated
|
||||
public static float rawCopySign(float magnitude, float sign) {
|
||||
return Float.intBitsToFloat((Float.floatToRawIntBits(sign) &
|
||||
(FloatConsts.SIGN_BIT_MASK)) |
|
||||
(Float.floatToRawIntBits(magnitude) &
|
||||
(FloatConsts.EXP_BIT_MASK |
|
||||
FloatConsts.SIGNIF_BIT_MASK)));
|
||||
return Math.copySign(magnitude, sign);
|
||||
}
|
||||
|
||||
/* ***************************************************************** */
|
||||
@ -237,9 +202,11 @@ public class FpUtils {
|
||||
* @param d the {@code double} value to be tested
|
||||
* @return {@code true} if the argument is a finite
|
||||
* floating-point value, {@code false} otherwise.
|
||||
* @deprecated Use Double.isFinite.
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean isFinite(double d) {
|
||||
return Math.abs(d) <= DoubleConsts.MAX_VALUE;
|
||||
return Double.isFinite(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -250,9 +217,11 @@ public class FpUtils {
|
||||
* @param f the {@code float} value to be tested
|
||||
* @return {@code true} if the argument is a finite
|
||||
* floating-point value, {@code false} otherwise.
|
||||
* @deprecated Use Float.isFinite.
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean isFinite(float f) {
|
||||
return Math.abs(f) <= FloatConsts.MAX_VALUE;
|
||||
return Float.isFinite(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -558,82 +527,11 @@ public class FpUtils {
|
||||
* @param scale_factor power of 2 used to scale {@code d}
|
||||
* @return {@code d * }2<sup>{@code scale_factor}</sup>
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.scalb.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double scalb(double d, int scale_factor) {
|
||||
/*
|
||||
* This method does not need to be declared strictfp to
|
||||
* compute the same correct result on all platforms. When
|
||||
* scaling up, it does not matter what order the
|
||||
* multiply-store operations are done; the result will be
|
||||
* finite or overflow regardless of the operation ordering.
|
||||
* However, to get the correct result when scaling down, a
|
||||
* particular ordering must be used.
|
||||
*
|
||||
* When scaling down, the multiply-store operations are
|
||||
* sequenced so that it is not possible for two consecutive
|
||||
* multiply-stores to return subnormal results. If one
|
||||
* multiply-store result is subnormal, the next multiply will
|
||||
* round it away to zero. This is done by first multiplying
|
||||
* by 2 ^ (scale_factor % n) and then multiplying several
|
||||
* times by by 2^n as needed where n is the exponent of number
|
||||
* that is a covenient power of two. In this way, at most one
|
||||
* real rounding error occurs. If the double value set is
|
||||
* being used exclusively, the rounding will occur on a
|
||||
* multiply. If the double-extended-exponent value set is
|
||||
* being used, the products will (perhaps) be exact but the
|
||||
* stores to d are guaranteed to round to the double value
|
||||
* set.
|
||||
*
|
||||
* It is _not_ a valid implementation to first multiply d by
|
||||
* 2^MIN_EXPONENT and then by 2 ^ (scale_factor %
|
||||
* MIN_EXPONENT) since even in a strictfp program double
|
||||
* rounding on underflow could occur; e.g. if the scale_factor
|
||||
* argument was (MIN_EXPONENT - n) and the exponent of d was a
|
||||
* little less than -(MIN_EXPONENT - n), meaning the final
|
||||
* result would be subnormal.
|
||||
*
|
||||
* Since exact reproducibility of this method can be achieved
|
||||
* without any undue performance burden, there is no
|
||||
* compelling reason to allow double rounding on underflow in
|
||||
* scalb.
|
||||
*/
|
||||
|
||||
// magnitude of a power of two so large that scaling a finite
|
||||
// nonzero value by it would be guaranteed to over or
|
||||
// underflow; due to rounding, scaling down takes takes an
|
||||
// additional power of two which is reflected here
|
||||
final int MAX_SCALE = DoubleConsts.MAX_EXPONENT + -DoubleConsts.MIN_EXPONENT +
|
||||
DoubleConsts.SIGNIFICAND_WIDTH + 1;
|
||||
int exp_adjust = 0;
|
||||
int scale_increment = 0;
|
||||
double exp_delta = Double.NaN;
|
||||
|
||||
// Make sure scaling factor is in a reasonable range
|
||||
|
||||
if(scale_factor < 0) {
|
||||
scale_factor = Math.max(scale_factor, -MAX_SCALE);
|
||||
scale_increment = -512;
|
||||
exp_delta = twoToTheDoubleScaleDown;
|
||||
}
|
||||
else {
|
||||
scale_factor = Math.min(scale_factor, MAX_SCALE);
|
||||
scale_increment = 512;
|
||||
exp_delta = twoToTheDoubleScaleUp;
|
||||
}
|
||||
|
||||
// Calculate (scale_factor % +/-512), 512 = 2^9, using
|
||||
// technique from "Hacker's Delight" section 10-2.
|
||||
int t = (scale_factor >> 9-1) >>> 32 - 9;
|
||||
exp_adjust = ((scale_factor + t) & (512 -1)) - t;
|
||||
|
||||
d *= powerOfTwoD(exp_adjust);
|
||||
scale_factor -= exp_adjust;
|
||||
|
||||
while(scale_factor != 0) {
|
||||
d *= exp_delta;
|
||||
scale_factor -= scale_increment;
|
||||
}
|
||||
return d;
|
||||
return Math.scalb(d, scale_factor);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -667,28 +565,11 @@ public class FpUtils {
|
||||
* @param scale_factor power of 2 used to scale {@code f}
|
||||
* @return {@code f * }2<sup>{@code scale_factor}</sup>
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.scalb.
|
||||
*/
|
||||
public static float scalb(float f, int scale_factor) {
|
||||
// magnitude of a power of two so large that scaling a finite
|
||||
// nonzero value by it would be guaranteed to over or
|
||||
// underflow; due to rounding, scaling down takes takes an
|
||||
// additional power of two which is reflected here
|
||||
final int MAX_SCALE = FloatConsts.MAX_EXPONENT + -FloatConsts.MIN_EXPONENT +
|
||||
FloatConsts.SIGNIFICAND_WIDTH + 1;
|
||||
|
||||
// Make sure scaling factor is in a reasonable range
|
||||
scale_factor = Math.max(Math.min(scale_factor, MAX_SCALE), -MAX_SCALE);
|
||||
|
||||
/*
|
||||
* Since + MAX_SCALE for float fits well within the double
|
||||
* exponent range and + float -> double conversion is exact
|
||||
* the multiplication below will be exact. Therefore, the
|
||||
* rounding that occurs when the double product is cast to
|
||||
* float will be the correctly rounded float result. Since
|
||||
* all operations other than the final multiply will be exact,
|
||||
* it is not necessary to declare this method strictfp.
|
||||
*/
|
||||
return (float)((double)f*powerOfTwoD(scale_factor));
|
||||
@Deprecated
|
||||
public static float scalb(float f, int scale_factor) {
|
||||
return Math.scalb(f, scale_factor);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -730,65 +611,11 @@ public class FpUtils {
|
||||
* @return The floating-point number adjacent to {@code start} in the
|
||||
* direction of {@code direction}.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.nextAfter
|
||||
*/
|
||||
@Deprecated
|
||||
public static double nextAfter(double start, double direction) {
|
||||
/*
|
||||
* The cases:
|
||||
*
|
||||
* nextAfter(+infinity, 0) == MAX_VALUE
|
||||
* nextAfter(+infinity, +infinity) == +infinity
|
||||
* nextAfter(-infinity, 0) == -MAX_VALUE
|
||||
* nextAfter(-infinity, -infinity) == -infinity
|
||||
*
|
||||
* are naturally handled without any additional testing
|
||||
*/
|
||||
|
||||
// First check for NaN values
|
||||
if (isNaN(start) || isNaN(direction)) {
|
||||
// return a NaN derived from the input NaN(s)
|
||||
return start + direction;
|
||||
} else if (start == direction) {
|
||||
return direction;
|
||||
} else { // start > direction or start < direction
|
||||
// Add +0.0 to get rid of a -0.0 (+0.0 + -0.0 => +0.0)
|
||||
// then bitwise convert start to integer.
|
||||
long transducer = Double.doubleToRawLongBits(start + 0.0d);
|
||||
|
||||
/*
|
||||
* IEEE 754 floating-point numbers are lexicographically
|
||||
* ordered if treated as signed- magnitude integers .
|
||||
* Since Java's integers are two's complement,
|
||||
* incrementing" the two's complement representation of a
|
||||
* logically negative floating-point value *decrements*
|
||||
* the signed-magnitude representation. Therefore, when
|
||||
* the integer representation of a floating-point values
|
||||
* is less than zero, the adjustment to the representation
|
||||
* is in the opposite direction than would be expected at
|
||||
* first .
|
||||
*/
|
||||
if (direction > start) { // Calculate next greater value
|
||||
transducer = transducer + (transducer >= 0L ? 1L:-1L);
|
||||
} else { // Calculate next lesser value
|
||||
assert direction < start;
|
||||
if (transducer > 0L)
|
||||
--transducer;
|
||||
else
|
||||
if (transducer < 0L )
|
||||
++transducer;
|
||||
/*
|
||||
* transducer==0, the result is -MIN_VALUE
|
||||
*
|
||||
* The transition from zero (implicitly
|
||||
* positive) to the smallest negative
|
||||
* signed magnitude value must be done
|
||||
* explicitly.
|
||||
*/
|
||||
else
|
||||
transducer = DoubleConsts.SIGN_BIT_MASK | 1L;
|
||||
}
|
||||
|
||||
return Double.longBitsToDouble(transducer);
|
||||
}
|
||||
return Math.nextAfter(start, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -830,65 +657,11 @@ public class FpUtils {
|
||||
* @return The floating-point number adjacent to {@code start} in the
|
||||
* direction of {@code direction}.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.nextAfter.
|
||||
*/
|
||||
public static float nextAfter(float start, double direction) {
|
||||
/*
|
||||
* The cases:
|
||||
*
|
||||
* nextAfter(+infinity, 0) == MAX_VALUE
|
||||
* nextAfter(+infinity, +infinity) == +infinity
|
||||
* nextAfter(-infinity, 0) == -MAX_VALUE
|
||||
* nextAfter(-infinity, -infinity) == -infinity
|
||||
*
|
||||
* are naturally handled without any additional testing
|
||||
*/
|
||||
|
||||
// First check for NaN values
|
||||
if (isNaN(start) || isNaN(direction)) {
|
||||
// return a NaN derived from the input NaN(s)
|
||||
return start + (float)direction;
|
||||
} else if (start == direction) {
|
||||
return (float)direction;
|
||||
} else { // start > direction or start < direction
|
||||
// Add +0.0 to get rid of a -0.0 (+0.0 + -0.0 => +0.0)
|
||||
// then bitwise convert start to integer.
|
||||
int transducer = Float.floatToRawIntBits(start + 0.0f);
|
||||
|
||||
/*
|
||||
* IEEE 754 floating-point numbers are lexicographically
|
||||
* ordered if treated as signed- magnitude integers .
|
||||
* Since Java's integers are two's complement,
|
||||
* incrementing" the two's complement representation of a
|
||||
* logically negative floating-point value *decrements*
|
||||
* the signed-magnitude representation. Therefore, when
|
||||
* the integer representation of a floating-point values
|
||||
* is less than zero, the adjustment to the representation
|
||||
* is in the opposite direction than would be expected at
|
||||
* first.
|
||||
*/
|
||||
if (direction > start) {// Calculate next greater value
|
||||
transducer = transducer + (transducer >= 0 ? 1:-1);
|
||||
} else { // Calculate next lesser value
|
||||
assert direction < start;
|
||||
if (transducer > 0)
|
||||
--transducer;
|
||||
else
|
||||
if (transducer < 0 )
|
||||
++transducer;
|
||||
/*
|
||||
* transducer==0, the result is -MIN_VALUE
|
||||
*
|
||||
* The transition from zero (implicitly
|
||||
* positive) to the smallest negative
|
||||
* signed magnitude value must be done
|
||||
* explicitly.
|
||||
*/
|
||||
else
|
||||
transducer = FloatConsts.SIGN_BIT_MASK | 1;
|
||||
}
|
||||
|
||||
return Float.intBitsToFloat(transducer);
|
||||
}
|
||||
@Deprecated
|
||||
public static float nextAfter(float start, double direction) {
|
||||
return Math.nextAfter(start, direction);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -915,15 +688,11 @@ public class FpUtils {
|
||||
* @return The adjacent floating-point value closer to positive
|
||||
* infinity.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated use Math.nextUp.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double nextUp(double d) {
|
||||
if( isNaN(d) || d == Double.POSITIVE_INFINITY)
|
||||
return d;
|
||||
else {
|
||||
d += 0.0d;
|
||||
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
|
||||
((d >= 0.0d)?+1L:-1L));
|
||||
}
|
||||
return Math.nextUp(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -950,15 +719,11 @@ public class FpUtils {
|
||||
* @return The adjacent floating-point value closer to positive
|
||||
* infinity.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.nextUp.
|
||||
*/
|
||||
public static float nextUp(float f) {
|
||||
if( isNaN(f) || f == FloatConsts.POSITIVE_INFINITY)
|
||||
return f;
|
||||
else {
|
||||
f += 0.0f;
|
||||
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
|
||||
((f >= 0.0f)?+1:-1));
|
||||
}
|
||||
@Deprecated
|
||||
public static float nextUp(float f) {
|
||||
return Math.nextUp(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -985,17 +750,11 @@ public class FpUtils {
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.nextDown.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double nextDown(double d) {
|
||||
if( isNaN(d) || d == Double.NEGATIVE_INFINITY)
|
||||
return d;
|
||||
else {
|
||||
if (d == 0.0)
|
||||
return -Double.MIN_VALUE;
|
||||
else
|
||||
return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
|
||||
((d > 0.0d)?-1L:+1L));
|
||||
}
|
||||
return Math.nextDown(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1022,17 +781,11 @@ public class FpUtils {
|
||||
* @return The adjacent floating-point value closer to negative
|
||||
* infinity.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use Math.nextDown.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double nextDown(float f) {
|
||||
if( isNaN(f) || f == Float.NEGATIVE_INFINITY)
|
||||
return f;
|
||||
else {
|
||||
if (f == 0.0f)
|
||||
return -Float.MIN_VALUE;
|
||||
else
|
||||
return Float.intBitsToFloat(Float.floatToRawIntBits(f) +
|
||||
((f > 0.0f)?-1:+1));
|
||||
}
|
||||
return Math.nextDown(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1047,9 +800,11 @@ public class FpUtils {
|
||||
* and the sign of {@code sign}.
|
||||
* @author Joseph D. Darcy
|
||||
* @since 1.5
|
||||
* @deprecated Use StrictMath.copySign.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double copySign(double magnitude, double sign) {
|
||||
return rawCopySign(magnitude, (isNaN(sign)?1.0d:sign));
|
||||
return StrictMath.copySign(magnitude, sign);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1063,9 +818,11 @@ public class FpUtils {
|
||||
* @return a value with the magnitude of {@code magnitude}
|
||||
* and the sign of {@code sign}.
|
||||
* @author Joseph D. Darcy
|
||||
* @deprecated Use StrictMath.copySign.
|
||||
*/
|
||||
public static float copySign(float magnitude, float sign) {
|
||||
return rawCopySign(magnitude, (isNaN(sign)?1.0f:sign));
|
||||
@Deprecated
|
||||
public static float copySign(float magnitude, float sign) {
|
||||
return StrictMath.copySign(magnitude, sign);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1090,33 +847,11 @@ public class FpUtils {
|
||||
* @return the size of an ulp of the argument
|
||||
* @author Joseph D. Darcy
|
||||
* @since 1.5
|
||||
* @deprecated Use Math.ulp.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double ulp(double d) {
|
||||
int exp = getExponent(d);
|
||||
|
||||
switch(exp) {
|
||||
case DoubleConsts.MAX_EXPONENT+1: // NaN or infinity
|
||||
return Math.abs(d);
|
||||
|
||||
case DoubleConsts.MIN_EXPONENT-1: // zero or subnormal
|
||||
return Double.MIN_VALUE;
|
||||
|
||||
default:
|
||||
assert exp <= DoubleConsts.MAX_EXPONENT && exp >= DoubleConsts.MIN_EXPONENT;
|
||||
|
||||
// ulp(x) is usually 2^(SIGNIFICAND_WIDTH-1)*(2^ilogb(x))
|
||||
exp = exp - (DoubleConsts.SIGNIFICAND_WIDTH-1);
|
||||
if (exp >= DoubleConsts.MIN_EXPONENT) {
|
||||
return powerOfTwoD(exp);
|
||||
}
|
||||
else {
|
||||
// return a subnormal result; left shift integer
|
||||
// representation of Double.MIN_VALUE appropriate
|
||||
// number of positions
|
||||
return Double.longBitsToDouble(1L <<
|
||||
(exp - (DoubleConsts.MIN_EXPONENT - (DoubleConsts.SIGNIFICAND_WIDTH-1)) ));
|
||||
}
|
||||
}
|
||||
return Math.ulp(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1141,33 +876,11 @@ public class FpUtils {
|
||||
* @return the size of an ulp of the argument
|
||||
* @author Joseph D. Darcy
|
||||
* @since 1.5
|
||||
* @deprecated Use Math.ulp.
|
||||
*/
|
||||
@Deprecated
|
||||
public static float ulp(float f) {
|
||||
int exp = getExponent(f);
|
||||
|
||||
switch(exp) {
|
||||
case FloatConsts.MAX_EXPONENT+1: // NaN or infinity
|
||||
return Math.abs(f);
|
||||
|
||||
case FloatConsts.MIN_EXPONENT-1: // zero or subnormal
|
||||
return FloatConsts.MIN_VALUE;
|
||||
|
||||
default:
|
||||
assert exp <= FloatConsts.MAX_EXPONENT && exp >= FloatConsts.MIN_EXPONENT;
|
||||
|
||||
// ulp(x) is usually 2^(SIGNIFICAND_WIDTH-1)*(2^ilogb(x))
|
||||
exp = exp - (FloatConsts.SIGNIFICAND_WIDTH-1);
|
||||
if (exp >= FloatConsts.MIN_EXPONENT) {
|
||||
return powerOfTwoF(exp);
|
||||
}
|
||||
else {
|
||||
// return a subnormal result; left shift integer
|
||||
// representation of FloatConsts.MIN_VALUE appropriate
|
||||
// number of positions
|
||||
return Float.intBitsToFloat(1 <<
|
||||
(exp - (FloatConsts.MIN_EXPONENT - (FloatConsts.SIGNIFICAND_WIDTH-1)) ));
|
||||
}
|
||||
}
|
||||
return Math.ulp(f);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1186,9 +899,11 @@ public class FpUtils {
|
||||
* @return the signum function of the argument
|
||||
* @author Joseph D. Darcy
|
||||
* @since 1.5
|
||||
* @deprecated Use Math.signum.
|
||||
*/
|
||||
@Deprecated
|
||||
public static double signum(double d) {
|
||||
return (d == 0.0 || isNaN(d))?d:copySign(1.0, d);
|
||||
return Math.signum(d);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1207,9 +922,10 @@ public class FpUtils {
|
||||
* @return the signum function of the argument
|
||||
* @author Joseph D. Darcy
|
||||
* @since 1.5
|
||||
* @deprecated Use Math.signum.
|
||||
*/
|
||||
@Deprecated
|
||||
public static float signum(float f) {
|
||||
return (f == 0.0f || isNaN(f))?f:copySign(1.0f, f);
|
||||
return Math.signum(f);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -31,6 +31,9 @@ package sun.misc;
|
||||
*/
|
||||
|
||||
public class REException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 4656584872733646963L;
|
||||
|
||||
REException (String s) {
|
||||
super(s);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1994, 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1994, 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
|
||||
@ -25,10 +25,8 @@
|
||||
|
||||
package sun.net;
|
||||
|
||||
import java.lang.StringIndexOutOfBoundsException;
|
||||
import java.io.*;
|
||||
import java.util.Vector;
|
||||
import sun.net.NetworkClient;
|
||||
|
||||
/**
|
||||
* This class implements that basic intefaces of transfer protocols.
|
||||
@ -44,7 +42,7 @@ public class TransferProtocolClient extends NetworkClient {
|
||||
|
||||
/** Array of strings (usually 1 entry) for the last reply
|
||||
from the server. */
|
||||
protected Vector serverResponse = new Vector(1);
|
||||
protected Vector<String> serverResponse = new Vector<>(1);
|
||||
|
||||
/** code for last reply */
|
||||
protected int lastReplyCode;
|
||||
@ -123,11 +121,11 @@ public class TransferProtocolClient extends NetworkClient {
|
||||
|
||||
/** converts the server response into a string. */
|
||||
public String getResponseString() {
|
||||
return (String) serverResponse.elementAt(0);
|
||||
return serverResponse.elementAt(0);
|
||||
}
|
||||
|
||||
/** Returns all server response strings. */
|
||||
public Vector getResponseStrings() {
|
||||
public Vector<String> getResponseStrings() {
|
||||
return serverResponse;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2009, 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
|
||||
@ -67,16 +67,13 @@ public abstract class FtpClientProvider {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
Class c = Class.forName(cm, true, null);
|
||||
Class<?> c = Class.forName(cm, true, null);
|
||||
provider = (FtpClientProvider) c.newInstance();
|
||||
return true;
|
||||
} catch (ClassNotFoundException x) {
|
||||
throw new ServiceConfigurationError(x.toString());
|
||||
} catch (IllegalAccessException x) {
|
||||
throw new ServiceConfigurationError(x.toString());
|
||||
} catch (InstantiationException x) {
|
||||
throw new ServiceConfigurationError(x.toString());
|
||||
} catch (SecurityException x) {
|
||||
} catch (ClassNotFoundException |
|
||||
IllegalAccessException |
|
||||
InstantiationException |
|
||||
SecurityException x) {
|
||||
throw new ServiceConfigurationError(x.toString());
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user