This commit is contained in:
Calvin Cheung 2015-05-02 18:40:37 -07:00
commit 4c99a3031d
2080 changed files with 104260 additions and 34770 deletions

View file

@ -298,3 +298,10 @@ d6224d6021459ac8b3832e822f5acc849fa944af jdk9-b52
874d76e4699dfcd61ae1826c9fe0ddc1610ad598 jdk9-b53 874d76e4699dfcd61ae1826c9fe0ddc1610ad598 jdk9-b53
82cd31c5d6ca8d4c1653f4eb1c09eb2d9a3b2813 jdk9-b54 82cd31c5d6ca8d4c1653f4eb1c09eb2d9a3b2813 jdk9-b54
c97e2d1bad9708d379793ba2a4c848eda14c741e jdk9-b55 c97e2d1bad9708d379793ba2a4c848eda14c741e jdk9-b55
47544495db2d3d2edf0f85862d8715592fdb919f jdk9-b56
ddb95d8f169b09544cc17e72a6baaff2400092f5 jdk9-b57
f40752db7773ca0c737f2ad88371e35c57fdfed7 jdk9-b58
da950f343762a856d69751570a4c07cfa68a415b jdk9-b59
38f98cb6b33562a926ec3b79c7b34128be37647d jdk9-b60
ac3f5a39d4ff14d70c365e12cf5ec8f2abd52a04 jdk9-b61
e7dbbef69d12b6a74dfad331b7188e7f893e8d29 jdk9-b62

View file

@ -298,3 +298,10 @@ d1f37d39ff2421f956a6ddf316cf763807bc3363 jdk9-b50
d6ed47125a76cd1cf8a100568507bfb5e9669d9f jdk9-b53 d6ed47125a76cd1cf8a100568507bfb5e9669d9f jdk9-b53
cb7367141e910e265b8344a8facee740bd1e5467 jdk9-b54 cb7367141e910e265b8344a8facee740bd1e5467 jdk9-b54
0c37a832458f0e0b7d2a3f1a6f69aeae311aeb18 jdk9-b55 0c37a832458f0e0b7d2a3f1a6f69aeae311aeb18 jdk9-b55
eb7febe45865ba6b81f2ea68082262d0708a0b22 jdk9-b56
f25ee9f62427a9ba27418e5531a89754791a305b jdk9-b57
6e78dd9b121037719a065fe8fb25b936babdfecb jdk9-b58
39e8a131289e8386aa4c3e4b184faa812a7c0421 jdk9-b59
9fa2185bee17462d1014538bff60af6e6f0b01e7 jdk9-b60
ea38728b4f4bdd8fd0d7a89b18069f521cf05013 jdk9-b61
105d045a69174d870b69bfe471b3f2d05a9f8ecc jdk9-b62

214
Makefile
View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
@ -23,200 +23,42 @@
# questions. # questions.
# #
# This must be the first rule ###
default: ### This file is just a very small wrapper needed to run the real make/Init.gmk.
### It also performs some sanity checks on make.
###
# Inclusion of this pseudo-target will cause make to execute this file # The shell code below will be executed on /usr/ccs/bin/make on Solaris, but not in GNU Make.
# serially, regardless of -j. Recursively called makefiles will not be
# affected, however. This is required for correct dependency management.
.NOTPARALLEL:
# The shell code below will be executed on /usr/ccs/bin/make on Solaris, but not in GNU make.
# /usr/ccs/bin/make lacks basically every other flow control mechanism. # /usr/ccs/bin/make lacks basically every other flow control mechanism.
.TEST_FOR_NON_GNUMAKE:sh=echo You are not using GNU make/gmake, this is a requirement. Check your path. 1>&2 && exit 1 .TEST_FOR_NON_GNUMAKE:sh=echo You are not using GNU Make/gmake, this is a requirement. Check your path. 1>&2 && exit 1
# Assume we have GNU make, but check version. # The .FEATURES variable is likely to be unique for GNU Make.
ifeq ($(.FEATURES), )
$(info Error: '$(MAKE)' does not seem to be GNU Make, which is a requirement.)
$(info Check your path, or upgrade to GNU Make 3.81 or newer.)
$(error Cannot continue)
endif
# Assume we have GNU Make, but check version.
ifeq ($(strip $(foreach v, 3.81% 3.82% 4.%, $(filter $v, $(MAKE_VERSION)))), ) ifeq ($(strip $(foreach v, 3.81% 3.82% 4.%, $(filter $v, $(MAKE_VERSION)))), )
$(error This version of GNU Make is too low ($(MAKE_VERSION)). Check your path, or upgrade to 3.81 or newer.) $(info Error: This version of GNU Make is too low ($(MAKE_VERSION)).)
$(info Check your path, or upgrade to GNU Make 3.81 or newer.)
$(error Cannot continue)
endif
# In Cygwin, the MAKE variable gets prepended with the current directory if the
# make executable is called using a Windows mixed path (c:/cygwin/bin/make.exe).
ifneq ($(findstring :, $(MAKE)), )
MAKE := $(patsubst $(CURDIR)%, %, $(patsubst $(CURDIR)/%, %, $(MAKE)))
endif endif
# Locate this Makefile # Locate this Makefile
ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))),) ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))),)
makefile_path:=$(CURDIR)/$(lastword $(MAKEFILE_LIST)) makefile_path := $(CURDIR)/$(strip $(lastword $(MAKEFILE_LIST)))
else else
makefile_path := $(lastword $(MAKEFILE_LIST)) makefile_path := $(lastword $(MAKEFILE_LIST))
endif endif
root_dir:=$(patsubst %/,%,$(dir $(makefile_path))) topdir := $(strip $(patsubst %/, %, $(dir $(makefile_path))))
ifeq ($(MAIN_TARGETS), ) # ... and then we can include the real makefile
COMMAND_LINE_VARIABLES:=$(subst =command,,$(filter %=command,$(foreach var,$(.VARIABLES),$(var)=$(firstword $(origin $(var)))))) include $(topdir)/make/Init.gmk
MAKE_CONTROL_VARIABLES:=LOG CONF SPEC JOBS TEST IGNORE_OLD_CONFIG
UNKNOWN_COMMAND_LINE_VARIABLES:=$(strip $(filter-out $(MAKE_CONTROL_VARIABLES), $(COMMAND_LINE_VARIABLES)))
ifneq ($(UNKNOWN_COMMAND_LINE_VARIABLES), )
$(info Note: Command line contains non-control variables: $(UNKNOWN_COMMAND_LINE_VARIABLES).)
$(info Make sure it is not mistyped, and that you intend to override this variable.)
$(info 'make help' will list known control variables)
endif
endif
ifneq ($(findstring qp,$(MAKEFLAGS)),)
# When called with -qp, assume an external part (e.g. bash completion) is trying
# to understand our targets.
# Duplication of global targets, needed before ParseConfAndSpec in case we have
# no configurations.
help:
# If both CONF and SPEC are unset, look for all available configurations by
# setting CONF to the empty string.
ifeq ($(SPEC), )
CONF?=
endif
endif
# ... and then we can include our helper functions
include $(root_dir)/make/MakeHelpers.gmk
$(eval $(call ParseLogLevel))
$(eval $(call ParseConfAndSpec))
# Now determine if we have zero, one or several configurations to build.
ifeq ($(SPEC),)
# Since we got past ParseConfAndSpec, we must be building a global target. Do nothing.
else
# In Cygwin, the MAKE variable gets messed up if the make executable is called with
# a Windows mixed path (c:/cygwin/bin/make.exe). If that's the case, fix it by removing
# the prepended root_dir.
ifneq ($(findstring :, $(MAKE)), )
MAKE := $(patsubst $(root_dir)%, %, $(MAKE))
endif
# We are potentially building multiple configurations.
# First, find out the valid targets
# Run the makefile with an arbitrary SPEC using -p -q (quiet dry-run and dump rules) to find
# available PHONY targets. Use this list as valid targets to pass on to the repeated calls.
all_phony_targets := $(sort $(filter-out $(global_targets), $(strip $(shell \
cd $(root_dir)/make && $(MAKE) -f Main.gmk -p -q FRC SPEC=$(firstword $(SPEC)) \
-I $(root_dir)/make/common | grep "^.PHONY:" | head -n 1 | cut -d " " -f 2-))))
# Loop through the configurations and call the main-wrapper for each one. The wrapper
# target will execute with a single configuration loaded.
$(all_phony_targets):
@$(if $(TARGET_RUN),,\
$(foreach spec,$(SPEC),\
(cd $(root_dir) && $(MAKE) SPEC=$(spec) MAIN_TARGETS="$(call GetRealTarget)" \
$(VERBOSE) VERBOSE=$(VERBOSE) LOG_LEVEL=$(LOG_LEVEL) main-wrapper) &&) true)
@echo > /dev/null
$(eval TARGET_RUN=true)
.PHONY: $(all_phony_targets)
ifneq ($(MAIN_TARGETS), )
# The wrapper target was called so we now have a single configuration. Load the spec file
# and call the real Main.gmk.
include $(SPEC)
include $(SRC_ROOT)/make/common/MakeBase.gmk
### Clean up from previous run
# Remove any build.log from a previous run, if they exist
ifneq (,$(BUILD_LOG))
ifneq (,$(BUILD_LOG_PREVIOUS))
# Rotate old log
$(shell $(RM) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
$(shell $(MV) $(BUILD_LOG) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
else
$(shell $(RM) $(BUILD_LOG) 2> /dev/null)
endif
$(shell $(RM) $(OUTPUT_ROOT)/build-trace-time.log 2> /dev/null)
endif
# Remove any javac server logs and port files. This
# prevents a new make run to reuse the previous servers.
ifneq (,$(SJAVAC_SERVER_DIR))
$(shell $(MKDIR) -p $(SJAVAC_SERVER_DIR) && $(RM) -rf $(SJAVAC_SERVER_DIR)/*)
endif
# Split out the targets requiring sequential execution. Run these targets separately
# from the rest so that the rest may still enjoy full parallel execution.
SEQUENTIAL_TARGETS := $(filter dist-clean clean% reconfigure, $(MAIN_TARGETS))
PARALLEL_TARGETS := $(filter-out $(SEQUENTIAL_TARGETS), $(MAIN_TARGETS))
main-wrapper:
ifneq ($(SEQUENTIAL_TARGETS), )
(cd $(SRC_ROOT)/make && $(MAKE) -f Main.gmk SPEC=$(SPEC) -j 1 \
$(VERBOSE) VERBOSE=$(VERBOSE) LOG_LEVEL=$(LOG_LEVEL) $(SEQUENTIAL_TARGETS))
endif
ifneq ($(PARALLEL_TARGETS), )
@$(call AtMakeStart)
(cd $(SRC_ROOT)/make && $(BUILD_LOG_WRAPPER) $(MAKE) -f Main.gmk SPEC=$(SPEC) -j $(JOBS) \
$(VERBOSE) VERBOSE=$(VERBOSE) LOG_LEVEL=$(LOG_LEVEL) $(PARALLEL_TARGETS) \
$(if $(filter true, $(OUTPUT_SYNC_SUPPORTED)), -O$(OUTPUT_SYNC)))
@$(call AtMakeEnd)
endif
.PHONY: main-wrapper
endif
endif
# Here are "global" targets, i.e. targets that can be executed without specifying a single configuration.
# If you add more global targets, please update the variable global_targets in MakeHelpers.
# Helper macro to allow $(info) to properly print strings beginning with spaces.
_:=
help:
$(info )
$(info OpenJDK Makefile help)
$(info =====================)
$(info )
$(info Common make targets)
$(info $(_) make [default] # Compile all modules in langtools, hotspot, jdk, jaxws,)
$(info $(_) # jaxp and corba, and create a runnable "exploded" image)
$(info $(_) make all # Compile everything, all repos, docs and images)
$(info $(_) make images # Create complete j2sdk and j2re images)
$(info $(_) make <phase> # Build the specified phase and everything it depends on)
$(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
$(info $(_) make *-only # Applies to most targets and disables compling the)
$(info $(_) # dependencies for the target. This is faster but may)
$(info $(_) # result in incorrect build results!)
$(info $(_) make docs # Create all docs)
$(info $(_) make docs-javadoc # Create just javadocs, depends on less than full docs)
$(info $(_) make profiles # Create complete j2re compact profile images)
$(info $(_) make bootcycle-images # Build images twice, second time with newly built JDK)
$(info $(_) make install # Install the generated images locally)
$(info $(_) make reconfigure # Rerun configure with the same arguments as last time)
$(info $(_) make help # Give some help on using make)
$(info $(_) make test # Run tests, default is all tests (see TEST below))
$(info )
$(info Targets for cleaning)
$(info $(_) make clean # Remove all files generated by make, but not those)
$(info $(_) # generated by configure)
$(info $(_) make dist-clean # Remove all files, including configuration)
$(info $(_) make clean-<outputdir> # Remove the subdir in the output dir with the name)
$(info $(_) make clean-<phase> # Remove all build results related to a certain build)
$(info $(_) # phase (gensrc, java, libs, launchers))
$(info $(_) make clean-<module> # Remove all build results related to a certain module)
$(info $(_) make clean-<module>-<phase> # Remove all build results related to a certain)
$(info $(_) # module and phase)
$(info )
$(info Targets for specific modules)
$(info $(_) make <module> # Build <module> and everything it depends on.)
$(info $(_) make <module>-<phase> # Compile the specified phase for the specified module)
$(info $(_) # and everything it depends on)
$(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
$(info )
$(info Make control variables)
$(info $(_) CONF= # Build all configurations (note, assignment is empty))
$(info $(_) CONF=<substring> # Build the configuration(s) with a name matching)
$(info $(_) # <substring>)
$(info $(_) SPEC=<spec file> # Build the configuration given by the spec file)
$(info $(_) LOG=<loglevel> # Change the log level from warn to <loglevel>)
$(info $(_) # Available log levels are:)
$(info $(_) # 'warn' (default), 'info', 'debug' and 'trace')
$(info $(_) # To see executed command lines, use LOG=debug)
$(info $(_) JOBS=<n> # Run <n> parallel make jobs)
$(info $(_) # Note that -jN does not work as expected!)
$(info $(_) IGNORE_OLD_CONFIG=true # Skip tests if spec file is up to date)
$(info $(_) make test TEST=<test> # Only run the given test or tests, e.g.)
$(info $(_) # make test TEST="jdk_lang jdk_net")
$(info )
.PHONY: help

View file

@ -41,7 +41,8 @@
The build is now a "<code>configure &amp;&amp; make</code>" style build The build is now a "<code>configure &amp;&amp; make</code>" style build
</li> </li>
<li> <li>
Any GNU make 3.81 or newer should work Any GNU make 3.81 or newer should work, except on
Windows where 4.0 or newer is recommended.
</li> </li>
<li> <li>
The build should scale, i.e. more processors should The build should scale, i.e. more processors should
@ -358,8 +359,8 @@
For all systems: For all systems:
<ul> <ul>
<li> <li>
Be sure the GNU make utility is version 3.81 or newer, Be sure the GNU make utility is version 3.81 (4.0 on
e.g. run "<code>make -version</code>" windows) or newer, e.g. run "<code>make -version</code>"
</li> </li>
<li> <li>
Install a Install a
@ -441,7 +442,7 @@
</li> </li>
<li> <li>
Install Install
<a href="#vs2010">Visual Studio 2010</a> <a href="#vs2013">Visual Studio 2013</a>
</li> </li>
</ul> </ul>
</td> </td>
@ -750,23 +751,23 @@
</blockquote> </blockquote>
<h5><a name="vs2010">Visual Studio 2010 Compilers</a></h5> <h5><a name="vs2013">Visual Studio 2013 Compilers</a></h5>
<blockquote> <blockquote>
<p> <p>
The 32-bit and 64-bit OpenJDK Windows build requires The 32-bit and 64-bit OpenJDK Windows build requires
Microsoft Visual Studio C++ 2010 (VS2010) Professional Microsoft Visual Studio C++ 2013 (VS2013) Professional
Edition or Express compiler. Edition or Express compiler.
The compiler and other tools are expected to reside The compiler and other tools are expected to reside
in the location defined by the variable in the location defined by the variable
<code>VS100COMNTOOLS</code> which <code>VS120COMNTOOLS</code> which
is set by the Microsoft Visual Studio installer. is set by the Microsoft Visual Studio installer.
</p> </p>
<p> <p>
Only the C++ part of VS2010 is needed. Only the C++ part of VS2013 is needed.
Try to let the installation go to the default Try to let the installation go to the default
install directory. install directory.
Always reboot your system after installing VS2010. Always reboot your system after installing VS2013.
The system environment variable VS100COMNTOOLS The system environment variable VS120COMNTOOLS
should be should be
set in your environment. set in your environment.
</p> </p>
@ -1040,7 +1041,7 @@
<br> <br>
This is usually picked up automatically This is usually picked up automatically
from the redist from the redist
directories of Visual Studio 2010. directories of Visual Studio 2013.
</td> </td>
</tr> </tr>
<tr> <tr>
@ -1726,10 +1727,10 @@
A few notes about using GNU make: A few notes about using GNU make:
<ul> <ul>
<li> <li>
You need GNU make version 3.81 or newer. You need GNU make version 3.81 or newer. On Windows 4.0 or
If the GNU make utility on your systems is not newer is recommended.
3.81 or newer, If the GNU make utility on your systems is not of a suitable
see <a href="#buildgmake">"Building GNU make"</a>. version see <a href="#buildgmake">"Building GNU make"</a>.
</li> </li>
<li> <li>
Place the location of the GNU make binary in the Place the location of the GNU make binary in the
@ -1854,54 +1855,54 @@
<tbody> <tbody>
<tr> <tr>
<td>Linux X86 (32-bit) and X64 (64-bit)</td> <td>Linux X86 (32-bit) and X64 (64-bit)</td>
<td>Fedora 9</td> <td>Oracle Enterprise Linux 6.4</td>
<td>gcc 4.3 </td> <td>gcc 4.8.2 </td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>2 or more</td> <td>2 or more</td>
<td>1 GB</td> <td>1 GB</td>
<td>6 GB</td> <td>6 GB</td>
</tr> </tr>
<tr> <tr>
<td>Solaris SPARC (32-bit) and SPARCV9 (64-bit)</td> <td>Solaris SPARCV9 (64-bit)</td>
<td>Solaris 10 Update 6</td> <td>Solaris 10 Update 10</td>
<td>Studio 12 Update 1 + patches</td> <td>Studio 12 Update 3 + patches</td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>4 or more</td> <td>4 or more</td>
<td>4 GB</td> <td>4 GB</td>
<td>8 GB</td> <td>8 GB</td>
</tr> </tr>
<tr> <tr>
<td>Solaris X86 (32-bit) and X64 (64-bit)</td> <td>Solaris X64 (64-bit)</td>
<td>Solaris 10 Update 6</td> <td>Solaris 10 Update 10</td>
<td>Studio 12 Update 1 + patches</td> <td>Studio 12 Update 3 + patches</td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>4 or more</td> <td>4 or more</td>
<td>4 GB</td> <td>4 GB</td>
<td>8 GB</td> <td>8 GB</td>
</tr> </tr>
<tr> <tr>
<td>Windows X86 (32-bit)</td> <td>Windows X86 (32-bit)</td>
<td>Windows XP</td> <td>Windows Server 2012 R2 x64</td>
<td>Microsoft Visual Studio C++ 2010 Professional Edition</td> <td>Microsoft Visual Studio C++ 2013 Professional Edition</td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>2 or more</td> <td>2 or more</td>
<td>2 GB</td> <td>2 GB</td>
<td>6 GB</td> <td>6 GB</td>
</tr> </tr>
<tr> <tr>
<td>Windows X64 (64-bit)</td> <td>Windows X64 (64-bit)</td>
<td>Windows Server 2003 - Enterprise x64 Edition</td> <td>Windows Server 2012 R2 x64</td>
<td>Microsoft Visual Studio C++ 2010 Professional Edition</td> <td>Microsoft Visual Studio C++ 2013 Professional Edition</td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>2 or more</td> <td>2 or more</td>
<td>2 GB</td> <td>2 GB</td>
<td>6 GB</td> <td>6 GB</td>
</tr> </tr>
<tr> <tr>
<td>Mac OS X X64 (64-bit)</td> <td>Mac OS X X64 (64-bit)</td>
<td>Mac OS X 10.7 "Lion"</td> <td>Mac OS X 10.9 "Mavericks"</td>
<td>XCode 4.5.2 or newer</td> <td>XCode 5.1.1 or newer</td>
<td>JDK 7u7</td> <td>JDK 8</td>
<td>2 or more</td> <td>2 or more</td>
<td>4 GB</td> <td>4 GB</td>
<td>6 GB</td> <td>6 GB</td>

View file

@ -459,16 +459,34 @@ AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
AC_MSG_RESULT([$TOPDIR]) AC_MSG_RESULT([$TOPDIR])
AC_SUBST(TOPDIR) AC_SUBST(TOPDIR)
# Save the original version of TOPDIR for string comparisons
ORIGINAL_TOPDIR="$TOPDIR"
AC_SUBST(ORIGINAL_TOPDIR)
# We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS. # We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
BASIC_FIXUP_PATH(CURDIR) BASIC_FIXUP_PATH(CURDIR)
BASIC_FIXUP_PATH(TOPDIR) BASIC_FIXUP_PATH(TOPDIR)
# SRC_ROOT is a traditional alias for TOPDIR. # SRC_ROOT is a traditional alias for TOPDIR.
SRC_ROOT=$TOPDIR SRC_ROOT=$TOPDIR
# Calculate a canonical version of TOPDIR for string comparisons
CANONICAL_TOPDIR=$TOPDIR
BASIC_REMOVE_SYMBOLIC_LINKS([CANONICAL_TOPDIR])
AC_SUBST(CANONICAL_TOPDIR)
# Locate the directory of this script. # Locate the directory of this script.
AUTOCONF_DIR=$TOPDIR/common/autoconf AUTOCONF_DIR=$TOPDIR/common/autoconf
]) ])
# Evaluates platform specific overrides for devkit variables.
# $1: Name of variable
AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
[
if test "x[$]$1" = x; then
eval $1="\${$1_${OPENJDK_TARGET_CPU}}"
fi
])
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT], AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
[ [
AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit], AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
@ -478,12 +496,27 @@ AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
DEVKIT_ROOT="$with_devkit" DEVKIT_ROOT="$with_devkit"
# Check for a meta data info file in the root of the devkit # Check for a meta data info file in the root of the devkit
if test -f "$DEVKIT_ROOT/devkit.info"; then if test -f "$DEVKIT_ROOT/devkit.info"; then
# This potentially sets the following:
# DEVKIT_NAME: A descriptive name of the devkit
# DEVKIT_TOOLCHAIN_PATH: Corresponds to --with-toolchain-path
# DEVKIT_EXTRA_PATH: Corresponds to --with-extra-path
# DEVKIT_SYSROOT: Corresponds to --with-sysroot
. $DEVKIT_ROOT/devkit.info . $DEVKIT_ROOT/devkit.info
# This potentially sets the following:
# A descriptive name of the devkit
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_NAME])
# Corresponds to --with-extra-path
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_EXTRA_PATH])
# Corresponds to --with-toolchain-path
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_TOOLCHAIN_PATH])
# Corresponds to --with-sysroot
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_SYSROOT])
# Identifies the Visual Studio version in the devkit
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_VERSION])
# The Visual Studio include environment variable
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_INCLUDE])
# The Visual Studio lib environment variable
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_LIB])
# Corresponds to --with-msvcr-dll
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCR_DLL])
# Corresponds to --with-msvcp-dll
BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCP_DLL])
fi fi
AC_MSG_CHECKING([for devkit]) AC_MSG_CHECKING([for devkit])
@ -493,9 +526,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
AC_MSG_RESULT([$DEVKIT_ROOT]) AC_MSG_RESULT([$DEVKIT_ROOT])
fi fi
if test "x$DEVKIT_EXTRA_PATH" != x; then
BASIC_PREPEND_TO_PATH([EXTRA_PATH],$DEVKIT_EXTRA_PATH) BASIC_PREPEND_TO_PATH([EXTRA_PATH],$DEVKIT_EXTRA_PATH)
fi
# Fallback default of just /bin if DEVKIT_PATH is not defined # Fallback default of just /bin if DEVKIT_PATH is not defined
if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
@ -672,7 +703,11 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
files_present=`$LS $OUTPUT_ROOT` files_present=`$LS $OUTPUT_ROOT`
# Configure has already touched config.log and confdefs.h in the current dir when this check # Configure has already touched config.log and confdefs.h in the current dir when this check
# is performed. # is performed.
filtered_files=`$ECHO "$files_present" | $SED -e 's/config.log//g' -e 's/confdefs.h//g' -e 's/ //g' \ filtered_files=`$ECHO "$files_present" \
| $SED -e 's/config.log//g' \
-e 's/confdefs.h//g' \
-e 's/fixpath.exe//g' \
-e 's/ //g' \
| $TR -d '\n'` | $TR -d '\n'`
if test "x$filtered_files" != x; then if test "x$filtered_files" != x; then
AC_MSG_NOTICE([Current directory is $CURDIR.]) AC_MSG_NOTICE([Current directory is $CURDIR.])
@ -691,9 +726,13 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
BASIC_FIXUP_PATH(OUTPUT_ROOT) BASIC_FIXUP_PATH(OUTPUT_ROOT)
CONFIGURESUPPORT_OUTPUTDIR="$OUTPUT_ROOT/configure-support"
$MKDIR -p "$CONFIGURESUPPORT_OUTPUTDIR"
AC_SUBST(SPEC, $OUTPUT_ROOT/spec.gmk) AC_SUBST(SPEC, $OUTPUT_ROOT/spec.gmk)
AC_SUBST(CONF_NAME, $CONF_NAME) AC_SUBST(CONF_NAME, $CONF_NAME)
AC_SUBST(OUTPUT_ROOT, $OUTPUT_ROOT) AC_SUBST(OUTPUT_ROOT, $OUTPUT_ROOT)
AC_SUBST(CONFIGURESUPPORT_OUTPUTDIR)
# The spec.gmk file contains all variables for the make system. # The spec.gmk file contains all variables for the make system.
AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in]) AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in])
@ -709,18 +748,6 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
AC_CONFIG_FILES([$OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in]) AC_CONFIG_FILES([$OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in])
]) ])
AC_DEFUN_ONCE([BASIC_SETUP_LOGGING],
[
# Setup default logging of stdout and stderr to build.log in the output root.
BUILD_LOG='$(OUTPUT_ROOT)/build.log'
BUILD_LOG_PREVIOUS='$(OUTPUT_ROOT)/build.log.old'
BUILD_LOG_WRAPPER='$(BASH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
AC_SUBST(BUILD_LOG)
AC_SUBST(BUILD_LOG_PREVIOUS)
AC_SUBST(BUILD_LOG_WRAPPER)
])
#%%% Simple tools %%% #%%% Simple tools %%%
# Check if we have found a usable version of make # Check if we have found a usable version of make
@ -730,6 +757,16 @@ AC_DEFUN([BASIC_CHECK_MAKE_VERSION],
[ [
MAKE_CANDIDATE="$1" MAKE_CANDIDATE="$1"
DESCRIPTION="$2" DESCRIPTION="$2"
# On Cygwin, we require a newer version of make than on other platforms
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
MAKE_VERSION_EXPR="-e 4\."
MAKE_REQUIRED_VERSION="4.0"
else
MAKE_VERSION_EXPR="-e 3\.8[[12]] -e 4\."
MAKE_REQUIRED_VERSION="3.81"
fi
if test "x$MAKE_CANDIDATE" != x; then if test "x$MAKE_CANDIDATE" != x; then
AC_MSG_NOTICE([Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION]) AC_MSG_NOTICE([Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION])
MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1` MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
@ -737,9 +774,9 @@ AC_DEFUN([BASIC_CHECK_MAKE_VERSION],
if test "x$IS_GNU_MAKE" = x; then if test "x$IS_GNU_MAKE" = x; then
AC_MSG_NOTICE([Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring.]) AC_MSG_NOTICE([Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring.])
else else
IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP -e '3\.8[[12]]' -e '4\.'` IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
if test "x$IS_MODERN_MAKE" = x; then if test "x$IS_MODERN_MAKE" = x; then
AC_MSG_NOTICE([Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring.]) AC_MSG_NOTICE([Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring.])
else else
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
@ -803,7 +840,7 @@ AC_DEFUN([BASIC_CHECK_GNU_MAKE],
fi fi
BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE]) BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE])
if test "x$FOUND_MAKE" = x; then if test "x$FOUND_MAKE" = x; then
AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make 3.81 or newer.]) AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer.])
fi fi
else else
# Try our hardest to locate a correct version of GNU make # Try our hardest to locate a correct version of GNU make
@ -831,13 +868,13 @@ AC_DEFUN([BASIC_CHECK_GNU_MAKE],
fi fi
if test "x$FOUND_MAKE" = x; then if test "x$FOUND_MAKE" = x; then
AC_MSG_ERROR([Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.]) AC_MSG_ERROR([Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.])
fi fi
fi fi
MAKE=$FOUND_MAKE MAKE=$FOUND_MAKE
AC_SUBST(MAKE) AC_SUBST(MAKE)
AC_MSG_NOTICE([Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)]) AC_MSG_NOTICE([Using GNU make at $FOUND_MAKE (version: $MAKE_VERSION_STRING)])
BASIC_CHECK_MAKE_OUTPUT_SYNC BASIC_CHECK_MAKE_OUTPUT_SYNC
]) ])

View file

@ -66,7 +66,7 @@ AC_DEFUN([BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN],
# Going to short mode and back again did indeed matter. Since short mode is # Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability. # case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-stile (cygpath) # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"` input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path" new_path="$input_path"
fi fi
@ -383,45 +383,46 @@ AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
if test "x$OPENJDK_BUILD_OS" = xwindows; then if test "x$OPENJDK_BUILD_OS" = xwindows; then
AC_MSG_CHECKING([if fixpath can be created]) AC_MSG_CHECKING([if fixpath can be created])
FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c" FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
FIXPATH_BIN="$OUTPUT_ROOT/fixpath.exe" FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
FIXPATH_SRC=`$CYGPATH -m $FIXPATH_SRC`
FIXPATH_BIN=`$CYGPATH -m $FIXPATH_BIN`
# Important to keep the .exe suffix on Cygwin for Hotspot makefiles # Important to keep the .exe suffix on Cygwin for Hotspot makefiles
FIXPATH="$OUTPUT_ROOT/fixpath.exe -c" FIXPATH="$FIXPATH_BIN -c"
elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
FIXPATH_SRC=`cmd //c echo $FIXPATH_SRC`
FIXPATH_BIN=`cmd //c echo $FIXPATH_BIN`
# Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line # Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
# @ was chosen as separator to minimize risk of other tools messing around with it # @ was chosen as separator to minimize risk of other tools messing around with it
all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" | tr ' ' '\n' | grep '^/./' | sort | uniq` all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" \
| tr ' ' '\n' | grep '^/./' | sort | uniq`
fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'` fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
FIXPATH="$OUTPUT_ROOT/fixpath -m$fixpath_argument_list"
fi fi
rm -f $OUTPUT_ROOT/fixpath* FIXPATH_SRC_W="$FIXPATH_SRC"
cd $OUTPUT_ROOT FIXPATH_BIN_W="$FIXPATH_BIN"
$CC $FIXPATH_SRC -Fe$FIXPATH_BIN > $OUTPUT_ROOT/fixpath1.log 2>&1 BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
cd $FIXPATH_DIR
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
cd $CURDIR cd $CURDIR
if test ! -x $OUTPUT_ROOT/fixpath.exe; then if test ! -x $FIXPATH_BIN; then
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
cat $OUTPUT_ROOT/fixpath1.log cat $FIXPATH_DIR/fixpath1.log
AC_MSG_ERROR([Could not create $OUTPUT_ROOT/fixpath.exe]) AC_MSG_ERROR([Could not create $FIXPATH_BIN])
fi fi
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
AC_MSG_CHECKING([if fixpath.exe works]) AC_MSG_CHECKING([if fixpath.exe works])
cd $OUTPUT_ROOT cd $FIXPATH_DIR
$FIXPATH $CC $SRC_ROOT/common/src/fixpath.c -Fe$OUTPUT_ROOT/fixpath2.exe > $OUTPUT_ROOT/fixpath2.log 2>&1 $FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \
> $FIXPATH_DIR/fixpath2.log 2>&1
cd $CURDIR cd $CURDIR
if test ! -x $OUTPUT_ROOT/fixpath2.exe; then if test ! -x $FIXPATH_DIR/fixpath2.exe; then
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
cat $OUTPUT_ROOT/fixpath2.log cat $FIXPATH_DIR/fixpath2.log
AC_MSG_ERROR([fixpath did not work!]) AC_MSG_ERROR([fixpath did not work!])
fi fi
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
rm -f $OUTPUT_ROOT/fixpath?.??? $OUTPUT_ROOT/fixpath.obj
fi fi
AC_SUBST(FIXPATH) AC_SUBST(FIXPATH)

View file

@ -336,11 +336,4 @@ AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC],
AC_MSG_CHECKING([whether to use sjavac]) AC_MSG_CHECKING([whether to use sjavac])
AC_MSG_RESULT([$ENABLE_SJAVAC]) AC_MSG_RESULT([$ENABLE_SJAVAC])
AC_SUBST(ENABLE_SJAVAC) AC_SUBST(ENABLE_SJAVAC)
if test "x$ENABLE_SJAVAC" = xyes; then
SJAVAC_SERVER_DIR="$OUTPUT_ROOT/javacservers"
else
SJAVAC_SERVER_DIR=
fi
AC_SUBST(SJAVAC_SERVER_DIR)
]) ])

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
@ -88,7 +88,6 @@ PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET
# Continue setting up basic stuff. Most remaining code require fundamental tools. # Continue setting up basic stuff. Most remaining code require fundamental tools.
BASIC_SETUP_PATHS BASIC_SETUP_PATHS
BASIC_SETUP_LOGGING
# Check if it's a pure open build or if custom sources are to be used. # Check if it's a pure open build or if custom sources are to be used.
JDKOPT_SETUP_OPEN_OR_CUSTOM JDKOPT_SETUP_OPEN_OR_CUSTOM
@ -262,7 +261,7 @@ CUSTOM_LATE_HOOK
# We're messing a bit with internal autoconf variables to put the config.status # We're messing a bit with internal autoconf variables to put the config.status
# in the output directory instead of the current directory. # in the output directory instead of the current directory.
CONFIG_STATUS="$OUTPUT_ROOT/config.status" CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
# Create the actual output files. Now the main work of configure is done. # Create the actual output files. Now the main work of configure is done.
AC_OUTPUT AC_OUTPUT
@ -270,7 +269,7 @@ CUSTOM_CONFIG_OUTPUT_GENERATED_HOOK
# Try to move the config.log file to the output directory. # Try to move the config.log file to the output directory.
if test -e ./config.log; then if test -e ./config.log; then
$MV -f ./config.log "$OUTPUT_ROOT/config.log" 2> /dev/null $MV -f ./config.log "$CONFIGURESUPPORT_OUTPUTDIR/config.log" 2> /dev/null
fi fi
# Make the compare script executable # Make the compare script executable

File diff suppressed because it is too large Load diff

View file

@ -55,25 +55,12 @@ CONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
# A self-referential reference to this file. # A self-referential reference to this file.
SPEC:=@SPEC@ SPEC:=@SPEC@
# Specify where the spec file is. # What make to use for main processing, after bootstrapping top-level Makefile.
MAKE_ARGS="SPEC=$(SPEC)"
MAKE := @MAKE@ MAKE := @MAKE@
# Pass along the verbosity and log level settings. # The default make arguments
ifeq (,$(findstring VERBOSE=,$(MAKE))) MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \
MAKE:=$(MAKE) $(VERBOSE) VERBOSE="$(VERBOSE)" LOG_LEVEL="$(LOG_LEVEL)" MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" LOG_LEVEL=$(LOG_LEVEL)
endif
# No implicit variables or rules!
ifeq (,$(findstring -R,$(MAKE)))
MAKE:=$(MAKE) -R
endif
# Specify where the common include directory for makefiles is.
ifeq (,$(findstring -I @TOPDIR@/make/common,$(MAKE)))
MAKE:=$(MAKE) -I @TOPDIR@/make/common
endif
OUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@ OUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@
OUTPUT_SYNC:=@OUTPUT_SYNC@ OUTPUT_SYNC:=@OUTPUT_SYNC@
@ -146,6 +133,9 @@ OVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@
# The top-level directory of the forest (SRC_ROOT is a traditional alias) # The top-level directory of the forest (SRC_ROOT is a traditional alias)
TOPDIR:=@TOPDIR@ TOPDIR:=@TOPDIR@
# These two versions of TOPDIR are used in string comparisons
ORIGINAL_TOPDIR:=@ORIGINAL_TOPDIR@
CANONICAL_TOPDIR:=@CANONICAL_TOPDIR@
SRC_ROOT:=@TOPDIR@ SRC_ROOT:=@TOPDIR@
OUTPUT_ROOT:=@OUTPUT_ROOT@ OUTPUT_ROOT:=@OUTPUT_ROOT@
@ -192,6 +182,7 @@ else
FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER) FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER)
endif endif
JRE_RELEASE_VERSION:=$(FULL_VERSION) JRE_RELEASE_VERSION:=$(FULL_VERSION)
JDK_VERSION_FOR_MANIFEST := $(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(if $(JDK_UPDATE_VERSION),$(JDK_UPDATE_VERSION),0).$(COOKED_BUILD_NUMBER)
# How to compile the code: release, fastdebug or slowdebug # How to compile the code: release, fastdebug or slowdebug
DEBUG_LEVEL:=@DEBUG_LEVEL@ DEBUG_LEVEL:=@DEBUG_LEVEL@
@ -241,13 +232,14 @@ BUILD_OUTPUT:=@BUILD_OUTPUT@
# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images # Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
SUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/support SUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/support
BUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools BUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/makesupport
HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
# This does not get overridden in a bootcycle build
CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
HOTSPOT_DIST=@HOTSPOT_DIST@ HOTSPOT_DIST=@HOTSPOT_DIST@
@ -269,7 +261,7 @@ MEMORY_SIZE:=@MEMORY_SIZE@
ENABLE_SJAVAC:=@ENABLE_SJAVAC@ ENABLE_SJAVAC:=@ENABLE_SJAVAC@
# Store sjavac server synchronization files here, and # Store sjavac server synchronization files here, and
# the sjavac server log files. # the sjavac server log files.
SJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@ SJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
# Number of parallel jobs to use for compilation # Number of parallel jobs to use for compilation
JOBS?=@JOBS@ JOBS?=@JOBS@
@ -363,10 +355,6 @@ USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@
LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@ LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@ LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
# On some platforms the linker cannot be used to create executables, thus
# the need for a separate LDEXE command.
LDEXE:=@FIXPATH@ @LDEXE@
# LDFLAGS used to link the jdk native launchers (C-code) # LDFLAGS used to link the jdk native launchers (C-code)
LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@ LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
LDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@ LDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
@ -379,9 +367,6 @@ LDCXX:=@FIXPATH@ @LDCXX@
# The flags for linking libstdc++ linker. # The flags for linking libstdc++ linker.
LIBCXX:=@LIBCXX@ LIBCXX:=@LIBCXX@
# Sometimes a different linker is needed for c++ executables
LDEXECXX:=@FIXPATH@ @LDEXECXX@
# Compiler and linker flags used when building native tests # Compiler and linker flags used when building native tests
CFLAGS_TESTLIB:=@CFLAGS_TESTLIB@ CFLAGS_TESTLIB:=@CFLAGS_TESTLIB@
CXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@ CXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@
@ -573,18 +558,6 @@ JTREGEXE:=@JTREGEXE@
XCODEBUILD=@XCODEBUILD@ XCODEBUILD=@XCODEBUILD@
FIXPATH:=@FIXPATH@ FIXPATH:=@FIXPATH@
# Where the build output is stored for your convenience.
BUILD_LOG:=@BUILD_LOG@
BUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@
# Disable the build log wrapper on sjavac+windows until
# we have solved how to prevent the log wrapper to wait
# for the background sjavac server process.
ifeq (@ENABLE_SJAVAC@X@OPENJDK_BUILD_OS@,yesXwindows)
BUILD_LOG_WRAPPER:=
else
BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
endif
# Build setup # Build setup
ENABLE_JFR=@ENABLE_JFR@ ENABLE_JFR=@ENABLE_JFR@
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@ ENABLE_INTREE_EC=@ENABLE_INTREE_EC@

View file

@ -189,11 +189,15 @@ AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
ORG_CFLAGS="$CFLAGS" ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS" ORG_CXXFLAGS="$CXXFLAGS"
# autoconf magic only relies on PATH, so update it if tools dir is specified
OLD_PATH="$PATH"
# On Windows, we need to detect the visual studio installation first. # On Windows, we need to detect the visual studio installation first.
# This will change the PATH, but we need to keep that new PATH even # This will change the PATH, but we need to keep that new PATH even
# after toolchain detection is done, since the compiler (on x86) uses # after toolchain detection is done, since the compiler (on x86) uses
# it for DLL resolution in runtime. # it for DLL resolution in runtime.
if test "x$OPENJDK_BUILD_OS" = "xwindows" && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then if test "x$OPENJDK_BUILD_OS" = "xwindows" \
&& test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
# Reset path to VS_PATH. It will include everything that was on PATH at the time we # Reset path to VS_PATH. It will include everything that was on PATH at the time we
# ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV. # ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV.
@ -203,9 +207,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
export LIB="$VS_LIB" export LIB="$VS_LIB"
fi fi
# autoconf magic only relies on PATH, so update it if tools dir is specified
OLD_PATH="$PATH"
# For solaris we really need solaris tools, and not the GNU equivalent. # For solaris we really need solaris tools, and not the GNU equivalent.
# The build tools on Solaris reside in /usr/ccs (C Compilation System), # The build tools on Solaris reside in /usr/ccs (C Compilation System),
# so add that to path before starting to probe. # so add that to path before starting to probe.
@ -662,13 +663,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_LEGACY],
USE_CLANG=true USE_CLANG=true
fi fi
AC_SUBST(USE_CLANG) AC_SUBST(USE_CLANG)
# LDEXE is the linker to use, when creating executables. Not really used.
# FIXME: These should just be removed!
LDEXE="$LD"
LDEXECXX="$LDCXX"
AC_SUBST(LDEXE)
AC_SUBST(LDEXECXX)
]) ])
# Do some additional checks on the detected tools. # Do some additional checks on the detected tools.

View file

@ -24,8 +24,8 @@
# #
################################################################################ ################################################################################
# The order of these defines the priority by which we try to find them.
VALID_VS_VERSIONS="2010 2012 2013" VALID_VS_VERSIONS="2013 2012 2010"
VS_DESCRIPTION_2010="Microsoft Visual Studio 2010" VS_DESCRIPTION_2010="Microsoft Visual Studio 2010"
VS_VERSION_INTERNAL_2010=100 VS_VERSION_INTERNAL_2010=100
@ -210,6 +210,37 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO],
done done
exit 0 exit 0
elif test "x$DEVKIT_VS_VERSION" != x; then
VS_VERSION=$DEVKIT_VS_VERSION
TOOLCHAIN_VERSION=$VS_VERSION
eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
VS_PATH="$TOOLCHAIN_PATH:$PATH"
# Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
# can still be exported as INCLUDE for compiler invocations without
# SYSROOT_CFLAGS
OLDIFS="$IFS"
IFS=";"
for i in $DEVKIT_VS_INCLUDE; do
ipath=$i
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([ipath])
VS_INCLUDE="$VS_INCLUDE;$ipath"
done
# Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
# as LIB for compiler invocations without SYSROOT_LDFLAGS
for i in $DEVKIT_VS_LIB; do
libpath=$i
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([libpath])
VS_LIB="$VS_LIB;$libpath"
done
IFS="$OLDIFS"
AC_MSG_NOTICE([Found devkit $VS_DESCRIPTION])
elif test "x$with_toolchain_version" != x; then elif test "x$with_toolchain_version" != x; then
# User override; check that it is valid # User override; check that it is valid
if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then
@ -262,6 +293,8 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
# First-hand choice is to locate and run the vsvars bat file. # First-hand choice is to locate and run the vsvars bat file.
TOOLCHAIN_FIND_VISUAL_STUDIO TOOLCHAIN_FIND_VISUAL_STUDIO
# If we have a devkit, skip all of the below.
if test "x$DEVKIT_VS_VERSION" = x; then
if test "x$VS_ENV_CMD" != x; then if test "x$VS_ENV_CMD" != x; then
# We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file. # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD) BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD)
@ -270,7 +303,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
AC_MSG_NOTICE([Trying to extract Visual Studio environment variables]) AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
# We need to create a couple of temporary files. # We need to create a couple of temporary files.
VS_ENV_TMP_DIR="$OUTPUT_ROOT/vs-env" VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
$MKDIR -p $VS_ENV_TMP_DIR $MKDIR -p $VS_ENV_TMP_DIR
# Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment). # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
@ -291,12 +324,18 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
# C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
# The trailing space for everyone except PATH is no typo, but is needed due # The trailing space for everyone except PATH is no typo, but is needed due
# to trailing \ in the Windows paths. These will be stripped later. # to trailing \ in the Windows paths. These will be stripped later.
$ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
$ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
>> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
>> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
>> $EXTRACT_VC_ENV_BAT_FILE
# Now execute the newly created bat file. # Now execute the newly created bat file.
# The | cat is to stop SetEnv.Cmd to mess with system colors on msys. # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
@ -322,11 +361,13 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
# We did not find a vsvars bat file, let's hope we are run from a VS command prompt. # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment]) AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
fi fi
fi
# At this point, we should have correct variables in the environment, or we can't continue. # At this point, we should have correct variables in the environment, or we can't continue.
AC_MSG_CHECKING([for Visual Studio variables]) AC_MSG_CHECKING([for Visual Studio variables])
if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x || test "x$WINDOWSSDKDIR" != x; then if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
|| test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
AC_MSG_RESULT([present but broken]) AC_MSG_RESULT([present but broken])
AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.]) AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
@ -403,10 +444,10 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
POSSIBLE_MSVC_DLL="$2" POSSIBLE_MSVC_DLL="$2"
METHOD="$3" METHOD="$3"
if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
AC_MSG_NOTICE([Found $1 at $POSSIBLE_MSVC_DLL using $METHOD]) AC_MSG_NOTICE([Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD])
# Need to check if the found msvcr is correct architecture # Need to check if the found msvcr is correct architecture
AC_MSG_CHECKING([found $1 architecture]) AC_MSG_CHECKING([found $DLL_NAME architecture])
MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"` MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
# The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit" # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
@ -426,19 +467,19 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
AC_MSG_RESULT([ok]) AC_MSG_RESULT([ok])
MSVC_DLL="$POSSIBLE_MSVC_DLL" MSVC_DLL="$POSSIBLE_MSVC_DLL"
AC_MSG_CHECKING([for $1]) BASIC_FIXUP_PATH(MSVC_DLL)
AC_MSG_CHECKING([for $DLL_NAME])
AC_MSG_RESULT([$MSVC_DLL]) AC_MSG_RESULT([$MSVC_DLL])
else else
AC_MSG_RESULT([incorrect, ignoring]) AC_MSG_RESULT([incorrect, ignoring])
AC_MSG_NOTICE([The file type of the located $1 is $MSVC_DLL_FILETYPE]) AC_MSG_NOTICE([The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE])
fi fi
fi fi
]) ])
AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL], AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
[ [
VAR_NAME="$1" DLL_NAME="$1"
DLL_NAME="$2"
MSVC_DLL= MSVC_DLL=
if test "x$MSVC_DLL" = x; then if test "x$MSVC_DLL" = x; then
@ -517,10 +558,6 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
AC_MSG_ERROR([Could not find $DLL_NAME. Please specify using --with-msvcr-dll.]) AC_MSG_ERROR([Could not find $DLL_NAME. Please specify using --with-msvcr-dll.])
fi fi
$1=$MSVC_DLL
BASIC_FIXUP_PATH($1)
AC_SUBST($1, [$]$1)
]) ])
AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS], AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
@ -530,14 +567,22 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
if test "x$with_msvcr_dll" != x; then if test "x$with_msvcr_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly. # If given explicitely by user, do not probe. If not present, fail directly.
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$with_msvcr_dll], TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$with_msvcr_dll], [--with-msvcr-dll])
[--with-msvcr-dll])
if test "x$MSVC_DLL" = x; then if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll]) AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll])
fi fi
else MSVCR_DLL="$MSVC_DLL"
TOOLCHAIN_SETUP_MSVC_DLL([MSVCR_DLL], [${MSVCR_NAME}]) elif test "x$DEVKIT_MSVCR_DLL" != x; then
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$DEVKIT_MSVCR_DLL], [devkit])
if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by devkit])
fi fi
MSVCR_DLL="$MSVC_DLL"
else
TOOLCHAIN_SETUP_MSVC_DLL([${MSVCR_NAME}])
MSVCR_DLL="$MSVC_DLL"
fi
AC_SUBST(MSVCR_DLL)
AC_ARG_WITH(msvcp-dll, [AS_HELP_STRING([--with-msvcp-dll], AC_ARG_WITH(msvcp-dll, [AS_HELP_STRING([--with-msvcp-dll],
[path to microsoft C++ runtime dll (msvcp*.dll) (Windows only) @<:@probed@:>@])]) [path to microsoft C++ runtime dll (msvcp*.dll) (Windows only) @<:@probed@:>@])])
@ -545,13 +590,21 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
if test "x$MSVCP_NAME" != "x"; then if test "x$MSVCP_NAME" != "x"; then
if test "x$with_msvcp_dll" != x; then if test "x$with_msvcp_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly. # If given explicitely by user, do not probe. If not present, fail directly.
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$with_msvcp_dll], TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$with_msvcp_dll], [--with-msvcp-dll])
[--with-msvcp-dll])
if test "x$MSVC_DLL" = x; then if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll]) AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll])
fi fi
else MSVCP_DLL="$MSVC_DLL"
TOOLCHAIN_SETUP_MSVC_DLL([MSVCP_DLL], [${MSVCP_NAME}]) elif test "x$DEVKIT_MSVCP_DLL" != x; then
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$DEVKIT_MSVCP_DLL], [devkit])
if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by devkit])
fi fi
MSVCP_DLL="$MSVC_DLL"
else
TOOLCHAIN_SETUP_MSVC_DLL([${MSVCP_NAME}])
MSVCP_DLL="$MSVC_DLL"
fi
AC_SUBST(MSVCP_DLL)
fi fi
]) ])

View file

@ -1294,6 +1294,9 @@ jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/j2secmod_md.h : jdk/src/win
jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.c : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.c jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.c : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.c
jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.h : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.h jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.h : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.h
jdk/src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/package.html : jdk/src/macosx/classes/com/apple/concurrent/package.html jdk/src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/package.html : jdk/src/macosx/classes/com/apple/concurrent/package.html
jdk/src/jdk.deploy.osx/macosx/classes/apple/applescript : jdk/src/macosx/classes/apple/applescript
jdk/src/jdk.deploy.osx/macosx/classes/apple/security : jdk/src/macosx/classes/apple/security
jdk/src/jdk.deploy.osx/macosx/classes/com/apple/concurrent : jdk/src/macosx/classes/com/apple/concurrent
jdk/src/jdk.deploy.osx/macosx/native/libapplescriptengine : jdk/src/macosx/native/apple/applescript jdk/src/jdk.deploy.osx/macosx/native/libapplescriptengine : jdk/src/macosx/native/apple/applescript
jdk/src/jdk.deploy.osx/macosx/native/libosx/CFileManager.m : jdk/src/macosx/native/com/apple/eio/CFileManager.m jdk/src/jdk.deploy.osx/macosx/native/libosx/CFileManager.m : jdk/src/macosx/native/com/apple/eio/CFileManager.m
jdk/src/jdk.deploy.osx/macosx/native/libosx/Dispatch.m : jdk/src/macosx/native/com/apple/concurrent/Dispatch.m jdk/src/jdk.deploy.osx/macosx/native/libosx/Dispatch.m : jdk/src/macosx/native/com/apple/concurrent/Dispatch.m

3
configure vendored
View file

@ -31,4 +31,5 @@ this_script_dir=`cd $this_script_dir > /dev/null && pwd`
# Delegate to wrapper, forcing wrapper to believe $0 is this script by using -c. # Delegate to wrapper, forcing wrapper to believe $0 is this script by using -c.
# This trick is needed to get autoconf to co-operate properly. # This trick is needed to get autoconf to co-operate properly.
bash -c ". $this_script_dir/common/autoconf/configure" $this_script_dir/configure CHECKME $this_script_dir "$@" # The ${-:+-$-} construction passes on bash options.
bash ${-:+-$-} -c ". $this_script_dir/common/autoconf/configure" $this_script_dir/configure CHECKME $this_script_dir "$@"

View file

@ -298,3 +298,10 @@ b8538bbb6f224ab1dabba579137099c166ad4724 jdk9-b52
aadc16ca5ab7d56f92ef9dbfa443595a939241b4 jdk9-b53 aadc16ca5ab7d56f92ef9dbfa443595a939241b4 jdk9-b53
d469c5ad0c763e325a78e0af3016878a57dfc5cc jdk9-b54 d469c5ad0c763e325a78e0af3016878a57dfc5cc jdk9-b54
734ca5311a225711b79618f3e92f47f07c82154a jdk9-b55 734ca5311a225711b79618f3e92f47f07c82154a jdk9-b55
ef4afd6832b00b8687832c2a36c90e43750ebe40 jdk9-b56
d8ebf1a5b18ccbc849f5bf0f80aa3d78583eee68 jdk9-b57
86dd5de1f5cb09073019bd629e22cfcd012d8b4b jdk9-b58
cda6ae062f85fac5555f4e1318885b0ecd998bd1 jdk9-b59
caa330b275f39282793466529f6864766b31d9fd jdk9-b60
d690f489ca0bb95a6157d996da2fa72bcbcf02ea jdk9-b61
d27f7e0a7aca129969de23e9934408a31b4abf4c jdk9-b62

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -65,6 +65,7 @@ import com.sun.corba.se.spi.presentation.rmi.StubAdapter;
import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.spi.logging.CORBALogDomains;
import com.sun.corba.se.impl.logging.ORBUtilSystemException; import com.sun.corba.se.impl.logging.ORBUtilSystemException;
import com.sun.corba.se.impl.corba.AsynchInvoke; import com.sun.corba.se.impl.corba.AsynchInvoke;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
public class RequestImpl public class RequestImpl
extends Request extends Request
@ -255,7 +256,7 @@ public class RequestImpl
public synchronized void send_deferred() public synchronized void send_deferred()
{ {
AsynchInvoke invokeObject = new AsynchInvoke(_orb, this, false); AsynchInvoke invokeObject = new AsynchInvoke(_orb, this, false);
new Thread(invokeObject).start(); new ManagedLocalsThread(invokeObject).start();
} }
public synchronized boolean poll_response() public synchronized boolean poll_response()

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -1768,43 +1768,59 @@ public class IIOPInputStream
switch (field.getTypeCode()) { switch (field.getTypeCode()) {
case 'B': case 'B':
byte byteValue = orbStream.read_octet(); byte byteValue = orbStream.read_octet();
if (field.getField() != null) {
bridge.putByte( o, field.getFieldID(), byteValue ) ; bridge.putByte( o, field.getFieldID(), byteValue ) ;
//reflective code: field.getField().setByte( o, byteValue ) ; //reflective code: field.getField().setByte( o, byteValue ) ;
}
break; break;
case 'Z': case 'Z':
boolean booleanValue = orbStream.read_boolean(); boolean booleanValue = orbStream.read_boolean();
if (field.getField() != null) {
bridge.putBoolean( o, field.getFieldID(), booleanValue ) ; bridge.putBoolean( o, field.getFieldID(), booleanValue ) ;
//reflective code: field.getField().setBoolean( o, booleanValue ) ; //reflective code: field.getField().setBoolean( o, booleanValue ) ;
}
break; break;
case 'C': case 'C':
char charValue = orbStream.read_wchar(); char charValue = orbStream.read_wchar();
if (field.getField() != null) {
bridge.putChar( o, field.getFieldID(), charValue ) ; bridge.putChar( o, field.getFieldID(), charValue ) ;
//reflective code: field.getField().setChar( o, charValue ) ; //reflective code: field.getField().setChar( o, charValue ) ;
}
break; break;
case 'S': case 'S':
short shortValue = orbStream.read_short(); short shortValue = orbStream.read_short();
if (field.getField() != null) {
bridge.putShort( o, field.getFieldID(), shortValue ) ; bridge.putShort( o, field.getFieldID(), shortValue ) ;
//reflective code: field.getField().setShort( o, shortValue ) ; //reflective code: field.getField().setShort( o, shortValue ) ;
}
break; break;
case 'I': case 'I':
int intValue = orbStream.read_long(); int intValue = orbStream.read_long();
if (field.getField() != null) {
bridge.putInt( o, field.getFieldID(), intValue ) ; bridge.putInt( o, field.getFieldID(), intValue ) ;
//reflective code: field.getField().setInt( o, intValue ) ; //reflective code: field.getField().setInt( o, intValue ) ;
}
break; break;
case 'J': case 'J':
long longValue = orbStream.read_longlong(); long longValue = orbStream.read_longlong();
if (field.getField() != null) {
bridge.putLong( o, field.getFieldID(), longValue ) ; bridge.putLong( o, field.getFieldID(), longValue ) ;
//reflective code: field.getField().setLong( o, longValue ) ; //reflective code: field.getField().setLong( o, longValue ) ;
}
break; break;
case 'F' : case 'F' :
float floatValue = orbStream.read_float(); float floatValue = orbStream.read_float();
if (field.getField() != null) {
bridge.putFloat( o, field.getFieldID(), floatValue ) ; bridge.putFloat( o, field.getFieldID(), floatValue ) ;
//reflective code: field.getField().setFloat( o, floatValue ) ; //reflective code: field.getField().setFloat( o, floatValue ) ;
}
break; break;
case 'D' : case 'D' :
double doubleValue = orbStream.read_double(); double doubleValue = orbStream.read_double();
if (field.getField() != null) {
bridge.putDouble( o, field.getFieldID(), doubleValue ) ; bridge.putDouble( o, field.getFieldID(), doubleValue ) ;
//reflective code: field.getField().setDouble( o, doubleValue ) ; //reflective code: field.getField().setDouble( o, doubleValue ) ;
}
break; break;
default: default:
// XXX I18N, logging needed. // XXX I18N, logging needed.
@ -2217,9 +2233,6 @@ public class IIOPInputStream
if (o != null) { if (o != null) {
for (int i = 0; i < primFields; ++i) { for (int i = 0; i < primFields; ++i) {
if (fields[i].getField() == null)
continue;
inputPrimitiveField(o, cl, fields[i]); inputPrimitiveField(o, cl, fields[i]);
} }
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -32,6 +32,7 @@
package com.sun.corba.se.impl.io; package com.sun.corba.se.impl.io;
import java.io.IOException; import java.io.IOException;
import java.io.NotActiveException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.io.ObjectOutput; import java.io.ObjectOutput;
@ -154,7 +155,9 @@ public abstract class OutputStreamHook extends ObjectOutputStream
public ObjectOutputStream.PutField putFields() public ObjectOutputStream.PutField putFields()
throws IOException { throws IOException {
if (putFields == null) {
putFields = new HookPutFields(); putFields = new HookPutFields();
}
return putFields; return putFields;
} }
@ -175,8 +178,11 @@ public abstract class OutputStreamHook extends ObjectOutputStream
throws IOException { throws IOException {
writeObjectState.defaultWriteObject(this); writeObjectState.defaultWriteObject(this);
if (putFields != null) {
putFields.write(this); putFields.write(this);
} else {
throw new NotActiveException("no current PutField object");
}
} }
abstract org.omg.CORBA_2_3.portable.OutputStream getOrbStream(); abstract org.omg.CORBA_2_3.portable.OutputStream getOrbStream();

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -112,6 +112,8 @@ import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.logging.UtilSystemException; import com.sun.corba.se.impl.logging.UtilSystemException;
import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.spi.logging.CORBALogDomains;
import sun.corba.SharedSecrets; import sun.corba.SharedSecrets;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
/** /**
* Provides utility methods that can be used by stubs and ties to * Provides utility methods that can be used by stubs and ties to
@ -750,7 +752,7 @@ public class Util implements javax.rmi.CORBA.UtilDelegate
} }
} }
class KeepAlive extends Thread class KeepAlive extends ManagedLocalsThread
{ {
boolean quit = false; boolean quit = false;

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -103,6 +103,7 @@ import com.sun.corba.se.impl.orbutil.concurrent.Sync ;
import com.sun.corba.se.impl.orbutil.concurrent.SyncUtil ; import com.sun.corba.se.impl.orbutil.concurrent.SyncUtil ;
import com.sun.corba.se.impl.orbutil.concurrent.ReentrantMutex ; import com.sun.corba.se.impl.orbutil.concurrent.ReentrantMutex ;
import com.sun.corba.se.impl.orbutil.concurrent.CondVar ; import com.sun.corba.se.impl.orbutil.concurrent.CondVar ;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
/** /**
* POAImpl is the implementation of the Portable Object Adapter. It * POAImpl is the implementation of the Portable Object Adapter. It
@ -516,7 +517,7 @@ public class POAImpl extends ObjectAdapterBase implements POA
// Converted from anonymous class to local class // Converted from anonymous class to local class
// so that we can call performDestroy() directly. // so that we can call performDestroy() directly.
static class DestroyThread extends Thread { static class DestroyThread extends ManagedLocalsThread {
private boolean wait ; private boolean wait ;
private boolean etherealize ; private boolean etherealize ;
private boolean debug ; private boolean debug ;

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -48,6 +48,7 @@ import com.sun.corba.se.spi.protocol.PIHandler ;
import com.sun.corba.se.impl.logging.POASystemException ; import com.sun.corba.se.impl.logging.POASystemException ;
import com.sun.corba.se.impl.orbutil.ORBUtility ; import com.sun.corba.se.impl.orbutil.ORBUtility ;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
/** POAManagerImpl is the implementation of the POAManager interface. /** POAManagerImpl is the implementation of the POAManager interface.
* Its public methods are activate(), hold_requests(), discard_requests() * Its public methods are activate(), hold_requests(), discard_requests()
@ -357,7 +358,7 @@ public class POAManagerImpl extends org.omg.CORBA.LocalObject implements
if (wait_for_completion) if (wait_for_completion)
deactivator.run() ; deactivator.run() ;
else { else {
Thread thr = new Thread(deactivator) ; Thread thr = new ManagedLocalsThread(deactivator) ;
thr.start() ; thr.start() ;
} }
} finally { } finally {

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -26,7 +26,6 @@
package com.sun.corba.se.impl.oa.poa ; package com.sun.corba.se.impl.oa.poa ;
import java.util.Set ; import java.util.Set ;
import org.omg.CORBA.SystemException ; import org.omg.CORBA.SystemException ;
import org.omg.PortableServer.ServantActivator ; import org.omg.PortableServer.ServantActivator ;
@ -50,6 +49,7 @@ import com.sun.corba.se.impl.javax.rmi.CORBA.Util ;
import com.sun.corba.se.spi.oa.OAInvocationInfo ; import com.sun.corba.se.spi.oa.OAInvocationInfo ;
import com.sun.corba.se.spi.oa.NullServant ; import com.sun.corba.se.spi.oa.NullServant ;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
/** Implementation of POARequesHandler that provides policy specific /** Implementation of POARequesHandler that provides policy specific
* operations on the POA. * operations on the POA.
@ -303,13 +303,14 @@ public class POAPolicyMediatorImpl_R_USM extends POAPolicyMediatorBase_R {
throw new WrongPolicy(); throw new WrongPolicy();
} }
class Etherealizer extends Thread { class Etherealizer extends ManagedLocalsThread {
private POAPolicyMediatorImpl_R_USM mediator ; private POAPolicyMediatorImpl_R_USM mediator ;
private ActiveObjectMap.Key key ; private ActiveObjectMap.Key key ;
private AOMEntry entry ; private AOMEntry entry ;
private Servant servant ; private Servant servant ;
private boolean debug ; private boolean debug ;
public Etherealizer( POAPolicyMediatorImpl_R_USM mediator, public Etherealizer( POAPolicyMediatorImpl_R_USM mediator,
ActiveObjectMap.Key key, AOMEntry entry, Servant servant, ActiveObjectMap.Key key, AOMEntry entry, Servant servant,
boolean debug ) boolean debug )

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -165,6 +165,7 @@ import com.sun.corba.se.impl.util.Utility;
import com.sun.corba.se.impl.logging.ORBUtilSystemException; import com.sun.corba.se.impl.logging.ORBUtilSystemException;
import com.sun.corba.se.impl.copyobject.CopierManagerImpl; import com.sun.corba.se.impl.copyobject.CopierManagerImpl;
import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl; import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
/** /**
* The JavaIDL ORB implementation. * The JavaIDL ORB implementation.
@ -691,7 +692,7 @@ public class ORBImpl extends com.sun.corba.se.spi.orb.ORB
for (int i = 0; i < req.length; i++) { for (int i = 0; i < req.length; i++) {
AsynchInvoke invokeObject = new AsynchInvoke( this, AsynchInvoke invokeObject = new AsynchInvoke( this,
(com.sun.corba.se.impl.corba.RequestImpl)req[i], true); (com.sun.corba.se.impl.corba.RequestImpl)req[i], true);
new Thread(invokeObject).start(); new ManagedLocalsThread(invokeObject).start();
} }
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -54,6 +54,7 @@ import com.sun.corba.se.spi.monitoring.LongMonitoredAttributeBase;
import com.sun.corba.se.impl.logging.ORBUtilSystemException; import com.sun.corba.se.impl.logging.ORBUtilSystemException;
import com.sun.corba.se.impl.orbutil.ORBConstants; import com.sun.corba.se.impl.orbutil.ORBConstants;
import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.spi.logging.CORBALogDomains;
import com.sun.corba.se.impl.transport.ManagedLocalsThread;
public class ThreadPoolImpl implements ThreadPool public class ThreadPoolImpl implements ThreadPool
{ {
@ -459,7 +460,7 @@ public class ThreadPoolImpl implements ThreadPool
} }
private class WorkerThread extends Thread implements Closeable private class WorkerThread extends ManagedLocalsThread implements Closeable
{ {
private Work currentWork; private Work currentWork;
private int threadId = 0; // unique id for the thread private int threadId = 0; // unique id for the thread

View file

@ -0,0 +1,116 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.transport;
import sun.misc.Unsafe;
import java.lang.reflect.Field;
import java.security.AccessController;
import java.security.PrivilegedAction;
/**
* A thread that has it's thread locals, and inheritable thread
* locals erased on construction.
*/
public class ManagedLocalsThread extends Thread {
private static final Unsafe UNSAFE;
private static final long THREAD_LOCALS;
private static final long INHERITABLE_THREAD_LOCALS;
public ManagedLocalsThread () {
super();
}
public ManagedLocalsThread(String name) {
super(name);
eraseThreadLocals();
}
public ManagedLocalsThread(Runnable target) {
super(target);
eraseThreadLocals();
}
public ManagedLocalsThread(Runnable target, String name) {
super(target, name);
eraseThreadLocals();
}
public ManagedLocalsThread(ThreadGroup group, Runnable target, String name) {
super(group, target, name);
eraseThreadLocals();
}
public ManagedLocalsThread(ThreadGroup group, String name) {
super(group, name);
eraseThreadLocals();
}
/**
* Drops all thread locals (and inherited thread locals).
*/
public final void eraseThreadLocals() {
UNSAFE.putObject(this, THREAD_LOCALS, null);
UNSAFE.putObject(this, INHERITABLE_THREAD_LOCALS, null);
}
private static Unsafe getUnsafe() {
PrivilegedAction<Unsafe> pa = () -> {
Class<?> unsafeClass = sun.misc.Unsafe.class;
try {
Field f = unsafeClass.getDeclaredField("theUnsafe");
f.setAccessible(true);
return (Unsafe) f.get(null);
} catch (Exception e) {
throw new Error(e);
}
};
return AccessController.doPrivileged(pa);
}
private static long getThreadFieldOffset(String fieldName) {
PrivilegedAction<Long> pa = () -> {
Class<?> t = Thread.class;
long fieldOffset;
try {
fieldOffset = UNSAFE.objectFieldOffset(t
.getDeclaredField("inheritableThreadLocals"));
} catch (Exception e) {
throw new Error(e);
}
return fieldOffset;
};
return AccessController.doPrivileged(pa);
}
static {
UNSAFE = getUnsafe();
try {
THREAD_LOCALS = getThreadFieldOffset("threadLocals");
INHERITABLE_THREAD_LOCALS = getThreadFieldOffset("inheritableThreadLocals");
} catch (Exception e) {
throw new Error(e);
}
}
}

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -57,7 +57,7 @@ import com.sun.corba.se.impl.orbutil.ORBUtility;
*/ */
class SelectorImpl class SelectorImpl
extends extends
Thread ManagedLocalsThread
implements implements
com.sun.corba.se.pept.transport.Selector com.sun.corba.se.pept.transport.Selector
{ {

View file

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<!-- <!--
Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -30,7 +30,7 @@ questions.
<body bgcolor="white"> <body bgcolor="white">
Contains Activity service related exceptions thrown by the ORB machinery during Contains Activity service related exceptions thrown by the ORB machinery during
unmarshalling. unmarshalling.
<p>
@since 1.5 @since 1.5
</body> </body>
</html> </html>

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -232,6 +232,8 @@ Tie#deactivate}
* and <tt>loader</tt> is non-null, then call <tt>loader.loadClass(className)</tt>. * and <tt>loader</tt> is non-null, then call <tt>loader.loadClass(className)</tt>.
* <LI>If a class was successfully loaded by step 1, 2, 3, or 4, then * <LI>If a class was successfully loaded by step 1, 2, 3, or 4, then
* return the loaded class, else throw <tt>ClassNotFoundException</tt>. * return the loaded class, else throw <tt>ClassNotFoundException</tt>.
* </UL>
*
* @param className the name of the class. * @param className the name of the class.
* @param remoteCodebase a space-separated list of URLs at which * @param remoteCodebase a space-separated list of URLs at which
* the class might be found. May be null. * the class might be found. May be null.

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -52,21 +52,21 @@ import org.omg.CORBA.portable.IDLEntity;
* </OL> * </OL>
* *
* <P> * <P>
* <a name="anyOps"</a> * <a name="anyOps"></a>
* A large part of the <code>Any</code> class consists of pairs of methods * A large part of the <code>Any</code> class consists of pairs of methods
* for inserting values into and extracting values from an * for inserting values into and extracting values from an
* <code>Any</code> object. * <code>Any</code> object.
* <P> * <P>
* For a given primitive type X, these methods are: * For a given primitive type X, these methods are:
* <dl> * <dl>
* <dt><code><bold> void insert_X(X x)</bold></code> * <dt><code><b>void insert_X(X x)</b></code>
* <dd> This method allows the insertion of * <dd> This method allows the insertion of
* an instance <code>x</code> of primitive type <code>X</code> * an instance <code>x</code> of primitive type <code>X</code>
* into the <code>value</code> field of the <code>Any</code> object. * into the <code>value</code> field of the <code>Any</code> object.
* Note that the method * Note that the method
* <code>insert_X</code> also resets the <code>Any</code> object's * <code>insert_X</code> also resets the <code>Any</code> object's
* <code>type</code> field if necessary. * <code>type</code> field if necessary.
* <dt> <code><bold>X extract_X()</bold></code> * <dt> <code><b>X extract_X()</b></code>
* <dd> This method allows the extraction of an instance of * <dd> This method allows the extraction of an instance of
* type <code>X</code> from the <code>Any</code> object. * type <code>X</code> from the <code>Any</code> object.
* <BR> * <BR>

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2000, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -40,10 +40,10 @@ package org.omg.CORBA;
* <P> * <P>
* The class also contains two methods: * The class also contains two methods:
* <UL> * <UL>
* <LI><code>public int <bold>value</bold>()</code> -- which accesses the * <LI><code>public int <b>value</b>()</code> -- which accesses the
* <code>value</code> field of a <code>CompletionStatus</code> object * <code>value</code> field of a <code>CompletionStatus</code> object
* <LI><code>public static CompletionStatus * <LI><code>public static CompletionStatus
* <bold>from_int</bold>(int i)</code> -- * <b>from_int</b>(int i)</code> --
* for creating an instance from one of the <code>int</code> members * for creating an instance from one of the <code>int</code> members
* </UL> * </UL>
* @see org.omg.CORBA.SystemException * @see org.omg.CORBA.SystemException

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -35,7 +35,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
{ {
/** Reads an IDL <code>Any</code> value from the input stream. /** Reads an IDL <code>Any</code> value from the input stream.
* @return the <code>Any</code> read. * @return the <code>Any</code> read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -43,7 +43,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL boolean value from the input stream. /** Reads an IDL boolean value from the input stream.
* @return the boolean read. * @return the boolean read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -51,7 +51,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL character value from the input stream. /** Reads an IDL character value from the input stream.
* @return the character read. * @return the character read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -59,7 +59,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL wide character value from the input stream. /** Reads an IDL wide character value from the input stream.
* @return the wide character read. * @return the wide character read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -67,7 +67,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL octet value from the input stream. /** Reads an IDL octet value from the input stream.
* @return the octet value read. * @return the octet value read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -75,7 +75,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL short from the input stream. /** Reads an IDL short from the input stream.
* @return the short read. * @return the short read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -83,7 +83,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL unsigned short from the input stream. /** Reads an IDL unsigned short from the input stream.
* @return the unsigned short read. * @return the unsigned short read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -91,7 +91,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL long from the input stream. /** Reads an IDL long from the input stream.
* @return the long read. * @return the long read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -99,7 +99,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL unsigned long from the input stream. /** Reads an IDL unsigned long from the input stream.
* @return the unsigned long read. * @return the unsigned long read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -107,7 +107,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL long long from the input stream. /** Reads an IDL long long from the input stream.
* @return the long long read. * @return the long long read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -115,7 +115,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an unsigned IDL long long from the input stream. /** Reads an unsigned IDL long long from the input stream.
* @return the unsigned long long read. * @return the unsigned long long read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -123,7 +123,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL float from the input stream. /** Reads an IDL float from the input stream.
* @return the float read. * @return the float read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -131,7 +131,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL double from the input stream. /** Reads an IDL double from the input stream.
* @return the double read. * @return the double read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -140,7 +140,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL string from the input stream. /** Reads an IDL string from the input stream.
* @return the string read. * @return the string read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -148,7 +148,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL wide string from the input stream. /** Reads an IDL wide string from the input stream.
* @return the wide string read. * @return the wide string read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -156,7 +156,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL CORBA::Object from the input stream. /** Reads an IDL CORBA::Object from the input stream.
* @return the CORBA::Object read. * @return the CORBA::Object read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -164,7 +164,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL Abstract interface from the input stream. /** Reads an IDL Abstract interface from the input stream.
* @return the Abstract interface read. * @return the Abstract interface read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -172,7 +172,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL value type from the input stream. /** Reads an IDL value type from the input stream.
* @return the value type read. * @return the value type read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -180,7 +180,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
/** Reads an IDL typecode from the input stream. /** Reads an IDL typecode from the input stream.
* @return the typecode read. * @return the typecode read.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -192,7 +192,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -204,7 +204,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -216,7 +216,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -228,7 +228,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -240,7 +240,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -252,7 +252,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -264,7 +264,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -276,7 +276,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -288,7 +288,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -300,7 +300,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -312,7 +312,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -324,7 +324,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */
@ -336,7 +336,7 @@ public interface DataInputStream extends org.omg.CORBA.portable.ValueBase
* @param offset The index into seq of the first element to read from the * @param offset The index into seq of the first element to read from the
* input stream. * input stream.
* @param length The number of elements to read from the input stream. * @param length The number of elements to read from the input stream.
* @throws <code>org.omg.CORBA.MARSHAL</code> * @throws org.omg.CORBA.MARSHAL
* If an inconsistency is detected, including not having registered * If an inconsistency is detected, including not having registered
* a streaming policy, then the standard system exception MARSHAL is raised. * a streaming policy, then the standard system exception MARSHAL is raised.
*/ */

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -71,7 +71,7 @@ public class LocalObject implements org.omg.CORBA.Object
* to attempt determination of whether two distinct object references * to attempt determination of whether two distinct object references
* refer to the same object, since such determination could be impractically * refer to the same object, since such determination could be impractically
* expensive. * expensive.
* <P>Default implementation of the org.omg.CORBA.Object method. <P> * <P>Default implementation of the org.omg.CORBA.Object method.
* *
* @param that the object reference with which to check for equivalence * @param that the object reference with which to check for equivalence
* @return <code>true</code> if this object reference is known to be * @return <code>true</code> if this object reference is known to be
@ -87,7 +87,7 @@ public class LocalObject implements org.omg.CORBA.Object
/** /**
* Always returns <code>false</code>. * Always returns <code>false</code>.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* *
* @return <code>false</code> * @return <code>false</code>
*/ */
@ -99,7 +99,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Returns a hash value that is consistent for the * Returns a hash value that is consistent for the
* lifetime of the object, using the given number as the maximum. * lifetime of the object, using the given number as the maximum.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @param maximum an <code>int</code> identifying maximum value of * @param maximum an <code>int</code> identifying maximum value of
* the hashcode * the hashcode
* @return this instance's hashcode * @return this instance's hashcode
@ -113,7 +114,7 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." This method * the message "This is a locally constrained object." This method
* does not apply to local objects and is therefore not implemented. * does not apply to local objects and is therefore not implemented.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* *
* @param repository_id a <code>String</code> * @param repository_id a <code>String</code>
* @return NO_IMPLEMENT because this is a locally constrained object * @return NO_IMPLEMENT because this is a locally constrained object
@ -131,7 +132,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @return a duplicate of this <code>LocalObject</code> instance. * @return a duplicate of this <code>LocalObject</code> instance.
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
@ -145,7 +147,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
@ -158,7 +161,7 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* *
* @param operation a <code>String</code> giving the name of an operation * @param operation a <code>String</code> giving the name of an operation
* to be performed by the request that is returned * to be performed by the request that is returned
@ -175,7 +178,7 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* *
* @param ctx a <code>Context</code> object containing * @param ctx a <code>Context</code> object containing
* a list of properties * a list of properties
@ -202,7 +205,7 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* *
* @param ctx a <code>Context</code> object containing * @param ctx a <code>Context</code> object containing
* a list of properties * a list of properties
@ -237,7 +240,8 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." This method * the message "This is a locally constrained object." This method
* does not apply to local objects and is therefore not implemented. * does not apply to local objects and is therefore not implemented.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @return NO_IMPLEMENT because this is a locally constrained object * @return NO_IMPLEMENT because this is a locally constrained object
* and this method does not apply to local objects * and this method does not apply to local objects
* @exception NO_IMPLEMENT because this is a locally constrained object * @exception NO_IMPLEMENT because this is a locally constrained object
@ -254,7 +258,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
@ -275,7 +280,7 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
* @return the ORB instance that created the Delegate contained in this * @return the ORB instance that created the Delegate contained in this
* <code>ObjectImpl</code> * <code>ObjectImpl</code>
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
@ -291,7 +296,8 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." This method * the message "This is a locally constrained object." This method
* does not apply to local objects and is therefore not implemented. * does not apply to local objects and is therefore not implemented.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @param policy_type an <code>int</code> * @param policy_type an <code>int</code>
* @return NO_IMPLEMENT because this is a locally constrained object * @return NO_IMPLEMENT because this is a locally constrained object
* and this method does not apply to local objects * and this method does not apply to local objects
@ -310,7 +316,8 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." This method * the message "This is a locally constrained object." This method
* does not apply to local objects and is therefore not implemented. * does not apply to local objects and is therefore not implemented.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
@ -347,7 +354,8 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.<P>
* Returns <code>true</code> for this <code>LocalObject</code> instance.<P> * Returns <code>true</code> for this <code>LocalObject</code> instance.
*
* @return <code>true</code> always * @return <code>true</code> always
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
@ -361,7 +369,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @param operation a <code>String</code> indicating which operation * @param operation a <code>String</code> indicating which operation
* to preinvoke * to preinvoke
* @param expectedType the class of the type of operation mentioned above * @param expectedType the class of the type of operation mentioned above
@ -381,7 +390,8 @@ public class LocalObject implements org.omg.CORBA.Object
* Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
* the message "This is a locally constrained object." * the message "This is a locally constrained object."
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @param servant the servant object on which to post-invoke * @param servant the servant object on which to post-invoke
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
@ -403,8 +413,8 @@ public class LocalObject implements org.omg.CORBA.Object
* <code>org.omg.CORBA.Object</code> method. * <code>org.omg.CORBA.Object</code> method.
* <P>Called by a stub to obtain an OutputStream for * <P>Called by a stub to obtain an OutputStream for
* marshaling arguments. The stub must supply the operation name, * marshaling arguments. The stub must supply the operation name,
* and indicate if a response is expected (i.e is this a oneway * and indicate if a response is expected (i.e is this a oneway call).
* call).<P> *
* @param operation the name of the operation being requested * @param operation the name of the operation being requested
* @param responseExpected <code>true</code> if a response is expected, * @param responseExpected <code>true</code> if a response is expected,
* <code>false</code> if it is a one-way call * <code>false</code> if it is a one-way call
@ -433,7 +443,8 @@ public class LocalObject implements org.omg.CORBA.Object
* marshaled reply. If an exception occurs, <code>_invoke</code> may throw an * marshaled reply. If an exception occurs, <code>_invoke</code> may throw an
* <code>ApplicationException</code> object which contains an * <code>ApplicationException</code> object which contains an
* <code>InputStream</code> from * <code>InputStream</code> from
* which the user exception state may be unmarshaled.<P> * which the user exception state may be unmarshaled.
*
* @param output the <code>OutputStream</code> to invoke * @param output the <code>OutputStream</code> to invoke
* @return NO_IMPLEMENT because this is a locally constrained object * @return NO_IMPLEMENT because this is a locally constrained object
* and this method does not apply to local objects * and this method does not apply to local objects
@ -470,7 +481,8 @@ public class LocalObject implements org.omg.CORBA.Object
* <code>ApplicationException.getInputStream()</code>. * <code>ApplicationException.getInputStream()</code>.
* A null * A null
* value may also be passed to <code>_releaseReply</code>, in which case the * value may also be passed to <code>_releaseReply</code>, in which case the
* method is a no-op.<P> * method is a no-op.
*
* @param input the reply stream back to the ORB or null * @param input the reply stream back to the ORB or null
* @exception NO_IMPLEMENT * @exception NO_IMPLEMENT
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
@ -485,7 +497,8 @@ public class LocalObject implements org.omg.CORBA.Object
* the message "This is a locally constrained object." This method * the message "This is a locally constrained object." This method
* does not apply to local objects and is therefore not implemented. * does not apply to local objects and is therefore not implemented.
* This method is the default implementation of the * This method is the default implementation of the
* <code>org.omg.CORBA.Object</code> method.<P> * <code>org.omg.CORBA.Object</code> method.
*
* @return NO_IMPLEMENT because this is a locally constrained object * @return NO_IMPLEMENT because this is a locally constrained object
* and this method does not apply to local objects * and this method does not apply to local objects
* @exception NO_IMPLEMENT because this is a locally constrained object * @exception NO_IMPLEMENT because this is a locally constrained object

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2000, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -63,7 +63,6 @@ package org.omg.CORBA;
* Note also that you can add any number of * Note also that you can add any number of
* <code>NamedValue</code> objects to this list regardless of * <code>NamedValue</code> objects to this list regardless of
* its original length. * its original length.
* <P>
* <LI><code>org.omg.CORBA.ORB.create_operation_list</code> * <LI><code>org.omg.CORBA.ORB.create_operation_list</code>
* <PRE> * <PRE>
* org.omg.CORBA.NVList nv = orb.create_operation_list(myOperationDef); * org.omg.CORBA.NVList nv = orb.create_operation_list(myOperationDef);

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -101,7 +101,7 @@ import sun.reflect.misc.ReflectUtil;
* <P> * <P>
* When an ORB instance is being created, the class name of the ORB * When an ORB instance is being created, the class name of the ORB
* implementation is located using * implementation is located using
* the following standard search order:<P> * the following standard search order:
* *
* <OL> * <OL>
* <LI>check in Applet parameter or application string array, if any * <LI>check in Applet parameter or application string array, if any
@ -1036,7 +1036,7 @@ abstract public class ORB {
* <P> * <P>
* Recursive types can only appear within sequences which can be empty. * Recursive types can only appear within sequences which can be empty.
* That way marshaling problems, when transmitting the struct in an Any, are avoided. * That way marshaling problems, when transmitting the struct in an Any, are avoided.
* <P> *
* @param id the logical id of the referenced type * @param id the logical id of the referenced type
* @return the requested TypeCode * @return the requested TypeCode
*/ */
@ -1179,7 +1179,7 @@ abstract public class ORB {
* value <tt>true</tt>. If no information for the requested * value <tt>true</tt>. If no information for the requested
* services type is available, the operation returns <tt>false</tt> * services type is available, the operation returns <tt>false</tt>
* (i.e., the service is not supported by this ORB). * (i.e., the service is not supported by this ORB).
* <P> *
* @param service_type a <code>short</code> indicating the * @param service_type a <code>short</code> indicating the
* service type for which information is being requested * service type for which information is being requested
* @param service_info a <code>ServiceInformationHolder</code> object * @param service_info a <code>ServiceInformationHolder</code> object
@ -1203,7 +1203,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynAny</code> object from the given * Creates a new <code>DynAny</code> object from the given
* <code>Any</code> object. * <code>Any</code> object.
* <P> *
* @param value the <code>Any</code> object from which to create a new * @param value the <code>Any</code> object from which to create a new
* <code>DynAny</code> object * <code>DynAny</code> object
* @return the new <code>DynAny</code> object created from the given * @return the new <code>DynAny</code> object created from the given
@ -1221,7 +1221,7 @@ abstract public class ORB {
/** /**
* Creates a basic <code>DynAny</code> object from the given * Creates a basic <code>DynAny</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynAny</code> object * <code>DynAny</code> object
* @return the new <code>DynAny</code> object created from the given * @return the new <code>DynAny</code> object created from the given
@ -1241,7 +1241,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynStruct</code> object from the given * Creates a new <code>DynStruct</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynStruct</code> object * <code>DynStruct</code> object
* @return the new <code>DynStruct</code> object created from the given * @return the new <code>DynStruct</code> object created from the given
@ -1261,7 +1261,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynSequence</code> object from the given * Creates a new <code>DynSequence</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynSequence</code> object * <code>DynSequence</code> object
* @return the new <code>DynSequence</code> object created from the given * @return the new <code>DynSequence</code> object created from the given
@ -1282,7 +1282,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynArray</code> object from the given * Creates a new <code>DynArray</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynArray</code> object * <code>DynArray</code> object
* @return the new <code>DynArray</code> object created from the given * @return the new <code>DynArray</code> object created from the given
@ -1302,7 +1302,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynUnion</code> object from the given * Creates a new <code>DynUnion</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynUnion</code> object * <code>DynUnion</code> object
* @return the new <code>DynUnion</code> object created from the given * @return the new <code>DynUnion</code> object created from the given
@ -1322,7 +1322,7 @@ abstract public class ORB {
/** /**
* Creates a new <code>DynEnum</code> object from the given * Creates a new <code>DynEnum</code> object from the given
* <code>TypeCode</code> object. * <code>TypeCode</code> object.
* <P> *
* @param type the <code>TypeCode</code> object from which to create a new * @param type the <code>TypeCode</code> object from which to create a new
* <code>DynEnum</code> object * <code>DynEnum</code> object
* @return the new <code>DynEnum</code> object created from the given * @return the new <code>DynEnum</code> object created from the given

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1995, 1999, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -53,7 +53,7 @@ package org.omg.CORBA;
* <code>org.omg.CORBA.Object</code> * <code>org.omg.CORBA.Object</code>
* are provided in the class <code>org.omg.CORBA.portable.ObjectImpl</code>, * are provided in the class <code>org.omg.CORBA.portable.ObjectImpl</code>,
* which is the base class for stubs and object implementations. * which is the base class for stubs and object implementations.
* <p> *
* @see org.omg.CORBA.portable.ObjectImpl * @see org.omg.CORBA.portable.ObjectImpl
*/ */

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -31,7 +31,7 @@ package org.omg.CORBA;
* the client, for access control * the client, for access control
* and other purposes. It contains a single attribute, the name of the * and other purposes. It contains a single attribute, the name of the
* <code>Principal</code>, encoded as a sequence of bytes. * <code>Principal</code>, encoded as a sequence of bytes.
* <P> *
* @deprecated Deprecated by CORBA 2.2. * @deprecated Deprecated by CORBA 2.2.
*/ */
@Deprecated @Deprecated

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -57,7 +57,7 @@ package org.omg.CORBA;
* Similarly, type information needs to be provided for the response, * Similarly, type information needs to be provided for the response,
* for either the expected result or for an exception, so the methods * for either the expected result or for an exception, so the methods
* <code>result</code> and <code>except</code> take an <code>Any</code> * <code>result</code> and <code>except</code> take an <code>Any</code>
* object as a parameter. <p> * object as a parameter.
* *
* @see org.omg.CORBA.DynamicImplementation * @see org.omg.CORBA.DynamicImplementation
* @see org.omg.CORBA.NVList * @see org.omg.CORBA.NVList

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1995, 2001, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -32,8 +32,8 @@ import org.omg.CORBA.portable.OutputStream;
/** /**
* The Holder for <tt>Short</tt>. For more information on * The Holder for <tt>Short</tt>. For more information on
* Holder files, see <a href="doc-files/generatedfiles.html#holder"> * Holder files, see <a href="doc-files/generatedfiles.html#holder">
* "Generated Files: Holder Files"</a>.<P * "Generated Files: Holder Files"</a>.
* A Holder class for a <code>short</code> * <P>A Holder class for a <code>short</code>
* that is used to store "out" and "inout" parameters in IDL operations. * that is used to store "out" and "inout" parameters in IDL operations.
* If an IDL operation signature has an IDL <code>short</code> as an "out" * If an IDL operation signature has an IDL <code>short</code> as an "out"
* or "inout" parameter, the programmer must pass an instance of * or "inout" parameter, the programmer must pass an instance of

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -52,7 +52,7 @@ package org.omg.CORBA;
* The variable <code>k</code> represents the <code>TCKind</code> * The variable <code>k</code> represents the <code>TCKind</code>
* instance for the IDL type <code>string</code>, which is * instance for the IDL type <code>string</code>, which is
* <code>tk_string</code>. * <code>tk_string</code>.
* <P> *
* <LI>the method <code>value</code> for accessing the * <LI>the method <code>value</code> for accessing the
* <code>_value</code> field of a <code>TCKind</code> constant * <code>_value</code> field of a <code>TCKind</code> constant
* <P>Example: * <P>Example:

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -59,7 +59,7 @@ import org.omg.CORBA.portable.IDLEntity;
* with the value * with the value
* <code>TCKind.tk_sequence</code> and also fields with the values * <code>TCKind.tk_sequence</code> and also fields with the values
* <code>boolean</code> and <code>10</code> for the * <code>boolean</code> and <code>10</code> for the
* type of sequence elements and the length of the sequence. <p> * type of sequence elements and the length of the sequence.
* </UL> * </UL>
* *
* <code>TypeCode</code> objects can be obtained in various ways: * <code>TypeCode</code> objects can be obtained in various ways:
@ -164,8 +164,7 @@ import org.omg.CORBA.portable.IDLEntity;
* *
* Java IDL extends the CORBA specification to allow all operations permitted * Java IDL extends the CORBA specification to allow all operations permitted
* on a <code>struct</code> <code>TypeCode</code> to be permitted * on a <code>struct</code> <code>TypeCode</code> to be permitted
* on an <code>exception</code> <code>TypeCode</code> as well. <p> * on an <code>exception</code> <code>TypeCode</code> as well.
*
*/ */
public abstract class TypeCode implements IDLEntity { public abstract class TypeCode implements IDLEntity {
@ -179,13 +178,11 @@ public abstract class TypeCode implements IDLEntity {
* @return <code>true</code> if the type codes are equal; * @return <code>true</code> if the type codes are equal;
* <code>false</code> otherwise * <code>false</code> otherwise
*/ */
public abstract boolean equal(TypeCode tc); public abstract boolean equal(TypeCode tc);
/** /**
* Tests to see if the given <code>TypeCode</code> object is * Tests to see if the given <code>TypeCode</code> object is
* equivalent to this <code>TypeCode</code> object. * equivalent to this <code>TypeCode</code> object.
* <P>
* *
* *
* @param tc the typecode to compare with this typecode * @param tc the typecode to compare with this typecode
@ -220,7 +217,6 @@ public abstract class TypeCode implements IDLEntity {
* value of the <code>kind</code> field of this * value of the <code>kind</code> field of this
* <code>TypeCode</code> object * <code>TypeCode</code> object
*/ */
public abstract TCKind kind(); public abstract TCKind kind();
/** /**
@ -245,7 +241,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of<code>TypeCode</code> * is invoked on an inappropriate kind of<code>TypeCode</code>
* object * object
*/ */
public abstract String id() throws BadKind; public abstract String id() throws BadKind;
/** /**
@ -268,7 +263,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of<code>TypeCode</code> * is invoked on an inappropriate kind of<code>TypeCode</code>
* object * object
*/ */
public abstract String name() throws BadKind; public abstract String name() throws BadKind;
/** /**
@ -287,7 +281,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of <code>TypeCode</code> * is invoked on an inappropriate kind of <code>TypeCode</code>
* object * object
*/ */
public abstract int member_count() throws BadKind; public abstract int member_count() throws BadKind;
/** /**
@ -312,7 +305,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of <code>TypeCode</code> * is invoked on an inappropriate kind of <code>TypeCode</code>
* object * object
*/ */
public abstract String member_name(int index) public abstract String member_name(int index)
throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds; throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds;
@ -336,7 +328,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of <code>TypeCode</code> * is invoked on an inappropriate kind of <code>TypeCode</code>
* object * object
*/ */
public abstract TypeCode member_type(int index) public abstract TypeCode member_type(int index)
throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds; throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds;
@ -360,7 +351,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on a non-union <code>TypeCode</code> * is invoked on a non-union <code>TypeCode</code>
* object * object
*/ */
public abstract Any member_label(int index) public abstract Any member_label(int index)
throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds; throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds;
@ -376,7 +366,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on a non-union <code>TypeCode</code> * is invoked on a non-union <code>TypeCode</code>
* object * object
*/ */
public abstract TypeCode discriminator_type() public abstract TypeCode discriminator_type()
throws BadKind; throws BadKind;
@ -393,7 +382,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on a non-union <code>TypeCode</code> * is invoked on a non-union <code>TypeCode</code>
* object * object
*/ */
public abstract int default_index() throws BadKind; public abstract int default_index() throws BadKind;
/** /**
@ -412,7 +400,6 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of <code>TypeCode</code> * is invoked on an inappropriate kind of <code>TypeCode</code>
* object * object
*/ */
public abstract int length() throws BadKind; public abstract int length() throws BadKind;
/** /**
@ -436,14 +423,13 @@ public abstract class TypeCode implements IDLEntity {
* is invoked on an inappropriate kind of <code>TypeCode</code> * is invoked on an inappropriate kind of <code>TypeCode</code>
* object * object
*/ */
public abstract TypeCode content_type() throws BadKind; public abstract TypeCode content_type() throws BadKind;
/** /**
* Returns the number of digits in the fixed type described by this * Returns the number of digits in the fixed type described by this
* <code>TypeCode</code> object. For example, the typecode for * <code>TypeCode</code> object. For example, the typecode for
* the number 3000.275d could be <code>fixed<7,3></code>, where * the number 3000.275d could be <code>fixed&lt;7,3&gt;</code>, where
* 7 is the precision and 3 is the scale. * 7 is the precision and 3 is the scale.
* *
* @return the total number of digits * @return the total number of digits
@ -459,10 +445,10 @@ public abstract class TypeCode implements IDLEntity {
* <code>TypeCode</code> object. A positive number indicates the * <code>TypeCode</code> object. A positive number indicates the
* number of digits to the right of the decimal point. * number of digits to the right of the decimal point.
* For example, the number 3000d could have the * For example, the number 3000d could have the
* typecode <code>fixed<4,0></code>, where the first number is * typecode <code>fixed&lt;4,0&gt;</code>, where the first number is
* the precision and the second number is the scale. * the precision and the second number is the scale.
* A negative number is also possible and adds zeroes to the * A negative number is also possible and adds zeroes to the
* left of the decimal point. In this case, <code>fixed<1,-3></code>, * left of the decimal point. In this case, <code>fixed&lt;1,-3&gt;</code>,
* could be the typecode for the number 3000d. * could be the typecode for the number 3000d.
* *
* @return the scale of the fixed type that this * @return the scale of the fixed type that this
@ -492,7 +478,6 @@ public abstract class TypeCode implements IDLEntity {
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
*/ */
abstract public short member_visibility(int index) abstract public short member_visibility(int index)
throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds ; throws BadKind, org.omg.CORBA.TypeCodePackage.Bounds ;
@ -512,7 +497,6 @@ public abstract class TypeCode implements IDLEntity {
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
*/ */
abstract public short type_modifier() throws BadKind ; abstract public short type_modifier() throws BadKind ;
/** /**
@ -528,6 +512,5 @@ public abstract class TypeCode implements IDLEntity {
* @see <a href="package-summary.html#unimpl"><code>CORBA</code> package * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
* comments for unimplemented features</a> * comments for unimplemented features</a>
*/ */
abstract public TypeCode concrete_base_type() throws BadKind ; abstract public TypeCode concrete_base_type() throws BadKind ;
} }

View file

@ -55,44 +55,30 @@ file.</li>
<li> <li>
CORBA 2.3.1 chapter 4 with the following replacements from the Portable CORBA 2.3.1 chapter 4 with the following replacements from the Portable
Interceptors specification:</li> Interceptors specification:
<ul> <ul>
<li> <li>section 4.2.3.5 <TT>destroy</TT></li>
section 4.2.3.5 <TT>destroy</TT></li> <li>section 4.5.2 <TT>CodeFactory</TT> and <TT>PICurrent</TT> are required</li>
<li>Section 4.5.3.4 as updated for <TT>register_initial_reference</TT></li>
<li>
section 4.5.2 <TT>CodeFactory</TT> and <TT>PICurrent</TT> are required</li>
<li>
Section 4.5.3.4 as updated for <TT>register_initial_reference</TT></li>
</ul> </ul>
</li>
<li> <li>
CORBA 2.3.1 chapter 5 with the following update from the Portable Interceptors CORBA 2.3.1 chapter 5 with the following update from the Portable Interceptors
specification:</li> specification:
<ul> <ul>
<li> <li>
5.5.2 <TT>StringSeq</TT> and <TT>WStringSeq</TT> are required. This adds the 5.5.2 <TT>StringSeq</TT> and <TT>WStringSeq</TT> are required.
following This adds the following classes to <TT>org.omg.CORBA</TT>:
classes
to <TT>org.omg.CORBA</TT>:</li>
<ul> <ul>
<li> <li><TT>StringSeqHolder</TT></li>
<TT>StringSeqHolder</TT></li> <li><TT>StringSeqHelper</TT></li>
<li><TT>WStringSeqHolder</TT></li>
<li> <li><TT>WStringSeqHelper</TT></li>
<TT>StringSeqHelper</TT></li>
<li>
<TT>WStringSeqHolder</TT></li>
<li>
<TT>WStringSeqHelper</TT></li>
</ul> </ul>
</li>
</ul> </ul>
</li>
<li> <li>
CORBA 2.3.1 sections 10.6.1 and 10.6.2 are supported for repository IDs.</li> CORBA 2.3.1 sections 10.6.1 and 10.6.2 are supported for repository IDs.</li>
@ -101,18 +87,13 @@ CORBA 2.3.1 sections 10.6.1 and 10.6.2 are supported for repository IDs.</li>
CORBA 2.3.1 section 10.7 for <TT>TypeCode</TT> APIs.</li> CORBA 2.3.1 section 10.7 for <TT>TypeCode</TT> APIs.</li>
<li> <li>
CORBA 2.3.1 chapter 11, Portable Object Adapter (POA), with the following updates from the Portable Interceptors specification:</li> CORBA 2.3.1 chapter 11, Portable Object Adapter (POA), with the following updates from the Portable Interceptors specification:
<ul> <ul>
<li> <li>Section 11.3.7 POAs must preserve all policies</li>
Section 11.3.7 POAs must preserve all policies</li> <li>Section 11.3.8.2 again states that POAs must preserve all policies</li>
<li>Section 11.3.8.26 <tt>POA::id</tt> is required.</li>
<li>
Section 11.3.8.2 again states that POAs must preserve all policies</li>
<li>
Section 11.3.8.26 <tt>POA::id</tt> is required.</li>
</ul> </ul>
</li>
<li> <li>
CORBA 2.3.1 chapters 13 and 15 define GIOP 1.0, 1.1, and 1.2. The Java SE 6 CORBA 2.3.1 chapters 13 and 15 define GIOP 1.0, 1.1, and 1.2. The Java SE 6
@ -124,8 +105,7 @@ All of the Interoperable Naming Service is supported.</li>
<li> <li>
Portable Interceptors section 13.8 (the new <TT>Coder</TT>/<TT>Decoder</TT> interfaces) Portable Interceptors section 13.8 (the new <TT>Coder</TT>/<TT>Decoder</TT> interfaces)
and and all of chapter 21 (the interceptor specification).</li>
all of chapter 21 (the interceptor specification).</li>
<li>Section 1.21.8 of the Revised IDL to Java Language Mapping Specification (ptc/00-11-03) <li>Section 1.21.8 of the Revised IDL to Java Language Mapping Specification (ptc/00-11-03)
has been changed from the version in the IDL to Java Language Mapping Specification (ptc/00-01-08).</li> has been changed from the version in the IDL to Java Language Mapping Specification (ptc/00-01-08).</li>
@ -135,40 +115,24 @@ has been changed from the version in the IDL to Java Language Mapping Specifica
Tools</h2> Tools</h2>
<ul> <ul>
<li> <li>The IDL to Java compiler (<TT>idlj</TT>) complies with:
The IDL to Java compiler (<TT>idlj</TT>) complies with:</li>
<ul> <ul>
<li> <li>CORBA 2.3.1 chapter 3 (IDL definition)</li>
CORBA 2.3.1 chapter 3 (IDL definition)</li> <li>CORBA 2.3.1 chapters 5 and 6 (semantics of Value types)</li>
<li>CORBA 2.3.1 section 10.6.5 (pragmas)</li>
<li> <li>The IDL to Java mapping specification</li>
CORBA 2.3.1 chapters 5 and 6 (semantics of Value types)</li> <li>The Revised IDL to Java language mapping specification section 1.12.1 "local interfaces"</li>
<li>
CORBA 2.3.1 section 10.6.5 (pragmas)</li>
<li>
The IDL to Java mapping specification</li>
<li>
The Revised IDL to Java language mapping specification section 1.12.1 "local interfaces"</li>
</ul> </ul>
</li>
<li> <li>The Java to IDL compiler (the IIOP backend for <tt>rmic</tt>) complies with:
The Java to IDL compiler (the IIOP backend for <tt>rmic</tt>) complies with:</li>
<ul> <ul>
<li> <li>CORBA 2.3.1 chapters 5 and 6 (value types)</li>
CORBA 2.3.1 chapters 5 and 6 (value types)</li> <li>The Java to IDL language mapping. Note that this implicitly references
<li>
The Java to IDL language mapping. Note that this implicitly references
section 1.21 of the IDL to Java language mapping</li> section 1.21 of the IDL to Java language mapping</li>
<li>IDL generated by the <tt>-idl</tt> flag complies with CORBA 2.3.1 chapter 3.</li>
<li>
IDL generated by the <tt>-idl</tt> flag complies with CORBA 2.3.1 chapter 3.</li>
</ul> </ul>
</li>
</ul> </ul>
</body> </body>

View file

@ -8,65 +8,101 @@
<H1>IDL-to-Java Generated Files</H1> <H1>IDL-to-Java Generated Files</H1>
<P>The files that are generated by the IDL-to-Java compiler, in accordance with the <em><a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-08">IDL-to-Java Language Mapping Specification</a></em>, which is implemented in Java<sup><font size="-2">TM</font></sup> SE 6 according the <a href="compliance.html">compliance</a> document. <P>The files that are generated by the IDL-to-Java compiler, in accordance with
the <em><a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-08">IDL-to-Java Language Mapping Specification</a></em>,
which is implemented in Java<sup><font size="-2">TM</font></sup> SE 6
according the <a href="compliance.html">compliance</a> document.
<P>In general IDL names and identifiers are mapped to Java names and identifiers with no change. Because of the nature of the Java language, a single IDL construct may be mapped to several (differently named) Java constructs. The additional names are constructed by appending a descriptive suffix. For example, the IDL interface <tt>foo</tt> is mapped to the Java interfaces <tt>foo</tt> and <tt>fooOperations</tt>, and additional Java classes <tt>fooHelper</tt>, <tt>fooHolder</tt>, <tt>fooPOA</tt>, and optionally <tt>fooPOATie</tt>. <P>In general IDL names and identifiers are mapped to Java names
and identifiers with no change. Because of the nature of the Java language,
a single IDL construct may be mapped to several (differently named) Java constructs.
The additional names are constructed by appending a descriptive suffix.
For example, the IDL interface <tt>foo</tt> is mapped to the Java
interfaces <tt>foo</tt> and <tt>fooOperations</tt>, and additional
Java classes <tt>fooHelper</tt>, <tt>fooHolder</tt>, <tt>fooPOA</tt>,
and optionally <tt>fooPOATie</tt>.
<P>The mapping in effect reserves the use of several names for its own purposes. These are: <P>The mapping in effect reserves the use of several names for its own purposes. These are:
<P>
<UL> <UL>
<LI>The Java class <tt><a href="#helper">&lt;type&gt;Helper</tt></a>, where <tt>&lt;type&gt;</tt> is the name of an IDL defined type. <LI>The Java class <a href="#helper"><tt>&lt;type&gt;Helper</tt></a>, where <tt>&lt;type&gt;</tt> is the name of an IDL defined type.
<LI>The Java class <tt><a href="#holder">&lt;type&gt;Holder</tt></a>, where <tt>&lt;type&gt;</tt> is the name of an IDL defined type (with certain exceptions such as <tt>typedef</tt> aliases). <LI>The Java class <a href="#holder"><tt>&lt;type&gt;Holder</tt></a>, where <tt>&lt;type&gt;</tt>
<LI>The Java classes <tt>&lt;basicJavaType&gt;Holder</tt>, where <tt>&lt;basicJavaType&gt;</tt> is one of the Java primitive datatypes that is used by one of the IDL basic datatypes. is the name of an IDL defined type (with certain exceptions such as <tt>typedef</tt> aliases).
<LI>The Java classes <tt><a href="#operations">&lt;interface&gt;Operations</tt></a>, <tt>&lt;interface&gt;POA</tt>, and <tt>&lt;interface&gt;POATie</tt>, where <tt>&lt;interface&gt;</tt> is the name of an IDL interface type. <LI>The Java classes <tt>&lt;basicJavaType&gt;Holder</tt>, where <tt>&lt;basicJavaType&gt;</tt>
<LI>The nested scope Java package name <tt>&lt;interface&gt;Package</tt>, where <tt>&lt;interface&gt;</tt> is the name of an IDL interface. is one of the Java primitive datatypes that is used by one of the IDL basic datatypes.
<LI>The Java classes <a href="#operations"><tt>&lt;interface&gt;Operations</tt></a>, <tt>&lt;interface&gt;POA</tt>,
and <tt>&lt;interface&gt;POATie</tt>, where <tt>&lt;interface&gt;</tt> is the name of an IDL interface type.
<LI>The nested scope Java package name <tt>&lt;interface&gt;Package</tt>, where <tt>&lt;interface&gt;</tt>
is the name of an IDL interface.
</UL>
<a name="helper"> <H2><a name="helper">Helper Files</a></H2>
<H2>Helper Files</H2></a>
<P>
Helper files supply several static methods needed to manipulate the type. These include <tt>Any</tt> insert and extract operations for the type, getting the repository id, getting the typecode, and reading and writing the type from and to a stream.
<P>The helper class for a mapped IDL interface or abstract interface also include narrow operation(s). The static narrow method allows an <tt>org.omg.CORBA.Object</tt> to be narrowed to the object reference of a more specific type. The IDL exception <tt>CORBA::BAD_PARAM</tt> is thrown if the narrow fails because the object reference does not support the requested type. A different system exception is raised to indicate other kinds of errors. Trying to narrow a null will always succeed with a return value of null. <P>Helper files supply several static methods needed to manipulate the type.
These include <tt>Any</tt> insert and extract operations for the type,
getting the repository id, getting the typecode, and reading
and writing the type from and to a stream.
<P>The helper class for a mapped IDL interface or abstract interface also
include narrow operation(s). The static narrow method allows an <tt>org.omg.CORBA.Object</tt>
to be narrowed to the object reference of a more specific type.
The IDL exception <tt>CORBA::BAD_PARAM</tt> is thrown if the narrow fails because
the object reference does not support the requested type. A different system exception
is raised to indicate other kinds of errors. Trying to narrow a null will always succeed with a return value of null.
<H2><a name="holder">Holder Files</a></H2>
<P>Support for out and inout parameter passing modes requires the use of additional holder classes.
These classes are available for all of the basic IDL datatypes in the <tt>org.omg.CORBA</tt> package
and are generated for all named user defined IDL types except those defined by typedefs.
(Note that in this context user defined includes types that are defined in OMG specifications
such as those for the Interface Repository, and other OMG services.)
<P>Each holder class has a constructor from an instance, a default constructor, and has
a public instance member, <tt>value</tt> which is the typed value. The default constructor
sets the value field to the default value for the type as defined by the Java language:
false for boolean, 0 for numeric and char types, null for strings, null for object references.
<P>To support portable stubs and skeletons, holder classes also implement
the <tt>org.omg.CORBA.portable.Streamable</tt> interface.
<H2><a name="operations">Operations Files</a></H2>
<P> <P>A non abstract IDL interface is mapped to two public Java interfaces:
a <em>signature</em> interface and an <em>operations</em> interface.
The signature interface, which extends <tt>IDLEntity</tt>, has the same
name as the IDL interface name and is used as the signature type in method declarations
when interfaces of the specified type are used in other interfaces.
The operations interface has the same name as the IDL interface with the suffix <tt>Operations</tt>
appended to the end and is used in the server-side mapping and as a mechanism
for providing optimized calls for collocated client and servers.
<P>The Java operations interface contains the mapped operation signatures.
The Java signature interface extends the operations interface,
the (mapped) base <tt>org.omg.CORBA.Object</tt>, as well as <tt>org.omg.portable.IDLEntity</tt>.
Methods can be invoked on the signature interface. Interface inheritance
expressed in IDL is reflected in both the Java signature interface and operations interface hierarchies.
<a name="holder"> <H2><a name="stub">Stubs</a></H2>
<H2>Holder Files</H2></a>
<P>
Support for out and inout parameter passing modes requires the use of additional holder classes. These classes are available for all of the basic IDL datatypes in the <tt>org.omg.CORBA</tt> package and are generated for all named user defined IDL types except those defined by typedefs. (Note that in this context user defined includes types that are defined in OMG specifications such as those for the Interface Repository, and other OMG services.)
<P>For the mapping of a non-object-oriented language, there will be
<P>Each holder class has a constructor from an instance, a default constructor, and has a public instance member, <tt>value</tt> which is the typed value. The default constructor sets the value field to the default value for the type as defined by the Java language: false for boolean, 0 for numeric and char types, null for strings, null for object references. a programming interface to the stubs for each interface type. Generally, the stubs
will present access to the OMG IDL-defined operations on an object in a way that is easy
<P>To support portable stubs and skeletons, holder classes also implement the <tt>org.omg.CORBA.portable.Streamable</tt> interface. for programmers to predict once they are familiar with OMG IDL and the language mapping
for the particular programming language. The stubs make calls on the rest of the ORB
using interfaces that are private to, and presumably optimized for, the particular ORB Core.
<a name="operations"> If more than one ORB is available, there may be different stubs corresponding to the different ORBs.
<H2>Operations Files</H2></a> In this case, it is necessary for the ORB and language mapping to cooperate to associate
<P> the correct stubs with the particular object reference.
A non abstract IDL interface is mapped to two public Java interfaces: a <em>signature</em> interface and an <em>operations</em> interface. The signature interface, which extends <tt>IDLEntity</tt>, has the same name as the IDL interface name and is used as the signature type in method declarations when interfaces of the specified type are used in other interfaces. The operations interface has the same name as the IDL interface with the suffix <tt>Operations</tt> appended to the end and is used in the server-side mapping and as a mechanism for providing optimized calls for collocated client and servers.
<P>The Java operations interface contains the mapped operation signatures. The Java signature interface extends the operations interface, the (mapped) base <tt>org.omg.CORBA.Object</tt>, as well as <tt>org.omg.portable.IDLEntity</tt>. Methods can be invoked on the signature interface. Interface inheritance expressed in IDL is reflected in both the Java signature interface and operations interface hierarchies.
<a name="stub">
<H2>Stubs</H2></a>
<P>For the mapping of a non-object-oriented language, there will be a programming interface to the stubs for each interface type. Generally, the stubs will present access to the OMG IDL-defined operations on an object in a way that is easy for programmers to predict once they are familiar with OMG IDL and the language mapping for the particular programming language. The stubs make calls on the rest of the ORB using interfaces that are private to, and presumably optimized for, the particular ORB Core. If more than one ORB is available, there may be different stubs corresponding to the different ORBs. In this case, it is necessary for the ORB and language mapping to cooperate to associate the correct stubs with the particular object reference.
<P>Object-oriented programming languages, such as Java, C++, and Smalltalk, do not require stub interfaces. <P>Object-oriented programming languages, such as Java, C++, and Smalltalk, do not require stub interfaces.
<P><P><BR><BR>
<BR><BR>
</body> </body>
</html> </html>

View file

@ -6,7 +6,7 @@
<TITLE>package</TITLE> <TITLE>package</TITLE>
<!-- <!--
/* /*
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -73,7 +73,6 @@ a holder class.
<TT>ORB</TT> Methods</H3> <TT>ORB</TT> Methods</H3>
<P>Before an application can enter the CORBA environment, it must first: <P>Before an application can enter the CORBA environment, it must first:
<P>
<UL> <UL>
<LI>Be initialized into the ORB and possibly the object adapter (POA) environments. <LI>Be initialized into the ORB and possibly the object adapter (POA) environments.
<LI>Get references to ORB object (for use in future ORB operations) <LI>Get references to ORB object (for use in future ORB operations)
@ -81,7 +80,6 @@ and perhaps other objects (including the root POA or some Object Adapter objects
</UL> </UL>
<P>The following operations are provided to initialize applications and obtain <P>The following operations are provided to initialize applications and obtain
the appropriate object references: the appropriate object references:
<P>
<UL> <UL>
<LI>Operations providing access to the ORB, which are discussed in this <LI>Operations providing access to the ORB, which are discussed in this
section. section.
@ -107,13 +105,13 @@ identifier for the ORB for which the object reference is required,
that provide access to the ORB: that provide access to the ORB:
<UL> <UL>
<LI> <LI>
<TT><bold>init</bold>()</TT> <TT><b>init</b>()</TT>
<LI> <LI>
<TT><bold>init</bold>(String [] args, Properties props)</TT> <TT><b>init</b>(String [] args, Properties props)</TT>
<LI> <LI>
<TT><bold>init</bold>(Applet app, Properties props)</TT> <TT><b>init</b>(Applet app, Properties props)</TT>
</UL> </UL>
<P>Using the <tt>init()</tt> method without parameters initiates <P>Using the <tt>init()</tt> method without parameters initiates
@ -142,11 +140,11 @@ the ORB object interface, providing facilities to list and
resolve initial object references. These are: resolve initial object references. These are:
<UL> <UL>
<LI> <LI>
<TT><bold>resolve_initial_references</bold>(String name)</TT> <TT><b>resolve_initial_references</b>(String name)</TT>
<LI> <LI>
<TT><bold>list_initial_services</bold>()</TT> <TT><b>list_initial_services</b>()</TT>
<LI> <LI>
<TT><bold>register_initial_reference</bold>(String id, <TT><b>register_initial_reference</b>(String id,
org.omg.CORBA.Object obj)</TT> org.omg.CORBA.Object obj)</TT>
</UL> </UL>
@ -278,7 +276,6 @@ that can be modified. To support portable stubs and skeletons, holder classes
<P>Each holder class has: <P>Each holder class has:
<P>
<UL> <UL>
<LI>a constructor from an instance <LI>a constructor from an instance
<LI>a default constructor <LI>a default constructor
@ -291,7 +288,6 @@ type's <tt>value</tt> field
<P>The default constructor sets the value field to the default value for the <P>The default constructor sets the value field to the default value for the
type as defined by the Java language: type as defined by the Java language:
<P>
<UL> <UL>
<LI><tt>false</tt> for boolean <LI><tt>false</tt> for boolean
<LI><tt>0</tt> for numeric and char types <LI><tt>0</tt> for numeric and char types
@ -391,7 +387,6 @@ in the package <TT>org.omg.CORBA</TT> are:
<h2>Helper Classes </h2> <h2>Helper Classes </h2>
<P>Helper files supply several static methods needed to manipulate the type. <P>Helper files supply several static methods needed to manipulate the type.
These include: These include:
<P>
<UL> <UL>
<LI><tt>Any</tt> insert and extract operations for the type <LI><tt>Any</tt> insert and extract operations for the type
<LI>getting the repository id <LI>getting the repository id
@ -455,7 +450,6 @@ both versions of the <code>narrow</code> method.
<P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A> <P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A>
tutorial uses a <tt>narrow</tt> method that looks tutorial uses a <tt>narrow</tt> method that looks
like this: like this:
<P>
<PRE> <PRE>
// create and initialize the ORB // create and initialize the ORB
ORB orb = ORB.init(args, null); ORB orb = ORB.init(args, null);
@ -554,7 +548,6 @@ abstract public class AccountHelper
} }
</PRE> </PRE>
<P>
<h3>Value Type Helper Classes</h3> <h3>Value Type Helper Classes</h3>
A helper class for a value type includes different renderings of A helper class for a value type includes different renderings of
@ -844,7 +837,7 @@ implementation of an interface repository, the following IR classes and
interfaces have been included for the purpose of creating typecodes (see interfaces have been included for the purpose of creating typecodes (see
create_value_tc, create_struct_tc, create_union_tc and create_exception_tc create_value_tc, create_struct_tc, create_union_tc and create_exception_tc
methods in interface org.omg.CORBA.ORB): methods in interface org.omg.CORBA.ORB):
<BR>&nbs <BR>&nbsp;
<UL> <UL>
<LI> <LI>
IRObject IRObject
@ -893,17 +886,16 @@ extensions and products.
<P>Some of the API included in <TT>org.omg</TT> subpackages throw <P>Some of the API included in <TT>org.omg</TT> subpackages throw
<tt>NO_IMPLEMENT</tt> exceptions for various reasons. Among these reasons <tt>NO_IMPLEMENT</tt> exceptions for various reasons. Among these reasons
are: are:
<P>
<UL> <UL>
<LI>In some cases, for example <tt>LocalObject</tt>, the complete <LI>In some cases, for example <tt>LocalObject</tt>, the complete
implementation according to the specification indicates that implementation according to the specification indicates that
these API should throw <tt>NO_IMPLEMENT</tt>. these API should throw <tt>NO_IMPLEMENT</tt>.
<P>
<LI>In most cases, for example methods in <tt>ORB.java</tt>, <LI>In most cases, for example methods in <tt>ORB.java</tt>,
methods that throw methods that throw
<tt>NO_IMPLEMENT</tt> are actually implemented in subclasses <tt>NO_IMPLEMENT</tt> are actually implemented in subclasses
elsewhere in the ORB code. elsewhere in the ORB code.
<P>
<LI>In some cases, for example <tt>_get_interface_def()</tt> <LI>In some cases, for example <tt>_get_interface_def()</tt>
and <tt>_get_interface</tt>, API are really not yet implemented. and <tt>_get_interface</tt>, API are really not yet implemented.
</UL> </UL>

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -56,7 +56,7 @@ public interface InvokeHandler {
* <p>5. Marshal reply into OutputStream returned by * <p>5. Marshal reply into OutputStream returned by
* ResponseHandler. * ResponseHandler.
* <p>6. Return OutputStream to ORB. * <p>6. Return OutputStream to ORB.
* <p> *
* @param method The method name. * @param method The method name.
* @param input The <code>InputStream</code> containing the marshalled arguments. * @param input The <code>InputStream</code> containing the marshalled arguments.
* @param handler The <code>ResponseHandler</code> which the servant uses * @param handler The <code>ResponseHandler</code> which the servant uses

View file

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<!-- <!--
Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -46,57 +46,51 @@ Some methods throw NO_IMPLEMENT() exceptions by default, but ORB vendors
can override them to provide real implementations. The ORB included in can override them to provide real implementations. The ORB included in
Sun's release of the Java[tm] Platform, Standard Edition 6, includes Sun's release of the Java[tm] Platform, Standard Edition 6, includes
implementations for the following methods. implementations for the following methods.
<p>
<h2>List of Unimplemented Features in Package <h2>List of Unimplemented Features in Package
<code>org.omg.CORBA.portable</code></h2> <code>org.omg.CORBA.portable</code></h2>
<p>
<h3>Unimplemented Interfaces in package <code>org.omg.CORBA.portable</code></h3> <h3>Unimplemented Interfaces in package <code>org.omg.CORBA.portable</code></h3>
<ul> <ul>
<code> <li><code>InvokeHandler</code>
<li>InvokeHandler <li><code>ResponseHandler</code>
<li>ResponseHandler
</code>
</ul> </ul>
<p>
<h3>Unimplemented Methods in package <code>org.omg.CORBA.portable</code></h3> <h3>Unimplemented Methods in package <code>org.omg.CORBA.portable</code></h3>
<ul> <ul>
<code> <li><code>InputStream</code>
<li>InputStream
<ul> <ul>
<li>public int read() <li><code>public int read()</code>
<li>public.math.BigDecimal read_fixed() <li><code>public.math.BigDecimal read_fixed()</code>
<li>public org.omg.CORBA.Context read_Context() <li><code>public org.omg.CORBA.Context read_Context()</code>
<li>public org.omg.CORBA.Object read_Object(java.lang.Class clz) <li><code>public org.omg.CORBA.Object read_Object(java.lang.Class clz)</code>
<li>public org.omg.CORBA.ORB orb() <li><code>public org.omg.CORBA.ORB orb()</code>
</ul> </ul>
<li>OutputStream <li><code>OutputStream</code>
<ul> <ul>
<li>public org.omg.CORBA.ORB orb() <li><code>public org.omg.CORBA.ORB orb()</code>
<li>public void write_Context(org.omg.CORBA.Context ctx, <li><code>public void write_Context(org.omg.CORBA.Context ctx,
org.omg.CORBA.ContextList contexts) org.omg.CORBA.ContextList contexts)</code>
<li>public void write_fixed(java.math.BigDecimal value) <li><code>public void write_fixed(java.math.BigDecimal value)</code>
<li>public void write(int b) <li><code>public void write(int b)</code>
</ul> </ul>
<li>Delegate <li><code>Delegate</code>
<ul> <ul>
<li>public void releaseReply(org.omg.CORBA.Object self, InputStream input) <li><code>public void releaseReply(org.omg.CORBA.Object self, InputStream input)</code>
<li>public InputStream invoke(org.omg.CORBA.Object self, OutputStream output) <li><code>public InputStream invoke(org.omgl.CORBA.Object self, OutputStream output)</code>
<li>public OutputStream request(org.omg.CORBA.Object self, String operation, <li><code>public OutputStream request(org.omg.CORBA.Object self, String operation,
boolean responseExpected) boolean responseExpected)</code>
<li>public org.omg.CORBA.Object set_policy_override(org.omg.CORBA.Object self, <li><code>public org.omg.CORBA.Object set_policy_override(org.omg.CORBA.Object self,
org.omg.CORBA.Policy[] policies, org.omg.CORBA.Policy[] policies,
org.omg.CORBA.SetOverrideType set_add) org.omg.CORBA.SetOverrideType set_add)</code>
<li>public org.omg.CORBA.DomainManager[] get_domain_managers( <li><code>public org.omg.CORBA.DomainManager[] get_domain_managers(
org.omg.CORBA.Object org.omg.CORBA.Objectself)</code>
self) <li><code>public org.omg.CORBA.Policy get_policy(org.omg.CORBA.Object self,
<li>public org.omg.CORBA.Policy get_policy(org.omg.CORBA.Object self, int policy_type)</code>
int policy_type)
</ul> </ul>
</code>
</ul> </ul>
@since JDK1.2 @since JDK1.2
@serial exclude @serial exclude
</body> </body>
</html> </html>

View file

@ -6,7 +6,7 @@
<title>package</title> <title>package</title>
<!-- <!--
/* /*
* Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -50,16 +50,14 @@ support in Java[tm] SE 6</A>.
The following methods in the abstract class The following methods in the abstract class
<code>org.omg.CORBA_2_3.ORB</code> are unimplemented: <code>org.omg.CORBA_2_3.ORB</code> are unimplemented:
<UL> <UL>
<code> <LI><code>public org.omg.CORBA.portable.ValueFactory
<LI>public org.omg.CORBA.portable.ValueFactory
<b>register_value_factory(String id, org.omg.CORBA.portable.ValueFactory <b>register_value_factory(String id, org.omg.CORBA.portable.ValueFactory
factory)</b> factory)</b></code>
<LI>public void <b>unregister_value_factory(String id)</b> <LI><code>public void <b>unregister_value_factory(String id)</b></code>
<LI>public org.omg.CORBA.portable.ValueFactory <LI><code>public org.omg.CORBA.portable.ValueFactory
<b>lookup_value_factory(String id)</b> <b>lookup_value_factory(String id)</b></code>
<LI>public org.omg.CORBA.Object <b>get_value_def(String repid)</b> <LI><code>public org.omg.CORBA.Object <b>get_value_def(String repid)</b></code>
<LI>public void <b>set_delegate(java.lang.Object wrapper)</b> <LI><code>public void <b>set_delegate(java.lang.Object wrapper)</b></code>
</code>
</UL> </UL>
@since JDK 1.3 @since JDK 1.3
<br> <br>

View file

@ -77,7 +77,7 @@ public abstract class InputStream extends org.omg.CORBA.portable.InputStream {
* *
* throw SecurityException if SecurityManager is installed and * throw SecurityException if SecurityManager is installed and
* enableSubclassImplementation SerializablePermission * enableSubclassImplementation SerializablePermission
* is not granted or jdk.corba.allowOutputStreamSubclass system * is not granted or jdk.corba.allowInputStreamSubclass system
* property is either not set or is set to 'false' * property is either not set or is set to 'false'
*/ */
public InputStream() { public InputStream() {

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -26,7 +26,6 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
--> -->
</head> </head>
@ -34,7 +33,7 @@
Provides methods for the input and output of value types, and contains Provides methods for the input and output of value types, and contains
other updates to the <code>org/omg/CORBA/portable</code> package. other updates to the <code>org/omg/CORBA/portable</code> package.
<p>
@since 1.3 @since 1.3
@serial exclude @serial exclude
</body> </body>

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -32,13 +32,12 @@
<body bgcolor="white"> <body bgcolor="white">
<P>This package contains the following classes, which are used in <P>This package contains the following classes, which are used in
<tt>org.omg.CosNaming.NamingContextExt</tt>: <tt>org.omg.CosNaming.NamingContextExt</tt>:
<P>
<UL> <UL>
<LI><tt>AddressHelper</tt> <LI><tt>AddressHelper</tt>
<LI><tt>StringNameHelper</tt> <LI><tt>StringNameHelper</tt>
<LI><tt>URLStringHelper</tt> <LI><tt>URLStringHelper</tt>
<LI><tt>InvalidAddress</tt> <LI><tt>InvalidAddress</tt>
</UL>
<H3>Package Specification</H3> <H3>Package Specification</H3>
@ -46,7 +45,7 @@
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -32,7 +32,6 @@
<body bgcolor="white"> <body bgcolor="white">
<P>This package contains Exception classes for the <tt>org.omg.CosNaming</tt> <P>This package contains Exception classes for the <tt>org.omg.CosNaming</tt>
package. The list of exception classes are: package. The list of exception classes are:
<P>
<UL> <UL>
<LI><tt>AlreadyBound</tt> <LI><tt>AlreadyBound</tt>
<LI><tt>CannotProceed</tt> <LI><tt>CannotProceed</tt>
@ -40,6 +39,7 @@
<LI><tt>NotEmpty</tt> <LI><tt>NotEmpty</tt>
<LI><tt>NotFound</tt> <LI><tt>NotFound</tt>
<LI><tt>NotFoundReason</tt> <LI><tt>NotFoundReason</tt>
</UL>
<H3>Package Specification</H3> <H3>Package Specification</H3>
@ -48,7 +48,7 @@
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java SE 6</A>. support in Java SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -116,7 +116,7 @@ module CosNaming
/** /**
* This operation returns at most the requested number of bindings. * This operation returns at most the requested number of bindings.
* *
* @param how_many the maximum number of bindings tro return <p> * @param how_many the maximum number of bindings to return
* *
* @param bl the returned bindings * @param bl the returned bindings
*/ */
@ -196,23 +196,23 @@ module CosNaming
* Naming contexts that are bound using bind do not participate in name * Naming contexts that are bound using bind do not participate in name
* resolution when compound names are passed to be resolved. * resolution when compound names are passed to be resolved.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @param obj The Object to bind with the given name<p> * @param obj The Object to bind with the given name.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates
* the name does not identify a binding.<p> * the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed
* Indicates that the implementation has given up for some reason. * Indicates that the implementation has given up for some reason.
* The client, however, may be able to continue the operation * The client, however, may be able to continue the operation
* at the returned naming context.<p> * at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName * @exception org.omg.CosNaming.NamingContextPackage.InvalidName
* Indicates that the name is invalid. <p> * Indicates that the name is invalid.
* *
* @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound
* Indicates an object is already bound to the specified name.<p> * Indicates an object is already bound to the specified name.
*/ */
void bind(in Name n, void bind(in Name n,
in Object obj) in Object obj)
@ -226,20 +226,20 @@ module CosNaming
* are bound using bind_context() participate in name resolution * are bound using bind_context() participate in name resolution
* when compound names are passed to be resolved. * when compound names are passed to be resolved.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @param nc NamingContect object to bind with the given name <p> * @param nc NamingContect object to bind with the given name.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
* *
* @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound Indicates an object is already * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound Indicates an object is already
* bound to the specified name.<p> * bound to the specified name.
*/ */
void bind_context(in Name n, void bind_context(in Name n,
in NamingContext nc) in NamingContext nc)
@ -254,17 +254,17 @@ module CosNaming
* that are bound using rebind do not participate in name resolution * that are bound using rebind do not participate in name resolution
* when compound names are passed to be resolved. * when compound names are passed to be resolved.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @param obj The Object to rebind with the given name <p> * @param obj The Object to rebind with the given name.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
*/ */
void rebind(in Name n, void rebind(in Name n,
in Object obj) in Object obj)
@ -278,17 +278,17 @@ module CosNaming
* contexts that are bound using rebind_context() participate in name * contexts that are bound using rebind_context() participate in name
* resolution when compound names are passed to be resolved. * resolution when compound names are passed to be resolved.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @param nc NamingContect object to rebind with the given name <p> * @param nc NamingContect object to rebind with the given name.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
*/ */
void rebind_context(in Name n, void rebind_context(in Name n,
in NamingContext nc) in NamingContext nc)
@ -304,15 +304,15 @@ module CosNaming
* to the appropriate type. That is, clients typically cast the returned * to the appropriate type. That is, clients typically cast the returned
* object from Object to a more specialized interface. * object from Object to a more specialized interface.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
*/ */
Object resolve(in Name n) Object resolve(in Name n)
raises(NotFound, raises(NotFound,
@ -322,15 +322,15 @@ module CosNaming
/** /**
* The unbind operation removes a name binding from a context. * The unbind operation removes a name binding from a context.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
*/ */
void unbind(in Name n) void unbind(in Name n)
raises(NotFound, raises(NotFound,
@ -351,11 +351,11 @@ module CosNaming
* bindings, the binding iterator is a nil object reference. * bindings, the binding iterator is a nil object reference.
* </ul> * </ul>
* *
* @param how_many the maximum number of bindings to return <p> * @param how_many the maximum number of bindings to return.
* *
* @param bl the returned list of bindings <p> * @param bl the returned list of bindings.
* *
* @param bi the returned binding iterator <p> * @param bi the returned binding iterator.
*/ */
void list(in unsigned long how_many, void list(in unsigned long how_many,
out BindingList bl, out BindingList bl,
@ -375,18 +375,18 @@ module CosNaming
* is, the naming server that implements the context denoted by the * is, the naming server that implements the context denoted by the
* name argument excluding the last component). * name argument excluding the last component).
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.<p> * @exception org.omg.CosNaming.NamingContextPackage.NotFound Indicates the name does not identify a binding.
* *
* @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound Indicates an object is already * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound Indicates an object is already
* bound to the specified name.<p> * bound to the specified name.
* *
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Indicates that the implementation has
* given up for some reason. The client, however, may be able to * given up for some reason. The client, however, may be able to
* continue the operation at the returned naming context.<p> * continue the operation at the returned naming context.
* *
* @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid. <p> * @exception org.omg.CosNaming.NamingContextPackage.InvalidName Indicates that the name is invalid.
*/ */
NamingContext bind_new_context(in Name n) NamingContext bind_new_context(in Name n)
raises(NotFound, raises(NotFound,
@ -413,7 +413,7 @@ module CosNaming
* part of Interoperable Naming Service. * part of Interoperable Naming Service.
* Different names can be bound to an object in the same or different * Different names can be bound to an object in the same or different
* contexts at the same time. Using <tt>NamingContextExt</tt>, you can use * contexts at the same time. Using <tt>NamingContextExt</tt>, you can use
* URL-based names to bind and resolve. <p> * URL-based names to bind and resolve.
* *
* See <a href="http://www.omg.org/technology/documents/formal/naming_service.htm"> * See <a href="http://www.omg.org/technology/documents/formal/naming_service.htm">
* CORBA COS * CORBA COS
@ -442,10 +442,10 @@ module CosNaming
* This operation creates a stringified name from the array of Name * This operation creates a stringified name from the array of Name
* components. * components.
* *
* @param n Name of the object <p> * @param n Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName * @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName
* Indicates the name does not identify a binding.<p> * Indicates the name does not identify a binding.
* *
*/ */
StringName to_string( in Name n ) raises (InvalidName); StringName to_string( in Name n ) raises (InvalidName);
@ -454,10 +454,10 @@ module CosNaming
* This operation converts a Stringified Name into an equivalent array * This operation converts a Stringified Name into an equivalent array
* of Name Components. * of Name Components.
* *
* @param sn Stringified Name of the object <p> * @param sn Stringified Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName * @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName
* Indicates the name does not identify a binding.<p> * Indicates the name does not identify a binding.
* *
*/ */
Name to_name( in StringName sn ) raises (InvalidName); Name to_name( in StringName sn ) raises (InvalidName);
@ -474,15 +474,13 @@ module CosNaming
* This operation creates a URL based "iiopname://" format name * This operation creates a URL based "iiopname://" format name
* from the Stringified Name of the object. * from the Stringified Name of the object.
* *
* @param addr internet based address of the host machine where Name Service is running <p> * @param addr internet based address of the host machine where Name Service is running.
* @param sn Stringified Name of the object <p> * @param sn Stringified Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName * @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName
* Indicates the name does not identify a binding.<p> * Indicates the name does not identify a binding.
* @exception org.omg.CosNaming.NamingContextPackage.InvalidAddress * @exception org.omg.CosNaming.NamingContextPackage.InvalidAddress
* Indicates the internet based address of the host machine is * Indicates the internet based address of the host machine is incorrect
* incorrect <p>
*
*/ */
URLString to_url( in Address addr, in StringName sn ) URLString to_url( in Address addr, in StringName sn )
raises( InvalidAddress, InvalidName ); raises( InvalidAddress, InvalidName );
@ -492,14 +490,14 @@ module CosNaming
* This operation resolves the Stringified name into the object * This operation resolves the Stringified name into the object
* reference. * reference.
* *
* @param sn Stringified Name of the object <p> * @param sn Stringified Name of the object.
* *
* @exception org.omg.CosNaming.NamingContextPackage.NotFound * @exception org.omg.CosNaming.NamingContextPackage.NotFound
* Indicates there is no object reference for the given name. <p> * Indicates there is no object reference for the given name.
* @exception org.omg.CosNaming.NamingContextPackage.CannotProceed * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed
* Indicates that the given compound name is incorrect <p> * Indicates that the given compound name is incorrect.
* @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName * @exception org.omg.CosNaming.NamingContextExtPackage.InvalidName
* Indicates the name does not identify a binding.<p> * Indicates the name does not identify a binding.
* *
*/ */
Object resolve_str( in StringName sn) Object resolve_str( in StringName sn)

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -45,7 +45,7 @@
the Java[tm] Platform, Standard Edition 6, ORB complies, see <A the Java[tm] Platform, Standard Edition 6, ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<P>
<H2>Interfaces</H2> <H2>Interfaces</H2>
The package <tt>org.omg.CosNaming</tt> contains two public interfaces The package <tt>org.omg.CosNaming</tt> contains two public interfaces
and several auxiliary classes. and several auxiliary classes.
@ -62,7 +62,7 @@ support in Java[tm] SE 6</A>.
interface supplies the main functionality for the naming service, and interface supplies the main functionality for the naming service, and
<code>BindingIterator</code> provides a means of iterating through a list <code>BindingIterator</code> provides a means of iterating through a list
of name/object reference bindings. of name/object reference bindings.
<P>
<H2>Auxiliary Classes</H2> <H2>Auxiliary Classes</H2>
In order to map an OMG IDL interface to the Java programming language, In order to map an OMG IDL interface to the Java programming language,
the idlj compiler creates Java classes that can be thought of the idlj compiler creates Java classes that can be thought of
@ -70,7 +70,7 @@ support in Java[tm] SE 6</A>.
Comments for the generated auxiliary classes Comments for the generated auxiliary classes
used by the interfaces <code>NamingContext</code> and used by the interfaces <code>NamingContext</code> and
<code>BindingIterator</code> are included here. <code>BindingIterator</code> are included here.
<P>
<H3>Classes Used by <code>NamingContext</code> and <H3>Classes Used by <code>NamingContext</code> and
<code>BindingIterator</code></H3> <code>BindingIterator</code></H3>
The following are classes used by The following are classes used by
@ -89,8 +89,7 @@ support in Java[tm] SE 6</A>.
A <code><B>NameComponent</B></code> object consists of two fields: A <code><B>NameComponent</B></code> object consists of two fields:
<OL> <OL>
<LI><code><B>id</B></code> -- a <code>String</code> used as an identifier <LI><code><B>id</B></code> -- a <code>String</code> used as an identifier
<LI><code><B>kind</B></code> -- a <code>String</code> that can be used for <LI><code><B>kind</B></code> -- a <code>String</code> that can be used for any
any
descriptive purpose. Its importance is that it descriptive purpose. Its importance is that it
can be used to describe an object without affecting syntax. can be used to describe an object without affecting syntax.
The C programming language, for example, uses the the syntactic convention The C programming language, for example, uses the the syntactic convention
@ -109,8 +108,7 @@ any
a <code>NamingContext</code> object; the last <code>NameComponent</code> a <code>NamingContext</code> object; the last <code>NameComponent</code>
object denotes the bound object reference. object denotes the bound object reference.
This is similar to a path name, in which the last name is the This is similar to a path name, in which the last name is the
file name, and all names before it are directory names.<p> file name, and all names before it are directory names.
<P>
<LI><code>public final class <B>Binding</B></code> -- <LI><code>public final class <B>Binding</B></code> --
an object that associates a name with an object reference or a an object that associates a name with an object reference or a
@ -130,7 +128,6 @@ any
and for resolving bindings (given a name, the method and for resolving bindings (given a name, the method
<code>resolve</code> returns the object reference bound to it). <code>resolve</code> returns the object reference bound to it).
<P>
<LI><code>public final class <B>BindingType</B></code> -- <LI><code>public final class <B>BindingType</B></code> --
an object that specifies whether the given <code>Binding</code> an object that specifies whether the given <code>Binding</code>
object is a binding between a name and an object reference (that is, object is a binding between a name and an object reference (that is,
@ -308,7 +305,6 @@ Context&gt;</code>.
This associates <code>NameService</code> with the Root Naming This associates <code>NameService</code> with the Root Naming
Context of the <code>CosNaming</code> implementation that you Context of the <code>CosNaming</code> implementation that you
want to use. want to use.
<P>
<LI>Start the standalone Bootstrap server using the following command: <LI>Start the standalone Bootstrap server using the following command:
<pre> <pre>
<code> <code>

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -45,7 +45,7 @@ refer to that OMG specification for further details.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
/* /*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -48,7 +48,7 @@ refer to that OMG specification for further details.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java SE 6</A>. support in Java SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -46,7 +46,7 @@ refer to that OMG specification for further details.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -198,21 +198,13 @@ exported through the <code>Object</code>
An attempt to use a <code>DynAny</code> object with the DII may raise the NO_IMPLEMENT An attempt to use a <code>DynAny</code> object with the DII may raise the NO_IMPLEMENT
exception. exception.
<P>
<H3>Package Specification</H3> <H3>Package Specification</H3>
<P>For a precise list of supported sections of official specifications with which <P>For a precise list of supported sections of official specifications with which
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -42,7 +42,7 @@ specified in the IOP::CodeFactory interface (as part of the Portable
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java SE 6</A>. support in Java SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -45,7 +45,7 @@ refer to that OMG specification for further details.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -52,7 +52,7 @@ Portable Interceptors.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -47,7 +47,7 @@ Portable Interceptors.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -258,14 +258,14 @@ module IOP {
* <p> * <p>
* The <code>TAG_ALTERNATE_IIOP_ADDRESS</code> component has an * The <code>TAG_ALTERNATE_IIOP_ADDRESS</code> component has an
* associated value of type: * associated value of type:
* <code>
* <pre> * <pre>
* <code>
* struct { * struct {
* string HostID, * string HostID,
* short Port * short Port
* }; * };
* </pre>
* </code> * </code>
* </pre>
* encoded as a CDR encapsulation. * encoded as a CDR encapsulation.
* <p> * <p>
* Zero or more instances of the <code>TAG_ALTERNATE_IIOP_ADDRESS</code> * Zero or more instances of the <code>TAG_ALTERNATE_IIOP_ADDRESS</code>
@ -601,7 +601,7 @@ module IOP {
/** /**
* Create a <code>Codec</code> of the given encoding. * Create a <code>Codec</code> of the given encoding.
* <p> *
* @param enc The encoding for which to create a <code>Codec</code>. * @param enc The encoding for which to create a <code>Codec</code>.
* @return A <code>Codec</code> obtained with the given encoding. * @return A <code>Codec</code> obtained with the given encoding.
* @exception UnknownEncoding thrown if this factory cannot create a * @exception UnknownEncoding thrown if this factory cannot create a

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -479,7 +479,7 @@ module PortableInterceptor {
* On the client: * On the client:
* <ul> * <ul>
* <li>Within the <code>receive_reply</code> interception point, this * <li>Within the <code>receive_reply</code> interception point, this
* will only return <code>SUCCESSFUL</code></li>. * will only return <code>SUCCESSFUL</code>.</li>
* <li>Within the <code>receive_exception</code> interception point, * <li>Within the <code>receive_exception</code> interception point,
* this will be either <code>SYSTEM_EXCEPTION</code> or * this will be either <code>SYSTEM_EXCEPTION</code> or
* <code>USER_EXCEPTION</code>.</li> * <code>USER_EXCEPTION</code>.</li>
@ -545,7 +545,7 @@ module PortableInterceptor {
/** /**
* Returns a copy of the service context with the given ID that * Returns a copy of the service context with the given ID that
* is associated with the request. * is associated with the request.
* <p> *
* @param id The <code>IOP.ServiceId</code> of the service context * @param id The <code>IOP.ServiceId</code> of the service context
* which is to be returned. * which is to be returned.
* @return The <code>IOP.ServiceContext</code> obtained with the * @return The <code>IOP.ServiceContext</code> obtained with the
@ -579,7 +579,6 @@ module PortableInterceptor {
* validity of each attribute or operation. If it is not valid, attempting * validity of each attribute or operation. If it is not valid, attempting
* to access it will result in a <code>BAD_INV_ORDER</code> being thrown * to access it will result in a <code>BAD_INV_ORDER</code> being thrown
* with a standard minor code of 14. * with a standard minor code of 14.
* <p>
* *
* <table border=1 summary="Shows the validity of each attribute or operation"> * <table border=1 summary="Shows the validity of each attribute or operation">
* <thead> * <thead>
@ -934,7 +933,6 @@ module PortableInterceptor {
* of each attribute or operation. If it is not valid, attempting to access * of each attribute or operation. If it is not valid, attempting to access
* it will result in a <code>BAD_INV_ORDER</code> being thrown with a * it will result in a <code>BAD_INV_ORDER</code> being thrown with a
* standard minor code of 14. * standard minor code of 14.
* <p>
* *
* *
* <table border=1 summary="Shows the validity of each attribute or operation"> * <table border=1 summary="Shows the validity of each attribute or operation">
@ -1028,7 +1026,7 @@ module PortableInterceptor {
* <td>yes</td> <td>yes</td> <td>yes</td> <td>yes</td> <td>yes</td></tr> * <td>yes</td> <td>yes</td> <td>yes</td> <td>yes</td> <td>yes</td></tr>
* *
* <tr><td><b>arguments</b></td> * <tr><td><b>arguments</b></td>
* <td>no </td> <td>yes<sub>1</sub</td> * <td>no </td> <td>yes<sub>1</sub></td>
* <td>yes</td> <td>no<sub>2</sub></td> * <td>yes</td> <td>no<sub>2</sub></td>
* <td>no<sub>2</sub> * <td>no<sub>2</sub>
* </td></tr> * </td></tr>
@ -1133,7 +1131,7 @@ module PortableInterceptor {
* servant, which may no longer be available to the ORB. For example, * servant, which may no longer be available to the ORB. For example,
* if the object's adapter is a POA that uses a * if the object's adapter is a POA that uses a
* <code>ServantLocator</code>, then the ORB invokes the interception * <code>ServantLocator</code>, then the ORB invokes the interception
* point after it calls <code>ServantLocator.postinvoke()</code></li>. * point after it calls <code>ServantLocator.postinvoke()</code>.</li>
* </ol> * </ol>
* *
* @see ServerRequestInterceptor * @see ServerRequestInterceptor
@ -1889,7 +1887,7 @@ module PortableInterceptor {
* @param type An int specifying the type of policy being created. * @param type An int specifying the type of policy being created.
* @param value An any containing data with which to construct the * @param value An any containing data with which to construct the
* <code>CORBA.Policy</code>. * <code>CORBA.Policy</code>.
* @return A <code>CORBA.Policy<code> object of the specified type and * @return A <code>CORBA.Policy</code> object of the specified type and
* value. * value.
*/ */
CORBA::Policy create_policy CORBA::Policy create_policy
@ -2124,7 +2122,7 @@ module PortableInterceptor {
* <p> * <p>
* A client-side logging service written by company X, for example, may * A client-side logging service written by company X, for example, may
* have the following ORBInitializer implementation: * have the following ORBInitializer implementation:
* <code><pre> * <pre><code>
* package com.x.logging; * package com.x.logging;
* *
* import org.omg.PortableInterceptor.Interceptor; * import org.omg.PortableInterceptor.Interceptor;
@ -2144,7 +2142,7 @@ module PortableInterceptor {
* // This service does not need two init points. * // This service does not need two init points.
* } * }
* } * }
* </pre></code> * </code></pre>
* To run a program called <code>MyApp</code> using this logging * To run a program called <code>MyApp</code> using this logging
* service, the user could type: * service, the user could type:
* <blockquote><code> * <blockquote><code>

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -44,7 +44,7 @@ refer to that OMG specification for further details.
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java SE 6</A>. support in Java SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -56,41 +56,39 @@ for how to go about registering interceptors.
<h2>Known limitations / unimplemented methods in package <h2>Known limitations / unimplemented methods in package
<code>org.omg.PortableInterceptor</code></h2> <code>org.omg.PortableInterceptor</code></h2>
<code>
<ul> <ul>
<li> <li>
<b>RequestInfo</b> <code><b>RequestInfo</b></code>
<ul> <ul>
<li><b>sync_scope()</b>: Always returns SYNC_WITH_TRANSPORT</li> <li><code><b>sync_scope()</b></code>: Always returns SYNC_WITH_TRANSPORT</li>
<li><b>arguments()</b>: Only supported for DII/DSI calls</li> <li><code><b>arguments()</b></code>: Only supported for DII/DSI calls</li>
<li><b>exceptions()</b>: Only supported for DII calls on client side. <li><code><b>exceptions()</b></code>: Only supported for DII calls on client side.
Not supported on server-side.</li> Not supported on server-side.</li>
<li><b>contexts()</b>: Only supported for DII calls on client side. <li><code><b>contexts()</b></code>: Only supported for DII calls on client side.
Not supported on server-side since our ORB does not send contexts. Not supported on server-side since our ORB does not send contexts.
</li> </li>
<li><b>operation_context()</b>: Only supported for DII calls <li><code><b>operation_context()</b></code>: Only supported for DII calls
on client side. Not supported on server-side since ORB on client side. Not supported on server-side since ORB
does not send contexts.</li> does not send contexts.</li>
<li><b>result()</b>: Only supported for DII/DSI calls</li> <li><code><b>result()</b></code>: Only supported for DII/DSI calls</li>
</ul> </ul>
</li> </li>
<li> <li>
<b>ClientRequestInfo</b> <code><b>ClientRequestInfo</b></code>
<ul> <ul>
<li><b>received_exception_id()</b>: Always returns null in the <li><code><b>received_exception_id()</b></code>: Always returns null in the
DII case</li> DII case</li>
<li><b>get_request_policy(int type)</b>: Not implemented.</li> <li><code><b>get_request_policy(int type)</b></code>: Not implemented.</li>
</ul> </ul>
</li> </li>
<li> <li>
<b>ServerRequestInfo</b> <code><b>ServerRequestInfo</b></code>
<ul> <ul>
<li><b>sending_exception()</b>: Does not support user exceptions on <li><code><b>sending_exception()</b></code>: Does not support user exceptions on
the server side in non-DSI case.</li> the server side in non-DSI case.</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</code>
<h2>Package Specification</h2> <h2>Package Specification</h2>
<P>For a precise list of supported sections of official OMG specifications with which <P>For a precise list of supported sections of official OMG specifications with which

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -53,7 +53,7 @@
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -43,7 +43,7 @@ Encapsulates the processing
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -36,7 +36,6 @@
between different ORB products. between different ORB products.
<P>The Portable Object Adaptor (POA) is designed to meet the following goals: <P>The Portable Object Adaptor (POA) is designed to meet the following goals:
<P>
<UL> <UL>
<LI>Allow programmers to construct object implementations that are portable between different ORB products. <LI>Allow programmers to construct object implementations that are portable between different ORB products.
<LI>Provide support for objects with persistent identities. <LI>Provide support for objects with persistent identities.
@ -66,7 +65,7 @@ be invoked by the application programmer, as well as methods which are invoked b
the Java[tm] Platform, Standard Edition 6, ORB complies, see <A the Java[tm] Platform, Standard Edition 6, ORB complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -43,13 +43,6 @@ follows exactly the same pattern as the other holder classes for basic types.
the Java[tm] Platform, Standard Edition 6 complies, see <A the Java[tm] Platform, Standard Edition 6 complies, see <A
HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.4 @since 1.4
<br> <br>

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -52,12 +52,10 @@ defined by the <TT>PortableServer</TT> module for the POA. In Java, the
the Java[tm] Platform, Standard Edition 6 complies, see <A the Java[tm] Platform, Standard Edition 6 complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
<H2>POA-related Interfaces</H2> <H2>POA-related Interfaces</H2>
<P>The <TT>PortableServer</TT> module defines the following POA-related interfaces: <P>The <TT>PortableServer</TT> module defines the following POA-related interfaces:
<P>
<UL> <UL>
<LI><TT>POA</TT> <LI><TT>POA</TT>
<LI><TT>POAManager</TT> <LI><TT>POAManager</TT>
@ -79,12 +77,18 @@ support in Java[tm] SE 6</A>.
<H3>Operations classes</H3> <H3>Operations classes</H3>
<P>Each of the interfaces listed above has an associated <code>Operations</code> interface. The <code>Operations</code> interface is generated by the <code>idlj</code> compiler and contains the method signatures for methods defined in its associated interface. The <code>Operations</code> interface can be accessed by both the client and the server, while its associated interface can only be called by the client. <P>Each of the interfaces listed above has an associated <code>Operations</code> interface.
The <code>Operations</code> interface is generated by the <code>idlj</code> compiler and
contains the method signatures for methods defined in its associated interface.
The <code>Operations</code> interface can be accessed by both the client and the server,
while its associated interface can only be called by the client.
<H3>Value Classes</H3> <H3>Value Classes</H3>
Classes ending in the suffix <code>PolicyValue</code> provide the values used for the <code>create_POA</code> call, which sets the policy for the POA. See the <a href="#sampleserver">sample code</a> below for a demonstration. <code>PolicyValue</code> files include the following: Classes ending in the suffix <code>PolicyValue</code> provide the values used
<P> for the <code>create_POA</code> call, which sets the policy for the POA. See
the <a href="#sampleserver">sample code</a> below for a demonstration.
<code>PolicyValue</code> files include the following:
<UL> <UL>
<LI><code>IdAssignmentPolicyValue</code> <LI><code>IdAssignmentPolicyValue</code>
<LI><code>IdUniquenessPolicyValue</code> <LI><code>IdUniquenessPolicyValue</code>
@ -98,8 +102,11 @@ Classes ending in the suffix <code>PolicyValue</code> provide the values used fo
<H3>Helper Classes</H3> <H3>Helper Classes</H3>
<P>Helper classes, which are generated for all user-defined types in an OMG IDL <P>Helper classes, which are generated for all user-defined types in an OMG IDL
interface, supply static methods needed to manipulate those types. There is only one method in a helper class that an application programmer uses: the <code>narrow</code> method. Only Java interfaces mapped from IDL interfaces will have a helper class that includes a <code>narrow</code> method, so in the <code>PortableServer</code> package, only the following classes have a <code>narrow</code> method: interface, supply static methods needed to manipulate those types.
<P> There is only one method in a helper class that an application programmer uses:
the <code>narrow</code> method. Only Java interfaces mapped from IDL interfaces
will have a helper class that includes a <code>narrow</code> method, so in
the <code>PortableServer</code> package, only the following classes have a <code>narrow</code> method:
<UL> <UL>
<LI><code>ForwardRequestHelper</code> <LI><code>ForwardRequestHelper</code>
<LI><code>ServantActivatorHelper</code> <LI><code>ServantActivatorHelper</code>
@ -113,22 +120,31 @@ interface, supply static methods needed to manipulate those types. There is onl
<H3>Exceptions</H3> <H3>Exceptions</H3>
<P>The <code>ForwardRequest</code> exception indicates to the ORB <P>The <code>ForwardRequest</code> exception indicates to the ORB
that it is responsible for delivering the current request and subsequent <code>ForwardRequest</code> requests to the object denoted in the that it is responsible for delivering the current request and
subsequent <code>ForwardRequest</code> requests to the object denoted in the
<code>forward_reference</code> member of the exception. <code>forward_reference</code> member of the exception.
<H3>Interfaces Implemented by the Application Programmer</H3> <H3>Interfaces Implemented by the Application Programmer</H3>
<P>Most of what <code>PortableServer</code> does is transparent to the user. The result is that programmers will use only a few of the interfaces mentioned above. The remaining interfaces will be provided by the ORB implementation. The interfaces of interest to application programmers are the following: <P>Most of what <code>PortableServer</code> does is transparent to the user.
<P> The result is that programmers will use only a few of the interfaces mentioned above.
The remaining interfaces will be provided by the ORB implementation.
The interfaces of interest to application programmers are the following:
<ul> <ul>
<LI><code>AdapterActivator</code> <LI><code>AdapterActivator</code>
<P>Adapter activators are associated with POAs. An adapter activator supplies a POA with the ability to create child POAs on demand, as a side-effect of receiving a request that names the child POA (or one of its children), or when <code>find_POA</code> is called with an activate parameter value of <code>TRUE</code>. An application server that creates all its needed POAs at the beginning of execution does not need to use or provide an adapter activator; it is necessary only for the case in which POAs need to be created during request processing. <P>Adapter activators are associated with POAs.
<P> An adapter activator supplies a POA with the ability to create child POAs on demand,
as a side-effect of receiving a request that names the child POA (or one of its children),
or when <code>find_POA</code> is called with an activate parameter value of <code>TRUE</code>.
An application server that creates all its needed POAs at the beginning of execution
does not need to use or provide an adapter activator; it is necessary
only for the case in which POAs need to be created during request processing.
<LI><code>ServantLocator</code> <LI><code>ServantLocator</code>
<P>When the POA has the <code>NON_RETAIN</code> policy, it uses servant managers that are <code>ServantLocator</code>s. <P>When the POA has the <code>NON_RETAIN</code> policy,
<P> it uses servant managers that are <code>ServantLocator</code>s.
<LI><code>ServantActivator</code> <LI><code>ServantActivator</code>
<P>When the POA has the <code>RETAIN</code> policy, it uses servant managers that are <code>ServantActivator</code>s. <P>When the POA has the <code>RETAIN</code> policy,
it uses servant managers that are <code>ServantActivator</code>s.
</ul> </ul>
@ -141,13 +157,11 @@ follows exactly the same pattern as the other holder classes for basic types.
<H2>Related Documentation</H2> <H2>Related Documentation</H2>
<P>For an overview of Java IDL, please see: <P>For an overview of Java IDL, please see:
<P> <A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
<LI><A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
<H2>Example Code</H2> <H2>Example Code</H2>
<a name="sampleserver"></a> <a name="sampleserver"></a>
<H3>Example Server Code</H3> <H3>Example Server Code</H3>
<P>
<PRE> <PRE>
import javax.naming.InitialContext; import javax.naming.InitialContext;
import javax.naming.Context; import javax.naming.Context;
@ -209,9 +223,6 @@ public class HelloServer {
<P>
@since 1.4 @since 1.4
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- <!--
Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -68,7 +68,7 @@
the Java[tm] Platform, Standard Edition 6 ORB complies, see <A the Java[tm] Platform, Standard Edition 6 ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>. support in Java[tm] SE 6</A>.
<p>
@since 1.3 @since 1.3
<br> <br>
@serial exclude @serial exclude

View file

@ -3,7 +3,7 @@
<title>org.omg.stub.java.rmi package</title> <title>org.omg.stub.java.rmi package</title>
<!-- <!--
Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
@ -32,7 +32,7 @@
<body bgcolor="white"> <body bgcolor="white">
Contains RMI-IIOP Stubs for the Remote types that occur in the Contains RMI-IIOP Stubs for the Remote types that occur in the
<tt>java.rmi</tt> package. <tt>java.rmi</tt> package.
<p>
@since 1.3 @since 1.3
<br> <br>
@serial exclude @serial exclude

View file

@ -458,3 +458,10 @@ e0947f58c9c1426aa0d98b98ebb78357b27a7b99 jdk9-b50
effd5ef0c3eb4bb85aa975c489d6761dbf13ad6a jdk9-b53 effd5ef0c3eb4bb85aa975c489d6761dbf13ad6a jdk9-b53
c3b117fa5bdedfafd9ed236403e6d406911195b1 jdk9-b54 c3b117fa5bdedfafd9ed236403e6d406911195b1 jdk9-b54
be49ab55e5c498c5077bbf58c2737100d1992339 jdk9-b55 be49ab55e5c498c5077bbf58c2737100d1992339 jdk9-b55
fd2d5ec7e7b16c7bf4043a7fe7cfd8af96b819e2 jdk9-b56
56a85ffe743d3f9d70ba25d6ce82ddd2ad1bf33c jdk9-b57
ee878f3d6732856f7725c590312bfbe2ffa52cc7 jdk9-b58
96bcaec07cb165782bae1b9a1f28450b37a10e3a jdk9-b59
9c916db4bf3bc164a47b5a9cefe5ffd71e111f6a jdk9-b60
715d2da5801c410746e92f08066d53bde1496286 jdk9-b61
1eab877142cce6ca06e556e2ad0af688f993f00b jdk9-b62

View file

@ -148,7 +148,7 @@ public class ciMethodData extends ciMetadata implements MethodDataInterface<ciKl
ParametersTypeData<ciKlass,ciMethod> parametersTypeData() { ParametersTypeData<ciKlass,ciMethod> parametersTypeData() {
Address base = getAddress().addOffsetTo(origField.getOffset()); Address base = getAddress().addOffsetTo(origField.getOffset());
int di = (int)parametersTypeDataDi.getValue(base); int di = (int)parametersTypeDataDi.getValue(base);
if (di == -1) { if (di == -1 || di == -2) {
return null; return null;
} }
DataLayout dataLayout = new DataLayout(dataField.getValue(getAddress()), di); DataLayout dataLayout = new DataLayout(dataField.getValue(getAddress()), di);

View file

@ -328,7 +328,7 @@ public class ConstantPool extends Metadata implements ClassConstants {
} }
public Symbol getUnresolvedStringAt(int which) { public Symbol getUnresolvedStringAt(int which) {
return getSymbolAt(which); return getSlotAt(which).getSymbol();
} }
// returns null, if not resolved. // returns null, if not resolved.

View file

@ -42,10 +42,10 @@ public class PhaseCFG extends Phase {
private static synchronized void initialize(TypeDataBase db) throws WrongTypeException { private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
Type type = db.lookupType("PhaseCFG"); Type type = db.lookupType("PhaseCFG");
numBlocksField = new CIntField(type.getCIntegerField("_num_blocks"), 0); numBlocksField = new CIntField(type.getCIntegerField("_number_of_blocks"), 0);
blocksField = type.getAddressField("_blocks"); blocksField = type.getAddressField("_blocks");
bbsField = type.getAddressField("_node_to_block_mapping"); bbsField = type.getAddressField("_node_to_block_mapping");
brootField = type.getAddressField("_broot"); brootField = type.getAddressField("_root_block");
} }
private static CIntField numBlocksField; private static CIntField numBlocksField;

View file

@ -314,26 +314,17 @@ public class X86Frame extends Frame {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// frame::adjust_unextended_sp // frame::adjust_unextended_sp
private void adjustUnextendedSP() { private void adjustUnextendedSP() {
// If we are returning to a compiled MethodHandle call site, the // On x86, sites calling method handle intrinsics and lambda forms are treated
// saved_fp will in fact be a saved value of the unextended SP. The // as any other call site. Therefore, no special action is needed when we are
// simplest way to tell whether we are returning to such a call site // returning to any of these call sites.
// is as follows:
CodeBlob cb = cb(); CodeBlob cb = cb();
NMethod senderNm = (cb == null) ? null : cb.asNMethodOrNull(); NMethod senderNm = (cb == null) ? null : cb.asNMethodOrNull();
if (senderNm != null) { if (senderNm != null) {
// If the sender PC is a deoptimization point, get the original // If the sender PC is a deoptimization point, get the original PC.
// PC. For MethodHandle call site the unextended_sp is stored in if (senderNm.isDeoptEntry(getPC()) ||
// saved_fp. senderNm.isDeoptMhEntry(getPC())) {
if (senderNm.isDeoptMhEntry(getPC())) { // DEBUG_ONLY(verifyDeoptriginalPc(senderNm, raw_unextendedSp));
// DEBUG_ONLY(verifyDeoptMhOriginalPc(senderNm, getFP()));
raw_unextendedSP = getFP();
}
else if (senderNm.isDeoptEntry(getPC())) {
// DEBUG_ONLY(verifyDeoptOriginalPc(senderNm, raw_unextendedSp));
}
else if (senderNm.isMethodHandleReturn(getPC())) {
raw_unextendedSP = getFP();
} }
} }
} }

View file

@ -74,7 +74,8 @@ LP64=1
!if "$(BUILDARCH)" == "i486" !if "$(BUILDARCH)" == "i486"
MACHINE=I386 MACHINE=I386
CXX_FLAGS=$(CXX_FLAGS) /D "IA32" # VS2013 generates bad l2f without /arch:IA32
CXX_FLAGS=$(CXX_FLAGS) /D "IA32" /arch:IA32
!endif !endif
CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS" CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS"

File diff suppressed because it is too large Load diff

View file

@ -77,12 +77,6 @@ inline frame::frame(intptr_t* sp, intptr_t* fp, address pc) {
inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) { inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
intptr_t a = intptr_t(sp); intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp); intptr_t b = intptr_t(fp);
#ifndef PRODUCT
if (fp)
if (sp > fp || (fp - sp > 0x100000))
for(;;)
asm("nop");
#endif
_sp = sp; _sp = sp;
_unextended_sp = unextended_sp; _unextended_sp = unextended_sp;
_fp = fp; _fp = fp;
@ -104,12 +98,6 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
inline frame::frame(intptr_t* sp, intptr_t* fp) { inline frame::frame(intptr_t* sp, intptr_t* fp) {
intptr_t a = intptr_t(sp); intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp); intptr_t b = intptr_t(fp);
#ifndef PRODUCT
if (fp)
if (sp > fp || (fp - sp > 0x100000))
for(;;)
asm("nop");
#endif
_sp = sp; _sp = sp;
_unextended_sp = sp; _unextended_sp = sp;
_fp = fp; _fp = fp;

View file

@ -68,6 +68,8 @@ define_pd_global(bool, RewriteFrequentPairs, false);
define_pd_global(bool, UseMembar, true); define_pd_global(bool, UseMembar, true);
define_pd_global(bool, PreserveFramePointer, false);
// GC Ergo Flags // GC Ergo Flags
define_pd_global(uintx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread define_pd_global(uintx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread

View file

@ -39,6 +39,8 @@ class InterpreterMacroAssembler: public MacroAssembler {
protected: protected:
protected: protected:
using MacroAssembler::call_VM_leaf_base;
// Interpreter specific version of call_VM_base // Interpreter specific version of call_VM_base
using MacroAssembler::call_VM_leaf_base; using MacroAssembler::call_VM_leaf_base;

View file

@ -32,22 +32,14 @@
#include "compiler/disassembler.hpp" #include "compiler/disassembler.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
#include "nativeInst_aarch64.hpp"
#include "opto/compile.hpp"
#include "opto/node.hpp"
#include "runtime/biasedLocking.hpp" #include "runtime/biasedLocking.hpp"
#include "runtime/icache.hpp" #include "runtime/icache.hpp"
#include "runtime/interfaceSupport.hpp" #include "runtime/interfaceSupport.hpp"
#include "runtime/sharedRuntime.hpp" #include "runtime/sharedRuntime.hpp"
// #include "gc_interface/collectedHeap.inline.hpp"
// #include "interpreter/interpreter.hpp"
// #include "memory/cardTableModRefBS.hpp"
// #include "prims/methodHandles.hpp"
// #include "runtime/biasedLocking.hpp"
// #include "runtime/interfaceSupport.hpp"
// #include "runtime/objectMonitor.hpp"
// #include "runtime/os.hpp"
// #include "runtime/sharedRuntime.hpp"
// #include "runtime/stubRoutines.hpp"
#if INCLUDE_ALL_GCS #if INCLUDE_ALL_GCS
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp" #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"

View file

@ -60,7 +60,10 @@ class RegisterImpl: public AbstractRegisterImpl {
bool has_byte_register() const { return 0 <= (intptr_t)this && (intptr_t)this < number_of_byte_registers; } bool has_byte_register() const { return 0 <= (intptr_t)this && (intptr_t)this < number_of_byte_registers; }
const char* name() const; const char* name() const;
int encoding_nocheck() const { return (intptr_t)this; } int encoding_nocheck() const { return (intptr_t)this; }
unsigned long bit(bool yes = true) const { return yes << encoding(); }
// Return the bit which represents this register. This is intended
// to be ORed into a bitmask: for usage see class RegSet below.
unsigned long bit(bool should_set = true) const { return should_set ? 1 << encoding() : 0; }
}; };
// The integer registers of the aarch64 architecture // The integer registers of the aarch64 architecture

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -85,8 +85,7 @@ int Assembler::branch_destination(int inst, int pos) {
} }
// Low-level andi-one-instruction-macro. // Low-level andi-one-instruction-macro.
void Assembler::andi(Register a, Register s, const int ui16) { void Assembler::andi(Register a, Register s, const long ui16) {
assert(is_uimm(ui16, 16), "must be 16-bit unsigned immediate");
if (is_power_of_2_long(((jlong) ui16)+1)) { if (is_power_of_2_long(((jlong) ui16)+1)) {
// pow2minus1 // pow2minus1
clrldi(a, s, 64-log2_long((((jlong) ui16)+1))); clrldi(a, s, 64-log2_long((((jlong) ui16)+1)));
@ -97,6 +96,7 @@ void Assembler::andi(Register a, Register s, const int ui16) {
// negpow2 // negpow2
clrrdi(a, s, log2_long((jlong)-ui16)); clrrdi(a, s, log2_long((jlong)-ui16));
} else { } else {
assert(is_uimm(ui16, 16), "must be 16-bit unsigned immediate");
andi_(a, s, ui16); andi_(a, s, ui16);
} }
} }
@ -356,7 +356,6 @@ void Assembler::load_const(Register d, long x, Register tmp) {
// 16 bit immediate offset. // 16 bit immediate offset.
int Assembler::load_const_optimized(Register d, long x, Register tmp, bool return_simm16_rest) { int Assembler::load_const_optimized(Register d, long x, Register tmp, bool return_simm16_rest) {
// Avoid accidentally trying to use R0 for indexed addressing. // Avoid accidentally trying to use R0 for indexed addressing.
assert(d != R0, "R0 not allowed");
assert_different_registers(d, tmp); assert_different_registers(d, tmp);
short xa, xb, xc, xd; // Four 16-bit chunks of const. short xa, xb, xc, xd; // Four 16-bit chunks of const.
@ -370,6 +369,58 @@ int Assembler::load_const_optimized(Register d, long x, Register tmp, bool retur
return 0; return 0;
} }
int retval = 0;
if (return_simm16_rest) {
retval = xd;
x = rem << 16;
xd = 0;
}
if (d == R0) { // Can't use addi.
if (is_simm(x, 32)) { // opt 2: simm32
lis(d, x >> 16);
if (xd) ori(d, d, (unsigned short)xd);
} else {
// 64-bit value: x = xa xb xc xd
xa = (x >> 48) & 0xffff;
xb = (x >> 32) & 0xffff;
xc = (x >> 16) & 0xffff;
bool xa_loaded = (xb & 0x8000) ? (xa != -1) : (xa != 0);
if (tmp == noreg || (xc == 0 && xd == 0)) {
if (xa_loaded) {
lis(d, xa);
if (xb) { ori(d, d, (unsigned short)xb); }
} else {
li(d, xb);
}
sldi(d, d, 32);
if (xc) { oris(d, d, (unsigned short)xc); }
if (xd) { ori( d, d, (unsigned short)xd); }
} else {
// Exploit instruction level parallelism if we have a tmp register.
bool xc_loaded = (xd & 0x8000) ? (xc != -1) : (xc != 0);
if (xa_loaded) {
lis(tmp, xa);
}
if (xc_loaded) {
lis(d, xc);
}
if (xa_loaded) {
if (xb) { ori(tmp, tmp, (unsigned short)xb); }
} else {
li(tmp, xb);
}
if (xc_loaded) {
if (xd) { ori(d, d, (unsigned short)xd); }
} else {
li(d, xd);
}
insrdi(d, tmp, 32, 0);
}
}
return retval;
}
xc = rem & 0xFFFF; // Next 16-bit chunk. xc = rem & 0xFFFF; // Next 16-bit chunk.
rem = (rem >> 16) + ((unsigned short)xc >> 15); // Compensation for sign extend. rem = (rem >> 16) + ((unsigned short)xc >> 15); // Compensation for sign extend.
@ -377,28 +428,27 @@ int Assembler::load_const_optimized(Register d, long x, Register tmp, bool retur
lis(d, xc); lis(d, xc);
} else { // High 32 bits needed. } else { // High 32 bits needed.
if (tmp != noreg) { // opt 3: We have a temp reg. if (tmp != noreg && (int)x != 0) { // opt 3: We have a temp reg.
// No carry propagation between xc and higher chunks here (use logical instructions). // No carry propagation between xc and higher chunks here (use logical instructions).
xa = (x >> 48) & 0xffff; xa = (x >> 48) & 0xffff;
xb = (x >> 32) & 0xffff; // No sign compensation, we use lis+ori or li to allow usage of R0. xb = (x >> 32) & 0xffff; // No sign compensation, we use lis+ori or li to allow usage of R0.
bool load_xa = (xa != 0) || (xb < 0); bool xa_loaded = (xb & 0x8000) ? (xa != -1) : (xa != 0);
bool return_xd = false; bool return_xd = false;
if (load_xa) { lis(tmp, xa); } if (xa_loaded) { lis(tmp, xa); }
if (xc) { lis(d, xc); } if (xc) { lis(d, xc); }
if (load_xa) { if (xa_loaded) {
if (xb) { ori(tmp, tmp, (unsigned short)xb); } // No addi, we support tmp == R0. if (xb) { ori(tmp, tmp, (unsigned short)xb); } // No addi, we support tmp == R0.
} else { } else {
li(tmp, xb); // non-negative li(tmp, xb);
} }
if (xc) { if (xc) {
if (return_simm16_rest && xd >= 0) { return_xd = true; } // >= 0 to avoid carry propagation after insrdi/rldimi. if (xd) { addi(d, d, xd); }
else if (xd) { addi(d, d, xd); }
} else { } else {
li(d, xd); li(d, xd);
} }
insrdi(d, tmp, 32, 0); insrdi(d, tmp, 32, 0);
return return_xd ? xd : 0; // non-negative return retval;
} }
xb = rem & 0xFFFF; // Next 16-bit chunk. xb = rem & 0xFFFF; // Next 16-bit chunk.
@ -417,12 +467,52 @@ int Assembler::load_const_optimized(Register d, long x, Register tmp, bool retur
if (xc) { addis(d, d, xc); } if (xc) { addis(d, d, xc); }
} }
// opt 5: Return offset to be inserted into following instruction.
if (return_simm16_rest) return xd;
if (xd) { addi(d, d, xd); } if (xd) { addi(d, d, xd); }
return retval;
}
// We emit only one addition to s to optimize latency.
int Assembler::add_const_optimized(Register d, Register s, long x, Register tmp, bool return_simm16_rest) {
assert(s != R0 && s != tmp, "unsupported");
long rem = x;
// Case 1: Can use mr or addi.
short xd = rem & 0xFFFF; // Lowest 16-bit chunk.
rem = (rem >> 16) + ((unsigned short)xd >> 15);
if (rem == 0) {
if (xd == 0) {
if (d != s) { mr(d, s); }
return 0; return 0;
} }
if (return_simm16_rest) {
return xd;
}
addi(d, s, xd);
return 0;
}
// Case 2: Can use addis.
if (xd == 0) {
short xc = rem & 0xFFFF; // 2nd 16-bit chunk.
rem = (rem >> 16) + ((unsigned short)xd >> 15);
if (rem == 0) {
addis(d, s, xc);
return 0;
}
}
// Other cases: load & add.
Register tmp1 = tmp,
tmp2 = noreg;
if ((d != tmp) && (d != s)) {
// Can use d.
tmp1 = d;
tmp2 = tmp;
}
int simm16_rest = load_const_optimized(tmp1, x, tmp2, return_simm16_rest);
add(d, tmp1, s);
return simm16_rest;
}
#ifndef PRODUCT #ifndef PRODUCT
// Test of ppc assembler. // Test of ppc assembler.

View file

@ -224,10 +224,13 @@ class Assembler : public AbstractAssembler {
ADDIS_OPCODE = (15u << OPCODE_SHIFT), ADDIS_OPCODE = (15u << OPCODE_SHIFT),
ADDIC__OPCODE = (13u << OPCODE_SHIFT), ADDIC__OPCODE = (13u << OPCODE_SHIFT),
ADDE_OPCODE = (31u << OPCODE_SHIFT | 138u << 1), ADDE_OPCODE = (31u << OPCODE_SHIFT | 138u << 1),
ADDME_OPCODE = (31u << OPCODE_SHIFT | 234u << 1),
ADDZE_OPCODE = (31u << OPCODE_SHIFT | 202u << 1),
SUBF_OPCODE = (31u << OPCODE_SHIFT | 40u << 1), SUBF_OPCODE = (31u << OPCODE_SHIFT | 40u << 1),
SUBFC_OPCODE = (31u << OPCODE_SHIFT | 8u << 1), SUBFC_OPCODE = (31u << OPCODE_SHIFT | 8u << 1),
SUBFE_OPCODE = (31u << OPCODE_SHIFT | 136u << 1), SUBFE_OPCODE = (31u << OPCODE_SHIFT | 136u << 1),
SUBFIC_OPCODE = (8u << OPCODE_SHIFT), SUBFIC_OPCODE = (8u << OPCODE_SHIFT),
SUBFME_OPCODE = (31u << OPCODE_SHIFT | 232u << 1),
SUBFZE_OPCODE = (31u << OPCODE_SHIFT | 200u << 1), SUBFZE_OPCODE = (31u << OPCODE_SHIFT | 200u << 1),
DIVW_OPCODE = (31u << OPCODE_SHIFT | 491u << 1), DIVW_OPCODE = (31u << OPCODE_SHIFT | 491u << 1),
MULLW_OPCODE = (31u << OPCODE_SHIFT | 235u << 1), MULLW_OPCODE = (31u << OPCODE_SHIFT | 235u << 1),
@ -657,6 +660,9 @@ class Assembler : public AbstractAssembler {
SYNC_OPCODE = (31u << OPCODE_SHIFT | 598u << 1), SYNC_OPCODE = (31u << OPCODE_SHIFT | 598u << 1),
EIEIO_OPCODE = (31u << OPCODE_SHIFT | 854u << 1), EIEIO_OPCODE = (31u << OPCODE_SHIFT | 854u << 1),
// Wait instructions for polling.
WAIT_OPCODE = (31u << OPCODE_SHIFT | 62u << 1),
// Trap instructions // Trap instructions
TDI_OPCODE = (2u << OPCODE_SHIFT), TDI_OPCODE = (2u << OPCODE_SHIFT),
TWI_OPCODE = (3u << OPCODE_SHIFT), TWI_OPCODE = (3u << OPCODE_SHIFT),
@ -666,8 +672,10 @@ class Assembler : public AbstractAssembler {
// Atomics. // Atomics.
LWARX_OPCODE = (31u << OPCODE_SHIFT | 20u << 1), LWARX_OPCODE = (31u << OPCODE_SHIFT | 20u << 1),
LDARX_OPCODE = (31u << OPCODE_SHIFT | 84u << 1), LDARX_OPCODE = (31u << OPCODE_SHIFT | 84u << 1),
LQARX_OPCODE = (31u << OPCODE_SHIFT | 276u << 1),
STWCX_OPCODE = (31u << OPCODE_SHIFT | 150u << 1), STWCX_OPCODE = (31u << OPCODE_SHIFT | 150u << 1),
STDCX_OPCODE = (31u << OPCODE_SHIFT | 214u << 1) STDCX_OPCODE = (31u << OPCODE_SHIFT | 214u << 1),
STQCX_OPCODE = (31u << OPCODE_SHIFT | 182u << 1)
}; };
@ -1171,6 +1179,14 @@ class Assembler : public AbstractAssembler {
inline void adde_( Register d, Register a, Register b); inline void adde_( Register d, Register a, Register b);
inline void subfe( Register d, Register a, Register b); inline void subfe( Register d, Register a, Register b);
inline void subfe_( Register d, Register a, Register b); inline void subfe_( Register d, Register a, Register b);
inline void addme( Register d, Register a);
inline void addme_( Register d, Register a);
inline void subfme( Register d, Register a);
inline void subfme_(Register d, Register a);
inline void addze( Register d, Register a);
inline void addze_( Register d, Register a);
inline void subfze( Register d, Register a);
inline void subfze_(Register d, Register a);
inline void neg( Register d, Register a); inline void neg( Register d, Register a);
inline void neg_( Register d, Register a); inline void neg_( Register d, Register a);
inline void mulli( Register d, Register a, int si16); inline void mulli( Register d, Register a, int si16);
@ -1189,6 +1205,38 @@ class Assembler : public AbstractAssembler {
inline void divw( Register d, Register a, Register b); inline void divw( Register d, Register a, Register b);
inline void divw_( Register d, Register a, Register b); inline void divw_( Register d, Register a, Register b);
// Fixed-Point Arithmetic Instructions with Overflow detection
inline void addo( Register d, Register a, Register b);
inline void addo_( Register d, Register a, Register b);
inline void subfo( Register d, Register a, Register b);
inline void subfo_( Register d, Register a, Register b);
inline void addco( Register d, Register a, Register b);
inline void addco_( Register d, Register a, Register b);
inline void subfco( Register d, Register a, Register b);
inline void subfco_( Register d, Register a, Register b);
inline void addeo( Register d, Register a, Register b);
inline void addeo_( Register d, Register a, Register b);
inline void subfeo( Register d, Register a, Register b);
inline void subfeo_( Register d, Register a, Register b);
inline void addmeo( Register d, Register a);
inline void addmeo_( Register d, Register a);
inline void subfmeo( Register d, Register a);
inline void subfmeo_(Register d, Register a);
inline void addzeo( Register d, Register a);
inline void addzeo_( Register d, Register a);
inline void subfzeo( Register d, Register a);
inline void subfzeo_(Register d, Register a);
inline void nego( Register d, Register a);
inline void nego_( Register d, Register a);
inline void mulldo( Register d, Register a, Register b);
inline void mulldo_( Register d, Register a, Register b);
inline void mullwo( Register d, Register a, Register b);
inline void mullwo_( Register d, Register a, Register b);
inline void divdo( Register d, Register a, Register b);
inline void divdo_( Register d, Register a, Register b);
inline void divwo( Register d, Register a, Register b);
inline void divwo_( Register d, Register a, Register b);
// extended mnemonics // extended mnemonics
inline void li( Register d, int si16); inline void li( Register d, int si16);
inline void lis( Register d, int si16); inline void lis( Register d, int si16);
@ -1303,7 +1351,7 @@ class Assembler : public AbstractAssembler {
inline void isel_0( Register d, ConditionRegister cr, Condition cc, Register b = noreg); inline void isel_0( Register d, ConditionRegister cr, Condition cc, Register b = noreg);
// PPC 1, section 3.3.11, Fixed-Point Logical Instructions // PPC 1, section 3.3.11, Fixed-Point Logical Instructions
void andi( Register a, Register s, int ui16); // optimized version void andi( Register a, Register s, long ui16); // optimized version
inline void andi_( Register a, Register s, int ui16); inline void andi_( Register a, Register s, int ui16);
inline void andis_( Register a, Register s, int ui16); inline void andis_( Register a, Register s, int ui16);
inline void ori( Register a, Register s, int ui16); inline void ori( Register a, Register s, int ui16);
@ -1688,14 +1736,21 @@ class Assembler : public AbstractAssembler {
inline void isync(); inline void isync();
inline void elemental_membar(int e); // Elemental Memory Barriers (>=Power 8) inline void elemental_membar(int e); // Elemental Memory Barriers (>=Power 8)
// Wait instructions for polling. Attention: May result in SIGILL.
inline void wait();
inline void waitrsv(); // >=Power7
// atomics // atomics
inline void lwarx_unchecked(Register d, Register a, Register b, int eh1 = 0); inline void lwarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
inline void ldarx_unchecked(Register d, Register a, Register b, int eh1 = 0); inline void ldarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
inline void lqarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
inline bool lxarx_hint_exclusive_access(); inline bool lxarx_hint_exclusive_access();
inline void lwarx( Register d, Register a, Register b, bool hint_exclusive_access = false); inline void lwarx( Register d, Register a, Register b, bool hint_exclusive_access = false);
inline void ldarx( Register d, Register a, Register b, bool hint_exclusive_access = false); inline void ldarx( Register d, Register a, Register b, bool hint_exclusive_access = false);
inline void lqarx( Register d, Register a, Register b, bool hint_exclusive_access = false);
inline void stwcx_( Register s, Register a, Register b); inline void stwcx_( Register s, Register a, Register b);
inline void stdcx_( Register s, Register a, Register b); inline void stdcx_( Register s, Register a, Register b);
inline void stqcx_( Register s, Register a, Register b);
// Instructions for adjusting thread priority for simultaneous // Instructions for adjusting thread priority for simultaneous
// multithreading (SMT) on Power5. // multithreading (SMT) on Power5.
@ -2054,10 +2109,13 @@ class Assembler : public AbstractAssembler {
// Atomics: use ra0mem to disallow R0 as base. // Atomics: use ra0mem to disallow R0 as base.
inline void lwarx_unchecked(Register d, Register b, int eh1); inline void lwarx_unchecked(Register d, Register b, int eh1);
inline void ldarx_unchecked(Register d, Register b, int eh1); inline void ldarx_unchecked(Register d, Register b, int eh1);
inline void lqarx_unchecked(Register d, Register b, int eh1);
inline void lwarx( Register d, Register b, bool hint_exclusive_access); inline void lwarx( Register d, Register b, bool hint_exclusive_access);
inline void ldarx( Register d, Register b, bool hint_exclusive_access); inline void ldarx( Register d, Register b, bool hint_exclusive_access);
inline void lqarx( Register d, Register b, bool hint_exclusive_access);
inline void stwcx_(Register s, Register b); inline void stwcx_(Register s, Register b);
inline void stdcx_(Register s, Register b); inline void stdcx_(Register s, Register b);
inline void stqcx_(Register s, Register b);
inline void lfs( FloatRegister d, int si16); inline void lfs( FloatRegister d, int si16);
inline void lfsx( FloatRegister d, Register b); inline void lfsx( FloatRegister d, Register b);
inline void lfd( FloatRegister d, int si16); inline void lfd( FloatRegister d, int si16);
@ -2120,6 +2178,20 @@ class Assembler : public AbstractAssembler {
return load_const_optimized(d, (long)(unsigned long)a, tmp, return_simm16_rest); return load_const_optimized(d, (long)(unsigned long)a, tmp, return_simm16_rest);
} }
// If return_simm16_rest, the return value needs to get added afterwards.
int add_const_optimized(Register d, Register s, long x, Register tmp = R0, bool return_simm16_rest = false);
inline int add_const_optimized(Register d, Register s, void* a, Register tmp = R0, bool return_simm16_rest = false) {
return add_const_optimized(d, s, (long)(unsigned long)a, tmp, return_simm16_rest);
}
// If return_simm16_rest, the return value needs to get added afterwards.
inline int sub_const_optimized(Register d, Register s, long x, Register tmp = R0, bool return_simm16_rest = false) {
return add_const_optimized(d, s, -x, tmp, return_simm16_rest);
}
inline int sub_const_optimized(Register d, Register s, void* a, Register tmp = R0, bool return_simm16_rest = false) {
return sub_const_optimized(d, s, (long)(unsigned long)a, tmp, return_simm16_rest);
}
// Creation // Creation
Assembler(CodeBuffer* code) : AbstractAssembler(code) { Assembler(CodeBuffer* code) : AbstractAssembler(code) {
#ifdef CHECK_DELAY #ifdef CHECK_DELAY

View file

@ -100,6 +100,14 @@ inline void Assembler::adde( Register d, Register a, Register b) { emit_int32(
inline void Assembler::adde_( Register d, Register a, Register b) { emit_int32(ADDE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); } inline void Assembler::adde_( Register d, Register a, Register b) { emit_int32(ADDE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); }
inline void Assembler::subfe( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(0)); } inline void Assembler::subfe( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(0)); }
inline void Assembler::subfe_( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); } inline void Assembler::subfe_( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); }
inline void Assembler::addme( Register d, Register a) { emit_int32(ADDME_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); }
inline void Assembler::addme_( Register d, Register a) { emit_int32(ADDME_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); }
inline void Assembler::subfme( Register d, Register a) { emit_int32(SUBFME_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); }
inline void Assembler::subfme_(Register d, Register a) { emit_int32(SUBFME_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); }
inline void Assembler::addze( Register d, Register a) { emit_int32(ADDZE_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); }
inline void Assembler::addze_( Register d, Register a) { emit_int32(ADDZE_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); }
inline void Assembler::subfze( Register d, Register a) { emit_int32(SUBFZE_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); }
inline void Assembler::subfze_(Register d, Register a) { emit_int32(SUBFZE_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); }
inline void Assembler::neg( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); } inline void Assembler::neg( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(0) | rc(0)); }
inline void Assembler::neg_( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); } inline void Assembler::neg_( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(0) | rc(1)); }
inline void Assembler::mulli( Register d, Register a, int si16) { emit_int32(MULLI_OPCODE | rt(d) | ra(a) | simm(si16, 16)); } inline void Assembler::mulli( Register d, Register a, int si16) { emit_int32(MULLI_OPCODE | rt(d) | ra(a) | simm(si16, 16)); }
@ -118,6 +126,38 @@ inline void Assembler::divd_( Register d, Register a, Register b) { emit_int32(
inline void Assembler::divw( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(0)); } inline void Assembler::divw( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(0)); }
inline void Assembler::divw_( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); } inline void Assembler::divw_( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); }
// Fixed-Point Arithmetic Instructions with Overflow detection
inline void Assembler::addo( Register d, Register a, Register b) { emit_int32(ADD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::addo_( Register d, Register a, Register b) { emit_int32(ADD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::subfo( Register d, Register a, Register b) { emit_int32(SUBF_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::subfo_( Register d, Register a, Register b) { emit_int32(SUBF_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::addco( Register d, Register a, Register b) { emit_int32(ADDC_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::addco_( Register d, Register a, Register b) { emit_int32(ADDC_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::subfco( Register d, Register a, Register b) { emit_int32(SUBFC_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::subfco_( Register d, Register a, Register b) { emit_int32(SUBFC_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::addeo( Register d, Register a, Register b) { emit_int32(ADDE_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::addeo_( Register d, Register a, Register b) { emit_int32(ADDE_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::subfeo( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::subfeo_( Register d, Register a, Register b) { emit_int32(SUBFE_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::addmeo( Register d, Register a) { emit_int32(ADDME_OPCODE | rt(d) | ra(a) | oe(1) | rc(0)); }
inline void Assembler::addmeo_( Register d, Register a) { emit_int32(ADDME_OPCODE | rt(d) | ra(a) | oe(1) | rc(1)); }
inline void Assembler::subfmeo( Register d, Register a) { emit_int32(SUBFME_OPCODE | rt(d) | ra(a) | oe(1) | rc(0)); }
inline void Assembler::subfmeo_(Register d, Register a) { emit_int32(SUBFME_OPCODE | rt(d) | ra(a) | oe(1) | rc(1)); }
inline void Assembler::addzeo( Register d, Register a) { emit_int32(ADDZE_OPCODE | rt(d) | ra(a) | oe(1) | rc(0)); }
inline void Assembler::addzeo_( Register d, Register a) { emit_int32(ADDZE_OPCODE | rt(d) | ra(a) | oe(1) | rc(1)); }
inline void Assembler::subfzeo( Register d, Register a) { emit_int32(SUBFZE_OPCODE | rt(d) | ra(a) | oe(1) | rc(0)); }
inline void Assembler::subfzeo_(Register d, Register a) { emit_int32(SUBFZE_OPCODE | rt(d) | ra(a) | oe(1) | rc(1)); }
inline void Assembler::nego( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(1) | rc(0)); }
inline void Assembler::nego_( Register d, Register a) { emit_int32(NEG_OPCODE | rt(d) | ra(a) | oe(1) | rc(1)); }
inline void Assembler::mulldo( Register d, Register a, Register b) { emit_int32(MULLD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::mulldo_( Register d, Register a, Register b) { emit_int32(MULLD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::mullwo( Register d, Register a, Register b) { emit_int32(MULLW_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::mullwo_( Register d, Register a, Register b) { emit_int32(MULLW_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::divdo( Register d, Register a, Register b) { emit_int32(DIVD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::divdo_( Register d, Register a, Register b) { emit_int32(DIVD_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
inline void Assembler::divwo( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(0)); }
inline void Assembler::divwo_( Register d, Register a, Register b) { emit_int32(DIVW_OPCODE | rt(d) | ra(a) | rb(b) | oe(1) | rc(1)); }
// extended mnemonics // extended mnemonics
inline void Assembler::li( Register d, int si16) { Assembler::addi_r0ok( d, R0, si16); } inline void Assembler::li( Register d, int si16) { Assembler::addi_r0ok( d, R0, si16); }
inline void Assembler::lis( Register d, int si16) { Assembler::addis_r0ok(d, R0, si16); } inline void Assembler::lis( Register d, int si16) { Assembler::addis_r0ok(d, R0, si16); }
@ -540,15 +580,22 @@ inline void Assembler::eieio() { emit_int32( EIEIO_OPCODE); }
inline void Assembler::isync() { emit_int32( ISYNC_OPCODE); } inline void Assembler::isync() { emit_int32( ISYNC_OPCODE); }
inline void Assembler::elemental_membar(int e) { assert(0 < e && e < 16, "invalid encoding"); emit_int32( SYNC_OPCODE | e1215(e)); } inline void Assembler::elemental_membar(int e) { assert(0 < e && e < 16, "invalid encoding"); emit_int32( SYNC_OPCODE | e1215(e)); }
// Wait instructions for polling.
inline void Assembler::wait() { emit_int32( WAIT_OPCODE); }
inline void Assembler::waitrsv() { emit_int32( WAIT_OPCODE | 1<<(31-10)); } // WC=0b01 >=Power7
// atomics // atomics
// Use ra0mem to disallow R0 as base. // Use ra0mem to disallow R0 as base.
inline void Assembler::lwarx_unchecked(Register d, Register a, Register b, int eh1) { emit_int32( LWARX_OPCODE | rt(d) | ra0mem(a) | rb(b) | eh(eh1)); } inline void Assembler::lwarx_unchecked(Register d, Register a, Register b, int eh1) { emit_int32( LWARX_OPCODE | rt(d) | ra0mem(a) | rb(b) | eh(eh1)); }
inline void Assembler::ldarx_unchecked(Register d, Register a, Register b, int eh1) { emit_int32( LDARX_OPCODE | rt(d) | ra0mem(a) | rb(b) | eh(eh1)); } inline void Assembler::ldarx_unchecked(Register d, Register a, Register b, int eh1) { emit_int32( LDARX_OPCODE | rt(d) | ra0mem(a) | rb(b) | eh(eh1)); }
inline void Assembler::lqarx_unchecked(Register d, Register a, Register b, int eh1) { emit_int32( LQARX_OPCODE | rt(d) | ra0mem(a) | rb(b) | eh(eh1)); }
inline bool Assembler::lxarx_hint_exclusive_access() { return VM_Version::has_lxarxeh(); } inline bool Assembler::lxarx_hint_exclusive_access() { return VM_Version::has_lxarxeh(); }
inline void Assembler::lwarx( Register d, Register a, Register b, bool hint_exclusive_access) { lwarx_unchecked(d, a, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); } inline void Assembler::lwarx( Register d, Register a, Register b, bool hint_exclusive_access) { lwarx_unchecked(d, a, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::ldarx( Register d, Register a, Register b, bool hint_exclusive_access) { ldarx_unchecked(d, a, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); } inline void Assembler::ldarx( Register d, Register a, Register b, bool hint_exclusive_access) { ldarx_unchecked(d, a, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::lqarx( Register d, Register a, Register b, bool hint_exclusive_access) { lqarx_unchecked(d, a, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::stwcx_(Register s, Register a, Register b) { emit_int32( STWCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } inline void Assembler::stwcx_(Register s, Register a, Register b) { emit_int32( STWCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); }
inline void Assembler::stdcx_(Register s, Register a, Register b) { emit_int32( STDCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } inline void Assembler::stdcx_(Register s, Register a, Register b) { emit_int32( STDCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); }
inline void Assembler::stqcx_(Register s, Register a, Register b) { emit_int32( STQCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); }
// Instructions for adjusting thread priority // Instructions for adjusting thread priority
// for simultaneous multithreading (SMT) on POWER5. // for simultaneous multithreading (SMT) on POWER5.
@ -873,10 +920,13 @@ inline void Assembler::dcbtstct(Register s2, int ct) { emit_int32( DCBTST_OPCOD
// ra0 version // ra0 version
inline void Assembler::lwarx_unchecked(Register d, Register b, int eh1) { emit_int32( LWARX_OPCODE | rt(d) | rb(b) | eh(eh1)); } inline void Assembler::lwarx_unchecked(Register d, Register b, int eh1) { emit_int32( LWARX_OPCODE | rt(d) | rb(b) | eh(eh1)); }
inline void Assembler::ldarx_unchecked(Register d, Register b, int eh1) { emit_int32( LDARX_OPCODE | rt(d) | rb(b) | eh(eh1)); } inline void Assembler::ldarx_unchecked(Register d, Register b, int eh1) { emit_int32( LDARX_OPCODE | rt(d) | rb(b) | eh(eh1)); }
inline void Assembler::lqarx_unchecked(Register d, Register b, int eh1) { emit_int32( LQARX_OPCODE | rt(d) | rb(b) | eh(eh1)); }
inline void Assembler::lwarx( Register d, Register b, bool hint_exclusive_access){ lwarx_unchecked(d, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); } inline void Assembler::lwarx( Register d, Register b, bool hint_exclusive_access){ lwarx_unchecked(d, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::ldarx( Register d, Register b, bool hint_exclusive_access){ ldarx_unchecked(d, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); } inline void Assembler::ldarx( Register d, Register b, bool hint_exclusive_access){ ldarx_unchecked(d, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::lqarx( Register d, Register b, bool hint_exclusive_access){ lqarx_unchecked(d, b, (hint_exclusive_access && lxarx_hint_exclusive_access() && UseExtendedLoadAndReserveInstructionsPPC64) ? 1 : 0); }
inline void Assembler::stwcx_(Register s, Register b) { emit_int32( STWCX_OPCODE | rs(s) | rb(b) | rc(1)); } inline void Assembler::stwcx_(Register s, Register b) { emit_int32( STWCX_OPCODE | rs(s) | rb(b) | rc(1)); }
inline void Assembler::stdcx_(Register s, Register b) { emit_int32( STDCX_OPCODE | rs(s) | rb(b) | rc(1)); } inline void Assembler::stdcx_(Register s, Register b) { emit_int32( STDCX_OPCODE | rs(s) | rb(b) | rc(1)); }
inline void Assembler::stqcx_(Register s, Register b) { emit_int32( STQCX_OPCODE | rs(s) | rb(b) | rc(1)); }
// ra0 version // ra0 version
inline void Assembler::lfs( FloatRegister d, int si16) { emit_int32( LFS_OPCODE | frt(d) | simm(si16,16)); } inline void Assembler::lfs( FloatRegister d, int si16) { emit_int32( LFS_OPCODE | frt(d) | simm(si16,16)); }

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -47,7 +47,7 @@ define_pd_global(intx, ConditionalMoveLimit, 3);
define_pd_global(intx, FLOATPRESSURE, 28); define_pd_global(intx, FLOATPRESSURE, 28);
define_pd_global(intx, FreqInlineSize, 175); define_pd_global(intx, FreqInlineSize, 175);
define_pd_global(intx, MinJumpTableSize, 10); define_pd_global(intx, MinJumpTableSize, 10);
define_pd_global(intx, INTPRESSURE, 25); define_pd_global(intx, INTPRESSURE, 26);
define_pd_global(intx, InteriorEntryAlignment, 16); define_pd_global(intx, InteriorEntryAlignment, 16);
define_pd_global(size_t, NewSizeThreadIncrease, ScaleForWordSize(4*K)); define_pd_global(size_t, NewSizeThreadIncrease, ScaleForWordSize(4*K));
define_pd_global(intx, RegisterCostAreaRatio, 16000); define_pd_global(intx, RegisterCostAreaRatio, 16000);

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2013 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -55,10 +55,12 @@ define_pd_global(bool, RewriteFrequentPairs, true);
define_pd_global(bool, UseMembar, false); define_pd_global(bool, UseMembar, false);
define_pd_global(bool, PreserveFramePointer, false);
// GC Ergo Flags // GC Ergo Flags
define_pd_global(size_t, CMSYoungGenPerWorker, 16*M); // Default max size of CMS young gen, per GC worker thread. define_pd_global(size_t, CMSYoungGenPerWorker, 16*M); // Default max size of CMS young gen, per GC worker thread.
define_pd_global(uintx, TypeProfileLevel, 0); define_pd_global(uintx, TypeProfileLevel, 111);
// Platform dependent flag handling: flags only defined on this platform. // Platform dependent flag handling: flags only defined on this platform.
#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct) \ #define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct) \
@ -71,14 +73,26 @@ define_pd_global(uintx, TypeProfileLevel, 0);
\ \
product(uintx, PowerArchitecturePPC64, 0, \ product(uintx, PowerArchitecturePPC64, 0, \
"CPU Version: x for PowerX. Currently recognizes Power5 to " \ "CPU Version: x for PowerX. Currently recognizes Power5 to " \
"Power7. Default is 0. CPUs newer than Power7 will be " \ "Power8. Default is 0. Newer CPUs will be recognized as Power8.") \
"recognized as Power7.") \
\ \
/* Reoptimize code-sequences of calls at runtime, e.g. replace an */ \ /* Reoptimize code-sequences of calls at runtime, e.g. replace an */ \
/* indirect call by a direct call. */ \ /* indirect call by a direct call. */ \
product(bool, ReoptimizeCallSequences, true, \ product(bool, ReoptimizeCallSequences, true, \
"Reoptimize code-sequences of calls at runtime.") \ "Reoptimize code-sequences of calls at runtime.") \
\ \
/* Power 8: Configure Data Stream Control Register. */ \
product(uint64_t,DSCR_PPC64, (uintx)-1, \
"Power8 or later: Specify encoded value for Data Stream Control " \
"Register") \
product(uint64_t,DSCR_DPFD_PPC64, 8, \
"Power8 or later: DPFD (default prefetch depth) value of the " \
"Data Stream Control Register." \
" 0: hardware default, 1: none, 2-7: min-max, 8: don't touch") \
product(uint64_t,DSCR_URG_PPC64, 8, \
"Power8 or later: URG (depth attainment urgency) value of the " \
"Data Stream Control Register." \
" 0: hardware default, 1: none, 2-7: min-max, 8: don't touch") \
\
product(bool, UseLoadInstructionsForStackBangingPPC64, false, \ product(bool, UseLoadInstructionsForStackBangingPPC64, false, \
"Use load instructions for stack banging.") \ "Use load instructions for stack banging.") \
\ \
@ -121,6 +135,41 @@ define_pd_global(uintx, TypeProfileLevel, 0);
\ \
product(bool, ZapMemory, false, "Write 0x0101... to empty memory." \ product(bool, ZapMemory, false, "Write 0x0101... to empty memory." \
" Use this to ease debugging.") \ " Use this to ease debugging.") \
\
/* Use Restricted Transactional Memory for lock eliding */ \
product(bool, UseRTMLocking, false, \
"Enable RTM lock eliding for inflated locks in compiled code") \
\
experimental(bool, UseRTMForStackLocks, false, \
"Enable RTM lock eliding for stack locks in compiled code") \
\
product(bool, UseRTMDeopt, false, \
"Perform deopt and recompilation based on RTM abort ratio") \
\
product(uintx, RTMRetryCount, 5, \
"Number of RTM retries on lock abort or busy") \
\
experimental(intx, RTMSpinLoopCount, 100, \
"Spin count for lock to become free before RTM retry") \
\
experimental(intx, RTMAbortThreshold, 1000, \
"Calculate abort ratio after this number of aborts") \
\
experimental(intx, RTMLockingThreshold, 10000, \
"Lock count at which to do RTM lock eliding without " \
"abort ratio calculation") \
\
experimental(intx, RTMAbortRatio, 50, \
"Lock abort ratio at which to stop use RTM lock eliding") \
\
experimental(intx, RTMTotalCountIncrRate, 64, \
"Increment total RTM attempted lock count once every n times") \
\
experimental(intx, RTMLockingCalculationDelay, 0, \
"Number of milliseconds to wait before start calculating aborts " \
"for RTM locking") \
\
experimental(bool, UseRTMXendForLockBusy, true, \
"Use RTM Xend instead of Xabort when lock busy") \
#endif // CPU_PPC_VM_GLOBALS_PPC_HPP #endif // CPU_PPC_VM_GLOBALS_PPC_HPP

View file

@ -446,7 +446,7 @@ void InterpreterMacroAssembler::get_u4(Register Rdst, Register Rsrc, int offset,
} }
// Load object from cpool->resolved_references(index). // Load object from cpool->resolved_references(index).
void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result, Register index) { void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result, Register index, Label *is_null) {
assert_different_registers(result, index); assert_different_registers(result, index);
get_constant_pool(result); get_constant_pool(result);
@ -469,7 +469,7 @@ void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result
#endif #endif
// Add in the index. // Add in the index.
add(result, tmp, result); add(result, tmp, result);
load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result); load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result, is_null);
} }
// Generate a subtype check: branch to ok_is_subtype if sub_klass is // Generate a subtype check: branch to ok_is_subtype if sub_klass is
@ -876,7 +876,6 @@ void InterpreterMacroAssembler::lock_object(Register monitor, Register object) {
// If condition is true we are done and hence we can store 0 in the displaced // If condition is true we are done and hence we can store 0 in the displaced
// header indicating it is a recursive lock. // header indicating it is a recursive lock.
bne(CCR0, slow_case); bne(CCR0, slow_case);
release();
std(R0/*==0!*/, BasicObjectLock::lock_offset_in_bytes() + std(R0/*==0!*/, BasicObjectLock::lock_offset_in_bytes() +
BasicLock::displaced_header_offset_in_bytes(), monitor); BasicLock::displaced_header_offset_in_bytes(), monitor);
b(done); b(done);
@ -1861,7 +1860,7 @@ void InterpreterMacroAssembler::profile_parameters_type(Register tmp1, Register
const Register mdp = tmp1; const Register mdp = tmp1;
add(mdp, tmp1, R28_mdx); add(mdp, tmp1, R28_mdx);
// Pffset of the current profile entry to update. // Offset of the current profile entry to update.
const Register entry_offset = tmp2; const Register entry_offset = tmp2;
// entry_offset = array len in number of cells // entry_offset = array len in number of cells
ld(entry_offset, in_bytes(ArrayData::array_len_offset()), mdp); ld(entry_offset, in_bytes(ArrayData::array_len_offset()), mdp);

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -85,7 +85,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype); Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
// Load object from cpool->resolved_references(index). // Load object from cpool->resolved_references(index).
void load_resolved_reference_at_index(Register result, Register index); void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);
void generate_stack_overflow_check_with_compare_and_throw(Register Rmem_frame_size, Register Rscratch1); void generate_stack_overflow_check_with_compare_and_throw(Register Rmem_frame_size, Register Rscratch1);
void load_receiver(Register Rparam_count, Register Rrecv_dst); void load_receiver(Register Rparam_count, Register Rrecv_dst);

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -427,7 +427,6 @@ address AbstractInterpreterGenerator::generate_result_handler_for(BasicType type
return entry; return entry;
} }
// Call an accessor method (assuming it is resolved, otherwise drop into // Call an accessor method (assuming it is resolved, otherwise drop into
// vanilla (slow path) entry. // vanilla (slow path) entry.
address InterpreterGenerator::generate_jump_to_normal_entry(void) { address InterpreterGenerator::generate_jump_to_normal_entry(void) {
@ -473,7 +472,8 @@ address InterpreterGenerator::generate_abstract_entry(void) {
// This is not a leaf but we have a JavaFrameAnchor now and we will // This is not a leaf but we have a JavaFrameAnchor now and we will
// check (create) exceptions afterward so this is ok. // check (create) exceptions afterward so this is ok.
__ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError),
R16_thread);
// Pop the C frame and restore LR. // Pop the C frame and restore LR.
__ pop_frame(); __ pop_frame();

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -47,4 +47,4 @@
} }
#endif #endif
#endif // CPU_PPC_VM_INTERPRETER_PPC_PP #endif // CPU_PPC_VM_INTERPRETER_PPC_HPP

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -1455,7 +1455,7 @@ void MacroAssembler::cmpxchgw(ConditionRegister flag, Register dest_current_valu
// Several special cases exist to avoid that unnecessary information is generated. // Several special cases exist to avoid that unnecessary information is generated.
// //
void MacroAssembler::cmpxchgd(ConditionRegister flag, void MacroAssembler::cmpxchgd(ConditionRegister flag,
Register dest_current_value, Register compare_value, Register exchange_value, Register dest_current_value, RegisterOrConstant compare_value, Register exchange_value,
Register addr_base, int semantics, bool cmpxchgx_hint, Register addr_base, int semantics, bool cmpxchgx_hint,
Register int_flag_success, Label* failed_ext, bool contention_hint) { Register int_flag_success, Label* failed_ext, bool contention_hint) {
Label retry; Label retry;
@ -1465,7 +1465,7 @@ void MacroAssembler::cmpxchgd(ConditionRegister flag,
// Save one branch if result is returned via register and result register is different from the other ones. // Save one branch if result is returned via register and result register is different from the other ones.
bool use_result_reg = (int_flag_success!=noreg); bool use_result_reg = (int_flag_success!=noreg);
bool preset_result_reg = (int_flag_success!=dest_current_value && int_flag_success!=compare_value && bool preset_result_reg = (int_flag_success!=dest_current_value && int_flag_success!=compare_value.register_or_noreg() &&
int_flag_success!=exchange_value && int_flag_success!=addr_base); int_flag_success!=exchange_value && int_flag_success!=addr_base);
assert(int_flag_success == noreg || failed_ext == NULL, "cannot have both"); assert(int_flag_success == noreg || failed_ext == NULL, "cannot have both");
@ -1481,7 +1481,7 @@ void MacroAssembler::cmpxchgd(ConditionRegister flag,
// Add simple guard in order to reduce risk of starving under high contention (recommended by IBM). // Add simple guard in order to reduce risk of starving under high contention (recommended by IBM).
if (contention_hint) { // Don't try to reserve if cmp fails. if (contention_hint) { // Don't try to reserve if cmp fails.
ld(dest_current_value, 0, addr_base); ld(dest_current_value, 0, addr_base);
cmpd(flag, dest_current_value, compare_value); cmpd(flag, compare_value, dest_current_value);
bne(flag, failed); bne(flag, failed);
} }
@ -1489,7 +1489,7 @@ void MacroAssembler::cmpxchgd(ConditionRegister flag,
bind(retry); bind(retry);
ldarx(dest_current_value, addr_base, cmpxchgx_hint); ldarx(dest_current_value, addr_base, cmpxchgx_hint);
cmpd(flag, dest_current_value, compare_value); cmpd(flag, compare_value, dest_current_value);
if (UseStaticBranchPredictionInCompareAndSwapPPC64) { if (UseStaticBranchPredictionInCompareAndSwapPPC64) {
bne_predict_not_taken(flag, failed); bne_predict_not_taken(flag, failed);
} else { } else {
@ -1873,7 +1873,6 @@ void MacroAssembler::biased_locking_enter(ConditionRegister cr_reg, Register obj
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0"); assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
// CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg). // CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg).
fence(); // TODO: replace by MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq ?
cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg, cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg,
/*compare_value=*/mark_reg, /*exchange_value=*/temp_reg, /*compare_value=*/mark_reg, /*exchange_value=*/temp_reg,
/*where=*/obj_reg, /*where=*/obj_reg,
@ -1909,7 +1908,6 @@ void MacroAssembler::biased_locking_enter(ConditionRegister cr_reg, Register obj
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0"); assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
// CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg). // CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg).
fence(); // TODO: replace by MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq ?
cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg, cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg,
/*compare_value=*/mark_reg, /*exchange_value=*/temp_reg, /*compare_value=*/mark_reg, /*exchange_value=*/temp_reg,
/*where=*/obj_reg, /*where=*/obj_reg,
@ -1946,7 +1944,6 @@ void MacroAssembler::biased_locking_enter(ConditionRegister cr_reg, Register obj
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0"); assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
// CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg). // CmpxchgX sets cr_reg to cmpX(temp2_reg, mark_reg).
fence(); // TODO: replace by MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq ?
cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg, cmpxchgd(/*flag=*/cr_reg, /*current_value=*/temp2_reg,
/*compare_value=*/mark_reg, /*exchange_value=*/temp_reg, /*compare_value=*/mark_reg, /*exchange_value=*/temp_reg,
/*where=*/obj_reg, /*where=*/obj_reg,
@ -1987,9 +1984,371 @@ void MacroAssembler::biased_locking_exit (ConditionRegister cr_reg, Register mar
beq(cr_reg, done); beq(cr_reg, done);
} }
// TM on PPC64.
void MacroAssembler::atomic_inc_ptr(Register addr, Register result, int simm16) {
Label retry;
bind(retry);
ldarx(result, addr, /*hint*/ false);
addi(result, result, simm16);
stdcx_(result, addr);
if (UseStaticBranchPredictionInCompareAndSwapPPC64) {
bne_predict_not_taken(CCR0, retry); // stXcx_ sets CCR0
} else {
bne( CCR0, retry); // stXcx_ sets CCR0
}
}
void MacroAssembler::atomic_ori_int(Register addr, Register result, int uimm16) {
Label retry;
bind(retry);
lwarx(result, addr, /*hint*/ false);
ori(result, result, uimm16);
stwcx_(result, addr);
if (UseStaticBranchPredictionInCompareAndSwapPPC64) {
bne_predict_not_taken(CCR0, retry); // stXcx_ sets CCR0
} else {
bne( CCR0, retry); // stXcx_ sets CCR0
}
}
#if INCLUDE_RTM_OPT
// Update rtm_counters based on abort status
// input: abort_status
// rtm_counters (RTMLockingCounters*)
void MacroAssembler::rtm_counters_update(Register abort_status, Register rtm_counters_Reg) {
// Mapping to keep PreciseRTMLockingStatistics similar to x86.
// x86 ppc (! means inverted, ? means not the same)
// 0 31 Set if abort caused by XABORT instruction.
// 1 ! 7 If set, the transaction may succeed on a retry. This bit is always clear if bit 0 is set.
// 2 13 Set if another logical processor conflicted with a memory address that was part of the transaction that aborted.
// 3 10 Set if an internal buffer overflowed.
// 4 ?12 Set if a debug breakpoint was hit.
// 5 ?32 Set if an abort occurred during execution of a nested transaction.
const int tm_failure_bit[] = {Assembler::tm_tabort, // Note: Seems like signal handler sets this, too.
Assembler::tm_failure_persistent, // inverted: transient
Assembler::tm_trans_cf,
Assembler::tm_footprint_of,
Assembler::tm_non_trans_cf,
Assembler::tm_suspended};
const bool tm_failure_inv[] = {false, true, false, false, false, false};
assert(sizeof(tm_failure_bit)/sizeof(int) == RTMLockingCounters::ABORT_STATUS_LIMIT, "adapt mapping!");
const Register addr_Reg = R0;
// Keep track of offset to where rtm_counters_Reg had pointed to.
int counters_offs = RTMLockingCounters::abort_count_offset();
addi(addr_Reg, rtm_counters_Reg, counters_offs);
const Register temp_Reg = rtm_counters_Reg;
//atomic_inc_ptr(addr_Reg, temp_Reg); We don't increment atomically
ldx(temp_Reg, addr_Reg);
addi(temp_Reg, temp_Reg, 1);
stdx(temp_Reg, addr_Reg);
if (PrintPreciseRTMLockingStatistics) {
int counters_offs_delta = RTMLockingCounters::abortX_count_offset() - counters_offs;
//mftexasr(abort_status); done by caller
for (int i = 0; i < RTMLockingCounters::ABORT_STATUS_LIMIT; i++) {
counters_offs += counters_offs_delta;
li(temp_Reg, counters_offs_delta); // can't use addi with R0
add(addr_Reg, addr_Reg, temp_Reg); // point to next counter
counters_offs_delta = sizeof(uintx);
Label check_abort;
rldicr_(temp_Reg, abort_status, tm_failure_bit[i], 0);
if (tm_failure_inv[i]) {
bne(CCR0, check_abort);
} else {
beq(CCR0, check_abort);
}
//atomic_inc_ptr(addr_Reg, temp_Reg); We don't increment atomically
ldx(temp_Reg, addr_Reg);
addi(temp_Reg, temp_Reg, 1);
stdx(temp_Reg, addr_Reg);
bind(check_abort);
}
}
li(temp_Reg, -counters_offs); // can't use addi with R0
add(rtm_counters_Reg, addr_Reg, temp_Reg); // restore
}
// Branch if (random & (count-1) != 0), count is 2^n
// tmp and CR0 are killed
void MacroAssembler::branch_on_random_using_tb(Register tmp, int count, Label& brLabel) {
mftb(tmp);
andi_(tmp, tmp, count-1);
bne(CCR0, brLabel);
}
// Perform abort ratio calculation, set no_rtm bit if high ratio.
// input: rtm_counters_Reg (RTMLockingCounters* address) - KILLED
void MacroAssembler::rtm_abort_ratio_calculation(Register rtm_counters_Reg,
RTMLockingCounters* rtm_counters,
Metadata* method_data) {
Label L_done, L_check_always_rtm1, L_check_always_rtm2;
if (RTMLockingCalculationDelay > 0) {
// Delay calculation.
ld(rtm_counters_Reg, (RegisterOrConstant)(intptr_t)RTMLockingCounters::rtm_calculation_flag_addr());
cmpdi(CCR0, rtm_counters_Reg, 0);
beq(CCR0, L_done);
load_const_optimized(rtm_counters_Reg, (address)rtm_counters, R0); // reload
}
// Abort ratio calculation only if abort_count > RTMAbortThreshold.
// Aborted transactions = abort_count * 100
// All transactions = total_count * RTMTotalCountIncrRate
// Set no_rtm bit if (Aborted transactions >= All transactions * RTMAbortRatio)
ld(R0, RTMLockingCounters::abort_count_offset(), rtm_counters_Reg);
cmpdi(CCR0, R0, RTMAbortThreshold);
blt(CCR0, L_check_always_rtm2);
mulli(R0, R0, 100);
const Register tmpReg = rtm_counters_Reg;
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
mulli(tmpReg, tmpReg, RTMTotalCountIncrRate);
mulli(tmpReg, tmpReg, RTMAbortRatio);
cmpd(CCR0, R0, tmpReg);
blt(CCR0, L_check_always_rtm1); // jump to reload
if (method_data != NULL) {
// Set rtm_state to "no rtm" in MDO.
// Not using a metadata relocation. Method and Class Loader are kept alive anyway.
// (See nmethod::metadata_do and CodeBuffer::finalize_oop_references.)
load_const(R0, (address)method_data + MethodData::rtm_state_offset_in_bytes(), tmpReg);
atomic_ori_int(R0, tmpReg, NoRTM);
}
b(L_done);
bind(L_check_always_rtm1);
load_const_optimized(rtm_counters_Reg, (address)rtm_counters, R0); // reload
bind(L_check_always_rtm2);
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
cmpdi(CCR0, tmpReg, RTMLockingThreshold / RTMTotalCountIncrRate);
blt(CCR0, L_done);
if (method_data != NULL) {
// Set rtm_state to "always rtm" in MDO.
// Not using a metadata relocation. See above.
load_const(R0, (address)method_data + MethodData::rtm_state_offset_in_bytes(), tmpReg);
atomic_ori_int(R0, tmpReg, UseRTM);
}
bind(L_done);
}
// Update counters and perform abort ratio calculation.
// input: abort_status_Reg
void MacroAssembler::rtm_profiling(Register abort_status_Reg, Register temp_Reg,
RTMLockingCounters* rtm_counters,
Metadata* method_data,
bool profile_rtm) {
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
// Update rtm counters based on state at abort.
// Reads abort_status_Reg, updates flags.
assert_different_registers(abort_status_Reg, temp_Reg);
load_const_optimized(temp_Reg, (address)rtm_counters, R0);
rtm_counters_update(abort_status_Reg, temp_Reg);
if (profile_rtm) {
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
rtm_abort_ratio_calculation(temp_Reg, rtm_counters, method_data);
}
}
// Retry on abort if abort's status indicates non-persistent failure.
// inputs: retry_count_Reg
// : abort_status_Reg
// output: retry_count_Reg decremented by 1
void MacroAssembler::rtm_retry_lock_on_abort(Register retry_count_Reg, Register abort_status_Reg,
Label& retryLabel, Label* checkRetry) {
Label doneRetry;
rldicr_(R0, abort_status_Reg, tm_failure_persistent, 0);
bne(CCR0, doneRetry);
if (checkRetry) { bind(*checkRetry); }
addic_(retry_count_Reg, retry_count_Reg, -1);
blt(CCR0, doneRetry);
smt_yield(); // Can't use wait(). No permission (SIGILL).
b(retryLabel);
bind(doneRetry);
}
// Spin and retry if lock is busy.
// inputs: box_Reg (monitor address)
// : retry_count_Reg
// output: retry_count_Reg decremented by 1
// CTR is killed
void MacroAssembler::rtm_retry_lock_on_busy(Register retry_count_Reg, Register owner_addr_Reg, Label& retryLabel) {
Label SpinLoop, doneRetry;
addic_(retry_count_Reg, retry_count_Reg, -1);
blt(CCR0, doneRetry);
li(R0, RTMSpinLoopCount);
mtctr(R0);
bind(SpinLoop);
smt_yield(); // Can't use waitrsv(). No permission (SIGILL).
bdz(retryLabel);
ld(R0, 0, owner_addr_Reg);
cmpdi(CCR0, R0, 0);
bne(CCR0, SpinLoop);
b(retryLabel);
bind(doneRetry);
}
// Use RTM for normal stack locks.
// Input: objReg (object to lock)
void MacroAssembler::rtm_stack_locking(ConditionRegister flag,
Register obj, Register mark_word, Register tmp,
Register retry_on_abort_count_Reg,
RTMLockingCounters* stack_rtm_counters,
Metadata* method_data, bool profile_rtm,
Label& DONE_LABEL, Label& IsInflated) {
assert(UseRTMForStackLocks, "why call this otherwise?");
assert(!UseBiasedLocking, "Biased locking is not supported with RTM locking");
Label L_rtm_retry, L_decrement_retry, L_on_abort;
if (RTMRetryCount > 0) {
load_const_optimized(retry_on_abort_count_Reg, RTMRetryCount); // Retry on abort
bind(L_rtm_retry);
}
andi_(R0, mark_word, markOopDesc::monitor_value); // inflated vs stack-locked|neutral|biased
bne(CCR0, IsInflated);
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
Label L_noincrement;
if (RTMTotalCountIncrRate > 1) {
branch_on_random_using_tb(tmp, (int)RTMTotalCountIncrRate, L_noincrement);
}
assert(stack_rtm_counters != NULL, "should not be NULL when profiling RTM");
load_const_optimized(tmp, (address)stack_rtm_counters->total_count_addr(), R0);
//atomic_inc_ptr(tmp, /*temp, will be reloaded*/mark_word); We don't increment atomically
ldx(mark_word, tmp);
addi(mark_word, mark_word, 1);
stdx(mark_word, tmp);
bind(L_noincrement);
}
tbegin_();
beq(CCR0, L_on_abort);
ld(mark_word, oopDesc::mark_offset_in_bytes(), obj); // Reload in transaction, conflicts need to be tracked.
andi(R0, mark_word, markOopDesc::biased_lock_mask_in_place); // look at 3 lock bits
cmpwi(flag, R0, markOopDesc::unlocked_value); // bits = 001 unlocked
beq(flag, DONE_LABEL); // all done if unlocked
if (UseRTMXendForLockBusy) {
tend_();
b(L_decrement_retry);
} else {
tabort_();
}
bind(L_on_abort);
const Register abort_status_Reg = tmp;
mftexasr(abort_status_Reg);
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
rtm_profiling(abort_status_Reg, /*temp*/mark_word, stack_rtm_counters, method_data, profile_rtm);
}
ld(mark_word, oopDesc::mark_offset_in_bytes(), obj); // reload
if (RTMRetryCount > 0) {
// Retry on lock abort if abort status is not permanent.
rtm_retry_lock_on_abort(retry_on_abort_count_Reg, abort_status_Reg, L_rtm_retry, &L_decrement_retry);
} else {
bind(L_decrement_retry);
}
}
// Use RTM for inflating locks
// inputs: obj (object to lock)
// mark_word (current header - KILLED)
// boxReg (on-stack box address (displaced header location) - KILLED)
void MacroAssembler::rtm_inflated_locking(ConditionRegister flag,
Register obj, Register mark_word, Register boxReg,
Register retry_on_busy_count_Reg, Register retry_on_abort_count_Reg,
RTMLockingCounters* rtm_counters,
Metadata* method_data, bool profile_rtm,
Label& DONE_LABEL) {
assert(UseRTMLocking, "why call this otherwise?");
Label L_rtm_retry, L_decrement_retry, L_on_abort;
// Clean monitor_value bit to get valid pointer.
int owner_offset = ObjectMonitor::owner_offset_in_bytes() - markOopDesc::monitor_value;
// Store non-null, using boxReg instead of (intptr_t)markOopDesc::unused_mark().
std(boxReg, BasicLock::displaced_header_offset_in_bytes(), boxReg);
const Register tmpReg = boxReg;
const Register owner_addr_Reg = mark_word;
addi(owner_addr_Reg, mark_word, owner_offset);
if (RTMRetryCount > 0) {
load_const_optimized(retry_on_busy_count_Reg, RTMRetryCount); // Retry on lock busy.
load_const_optimized(retry_on_abort_count_Reg, RTMRetryCount); // Retry on abort.
bind(L_rtm_retry);
}
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
Label L_noincrement;
if (RTMTotalCountIncrRate > 1) {
branch_on_random_using_tb(R0, (int)RTMTotalCountIncrRate, L_noincrement);
}
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
load_const(R0, (address)rtm_counters->total_count_addr(), tmpReg);
//atomic_inc_ptr(R0, tmpReg); We don't increment atomically
ldx(tmpReg, R0);
addi(tmpReg, tmpReg, 1);
stdx(tmpReg, R0);
bind(L_noincrement);
}
tbegin_();
beq(CCR0, L_on_abort);
// We don't reload mark word. Will only be reset at safepoint.
ld(R0, 0, owner_addr_Reg); // Load in transaction, conflicts need to be tracked.
cmpdi(flag, R0, 0);
beq(flag, DONE_LABEL);
if (UseRTMXendForLockBusy) {
tend_();
b(L_decrement_retry);
} else {
tabort_();
}
bind(L_on_abort);
const Register abort_status_Reg = tmpReg;
mftexasr(abort_status_Reg);
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
rtm_profiling(abort_status_Reg, /*temp*/ owner_addr_Reg, rtm_counters, method_data, profile_rtm);
// Restore owner_addr_Reg
ld(mark_word, oopDesc::mark_offset_in_bytes(), obj);
#ifdef ASSERT
andi_(R0, mark_word, markOopDesc::monitor_value);
asm_assert_ne("must be inflated", 0xa754); // Deflating only allowed at safepoint.
#endif
addi(owner_addr_Reg, mark_word, owner_offset);
}
if (RTMRetryCount > 0) {
// Retry on lock abort if abort status is not permanent.
rtm_retry_lock_on_abort(retry_on_abort_count_Reg, abort_status_Reg, L_rtm_retry);
}
// Appears unlocked - try to swing _owner from null to non-null.
cmpxchgd(flag, /*current val*/ R0, (intptr_t)0, /*new val*/ R16_thread, owner_addr_Reg,
MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq,
MacroAssembler::cmpxchgx_hint_acquire_lock(), noreg, &L_decrement_retry, true);
if (RTMRetryCount > 0) {
// success done else retry
b(DONE_LABEL);
bind(L_decrement_retry);
// Spin and retry if lock is busy.
rtm_retry_lock_on_busy(retry_on_busy_count_Reg, owner_addr_Reg, L_rtm_retry);
} else {
bind(L_decrement_retry);
}
}
#endif // INCLUDE_RTM_OPT
// "The box" is the space on the stack where we copy the object mark. // "The box" is the space on the stack where we copy the object mark.
void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register oop, Register box, void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register oop, Register box,
Register temp, Register displaced_header, Register current_header) { Register temp, Register displaced_header, Register current_header,
bool try_bias,
RTMLockingCounters* rtm_counters,
RTMLockingCounters* stack_rtm_counters,
Metadata* method_data,
bool use_rtm, bool profile_rtm) {
assert_different_registers(oop, box, temp, displaced_header, current_header); assert_different_registers(oop, box, temp, displaced_header, current_header);
assert(flag != CCR0, "bad condition register"); assert(flag != CCR0, "bad condition register");
Label cont; Label cont;
@ -2006,10 +2365,18 @@ void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register
return; return;
} }
if (UseBiasedLocking) { if (try_bias) {
biased_locking_enter(flag, oop, displaced_header, temp, current_header, cont); biased_locking_enter(flag, oop, displaced_header, temp, current_header, cont);
} }
#if INCLUDE_RTM_OPT
if (UseRTMForStackLocks && use_rtm) {
rtm_stack_locking(flag, oop, displaced_header, temp, /*temp*/ current_header,
stack_rtm_counters, method_data, profile_rtm,
cont, object_has_monitor);
}
#endif // INCLUDE_RTM_OPT
// Handle existing monitor. // Handle existing monitor.
if ((EmitSync & 0x02) == 0) { if ((EmitSync & 0x02) == 0) {
// The object has an existing monitor iff (mark & monitor_value) != 0. // The object has an existing monitor iff (mark & monitor_value) != 0.
@ -2066,14 +2433,22 @@ void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register
bind(object_has_monitor); bind(object_has_monitor);
// The object's monitor m is unlocked iff m->owner == NULL, // The object's monitor m is unlocked iff m->owner == NULL,
// otherwise m->owner may contain a thread or a stack address. // otherwise m->owner may contain a thread or a stack address.
//
#if INCLUDE_RTM_OPT
// Use the same RTM locking code in 32- and 64-bit VM.
if (use_rtm) {
rtm_inflated_locking(flag, oop, displaced_header, box, temp, /*temp*/ current_header,
rtm_counters, method_data, profile_rtm, cont);
} else {
#endif // INCLUDE_RTM_OPT
// Try to CAS m->owner from NULL to current thread. // Try to CAS m->owner from NULL to current thread.
addi(temp, displaced_header, ObjectMonitor::owner_offset_in_bytes()-markOopDesc::monitor_value); addi(temp, displaced_header, ObjectMonitor::owner_offset_in_bytes()-markOopDesc::monitor_value);
li(displaced_header, 0); li(displaced_header, 0);
// CmpxchgX sets flag to cmpX(current, displaced). // CmpxchgX sets flag to cmpX(current, displaced).
cmpxchgd(/*flag=*/flag, cmpxchgd(/*flag=*/flag,
/*current_value=*/current_header, /*current_value=*/current_header,
/*compare_value=*/displaced_header, /*compare_value=*/(intptr_t)0,
/*exchange_value=*/R16_thread, /*exchange_value=*/R16_thread,
/*where=*/temp, /*where=*/temp,
MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq, MacroAssembler::MemBarRel | MacroAssembler::MemBarAcq,
@ -2095,6 +2470,10 @@ void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register
//asm_assert_mem4_isnot_zero(ObjectMonitor::OwnerIsThread_offset_in_bytes(), temp, //asm_assert_mem4_isnot_zero(ObjectMonitor::OwnerIsThread_offset_in_bytes(), temp,
// "monitor->OwnerIsThread shouldn't be 0", -1); // "monitor->OwnerIsThread shouldn't be 0", -1);
# endif # endif
#if INCLUDE_RTM_OPT
} // use_rtm()
#endif
} }
bind(cont); bind(cont);
@ -2103,7 +2482,8 @@ void MacroAssembler::compiler_fast_lock_object(ConditionRegister flag, Register
} }
void MacroAssembler::compiler_fast_unlock_object(ConditionRegister flag, Register oop, Register box, void MacroAssembler::compiler_fast_unlock_object(ConditionRegister flag, Register oop, Register box,
Register temp, Register displaced_header, Register current_header) { Register temp, Register displaced_header, Register current_header,
bool try_bias, bool use_rtm) {
assert_different_registers(oop, box, temp, displaced_header, current_header); assert_different_registers(oop, box, temp, displaced_header, current_header);
assert(flag != CCR0, "bad condition register"); assert(flag != CCR0, "bad condition register");
Label cont; Label cont;
@ -2115,10 +2495,24 @@ void MacroAssembler::compiler_fast_unlock_object(ConditionRegister flag, Registe
return; return;
} }
if (UseBiasedLocking) { if (try_bias) {
biased_locking_exit(flag, oop, current_header, cont); biased_locking_exit(flag, oop, current_header, cont);
} }
#if INCLUDE_RTM_OPT
if (UseRTMForStackLocks && use_rtm) {
assert(!UseBiasedLocking, "Biased locking is not supported with RTM locking");
Label L_regular_unlock;
ld(current_header, oopDesc::mark_offset_in_bytes(), oop); // fetch markword
andi(R0, current_header, markOopDesc::biased_lock_mask_in_place); // look at 3 lock bits
cmpwi(flag, R0, markOopDesc::unlocked_value); // bits = 001 unlocked
bne(flag, L_regular_unlock); // else RegularLock
tend_(); // otherwise end...
b(cont); // ... and we're done
bind(L_regular_unlock);
}
#endif
// Find the lock address and load the displaced header from the stack. // Find the lock address and load the displaced header from the stack.
ld(displaced_header, BasicLock::displaced_header_offset_in_bytes(), box); ld(displaced_header, BasicLock::displaced_header_offset_in_bytes(), box);
@ -2129,13 +2523,12 @@ void MacroAssembler::compiler_fast_unlock_object(ConditionRegister flag, Registe
// Handle existing monitor. // Handle existing monitor.
if ((EmitSync & 0x02) == 0) { if ((EmitSync & 0x02) == 0) {
// The object has an existing monitor iff (mark & monitor_value) != 0. // The object has an existing monitor iff (mark & monitor_value) != 0.
RTM_OPT_ONLY( if (!(UseRTMForStackLocks && use_rtm)) ) // skip load if already done
ld(current_header, oopDesc::mark_offset_in_bytes(), oop); ld(current_header, oopDesc::mark_offset_in_bytes(), oop);
andi(temp, current_header, markOopDesc::monitor_value); andi_(R0, current_header, markOopDesc::monitor_value);
cmpdi(flag, temp, 0); bne(CCR0, object_has_monitor);
bne(flag, object_has_monitor);
} }
// Check if it is still a light weight lock, this is is true if we see // Check if it is still a light weight lock, this is is true if we see
// the stack address of the basicLock in the markOop of the object. // the stack address of the basicLock in the markOop of the object.
// Cmpxchg sets flag to cmpd(current_header, box). // Cmpxchg sets flag to cmpd(current_header, box).
@ -2158,6 +2551,20 @@ void MacroAssembler::compiler_fast_unlock_object(ConditionRegister flag, Registe
bind(object_has_monitor); bind(object_has_monitor);
addi(current_header, current_header, -markOopDesc::monitor_value); // monitor addi(current_header, current_header, -markOopDesc::monitor_value); // monitor
ld(temp, ObjectMonitor::owner_offset_in_bytes(), current_header); ld(temp, ObjectMonitor::owner_offset_in_bytes(), current_header);
// It's inflated.
#if INCLUDE_RTM_OPT
if (use_rtm) {
Label L_regular_inflated_unlock;
// Clean monitor_value bit to get valid pointer
cmpdi(flag, temp, 0);
bne(flag, L_regular_inflated_unlock);
tend_();
b(cont);
bind(L_regular_inflated_unlock);
}
#endif
ld(displaced_header, ObjectMonitor::recursions_offset_in_bytes(), current_header); ld(displaced_header, ObjectMonitor::recursions_offset_in_bytes(), current_header);
xorr(temp, R16_thread, temp); // Will be 0 if we are the owner. xorr(temp, R16_thread, temp); // Will be 0 if we are the owner.
orr(temp, temp, displaced_header); // Will be 0 if there are 0 recursions. orr(temp, temp, displaced_header); // Will be 0 if there are 0 recursions.
@ -2441,6 +2848,8 @@ void MacroAssembler::get_vm_result(Register oop_result) {
// oop_result // oop_result
// R16_thread->in_bytes(JavaThread::vm_result_offset()) // R16_thread->in_bytes(JavaThread::vm_result_offset())
verify_thread();
ld(oop_result, in_bytes(JavaThread::vm_result_offset()), R16_thread); ld(oop_result, in_bytes(JavaThread::vm_result_offset()), R16_thread);
li(R0, 0); li(R0, 0);
std(R0, in_bytes(JavaThread::vm_result_offset()), R16_thread); std(R0, in_bytes(JavaThread::vm_result_offset()), R16_thread);
@ -2462,26 +2871,24 @@ void MacroAssembler::get_vm_result_2(Register metadata_result) {
std(R0, in_bytes(JavaThread::vm_result_2_offset()), R16_thread); std(R0, in_bytes(JavaThread::vm_result_2_offset()), R16_thread);
} }
Register MacroAssembler::encode_klass_not_null(Register dst, Register src) {
void MacroAssembler::encode_klass_not_null(Register dst, Register src) {
Register current = (src != noreg) ? src : dst; // Klass is in dst if no src provided. Register current = (src != noreg) ? src : dst; // Klass is in dst if no src provided.
if (Universe::narrow_klass_base() != 0) { if (Universe::narrow_klass_base() != 0) {
// Use dst as temp if it is free. // Use dst as temp if it is free.
load_const(R0, Universe::narrow_klass_base(), (dst != current && dst != R0) ? dst : noreg); sub_const_optimized(dst, current, Universe::narrow_klass_base(), R0);
sub(dst, current, R0);
current = dst; current = dst;
} }
if (Universe::narrow_klass_shift() != 0) { if (Universe::narrow_klass_shift() != 0) {
srdi(dst, current, Universe::narrow_klass_shift()); srdi(dst, current, Universe::narrow_klass_shift());
current = dst; current = dst;
} }
mr_if_needed(dst, current); // Move may be required. return current;
} }
void MacroAssembler::store_klass(Register dst_oop, Register klass, Register ck) { void MacroAssembler::store_klass(Register dst_oop, Register klass, Register ck) {
if (UseCompressedClassPointers) { if (UseCompressedClassPointers) {
encode_klass_not_null(ck, klass); Register compressedKlass = encode_klass_not_null(ck, klass);
stw(ck, oopDesc::klass_offset_in_bytes(), dst_oop); stw(compressedKlass, oopDesc::klass_offset_in_bytes(), dst_oop);
} else { } else {
std(klass, oopDesc::klass_offset_in_bytes(), dst_oop); std(klass, oopDesc::klass_offset_in_bytes(), dst_oop);
} }
@ -2514,8 +2921,7 @@ void MacroAssembler::decode_klass_not_null(Register dst, Register src) {
sldi(shifted_src, src, Universe::narrow_klass_shift()); sldi(shifted_src, src, Universe::narrow_klass_shift());
} }
if (Universe::narrow_klass_base() != 0) { if (Universe::narrow_klass_base() != 0) {
load_const(R0, Universe::narrow_klass_base()); add_const_optimized(dst, shifted_src, Universe::narrow_klass_base(), R0);
add(dst, shifted_src, R0);
} }
} }

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -27,6 +27,7 @@
#define CPU_PPC_VM_MACROASSEMBLER_PPC_HPP #define CPU_PPC_VM_MACROASSEMBLER_PPC_HPP
#include "asm/assembler.hpp" #include "asm/assembler.hpp"
#include "runtime/rtmLocking.hpp"
#include "utilities/macros.hpp" #include "utilities/macros.hpp"
// MacroAssembler extends Assembler by a few frequently used macros. // MacroAssembler extends Assembler by a few frequently used macros.
@ -432,8 +433,8 @@ class MacroAssembler: public Assembler {
int semantics, bool cmpxchgx_hint = false, int semantics, bool cmpxchgx_hint = false,
Register int_flag_success = noreg, bool contention_hint = false); Register int_flag_success = noreg, bool contention_hint = false);
void cmpxchgd(ConditionRegister flag, void cmpxchgd(ConditionRegister flag,
Register dest_current_value, Register compare_value, Register exchange_value, Register addr_base, Register dest_current_value, RegisterOrConstant compare_value, Register exchange_value,
int semantics, bool cmpxchgx_hint = false, Register addr_base, int semantics, bool cmpxchgx_hint = false,
Register int_flag_success = noreg, Label* failed = NULL, bool contention_hint = false); Register int_flag_success = noreg, Label* failed = NULL, bool contention_hint = false);
// interface method calling // interface method calling
@ -506,8 +507,42 @@ class MacroAssembler: public Assembler {
// biased locking exit case failed. // biased locking exit case failed.
void biased_locking_exit(ConditionRegister cr_reg, Register mark_addr, Register temp_reg, Label& done); void biased_locking_exit(ConditionRegister cr_reg, Register mark_addr, Register temp_reg, Label& done);
void compiler_fast_lock_object( ConditionRegister flag, Register oop, Register box, Register tmp1, Register tmp2, Register tmp3); void atomic_inc_ptr(Register addr, Register result, int simm16 = 1);
void compiler_fast_unlock_object(ConditionRegister flag, Register oop, Register box, Register tmp1, Register tmp2, Register tmp3); void atomic_ori_int(Register addr, Register result, int uimm16);
#if INCLUDE_RTM_OPT
void rtm_counters_update(Register abort_status, Register rtm_counters);
void branch_on_random_using_tb(Register tmp, int count, Label& brLabel);
void rtm_abort_ratio_calculation(Register rtm_counters_reg, RTMLockingCounters* rtm_counters,
Metadata* method_data);
void rtm_profiling(Register abort_status_Reg, Register temp_Reg,
RTMLockingCounters* rtm_counters, Metadata* method_data, bool profile_rtm);
void rtm_retry_lock_on_abort(Register retry_count, Register abort_status,
Label& retryLabel, Label* checkRetry = NULL);
void rtm_retry_lock_on_busy(Register retry_count, Register owner_addr, Label& retryLabel);
void rtm_stack_locking(ConditionRegister flag, Register obj, Register mark_word, Register tmp,
Register retry_on_abort_count,
RTMLockingCounters* stack_rtm_counters,
Metadata* method_data, bool profile_rtm,
Label& DONE_LABEL, Label& IsInflated);
void rtm_inflated_locking(ConditionRegister flag, Register obj, Register mark_word, Register box,
Register retry_on_busy_count, Register retry_on_abort_count,
RTMLockingCounters* rtm_counters,
Metadata* method_data, bool profile_rtm,
Label& DONE_LABEL);
#endif
void compiler_fast_lock_object(ConditionRegister flag, Register oop, Register box,
Register tmp1, Register tmp2, Register tmp3,
bool try_bias = UseBiasedLocking,
RTMLockingCounters* rtm_counters = NULL,
RTMLockingCounters* stack_rtm_counters = NULL,
Metadata* method_data = NULL,
bool use_rtm = false, bool profile_rtm = false);
void compiler_fast_unlock_object(ConditionRegister flag, Register oop, Register box,
Register tmp1, Register tmp2, Register tmp3,
bool try_bias = UseBiasedLocking, bool use_rtm = false);
// Support for serializing memory accesses between threads // Support for serializing memory accesses between threads
void serialize_memory(Register thread, Register tmp1, Register tmp2); void serialize_memory(Register thread, Register tmp1, Register tmp2);
@ -576,7 +611,7 @@ class MacroAssembler: public Assembler {
Register tmp = noreg); Register tmp = noreg);
// Null allowed. // Null allowed.
inline void load_heap_oop(Register d, RegisterOrConstant offs, Register s1 = noreg); inline void load_heap_oop(Register d, RegisterOrConstant offs, Register s1 = noreg, Label *is_null = NULL);
// Encode/decode heap oop. Oop may not be null, else en/decoding goes wrong. // Encode/decode heap oop. Oop may not be null, else en/decoding goes wrong.
// src == d allowed. // src == d allowed.
@ -593,7 +628,7 @@ class MacroAssembler: public Assembler {
void store_klass_gap(Register dst_oop, Register val = noreg); // Will store 0 if val not specified. void store_klass_gap(Register dst_oop, Register val = noreg); // Will store 0 if val not specified.
static int instr_size_for_decode_klass_not_null(); static int instr_size_for_decode_klass_not_null();
void decode_klass_not_null(Register dst, Register src = noreg); void decode_klass_not_null(Register dst, Register src = noreg);
void encode_klass_not_null(Register dst, Register src = noreg); Register encode_klass_not_null(Register dst, Register src = noreg);
// Load common heap base into register. // Load common heap base into register.
void reinit_heapbase(Register d, Register tmp = noreg); void reinit_heapbase(Register d, Register tmp = noreg);

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -333,19 +333,29 @@ inline void MacroAssembler::store_heap_oop_not_null(Register d, RegisterOrConsta
} }
} }
inline void MacroAssembler::load_heap_oop(Register d, RegisterOrConstant offs, Register s1) { inline void MacroAssembler::load_heap_oop(Register d, RegisterOrConstant offs, Register s1, Label *is_null) {
if (UseCompressedOops) { if (UseCompressedOops) {
lwz(d, offs, s1); lwz(d, offs, s1);
if (is_null != NULL) {
cmpwi(CCR0, d, 0);
beq(CCR0, *is_null);
decode_heap_oop_not_null(d);
} else {
decode_heap_oop(d); decode_heap_oop(d);
}
} else { } else {
ld(d, offs, s1); ld(d, offs, s1);
if (is_null != NULL) {
cmpdi(CCR0, d, 0);
beq(CCR0, *is_null);
}
} }
} }
inline Register MacroAssembler::encode_heap_oop_not_null(Register d, Register src) { inline Register MacroAssembler::encode_heap_oop_not_null(Register d, Register src) {
Register current = (src != noreg) ? src : d; // Oop to be compressed is in d if no src provided. Register current = (src != noreg) ? src : d; // Oop to be compressed is in d if no src provided.
if (Universe::narrow_oop_base_overlaps()) { if (Universe::narrow_oop_base_overlaps()) {
sub(d, current, R30); sub_const_optimized(d, current, Universe::narrow_oop_base(), R0);
current = d; current = d;
} }
if (Universe::narrow_oop_shift() != 0) { if (Universe::narrow_oop_shift() != 0) {
@ -358,7 +368,7 @@ inline Register MacroAssembler::encode_heap_oop_not_null(Register d, Register sr
inline Register MacroAssembler::decode_heap_oop_not_null(Register d, Register src) { inline Register MacroAssembler::decode_heap_oop_not_null(Register d, Register src) {
if (Universe::narrow_oop_base_disjoint() && src != noreg && src != d && if (Universe::narrow_oop_base_disjoint() && src != noreg && src != d &&
Universe::narrow_oop_shift() != 0) { Universe::narrow_oop_shift() != 0) {
mr(d, R30); load_const_optimized(d, Universe::narrow_oop_base(), R0);
rldimi(d, src, Universe::narrow_oop_shift(), 32-Universe::narrow_oop_shift()); rldimi(d, src, Universe::narrow_oop_shift(), 32-Universe::narrow_oop_shift());
return d; return d;
} }
@ -369,7 +379,7 @@ inline Register MacroAssembler::decode_heap_oop_not_null(Register d, Register sr
current = d; current = d;
} }
if (Universe::narrow_oop_base() != NULL) { if (Universe::narrow_oop_base() != NULL) {
add(d, current, R30); add_const_optimized(d, current, Universe::narrow_oop_base(), R0);
current = d; current = d;
} }
return current; // Decoded oop is in this register. return current; // Decoded oop is in this register.
@ -377,11 +387,19 @@ inline Register MacroAssembler::decode_heap_oop_not_null(Register d, Register sr
inline void MacroAssembler::decode_heap_oop(Register d) { inline void MacroAssembler::decode_heap_oop(Register d) {
Label isNull; Label isNull;
bool use_isel = false;
if (Universe::narrow_oop_base() != NULL) { if (Universe::narrow_oop_base() != NULL) {
cmpwi(CCR0, d, 0); cmpwi(CCR0, d, 0);
if (VM_Version::has_isel()) {
use_isel = true;
} else {
beq(CCR0, isNull); beq(CCR0, isNull);
} }
}
decode_heap_oop_not_null(d); decode_heap_oop_not_null(d);
if (use_isel) {
isel_0(d, CCR0, Assembler::equal);
}
bind(isNull); bind(isNull);
} }

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2013 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -27,9 +27,6 @@
// These definitions are inlined into class MethodHandles. // These definitions are inlined into class MethodHandles.
// Adapters // Adapters
//static unsigned int adapter_code_size() {
// return 32*K DEBUG_ONLY(+ 16*K) + (TraceMethodHandles ? 16*K : 0) + (VerifyMethodHandles ? 32*K : 0);
//}
enum /* platform_dependent_constants */ { enum /* platform_dependent_constants */ {
adapter_code_size = NOT_LP64(16000 DEBUG_ONLY(+ 25000)) LP64_ONLY(32000 DEBUG_ONLY(+ 150000)) adapter_code_size = NOT_LP64(16000 DEBUG_ONLY(+ 25000)) LP64_ONLY(32000 DEBUG_ONLY(+ 150000))
}; };
@ -45,7 +42,9 @@ public:
static void verify_method_handle(MacroAssembler* _masm, Register mh_reg, static void verify_method_handle(MacroAssembler* _masm, Register mh_reg,
Register temp_reg, Register temp2_reg) { Register temp_reg, Register temp2_reg) {
Unimplemented(); verify_klass(_masm, mh_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MethodHandle),
temp_reg, temp2_reg,
"reference is a MH");
} }
static void verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) NOT_DEBUG_RETURN; static void verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) NOT_DEBUG_RETURN;

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2013 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -23,19 +23,10 @@
* *
*/ */
// make sure the defines don't screw up the declarations later on in this file // Make sure the defines don't screw up the declarations later on in this file.
#define DONT_USE_REGISTER_DEFINES #define DONT_USE_REGISTER_DEFINES
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "asm/register.hpp" #include "asm/register.hpp"
#include "register_ppc.hpp"
#ifdef TARGET_ARCH_MODEL_ppc_32
# include "interp_masm_ppc_32.hpp"
#endif
#ifdef TARGET_ARCH_MODEL_ppc_64
# include "interp_masm_ppc_64.hpp"
#endif
REGISTER_DEFINITION(Register, noreg); REGISTER_DEFINITION(Register, noreg);

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2013 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,14 +25,12 @@
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.inline.hpp" #include "asm/assembler.inline.hpp"
#include "assembler_ppc.inline.hpp"
#include "code/relocInfo.hpp" #include "code/relocInfo.hpp"
#include "nativeInst_ppc.hpp" #include "nativeInst_ppc.hpp"
#include "oops/oop.inline.hpp" #include "oops/oop.inline.hpp"
#include "runtime/safepoint.hpp" #include "runtime/safepoint.hpp"
void Relocation::pd_set_data_value(address x, intptr_t o, bool verify_only) { void Relocation::pd_set_data_value(address x, intptr_t o, bool verify_only) {
bool copy_back_to_oop_pool = true; // TODO: PPC port
// The following comment is from the declaration of DataRelocation: // The following comment is from the declaration of DataRelocation:
// //
// "The "o" (displacement) argument is relevant only to split relocations // "The "o" (displacement) argument is relevant only to split relocations

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012, 2014 SAP AG. All rights reserved. * Copyright 2012, 2015 SAP AG. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -28,6 +28,7 @@
#include "code/debugInfoRec.hpp" #include "code/debugInfoRec.hpp"
#include "code/icBuffer.hpp" #include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp" #include "code/vtableStubs.hpp"
#include "frame_ppc.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
#include "interpreter/interp_masm.hpp" #include "interpreter/interp_masm.hpp"
#include "oops/compiledICHolder.hpp" #include "oops/compiledICHolder.hpp"
@ -194,8 +195,8 @@ static const RegisterSaver::LiveRegType RegisterSaver_LiveRegs[] = {
RegisterSaver_LiveIntReg( R27 ), RegisterSaver_LiveIntReg( R27 ),
RegisterSaver_LiveIntReg( R28 ), RegisterSaver_LiveIntReg( R28 ),
RegisterSaver_LiveIntReg( R29 ), RegisterSaver_LiveIntReg( R29 ),
RegisterSaver_LiveIntReg( R31 ), RegisterSaver_LiveIntReg( R30 ),
RegisterSaver_LiveIntReg( R30 ), // r30 must be the last register RegisterSaver_LiveIntReg( R31 ), // must be the last register (see save/restore functions below)
}; };
OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssembler* masm, OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssembler* masm,
@ -229,29 +230,30 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
BLOCK_COMMENT("push_frame_reg_args_and_save_live_registers {"); BLOCK_COMMENT("push_frame_reg_args_and_save_live_registers {");
// Save r30 in the last slot of the not yet pushed frame so that we // Save r31 in the last slot of the not yet pushed frame so that we
// can use it as scratch reg. // can use it as scratch reg.
__ std(R30, -reg_size, R1_SP); __ std(R31, -reg_size, R1_SP);
assert(-reg_size == register_save_offset - frame_size_in_bytes + ((regstosave_num-1)*reg_size), assert(-reg_size == register_save_offset - frame_size_in_bytes + ((regstosave_num-1)*reg_size),
"consistency check"); "consistency check");
// save the flags // save the flags
// Do the save_LR_CR by hand and adjust the return pc if requested. // Do the save_LR_CR by hand and adjust the return pc if requested.
__ mfcr(R30); __ mfcr(R31);
__ std(R30, _abi(cr), R1_SP); __ std(R31, _abi(cr), R1_SP);
switch (return_pc_location) { switch (return_pc_location) {
case return_pc_is_lr: __ mflr(R30); break; case return_pc_is_lr: __ mflr(R31); break;
case return_pc_is_r4: __ mr(R30, R4); break; case return_pc_is_r4: __ mr(R31, R4); break;
case return_pc_is_thread_saved_exception_pc: case return_pc_is_thread_saved_exception_pc:
__ ld(R30, thread_(saved_exception_pc)); break; __ ld(R31, thread_(saved_exception_pc)); break;
default: ShouldNotReachHere(); default: ShouldNotReachHere();
} }
if (return_pc_adjustment != 0) if (return_pc_adjustment != 0) {
__ addi(R30, R30, return_pc_adjustment); __ addi(R31, R31, return_pc_adjustment);
__ std(R30, _abi(lr), R1_SP); }
__ std(R31, _abi(lr), R1_SP);
// push a new frame // push a new frame
__ push_frame(frame_size_in_bytes, R30); __ push_frame(frame_size_in_bytes, R31);
// save all registers (ints and floats) // save all registers (ints and floats)
offset = register_save_offset; offset = register_save_offset;
@ -261,7 +263,7 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
switch (reg_type) { switch (reg_type) {
case RegisterSaver::int_reg: { case RegisterSaver::int_reg: {
if (reg_num != 30) { // We spilled R30 right at the beginning. if (reg_num != 31) { // We spilled R31 right at the beginning.
__ std(as_Register(reg_num), offset, R1_SP); __ std(as_Register(reg_num), offset, R1_SP);
} }
break; break;
@ -272,8 +274,8 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
} }
case RegisterSaver::special_reg: { case RegisterSaver::special_reg: {
if (reg_num == SR_CTR_SpecialRegisterEnumValue) { if (reg_num == SR_CTR_SpecialRegisterEnumValue) {
__ mfctr(R30); __ mfctr(R31);
__ std(R30, offset, R1_SP); __ std(R31, offset, R1_SP);
} else { } else {
Unimplemented(); Unimplemented();
} }
@ -321,7 +323,7 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
switch (reg_type) { switch (reg_type) {
case RegisterSaver::int_reg: { case RegisterSaver::int_reg: {
if (reg_num != 30) // R30 restored at the end, it's the tmp reg! if (reg_num != 31) // R31 restored at the end, it's the tmp reg!
__ ld(as_Register(reg_num), offset, R1_SP); __ ld(as_Register(reg_num), offset, R1_SP);
break; break;
} }
@ -332,8 +334,8 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
case RegisterSaver::special_reg: { case RegisterSaver::special_reg: {
if (reg_num == SR_CTR_SpecialRegisterEnumValue) { if (reg_num == SR_CTR_SpecialRegisterEnumValue) {
if (restore_ctr) { // Nothing to do here if ctr already contains the next address. if (restore_ctr) { // Nothing to do here if ctr already contains the next address.
__ ld(R30, offset, R1_SP); __ ld(R31, offset, R1_SP);
__ mtctr(R30); __ mtctr(R31);
} }
} else { } else {
Unimplemented(); Unimplemented();
@ -350,10 +352,10 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
__ pop_frame(); __ pop_frame();
// restore the flags // restore the flags
__ restore_LR_CR(R30); __ restore_LR_CR(R31);
// restore scratch register's value // restore scratch register's value
__ ld(R30, -reg_size, R1_SP); __ ld(R31, -reg_size, R1_SP);
BLOCK_COMMENT("} restore_live_registers_and_pop_frame"); BLOCK_COMMENT("} restore_live_registers_and_pop_frame");
} }
@ -2021,6 +2023,8 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
__ push_frame(frame_size_in_bytes, r_temp_1); // Push the c2n adapter's frame. __ push_frame(frame_size_in_bytes, r_temp_1); // Push the c2n adapter's frame.
frame_done_pc = (intptr_t)__ pc(); frame_done_pc = (intptr_t)__ pc();
__ verify_thread();
// Native nmethod wrappers never take possesion of the oop arguments. // Native nmethod wrappers never take possesion of the oop arguments.
// So the caller will gc the arguments. // So the caller will gc the arguments.
// The only thing we need an oopMap for is if the call is static. // The only thing we need an oopMap for is if the call is static.
@ -2594,7 +2598,7 @@ int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals)
} }
uint SharedRuntime::out_preserve_stack_slots() { uint SharedRuntime::out_preserve_stack_slots() {
#ifdef COMPILER2 #if defined(COMPILER1) || defined(COMPILER2)
return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size; return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
#else #else
return 0; return 0;
@ -2868,11 +2872,6 @@ void SharedRuntime::generate_deopt_blob() {
__ std(R0, in_bytes(JavaThread::exception_oop_offset()), R16_thread); __ std(R0, in_bytes(JavaThread::exception_oop_offset()), R16_thread);
__ BIND(skip_restore_excp); __ BIND(skip_restore_excp);
// reload narrro_oop_base
if (UseCompressedOops && Universe::narrow_oop_base() != 0) {
__ load_const_optimized(R30, Universe::narrow_oop_base());
}
__ pop_frame(); __ pop_frame();
// stack: (deoptee, optional i2c, caller of deoptee, ...). // stack: (deoptee, optional i2c, caller of deoptee, ...).

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